Add last play time support
Support setting avatar, navigator and titles on web interface (unoptimized)
This commit is contained in:
@@ -0,0 +1,8 @@
|
||||
namespace SharedProject.enums;
|
||||
|
||||
public enum NavigatorDefaultAvailability
|
||||
{
|
||||
NotAvailable = 0,
|
||||
Available = 1,
|
||||
AvailableWithVoice = 2,
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
namespace SharedProject.enums;
|
||||
|
||||
public enum NavigatorGenre
|
||||
{
|
||||
Default = 1,
|
||||
Original = 2,
|
||||
Game = 3,
|
||||
Touhou = 4,
|
||||
Vocaloid = 5,
|
||||
Collab = 6,
|
||||
}
|
||||
@@ -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,
|
||||
}
|
||||
@@ -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}";
|
||||
}
|
||||
}
|
||||
@@ -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}";
|
||||
}
|
||||
}
|
||||
@@ -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}";
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
namespace SharedProject.models;
|
||||
|
||||
public class Navigators
|
||||
{
|
||||
public int Count { get; set; }
|
||||
|
||||
public List<Navigator>? NavigatorList { get; set; }
|
||||
}
|
||||
@@ -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; }
|
||||
}
|
||||
@@ -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; }
|
||||
}
|
||||
@@ -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}";
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user