private void BoardChoice(object sender, System.Windows.Input.MouseButtonEventArgs e)
        {
            BoardHexagon control = (BoardHexagon)sender;
            int          choice  = this.board[control];

            game.ChooseTurn(choice, this.playerId);

            foreach (int i in this.choiceList)
            {
                int p = i;
                this.board[i].Dispatcher.BeginInvoke(
                    (Action)(() =>
                {
                    this.board[p].SetTileType(TileType.board);
                    this.board[p].MouseLeftButtonDown -= BoardChoice;
                }));
            }

            control.SetTileType(TileType.board);

            UpdateBoard();
            lock (semaphor)
            {
                Monitor.Pulse(semaphor);
            }
        }
        private void InitializeBoard()
        {
            HexagonTileSerializable[] boardData = game.RetrieveBoardData();

            foreach (HexagonTileSerializable tile in boardData)
            {
                BoardHexagon element = this.GetBoardTile(tile.X, tile.Y, tile.TileType);
                this.board.Add(tile.Id, element);
            }
        }
Exemplo n.º 3
0
        private void ReplaceEditSpot(HexagonTile tile)
        {
            BoardHexagon control = hexagonList[tile];

            control.MouseLeftButtonDown  -= AddHexagonTile;
            control.MouseLeftButtonDown  += AddNewColour;
            control.MouseRightButtonDown += RemoveHexagonTile;

            tile.TileType  = TileType.board;
            tile.TileValue = defaultTileValue;
            control.SetTileType(TileType.board);
        }
        private ITileControl GetBoardTile(double x, double y)
        {
            BoardHexagon board = new BoardHexagon();
            Board.Children.Add(board);

            board.SetTileType(TileType.board);

            Canvas.SetLeft(board, x);
            Canvas.SetTop(board, y);

            return board;
        }
Exemplo n.º 5
0
 private void SetDisplayProperties(BoardHexagon boardTile)
 {
     if (this.displayBoneStructure)
     {
         boardTile.ShowLinks(true);
         boardTile.ShowTileValues(false);
     }
     else
     {
         boardTile.ShowLinks(false);
         boardTile.ShowTileValues(true);
     }
 }
        private ITileControl GetBoardTile(double x, double y, TileType tileType)
        {
            BoardHexagon element = new BoardHexagon();

            element.SetTileType(tileType);

            Board.Children.Add(element);

            Canvas.SetLeft(element, x);
            Canvas.SetTop(element, y);

            return((ITileControl)element);
        }
        private ITileControl GetBoardTile(double x, double y)
        {
            BoardHexagon board = new BoardHexagon();

            Board.Children.Add(board);

            board.SetTileType(TileType.board);

            Canvas.SetLeft(board, x);
            Canvas.SetTop(board, y);

            return(board);
        }
        void ChooseTurn(object sender, System.Windows.Input.MouseButtonEventArgs e)
        {
            BoardHexagon control = (BoardHexagon)sender;

            control.CurrentTile.TileType = this.turnOrder[this.currentTurn];
            control.SetTileType(this.turnOrder[this.currentTurn]);

            TurnTilesToCurrentColor(control.CurrentTile);
            control.MouseLeftButtonDown -= ChooseTurn;

            InitNextTurn();
            e.Handled = true;
        }
        private BoardHexagon GetBoardTile(double x, double y, TileType tileType)
        {
            BoardHexagon element = new BoardHexagon();

            element.SetTileType(tileType);

            Board.Children.Add(element);

            Canvas.SetLeft(element, x);
            Canvas.SetTop(element, y);
            element.ShowLinks(false);
            return(element);
        }
Exemplo n.º 10
0
        private void AddPropertyToColour(object sender, MouseButtonEventArgs e)
        {
            if (currentSelection != null && currentSelection.TileType == TileType.none)
            {
                BoardHexagon control = (BoardHexagon)sender;

                if (currentSelection is Fortress)
                {
                    ColorToAdd.Children.Clear();
                    control.ShowFortress(true);
                    hexagonList[control].Fortress = true;
                }
            }
        }
