Solution cleanup. Implement stubs for all remaining services. Add API models. Move configuration to appsettings.

This commit is contained in:
BillyCool
2026-03-13 22:25:43 +11:00
parent b855475446
commit dbe8ec4e99
1709 changed files with 27184 additions and 244 deletions

4
.gitignore vendored
View File

@@ -396,3 +396,7 @@ FodyWeavers.xsd
# JetBrains Rider
*.sln.iml
# Squad
.copilot
.squad

View File

@@ -0,0 +1,21 @@
namespace MariesWonderland.Configuration;
public sealed class ServerOptions
{
public const string SectionName = "Server";
public PathsOptions Paths { get; init; } = new();
public DataOptions Data { get; init; } = new();
}
public sealed class PathsOptions
{
public string AssetDatabase { get; init; } = string.Empty;
public string MasterDatabase { get; init; } = string.Empty;
}
public sealed class DataOptions
{
public string LatestMasterDataVersion { get; init; } = string.Empty;
public string UserDataBasePath { get; init; } = string.Empty;
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,220 @@
using MariesWonderland.Models.Tables;
namespace NierReincarnation.Core.Dark;
public class DarkUserMemoryDatabase
{
public EntityIUserTable EntityIUserTable { get; }
public EntityIUserAppleTable EntityIUserAppleTable { get; }
public EntityIUserAutoSaleSettingDetailTable EntityIUserAutoSaleSettingDetailTable { get; }
public EntityIUserBeginnerCampaignTable EntityIUserBeginnerCampaignTable { get; }
public EntityIUserBigHuntMaxScoreTable EntityIUserBigHuntMaxScoreTable { get; }
public EntityIUserBigHuntProgressStatusTable EntityIUserBigHuntProgressStatusTable { get; }
public EntityIUserBigHuntScheduleMaxScoreTable EntityIUserBigHuntScheduleMaxScoreTable { get; }
public EntityIUserBigHuntStatusTable EntityIUserBigHuntStatusTable { get; }
public EntityIUserBigHuntWeeklyMaxScoreTable EntityIUserBigHuntWeeklyMaxScoreTable { get; }
public EntityIUserBigHuntWeeklyStatusTable EntityIUserBigHuntWeeklyStatusTable { get; }
public EntityIUserCageOrnamentRewardTable EntityIUserCageOrnamentRewardTable { get; }
public EntityIUserCharacterTable EntityIUserCharacterTable { get; }
public EntityIUserCharacterBoardTable EntityIUserCharacterBoardTable { get; }
public EntityIUserCharacterBoardAbilityTable EntityIUserCharacterBoardAbilityTable { get; }
public EntityIUserCharacterBoardCompleteRewardTable EntityIUserCharacterBoardCompleteRewardTable { get; }
public EntityIUserCharacterBoardStatusUpTable EntityIUserCharacterBoardStatusUpTable { get; }
public EntityIUserCharacterCostumeLevelBonusTable EntityIUserCharacterCostumeLevelBonusTable { get; }
public EntityIUserCharacterRebirthTable EntityIUserCharacterRebirthTable { get; }
public EntityIUserCharacterViewerFieldTable EntityIUserCharacterViewerFieldTable { get; }
public EntityIUserComebackCampaignTable EntityIUserComebackCampaignTable { get; }
public EntityIUserCompanionTable EntityIUserCompanionTable { get; }
public EntityIUserConsumableItemTable EntityIUserConsumableItemTable { get; }
public EntityIUserContentsStoryTable EntityIUserContentsStoryTable { get; }
public EntityIUserCostumeTable EntityIUserCostumeTable { get; }
public EntityIUserCostumeActiveSkillTable EntityIUserCostumeActiveSkillTable { get; }
public EntityIUserCostumeAwakenStatusUpTable EntityIUserCostumeAwakenStatusUpTable { get; }
public EntityIUserCostumeLevelBonusReleaseStatusTable EntityIUserCostumeLevelBonusReleaseStatusTable { get; }
public EntityIUserCostumeLotteryEffectTable EntityIUserCostumeLotteryEffectTable { get; }
public EntityIUserCostumeLotteryEffectAbilityTable EntityIUserCostumeLotteryEffectAbilityTable { get; }
public EntityIUserCostumeLotteryEffectPendingTable EntityIUserCostumeLotteryEffectPendingTable { get; }
public EntityIUserCostumeLotteryEffectStatusUpTable EntityIUserCostumeLotteryEffectStatusUpTable { get; }
public EntityIUserDeckTable EntityIUserDeckTable { get; }
public EntityIUserDeckCharacterTable EntityIUserDeckCharacterTable { get; }
public EntityIUserDeckCharacterDressupCostumeTable EntityIUserDeckCharacterDressupCostumeTable { get; }
public EntityIUserDeckLimitContentDeletedCharacterTable EntityIUserDeckLimitContentDeletedCharacterTable { get; }
public EntityIUserDeckLimitContentRestrictedTable EntityIUserDeckLimitContentRestrictedTable { get; }
public EntityIUserDeckPartsGroupTable EntityIUserDeckPartsGroupTable { get; }
public EntityIUserDeckSubWeaponGroupTable EntityIUserDeckSubWeaponGroupTable { get; }
public EntityIUserDeckTypeNoteTable EntityIUserDeckTypeNoteTable { get; }
public EntityIUserDokanTable EntityIUserDokanTable { get; }
public EntityIUserEventQuestDailyGroupCompleteRewardTable EntityIUserEventQuestDailyGroupCompleteRewardTable { get; }
public EntityIUserEventQuestGuerrillaFreeOpenTable EntityIUserEventQuestGuerrillaFreeOpenTable { get; }
public EntityIUserEventQuestLabyrinthSeasonTable EntityIUserEventQuestLabyrinthSeasonTable { get; }
public EntityIUserEventQuestLabyrinthStageTable EntityIUserEventQuestLabyrinthStageTable { get; }
public EntityIUserEventQuestProgressStatusTable EntityIUserEventQuestProgressStatusTable { get; }
public EntityIUserEventQuestTowerAccumulationRewardTable EntityIUserEventQuestTowerAccumulationRewardTable { get; }
public EntityIUserExploreTable EntityIUserExploreTable { get; }
public EntityIUserExploreScoreTable EntityIUserExploreScoreTable { get; }
public EntityIUserExtraQuestProgressStatusTable EntityIUserExtraQuestProgressStatusTable { get; }
public EntityIUserFacebookTable EntityIUserFacebookTable { get; }
public EntityIUserGemTable EntityIUserGemTable { get; }
public EntityIUserGimmickTable EntityIUserGimmickTable { get; }
public EntityIUserGimmickOrnamentProgressTable EntityIUserGimmickOrnamentProgressTable { get; }
public EntityIUserGimmickSequenceTable EntityIUserGimmickSequenceTable { get; }
public EntityIUserGimmickUnlockTable EntityIUserGimmickUnlockTable { get; }
public EntityIUserImportantItemTable EntityIUserImportantItemTable { get; }
public EntityIUserLimitedOpenTable EntityIUserLimitedOpenTable { get; }
public EntityIUserLoginTable EntityIUserLoginTable { get; }
public EntityIUserLoginBonusTable EntityIUserLoginBonusTable { get; }
public EntityIUserMainQuestFlowStatusTable EntityIUserMainQuestFlowStatusTable { get; }
public EntityIUserMainQuestMainFlowStatusTable EntityIUserMainQuestMainFlowStatusTable { get; }
public EntityIUserMainQuestProgressStatusTable EntityIUserMainQuestProgressStatusTable { get; }
public EntityIUserMainQuestReplayFlowStatusTable EntityIUserMainQuestReplayFlowStatusTable { get; }
public EntityIUserMainQuestSeasonRouteTable EntityIUserMainQuestSeasonRouteTable { get; }
public EntityIUserMaterialTable EntityIUserMaterialTable { get; }
public EntityIUserMissionTable EntityIUserMissionTable { get; }
public EntityIUserMissionCompletionProgressTable EntityIUserMissionCompletionProgressTable { get; }
public EntityIUserMissionPassPointTable EntityIUserMissionPassPointTable { get; }
public EntityIUserMovieTable EntityIUserMovieTable { get; }
public EntityIUserNaviCutInTable EntityIUserNaviCutInTable { get; }
public EntityIUserOmikujiTable EntityIUserOmikujiTable { get; }
public EntityIUserPartsTable EntityIUserPartsTable { get; }
public EntityIUserPartsGroupNoteTable EntityIUserPartsGroupNoteTable { get; }
public EntityIUserPartsPresetTable EntityIUserPartsPresetTable { get; }
public EntityIUserPartsPresetTagTable EntityIUserPartsPresetTagTable { get; }
public EntityIUserPartsStatusSubTable EntityIUserPartsStatusSubTable { get; }
public EntityIUserPortalCageStatusTable EntityIUserPortalCageStatusTable { get; }
public EntityIUserPossessionAutoConvertTable EntityIUserPossessionAutoConvertTable { get; }
public EntityIUserPremiumItemTable EntityIUserPremiumItemTable { get; }
public EntityIUserProfileTable EntityIUserProfileTable { get; }
public EntityIUserPvpDefenseDeckTable EntityIUserPvpDefenseDeckTable { get; }
public EntityIUserPvpStatusTable EntityIUserPvpStatusTable { get; }
public EntityIUserPvpWeeklyResultTable EntityIUserPvpWeeklyResultTable { get; }
public EntityIUserQuestTable EntityIUserQuestTable { get; }
public EntityIUserQuestAutoOrbitTable EntityIUserQuestAutoOrbitTable { get; }
public EntityIUserQuestLimitContentStatusTable EntityIUserQuestLimitContentStatusTable { get; }
public EntityIUserQuestMissionTable EntityIUserQuestMissionTable { get; }
public EntityIUserQuestReplayFlowRewardGroupTable EntityIUserQuestReplayFlowRewardGroupTable { get; }
public EntityIUserQuestSceneChoiceTable EntityIUserQuestSceneChoiceTable { get; }
public EntityIUserQuestSceneChoiceHistoryTable EntityIUserQuestSceneChoiceHistoryTable { get; }
public EntityIUserSettingTable EntityIUserSettingTable { get; }
public EntityIUserShopItemTable EntityIUserShopItemTable { get; }
public EntityIUserShopReplaceableTable EntityIUserShopReplaceableTable { get; }
public EntityIUserShopReplaceableLineupTable EntityIUserShopReplaceableLineupTable { get; }
public EntityIUserSideStoryQuestTable EntityIUserSideStoryQuestTable { get; }
public EntityIUserSideStoryQuestSceneProgressStatusTable EntityIUserSideStoryQuestSceneProgressStatusTable { get; }
public EntityIUserStatusTable EntityIUserStatusTable { get; }
public EntityIUserThoughtTable EntityIUserThoughtTable { get; }
public EntityIUserTripleDeckTable EntityIUserTripleDeckTable { get; }
public EntityIUserTutorialProgressTable EntityIUserTutorialProgressTable { get; }
public EntityIUserWeaponTable EntityIUserWeaponTable { get; }
public EntityIUserWeaponAbilityTable EntityIUserWeaponAbilityTable { get; }
public EntityIUserWeaponAwakenTable EntityIUserWeaponAwakenTable { get; }
public EntityIUserWeaponNoteTable EntityIUserWeaponNoteTable { get; }
public EntityIUserWeaponSkillTable EntityIUserWeaponSkillTable { get; }
public EntityIUserWeaponStoryTable EntityIUserWeaponStoryTable { get; }
public EntityIUserWebviewPanelMissionTable EntityIUserWebviewPanelMissionTable { get; }
}

View File

@@ -0,0 +1,51 @@
using MariesWonderland.Services;
namespace MariesWonderland.Extensions;
public static class GrpcExtensions
{
public static WebApplication MapGrpcServices(this WebApplication app)
{
app.MapGrpcService<BannerService>();
app.MapGrpcService<BattleService>();
app.MapGrpcService<BigHuntService>();
app.MapGrpcService<CageOrnamentService>();
app.MapGrpcService<CharacterBoardService>();
app.MapGrpcService<CharacterService>();
app.MapGrpcService<CharacterViewerService>();
app.MapGrpcService<CompanionService>();
app.MapGrpcService<ConfigService>();
app.MapGrpcService<ConsumableItemService>();
app.MapGrpcService<ContentsStoryService>();
app.MapGrpcService<CostumeService>();
app.MapGrpcService<DataService>();
app.MapGrpcService<DeckService>();
app.MapGrpcService<DokanService>();
app.MapGrpcService<ExploreService>();
app.MapGrpcService<FriendService>();
app.MapGrpcService<GachaService>();
app.MapGrpcService<GameplayService>();
app.MapGrpcService<GiftService>();
app.MapGrpcService<GimmickService>();
app.MapGrpcService<IndividualPopService>();
app.MapGrpcService<LabyrinthService>();
app.MapGrpcService<LoginBonusService>();
app.MapGrpcService<MaterialService>();
app.MapGrpcService<MissionService>();
app.MapGrpcService<MovieService>();
app.MapGrpcService<NaviCutInService>();
app.MapGrpcService<NotificationService>();
app.MapGrpcService<OmikujiService>();
app.MapGrpcService<PartsService>();
app.MapGrpcService<PortalCageService>();
app.MapGrpcService<PvpService>();
app.MapGrpcService<QuestService>();
app.MapGrpcService<RewardService>();
app.MapGrpcService<ShopService>();
app.MapGrpcService<SideStoryQuestService>();
app.MapGrpcService<TutorialService>();
app.MapGrpcService<UserService>();
app.MapGrpcService<WeaponService>();
return app;
}
}

View File

@@ -0,0 +1,154 @@
using MariesWonderland.Configuration;
using Microsoft.Extensions.Options;
namespace MariesWonderland.Extensions;
public static class HttpApiExtensions
{
public static WebApplication MapHttpApis(this WebApplication app)
{
var options = app.Services.GetRequiredService<IOptions<ServerOptions>>().Value;
var assetDatabaseBasePath = options.Paths.AssetDatabase;
var masterDatabaseBasePath = options.Paths.MasterDatabase;
app.MapGet("/", () => "Marie's Wonderland is open for business :marie:");
// ToS. Expects the version wrapped in delimiters like "###123###".
app.MapGet("/web/static/{languagePath}/terms/termsofuse", (string languagePath) => $"<html><head><title>Terms of Service</title></head><body><h1>Terms of Service</h1><p>Language: {languagePath}</p><p>Version: ###123###</p></body></html>");
// Asset Database
app.MapGet("/v1/list/300116832/{revision}", async (string revision) =>
await File.ReadAllBytesAsync(Path.Combine(assetDatabaseBasePath, revision, "list.bin")));
app.MapGet("/v2/pub/a/301/v/300116832/list/{revision}", async (string revision) =>
await File.ReadAllBytesAsync(Path.Combine(assetDatabaseBasePath, revision, "list.bin")));
// Master Database
app.MapMethods("/assets/release/{masterVersion}/database.bin.e", ["GET", "HEAD"], async (HttpContext ctx, string masterVersion) =>
{
var filePath = Path.Combine(masterDatabaseBasePath, $"{masterVersion}.bin.e");
var fileInfo = new FileInfo(filePath);
long totalLength = fileInfo.Length;
// Advertise range support
ctx.Response.Headers.AcceptRanges = "bytes";
// Simple ETag using last write ticks & length (optional but useful for clients)
ctx.Response.Headers.ETag = $"\"{fileInfo.LastWriteTimeUtc.Ticks:x}-{totalLength:x}\"";
// Handle HEAD quickly (send headers only)
bool isHead = string.Equals(ctx.Request.Method, "HEAD", StringComparison.OrdinalIgnoreCase);
// Parse Range header if present
if (ctx.Request.Headers.TryGetValue("Range", out var rangeHeader))
{
// Expect single range of form: bytes=start-end
var raw = rangeHeader.ToString();
if (!raw.StartsWith("bytes=", StringComparison.OrdinalIgnoreCase))
{
// Malformed range; respond with 416
ctx.Response.StatusCode = StatusCodes.Status416RangeNotSatisfiable;
ctx.Response.Headers.ContentRange = $"bytes */{totalLength}";
return;
}
var rangePart = raw["bytes=".Length..].Trim();
var parts = rangePart.Split('-', 2);
if (parts.Length != 2)
{
ctx.Response.StatusCode = StatusCodes.Status416RangeNotSatisfiable;
ctx.Response.Headers.ContentRange = $"bytes */{totalLength}";
return;
}
bool startParsed = long.TryParse(parts[0], out long start);
bool endParsed = long.TryParse(parts[1], out long end);
if (!startParsed && endParsed)
{
// suffix range: last 'end' bytes
long suffixLength = end;
if (suffixLength <= 0)
{
ctx.Response.StatusCode = StatusCodes.Status416RangeNotSatisfiable;
ctx.Response.Headers.ContentRange = $"bytes */{totalLength}";
return;
}
start = Math.Max(0, totalLength - suffixLength);
end = totalLength - 1;
}
else if (startParsed && !endParsed)
{
// range from start to end of file
end = totalLength - 1;
}
else if (!startParsed && !endParsed)
{
ctx.Response.StatusCode = StatusCodes.Status416RangeNotSatisfiable;
ctx.Response.Headers.ContentRange = $"bytes */{totalLength}";
return;
}
// Validate
if (start < 0 || end < start || start >= totalLength)
{
ctx.Response.StatusCode = StatusCodes.Status416RangeNotSatisfiable;
ctx.Response.Headers.ContentRange = $"bytes */{totalLength}";
return;
}
long length = end - start + 1;
ctx.Response.StatusCode = StatusCodes.Status206PartialContent;
ctx.Response.Headers.ContentRange = $"bytes {start}-{end}/{totalLength}";
ctx.Response.ContentType = "application/octet-stream";
ctx.Response.ContentLength = length;
if (isHead)
{
return;
}
// Stream the requested range
await using var fs = new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.Read);
fs.Seek(start, SeekOrigin.Begin);
var buffer = new byte[64 * 1024];
long remaining = length;
while (remaining > 0)
{
int toRead = (int)Math.Min(buffer.Length, remaining);
int read = await fs.ReadAsync(buffer, 0, toRead);
if (read == 0) break;
await ctx.Response.Body.WriteAsync(buffer.AsMemory(0, read));
remaining -= read;
}
return;
}
// No Range header: return full file
ctx.Response.StatusCode = StatusCodes.Status200OK;
ctx.Response.ContentType = "application/octet-stream";
ctx.Response.ContentLength = totalLength;
if (isHead)
{
return;
}
// Stream the whole file
await using var fullFs = new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.Read);
await fullFs.CopyToAsync(ctx.Response.Body);
});
// Catch all
app.MapMethods("/{**catchAll}", ["GET", "POST", "PUT", "DELETE", "PATCH",], (HttpContext ctx, string catchAll) =>
{
app.Logger.LogWarning("Catchall endpoint hit for {Method} {Path}", ctx.Request.Method, ctx.Request.Path);
return $"You requested: {catchAll}";
});
return app;
}
}

