Refactor audio effect handling: remove cooldown logic and enhance sound playback functionality
This commit is contained in:
@@ -25,17 +25,14 @@ func run() -> void:
|
||||
check(not player.play_effect("select"), "Playing effect is not restarted")
|
||||
check(player.stream == selected_stream and player.playing, "Rejected duplicate keeps current playback")
|
||||
player.stop()
|
||||
check(not player.play_effect("select"), "Named effect is rejected during its two-second cooldown")
|
||||
check(player.play_effect("blast"), "Different effect starts without waiting for another name")
|
||||
player.stop()
|
||||
player._last_played_msec.select -= player.EFFECT_COOLDOWN_MSEC
|
||||
check(player.play_effect("select"), "Named effect starts after its cooldown")
|
||||
check(player.play_effect("select"), "Stopped effect can start again immediately")
|
||||
check(player.play_effect("blast"), "Different effect starts immediately")
|
||||
check(not player.play_effect("missing_effect"), "Unknown effect is rejected")
|
||||
check(player.stream == player._effects.select, "Unknown effect does not interrupt playback")
|
||||
check(player.stream == player._effects.blast, "Unknown effect does not interrupt playback")
|
||||
|
||||
player.set_enabled(false)
|
||||
check(player.stream_paused, "Disabling effects pauses current playback")
|
||||
check(not player.play_effect("blast") and player.stream == player._effects.select, "Disabled player rejects new effects")
|
||||
check(not player.play_effect("select") and player.stream == player._effects.blast, "Disabled player rejects new effects")
|
||||
player.set_enabled(true)
|
||||
check(not player.stream_paused, "Enabling effects resumes current playback")
|
||||
|
||||
|
||||
@@ -176,8 +176,19 @@ func run() -> void:
|
||||
world.state.amount.Met = 100
|
||||
world.state.auto_resources.H = 100
|
||||
world.evolute(E.of("0.1"))
|
||||
check((E.eq(world.state.amount.RD, 101) and E.eq(world.state.amount.H, 0)), "Automatic formation uses its resource budget")
|
||||
check(E.ge(world.state.binds.RD.HP, 1), "Automatic formation also creates planets")
|
||||
check((E.eq(world.state.amount.RD, 1) and E.eq(world.state.amount.H, 100)), "Automatic formation cannot spend hydrogen retained from an earlier cycle")
|
||||
check(E.eq(world.state.auto_resources.get("H", 0), 0), "Unused automatic hydrogen becomes an ordinary free resource")
|
||||
dispose(world)
|
||||
|
||||
world = fixture()
|
||||
world.catalog.entities.N.auto = 1
|
||||
world.state.amount.RD = 1
|
||||
world.state.amount.H = 100
|
||||
world.state.amount.Met = 100
|
||||
world.evolute(100)
|
||||
check(E.gt(world.state.amount.RD, 1), "Automatic formation can spend newly produced hydrogen")
|
||||
check(E.ge(world.state.amount.H, 100), "Automatic formation preserves hydrogen available before the cycle")
|
||||
check(E.ge(world.state.binds.get("RD", {}).get("HP", 0), 1), "Automatic formation also creates planets")
|
||||
dispose(world)
|
||||
|
||||
world = fixture()
|
||||
|
||||
@@ -21,6 +21,7 @@ func run() -> void:
|
||||
root.add_child(scene)
|
||||
await process_frame
|
||||
await process_frame
|
||||
check(stage.effects_player.stream == null, "Startup does not play a UI sound")
|
||||
stage.stage_page_scroller.scroll_horizontal = stage.PAGE_WIDTH
|
||||
await process_frame
|
||||
stage.owniverse.state.amount.H = 1000
|
||||
@@ -54,6 +55,16 @@ func run() -> void:
|
||||
stage.owniverse.state.time.year = E.of("1234.5")
|
||||
stage._refresh_universe_ui()
|
||||
check(E.eq(stage.date_time.text, "1 234.5"), "Time displays tenths with thousands separator")
|
||||
stage.effects_player.set_enabled(true)
|
||||
stage.owniverse.speed = 1
|
||||
stage._change_speed(1)
|
||||
check(stage.effects_player.stream == stage.effects_player._effects.time_plus, "Increasing speed plays its effect")
|
||||
stage._change_speed(-1)
|
||||
check(stage.effects_player.stream == stage.effects_player._effects.time_minus, "Decreasing speed plays its effect")
|
||||
stage._on_topmenu_button_pressed("MainMenu")
|
||||
check(stage.effects_player.stream == stage.effects_player._effects.window_open, "Opening a window plays its effect")
|
||||
stage._on_topmenu_button_pressed("World")
|
||||
check(stage.effects_player.stream == stage.effects_player._effects.window_close, "Closing a window plays its effect")
|
||||
for entity in stage.owniverse.catalog.entities.values(): entity.free()
|
||||
stage.owniverse.free()
|
||||
scene.free()
|
||||
|
||||
Reference in New Issue
Block a user