public void ClearSelectedObj()
 {
     if (selectedTile != null)
     {
         selectedTile = null;
         selectedObjChanged?.Invoke(this, null);
     }
 }
示例#2
0
        private void Start()
        {
            owner = GetComponent <BaseTownTile>();


            if (owner.CycleTimeSec > 0)
            {
                StartCoroutine(CycleTimer());
            }
        }
    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();
    }