This repository was archived by the owner on May 8, 2023. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathPluginWindow.cs
More file actions
95 lines (81 loc) · 3.23 KB
/
PluginWindow.cs
File metadata and controls
95 lines (81 loc) · 3.23 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
using Ricimon.FFXIV_PraeCastrum_Timer.Models;
using System;
using System.Windows.Forms;
namespace Ricimon.FFXIV_PraeCastrum_Timer
{
public partial class PluginWindow : UserControl
{
private readonly RunManager _runManager;
public PluginWindow(RunManager runManager)
{
_runManager = runManager;
InitializeComponent();
}
private void PluginWindow_Load(object sender, EventArgs e)
{
UpdateRunStateLabels(_runManager.RunState);
UpdateRunResultLabels(null);
_runManager.RunStateChanged += UpdateRunStateLabels;
_runManager.OnRunEnded += UpdateRunResultLabels;
var timer = new Timer
{
Interval = 250
};
timer.Start();
timer.Tick += UpdateTimers;
}
private void UpdateRunStateLabels(RunState runState)
{
runName.Text = runState?.RunName;
lastCheckpoint.Text = runState?.LastCheckpointLabel;
forceStartCastrumButton.Visible = forceStartPraetoriumButton.Visible = runState == null;
skipCheckpointButton.Visible = runState != null;
}
private void UpdateTimers(object sender, EventArgs e)
{
var runState = _runManager.RunState;
runDuration.Text =
runState != null ? ConvertToDurationOutput(DateTime.Now - runState.RunStartTime, false) : string.Empty;
cutsceneTimeRemaining.Text =
runState != null && runState.IsInCutscene ? ConvertToDurationOutput(runState.CurrentCutsceneTimeEnd - DateTime.Now, false) : string.Empty;
}
private void UpdateRunResultLabels(RunResult runResult)
{
runNameStats.Text = runResult?.RunName;
runDurationStats.Text =
runResult != null ? ConvertToDurationOutput(runResult.RunDuration, true) : string.Empty;
runDurationWithoutCutscenesStats.Text =
runResult != null ? ConvertToDurationOutput(runResult.RunDurationOutOfCutscenes, true) : string.Empty;
}
private string ConvertToDurationOutput(TimeSpan duration, bool showMilliseconds)
{
var s = duration.ToString(showMilliseconds ? @"mm\:ss\.fff" : @"mm\:ss");
if (duration < TimeSpan.Zero)
{
s = "-" + s;
}
var hours = Math.Floor(duration.TotalHours);
if (hours > 0)
{
s = hours.ToString() + ":" + s;
}
return s;
}
private void forceStartCastrumButton_Click(object sender, EventArgs e)
{
_runManager.TryStartRun(Constants.CastrumKey, "FORCE_CASTRUM_START", true);
}
private void forceStartPraetoriumButton_Click(object sender, EventArgs e)
{
_runManager.TryStartRun(Constants.PraetoriumKey, "FORCE_PRAETORIUM_START", true);
}
private void skipCheckpointButton_Click(object sender, EventArgs e)
{
_runManager.TryHitCheckpoint("FORCE_CHECKPOINT_HIT", true);
}
private void abortRunButton_Click(object sender, EventArgs e)
{
_runManager.Reset();
}
}
}