Platform UserInterface PackInitialize/PackSingletons (40250 bootstrap, on-disk dbname resolution), EterBase/FileLoader.cpp mirror, mtpack40250 backend behind asset_io's pack:// scheme and a Metin2Pack node. port_eterpack_test now registers through PackInitialize. Nothing reads pack:// at runtime yet; port-map stays TODO. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
24 lines
1.0 KiB
C++
24 lines
1.0 KiB
C++
#pragma once
|
|
// PackBackend — the 40250 pack file system for the extension (docs/PORT-PLAN.md 2R item 6). Registers <client>/pack
|
|
// through the platform PackInitialize and reads with the ported CEterPackManager (pack first, then the loose file).
|
|
// Names are 40250 paths ("d:/ymir work/pc/warrior/...", "locale/en/item_proto"), normalized by ConvertFileName.
|
|
// Standard types only, so Godot-side code (asset_io) includes it without the Win32 shims.
|
|
|
|
#include <cstdint>
|
|
#include <string>
|
|
#include <vector>
|
|
|
|
namespace mtpack40250 {
|
|
|
|
// Registers <client_dir>/pack/Index once per process; false when <client_dir>/pack/Index is missing.
|
|
// Later calls return whether the first one succeeded.
|
|
bool initialize(const std::string& client_dir);
|
|
bool ready();
|
|
|
|
// CEterPackManager::Get into `out`; false when the name is in no pack, is rejected (CRC) and has no loose file.
|
|
bool read(const std::string& name, std::vector<uint8_t>& out);
|
|
// CEterPackManager::isExist.
|
|
bool exists(const std::string& name);
|
|
|
|
} // namespace mtpack40250
|