dramatically improved, sequential animation

This commit is contained in:
mehbark 2025-05-29 01:37:13 -04:00
parent 6f2153b40b
commit bd29a6d9b4
6 changed files with 326 additions and 195 deletions

View file

@ -62,6 +62,8 @@ func add_pieces(piece: Array[Piece]):
for p in piece:
add_piece(p)
var last_tween: Tween = null
# here are the phases:
# cardinal velocity
# diagonal velocity
@ -79,10 +81,19 @@ func do_step():
pieces_cardinal.sort_custom(magnitude_sort)
pieces_diagonal.sort_custom(magnitude_sort)
if last_tween:
last_tween.kill()
var tween := get_tree().create_tween()
last_tween = tween
for piece in pieces_cardinal:
piece.do_step(self)
piece.do_step(self, tween)
for piece in pieces_diagonal:
piece.do_step(self)
piece.do_step(self, tween)
if pieces_moving.is_empty():
# no tweens -> invalid -> annoying error message
tween.stop()
func undo_step() -> Callable:
var undos: Array[Callable] = []

View file

@ -1,544 +1,544 @@
[gd_scene load_steps=6 format=3 uid="uid://ba6lxls5gxchi"]
[ext_resource type="Script" uid="uid://c8ywa33v3jq7t" path="res://board.gd" id="1_1612f"]
[ext_resource type="PackedScene" uid="uid://bkaa4sl1n2f5w" path="res://piece/wall.tscn" id="2_3yf7r"]
[ext_resource type="PackedScene" uid="uid://bghr6ew34loyb" path="res://piece/ball.tscn" id="3_whpos"]
[ext_resource type="PackedScene" uid="uid://cnjmu3qesbndk" path="res://piece/player.tscn" id="4_kopqe"]
[ext_resource type="PackedScene" uid="uid://uf8vnylfqal1" path="res://piece/goal.tscn" id="5_8kppb"]
[ext_resource type="Script" uid="uid://c8ywa33v3jq7t" path="res://board.gd" id="1_qbn4l"]
[ext_resource type="PackedScene" uid="uid://bkaa4sl1n2f5w" path="res://piece/wall.tscn" id="2_3fe2k"]
[ext_resource type="PackedScene" uid="uid://bghr6ew34loyb" path="res://piece/ball.tscn" id="3_8fsss"]
[ext_resource type="PackedScene" uid="uid://cnjmu3qesbndk" path="res://piece/player.tscn" id="4_ijbmy"]
[ext_resource type="PackedScene" uid="uid://uf8vnylfqal1" path="res://piece/goal.tscn" id="5_rnx78"]
[node name="Level1" type="Node3D"]
script = ExtResource("1_1612f")
script = ExtResource("1_qbn4l")
metadata/_custom_type_script = "uid://c8ywa33v3jq7t"
[node name="Wall" parent="." instance=ExtResource("2_3yf7r")]
[node name="Wall" parent="." instance=ExtResource("2_3fe2k")]
[node name="Wall2" parent="." instance=ExtResource("2_3yf7r")]
[node name="Wall2" parent="." instance=ExtResource("2_3fe2k")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.5, 0.6, 0.5)
[node name="Wall3" parent="." instance=ExtResource("2_3yf7r")]
[node name="Wall3" parent="." instance=ExtResource("2_3fe2k")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.5, 0.6, 0.5)
[node name="Wall4" parent="." instance=ExtResource("2_3yf7r")]
[node name="Wall4" parent="." instance=ExtResource("2_3fe2k")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3.5, 0.6, 0.5)
[node name="Wall5" parent="." instance=ExtResource("2_3yf7r")]
[node name="Wall5" parent="." instance=ExtResource("2_3fe2k")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4.5, 0.6, 0.5)
[node name="Wall6" parent="." instance=ExtResource("2_3yf7r")]
[node name="Wall6" parent="." instance=ExtResource("2_3fe2k")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 5.5, 0.6, 0.5)
[node name="Wall7" parent="." instance=ExtResource("2_3yf7r")]
[node name="Wall7" parent="." instance=ExtResource("2_3fe2k")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 6.5, 0.6, 0.5)
[node name="Wall8" parent="." instance=ExtResource("2_3yf7r")]
[node name="Wall8" parent="." instance=ExtResource("2_3fe2k")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 7.5, 0.6, 0.5)
[node name="Wall9" parent="." instance=ExtResource("2_3yf7r")]
[node name="Wall9" parent="." instance=ExtResource("2_3fe2k")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 8.5, 0.6, 0.5)
[node name="Wall11" parent="." instance=ExtResource("2_3yf7r")]
[node name="Wall11" parent="." instance=ExtResource("2_3fe2k")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 9.5, 0.6, 0.5)
[node name="Wall12" parent="." instance=ExtResource("2_3yf7r")]
[node name="Wall12" parent="." instance=ExtResource("2_3fe2k")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 10.5, 0.6, 0.5)
[node name="Wall13" parent="." instance=ExtResource("2_3yf7r")]
[node name="Wall13" parent="." instance=ExtResource("2_3fe2k")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 11.5, 0.6, 0.5)
[node name="Wall14" parent="." instance=ExtResource("2_3yf7r")]
[node name="Wall14" parent="." instance=ExtResource("2_3fe2k")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 12.5, 0.6, 0.5)
[node name="Wall15" parent="." instance=ExtResource("2_3yf7r")]
[node name="Wall15" parent="." instance=ExtResource("2_3fe2k")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 13.5, 0.6, 0.5)
[node name="Wall16" parent="." instance=ExtResource("2_3yf7r")]
[node name="Wall16" parent="." instance=ExtResource("2_3fe2k")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 14.5, 0.6, 0.5)
[node name="Wall17" parent="." instance=ExtResource("2_3yf7r")]
[node name="Wall17" parent="." instance=ExtResource("2_3fe2k")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 15.5, 0.6, 0.5)
[node name="Wall19" parent="." instance=ExtResource("2_3yf7r")]
[node name="Wall19" parent="." instance=ExtResource("2_3fe2k")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 16.5, 0.6, 0.5)
[node name="Wall20" parent="." instance=ExtResource("2_3yf7r")]
[node name="Wall20" parent="." instance=ExtResource("2_3fe2k")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 17.5, 0.6, 0.5)
[node name="Wall56" parent="." instance=ExtResource("2_3yf7r")]
[node name="Wall56" parent="." instance=ExtResource("2_3fe2k")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.5, 0.6, 18.5)
[node name="Wall57" parent="." instance=ExtResource("2_3yf7r")]
[node name="Wall57" parent="." instance=ExtResource("2_3fe2k")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.5, 0.6, 18.5)
[node name="Wall58" parent="." instance=ExtResource("2_3yf7r")]
[node name="Wall58" parent="." instance=ExtResource("2_3fe2k")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3.5, 0.6, 18.5)
[node name="Wall59" parent="." instance=ExtResource("2_3yf7r")]
[node name="Wall59" parent="." instance=ExtResource("2_3fe2k")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4.5, 0.6, 18.5)
[node name="Wall60" parent="." instance=ExtResource("2_3yf7r")]
[node name="Wall60" parent="." instance=ExtResource("2_3fe2k")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 5.5, 0.6, 18.5)
[node name="Wall61" parent="." instance=ExtResource("2_3yf7r")]
[node name="Wall61" parent="." instance=ExtResource("2_3fe2k")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 6.5, 0.6, 18.5)
[node name="Wall62" parent="." instance=ExtResource("2_3yf7r")]
[node name="Wall62" parent="." instance=ExtResource("2_3fe2k")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 7.5, 0.6, 18.5)
[node name="Wall63" parent="." instance=ExtResource("2_3yf7r")]
[node name="Wall63" parent="." instance=ExtResource("2_3fe2k")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 8.5, 0.6, 18.5)
[node name="Wall64" parent="." instance=ExtResource("2_3yf7r")]
[node name="Wall64" parent="." instance=ExtResource("2_3fe2k")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 9.5, 0.6, 18.5)
[node name="Wall65" parent="." instance=ExtResource("2_3yf7r")]
[node name="Wall65" parent="." instance=ExtResource("2_3fe2k")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 10.5, 0.6, 18.5)
[node name="Wall66" parent="." instance=ExtResource("2_3yf7r")]
[node name="Wall66" parent="." instance=ExtResource("2_3fe2k")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 11.5, 0.6, 18.5)
[node name="Wall67" parent="." instance=ExtResource("2_3yf7r")]
[node name="Wall67" parent="." instance=ExtResource("2_3fe2k")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 12.5, 0.6, 18.5)
[node name="Wall68" parent="." instance=ExtResource("2_3yf7r")]
[node name="Wall68" parent="." instance=ExtResource("2_3fe2k")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 13.5, 0.6, 18.5)
[node name="Wall69" parent="." instance=ExtResource("2_3yf7r")]
[node name="Wall69" parent="." instance=ExtResource("2_3fe2k")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 14.5, 0.6, 18.5)
[node name="Wall70" parent="." instance=ExtResource("2_3yf7r")]
[node name="Wall70" parent="." instance=ExtResource("2_3fe2k")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 15.5, 0.6, 18.5)
[node name="Wall71" parent="." instance=ExtResource("2_3yf7r")]
[node name="Wall71" parent="." instance=ExtResource("2_3fe2k")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 16.5, 0.6, 18.5)
[node name="Wall72" parent="." instance=ExtResource("2_3yf7r")]
[node name="Wall72" parent="." instance=ExtResource("2_3fe2k")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 17.5, 0.6, 18.5)
[node name="Wall21" parent="." instance=ExtResource("2_3yf7r")]
[node name="Wall21" parent="." instance=ExtResource("2_3fe2k")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 18.5, 0.6, 0.5)
[node name="Wall10" parent="." instance=ExtResource("2_3yf7r")]
[node name="Wall10" parent="." instance=ExtResource("2_3fe2k")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.5, 0.600054, 4.5)
[node name="Wall23" parent="." instance=ExtResource("2_3yf7r")]
[node name="Wall23" parent="." instance=ExtResource("2_3fe2k")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.5, 0.6, 2.5)
[node name="Wall25" parent="." instance=ExtResource("2_3yf7r")]
[node name="Wall25" parent="." instance=ExtResource("2_3fe2k")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.5, 0.6, 3.5)
[node name="Wall18" parent="." instance=ExtResource("2_3yf7r")]
[node name="Wall18" parent="." instance=ExtResource("2_3fe2k")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.5, 0.600054, 6.5)
[node name="Wall26" parent="." instance=ExtResource("2_3yf7r")]
[node name="Wall26" parent="." instance=ExtResource("2_3fe2k")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.5, 0.6, 5.5)
[node name="Wall24" parent="." instance=ExtResource("2_3yf7r")]
[node name="Wall24" parent="." instance=ExtResource("2_3fe2k")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.5, 0.6, 1.5)
[node name="Wall33" parent="." instance=ExtResource("2_3yf7r")]
[node name="Wall33" parent="." instance=ExtResource("2_3fe2k")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.5, 0.600054, 10.5)
[node name="Wall34" parent="." instance=ExtResource("2_3yf7r")]
[node name="Wall34" parent="." instance=ExtResource("2_3fe2k")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.5, 0.6, 8.5)
[node name="Wall35" parent="." instance=ExtResource("2_3yf7r")]
[node name="Wall35" parent="." instance=ExtResource("2_3fe2k")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.5, 0.6, 9.5)
[node name="Wall36" parent="." instance=ExtResource("2_3yf7r")]
[node name="Wall36" parent="." instance=ExtResource("2_3fe2k")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.5, 0.600054, 12.5)
[node name="Wall37" parent="." instance=ExtResource("2_3yf7r")]
[node name="Wall37" parent="." instance=ExtResource("2_3fe2k")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.5, 0.6, 11.5)
[node name="Wall38" parent="." instance=ExtResource("2_3yf7r")]
[node name="Wall38" parent="." instance=ExtResource("2_3fe2k")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.5, 0.6, 7.5)
[node name="Wall39" parent="." instance=ExtResource("2_3yf7r")]
[node name="Wall39" parent="." instance=ExtResource("2_3fe2k")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.5, 0.600054, 16.5)
[node name="Wall40" parent="." instance=ExtResource("2_3yf7r")]
[node name="Wall40" parent="." instance=ExtResource("2_3fe2k")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.5, 0.6, 14.5)
[node name="Wall41" parent="." instance=ExtResource("2_3yf7r")]
[node name="Wall41" parent="." instance=ExtResource("2_3fe2k")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.5, 0.6, 15.5)
[node name="Wall42" parent="." instance=ExtResource("2_3yf7r")]
[node name="Wall42" parent="." instance=ExtResource("2_3fe2k")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.5, 0.600054, 18.5)
[node name="Wall43" parent="." instance=ExtResource("2_3yf7r")]
[node name="Wall43" parent="." instance=ExtResource("2_3fe2k")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.5, 0.6, 17.5)
[node name="Wall44" parent="." instance=ExtResource("2_3yf7r")]
[node name="Wall44" parent="." instance=ExtResource("2_3fe2k")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.5, 0.6, 13.5)
[node name="Wall45" parent="." instance=ExtResource("2_3yf7r")]
[node name="Wall45" parent="." instance=ExtResource("2_3fe2k")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 18.5, 0.600054, 10.5)
[node name="Wall46" parent="." instance=ExtResource("2_3yf7r")]
[node name="Wall46" parent="." instance=ExtResource("2_3fe2k")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 18.5, 0.6, 8.5)
[node name="Wall47" parent="." instance=ExtResource("2_3yf7r")]
[node name="Wall47" parent="." instance=ExtResource("2_3fe2k")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 18.5, 0.6, 9.5)
[node name="Wall48" parent="." instance=ExtResource("2_3yf7r")]
[node name="Wall48" parent="." instance=ExtResource("2_3fe2k")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 18.5, 0.600054, 12.5)
[node name="Wall49" parent="." instance=ExtResource("2_3yf7r")]
[node name="Wall49" parent="." instance=ExtResource("2_3fe2k")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 18.5, 0.6, 11.5)
[node name="Wall50" parent="." instance=ExtResource("2_3yf7r")]
[node name="Wall50" parent="." instance=ExtResource("2_3fe2k")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 18.5, 0.600054, 16.5)
[node name="Wall51" parent="." instance=ExtResource("2_3yf7r")]
[node name="Wall51" parent="." instance=ExtResource("2_3fe2k")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 18.5, 0.6, 14.5)
[node name="Wall52" parent="." instance=ExtResource("2_3yf7r")]
[node name="Wall52" parent="." instance=ExtResource("2_3fe2k")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 18.5, 0.6, 15.5)
[node name="Wall53" parent="." instance=ExtResource("2_3yf7r")]
[node name="Wall53" parent="." instance=ExtResource("2_3fe2k")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 18.5, 0.600054, 18.5)
[node name="Wall54" parent="." instance=ExtResource("2_3yf7r")]
[node name="Wall54" parent="." instance=ExtResource("2_3fe2k")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 18.5, 0.6, 17.5)
[node name="Wall55" parent="." instance=ExtResource("2_3yf7r")]
[node name="Wall55" parent="." instance=ExtResource("2_3fe2k")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 18.5, 0.6, 13.5)
[node name="Wall22" parent="." instance=ExtResource("2_3yf7r")]
[node name="Wall22" parent="." instance=ExtResource("2_3fe2k")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 18.5, 0.600054, 1.5)
[node name="Wall27" parent="." instance=ExtResource("2_3yf7r")]
[node name="Wall27" parent="." instance=ExtResource("2_3fe2k")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 18.5, 0.600054, 5.5)
[node name="Wall28" parent="." instance=ExtResource("2_3yf7r")]
[node name="Wall28" parent="." instance=ExtResource("2_3fe2k")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 18.5, 0.6, 3.5)
[node name="Wall29" parent="." instance=ExtResource("2_3yf7r")]
[node name="Wall29" parent="." instance=ExtResource("2_3fe2k")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 18.5, 0.6, 4.5)
[node name="Wall30" parent="." instance=ExtResource("2_3yf7r")]
[node name="Wall30" parent="." instance=ExtResource("2_3fe2k")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 18.5, 0.600054, 7.5)
[node name="Wall31" parent="." instance=ExtResource("2_3yf7r")]
[node name="Wall31" parent="." instance=ExtResource("2_3fe2k")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 18.5, 0.6, 6.5)
[node name="Wall32" parent="." instance=ExtResource("2_3yf7r")]
[node name="Wall32" parent="." instance=ExtResource("2_3fe2k")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 18.5, 0.6, 2.5)
[node name="Ball" parent="." instance=ExtResource("3_whpos")]
[node name="Ball" parent="." instance=ExtResource("3_8fsss")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.5, 0.3, 2.5)
lvel = Vector2i(1, 1)
[node name="Ball7" parent="." instance=ExtResource("3_whpos")]
[node name="Ball7" parent="." instance=ExtResource("3_8fsss")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.5, 0.3, 3.5)
lvel = Vector2i(1, 0)
[node name="Ball10" parent="." instance=ExtResource("3_whpos")]
[node name="Ball10" parent="." instance=ExtResource("3_8fsss")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 8.5, 0.3, 3.5)
lvel = Vector2i(1, 0)
[node name="Ball8" parent="." instance=ExtResource("3_whpos")]
[node name="Ball8" parent="." instance=ExtResource("3_8fsss")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4.5, 0.3, 3.5)
lvel = Vector2i(-1, 0)
[node name="Ball2" parent="." instance=ExtResource("3_whpos")]
[node name="Ball2" parent="." instance=ExtResource("3_8fsss")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3.5, 0.3, 2.5)
lvel = Vector2i(0, 1)
[node name="Ball3" parent="." instance=ExtResource("3_whpos")]
[node name="Ball3" parent="." instance=ExtResource("3_8fsss")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4.5, 0.3, 2.5)
lvel = Vector2i(-1, 1)
[node name="Ball4" parent="." instance=ExtResource("3_whpos")]
[node name="Ball4" parent="." instance=ExtResource("3_8fsss")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.5, 0.3, 4.5)
lvel = Vector2i(1, -1)
[node name="Ball5" parent="." instance=ExtResource("3_whpos")]
[node name="Ball5" parent="." instance=ExtResource("3_8fsss")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3.5, 0.3, 4.5)
lvel = Vector2i(0, -1)
[node name="Ball6" parent="." instance=ExtResource("3_whpos")]
[node name="Ball6" parent="." instance=ExtResource("3_8fsss")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4.5, 0.3, 4.5)
lvel = Vector2i(-1, -1)
[node name="Player" parent="." instance=ExtResource("4_kopqe")]
[node name="Player" parent="." instance=ExtResource("4_ijbmy")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.5, 1, 1.5)
[node name="Goal2" parent="." instance=ExtResource("5_8kppb")]
[node name="Goal2" parent="." instance=ExtResource("5_rnx78")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3.5, 0, 3.5)
[node name="Ball9" parent="." instance=ExtResource("3_whpos")]
[node name="Ball9" parent="." instance=ExtResource("3_8fsss")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 8.5, 0.3, 2.5)
lvel = Vector2i(1, 1)
[node name="Ball11" parent="." instance=ExtResource("3_whpos")]
[node name="Ball11" parent="." instance=ExtResource("3_8fsss")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 10.5, 0.3, 3.5)
lvel = Vector2i(-1, 0)
[node name="Ball12" parent="." instance=ExtResource("3_whpos")]
[node name="Ball12" parent="." instance=ExtResource("3_8fsss")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 9.5, 0.3, 2.5)
lvel = Vector2i(0, 1)
[node name="Ball13" parent="." instance=ExtResource("3_whpos")]
[node name="Ball13" parent="." instance=ExtResource("3_8fsss")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 10.5, 0.3, 2.5)
lvel = Vector2i(-1, 1)
[node name="Ball14" parent="." instance=ExtResource("3_whpos")]
[node name="Ball14" parent="." instance=ExtResource("3_8fsss")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 8.5, 0.3, 4.5)
lvel = Vector2i(1, -1)
[node name="Ball15" parent="." instance=ExtResource("3_whpos")]
[node name="Ball15" parent="." instance=ExtResource("3_8fsss")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 9.5, 0.3, 4.5)
lvel = Vector2i(0, -1)
[node name="Ball16" parent="." instance=ExtResource("3_whpos")]
[node name="Ball16" parent="." instance=ExtResource("3_8fsss")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 10.5, 0.3, 4.5)
lvel = Vector2i(-1, -1)
[node name="Goal3" parent="." instance=ExtResource("5_8kppb")]
[node name="Goal3" parent="." instance=ExtResource("5_rnx78")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 9.5, 0, 3.5)
[node name="Ball17" parent="." instance=ExtResource("3_whpos")]
[node name="Ball17" parent="." instance=ExtResource("3_8fsss")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.5, 0.3, 8.5)
lvel = Vector2i(1, 1)
[node name="Ball18" parent="." instance=ExtResource("3_whpos")]
[node name="Ball18" parent="." instance=ExtResource("3_8fsss")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.5, 0.3, 9.5)
lvel = Vector2i(1, 0)
[node name="Ball19" parent="." instance=ExtResource("3_whpos")]
[node name="Ball19" parent="." instance=ExtResource("3_8fsss")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4.5, 0.3, 9.5)
lvel = Vector2i(-1, 0)
[node name="Ball20" parent="." instance=ExtResource("3_whpos")]
[node name="Ball20" parent="." instance=ExtResource("3_8fsss")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3.5, 0.3, 8.5)
lvel = Vector2i(0, 1)
[node name="Ball21" parent="." instance=ExtResource("3_whpos")]
[node name="Ball21" parent="." instance=ExtResource("3_8fsss")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4.5, 0.3, 8.5)
lvel = Vector2i(-1, 1)
[node name="Ball22" parent="." instance=ExtResource("3_whpos")]
[node name="Ball22" parent="." instance=ExtResource("3_8fsss")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.5, 0.3, 10.5)
lvel = Vector2i(1, -1)
[node name="Ball23" parent="." instance=ExtResource("3_whpos")]
[node name="Ball23" parent="." instance=ExtResource("3_8fsss")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3.5, 0.3, 10.5)
lvel = Vector2i(0, -1)
[node name="Ball24" parent="." instance=ExtResource("3_whpos")]
[node name="Ball24" parent="." instance=ExtResource("3_8fsss")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4.5, 0.3, 10.5)
lvel = Vector2i(-1, -1)
[node name="Goal4" parent="." instance=ExtResource("5_8kppb")]
[node name="Goal4" parent="." instance=ExtResource("5_rnx78")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3.5, 0, 9.5)
[node name="Ball25" parent="." instance=ExtResource("3_whpos")]
[node name="Ball25" parent="." instance=ExtResource("3_8fsss")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 8.5, 0.3, 8.5)
lvel = Vector2i(1, 1)
[node name="Ball26" parent="." instance=ExtResource("3_whpos")]
[node name="Ball26" parent="." instance=ExtResource("3_8fsss")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 8.5, 0.3, 9.5)
lvel = Vector2i(1, 0)
[node name="Ball27" parent="." instance=ExtResource("3_whpos")]
[node name="Ball27" parent="." instance=ExtResource("3_8fsss")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 10.5, 0.3, 9.5)
lvel = Vector2i(-1, 0)
[node name="Ball28" parent="." instance=ExtResource("3_whpos")]
[node name="Ball28" parent="." instance=ExtResource("3_8fsss")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 9.5, 0.3, 8.5)
lvel = Vector2i(0, 1)
[node name="Ball29" parent="." instance=ExtResource("3_whpos")]
[node name="Ball29" parent="." instance=ExtResource("3_8fsss")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 10.5, 0.3, 8.5)
lvel = Vector2i(-1, 1)
[node name="Ball30" parent="." instance=ExtResource("3_whpos")]
[node name="Ball30" parent="." instance=ExtResource("3_8fsss")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 8.5, 0.3, 10.5)
lvel = Vector2i(1, -1)
[node name="Ball31" parent="." instance=ExtResource("3_whpos")]
[node name="Ball31" parent="." instance=ExtResource("3_8fsss")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 9.5, 0.3, 10.5)
lvel = Vector2i(0, -1)
[node name="Ball32" parent="." instance=ExtResource("3_whpos")]
[node name="Ball32" parent="." instance=ExtResource("3_8fsss")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 10.5, 0.3, 10.5)
lvel = Vector2i(-1, -1)
[node name="Goal5" parent="." instance=ExtResource("5_8kppb")]
[node name="Goal5" parent="." instance=ExtResource("5_rnx78")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 9.5, 0, 9.5)
[node name="Ball33" parent="." instance=ExtResource("3_whpos")]
[node name="Ball33" parent="." instance=ExtResource("3_8fsss")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 14.5, 0.3, 2.5)
lvel = Vector2i(1, 1)
[node name="Ball34" parent="." instance=ExtResource("3_whpos")]
[node name="Ball34" parent="." instance=ExtResource("3_8fsss")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 14.5, 0.3, 3.5)
lvel = Vector2i(1, 0)
[node name="Ball35" parent="." instance=ExtResource("3_whpos")]
[node name="Ball35" parent="." instance=ExtResource("3_8fsss")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 16.5, 0.3, 3.5)
lvel = Vector2i(-1, 0)
[node name="Ball36" parent="." instance=ExtResource("3_whpos")]
[node name="Ball36" parent="." instance=ExtResource("3_8fsss")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 15.5, 0.3, 2.5)
lvel = Vector2i(0, 1)
[node name="Ball37" parent="." instance=ExtResource("3_whpos")]
[node name="Ball37" parent="." instance=ExtResource("3_8fsss")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 16.5, 0.3, 2.5)
lvel = Vector2i(-1, 1)
[node name="Ball38" parent="." instance=ExtResource("3_whpos")]
[node name="Ball38" parent="." instance=ExtResource("3_8fsss")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 14.5, 0.3, 4.5)
lvel = Vector2i(1, -1)
[node name="Ball39" parent="." instance=ExtResource("3_whpos")]
[node name="Ball39" parent="." instance=ExtResource("3_8fsss")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 15.5, 0.3, 4.5)
lvel = Vector2i(0, -1)
[node name="Ball40" parent="." instance=ExtResource("3_whpos")]
[node name="Ball40" parent="." instance=ExtResource("3_8fsss")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 16.5, 0.3, 4.5)
lvel = Vector2i(-1, -1)
[node name="Goal6" parent="." instance=ExtResource("5_8kppb")]
[node name="Goal6" parent="." instance=ExtResource("5_rnx78")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 15.5, 0, 3.5)
[node name="Ball41" parent="." instance=ExtResource("3_whpos")]
[node name="Ball41" parent="." instance=ExtResource("3_8fsss")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 14.5, 0.3, 8.5)
lvel = Vector2i(1, 1)
[node name="Ball42" parent="." instance=ExtResource("3_whpos")]
[node name="Ball42" parent="." instance=ExtResource("3_8fsss")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 14.5, 0.3, 9.5)
lvel = Vector2i(1, 0)
[node name="Ball43" parent="." instance=ExtResource("3_whpos")]
[node name="Ball43" parent="." instance=ExtResource("3_8fsss")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 16.5, 0.3, 9.5)
lvel = Vector2i(-1, 0)
[node name="Ball44" parent="." instance=ExtResource("3_whpos")]
[node name="Ball44" parent="." instance=ExtResource("3_8fsss")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 15.5, 0.3, 8.5)
lvel = Vector2i(0, 1)
[node name="Ball45" parent="." instance=ExtResource("3_whpos")]
[node name="Ball45" parent="." instance=ExtResource("3_8fsss")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 16.5, 0.3, 8.5)
lvel = Vector2i(-1, 1)
[node name="Ball46" parent="." instance=ExtResource("3_whpos")]
[node name="Ball46" parent="." instance=ExtResource("3_8fsss")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 14.5, 0.3, 10.5)
lvel = Vector2i(1, -1)
[node name="Ball47" parent="." instance=ExtResource("3_whpos")]
[node name="Ball47" parent="." instance=ExtResource("3_8fsss")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 15.5, 0.3, 10.5)
lvel = Vector2i(0, -1)
[node name="Ball48" parent="." instance=ExtResource("3_whpos")]
[node name="Ball48" parent="." instance=ExtResource("3_8fsss")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 16.5, 0.3, 10.5)
lvel = Vector2i(-1, -1)
[node name="Goal7" parent="." instance=ExtResource("5_8kppb")]
[node name="Goal7" parent="." instance=ExtResource("5_rnx78")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 15.5, 0, 9.5)
[node name="Ball49" parent="." instance=ExtResource("3_whpos")]
[node name="Ball49" parent="." instance=ExtResource("3_8fsss")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.5, 0.3, 14.5)
lvel = Vector2i(1, 1)
[node name="Ball50" parent="." instance=ExtResource("3_whpos")]
[node name="Ball50" parent="." instance=ExtResource("3_8fsss")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.5, 0.3, 15.5)
lvel = Vector2i(1, 0)
[node name="Ball51" parent="." instance=ExtResource("3_whpos")]
[node name="Ball51" parent="." instance=ExtResource("3_8fsss")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4.5, 0.3, 15.5)
lvel = Vector2i(-1, 0)
[node name="Ball52" parent="." instance=ExtResource("3_whpos")]
[node name="Ball52" parent="." instance=ExtResource("3_8fsss")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3.5, 0.3, 14.5)
lvel = Vector2i(0, 1)
[node name="Ball53" parent="." instance=ExtResource("3_whpos")]
[node name="Ball53" parent="." instance=ExtResource("3_8fsss")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4.5, 0.3, 14.5)
lvel = Vector2i(-1, 1)
[node name="Ball54" parent="." instance=ExtResource("3_whpos")]
[node name="Ball54" parent="." instance=ExtResource("3_8fsss")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.5, 0.3, 16.5)
lvel = Vector2i(1, -1)
[node name="Ball55" parent="." instance=ExtResource("3_whpos")]
[node name="Ball55" parent="." instance=ExtResource("3_8fsss")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3.5, 0.3, 16.5)
lvel = Vector2i(0, -1)
[node name="Ball56" parent="." instance=ExtResource("3_whpos")]
[node name="Ball56" parent="." instance=ExtResource("3_8fsss")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4.5, 0.3, 16.5)
lvel = Vector2i(-1, -1)
[node name="Goal8" parent="." instance=ExtResource("5_8kppb")]
[node name="Goal8" parent="." instance=ExtResource("5_rnx78")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3.5, 0, 15.5)
[node name="Ball57" parent="." instance=ExtResource("3_whpos")]
[node name="Ball57" parent="." instance=ExtResource("3_8fsss")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 8.5, 0.3, 14.5)
lvel = Vector2i(1, 1)
[node name="Ball58" parent="." instance=ExtResource("3_whpos")]
[node name="Ball58" parent="." instance=ExtResource("3_8fsss")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 8.5, 0.3, 15.5)
lvel = Vector2i(1, 0)
[node name="Ball59" parent="." instance=ExtResource("3_whpos")]
[node name="Ball59" parent="." instance=ExtResource("3_8fsss")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 10.5, 0.3, 15.5)
lvel = Vector2i(-1, 0)
[node name="Ball60" parent="." instance=ExtResource("3_whpos")]
[node name="Ball60" parent="." instance=ExtResource("3_8fsss")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 9.5, 0.3, 14.5)
lvel = Vector2i(0, 1)
[node name="Ball61" parent="." instance=ExtResource("3_whpos")]
[node name="Ball61" parent="." instance=ExtResource("3_8fsss")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 10.5, 0.3, 14.5)
lvel = Vector2i(-1, 1)
[node name="Ball62" parent="." instance=ExtResource("3_whpos")]
[node name="Ball62" parent="." instance=ExtResource("3_8fsss")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 8.5, 0.3, 16.5)
lvel = Vector2i(1, -1)
[node name="Ball63" parent="." instance=ExtResource("3_whpos")]
[node name="Ball63" parent="." instance=ExtResource("3_8fsss")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 9.5, 0.3, 16.5)
lvel = Vector2i(0, -1)
[node name="Ball64" parent="." instance=ExtResource("3_whpos")]
[node name="Ball64" parent="." instance=ExtResource("3_8fsss")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 10.5, 0.3, 16.5)
lvel = Vector2i(-1, -1)
[node name="Goal9" parent="." instance=ExtResource("5_8kppb")]
[node name="Goal9" parent="." instance=ExtResource("5_rnx78")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 9.5, 0, 15.5)
[node name="Ball65" parent="." instance=ExtResource("3_whpos")]
[node name="Ball65" parent="." instance=ExtResource("3_8fsss")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 14.5, 0.3, 14.5)
lvel = Vector2i(1, 1)
[node name="Ball66" parent="." instance=ExtResource("3_whpos")]
[node name="Ball66" parent="." instance=ExtResource("3_8fsss")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 14.5, 0.3, 15.5)
lvel = Vector2i(1, 0)
[node name="Ball67" parent="." instance=ExtResource("3_whpos")]
[node name="Ball67" parent="." instance=ExtResource("3_8fsss")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 16.5, 0.3, 15.5)
lvel = Vector2i(-1, 0)
[node name="Ball68" parent="." instance=ExtResource("3_whpos")]
[node name="Ball68" parent="." instance=ExtResource("3_8fsss")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 15.5, 0.3, 14.5)
lvel = Vector2i(0, 1)
[node name="Ball69" parent="." instance=ExtResource("3_whpos")]
[node name="Ball69" parent="." instance=ExtResource("3_8fsss")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 16.5, 0.3, 14.5)
lvel = Vector2i(-1, 1)
[node name="Ball70" parent="." instance=ExtResource("3_whpos")]
[node name="Ball70" parent="." instance=ExtResource("3_8fsss")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 14.5, 0.3, 16.5)
lvel = Vector2i(1, -1)
[node name="Ball71" parent="." instance=ExtResource("3_whpos")]
[node name="Ball71" parent="." instance=ExtResource("3_8fsss")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 15.5, 0.3, 16.5)
lvel = Vector2i(0, -1)
[node name="Ball72" parent="." instance=ExtResource("3_whpos")]
[node name="Ball72" parent="." instance=ExtResource("3_8fsss")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 16.5, 0.3, 16.5)
lvel = Vector2i(-1, -1)
[node name="Goal10" parent="." instance=ExtResource("5_8kppb")]
[node name="Goal10" parent="." instance=ExtResource("5_rnx78")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 15.5, 0, 15.5)

