Files
Sun1602/Tools/WiseClient/Information/Script/ScriptManager.cpp
T
2022-10-26 12:25:11 +08:00

505 lines
18 KiB
C++

#include "stdafx.h"
#include "ScriptManager.h"
#include <ScriptParserManager.h>
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
#include <ItemInfoParser.h>
#include <MapInfoParser.h>
#include <SkillInfoParser.h>
#include <StateInfoParser.h>
#include <NPCInfoParser.h>
#include <ShopInfoParser.h>
#include <ItemCompositeParser.h>
#include <ItemComposeListParser.h>
#include <SocketOptionParser.h>
#include <SunEventInfoParser.h>
#include <StyleQuickRegistInfoParser.h>
#include <ItemTypeList.h>
#include <RewardInfoList.h>
#include <RankOptionParser.h>
#include <MissionRewardParser.h>
#include <RequireFieldLevelInfoParser.h>
#include <ItemCrystalizeListParser.h>
#include <ExtraStoneOptionInfoParser.h>
#include <ExpValueInfoParser.h>
#include <CharInfoParser.h>
#include <EnchantParser.h>
#include <SkillInventoryStoreParser.h>
#include <GameOptionParser.h>
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
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;