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); }
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; } } }
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); }
private static void AddUpgrade(SquadBuilderShip squadBuilderShip, UpgradeSlot upgradeSlot) { GameObject panel = CreateUpgradePanel(squadBuilderShip, upgradeSlot); SquadBuilderUpgrade upgrade = new SquadBuilderUpgrade(squadBuilderShip, upgradeSlot, panel); squadBuilderShip.AddUpgrade(upgrade); }
private static void SubscribeUpgradeDropdowns(SquadBuilderShip squadBuilderShip, SquadBuilderUpgrade upgrade) { Dropdown upgradeDropdown = upgrade.Panel.transform.GetComponent <Dropdown>(); upgradeDropdown.onValueChanged.AddListener(delegate { OnUpgradeChanged(squadBuilderShip, upgrade); }); }
public void AddUpgrade(SquadBuilderUpgrade upgradeHolder) { Upgrades.Add(upgradeHolder); UpdateUpgradeDropdowList(upgradeHolder); SubscribeUpgradeDropdowns(this, upgradeHolder); AddUpgradeTooltip(upgradeHolder.Panel); }
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); }
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); }
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); } } }
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; } } } }
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); }
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); } } }
private static void OnUpgradeChanged(SquadBuilderShip squadBuilderShip, SquadBuilderUpgrade upgrade) { ChangeUpgrade(squadBuilderShip, upgrade); }
private void UpdateUpgradeDropdowList(SquadBuilderUpgrade upgradeHolder) { List <string> upgradeList = GetUpgradesList(this, upgradeHolder.Slot); SetUpgradesDropdown(this, upgradeHolder, upgradeList); }
public void RemoveUpgrade(SquadBuilderUpgrade upgradeHolder) { Upgrades.Remove(upgradeHolder); MonoBehaviour.DestroyImmediate(upgradeHolder.Panel); }