Port 2V0-f window input and UI render command bridge

This commit is contained in:
shen
2026-09-22 20:34:45 -07:00
parent 9c30f06083
commit 5590714b16
22 changed files with 693 additions and 182 deletions
+27 -1
View File
@@ -67,11 +67,37 @@ static func _load_uncached(assets_root: String, vpath: String) -> Texture2D:
if real != "":
break
if real == "":
return null
return _load_pack_image(rel)
if real.get_extension().to_lower() == "sub":
return _load_sub(real)
return _load_image_file(real)
static func _load_pack_image(rel: String) -> Texture2D:
if not ClassDB.class_exists("Metin2Pack") or not Metin2Pack.is_ready():
return null
if not Metin2Pack.exists(rel):
return null
var ext := rel.get_extension().to_lower()
var image: Image
if ext == "dds":
if not ClassDB.class_exists("Metin2World"):
return null
var helper: Object = ClassDB.instantiate("Metin2World")
image = helper.call("load_dds", "pack://" + rel)
helper.free()
else:
var bytes: PackedByteArray = Metin2Pack.get_bytes(rel)
image = Image.new()
var err := ERR_FILE_UNRECOGNIZED
match ext:
"tga": err = image.load_tga_from_buffer(bytes)
"png": err = image.load_png_from_buffer(bytes)
"jpg", "jpeg": err = image.load_jpg_from_buffer(bytes)
"bmp": err = image.load_bmp_from_buffer(bytes)
if err != OK:
return null
return ImageTexture.create_from_image(image) if image != null and not image.is_empty() else null
static func _load_image_file(path: String) -> Texture2D:
# .sub 文件可能引用了未随当前资源包发布的共享贴图(例如 Public.tga)。
# 先做存在性检查,避免 headless/UI fallback 因缺失可选贴图刷错误日志。