#include "stdafx.h" #include "ScriptManager.h" #include ////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////// #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include ////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////// DECLARE_BASE_WISE_STEP_FUNCTION() { DEBUGGING_CODE_L3(""); ScriptManager::CreateInstance(); // (¹èÆ÷½Ã)(ÀÓ½ÃÁ¦°Å) #ifndef __WAVERIX_AUTH_SERVER_TEST__ ScriptManager::Load(); #endif } REGISTER_STEP_HANDLER_BASE(eWISE_ROUTINES_INIT_GAME_DATAS); ////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////// class WiseScriptParserManager : public ScriptParserManager { public: WiseScriptParserManager() {} ~WiseScriptParserManager() {} public: virtual void InitParserPool(void* pPoolOption) { MapInfoParser::Instance()->Init(100, NULL); ItemInfoParser::Instance()->Init(1000, NULL); SkillInfoParser::Instance()->Init(100, NULL); StateInfoParser::Instance()->Init(100, NULL); NPCInfoParser::Instance()->Init(100, NULL, 100); ShopInfoParser::Instance()->Init(10, NULL); ItemCompositeParser::Instance()->Init(100, NULL); ItemComposeListParser::Instance()->Init(100, NULL); SocketOptionParser::Instance()->Init(NULL); SunEventInfoParser::Instance()->Init(NULL); StyleQuickRegistInfoParser::Instance()->Init(10, NULL); //GET_MISSION_RANK_MANAGER()->SetPackFileName(NULL); #ifdef _ADD_REWARD_SCRIPT //ItemTypeList::Instance()->Init(NULL); //RewardInfoList::Instance()->Init(NULL); #endif //RankOptionParser::Instance()->Init(NULL); MissionRewardParser::Instance()->Init(10, NULL); RequireFieldLevelInfoParser::Instance()->Init(100, NULL); ItemCrystalizeListParser::Instance()->Init(10, NULL); ExtraStoneOptionInfoParser::Instance()->Init(100,NULL); ExpValueInfoParser::Instance()->Init(GameOptionParser::Instance()->GetMaxLevel(), NULL); CharInfoParser::Instance()->Init(100,NULL); //ExchangeRewardInfoParser::Instance()->Init(100, NULL); } virtual BOOL RegisterParser() { RegisterScriptData(SCRIPT_GAME_OPTION, "data\\GameOption.ini", GameOptionParser::Instance()); do { ItemInfoParser* pITEM = ItemInfoParser::Instance(); //pITEM->Init(1000); RegisterScriptData(SCRIPT_ACCESSORYITEMINFO, "data\\AccessoryItemInfo.txt", pITEM); RegisterScriptData(SCRIPT_ARMORITEMINFO, "data\\ArmorItemInfo.txt", pITEM); RegisterScriptData(SCRIPT_WASTEITEMINFO, "data\\WasteItemInfo.txt", pITEM); RegisterScriptData(SCRIPT_WEAPONITEMINFO, "data\\WeaponItemInfo.txt", pITEM); #ifdef __NA_497_20070529_NATIONAL_SCRIPT RegisterScriptData(SCRIPT_CHARGEITEMINFO, OptLogicByNation::Instance()->GAME.GetScriptNameChargeItemInfo(), pITEM); #else RegisterScriptData(SCRIPT_CHARGEITEMINFO, "data\\ChargeItemInfo.txt", pITEM); #endif } while(0); do { MapInfoParser* pMAP = MapInfoParser::Instance(); //pMAP->Init(100); RegisterScriptData(SCRIPT_WORLD_SUB_INFO, "data\\Worldsubinfo.txt", pMAP); RegisterScriptData(SCRIPT_WORLD, "data\\World.txt", pMAP); RegisterScriptData(SCRIPT_FIELD, "data\\Field.txt", pMAP); RegisterScriptData(SCRIPT_FIELDWMO, "data\\Fieldwmo.txt", pMAP); RegisterScriptData(SCRIPT_FIELDWUT, "data\\Fieldwut.txt", pMAP); RegisterScriptData(SCRIPT_MAPENTERANCEPORTAL, "data\\MapEnterancePortal.txt", pMAP); } while(0); do { SkillInfoParser* pSKILL = SkillInfoParser::Instance(); //pSKILL->Init(1000); RegisterScriptData(SCRIPT_SKILLINFO, "data\\SkillInfo.txt", pSKILL); RegisterScriptData(SCRIPT_STYLEINFO, "data\\StyleInfo.txt", pSKILL); } while(0); do { StateInfoParser* pSTATE = StateInfoParser::Instance(); //pSTATE->Init(100); RegisterScriptData(SCRIPT_STATEINFO, "data\\StateInfo.txt", pSTATE); } while(0); do { NPCInfoParser* pNPC = NPCInfoParser::Instance(); //pNPC->Init(1000, 100); RegisterScriptData(SCRIPT_NPCINFO, "data\\NPCInfo.txt", pNPC); RegisterScriptData(SCRIPT_NPCEXTRAINFO, "data\\NPCExtraInfo.txt", pNPC); } while(0); do { ShopInfoParser* pSHOP = ShopInfoParser::Instance(); //pSHOP->Init(100); RegisterScriptData(SCRIPT_SHOPINFO, "data\\ShopInfo.txt", pSHOP); } while(0); do { ItemCompositeParser* pITEM = ItemCompositeParser::Instance(); //pITEM->Init(100); RegisterScriptData(SCRIPT_ITEMCOMPOSITEINFO, "data\\ItemCompositeInfo.txt", pITEM); } while(0); do { ItemComposeListParser* pITEM = ItemComposeListParser::Instance(); //pITEM->Init(100); RegisterScriptData(SCRIPT_ITEMCOMPOSELIST, "data\\ItemComposeList.txt", pITEM); } while(0); do { SocketOptionParser* pSOCKET = SocketOptionParser::Instance(); //pSOCKET->Init(PACK_FILE_NAME); RegisterScriptData(SCRIPT_SOCKETOPTIONINFO, "data\\SocketOptionInfo.txt", pSOCKET); } while(0); do { SunEventInfoParser* pEVENT = SunEventInfoParser::Instance(); //pEVENT->Init(PACK_FILE_NAME); RegisterScriptData(SCRIPT_SUNEVENTINFO, "data\\SunEventInfo.txt", pEVENT); } while(0); do { StyleQuickRegistInfoParser* pSTYLE = StyleQuickRegistInfoParser::Instance(); //pSTYLE->Init(100); RegisterScriptData(SCRIPT_STYLEQUICKREGISTINFO, "data\\StyleQuickRegistInfo.txt", pSTYLE); } while(0); do { ItemTypeList* pITEM = ItemTypeList::Instance(); //pITEM->Init(PACK_FILE_NAME); RegisterScriptData(SCRIPT_ITEMTYPELIST, "data\\ItemTypeList.txt", pITEM); } while(0); do { RewardInfoList* pREWARD = RewardInfoList::Instance(); //pREWARD->Init(PACK_FILE_NAME); RegisterScriptData(SCRIPT_REWARDINFOLIST, "data\\RewardInfoList.txt", pREWARD); } while(0); do { RankOptionParser* pRANK = RankOptionParser::Instance(); //pRANK->Init(PACK_FILE_NAME); RegisterScriptData(SCRIPT_RANKOPTIONINFO, "data\\RankOptionInfo.txt", pRANK); } while(0); do { MissionRewardParser* pREWARD = MissionRewardParser::Instance(); //pREWARD->Init(100); RegisterScriptData(SCRIPT_MISSIONREWARDINFO, "data\\MissionRewardInfo.txt", MissionRewardParser::Instance()); } while(0); do { RequireFieldLevelInfoParser* pREQUIRE = RequireFieldLevelInfoParser::Instance(); //pREQUIRE->Init(100); RegisterScriptData(SCRIPT_REQUIREFIELDLEVELINFO, "data\\RequireFieldLevelInfo.txt", pREQUIRE); } while(0); do { ItemCrystalizeListParser* pITEM = ItemCrystalizeListParser::Instance(); //pITEM->Init(50); RegisterScriptData(SCRIPT_ITEMCRYSTALIZELIST, "data\\ItemCrystalizeList.txt", ItemCrystalizeListParser::Instance()); } while(0); do { ExtraStoneOptionInfoParser* pEXTRA = ExtraStoneOptionInfoParser::Instance(); //pEXTRA->Init(100); RegisterScriptData(SCRIPT_EXTRASTONEOPTIONINFO, "data\\ExtraStoneOptionInfo.txt", ExtraStoneOptionInfoParser::Instance()); } while(0); do { // ExpValueInfoParser* pEXP = ExpValueInfoParser::Instance(); // //pEXP->Init(100); // RegisterScriptData(SCRIPT_EXPVALUEINFO, "data\\ExpValueInfo.txt", ExpValueInfoParser::Instance()); } while(0); do { CharInfoParser* pCHAR = CharInfoParser::Instance(); //pCHAR->Init(100); RegisterScriptData(SCRIPT_INITCHARINFO, "data\\InitCharInfoList.txt", CharInfoParser::Instance()); } while(0); do { EnchantParser* pENCHANT = EnchantParser::Instance(); //pENCHANT->Init(PACK_FILE_NAME); RegisterScriptData(SCRIPT_ENCHANT, "data\\Enchant.txt", EnchantParser::Instance()); //EventInfoParser::Instance()->Init(100,PACK_FILE_NAME); //EventInfoParser::Instance()->Load("Data\\EventInfo.txt"); } while(0); do { //SkillInventoryStoreParser* pSKILL = SkillInventoryStoreParser::Instance(); //pSKILL->Init(1000); //pSKILL->Load("data\\SkillInventoryStore.txt"); //RegisterScriptData(SCRIPT_ENCHANT, "data\\Enchant.txt", EnchantParser::Instance()); } while(0); return TRUE; } virtual void DestroyInstanceEx() { MapInfoParser::Instance()->Release(); MapInfoParser::Instance()->DestroyInstance(); ItemInfoParser::Instance()->Release(); ItemInfoParser::Instance()->DestroyInstance(); SkillInfoParser::Instance()->Release(); SkillInfoParser::Instance()->DestroyInstance(); StateInfoParser::Instance()->Release(); StateInfoParser::Instance()->DestroyInstance(); NPCInfoParser::Instance()->Release(); NPCInfoParser::Instance()->DestroyInstance(); ShopInfoParser::Instance()->Release(); ShopInfoParser::Instance()->DestroyInstance(); ItemCompositeParser::Instance()->Release(); ItemCompositeParser::Instance()->DestroyInstance(); ItemComposeListParser::Instance()->Release(); ItemComposeListParser::Instance()->DestroyInstance(); SocketOptionParser::Instance()->Release(); SocketOptionParser::Instance()->DestroyInstance(); SunEventInfoParser::Instance()->Release(); SunEventInfoParser::Instance()->DestroyInstance(); StyleQuickRegistInfoParser::Instance()->Release(); StyleQuickRegistInfoParser::Instance()->DestroyInstance(); //#ifdef _ADD_REWARD_SCRIPT ItemTypeList::Instance()->Release(); ItemTypeList::Instance()->DestroyInstance(); RewardInfoList::Instance()->Release(); RewardInfoList::Instance()->DestroyInstance(); //#endif RankOptionParser::Instance()->Release(); RankOptionParser::Instance()->DestroyInstance(); MissionRewardParser::Instance()->Release(); MissionRewardParser::Instance()->DestroyInstance(); RequireFieldLevelInfoParser::Instance()->Release(); RequireFieldLevelInfoParser::Instance()->DestroyInstance(); ItemCrystalizeListParser::Instance()->Release(); ItemCrystalizeListParser::Instance()->DestroyInstance(); ExtraStoneOptionInfoParser::Instance()->Release(); ExtraStoneOptionInfoParser::Instance()->DestroyInstance(); //#ifdef _ADD_EXPVALUE ExpValueInfoParser::Instance()->Release(); ExpValueInfoParser::Instance()->DestroyInstance(); //#endif EnchantParser::Instance()->Release(); EnchantParser::Instance()->DestroyInstance(); CharInfoParser::Instance()->Release(); CharInfoParser::Instance()->DestroyInstance(); #ifdef __NA_000000_20070528_TAIWAN_GUILD_PVP ExchangeRewardInfoParser::Instance()->Release(); ExchangeRewardInfoParser::Instance()->DestroyInstance(); #endif GameOptionParser::Instance()->Release(); GameOptionParser::Instance()->DestroyInstance(); } }; ScriptManager::ScriptManager() { m_pParserMGR = new WiseScriptParserManager(); } ScriptManager::~ScriptManager() { m_pParserMGR->DestroyInstanceEx(); SAFE_DELETE(m_pParserMGR); } void ScriptManager::CreateInstance() { if(!ms_pInstance) { ms_pInstance = new ScriptManager(); } } void ScriptManager::DestroyInstance() { SAFE_DELETE(ms_pInstance); } void ScriptManager::Initialize() { //ItemInfoParser::Instance()->Init(1000); } void ScriptManager::Release() { ms_pInstance->m_pParserMGR->DestroyInstanceEx(); SAFE_DELETE(ms_pInstance->m_pParserMGR); } BOOL ScriptManager::Load() { ms_pInstance->m_pParserMGR->InitParserPool(NULL); ms_pInstance->m_pParserMGR->RegisterParser(); ms_pInstance->m_pParserMGR->Load(); //GraphicResourceList::Instance()->Init(MAX_GRAPHIC_INFO, PACK_FILE_NAME); //GraphicResourceList::Instance()->Load("data\\GraphicResourceList.txt"); //WeaponSoundInfoParser::Instance()->Init(100, PACK_FILE_NAME); //WeaponSoundInfoParser::Instance()->Load("Data\\WeaponSoundInfo.txt"); //CharSoundInfoParser::Instance()->Init(10000, PACK_FILE_NAME); //CharSoundInfoParser::Instance()->Load("Data\\CharSoundInfo.txt"); //BGMSoundInfoParser::Instance()->Init(MAX_BGM, PACK_FILE_NAME); //BGMSoundInfoParser::Instance()->Load("Data\\BGMInfo.txt"); //DlgPosInfoParser::Instance()->Init(100, PACK_FILE_NAME); //DlgPosInfoParser::Instance()->Load("Data\\DialogPosInfo.txt"); // // ÇöÀç´Â triger °ü·Ã ¸Þ½ÃÁö¸¸ ·Îµå ÇØ¼­ »ç¿ë. // Message::Instance()->Init(MESSAGE_TOTAL_MAX,PACK_FILE_NAME); //#ifdef _262_SCRIPT_PARTITION_OF_NATION // Message::Instance()->Load(GlobalFunc::AddNationName("data\\message.txt")); //#else //_262_SCRIPT_PARTITION_OF_NATION // Message::Instance()->Load("data\\message.txt"); //#endif //_262_SCRIPT_PARTITION_OF_NATION // EnvironmentInfoParser::Instance()->Init(100,PACK_FILE_NAME); // EnvironmentInfoParser::Instance()->Load("Data\\WorldConfig.txt"); // // ProjectileInfoParser::Instance()->Init(100,PACK_FILE_NAME); // ProjectileInfoParser::Instance()->Load("Data\\ProjectileInfo.txt"); // // HeroVoiceInfoParser::Instance()->Init(10,PACK_FILE_NAME); // HeroVoiceInfoParser::Instance()->Load("Data\\HeroVoiceInfo.txt"); // // NPCVoiceInfoParser::Instance()->Init(100,PACK_FILE_NAME); // NPCVoiceInfoParser::Instance()->Load("Data\\NPCVoiceInfo.txt"); // // MonsterVoiceInfoParser::Instance()->Init(100,PACK_FILE_NAME); // MonsterVoiceInfoParser::Instance()->Load("Data\\MonsterVoiceInfo.txt"); // // RadarInfoParser::Instance()->Init(100,PACK_FILE_NAME); // RadarInfoParser::Instance()->Load("Data\\RadarInfo.txt", "Data\\Interface\\all_radarpoint.tga"); // // HeroVariationInfoParser::Instance()->Init(100,PACK_FILE_NAME); // HeroVariationInfoParser::Instance()->Load("Data\\HeroVariationInfo.txt"); // // HeroHeightInfoParser::Instance()->Init(100,PACK_FILE_NAME); // HeroHeightInfoParser::Instance()->Load("Data\\HeroHeightsInfo.txt"); // // ItemSoundInfoParser::Instance()->Init(MAX_ITEM_SOUND_INFO, PACK_FILE_NAME); // ItemSoundInfoParser::Instance()->Load("Data\\ItemSoundInfo.txt"); // // // LimitedMapPortParser::Instance()->Init(MAX_NPC_PORTAL_INFO, PACK_FILE_NAME); // LimitedMapPortParser::Instance()->Load("Data\\LimitedMapPort.txt"); // // HeadMeshInfoParser::Instance()->Init(100,PACK_FILE_NAME); // HeadMeshInfoParser::Instance()->Load("Data\\HeadMeshInfo.txt"); // // //#ifdef HAIR_COLOR_VARIATION // HeadColorInfoParser::Instance()->Init(100,PACK_FILE_NAME); // HeadColorInfoParser::Instance()->Load("Data\\HeadColorInfo.txt"); //#endif // // SkillTextInfoParser::Instance()->Init(MAX_SKILL_TEXT_INFO, PACK_FILE_NAME); // SkillTextInfoParser::Instance()->Load("Data\\Skilltext.txt"); // // SkillEffectInfoParser::Instance()->Init(MAX_SKILL_TEXT_INFO, PACK_FILE_NAME); // SkillEffectInfoParser::Instance()->Load("Data\\Effect\\skilleffect.txt"); // // OptionListParser::Instance()->Init(500, PACK_FILE_NAME); // OptionListParser::Instance()->Load("Data\\OptionList.txt"); // // HelpInfoParser::Instance()->Init(MAX_HELP_INFO, PACK_FILE_NAME); // HelpInfoParser::Instance()->Load("Data\\HelpInfo.txt"); // // // CompositeNPCInfoParser::Instance()->Init(MAX_ITEM_COMPOSITE_NPC_INFO, PACK_FILE_NAME); // CompositeNPCInfoParser::Instance()->Load("Data\\composite_NPC.txt"); // //#ifdef _JBH_ADD_MANUAL_KEY_SETTING // KeyInfoParser::Instance()->Init(PACK_FILE_NAME); // KeyInfoParser::Instance()->Load("Data\\KeySettingInfoParser.txt"); //#endif // //#ifdef _ADD_QUEST // QuestTextInfoParser::Instance()->Init(MAX_QUEST_TEXT_INFO, PACK_FILE_NAME); //#ifdef _262_SCRIPT_PARTITION_OF_NATION // QuestTextInfoParser::Instance()->Load(GlobalFunc::AddNationName("Data\\QuestText.txt")); //#else // _262_SCRIPT_PARTITION_OF_NATION // QuestTextInfoParser::Instance()->Load("Data\\QuestText.txt"); //#endif // _262_SCRIPT_PARTITION_OF_NATION // // g_QuestInfoManager.Load("Data\\QuestInfo.txt", PACK_FILE_NAME); //RegisterScriptData(SCRIPT_AICOMMONINFO, "data\\AICommonInfo.txt", AIParamParser::Instance()); //RegisterScriptData(SCRIPT_AITYPEINFO, "data\\AITypeInfo.txt", AIParamParser::Instance()); //RegisterScriptData(SCRIPT_GROUP, "data\\Group.txt", GroupParser::Instance()); //ÀÇÁ¸¼º NPCInfo //RegisterScriptData(SCRIPT_REGEN, "data\\Regen.txt", RegenParser::Instance()); // ÀÇÁ¸¼º Group //RegisterScriptData(SCRIPT_REGEN_POS, "data\\Regen_pos.txt", RegenParser::Instance()); //RegisterScriptData(SCRIPT_MISSIONRANKINGREWARD, "data\\MissionRankingReward.txt", &g_GameRankingMgr); //RegisterScriptData(SCRIPT_MISSIONRANKINGLVAREA, "data\\MissionRankingLVArea.txt", &g_GameRankingMgr); //RegisterScriptData(SCRIPT_FORMULARATIO, "data\\FormulaRatio.txt", FormulaRatioParser::Instance()); //RegisterScriptData(SCRIPT_VSHUNTINGREWARDINFO, "data\\VSHuntingRewardInfo.txt", CHuntingRewardParser::Instance()); //RegisterScriptData(SCRIPT_ARMORTYPEDAMAGEINFO, "data\\ArmorTypeDamageInfo.txt", ArmorDamageParser::Instance()); //RegisterScriptData(SCRIPT_FATIGUEOPTION, "data\\FatigueOption.ini", FatigueOptionParser::Instance()); //RegisterScriptData(SCRIPT_PKSCRIPT, "data\\PKScript.txt", PKScriptParser::Instance()); //#ifdef __NA_000181_20070112_MONSTER_SUMMON //RegisterScriptData(SCRIPT_MONSTERSUMMON, "data\\MonsterSummon.txt", MonsterSummonParser::Instance()); //#endif //#ifdef __NA_000285_20070220_MAP_PARTIAL_LOADING //RegisterScriptData(SCRIPT_MAP_PARTIAL_LOADING, "data\\MapPartialLoading.ini", MapPartialLoadingParser::Instance()); //#endif //#ifdef __NA_0_20061214_GUILD_SYSTEM_PART2_DUTY //RegisterScriptData(SCRIPT_GUILD_RIGHTS_INFO, "data\\GuildRightsInfo.txt", GuildRightsInfoParser::Instance()); //RegisterScriptData(SCRIPT_GUILD_DUTY_INFO, "data\\GuildDutyInfo.txt", GuildDutyInfoParser::Instance()); //#endif //#ifdef __NA_000367_20070327_ADD_FILTERING //RegisterScriptData(SCRIPT_FILTER, "data\\Filter.txt", ProhibitionWordParser::Instance()); //RegisterScriptData(SCRIPT_FILTERNAME, "data\\FilterName.txt", ProhibitionWordParser::Instance()); //#endif //#ifdef __NA_0_20070404_RANKING_IMPROVE2 //RegisterScriptData(SCRIPT_POINT_RANKING, "data\\PointRankingRule.txt", PointRankingParser::Instance()); //#endif //#ifdef __NA_000000_20070528_TAIWAN_GUILD_PVP //RegisterScriptData(SCRIPT_EXCHANGE_REWARD_INFO, "data\\ExchangeRewardInfo.txt", ExchangeRewardInfoParser::Instance()); //#endif return TRUE; } ScriptManager* ScriptManager::ms_pInstance = NULL;