From d159944d370dc69634b86cd56712c66947dbe195 Mon Sep 17 00:00:00 2001 From: xinian Date: Sat, 21 Feb 2026 22:41:59 +0800 Subject: [PATCH] 1 --- common/utils/sturc/custom_test.go | 8 ++------ common/utils/sturc/field.go | 5 ++--- logic/service/player/new.go | 8 ++++---- logic/service/player/player.go | 10 ---------- logic/service/player/server.go | 5 +---- 5 files changed, 9 insertions(+), 27 deletions(-) diff --git a/common/utils/sturc/custom_test.go b/common/utils/sturc/custom_test.go index 95d558859..b77ac219a 100644 --- a/common/utils/sturc/custom_test.go +++ b/common/utils/sturc/custom_test.go @@ -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 } diff --git a/common/utils/sturc/field.go b/common/utils/sturc/field.go index 21e8541b5..c018eb2e0 100644 --- a/common/utils/sturc/field.go +++ b/common/utils/sturc/field.go @@ -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 diff --git a/logic/service/player/new.go b/logic/service/player/new.go index 8f9424255..2d7b39c24 100644 --- a/logic/service/player/new.go +++ b/logic/service/player/new.go @@ -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 } diff --git a/logic/service/player/player.go b/logic/service/player/player.go index ea9faa3ee..1ced65199 100644 --- a/logic/service/player/player.go +++ b/logic/service/player/player.go @@ -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 diff --git a/logic/service/player/server.go b/logic/service/player/server.go index df8a84877..8bce21cbc 100644 --- a/logic/service/player/server.go +++ b/logic/service/player/server.go @@ -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) }