public void UpdateCurrent(Stats stat01, Stats stat02, float delta) { fixed(float *ptr = m_cache) { StatValue *var01 = (StatValue *)(ptr + ((int)StatsOffset.Stats + ((int)stat01 - 1) * (int)StatIndex.Length)); StatValue *var02 = (StatValue *)(ptr + ((int)StatsOffset.Stats + ((int)stat02 - 1) * (int)StatIndex.Length)); if (var01->Cur != var02->Cur) { var01->Cur = MathHelper.Clamp(var02->Max * delta, var01->Min, var01->Max); } } }
private static void Recalculate(StatValue *stat) { var coff = stat->Cur / stat->Max; stat->Max = (stat->Base + stat->Item + stat->Mod) * stat->Mul; if (stat->Max < stat->Min) { stat->Max = stat->Min; } if (stat->Cur > 0) { stat->Cur = stat->Max * coff; } }