From 8239740fcf7dcb8ebfb65dab0272650a845b4bce Mon Sep 17 00:00:00 2001 From: jvyden Date: Mon, 17 Jun 2024 19:22:30 -0400 Subject: [PATCH 1/5] Remove Refresh.Analyzers project --- Refresh.Analyzers/ActivityGenerator.cs | 173 -------------- Refresh.Analyzers/Refresh.Analyzers.csproj | 16 -- .../SyntaxReceivers/EnumNameReceiver.cs | 20 -- .../GameDatabaseContext.Activity.cs | 0 .../GameDatabaseContext.ActivityRead.cs | 58 +++++ .../GameDatabaseContext.ActivityWrite.cs | 214 ++++++++++++++++++ Refresh.GameServer/Refresh.GameServer.csproj | 4 - .../Refresh.GameServer.csproj.DotSettings | 2 + Refresh.sln | 8 - 9 files changed, 274 insertions(+), 221 deletions(-) delete mode 100644 Refresh.Analyzers/ActivityGenerator.cs delete mode 100644 Refresh.Analyzers/Refresh.Analyzers.csproj delete mode 100644 Refresh.Analyzers/SyntaxReceivers/EnumNameReceiver.cs rename Refresh.GameServer/Database/{ => Activity}/GameDatabaseContext.Activity.cs (100%) create mode 100644 Refresh.GameServer/Database/Activity/GameDatabaseContext.ActivityRead.cs create mode 100644 Refresh.GameServer/Database/Activity/GameDatabaseContext.ActivityWrite.cs create mode 100644 Refresh.GameServer/Refresh.GameServer.csproj.DotSettings diff --git a/Refresh.Analyzers/ActivityGenerator.cs b/Refresh.Analyzers/ActivityGenerator.cs deleted file mode 100644 index 00a78f7a..00000000 --- a/Refresh.Analyzers/ActivityGenerator.cs +++ /dev/null @@ -1,173 +0,0 @@ -using System.Text; -using JetBrains.Annotations; -using Microsoft.CodeAnalysis; -using Microsoft.CodeAnalysis.Text; -using Refresh.Analyzers.SyntaxReceivers; - -namespace Refresh.Analyzers; - -[Generator] -public class ActivityGenerator : ISourceGenerator -{ - [LanguageInjection("csharp")] - private const string Header = - """ - // - using Refresh.GameServer.Types.Activity; - using Refresh.GameServer.Types.UserData; - using Refresh.GameServer.Types.UserData.Leaderboard; - using Refresh.GameServer.Types.Relations; - using Refresh.GameServer.Types.Levels; - """; - - public void Initialize(GeneratorInitializationContext context) - { - // no initialization code - } - - /// - /// Returns the type indicated by the input. - /// Example: Level_Upload resolves to GameLevel - /// - private static string GetTypeFromName(string input) - { - string typeName = input.Substring(0, input.IndexOf('_')); - - if (typeName != "RateLevelRelation") return "Game" + typeName; - return typeName; - } - - private static (string, string) GetIdFieldFromName(string name) - { - string idField; - string idFieldValue; - - name = name.Replace("Game", ""); - - if (name != "User" && name != "Score" && name != "SubmittedScore" && name != "RateLevelRelation") - { - idField = "StoredSequentialId"; - idFieldValue = idField + ".Value"; - } - else - { - idField = "StoredObjectId"; - idFieldValue = idField; - } - - return (idField, idFieldValue); - } - - private static void GenerateCreateEvents(GeneratorExecutionContext context, IEnumerable names) - { - string code = string.Empty; - foreach (string eventName in names) - { - string type = GetTypeFromName(eventName); - string typeParam = type.ToLower(); - string typeId = type.Replace("Game", "").Replace("Submitted", ""); - - (string idField, string _) = GetIdFieldFromName(type); - - string method = $@" - /// - /// Creates a new {eventName} event from a , and adds it to the event list. - /// - public Event Create{eventName.Replace("_", string.Empty)}Event(GameUser userFrom, {type} {typeParam}) - {{ - Event @event = new(); - @event.EventType = EventType.{eventName}; - @event.StoredDataType = EventDataType.{typeId}; - @event.Timestamp = this._time.TimestampMilliseconds; - @event.User = userFrom; - - @event.{idField} = {typeParam}.{typeId}Id; - - this._realm.Write(() => this._realm.Add(@event)); - return @event; - }} -"; - - code += method; - } - - - string sourceCode = $@"{Header} -namespace Refresh.GameServer.Database; - -public partial class GameDatabaseContext -{{ -{code} -}}"; - - context.AddSource("RealmDatabaseContext.Activity.CreateEvents.g.cs", SourceText.From(sourceCode, Encoding.UTF8)); - } - - private static void GenerateDataGetters(GeneratorExecutionContext context, IEnumerable names) - { - string code = string.Empty; - - foreach (string name in names) - { - string type = "Game" + name; - if (name == "RateLevelRelation") type = name; - - (string idField, string idFieldValue) = GetIdFieldFromName(name); - - string idAccess = name + "Id"; - if (name == "GameSubmittedScore" || type == "GameScore") - { - idAccess = "ScoreId"; - type = "GameSubmittedScore"; - } - - string method = $@" - public {type}? Get{name}FromEvent(Event @event) - {{ - if (@event.StoredDataType != EventDataType.{name}) - throw new InvalidOperationException(""Event does not store the correct data type (expected {name})""); - - if (@event.{idField} == null) - throw new InvalidOperationException(""Event was not created correctly, expected {idField} to not be null""); - - return this._realm.All<{type}>() - .FirstOrDefault(l => l.{idAccess} == @event.{idFieldValue}); - }} -"; - - code += method; - } - - string sourceCode = $@"{Header} -namespace Refresh.GameServer.Database; - -#nullable enable - -public partial class GameDatabaseContext -{{ -{code} -}}"; - - context.AddSource("GameDatabaseContext.Activity.DataGetters.g.cs", SourceText.From(sourceCode, Encoding.UTF8)); - } - - public void Execute(GeneratorExecutionContext context) - { - EnumNameReceiver syntaxReceiver = new(); - - foreach (SyntaxTree tree in context.Compilation.SyntaxTrees) - syntaxReceiver.OnVisitSyntaxNode(tree.GetRoot()); - - - foreach ((string className, List names) in syntaxReceiver.Enums) - switch (className) - { - case "EventType": - GenerateCreateEvents(context, names); - break; - case "EventDataType": - GenerateDataGetters(context, names); - break; - } - } -} \ No newline at end of file diff --git a/Refresh.Analyzers/Refresh.Analyzers.csproj b/Refresh.Analyzers/Refresh.Analyzers.csproj deleted file mode 100644 index eb2131fb..00000000 --- a/Refresh.Analyzers/Refresh.Analyzers.csproj +++ /dev/null @@ -1,16 +0,0 @@ - - - - netstandard2.1 - enable - enable - 11 - true - - - - - - - - diff --git a/Refresh.Analyzers/SyntaxReceivers/EnumNameReceiver.cs b/Refresh.Analyzers/SyntaxReceivers/EnumNameReceiver.cs deleted file mode 100644 index 23916808..00000000 --- a/Refresh.Analyzers/SyntaxReceivers/EnumNameReceiver.cs +++ /dev/null @@ -1,20 +0,0 @@ -using Microsoft.CodeAnalysis; -using Microsoft.CodeAnalysis.CSharp.Syntax; - -namespace Refresh.Analyzers.SyntaxReceivers; - -public class EnumNameReceiver : ISyntaxReceiver -{ - public Dictionary> Enums { get; } = new(); - - public void OnVisitSyntaxNode(SyntaxNode syntaxNode) - { - foreach (EnumDeclarationSyntax declaration in syntaxNode.DescendantNodes().OfType()) - { - string className = declaration.Identifier.Value!.ToString(); - List enumMembers = declaration.Members.Select(m => m.Identifier.ValueText).ToList(); - - this.Enums.TryAdd(className, enumMembers); - } - } -} \ No newline at end of file diff --git a/Refresh.GameServer/Database/GameDatabaseContext.Activity.cs b/Refresh.GameServer/Database/Activity/GameDatabaseContext.Activity.cs similarity index 100% rename from Refresh.GameServer/Database/GameDatabaseContext.Activity.cs rename to Refresh.GameServer/Database/Activity/GameDatabaseContext.Activity.cs diff --git a/Refresh.GameServer/Database/Activity/GameDatabaseContext.ActivityRead.cs b/Refresh.GameServer/Database/Activity/GameDatabaseContext.ActivityRead.cs new file mode 100644 index 00000000..80ede1fc --- /dev/null +++ b/Refresh.GameServer/Database/Activity/GameDatabaseContext.ActivityRead.cs @@ -0,0 +1,58 @@ +using Refresh.GameServer.Types.Activity; +using Refresh.GameServer.Types.Levels; +using Refresh.GameServer.Types.Relations; +using Refresh.GameServer.Types.UserData; +using Refresh.GameServer.Types.UserData.Leaderboard; + +namespace Refresh.GameServer.Database; + +public partial class GameDatabaseContext // ActivityRead +{ + public GameUser? GetUserFromEvent(Event @event) + { + if (@event.StoredDataType != EventDataType.User) + throw new InvalidOperationException($"Event does not store the correct data type (expected {nameof(EventDataType.User)})"); + + if (@event.StoredObjectId == null) + throw new InvalidOperationException("Event was not created correctly, expected StoredObjectId to not be null"); + + return this._realm.All() + .FirstOrDefault(l => l.UserId == @event.StoredObjectId); + } + + public GameLevel? GetLevelFromEvent(Event @event) + { + if (@event.StoredDataType != EventDataType.Level) + throw new InvalidOperationException($"Event does not store the correct data type (expected {nameof(EventDataType.Level)})"); + + if (@event.StoredSequentialId == null) + throw new InvalidOperationException("Event was not created correctly, expected StoredSequentialId to not be null"); + + return this._realm.All() + .FirstOrDefault(l => l.LevelId == @event.StoredSequentialId.Value); + } + + public GameSubmittedScore? GetScoreFromEvent(Event @event) + { + if (@event.StoredDataType != EventDataType.Score) + throw new InvalidOperationException($"Event does not store the correct data type (expected {nameof(EventDataType.Score)})"); + + if (@event.StoredObjectId == null) + throw new InvalidOperationException("Event was not created correctly, expected StoredObjectId to not be null"); + + return this._realm.All() + .FirstOrDefault(l => l.ScoreId == @event.StoredObjectId); + } + + public RateLevelRelation? GetRateLevelRelationFromEvent(Event @event) + { + if (@event.StoredDataType != EventDataType.RateLevelRelation) + throw new InvalidOperationException($"Event does not store the correct data type (expected {nameof(EventDataType.RateLevelRelation)})"); + + if (@event.StoredObjectId == null) + throw new InvalidOperationException("Event was not created correctly, expected StoredObjectId to not be null"); + + return this._realm.All() + .FirstOrDefault(l => l.RateLevelRelationId == @event.StoredObjectId); + } +} \ No newline at end of file diff --git a/Refresh.GameServer/Database/Activity/GameDatabaseContext.ActivityWrite.cs b/Refresh.GameServer/Database/Activity/GameDatabaseContext.ActivityWrite.cs new file mode 100644 index 00000000..7e07d965 --- /dev/null +++ b/Refresh.GameServer/Database/Activity/GameDatabaseContext.ActivityWrite.cs @@ -0,0 +1,214 @@ +using Refresh.GameServer.Types.Activity; +using Refresh.GameServer.Types.Levels; +using Refresh.GameServer.Types.Relations; +using Refresh.GameServer.Types.UserData; +using Refresh.GameServer.Types.UserData.Leaderboard; + +namespace Refresh.GameServer.Database; + +public partial class GameDatabaseContext // ActivityWrite +{ + /// + /// Creates a new Level_Upload event from a , and adds it to the event list. + /// + public Event CreateLevelUploadEvent(GameUser userFrom, GameLevel gamelevel) + { + Event @event = new(); + @event.EventType = EventType.Level_Upload; + @event.StoredDataType = EventDataType.Level; + @event.Timestamp = this._time.TimestampMilliseconds; + @event.User = userFrom; + + @event.StoredSequentialId = gamelevel.LevelId; + + this._realm.Write(() => this._realm.Add(@event)); + return @event; + } + + /// + /// Creates a new Level_Favourite event from a , and adds it to the event list. + /// + public Event CreateLevelFavouriteEvent(GameUser userFrom, GameLevel gamelevel) + { + Event @event = new(); + @event.EventType = EventType.Level_Favourite; + @event.StoredDataType = EventDataType.Level; + @event.Timestamp = this._time.TimestampMilliseconds; + @event.User = userFrom; + + @event.StoredSequentialId = gamelevel.LevelId; + + this._realm.Write(() => this._realm.Add(@event)); + return @event; + } + + /// + /// Creates a new Level_Unfavourite event from a , and adds it to the event list. + /// + public Event CreateLevelUnfavouriteEvent(GameUser userFrom, GameLevel gamelevel) + { + Event @event = new(); + @event.EventType = EventType.Level_Unfavourite; + @event.StoredDataType = EventDataType.Level; + @event.Timestamp = this._time.TimestampMilliseconds; + @event.User = userFrom; + + @event.StoredSequentialId = gamelevel.LevelId; + + this._realm.Write(() => this._realm.Add(@event)); + return @event; + } + + /// + /// Creates a new User_Favourite event from a , and adds it to the event list. + /// + public Event CreateUserFavouriteEvent(GameUser userFrom, GameUser gameuser) + { + Event @event = new(); + @event.EventType = EventType.User_Favourite; + @event.StoredDataType = EventDataType.User; + @event.Timestamp = this._time.TimestampMilliseconds; + @event.User = userFrom; + + @event.StoredObjectId = gameuser.UserId; + + this._realm.Write(() => this._realm.Add(@event)); + return @event; + } + + /// + /// Creates a new User_Unfavourite event from a , and adds it to the event list. + /// + public Event CreateUserUnfavouriteEvent(GameUser userFrom, GameUser gameuser) + { + Event @event = new(); + @event.EventType = EventType.User_Unfavourite; + @event.StoredDataType = EventDataType.User; + @event.Timestamp = this._time.TimestampMilliseconds; + @event.User = userFrom; + + @event.StoredObjectId = gameuser.UserId; + + this._realm.Write(() => this._realm.Add(@event)); + return @event; + } + + /// + /// Creates a new Level_Play event from a , and adds it to the event list. + /// + public Event CreateLevelPlayEvent(GameUser userFrom, GameLevel gamelevel) + { + Event @event = new(); + @event.EventType = EventType.Level_Play; + @event.StoredDataType = EventDataType.Level; + @event.Timestamp = this._time.TimestampMilliseconds; + @event.User = userFrom; + + @event.StoredSequentialId = gamelevel.LevelId; + + this._realm.Write(() => this._realm.Add(@event)); + return @event; + } + + /// + /// Creates a new Level_Tag event from a , and adds it to the event list. + /// + public Event CreateLevelTagEvent(GameUser userFrom, GameLevel gamelevel) + { + Event @event = new(); + @event.EventType = EventType.Level_Tag; + @event.StoredDataType = EventDataType.Level; + @event.Timestamp = this._time.TimestampMilliseconds; + @event.User = userFrom; + + @event.StoredSequentialId = gamelevel.LevelId; + + this._realm.Write(() => this._realm.Add(@event)); + return @event; + } + + /// + /// Creates a new Level_TeamPick event from a , and adds it to the event list. + /// + public Event CreateLevelTeamPickEvent(GameUser userFrom, GameLevel gamelevel) + { + Event @event = new(); + @event.EventType = EventType.Level_TeamPick; + @event.StoredDataType = EventDataType.Level; + @event.Timestamp = this._time.TimestampMilliseconds; + @event.User = userFrom; + + @event.StoredSequentialId = gamelevel.LevelId; + + this._realm.Write(() => this._realm.Add(@event)); + return @event; + } + + /// + /// Creates a new RateLevelRelation_Create event from a , and adds it to the event list. + /// + public Event CreateRateLevelRelationCreateEvent(GameUser userFrom, RateLevelRelation ratelevelrelation) + { + Event @event = new(); + @event.EventType = EventType.RateLevelRelation_Create; + @event.StoredDataType = EventDataType.RateLevelRelation; + @event.Timestamp = this._time.TimestampMilliseconds; + @event.User = userFrom; + + @event.StoredObjectId = ratelevelrelation.RateLevelRelationId; + + this._realm.Write(() => this._realm.Add(@event)); + return @event; + } + + /// + /// Creates a new Level_Review event from a , and adds it to the event list. + /// + public Event CreateLevelReviewEvent(GameUser userFrom, GameLevel gamelevel) + { + Event @event = new(); + @event.EventType = EventType.Level_Review; + @event.StoredDataType = EventDataType.Level; + @event.Timestamp = this._time.TimestampMilliseconds; + @event.User = userFrom; + + @event.StoredSequentialId = gamelevel.LevelId; + + this._realm.Write(() => this._realm.Add(@event)); + return @event; + } + + /// + /// Creates a new SubmittedScore_Create event from a , and adds it to the event list. + /// + public Event CreateSubmittedScoreCreateEvent(GameUser userFrom, GameSubmittedScore gamesubmittedscore) + { + Event @event = new(); + @event.EventType = EventType.SubmittedScore_Create; + @event.StoredDataType = EventDataType.Score; + @event.Timestamp = this._time.TimestampMilliseconds; + @event.User = userFrom; + + @event.StoredObjectId = gamesubmittedscore.ScoreId; + + this._realm.Write(() => this._realm.Add(@event)); + return @event; + } + + /// + /// Creates a new User_FirstLogin event from a , and adds it to the event list. + /// + public Event CreateUserFirstLoginEvent(GameUser userFrom, GameUser gameuser) + { + Event @event = new(); + @event.EventType = EventType.User_FirstLogin; + @event.StoredDataType = EventDataType.User; + @event.Timestamp = this._time.TimestampMilliseconds; + @event.User = userFrom; + + @event.StoredObjectId = gameuser.UserId; + + this._realm.Write(() => this._realm.Add(@event)); + return @event; + } +} \ No newline at end of file diff --git a/Refresh.GameServer/Refresh.GameServer.csproj b/Refresh.GameServer/Refresh.GameServer.csproj index 96b1f3b3..eb0d5d3a 100644 --- a/Refresh.GameServer/Refresh.GameServer.csproj +++ b/Refresh.GameServer/Refresh.GameServer.csproj @@ -78,10 +78,6 @@ - - false - Analyzer - diff --git a/Refresh.GameServer/Refresh.GameServer.csproj.DotSettings b/Refresh.GameServer/Refresh.GameServer.csproj.DotSettings new file mode 100644 index 00000000..84fed0cc --- /dev/null +++ b/Refresh.GameServer/Refresh.GameServer.csproj.DotSettings @@ -0,0 +1,2 @@ + + True \ No newline at end of file diff --git a/Refresh.sln b/Refresh.sln index a834dfa7..9fec4eec 100644 --- a/Refresh.sln +++ b/Refresh.sln @@ -5,8 +5,6 @@ VisualStudioVersion = 17.0.31903.59 MinimumVisualStudioVersion = 10.0.40219.1 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Refresh.GameServer", "Refresh.GameServer\Refresh.GameServer.csproj", "{622EB919-5FD2-45FE-B006-4EE5C7849FDF}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Refresh.Analyzers", "Refresh.Analyzers\Refresh.Analyzers.csproj", "{4717B220-62C1-4CF9-9734-D9975C462159}" -EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "RefreshTests.GameServer", "RefreshTests.GameServer\RefreshTests.GameServer.csproj", "{8DC15128-D9C9-498B-AD3B-537C50966C91}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Refresh.Common", "Refresh.Common\Refresh.Common.csproj", "{A3D76B31-8732-4134-907B-F36773DF70D3}" @@ -27,12 +25,6 @@ Global {622EB919-5FD2-45FE-B006-4EE5C7849FDF}.DebugLocalBunkum|Any CPU.Build.0 = DebugLocalBunkum|Any CPU {622EB919-5FD2-45FE-B006-4EE5C7849FDF}.Debug|Any CPU.Build.0 = Debug|Any CPU {622EB919-5FD2-45FE-B006-4EE5C7849FDF}.Release|Any CPU.Build.0 = Release|Any CPU - {4717B220-62C1-4CF9-9734-D9975C462159}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {4717B220-62C1-4CF9-9734-D9975C462159}.Debug|Any CPU.Build.0 = Debug|Any CPU - {4717B220-62C1-4CF9-9734-D9975C462159}.Release|Any CPU.ActiveCfg = Release|Any CPU - {4717B220-62C1-4CF9-9734-D9975C462159}.Release|Any CPU.Build.0 = Release|Any CPU - {4717B220-62C1-4CF9-9734-D9975C462159}.DebugLocalBunkum|Any CPU.ActiveCfg = Debug|Any CPU - {4717B220-62C1-4CF9-9734-D9975C462159}.DebugLocalBunkum|Any CPU.Build.0 = Debug|Any CPU {8DC15128-D9C9-498B-AD3B-537C50966C91}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {8DC15128-D9C9-498B-AD3B-537C50966C91}.Debug|Any CPU.Build.0 = Debug|Any CPU {8DC15128-D9C9-498B-AD3B-537C50966C91}.Release|Any CPU.ActiveCfg = Release|Any CPU From aad59d10cf63087c3c641fbec2b0d835042ebbff Mon Sep 17 00:00:00 2001 From: jvyden Date: Mon, 17 Jun 2024 19:24:26 -0400 Subject: [PATCH 2/5] Cleanup ActivityRead --- .../GameDatabaseContext.ActivityRead.cs | 42 ++++++++----------- 1 file changed, 18 insertions(+), 24 deletions(-) diff --git a/Refresh.GameServer/Database/Activity/GameDatabaseContext.ActivityRead.cs b/Refresh.GameServer/Database/Activity/GameDatabaseContext.ActivityRead.cs index 80ede1fc..a961a3f3 100644 --- a/Refresh.GameServer/Database/Activity/GameDatabaseContext.ActivityRead.cs +++ b/Refresh.GameServer/Database/Activity/GameDatabaseContext.ActivityRead.cs @@ -1,3 +1,4 @@ +using System.Diagnostics; using Refresh.GameServer.Types.Activity; using Refresh.GameServer.Types.Levels; using Refresh.GameServer.Types.Relations; @@ -8,51 +9,44 @@ namespace Refresh.GameServer.Database; public partial class GameDatabaseContext // ActivityRead { - public GameUser? GetUserFromEvent(Event @event) + public GameUser? GetUserFromEvent(Event e) { - if (@event.StoredDataType != EventDataType.User) + if (e.StoredDataType != EventDataType.User) throw new InvalidOperationException($"Event does not store the correct data type (expected {nameof(EventDataType.User)})"); - if (@event.StoredObjectId == null) - throw new InvalidOperationException("Event was not created correctly, expected StoredObjectId to not be null"); + Debug.Assert(e.StoredObjectId != null); - return this._realm.All() - .FirstOrDefault(l => l.UserId == @event.StoredObjectId); + return this.GetUserByObjectId(e.StoredObjectId); } - public GameLevel? GetLevelFromEvent(Event @event) + public GameLevel? GetLevelFromEvent(Event e) { - if (@event.StoredDataType != EventDataType.Level) + if (e.StoredDataType != EventDataType.Level) throw new InvalidOperationException($"Event does not store the correct data type (expected {nameof(EventDataType.Level)})"); - if (@event.StoredSequentialId == null) - throw new InvalidOperationException("Event was not created correctly, expected StoredSequentialId to not be null"); - - return this._realm.All() - .FirstOrDefault(l => l.LevelId == @event.StoredSequentialId.Value); + Debug.Assert(e.StoredSequentialId != null); + + return this.GetLevelById(e.StoredSequentialId.Value); } - public GameSubmittedScore? GetScoreFromEvent(Event @event) + public GameSubmittedScore? GetScoreFromEvent(Event e) { - if (@event.StoredDataType != EventDataType.Score) + if (e.StoredDataType != EventDataType.Score) throw new InvalidOperationException($"Event does not store the correct data type (expected {nameof(EventDataType.Score)})"); - if (@event.StoredObjectId == null) - throw new InvalidOperationException("Event was not created correctly, expected StoredObjectId to not be null"); + Debug.Assert(e.StoredObjectId != null); - return this._realm.All() - .FirstOrDefault(l => l.ScoreId == @event.StoredObjectId); + return this.GetScoreByObjectId(e.StoredObjectId); } - public RateLevelRelation? GetRateLevelRelationFromEvent(Event @event) + public RateLevelRelation? GetRateLevelRelationFromEvent(Event e) { - if (@event.StoredDataType != EventDataType.RateLevelRelation) + if (e.StoredDataType != EventDataType.RateLevelRelation) throw new InvalidOperationException($"Event does not store the correct data type (expected {nameof(EventDataType.RateLevelRelation)})"); - if (@event.StoredObjectId == null) - throw new InvalidOperationException("Event was not created correctly, expected StoredObjectId to not be null"); + Debug.Assert(e.StoredObjectId != null); return this._realm.All() - .FirstOrDefault(l => l.RateLevelRelationId == @event.StoredObjectId); + .FirstOrDefault(l => l.RateLevelRelationId == e.StoredObjectId); } } \ No newline at end of file From 3065a475b08aeda53ca3a5460d51e599139208af Mon Sep 17 00:00:00 2001 From: jvyden Date: Mon, 17 Jun 2024 19:30:27 -0400 Subject: [PATCH 3/5] Refactor some events' naming, cleanup ActivityWrite --- .../GameDatabaseContext.ActivityWrite.cs | 282 +++++++++--------- .../GameDatabaseContext.Leaderboard.cs | 2 +- .../Types/Activity/ActivityPage.cs | 2 +- .../Types/Activity/EventType.cs | 6 +- .../Workers/DiscordIntegrationWorker.cs | 4 +- 5 files changed, 154 insertions(+), 142 deletions(-) diff --git a/Refresh.GameServer/Database/Activity/GameDatabaseContext.ActivityWrite.cs b/Refresh.GameServer/Database/Activity/GameDatabaseContext.ActivityWrite.cs index 7e07d965..62d2e9e4 100644 --- a/Refresh.GameServer/Database/Activity/GameDatabaseContext.ActivityWrite.cs +++ b/Refresh.GameServer/Database/Activity/GameDatabaseContext.ActivityWrite.cs @@ -8,207 +8,219 @@ namespace Refresh.GameServer.Database; public partial class GameDatabaseContext // ActivityWrite { - /// + /// /// Creates a new Level_Upload event from a , and adds it to the event list. /// - public Event CreateLevelUploadEvent(GameUser userFrom, GameLevel gamelevel) + public Event CreateLevelUploadEvent(GameUser userFrom, GameLevel level) { - Event @event = new(); - @event.EventType = EventType.Level_Upload; - @event.StoredDataType = EventDataType.Level; - @event.Timestamp = this._time.TimestampMilliseconds; - @event.User = userFrom; - - @event.StoredSequentialId = gamelevel.LevelId; - - this._realm.Write(() => this._realm.Add(@event)); - return @event; + Event e = new() + { + EventType = EventType.Level_Upload, + StoredDataType = EventDataType.Level, + Timestamp = this._time.TimestampMilliseconds, + User = userFrom, + StoredSequentialId = level.LevelId, + }; + + this._realm.Write(() => this._realm.Add(e)); + return e; } /// /// Creates a new Level_Favourite event from a , and adds it to the event list. /// - public Event CreateLevelFavouriteEvent(GameUser userFrom, GameLevel gamelevel) + public Event CreateLevelFavouriteEvent(GameUser userFrom, GameLevel level) { - Event @event = new(); - @event.EventType = EventType.Level_Favourite; - @event.StoredDataType = EventDataType.Level; - @event.Timestamp = this._time.TimestampMilliseconds; - @event.User = userFrom; - - @event.StoredSequentialId = gamelevel.LevelId; - - this._realm.Write(() => this._realm.Add(@event)); - return @event; + Event e = new() + { + EventType = EventType.Level_Favourite, + StoredDataType = EventDataType.Level, + Timestamp = this._time.TimestampMilliseconds, + User = userFrom, + StoredSequentialId = level.LevelId, + }; + + this._realm.Write(() => this._realm.Add(e)); + return e; } /// /// Creates a new Level_Unfavourite event from a , and adds it to the event list. /// - public Event CreateLevelUnfavouriteEvent(GameUser userFrom, GameLevel gamelevel) + public Event CreateLevelUnfavouriteEvent(GameUser userFrom, GameLevel level) { - Event @event = new(); - @event.EventType = EventType.Level_Unfavourite; - @event.StoredDataType = EventDataType.Level; - @event.Timestamp = this._time.TimestampMilliseconds; - @event.User = userFrom; - - @event.StoredSequentialId = gamelevel.LevelId; - - this._realm.Write(() => this._realm.Add(@event)); - return @event; + Event e = new() + { + EventType = EventType.Level_Unfavourite, + StoredDataType = EventDataType.Level, + Timestamp = this._time.TimestampMilliseconds, + User = userFrom, + StoredSequentialId = level.LevelId, + }; + + this._realm.Write(() => this._realm.Add(e)); + return e; } /// /// Creates a new User_Favourite event from a , and adds it to the event list. /// - public Event CreateUserFavouriteEvent(GameUser userFrom, GameUser gameuser) + public Event CreateUserFavouriteEvent(GameUser userFrom, GameUser user) { - Event @event = new(); - @event.EventType = EventType.User_Favourite; - @event.StoredDataType = EventDataType.User; - @event.Timestamp = this._time.TimestampMilliseconds; - @event.User = userFrom; - - @event.StoredObjectId = gameuser.UserId; - - this._realm.Write(() => this._realm.Add(@event)); - return @event; + Event e = new() + { + EventType = EventType.User_Favourite, + StoredDataType = EventDataType.User, + Timestamp = this._time.TimestampMilliseconds, + User = userFrom, + StoredObjectId = user.UserId, + }; + + this._realm.Write(() => this._realm.Add(e)); + return e; } /// /// Creates a new User_Unfavourite event from a , and adds it to the event list. /// - public Event CreateUserUnfavouriteEvent(GameUser userFrom, GameUser gameuser) + public Event CreateUserUnfavouriteEvent(GameUser userFrom, GameUser user) { - Event @event = new(); - @event.EventType = EventType.User_Unfavourite; - @event.StoredDataType = EventDataType.User; - @event.Timestamp = this._time.TimestampMilliseconds; - @event.User = userFrom; - - @event.StoredObjectId = gameuser.UserId; - - this._realm.Write(() => this._realm.Add(@event)); - return @event; + Event e = new() + { + EventType = EventType.User_Unfavourite, + StoredDataType = EventDataType.User, + Timestamp = this._time.TimestampMilliseconds, + User = userFrom, + StoredObjectId = user.UserId, + }; + + this._realm.Write(() => this._realm.Add(e)); + return e; } /// /// Creates a new Level_Play event from a , and adds it to the event list. /// - public Event CreateLevelPlayEvent(GameUser userFrom, GameLevel gamelevel) + public Event CreateLevelPlayEvent(GameUser userFrom, GameLevel level) { - Event @event = new(); - @event.EventType = EventType.Level_Play; - @event.StoredDataType = EventDataType.Level; - @event.Timestamp = this._time.TimestampMilliseconds; - @event.User = userFrom; - - @event.StoredSequentialId = gamelevel.LevelId; - - this._realm.Write(() => this._realm.Add(@event)); - return @event; + Event e = new() + { + EventType = EventType.Level_Play, + StoredDataType = EventDataType.Level, + Timestamp = this._time.TimestampMilliseconds, + User = userFrom, + StoredSequentialId = level.LevelId, + }; + + this._realm.Write(() => this._realm.Add(e)); + return e; } /// /// Creates a new Level_Tag event from a , and adds it to the event list. /// - public Event CreateLevelTagEvent(GameUser userFrom, GameLevel gamelevel) + public Event CreateLevelTagEvent(GameUser userFrom, GameLevel level) { - Event @event = new(); - @event.EventType = EventType.Level_Tag; - @event.StoredDataType = EventDataType.Level; - @event.Timestamp = this._time.TimestampMilliseconds; - @event.User = userFrom; - - @event.StoredSequentialId = gamelevel.LevelId; - - this._realm.Write(() => this._realm.Add(@event)); - return @event; + Event e = new() + { + EventType = EventType.Level_Tag, + StoredDataType = EventDataType.Level, + Timestamp = this._time.TimestampMilliseconds, + User = userFrom, + StoredSequentialId = level.LevelId, + }; + + this._realm.Write(() => this._realm.Add(e)); + return e; } /// /// Creates a new Level_TeamPick event from a , and adds it to the event list. /// - public Event CreateLevelTeamPickEvent(GameUser userFrom, GameLevel gamelevel) + public Event CreateLevelTeamPickEvent(GameUser userFrom, GameLevel level) { - Event @event = new(); - @event.EventType = EventType.Level_TeamPick; - @event.StoredDataType = EventDataType.Level; - @event.Timestamp = this._time.TimestampMilliseconds; - @event.User = userFrom; - - @event.StoredSequentialId = gamelevel.LevelId; - - this._realm.Write(() => this._realm.Add(@event)); - return @event; + Event e = new() + { + EventType = EventType.Level_TeamPick, + StoredDataType = EventDataType.Level, + Timestamp = this._time.TimestampMilliseconds, + User = userFrom, + StoredSequentialId = level.LevelId, + }; + + this._realm.Write(() => this._realm.Add(e)); + return e; } /// - /// Creates a new RateLevelRelation_Create event from a , and adds it to the event list. + /// Creates a new Level_Rate event from a , and adds it to the event list. /// - public Event CreateRateLevelRelationCreateEvent(GameUser userFrom, RateLevelRelation ratelevelrelation) + public Event CreateRateLevelEvent(GameUser userFrom, RateLevelRelation relation) { - Event @event = new(); - @event.EventType = EventType.RateLevelRelation_Create; - @event.StoredDataType = EventDataType.RateLevelRelation; - @event.Timestamp = this._time.TimestampMilliseconds; - @event.User = userFrom; - - @event.StoredObjectId = ratelevelrelation.RateLevelRelationId; - - this._realm.Write(() => this._realm.Add(@event)); - return @event; + Event e = new() + { + EventType = EventType.Level_Rate, + StoredDataType = EventDataType.RateLevelRelation, + Timestamp = this._time.TimestampMilliseconds, + User = userFrom, + StoredObjectId = relation.RateLevelRelationId, + }; + + this._realm.Write(() => this._realm.Add(e)); + return e; } /// /// Creates a new Level_Review event from a , and adds it to the event list. /// - public Event CreateLevelReviewEvent(GameUser userFrom, GameLevel gamelevel) + public Event CreateLevelReviewEvent(GameUser userFrom, GameLevel level) { - Event @event = new(); - @event.EventType = EventType.Level_Review; - @event.StoredDataType = EventDataType.Level; - @event.Timestamp = this._time.TimestampMilliseconds; - @event.User = userFrom; - - @event.StoredSequentialId = gamelevel.LevelId; - - this._realm.Write(() => this._realm.Add(@event)); - return @event; + Event e = new() + { + EventType = EventType.Level_Review, + StoredDataType = EventDataType.Level, + Timestamp = this._time.TimestampMilliseconds, + User = userFrom, + StoredSequentialId = level.LevelId, + }; + + this._realm.Write(() => this._realm.Add(e)); + return e; } /// - /// Creates a new SubmittedScore_Create event from a , and adds it to the event list. + /// Creates a new Level_Score event from a , and adds it to the event list. /// - public Event CreateSubmittedScoreCreateEvent(GameUser userFrom, GameSubmittedScore gamesubmittedscore) + public Event CreateLevelScoreEvent(GameUser userFrom, GameSubmittedScore score) { - Event @event = new(); - @event.EventType = EventType.SubmittedScore_Create; - @event.StoredDataType = EventDataType.Score; - @event.Timestamp = this._time.TimestampMilliseconds; - @event.User = userFrom; - - @event.StoredObjectId = gamesubmittedscore.ScoreId; - - this._realm.Write(() => this._realm.Add(@event)); - return @event; + Event e = new() + { + EventType = EventType.Level_Score, + StoredDataType = EventDataType.Score, + Timestamp = this._time.TimestampMilliseconds, + User = userFrom, + StoredObjectId = score.ScoreId, + }; + + this._realm.Write(() => this._realm.Add(e)); + return e; } /// /// Creates a new User_FirstLogin event from a , and adds it to the event list. /// - public Event CreateUserFirstLoginEvent(GameUser userFrom, GameUser gameuser) + public Event CreateUserFirstLoginEvent(GameUser userFrom, GameUser user) { - Event @event = new(); - @event.EventType = EventType.User_FirstLogin; - @event.StoredDataType = EventDataType.User; - @event.Timestamp = this._time.TimestampMilliseconds; - @event.User = userFrom; - - @event.StoredObjectId = gameuser.UserId; - - this._realm.Write(() => this._realm.Add(@event)); - return @event; + Event e = new() + { + EventType = EventType.User_FirstLogin, + StoredDataType = EventDataType.User, + Timestamp = this._time.TimestampMilliseconds, + User = userFrom, + StoredObjectId = user.UserId, + }; + + this._realm.Write(() => this._realm.Add(e)); + return e; } } \ No newline at end of file diff --git a/Refresh.GameServer/Database/GameDatabaseContext.Leaderboard.cs b/Refresh.GameServer/Database/GameDatabaseContext.Leaderboard.cs index 702eb125..37a947fa 100644 --- a/Refresh.GameServer/Database/GameDatabaseContext.Leaderboard.cs +++ b/Refresh.GameServer/Database/GameDatabaseContext.Leaderboard.cs @@ -31,7 +31,7 @@ public GameSubmittedScore SubmitScore(SerializedScore score, GameUser user, Game this._realm.Add(newScore); }); - this.CreateSubmittedScoreCreateEvent(user, newScore); + this.CreateLevelScoreEvent(user, newScore); #region Notifications diff --git a/Refresh.GameServer/Types/Activity/ActivityPage.cs b/Refresh.GameServer/Types/Activity/ActivityPage.cs index ac2b85fd..251fe95b 100644 --- a/Refresh.GameServer/Types/Activity/ActivityPage.cs +++ b/Refresh.GameServer/Types/Activity/ActivityPage.cs @@ -259,7 +259,7 @@ private void GenerateLevelGroups(ActivityGroups groups) private void GenerateScoreGroups(ActivityGroups groups, IReadOnlyCollection scores) { - foreach (Event @event in this.Events.Where(e => e.EventType == EventType.SubmittedScore_Create)) + foreach (Event @event in this.Events.Where(e => e.EventType == EventType.Level_Score)) { GameSubmittedScore score = scores.First(u => u.ScoreId == @event.StoredObjectId); diff --git a/Refresh.GameServer/Types/Activity/EventType.cs b/Refresh.GameServer/Types/Activity/EventType.cs index f755b3a1..22dcf7b2 100644 --- a/Refresh.GameServer/Types/Activity/EventType.cs +++ b/Refresh.GameServer/Types/Activity/EventType.cs @@ -6,7 +6,7 @@ namespace Refresh.GameServer.Types.Activity; [JsonConverter(typeof(StringEnumConverter))] [SuppressMessage("ReSharper", "InconsistentNaming")] -public enum EventType +public enum EventType : byte { [XmlEnum("publish_level")] Level_Upload = 0, @@ -37,7 +37,7 @@ public enum EventType [XmlEnum("mm_pick_level")] Level_TeamPick = 13, [XmlEnum("dpad_rate_level")] - RateLevelRelation_Create = 14, + Level_Rate = 14, [XmlEnum("review_level")] Level_Review = 15, // [XmlEnum("comment_on_user")] @@ -49,7 +49,7 @@ public enum EventType // [XmlEnum("add_level_to_playlist")] // Playlist_AddLevel = 19, [XmlEnum("score")] - SubmittedScore_Create = 20, // FIXME: this name is shit + Level_Score = 20, // Custom events [XmlEnum("firstlogin")] diff --git a/Refresh.GameServer/Workers/DiscordIntegrationWorker.cs b/Refresh.GameServer/Workers/DiscordIntegrationWorker.cs index b788785c..527b5280 100644 --- a/Refresh.GameServer/Workers/DiscordIntegrationWorker.cs +++ b/Refresh.GameServer/Workers/DiscordIntegrationWorker.cs @@ -68,9 +68,9 @@ private string GetAssetUrl(string hash) EventType.Level_Play => null, EventType.Level_Tag => null, EventType.Level_TeamPick => $"team picked {levelLink}", - EventType.RateLevelRelation_Create => null, + EventType.Level_Rate => null, EventType.Level_Review => null, - EventType.SubmittedScore_Create => $"got {score!.Score:N0} points on {levelLink}", + EventType.Level_Score => $"got {score!.Score:N0} points on {levelLink}", EventType.User_FirstLogin => "logged in for the first time", _ => null, }; From 51d0f926d7849a1960929c685d9c6b1cbce67388 Mon Sep 17 00:00:00 2001 From: jvyden Date: Mon, 17 Jun 2024 19:37:08 -0400 Subject: [PATCH 4/5] Fix cursed naming of EventType enum --- .../Activity/GameDatabaseContext.Activity.cs | 4 +- .../GameDatabaseContext.ActivityWrite.cs | 48 +++++++++---------- .../Types/Activity/ActivityPage.cs | 6 +-- .../Types/Activity/EventType.cs | 38 +++++++-------- .../Workers/DiscordIntegrationWorker.cs | 24 +++++----- 5 files changed, 59 insertions(+), 61 deletions(-) diff --git a/Refresh.GameServer/Database/Activity/GameDatabaseContext.Activity.cs b/Refresh.GameServer/Database/Activity/GameDatabaseContext.Activity.cs index c407295e..7029c507 100644 --- a/Refresh.GameServer/Database/Activity/GameDatabaseContext.Activity.cs +++ b/Refresh.GameServer/Database/Activity/GameDatabaseContext.Activity.cs @@ -28,8 +28,8 @@ public DatabaseList GetUserRecentActivity(ActivityQueryParameters paramet userFriends.Contains(e.User.UserId) || userFriends.Contains(e.StoredObjectId) || this.GetLevelById(e.StoredSequentialId ?? int.MaxValue)?.Publisher?.UserId == parameters.User.UserId || - e.EventType == EventType.Level_TeamPick || - e.EventType == EventType.User_FirstLogin + e.EventType == EventType.LevelTeamPick || + e.EventType == EventType.UserFirstLogin ); } diff --git a/Refresh.GameServer/Database/Activity/GameDatabaseContext.ActivityWrite.cs b/Refresh.GameServer/Database/Activity/GameDatabaseContext.ActivityWrite.cs index 62d2e9e4..6129eb2f 100644 --- a/Refresh.GameServer/Database/Activity/GameDatabaseContext.ActivityWrite.cs +++ b/Refresh.GameServer/Database/Activity/GameDatabaseContext.ActivityWrite.cs @@ -9,13 +9,13 @@ namespace Refresh.GameServer.Database; public partial class GameDatabaseContext // ActivityWrite { /// - /// Creates a new Level_Upload event from a , and adds it to the event list. + /// Creates a new LevelUpload event from a , and adds it to the event list. /// public Event CreateLevelUploadEvent(GameUser userFrom, GameLevel level) { Event e = new() { - EventType = EventType.Level_Upload, + EventType = EventType.LevelUpload, StoredDataType = EventDataType.Level, Timestamp = this._time.TimestampMilliseconds, User = userFrom, @@ -27,13 +27,13 @@ public Event CreateLevelUploadEvent(GameUser userFrom, GameLevel level) } /// - /// Creates a new Level_Favourite event from a , and adds it to the event list. + /// Creates a new LevelFavourite event from a , and adds it to the event list. /// public Event CreateLevelFavouriteEvent(GameUser userFrom, GameLevel level) { Event e = new() { - EventType = EventType.Level_Favourite, + EventType = EventType.LevelFavourite, StoredDataType = EventDataType.Level, Timestamp = this._time.TimestampMilliseconds, User = userFrom, @@ -45,13 +45,13 @@ public Event CreateLevelFavouriteEvent(GameUser userFrom, GameLevel level) } /// - /// Creates a new Level_Unfavourite event from a , and adds it to the event list. + /// Creates a new LevelUnfavourite event from a , and adds it to the event list. /// public Event CreateLevelUnfavouriteEvent(GameUser userFrom, GameLevel level) { Event e = new() { - EventType = EventType.Level_Unfavourite, + EventType = EventType.LevelUnfavourite, StoredDataType = EventDataType.Level, Timestamp = this._time.TimestampMilliseconds, User = userFrom, @@ -63,13 +63,13 @@ public Event CreateLevelUnfavouriteEvent(GameUser userFrom, GameLevel level) } /// - /// Creates a new User_Favourite event from a , and adds it to the event list. + /// Creates a new UserFavourite event from a , and adds it to the event list. /// public Event CreateUserFavouriteEvent(GameUser userFrom, GameUser user) { Event e = new() { - EventType = EventType.User_Favourite, + EventType = EventType.UserFavourite, StoredDataType = EventDataType.User, Timestamp = this._time.TimestampMilliseconds, User = userFrom, @@ -81,13 +81,13 @@ public Event CreateUserFavouriteEvent(GameUser userFrom, GameUser user) } /// - /// Creates a new User_Unfavourite event from a , and adds it to the event list. + /// Creates a new UserUnfavourite event from a , and adds it to the event list. /// public Event CreateUserUnfavouriteEvent(GameUser userFrom, GameUser user) { Event e = new() { - EventType = EventType.User_Unfavourite, + EventType = EventType.UserUnfavourite, StoredDataType = EventDataType.User, Timestamp = this._time.TimestampMilliseconds, User = userFrom, @@ -99,13 +99,13 @@ public Event CreateUserUnfavouriteEvent(GameUser userFrom, GameUser user) } /// - /// Creates a new Level_Play event from a , and adds it to the event list. + /// Creates a new LevelPlay event from a , and adds it to the event list. /// public Event CreateLevelPlayEvent(GameUser userFrom, GameLevel level) { Event e = new() { - EventType = EventType.Level_Play, + EventType = EventType.LevelPlay, StoredDataType = EventDataType.Level, Timestamp = this._time.TimestampMilliseconds, User = userFrom, @@ -117,13 +117,13 @@ public Event CreateLevelPlayEvent(GameUser userFrom, GameLevel level) } /// - /// Creates a new Level_Tag event from a , and adds it to the event list. + /// Creates a new LevelTag event from a , and adds it to the event list. /// public Event CreateLevelTagEvent(GameUser userFrom, GameLevel level) { Event e = new() { - EventType = EventType.Level_Tag, + EventType = EventType.LevelTag, StoredDataType = EventDataType.Level, Timestamp = this._time.TimestampMilliseconds, User = userFrom, @@ -135,13 +135,13 @@ public Event CreateLevelTagEvent(GameUser userFrom, GameLevel level) } /// - /// Creates a new Level_TeamPick event from a , and adds it to the event list. + /// Creates a new LevelTeamPick event from a , and adds it to the event list. /// public Event CreateLevelTeamPickEvent(GameUser userFrom, GameLevel level) { Event e = new() { - EventType = EventType.Level_TeamPick, + EventType = EventType.LevelTeamPick, StoredDataType = EventDataType.Level, Timestamp = this._time.TimestampMilliseconds, User = userFrom, @@ -153,13 +153,13 @@ public Event CreateLevelTeamPickEvent(GameUser userFrom, GameLevel level) } /// - /// Creates a new Level_Rate event from a , and adds it to the event list. + /// Creates a new LevelRate event from a , and adds it to the event list. /// public Event CreateRateLevelEvent(GameUser userFrom, RateLevelRelation relation) { Event e = new() { - EventType = EventType.Level_Rate, + EventType = EventType.LevelRate, StoredDataType = EventDataType.RateLevelRelation, Timestamp = this._time.TimestampMilliseconds, User = userFrom, @@ -171,13 +171,13 @@ public Event CreateRateLevelEvent(GameUser userFrom, RateLevelRelation relation) } /// - /// Creates a new Level_Review event from a , and adds it to the event list. + /// Creates a new LevelReview event from a , and adds it to the event list. /// public Event CreateLevelReviewEvent(GameUser userFrom, GameLevel level) { Event e = new() { - EventType = EventType.Level_Review, + EventType = EventType.LevelReview, StoredDataType = EventDataType.Level, Timestamp = this._time.TimestampMilliseconds, User = userFrom, @@ -189,13 +189,13 @@ public Event CreateLevelReviewEvent(GameUser userFrom, GameLevel level) } /// - /// Creates a new Level_Score event from a , and adds it to the event list. + /// Creates a new LevelScore event from a , and adds it to the event list. /// public Event CreateLevelScoreEvent(GameUser userFrom, GameSubmittedScore score) { Event e = new() { - EventType = EventType.Level_Score, + EventType = EventType.LevelScore, StoredDataType = EventDataType.Score, Timestamp = this._time.TimestampMilliseconds, User = userFrom, @@ -207,13 +207,13 @@ public Event CreateLevelScoreEvent(GameUser userFrom, GameSubmittedScore score) } /// - /// Creates a new User_FirstLogin event from a , and adds it to the event list. + /// Creates a new UserFirstLogin event from a , and adds it to the event list. /// public Event CreateUserFirstLoginEvent(GameUser userFrom, GameUser user) { Event e = new() { - EventType = EventType.User_FirstLogin, + EventType = EventType.UserFirstLogin, StoredDataType = EventDataType.User, Timestamp = this._time.TimestampMilliseconds, User = userFrom, diff --git a/Refresh.GameServer/Types/Activity/ActivityPage.cs b/Refresh.GameServer/Types/Activity/ActivityPage.cs index 251fe95b..c44cae4d 100644 --- a/Refresh.GameServer/Types/Activity/ActivityPage.cs +++ b/Refresh.GameServer/Types/Activity/ActivityPage.cs @@ -232,8 +232,8 @@ private void GenerateLevelGroups(ActivityGroups groups) // You will waste 30 seconds of your time if you don't. levelEvent = @event.EventType switch { - EventType.Level_Upload => SerializedLevelUploadEvent.FromSerializedLevelEvent(levelEvent), - EventType.Level_Play => SerializedLevelPlayEvent.FromSerializedLevelEvent(levelEvent), + EventType.LevelUpload => SerializedLevelUploadEvent.FromSerializedLevelEvent(levelEvent), + EventType.LevelPlay => SerializedLevelPlayEvent.FromSerializedLevelEvent(levelEvent), _ => levelEvent, }; @@ -259,7 +259,7 @@ private void GenerateLevelGroups(ActivityGroups groups) private void GenerateScoreGroups(ActivityGroups groups, IReadOnlyCollection scores) { - foreach (Event @event in this.Events.Where(e => e.EventType == EventType.Level_Score)) + foreach (Event @event in this.Events.Where(e => e.EventType == EventType.LevelScore)) { GameSubmittedScore score = scores.First(u => u.ScoreId == @event.StoredObjectId); diff --git a/Refresh.GameServer/Types/Activity/EventType.cs b/Refresh.GameServer/Types/Activity/EventType.cs index 22dcf7b2..175e4b07 100644 --- a/Refresh.GameServer/Types/Activity/EventType.cs +++ b/Refresh.GameServer/Types/Activity/EventType.cs @@ -1,57 +1,55 @@ -using System.Diagnostics.CodeAnalysis; using System.Xml.Serialization; using Newtonsoft.Json.Converters; namespace Refresh.GameServer.Types.Activity; [JsonConverter(typeof(StringEnumConverter))] -[SuppressMessage("ReSharper", "InconsistentNaming")] public enum EventType : byte { [XmlEnum("publish_level")] - Level_Upload = 0, + LevelUpload = 0, [XmlEnum("heart_level")] - Level_Favourite = 1, + LevelFavourite = 1, [XmlEnum("unheart_level")] - Level_Unfavourite = 2, + LevelUnfavourite = 2, [XmlEnum("heart_user")] - User_Favourite = 3, + UserFavourite = 3, [XmlEnum("unheart_user")] - User_Unfavourite = 4, + UserUnfavourite = 4, [XmlEnum("play_level")] - Level_Play = 5, + LevelPlay = 5, // [XmlEnum("rate_level")] // Level_Rate = 6, [XmlEnum("tag_level")] - Level_Tag = 7, + LevelTag = 7, // [XmlEnum("comment_on_level")] // PostLevelComment = 8, // [XmlEnum("delete_level_comment")] // DeleteLevelComment = 9, // [XmlEnum("upload_photo")] - // Photo_Upload = 10, + // PhotoUpload = 10, // [XmlEnum("unpublish_level")] - // Level_Unpublish = 11, + // LevelUnpublish = 11, // [XmlEnum("news_post")] - // News_Post = 12, + // NewsPost = 12, [XmlEnum("mm_pick_level")] - Level_TeamPick = 13, + LevelTeamPick = 13, [XmlEnum("dpad_rate_level")] - Level_Rate = 14, + LevelRate = 14, [XmlEnum("review_level")] - Level_Review = 15, + LevelReview = 15, // [XmlEnum("comment_on_user")] // PostUserComment = 16, // [XmlEnum("create_playlist")] - // Playlist_Create = 17, + // PlaylistCreate = 17, // [XmlEnum("heart_playlist")] - // Playlist_Favourite = 18, + // PlaylistFavourite = 18, // [XmlEnum("add_level_to_playlist")] - // Playlist_AddLevel = 19, + // PlaylistAddLevel = 19, [XmlEnum("score")] - Level_Score = 20, + LevelScore = 20, // Custom events [XmlEnum("firstlogin")] - User_FirstLogin = 127, + UserFirstLogin = 127, } \ No newline at end of file diff --git a/Refresh.GameServer/Workers/DiscordIntegrationWorker.cs b/Refresh.GameServer/Workers/DiscordIntegrationWorker.cs index 527b5280..ca1eab52 100644 --- a/Refresh.GameServer/Workers/DiscordIntegrationWorker.cs +++ b/Refresh.GameServer/Workers/DiscordIntegrationWorker.cs @@ -60,18 +60,18 @@ private string GetAssetUrl(string hash) string? description = @event.EventType switch { - EventType.Level_Upload => $"uploaded the level {levelLink}", - EventType.Level_Favourite => $"gave {levelLink} a heart", - EventType.Level_Unfavourite => null, - EventType.User_Favourite => $"hearted {userLink}", - EventType.User_Unfavourite => null, - EventType.Level_Play => null, - EventType.Level_Tag => null, - EventType.Level_TeamPick => $"team picked {levelLink}", - EventType.Level_Rate => null, - EventType.Level_Review => null, - EventType.Level_Score => $"got {score!.Score:N0} points on {levelLink}", - EventType.User_FirstLogin => "logged in for the first time", + EventType.LevelUpload => $"uploaded the level {levelLink}", + EventType.LevelFavourite => $"gave {levelLink} a heart", + EventType.LevelUnfavourite => null, + EventType.UserFavourite => $"hearted {userLink}", + EventType.UserUnfavourite => null, + EventType.LevelPlay => null, + EventType.LevelTag => null, + EventType.LevelTeamPick => $"team picked {levelLink}", + EventType.LevelRate => null, + EventType.LevelReview => null, + EventType.LevelScore => $"got {score!.Score:N0} points on {levelLink}", + EventType.UserFirstLogin => "logged in for the first time", _ => null, }; From b899e4fc8d333ccdb4385be34987f66a6d5aadf0 Mon Sep 17 00:00:00 2001 From: jvyden Date: Mon, 17 Jun 2024 20:18:34 -0400 Subject: [PATCH 5/5] Uncomment all event types --- .../Types/Activity/EventType.cs | 40 +++++++++---------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/Refresh.GameServer/Types/Activity/EventType.cs b/Refresh.GameServer/Types/Activity/EventType.cs index 175e4b07..9dab9594 100644 --- a/Refresh.GameServer/Types/Activity/EventType.cs +++ b/Refresh.GameServer/Types/Activity/EventType.cs @@ -18,34 +18,34 @@ public enum EventType : byte UserUnfavourite = 4, [XmlEnum("play_level")] LevelPlay = 5, - // [XmlEnum("rate_level")] - // Level_Rate = 6, + [XmlEnum("rate_level")] + LevelStarRate = 6, // as opposed to dpad rating. unused since we convert stars to dpad [XmlEnum("tag_level")] LevelTag = 7, - // [XmlEnum("comment_on_level")] - // PostLevelComment = 8, - // [XmlEnum("delete_level_comment")] - // DeleteLevelComment = 9, - // [XmlEnum("upload_photo")] - // PhotoUpload = 10, - // [XmlEnum("unpublish_level")] - // LevelUnpublish = 11, - // [XmlEnum("news_post")] - // NewsPost = 12, + [XmlEnum("comment_on_level")] + PostLevelComment = 8, + [XmlEnum("delete_level_comment")] + DeleteLevelComment = 9, + [XmlEnum("upload_photo")] + PhotoUpload = 10, + [XmlEnum("unpublish_level")] + LevelUnpublish = 11, + [XmlEnum("news_post")] + NewsPost = 12, [XmlEnum("mm_pick_level")] LevelTeamPick = 13, [XmlEnum("dpad_rate_level")] LevelRate = 14, [XmlEnum("review_level")] LevelReview = 15, - // [XmlEnum("comment_on_user")] - // PostUserComment = 16, - // [XmlEnum("create_playlist")] - // PlaylistCreate = 17, - // [XmlEnum("heart_playlist")] - // PlaylistFavourite = 18, - // [XmlEnum("add_level_to_playlist")] - // PlaylistAddLevel = 19, + [XmlEnum("comment_on_user")] + PostUserComment = 16, + [XmlEnum("create_playlist")] + PlaylistCreate = 17, + [XmlEnum("heart_playlist")] + PlaylistFavourite = 18, + [XmlEnum("add_level_to_playlist")] + PlaylistAddLevel = 19, [XmlEnum("score")] LevelScore = 20,