void Start() { stats = new RPGDefaultStats(); var statTypes = Enum.GetValues(typeof(RPGStatType)); foreach (var statType in statTypes) { RPGStat stat = stats.GetStat((RPGStatType)statType); if (stat != null) { Debug.Log(string.Format("Stat {0}'s value is {1}", stat.StatName, stat.StatValue)); } } var health = stats.GetStat <RPGStatModifiable>(RPGStatType.Health); health.AddModifier(new RPGStatModBasePercent(1.0f)); // 200 health.AddModifier(new RPGStatModBaseAdd(50f)); // 250 health.AddModifier(new RPGStatModTotalPercent(1.0f)); // 500 health.UpdateModifiers(); foreach (var statType in statTypes) { RPGStat stat = stats.GetStat((RPGStatType)statType); if (stat != null) { Debug.Log(string.Format("Stat {0}'s value is {1}", stat.StatName, stat.StatValue)); } } }
/// <summary> /// Basic Constructor. Listens to the Stat's OnValueChange /// event if the stat implements IStatValueChange. /// </summary> public RPGStatLinker(RPGStat stat) { LinkedStat = stat; IStatValueChange iValueChange = LinkedStat as IStatValueChange; if (iValueChange != null) { iValueChange.OnValueChange += OnLinkedStatValueChange; } }
public RPGStatLinker(RPGStat stat) { _stat = stat; IStatValueChange valueChange = stat as IStatValueChange; if (valueChange != null) { valueChange.OnValueChange += OnStatValueChange; } }
void DisplayStatValues() { ForEachEnum <RPGStatType>((statType) => { RPGStat stat = stats.GetStat((RPGStatType)statType); if (stat != null) { Debug.Log(string.Format("Stat {0}'s value is {1}", stat.StatName, stat.StatValue)); } }); }
public bool TryGetStatValue(RPGStatType statName, out int value) { RPGStat stat = null; value = 0; if (StatCollection.TryGetStat(statName, out stat)) { value = stat.StatValue; return(true); } return(false); }
void DisplayStatValues() { ForEachEnum <RPGStatType>((statType) => { RPGStat stat = stats.GetStat((RPGStatType)statType); if (stat != null) { RPGVital vital = stat as RPGVital; if (vital != null) { Debug.Log(string.Format("Stat {0}'s value is {1}/{2}", stat.StatName, vital.StatCurrentValue, stat.StatValue)); } else { Debug.Log(string.Format("Stat {0}'s value is {1}", stat.StatName, stat.StatValue)); } } }); }
public void SetStat(StatTypeAsset asset, RPGStat stat) { if (this.stat != stat && this.stat != null) { this.stat.RemoveValueListener(OnStatValueChange); } this.stat = stat; this.asset = asset; if (this.stat != null) { OnStatValueChange(this.stat); this.stat.AddValueListener(OnStatValueChange); } if (this.asset != null) { statIcon.sprite = asset.Icon; statName.text = asset.Name; } }
public void ModifyStat(RPGStatType sourceStat, RPGStatType targetStat, float modifier, float flatValue, float baseValue) { float rawValue = flatValue + modifier * baseValue; float bufferValue = 1.0f; if (sourceStat == RPGStatType.Power) { RPGStat stat = null; if (StatCollection.TryGetStat(RPGStatType.Defense, out stat)) { bufferValue = stat.StatValue; } } else if (sourceStat == RPGStatType.Mind) { RPGStat stat = null; if (StatCollection.TryGetStat(RPGStatType.Spirit, out stat)) { bufferValue = stat.StatValue; } } ModifyStat(targetStat, (int)((rawValue < 0) ? (-1) : (1) * rawValue * rawValue / bufferValue)); }
void OnStatChange(object sender, EventArgs e) { RPGStat stat = sender as RPGStat; Debug.Log(string.Format("[RPGEntity.EntityStats] {0} value is {1}", stat.StatName, stat.StatValue)); }
/// <summary> /// Constructor that takes the linked stat and the ratio to use /// </summary> public RPGStatLinkerBasic(RPGStat stat, float ratio) : base(stat) { _ratio = ratio; }
public static void AddRPGStat(this Player player, RPGStat statToAdd) => RPGStatManager.AllPlayerRPGStats.Add(statToAdd);
public RPGStatLinkerBasic(RPGStat stat, float ratio) : base(stat) { _ratio = ratio; }