/// <summary> /// Adjust tracking value based on In-game progress /// </summary> /// <param name="progress"></param> private void CheckOverUnder(QuestProgressType progress) { if (this.Datas.Length != 1) { return; } var Current = this.Datas[0].Current; var Maximum = this.Datas[0].Maximum; var cut50 = this.Progress50; var cut80 = this.Progress80; switch (progress) { case QuestProgressType.None: if (Current >= cut50) { Current = cut50 - 1; } break; case QuestProgressType.Progress50: if (Current >= cut80) { Current = cut80 - 1; } if (Current < cut50) { Current = cut50; } break; case QuestProgressType.Progress80: if (Current >= Maximum) { Current = Maximum - 1; } if (Current < cut80) { Current = cut80; } break; case QuestProgressType.Complete: Current = Maximum; break; } this.Datas[0].Current = Current; }
/// <summary> /// Update progress state /// </summary> /// <param name="State"></param> public abstract void UpdateState(QuestProgressType State);
public override void UpdateState(QuestProgressType State) => CheckOverUnder(State);