Files
vRp.CD2g_test/game/space
..

Space

Go doc

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
}