public virtual bool CanBuild(TownGameTile tile) { foreach (TownGameTile t in canBuildTiles) { if (tile == t) { return(true); } } return(false); }
void UpdateImputGame() { GridInformation info = structures.GetComponent <GridInformation>(); Vector3 mouseToWorld = cam.ScreenToWorldPoint(Input.mousePosition); mouseToWorld.z = 0; Vector3Int tilePos = structures.WorldToCell(mouseToWorld); if (Input.GetMouseButtonDown(0)) { if (structures.HasTile(tilePos)) { TownGameTile tileStruct = structures.GetTile <TownGameTile>(tilePos); if (tileStruct != null) { UnityEngine.Object obj = info.GetPositionProperty <UnityEngine.Object>(tilePos, "tileObj", null); BaseTownTile res = (obj as GameObject).GetComponent <BaseTownTile>(); if (res != null) { if (selectedTile != res) { selectedTile = res; selectedObjChanged?.Invoke(this, null); } } } } else { ClearSelectedObj(); } } if (Input.GetKeyDown(KeyCode.Escape)) { ClearSelectedObj(); } if (structures.HasTile(tilePos) || land.HasTile(tilePos)) { if (!crown.activeSelf) { crown.SetActive(true); } crown.transform.position = land.CellToWorld(tilePos); } else { if (crown.activeSelf) { crown.SetActive(false); } } if (infoText.text != "") { infoText.text = ""; } if (structures.HasTile(tilePos)) { TownGameTile tileStruct = structures.GetTile <TownGameTile>(tilePos); if (tileStruct != null) { UnityEngine.Object obj = info.GetPositionProperty <UnityEngine.Object>(tilePos, "tileObj", null); if (obj != null) { infoText.text += (obj as GameObject).GetComponent <BaseTownTile>().GetInfo(); } } } if (land.HasTile(tilePos)) { TownGameTile tileLand = land.GetTile <TownGameTile>(tilePos); if (tileLand != null && tileLand.gameObject != null) { BaseTownTile tile = tileLand.gameObject.GetComponent <BaseTownTile>(); if (tile != null) { infoText.text += tile.GetInfo(); } } } UpdateInfoWindow(); }