Files
vRp.CD2g_test/game/space

Space

Go doc

计划提供游戏中常见的空间设计,例如房间、地图等。开发者可以使用它来快速构建游戏中的常见空间,例如多人房间、地图等。

Room 房间

房间在 Minotaur 中仅仅只是一个可以为任意可比较类型的 ID,当需要将现有或新设计的房间纳入 RoomManager 管理时,需要实现 Room 管理时,仅需要实现 generic.IdR 接口即可。

该功能由 RoomManagerRoomController 组成。

当创建一个新的房间并纳入 RoomManager 管理后,将会得到一个 RoomController。通过 RoomController 可以对房间进行管理,例如:获取房间信息、加入房间、退出房间等。

使用示例

package main

import (
    "fmt"
    "github.com/kercylan98/minotaur/game/space"
)

type Room struct {
	Id int64
}

func (r *Room) GetId() int64 {
	return r.Id
}

type Player struct {
	Id string
}

func (p *Player) GetId() string {
	return p.Id
}

func main() {
	var rm = space.NewRoomManager[string, int64, *Player, *Room]()
	var room = &Room{Id: 1}
	var controller = rm.AssumeControl(room)

	if err := controller.AddEntity(&Player{Id: "1"}); err != nil {
		// 房间密码不匹配或者房间已满
		panic(err)
	}

	fmt.Println(controller.GetEntityCount()) // 1
}