game/server/items/interface.go
2026-04-20 16:07:22 +08:00

31 lines
935 B
Go
Executable File

package items
import (
"wuziqi-server/core"
"github.com/heroiclabs/nakama-common/runtime"
)
// GameLogic 接口定义了道具需要从游戏引擎调用的方法
// 这避免了 items 和 logic 包之间的循环依赖
type GameLogic interface {
ApplyDamage(state *core.GameState, target *core.Player, amount int, isItemEffect bool)
HealPlayer(player *core.Player, amount int)
GetRandomAliveTarget(state *core.GameState, excludeID string) *core.Player
BroadcastEvent(event core.GameEvent)
SendPrivateEvent(targetID string, event core.GameEvent)
}
// ItemContext 捆绑了道具使用所需的依赖项
type ItemContext struct {
Logger runtime.Logger
Dispatcher runtime.MatchDispatcher
Logic GameLogic
}
// ItemStrategy 定义了特定道具的行为
type ItemStrategy interface {
// Use 应用道具效果。如果消耗则返回 true。
Use(state *core.GameState, user *core.Player, ctx ItemContext) bool
}