Skip to content

Commit 5cc0478

Browse files
authored
Merge pull request #93 from Wraiith32/feature/remaining_time
Added visual timers section and various bug fixes
2 parents a9b16bf + 5b1a05e commit 5cc0478

12 files changed

+308
-25
lines changed

README.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,10 @@ TarkovMonitor is an Escape from Tarkov companion application that provides usefu
2828
- Statistics (all stored locally on your computer)
2929
- Track the your total sales on the flea market
3030
- Track how many times you play on each map
31+
- Visual Timers (have that friend that never heard the audio and asks "has the runthrough timer happened yet?")
32+
- Displays "Time in Raid"
33+
- Displays countdown for "Runthrough time"
34+
- Display countdown for Scav cooldown time
3135

3236
## Installation
3337

TarkovMonitor/App.config

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,12 @@
7070
<setting name="tarkovTrackerTokens" serializeAs="String">
7171
<value>{}</value>
7272
</setting>
73+
<setting name="runthroughTime" serializeAs="String">
74+
<value>00:07:10</value>
75+
</setting>
76+
<setting name="automaticallyDeleteScreenshotsAfterRaid" serializeAs="String">
77+
<value>False</value>
78+
</setting>
7379
</TarkovMonitor.Properties.Settings>
7480
</userSettings>
7581
</configuration>

TarkovMonitor/Blazor/AppLayout.razor

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
<MudNavLink Href="/sounds" Match="NavLinkMatch.All" Icon="@Icons.Material.Filled.Speaker">Sounds</MudNavLink>
2626
<MudNavLink Href="/stats" Match="NavLinkMatch.All" Icon="@Icons.Material.Filled.BarChart">Stats</MudNavLink>
2727
<MudNavLink Href="/raw" Match="NavLinkMatch.All" Icon="@Icons.Material.Filled.RawOn">Raw Logs</MudNavLink>
28+
<MudNavLink Href="/timers" Match="NavLinkMatch.All" Icon="@Icons.Material.Filled.Timer">Timers</MudNavLink>
2829
</MudNavMenu>
2930
</MudDrawer>
3031
<MudMainContent Class="mt-2">

TarkovMonitor/Blazor/Pages/Settings/Settings.razor

Lines changed: 19 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
@implements IDisposable
1010

1111
<MudGrid Class="pa-0" Spacing="0">
12-
<MudItem xs="12">
12+
<MudItem xs="12">
1313
<MudPaper Class="pa-2 ma-2 mx-4" Elevation="3">
1414
<MudText Typo="Typo.h6" Class="d-flex align-center"><MudIcon Icon="@Icons.Material.Filled.Notifications" Class="mr-2" />Notifications</MudText>
1515
<div>
@@ -53,6 +53,9 @@
5353
}
5454
</MudSelect>
5555
</div>
56+
<div>
57+
<MudTextField @bind-Value="@RunthroughTime" Label="Runthrough Time (HH:MM:SS)" Class="d-inline-flex" sx="3" />
58+
</div>
5659
</MudPaper>
5760
</MudItem>
5861

@@ -72,14 +75,14 @@
7275
<MudSwitch @bind-Value="@SkipSplashSwitch" Label="Skip Tarkov.dev Splash Logo" Color="Color.Info" />
7376
</div>
7477
</MudPaper>
75-
</MudItem>
78+
</MudItem>
7679

7780
<MudItem xs="12">
7881
<MudPaper Class="pa-2 ma-2 mx-4" Elevation="3">
7982
<MudText Typo="Typo.h6" Class="d-flex align-center"><MudIcon Icon="@Icons.Material.Filled.Handshake" Class="mr-2"/>Data Collection</MudText>
8083
<MudSwitch @bind-Value="@SubmitQueueTimeSwitch" Label="Submit Queue Time Data" Color="Color.Info" />
8184
</MudPaper>
82-
</MudItem>
85+
</MudItem>
8386

8487
<MudItem xs="12">
8588
<MudPaper Class="pa-2 ma-2 mx-4" Elevation="3">
@@ -398,6 +401,19 @@
398401
}
399402
}
400403