View File

@@ -0,0 +1,12 @@
using MariesWonderland.Configuration;
namespace MariesWonderland.Extensions;
public static class ServiceExtensions
{
public static IServiceCollection AddServerOptions(this IServiceCollection services, IConfiguration configuration)
{
services.Configure<ServerOptions>(configuration.GetSection(ServerOptions.SectionName));
return services;
}
}

View File

@@ -0,0 +1,22 @@
using MariesWonderland.Models.Type;
namespace MariesWonderland.Models.Entities;
public class EntityIUser
{
public long UserId { get; set; }
public long PlayerId { get; set; }
public int OsType { get; set; }
public PlatformType PlatformType { get; set; }
public int UserRestrictionType { get; set; }
public long RegisterDatetime { get; set; }
public long GameStartDatetime { get; set; }
public long LatestVersion { get; set; }
}

View File

@@ -0,0 +1,12 @@
using MariesWonderland.Models.Type;
namespace MariesWonderland.Models.Entities;
public class EntityIUserApple
{
public long UserId { get; set; }
public string AppleId { get; set; }
public long LatestVersion { get; set; }
}

View File

@@ -0,0 +1,14 @@
using MariesWonderland.Models.Type;
namespace MariesWonderland.Models.Entities;
public class EntityIUserAutoSaleSettingDetail
{
public long UserId { get; set; }
public int PossessionAutoSaleItemType { get; set; }
public string PossessionAutoSaleItemValue { get; set; }
public long LatestVersion { get; set; }
}

