Пример #1
0
        private Dictionary <string, int> loadDevelopmet(IkadnBaseObject rawData, ObjectDeindexer deindexer)
        {
            var queue = new Dictionary <string, int>();

            foreach (var topic in rawData.To <IEnumerable <string> >())
            {
                queue.Add(topic, queue.Count);
            }

            return(queue);
        }
Пример #2
0
        private Dictionary <Design, Design> loadRefitOrders(IkadnBaseObject rawData, ObjectDeindexer deindexer)
        {
            var orders = new Dictionary <Design, Design>();

            foreach (var orderData in rawData.To <IEnumerable <IkonComposite> >())
            {
                orders.Add(
                    deindexer.Get <Design>(orderData[FromDesignKey].To <int>()),
                    deindexer.Get <Design>(orderData[ToDesignKey].To <int>())
                    );
            }

            return(orders);
        }
Пример #3
0
 public static IConstructionProject Load(IkadnBaseObject rawData, LoadSession session)
 {
     if (rawData.Tag.Equals(StaticProject.Tag))
     {
         return(session.Load <StaticProject>(rawData));
     }
     else if (rawData.Tag.Equals(ShipProject.Tag))
     {
         return(session.Load <ShipProject>(rawData));
     }
     else
     {
         throw new KeyNotFoundException("Unknown construction project type: " + rawData.Tag);
     }
 }
Пример #4
0
        //TODO(later) make separate collections for colony and stellaris construction orders
        private Dictionary <AConstructionSite, ConstructionOrders> loadConstruction(IkadnBaseObject rawData, ObjectDeindexer deindexer)
        {
            var queue = new Dictionary <AConstructionSite, ConstructionOrders>();

            foreach (var plan in rawData.To <IEnumerable <IkonComposite> >())
            {
                AConstructionSite site = plan.Tag.Equals(StellarisConstructionTag) ?
                                         (AConstructionSite)deindexer.Get <StellarisAdmin>(plan[LocationKey].To <int>()) :
                                         (AConstructionSite)deindexer.Get <Colony>(plan[LocationKey].To <int>());

                queue.Add(site, ConstructionOrders.Load(plan[OrdersKey].To <IkonComposite>(), deindexer));
            }

            return(queue);
        }
Пример #5
0
        public static AMission Load(IkadnBaseObject rawData, ObjectDeindexer deindexer)
        {
            AMission mission = null;

            if (rawData.Tag.Equals(MoveMission.MissionTag))
            {
                mission = MoveMission.Load(rawData, deindexer);
            }
            else
            {
                throw new KeyNotFoundException("Unknown order type: " + rawData.Tag);
            }

            return(mission);
        }
Пример #6
0
        private Dictionary <Vector2D, HashSet <Fleet> > loadShipOrders(IkadnBaseObject rawData, ObjectDeindexer deindexer)
        {
            var orders = new Dictionary <Vector2D, HashSet <Fleet> >();

            foreach (var orderData in rawData.To <IEnumerable <IkonComposite> >())
            {
                var rawPosition = orderData[Position].To <double[]>();
                var fleets      = new HashSet <Fleet>();

                foreach (var fleetData in orderData[Fleets].To <IEnumerable <IkonComposite> >())
                {
                    fleets.Add(Fleet.Load(fleetData, deindexer));
                }

                orders.Add(new Vector2D(rawPosition[0], rawPosition[1]), fleets);
            }

            return(orders);
        }
Пример #7
0
        private Dictionary <Planet, ColonizationPlan> loadColonizationOrders(IkadnBaseObject rawData, ObjectDeindexer deindexer)
        {
            var orders = new Dictionary <Planet, ColonizationPlan>();

            foreach (var orderData in rawData.To <IEnumerable <IkonComposite> >())
            {
                var destination = deindexer.Get <Planet>(orderData[ColonizationDestinationTag].To <int>());
                var plan        = new ColonizationPlan(destination);

                foreach (var sourceIndex in orderData[ColonizationSourcesTag].To <IEnumerable <int> >())
                {
                    plan.Sources.Add(deindexer.Get <StarData>(sourceIndex));
                }

                orders.Add(destination, plan);
            }

            return(orders);
        }
Пример #8
0
        private static IOffscreenPlayer loadControl(IkadnBaseObject rawData)
        {
            var dataMap = rawData.To <IkonComposite>();

            if (dataMap.Tag.Equals(PlayerType.NoControllerTag))
            {
                return(null);
            }
            else if (dataMap.Tag.Equals(PlayerType.AiControllerTag))
            {
                string factoryId = dataMap[PlayerType.FactoryIdKey].To <string>();
                //TODO(later): what if no factory was found?
                return(PlayerAssets.AIDefinitions.First(x => x.Id == factoryId).Load(dataMap));
            }
            else if (dataMap.Tag.Equals(PlayerType.OrganelleControllerTag))
            {
                return(new OrganellePlayerFactory().Load(dataMap));
            }

            //TODO(later): Invalid controller data
            return(null);
        }
Пример #9
0
 public static AMission Load(IkadnBaseObject rawData, LoadSession session)
 {
     if (rawData.Tag.Equals(MoveMission.MissionTag))
     {
         return(session.Load <MoveMission>(rawData));
     }
     else if (rawData.Tag.Equals(DisembarkMission.MissionTag))
     {
         return(session.Load <DisembarkMission>(rawData));
     }
     else if (rawData.Tag.Equals(SkipTurnMission.MissionTag))
     {
         return(new SkipTurnMission());
     }
     else if (rawData.Tag.Equals(LoadMission.MissionTag))
     {
         return(new LoadMission());
     }
     else
     {
         throw new KeyNotFoundException("Unknown order type: " + rawData.Tag);
     }
 }
Пример #10
0
 private static IStarName loadName(IkadnBaseObject rawData, LoadSession session)
 {
     return(rawData.Tag.Equals(ConstellationStarName.SaveTag) ?
            (IStarName)session.Load <ConstellationStarName>(rawData) :
            (IStarName)session.Load <ProperStarName>(rawData));
 }
Пример #11
0
 public static IStarName loadName(IkadnBaseObject rawData)
 {
     return(rawData.Tag.Equals(ConstellationStarName.SaveTag) ?
            ConstellationStarName.Load(rawData.To <IkonComposite>()) :
            ProperStarName.Load(rawData.To <IkonComposite>()));
 }