private StarData(IkonComposite rawData, ObjectDeindexer deindexer) { var colorSave = rawData[ColorKey]; var colorArray = colorSave.To <IkonArray>(); int colorR = colorArray[0].To <int>(); int colorG = colorArray[1].To <int>(); int colorB = colorArray[2].To <int>(); this.Color = Color.FromArgb(colorR, colorG, colorB); var imageSizeScaleSave = rawData[SizeKey]; this.ImageSizeScale = imageSizeScaleSave.To <float>(); var nameSave = rawData[NameKey]; this.Name = loadName(nameSave); var positionSave = rawData[PositionKey]; var positionArray = positionSave.To <IkonArray>(); double positionX = positionArray[0].To <double>(); double positionY = positionArray[1].To <double>(); this.Position = new Vector2D(positionX, positionY); var traitsSave = rawData[TraitsKey]; this.Traits = new PendableSet <BodyTrait>(); foreach (var item in traitsSave.To <IkonArray>()) { this.Traits.Add(deindexer.Get <BodyTraitType>(item.Tag as string).Load(this, item)); } }
public static PlanetIntelligence Load(IkonComposite rawData, ObjectDeindexer deindexer) { var loadedData = new PlanetIntelligence(rawData); deindexer.Add(loadedData); return(loadedData); }
public static IStarName Load(IkonComposite rawData) { return(new ConstellationStarName( rawData[ConstellationKey].To <int>(), rawData[DesignationKey].To <int>() )); }
private static DerivedStatistic loadDerivedStat(IkonComposite data) { return(new DerivedStatistic( data[DerivedStatBase].To <Formula>(), data[DerivedStatTotal].To <Formula>() )); }
private void loadNatives(IkonComposite data) { foreach (var designName in data.Keys) { this.NativeDesigns[designName] = loadPredefDesign(data[designName].To <IkonComposite>()); } }
public static ConstructionOrders Load(IkonComposite rawData, ObjectDeindexer deindexer) { var loadedData = new ConstructionOrders(rawData, deindexer); deindexer.Add(loadedData); return(loadedData); }
protected virtual void load(TaggableQueue <object, IkadnBaseObject> data) { IkonComposite baseData = data.Dequeue(BaseSettingsTag).To <IkonComposite>(); this.LanguageId = baseData[LanguageKey].To <string>(); this.LastGame = new LastGameInfo(baseData[LastGameKey].To <IkonComposite>()); }
public virtual IkonComposite Save(ObjectIndexer indexer) { var data = new IkonComposite(TableTag); data.Add(LocationKey, this.Location.Save(indexer)); data.Add(OwnerKey, new IkonInteger(indexer.IndexOf(this.Owner))); var buildingsData = new IkonArray(); foreach (var item in this.Buildings) { var itemData = new IkonComposite(BuildingsTag); itemData.Add(BuildingTypeKey, new IkonText(item.Key)); itemData.Add(BuildingAmountKey, new IkonFloat(item.Value)); buildingsData.Add(itemData); } data.Add(BuildingsKey, buildingsData); var stockpileData = new IkonArray(); foreach (var item in this.Stockpile) { var itemData = new IkonComposite(StockpileTag); itemData.Add(StockpileGroupKey, new IkonText(item.Key)); itemData.Add(StockpileAmountKey, new IkonFloat(item.Value)); stockpileData.Add(itemData); } data.Add(StockpileKey, stockpileData); return(data); }
public LastGameInfo(IkonComposite ikstonData) : this() { this.StartConditions = ikstonData.ToOrDefault(StartingConditionsKey, x => new StartingConditions(x.To <IkonComposite>()), null); this.StarPositionerConfig = ikstonData.ToOrDefault(StarPositionerKey, x => x.To <IkonArray>(), null); this.StarConnectorConfig = ikstonData.ToOrDefault(StarConnectorKey, x => x.To <IkonArray>(), null); this.StarPopulatorConfig = ikstonData.ToOrDefault(StarPopulatorKey, x => x.To <IkonArray>(), null); }
private Planet(IkonComposite rawData, ObjectDeindexer deindexer) { var starSave = rawData[StarKey]; this.Star = deindexer.Get <StarData>(starSave.To <int>()); var positionSave = rawData[PositionKey]; this.Position = positionSave.To <int>(); var typeSave = rawData[TypeKey]; this.Type = (PlanetType)Enum.Parse(typeof(PlanetType), (string)typeSave.Tag); var sizeSave = rawData[SizeKey]; this.Size = sizeSave.To <double>(); var traitsSave = rawData[TraitsKey]; this.Traits = new PendableSet <BodyTrait>(); foreach (var item in traitsSave.To <IkonArray>()) { this.Traits.Add(deindexer.Get <BodyTraitType>(item.Tag as string).Load(this, item)); } }
public static MainGame LoadGame(IkonComposite saveData, IEnumerable <TracableStream> staticDataSources) { var statics = StaticsDB.Load(staticDataSources); var deindexer = new ObjectDeindexer(); int turn = saveData[MainGame.TurnKey].To <int>(); deindexer.AddAll(statics.Constructables, x => x.IdCode); deindexer.AddAll(statics.DevelopmentTopics, x => x.IdCode); deindexer.AddAll(statics.PredeginedDesigns); deindexer.AddAll(statics.ResearchTopics, x => x.IdCode); deindexer.AddAll(statics.Armors.Values, x => x.IdCode); deindexer.AddAll(statics.Hulls.Values, x => x.IdCode); deindexer.AddAll(statics.IsDrives.Values, x => x.IdCode); deindexer.AddAll(statics.MissionEquipment.Values, x => x.IdCode); deindexer.AddAll(statics.Reactors.Values, x => x.IdCode); deindexer.AddAll(statics.Sensors.Values, x => x.IdCode); deindexer.AddAll(statics.Shields.Values, x => x.IdCode); deindexer.AddAll(statics.SpecialEquipment.Values, x => x.IdCode); deindexer.AddAll(statics.Thrusters.Values, x => x.IdCode); deindexer.AddAll(statics.Traits.Values, x => x.IdCode); var loadedStates = loadSaveData(saveData, deindexer, statics); var states = loadedStates.Item1; var players = loadedStates.Item2; var organellePlayer = loadedStates.Item3; var derivates = initDerivates(statics, players, organellePlayer, states); var game = new MainGame(players.ToArray(), organellePlayer, statics, states, derivates); game.CalculateDerivedEffects(); return(game); }
public IkonBaseObject Make() { //TODO(later) assumes single player var player = this.controller.LocalHumanPlayers().First(); var starData = new IkonArray(); foreach (var star in player.Stars) { var data = new IkonComposite(StarTag); data.Add("x", new IkonFloat(star.Position.X)); data.Add("y", new IkonFloat(star.Position.Y)); data.Add(ColorKey, new IkonArray( new [] { new IkonInteger(star.Color.R), new IkonInteger(star.Color.G), new IkonInteger(star.Color.B) } )); starData.Add(data); } var previewData = new IkonComposite(Tag); previewData.Add(TurnKey, new IkonInteger(player.Turn)); previewData.Add(StarsKey, starData); return(previewData); }
internal IkonComposite Save() { ObjectIndexer indexer = this.GenerateIndices(); var gameData = new IkonComposite(SaveGameTag); var playersData = new IkonArray(); var ordersData = new IkonArray(); gameData.Add(TurnKey, new IkonInteger(this.Turn)); gameData.Add(StatesKey, this.States.Save(indexer)); foreach (var player in this.MainPlayers) { playersData.Add(player.Save(indexer)); } gameData.Add(PlayersKey, playersData); gameData.Add(OrganellePlayerKey, this.StareaterOrganelles.Save(indexer)); foreach (var player in this.MainPlayers) { ordersData.Add(player.Orders.Save(indexer)); } gameData.Add(OrdersKey, ordersData); gameData.Add(OrganelleOrdersKey, this.StareaterOrganelles.Orders.Save(indexer)); return(gameData); }
public IkonComposite Save() { var data = new IkonComposite(TableTag); var colorData = new IkonArray(); colorData.Add(new IkonInteger(this.Color.R)); colorData.Add(new IkonInteger(this.Color.G)); colorData.Add(new IkonInteger(this.Color.B)); data.Add(ColorKey, colorData); data.Add(SizeKey, new IkonFloat(this.ImageSizeScale)); data.Add(NameKey, this.Name.Save()); var positionData = new IkonArray(); positionData.Add(new IkonFloat(this.Position.X)); positionData.Add(new IkonFloat(this.Position.Y)); data.Add(PositionKey, positionData); var traitsData = new IkonArray(); foreach (var item in this.Traits) { traitsData.Add(item.Save()); } data.Add(TraitsKey, traitsData); return(data); }
public static StellarisAdmin Load(IkonComposite rawData, ObjectDeindexer deindexer) { var loadedData = new StellarisAdmin(rawData, deindexer); deindexer.Add(loadedData); return(loadedData); }
public IkonComposite BuildSaveData() { var lastGameData = new IkonComposite(ClassName); if (this.StartConditions != null) { lastGameData.Add(StartingConditionsKey, this.StartConditions.BuildSaveData()); //TODO(v0.5) check if data is valid before loading } if (this.StarPositionerConfig != null) { lastGameData.Add(StarPositionerKey, this.StarPositionerConfig); } if (this.StarConnectorConfig != null) { lastGameData.Add(StarConnectorKey, this.StarConnectorConfig); } if (this.StarPopulatorConfig != null) { lastGameData.Add(StarPopulatorKey, this.StarPopulatorConfig); } return(lastGameData); }
public IkonComposite BuildSaveData() { var lastGameData = new IkonComposite(ClassName); if (this.StartConditions != null) { lastGameData.Add(StartingConditionsKey, this.StartConditions.BuildSaveData()); } if (this.PlayersConfig != null) { lastGameData.Add(PlayersKey, new IkonArray(this.PlayersConfig)); } if (this.StarPositionerConfig != null) { lastGameData.Add(StarPositionerKey, this.StarPositionerConfig); } if (this.StarConnectorConfig != null) { lastGameData.Add(StarConnectorKey, this.StarConnectorConfig); } if (this.StarPopulatorConfig != null) { lastGameData.Add(StarPopulatorKey, this.StarPopulatorConfig); } return(lastGameData); }
public IkonComposite Save(ObjectIndexer indexer) { var data = new IkonComposite(TableTag); data.Add(NameKey, new IkonText(this.Name)); var colorData = new IkonArray(); colorData.Add(new IkonInteger(this.Color.R)); colorData.Add(new IkonInteger(this.Color.G)); colorData.Add(new IkonInteger(this.Color.B)); data.Add(ColorKey, colorData); data.Add(ControlTypeKey, new IkonComposite(this.ControlType.ToString())); data.Add(OffscreenControlKey, this.OffscreenControl != null ? this.OffscreenControl.Save() : new IkonComposite("None")); var unlockedDesignsData = new IkonArray(); foreach (var item in this.UnlockedDesigns) { unlockedDesignsData.Add(new IkonInteger(indexer.IndexOf(item))); } data.Add(UnlockedDesignsKey, unlockedDesignsData); data.Add(IntelligenceKey, this.Intelligence.Save(indexer)); return(data); }
public static Design Load(IkonComposite rawData, ObjectDeindexer deindexer) { var loadedData = new Design(rawData, deindexer); deindexer.Add(loadedData); return(loadedData); }
public static Treaty Load(IkonComposite rawData, ObjectDeindexer deindexer) { var loadedData = new Treaty(rawData, deindexer); deindexer.Add(loadedData); return(loadedData); }
private static ColonyFormulaSet loadColonyFormulas(IkonComposite data) { return(new ColonyFormulaSet( data[ColonizationPopulationThreshold].To <Formula>(), data[UncolonizedMaxPopulation].To <Formula>(), data[ColonyVictoryWorth].To <Formula>(), data[ColonyFarmFields].To <Formula>(), data[ColonyEnvironment].To <Formula>(), data[ColonyMaxPopulation].To <Formula>(), loadDerivedStat(data[ColonyPopulationGrowth].To <IkonComposite>()), data[ColonyEmigrants].To <Formula>(), data[ColonyOrganization].To <Formula>(), data[ColonySpaceliftFactor].To <Formula>(), data[ColonyDesirability].To <Formula>(), loadPopulationActivity(data, ColonyFarming), loadPopulationActivity(data, ColonyGardening), loadPopulationActivity(data, ColonyMining), loadPopulationActivity(data, ColonyDevelopment), loadPopulationActivity(data, ColonyIndustry), data[ColonyFuelProduction].To <Formula>(), data[ColonyFuelCost].To <Formula>(), data[ColonyRepairPoints].To <Formula>(), data[ColonyPopulationHitPoints].To <Formula>(), data[ColonyMaintenanceLimit].To <Formula>() )); }
public IkonComposite Save(ObjectIndexer indexer) { var data = new IkonComposite(TableTag); data.Add(DevelopmentFocusIndexKey, new IkonInteger(this.DevelopmentFocusIndex)); data.Add(DevelopmentQueueKey, saveDevelopment()); data.Add(ResearchFocusKey, new IkonText(this.ResearchFocus)); data.Add(ConstructionPlansKey, saveConstruction(indexer)); data.Add(ShipOrdersKey, saveShipOrders(indexer)); data.Add(ColonizationOrdersKey, saveColonizationOrders(indexer)); data.Add(RefitOrdersKey, saveRefitOrders(indexer)); var audienceRequestsData = new IkonArray(); foreach (var item in this.AudienceRequests) { audienceRequestsData.Add(new IkonInteger(item)); } data.Add(AudienceRequestsKey, audienceRequestsData); return(data); }
private static ShipFormulaSet loadShipFormulas(IkonComposite data) { var colonizerBuildings = new Dictionary <string, Formula>(); var buildingData = data[ShipColonyBuildings].To <IkonComposite>(); foreach (var buildingId in buildingData.Keys) { colonizerBuildings.Add(buildingId, buildingData[buildingId].To <Formula>()); } return(new ShipFormulaSet( data[ShipCloaking].To <Formula>(), data[ShipCombatSpeed].To <Formula>(), data[ShipDetection].To <Formula>(), data[ShipEvasion].To <Formula>(), data[ShipHitPoints].To <Formula>(), data[ShipJamming].To <Formula>(), data[ShipScaneRange].To <Formula>(), data[ShipColonyPopulation].To <Formula>(), colonizerBuildings, data[ShipReactorSize].To <Formula>(), data[ShipShieldSize].To <Formula>(), data[ShipNaturalCloakBonus].To <Formula>().Evaluate(null), data[ShipSensorRangePenalty].To <Formula>().Evaluate(null), data[ShipRepairCostFactor].To <Formula>().Evaluate(null), data[ShipLevelRefitCost].To <Formula>(), data[ShipArmorCostPortion].To <Formula>().Evaluate(null), data[ShipReactorCostPortion].To <Formula>().Evaluate(null), data[ShipSensorCostPortion].To <Formula>().Evaluate(null), data[ShipThrustersCostPortion].To <Formula>().Evaluate(null), data[ShipFuelUsage].To <Formula>(), data[ShipWormholeSpeed].To <Formula>() )); }
public static PlayerOrders Load(IkonComposite rawData, ObjectDeindexer deindexer) { var loadedData = new PlayerOrders(rawData, deindexer); deindexer.Add(loadedData); return(loadedData); }
public static ColonizationProject Load(IkonComposite rawData, ObjectDeindexer deindexer) { var loadedData = new ColonizationProject(rawData, deindexer); deindexer.Add(loadedData); return(loadedData); }
private IkadnBaseObject saveConstruction(ObjectIndexer indexer) { var queue = new IkonArray(); foreach (var plan in this.ConstructionPlans) { IkonComposite planData; if (plan.Key.Location.Planet == null) { planData = new IkonComposite(StellarisConstructionTag); planData.Add(LocationKey, new IkonInteger(indexer.IndexOf((StellarisAdmin)plan.Key))); } else { planData = new IkonComposite(ColonyConstructionTag); planData.Add(LocationKey, new IkonInteger(indexer.IndexOf((Colony)plan.Key))); } planData.Add(OrdersKey, plan.Value.Save(indexer)); queue.Add(planData); } return(queue); }
public static Wormhole Load(IkonComposite rawData, ObjectDeindexer deindexer) { var loadedData = new Wormhole(rawData, deindexer); deindexer.Add(loadedData); return(loadedData); }
public StartingConditions(IkonComposite ikstonData) : this(ikstonData[PopulationKey].To <long>(), ikstonData[ColoniesKey].To <int>(), ikstonData[InfrastructureKey].To <long>(), ikstonData[NameKey].To <string>()) { }
public static ShipGroup Load(IkonComposite rawData, ObjectDeindexer deindexer) { var loadedData = new ShipGroup(rawData, deindexer); deindexer.Add(loadedData); return(loadedData); }
public IkonComposite Save(ObjectIndexer indexer) { var data = new IkonComposite(TableTag); data.Add(OwnerKey, new IkonInteger(indexer.IndexOf(this.Owner))); var positionData = new IkonArray(); positionData.Add(new IkonFloat(this.Position.X)); positionData.Add(new IkonFloat(this.Position.Y)); data.Add(PositionKey, positionData); var missionsData = new IkonArray(); foreach (var item in this.Missions) { missionsData.Add(item.Save(indexer)); } data.Add(MissionsKey, missionsData); var shipsData = new IkonArray(); foreach (var item in this.Ships) { shipsData.Add(item.Save(indexer)); } data.Add(ShipsKey, shipsData); return(data); }