/* * JavaXYQ Source Code * by kylixs * http://javaxyq.googlecode.com * kylixs@qq.com */ package com.javaxyq.core; import java.util.HashMap; import java.util.Map; import java.util.Set; import com.javaxyq.data.ItemInstance; import com.javaxyq.event.ItemEvent; import com.javaxyq.event.ItemListener; import com.javaxyq.model.Item; import com.javaxyq.model.ItemTypes; import com.javaxyq.widget.Player; /** * @author dewitt * */ public class ItemManagerImpl implements ItemManager { private static ItemListener DEFAULT_HANDLER = new ItemListener() { @Override public void itemUsed(ItemEvent evt) { System.err.println("itemUsed: Unknown Item !"+evt); } @Override public void itemInitialized(ItemEvent evt) { System.err.println("itemInitialized: Unknown Item !"+evt); } @Override public void itemDestroyed(ItemEvent evt) { System.err.println("itemDestroyed: Unknown Item !"+evt); } }; private Map<Integer,ItemListener> itemHandlers = new HashMap<Integer, ItemListener>(); private DataManager dataManager; public ItemManagerImpl(DataManager dataManager) { super(); this.dataManager = dataManager; } public void regItem(int type,ItemListener l) { itemHandlers.put(type, l); } public boolean useItem(Player player,ItemInstance item) { if(item.getAmount() > 0) { ItemListener handler = findItemAction(item.getItem()); if(handler != null) { handler.itemUsed(new ItemEvent(player,item,"")); if(item.getAmount() <= 0) {//��������꣬��������Ʒ dataManager.removeItemFromPlayer(player,item); } return true; } } return false; } private ItemListener findItemAction(Item item) { Set<Integer> keys = itemHandlers.keySet(); for (Integer type : keys) { if(ItemTypes.isType(item, type)) { return itemHandlers.get(type); } } return DEFAULT_HANDLER; } }