// // Get Ratios --------------------------------------------------------------------------- // public static Stats AttributesToStats(Attributes attributes) { if (!initialized) { SetupSingleton(); } AspectStats aspectStats = new AspectStats(); CombatStats power = new CombatStats(); CombatStats resistance = new CombatStats(); foreach (AttributeEnum ae in System.Enum.GetValues(typeof(AttributeEnum))) { foreach (CombatStatEnum cse in System.Enum.GetValues(typeof(CombatStatEnum))) { power[cse] += powerRatio[ae][cse] * attributes[ae]; resistance[cse] += resistanceRatio[ae][cse] * attributes[ae]; } foreach (AspectStatEnum aspectEnum in System.Enum.GetValues(typeof(AspectStatEnum))) { aspectStats[aspectEnum] += aspectRatio[ae][aspectEnum] * attributes[ae]; } } return(new Stats(aspectStats, power, resistance)); }
//===== //===== //===== Private Helper Methods ---------------------------------------- //===== //===== void AddAspect <T>(AspectStatEnum ae, Stats precursorStats, List <T> effectList, ref AspectStats aspect) where T : AbstractEffect { foreach (AbstractEffect e in effectList) { aspect[ae] += e.AspectValue(ae); aspect[ae] += e.PercentAspectValue(ae) * precursorStats.AspectValue(ae) / 100; } }
public Stats CalculateStats(Stats precursorStats) { AspectStats aspect = new AspectStats(); CombatStats power = new CombatStats(); CombatStats resistance = new CombatStats(); //TODO: recalculate active lists into stackResolved lists List <ActiveBuff> stackResolvedActiveBuffs = ResolvedBuffStack(activeBuffs); List <ActiveCurse> stackResolvedActiveCurses = ResolvedCurseStack(activeCurses); foreach (AspectStatEnum ae in System.Enum.GetValues(typeof(AspectStatEnum))) { AddAspect(ae, precursorStats, characterBuffs, ref aspect); AddAspect(ae, precursorStats, gearBuffs, ref aspect); AddAspect(ae, precursorStats, stackResolvedActiveBuffs, ref aspect); AddAspect(ae, precursorStats, instantBuffs, ref aspect); AddAspect(ae, precursorStats, toggleBuffs, ref aspect); SubtractAspect(ae, precursorStats, gearCurses, ref aspect); SubtractAspect(ae, precursorStats, stackResolvedActiveCurses, ref aspect); SubtractAspect(ae, precursorStats, instantCurses, ref aspect); SubtractAspect(ae, precursorStats, toggleCurses, ref aspect); } foreach (CombatStatEnum cse in System.Enum.GetValues(typeof(CombatStatEnum))) { AddPowerResistance(cse, precursorStats, ref power, ref resistance, characterBuffs); AddPowerResistance(cse, precursorStats, ref power, ref resistance, gearBuffs); AddPowerResistance(cse, precursorStats, ref power, ref resistance, stackResolvedActiveBuffs); AddPowerResistance(cse, precursorStats, ref power, ref resistance, instantBuffs); AddPowerResistance(cse, precursorStats, ref power, ref resistance, toggleBuffs); SubtractPowerResistance(cse, precursorStats, ref power, ref resistance, gearCurses); SubtractPowerResistance(cse, precursorStats, ref power, ref resistance, stackResolvedActiveCurses); SubtractPowerResistance(cse, precursorStats, ref power, ref resistance, instantCurses); SubtractPowerResistance(cse, precursorStats, ref power, ref resistance, toggleCurses); } return(new Stats(aspect, power, resistance)); }
public static Stats operator *(float multiplier, Stats s) { AspectStats aspect = new AspectStats(); CombatStats power = new CombatStats(); CombatStats resistance = new CombatStats(); foreach (AspectStatEnum ae in System.Enum.GetValues(typeof(AspectStatEnum))) { aspect[ae] = s.aspectStats[ae] * multiplier; } foreach (CombatStatEnum cse in System.Enum.GetValues(typeof(CombatStatEnum))) { power[cse] = s.power[cse] * multiplier; resistance[cse] = s.resistance[cse] * multiplier; } return(new Stats(aspect, power, resistance)); }
public static Stats operator +(Stats s1, Stats s2) { AspectStats aspect = new AspectStats(); CombatStats power = new CombatStats(); CombatStats resistance = new CombatStats(); foreach (AspectStatEnum ae in System.Enum.GetValues(typeof(AspectStatEnum))) { aspect[ae] = s1.aspectStats[ae] + s2.aspectStats[ae]; } foreach (CombatStatEnum cse in System.Enum.GetValues(typeof(CombatStatEnum))) { power[cse] = s1.power[cse] + s2.power[cse]; resistance[cse] = s1.resistance[cse] + s2.resistance[cse]; } return(new Stats(aspect, power, resistance)); }
public Stats(AspectStats aspectStats, CombatStats power, CombatStats resistance) { this.aspectStats = aspectStats; this.power = power; this.resistance = resistance; }
public Stats() { aspectStats = new AspectStats(); power = new CombatStats(); resistance = new CombatStats(); }