Ejemplo n.º 1
0
        public StorageService()
        {
            eventService = ServiceController.GetService <JournalEventService>();
            eventService.PreEventCall += EventService_PreEventCall;
            eventService.Subscribe <StatusEvent>(GameStatusCallback);


            Game       = new GameModel(eventService);
            Commander  = new CommanderModel(eventService);
            Navigation = new NavigationModel(eventService);
            StarSystem = new StarSystemModel(eventService);
            Ship       = new ShipModel(eventService);
            Station    = new StationModel(eventService);
            //Missions = new MissionsModel(eventService);
        }
Ejemplo n.º 2
0
        public static Advert Create(AdvertType advertType, StarSystemModel starSystem, PlayerModel player, bool isMilitary)
        {
            if (advertType == AdvertType.BuyIllegal  &&  starSystem.IllegalGoods.Count == 0)
                advertType = AdvertType.PackageDelivery;

            var model = new Advert
                {
                    Type		= advertType,
                    Caption		= (isMilitary ? advertType.ToString() : "BBC_Advert" + advertType) + "Caption",
                    CallText	= (isMilitary ? advertType.ToString() : "BBC_Advert" + advertType) + "Text",
                    OwnerName	= isMilitary ? ZFrontier.Lang["MilitaryHQ_Officer"] : GameConfig.Get_NPC_Name(NPC_Type.Trader),
                };

            switch (advertType)
            {
                case AdvertType.PackageDelivery:	model.Mission = MissionModel.CreateRandom(MissionType.PackageDelivery);	break;
                case AdvertType.GoodsDelivery:		model.Mission = MissionModel.CreateRandom(MissionType.GoodsDelivery);	break;
                case AdvertType.Passenger:			model.Mission = MissionModel.CreateRandom(MissionType.Passenger);		break;
                case AdvertType.Assassination:		model.Mission = MissionModel.CreateRandom(MissionType.Assassination);	break;
                case AdvertType.Military_Delivery:		model.Mission = MissionModel.CreateRandom(MissionType.Military_Delivery,      true, starSystem.Allegiance);	break;
                case AdvertType.Military_Assassination:	model.Mission = MissionModel.CreateRandom(MissionType.Military_Assassination, true, starSystem.Allegiance);	break;
            }

            if (advertType == AdvertType.BuyIllegal)
            {
                var merch = starSystem.IllegalGoods.Get_Random();
                model.Merchandise = merch;
                model.IsTrap = RNG.GetDice() <= GameConfig.AdvertTrapChance;
                model.Price = GameConfig.Get_MerchPrice(starSystem.TechLevel, merch) + starSystem.PriceChanges[(int) (merch)];
                model.Price += RNG.GetNumber(1, GameConfig.AdvertIllegalPriceBonus);
            }
            else
            {
                model.Merchandise = model.Mission.GoodsToDeliver_Type;
                model.Price = model.Mission.RewardAmount;
            }

            return model;
        }
Ejemplo n.º 3
0
        public void Draw_StarSystem(int xCoord, int yCoord, StarSystemModel starSystem)
        {
            var nameOffset = starSystem.Name.Length/2;
            var xPos = xGalaxyMap + xCoord*starDistanceX + starDistanceX/2 - 1;
            var yPos = yGalaxyMap + yCoord*starDistanceY + starDistanceY/2 - 2;
            var systemColor = starSystem.Allegiance == Allegiance.Empire ? Color.DarkRed
                            : starSystem.Allegiance == Allegiance.Alliance ? Color.DarkCyan : Color.DarkYellow;

            ZColors.SetBackColor(Color.Black);
            if (starSystem.IsExplored)
            {
                ZOutput.Print(xPos-1,	yPos,   Enums.Get_Name(starSystem.Allegiance)[0], systemColor);
                ZOutput.Print(xPos-2,	yPos+2, "Lvl ", Color.DarkMagenta);
                ZOutput.Print(xPos+2,	yPos+2, starSystem.TechLevel, Color.Magenta);
            }
            ZOutput.Print(xPos,				yPos,   StarChars, Color.Yellow);
            ZOutput.Print(xPos-nameOffset,	yPos+1, starSystem.Name, starSystem.CurrentEvent == GlobalEventType.AlienInvasion ? Color.DarkGray : Color.White);
        }
