Documentation ¶
Index ¶
- Constants
- Variables
- type AOIManager
- func (m *AOIManager) AddPidToGrid(pID, gID int)
- func (m *AOIManager) AddToGridByPos(pID int, x, y float32)
- func (m *AOIManager) GetGidByPos(x, y float32) int
- func (m *AOIManager) GetPidsByGid(gID int) (playerIDs []int)
- func (m *AOIManager) GetPidsByPos(x, y float32) (playerIDs []int)
- func (m *AOIManager) GetSurroundGridsByGid(gID int) (grids []*Grid)
- func (m *AOIManager) RemoveFromGridByPos(pID int, x, y float32)
- func (m *AOIManager) RemovePidFromGrid(pID, gID int)
- func (m *AOIManager) String() string
- type Grid
- type Player
- func (p *Player) BroadCastStartPosition()
- func (p *Player) GetSurroundingPlayers() []*Player
- func (p *Player) LostConnection()
- func (p *Player) OnExchangeAoiGrid(oldGid, newGid int) error
- func (p *Player) SendMsg(msgId uint32, data proto.Message)
- func (p *Player) SyncPid()
- func (p *Player) SyncSurrounding()
- func (p *Player) Talk(content string)
- func (p *Player) UpdatePos(x float32, y float32, z float32, v float32)
- type WorldManager
Constants ¶
Variables ¶
View Source
var IdLock sync.Mutex // 保护PidGen的互斥机制
View Source
var PidGen int32 = 1 // 用来生成玩家ID的计数器
Player ID 生成器
Functions ¶
This section is empty.
Types ¶
type AOIManager ¶
type AOIManager struct { MinX int // 区域左边界坐标 MaxX int // 区域右边界坐标 CntsX int // x方向格子的数量 MinY int // 区域上边界坐标 MaxY int // 区域下边界坐标 CntsY int // y方向的格子数量 // contains filtered or unexported fields }
AOI管理模块
func NewAOIManager ¶
func NewAOIManager(minX, maxX, cntsX, minY, maxY, cntsY int) *AOIManager
初始化一个AOI区域
func (*AOIManager) AddPidToGrid ¶
func (m *AOIManager) AddPidToGrid(pID, gID int)
添加一个PlayerID到一个格子中
func (*AOIManager) AddToGridByPos ¶
func (m *AOIManager) AddToGridByPos(pID int, x, y float32)
通过横纵坐标添加一个Player到一个格子中
func (*AOIManager) GetPidsByGid ¶
func (m *AOIManager) GetPidsByGid(gID int) (playerIDs []int)
通过GID获取当前格子的全部playerID
func (*AOIManager) GetPidsByPos ¶
func (m *AOIManager) GetPidsByPos(x, y float32) (playerIDs []int)
通过横纵坐标得到周边九宫格内的全部PlayerIDs
func (*AOIManager) GetSurroundGridsByGid ¶
func (m *AOIManager) GetSurroundGridsByGid(gID int) (grids []*Grid)
根据格子的gID得到当前周边的九宫格信息
func (*AOIManager) RemoveFromGridByPos ¶
func (m *AOIManager) RemoveFromGridByPos(pID int, x, y float32)
通过横纵坐标把一个Player从对应的格子中删除
func (*AOIManager) RemovePidFromGrid ¶
func (m *AOIManager) RemovePidFromGrid(pID, gID int)
移除一个格子中的PlayerID
type Grid ¶
type Grid struct { GID int // 格子ID MinX int // 格子左边界坐标 MaxX int // 格子右边界坐标 MinY int // 格子上边界坐标 MaxY int // 格子下边界坐标 // contains filtered or unexported fields }
一个地图中的格子类
type Player ¶
type Player struct { Pid int32 // 玩家ID Conn tiface.IConnection // 当前玩家的连接(用于和客户端连接) X float32 // 平面x坐标 Y float32 // 高度 Z float32 // 平面y坐标 (注意不是Y) V float32 // 旋转0-360度 }
玩家类型
func (*Player) GetSurroundingPlayers ¶
获得当前玩家的AOI周边玩家信息
func (*Player) OnExchangeAoiGrid ¶
func (*Player) SyncSurrounding ¶
func (p *Player) SyncSurrounding()
广播玩家的自身地理位置信息(告知周边玩家自己上线信息,并告知自己周边玩家信息)
type WorldManager ¶
type WorldManager struct { AoiMgr *AOIManager // 当前世界地图的AOI规划管理器 Players map[int32]*Player // 当前在线的玩家集合 // contains filtered or unexported fields }
当前游戏世界的总管理模块
var WorldMgrObj *WorldManager
提供一个对外的世界管理模块句柄
func (*WorldManager) AddPlayer ¶
func (wm *WorldManager) AddPlayer(player *Player)
提供添加一个玩家的的功能,将玩家添加进玩家信息表Players
func (*WorldManager) GetPlayerByPid ¶
func (wm *WorldManager) GetPlayerByPid(pid int32) *Player
通过玩家ID 获取对应玩家信息
func (*WorldManager) GetPlayersByGid ¶
func (wm *WorldManager) GetPlayersByGid(gid int) []*Player
获取指定gid中的所有player信息
func (*WorldManager) RemovePlayerByPid ¶
func (wm *WorldManager) RemovePlayerByPid(pid int32)
从玩家信息表中移除一个玩家
Click to show internal directories.
Click to hide internal directories.