Example #1
0
    private bool CreateUnit(Coord coord, Unit.Data unitData, Faction faction)
    {
        var cell = game.Map[coord];

        if (cell == null || cell.HasUnit)
        {
            return(false);
        }
        game.CreateUnit(game.Projects.Infantry.UnitData, coord, faction);
        return(true);
    }
Example #2
0
        /// <summary>
        /// <para>Chỉ nên save khi game đang ở trạng thái rảnh rỗi (không chạy task)</para>
        /// <para>Và giữa thời gian OnTurnBegin ----- OnTurnComplete/OnTimeEnd</para>
        /// <para>Và lượt hiện tại là người chơi (Local).</para>
        /// </summary>
        /// <param name="saveCurrentGame"></param>
        public GameData(bool saveCurrentGame = false)
        {
            if (!saveCurrentGame)
            {
                return;
            }
            config = Config.DeSerialize(Config.Serialize(Config.instance));
            battle = new Battle.Data(Battle.instance);
            var armyDatas = new List <Army.Data>();

            foreach (var army in Army.dict.Values)
            {
                if (army)
                {
                    armyDatas.Add(new Army.Data(army));
                }
            }
            this.armyDatas = armyDatas;

            var size = new Vector2Int(AETerrain.array.Length, AETerrain.array[0].Length);

            tombstones = new Tombstone.Data?[size.x][];
            terrains   = new AETerrain.Data[size.x][];
            units      = new Unit.Data[size.x][];
            for (int x = 0; x < size.x; ++x)
            {
                tombstones[x] = new Tombstone.Data?[size.y];
                terrains[x]   = new AETerrain.Data[size.y];
                units[x]      = new Unit.Data[size.y];
            }
            for (int x = 0; x < size.x; ++x)
            {
                for (int y = 0; y < size.y; ++y)
                {
                    tombstones[x][y] = Tombstone.array[x][y] ? new Tombstone.Data(Tombstone.array[x][y]) as Tombstone.Data? : null;
                    terrains[x][y]   = AETerrain.Data.Save(AETerrain.array[x][y]);
                    units[x][y]      = Unit.array[x][y] ? Unit.Data.Save(Unit.array[x][y]) : null;
                }
            }
        }