internal Map(string name, GameProperty <MapSize> mapSize = null, IEnumerable <GameProperty> mapProperties = null, SaveString saveName = null, Expansion.Expansion requirement = null, IDictionary <MapSize, SaveString> sizedMaps = null)
        {
            Name        = name;
            Path        = saveName;
            Requirement = requirement;
            if (mapProperties != null)
            {
                _MapProperties = new List <GameProperty>(mapProperties);
            }
            else
            {
                _MapProperties = new List <GameProperty>();
            }

            if (mapSize == null)
            {
                mapSize = MapPropertyLib.MapSizeProp;
            }

            if (sizedMaps != null)
            {
                SizedMaps = new Dictionary <MapSize, SaveString>(sizedMaps);
            }

            NumberOfCityStates = new SaveNumber(12, 0, MaxCityStates);
            this._Size         = mapSize;
            AdjustMapSizeSideEffects(mapSize.Value);
        }
        internal Map(string name, GameProperty<MapSize> mapSize = null, IEnumerable<GameProperty> mapProperties = null, SaveString saveName = null, Expansion.Expansion requirement = null, IDictionary<MapSize, SaveString> sizedMaps = null)
        {
            Name = name;
            Path = saveName;
            Requirement = requirement;
            if (mapProperties != null)
                _MapProperties = new List<GameProperty>(mapProperties);
            else _MapProperties = new List<GameProperty>();

            if (mapSize == null)
                mapSize = MapPropertyLib.MapSizeProp;

            if (sizedMaps != null)
                SizedMaps = new Dictionary<MapSize, SaveString>(sizedMaps);

            NumberOfCityStates = new SaveNumber(12, 0, MaxCityStates);
            this._Size = mapSize;
            AdjustMapSizeSideEffects(mapSize.Value);
        }
        public GameConfig()
        {
            Version = CurrentVersion;
            Build   = CurrentBuild;

            RandomSeed = new Random().Next(int.MinValue, int.MaxValue);

            Name     = "My Game";
            GameMode = GameMode.HotSeat;

            _Expansions = new HashSet <Expansion.Expansion>
            {
                Expansion.Expansion.Mongolia,
                Expansion.Expansion.Upgrade1
            };

            Mods = new HashSet <Mod>();

            Players = new Player[SaveHelpers.StandardSectionBlockCount];
            for (int i = 0; i < SaveHelpers.MaxPlayers; i++)
            {
                Players[i] = Player.ClosedSlot;
            }
            for (int i = SaveHelpers.MaxPlayers; i < SaveHelpers.StandardSectionBlockCount - 1; i++)
            {
                Players[i] = Player.CityState;
            }
            Players[Players.Length - 1] = Player.Barbarian;

            Map               = Map.Continents;
            GamePace          = CreateGamePaceProperty(Game.GamePace.Quick);
            HeaderStartingEra = GameEraProps.Vanilla;
            StartingEra       = GameEraProps.Vanilla;

            TimeVictory       = true;
            ScienceVictory    = true;
            DominationVictory = true;
            CulturalVictory   = true;
            DiplomaticVictory = true;

            //EnableMaxTurns = false;
            //MaxTurns = new SaveNumber(100, 1, 999);
            EnableTurnTimer = false;
            TurnTimer       = new SaveNumber(0, 0, 999);

            AllowPolicySaving    = false;
            AllowPromotionSaving = false;
            CompleteKills        = false;
            DisableStartBias     = false;
            NewRandomSeed        = false;
            NoAncientRuins       = false;
            NoBarbarians         = false;
            NoCityRazing         = false;
            NoEspionage          = false;
            OneCityChallenge     = false;
            QuickCombat          = true;
            QuickMovement        = true;
            RagingBarbarians     = false;
            RandomPersonalities  = false;

            DynamicTurns      = false;
            SimultaneousTurns = false;
            Pitboss           = false;

            //Special options not visible in the in-game setup menu
            NoReligion          = false;
            AlwaysWar           = false;
            AlwaysPeace         = false;
            NoChangingWarPeace  = false;
            LockMods            = false;
            NoScience           = false;
            NoPolicies          = false;
            NoHappiness         = false;
            NoLeagues           = false;
            NoCultureOverviewUI = false;

            CustomSettings = new Dictionary <string, bool>();

            TimeOffset  = 3;
            GameStarted = false;
        }
        public GameConfig()
        {
            Version = CurrentVersion;
            Build = CurrentBuild;

            RandomSeed = new Random().Next(int.MinValue, int.MaxValue);

            Name = "My Game";
            GameMode = GameMode.HotSeat;

            _Expansions = new HashSet<Expansion.Expansion>
            {
                Expansion.Expansion.Mongolia, 
                Expansion.Expansion.Upgrade1
            };

            Mods = new HashSet<Mod>();

            Players = new Player[SaveHelpers.StandardSectionBlockCount];
            for (int i = 0; i < SaveHelpers.MaxPlayers; i++)
                Players[i] = Player.ClosedSlot;
            for (int i = SaveHelpers.MaxPlayers; i < SaveHelpers.StandardSectionBlockCount - 1; i++)
                Players[i] = Player.CityState;
            Players[Players.Length - 1] = Player.Barbarian;

            Map = Map.Continents;
            GamePace = CreateGamePaceProperty(Game.GamePace.Quick);
            HeaderStartingEra = GameEraProps.Vanilla;
            StartingEra = GameEraProps.Vanilla;

            TimeVictory = true;
            ScienceVictory = true;
            DominationVictory = true;
            CulturalVictory  = true;
            DiplomaticVictory = true;

            //EnableMaxTurns = false;
            //MaxTurns = new SaveNumber(100, 1, 999);
            EnableTurnTimer = false;
            TurnTimer = new SaveNumber(0, 0, 999);

            AllowPolicySaving = false;
            AllowPromotionSaving = false;
            CompleteKills = false;
            DisableStartBias = false;
            NewRandomSeed = false;
            NoAncientRuins = false;
            NoBarbarians = false;
            NoCityRazing = false;
            NoEspionage = false;
            OneCityChallenge = false;
            QuickCombat = true;
            QuickMovement = true;
            RagingBarbarians = false;
            RandomPersonalities = false;

            DynamicTurns = false;
            SimultaneousTurns = false;
            Pitboss = false;

            //Special options not visible in the in-game setup menu
            NoReligion = false;
            AlwaysWar = false;
            AlwaysPeace = false;
            NoChangingWarPeace = false;
            LockMods = false;
            NoScience = false;
            NoPolicies = false;
            NoHappiness = false;
            NoLeagues = false;
            NoCultureOverviewUI = false;

            CustomSettings = new Dictionary<string, bool>();
            
            TimeOffset = 3;
            GameStarted = false;
        }