This commit is contained in:
@@ -56,9 +56,7 @@ type DoubleUInt8Struct struct {
|
||||
}
|
||||
|
||||
func (di *DoubleUInt8) Pack(p []byte, opt *Options) (int, error) {
|
||||
for i, value := range *di {
|
||||
p[i] = value
|
||||
}
|
||||
copy(p, (*di)[:])
|
||||
|
||||
return 2, nil
|
||||
}
|
||||
@@ -131,9 +129,7 @@ type SliceUInt8Struct struct {
|
||||
}
|
||||
|
||||
func (ia *SliceUInt8) Pack(p []byte, opt *Options) (int, error) {
|
||||
for i, value := range *ia {
|
||||
p[i] = value
|
||||
}
|
||||
copy(p, *ia)
|
||||
|
||||
return len(*ia) + 1, nil
|
||||
}
|
||||
|
||||
@@ -81,7 +81,7 @@ func (f *Field) Size(val reflect.Value, options *Options) int {
|
||||
var defaultOrder = binary.BigEndian
|
||||
|
||||
// packVal 优化版:减少反射开销+优化内存拷贝+优雅错误处理
|
||||
func (f *Field) packVal(buf []byte, val reflect.Value, length int, options *Options) (size int, err error) {
|
||||
func (f *Field) packVal(buf []byte, val reflect.Value, _ int, options *Options) (size int, err error) {
|
||||
// 1. 预缓存order,避免重复判断
|
||||
order := f.Order
|
||||
if options != nil && options.Order != nil {
|
||||
@@ -252,7 +252,6 @@ func (f *Field) Pack(buf []byte, val reflect.Value, length int, options *Options
|
||||
copy(buf, buf[:length])
|
||||
return length, nil
|
||||
}
|
||||
return val.Len(), nil
|
||||
}
|
||||
pos := 0
|
||||
var zero reflect.Value
|
||||
@@ -276,7 +275,7 @@ func (f *Field) Pack(buf []byte, val reflect.Value, length int, options *Options
|
||||
}
|
||||
}
|
||||
|
||||
func (f *Field) unpackVal(buf []byte, val reflect.Value, length int, options *Options) error {
|
||||
func (f *Field) unpackVal(buf []byte, val reflect.Value, _ int, options *Options) error {
|
||||
order := f.Order
|
||||
if options.Order != nil {
|
||||
order = options.Order
|
||||
|
||||
@@ -5,6 +5,8 @@ import (
|
||||
"blazing/modules/base/service"
|
||||
"blazing/modules/player/model"
|
||||
"time"
|
||||
|
||||
"github.com/panjf2000/gnet/v2"
|
||||
)
|
||||
|
||||
// 定义刷野间隔常量(可根据业务调整)
|
||||
@@ -14,7 +16,7 @@ const (
|
||||
)
|
||||
|
||||
// NewPlayer 使用 Options 模式创建 Player 实例
|
||||
func NewPlayer(opts ...PlayerOption) *Player {
|
||||
func NewPlayer(opts gnet.Conn) *Player {
|
||||
p := &Player{
|
||||
|
||||
HavePVPinfo: make([]common.PlayerI, 0),
|
||||
@@ -29,9 +31,7 @@ func NewPlayer(opts ...PlayerOption) *Player {
|
||||
p.GenMonster() //生成野怪
|
||||
})
|
||||
|
||||
for _, opt := range opts {
|
||||
opt(p)
|
||||
}
|
||||
p.MainConn = opts
|
||||
return p
|
||||
}
|
||||
|
||||
|
||||
@@ -90,16 +90,6 @@ type OgrePet struct {
|
||||
Data [9]OgrePetInfo
|
||||
}
|
||||
|
||||
// PlayerOption 定义配置 Player 的函数类型
|
||||
type PlayerOption func(*Player)
|
||||
|
||||
// WithConn 设置玩家连接的配置选项
|
||||
func WithConn(c gnet.Conn) PlayerOption {
|
||||
return func(p *Player) {
|
||||
p.MainConn = c
|
||||
}
|
||||
}
|
||||
|
||||
func (p *Player) GetCoins(amount int64) bool {
|
||||
if int64(p.Info.Coins) < amount {
|
||||
return false
|
||||
|
||||
@@ -14,10 +14,7 @@ func GetPlayer(c gnet.Conn, userid uint32) *Player { //TODO 这里待优化,可
|
||||
}
|
||||
if clientdata.Player == nil {
|
||||
|
||||
clientdata.Player = NewPlayer(
|
||||
|
||||
WithConn(c), //注入conn
|
||||
)
|
||||
clientdata.Player = NewPlayer(c)
|
||||
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user