Add last play time support

Support setting avatar, navigator and titles on web interface (unoptimized)
This commit is contained in:
jiych1
2022-07-06 00:52:38 +08:00
parent 95d9d0be5f
commit 4cd290aedc
24 changed files with 55725 additions and 350 deletions
@@ -0,0 +1,8 @@
namespace SharedProject.enums;
public enum NavigatorDefaultAvailability
{
NotAvailable = 0,
Available = 1,
AvailableWithVoice = 2,
}
+11
View File
@@ -0,0 +1,11 @@
namespace SharedProject.enums;
public enum NavigatorGenre
{
Default = 1,
Original = 2,
Game = 3,
Touhou = 4,
Vocaloid = 5,
Collab = 6,
}
+36
View File
@@ -0,0 +1,36 @@
namespace SharedProject.enums;
public enum TitleUnlockType
{
Invalid = 0,
Default = 1,
Clear = 2,
NoMiss = 3,
FullChain = 4,
SRankSimpleStages = 5,
SRankNormalStages = 6,
SRankHardStages = 7,
SRankExtraStages = 8,
SRankAllDifficulties = 9,
SPlusRankAllDifficulties = 10,
SPlusPlusRankAllDifficulties = 11,
Event = 12,
Prefecture = 13,
ChainMilestone = 14,
Adlibs = 15,
ConsecutiveNoMiss = 16,
ClearsUsingItems = 17,
Avatars = 18,
MultiplayerStarsTotal = 19,
SongSet20 = 20,
SongSet21 = 21,
SongSet22 = 22,
SongSet23 = 23,
SongSet24 = 24,
SongSet25 = 25,
SongSet26 = 26,
ProfileLevel = 27,
Perfect = 28,
OnlineMatching = 29,
Trophies = 30,
}
+15
View File
@@ -0,0 +1,15 @@
namespace SharedProject.models;
public class Avatar
{
public uint Id { get; set; }
public string? IdString { get; set; }
public string? FullName { get; set; }
public string? Name { get; set; }
public string? Variant { get; set; }
public string? AcquireMethod { get; set; }
public override string ToString() {
return $"{Id}: {FullName}, {AcquireMethod}";
}
}
+12
View File
@@ -0,0 +1,12 @@
namespace SharedProject.models;
public class NameEntry
{
public string? NameWithVariant { get; set; }
public string? NameWithoutVariant{ get; set; }
public string? Variant{ get; set; }
public string? IllustrationCredit{ get; set; }
public override string ToString() {
return $"{NameWithVariant}";
}
}
+25
View File
@@ -0,0 +1,25 @@
using SharedProject.enums;
namespace SharedProject.models;
public class Navigator
{
public uint Id { get; set; }
public string? IdString { get; set; }
public string? FileName { get; set; }
public NameEntry? NameEntry0 { get; set; }
public NameEntry? NameEntry1 { get; set; }
public NavigatorGenre Genre { get; set; }
public NavigatorDefaultAvailability DefaultAvailability { get; set; }
public string? ToolTipJp { get; set; }
public string? ToolTipEn { get; set; }
public override string ToString() {
return $"{Id}: {NameEntry1}, {ToolTipEn}";
}
}
+8
View File
@@ -0,0 +1,8 @@
namespace SharedProject.models;
public class Navigators
{
public int Count { get; set; }
public List<Navigator>? NavigatorList { get; set; }
}
+9
View File
@@ -13,4 +13,13 @@ public class PlayOption
[JsonPropertyName(nameof(FeverTrance))]
public PlayOptions.FeverTranceShow FeverTrance { get; set; }
[JsonPropertyName(nameof(AvatarId))]
public long AvatarId { get; set; }
[JsonPropertyName(nameof(NavigatorId))]
public long NavigatorId { get; set; }
[JsonPropertyName(nameof(TitleId))]
public long TitleId { get; set; }
}
+12
View File
@@ -1,5 +1,6 @@
using System.Text.Json.Serialization;
using SharedProject.common;
using SharedProject.enums;
namespace SharedProject.models;
@@ -25,4 +26,15 @@ public class SongPlayData
return SongPlaySubDataList.Sum(data => data.PlayCount);
}
}
[JsonIgnore]
public DateTime LastPlayTime
{
get
{
var songPlayDetailData = SongPlaySubDataList.Where(data => data.ClearState != ClearState.NotPlayed)
.MinBy(data => data.LastPlayTime);
return songPlayDetailData?.LastPlayTime ?? DateTime.MaxValue;
}
}
}
@@ -13,4 +13,6 @@ public class SongPlayDetailData
public Difficulty Difficulty { get; set; }
public ClearState ClearState { get; set; }
public DateTime LastPlayTime { get; set; }
}
+17
View File
@@ -0,0 +1,17 @@
using SharedProject.enums;
namespace SharedProject.models;
public class Title
{
public uint Id { get; set; }
public string? IdString { get; set; }
public string? NameJp { get; set; }
public string? NameEng { get; set; }
public string? UnlockRequirementJp { get; set; }
public string? UnlockRequirementEng { get; set; }
public TitleUnlockType Type { get; set; }
public override string ToString() {
return $"{Id}: {NameEng}, {UnlockRequirementEng}";
}
}