package items import ( "wuziqi-server/core" ) type ItemManager struct { strategies map[string]ItemStrategy } func NewItemManager() *ItemManager { m := &ItemManager{ strategies: make(map[string]ItemStrategy), } m.registerDefaults() return m } func (m *ItemManager) registerDefaults() { m.Register("medkit", &MedkitStrategy{}) m.Register("bomb_timer", &BombTimerStrategy{}) m.Register("poison", &PoisonStrategy{}) m.Register("shield", &ShieldStrategy{}) m.Register("skip", &SkipStrategy{}) m.Register("magnifier", &MagnifierStrategy{}) m.Register("knife", &KnifeStrategy{}) m.Register("revive", &ReviveStrategy{}) m.Register("lightning", &LightningStrategy{}) m.Register("chest", &ChestStrategy{}) m.Register("curse", &CurseStrategy{}) } func (m *ItemManager) Register(itemID string, strategy ItemStrategy) { m.strategies[itemID] = strategy } func (m *ItemManager) UseItem(state *core.GameState, user *core.Player, itemID string, ctx ItemContext) bool { strategy, exists := m.strategies[itemID] if !exists { ctx.Logger.Error("No strategy found for item: %s", itemID) return false } ctx.Logger.Info("Player %s used item: %s", user.UserID, itemID) return strategy.Use(state, user, ctx) }