public GameTableContext(uint size, IWindowService service) { //_BackgroundImage = new BitmapImage(new Uri("Images//sea_field.png")); _TableSize = (int)size; GameController.Instance.Init(size, 9, new[] { new Player("Gipsz Jakab", PlayerColor.Blue), new Player("Játékos 2", PlayerColor.Red) }); if (service == null) throw new ArgumentNullException("service"); Messages = new Queue<MessageContext>(); WindowService = service; NewGameContext = new NewGameContext(this, new[] { new Player("1. játékos", PlayerColor.Blue), new Player("2. játékos", PlayerColor.Red), new Player("3. játékos", PlayerColor.Orange), new Player("4. játékos", PlayerColor.Green), }); NewGameContext.Closed += (sender, args) => { var context = sender as NewGameContext; if (context != null) { if (context.IsNewGame) InitializeGame(context); } }; }
private GameTableContext InitializeGame(NewGameContext newGameContext) { if (newGameContext == null) throw new ArgumentNullException("newGameContext"); var players = newGameContext.GetPlayers().ToList(); var newPlayers = new List<Player>(); var random = new Random(); GamePhase = GamePhase.Initialization; while (players.Any()) { var index = random.Next(0, players.Count); newPlayers.Add(players[index]); players.RemoveAt(index); } TableSize = newGameContext.TableSize; GameController.Instance.Init((uint)TableSize, newGameContext.WinnerScore, newPlayers); GameCells = new ObservableCollection<GameCellContext>(); random = new Random(); var materials = new[] { Material.Wood, Material.Wool, Material.Clay, Material.Wheat, Material.Iron }; for (var j = 0; j < TableSize; ++j) { for (var i = 0; i < TableSize - Math.Abs(Math.Floor(TableSize / 2.0) - j); ++i) { int value = random.Next(2, 13); var h = new Hexagon(value, materials[random.Next(0, materials.Length)], new Hexid(j, i)); GameCells.Add(new GameCellContext(this, h) { Value = value }); GameController.Instance.Hexagons.Add(h); } } GameController.Instance.SetAllNeighbours(); GameController.Instance.Step(); GamePhase = GamePhase.FirstPhase; return this; }