Ejemplo n.º 4
0
 public static NPC_Model Create(NPC_Type	npcType, StarSystemModel system, string shipModelName = null)
 {
     return Create(npcType, system.TechLevel, shipModelName);
 }
Ejemplo n.º 5
0
        public static void Load(this GalaxyModel galaxy, BinaryReader reader)
        {
            var galaxyDataEnd = false;
            while (!galaxyDataEnd)
            {
                var field = reader.ReadUInt32();
                var fieldType	= (SaveField)(field >> 24);
                var fieldValue	= (int)field & 0x00FFFFFF;

                switch (fieldType)
                {
                    case SaveField.GameDate		:	galaxy.GameDate		= GetDateFromValue(fieldValue);		break;
                    case SaveField.LastEventDate:	galaxy.LastEventDate = GetDateFromValue(fieldValue);	break;
                    case SaveField.RandomSeed	:	galaxy.RandomSeed	= reader.ReadInt32();				break;
                    case SaveField.AlienStrength:	galaxy.AlienStrength = (AlienStrength)fieldValue;		break;
                    case SaveField.StarSystems	:
                        #region Read Star Systems

                        var galaxySizeX = fieldValue >> 8;
                        var galaxySizeY = fieldValue & 0x000000FF;
                        galaxy.StarSystems = new StarSystemModel[galaxySizeY,galaxySizeX];
                        for (var i = 0; i < galaxySizeY; i++)
                            for (var j = 0; j < galaxySizeX; j++)
                            {
                                var system = new StarSystemModel();
                                system.Coords = new Coord(j, i);
                                var starSystemDataEnd = false;
                                while (!starSystemDataEnd)
                                {
                                    field = reader.ReadUInt32();
                                    fieldType	= (SaveField)(field >> 24);
                                    fieldValue	= (int)field & 0x00FFFFFF;
                                    switch (fieldType)
                                    {
                                        case SaveField.StarName			:	system.Name = new string(reader.ReadChars(20)).TrimEnd();	 break;
                                        case SaveField.TechLevel		:	system.TechLevel	= fieldValue;		break;
                                        case SaveField.IsExplored		:	system.IsExplored	= fieldValue > 0;	break;
                                        case SaveField.Allegiance		:	system.Allegiance	= (Allegiance)fieldValue;		break;
                                        case SaveField.CurrentEvent		:	system.CurrentEvent = (GlobalEventType)fieldValue;	break;
                                        case SaveField.EventDuration	:	system.EventDuration = fieldValue;		break;
                                        case SaveField.GoodsLegality	:
                                            for (var k = 0; k < fieldValue; k++)
                                                if (reader.ReadByte() > 0)
                                                    system.IllegalGoods.Add((Merchandise)k);
                                            break;
                                        case SaveField.PriceDeviations	:
                                            for (var k = 0; k < fieldValue; k++)
                                                system.PriceChanges[k] = reader.ReadSByte();
                                            break;
                                        case SaveField.StarSystemDataEnd:	starSystemDataEnd = true;				break;
                                    }
                                }

                                system.LegalGoods.AddRange(Enums.All_Merchandise.Where(a => !system.IllegalGoods.Contains(a)));
                                galaxy.StarSystems[i, j] = system;
                            }
                        break;

                        #endregion

                    case SaveField.GlobalEventsLog:
                        #region Global Event Log

                        galaxy.GlobalEventLog = new List<GlobalEvent>();
                        for (var i = 0; i < fieldValue; i++)
                        {
                            var starIndex = reader.ReadByte();
                            var @event = (GlobalEventType) reader.ReadByte();
                            var eventvalue = reader.ReadInt16();
                            var dateField = reader.ReadInt32();
                            galaxy.GlobalEventLog.Add(new GlobalEvent(starIndex, @event, eventvalue, GetDateFromValue(dateField)));
                        }
                        break;

                        #endregion

                    case SaveField.GalaxyDataEnd:	galaxyDataEnd = true;				break;
                }
            }
        }