View file

@ -0,0 +1,120 @@
[gd_scene load_steps=6 format=3 uid="uid://cufxvy8fismrf"]
[ext_resource type="Script" uid="uid://c8ywa33v3jq7t" path="res://board.gd" id="1_iculy"]
[ext_resource type="PackedScene" uid="uid://bkaa4sl1n2f5w" path="res://piece/wall.tscn" id="2_jdtx8"]
[ext_resource type="PackedScene" uid="uid://bghr6ew34loyb" path="res://piece/ball.tscn" id="3_lmj7e"]
[ext_resource type="PackedScene" uid="uid://cnjmu3qesbndk" path="res://piece/player.tscn" id="4_ve3bx"]
[ext_resource type="PackedScene" uid="uid://uf8vnylfqal1" path="res://piece/goal.tscn" id="5_0riut"]
[node name="Level1" type="Node3D"]
script = ExtResource("1_iculy")
metadata/_custom_type_script = "uid://c8ywa33v3jq7t"
[node name="Wall" parent="." instance=ExtResource("2_jdtx8")]
[node name="Wall2" parent="." instance=ExtResource("2_jdtx8")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.5, 0.6, 0.5)
[node name="Wall3" parent="." instance=ExtResource("2_jdtx8")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.5, 0.6, 0.5)
[node name="Wall4" parent="." instance=ExtResource("2_jdtx8")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3.5, 0.6, 0.5)
[node name="Wall5" parent="." instance=ExtResource("2_jdtx8")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4.5, 0.6, 0.5)
[node name="Wall6" parent="." instance=ExtResource("2_jdtx8")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 5.5, 0.6, 0.5)
[node name="Wall8" parent="." instance=ExtResource("2_jdtx8")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.5, 0.6, 6.5)
[node name="Wall9" parent="." instance=ExtResource("2_jdtx8")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.5, 0.6, 6.5)
[node name="Wall12" parent="." instance=ExtResource("2_jdtx8")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3.5, 0.6, 6.5)
[node name="Wall13" parent="." instance=ExtResource("2_jdtx8")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4.5, 0.6, 6.5)
[node name="Wall14" parent="." instance=ExtResource("2_jdtx8")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 5.5, 0.6, 6.5)
[node name="Wall7" parent="." instance=ExtResource("2_jdtx8")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 6.5, 0.6, 0.5)
[node name="Wall10" parent="." instance=ExtResource("2_jdtx8")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.5, 0.600054, 4.5)
[node name="Wall23" parent="." instance=ExtResource("2_jdtx8")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.5, 0.6, 2.5)
[node name="Wall25" parent="." instance=ExtResource("2_jdtx8")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.5, 0.6, 3.5)
[node name="Wall18" parent="." instance=ExtResource("2_jdtx8")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.5, 0.600054, 6.5)
[node name="Wall26" parent="." instance=ExtResource("2_jdtx8")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.5, 0.6, 5.5)
[node name="Wall24" parent="." instance=ExtResource("2_jdtx8")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.5, 0.6, 1.5)
[node name="Wall11" parent="." instance=ExtResource("2_jdtx8")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 6.5, 0.600054, 4.5)
[node name="Wall27" parent="." instance=ExtResource("2_jdtx8")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 6.5, 0.6, 2.5)
[node name="Wall28" parent="." instance=ExtResource("2_jdtx8")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 6.5, 0.6, 3.5)
[node name="Wall19" parent="." instance=ExtResource("2_jdtx8")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 6.5, 0.600054, 6.5)
[node name="Wall29" parent="." instance=ExtResource("2_jdtx8")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 6.5, 0.6, 5.5)
[node name="Wall30" parent="." instance=ExtResource("2_jdtx8")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 6.5, 0.6, 1.5)
[node name="Ball" parent="." instance=ExtResource("3_lmj7e")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.5, 0.3, 2.5)
lvel = Vector2i(1, 1)
[node name="Ball7" parent="." instance=ExtResource("3_lmj7e")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.5, 0.3, 3.5)
lvel = Vector2i(1, 0)
[node name="Ball8" parent="." instance=ExtResource("3_lmj7e")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4.5, 0.3, 3.5)
lvel = Vector2i(-1, 0)
[node name="Ball2" parent="." instance=ExtResource("3_lmj7e")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3.5, 0.3, 2.5)
lvel = Vector2i(0, 1)
[node name="Ball3" parent="." instance=ExtResource("3_lmj7e")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4.5, 0.3, 2.5)
lvel = Vector2i(-1, 1)
[node name="Ball4" parent="." instance=ExtResource("3_lmj7e")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.5, 0.3, 4.5)
lvel = Vector2i(1, -1)
[node name="Ball5" parent="." instance=ExtResource("3_lmj7e")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3.5, 0.3, 4.5)
lvel = Vector2i(0, -1)
[node name="Ball6" parent="." instance=ExtResource("3_lmj7e")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4.5, 0.3, 4.5)
lvel = Vector2i(-1, -1)
[node name="Player" parent="." instance=ExtResource("4_ve3bx")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.5, 1, 1.5)
[node name="Goal2" parent="." instance=ExtResource("5_0riut")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3.5, 0, 3.5)