View File

@@ -0,0 +1,14 @@
using MariesWonderland.Models.Type;
namespace MariesWonderland.Models.Entities;
public class EntityIUserBeginnerCampaign
{
public long UserId { get; set; }
public int BeginnerCampaignId { get; set; }
public long CampaignRegisterDatetime { get; set; }
public long LatestVersion { get; set; }
}

View File

@@ -0,0 +1,16 @@
using MariesWonderland.Models.Type;
namespace MariesWonderland.Models.Entities;
public class EntityIUserBigHuntMaxScore
{
public long UserId { get; set; }
public int BigHuntBossId { get; set; }
public long MaxScore { get; set; }
public long MaxScoreUpdateDatetime { get; set; }
public long LatestVersion { get; set; }
}

View File

@@ -0,0 +1,18 @@
using MariesWonderland.Models.Type;
namespace MariesWonderland.Models.Entities;
public class EntityIUserBigHuntProgressStatus
{
public long UserId { get; set; }
public int CurrentBigHuntBossQuestId { get; set; }
public int CurrentBigHuntQuestId { get; set; }
public int CurrentQuestSceneId { get; set; }
public bool IsDryRun { get; set; }
public long LatestVersion { get; set; }
}

View File

@@ -0,0 +1,18 @@
using MariesWonderland.Models.Type;
namespace MariesWonderland.Models.Entities;
public class EntityIUserBigHuntScheduleMaxScore
{
public long UserId { get; set; }
public int BigHuntScheduleId { get; set; }
public int BigHuntBossId { get; set; }
public long MaxScore { get; set; }
public long MaxScoreUpdateDatetime { get; set; }
public long LatestVersion { get; set; }
}

