refactor(multiplayer): 将模型字段更改为小写以与实际匹配

This commit is contained in:
jimmy-sketch
2025-07-27 09:55:41 +00:00
parent 3f7c85be38
commit eb781f60e4
2 changed files with 81 additions and 68 deletions

View File

@@ -32,13 +32,13 @@ class QueueMode(int, Enum):
class MultiPlayerRoomSettings(BaseModel): class MultiPlayerRoomSettings(BaseModel):
Name: str = "Unnamed room" # 来自osu/osu.Game/Online/MultiplayerRoomSettings.cs:15 name: str = "Unnamed room" # 来自osu/osu.Game/Online/MultiplayerRoomSettings.cs:15
PlaylistItemId: int playlist_item_id: int
Password: str password: str
MatchType: MatchType match_type: MatchType
QueueMode: QueueMode queue_mode: QueueMode
AutoStartDuration: timedelta auto_start_duration: timedelta
AutoSkip: bool auto_skip: bool
class MultiPlayerUserState(int, Enum): class MultiPlayerUserState(int, Enum):
@@ -62,8 +62,8 @@ class DownloadeState(int, Enum):
class BeatmapAvailability(BaseModel): class BeatmapAvailability(BaseModel):
State: DownloadeState state: DownloadeState
DownloadProgress: float download_progress: float
class MatchUserState(BaseModel): class MatchUserState(BaseModel):
@@ -75,16 +75,26 @@ class MatchRoomState(BaseModel):
class MultiPlayerRoomUser(BaseModel): class MultiPlayerRoomUser(BaseModel):
UserID: int user_id: int
State: MultiPlayerUserState state: MultiPlayerUserState = MultiPlayerUserState.Idle
Mods: APIMod mods: APIMod = APIMod(acronym="", settings={})
MatchState: MatchUserState | None match_state: MatchUserState | None
RuleSetId: int | None # 非空则用户本地有自定义模式 rule_set_id: int | None # 非空则用户本地有自定义模式
BeatmapId: int | None # 非空则用户本地自定义谱面 beatmap_id: int | None # 非空则用户本地自定义谱面
class MultiplayerPlaylistItem(BaseModel): class MultiplayerPlaylistItem(BaseModel):
id: int id: int
owner_id: int
beatmap_id: int
beatmap_checksum: str = ""
ruleset_id: int
requierd_mods: list[APIMod] = []
allowed_mods: list[APIMod] = []
play_list_order: int
played_at: datetime | None
star_rating: Double
free_style: bool
OwnerID: int OwnerID: int
BeatmapID: int BeatmapID: int
BeatmapChecksum: str = "" BeatmapChecksum: str = ""
@@ -99,16 +109,16 @@ class MultiplayerPlaylistItem(BaseModel):
class MultiplayerCountdown(BaseModel): class MultiplayerCountdown(BaseModel):
id: int id: int
TimeRaming: timedelta time_raming: timedelta
class MultiplayerRoom(BaseModel): class MultiplayerRoom(BaseModel):
RoomID: int room_id: int
State: MultiplayerRoomState state: MultiplayerRoomState
Settings: MultiPlayerRoomSettings settings: MultiPlayerRoomSettings
Users: list[MultiPlayerRoomUser] users: list[MultiPlayerRoomUser]
Host: MultiPlayerRoomUser | None host: MultiPlayerRoomUser | None
MatchState: MatchUserState match_state: MatchUserState
Playlist: list[MultiplayerPlaylistItem] playlist: list[MultiplayerPlaylistItem]
ActiveConutdowns: list[MultiplayerCountdown] active_conutdowns: list[MultiplayerCountdown]
ChannelID: int channel_id: int

View File

@@ -3,6 +3,7 @@ from __future__ import annotations
from datetime import datetime, timedelta from datetime import datetime, timedelta
from enum import Enum from enum import Enum
from app.database.beatmap import Beatmap
from app.database.user import User from app.database.user import User
from app.models.mods import APIMod from app.models.mods import APIMod
from app.models.multiplayer import MatchType, QueueMode from app.models.multiplayer import MatchType, QueueMode
@@ -18,36 +19,38 @@ class RoomCategory(int, Enum):
class RespPlaylistItem(BaseModel): class RespPlaylistItem(BaseModel):
id: int id: int | None
OwnerID: int owner_id: int
RulesetID: int ruleset_id: int
Expired: bool expired: bool
PlaylistOrder: int | None playlist_order: int | None
PlayedAt: datetime | None played_at: datetime | None
AllowedMods: list[APIMod] = [] allowed_mods: list[APIMod] = []
RequiredMods: list[APIMod] = [] required_mods: list[APIMod] = []
Freestyle: bool beatmap_id: int
freestyle: bool
beatmap: Beatmap | None
class RoomPlaylistItemStats(BaseModel): class RoomPlaylistItemStats(BaseModel):
CountActive: int count_active: int
CountTotal: int count_total: int
RulesetIDs: list[int] ruleset_ids: list[int]
class RoomDifficulityRange(BaseModel): class RoomDifficulityRange(BaseModel):
Min: float min: float
Max: float max: float
class ItemAttempsCount(BaseModel): class ItemAttempsCount(BaseModel):
PlaylistItemID: int playlist_item_id: int
Attemps: int attemps: int
Passed: bool passed: bool
class PlaylistAggregateScore(BaseModel): class PlaylistAggregateScore(BaseModel):
PlaylistItemAttempts: list[ItemAttempsCount] playlist_item_attempts: list[ItemAttempsCount]
class RoomStatus(int, Enum): class RoomStatus(int, Enum):
@@ -62,30 +65,30 @@ class RoomAvilability(int, Enum):
class RoomResp(BaseModel): class RoomResp(BaseModel):
RoomID: int room_id: int
Name: str = "" name: str = ""
Password: str | None password: str | None
Has_Password: bool has_password: bool
Host: User | None host: User | None
Category: RoomCategory category: RoomCategory
Duration: timedelta | None duration: timedelta | None
StartDate: datetime | None start_date: datetime | None
EndDate: datetime | None end_date: datetime | None
MaxParticipants: int | None max_participants: int | None
ParticipantCount: int participant_count: int
RecentParticipants: list[User] = [] recent_participants: list[User] = []
Type: MatchType type: MatchType
MaxAttemps: int | None max_attemps: int | None
Playlist: list[RespPlaylistItem] playlist: list[RespPlaylistItem]
PlaylistItemStatus: RoomPlaylistItemStats playlist_item_status: RoomPlaylistItemStats
DifficulityRange: RoomDifficulityRange difficulity_range: RoomDifficulityRange
QueueMode: QueueMode queue_mode: QueueMode
AutoSkip: bool auto_skip: bool
AutoStartDuration: timedelta auto_start_duration: timedelta
UserScore: ( user_score: (
PlaylistAggregateScore | None PlaylistAggregateScore | None
) # osu.Game/Online/Rooms/Room.cs:221 原文如此,不知道为什么 ) # osu.Game/Online/Rooms/Room.cs:221 原文如此,不知道为什么
CurrentPlaylistItem: RespPlaylistItem current_playlist_item: RespPlaylistItem
ChannelID: int channel_id: int
Status: RoomStatus status: RoomStatus
Availabiliity: RoomAvilability availabiliity: RoomAvilability