port: EffectLib + EterBase/Utils platform bodies (1:1 40250)

EffectLib's 18 units are copied verbatim (Type.h: drop a comment backslash
that clang splices into the next enum line). The remaining Utils stubs get
the 40250 bodies, so .msf fly data resolve relative .mse attachments, and
CPythonResource registers mde/mdatr as 40250 does. login_flow spawns
level_up.mse and sees its particle draws.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
shenlei
2026-09-24 03:19:30 +09:00
co-authored by Claude Opus 5.5
parent 03de3f314a
commit b69116992c
61 changed files with 6702 additions and 1579 deletions
@@ -3,7 +3,9 @@
#include "EterLib/GrpImage.h"
#include "EterLib/GrpSubImage.h"
#include "EterLib/GrpText.h"
#include "EterLib/AttributeData.h"
#include "EterGrnLib/Thing.h"
#include "EffectLib/EffectMesh.h"
namespace {
CResource* NewUIImage(const char* name) { return new CGraphicImage(name); }
@@ -11,6 +13,8 @@ CResource* NewUISubImage(const char* name) { return new CGraphicSubImage(name);
// 40250 UserInterface/PythonApplication.cpp NewText: a "<face>:<size>[i].fnt" name is a CGraphicText.
CResource* NewText(const char* name) { return new CGraphicText(name); }
CResource* NewThing(const char* name) { return new CGraphicThing(name); }
CResource* NewEffectMesh(const char* name) { return new CEffectMesh(name); }
CResource* NewAttributeData(const char* name) { return new CAttributeData(name); }
}
CPythonResource::CPythonResource() {
@@ -19,6 +23,8 @@ CPythonResource::CPythonResource() {
m_resManager.RegisterResourceNewFunctionPointer("sub", NewUISubImage);
m_resManager.RegisterResourceNewFunctionPointer("fnt", NewText);
m_resManager.RegisterResourceNewFunctionPointer("gr2", NewThing);
m_resManager.RegisterResourceNewFunctionPointer("mde", NewEffectMesh);
m_resManager.RegisterResourceNewFunctionPointer("mdatr", NewAttributeData);
}
CPythonResource::~CPythonResource() { m_resManager.DestroyDeletingList(); }
void CPythonResource::Destroy() { m_resManager.DestroyDeletingList(); m_resManager.Destroy(); }