0
0
Fork 0
mirror of https://github.com/Sanae6/SmoOnlineServer.git synced 2024-11-25 04:35:18 +00:00

readded persisten shinies

This commit is contained in:
TheUbMunster 2022-07-27 14:52:33 -06:00 committed by Sanae
parent 5af8001398
commit 33fdd69e15

View file

@ -2,6 +2,7 @@
using System.Net; using System.Net;
using System.Numerics; using System.Numerics;
using System.Text; using System.Text;
using System.Text.Json;
using Server; using Server;
using Shared; using Shared;
using Shared.Packet.Packets; using Shared.Packet.Packets;
@ -15,6 +16,47 @@ Logger consoleLogger = new Logger("Console");
DiscordBot bot = new DiscordBot(); DiscordBot bot = new DiscordBot();
await bot.Run(); await bot.Run();
async Task PersistShines()
{
if (!Settings.Instance.PersistShines.Enabled)
{
return;
}
try
{
string shineJson = JsonSerializer.Serialize(shineBag);
await File.WriteAllTextAsync(Settings.Instance.PersistShines.Filename, shineJson);
}
catch (Exception ex)
{
consoleLogger.Error(ex);
}
}
async Task LoadShines()
{
if (!Settings.Instance.PersistShines.Enabled)
{
return;
}
try
{
string shineJson = await File.ReadAllTextAsync(Settings.Instance.PersistShines.Filename);
var loadedShines = JsonSerializer.Deserialize<HashSet<int>>(shineJson);
if (loadedShines is not null) shineBag = loadedShines;
}
catch (Exception ex)
{
consoleLogger.Error(ex);
}
}
// Load shines table from file
await LoadShines();
server.ClientJoined += (c, _) => { server.ClientJoined += (c, _) => {
if (Settings.Instance.BanList.Enabled if (Settings.Instance.BanList.Enabled
&& (Settings.Instance.BanList.Players.Contains(c.Id) && (Settings.Instance.BanList.Players.Contains(c.Id)
@ -52,6 +94,7 @@ async Task ClientSyncShineBag(Client client) {
async void SyncShineBag() { async void SyncShineBag() {
try { try {
await PersistShines();
await Parallel.ForEachAsync(server.Clients.ToArray(), async (client, _) => await ClientSyncShineBag(client)); await Parallel.ForEachAsync(server.Clients.ToArray(), async (client, _) => await ClientSyncShineBag(client));
} catch { } catch {
// errors that can happen shines change will crash the server :) // errors that can happen shines change will crash the server :)
@ -78,6 +121,9 @@ server.PacketHandler = (c, p) => {
c.Metadata["speedrun"] = true; c.Metadata["speedrun"] = true;
((ConcurrentBag<int>) (c.Metadata["shineSync"] ??= new ConcurrentBag<int>())).Clear(); ((ConcurrentBag<int>) (c.Metadata["shineSync"] ??= new ConcurrentBag<int>())).Clear();
shineBag.Clear(); shineBag.Clear();
Task.Run(async () => {
await PersistShines();
});
c.Logger.Info("Entered Cap on new save, preventing moon sync until Cascade"); c.Logger.Info("Entered Cap on new save, preventing moon sync until Cascade");
break; break;
case "WaterfallWorldHomeStage": case "WaterfallWorldHomeStage":