Beispiel #1
0
        public static MainGame LoadGame(IkonComposite saveData, IEnumerable <TracableStream> staticDataSources, StateManager stateManager)
        {
            var statics = StaticsDB.Load(staticDataSources);

            var deindexer = new ObjectDeindexer();

            deindexer.AddAll(PlayerAssets.OrganizationsRaw);
            deindexer.AddAll(statics.Constructables);
            deindexer.AddAll(statics.DevelopmentTopics);
            deindexer.AddAll(statics.PredeginedDesigns);
            deindexer.AddAll(statics.ResearchTopics);
            deindexer.AddAll(statics.Armors.Values);
            deindexer.AddAll(statics.Hulls.Values);
            deindexer.AddAll(statics.IsDrives.Values);
            deindexer.AddAll(statics.MissionEquipment.Values);
            deindexer.AddAll(statics.Reactors.Values);
            deindexer.AddAll(statics.Sensors.Values);
            deindexer.AddAll(statics.Shields.Values);
            deindexer.AddAll(statics.SpecialEquipment.Values);
            deindexer.AddAll(statics.Thrusters.Values);
            deindexer.AddAll(statics.PlanetTraits.Values);
            deindexer.AddAll(statics.StarTraits.Values);

            var game = stateManager.Load <MainGame>(
                saveData.To <IkonComposite>(),
                deindexer,
                new Dictionary <Type, Action <object> >()
            {
                { typeof(Design), x => ((Design)x).CalcHash(statics) }
            }
                );

            var derivates = initDerivates(statics, game.MainPlayers, game.StareaterOrganelles, game.States);

            game.Initialze(statics, derivates);
            foreach (var player in game.MainPlayers)
            {
                var playerProc = derivates.Players.Of[player];
                playerProc.Initialize(game);
            }
            game.CalculateDerivedEffects();

            return(game);
        }
Beispiel #2
0
        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);
        }