예제 #1
0
 private void CreateUpgradeWidgets(UpgradePrefab prefab, GameObject container)
 {
     foreach (PartUpgrade pu in prefab.upgrades)
     {
         // Don't create widgets for untracked upgrades
         if (pu.isUntracked)
         {
             continue;
         }
         // Create new widget
         PartListTooltipWidget newWidget = Instantiate(tooltip.extInfoModuleWidgetPrefab);
         newWidget.gameObject.name = "Upgrade tooltip widget";
         // Add widget to list
         newWidget.transform.SetParent(container.transform, false);
         // Add "toggle" component
         if ((pu.upgradeState == PartUpgrade.UpgradeState.Enabled || pu.upgradeState == PartUpgrade.UpgradeState.Disabled))
         {
             Toggle toggle = newWidget.gameObject.AddComponent <Toggle>();
             toggle.isOn    = (pu.upgradeState == PartUpgrade.UpgradeState.Enabled) ? true : false;
             toggle.enabled = true;
             toggle.onValueChanged.AddListener(onUpgradeToggle);
         }
         // Add the upgrade handler
         UpgradeWidgetComponent handler = newWidget.gameObject.AddComponent <UpgradeWidgetComponent>();
         handler.partName     = prefab.part.partInfo.name;
         handler.upgrade      = pu.upgradeName;
         handler.upgradeState = pu.upgradeState;
         handler.isUpdated    = false;
         // Create text
         newWidget.Setup(pu.GetTitle(), pu.GetInfo(prefab));
         ToggleColors(handler, newWidget.GetComponent <Image>());
         // Everything is good
         newWidget.gameObject.SetActive(true);
     }
 }
예제 #2
0
        private void onUpgradeToggle(bool isOn)
        {
            UpgradeWidgetComponent upgradeComponent = EventSystem.current.currentSelectedGameObject.GetComponent <UpgradeWidgetComponent>();

            if (isOn)
            {
                upgradeComponent.upgradeState = PartUpgrade.UpgradeState.Enabled;
            }
            else
            {
                upgradeComponent.upgradeState = PartUpgrade.UpgradeState.Disabled;
            }
            upgradeComponent.isUpdated = true;
            updateTooltip = true;
        }
예제 #3
0
        // Update the state of every upgrades in the prefab in responseto player toggling
        // Update the enabled state of relevant Upgrades in the UpgradeHandler
        public void UpdateUpgradesState(UpgradeWidgetComponent toggledUpdate)
        {
            PartUpgrade pu = upgrades.Find(p => p.upgradeName == toggledUpdate.upgrade);

            pu.upgradeState = toggledUpdate.upgradeState;

            // We reenable overriden upgrades that may have been disabled :
            if (toggledUpdate.upgradeState == PartUpgrade.UpgradeState.Enabled)
            {
                pu.UpdateOverridenUpgrades(this);
            }
            // In case the player has disabled an upgrade, we need to enable the last overriden upgrade, if any
            else if (toggledUpdate.upgradeState == PartUpgrade.UpgradeState.Disabled)
            {
                pu.EnableLastOverridenUpgrade(this);
            }
        }
예제 #4
0
        private void ToggleColors(UpgradeWidgetComponent handler, Image imageComponent)
        {
            switch (handler.upgradeState)
            {
            case PartUpgrade.UpgradeState.Unresearched:
                imageComponent.color = Color255(89, 139, 122); // blue
                break;

            case PartUpgrade.UpgradeState.Disabled:
                imageComponent.color = Color255(222, 193, 88); // yellow
                break;

            case PartUpgrade.UpgradeState.Overriden:
                imageComponent.color = Color255(177, 115, 87); // orange
                break;

            case PartUpgrade.UpgradeState.Enabled:
                imageComponent.color = Color255(149, 223, 102); // green
                break;
            }
        }
예제 #5
0
        public void Update()
        {
            // Do nothing if there is no PartListTooltip on screen
            if (PartListTooltipMasterController.Instance.currentTooltip == null)
            {
                return;
            }

            // Do nothing if the tooltip hasn't changed since last update and we have nothing to update in the tooltip
            if (tooltip == PartListTooltipMasterController.Instance.currentTooltip && !updateTooltip && !toggleWidgets)
            {
                return;
            }

            // Get the upgrade prefab for this tooltip :
            UpgradePrefab upgradePrefab = GetTooltipInstance();

            // ReferenceEquals is a workaround because unity does a silly overload of the == operator
            if (ReferenceEquals(upgradePrefab, null))
            {
                return;
            }

            // Toggle widget visibility in response to user click on toggle widget, and do nothing else
            if (toggleWidgets)
            {
                toggleWidgets = false;
                ToggleWidgetsVisibility(upgradePrefab);
                return;
            }

            // Update everything needed in response to the player enabling/disabling an upgrade
            if (updateTooltip)
            {
                updateTooltip = false;
                // Update the upgrade prefab in response to player toggle
                UpgradeWidgetComponent[] upgrades      = tooltip.panelExtended.gameObject.GetComponentsInChildren <UpgradeWidgetComponent>();
                UpgradeWidgetComponent   toggledWidget = upgrades.First(p => p.isUpdated);
                upgradePrefab.UpdateUpgradesState(toggledWidget);

                // Destroy upgrade widgets
                for (int k = 0; k < upgrades.Count(); k++)
                {
                    Destroy(upgrades[k].gameObject);
                }
            }
            // If this is a new tooltip, we destroy the toggle widget if it exists
            else if (toggleWidget != null)
            {
                Destroy(toggleWidget.gameObject);
                toggleWidget = null;
            }

            // Update the PartUpgradeHandler with enabled upgrades for this part and ApplyUpgrades() on all modules
            ApplyUpgrades(upgradePrefab);

            // Rebuilding the tooltip cost string :
            tooltip.textCost.text = GetPartCost(upgradePrefab.part);

            // Update the part basic info with the new text :
            tooltip.textInfoBasic.text = GetPartInfo(upgradePrefab.part);

            // Update the module widgets text :
            UpdateModuleWidgetInfo(upgradePrefab);

            // Create the widget list toggle widget :
            if (toggleWidget == null && upgradePrefab.upgrades.Count > 0)
            {
                toggleWidget = CreateListToggleWidget(tooltip.panelExtended.gameObject.GetChild("Content"), upgradePrefab);
            }

            if (toggleWidget != null)
            {
                // Instantiate and setup the upgrade widgets
                CreateUpgradeWidgets(upgradePrefab, tooltip.panelExtended.gameObject.GetChild("Content"));

                // Toggle widgets visibility
                ToggleWidgetsVisibility(upgradePrefab);
            }
        }