View File

@@ -0,0 +1,16 @@
using MariesWonderland.Models.Type;
namespace MariesWonderland.Models.Entities;
public class EntityIUserBigHuntStatus
{
public long UserId { get; set; }
public int BigHuntBossQuestId { get; set; }
public int DailyChallengeCount { get; set; }
public long LatestChallengeDatetime { get; set; }
public long LatestVersion { get; set; }
}

View File

@@ -0,0 +1,16 @@
using MariesWonderland.Models.Type;
namespace MariesWonderland.Models.Entities;
public class EntityIUserBigHuntWeeklyMaxScore
{
public long UserId { get; set; }
public long BigHuntWeeklyVersion { get; set; }
public AttributeType AttributeType { get; set; }
public long MaxScore { get; set; }
public long LatestVersion { get; set; }
}

View File

@@ -0,0 +1,14 @@
using MariesWonderland.Models.Type;
namespace MariesWonderland.Models.Entities;
public class EntityIUserBigHuntWeeklyStatus
{
public long UserId { get; set; }
public long BigHuntWeeklyVersion { get; set; }
public bool IsReceivedWeeklyReward { get; set; }
public long LatestVersion { get; set; }
}

View File

@@ -0,0 +1,14 @@
using MariesWonderland.Models.Type;
namespace MariesWonderland.Models.Entities;
public class EntityIUserCageOrnamentReward
{
public long UserId { get; set; }
public int CageOrnamentId { get; set; }
public long AcquisitionDatetime { get; set; }
public long LatestVersion { get; set; }
}

View File

@@ -0,0 +1,16 @@
using MariesWonderland.Models.Type;
namespace MariesWonderland.Models.Entities;
public class EntityIUserCharacter
{
public long UserId { get; set; }
public int CharacterId { get; set; }
public int Level { get; set; }
public int Exp { get; set; }
public long LatestVersion { get; set; }
}

View File

@@ -0,0 +1,20 @@
using MariesWonderland.Models.Type;
namespace MariesWonderland.Models.Entities;
public class EntityIUserCharacterBoard
{
public long UserId { get; set; }
public int CharacterBoardId { get; set; }
public int PanelReleaseBit1 { get; set; }
public int PanelReleaseBit2 { get; set; }
public int PanelReleaseBit3 { get; set; }
public int PanelReleaseBit4 { get; set; }
public long LatestVersion { get; set; }
}

View File

@@ -0,0 +1,16 @@
using MariesWonderland.Models.Type;
namespace MariesWonderland.Models.Entities;
public class EntityIUserCharacterBoardAbility
{
public long UserId { get; set; }
public int CharacterId { get; set; }
public int AbilityId { get; set; }
public int Level { get; set; }
public long LatestVersion { get; set; }
}

View File

@@ -0,0 +1,12 @@
using MariesWonderland.Models.Type;
namespace MariesWonderland.Models.Entities;
public class EntityIUserCharacterBoardCompleteReward
{
public long UserId { get; set; }
public int CharacterBoardCompleteRewardId { get; set; }
public long LatestVersion { get; set; }
}

View File

@@ -0,0 +1,26 @@
using MariesWonderland.Models.Type;
namespace MariesWonderland.Models.Entities;
public class EntityIUserCharacterBoardStatusUp
{
public long UserId { get; set; }
public int CharacterId { get; set; }
public StatusCalculationType StatusCalculationType { get; set; }
public int Hp { get; set; }
public int Attack { get; set; }
public int Vitality { get; set; }
public int Agility { get; set; }
public int CriticalRatio { get; set; }
public int CriticalAttack { get; set; }
public long LatestVersion { get; set; }
}

View File

@@ -0,0 +1,26 @@
using MariesWonderland.Models.Type;
namespace MariesWonderland.Models.Entities;
public class EntityIUserCharacterCostumeLevelBonus
{
public long UserId { get; set; }
public int CharacterId { get; set; }
public StatusCalculationType StatusCalculationType { get; set; }
public int Hp { get; set; }
public int Attack { get; set; }
public int Vitality { get; set; }
public int Agility { get; set; }
public int CriticalRatio { get; set; }
public int CriticalAttack { get; set; }
public long LatestVersion { get; set; }
}

View File

@@ -0,0 +1,14 @@
using MariesWonderland.Models.Type;
namespace MariesWonderland.Models.Entities;
public class EntityIUserCharacterRebirth
{
public long UserId { get; set; }
public int CharacterId { get; set; }
public int RebirthCount { get; set; }
public long LatestVersion { get; set; }
}

View File

@@ -0,0 +1,14 @@
using MariesWonderland.Models.Type;
namespace MariesWonderland.Models.Entities;
public class EntityIUserCharacterViewerField
{
public long UserId { get; set; }
public int CharacterViewerFieldId { get; set; }
public long ReleaseDatetime { get; set; }
public long LatestVersion { get; set; }
}

View File

@@ -0,0 +1,14 @@
using MariesWonderland.Models.Type;
namespace MariesWonderland.Models.Entities;
public class EntityIUserComebackCampaign
{
public long UserId { get; set; }
public int ComebackCampaignId { get; set; }
public long ComebackDatetime { get; set; }
public long LatestVersion { get; set; }
}

View File

@@ -0,0 +1,20 @@
using MariesWonderland.Models.Type;
namespace MariesWonderland.Models.Entities;
public class EntityIUserCompanion
{
public long UserId { get; set; }
public string UserCompanionUuid { get; set; }
public int CompanionId { get; set; }
public int HeadupDisplayViewId { get; set; }
public int Level { get; set; }
public long AcquisitionDatetime { get; set; }
public long LatestVersion { get; set; }
}

View File

@@ -0,0 +1,16 @@
using MariesWonderland.Models.Type;
namespace MariesWonderland.Models.Entities;
public class EntityIUserConsumableItem
{
public long UserId { get; set; }
public int ConsumableItemId { get; set; }
public int Count { get; set; }
public long FirstAcquisitionDatetime { get; set; }
public long LatestVersion { get; set; }
}

View File

@@ -0,0 +1,14 @@
using MariesWonderland.Models.Type;
namespace MariesWonderland.Models.Entities;
public class EntityIUserContentsStory
{
public long UserId { get; set; }
public int ContentsStoryId { get; set; }
public long PlayDatetime { get; set; }
public long LatestVersion { get; set; }
}

View File

@@ -0,0 +1,26 @@
using MariesWonderland.Models.Type;
namespace MariesWonderland.Models.Entities;
public class EntityIUserCostume
{
public long UserId { get; set; }
public string UserCostumeUuid { get; set; }
public int CostumeId { get; set; }
public int LimitBreakCount { get; set; }
public int Level { get; set; }
public int Exp { get; set; }
public int HeadupDisplayViewId { get; set; }
public long AcquisitionDatetime { get; set; }
public int AwakenCount { get; set; }
public long LatestVersion { get; set; }
}

View File

