Add project files.

This commit is contained in:
2026-03-08 20:45:01 +01:00
commit 053a4052dd
45 changed files with 2578 additions and 0 deletions

View File

@@ -0,0 +1,12 @@
using System.Text.Json.Serialization;
namespace LeagueAPI.Models.ChampSelect;
public record class BenchChampion
{
[JsonPropertyName("championId")]
public int ChampionId { get; init; }
[JsonPropertyName("isPriority")]
public bool IsPriority { get; init; }
}

View File

@@ -0,0 +1,15 @@
using System.Text.Json.Serialization;
namespace LeagueAPI.Models.ChampSelect;
public record class ChampSelectBannedChampions
{
[JsonPropertyName("myTeamBans")]
public int[] MyTeamBans { get; init; } = [];
[JsonPropertyName("theirTeamBans")]
public int[] TheirTeamBans { get; init; } = [];
[JsonPropertyName("numBans")]
public int NumBans { get; init; }
}

View File

@@ -0,0 +1,15 @@
using System.Text.Json.Serialization;
namespace LeagueAPI.Models.ChampSelect;
public record class ChampSelectChatRoomDetails
{
[JsonPropertyName("multiUserChatId")]
public string? MultiUserChatId { get; init; }
[JsonPropertyName("multiUserChatPassword")]
public string? MultiUserChatPassword { get; init; }
[JsonPropertyName("mucJwtDto")]
public MucJwtDto? MucJwtDto { get; init; }
}

View File

@@ -0,0 +1,75 @@
using System.Text.Json.Serialization;
namespace LeagueAPI.Models.ChampSelect;
public record class ChampSelectPlayerSelection
{
[JsonPropertyName("cellId")]
public long CellId { get; init; }
[JsonPropertyName("championId")]
public int ChampionId { get; init; }
[JsonPropertyName("selectedSkinId")]
public int SelectedSkinId { get; init; }
[JsonPropertyName("wardSkinId")]
public long WardSkinId { get; init; }
[JsonPropertyName("spell1Id")]
public ulong Spell1Id { get; init; }
[JsonPropertyName("spell2Id")]
public ulong Spell2Id { get; init; }
[JsonPropertyName("team")]
public int Team { get; init; }
[JsonPropertyName("assignedPosition")]
public string? AssignedPosition { get; init; }
[JsonPropertyName("championPickIntent")]
public int ChampionPickIntent { get; init; }
[JsonPropertyName("playerType")]
public string? PlayerType { get; init; }
[JsonPropertyName("summonerId")]
public ulong SummonerId { get; init; }
[JsonPropertyName("gameName")]
public string? GameName { get; init; }
[JsonPropertyName("tagLine")]
public string? TagLine { get; init; }
[JsonPropertyName("puuid")]
public string? Puuid { get; init; }
[JsonPropertyName("isHumanoid")]
public bool IsHumanoid { get; init; }
[JsonPropertyName("nameVisibilityType")]
public string? NameVisibilityType { get; init; }
[JsonPropertyName("playerAlias")]
public string? PlayerAlias { get; init; }
[JsonPropertyName("obfuscatedSummonerId")]
public ulong ObfuscatedSummonerId { get; init; }
[JsonPropertyName("obfuscatedPuuid")]
public string? ObfuscatedPuuid { get; init; }
[JsonPropertyName("isAutofilled")]
public bool IsAutofilled { get; init; }
[JsonPropertyName("internalName")]
public string? InternalName { get; init; }
[JsonPropertyName("pickMode")]
public int PickMode { get; init; }
[JsonPropertyName("pickTurn")]
public int PickTurn { get; init; }
}

View File

