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); }
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; }
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); }
public static NPC_Model Create(NPC_Type npcType, StarSystemModel system, string shipModelName = null) { return Create(npcType, system.TechLevel, shipModelName); }
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; } } }