From 87c66954a3ea1215b587aa3a22b464e6d2066321 Mon Sep 17 00:00:00 2001 From: kercylan98 Date: Sat, 29 Jul 2023 18:06:40 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20room=20=E5=8C=85=E6=96=B0=E5=A2=9E?= =?UTF-8?q?=E6=88=BF=E9=97=B4=E5=88=9B=E5=BB=BA=E4=BA=8B=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- game/room/events.go | 15 +++++++++++++++ game/room/manager.go | 1 + 2 files changed, 16 insertions(+) diff --git a/game/room/events.go b/game/room/events.go index b3bb33e..dd4c134 100644 --- a/game/room/events.go +++ b/game/room/events.go @@ -21,6 +21,8 @@ type ( PlayerSeatSetEventHandle[PID comparable, P game.Player[PID], R Room] func(room R, player P, seat int) // PlayerSeatCancelEventHandle 玩家座位取消事件处理函数 PlayerSeatCancelEventHandle[PID comparable, P game.Player[PID], R Room] func(room R, player P, seat int) + // RoomCreateEventHandle 房间创建事件处理函数 + RoomCreateEventHandle[PID comparable, P game.Player[PID], R Room] func(room R, helper *Helper[PID, P, R]) ) func newEvent[PID comparable, P game.Player[PID], R Room]() *event[PID, P, R] { @@ -55,6 +57,7 @@ type event[PID comparable, P game.Player[PID], R Room] struct { playerSeatSetEventRoomHandles map[int64][]PlayerSeatSetEventHandle[PID, P, R] playerSeatCancelEventHandles []PlayerSeatCancelEventHandle[PID, P, R] playerSeatCancelEventRoomHandles map[int64][]PlayerSeatCancelEventHandle[PID, P, R] + roomCreateEventHandles []RoomCreateEventHandle[PID, P, R] } func (slf *event[PID, P, R]) unReg(guid int64) { @@ -249,3 +252,15 @@ func (slf *event[PID, P, R]) OnPlayerSeatCancelEvent(room R, player P, seat int) handle(room, player, seat) } } + +// RegRoomCreateEvent 房间创建时将立即执行被注册的事件处理函数 +func (slf *event[PID, P, R]) RegRoomCreateEvent(handle RoomCreateEventHandle[PID, P, R]) { + slf.roomCreateEventHandles = append(slf.roomCreateEventHandles, handle) +} + +// OnRoomCreateEvent 房间创建时将立即执行被注册的事件处理函数 +func (slf *event[PID, P, R]) OnRoomCreateEvent(room R, helper *Helper[PID, P, R]) { + for _, handle := range slf.roomCreateEventHandles { + handle(room, helper) + } +} diff --git a/game/room/manager.go b/game/room/manager.go index 6678e66..4dbf46f 100644 --- a/game/room/manager.go +++ b/game/room/manager.go @@ -51,6 +51,7 @@ func (slf *Manager[PID, P, R]) CreateRoom(room R, options ...Option[PID, P, R]) option(roomInfo) } slf.rooms.Set(room.GetGuid(), roomInfo) + slf.OnRoomCreateEvent(room, slf.GetHelper(room)) } // ReleaseRoom 释放房间