mirror of
https://github.com/Cuteminded/jellyframe.git
synced 2026-10-27 16:00:29 +01:00
110 lines
4.2 KiB
GDScript
110 lines
4.2 KiB
GDScript
extends SceneTree
|
|
|
|
var selections := 0
|
|
|
|
func _initialize() -> void:
|
|
call_deferred("run_checks")
|
|
|
|
func run_checks() -> void:
|
|
var feedback := MenuFeedback.new()
|
|
root.add_child(feedback)
|
|
var viewport := SubViewport.new()
|
|
viewport.size = Vector2i(1536, 960)
|
|
root.add_child(viewport)
|
|
var shell := UiShell.new()
|
|
viewport.add_child(shell)
|
|
shell.set_signed_in(true)
|
|
var items := []
|
|
for index in range(30): items.append({"Id": str(index), "Name": "Library %d" % index})
|
|
shell.set_libraries(items)
|
|
shell.navigate.connect(func(_id: String, _title: String): selections += 1)
|
|
var pointer := PointerInput.new()
|
|
pointer.viewport = viewport
|
|
await process_frame
|
|
await process_frame
|
|
var first: Button = shell.buttons["0"]
|
|
var point := first.get_global_rect().get_center()
|
|
pointer.sample_trigger(0.0)
|
|
pointer.aim(point, true)
|
|
for index in range(20):
|
|
pointer.scroll(point, -0.2)
|
|
await process_frame
|
|
point = shell.home.get_global_rect().get_center()
|
|
pointer.aim(point, true)
|
|
pointer.sample_trigger(0.8)
|
|
pointer.aim(point, true)
|
|
pointer.sample_trigger(0.0)
|
|
pointer.aim(point, true)
|
|
print("Home activations after scrolling: ", selections)
|
|
pointer.cancel()
|
|
var artwork := ArtworkLoader.new()
|
|
root.add_child(artwork)
|
|
var cast := CastCarousel.new()
|
|
cast.artwork = artwork
|
|
cast.position = Vector2(300, 200)
|
|
cast.size = Vector2(800, 400)
|
|
for index in range(12): cast.people.append({"Name": "Actor %d" % index})
|
|
viewport.add_child(cast)
|
|
await process_frame
|
|
await process_frame
|
|
point = cast.scroll.get_global_rect().position + Vector2(90, 90)
|
|
pointer.aim(point, true)
|
|
pointer.scroll(point, 0.2, true)
|
|
await process_frame
|
|
assert(cast.scroll.scroll_horizontal > 0, "Right joystick input must reach the cast carousel.")
|
|
pointer.scroll(point, -0.2, true)
|
|
await process_frame
|
|
assert(cast.scroll.scroll_horizontal == 0, "Left joystick input must move the cast carousel back.")
|
|
pointer.cancel()
|
|
cast.queue_free()
|
|
shell.queue_free()
|
|
await process_frame
|
|
await check_screen_sliders(viewport, pointer)
|
|
feedback.player.stop()
|
|
quit(0 if selections == 1 else 1)
|
|
|
|
func check_screen_sliders(viewport: SubViewport, pointer: PointerInput) -> void:
|
|
var scroller := ScrollContainer.new()
|
|
scroller.size = Vector2(800, 400)
|
|
scroller.horizontal_scroll_mode = ScrollContainer.SCROLL_MODE_DISABLED
|
|
viewport.add_child(scroller)
|
|
var body := VBoxContainer.new()
|
|
body.custom_minimum_size = Vector2(700, 1200)
|
|
scroller.add_child(body)
|
|
var slider := preload("res://scripts/ui/screen_position_slider.gd").new()
|
|
slider.custom_minimum_size = Vector2(600, 48)
|
|
slider.min_value = 1.5
|
|
slider.max_value = 7.0
|
|
slider.step = 0.05
|
|
slider.value = 3.5
|
|
body.add_child(slider)
|
|
await process_frame
|
|
await process_frame
|
|
var point := slider.get_global_rect().get_center()
|
|
pointer.aim(point, true)
|
|
for index in range(5): pointer.scroll(point, 0.2, true)
|
|
assert(is_equal_approx(slider.value, 3.55), "Right adjusts the hovered screen slider by one step.")
|
|
for index in range(5): pointer.scroll(point, -0.2, true)
|
|
assert(is_equal_approx(slider.value, 3.5), "Left reduces the hovered screen slider.")
|
|
assert(scroller.scroll_vertical == 0, "Horizontal slider input must not scroll vertically.")
|
|
slider.grab_focus()
|
|
pointer.scroll(point, -0.2)
|
|
assert(is_equal_approx(slider.value, 3.5), "Down must not change even a focused slider.")
|
|
assert(scroller.scroll_vertical > 0, "Down over a slider must scroll the page.")
|
|
pointer.scroll(point, 0.2)
|
|
assert(is_equal_approx(slider.value, 3.5), "Up must not change a slider.")
|
|
assert(scroller.scroll_vertical == 0, "Up over a slider must scroll the page back.")
|
|
slider.editable = false
|
|
for index in range(10): pointer.scroll(point, 0.2, true)
|
|
assert(is_equal_approx(slider.value, 3.5), "Disabled sliders must ignore horizontal input.")
|
|
point = Vector2(300, 200)
|
|
pointer.aim(point, true)
|
|
for index in range(10): pointer.scroll(point, 0.2, true)
|
|
assert(scroller.scroll_vertical == 0, "Horizontal input over a vertical page must not scroll down.")
|
|
pointer.scroll(point, -0.2)
|
|
var vertical_position := scroller.scroll_vertical
|
|
assert(vertical_position > 0, "Vertical input still scrolls the page.")
|
|
for index in range(10): pointer.scroll(point, -0.2, true)
|
|
assert(scroller.scroll_vertical == vertical_position, "Left must not scroll a vertical page up.")
|
|
pointer.cancel()
|