Exemplo n.º 11
0
        private void InitializeBoard()
        {
            BoardSerializable boardData = this.webservice.RetrieveBoardData(this.gameId);

            this.MyFortresses = boardData.FortressesPerPlayer;
            this.SetFortressesDisplay();

            foreach (HexagonTileSerializable tile in boardData.ActiveTileList)
            {
                BoardHexagon element = this.GetBoardTile(tile.X, tile.Y, tile.TileType, tile.TileValue);
                element.ShowFortress(tile.Fortress);
                this.board.Add(tile.Id, element);
            }
        }
Exemplo n.º 12
0
        private BoardHexagon GetEditTile(double x, double y)
        {
            BoardHexagon editTile = new BoardHexagon();

            editTile.MouseLeftButtonDown += AddHexagonTile;
            Board.Children.Add(editTile);

            Canvas.SetLeft(editTile, x);
            Canvas.SetTop(editTile, y);

            editTile.SetTileType(TileType.none);

            SetDisplayProperties(editTile);

            return(editTile);
        }
Exemplo n.º 13
0
        private void RemoveColouredTile(object sender, MouseButtonEventArgs e)
        {
            BoardHexagon control = (BoardHexagon)sender;

            control.MouseRightButtonDown -= RemoveColouredTile;
            control.MouseLeftButtonDown  -= AddPropertyToColour;
            control.MouseLeftButtonDown  += AddNewColour;
            control.MouseRightButtonDown += RemoveHexagonTile;

            control.SetTileType(TileType.board);
            control.ShowFortress(false);

            hexagonList[control].TileType = TileType.board;

            CreateMappings();
        }
Exemplo n.º 14
0
        private void BoardChoice(object sender, System.Windows.Input.MouseButtonEventArgs e)
        {
            BoardHexagon control = (BoardHexagon)sender;
            int          choice  = this.board[control];

            game.ChooseTurn(choice, Guid.NewGuid());

            foreach (int i in this.choiceList)
            {
                this.board[i].SetTileType(TileType.board);
                this.board[i].MouseLeftButtonDown -= BoardChoice;
            }

            control.SetTileType(this.currentColor);

            InitializeTurn();
        }
Exemplo n.º 15
0
        private BoardHexagon GetBoardTile(double x, double y)
        {
            BoardHexagon boardTile = new BoardHexagon();

            boardTile.MouseLeftButtonDown  += AddNewColour;
            boardTile.MouseRightButtonDown += RemoveHexagonTile;
            Board.Children.Add(boardTile);

            boardTile.SetTileType(TileType.board);

            Canvas.SetLeft(boardTile, x);
            Canvas.SetTop(boardTile, y);

            SetDisplayProperties(boardTile);

            return(boardTile);
        }
        public void LoadSaveData(BoardSerializable boardData)
        {
            Dictionary <HexagonTileSerializable, HexagonTile> mapping = new Dictionary <HexagonTileSerializable, HexagonTile>();

            this.hexagonList.Clear();
            this.Board.Children.Clear();

            foreach (HexagonTileSerializable serializedTile in boardData.ActiveTileList)
            {
                HexagonTile tile = new HexagonTile()
                {
                    TileType = serializedTile.TileType,
                };

                if (tile.TileType != TileType.none)
                {
                    mapping.Add(serializedTile, tile);
                    this.hexagonList.Add(tile);

                    BoardHexagon board = (BoardHexagon)this.GetBoardTile(serializedTile.X, serializedTile.Y);
                    tile.Visual = board;
                    board.SetTileType(tile.TileType);
                    board.ShowLinks(false);
                }
            }

            foreach (HexagonTile tile in hexagonList)
            {
                MapUpTile(tile);
            }

            foreach (HexagonTile tile in hexagonList)
            {
                tile.Visual.SetLinkCount();
            }

            this.SetTurn();
        }
Exemplo n.º 17
0
        private void BoardChoice(object sender, System.Windows.Input.MouseButtonEventArgs e)
        {
            BoardHexagon control = (BoardHexagon)sender;
            int          choice  = this.board[control];

            if (!this.FortressSelected)
            {
                this.webservice.ChooseTurn(this.gameId, this.playerId, choice);
            }
            else
            {
                this.webservice.ChooseFortressedTurn(this.gameId, this.playerId, choice);
                this.MyFortresses--;
            }

            this.FortressSelected = false;
            this.DisplayFortressSelected();

            foreach (int i in this.choiceList)
            {
                int p = i;
                this.board[i].Dispatcher.BeginInvoke(
                    (Action)(() =>
                {
                    this.board[p].SetTileType(TileType.board);
                    this.board[p].MouseLeftButtonDown -= BoardChoice;
                }));
            }

            control.SetTileType(TileType.board);

            UpdateBoard();
            lock (semaphor)
            {
                Monitor.Pulse(semaphor);
            }
        }
