Exemple #1
0
        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);
        }
Exemple #2
0
        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);
        }
Exemple #4
0
        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);
        }
Exemple #5
0
        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);
        }
Exemple #6
0
        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);
        }
Exemple #9
0
        public override IkadnBaseObject Save(ObjectIndexer indexer)
        {
            var saveData = new IkonComposite(MissionTag);

            saveData.Add(TargetKey, new IkonInteger(indexer.IndexOf(this.Target)));

            return(saveData);
        }
Exemple #10
0
        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);
        }
Exemple #11
0
        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);
         }
     }
 }
Exemple #16
0
        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;
 
		}
Exemple #18
0
        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);
        }
Exemple #19
0
        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);
        }
Exemple #21
0
        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);
        }
Exemple #22
0
    public ObjectIndexer FindByGameObject(GameObject obj)
    {
        ObjectIndexer result = null;

        foreach (ObjectIndexer index in SceneObjects)
        {
            if (index.obj.GetInstanceID() == obj.GetInstanceID())
            {
                result = index;
                break;
            }
        }
        return(result);
    }
Exemple #23
0
    public ObjectIndexer FindByID(int id)
    {
        ObjectIndexer result = null;

        foreach (ObjectIndexer index in SceneObjects)
        {
            if (index.ID == id)
            {
                result = index;
                break;
            }
        }
        return(result);
    }
Exemple #24
0
        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);
        }
Exemple #25
0
        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);
        }
Exemple #26
0
        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);
        }
Exemple #27
0
        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);
        }
Exemple #28
0
        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);
        }
Exemple #29
0
        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);
            }
        }
Exemple #30
0
        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);
        }