Beispiel #1
0
 /// <summary>
 /// Constructor for a new tower
 /// </summary>
 /// <param name="owner"></param>
 /// <param name="startingPiece"></param>
 /// <param name="startNode"></param>
 public PieceTower(Player owner, PieceData startingPiece, TileNode startNode)
 {
     pieces       = new List <PieceData>(6);
     owningColour = owner.colour;
     owningPlayer = owner;
     AddPiece(startingPiece);
     node = startNode;
     MoveTo(startNode);
     startingPiece.SetupTextures();
 }
Beispiel #2
0
    /// <summary>
    /// Selects the tile.
    /// </summary>
    /// <param name="node">Node.</param>
    public void SelectTile(TileNode node)
    {
        switch (currentMode)
        {
        case Mode.Add:

            // create new tower
            if (node.tower == null)
            {
                CreateTower(selectedColour, selectedDirection, selectedRange, node);
            }
            else if (node.tower.pieces.Count < 6)
            {
                // special case for hook
                if (selectedColour == Player.PlayerColour.Hook)
                {
                    // one hook per tower
                    if (node.tower.GetHook() == null)
                    {
                        PieceData piece = new HookPieceData(selectedDirection, Instantiate <GameObject>(Resources.Load <GameObject>("Prefabs/GameObject/HexagonPiece")));
                        piece.SetupTextures();
                        node.tower.AddPiece(piece);
                        node.tower.updatePosition();
                        node.tower.owningPlayer.updateScore();
                    }
                }
                else         // non hooks
                {
                    PieceData piece = CreatePiece(selectedColour, selectedDirection, selectedRange);
                    piece.SetupTextures();
                    node.tower.AddPiece(piece);
                    node.tower.updatePosition();
                    node.tower.owningPlayer.updateScore();
                }
            }
            break;

        case Mode.Delete:
            if (node.tower != null)
            {
                // unhighlight
                foreach (TileNode tn in node.tower.GetMoves().Destinations)
                {
                    tn.unhighlight();
                }

                foreach (PieceData pd in node.tower.pieces)
                {
                    Destroy(pd.getObj());
                }

                Player p = node.tower.owningPlayer;

                node.tower.Die();

                p.updateScore();
            }
            break;

        case Mode.Edit:
            break;
        }
    }