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); }
/// <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; } } }