override public void StatusUpdate()
    {
        if (!isObserving)
        {
            return;
        }
        if (observingSurface == null || observingSurface.destroyed)
        {
            SelfShutOff();
            return;
        }
        switch (mode)
        {
        case SurfacePanelMode.SelectAction:
        {
            hq = colony.hq;
            CheckGatherButton();

            if (observingSurface.host.IsStructure())
            {
                digButton.transform.GetChild(0).GetComponent <Text>().text = Localization.GetWord(LocalizedWord.Delete);
            }
            else
            {
                if (observingSurface.haveWorksite)
                {
                    var w = colony.GetWorksite(observingSurface);
                    if (w != null)
                    {
                        var cs = w as CleanSite;
                        status_digOrdered = (cs != null && cs.diggingMission);
                    }
                }
                digButton.transform.GetChild(0).GetComponent <Text>().text = status_digOrdered ? Localization.GetPhrase(LocalizedPhrase.StopDig) : Localization.GetWord(LocalizedWord.Dig);
            }


            if (savedHqLevel != hq.level)
            {
                savedHqLevel = hq.level;
                blockCreateButton.gameObject.SetActive(IsBlockCreatingAvailable());
                columnCreateButton.gameObject.SetActive(IsColumnAvailable());
            }
            changeMaterialButton.gameObject.SetActive(IsChangeSurfaceMaterialAvalable());
            break;
        }

        case SurfacePanelMode.Build:
        {
            if (selectedStructureID != Structure.EMPTY_ID)
            {
                switch (buildingCreateMode)
                {
                case BuildingCreateInfoMode.Acceptable:
                    Storage storage = colony.storage;
                    if (lastStorageStatus != storage.operationsDone)
                    {
                        float[] onStorage = storage.standartResources;
                        for (int i = 0; i < resourcesCostImage.Length; i++)
                        {
                            int rid = (int)showingResourcesCount[i].x;
                            resourcesCostImage[i].transform.GetChild(0).GetComponent <Text>().color = (onStorage[rid] < showingResourcesCount[i].y) ? Color.red : Color.white;
                        }
                        lastStorageStatus = storage.operationsDone;
                    }
                    break;

                case BuildingCreateInfoMode.Unacceptable_Material:

                    break;
                }
                //rotating window
            }
        }
        break;
        }
    }