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 97%
rename from Refresh.GameServer/Database/GameDatabaseContext.Activity.cs
rename to Refresh.GameServer/Database/Activity/GameDatabaseContext.Activity.cs
index c407295e..7029c507 100644
--- a/Refresh.GameServer/Database/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.ActivityRead.cs b/Refresh.GameServer/Database/Activity/GameDatabaseContext.ActivityRead.cs
new file mode 100644
index 00000000..a961a3f3
--- /dev/null
+++ b/Refresh.GameServer/Database/Activity/GameDatabaseContext.ActivityRead.cs
@@ -0,0 +1,52 @@
+using System.Diagnostics;
+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 e)
+ {
+ if (e.StoredDataType != EventDataType.User)
+ throw new InvalidOperationException($"Event does not store the correct data type (expected {nameof(EventDataType.User)})");
+
+ Debug.Assert(e.StoredObjectId != null);
+
+ return this.GetUserByObjectId(e.StoredObjectId);
+ }
+
+ public GameLevel? GetLevelFromEvent(Event e)
+ {
+ if (e.StoredDataType != EventDataType.Level)
+ throw new InvalidOperationException($"Event does not store the correct data type (expected {nameof(EventDataType.Level)})");
+
+ Debug.Assert(e.StoredSequentialId != null);
+
+ return this.GetLevelById(e.StoredSequentialId.Value);
+ }
+
+ public GameSubmittedScore? GetScoreFromEvent(Event e)
+ {
+ if (e.StoredDataType != EventDataType.Score)
+ throw new InvalidOperationException($"Event does not store the correct data type (expected {nameof(EventDataType.Score)})");
+
+ Debug.Assert(e.StoredObjectId != null);
+
+ return this.GetScoreByObjectId(e.StoredObjectId);
+ }
+
+ public RateLevelRelation? GetRateLevelRelationFromEvent(Event e)
+ {
+ if (e.StoredDataType != EventDataType.RateLevelRelation)
+ throw new InvalidOperationException($"Event does not store the correct data type (expected {nameof(EventDataType.RateLevelRelation)})");
+
+ Debug.Assert(e.StoredObjectId != null);
+
+ return this._realm.All()
+ .FirstOrDefault(l => l.RateLevelRelationId == e.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..6129eb2f
--- /dev/null
+++ b/Refresh.GameServer/Database/Activity/GameDatabaseContext.ActivityWrite.cs
@@ -0,0 +1,226 @@
+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 LevelUpload event from a , and adds it to the event list.
+ ///
+ public Event CreateLevelUploadEvent(GameUser userFrom, GameLevel level)
+ {
+ Event e = new()
+ {
+ EventType = EventType.LevelUpload,
+ StoredDataType = EventDataType.Level,
+ Timestamp = this._time.TimestampMilliseconds,
+ User = userFrom,
+ StoredSequentialId = level.LevelId,
+ };
+
+ this._realm.Write(() => this._realm.Add(e));
+ return e;
+ }
+
+ ///
+ /// 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.LevelFavourite,
+ StoredDataType = EventDataType.Level,
+ Timestamp = this._time.TimestampMilliseconds,
+ User = userFrom,
+ StoredSequentialId = level.LevelId,
+ };
+
+ this._realm.Write(() => this._realm.Add(e));
+ return e;
+ }
+
+ ///
+ /// 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.LevelUnfavourite,
+ StoredDataType = EventDataType.Level,
+ Timestamp = this._time.TimestampMilliseconds,
+ User = userFrom,
+ StoredSequentialId = level.LevelId,
+ };
+
+ this._realm.Write(() => this._realm.Add(e));
+ return e;
+ }
+
+ ///
+ /// 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.UserFavourite,
+ StoredDataType = EventDataType.User,
+ Timestamp = this._time.TimestampMilliseconds,
+ User = userFrom,
+ StoredObjectId = user.UserId,
+ };
+
+ this._realm.Write(() => this._realm.Add(e));
+ return e;
+ }
+
+ ///
+ /// 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.UserUnfavourite,
+ StoredDataType = EventDataType.User,
+ Timestamp = this._time.TimestampMilliseconds,
+ User = userFrom,
+ StoredObjectId = user.UserId,
+ };
+
+ this._realm.Write(() => this._realm.Add(e));
+ return e;
+ }
+
+ ///
+ /// 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.LevelPlay,
+ StoredDataType = EventDataType.Level,
+ Timestamp = this._time.TimestampMilliseconds,
+ User = userFrom,
+ StoredSequentialId = level.LevelId,
+ };
+
+ this._realm.Write(() => this._realm.Add(e));
+ return e;
+ }
+
+ ///
+ /// 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.LevelTag,
+ StoredDataType = EventDataType.Level,
+ Timestamp = this._time.TimestampMilliseconds,
+ User = userFrom,
+ StoredSequentialId = level.LevelId,
+ };
+
+ this._realm.Write(() => this._realm.Add(e));
+ return e;
+ }
+
+ ///
+ /// 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.LevelTeamPick,
+ StoredDataType = EventDataType.Level,
+ Timestamp = this._time.TimestampMilliseconds,
+ User = userFrom,
+ StoredSequentialId = level.LevelId,
+ };
+
+ this._realm.Write(() => this._realm.Add(e));
+ return e;
+ }
+
+ ///
+ /// 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.LevelRate,
+ StoredDataType = EventDataType.RateLevelRelation,
+ Timestamp = this._time.TimestampMilliseconds,
+ User = userFrom,
+ StoredObjectId = relation.RateLevelRelationId,
+ };
+
+ this._realm.Write(() => this._realm.Add(e));
+ return e;
+ }
+
+ ///
+ /// 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.LevelReview,
+ StoredDataType = EventDataType.Level,
+ Timestamp = this._time.TimestampMilliseconds,
+ User = userFrom,
+ StoredSequentialId = level.LevelId,
+ };
+
+ this._realm.Write(() => this._realm.Add(e));
+ return e;
+ }
+
+ ///
+ /// 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.LevelScore,
+ StoredDataType = EventDataType.Score,
+ Timestamp = this._time.TimestampMilliseconds,
+ User = userFrom,
+ StoredObjectId = score.ScoreId,
+ };
+
+ this._realm.Write(() => this._realm.Add(e));
+ return e;
+ }
+
+ ///
+ /// 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.UserFirstLogin,
+ 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/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.GameServer/Types/Activity/ActivityPage.cs b/Refresh.GameServer/Types/Activity/ActivityPage.cs
index ac2b85fd..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.SubmittedScore_Create))
+ 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 f755b3a1..9dab9594 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
+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,
- // [XmlEnum("rate_level")]
- // Level_Rate = 6,
+ LevelPlay = 5,
+ [XmlEnum("rate_level")]
+ LevelStarRate = 6, // as opposed to dpad rating. unused since we convert stars to dpad
[XmlEnum("tag_level")]
- Level_Tag = 7,
- // [XmlEnum("comment_on_level")]
- // PostLevelComment = 8,
- // [XmlEnum("delete_level_comment")]
- // DeleteLevelComment = 9,
- // [XmlEnum("upload_photo")]
- // Photo_Upload = 10,
- // [XmlEnum("unpublish_level")]
- // Level_Unpublish = 11,
- // [XmlEnum("news_post")]
- // News_Post = 12,
+ 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("mm_pick_level")]
- Level_TeamPick = 13,
+ LevelTeamPick = 13,
[XmlEnum("dpad_rate_level")]
- RateLevelRelation_Create = 14,
+ LevelRate = 14,
[XmlEnum("review_level")]
- Level_Review = 15,
- // [XmlEnum("comment_on_user")]
- // PostUserComment = 16,
- // [XmlEnum("create_playlist")]
- // Playlist_Create = 17,
- // [XmlEnum("heart_playlist")]
- // Playlist_Favourite = 18,
- // [XmlEnum("add_level_to_playlist")]
- // Playlist_AddLevel = 19,
+ 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("score")]
- SubmittedScore_Create = 20, // FIXME: this name is shit
+ 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 b788785c..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.RateLevelRelation_Create => null,
- EventType.Level_Review => null,
- EventType.SubmittedScore_Create => $"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,
};
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