public Game(DataGame data) { InitializeNulls(); // Make new game with config settings = data; board = new Field[2 * settings.GoalLen + settings.TaskLen, settings.BoardWidth]; for (int y = 0; y < 2 * settings.GoalLen + settings.TaskLen; y++) { for (int x = 0; x < settings.BoardWidth; x++) { board[y, x] = new Field(); } } playersDictionary = new Dictionary <int, Player>(2 * settings.PlayersPerTeam); redTeam = new List <int>(settings.PlayersPerTeam); // used for broadcast ip reference, fast lookup without plDict iterating blueTeam = new List <int>(settings.PlayersPerTeam); gameName = settings.Name; // Only when board is ready and set up with fields, start adding players Piece piece1 = new Piece(); piece1.pos_x = 0; piece1.pos_y = 4; Console.WriteLine("Rows:{0}, Cols:{1}", board.GetLength(0), board.GetLength(1)); }
static public DataGame ReadGameInfo(string fileName) { // Deserializes XML with game config XmlDocument doc = new XmlDocument(); doc.Load(fileName); XmlElement root = doc.DocumentElement; DataGame settings = new DataGame(); settings.Name = root.SelectSingleNode("name").InnerXml; settings.BoardWidth = Int32.Parse(root.SelectSingleNode("board_width").InnerXml); settings.TaskLen = Int32.Parse(root.SelectSingleNode("task_len").InnerXml); settings.GoalLen = Int32.Parse(root.SelectSingleNode("goal_len").InnerXml); settings.InitialPieces = Int32.Parse(root.SelectSingleNode("initial_pieces").InnerXml); settings.PlayersPerTeam = Int32.Parse(root.SelectSingleNode("players_per_team").InnerXml); settings.DelayMove = Int64.Parse(root.SelectSingleNode("delay_move").InnerXml); settings.DelayPick = Int64.Parse(root.SelectSingleNode("delay_pick").InnerXml); settings.DelayDrop = Int64.Parse(root.SelectSingleNode("delay_drop").InnerXml); return(settings); }