@@ -0,0 +1,16 @@
using MariesWonderland.Models.Type;
namespace MariesWonderland.Models.Entities;
public class EntityIUserCostumeActiveSkill
{
public long UserId { get; set; }
public string UserCostumeUuid { get; set; }
public int Level { get; set; }
public long AcquisitionDatetime { get; set; }
public long LatestVersion { get; set; }
}

View File

@@ -0,0 +1,26 @@
using MariesWonderland.Models.Type;
namespace MariesWonderland.Models.Entities;
public class EntityIUserCostumeAwakenStatusUp
{
public long UserId { get; set; }
public string UserCostumeUuid { get; set; }
public StatusCalculationType StatusCalculationType { get; set; }
public int Hp { get; set; }
public int Attack { get; set; }
public int Vitality { get; set; }
public int Agility { get; set; }
public int CriticalRatio { get; set; }
public int CriticalAttack { get; set; }
public long LatestVersion { get; set; }
}

View File

@@ -0,0 +1,16 @@
using MariesWonderland.Models.Type;
namespace MariesWonderland.Models.Entities;
public class EntityIUserCostumeLevelBonusReleaseStatus
{
public long UserId { get; set; }
public int CostumeId { get; set; }
public int LastReleasedBonusLevel { get; set; }
public int ConfirmedBonusLevel { get; set; }
public long LatestVersion { get; set; }
}

View File

@@ -0,0 +1,16 @@
using MariesWonderland.Models.Type;
namespace MariesWonderland.Models.Entities;
public class EntityIUserCostumeLotteryEffect
{
public long UserId { get; set; }
public string UserCostumeUuid { get; set; }
public int SlotNumber { get; set; }
public int OddsNumber { get; set; }
public long LatestVersion { get; set; }
}

View File

@@ -0,0 +1,18 @@
using MariesWonderland.Models.Type;
namespace MariesWonderland.Models.Entities;
public class EntityIUserCostumeLotteryEffectAbility
{
public long UserId { get; set; }
public string UserCostumeUuid { get; set; }
public int SlotNumber { get; set; }
public int AbilityId { get; set; }
public int AbilityLevel { get; set; }
public long LatestVersion { get; set; }
}

View File

@@ -0,0 +1,16 @@
using MariesWonderland.Models.Type;
namespace MariesWonderland.Models.Entities;
public class EntityIUserCostumeLotteryEffectPending
{
public long UserId { get; set; }
public string UserCostumeUuid { get; set; }
public int SlotNumber { get; set; }
public int OddsNumber { get; set; }
public long LatestVersion { get; set; }
}

View File

@@ -0,0 +1,26 @@
using MariesWonderland.Models.Type;
namespace MariesWonderland.Models.Entities;
public class EntityIUserCostumeLotteryEffectStatusUp
{
public long UserId { get; set; }
public string UserCostumeUuid { get; set; }
public StatusCalculationType StatusCalculationType { get; set; }
public int Hp { get; set; }
public int Attack { get; set; }
public int Vitality { get; set; }
public int Agility { get; set; }
public int CriticalRatio { get; set; }
public int CriticalAttack { get; set; }
public long LatestVersion { get; set; }
}

View File

@@ -0,0 +1,38 @@
using MariesWonderland.Models.Type;
namespace MariesWonderland.Models.Entities;
public class EntityIUserDeck
{
public long UserId { get; set; }
public DeckType DeckType { get; set; }
public int UserDeckNumber { get; set; }
public string UserDeckCharacterUuid01 { get; set; }
public string UserDeckCharacterUuid02 { get; set; }
public string UserDeckCharacterUuid03 { get; set; }
public string Name { get; set; }
public int Power { get; set; }
public long LatestVersion { get; set; }
public EntityIUserDeck(long UserId, DeckType DeckType, int UserDeckNumber, string UserDeckCharacterUuid01,
string UserDeckCharacterUuid02, string UserDeckCharacterUuid03, string Name, int Power, long LatestVersion)
{
this.UserId = UserId;
this.DeckType = DeckType;
this.UserDeckNumber = UserDeckNumber;
this.UserDeckCharacterUuid01 = UserDeckCharacterUuid01;
this.UserDeckCharacterUuid02 = UserDeckCharacterUuid02;
this.UserDeckCharacterUuid03 = UserDeckCharacterUuid03;
this.Name = Name;
this.Power = Power;
this.LatestVersion = LatestVersion;
}
}

View File

@@ -0,0 +1,22 @@
using MariesWonderland.Models.Type;
namespace MariesWonderland.Models.Entities;
public class EntityIUserDeckCharacter
{
public long UserId { get; set; }
public string UserDeckCharacterUuid { get; set; }
public string UserCostumeUuid { get; set; }
public string MainUserWeaponUuid { get; set; }
public string UserCompanionUuid { get; set; }
public int Power { get; set; }
public string UserThoughtUuid { get; set; }
public long LatestVersion { get; set; }
}

View File

@@ -0,0 +1,14 @@
using MariesWonderland.Models.Type;
namespace MariesWonderland.Models.Entities;
public class EntityIUserDeckCharacterDressupCostume
{
public long UserId { get; set; }
public string UserDeckCharacterUuid { get; set; }
public int DressupCostumeId { get; set; }
public long LatestVersion { get; set; }
}

View File

@@ -0,0 +1,16 @@
using MariesWonderland.Models.Type;
namespace MariesWonderland.Models.Entities;
public class EntityIUserDeckLimitContentDeletedCharacter
{
public long UserId { get; set; }
public int UserDeckNumber { get; set; }
public int UserDeckCharacterNumber { get; set; }
public int CostumeId { get; set; }
public long LatestVersion { get; set; }
}

View File

@@ -0,0 +1,20 @@
using MariesWonderland.Models.Type;
namespace MariesWonderland.Models.Entities;
public class EntityIUserDeckLimitContentRestricted
{
public long UserId { get; set; }
public int EventQuestChapterId { get; set; }
public int QuestId { get; set; }
public string DeckRestrictedUuid { get; set; }
public PossessionType PossessionType { get; set; }
public string TargetUuid { get; set; }
public long LatestVersion { get; set; }
}

View File

@@ -0,0 +1,16 @@
using MariesWonderland.Models.Type;
namespace MariesWonderland.Models.Entities;
public class EntityIUserDeckPartsGroup
{
public long UserId { get; set; }
public string UserDeckCharacterUuid { get; set; }
public string UserPartsUuid { get; set; }
public int SortOrder { get; set; }
public long LatestVersion { get; set; }
}

View File

@@ -0,0 +1,16 @@
using MariesWonderland.Models.Type;
namespace MariesWonderland.Models.Entities;
public class EntityIUserDeckSubWeaponGroup
{
public long UserId { get; set; }
public string UserDeckCharacterUuid { get; set; }
public string UserWeaponUuid { get; set; }
public int SortOrder { get; set; }
public long LatestVersion { get; set; }
}

View File

@@ -0,0 +1,14 @@
using MariesWonderland.Models.Type;
namespace MariesWonderland.Models.Entities;
public class EntityIUserDeckTypeNote
{
public long UserId { get; set; }
public DeckType DeckType { get; set; }
public int MaxDeckPower { get; set; }
public long LatestVersion { get; set; }
}

View File

