Capture current source, content data, tests, asset licenses, and original-specification traceability. Original implementation remains incomplete. The accepted matching UI generation passed 154 suites and 12,253 checks, with eight rendered staff-contract screens reviewed. Latest native Windows and full-original acceptance remain outstanding.
49 lines
3.6 KiB
GDScript
49 lines
3.6 KiB
GDScript
extends SceneTree
|
|
var checks := 0
|
|
var failures := 0
|
|
func expect(ok: bool, message: String) -> void:
|
|
checks += 1
|
|
if not ok: failures += 1; push_error(message)
|
|
func _initialize() -> void: call_deferred("run")
|
|
func run() -> void:
|
|
var runtime: Variant = load("res://autoload/simulation_runtime.gd").new()
|
|
var clock: Variant = load("res://autoload/game_clock.gd").new()
|
|
var state: Variant = load("res://autoload/game_state.gd").new()
|
|
clock.reset(1,6,0);state.reset();runtime.initialize(clock,state,42501);clock.set_paused(true)
|
|
var definition: FacilityDefinition = runtime.definition_registry.get_facility(&"premium_room")
|
|
expect(definition != null and definition.footprint == Vector2i(4,1), "normal Runtime registers original-size premium room")
|
|
expect(definition.maintenance_gold == 5 and definition.customer_capacity == 2, "daily upkeep follows approved half-percent initial rule and people limit is explicit")
|
|
expect(runtime.submit_command(&"build_facility",{&"definition_id":&"reception",&"origin":Vector3i(-6,0,0)}).is_success(), "build supporting reception")
|
|
clock.advance_minutes(120)
|
|
var built: CommandResult = runtime.submit_command(&"build_facility",{&"definition_id":&"premium_room",&"origin":Vector3i(-6,2,0)})
|
|
expect(built.is_success(), "normal construction command accepts premium room")
|
|
if not built.is_success(): runtime.free();clock.free();state.free();quit(failures);return
|
|
clock.advance_minutes(150)
|
|
var id: StringName = &""
|
|
for room: FacilityInstance in runtime.facility_service.get_instances():
|
|
if room.definition_id == &"premium_room": id = room.instance_id
|
|
expect(not id.is_empty(), "premium room completes into operating facility service")
|
|
if id.is_empty(): runtime.free();clock.free();state.free();quit(failures);return
|
|
expect(runtime.facility_service.get_instance(id).occupied_cells.size()==4, "operating room owns four original cells")
|
|
expect(runtime.submit_command(&"register_guest_wallet",{&"guest_id":&"premium_payer",&"gold":1000}).is_success(), "fund service fixture wallet")
|
|
var requested: CommandResult = runtime.submit_command(&"create_service_request",{&"request_id":&"premium_stay",&"facility_id":id,&"guest_ids":[&"premium_payer"],&"service_type":&"lodging"})
|
|
expect(requested.is_success(), "premium stay enters normal service queue at definition price")
|
|
clock.advance_one_minute()
|
|
var active: Array = runtime.facility_service.get_active_services(id)
|
|
expect(active.size()==1, "normal operating tick starts premium lodging")
|
|
if active.is_empty(): runtime.free();clock.free();state.free();quit(failures);return
|
|
var service_id: StringName = active[0].service_id
|
|
expect(active[0].duration_minutes==720 and active[0].price_snapshot==220, "premium lodging uses existing duration and price")
|
|
clock.advance_minutes(360)
|
|
var halfway: Dictionary = runtime.create_snapshot()
|
|
expect(runtime.restore_snapshot(halfway), "mid-stay current-schema snapshot restores")
|
|
clock.advance_minutes(361)
|
|
var completed: ServiceInstance = runtime.facility_service.get_service(service_id)
|
|
expect(completed.state==ServiceInstance.State.COMPLETED, "restored premium stay completes")
|
|
expect(runtime.economy_service.get_balance(&"GUEST_WALLET:premium_payer")==780, "premium stay charges exactly 220 gold once")
|
|
expect(runtime.economy_service.validate_ledger()[&"ok"], "premium revenue balances the ledger")
|
|
clock.advance_minutes(1440-clock.absolute_minute)
|
|
expect(runtime.restore_snapshot(runtime.create_snapshot()), "midnight upkeep and premium room persist together")
|
|
runtime.free();clock.free();state.free()
|
|
print("Premium room integration: %d checks, %d failures" % [checks,failures]);quit(failures)
|