コード例 #1
0
 public void ToggleMoveableTileUI()
 {
     moveableTileUI.SetActive(!moveableTileUI.activeSelf);
     moveableTileEditStage      = moveableTileUI.activeSelf ? MoveableTileEditStage.PlaceStart : MoveableTileEditStage.None;
     moveableTileStartText.text = "Start pos: Selecting";
     moveableTileEndText.text   = "End pos: Selecting";
     moveableTileError.SetActive(false);
 }
コード例 #2
0
    public void Place(Vector3 location, bool buttonDown)
    {
        int x = (int)location.x;
        int y = (int)location.z;

        if (moveableTileEditStage == MoveableTileEditStage.PlaceStart && buttonDown)
        {
            if (!level.TileExistsAt(x, y))
            {
                SetMoveableTileError("A tile must exist at a moveable tile start position");
                return;
            }

            if (level.tiles[x, y].moveableTile)
            {
                SetMoveableTileError($"The tile at {new Vector2(x, y)} is already moveable to position {level.tiles[x, y].tileMoveTo}");
                return;
            }

            moveableTileStart          = new Vector2(x, y);
            moveableTileStartText.text = $"Start pos: {moveableTileStart}";
            moveableTileEditStage      = MoveableTileEditStage.PlaceEnd;
            return;
        }
        else if (moveableTileEditStage == MoveableTileEditStage.PlaceEnd && buttonDown)
        {
            if (level.TileExistsAt(x, y))
            {
                SetMoveableTileError("A tile must not exist at a moveable tile end positon");
                return;
            }

            moveableTileEnd = new Vector2(x, y);
            if (!MoveableTilePathValid())
            {
                return;
            }

            Debug.Log($"Marked tile at {new Vector2((int)moveableTileStart.x, (int)moveableTileStart.y)} as moveable to location {new Vector2(x, y)}");
            level.SetTileMoveable((int)moveableTileStart.x, (int)moveableTileStart.y, x, y);
            moveableTileEditStage = MoveableTileEditStage.None;
            ToggleMoveableTileUI();
            return;
        }

        if (moveableTileEditStage != MoveableTileEditStage.None)
        {
            return;
        }
        if (tilePalette.selectedItemType == ItemType.None)
        {
            return;
        }
        if (level.ItemExistsAt(x, y))
        {
            return;
        }
        if (tilePalette.selectedItemType == ItemType.Tile)
        {
            if (tilePalette.selectedTile == null)
            {
                return;
            }
            else
            {
                PlaceTile(location);
            }
        }
        else
        {
            if (tilePalette.selectedEntity == null)
            {
                return;
            }
            else
            {
                PlaceEntity(location);
            }
        }
    }