3.2 KiB
3.2 KiB
Space
space 游戏中常见的空间设计,例如房间、地图等
目录导航
列出了该 package 下所有的函数及类型定义,可通过目录导航进行快捷跳转 ❤️
展开 / 折叠目录导航
包级函数定义
| 函数名称 | 描述 |
|---|---|
| NewRoomManager | 创建房间管理器 RoomManager 的实例 |
| NewRoomControllerOptions | 创建房间控制器选项 |
类型定义
| 类型 | 名称 | 描述 |
|---|---|---|
STRUCT |
RoomController | 对房间进行操作的控制器,由 RoomManager 接管后返回 |
STRUCT |
RoomManager | 房间管理器是用于对房间进行管理的基本单元,通过该实例可以对房间进行增删改查等操作 |
STRUCT |
RoomAssumeControlEventHandle | 暂无描述... |
STRUCT |
RoomControllerOptions | 暂无描述... |
详情信息
func NewRoomManager() *RoomManager[EntityID, RoomID, Entity, Room]
创建房间管理器 RoomManager 的实例
示例代码:
func ExampleNewRoomManager() {
var rm = space.NewRoomManager[string, int64, *Player, *Room]()
fmt.Println(rm == nil)
}
func NewRoomControllerOptions() *RoomControllerOptions[EntityID, RoomID, Entity, Room]
创建房间控制器选项
RoomController STRUCT
对房间进行操作的控制器,由 RoomManager 接管后返回
type RoomController[EntityID comparable, RoomID comparable, Entity generic.IdR[EntityID], Room generic.IdR[RoomID]] struct {
manager *RoomManager[EntityID, RoomID, Entity, Room]
options *RoomControllerOptions[EntityID, RoomID, Entity, Room]
room Room
entities map[EntityID]Entity
entitiesRWMutex sync.RWMutex
vacancy []int
seat []*EntityID
owner *EntityID
}
RoomManager STRUCT
房间管理器是用于对房间进行管理的基本单元,通过该实例可以对房间进行增删改查等操作
- 该实例是线程安全的
type RoomManager[EntityID comparable, RoomID comparable, Entity generic.IdR[EntityID], Room generic.IdR[RoomID]] struct {
*roomManagerEvents[EntityID, RoomID, Entity, Room]
roomsRWMutex sync.RWMutex
rooms map[RoomID]*RoomController[EntityID, RoomID, Entity, Room]
}
RoomAssumeControlEventHandle STRUCT
type RoomAssumeControlEventHandle[EntityID comparable, RoomID comparable, Entity generic.IdR[EntityID], Room generic.IdR[RoomID]] func(controller *RoomController[EntityID, RoomID, Entity, Room])
RoomControllerOptions STRUCT
type RoomControllerOptions[EntityID comparable, RoomID comparable, Entity generic.IdR[EntityID], Room generic.IdR[RoomID]] struct {
maxEntityCount *int
password *string
ownerInherit bool
ownerInheritHandler func(controller *RoomController[EntityID, RoomID, Entity, Room]) *EntityID
}