コード例 #1
0
    private static void UpdateUpgradePanelsDiff(SquadBuilderShip squadBuilderShip)
    {
        List <SquadBuilderUpgrade> oldUpgrades = new List <SquadBuilderUpgrade>(squadBuilderShip.GetUpgrades());
        List <UpgradeSlot>         newUpgrades = squadBuilderShip.Ship.UpgradeBar.GetUpgradeSlots();

        foreach (var oldUpgradeSlot in oldUpgrades)
        {
            UpgradeSlot newUpgrade = newUpgrades.Find(n => n.Type == oldUpgradeSlot.Slot.Type && n.Counter == oldUpgradeSlot.Slot.Counter);
            if (newUpgrade == null)
            {
                squadBuilderShip.RemoveUpgrade(oldUpgradeSlot);
            }
            else
            {
                squadBuilderShip.ChangeUpgradeSlot(oldUpgradeSlot, newUpgrade);
            }
        }

        foreach (var newUpgradeSlot in newUpgrades)
        {
            SquadBuilderUpgrade oldUpgrade = oldUpgrades.Find(n => n.Slot.Type == newUpgradeSlot.Type && n.Slot.Counter == newUpgradeSlot.Counter);
            if (oldUpgrade == null)
            {
                AddUpgrade(squadBuilderShip, newUpgradeSlot);
            }
        }

        OrganizeUpgradeLines(squadBuilderShip.Panel);
        UpdateShipCost(squadBuilderShip);
        OrganizeShipsList(squadBuilderShip.Player);
    }
コード例 #2
0
    private static void TryToReinstallUpgrade(SquadBuilderShip squadBuilderShip, SquadBuilderUpgrade squadUpgrade, GenericUpgrade oldUpgrade)
    {
        if (oldUpgrade.IsAllowedForShip(squadBuilderShip.Ship) && squadUpgrade.Slot.UpgradeIsAllowed(oldUpgrade))
        {
            Dropdown upgradeDropbox     = squadUpgrade.Panel.transform.GetComponent <Dropdown>();
            string   upgradeDropboxName = AllUpgrades.Where(n => n.UpgradeTypeName == oldUpgrade.GetType().ToString()).First().UpgradeNameWithCost;

            bool isFound = false;
            for (int i = 0; i < upgradeDropbox.options.Count; i++)
            {
                if (upgradeDropbox.options[i].text == upgradeDropboxName)
                {
                    upgradeDropbox.value = i;
                    if (squadUpgrade.Slot.InstalledUpgrade != null)
                    {
                        squadUpgrade.Slot.RemovePreInstallUpgrade();
                    }
                    squadUpgrade.Slot.PreInstallUpgrade(oldUpgrade, squadBuilderShip.Ship);
                    isFound = true;
                    break;
                }
            }
            if (!isFound)
            {
                upgradeDropbox.value = 0;
            }
        }
    }
コード例 #3
0
    private static string GetNameOfUpgrade(SquadBuilderUpgrade upgrade)
    {
        string result = "";
        string upgradeNameWithAnyCost = upgrade.Panel.transform.GetComponent <Dropdown>().captionText.text;

        int indexOfCostStart = upgradeNameWithAnyCost.LastIndexOf('(');

        if (indexOfCostStart != -1)
        {
            string upgradeNameWithoutCost = upgradeNameWithAnyCost.Substring(0, indexOfCostStart);

            foreach (var upgradeHolder in AllUpgrades)
            {
                if (upgradeHolder.UpgradeNameWithCost.StartsWith(upgradeNameWithoutCost))
                {
                    result = upgradeHolder.UpgradeTypeName;
                    break;
                }
            }
        }

        //OLD
        //if (AllUpgrades.Find(n => n.UpgradeNameWithCost == upgradeNameWithAnyCost) != null) result = AllUpgrades.Find(n => n.UpgradeNameWithCost == upgradeNameWithAnyCost).UpgradeTypeName;

        return(result);
    }
コード例 #4
0
    private static void AddUpgrade(SquadBuilderShip squadBuilderShip, UpgradeSlot upgradeSlot)
    {
        GameObject panel = CreateUpgradePanel(squadBuilderShip, upgradeSlot);

        SquadBuilderUpgrade upgrade = new SquadBuilderUpgrade(squadBuilderShip, upgradeSlot, panel);

        squadBuilderShip.AddUpgrade(upgrade);
    }
コード例 #5
0
    private static void SubscribeUpgradeDropdowns(SquadBuilderShip squadBuilderShip, SquadBuilderUpgrade upgrade)
    {
        Dropdown upgradeDropdown = upgrade.Panel.transform.GetComponent <Dropdown>();

        upgradeDropdown.onValueChanged.AddListener(delegate
        {
            OnUpgradeChanged(squadBuilderShip, upgrade);
        });
    }
コード例 #6
0
        public void AddUpgrade(SquadBuilderUpgrade upgradeHolder)
        {
            Upgrades.Add(upgradeHolder);

            UpdateUpgradeDropdowList(upgradeHolder);

            SubscribeUpgradeDropdowns(this, upgradeHolder);
            AddUpgradeTooltip(upgradeHolder.Panel);
        }