Exemplo n.º 18
0
        private void AddNewColour(object sender, MouseButtonEventArgs e)
        {
            if (currentSelection != null && currentSelection.TileType != TileType.none)
            {
                ColorToAdd.Children.Clear();

                BoardHexagon control = (BoardHexagon)sender;

                HexagonTile tile = hexagonList[control];

                if (tile.TileType != TileType.none)
                {
                    ReplaceBoardWithColour(tile);
                    hexagonList[tile].SetLinkCount(tile.LinkCount);
                    ClearStatus();
                }
                else
                {
                    throw new Exception("This tile must be active!");
                }
            }

            CreateMappings();
        }
Exemplo n.º 19
0
        private void AddHexagonTile(object sender, MouseButtonEventArgs e)
        {
            BoardHexagon control = sender as BoardHexagon;

            HexagonTile tile = hexagonList[control];

            if (tile != null)
            {
                this.ReplaceEditSpot(tile);
            }


            if (tile.North == null)
            {
                tile.North = new HexagonTile()
                {
                    TileType  = TileType.none,
                    South     = tile,
                    TileValue = 0,
                };

                AddEditSpot(tile.North, tile.X, tile.Y - yFull);
            }

            if (tile.South == null)
            {
                tile.South = new HexagonTile()
                {
                    TileType  = TileType.none,
                    North     = tile,
                    TileValue = 0,
                };

                AddEditSpot(tile.South, tile.X, tile.Y + yFull);
            }

            if (tile.NorthWest == null)
            {
                tile.NorthWest = new HexagonTile()
                {
                    TileType  = TileType.none,
                    SouthEast = tile,
                    TileValue = 0,
                };

                AddEditSpot(tile.NorthWest, tile.X - xMarge, tile.Y - yMarge);
            }

            if (tile.NorthEast == null)
            {
                tile.NorthEast = new HexagonTile()
                {
                    TileType  = TileType.none,
                    SouthWest = tile,
                    TileValue = 0,
                };

                AddEditSpot(tile.NorthEast, tile.X + xMarge, tile.Y - yMarge);
            }

            if (tile.SouthWest == null)
            {
                tile.SouthWest = new HexagonTile()
                {
                    TileType  = TileType.none,
                    NorthEast = tile,
                    TileValue = 0,
                };
                AddEditSpot(tile.SouthWest, tile.X - xMarge, tile.Y + yMarge);
            }

            if (tile.SouthEast == null)
            {
                tile.SouthEast = new HexagonTile()
                {
                    TileType  = TileType.none,
                    NorthWest = tile,
                    TileValue = 0,
                };
                AddEditSpot(tile.SouthEast, tile.X + xMarge, tile.Y + yMarge);
            }

            MapUpTile(tile.North);
            MapUpTile(tile.NorthWest);
            MapUpTile(tile.NorthEast);
            MapUpTile(tile.South);
            MapUpTile(tile.SouthWest);
            MapUpTile(tile.SouthEast);

            hexagonList[tile.North].SetLinkCount(tile.North.LinkCount);
            hexagonList[tile.NorthWest].SetLinkCount(tile.NorthWest.LinkCount);
            hexagonList[tile.NorthEast].SetLinkCount(tile.NorthEast.LinkCount);
            hexagonList[tile.South].SetLinkCount(tile.South.LinkCount);
            hexagonList[tile.SouthEast].SetLinkCount(tile.SouthEast.LinkCount);
            hexagonList[tile.SouthWest].SetLinkCount(tile.SouthWest.LinkCount);
            hexagonList[tile].SetLinkCount(tile.LinkCount);

            CreateMappings();
        }
        private ITileControl GetBoardTile(double x, double y, TileType tileType)
        {
            BoardHexagon element = new BoardHexagon();

            element.SetTileType(tileType);

            Board.Children.Add(element);

            Canvas.SetLeft(element, x);
            Canvas.SetTop(element, y);

            return (ITileControl)element;
        }
