diff --git a/main.gd b/main.gd index 8936e83..f495e7f 100644 --- a/main.gd +++ b/main.gd @@ -7,20 +7,22 @@ extends Node3D @onready var camera: Camera3D = $Camera @onready var rolltime_indicator: Sprite2D = $RolltimeIndicator +@onready var victory_indicator: Sprite2D = $VictoryIndicator -# TODO: wall that player cannot go through but balls can -# (important) +# TODO: tutorialize slowmo when things get complicated var hist := UndoRedo.new() var board: Board var player: Piece var level_num := -1 -# TODO: instead of dumb numbered levels, GIVE THEM GOOD NAMES AND MANUALLY ORDER THEM! +# TODO: save progress var levels: Array[PackedScene] = [ + preload("res://level/test_nightmare_mini.tscn"), preload("res://level/player_barrier_01.tscn"), + preload("res://level/level_00.tscn"), + preload("res://level/level_01.tscn"), ] -# TODO: sun movement takes exactly as much time as all piece movement var time := 0 var advancing := false @@ -39,11 +41,9 @@ func _process(delta: float) -> void: $UndoButton.disabled = not hist.has_undo() $RedoButton.disabled = not hist.has_redo() $RestartButton.disabled = not hist.has_undo() - # TODO: make this toggleable $Clock.text = "T = %d" % time var slowmo := Input.is_action_pressed("slowmo"); $SlowmoIndicator.text = "slowmo" if slowmo else "" - # TODO: only slowmo during rolltime? Engine.time_scale = slowmo_speed if slowmo else 1.0 # TODO: this is kinda comically slow BUT STOP WORKING ON THE GAME AudioServer.playback_speed_scale = slowmo_speed if slowmo else 1.0 @@ -186,7 +186,10 @@ func advance_level(): advancing = true if level_num >= 0: print("level won") - await get_tree().create_timer(1).timeout + var tween := get_tree().create_tween() + tween.tween_property(victory_indicator, "modulate:a", 1, 0.1).set_delay(0.3) + tween.tween_callback(func(): victory_indicator.modulate.a = 0).set_delay(0.9) + await tween.finished advancing = false $Sun.rotation.y = 0 time = 0 diff --git a/main.tscn b/main.tscn index 2ed8f94..6f6205b 100644 --- a/main.tscn +++ b/main.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=15 format=3 uid="uid://lrk2whqxl0w0"] +[gd_scene load_steps=16 format=3 uid="uid://lrk2whqxl0w0"] [ext_resource type="Script" uid="uid://c707s0tgd88pg" path="res://main.gd" id="1_ig7tw"] [ext_resource type="Texture2D" uid="uid://crahyipmcudoy" path="res://ui/undo.png" id="3_lquwl"] @@ -6,6 +6,7 @@ [ext_resource type="Texture2D" uid="uid://cbb1q0usxd6ex" path="res://ui/restart.png" id="5_272bh"] [ext_resource type="Shader" uid="uid://c7e17bwc7nrgt" path="res://ground.gdshader" id="5_lquwl"] [ext_resource type="Texture2D" uid="uid://q6x7t05nx1d1" path="res://ui/rolltime-indicator.png" id="6_7mycd"] +[ext_resource type="Texture2D" uid="uid://b8kvn3kumc08s" path="res://ui/victory-indicator.png" id="7_272bh"] [sub_resource type="ProceduralSkyMaterial" id="ProceduralSkyMaterial_1bvp3"] sky_top_color = Color(0.467272, 0.753409, 0.87431, 1) @@ -127,6 +128,12 @@ modulate = Color(1, 1, 1, 0) texture = ExtResource("6_7mycd") centered = false +[node name="VictoryIndicator" type="Sprite2D" parent="."] +modulate = Color(0.796078, 0.639216, 0.0627451, 0) +z_index = 1 +texture = ExtResource("7_272bh") +centered = false + [connection signal="pressed" from="UndoButton" to="." method="undo"] [connection signal="pressed" from="RedoButton" to="." method="redo"] [connection signal="pressed" from="RestartButton" to="." method="restart"] diff --git a/piece.gd b/piece.gd index 5ced269..1f9fe2f 100644 --- a/piece.gd +++ b/piece.gd @@ -45,8 +45,6 @@ func lpos_of_pos(pos: Vector3) -> Vector2i: var speedometer: Label3D @onready var arrow := get_node_or_null("Arrow") as MeshInstance3D -# 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, tween: Tween): var move := lvel.clampi(-1, 1) var new_pos := lpos + move @@ -121,7 +119,6 @@ func do_bump(move: Vector2i, tween := get_tree().create_tween(), bumpee: Piece = tween.tween_callback(func(): lvel_displayed = lvel) tween_to_target(tween, get_parent().anim_time/2) -# TODO?: maybe fix? maybe the bump should be more complicated? func undo_bump(_move: Vector2i) -> Callable: return func(): pass diff --git a/ui/victory-indicator.png b/ui/victory-indicator.png new file mode 100644 index 0000000..30ab1ca Binary files /dev/null and b/ui/victory-indicator.png differ diff --git a/ui/victory-indicator.png.import b/ui/victory-indicator.png.import new file mode 100644 index 0000000..b1a395c --- /dev/null +++ b/ui/victory-indicator.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b8kvn3kumc08s" +path="res://.godot/imported/victory-indicator.png-0ab812ac98ddf323315a3cfcc1b177a8.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://ui/victory-indicator.png" +dest_files=["res://.godot/imported/victory-indicator.png-0ab812ac98ddf323315a3cfcc1b177a8.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1