Files
metin2-client/extension/src/platform/PackBackend.h
T
shenleiandClaude Opus 5 5a26e93f07 port 2D step 5b: PackInitialize + pack:// asset_io backend over the ported EterPackManager
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>
2026-09-23 01:31:17 +09:00

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