Story
This commit is contained in:
17
SVSim.EmulatedEntrypoint/Models/Dtos/Story/AllFinishDtos.cs
Normal file
17
SVSim.EmulatedEntrypoint/Models/Dtos/Story/AllFinishDtos.cs
Normal file
@@ -0,0 +1,17 @@
|
||||
using MessagePack;
|
||||
using System.Text.Json.Serialization;
|
||||
using SVSim.EmulatedEntrypoint.Models.Dtos.Requests;
|
||||
|
||||
namespace SVSim.EmulatedEntrypoint.Models.Dtos.Story;
|
||||
|
||||
[MessagePackObject]
|
||||
public class AllFinishRequest : BaseRequest
|
||||
{
|
||||
[JsonPropertyName("story_ids")]
|
||||
[Key("story_ids")]
|
||||
public int[] StoryIds { get; set; } = Array.Empty<int>();
|
||||
|
||||
[JsonPropertyName("is_finish")]
|
||||
[Key("is_finish")]
|
||||
public int IsFinish { get; set; }
|
||||
}
|
||||
158
SVSim.EmulatedEntrypoint/Models/Dtos/Story/FinishDtos.cs
Normal file
158
SVSim.EmulatedEntrypoint/Models/Dtos/Story/FinishDtos.cs
Normal file
@@ -0,0 +1,158 @@
|
||||
using MessagePack;
|
||||
using System.Text.Json.Serialization;
|
||||
using SVSim.EmulatedEntrypoint.Models.Dtos.Common;
|
||||
using SVSim.EmulatedEntrypoint.Models.Dtos.Requests;
|
||||
|
||||
namespace SVSim.EmulatedEntrypoint.Models.Dtos.Story;
|
||||
|
||||
// GatheringInfo and CompetitionInfo resolve via the parent Models.Dtos namespace (C# walks outward).
|
||||
|
||||
[MessagePackObject]
|
||||
public class FinishRequest : BaseRequest
|
||||
{
|
||||
[JsonPropertyName("story_id")]
|
||||
[Key("story_id")]
|
||||
public int StoryId { get; set; }
|
||||
|
||||
[JsonPropertyName("is_finish")]
|
||||
[Key("is_finish")]
|
||||
public int IsFinish { get; set; }
|
||||
|
||||
// Battle-shape fields (present only on play-shape)
|
||||
[JsonPropertyName("evolve_count")]
|
||||
[Key("evolve_count")]
|
||||
public int? EvolveCount { get; set; }
|
||||
|
||||
[JsonPropertyName("total_turn")]
|
||||
[Key("total_turn")]
|
||||
public int? TotalTurn { get; set; }
|
||||
|
||||
[JsonPropertyName("deck_no")]
|
||||
[Key("deck_no")]
|
||||
public int? DeckNo { get; set; }
|
||||
|
||||
[JsonPropertyName("use_build_deck")]
|
||||
[Key("use_build_deck")]
|
||||
public int? UseBuildDeck { get; set; }
|
||||
|
||||
[JsonPropertyName("deck_format")]
|
||||
[Key("deck_format")]
|
||||
public int? DeckFormat { get; set; }
|
||||
|
||||
[JsonPropertyName("class_id")]
|
||||
[Key("class_id")]
|
||||
public int? ClassId { get; set; }
|
||||
|
||||
[JsonPropertyName("mission")]
|
||||
[Key("mission")]
|
||||
public Dictionary<string, int>? Mission { get; set; }
|
||||
|
||||
[JsonPropertyName("recovery_data")]
|
||||
[Key("recovery_data")]
|
||||
public string? RecoveryData { get; set; }
|
||||
|
||||
// Misspelled the same way in every solo finish endpoint — preserved on the wire.
|
||||
[JsonPropertyName("prosessing_time_data")]
|
||||
[Key("prosessing_time_data")]
|
||||
public string[]? ProsessingTimeData { get; set; }
|
||||
|
||||
// No-battle-shape fields
|
||||
[JsonPropertyName("selection_chapter_id")]
|
||||
[Key("selection_chapter_id")]
|
||||
public string? SelectionChapterId { get; set; }
|
||||
|
||||
[JsonPropertyName("is_select_another_end")]
|
||||
[Key("is_select_another_end")]
|
||||
public bool? IsSelectAnotherEnd { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Derived: true when the request carries battle-shape fields (ClassId present = play-shape).
|
||||
/// Kept off both serializations.
|
||||
/// </summary>
|
||||
[JsonIgnore]
|
||||
[IgnoreMember]
|
||||
public bool IsPlayShape => ClassId.HasValue;
|
||||
}
|
||||
|
||||
[MessagePackObject]
|
||||
public class FinishResponse
|
||||
{
|
||||
[JsonPropertyName("get_class_experience")]
|
||||
[Key("get_class_experience")]
|
||||
public string GetClassExperience { get; set; } = "0";
|
||||
|
||||
[JsonPropertyName("class_experience")]
|
||||
[Key("class_experience")]
|
||||
public int ClassExperience { get; set; }
|
||||
|
||||
[JsonPropertyName("class_level")]
|
||||
[Key("class_level")]
|
||||
public string ClassLevel { get; set; } = "0";
|
||||
|
||||
[JsonPropertyName("achieved_info")]
|
||||
[Key("achieved_info")]
|
||||
public Dictionary<string, object> AchievedInfo { get; set; } = new();
|
||||
|
||||
[JsonPropertyName("reward_list")]
|
||||
[Key("reward_list")]
|
||||
public List<RewardGrant> RewardList { get; set; } = new();
|
||||
|
||||
[JsonPropertyName("story_reward_list")]
|
||||
[Key("story_reward_list")]
|
||||
public List<RewardGrant> StoryRewardList { get; set; } = new();
|
||||
|
||||
// ─── Post-action mypage badge cluster ───
|
||||
//
|
||||
// MyPageNotifications.ParseBadgeInfos (Wizard/MyPageNotifications.cs:9) reads every key below
|
||||
// unguardedly; omitting any one throws KeyNotFoundException in Cute.NetworkManager.Connect and
|
||||
// aborts the response. The same cluster ships from every endpoint that calls ParseBadgeInfos
|
||||
// (StoryFinishTask, QuestFinishTask, RecoveryTask, OpenRoomBattleGetRecoveryParamTask).
|
||||
|
||||
[JsonPropertyName("quest")]
|
||||
[Key("quest")]
|
||||
public BadgeFlag Quest { get; set; } = new();
|
||||
|
||||
[JsonPropertyName("story_notification")]
|
||||
[Key("story_notification")]
|
||||
public BadgeFlag StoryNotification { get; set; } = new();
|
||||
|
||||
[JsonPropertyName("basic_puzzle")]
|
||||
[Key("basic_puzzle")]
|
||||
public BadgeFlag BasicPuzzle { get; set; } = new();
|
||||
|
||||
[JsonPropertyName("shop_notification")]
|
||||
[Key("shop_notification")]
|
||||
public ShopNotificationBadges ShopNotification { get; set; } = new();
|
||||
|
||||
[JsonPropertyName("receive_friend_apply_count")]
|
||||
[Key("receive_friend_apply_count")]
|
||||
public int ReceiveFriendApplyCount { get; set; }
|
||||
|
||||
[JsonPropertyName("gathering_info")]
|
||||
[Key("gathering_info")]
|
||||
public GatheringInfo GatheringInfo { get; set; } = new();
|
||||
|
||||
[JsonPropertyName("competition_info")]
|
||||
[Key("competition_info")]
|
||||
public CompetitionInfo CompetitionInfo { get; set; } = new();
|
||||
|
||||
[JsonPropertyName("is_available_colosseum_free_entry")]
|
||||
[Key("is_available_colosseum_free_entry")]
|
||||
public bool IsAvailableColosseumFreeEntry { get; set; }
|
||||
}
|
||||
|
||||
[MessagePackObject]
|
||||
public class RewardGrant
|
||||
{
|
||||
[JsonPropertyName("reward_type")]
|
||||
[Key("reward_type")]
|
||||
public string RewardType { get; set; } = "";
|
||||
|
||||
[JsonPropertyName("reward_id")]
|
||||
[Key("reward_id")]
|
||||
public string RewardId { get; set; } = "";
|
||||
|
||||
[JsonPropertyName("reward_num")]
|
||||
[Key("reward_num")]
|
||||
public string RewardNum { get; set; } = "";
|
||||
}
|
||||
@@ -0,0 +1,39 @@
|
||||
using MessagePack;
|
||||
using System.Text.Json.Serialization;
|
||||
using SVSim.EmulatedEntrypoint.Models.Dtos.Requests;
|
||||
|
||||
namespace SVSim.EmulatedEntrypoint.Models.Dtos.Story;
|
||||
|
||||
[MessagePackObject]
|
||||
public class GetDeckListRequest : BaseRequest
|
||||
{
|
||||
[JsonPropertyName("story_id")]
|
||||
[Key("story_id")]
|
||||
public int StoryId { get; set; }
|
||||
}
|
||||
|
||||
[MessagePackObject]
|
||||
public class GetDeckListResponse
|
||||
{
|
||||
[JsonPropertyName("user_deck_rotation")]
|
||||
[Key("user_deck_rotation")]
|
||||
public List<UserDeck> UserDeckRotation { get; set; } = new();
|
||||
|
||||
[JsonPropertyName("user_deck_unlimited")]
|
||||
[Key("user_deck_unlimited")]
|
||||
public List<UserDeck> UserDeckUnlimited { get; set; } = new();
|
||||
|
||||
[JsonPropertyName("maintenance_card_list")]
|
||||
[Key("maintenance_card_list")]
|
||||
public List<long> MaintenanceCardList { get; set; } = new();
|
||||
|
||||
[JsonPropertyName("build_deck_list")]
|
||||
[Key("build_deck_list")]
|
||||
public List<BuildDeck> BuildDeckList { get; set; } = new();
|
||||
}
|
||||
|
||||
[MessagePackObject]
|
||||
public class BuildDeck
|
||||
{
|
||||
// Placeholder — build decks return [] for v1 per spec.
|
||||
}
|
||||
222
SVSim.EmulatedEntrypoint/Models/Dtos/Story/InfoDtos.cs
Normal file
222
SVSim.EmulatedEntrypoint/Models/Dtos/Story/InfoDtos.cs
Normal file
@@ -0,0 +1,222 @@
|
||||
using MessagePack;
|
||||
using System.Text.Json.Serialization;
|
||||
using SVSim.EmulatedEntrypoint.Models.Dtos.Requests;
|
||||
|
||||
namespace SVSim.EmulatedEntrypoint.Models.Dtos.Story;
|
||||
|
||||
[MessagePackObject]
|
||||
public class InfoRequest : BaseRequest
|
||||
{
|
||||
[JsonPropertyName("section_id")]
|
||||
[Key("section_id")]
|
||||
public int SectionId { get; set; }
|
||||
|
||||
[JsonPropertyName("chara_id")]
|
||||
[Key("chara_id")]
|
||||
public int CharaId { get; set; } // 0 for non-leader-select
|
||||
}
|
||||
|
||||
[MessagePackObject]
|
||||
public class InfoResponse
|
||||
{
|
||||
[JsonPropertyName("story_master_list")]
|
||||
[Key("story_master_list")]
|
||||
public List<StoryMasterEntry> StoryMasterList { get; set; } = new();
|
||||
|
||||
[JsonPropertyName("maintenance_card_list")]
|
||||
[Key("maintenance_card_list")]
|
||||
public List<long> MaintenanceCardList { get; set; } = new();
|
||||
}
|
||||
|
||||
[MessagePackObject]
|
||||
public class StoryMasterEntry
|
||||
{
|
||||
[JsonPropertyName("story_id")]
|
||||
[Key("story_id")]
|
||||
public string StoryId { get; set; } = "";
|
||||
|
||||
[JsonPropertyName("section_id")]
|
||||
[Key("section_id")]
|
||||
public string SectionId { get; set; } = "";
|
||||
|
||||
[JsonPropertyName("chara_id")]
|
||||
[Key("chara_id")]
|
||||
public string CharaId { get; set; } = "";
|
||||
|
||||
[JsonPropertyName("chapter_id")]
|
||||
[Key("chapter_id")]
|
||||
public string ChapterId { get; set; } = "";
|
||||
|
||||
[JsonPropertyName("is_lock")]
|
||||
[Key("is_lock")]
|
||||
public bool IsLock { get; set; }
|
||||
|
||||
[JsonPropertyName("next_chapter_id")]
|
||||
[Key("next_chapter_id")]
|
||||
public string NextChapterId { get; set; } = "";
|
||||
|
||||
[JsonPropertyName("required_chapter_id")]
|
||||
[Key("required_chapter_id")]
|
||||
public string RequiredChapterId { get; set; } = "";
|
||||
|
||||
[JsonPropertyName("selection_display_position")]
|
||||
[Key("selection_display_position")]
|
||||
public string SelectionDisplayPosition { get; set; } = "";
|
||||
|
||||
[JsonPropertyName("selection_text_id")]
|
||||
[Key("selection_text_id")]
|
||||
public string SelectionTextId { get; set; } = "";
|
||||
|
||||
[JsonPropertyName("show_coordinate")]
|
||||
[Key("show_coordinate")]
|
||||
public string ShowCoordinate { get; set; } = "";
|
||||
|
||||
[JsonPropertyName("x_coordinate")]
|
||||
[Key("x_coordinate")]
|
||||
public string XCoordinate { get; set; } = "";
|
||||
|
||||
[JsonPropertyName("y_coordinate")]
|
||||
[Key("y_coordinate")]
|
||||
public string YCoordinate { get; set; } = "";
|
||||
|
||||
// Wire typo preserved: note the space in "is_camera_ movable"
|
||||
[JsonPropertyName("is_camera_ movable")]
|
||||
[Key("is_camera_ movable")]
|
||||
public string IsCameraMovable { get; set; } = "";
|
||||
|
||||
[JsonPropertyName("show_subtitles")]
|
||||
[Key("show_subtitles")]
|
||||
public string ShowSubtitles { get; set; } = "";
|
||||
|
||||
[JsonPropertyName("battle_exists")]
|
||||
[Key("battle_exists")]
|
||||
public bool BattleExists { get; set; }
|
||||
|
||||
[JsonPropertyName("enemy_chara_id")]
|
||||
[Key("enemy_chara_id")]
|
||||
public string EnemyCharaId { get; set; } = "";
|
||||
|
||||
[JsonPropertyName("enemy_class")]
|
||||
[Key("enemy_class")]
|
||||
public string EnemyClass { get; set; } = "";
|
||||
|
||||
[JsonPropertyName("enemy_ai_id")]
|
||||
[Key("enemy_ai_id")]
|
||||
public string EnemyAiId { get; set; } = "";
|
||||
|
||||
[JsonPropertyName("bg_file_name")]
|
||||
[Key("bg_file_name")]
|
||||
public string BgFileName { get; set; } = "";
|
||||
|
||||
[JsonPropertyName("chapter_effect_path")]
|
||||
[Key("chapter_effect_path")]
|
||||
public string ChapterEffectPath { get; set; } = "";
|
||||
|
||||
[JsonPropertyName("chapter_clear_text_id")]
|
||||
[Key("chapter_clear_text_id")]
|
||||
public string ChapterClearTextId { get; set; } = "";
|
||||
|
||||
[JsonPropertyName("battle3dfield_id")]
|
||||
[Key("battle3dfield_id")]
|
||||
public string Battle3dFieldId { get; set; } = "";
|
||||
|
||||
[JsonPropertyName("bgm_id")]
|
||||
[Key("bgm_id")]
|
||||
public string BgmId { get; set; } = "";
|
||||
|
||||
[JsonPropertyName("special_battle_setting_id")]
|
||||
[Key("special_battle_setting_id")]
|
||||
public string SpecialBattleSettingId { get; set; } = "";
|
||||
|
||||
[JsonPropertyName("release_point")]
|
||||
[Key("release_point")]
|
||||
public string ReleasePoint { get; set; } = "";
|
||||
|
||||
[JsonPropertyName("battle_settings")]
|
||||
[Key("battle_settings")]
|
||||
public List<BattleSettingDto> BattleSettings { get; set; } = new();
|
||||
|
||||
[JsonPropertyName("story_reward")]
|
||||
[Key("story_reward")]
|
||||
public List<RewardDto> StoryReward { get; set; } = new();
|
||||
|
||||
[JsonPropertyName("is_maintenance_chapter")]
|
||||
[Key("is_maintenance_chapter")]
|
||||
public bool IsMaintenanceChapter { get; set; }
|
||||
|
||||
[JsonPropertyName("is_released")]
|
||||
[Key("is_released")]
|
||||
public bool IsReleased { get; set; }
|
||||
|
||||
[JsonPropertyName("is_skipped")]
|
||||
[Key("is_skipped")]
|
||||
public bool IsSkipped { get; set; }
|
||||
|
||||
[JsonPropertyName("is_finish")]
|
||||
[Key("is_finish")]
|
||||
public bool IsFinish { get; set; }
|
||||
|
||||
[JsonPropertyName("unlock_text")]
|
||||
[Key("unlock_text")]
|
||||
public string UnlockText { get; set; } = "";
|
||||
|
||||
[JsonPropertyName("is_play_another_end_appearance_animation")]
|
||||
[Key("is_play_another_end_appearance_animation")]
|
||||
public bool IsPlayAnotherEndAppearanceAnimation { get; set; }
|
||||
|
||||
[JsonPropertyName("is_released_another_end")]
|
||||
[Key("is_released_another_end")]
|
||||
public bool IsReleasedAnotherEnd { get; set; }
|
||||
|
||||
[JsonPropertyName("is_skip_enabled")]
|
||||
[Key("is_skip_enabled")]
|
||||
public bool IsSkipEnabled { get; set; }
|
||||
}
|
||||
|
||||
[MessagePackObject]
|
||||
public class BattleSettingDto
|
||||
{
|
||||
[JsonPropertyName("deck_class_id")]
|
||||
[Key("deck_class_id")]
|
||||
public int DeckClassId { get; set; }
|
||||
|
||||
[JsonPropertyName("player_emotion_override")]
|
||||
[Key("player_emotion_override")]
|
||||
public int PlayerEmotionOverride { get; set; }
|
||||
|
||||
[JsonPropertyName("enemy_emotion_override")]
|
||||
[Key("enemy_emotion_override")]
|
||||
public int EnemyEmotionOverride { get; set; }
|
||||
|
||||
[JsonPropertyName("skin_id_override")]
|
||||
[Key("skin_id_override")]
|
||||
public int SkinIdOverride { get; set; }
|
||||
|
||||
[JsonPropertyName("battle3dfield_id_override")]
|
||||
[Key("battle3dfield_id_override")]
|
||||
public int Battle3dFieldIdOverride { get; set; }
|
||||
|
||||
[JsonPropertyName("bgm_id_override")]
|
||||
[Key("bgm_id_override")]
|
||||
public int BgmIdOverride { get; set; }
|
||||
|
||||
[JsonPropertyName("deck_skin_id_override")]
|
||||
[Key("deck_skin_id_override")]
|
||||
public int DeckSkinIdOverride { get; set; }
|
||||
}
|
||||
|
||||
[MessagePackObject]
|
||||
public class RewardDto
|
||||
{
|
||||
[JsonPropertyName("reward_type")]
|
||||
[Key("reward_type")]
|
||||
public string RewardType { get; set; } = "";
|
||||
|
||||
[JsonPropertyName("reward_detail_id")]
|
||||
[Key("reward_detail_id")]
|
||||
public string RewardDetailId { get; set; } = "";
|
||||
|
||||
[JsonPropertyName("reward_number")]
|
||||
[Key("reward_number")]
|
||||
public string RewardNumber { get; set; } = "";
|
||||
}
|
||||
@@ -0,0 +1,45 @@
|
||||
using MessagePack;
|
||||
using System.Text.Json.Serialization;
|
||||
using SVSim.EmulatedEntrypoint.Models.Dtos.Requests;
|
||||
|
||||
namespace SVSim.EmulatedEntrypoint.Models.Dtos.Story;
|
||||
|
||||
[MessagePackObject]
|
||||
public class LeaderSelectRequest : BaseRequest
|
||||
{
|
||||
[JsonPropertyName("section_id")]
|
||||
[Key("section_id")]
|
||||
public int SectionId { get; set; }
|
||||
}
|
||||
|
||||
[MessagePackObject]
|
||||
public class LeaderSelectResponse
|
||||
{
|
||||
[JsonPropertyName("leader_list")]
|
||||
[Key("leader_list")]
|
||||
public List<LeaderEntry> LeaderList { get; set; } = new();
|
||||
|
||||
[JsonPropertyName("leader_count")]
|
||||
[Key("leader_count")]
|
||||
public int LeaderCount { get; set; } = 8;
|
||||
}
|
||||
|
||||
[MessagePackObject]
|
||||
public class LeaderEntry
|
||||
{
|
||||
[JsonPropertyName("chara_id")]
|
||||
[Key("chara_id")]
|
||||
public int CharaId { get; set; }
|
||||
|
||||
[JsonPropertyName("is_skipped")]
|
||||
[Key("is_skipped")]
|
||||
public bool IsSkipped { get; set; }
|
||||
|
||||
[JsonPropertyName("is_finished")]
|
||||
[Key("is_finished")]
|
||||
public bool IsFinished { get; set; }
|
||||
|
||||
[JsonPropertyName("current_chapter")]
|
||||
[Key("current_chapter")]
|
||||
public int CurrentChapter { get; set; }
|
||||
}
|
||||
109
SVSim.EmulatedEntrypoint/Models/Dtos/Story/SectionDtos.cs
Normal file
109
SVSim.EmulatedEntrypoint/Models/Dtos/Story/SectionDtos.cs
Normal file
@@ -0,0 +1,109 @@
|
||||
using MessagePack;
|
||||
using System.Text.Json.Serialization;
|
||||
using SVSim.EmulatedEntrypoint.Models.Dtos.Requests;
|
||||
|
||||
namespace SVSim.EmulatedEntrypoint.Models.Dtos.Story;
|
||||
|
||||
[MessagePackObject]
|
||||
public class SectionRequest : BaseRequest
|
||||
{
|
||||
[JsonPropertyName("is_disp_first_tips")]
|
||||
[Key("is_disp_first_tips")]
|
||||
public bool IsDispFirstTips { get; set; }
|
||||
}
|
||||
|
||||
[MessagePackObject]
|
||||
public class SectionResponse
|
||||
{
|
||||
[JsonPropertyName("world_list")]
|
||||
[Key("world_list")]
|
||||
public Dictionary<string, SectionWorld> WorldList { get; set; } = new();
|
||||
}
|
||||
|
||||
[MessagePackObject]
|
||||
public class SectionWorld
|
||||
{
|
||||
[JsonPropertyName("title_text_id")]
|
||||
[Key("title_text_id")]
|
||||
public string TitleTextId { get; set; } = "";
|
||||
|
||||
[JsonPropertyName("panel_image_name")]
|
||||
[Key("panel_image_name")]
|
||||
public string PanelImageName { get; set; } = "";
|
||||
|
||||
[JsonPropertyName("ribbon_text")]
|
||||
[Key("ribbon_text")]
|
||||
public string RibbonText { get; set; } = "";
|
||||
|
||||
[JsonPropertyName("is_complete")]
|
||||
[Key("is_complete")]
|
||||
public bool IsComplete { get; set; }
|
||||
|
||||
[JsonPropertyName("section_list")]
|
||||
[Key("section_list")]
|
||||
public List<SectionEntry> SectionList { get; set; } = new();
|
||||
}
|
||||
|
||||
[MessagePackObject]
|
||||
public class SectionEntry
|
||||
{
|
||||
[JsonPropertyName("section_id")]
|
||||
[Key("section_id")]
|
||||
public string SectionId { get; set; } = "";
|
||||
|
||||
[JsonPropertyName("order_id")]
|
||||
[Key("order_id")]
|
||||
public int OrderId { get; set; }
|
||||
|
||||
[JsonPropertyName("all_story_order_id")]
|
||||
[Key("all_story_order_id")]
|
||||
public string AllStoryOrderId { get; set; } = "";
|
||||
|
||||
[JsonPropertyName("name")]
|
||||
[Key("name")]
|
||||
public string Name { get; set; } = "";
|
||||
|
||||
[JsonPropertyName("image_name")]
|
||||
[Key("image_name")]
|
||||
public string ImageName { get; set; } = "";
|
||||
|
||||
[JsonPropertyName("is_leader_select")]
|
||||
[Key("is_leader_select")]
|
||||
public bool IsLeaderSelect { get; set; }
|
||||
|
||||
[JsonPropertyName("back_ground_id")]
|
||||
[Key("back_ground_id")]
|
||||
public int BackGroundId { get; set; }
|
||||
|
||||
[JsonPropertyName("is_finished")]
|
||||
[Key("is_finished")]
|
||||
public bool IsFinished { get; set; }
|
||||
|
||||
[JsonPropertyName("released_chara_count")]
|
||||
[Key("released_chara_count")]
|
||||
public int ReleasedCharaCount { get; set; }
|
||||
|
||||
[JsonPropertyName("finished_chara_count")]
|
||||
[Key("finished_chara_count")]
|
||||
public int FinishedCharaCount { get; set; }
|
||||
|
||||
[JsonPropertyName("is_under_maintenance")]
|
||||
[Key("is_under_maintenance")]
|
||||
public bool IsUnderMaintenance { get; set; }
|
||||
|
||||
[JsonPropertyName("chapter_select_type")]
|
||||
[Key("chapter_select_type")]
|
||||
public string ChapterSelectType { get; set; } = "1";
|
||||
|
||||
[JsonPropertyName("story_type_overwrite")]
|
||||
[Key("story_type_overwrite")]
|
||||
public string StoryTypeOverwrite { get; set; } = "1";
|
||||
|
||||
[JsonPropertyName("is_new")]
|
||||
[Key("is_new")]
|
||||
public bool IsNew { get; set; }
|
||||
|
||||
[JsonPropertyName("is_play_another_end_appearance_animation")]
|
||||
[Key("is_play_another_end_appearance_animation")]
|
||||
public bool IsPlayAnotherEndAppearanceAnimation { get; set; }
|
||||
}
|
||||
97
SVSim.EmulatedEntrypoint/Models/Dtos/Story/StartDtos.cs
Normal file
97
SVSim.EmulatedEntrypoint/Models/Dtos/Story/StartDtos.cs
Normal file
@@ -0,0 +1,97 @@
|
||||
using MessagePack;
|
||||
using System.Text.Json.Serialization;
|
||||
using SVSim.EmulatedEntrypoint.Models.Dtos.Requests;
|
||||
|
||||
namespace SVSim.EmulatedEntrypoint.Models.Dtos.Story;
|
||||
|
||||
[MessagePackObject]
|
||||
public class StartRequest : BaseRequest
|
||||
{
|
||||
[JsonPropertyName("story_ids")]
|
||||
[Key("story_ids")]
|
||||
public int[] StoryIds { get; set; } = Array.Empty<int>();
|
||||
}
|
||||
|
||||
// The `start` response is dynamic — each numeric key corresponds to a request story_ids index.
|
||||
// We use a Dictionary<string, object> to support both the populated and empty slot shapes.
|
||||
// MessagePack handles Dictionary natively; no [MessagePackObject] needed here.
|
||||
public class StartResponse : Dictionary<string, object>
|
||||
{
|
||||
public void AddSlot(int index, object slotPayload) => this[index.ToString()] = slotPayload;
|
||||
}
|
||||
|
||||
[MessagePackObject]
|
||||
public class StartSlotWithSbs
|
||||
{
|
||||
[JsonPropertyName("special_battle_setting")]
|
||||
[Key("special_battle_setting")]
|
||||
public SpecialBattleSettingDto SpecialBattleSetting { get; set; } = new();
|
||||
}
|
||||
|
||||
[MessagePackObject]
|
||||
public class SpecialBattleSettingDto
|
||||
{
|
||||
[JsonPropertyName("id")]
|
||||
[Key("id")]
|
||||
public string Id { get; set; } = "";
|
||||
|
||||
[JsonPropertyName("player_first_turn")]
|
||||
[Key("player_first_turn")]
|
||||
public string PlayerFirstTurn { get; set; } = "";
|
||||
|
||||
[JsonPropertyName("player_start_pp")]
|
||||
[Key("player_start_pp")]
|
||||
public string PlayerStartPp { get; set; } = "";
|
||||
|
||||
[JsonPropertyName("enemy_start_pp")]
|
||||
[Key("enemy_start_pp")]
|
||||
public string EnemyStartPp { get; set; } = "";
|
||||
|
||||
[JsonPropertyName("player_start_life")]
|
||||
[Key("player_start_life")]
|
||||
public string PlayerStartLife { get; set; } = "";
|
||||
|
||||
[JsonPropertyName("enemy_start_life")]
|
||||
[Key("enemy_start_life")]
|
||||
public string EnemyStartLife { get; set; } = "";
|
||||
|
||||
[JsonPropertyName("player_attach_skill")]
|
||||
[Key("player_attach_skill")]
|
||||
public string PlayerAttachSkill { get; set; } = "";
|
||||
|
||||
[JsonPropertyName("enemy_attach_skill")]
|
||||
[Key("enemy_attach_skill")]
|
||||
public string EnemyAttachSkill { get; set; } = "";
|
||||
|
||||
[JsonPropertyName("id_override_in_battle_log")]
|
||||
[Key("id_override_in_battle_log")]
|
||||
public string IdOverrideInBattleLog { get; set; } = "";
|
||||
|
||||
[JsonPropertyName("banish_effect_override")]
|
||||
[Key("banish_effect_override")]
|
||||
public string BanishEffectOverride { get; set; } = "";
|
||||
|
||||
[JsonPropertyName("token_draw_effect_override")]
|
||||
[Key("token_draw_effect_override")]
|
||||
public string TokenDrawEffectOverride { get; set; } = "";
|
||||
|
||||
[JsonPropertyName("special_token_draw_effect_override")]
|
||||
[Key("special_token_draw_effect_override")]
|
||||
public string SpecialTokenDrawEffectOverride { get; set; } = "";
|
||||
|
||||
[JsonPropertyName("result_skip")]
|
||||
[Key("result_skip")]
|
||||
public string ResultSkip { get; set; } = "";
|
||||
|
||||
[JsonPropertyName("vs_effect_override")]
|
||||
[Key("vs_effect_override")]
|
||||
public string VsEffectOverride { get; set; } = "";
|
||||
|
||||
[JsonPropertyName("class_destroy_effect_override")]
|
||||
[Key("class_destroy_effect_override")]
|
||||
public string ClassDestroyEffectOverride { get; set; } = "";
|
||||
|
||||
[JsonPropertyName("note")]
|
||||
[Key("note")]
|
||||
public string Note { get; set; } = "";
|
||||
}
|
||||
Reference in New Issue
Block a user