@@ -0,0 +1,14 @@
using MariesWonderland.Models.Type;
namespace MariesWonderland.Models.Entities;
public class EntityIUserDokan
{
public long UserId { get; set; }
public int DokanId { get; set; }
public long DisplayDatetime { get; set; }
public long LatestVersion { get; set; }
}

View File

@@ -0,0 +1,14 @@
using MariesWonderland.Models.Type;
namespace MariesWonderland.Models.Entities;
public class EntityIUserEventQuestDailyGroupCompleteReward
{
public long UserId { get; set; }
public int LastRewardReceiveEventQuestDailyGroupId { get; set; }
public long LastRewardReceiveDatetime { get; set; }
public long LatestVersion { get; set; }
}

View File

@@ -0,0 +1,16 @@
using MariesWonderland.Models.Type;
namespace MariesWonderland.Models.Entities;
public class EntityIUserEventQuestGuerrillaFreeOpen
{
public long UserId { get; set; }
public long StartDatetime { get; set; }
public int OpenMinutes { get; set; }
public int DailyOpenedCount { get; set; }
public long LatestVersion { get; set; }
}

View File

@@ -0,0 +1,16 @@
using MariesWonderland.Models.Type;
namespace MariesWonderland.Models.Entities;
public class EntityIUserEventQuestLabyrinthSeason
{
public long UserId { get; set; }
public int EventQuestChapterId { get; set; }
public int LastJoinSeasonNumber { get; set; }
public int LastSeasonRewardReceivedSeasonNumber { get; set; }
public long LatestVersion { get; set; }
}

View File

@@ -0,0 +1,18 @@
using MariesWonderland.Models.Type;
namespace MariesWonderland.Models.Entities;
public class EntityIUserEventQuestLabyrinthStage
{
public long UserId { get; set; }
public int EventQuestChapterId { get; set; }
public int StageOrder { get; set; }
public bool IsReceivedStageClearReward { get; set; }
public int AccumulationRewardReceivedQuestMissionCount { get; set; }
public long LatestVersion { get; set; }
}

View File

@@ -0,0 +1,18 @@
using MariesWonderland.Models.Type;
namespace MariesWonderland.Models.Entities;
public class EntityIUserEventQuestProgressStatus
{
public long UserId { get; set; }
public int CurrentEventQuestChapterId { get; set; }
public int CurrentQuestId { get; set; }
public int CurrentQuestSceneId { get; set; }
public int HeadQuestSceneId { get; set; }
public long LatestVersion { get; set; }
}

View File

@@ -0,0 +1,14 @@
using MariesWonderland.Models.Type;
namespace MariesWonderland.Models.Entities;
public class EntityIUserEventQuestTowerAccumulationReward
{
public long UserId { get; set; }
public int EventQuestChapterId { get; set; }
public int LatestRewardReceiveQuestMissionClearCount { get; set; }
public long LatestVersion { get; set; }
}

View File

@@ -0,0 +1,16 @@
using MariesWonderland.Models.Type;
namespace MariesWonderland.Models.Entities;
public class EntityIUserExplore
{
public long UserId { get; set; }
public bool IsUseExploreTicket { get; set; }
public int PlayingExploreId { get; set; }
public long LatestPlayDatetime { get; set; }
public long LatestVersion { get; set; }
}

View File

@@ -0,0 +1,16 @@
using MariesWonderland.Models.Type;
namespace MariesWonderland.Models.Entities;
public class EntityIUserExploreScore
{
public long UserId { get; set; }
public int ExploreId { get; set; }
public int MaxScore { get; set; }
public long MaxScoreUpdateDatetime { get; set; }
public long LatestVersion { get; set; }
}

View File

@@ -0,0 +1,16 @@
using MariesWonderland.Models.Type;
namespace MariesWonderland.Models.Entities;
public class EntityIUserExtraQuestProgressStatus
{
public long UserId { get; set; }
public int CurrentQuestId { get; set; }
public int CurrentQuestSceneId { get; set; }
public int HeadQuestSceneId { get; set; }
public long LatestVersion { get; set; }
}

View File

@@ -0,0 +1,12 @@
using MariesWonderland.Models.Type;
namespace MariesWonderland.Models.Entities;
public class EntityIUserFacebook
{
public long UserId { get; set; }
public long FacebookId { get; set; }
public long LatestVersion { get; set; }
}

View File

@@ -0,0 +1,12 @@
using MariesWonderland.Models.Type;
namespace MariesWonderland.Models.Entities;
public class EntityIUserGem
{
public long UserId { get; set; }
public int PaidGem { get; set; }
public int FreeGem { get; set; }
}

View File

@@ -0,0 +1,20 @@
using MariesWonderland.Models.Type;
namespace MariesWonderland.Models.Entities;
public class EntityIUserGimmick
{
public long UserId { get; set; }
public int GimmickSequenceScheduleId { get; set; }
public int GimmickSequenceId { get; set; }
public int GimmickId { get; set; }
public bool IsGimmickCleared { get; set; }
public long StartDatetime { get; set; }
public long LatestVersion { get; set; }
}

View File

@@ -0,0 +1,22 @@
using MariesWonderland.Models.Type;
namespace MariesWonderland.Models.Entities;
public class EntityIUserGimmickOrnamentProgress
{
public long UserId { get; set; }
public int GimmickSequenceScheduleId { get; set; }
public int GimmickSequenceId { get; set; }
public int GimmickId { get; set; }
public int GimmickOrnamentIndex { get; set; }
public int ProgressValueBit { get; set; }
public long BaseDatetime { get; set; }
public long LatestVersion { get; set; }
}

View File

@@ -0,0 +1,18 @@
using MariesWonderland.Models.Type;
namespace MariesWonderland.Models.Entities;
public class EntityIUserGimmickSequence
{
public long UserId { get; set; }
public int GimmickSequenceScheduleId { get; set; }
public int GimmickSequenceId { get; set; }
public bool IsGimmickSequenceCleared { get; set; }
public long ClearDatetime { get; set; }
public long LatestVersion { get; set; }
}

View File

@@ -0,0 +1,18 @@
using MariesWonderland.Models.Type;
namespace MariesWonderland.Models.Entities;
public class EntityIUserGimmickUnlock
{
public long UserId { get; set; }
public int GimmickSequenceScheduleId { get; set; }
public int GimmickSequenceId { get; set; }
public int GimmickId { get; set; }
public bool IsUnlocked { get; set; }
public long LatestVersion { get; set; }
}

View File

@@ -0,0 +1,16 @@
using MariesWonderland.Models.Type;
namespace MariesWonderland.Models.Entities;
public class EntityIUserImportantItem
{
public long UserId { get; set; }
public int ImportantItemId { get; set; }
public int Count { get; set; }
public long FirstAcquisitionDatetime { get; set; }
public long LatestVersion { get; set; }
}

View File

@@ -0,0 +1,18 @@
using MariesWonderland.Models.Type;
namespace MariesWonderland.Models.Entities;
public class EntityIUserLimitedOpen
{
public long UserId { get; set; }
public LimitedOpenTargetType LimitedOpenTargetType { get; set; }
public int TargetId { get; set; }
public long OpenDatetime { get; set; }
public long CloseDatetime { get; set; }
public long LatestVersion { get; set; }
}

View File

