Skip to content

Commit c340bee

Browse files
committed
version 1.0.2 release - added version checker and images
1 parent f7718c7 commit c340bee

File tree

8 files changed

+183
-10
lines changed

8 files changed

+183
-10
lines changed

CS2 Server Picker/CS2 Server Picker.csproj

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,9 @@
99
<ImplicitUsings>enable</ImplicitUsings>
1010
<ApplicationIcon>e1bd06c3f8089e7552aa0552cb387c92.ico</ApplicationIcon>
1111
<SignAssembly>False</SignAssembly>
12+
<FileVersion>v1.0.2</FileVersion>
13+
<AssemblyVersion>1.0.2</AssemblyVersion>
14+
<InformationalVersion>1.0.2</InformationalVersion>
1215
</PropertyGroup>
1316

1417
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
using System;
2+
using System.Collections.Generic;
3+
using System.Linq;
4+
using System.Text;
5+
using System.Threading.Tasks;
6+
7+
namespace CS2_Server_Picker.Helpers
8+
{
9+
using System.Net.Http;
10+
using System.Text.Json;
11+
using System.Threading.Tasks;
12+
13+
public static class VersionChecker
14+
{
15+
private static readonly string ApiUrl = "https://api.github.com/repos/baardie/CS2ServerPicker/releases/latest";
16+
17+
public static async Task<string?> GetLatestVersionAsync()
18+
{
19+
using var client = new HttpClient();
20+
client.DefaultRequestHeaders.UserAgent.ParseAdd("CS2ServerPicker");
21+
22+
try
23+
{
24+
var json = await client.GetStringAsync(ApiUrl);
25+
using var doc = JsonDocument.Parse(json);
26+
var root = doc.RootElement;
27+
28+
if (root.TryGetProperty("tag_name", out var tag))
29+
return tag.GetString()?.Trim();
30+
}
31+
catch
32+
{
33+
// Optionally log or handle errors
34+
}
35+
36+
return null;
37+
}
38+
39+
public static bool IsNewVersionAvailable(string? latestTag, string currentVersion)
40+
{
41+
if (string.IsNullOrWhiteSpace(latestTag))
42+
return false;
43+
44+
// Strip 'v' prefix and build metadata
45+
var latest = latestTag.TrimStart('v');
46+
var current = currentVersion.Split('+')[0];
47+
48+
return !string.Equals(latest, current, StringComparison.OrdinalIgnoreCase);
49+
}
50+
51+
}
52+
53+
}

CS2 Server Picker/Properties/Resources.Designer.cs

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

CS2 Server Picker/Properties/Resources.resx

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,13 @@
118118
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
119119
</resheader>
120120
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
121+
<data name="pp-logo-100px" type="System.Resources.ResXFileRef, System.Windows.Forms">
122+
<value>..\Resources\pp-logo-100px.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
123+
</data>
121124
<data name="cs2bg_resized" type="System.Resources.ResXFileRef, System.Windows.Forms">
122125
<value>..\Resources\cs2bg_resized.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
123126
</data>
127+
<data name="GitHub-Logo-ee398b662d42" type="System.Resources.ResXFileRef, System.Windows.Forms">
128+
<value>..\Resources\GitHub-Logo-ee398b662d42.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
129+
</data>
124130
</root>
5.83 KB
Loading
1.38 KB
Loading

CS2 Server Picker/UI/MainForm.Designer.cs

Lines changed: 40 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

CS2 Server Picker/UI/MainForm.cs

