port 2V2-d.1: ActorInstance/InstanceBase closure creates the main character
Port the ActorInstance*/InstanceBase* siblings plus GameUtil, FlyTarget, PhysicsObject, GameEventManager, WeaponTrace, MapUtil and lineintersect_utils verbatim and drop their pending stand-ins; CGameEventManager and CPythonSystem join PythonBoot in CPythonApplication member order. Root cause of the intermittent Loading-phase header 7: TPlayerSkill::tNextRead is time_t, 32-bit in 40250 (_USE_32BIT_TIME_T) but 64-bit on LP64, so SKILL_LEVEL (76) was read as 2551 bytes instead of 1531. Packet.h now uses LONG with a static_assert, and the fake server sends SKILL_LEVEL in Loading. The fake server's CHARACTER_ADD now uses CHAR_TYPE_PC; port.login_flow asserts the main instance exists with race 0. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
996d793f0c
commit
5266b00c6e
@@ -12,6 +12,7 @@
|
||||
#include "UserInterface/PythonPlayer.h"
|
||||
#include "GameLib/FlyingObjectManager.h"
|
||||
#include "GameLib/RaceManager.h"
|
||||
#include "GameLib/GameEventManager.h"
|
||||
#include "EffectLib/EffectManager.h"
|
||||
#include "GameLib/ItemManager.h"
|
||||
#include "UserInterface/PythonCharacterManager.h"
|
||||
@@ -28,6 +29,7 @@
|
||||
#include "UserInterface/PythonMessenger.h"
|
||||
#include "UserInterface/PythonSafeBox.h"
|
||||
#include "UserInterface/PythonGuild.h"
|
||||
#include "UserInterface/PythonSystem.h"
|
||||
#include "UserInterface/AbstractApplication.h"
|
||||
#include "UserInterface/PythonApplication.h"
|
||||
#include "EterBase/Timer.h"
|
||||
@@ -59,6 +61,7 @@ std::unique_ptr<CAccountConnector> g_account_connector;
|
||||
std::unique_ptr<CPythonPlayer> g_player;
|
||||
std::unique_ptr<CFlyingManager> g_flying_manager;
|
||||
std::unique_ptr<CRaceManager> g_race_manager;
|
||||
std::unique_ptr<CGameEventManager> g_game_event_manager;
|
||||
std::unique_ptr<CEffectManager> g_effect_manager;
|
||||
// PORT: CPythonApplication is not constructed by the Godot host yet. GamePhase calls the
|
||||
// 40250 IAbstractApplication singleton, so expose the host's current timer and camera surface.
|
||||
@@ -113,6 +116,7 @@ struct GameSingletons
|
||||
CPythonMessenger pyManager;
|
||||
CPythonSafeBox pySafeBox;
|
||||
CPythonGuild pyGuild;
|
||||
CPythonSystem pySystem; // last CPythonApplication member (m_pySystem)
|
||||
};
|
||||
std::unique_ptr<GameSingletons> g_game_singletons;
|
||||
|
||||
@@ -301,6 +305,7 @@ bool Start(const char* stdlib_path, std::string* error)
|
||||
g_player = std::make_unique<CPythonPlayer>();
|
||||
g_flying_manager = std::make_unique<CFlyingManager>();
|
||||
g_race_manager = std::make_unique<CRaceManager>();
|
||||
g_game_event_manager = std::make_unique<CGameEventManager>();
|
||||
g_effect_manager = std::make_unique<CEffectManager>();
|
||||
g_game_application = std::make_unique<GameApplicationAdapter>();
|
||||
g_game_singletons = std::make_unique<GameSingletons>();
|
||||
@@ -496,6 +501,7 @@ void Stop()
|
||||
g_game_singletons.reset();
|
||||
g_game_application.reset();
|
||||
g_effect_manager.reset();
|
||||
g_game_event_manager.reset();
|
||||
g_race_manager.reset();
|
||||
g_flying_manager.reset();
|
||||
g_player.reset();
|
||||
|
||||
Reference in New Issue
Block a user