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) }