Lines changed: 61 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
using CS2_Server_Picker.Core;
2+
using CS2_Server_Picker.Helpers;
23
using System;
34
using System.Collections.Generic;
45
using System.ComponentModel;
@@ -200,13 +201,23 @@ private async void MainForm_Load(object? sender, EventArgs e)
200201
{
201202
try
202203
{
204+
205+
string? latestTag = await VersionChecker.GetLatestVersionAsync();
206+
string currentVersion = Application.ProductVersion;
207+
208+
if (VersionChecker.IsNewVersionAvailable(latestTag, currentVersion))
209+
{
210+
MessageBox.Show($"A new version ({latestTag}) is available!", "Update Available",
211+
MessageBoxButtons.OK, MessageBoxIcon.Information);
212+
}
213+
203214
var regions = await Task.Run(() => RegionDataStore.GetRegionsAsync());
204215

205216
InitializeRows(regions);
206217
BindPresets();
207218

208219
await PingAllRegionsAsync(regions);
209-
await InitializeGeo();
220+
await InitializeGeo();
210221
}
211222
catch (Exception ex)
212223
{
@@ -286,7 +297,7 @@ private async Task PingCycleAsync()
286297

287298
var regions = await Task.Run(() => RegionDataStore.GetRegionsAsync());
288299

289-
InitializeRows(regions);
300+
InitializeRows(regions);
290301
await PingAllRegionsAsync(regions);
291302
}
292303
catch (Exception ex)
@@ -328,16 +339,16 @@ private async Task PingAllRegionsAsync(IReadOnlyList<Region> regions)
328339
BeginInvoke(() =>
329340
{
330341
row.PingMs = finalPing;
331-
_completedCount++;
332-
342+
_completedCount++;
343+
333344
});
334345
}
335346
finally
336347
{
337348
semaphore.Release();
338349
_pendingUiUpdate = true;
339350
Interlocked.Increment(ref completed);
340-
351+
341352
}
342353
});
343354

@@ -406,9 +417,9 @@ private void GridRegions_CellClick(object? sender, DataGridViewCellEventArgs e)
406417

407418
var row = _rows[e.RowIndex];
408419
row.Allowed = !row.Allowed;
409-
410-
gridRegions.InvalidateRow(e.RowIndex);
411-
gridRegions.Refresh();
420+
421+
gridRegions.InvalidateRow(e.RowIndex);
422+
gridRegions.Refresh();
412423
}
413424

414425
private void GridRegions_CellFormatting(object? sender, DataGridViewCellFormattingEventArgs e)
@@ -505,7 +516,7 @@ private void ApplyPreset()
505516

506517
private async Task ClearAllowedAsync()
507518
{
508-
519+
509520
foreach (var row in _rows)
510521
row.Allowed = false;
511522

@@ -650,5 +661,46 @@ private void OnPropertyChanged(string prop) =>
650661
}
651662

652663
#endregion
664+
665+
private void buttonDonate_Click(object sender, EventArgs e)
666+
{
667+
var url = "https://www.paypal.com/donate/?business=96PVNH58EAZXJ&no_recurring=0&item_name=Your+donation+helps+cover+occasional+caffeine-fueled+midnight+sessions%21+%0AThanks+for+being+part+of+the+journey+%F0%9F%92%99&currency_code=GBP";
668+
669+
try
670+
{
671+
var psi = new System.Diagnostics.ProcessStartInfo
672+
{
673+
FileName = url,
674+
UseShellExecute = true
675+
};
676+
System.Diagnostics.Process.Start(psi);
677+
}
678+
catch (Exception ex)
679+
{
680+
MessageBox.Show("Unable to open browser: " + ex.Message, "Error",
681+
MessageBoxButtons.OK, MessageBoxIcon.Error);
682+
}
683+
}
684+
685+
private void buttonGithub_Click(object sender, EventArgs e)
686+
{
687+
var url = "https://github.com/baardie/CS2ServerPicker";
688+
689+
try
690+
{
691+
var psi = new System.Diagnostics.ProcessStartInfo
692+
{
693+
FileName = url,
694+
UseShellExecute = true
695+
};
696+
System.Diagnostics.Process.Start(psi);
697+
}
698+
catch (Exception ex)
699+
{
700+
MessageBox.Show("Unable to open browser: " + ex.Message, "Error",
701+
MessageBoxButtons.OK, MessageBoxIcon.Error);
702+
}
703+
704+
}
653705
}
654706
}

0 commit comments

Comments
 (0)