@@ -0,0 +1,108 @@
using System.Text.Json.Serialization;
namespace LeagueAPI.Models.ChampSelect;
public record class ChampSelectSession
{
[JsonPropertyName("id")]
public string? Id { get; init; }
[JsonPropertyName("gameId")]
public ulong GameId { get; init; }
[JsonPropertyName("queueId")]
public int QueueId { get; init; }
[JsonPropertyName("timer")]
public ChampSelectTimer? Timer { get; init; }
[JsonPropertyName("chatDetails")]
public ChampSelectChatRoomDetails? ChatDetails { get; init; }
[JsonPropertyName("myTeam")]
public ChampSelectPlayerSelection[] MyTeam { get; init; } = [];
[JsonPropertyName("theirTeam")]
public ChampSelectPlayerSelection[] TheirTeam { get; init; } = [];
[JsonPropertyName("trades")]
public ChampSelectSwapContract[] Trades { get; init; } = [];
[JsonPropertyName("pickOrderSwaps")]
public ChampSelectSwapContract[] PickOrderSwaps { get; init; } = [];
[JsonPropertyName("positionSwaps")]
public ChampSelectSwapContract[] PositionSwaps { get; init; } = [];
[JsonPropertyName("actions")]
public object[] Actions { get; init; } = [];
[JsonPropertyName("bans")]
public ChampSelectBannedChampions? Bans { get; init; }
[JsonPropertyName("localPlayerCellId")]
public long LocalPlayerCellId { get; init; }
[JsonPropertyName("isSpectating")]
public bool IsSpectating { get; init; }
[JsonPropertyName("allowSkinSelection")]
public bool AllowSkinSelection { get; init; }
[JsonPropertyName("allowSubsetChampionPicks")]
public bool AllowSubsetChampionPicks { get; init; }
[JsonPropertyName("allowDuplicatePicks")]
public bool AllowDuplicatePicks { get; init; }
[JsonPropertyName("allowPlayerPickSameChampion")]
public bool AllowPlayerPickSameChampion { get; init; }
[JsonPropertyName("disallowBanningTeammateHoveredChampions")]
public bool DisallowBanningTeammateHoveredChampions { get; init; }
[JsonPropertyName("allowBattleBoost")]
public bool AllowBattleBoost { get; init; }
[JsonPropertyName("boostableSkinCount")]
public int BoostableSkinCount { get; init; }
[JsonPropertyName("allowRerolling")]
public bool AllowRerolling { get; init; }
[JsonPropertyName("rerollsRemaining")]
public ulong RerollsRemaining { get; init; }
[JsonPropertyName("allowLockedEvents")]
public bool AllowLockedEvents { get; init; }
[JsonPropertyName("lockedEventIndex")]
public int LockedEventIndex { get; init; }
[JsonPropertyName("benchEnabled")]
public bool BenchEnabled { get; init; }
[JsonPropertyName("benchChampions")]
public BenchChampion[] BenchChampions { get; init; } = [];
[JsonPropertyName("counter")]
public long Counter { get; init; }
[JsonPropertyName("skipChampionSelect")]
public bool SkipChampionSelect { get; init; }
[JsonPropertyName("hasSimultaneousBans")]
public bool HasSimultaneousBans { get; init; }
[JsonPropertyName("hasSimultaneousPicks")]
public bool HasSimultaneousPicks { get; init; }
[JsonPropertyName("showQuitButton")]
public bool ShowQuitButton { get; init; }
[JsonPropertyName("isLegacyChampSelect")]
public bool IsLegacyChampSelect { get; init; }
[JsonPropertyName("isCustomGame")]
public bool IsCustomGame { get; init; }
}

View File

@@ -0,0 +1,15 @@
using System.Text.Json.Serialization;
namespace LeagueAPI.Models.ChampSelect;
public record class ChampSelectSwapContract
{
[JsonPropertyName("id")]
public long Id { get; init; }
[JsonPropertyName("cellId")]
public long CellId { get; init; }
[JsonPropertyName("state")]
public ChampSelectSwapState State { get; init; }
}

View File

@@ -0,0 +1,16 @@
using System.Text.Json.Serialization;
namespace LeagueAPI.Models.ChampSelect;
[JsonConverter(typeof(JsonStringEnumConverter))]
public enum ChampSelectSwapState
{
ACCEPTED,
CANCELLED,
DECLINED,
SENT,
RECEIVED,
INVALID,
BUSY,
AVAILABLE
}

View File

@@ -0,0 +1,21 @@
using System.Text.Json.Serialization;
namespace LeagueAPI.Models.ChampSelect;
public record class ChampSelectTimer
{
[JsonPropertyName("adjustedTimeLeftInPhase")]
public long AdjustedTimeLeftInPhase { get; init; }
[JsonPropertyName("totalTimeInPhase")]
public long TotalTimeInPhase { get; init; }
[JsonPropertyName("phase")]
public string? Phase { get; init; }
[JsonPropertyName("isInfinite")]
public bool IsInfinite { get; init; }
[JsonPropertyName("internalNowInEpochMs")]
public ulong InternalNowInEpochMs { get; init; }
}

View File

@@ -0,0 +1,18 @@
using System.Text.Json.Serialization;
namespace LeagueAPI.Models.ChampSelect;
public record class MucJwtDto
{
[JsonPropertyName("jwt")]
public string? Jwt { get; init; }
[JsonPropertyName("channelClaim")]
public string? ChannelClaim { get; init; }
[JsonPropertyName("domain")]
public string? Domain { get; init; }
[JsonPropertyName("targetRegion")]
public string? TargetRegion { get; init; }
}