Exemplo n.º 21
0
        private void RemoveHexagonTile(object sender, MouseButtonEventArgs e)
        {
            BoardHexagon tileControl = sender as BoardHexagon;

            HexagonTile tile = hexagonList[tileControl];

            HexagonTile[] neighbours =
                new[] {
                tile.North,
                tile.NorthEast,
                tile.NorthWest,
                tile.South,
                tile.SouthEast,
                tile.SouthWest,
            };

            ReplaceBoardTile(tile);

            foreach (HexagonTile neighbour in neighbours)
            {
                if (CanBeRemoved(neighbour))
                {
                    DetachTile(neighbour);
                    Board.Children.Remove(hexagonList[neighbour]);
                    hexagonList.Remove(neighbour);
                }
            }


            if (CanBeRemoved(tile))
            {
                DetachTile(tile);
                Board.Children.Remove(hexagonList[tile]);
                hexagonList.Remove(tile);
            }

            if (tile.North != null)
            {
                hexagonList[tile.North].SetLinkCount(tile.North.LinkCount);
            }
            if (tile.NorthWest != null)
            {
                hexagonList[tile.NorthWest].SetLinkCount(tile.NorthWest.LinkCount);
            }
            if (tile.NorthEast != null)
            {
                hexagonList[tile.NorthEast].SetLinkCount(tile.NorthEast.LinkCount);
            }
            if (tile.South != null)
            {
                hexagonList[tile.South].SetLinkCount(tile.South.LinkCount);
            }
            if (tile.SouthEast != null)
            {
                hexagonList[tile.SouthEast].SetLinkCount(tile.SouthEast.LinkCount);
            }
            if (tile.SouthWest != null)
            {
                hexagonList[tile.SouthWest].SetLinkCount(tile.SouthWest.LinkCount);
            }

            hexagonList[tile].SetLinkCount(tile.LinkCount);

            CreateMappings();
        }
        private void OnLoaded(object sender, RoutedEventArgs e)
        {
            int hexCurrent = 0;

            for (int j = 0; j < height; j++)
            {
                for (int i = 0; i < width; i++)
                {
                    BoardHexagon hex = new BoardHexagon();

                    Canvas.SetLeft(hex, (i * hexWidth) + hexCurrent);
                    Canvas.SetTop(hex, j * hexHeight);

                    TheBoard.Children.Add(hex);
                    elements.Add(hex);
                }
                if (hexCurrent == 0)
                {
                    hexCurrent += hexOffset;
                }
                else
                {
                    hexCurrent = 0;
                }
            }

            for (int j = 0; j < height; j++)
            {
                for (int i = 0; i < width; i++)
                {
                    //  left top
                    if (j > 0)
                    {
                        CrossSection leftTop = new CrossSection()
                        {
                            link1 = elements[((j - 1) * width) + i],
                            link2 = elements[(j * width) + i],
                        };

                        this.crossSections.Add(leftTop);
                        CreateLine(leftTop);
                    }

                    //  right top
                    //if ((i < width - 1)&&(j>0))
                    //{
                    //    CrossSection rightTop = new CrossSection()
                    //    {
                    //        link1 = elements[((j - 1) * width) + i+1],
                    //        link2 = elements[(j * width) + i],
                    //    };

                    //    this.crossSections.Add(rightTop);
                    //    CreateLine(rightTop);
                    //}

                    // left bottom
                    //if (j < height - 1)
                    //{
                    //    CrossSection leftTop = new CrossSection()
                    //    {
                    //        link1 = elements[((j + 1) * width) + i],
                    //        link2 = elements[(j * width) + i],
                    //    };

                    //    this.crossSections.Add(leftTop);
                    //    CreateLine(leftTop);
                    //}

                    //  right bottom
                    //if ((j < height - 1)&&(i<width-1))
                    //{
                    //    CrossSection leftTop = new CrossSection()
                    //    {
                    //        link1 = elements[((j + 1) * width) + i+1],
                    //        link2 = elements[(j * width) + i],
                    //    };

                    //    this.crossSections.Add(leftTop);
                    //    CreateLine(leftTop);
                    //}
                }
            }
        }
        private void OnLoaded(object sender, RoutedEventArgs e)
        {
            int hexCurrent = 0;
            for (int j = 0; j < height; j++)
            {
                for (int i = 0; i < width; i++)
                {
                    BoardHexagon hex = new BoardHexagon();

                    Canvas.SetLeft(hex, (i * hexWidth) + hexCurrent);
                    Canvas.SetTop(hex, j * hexHeight);

                    TheBoard.Children.Add(hex);
                    elements.Add(hex);
                }
                if (hexCurrent == 0)
                {
                    hexCurrent += hexOffset;
                }
                else
                {
                    hexCurrent = 0;
                }
            }

            for (int j = 0; j < height; j++)
            {
                for (int i = 0; i < width; i++)
                {
                    //  left top
                    if (j > 0)
                    {
                        CrossSection leftTop = new CrossSection()
                        {
                            link1 = elements[((j - 1) * width) + i],
                            link2 = elements[(j * width) + i],
                        };

                        this.crossSections.Add(leftTop);
                        CreateLine(leftTop);
                    }

                    //  right top
                    //if ((i < width - 1)&&(j>0))
                    //{
                    //    CrossSection rightTop = new CrossSection()
                    //    {
                    //        link1 = elements[((j - 1) * width) + i+1],
                    //        link2 = elements[(j * width) + i],
                    //    };

                    //    this.crossSections.Add(rightTop);
                    //    CreateLine(rightTop);
                    //}

                    // left bottom
                    //if (j < height - 1)
                    //{
                    //    CrossSection leftTop = new CrossSection()
                    //    {
                    //        link1 = elements[((j + 1) * width) + i],
                    //        link2 = elements[(j * width) + i],
                    //    };

                    //    this.crossSections.Add(leftTop);
                    //    CreateLine(leftTop);
                    //}

                    //  right bottom
                    //if ((j < height - 1)&&(i<width-1))
                    //{
                    //    CrossSection leftTop = new CrossSection()
                    //    {
                    //        link1 = elements[((j + 1) * width) + i+1],
                    //        link2 = elements[(j * width) + i],
                    //    };

                    //    this.crossSections.Add(leftTop);
                    //    CreateLine(leftTop);
                    //}

                }
            }


        }
