31 lines
935 B
Go
Executable File
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
|
|
}
|