@@ -0,0 +1,20 @@
using MariesWonderland.Models.Type;
namespace MariesWonderland.Models.Entities;
public class EntityIUserLogin
{
public long UserId { get; set; }
public int TotalLoginCount { get; set; }
public int ContinualLoginCount { get; set; }
public int MaxContinualLoginCount { get; set; }
public long LastLoginDatetime { get; set; }
public long LastComebackLoginDatetime { get; set; }
public long LatestVersion { get; set; }
}

View File

@@ -0,0 +1,18 @@
using MariesWonderland.Models.Type;
namespace MariesWonderland.Models.Entities;
public class EntityIUserLoginBonus
{
public long UserId { get; set; }
public int LoginBonusId { get; set; }
public int CurrentPageNumber { get; set; }
public int CurrentStampNumber { get; set; }
public long LatestRewardReceiveDatetime { get; set; }
public long LatestVersion { get; set; }
}

View File

@@ -0,0 +1,12 @@
using MariesWonderland.Models.Type;
namespace MariesWonderland.Models.Entities;
public class EntityIUserMainQuestFlowStatus
{
public long UserId { get; set; }
public QuestFlowType CurrentQuestFlowType { get; set; }
public long LatestVersion { get; set; }
}

View File

@@ -0,0 +1,18 @@
using MariesWonderland.Models.Type;
namespace MariesWonderland.Models.Entities;
public class EntityIUserMainQuestMainFlowStatus
{
public long UserId { get; set; }
public int CurrentMainQuestRouteId { get; set; }
public int CurrentQuestSceneId { get; set; }
public int HeadQuestSceneId { get; set; }
public bool IsReachedLastQuestScene { get; set; }
public long LatestVersion { get; set; }
}

View File

@@ -0,0 +1,16 @@
using MariesWonderland.Models.Type;
namespace MariesWonderland.Models.Entities;
public class EntityIUserMainQuestProgressStatus
{
public long UserId { get; set; }
public int CurrentQuestSceneId { get; set; }
public int HeadQuestSceneId { get; set; }
public QuestFlowType CurrentQuestFlowType { get; set; }
public long LatestVersion { get; set; }
}

View File

@@ -0,0 +1,14 @@
using MariesWonderland.Models.Type;
namespace MariesWonderland.Models.Entities;
public class EntityIUserMainQuestReplayFlowStatus
{
public long UserId { get; set; }
public int CurrentHeadQuestSceneId { get; set; }
public int CurrentQuestSceneId { get; set; }
public long LatestVersion { get; set; }
}

View File

@@ -0,0 +1,14 @@
using MariesWonderland.Models.Type;
namespace MariesWonderland.Models.Entities;
public class EntityIUserMainQuestSeasonRoute
{
public long UserId { get; set; }
public int MainQuestSeasonId { get; set; }
public int MainQuestRouteId { get; set; }
public long LatestVersion { get; set; }
}

View File

@@ -0,0 +1,16 @@
using MariesWonderland.Models.Type;
namespace MariesWonderland.Models.Entities;
public class EntityIUserMaterial
{
public long UserId { get; set; }
public int MaterialId { get; set; }
public int Count { get; set; }
public long FirstAcquisitionDatetime { get; set; }
public long LatestVersion { get; set; }
}

View File

@@ -0,0 +1,20 @@
using MariesWonderland.Models.Type;
namespace MariesWonderland.Models.Entities;
public class EntityIUserMission
{
public long UserId { get; set; }
public int MissionId { get; set; }
public long StartDatetime { get; set; }
public int ProgressValue { get; set; }
public MissionProgressStatusType MissionProgressStatusType { get; set; }
public long ClearDatetime { get; set; }
public long LatestVersion { get; set; }
}

View File

@@ -0,0 +1,14 @@
using MariesWonderland.Models.Type;
namespace MariesWonderland.Models.Entities;
public class EntityIUserMissionCompletionProgress
{
public long UserId { get; set; }
public int MissionId { get; set; }
public long ProgressValue { get; set; }
public long LatestVersion { get; set; }
}

View File

@@ -0,0 +1,18 @@
using MariesWonderland.Models.Type;
namespace MariesWonderland.Models.Entities;
public class EntityIUserMissionPassPoint
{
public long UserId { get; set; }
public int MissionPassId { get; set; }
public int Point { get; set; }
public int PremiumRewardReceivedLevel { get; set; }
public int NoPremiumRewardReceivedLevel { get; set; }
public long LatestVersion { get; set; }
}

View File

@@ -0,0 +1,14 @@
using MariesWonderland.Models.Type;
namespace MariesWonderland.Models.Entities;
public class EntityIUserMovie
{
public long UserId { get; set; }
public int MovieId { get; set; }
public long LatestViewedDatetime { get; set; }
public long LatestVersion { get; set; }
}

View File

@@ -0,0 +1,14 @@
using MariesWonderland.Models.Type;
namespace MariesWonderland.Models.Entities;
public class EntityIUserNaviCutIn
{
public long UserId { get; set; }
public int NaviCutInId { get; set; }
public long PlayDatetime { get; set; }
public long LatestVersion { get; set; }
}

View File

@@ -0,0 +1,14 @@
using MariesWonderland.Models.Type;
namespace MariesWonderland.Models.Entities;
public class EntityIUserOmikuji
{
public long UserId { get; set; }
public int OmikujiId { get; set; }
public long LatestDrawDatetime { get; set; }
public long LatestVersion { get; set; }
}

View File

@@ -0,0 +1,22 @@
using MariesWonderland.Models.Type;
namespace MariesWonderland.Models.Entities;
public class EntityIUserParts
{
public long UserId { get; set; }
public string UserPartsUuid { get; set; }
public int PartsId { get; set; }
public int Level { get; set; }
public int PartsStatusMainId { get; set; }
public bool IsProtected { get; set; }
public long AcquisitionDatetime { get; set; }
public long LatestVersion { get; set; }
}

View File

@@ -0,0 +1,14 @@
using MariesWonderland.Models.Type;
namespace MariesWonderland.Models.Entities;
public class EntityIUserPartsGroupNote
{
public long UserId { get; set; }
public int PartsGroupId { get; set; }
public long FirstAcquisitionDatetime { get; set; }
public long LatestVersion { get; set; }
}

View File

@@ -0,0 +1,22 @@
using MariesWonderland.Models.Type;
namespace MariesWonderland.Models.Entities;
public class EntityIUserPartsPreset
{
public long UserId { get; set; }
public int UserPartsPresetNumber { get; set; }
public string UserPartsUuid01 { get; set; }
public string UserPartsUuid02 { get; set; }
public string UserPartsUuid03 { get; set; }
public string Name { get; set; }
public int UserPartsPresetTagNumber { get; set; }
public long LatestVersion { get; set; }
}

View File

@@ -0,0 +1,14 @@
using MariesWonderland.Models.Type;
namespace MariesWonderland.Models.Entities;
public class EntityIUserPartsPresetTag
{
public long UserId { get; set; }
public int UserPartsPresetTagNumber { get; set; }
public string Name { get; set; }
public long LatestVersion { get; set; }
}

View File

@@ -0,0 +1,24 @@
using MariesWonderland.Models.Type;
namespace MariesWonderland.Models.Entities;
public class EntityIUserPartsStatusSub
{
public long UserId { get; set; }
public string UserPartsUuid { get; set; }
public int StatusIndex { get; set; }
public int PartsStatusSubLotteryId { get; set; }
public int Level { get; set; }
public StatusKindType StatusKindType { get; set; }
public StatusCalculationType StatusCalculationType { get; set; }
public int StatusChangeValue { get; set; }
public long LatestVersion { get; set; }
}

