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

View File

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