コード例 #1
0
    // Called on events that should refresh the menu
    void RefreshMenus(TaskableBase taskable)
    {
        if (taskable && taskable == selectedObject)
        {
            if (taskable.currentTask)
            {
                // Create or update task action bar
                if (taskActionBarInstance)
                {
                    taskActionBarInstance.RefreshUI();
                }
                else
                {
                    taskActionBarInstance = Instantiate(taskActionBarPrefab, transform);
                    taskActionBarInstance.Setup(selectedObject);
                }

                // clean up building and wall action bars
                if (buildingActionBarInstance)
                {
                    Destroy(buildingActionBarInstance.gameObject);
                }
                if (wallActionBarInstance)
                {
                    Destroy(wallActionBarInstance.gameObject);
                }
                if (factoryActionBarInstance)
                {
                    Destroy(factoryActionBarInstance.gameObject);
                }
                if (haulableActionBarInstance)
                {
                    Destroy(haulableActionBarInstance.gameObject);
                }
            }
            else
            {
                // Clean up task action bar
                if (taskActionBarInstance)
                {
                    Destroy(taskActionBarInstance.gameObject);
                }

                // refresh building and wall action bars
                BuildingBase buildingObject = taskable.GetComponent <BuildingBase>();
                WallBase     wallObject     = taskable.GetComponent <WallBase>();
                HaulableBase haulObject     = taskable.GetComponent <HaulableBase>();
                if (buildingObject)
                {
                    if (buildingActionBarInstance)
                    {
                        buildingActionBarInstance.RefreshUI();
                    }
                    else
                    {
                        buildingActionBarInstance = Instantiate(buildingActionBarPrefab, transform);
                        buildingActionBarInstance.Setup(buildingObject);
                    }
                    FactoryBase factoryObject = buildingObject.GetComponent <FactoryBase>();
                    if (factoryObject)
                    {
                        if (factoryActionBarInstance)
                        {
                            factoryActionBarInstance.RefreshUI();
                        }
                        else
                        {
                            factoryActionBarInstance = Instantiate(factoryActionBarPrefab, transform);
                            factoryActionBarInstance.Setup(factoryObject);
                        }
                    }
                }
                else if (wallObject)
                {
                    if (wallActionBarInstance)
                    {
                        wallActionBarInstance.RefreshUI();
                    }
                    else
                    {
                        wallActionBarInstance = Instantiate(wallActionBarPrefab, transform);
                        wallActionBarInstance.Setup(wallObject);
                    }
                }
                else if (haulObject)
                {
                    if (haulableActionBarInstance)
                    {
                        haulableActionBarInstance.RefreshUI();
                    }
                    else
                    {
                        haulableActionBarInstance = Instantiate(haulableActionBarPrefab, transform);
                        haulableActionBarInstance.Setup(haulObject);
                    }
                }
            }
        }
    }