mirror of
https://github.com/FlourishingWorld/hk4e.git
synced 2026-02-04 16:02:26 +08:00
65 lines
1.4 KiB
Go
65 lines
1.4 KiB
Go
package aoi
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"hk4e/pkg/logger"
|
|
)
|
|
|
|
// 地图格子
|
|
type Grid struct {
|
|
gid uint32 // 格子id
|
|
// 格子边界坐标
|
|
minX int16
|
|
maxX int16
|
|
minY int16
|
|
maxY int16
|
|
minZ int16
|
|
maxZ int16
|
|
entityIdMap map[uint32]bool // k:entityId v:是否存在
|
|
}
|
|
|
|
// 初始化格子
|
|
func NewGrid(gid uint32, minX, maxX, minY, maxY, minZ, maxZ int16) (r *Grid) {
|
|
r = new(Grid)
|
|
r.gid = gid
|
|
r.minX = minX
|
|
r.maxX = maxX
|
|
r.minY = minY
|
|
r.maxY = maxY
|
|
r.minZ = minZ
|
|
r.maxZ = maxZ
|
|
r.entityIdMap = make(map[uint32]bool)
|
|
return r
|
|
}
|
|
|
|
// 向格子中添加一个实体id
|
|
func (g *Grid) AddEntityId(entityId uint32) {
|
|
g.entityIdMap[entityId] = true
|
|
}
|
|
|
|
// 从格子中删除一个实体id
|
|
func (g *Grid) RemoveEntityId(entityId uint32) {
|
|
_, exist := g.entityIdMap[entityId]
|
|
if exist {
|
|
delete(g.entityIdMap, entityId)
|
|
} else {
|
|
logger.LOG.Error("remove entity id but it not exist, entityId: %v", entityId)
|
|
}
|
|
}
|
|
|
|
// 获取格子中所有实体id
|
|
func (g *Grid) GetEntityIdList() (entityIdList []uint32) {
|
|
entityIdList = make([]uint32, 0)
|
|
for k := range g.entityIdMap {
|
|
entityIdList = append(entityIdList, k)
|
|
}
|
|
return entityIdList
|
|
}
|
|
|
|
// 打印信息方法
|
|
func (g *Grid) DebugString() string {
|
|
return fmt.Sprintf("Grid: gid: %d, minX: %d, maxX: %d, minY: %d, maxY: %d, minZ: %d, maxZ: %d, entityIdMap: %v",
|
|
g.gid, g.minX, g.maxX, g.minY, g.maxY, g.minZ, g.maxZ, g.entityIdMap)
|
|
}
|