core

package
v1.2.0 Latest Latest
Warning

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

Go to latest
Published: Jul 21, 2023 License: GPL-3.0 Imports: 7 Imported by: 10

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
}

AOIManager AOI管理模块

func NewAOIManager

func NewAOIManager(minX, maxX, cntsX, minY, maxY, cntsY int) *AOIManager

初始化一个AOI区域

func (*AOIManager) AddPIDToGrID added in v1.0.1

func (m *AOIManager) AddPIDToGrID(pID, gID int)

添加一个PlayerID到一个格子中

func (*AOIManager) AddToGrIDByPos added in v1.0.1

func (m *AOIManager) AddToGrIDByPos(pID int, x, y float32)

通过横纵坐标添加一个Player到一个格子中

func (*AOIManager) GetGIDByPos added in v1.0.1

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

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

func (*AOIManager) GetPIDsByGID added in v1.0.1

func (m *AOIManager) GetPIDsByGID(gID int) (playerIDs []int)

通过GID获取当前格子的全部playerID

func (*AOIManager) GetPIDsByPos added in v1.0.1

func (m *AOIManager) GetPIDsByPos(x, y float32) (playerIDs []int)

通过横纵坐标得到周边九宫格内的全部PlayerIDs

func (*AOIManager) GetSurroundGrIDsByGID added in v1.0.1

func (m *AOIManager) GetSurroundGrIDsByGID(gID int) (grIDs []*GrID)

根据格子的gID得到当前周边的九宫格信息

func (*AOIManager) RemoveFromGrIDByPos added in v1.0.1

func (m *AOIManager) RemoveFromGrIDByPos(pID int, x, y float32)

通过横纵坐标把一个Player从对应的格子中删除

func (*AOIManager) RemovePIDFromGrID added in v1.0.1

func (m *AOIManager) RemovePIDFromGrID(pID, gID int)

移除一个格子中的PlayerID

func (*AOIManager) String

func (m *AOIManager) String() string

打印信息方法

type GrID added in v1.0.1

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

GrID 一个地图中的格子类

func NewGrID added in v1.0.1

func NewGrID(gID, minX, maxX, minY, maxY int) *GrID

初始化一个格子

func (*GrID) Add added in v1.0.1

func (g *GrID) Add(playerID int)

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

func (*GrID) GetPlyerIDs added in v1.0.1

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

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

func (*GrID) Remove added in v1.0.1

func (g *GrID) Remove(playerID int)

从格子中删除一个玩家

func (*GrID) String added in v1.0.1

func (g *GrID) String() string

打印信息方法

type Player

type Player struct {
	PID  int32              //玩家ID
	Conn ziface.IConnection //当前玩家的连接
	X    float32            //平面x坐标
	Y    float32            //高度
	Z    float32            //平面y坐标 (注意不是Y)
	V    float32            //旋转0-360度
}

Player 玩家对象

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) OnExchangeAoiGrID added in v1.0.1

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 added in v1.0.1

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
}

WorldManager 当前游戏世界的总管理模块

var WorldMgrObj *WorldManager

提供一个对外的世界管理模块句柄

func (*WorldManager) AddPlayer

func (wm *WorldManager) AddPlayer(player *Player)

提供添加一个玩家的的功能,将玩家添加进玩家信息表Players

func (*WorldManager) GetAllPlayers

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

获取所有玩家的信息

func (*WorldManager) GetPlayerByPID added in v1.0.1

func (wm *WorldManager) GetPlayerByPID(pID int32) *Player

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

func (*WorldManager) GetPlayersByGID added in v1.0.1

func (wm *WorldManager) GetPlayersByGID(gID int) []*Player

获取指定gID中的所有player信息

func (*WorldManager) RemovePlayerByPID added in v1.0.1

func (wm *WorldManager) RemovePlayerByPID(pID int32)

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

Jump to

Keyboard shortcuts

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