Exemplo n.º 24
0
        public void LoadSaveData(BoardSerializable boardData)
        {
            Dictionary <HexagonTileSerializable, HexagonTile> mapping = new Dictionary <HexagonTileSerializable, HexagonTile>();

            this.hexagonList.Clear();
            this.Board.Children.Clear();

            this.Fortresses.Text = boardData.FortressesPerPlayer.ToString();

            foreach (HexagonTileSerializable serializedTile in boardData.ActiveTileList)
            {
                HexagonTile tile = new HexagonTile()
                {
                    Id        = serializedTile.Id,
                    TileType  = serializedTile.TileType,
                    X         = serializedTile.X,
                    Y         = serializedTile.Y,
                    TileValue = serializedTile.TileValue,
                    Fortress  = serializedTile.Fortress,
                };

                mapping.Add(serializedTile, tile);

                BoardHexagon board = null;

                switch (tile.TileType)
                {
                case TileType.none:
                    board = (BoardHexagon)this.GetEditTile(serializedTile.X, serializedTile.Y);
                    board.SetTileType(tile.TileType);
                    board.SetTileValue(tile.TileValue);
                    board.ShowFortress(tile.Fortress);
                    this.hexagonList.Add(tile, board);
                    break;

                case TileType.board:
                    board = (BoardHexagon)this.GetBoardTile(serializedTile.X, serializedTile.Y);
                    board.SetTileType(tile.TileType);
                    this.hexagonList.Add(tile, board);
                    board.SetTileValue(tile.TileValue);
                    board.ShowFortress(tile.Fortress);
                    break;

                case TileType.blue:
                case TileType.red:
                case TileType.yellow:
                    board = (BoardHexagon)this.GetBoardTile(serializedTile.X, serializedTile.Y, tile.TileType);
                    board.SetTileType(tile.TileType);
                    board.SetTileValue(tile.TileValue);
                    board.ShowFortress(tile.Fortress);
                    this.hexagonList.Add(tile, board);
                    break;
                }
            }

            foreach (HexagonTile tile in hexagonList)
            {
                MapUpTile(tile);
            }

            foreach (HexagonTile tile in hexagonList)
            {
                hexagonList[tile].SetLinkCount(tile.LinkCount);
            }

            CreateMappings();
        }