port: ItemData, ItemManager, PythonNonPlayer + LoadLocaleData (batch 2 P3-a)
Verbatim 40250 GameLib ItemData/ItemManager and UserInterface PythonNonPlayer(+Module) replace their pending stand-ins and the nonplayer module stub. LoadLocaleData's body moves into the platform CPythonApplication stand-in, so the select phase loads item_proto and mob_proto; CPythonSkill is still pending, so it returns false after the tables load. login_flow checks item 19 (Sword+9) and mob 101 (Wild Dog), offline and live. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
ce9f96398e
commit
f0564a7f12
@@ -7,6 +7,9 @@
|
||||
#include "EterLib/ResourceManager.h"
|
||||
#include "UserInterface/PythonNetworkStream.h"
|
||||
#include "UserInterface/AccountConnector.h"
|
||||
#include "UserInterface/PythonSkill.h"
|
||||
#include "UserInterface/PythonNonPlayer.h"
|
||||
#include "GameLib/ItemManager.h"
|
||||
#include "EterLib/NetDevice.h"
|
||||
#include "../PlatformStub.h"
|
||||
#include "../EterLib/UIRenderCommands.h"
|
||||
@@ -311,7 +314,91 @@ BOOL PERF_CHECKER_RENDER_GAME = FALSE;
|
||||
BOOL SKILL_EFFECT_UPGRADE_ENABLE = FALSE;
|
||||
double g_specularSpd = 0;
|
||||
|
||||
bool LoadLocaleData(const char*) { MT_PLATFORM_STUB(); return false; }
|
||||
// 40250 UserInterface/PythonApplication.cpp, verbatim. PORT: CPythonSkill is still a stand-in, so
|
||||
// RegisterSkillDesc fails and the function returns false after the item and mob tables load.
|
||||
// SUPPORT_NEW_KOREA_SERVER
|
||||
bool LoadLocaleData(const char* localePath)
|
||||
{
|
||||
NANOBEGIN
|
||||
CPythonNonPlayer& rkNPCMgr = CPythonNonPlayer::Instance();
|
||||
CItemManager& rkItemMgr = CItemManager::Instance();
|
||||
CPythonSkill& rkSkillMgr = CPythonSkill::Instance();
|
||||
CPythonNetworkStream& rkNetStream = CPythonNetworkStream::Instance();
|
||||
|
||||
char szItemList[256];
|
||||
char szItemProto[256];
|
||||
char szItemDesc[256];
|
||||
char szMobProto[256];
|
||||
char szSkillDescFileName[256];
|
||||
char szSkillTableFileName[256];
|
||||
char szInsultList[256];
|
||||
snprintf(szItemList, sizeof(szItemList) , "%s/item_list.txt", localePath);
|
||||
snprintf(szItemProto, sizeof(szItemProto), "%s/item_proto", localePath);
|
||||
snprintf(szItemDesc, sizeof(szItemDesc), "%s/itemdesc.txt", localePath);
|
||||
snprintf(szMobProto, sizeof(szMobProto), "%s/mob_proto", localePath);
|
||||
snprintf(szSkillDescFileName, sizeof(szSkillDescFileName), "%s/SkillDesc.txt", localePath);
|
||||
snprintf(szSkillTableFileName, sizeof(szSkillTableFileName), "%s/SkillTable.txt", localePath);
|
||||
snprintf(szInsultList, sizeof(szInsultList), "%s/insult.txt", localePath);
|
||||
|
||||
rkNPCMgr.Destroy();
|
||||
rkItemMgr.Destroy();
|
||||
rkSkillMgr.Destroy();
|
||||
|
||||
if (!rkItemMgr.LoadItemList(szItemList))
|
||||
{
|
||||
TraceError("LoadLocaleData - LoadItemList(%s) Error", szItemList);
|
||||
}
|
||||
|
||||
if (!rkItemMgr.LoadItemTable(szItemProto))
|
||||
{
|
||||
TraceError("LoadLocaleData - LoadItemProto(%s) Error", szItemProto);
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!rkItemMgr.LoadItemDesc(szItemDesc))
|
||||
{
|
||||
Tracenf("LoadLocaleData - LoadItemDesc(%s) Error", szItemDesc);
|
||||
}
|
||||
|
||||
if (!rkNPCMgr.LoadNonPlayerData(szMobProto))
|
||||
{
|
||||
TraceError("LoadLocaleData - LoadMobProto(%s) Error", szMobProto);
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!rkSkillMgr.RegisterSkillDesc(szSkillDescFileName))
|
||||
{
|
||||
TraceError("LoadLocaleData - RegisterSkillDesc(%s) Error", szMobProto);
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!rkSkillMgr.RegisterSkillTable(szSkillTableFileName))
|
||||
{
|
||||
TraceError("LoadLocaleData - RegisterSkillTable(%s) Error", szMobProto);
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!rkNetStream.LoadInsultList(szInsultList))
|
||||
{
|
||||
Tracenf("CPythonApplication - CPythonNetworkStream::LoadInsultList(%s)", szInsultList);
|
||||
}
|
||||
|
||||
if (LocaleService_IsYMIR())
|
||||
{
|
||||
char szEmpireTextConvFile[256];
|
||||
for (DWORD dwEmpireID=1; dwEmpireID<=3; ++dwEmpireID)
|
||||
{
|
||||
sprintf(szEmpireTextConvFile, "%s/lang%d.cvt", localePath, dwEmpireID);
|
||||
if (!rkNetStream.LoadConvertTable(dwEmpireID, szEmpireTextConvFile))
|
||||
{
|
||||
TraceError("LoadLocaleData - CPythonNetworkStream::LoadConvertTable(%d, %s) FAILURE", dwEmpireID, szEmpireTextConvFile);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
NANOEND
|
||||
return true;
|
||||
}
|
||||
void TextTail_SetLivingTime(long) { MT_PLATFORM_STUB(); }
|
||||
namespace {
|
||||
// The supplied 40250 Client/locale.cfg selects "en" (code page 1252).
|
||||
|
||||
Reference in New Issue
Block a user