📄 actionfactorymanager.cpp
字号:
////////////////////////////////////////////////////////////////////////////////// Filename : ActionFactoryManager.cpp // Written By : // Description :////////////////////////////////////////////////////////////////////////////////#include "Assert.h"#include "ActionFactoryManager.h"#include "StringStream.h"#include "ActionSetPosition.h"#include "ActionWander.h"#include "ActionSay.h"#include "ActionRandomSay.h"#include "ActionAsk.h"#include "ActionQuitDialogue.h"#include "ActionPrepareShop.h"#include "ActionSell.h"#include "ActionBuy.h"#include "ActionRegenShop.h"#include "ActionTeachSkill.h"#include "ActionHeal.h"#include "ActionRedeemMotorcycle.h"#include "ActionSearchMotorcycle.h"#include "ActionRepair.h"#include "ActionStashSell.h"#include "ActionStashOpen.h"#include "ActionRestore.h"#include "ActionSetResurrectZone.h"#include "ActionSilverCoating.h"#include "ActionCreateGuild.h"#include "ActionDestroyGuild.h"#include "ActionTutorial.h"#include "ActionGiveNewbieItem.h"#include "ActionActivatePortal.h"#include "ActionTurnOnFlag.h"#include "ActionTurnOffFlag.h"#include "ActionSystemMessage.h"#include "ActionSystemMessagePerRace.h"#include "ActionTakeDonation.h"#include "ActionCallHelicopter.h"#include "ActionRegenEventShop.h"#include "ActionAskDynamic.h"#include "ActionSayDynamic.h"#include "ActionGiveSpecialEventItem.h"#include "ActionRedistributeAttr.h"#include "ActionTradeEventItem.h"#include "ActionTradeLairItem.h"#include "ActionShowGuildDialog.h"#include "ActionSimpleQuestList.h"#include "ActionSimpleQuestComplete.h"#include "ActionSimpleQuestRegen.h"#include "ActionTradeGiftBox.h"#include "ActionGiveTestServerReward.h"#include "ActionEnterCastleWithFee.h"#include "ActionShowTaxBalance.h"#include "ActionAskVariable.h"#include "ActionWarRegistration.h"#include "ActionShowWarSchedule.h"#include "ActionJoinRaceWar.h"#include "ActionGiveEventItem.h"#include "ActionGiveAccountEventItem.h"#include "ActionInitPartnerWaitingManager.h"#include "ActionWaitForMeetCouple.h"#include "ActionWaitForApartCouple.h"#include "ActionAcceptCoupleRequest.h"#include "ActionAcceptApartCouple.h"#include "ActionForceApartCouple.h"#include "ActionEnterPKZone.h"#include "ActionWarpToResurrectPosition.h"#include "ActionSelectQuest.h"#include "ActionQuestReward.h"#include "ActionWarpToNoviceZone.h"#include "ActionCancelQuest.h"#include "ActionInitSimpleQuest.h"#include "ActionWanderZone.h"#include "ActionInitEventQuest.h"#include "ActionAskByQuestLevel.h"#include "ActionGiveEventQuest.h"#include "ActionAdvanceEventQuest.h"#include "ActionRewardEventQuest.h"#include "ActionCancelEventQuestScript.h"#include "ActionGiveLotto.h"#include "ActionGiveEventQuestScript.h"#include "ActionStartEventQuest.h"#include "ActionWarpInZone.h"#include "ActionEventMeet.h"#include "ActionGiveFinalLottoScript.h"#include "ActionGiveQuestItem.h"#include "ActionTakeOutGoods.h"#include "ActionClearRankBonus.h"#include "ActionContractGnomesHorn.h"#include "ActionDownSkill.h"#include "ActionMiniGame.h"#include "ActionGiveItem.h"#include "ActionActivateMazeExit.h"#include "ActionActivateMazeEnter.h"#include "ActionActivateMazeReturn.h"#include "ActionWarpLevelWarZone.h"#include "ActionCheckPartnerName.h"#include "ActionStartPetQuest.h"#include "ActionPetDeposit.h"#include "ActionPetWithdraw.h"#include "ActionEnterEventZone.h"////////////////////////////////////////////////////////////////////////////////// constructor////////////////////////////////////////////////////////////////////////////////ActionFactoryManager::ActionFactoryManager () throw (): m_Factories(NULL) , m_Size(Action::ACTION_MAX){ __BEGIN_TRY Assert(m_Size > 0); // 咀记蒲配府硅凯阑 积己茄促. m_Factories = new ActionFactory*[ m_Size ]; // 蒲配府俊 措茄 器牢磐甸阑 NULL 肺 檬扁拳茄促. for (int i = 0 ; i < m_Size ; i ++) m_Factories[i] = NULL; __END_CATCH} ////////////////////////////////////////////////////////////////////////////////// destructor////////////////////////////////////////////////////////////////////////////////ActionFactoryManager::~ActionFactoryManager () throw (){ __BEGIN_TRY Assert(m_Factories != NULL); // 阿阿狼 咀记蒲配府甸阑 昏力茄促. for (int i = 0 ; i < m_Size ; i ++) { if (m_Factories[i] != NULL) { delete m_Factories[i]; m_Factories[i] = NULL; } } // 咀记蒲配府硅凯阑 昏力茄促. delete [] m_Factories; m_Factories = NULL; __END_CATCH}////////////////////////////////////////////////////////////////////////////////// 沥狼等 葛电 咀记蒲配府甸阑 咯扁俊 眠啊茄促.////////////////////////////////////////////////////////////////////////////////void ActionFactoryManager::init () throw (Error){ __BEGIN_TRY addFactory(new ActionSetPositionFactory()); addFactory(new ActionWanderFactory()); addFactory(new ActionSayFactory()); addFactory(new ActionRandomSayFactory()); addFactory(new ActionAskFactory()); addFactory(new ActionQuitDialogueFactory()); addFactory(new ActionPrepareShopFactory()); addFactory(new ActionSellFactory()); addFactory(new ActionBuyFactory()); addFactory(new ActionRegenShopFactory()); addFactory(new ActionTeachSkillFactory()); addFactory(new ActionHealFactory()); addFactory(new ActionRedeemMotorcycleFactory()); addFactory(new ActionSearchMotorcycleFactory()); addFactory(new ActionRepairFactory()); addFactory(new ActionStashSellFactory()); addFactory(new ActionStashOpenFactory()); addFactory(new ActionRestoreFactory()); addFactory(new ActionSetResurrectZoneFactory()); addFactory(new ActionSilverCoatingFactory()); addFactory(new ActionCreateGuildFactory()); addFactory(new ActionDestroyGuildFactory()); addFactory(new ActionTutorialFactory()); addFactory(new ActionGiveNewbieItemFactory()); addFactory(new ActionActivatePortalFactory()); addFactory(new ActionTurnOnFlagFactory()); addFactory(new ActionTurnOffFlagFactory()); addFactory(new ActionSystemMessageFactory()); addFactory(new ActionTakeDonationFactory()); addFactory(new ActionCallHelicopterFactory()); addFactory(new ActionRegenEventShopFactory()); addFactory(new ActionAskDynamicFactory()); addFactory(new ActionSayDynamicFactory()); addFactory(new ActionGiveSpecialEventItemFactory()); addFactory(new ActionRedistributeAttrFactory()); addFactory(new ActionTradeEventItemFactory()); addFactory(new ActionTradeLairItemFactory()); addFactory(new ActionShowGuildDialogFactory()); addFactory(new ActionSimpleQuestListFactory()); addFactory(new ActionSimpleQuestCompleteFactory()); addFactory(new ActionSimpleQuestRegenFactory()); addFactory(new ActionTradeGiftBoxFactory()); addFactory(new ActionGiveTestServerRewardFactory()); addFactory(new ActionEnterCastleWithFeeFactory()); addFactory(new ActionShowTaxBalanceFactory()); addFactory(new ActionAskVariableFactory()); addFactory(new ActionWarRegistrationFactory()); addFactory(new ActionShowWarScheduleFactory()); addFactory(new ActionJoinRaceWarFactory()); addFactory(new ActionGiveEventItemFactory()); addFactory(new ActionGiveAccountEventItemFactory()); addFactory(new ActionInitPartnerWaitingManagerFactory()); addFactory(new ActionWaitForMeetCoupleFactory()); addFactory(new ActionWaitForApartCoupleFactory()); addFactory(new ActionAcceptCoupleRequestFactory()); addFactory(new ActionAcceptApartCoupleFactory()); addFactory(new ActionForceApartCoupleFactory()); addFactory(new ActionEnterPKZoneFactory()); addFactory(new ActionWarpToResurrectPositionFactory()); addFactory(new ActionSelectQuestFactory()); addFactory(new ActionQuestRewardFactory()); addFactory(new ActionWarpToNoviceZoneFactory()); addFactory(new ActionCancelQuestFactory()); addFactory(new ActionInitSimpleQuestFactory()); addFactory(new ActionWanderZoneFactory()); addFactory(new ActionInitEventQuestFactory()); addFactory(new ActionGiveEventQuestFactory()); addFactory(new ActionAdvanceEventQuestFactory()); addFactory(new ActionRewardEventQuestFactory()); addFactory(new ActionCancelEventQuestScriptFactory()); addFactory(new ActionGiveLottoFactory()); addFactory(new ActionAskByQuestLevelFactory()); addFactory(new ActionGiveEventQuestScriptFactory()); addFactory(new ActionStartEventQuestFactory()); addFactory(new ActionWarpInZoneFactory()); addFactory(new ActionEventMeetFactory()); addFactory(new ActionGiveFinalLottoScriptFactory()); addFactory(new ActionGiveQuestItemFactory()); addFactory(new ActionTakeOutGoodsFactory()); addFactory(new ActionClearRankBonusFactory()); addFactory(new ActionContractGnomesHornFactory()); addFactory(new ActionDownSkillFactory()); addFactory(new ActionMiniGameFactory()); addFactory(new ActionGiveItemFactory()); addFactory(new ActionActivateMazeExitFactory()); addFactory(new ActionActivateMazeEnterFactory()); addFactory(new ActionActivateMazeReturnFactory()); addFactory(new ActionSystemMessagePerRaceFactory()); addFactory(new ActionWarpLevelWarZoneFactory()); addFactory(new ActionCheckPartnerNameFactory()); addFactory(new ActionStartPetQuestFactory()); addFactory(new ActionPetDepositFactory()); /* 脐 焊包窃 : 咀记烹钦 PetDeposit父 静扁肺 茄促. Withdraw绰 静瘤 臼绰促. */ /* 2004斥 5岿 13老 - 铰疙, 侩辟 */ /* addFactory(new ActionPetWithdrawFactory()); */ addFactory(new ActionEnterEventZoneFactory()); __END_CATCH}////////////////////////////////////////////////////////////////////////////////// add condition factory to factories array////////////////////////////////////////////////////////////////////////////////void ActionFactoryManager::addFactory (ActionFactory * pFactory) throw (Error){ __BEGIN_TRY Assert(pFactory != NULL); if (m_Factories[ pFactory->getActionType() ] != NULL) { StringStream msg; msg << "duplicate action factories, " << pFactory->getActionName() ; throw Error(msg.toString()); } // 咀记蒲配府甫 殿废茄促. m_Factories[ pFactory->getActionType() ] = pFactory; __END_CATCH} ////////////////////////////////////////////////////////////////////////////////// create condition object with condition type////////////////////////////////////////////////////////////////////////////////Action * ActionFactoryManager::createAction (ActionType_t actionType) const throw (Error){ __BEGIN_TRY // 咀记 鸥涝捞 裹困甫 逞绢级栏肺 牢秦辑 Seg.Fault 啊 惯积窍瘤 臼档废. // 捞繁 荤侩磊绰 寸厘 漏扼具 茄促. if (actionType >= m_Size || m_Factories[actionType] == NULL) { StringStream msg; msg << "action factory [" << actionType << "] not exist."; cout << msg.toString() << endl; throw Error(msg.toString()); } return m_Factories[actionType]->createAction(); __END_CATCH}////////////////////////////////////////////////////////////////////////////////// get condition name with condition type////////////////////////////////////////////////////////////////////////////////string ActionFactoryManager::getActionName (ActionType_t actionType) const throw (Error){ __BEGIN_TRY // 咀记 鸥涝捞 裹困甫 逞绢级栏肺 牢秦辑 Seg.Fault 啊 惯积窍瘤 臼档废. // 捞繁 荤侩磊绰 寸厘 漏扼具 茄促. if (actionType >= m_Size || m_Factories[actionType] == NULL) { StringStream msg; msg << "invalid action type (" << actionType << ")"; cout << msg.toString() << endl; throw Error(msg.toString()); } return m_Factories[actionType]->getActionName(); __END_CATCH}////////////////////////////////////////////////////////////////////////////////// get action type with action type name////////////////////////////////////////////////////////////////////////////////ActionType_t ActionFactoryManager::getActionType (const string & actionname) const throw (Error){ __BEGIN_TRY#ifdef __OUTPUT_INIT__ cout << "Action[" << actionname << "]..." << endl;#endif for (int i = 0 ; i < m_Size ; i ++) { if (m_Factories[i] != NULL) { if (m_Factories[i]->getActionName() == actionname) { return i; } } } string msg = "no such action type : " + actionname; cout << msg << endl; throw Error(msg); __END_CATCH}////////////////////////////////////////////////////////////////////////////////// get debug string////////////////////////////////////////////////////////////////////////////////string ActionFactoryManager::toString () const throw (){ __BEGIN_TRY StringStream msg; msg << "ActionFactoryManager(\n"; for (int i = 0 ; i < m_Size ; i ++) { msg << "ActionFactories[" << i << "] == "; msg << (m_Factories[i] == NULL ? "NULL" : m_Factories[i]->getActionName()); msg << "\n"; } msg << ")"; return msg.toString(); __END_CATCH}// global variable declarationActionFactoryManager * g_pActionFactoryManager = NULL;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -