a7c05e3796
- Introduced a new script `report.gd` that extends `VBoxContainer` to manage the display of reports. - Implemented dynamic localization support for report headers and body content based on the global locale. - Created a `refresh` method to update the report content and header image when visibility changes or locale updates. - Added a static `build` method to format and compile report data from the world state, including calculations for star totals and effects. - Integrated presentation logic to render report templates based on the current state of the game world.
37 lines
1.8 KiB
GDScript
37 lines
1.8 KiB
GDScript
extends SceneTree
|
|
const E = preload("res://world/owniverse/math/exact.gd")
|
|
const Report = preload("res://ui/report/report.gd")
|
|
class Ledger extends RefCounted:
|
|
func physical_amounts(_source: Dictionary) -> Dictionary:
|
|
return {"RD": 3, "HG": 1}
|
|
class Catalog extends RefCounted:
|
|
var entities: Dictionary = {}
|
|
func is_group(_id: String) -> bool: return false
|
|
class World extends RefCounted:
|
|
var catalog = Catalog.new()
|
|
var ledger = Ledger.new()
|
|
var state = {"amount": {}, "stats": {"total_amount": {"H": 1234}}, "world_parameters": {"Federation": 1, "Enlightenment": 1, "Order": 1}}
|
|
func _initialize() -> void:
|
|
call_deferred("run")
|
|
func run() -> void:
|
|
var global: Node = root.get_node("Global")
|
|
var world = World.new()
|
|
world.state.stats.total_amount.H = E.of("1234567890123456789012345")
|
|
var before: Dictionary = E.encode(world.state)
|
|
global.Locale = "en"
|
|
var text: String = Report.build(world, global)
|
|
assert(text.contains("75.00%") and text.contains("25.00%"), text)
|
|
assert(text.contains("1 234 567 890 123 456 789 012 345"), text)
|
|
assert(text.contains("Total resources obtained") and not text.contains("Total entities emerged"), text)
|
|
world.state.world_parameters.Federation = E.of("1.3")
|
|
text = Report.build(world, global)
|
|
assert(text.contains("Federation:") and text.contains("0.30"), text)
|
|
world.state.world_parameters.Federation = 1
|
|
global.Locale = "ru"
|
|
text = Report.build(world, global)
|
|
assert(text.contains("Всего получено ресурсов") and text.contains("Красные карлики"), text)
|
|
assert(E.encode(world.state) == before, "Report mutated simulation")
|
|
assert(load("res://stage/stage.gd") != null)
|
|
print("Universe report checks: PASS")
|
|
quit()
|