コード例 #7
0
    private static string GetNameOfUpgrade(SquadBuilderUpgrade upgrade)
    {
        string result      = "";
        string upgradeName = upgrade.Panel.transform.GetComponent <Dropdown>().captionText.text;

        if (AllUpgrades.ContainsKey(upgradeName))
        {
            result = AllUpgrades[upgradeName];
        }
        return(result);
    }
コード例 #8
0
    private static void ChangeUpgrade(SquadBuilderShip squadBuilderShip, SquadBuilderUpgrade upgrade)
    {
        string upgradeId = GetNameOfUpgrade(upgrade);

        if (upgrade.Slot.InstalledUpgrade != null)
        {
            upgrade.Slot.RemovePreInstallUpgrade();
        }
        if (!string.IsNullOrEmpty(upgradeId))
        {
            upgrade.Slot.PreInstallUpgrade((GenericUpgrade)Activator.CreateInstance(Type.GetType(upgradeId)), squadBuilderShip.Ship);
        }

        UpdateUpgradePanelsDiff(squadBuilderShip);
    }
コード例 #9
0
        public void ChangeUpgradeSlot(SquadBuilderUpgrade upgradeHolder, UpgradeSlot newSlot)
        {
            UpgradeSlot oldUpgradeSlot = upgradeHolder.Slot;

            upgradeHolder.Slot = newSlot;

            UpdateUpgradeDropdowList(upgradeHolder);

            if (oldUpgradeSlot.InstalledUpgrade != null)
            {
                if (Ship.UpgradeBar.HasFreeUpgradeSlot(oldUpgradeSlot.InstalledUpgrade.Type))
                {
                    TryToReinstallUpgrade(this, upgradeHolder, oldUpgradeSlot.InstalledUpgrade);
                }
            }
        }
コード例 #10
0
    private static void CopyShipUpgrades(SquadBuilderShip originalShip, SquadBuilderShip copiedShip)
    {
        foreach (var originalUpgrade in originalShip.GetUpgrades())
        {
            SquadBuilderUpgrade copiedUpgrade         = copiedShip.GetUpgrades().Find(n => n.Slot.Type == originalUpgrade.Slot.Type && n.Slot.Counter == originalUpgrade.Slot.Counter);
            Dropdown            copiedUpgradeDropdown = copiedUpgrade.Panel.GetComponent <Dropdown>();
            string originalUpgradeName = originalUpgrade.Panel.GetComponent <Dropdown>().captionText.text;

            for (int i = 0; i < copiedUpgradeDropdown.options.Count; i++)
            {
                if (copiedUpgradeDropdown.options[i].text == originalUpgradeName)
                {
                    copiedUpgradeDropdown.value = i;
                    break;
                }
            }
        }
    }
コード例 #11
0
    private static void SetUpgradesDropdown(SquadBuilderShip squadBuilderShip, SquadBuilderUpgrade upgrade, List <String> upgradeList)
    {
        Dropdown upgradesDropdown = upgrade.Panel.transform.GetComponent <Dropdown>();

        upgradesDropdown.ClearOptions();

        string        emptySlot     = "Empty Slot: " + upgrade.Slot.Type;
        List <string> emptySlotList = new List <string>()
        {
            emptySlot
        };

        upgradesDropdown.AddOptions(emptySlotList);

        upgradesDropdown.AddOptions(upgradeList);

        OrganizeUpgradeLines(squadBuilderShip.Panel);
    }
コード例 #12
0
        public void ChangeUpgradeSlot(SquadBuilderUpgrade upgradeHolder, UpgradeSlot newSlot)
        {
            UpgradeSlot oldUpgradeSlot = upgradeHolder.Slot;

            upgradeHolder.Slot = newSlot;

            UpdateUpgradeDropdowList(upgradeHolder);

            if (oldUpgradeSlot.InstalledUpgrade != null)
            {
                if (Ship.UpgradeBar.HasFreeUpgradeSlot(oldUpgradeSlot.InstalledUpgrade.Type))
                {
                    TryToReinstallUpgrade(this, upgradeHolder, oldUpgradeSlot.InstalledUpgrade);
                }

                if (!oldUpgradeSlot.InstalledUpgrade.IsAllowedForShip(oldUpgradeSlot.InstalledUpgrade.Host))
                {
                    oldUpgradeSlot.RemovePreInstallUpgrade();
                    upgradeHolder.Panel.GetComponentInChildren <Dropdown>().value = 0;
                    UpdateUpgradePanelsDiff(this);
                }
            }
        }
コード例 #13
0
 private static void OnUpgradeChanged(SquadBuilderShip squadBuilderShip, SquadBuilderUpgrade upgrade)
 {
     ChangeUpgrade(squadBuilderShip, upgrade);
 }
コード例 #14
0
        private void UpdateUpgradeDropdowList(SquadBuilderUpgrade upgradeHolder)
        {
            List <string> upgradeList = GetUpgradesList(this, upgradeHolder.Slot);

            SetUpgradesDropdown(this, upgradeHolder, upgradeList);
        }
コード例 #15
0
 public void RemoveUpgrade(SquadBuilderUpgrade upgradeHolder)
 {
     Upgrades.Remove(upgradeHolder);
     MonoBehaviour.DestroyImmediate(upgradeHolder.Panel);
 }