📄 itemfactorymanager.cpp
字号:
m_Factories[Item::ITEM_CLASS_SERUM] = new SerumFactory(); m_ItemClassMap[m_Factories[Item::ITEM_CLASS_SERUM]->getItemClassName()] = Item::ITEM_CLASS_SERUM; m_Factories[Item::ITEM_CLASS_VAMPIRE_ETC] = new VampireETCFactory(); m_ItemClassMap[m_Factories[Item::ITEM_CLASS_VAMPIRE_ETC]->getItemClassName()] = Item::ITEM_CLASS_VAMPIRE_ETC; m_Factories[Item::ITEM_CLASS_SLAYER_PORTAL_ITEM] = new SlayerPortalItemFactory(); m_ItemClassMap[m_Factories[Item::ITEM_CLASS_SLAYER_PORTAL_ITEM]->getItemClassName()] = Item::ITEM_CLASS_SLAYER_PORTAL_ITEM; m_Factories[Item::ITEM_CLASS_VAMPIRE_PORTAL_ITEM] = new VampirePortalItemFactory(); m_ItemClassMap[m_Factories[Item::ITEM_CLASS_VAMPIRE_PORTAL_ITEM]->getItemClassName()] = Item::ITEM_CLASS_VAMPIRE_PORTAL_ITEM; m_Factories[Item::ITEM_CLASS_EVENT_GIFT_BOX] = new EventGiftBoxFactory(); m_ItemClassMap[m_Factories[Item::ITEM_CLASS_EVENT_GIFT_BOX]->getItemClassName()] = Item::ITEM_CLASS_EVENT_GIFT_BOX; m_Factories[Item::ITEM_CLASS_EVENT_STAR] = new EventStarFactory(); m_ItemClassMap[m_Factories[Item::ITEM_CLASS_EVENT_STAR]->getItemClassName()] = Item::ITEM_CLASS_EVENT_STAR; m_Factories[Item::ITEM_CLASS_VAMPIRE_EARRING] = new VampireEarringFactory(); m_ItemClassMap[m_Factories[Item::ITEM_CLASS_VAMPIRE_EARRING]->getItemClassName()] = Item::ITEM_CLASS_VAMPIRE_EARRING; m_Factories[Item::ITEM_CLASS_RELIC] = new RelicFactory(); m_ItemClassMap[m_Factories[Item::ITEM_CLASS_RELIC]->getItemClassName()] = Item::ITEM_CLASS_RELIC; m_Factories[Item::ITEM_CLASS_VAMPIRE_WEAPON] = new VampireWeaponFactory(); m_ItemClassMap[m_Factories[Item::ITEM_CLASS_VAMPIRE_WEAPON]->getItemClassName()] = Item::ITEM_CLASS_VAMPIRE_WEAPON; m_Factories[Item::ITEM_CLASS_VAMPIRE_AMULET] = new VampireAmuletFactory(); m_ItemClassMap[m_Factories[Item::ITEM_CLASS_VAMPIRE_AMULET]->getItemClassName()] = Item::ITEM_CLASS_VAMPIRE_AMULET; m_Factories[Item::ITEM_CLASS_QUEST_ITEM] = new QuestItemFactory(); m_ItemClassMap[m_Factories[Item::ITEM_CLASS_QUEST_ITEM]->getItemClassName()] = Item::ITEM_CLASS_QUEST_ITEM; m_Factories[Item::ITEM_CLASS_EVENT_TREE] = new EventTreeFactory(); m_ItemClassMap[m_Factories[Item::ITEM_CLASS_EVENT_TREE]->getItemClassName()] = Item::ITEM_CLASS_EVENT_TREE; m_Factories[Item::ITEM_CLASS_EVENT_ETC] = new EventETCFactory(); m_ItemClassMap[m_Factories[Item::ITEM_CLASS_EVENT_ETC]->getItemClassName()] = Item::ITEM_CLASS_EVENT_ETC; m_Factories[Item::ITEM_CLASS_BLOOD_BIBLE] = new BloodBibleFactory(); m_ItemClassMap[m_Factories[Item::ITEM_CLASS_BLOOD_BIBLE]->getItemClassName()] = Item::ITEM_CLASS_BLOOD_BIBLE; m_Factories[Item::ITEM_CLASS_CASTLE_SYMBOL] = new CastleSymbolFactory(); m_ItemClassMap[m_Factories[Item::ITEM_CLASS_CASTLE_SYMBOL]->getItemClassName()] = Item::ITEM_CLASS_CASTLE_SYMBOL; m_Factories[Item::ITEM_CLASS_COUPLE_RING] = new CoupleRingFactory(); m_ItemClassMap[m_Factories[Item::ITEM_CLASS_COUPLE_RING]->getItemClassName()] = Item::ITEM_CLASS_COUPLE_RING; m_Factories[Item::ITEM_CLASS_VAMPIRE_COUPLE_RING] = new VampireCoupleRingFactory(); m_ItemClassMap[m_Factories[Item::ITEM_CLASS_VAMPIRE_COUPLE_RING]->getItemClassName()] = Item::ITEM_CLASS_VAMPIRE_COUPLE_RING; m_Factories[Item::ITEM_CLASS_EVENT_ITEM] = new EventItemFactory(); m_ItemClassMap[m_Factories[Item::ITEM_CLASS_EVENT_ITEM]->getItemClassName()] = Item::ITEM_CLASS_EVENT_ITEM; m_Factories[Item::ITEM_CLASS_DYE_POTION] = new DyePotionFactory(); m_ItemClassMap[m_Factories[Item::ITEM_CLASS_DYE_POTION]->getItemClassName()] = Item::ITEM_CLASS_DYE_POTION; m_Factories[Item::ITEM_CLASS_RESURRECT_ITEM] = new ResurrectItemFactory(); m_ItemClassMap[m_Factories[Item::ITEM_CLASS_RESURRECT_ITEM]->getItemClassName()] = Item::ITEM_CLASS_RESURRECT_ITEM; m_Factories[Item::ITEM_CLASS_MIXING_ITEM] = new MixingItemFactory(); m_ItemClassMap[m_Factories[Item::ITEM_CLASS_MIXING_ITEM]->getItemClassName()] = Item::ITEM_CLASS_MIXING_ITEM; m_Factories[Item::ITEM_CLASS_OUSTERS_ARMSBAND] = new OustersArmsbandFactory(); m_ItemClassMap[m_Factories[Item::ITEM_CLASS_OUSTERS_ARMSBAND]->getItemClassName()] = Item::ITEM_CLASS_OUSTERS_ARMSBAND; m_Factories[Item::ITEM_CLASS_OUSTERS_BOOTS] = new OustersBootsFactory(); m_ItemClassMap[m_Factories[Item::ITEM_CLASS_OUSTERS_BOOTS]->getItemClassName()] = Item::ITEM_CLASS_OUSTERS_BOOTS; m_Factories[Item::ITEM_CLASS_OUSTERS_CHAKRAM] = new OustersChakramFactory(); m_ItemClassMap[m_Factories[Item::ITEM_CLASS_OUSTERS_CHAKRAM]->getItemClassName()] = Item::ITEM_CLASS_OUSTERS_CHAKRAM; m_Factories[Item::ITEM_CLASS_OUSTERS_CIRCLET] = new OustersCircletFactory(); m_ItemClassMap[m_Factories[Item::ITEM_CLASS_OUSTERS_CIRCLET]->getItemClassName()] = Item::ITEM_CLASS_OUSTERS_CIRCLET; m_Factories[Item::ITEM_CLASS_OUSTERS_COAT] = new OustersCoatFactory(); m_ItemClassMap[m_Factories[Item::ITEM_CLASS_OUSTERS_COAT]->getItemClassName()] = Item::ITEM_CLASS_OUSTERS_COAT; m_Factories[Item::ITEM_CLASS_OUSTERS_PENDENT] = new OustersPendentFactory(); m_ItemClassMap[m_Factories[Item::ITEM_CLASS_OUSTERS_PENDENT]->getItemClassName()] = Item::ITEM_CLASS_OUSTERS_PENDENT; m_Factories[Item::ITEM_CLASS_OUSTERS_RING] = new OustersRingFactory(); m_ItemClassMap[m_Factories[Item::ITEM_CLASS_OUSTERS_RING]->getItemClassName()] = Item::ITEM_CLASS_OUSTERS_RING; m_Factories[Item::ITEM_CLASS_OUSTERS_STONE] = new OustersStoneFactory(); m_ItemClassMap[m_Factories[Item::ITEM_CLASS_OUSTERS_STONE]->getItemClassName()] = Item::ITEM_CLASS_OUSTERS_STONE; m_Factories[Item::ITEM_CLASS_OUSTERS_WRISTLET] = new OustersWristletFactory(); m_ItemClassMap[m_Factories[Item::ITEM_CLASS_OUSTERS_WRISTLET]->getItemClassName()] = Item::ITEM_CLASS_OUSTERS_WRISTLET; m_Factories[Item::ITEM_CLASS_LARVA] = new LarvaFactory(); m_ItemClassMap[m_Factories[Item::ITEM_CLASS_LARVA]->getItemClassName()] = Item::ITEM_CLASS_LARVA; m_Factories[Item::ITEM_CLASS_PUPA] = new PupaFactory(); m_ItemClassMap[m_Factories[Item::ITEM_CLASS_PUPA]->getItemClassName()] = Item::ITEM_CLASS_PUPA; m_Factories[Item::ITEM_CLASS_COMPOS_MEI] = new ComposMeiFactory(); m_ItemClassMap[m_Factories[Item::ITEM_CLASS_COMPOS_MEI]->getItemClassName()] = Item::ITEM_CLASS_COMPOS_MEI; m_Factories[Item::ITEM_CLASS_OUSTERS_SUMMON_ITEM] = new OustersSummonItemFactory(); m_ItemClassMap[m_Factories[Item::ITEM_CLASS_OUSTERS_SUMMON_ITEM]->getItemClassName()] = Item::ITEM_CLASS_OUSTERS_SUMMON_ITEM; m_Factories[Item::ITEM_CLASS_EFFECT_ITEM] = new EffectItemFactory(); m_ItemClassMap[m_Factories[Item::ITEM_CLASS_EFFECT_ITEM]->getItemClassName()] = Item::ITEM_CLASS_EFFECT_ITEM; m_Factories[Item::ITEM_CLASS_CODE_SHEET] = new CodeSheetFactory(); m_ItemClassMap[m_Factories[Item::ITEM_CLASS_CODE_SHEET]->getItemClassName()] = Item::ITEM_CLASS_CODE_SHEET; m_Factories[Item::ITEM_CLASS_MOON_CARD] = new MoonCardFactory(); m_ItemClassMap[m_Factories[Item::ITEM_CLASS_MOON_CARD]->getItemClassName()] = Item::ITEM_CLASS_MOON_CARD; m_Factories[Item::ITEM_CLASS_SWEEPER] = new SweeperFactory(); m_ItemClassMap[m_Factories[Item::ITEM_CLASS_SWEEPER]->getItemClassName()] = Item::ITEM_CLASS_SWEEPER; m_Factories[Item::ITEM_CLASS_PET_ITEM] = new PetItemFactory(); m_ItemClassMap[m_Factories[Item::ITEM_CLASS_PET_ITEM]->getItemClassName()] = Item::ITEM_CLASS_PET_ITEM; m_Factories[Item::ITEM_CLASS_PET_FOOD] = new PetFoodFactory(); m_ItemClassMap[m_Factories[Item::ITEM_CLASS_PET_FOOD]->getItemClassName()] = Item::ITEM_CLASS_PET_FOOD; m_Factories[Item::ITEM_CLASS_PET_ENCHANT_ITEM] = new PetEnchantItemFactory(); m_ItemClassMap[m_Factories[Item::ITEM_CLASS_PET_ENCHANT_ITEM]->getItemClassName()] = Item::ITEM_CLASS_PET_ENCHANT_ITEM; m_Factories[Item::ITEM_CLASS_LUCKY_BAG] = new LuckyBagFactory(); m_ItemClassMap[m_Factories[Item::ITEM_CLASS_LUCKY_BAG]->getItemClassName()] = Item::ITEM_CLASS_LUCKY_BAG; __END_CATCH}////////////////////////////////////////////////////////////////////////// 酒捞袍 努贰胶肺 窍困 蒲配府 概聪廉俊 乐绰 createItem阑 角青茄促.////////////////////////////////////////////////////////////////////////Item* ItemFactoryManager::createItem (Item::ItemClass IClass, ItemType_t ItemType, const list<OptionType_t>& OptionType) throw (NoSuchElementException, Error){ __BEGIN_TRY try { // 酒捞袍 酒捞叼啊 裹困甫 逞绢级栏肺 牢秦辑 Seg.Fault 啊 惯积窍瘤 臼档废. // 捞繁 荤侩磊绰 寸厘 漏扼具 茄促. if (IClass >= m_Size || m_Factories[IClass] == NULL) { StringStream msg; msg << "item factory [" << (int)IClass << "] not exist."; cerr << "ItemFactoryManager::createItem() : NoSuchElementException" << endl; filelog("itembug.log", "ItemFactoryManager::createItem() : Invalid Item Class : %d", IClass); throw NoSuchElementException(msg.toString()); } } catch (Throwable & t) { cerr << t.toString() << endl; } Item* pItem = m_Factories[IClass]->createItem(ItemType, OptionType); pItem->setTraceItem( bTraceLog( pItem ) ); pItem->setUnique( g_pItemInfoManager->getItemInfo( IClass, ItemType )->isUnique() ); return pItem; __END_CATCH}////////////////////////////////////////////////////////////////////////// 酒捞袍酒捞叼肺 漂沥 酒捞袍狼 捞抚阑 府畔茄促.////////////////////////////////////////////////////////////////////////string ItemFactoryManager::getItemName (Item::ItemClass IClass) throw (){ __BEGIN_TRY // 酒捞袍 酒捞叼啊 裹困甫 逞绢级栏肺 牢秦辑 Seg.Fault 啊 惯积窍瘤 臼档废. // 捞繁 荤侩磊绰 寸厘 漏扼具 茄促. if (IClass >= m_Size || m_Factories[IClass] == NULL) { StringStream msg; msg << "invaltype item type(" << (int)IClass << ")"; } return m_Factories[IClass]->getItemClassName(); __END_CATCH}Item::ItemClass ItemFactoryManager::getItemClassByName( const string & ClassName ) throw(){ __BEGIN_TRY hash_map<string, Item::ItemClass>::const_iterator itr = m_ItemClassMap.begin(); for (; itr != m_ItemClassMap.end(); itr++) { // 措,家巩磊甫 公矫窍绊, 厚背甫 荐青茄促. if (strcasecmp(ClassName.c_str(), (itr->first).c_str()) == 0) { return itr->second; } } return Item::ITEM_CLASS_MAX; /* hash_map<string, Item::ItemClass>::const_iterator ClassType = m_ItemClassMap.find( ClassName ); if (ClassType==m_ItemClassMap.end()) { return Item::ITEM_CLASS_RING; } else { return ClassType->second; } */ __END_CATCH}//////////////////////////////////////////////////////////////////////// get debug string//////////////////////////////////////////////////////////////////////string ItemFactoryManager::toString () const throw (){ __BEGIN_TRY StringStream msg; msg << "ItemFactoryManager(\n"; for (int i = 0 ; i < m_Size ; i ++) { msg << "ItemFactories[" << i << "] == "; msg << (m_Factories[i] == NULL ? "NULL" : m_Factories[i]->getItemClassName()); msg << "\n"; } msg << ")"; return msg.toString(); __END_CATCH}//////////////////////////////////////////////////// global variable declaration//////////////////////////////////////////////////ItemFactoryManager* g_pItemFactoryManager = NULL;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -