private void OnSetClass(object sender, object args) { object[] param = args as object[]; int num = MatchController.NumberOfPlayers; UnitParameters unitParam = (UnitParameters)param[1]; Random.InitState(unitParam.RandomSeed); foreach (PlayerController player in MatchController.Players) { if (player.netId == (NetworkInstanceId)param[0]) { player.AssignUnit(new BasicUnit(GameModel.Map.GetRandomUnoccupiedCell(), MapGenerator.GetRandomDirection(), unitParam.Class)); } if (player.ControlledUnit != null) { --num; } } if (num == 0) { Starting = false; GameView.Clear(); ShowMap(); GameView.Init(); CheckState(); } }
private void RpcSetClass(NetworkInstanceId id, UnitParameters param) { object[] args = new object[2]; args[0] = id; args[1] = param; this.PostNotification(SetClass, args); }
public MapParameters(List <Cell> cells) { Positions = new Coordinates[cells.Count]; Tiles = new BasicTile[cells.Count]; Objects = new ObjectParameters[cells.Count]; Units = new UnitParameters[cells.Count]; for (int i = 0; i < cells.Count; ++i) { Positions[i] = cells[i].Position; Tiles[i] = cells[i].Tile; if (cells[i].Object != null) { Objects[i] = new ObjectParameters(cells[i].Object.Type); } else { Objects[i] = new ObjectParameters(); } if (cells[i].Unit != null) { Units[i] = new UnitParameters(cells[i].Unit.Class.Tag, cells[i].Unit.Facing); } else { Units[i] = new UnitParameters(); } } }
public Map(MapParameters mapParam) { Cells = new Dictionary <Coordinates, Cell>(); for (int i = 0; i < mapParam.Count; ++i) { Cell cell = new Cell(mapParam.Positions[i], mapParam.Tiles[i]); ObjectParameters objectParams = mapParam.Objects[i]; if (objectParams.Type != ObjectType.None) { new BasicObject(cell, objectParams.Type); } UnitParameters unitParams = mapParam.Units[i]; if (unitParams.Class != ClassTag.None) { new BasicUnit(cell, unitParams.Facing, unitParams.Class); } Cells[mapParam.Positions[i]] = cell; } }
public void CmdSetClass(NetworkInstanceId id, UnitParameters param) { RpcSetClass(id, param); }