404+
public TimeSpan RunthroughTime
405+
{
406+
get
407+
{
408+
return Properties.Settings.Default.runthroughTime;
409+
}
410+
set
411+
{
412+
Properties.Settings.Default.runthroughTime = value;
413+
Properties.Settings.Default.Save();
414+
}
415+
}
416+
401417
void ReadPastLogs()
402418
{
403419
var options = new DialogOptions { CloseOnEscapeKey = true, MaxWidth = MaxWidth.ExtraLarge, FullWidth = true };
Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
@page "/timers"
2+
@using System.Diagnostics
3+
@inject TimersManager timersManager
4+
@layout AppLayout
5+
@implements IDisposable
6+
7+
<MudGrid Class="pa-0" Spacing="0">
8+
<MudItem xs="12">
9+
<MudPaper Class="pa-2 ma-2 mx-4" Elevation="3">
10+
<MudText Typo="Typo.h6" Class="d-flex align-center"><MudIcon Icon="@Icons.Material.Filled.Timer" Class="mr-2" />Timers</MudText>
11+
<MudList T="string">
12+
<MudListItem>Time In Raid: @TimeInRaidTime</MudListItem>
13+
<MudListItem>Runthrough Period: @RunThroughRemainingTime</MudListItem>
14+
<MudListItem>Scav Cooldown: @ScavCooldownTime</MudListItem>
15+
</MudList>
16+
</MudPaper>
17+
</MudItem>
18+
</MudGrid>
19+
20+
@code {
21+
22+
[CascadingParameter(Name = "AppLayout")]
23+
public AppLayout AppLayout { get; set; }
24+
25+
private TimeSpan RunThroughRemainingTime;
26+
private TimeSpan TimeInRaidTime;
27+
private TimeSpan ScavCooldownTime;
28+
29+
protected override void OnInitialized()
30+
{
31+
base.OnInitialized();
32+
33+
timersManager.RaidTimerChanged += TimersManager_RaidTimerChanged;
34+
timersManager.RunThroughTimerChanged += TimersManager_RunThroughTimerChanged;
35+
timersManager.ScavCooldownTimerChanged += TimersManager_ScavCooldownTimerChanged;
36+
37+
ScavCooldownTime = TimeSpan.FromSeconds(TarkovDev.ScavCooldownSeconds());
38+
}
39+
40+
private async void TimersManager_RaidTimerChanged(object? sender, TimerChangedEventArgs e)
41+
{
42+
TimeInRaidTime = e.TimerValue;
43+
await InvokeAsync(() => StateHasChanged());
44+
}
45+
46+
private async void TimersManager_RunThroughTimerChanged(object? sender, TimerChangedEventArgs e)
47+
{
48+
RunThroughRemainingTime = e.TimerValue;
49+
await InvokeAsync(() => StateHasChanged());
50+
}
51+
52+
private async void TimersManager_ScavCooldownTimerChanged(object? sender, TimerChangedEventArgs e)
53+
{
54+
ScavCooldownTime = e.TimerValue;
55+
await InvokeAsync(() => StateHasChanged());
56+
}
57+
58+
protected override void OnAfterRender(bool firstRender)
59+
{
60+
base.OnAfterRender(firstRender);
61+
if (firstRender)
62+
{
63+
AppLayout.SetTitle("Timers");
64+
}
65+
}
66+
67+
// Clean Up Events
68+
public void Dispose()
69+
{
70+
timersManager.RaidTimerChanged -= TimersManager_RaidTimerChanged;
71+
timersManager.RunThroughTimerChanged -= TimersManager_RunThroughTimerChanged;
72+
timersManager.ScavCooldownTimerChanged -= TimersManager_ScavCooldownTimerChanged;
73+
}
74+
}

TarkovMonitor/GameWatcher.cs

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -263,9 +263,13 @@ internal void GameWatcher_NewLogData(object? sender, NewLogDataEventArgs e)
263263
//var logPattern = @"(?<message>^\d{4}-\d{2}-\d{2}.+$)\s*(?<json>^{[\s\S]+?^})?";
264264
//var logPattern = @"(?<date>^\d{4}-\d{2}-\d{2}) (?<time>\d{2}:\d{2}:\d{2}\.\d{3} [+-]\d{2}:\d{2})\|(?<logLevel>[^|]+)\|(?<logType>[^|]+)\|(?<message>.+$)\s*(?<json>^{[\s\S]+?^})?";
265265
var logMessages = Regex.Matches(e.Data, logPattern, RegexOptions.Multiline);
266-
/*Debug.WriteLine("===log chunk start===");
267-
Debug.WriteLine(e.NewMessage);
268-
Debug.WriteLine("===log chunk end===");*/
266+
267+
#if DEBUG
268+
Debug.WriteLine("===log chunk start===");
269+
Debug.WriteLine(e.Data);
270+
Debug.WriteLine("===log chunk end===");
271+
#endif
272+
269273
foreach (Match logMessage in logMessages)
270274
{
271275
var eventDate = new DateTime();

TarkovMonitor/MainBlazorUI.cs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ public partial class MainBlazorUI : Form
1616
private readonly MessageLog messageLog;
1717
private readonly LogRepository logRepository;
1818
private readonly GroupManager groupManager;
19+
private readonly TimersManager timersManager;
1920
private readonly System.Timers.Timer runthroughTimer;
2021
private readonly System.Timers.Timer scavCooldownTimer;
2122

@@ -119,6 +120,8 @@ public MainBlazorUI()
119120

120121
UpdateCheck.CheckForNewVersion();
121122

123+
timersManager = new TimersManager(eft);
124+
122125
// Creates the dependency injection services which are the in-betweens for the Blazor interface and the rest of the C# application.
123126
var services = new ServiceCollection();
124127
services.AddWindowsFormsBlazorWebView();
@@ -127,14 +130,15 @@ public MainBlazorUI()
127130
services.AddSingleton<MessageLog>(messageLog);
128131
services.AddSingleton<LogRepository>(logRepository);
129132
services.AddSingleton<GroupManager>(groupManager);
133+
services.AddSingleton<TimersManager>(timersManager);
130134
//services.AddSingleton<TarkovDevRepository>(tarkovdevRepository);
131135
blazorWebView1.HostPage = "wwwroot\\index.html";
132136
blazorWebView1.Services = services.BuildServiceProvider();
133137
blazorWebView1.RootComponents.Add<TarkovMonitor.Blazor.App>("#app");
134138

135139
blazorWebView1.WebView.CoreWebView2InitializationCompleted += WebView_CoreWebView2InitializationCompleted;
136140

137-
runthroughTimer = new System.Timers.Timer(TimeSpan.FromMinutes(7).TotalMilliseconds + TimeSpan.FromSeconds(10).TotalMilliseconds)
141+
runthroughTimer = new System.Timers.Timer(Properties.Settings.Default.runthroughTime.TotalMilliseconds)
138142
{
139143
AutoReset = false,
140144
Enabled = false
@@ -180,6 +184,7 @@ private void RunthroughTimer_Elapsed(object? sender, System.Timers.ElapsedEventA
180184
if (Properties.Settings.Default.runthroughAlert)
181185
{
182186
Sound.Play("runthrough_over");
187+
messageLog.AddMessage("Runthrough period over", "info");
183188
}
184189
}
185190

TarkovMonitor/Properties/Settings.Designer.cs

Lines changed: 26 additions & 17 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

TarkovMonitor/Properties/Settings.settings

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,5 +65,11 @@
6565
<Setting Name="tarkovTrackerTokens" Type="System.String" Scope="User">
6666
<Value Profile="(Default)">{}</Value>
6767
</Setting>
68+
<Setting Name="runthroughTime" Type="System.TimeSpan" Scope="User">
69+
<Value Profile="(Default)">00:07:10</Value>
70+
</Setting>
71+
<Setting Name="automaticallyDeleteScreenshotsAfterRaid" Type="System.Boolean" Scope="User">
72+
<Value Profile="(Default)">False</Value>
73+
</Setting>
6874
</Settings>
6975
</SettingsFile>

TarkovMonitor/TarkovDev.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -178,6 +178,7 @@ query TarkovMonitorHideoutStations {
178178
hideoutStations {
179179
id
180180
name
181+
normalizedName
181182
levels {
182183
id
183184
level

TarkovMonitor/TarkovMonitor.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
<UseWindowsForms>true</UseWindowsForms>
88
<ImplicitUsings>enable</ImplicitUsings>
99
<ApplicationIcon>Resources\TarkovDev.ico</ApplicationIcon>
10-
<AssemblyVersion>1.6.2.0</AssemblyVersion>
10+
<AssemblyVersion>1.6.3.0</AssemblyVersion>
1111
</PropertyGroup>
1212

1313
<ItemGroup>

0 commit comments

Comments
 (0)