43 lines
1.1 KiB
C#
Executable File
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,
|
|
}
|