Skip to content

Commit

Permalink
Imaginarium Theater
Browse files Browse the repository at this point in the history
  • Loading branch information
Scighost committed Aug 24, 2024
1 parent 893cd59 commit 47c00d7
Show file tree
Hide file tree
Showing 28 changed files with 1,924 additions and 8 deletions.
2 changes: 1 addition & 1 deletion src/Starward.Core/EnumExtension.cs
Original file line number Diff line number Diff line change
Expand Up @@ -271,7 +271,7 @@ public static string ToLocalization(this StarRailQueryType starRailQueryType)



public static string ToLocalization(this ZZZQueryType zZZQueryType)
public static string ToLocalization(this ZZZQueryType zZZQueryType)
{
return zZZQueryType switch
{
Expand Down
16 changes: 16 additions & 0 deletions src/Starward.Core/GameRecord/GameRecordClient.cs
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@
using System.Net;
using System.Security.Cryptography;
using System.Text;
using Starward.Core.GameRecord.Genshin.ImaginariumTheater;

#if !DEBUG
using System.Net.Http.Json;
#endif
Expand Down Expand Up @@ -274,6 +276,17 @@ protected virtual async Task CommonSendAsync(HttpRequestMessage request, Cancell
public abstract Task<TravelersDiaryDetail> GetTravelsDiaryDetailAsync(GameRecordRole role, int month, int type, int limit = 100, CancellationToken cancellationToken = default);



/// <summary>
/// 幻想真境剧诗
/// </summary>
/// <param name="role"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public abstract Task<List<ImaginariumTheaterInfo>> GetImaginariumTheaterInfosAsync(GameRecordRole role, CancellationToken cancellationToken = default);



#endregion


Expand Down Expand Up @@ -375,5 +388,8 @@ protected virtual async Task CommonSendAsync(HttpRequestMessage request, Cancell
// 黄金与机械
// https://api-takumi-record.mihoyo.com/game_record/app/hkrpg/api/rogue_nous?server=prod_gf_cn&role_id={uid}&need_detail=true

// 幻想真境剧诗
// https://api-takumi-record.mihoyo.com/game_record/app/genshin/api/role_combat?server=cn_gf01&role_id={uid}&active=1&need_detail=true


}
4 changes: 3 additions & 1 deletion src/Starward.Core/GameRecord/GameRecordJsonContext.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using Starward.Core.GameRecord.Genshin.SpiralAbyss;
using Starward.Core.GameRecord.Genshin.ImaginariumTheater;
using Starward.Core.GameRecord.Genshin.SpiralAbyss;
using Starward.Core.GameRecord.Genshin.TravelersDiary;
using Starward.Core.GameRecord.StarRail.ApocalypticShadow;
using Starward.Core.GameRecord.StarRail.ForgottenHall;
Expand All @@ -24,6 +25,7 @@ namespace Starward.Core.GameRecord;
[JsonSerializable(typeof(miHoYoApiWrapper<SimulatedUniverseInfo>))]
[JsonSerializable(typeof(miHoYoApiWrapper<SimulatedUniverseTime>))]
[JsonSerializable(typeof(miHoYoApiWrapper<DeviceFpResult>))]
[JsonSerializable(typeof(miHoYoApiWrapper<ImaginariumTheaterWarpper>))]
internal partial class GameRecordJsonContext : JsonSerializerContext
{

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
using System.Text.Json.Serialization;

namespace Starward.Core.GameRecord.Genshin.ImaginariumTheater;

public class ImaginariumTheaterAvatar
{

[JsonPropertyName("avatar_id")]
public int AvatarId { get; set; }

/// <summary>
/// 1 自己角色,2 试用角色,3 助演角色
/// </summary>
[JsonPropertyName("avatar_type")]
public int AvatarType { get; set; }


[JsonPropertyName("name")]
public string Name { get; set; }


[JsonPropertyName("element")]
public string Element { get; set; }


[JsonPropertyName("image")]
public string Image { get; set; }


[JsonPropertyName("level")]
public int Level { get; set; }


[JsonPropertyName("rarity")]
public int Rarity { get; set; }


[JsonExtensionData]
public Dictionary<string, object>? ExtensionData { get; set; }

}

Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
using System.Text.Json.Serialization;

namespace Starward.Core.GameRecord.Genshin.ImaginariumTheater;

public class ImaginariumTheaterBuff
{

[JsonPropertyName("icon")]
public string Icon { get; set; }


[JsonPropertyName("name")]
public string Name { get; set; }


[JsonPropertyName("desc")]
public string Desc { get; set; }

/// <summary>
/// 已强化
/// </summary>
[JsonPropertyName("is_enhanced")]
public bool IsEnhanced { get; set; }


[JsonPropertyName("id")]
public int Id { get; set; }


[JsonExtensionData]
public Dictionary<string, object>? ExtensionData { get; set; }

}

Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
using System.Text.Json.Serialization;

namespace Starward.Core.GameRecord.Genshin.ImaginariumTheater;

public class ImaginariumTheaterDetail
{

[JsonPropertyName("rounds_data")]
public List<ImaginariumTheaterRoundsData> RoundsData { get; set; }

/// <summary>
/// 数据不全,完整数据参考 <see cref="ImaginariumTheaterInfo.Stat"/>
/// </summary>
[JsonPropertyName("detail_stat")]
public ImaginariumTheaterStat DetailStat { get; set; }


[JsonPropertyName("lineup_link")]
public string LineupLink { get; set; }

/// <summary>
/// 待命角色
/// </summary>
[JsonPropertyName("backup_avatars")]
public List<ImaginariumTheaterAvatar> BackupAvatars { get; set; }


[JsonPropertyName("fight_statisic")]
public ImaginariumTheaterFightStatisic FightStatisic { get; set; }


[JsonExtensionData]
public Dictionary<string, object>? ExtensionData { get; set; }

}

Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
using System.Text.Json.Serialization;

namespace Starward.Core.GameRecord.Genshin.ImaginariumTheater;

public class ImaginariumTheaterEnemy
{

[JsonPropertyName("name")]
public string Name { get; set; }


[JsonPropertyName("icon")]
public string Icon { get; set; }


[JsonPropertyName("level")]
public int Level { get; set; }


[JsonExtensionData]
public Dictionary<string, object>? ExtensionData { get; set; }

}

Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
using System.Text.Json.Serialization;

namespace Starward.Core.GameRecord.Genshin.ImaginariumTheater;

public class ImaginariumTheaterFightStatisic
{

/// <summary>
/// 击败最多敌人
/// </summary>
[JsonPropertyName("max_defeat_avatar")]
public ImaginariumTheaterFightStatisicAvatar MaxDefeatAvatar { get; set; }

/// <summary>
/// 最高伤害输出
/// </summary>
[JsonPropertyName("max_damage_avatar")]
public ImaginariumTheaterFightStatisicAvatar MaxDamageAvatar { get; set; }

/// <summary>
/// 最高承受伤害
/// </summary>
[JsonPropertyName("max_take_damage_avatar")]
public ImaginariumTheaterFightStatisicAvatar MaxTakeDamageAvatar { get; set; }

/// <summary>
/// 本次消耗幻剧之花
/// </summary>
[JsonPropertyName("total_coin_consumed")]
public ImaginariumTheaterFightStatisicAvatar TotalCoinConsumed { get; set; }

/// <summary>
/// 最快完成演出的队伍
/// </summary>
[JsonPropertyName("shortest_avatar_list")]
public List<ImaginariumTheaterFightStatisicAvatar> ShortestAvatarList { get; set; }

/// <summary>
/// 演出总时长(秒)
/// </summary>
[JsonPropertyName("total_use_time")]
public int TotalUseTime { get; set; }


[JsonPropertyName("is_show_battle_stats")]
public bool IsShowBattleStats { get; set; }


[JsonExtensionData]
public Dictionary<string, object>? ExtensionData { get; set; }

}

Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
using System.Text.Json.Serialization;

namespace Starward.Core.GameRecord.Genshin.ImaginariumTheater;

public class ImaginariumTheaterFightStatisicAvatar
{

[JsonPropertyName("avatar_id")]
public int AvatarId { get; set; }


[JsonPropertyName("avatar_icon")]
public string AvatarIcon { get; set; }


[JsonPropertyName("value")]
public string Value { get; set; }


[JsonPropertyName("rarity")]
public int Rarity { get; set; }


[JsonExtensionData]
public Dictionary<string, object>? ExtensionData { get; set; }

}

Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
using Starward.Core.Gacha;
using System.Text.Json.Serialization;

namespace Starward.Core.GameRecord.Genshin.ImaginariumTheater;

public class ImaginariumTheaterInfo
{

[JsonPropertyName("uid")]
[JsonNumberHandling(JsonNumberHandling.AllowReadingFromString | JsonNumberHandling.WriteAsString)]
public long Uid { get; set; }


[JsonPropertyName("schedule_id")]
public int ScheduleId { get; set; }


[JsonPropertyName("start_time")]
[JsonConverter(typeof(DateTimeJsonConverter))]
public DateTime StartTime { get; set; }

[JsonPropertyName("end_time")]
[JsonConverter(typeof(DateTimeJsonConverter))]
public DateTime EndTime { get; set; }

/// <summary>
/// 难度
/// </summary>
[JsonPropertyName("difficulty_id")]
public int DifficultyId { get; set; }

/// <summary>
/// 抵达最大轮数
/// </summary>
[JsonPropertyName("max_round_id")]
public int MaxRoundId { get; set; }

/// <summary>
/// 纹章类型
/// </summary>
[JsonPropertyName("heraldry")]
public int Heraldry { get; set; }

/// <summary>
/// 明星挑战星章数量
/// </summary>
[JsonPropertyName("medal_num")]
public int MedalNum { get; set; }


[JsonPropertyName("detail")]
public ImaginariumTheaterDetail Detail { get; set; }


[JsonPropertyName("stat")]
public ImaginariumTheaterStat Stat { get; set; }


[JsonPropertyName("schedule")]
public ImaginariumTheaterSchedule Schedule { get; set; }


[JsonPropertyName("has_data")]
public bool HasData { get; set; }


[JsonPropertyName("has_detail_data")]
public bool HasDetailData { get; set; }


[JsonExtensionData]
public Dictionary<string, object>? ExtensionData { get; set; }

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
using System.Text.Json.Serialization;

namespace Starward.Core.GameRecord.Genshin.ImaginariumTheater;

public class ImaginariumTheaterLinks
{
[JsonPropertyName("lineup_link")]
public string LineupLink { get; set; }

[JsonPropertyName("lineup_link_pc")]
public string LineupLinkPc { get; set; }

[JsonPropertyName("strategy_link")]
public string StrategyLink { get; set; }

[JsonPropertyName("lineup_publish_link")]
public string LineupPublishLink { get; set; }

[JsonPropertyName("lineup_publish_link_pc")]
public string LineupPublishLinkPc { get; set; }


[JsonExtensionData]
public Dictionary<string, object>? ExtensionData { get; set; }
}

Loading

0 comments on commit 47c00d7

Please sign in to comment.