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; } }
public void RemoveViewForTile(BattleMapData.TileData tile) { if (tileViews.ContainsKey(tile)) { Destroy(tileViews[tile].gameObject); tileViews.Remove(tile); } }
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]); } } }