core

package
v0.0.0-...-179649a Latest Latest
Warning

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

Go to latest
Published: Jul 23, 2019 License: MIT Imports: 8 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 PidGen uint32 = 0 //用来生产玩家的 Id计数器

Functions

This section is empty.

Types

type AOIManager

type AOIManager struct {
	MinX  int           //区域左边界坐标
	MaxX  int           //区域右边界坐标
	MinY  int           //区域上边界坐标
	MaxY  int           //区域下边界坐标
	CntsX int           //x方向格子的数量
	CntsY int           //y方向的格子数量
	Grids map[int]*Grid //当前区域中都有哪些格子,key=格子ID, value=格子对象
}

*

  • 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 {
	Id   int //格子Id
	MinX int //格子左边界坐标
	MaxX int //格子右边界坐标
	MinY int //格子上边界坐标
	MaxY int //格子下边界坐标
	// contains filtered or unexported fields
}

*一个地图中的格子类

func NewGrid

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

初始化一个格子

func (*Grid) Add

func (g *Grid) Add(playerId int)

给格子添加一个玩家

func (*Grid) GetPlayerIds

func (g *Grid) GetPlayerIds() (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  uint32             //玩家 Id
	Conn ziface.IConnection //当前玩家的连接(用于和客户端的连接)
	X    float32            //平面的 X 坐标
	Y    float32            //高度
	Z    float32            //平面 Y 坐标
	V    float32            //旋转的 0-360 角度
}

玩家对象

func NewPlayer

func NewPlayer(conn ziface.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) SendMsg

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

发送消息给客户端, 主要是将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 {
	//AoiManager 当前世界地图 AOI 的管理模块
	AoiManager *AOIManager

	//当前在线的 Players 集合
	Players map[uint32]*Player
	// contains filtered or unexported fields
}

*

  • 当前游戏的世界总管理模块
var WorldManagerObj *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 uint32) *Player

通过玩家ID 获取对应玩家信息

func (*WorldManager) RemovePlayerByPid

func (wm *WorldManager) RemovePlayerByPid(pid uint32)

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

Jump to

Keyboard shortcuts

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