40 lines
865 B
TypeScript
Raw Normal View History

2022-12-01 22:26:41 +08:00
import { ApiMsgEnum } from '..'
import type Player from './Player'
import PlayerManager from './PlayerManager'
import RoomManager from './RoomManager'
export default class Room {
id: number
players: Set<Player> = new Set()
constructor(rid: number) {
this.id = rid
}
join(uid: number) {
const player = PlayerManager.Instance.getPlayerById(uid)
if (player) {
player.rid = this.id
this.players.add(player)
}
}
leave(uid: number) {
const player = PlayerManager.Instance.getPlayerById(uid)
if (player) {
player.rid = -1
this.players.delete(player)
if (!this.players.size) {
RoomManager.Instance.closeRoom(this.id)
}
}
}
sync() {
for (const player of this.players) {
player.connection.sendMsg(ApiMsgEnum.MsgRoom, RoomManager.Instance.getRoomView(this))
}
}
}