five hundred million if statements

This commit is contained in:
Sylvia 2026-03-27 00:43:59 -07:00
parent 9930aba85d
commit 24ab1b213e
5 changed files with 203 additions and 44 deletions

View file

@ -22,15 +22,80 @@ public class AbilitySceneTransfer : MonoBehaviour
[System.Serializable]
public class SavedAbility
{
public enum AbilitySlot {Primary, Secondary, SpellA, SpellB}
public AbilitySlot abilitySlot = AbilitySlot.Primary;
public string abilityName;
public Dictionary<string, int> equippedUpgrades;
public Dictionary<string, int> equippedUpgrades = new();
}
public List<SavedAbility> savedAbilities;
public MarisaAbilityHandler abilityHandler;
[ContextMenu("Save")]
public void TestSaving()
{
int testSlot = 0;
foreach (PlayerAbility ability in abilityHandler.abilityInstances)
{
SaveAbility(ability);
savedAbilities[testSlot].abilitySlot = (SavedAbility.AbilitySlot)testSlot;
testSlot++;
}
}
[ContextMenu("Load")]
public void TestLoading()
{
LoadAbilities();
}
public void SaveAbility(PlayerAbility savedAbility)
{
savedAbilities.Add(new SavedAbility
SavedAbility newSavedAbility = new();
newSavedAbility.abilityName = savedAbility.abilityName;
foreach (AbilityUpgrade upgrade in AbilityManager.instance.allUpgrades)
{
abilityName = savedAbility.abilityName
});
int upgradeCount = savedAbility.GetUpgradeCount(upgrade);
if (upgradeCount > 0)
{
newSavedAbility.equippedUpgrades[upgrade.upgradeName] = upgradeCount;
}
}
savedAbilities.Add(newSavedAbility);
}
public void LoadAbilities()
{
abilityHandler.abilities.Clear();
foreach (SavedAbility savedAbility in savedAbilities)
{
PlayerAbility foundAbility = null;
foreach (PlayerAbility ability in AbilityManager.instance.allAbilities)
{
if (savedAbility.abilityName == ability.abilityName) //shit code
{
foundAbility = ability;
return;
}
}
if (!foundAbility)
{
Debug.LogWarning($"{savedAbility.abilityName} was not found.");
}
switch (savedAbility.abilitySlot)
{
case SavedAbility.AbilitySlot.Primary :
abilityHandler.abilities[0] = foundAbility;
break;
case SavedAbility.AbilitySlot.Secondary :
abilityHandler.abilities[1] = foundAbility;
break;
case SavedAbility.AbilitySlot.SpellA :
abilityHandler.abilities[2] = foundAbility;
break;
case SavedAbility.AbilitySlot.SpellB :
abilityHandler.abilities[3] = foundAbility;
break;
}
}
abilityHandler.SetupAbilities();
}
}