LiveSplit.TZA/LiveSplit.TZA/Splits/Cutscene.cs

43 lines
1.1 KiB
C#
Executable File

using LiveSplit.Model;
namespace LiveSplit.TZA.Splits;
internal class Cutscene : ISplit {
private string Name { get; }
private CutsceneAction Action { get; }
public Cutscene(string name, CutsceneAction action) {
this.Name = name;
this.Action = action;
}
public LogicResult Calculate(TimerPhase phase, GameMemory memory) {
if (phase != TimerPhase.Running) {
return LogicResult.None;
}
if (!memory.Cutscene.Changed) {
return LogicResult.None;
}
switch (this.Action) {
case CutsceneAction.Enter when memory.Cutscene.Current != this.Name:
case CutsceneAction.Exit when memory.Cutscene.Old != this.Name:
return LogicResult.None;
default:
return LogicResult.Split;
}
}
public string GetHumanName() => this.Action switch {
CutsceneAction.Enter => "After cutscene starts",
CutsceneAction.Exit => "After cutscene ends",
_ => "Unknown cutscene action - please report this",
};
}
internal enum CutsceneAction {
Enter,
Exit,
}