View File

@@ -0,0 +1,16 @@
using MariesWonderland.Models.Type;
namespace MariesWonderland.Models.Entities;
public class EntityIUserPortalCageStatus
{
public long UserId { get; set; }
public bool IsCurrentProgress { get; set; }
public long DropItemStartDatetime { get; set; }
public int CurrentDropItemCount { get; set; }
public long LatestVersion { get; set; }
}

View File

@@ -0,0 +1,24 @@
using MariesWonderland.Models.Type;
namespace MariesWonderland.Models.Entities;
public class EntityIUserPossessionAutoConvert
{
public long UserId { get; set; }
public PossessionType PossessionType { get; set; }
public int PossessionId { get; set; }
public int FromCount { get; set; }
public PossessionType ToPossessionType { get; set; }
public int ToPossessionId { get; set; }
public int ToCount { get; set; }
public long ConvertDatetime { get; set; }
public long LatestVersion { get; set; }
}

View File

@@ -0,0 +1,14 @@
using MariesWonderland.Models.Type;
namespace MariesWonderland.Models.Entities;
public class EntityIUserPremiumItem
{
public long UserId { get; set; }
public int PremiumItemId { get; set; }
public long AcquisitionDatetime { get; set; }
public long LatestVersion { get; set; }
}

View File

@@ -0,0 +1,22 @@
using MariesWonderland.Models.Type;
namespace MariesWonderland.Models.Entities;
public class EntityIUserProfile
{
public long UserId { get; set; }
public string Name { get; set; }
public long NameUpdateDatetime { get; set; }
public string Message { get; set; }
public long MessageUpdateDatetime { get; set; }
public int FavoriteCostumeId { get; set; }
public long FavoriteCostumeIdUpdateDatetime { get; set; }
public long LatestVersion { get; set; }
}

View File

@@ -0,0 +1,12 @@
using MariesWonderland.Models.Type;
namespace MariesWonderland.Models.Entities;
public class EntityIUserPvpDefenseDeck
{
public long UserId { get; set; }
public int UserDeckNumber { get; set; }
public long LatestVersion { get; set; }
}

View File

@@ -0,0 +1,22 @@
using MariesWonderland.Models.Type;
namespace MariesWonderland.Models.Entities;
public class EntityIUserPvpStatus
{
public long UserId { get; set; }
public int StaminaMilliValue { get; set; }
public long StaminaUpdateDatetime { get; set; }
public int LatestRewardReceivePvpSeasonId { get; set; }
public long LatestRewardReceivePvpWeeklyVersion { get; set; }
public int WinStreakCount { get; set; }
public long WinStreakCountUpdateDatetime { get; set; }
public long LatestVersion { get; set; }
}

View File

@@ -0,0 +1,20 @@
using MariesWonderland.Models.Type;
namespace MariesWonderland.Models.Entities;
public class EntityIUserPvpWeeklyResult
{
public long UserId { get; set; }
public long PvpWeeklyVersion { get; set; }
public int PvpSeasonId { get; set; }
public int GroupId { get; set; }
public int FinalPoint { get; set; }
public int FinalRank { get; set; }
public long LatestVersion { get; set; }
}

View File

@@ -0,0 +1,26 @@
using MariesWonderland.Models.Type;
namespace MariesWonderland.Models.Entities;
public class EntityIUserQuest
{
public long UserId { get; set; }
public int QuestId { get; set; }
public int QuestStateType { get; set; }
public bool IsBattleOnly { get; set; }
public long LatestStartDatetime { get; set; }
public int ClearCount { get; set; }
public int DailyClearCount { get; set; }
public long LastClearDatetime { get; set; }
public int ShortestClearFrames { get; set; }
public long LatestVersion { get; set; }
}

View File

@@ -0,0 +1,22 @@
using MariesWonderland.Models.Type;
namespace MariesWonderland.Models.Entities;
public class EntityIUserQuestAutoOrbit
{
public long UserId { get; set; }
public QuestType QuestType { get; set; }
public int ChapterId { get; set; }
public int QuestId { get; set; }
public int MaxAutoOrbitCount { get; set; }
public int ClearedAutoOrbitCount { get; set; }
public long LastClearDatetime { get; set; }
public long LatestVersion { get; set; }
}

View File

@@ -0,0 +1,16 @@
using MariesWonderland.Models.Type;
namespace MariesWonderland.Models.Entities;
public class EntityIUserQuestLimitContentStatus
{
public long UserId { get; set; }
public int QuestId { get; set; }
public int LimitContentQuestStatusType { get; set; }
public int EventQuestChapterId { get; set; }
public long LatestVersion { get; set; }
}

View File

@@ -0,0 +1,20 @@
using MariesWonderland.Models.Type;
namespace MariesWonderland.Models.Entities;
public class EntityIUserQuestMission
{
public long UserId { get; set; }
public int QuestId { get; set; }
public int QuestMissionId { get; set; }
public int ProgressValue { get; set; }
public bool IsClear { get; set; }
public long LatestClearDatetime { get; set; }
public long LatestVersion { get; set; }
}

View File

@@ -0,0 +1,14 @@
using MariesWonderland.Models.Type;
namespace MariesWonderland.Models.Entities;
public class EntityIUserQuestReplayFlowRewardGroup
{
public long UserId { get; set; }
public int QuestReplayFlowRewardGroupId { get; set; }
public long ReceiveDatetime { get; set; }
public long LatestVersion { get; set; }
}

View File

@@ -0,0 +1,14 @@
using MariesWonderland.Models.Type;
namespace MariesWonderland.Models.Entities;
public class EntityIUserQuestSceneChoice
{
public long UserId { get; set; }
public int QuestSceneChoiceGroupingId { get; set; }
public int QuestSceneChoiceEffectId { get; set; }
public long LatestVersion { get; set; }
}

View File

@@ -0,0 +1,14 @@
using MariesWonderland.Models.Type;
namespace MariesWonderland.Models.Entities;
public class EntityIUserQuestSceneChoiceHistory
{
public long UserId { get; set; }
public int QuestSceneChoiceEffectId { get; set; }
public long ChoiceDatetime { get; set; }
public long LatestVersion { get; set; }
}

View File

@@ -0,0 +1,12 @@
using MariesWonderland.Models.Type;
namespace MariesWonderland.Models.Entities;
public class EntityIUserSetting
{
public long UserId { get; set; }
public bool IsNotifyPurchaseAlert { get; set; }
public long LatestVersion { get; set; }
}

View File

@@ -0,0 +1,16 @@
using MariesWonderland.Models.Type;
namespace MariesWonderland.Models.Entities;
public class EntityIUserShopItem
{
public long UserId { get; set; }
public int ShopItemId { get; set; }
public int BoughtCount { get; set; }
public long LatestBoughtCountChangedDatetime { get; set; }
public long LatestVersion { get; set; }
}

View File

@@ -0,0 +1,14 @@
using MariesWonderland.Models.Type;
namespace MariesWonderland.Models.Entities;
public class EntityIUserShopReplaceable
{
public long UserId { get; set; }
public int LineupUpdateCount { get; set; }
public long LatestLineupUpdateDatetime { get; set; }
public long LatestVersion { get; set; }
}

Some files were not shown because too many files have changed in this diff Show More