28
main.gd
View file

@ -16,14 +16,16 @@ var player: Piece
var level_num := -1
# TODO: instead of dumb numbered levels, GIVE THEM GOOD NAMES AND MANUALLY ORDER THEM!
var levels: Array[PackedScene] = [
#preload("res://level/nightmare_test.tscn"),
preload("res://level/level_00.tscn"),
preload("res://level/level_01.tscn"),
preload("res://level/level_02.tscn"),
preload("res://level/level_03.tscn"),
preload("res://level/level_04.tscn"),
preload("res://level/test_nightmare_mini.tscn"),
preload("res://level/test_nightmare.tscn"),
#preload("res://level/level_00.tscn"),
#preload("res://level/level_01.tscn"),
#preload("res://level/level_02.tscn"),
#preload("res://level/level_03.tscn"),
#preload("res://level/level_04.tscn"),
]
# TODO: screen transition to hide awkward animations lol
# TODO: sun movement takes exactly as much time as all piece movement
var time := 0:
set(new_time):
var tween := get_tree().create_tween()
@ -64,8 +66,8 @@ var move_last_integer := -1
func arrf(x: float) -> float:
return 5*x**(4.0/3)
#return 20*x*log(x+1)/log(10)
# TODO: waiting ARR
func handle_move(delta: float):
var dir := Vector2i(Input.get_vector(&"l", &"r", &"u", &"d").snapped(Vector2.ONE))
@ -109,10 +111,7 @@ func redo():
func restart():
while hist.has_undo():
hist.undo()
# HACK: avoid an inconsistent visual board state
for piece in board.pieces():
for tween in piece.tweens:
tween.kill()
piece.tween_to_target()
# i think it's unintuitive to be able to redo from restart
# scratch that i like that, don't clear the history
@ -120,10 +119,10 @@ func restart():
# time advancing, basically
func board_step():
hist.add_do_property(self, "time", time+1)
hist.add_do_method(board.do_step)
hist.add_do_property(self, "time", time+1)
hist.add_do_property(self, "time", time+1)
hist.add_undo_method(board.undo_step())
hist.add_undo_property(self, "time", time)
func step(move: Vector2i):
if advancing:
@ -147,9 +146,10 @@ func step(move: Vector2i):
hist.add_undo_method(player.undo_move())
hist.commit_action()
elif not board.type_at(pos+move, Piece.Type.PlayerBarrier) and ball != null:
var tween := get_tree().create_tween()
hist.create_action("push")
hist.add_do_method(ball.do_push(move))
hist.add_do_method(player.do_bump(move))
hist.add_do_method(player.do_bump(move, tween, ball, true))
hist.add_undo_method(player.undo_bump(move))
hist.add_undo_method(ball.undo_push())
hist.commit_action()

