public void ShowData(BattleMapData.TileData data)
    {
        if (columnPrefab == null)
        {
            columnPrefab = Resources.Load <GameObject>("Prefabs/TileColumn");
        }

        LoadSpritesForTile(data.tileType, data.slope);

        Transform topTransform = transform.Find("Top");

        topTransform.localPosition = new Vector3(0, columnHeight * data.height, 0);

        int sortingOrder = -(data.y * 2) + (data.x % 2 == 0 ? -1 : 0);

        SpriteRenderer topRenderer = topTransform.GetComponent <SpriteRenderer>();

        topRenderer.sprite       = topSprite;
        topRenderer.sortingOrder = sortingOrder;

        for (int i = 0; i < data.height; i++)
        {
            GameObject newColumn = Instantiate(columnPrefab);
            Helpers.SetLayerRecursively(newColumn, gameObject.layer);

            newColumn.transform.SetParent(topTransform);
            newColumn.transform.localPosition = new Vector3(0, columnHeight * -i, 0);
            newColumn.transform.localScale    = Vector3.one;

            SpriteRenderer columnRenderer = newColumn.transform.Find("Sprite").GetComponent <SpriteRenderer>();
            columnRenderer.sprite       = columnSprite;
            columnRenderer.sortingOrder = sortingOrder;
        }
    }
Пример #2
0
 public void RemoveViewForTile(BattleMapData.TileData tile)
 {
     if (tileViews.ContainsKey(tile))
     {
         Destroy(tileViews[tile].gameObject);
         tileViews.Remove(tile);
     }
 }
Пример #3
0
    public void AddViewForTile(BattleMapData.TileData tile)
    {
        GameObject tileViewObject = Instantiate(tileViewPrefab);

        Helpers.SetLayerRecursively(tileViewObject, gameObject.layer);

        tileViewObject.transform.SetParent(transform);
        tileViewObject.transform.localPosition = GetLocalHexPosition(tile.x, tile.y);
        tileViewObject.transform.localScale    = Vector3.one;

        BattleMapTileView tileView = tileViewObject.GetComponent <BattleMapTileView>();

        tileView.ShowData(tile);

        tileViews.Add(tile, tileView);
    }
    private void AddAndRemoveTiles()
    {
        Vector3 mousePosition = Camera.main.ScreenToWorldPoint(Input.mousePosition);

        // Hide and disable cursor when too far from map
        cursorTransform.gameObject.SetActive(
            Mathf.Abs(mousePosition.x) - transform.parent.position.x < maxCursorDistanceX &&
            Mathf.Abs(mousePosition.y) - transform.parent.position.y < maxCursorDistanceY
            );

        if (!cursorTransform.gameObject.activeSelf)
        {
            return;
        }

        // Match cursor to mouse position
        Vector3 localMousePosition = transform.InverseTransformPoint(mousePosition);

        int[] hexCoords = GetHexCoordNearPosition(localMousePosition);
        cursorTransform.localPosition = GetLocalHexPosition(hexCoords[0], hexCoords[1]);

        // Add tiles on left-click, remove on right-click
        if (Input.GetMouseButton(0) && !Input.GetKey(KeyCode.LeftShift))
        {
            if (data.GetTileAt(hexCoords[0], hexCoords[1]) == null)
            {
                BattleMapData.TileData tile = new BattleMapData.TileData(hexCoords[0], hexCoords[1], cursorHeight, cursorTileType, cursorSlopeIndex);
                data.AddTile(tile);
                AddViewForTile(tile);
                playerMap.AddViewForTile(tile);
            }
        }
        else if (Input.GetMouseButton(1))
        {
            BattleMapData.TileData tile = data.GetTileAt(hexCoords[0], hexCoords[1]);

            if (tile != null)
            {
                RemoveViewForTile(tile);
                playerMap.RemoveViewForTile(tile);
                data.RemoveTileAt(hexCoords[0], hexCoords[1]);
            }
        }
    }