Documentation ¶
Overview ¶
Package component 定义了通用组件的接口
- lockstep.go:帧同步组件接口定义
- lockstep_client.go:帧同步组件客户端接口定义
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Lockstep ¶
type Lockstep[ClientID comparable, Command any] interface { // JoinClient 加入客户端 JoinClient(client LockstepClient[ClientID]) // JoinClientWithFrame 加入客户端,并且指定从特定帧开始 JoinClientWithFrame(client LockstepClient[ClientID], frameIndex int) // LeaveClient 离开客户端 LeaveClient(clientId ClientID) // StartBroadcast 开始广播 StartBroadcast() // StopBroadcast 停止广播 StopBroadcast() // AddCommand 增加指令 AddCommand(command Command) // GetCurrentFrame 获取当前帧 GetCurrentFrame() int // GetClientCurrentFrame 获取客户端当前帧 GetClientCurrentFrame(clientId ClientID) int // GetFrameLimit 获取帧上限 GetFrameLimit() int // GetFrames 获取所有帧数据 GetFrames() [][]Command // RegLockstepStoppedEvent 当停止广播时将立即执行被注册的事件处理函数 RegLockstepStoppedEvent(handle LockstepStoppedEventHandle[ClientID, Command]) OnLockstepStoppedEvent() }
Lockstep 定义了帧同步组件的接口,用于处理客户端之间的同步操作。 每个客户端需要拥有可比较的ID,同时需要定义帧数据的数据格式。
- ClientID:客户端ID类型
- Command:帧数据类型
客户端ID类型通常为玩家ID类型,即通常将玩家作为帧同步客户端使用。
- 内置实现:components.Lockstep
- 构建函数:components.NewLockstep
type LockstepClient ¶
type LockstepClient[ID comparable] interface { // GetID 用户玩家ID GetID() ID // Send 发送数据包 // - messageType: websocket模式中指定消息类型 Send(packet []byte, messageType ...int) }
LockstepClient 帧同步客户端接口定义
- 客户端应该具备ID及写入数据包的实现
type LockstepStoppedEventHandle ¶
type LockstepStoppedEventHandle[ClientID comparable, Command any] func(lockstep Lockstep[ClientID, Command])
LockstepStoppedEventHandle 帧同步停止广播事件处理函数
type Moving2D ¶
type Moving2D interface { // MoveTo 设置对象移动至特定位置 MoveTo(entity Moving2DEntity, x float64, y float64) // StopMove 终止特定对象的移动 StopMove(guid int64) // RegPosition2DChangeEvent 对象位置改变时将立即执行被注册的事件处理函数 RegPosition2DChangeEvent(handle Position2DChangeEventHandle) OnPosition2DChangeEvent(entity Moving2DEntity, oldX, oldY float64) // RegPosition2DDestinationEvent 对象抵达终点时将立即执行被注册的事件处理函数 RegPosition2DDestinationEvent(handle Position2DDestinationEventHandle) OnPosition2DDestinationEvent(entity Moving2DEntity) }
Moving2D 2D移动功能接口定义
type Moving2DEntity ¶
type Moving2DEntity interface { game.Actor game.Position2D game.Position2DSet // GetSpeed 获取移动速度 GetSpeed() float64 }
Moving2DEntity 2D移动对象接口定义
type Position2DChangeEventHandle ¶
type Position2DChangeEventHandle func(moving Moving2D, entity Moving2DEntity, oldX, oldY float64)
type Position2DDestinationEventHandle ¶
type Position2DDestinationEventHandle func(moving Moving2D, entity Moving2DEntity)
type Position2DStopMoveEventHandle ¶ added in v0.0.4
type Position2DStopMoveEventHandle func(moving Moving2D, entity Moving2DEntity)
Source Files ¶
Click to show internal directories.
Click to hide internal directories.