View file

@ -90,6 +90,7 @@ flat = true
expand_icon = true
[node name="RestartButton" type="Button" parent="."]
visible = false
offset_left = 245.0
offset_top = 4.0
offset_right = 369.0

View file

@ -19,19 +19,14 @@ enum Type {
## squares per second
@export_range(0.0, 1, 0.01) var anim_time := 0.1
var tweens: Array[Tween] = []
#TODO: {un,}do_bump animation method (good visual clarity)
func pos_of_lpos(pos: Vector2i, y := 0.0) -> Vector3:
return Vector3(pos.x, y, pos.y)
func target_pos() -> Vector3:
return pos_of_lpos(lpos, position.y) + Vector3(0.5, 0, 0.5)
func tween_to_target(tween := create_tween()):
func tween_to_target(tween := get_tree().create_tween()):
tween.tween_property(self, "position", target_pos(), anim_time)
tweens.push_back(tween)
func lpos_of_pos(pos: Vector3) -> Vector2i:
return Vector2i(int(pos.x), int(pos.z))
@ -50,13 +45,12 @@ var speedometer: Label3D
# TODO: much, *much* better animation is needed. ESPECIALLY if we're doing slowmo
# (we're doing slowmo because it is SICK)
func do_step(board: Board):
func do_step(board: Board, tween: Tween):
var move := lvel.clampi(-1, 1)
var new_pos := lpos + move
# ball being collided *with* gets the remainder of the momentum
# EMERGENT COMPLEXITY!??!?
if board.solid_at(new_pos):
do_bump(move, lvel).call()
var ball_here := board.type_at(new_pos, Piece.Type.Ball)
if ball_here:
var rem := lvel % 2
@ -64,13 +58,14 @@ func do_step(board: Board):
lvel = -lvel/2
else:
lvel *= -1
do_bump(move, tween, ball_here).call()
return
lpos = new_pos
var on_ice := !!board.type_at(lpos, Piece.Type.FloorIce)
if not on_ice:
lvel -= move
lvel_displayed = lvel
tween_to_target()
tween_to_target(tween)
func undo_step() -> Callable:
var old_pos := lpos
@ -83,8 +78,6 @@ func undo_step() -> Callable:
func do_move(move: Vector2i) -> Callable:
return func():
for tween in tweens:
tween.kill()
position = target_pos()
lpos += move
tween_to_target()
@ -92,16 +85,15 @@ func do_move(move: Vector2i) -> Callable:
func undo_move() -> Callable:
var old_pos := lpos
return func():
for tween in tweens:
tween.kill()
position = target_pos()
lpos = old_pos
tween_to_target()
func do_push(move: Vector2i) -> Callable:
func do_push(move: Vector2i, show_now := false) -> Callable:
return func():
lvel += move
lvel_displayed = lvel
if show_now:
lvel_displayed = lvel
func undo_push() -> Callable:
var old_vel := lvel
@ -111,14 +103,21 @@ func undo_push() -> Callable:
# no logical effect, purely for aesthetics
# (and communicating !!!! player yes)
func do_bump(move: Vector2i, old_lvel := lvel) -> Callable:
func do_bump(move: Vector2i, tween := get_tree().create_tween(), bumpee: Piece = null, delay_bumpee_update := false) -> Callable:
var old_lvel_bumpee := Vector2i.ZERO
if bumpee:
old_lvel_bumpee = bumpee.lvel
return func():
lvel_displayed = old_lvel
var tween := create_tween()
tween.tween_property(self, "position", target_pos() + pos_of_lpos(move)/2, anim_time/2)
if bumpee:
tween.tween_callback(func():
if delay_bumpee_update:
bumpee.lvel_displayed = bumpee.lvel
else:
bumpee.lvel_displayed = old_lvel_bumpee
)
tween.tween_callback(func(): lvel_displayed = lvel)
tween_to_target(tween)
tweens.push_back(tween)
# TODO?: maybe fix? maybe the bump should be more complicated?
func undo_bump(_move: Vector2i) -> Callable: