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); }
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 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); }
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 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); }
public override IkonComposite Save(ObjectIndexer indexer) { var data = base.Save(indexer); data.Add(PopulationKey, new IkonFloat(this.Population)); return(data); }
internal static void ConversionIndexer(CustomObjectIndexerTarget context, ObjectIndexer indexer) { //Custom finding of all default Material properties on every single object type including custom types if (MaterialReferenceBuilder.MaterialReferenceLookup.TryGetValue(context.targetType, out var methods)) { foreach (var method in methods) { if (method == null) { continue; } var result = method.GetMaterialFromMethod(context.target, (methodName, objectName) => $"The method {methodName} was not found on {objectName}. This property will not be indexed."); if (result is Material materialResult) { if (materialResult != null && MaterialReferenceBuilder.GetIsReadonlyMaterial(materialResult)) { indexer.AddProperty("urp", "convert-readonly", context.documentIndex); } } else if (result is Material[] materialArrayResult) { foreach (var material in materialArrayResult) { if (material != null && MaterialReferenceBuilder.GetIsReadonlyMaterial(material)) { indexer.AddProperty("urp", "convert-readonly", context.documentIndex); } } } } } }
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); }
public override IkadnBaseObject Save(ObjectIndexer indexer) { var saveData = new IkonComposite(MissionTag); saveData.Add(TargetKey, new IkonInteger(indexer.IndexOf(this.Target))); return(saveData); }
public IkonComposite Save(ObjectIndexer indexer) { var data = new IkonComposite(TableTag); data.Add(Party1Key, new IkonInteger(indexer.IndexOf(this.Party1))); data.Add(Party2Key, new IkonInteger(indexer.IndexOf(this.Party2))); return(data); }
public IkonComposite Save(ObjectIndexer indexer) { var data = new IkonComposite(TableTag); data.Add(FromStarKey, new IkonInteger(indexer.IndexOf(this.FromStar))); data.Add(ToStarKey, new IkonInteger(indexer.IndexOf(this.ToStar))); return(data); }
public IkonComposite Save(ObjectIndexer indexer) { var data = new IkonComposite(TableTag); data.Add(OwnerKey, new IkonInteger(indexer.IndexOf(this.Owner))); data.Add(DestinationKey, new IkonInteger(indexer.IndexOf(this.Destination))); return(data); }
//Internals internal static void FixIndex(IUnifiedIMObject obj, Type t, string property, object oldValue) { if (Indexes.ContainsKey(t)) { ObjectIndexer <IUnifiedIMObject> pIndexes = Indexes[t]; object cVal = Property.Get(obj, property) ?? null; pIndexes.RemoveIndex(property, oldValue, obj); pIndexes.AddIndex(property, cVal, obj); } }
public IkadnBaseObject Save(ObjectIndexer indexer) { var data = new IkonComposite(SaveTag); data.Add(CountKey, new IkonInteger(this.TechProgress.CompletedCount)); data.Add(InvestedKey, new IkonFloat(this.TechProgress.InvestedPoints)); data.Add(LeftoverKey, new IkonFloat(this.TechProgress.LeftoverPoints)); data.Add(TopicKey, new IkonInteger(indexer.IndexOf(this.TechProgress.Item))); return(data); }
internal static void DeleteIndexes(IUnifiedIMObject obj) { if (Indexes.ContainsKey(obj.DataType)) { ObjectIndexer <IUnifiedIMObject> pIndexes = Indexes[obj.DataType]; foreach (string prop in pIndexes.Properties) { object cVal = Property.Get(obj, prop) ?? null; pIndexes.RemoveIndex(prop, cVal, obj); } } }
public IkonComposite Save(ObjectIndexer indexer) { var data = new IkonComposite(TableTag); data.Add(IdCodeKey, new IkonText(this.IdCode)); data.Add(OwnerKey, new IkonInteger(indexer.IndexOf(this.Owner))); data.Add(IsObsoleteKey, new IkonInteger(this.IsObsolete ? 1 : -1)); data.Add(IsVirtualKey, new IkonInteger(this.IsVirtual ? 1 : -1)); data.Add(NameKey, new IkonText(this.Name)); data.Add(ImageIndexKey, new IkonInteger(this.ImageIndex)); data.Add(ArmorKey, this.Armor.Save()); data.Add(HullKey, this.Hull.Save()); if (this.IsDrive != null) { data.Add(IsDriveKey, this.IsDrive.Save()); } data.Add(ReactorKey, this.Reactor.Save()); data.Add(SensorsKey, this.Sensors.Save()); if (this.Shield != null) { data.Add(ShieldKey, this.Shield.Save()); } var missionEquipmentData = new IkonArray(); foreach (var item in this.MissionEquipment) { missionEquipmentData.Add(item.Save()); } data.Add(EquipmentKey, missionEquipmentData); var specialEquipmentData = new IkonArray(); foreach (var item in this.SpecialEquipment) { specialEquipmentData.Add(item.Save()); } data.Add(SpecialsKey, specialEquipmentData); data.Add(ThrustersKey, this.Thrusters.Save()); return(data); }
public IkonComposite Save(ObjectIndexer indexer) { var data = new IkonComposite(TableTag); data.Add(DestinationKey, new IkonInteger(indexer.IndexOf(this.Destination))); var sourcesData = new IkonArray(); foreach(var item in this.Sources) sourcesData.Add(new IkonInteger(indexer.IndexOf(item))); data.Add(SourcesKey, sourcesData); return data; }
public IkonComposite Save(ObjectIndexer indexer) { var data = new IkonComposite(TableTag); data.Add(DesignKey, new IkonInteger(indexer.IndexOf(this.Design))); data.Add(QuantityKey, new IkonInteger(this.Quantity)); data.Add(DamageKey, new IkonFloat(this.Damage)); data.Add(UpgradePointsKey, new IkonFloat(this.UpgradePoints)); return(data); }
public IkonComposite Save(ObjectIndexer indexer) { var data = new IkonComposite(TableTag); data.Add(OwnerKey, new IkonInteger(indexer.IndexOf(this.Owner))); data.Add(TopicKey, new IkonText(this.Topic.IdCode)); data.Add(LevelKey, new IkonInteger(this.Level)); data.Add(InvestedKey, new IkonFloat(this.InvestedPoints)); return(data); }
public override Ikadn.IkadnBaseObject Save(ObjectIndexer indexer) { var saveData = new IkonComposite(MissionTag); saveData.Add(DestinationKey, new IkonInteger(indexer.IndexOf(this.Destination))); if (this.UsedWormhole != null) { saveData.Add(WormholeKey, new IkonInteger(indexer.IndexOf(this.UsedWormhole))); } return(saveData); }
public IkonBaseObject Save(object obj, ObjectIndexer indexer) { var session = new SaveSession(getTypeStrategy, indexer); var mainData = session.Serialize(obj); var referencedData = session.GetSerialzedData(); var result = new IkonComposite(MainGame.SaveGameTag); result.Add("references", new IkonArray(referencedData)); result.Add(EntryPointKey, mainData); return(result); }
public ObjectIndexer FindByGameObject(GameObject obj) { ObjectIndexer result = null; foreach (ObjectIndexer index in SceneObjects) { if (index.obj.GetInstanceID() == obj.GetInstanceID()) { result = index; break; } } return(result); }
public ObjectIndexer FindByID(int id) { ObjectIndexer result = null; foreach (ObjectIndexer index in SceneObjects) { if (index.ID == id) { result = index; break; } } return(result); }
public IkonComposite Save(ObjectIndexer indexer) { var data = new IkonComposite(TableTag); var starKnowledgeData = new IkonArray(); foreach (var item in this.starKnowledge) { var itemData = new IkonComposite(StarIntellTag); itemData.Add(StarDataKey, new IkonInteger(indexer.IndexOf(item.Key))); itemData.Add(StarIntelligenceKey, item.Value.Save(indexer)); starKnowledgeData.Add(itemData); } data.Add(StarKnowledgeKey, starKnowledgeData); return(data); }
public IkonComposite Save(ObjectIndexer indexer) { var data = new IkonComposite(TableTag); data.Add(SpendingRatioKey, new IkonFloat(this.SpendingRatio)); var queueData = new IkonArray(); foreach (var item in this.Queue) { queueData.Add(new IkonText(item.IdCode)); } data.Add(QueueKey, queueData); return(data); }
private IkadnBaseObject saveColonizationOrders(ObjectIndexer indexer) { var queue = new IkonArray(); foreach (var order in this.ColonizationOrders) { IkonComposite orderData; orderData = new IkonComposite(ColonizationOrdersTag); orderData.Add(ColonizationDestinationTag, new IkonInteger(indexer.IndexOf(order.Value.Destination))); orderData.Add(ColonizationSourcesTag, new IkonArray(order.Value.Sources.Select(x => new IkonInteger(indexer.IndexOf(x))))); queue.Add(orderData); } return(queue); }
public IkonComposite Save(ObjectIndexer indexer) { var data = new IkonComposite(TableTag); data.Add(LastVisitedKey, new IkonInteger(this.LastVisited)); var planetsData = new IkonArray(); foreach (var item in this.Planets) { var itemData = new IkonComposite(PlanetIntellTag); itemData.Add(PlanetKey, new IkonInteger(indexer.IndexOf(item.Key))); itemData.Add(PlanetIntelligenceKey, item.Value.Save()); planetsData.Add(itemData); } data.Add(PlanetsKey, planetsData); return(data); }
public ObjectIndexer GenerateIndices() { var indexer = new ObjectIndexer(); indexer.AddAll(this.AllPlayers); indexer.AddAll(Statics.PredeginedDesigns); indexer.AddAll(States.Designs); indexer.AddAll(States.DevelopmentAdvances); indexer.AddAll(States.Planets); indexer.AddAll(States.Stars); indexer.AddAll(States.Wormholes); indexer.AddAll(States.Colonies); indexer.AddAll(States.Stellarises); return(indexer); }
internal static void ConversionIndexer(CustomObjectIndexerTarget context, ObjectIndexer indexer) { // Note: Volumes and Layers on the same object would still produce only a // single result in the "urp:convert-ppv2component" search, thus we only // explicitly add one or the other here, instead of both. if (context.targetType == typeof(BIRPRendering.PostProcessVolume)) { indexer.AddProperty("urp", "convert-ppv2component", context.documentIndex); } else if (context.targetType == typeof(BIRPRendering.PostProcessLayer)) { indexer.AddProperty("urp", "convert-ppv2component", context.documentIndex); } if (context.targetType == typeof(BIRPRendering.PostProcessProfile)) { indexer.AddProperty("urp", "convert-ppv2scriptableobject", context.documentIndex); } }
private IkadnBaseObject saveShipOrders(ObjectIndexer indexer) { var queue = new IkonArray(); foreach (var order in this.ShipOrders) { var orderData = new IkonComposite(ShipOrderTag); orderData.Add(Position, new IkonArray(). Add(new IkonFloat(order.Key.X)). Add(new IkonFloat(order.Key.Y)) ); orderData.Add(Fleets, new IkonArray(order.Value.Select(x => x.Save(indexer)))); queue.Add(orderData); } return(queue); }