165 lines
5.0 KiB
GDScript
165 lines
5.0 KiB
GDScript
extends SceneTree
|
|
|
|
const Locale = preload("res://locale.gd")
|
|
const ItemTooltip = preload("res://ui/item_tooltip.gd")
|
|
const NetPlay = preload("res://net_play.gd")
|
|
|
|
func _init() -> void:
|
|
print("=== Starting test_chinese_locale ===")
|
|
var assets := AssetRoot.path()
|
|
var passed := 0
|
|
var failed := 0
|
|
|
|
# 1. Default language
|
|
var default_lang := Locale.get_default_lang()
|
|
if default_lang == "zh":
|
|
print("PASS: Default language is 'zh'")
|
|
passed += 1
|
|
else:
|
|
printerr("FAIL: Default language expected 'zh', got '%s'" % default_lang)
|
|
failed += 1
|
|
|
|
# 2. Locale setup
|
|
var loc = Locale.new()
|
|
loc.setup(assets, "zh")
|
|
if loc.lang() == "zh":
|
|
print("PASS: Locale lang is 'zh'")
|
|
passed += 1
|
|
else:
|
|
printerr("FAIL: Locale lang expected 'zh', got '%s'" % loc.lang())
|
|
failed += 1
|
|
|
|
# 3. Item names
|
|
var sword_name := loc.item_name(10)
|
|
if sword_name == "武士刀+0":
|
|
print("PASS: Item 10 name is 武士刀+0")
|
|
passed += 1
|
|
else:
|
|
printerr("FAIL: Item 10 name expected '武士刀+0', got '%s'" % sword_name)
|
|
failed += 1
|
|
|
|
var yang_name := loc.item_name(1)
|
|
if yang_name == "金币":
|
|
print("PASS: Item 1 name is 金币")
|
|
passed += 1
|
|
else:
|
|
printerr("FAIL: Item 1 name expected '金币', got '%s'" % yang_name)
|
|
failed += 1
|
|
|
|
var dress_name := loc.item_name(11901)
|
|
if dress_name == "礼服":
|
|
print("PASS: Item 11901 name is 礼服")
|
|
passed += 1
|
|
else:
|
|
printerr("FAIL: Item 11901 name expected '礼服', got '%s'" % dress_name)
|
|
failed += 1
|
|
|
|
# 4. Mob names
|
|
var dog_name := loc.mob_name(101)
|
|
if dog_name == "幼狼":
|
|
print("PASS: Mob 101 name is 幼狼")
|
|
passed += 1
|
|
else:
|
|
printerr("FAIL: Mob 101 name expected '幼狼', got '%s'" % dog_name)
|
|
failed += 1
|
|
|
|
# 5. System messages
|
|
var arrow_msg := loc.t("CANNOT_SHOOT_EMPTY_ARROW")
|
|
if arrow_msg == "没有箭了,请装备箭":
|
|
print("PASS: CANNOT_SHOOT_EMPTY_ARROW translation matches")
|
|
passed += 1
|
|
else:
|
|
printerr("FAIL: CANNOT_SHOOT_EMPTY_ARROW expected '没有箭了,请装备箭', got '%s'" % arrow_msg)
|
|
failed += 1
|
|
|
|
var align_msg := loc.t("ALIGNMENT_NAME")
|
|
if align_msg == "善恶值 :":
|
|
print("PASS: ALIGNMENT_NAME translation matches")
|
|
passed += 1
|
|
else:
|
|
printerr("FAIL: ALIGNMENT_NAME expected '善恶值 :', got '%s'" % align_msg)
|
|
failed += 1
|
|
|
|
# 6. ItemTooltip integration
|
|
var tt = ItemTooltip.new()
|
|
var tt_ok := tt.setup(assets, "zh")
|
|
if tt_ok:
|
|
print("PASS: ItemTooltip setup succeeded for zh")
|
|
passed += 1
|
|
else:
|
|
printerr("FAIL: ItemTooltip setup failed")
|
|
failed += 1
|
|
|
|
var model := tt.build_model(10, 1, {})
|
|
if String(model.get("title", "")) == "武士刀+0":
|
|
print("PASS: ItemTooltip build_model resolved title 武士刀+0 without proto")
|
|
passed += 1
|
|
else:
|
|
printerr("FAIL: Expected title '武士刀+0', got '%s'" % model.get("title", ""))
|
|
failed += 1
|
|
|
|
# 7. NetPlay._entity_name resolution for mobs, stones, NPCs, and PCs
|
|
var np := NetPlay.new()
|
|
np.locale = loc
|
|
|
|
# 7a. Monster: stray_dog (race 101) -> 幼狼
|
|
var mob_dog := np._entity_name({"race": 101, "kind": 2, "name": "stray_dog"})
|
|
if mob_dog == "幼狼":
|
|
print("PASS: NetPlay._entity_name(race 101 stray_dog) resolved to '幼狼'")
|
|
passed += 1
|
|
else:
|
|
printerr("FAIL: Expected '幼狼', got '%s'" % mob_dog)
|
|
failed += 1
|
|
|
|
# 7b. Monster: wolf (race 102) -> 灰狼
|
|
var mob_wolf := np._entity_name({"race": 102, "kind": 2, "name": "wolf"})
|
|
if mob_wolf == "灰狼":
|
|
print("PASS: NetPlay._entity_name(race 102 wolf) resolved to '灰狼'")
|
|
passed += 1
|
|
else:
|
|
printerr("FAIL: Expected '灰狼', got '%s'" % mob_wolf)
|
|
failed += 1
|
|
|
|
# 7c. Metin Stone: race 8001 -> 鱼跃陨石
|
|
var stone := np._entity_name({"race": 8001, "kind": 3, "name": "metin_sorrow"})
|
|
if stone == "鱼跃陨石":
|
|
print("PASS: NetPlay._entity_name(race 8001) resolved to '鱼跃陨石'")
|
|
passed += 1
|
|
else:
|
|
printerr("FAIL: Expected '鱼跃陨石', got '%s'" % stone)
|
|
failed += 1
|
|
|
|
# 7d. NPC: Blacksmith (race 20016) -> 王铁匠
|
|
var npc_smith := np._entity_name({"race": 20016, "kind": 1, "name": "blacksmith"})
|
|
if npc_smith == "王铁匠":
|
|
print("PASS: NetPlay._entity_name(race 20016) resolved to '王铁匠'")
|
|
passed += 1
|
|
else:
|
|
printerr("FAIL: Expected '王铁匠', got '%s'" % npc_smith)
|
|
failed += 1
|
|
|
|
# 7e. PC: Player Warrior (race 0) keeps player name
|
|
var pc_warrior := np._entity_name({"race": 0, "kind": 0, "name": "无双战神"})
|
|
if pc_warrior == "无双战神":
|
|
print("PASS: NetPlay._entity_name(PC warrior) preserved player name '无双战神'")
|
|
passed += 1
|
|
else:
|
|
printerr("FAIL: Expected '无双战神', got '%s'" % pc_warrior)
|
|
failed += 1
|
|
|
|
# 7f. PC: Player Ninja (race 1) keeps player name
|
|
var pc_ninja := np._entity_name({"race": 1, "kind": 0, "name": "暗影刺客"})
|
|
if pc_ninja == "暗影刺客":
|
|
print("PASS: NetPlay._entity_name(PC ninja) preserved player name '暗影刺客'")
|
|
passed += 1
|
|
else:
|
|
printerr("FAIL: Expected '暗影刺客', got '%s'" % pc_ninja)
|
|
failed += 1
|
|
np.free()
|
|
|
|
print("\n=== %d / %d CHINESE LOCALE TESTS PASSED (Failed: %d) ===" % [passed, passed + failed, failed])
|
|
if failed > 0:
|
|
quit(1)
|
|
else:
|
|
quit(0)
|