async def read_match(self) -> Match: """Read an osu! match from the internal buffer.""" m = Match() # ignore match id (i16) and inprogress (i8). self._buf = self._buf[3:] #m.type = MatchTypes(await self.read_i8()) if await self.read_i8() == 1: point_of_interest() # what is powerplay m.mods = Mods(await self.read_i32()) m.name = await self.read_string() m.passwd = await self.read_string() m.map_name = await self.read_string() m.map_id = await self.read_i32() m.map_md5 = await self.read_string() for slot in m.slots: slot.status = await self.read_i8() for slot in m.slots: slot.team = MatchTeams(await self.read_i8()) for slot in m.slots: if slot.status & SlotStatus.has_player: # we don't need this, ignore it. self._buf = self._buf[4:] host_id = await self.read_i32() m.host = await glob.players.get(id=host_id) m.mode = GameMode(await self.read_i8()) m.win_condition = MatchWinConditions(await self.read_i8()) m.team_type = MatchTeamTypes(await self.read_i8()) m.freemods = await self.read_i8() == 1 # if we're in freemods mode, # read individual slot mods. if m.freemods: for slot in m.slots: slot.mods = Mods(await self.read_i32()) # read the seed (used for mania) m.seed = await self.read_i32() return m
def read_match(self) -> Match: """Read an osu! match from the internal buffer.""" m = Match() # ignore match id (i16) and inprogress (i8). self.body_view = self.body_view[3:] self.read_i8() # powerplay unused m.mods = Mods(self.read_i32()) m.name = self.read_string() m.passwd = self.read_string() m.map_name = self.read_string() m.map_id = self.read_i32() m.map_md5 = self.read_string() for slot in m.slots: slot.status = SlotStatus(self.read_i8()) for slot in m.slots: slot.team = MatchTeams(self.read_i8()) for slot in m.slots: if slot.status & SlotStatus.has_player: # we don't need this, ignore it. self.body_view = self.body_view[4:] host_id = self.read_i32() m.host = glob.players.get(id=host_id) m.mode = GameMode(self.read_i8()) m.win_condition = MatchWinConditions(self.read_i8()) m.team_type = MatchTeamTypes(self.read_i8()) m.freemods = self.read_i8() == 1 # if we're in freemods mode, # read individual slot mods. if m.freemods: for slot in m.slots: slot.mods = Mods(self.read_i32()) # read the seed (used for mania) m.seed = self.read_i32() return m