core

package
v0.0.0-...-5b63d95 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 6, 2022 License: MIT Imports: 6 Imported by: 0

Documentation

Index

Constants

View Source
const (
	AOI_MIN_X  int = 85
	AOI_MAX_X  int = 410
	AOI_CNTS_X int = 10
	AOI_MIN_Y  int = 75
	AOI_MAX_Y  int = 400
	AOI_CNTS_Y int = 20
)

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

func (m *AOIManager) GetGidByPos(x, y float32) int

通过横纵坐标获取对应的格子ID

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

func (*AOIManager) String

func (m *AOIManager) String() string

打印信息方法

type Grid

type Grid struct {
	GID  int // 格子ID
	MinX int // 格子左边界坐标
	MaxX int // 格子右边界坐标
	MinY int // 格子上边界坐标
	MaxY int // 格子下边界坐标
	// contains filtered or unexported fields
}

一个地图中的格子类

func NewGrid

func NewGrid(gID, minX, maxX, minY, maxY int) *Grid

初始化一个格子

func (*Grid) Add

func (g *Grid) Add(playerID int)

向当前格子中添加一个玩家

func (*Grid) GetPlyerIDs

func (g *Grid) GetPlyerIDs() (playerIDs []int)

得到当前格子中所有的玩家

func (*Grid) Remove

func (g *Grid) Remove(playerID int)

从格子中删除一个玩家

func (*Grid) String

func (g *Grid) String() string

打印信息方法

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 NewPlayer

func NewPlayer(conn tiface.IConnection) *Player

创建一个玩家对象

func (*Player) BroadCastStartPosition

func (p *Player) BroadCastStartPosition()

广播玩家自己的出生地点

func (*Player) GetSurroundingPlayers

func (p *Player) GetSurroundingPlayers() []*Player

获得当前玩家的AOI周边玩家信息

func (*Player) LostConnection

func (p *Player) LostConnection()

玩家下线

func (*Player) OnExchangeAoiGrid

func (p *Player) OnExchangeAoiGrid(oldGid, newGid int) error

func (*Player) SendMsg

func (p *Player) SendMsg(msgId uint32, data proto.Message)

发送消息给客户端, 主要是将pb的protobuf数据序列化之后发送

func (*Player) SyncPid

func (p *Player) SyncPid()

告知客户端pid,同步已经生成的玩家ID给客户端

func (*Player) SyncSurrounding

func (p *Player) SyncSurrounding()

广播玩家的自身地理位置信息(告知周边玩家自己上线信息,并告知自己周边玩家信息)

func (*Player) Talk

func (p *Player) Talk(content string)

玩家广播聊天消息

func (*Player) UpdatePos

func (p *Player) UpdatePos(x float32, y float32, z float32, v float32)

广播玩家位置移动

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

func (wm *WorldManager) GetAllPlayers() []*Player

获取所有玩家的信息

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)

从玩家信息表中移除一个玩家

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL