diff --git a/Assets/Maps/map3.png b/Assets/Maps/map3.png new file mode 100644 index 0000000..0fd9861 Binary files /dev/null and b/Assets/Maps/map3.png differ diff --git a/Assets/Maps/map3.png.import b/Assets/Maps/map3.png.import new file mode 100644 index 0000000..407b73b --- /dev/null +++ b/Assets/Maps/map3.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://fevwxt4ody3f" +path="res://.godot/imported/map3.png-6e489377317fd68e888f70d6181b1e29.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Assets/Maps/map3.png" +dest_files=["res://.godot/imported/map3.png-6e489377317fd68e888f70d6181b1e29.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 diff --git a/Assets/Others/lock.png b/Assets/Others/lock.png new file mode 100644 index 0000000..ac2fed9 Binary files /dev/null and b/Assets/Others/lock.png differ diff --git a/Assets/Others/lock.png.import b/Assets/Others/lock.png.import new file mode 100644 index 0000000..14201e9 --- /dev/null +++ b/Assets/Others/lock.png.import @@ -0,0 +1,30 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://d0ja03ueuex75" +valid=false + +[deps] + +source_file="res://Assets/Others/lock.png" + +[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 diff --git a/Assets/Others/padlock.png b/Assets/Others/padlock.png new file mode 100644 index 0000000..dcd2309 Binary files /dev/null and b/Assets/Others/padlock.png differ diff --git a/Assets/Others/padlock.png.import b/Assets/Others/padlock.png.import new file mode 100644 index 0000000..dae9e88 --- /dev/null +++ b/Assets/Others/padlock.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://djv5n53tndiig" +path="res://.godot/imported/padlock.png-a1cb69617d9764387292a49ec452bf21.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Assets/Others/padlock.png" +dest_files=["res://.godot/imported/padlock.png-a1cb69617d9764387292a49ec452bf21.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 diff --git a/Game/Maps/Map1_setup.gd b/Game/Maps/Map1_setup.gd index 84c4b78..ac818ba 100644 --- a/Game/Maps/Map1_setup.gd +++ b/Game/Maps/Map1_setup.gd @@ -3,10 +3,10 @@ extends Node var waves = [ [ [10, 0.2, 0.8, 0.2, 0.0], #wave 1 #First path - [20, 0.4, 0.5, 0.5, 0.0], #wave 2 - [30, 0.5, 0.4, 0.4, 0.1], #wave 3 - [40, 0.8, 0.3, 0.2, 0.5], #wave 4 - [50, 0.9, 0.1, 0.2, 0.7], #wave 5 + #[20, 0.4, 0.5, 0.5, 0.0], #wave 2 + #[30, 0.5, 0.4, 0.4, 0.1], #wave 3 + #[40, 0.8, 0.3, 0.2, 0.5], #wave 4 + #[50, 0.9, 0.1, 0.2, 0.7], #wave 5 ] ] diff --git a/Game/Maps/map_2.tscn b/Game/Maps/map_2.tscn index 17320cb..ef633df 100644 --- a/Game/Maps/map_2.tscn +++ b/Game/Maps/map_2.tscn @@ -1574,11 +1574,9 @@ scale = Vector2(0.238927, 0.171569) texture = ExtResource("110_fb8td") [node name="Path2D" type="Path2D" parent="."] -visible = false curve = SubResource("Curve2D_6abe5") [node name="Path2D2" type="Path2D" parent="."] -visible = false curve = SubResource("Curve2D_xx2jp") [node name="Timer" type="Timer" parent="."] @@ -1586,7 +1584,6 @@ wait_time = 0.4 autostart = true [node name="TrapArea" type="Area2D" parent="."] -visible = false [node name="CollisionShape2D" type="CollisionShape2D" parent="TrapArea"] position = Vector2(435, 187.5) @@ -1604,7 +1601,6 @@ shape = SubResource("RectangleShape2D_h3dak") debug_color = Color(0.798903, 0.0385002, 1, 0.42) [node name="TowerArea" type="Area2D" parent="."] -visible = false [node name="CollisionShape2D" type="CollisionShape2D" parent="TowerArea"] position = Vector2(587, 48) @@ -1629,7 +1625,6 @@ shape = SubResource("RectangleShape2D_sglle") [node name="CanvasLayer" type="CanvasLayer" parent="."] [node name="SidePanel" parent="CanvasLayer" instance=ExtResource("111_2ej3d")] -visible = false size_flags_horizontal = 6 [node name="MusicPlayer" parent="." instance=ExtResource("112_yc4f2")] diff --git a/Game/Menu/mapselector.gd b/Game/Menu/mapselector.gd index 81d2fce..9d24bcc 100644 --- a/Game/Menu/mapselector.gd +++ b/Game/Menu/mapselector.gd @@ -23,7 +23,21 @@ func _ready() -> void: get_node("VBoxContainer/HBoxContainer/second/Button").connect("button_up", LoadMap2) get_node("VBoxContainer/HBoxContainer/third/Button").connect("button_up", LoadMap3) - + var unlocker = true + for i in get_node("VBoxContainer").get_children(): + for ii in i.get_children(): + if ii.get_node("Label2").text == "Haven't finished yet": + if unlocker: + unlocker = false + ii.get_node("Button").get_child(0).hide() + ii.get_node("Button").disabled = false + else: + ii.get_node("Button").get_child(0).show() + ii.get_node("Button").disabled = true + else: + ii.get_node("Button").get_child(0).hide() + ii.get_node("Button").disabled = false + func loadData() -> void: if FileAccess.file_exists(save_path): @@ -49,3 +63,8 @@ func save_scores(): if file: file.store_var(map_scores) file.close() + + +func _on_button_pressed() -> void: + get_tree().change_scene_to_file("res://Game/Menu/main.tscn") + pass # Replace with function body. diff --git a/Game/Menu/mapselector.tscn b/Game/Menu/mapselector.tscn index e2acf27..c58fc32 100644 --- a/Game/Menu/mapselector.tscn +++ b/Game/Menu/mapselector.tscn @@ -1,37 +1,48 @@ -[gd_scene load_steps=19 format=3 uid="uid://cxet2lvdco2ak"] +[gd_scene load_steps=20 format=3 uid="uid://cxet2lvdco2ak"] [ext_resource type="Script" uid="uid://duhi4pfoa45j1" path="res://Game/Menu/mapselector.gd" id="1_cnef1"] [ext_resource type="Texture2D" uid="uid://bgy114b67j3kg" path="res://Assets/Others/8-bit-graphics-pixels-scene-with-castle.jpg" id="1_jteil"] [ext_resource type="FontFile" uid="uid://bu44ne346ymoe" path="res://Assets/Others/Canterbury.ttf" id="2_2uj2s"] [ext_resource type="Texture2D" uid="uid://cheweipqa125e" path="res://Assets/Maps/map1.png" id="3_2uj2s"] [ext_resource type="Texture2D" uid="uid://dffphf4kn5sk2" path="res://Assets/Maps/map2.png" id="5_mjmwi"] +[ext_resource type="Texture2D" uid="uid://fevwxt4ody3f" path="res://Assets/Maps/map3.png" id="6_5yqcp"] +[ext_resource type="Texture2D" uid="uid://djv5n53tndiig" path="res://Assets/Others/padlock.png" id="6_udeaf"] [sub_resource type="StyleBoxTexture" id="StyleBoxTexture_cnef1"] texture = ExtResource("1_jteil") -[sub_resource type="StyleBoxTexture" id="StyleBoxTexture_mjmwi"] -texture = ExtResource("3_2uj2s") - -[sub_resource type="StyleBoxTexture" id="StyleBoxTexture_udeaf"] +[sub_resource type="StyleBoxTexture" id="StyleBoxTexture_cg1t8"] texture = ExtResource("3_2uj2s") [sub_resource type="StyleBoxTexture" id="StyleBoxTexture_5yqcp"] texture = ExtResource("3_2uj2s") - -[sub_resource type="StyleBoxTexture" id="StyleBoxTexture_cg1t8"] -texture = ExtResource("3_2uj2s") - -[sub_resource type="StyleBoxTexture" id="StyleBoxTexture_losb8"] -texture = ExtResource("5_mjmwi") +texture_margin_left = 5.0 +texture_margin_top = 5.0 +texture_margin_right = 5.0 +texture_margin_bottom = 5.0 [sub_resource type="StyleBoxTexture" id="StyleBoxTexture_rjq3w"] texture = ExtResource("5_mjmwi") [sub_resource type="StyleBoxTexture" id="StyleBoxTexture_uvrvw"] texture = ExtResource("5_mjmwi") +texture_margin_left = 5.0 +texture_margin_top = 5.0 +texture_margin_right = 5.0 +texture_margin_bottom = 5.0 + +[sub_resource type="StyleBoxTexture" id="StyleBoxTexture_hmthg"] +texture = ExtResource("5_mjmwi") [sub_resource type="StyleBoxTexture" id="StyleBoxTexture_44oc2"] -texture = ExtResource("5_mjmwi") +texture = ExtResource("6_5yqcp") + +[sub_resource type="StyleBoxTexture" id="StyleBoxTexture_losb8"] +texture = ExtResource("6_5yqcp") +texture_margin_left = 5.0 +texture_margin_top = 5.0 +texture_margin_right = 5.0 +texture_margin_bottom = 5.0 [sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_cnef1"] @@ -130,11 +141,25 @@ text = "1st Level" [node name="Button" type="Button" parent="VBoxContainer/HBoxContainer/first"] custom_minimum_size = Vector2(120, 80) layout_mode = 2 -theme_override_styles/focus = SubResource("StyleBoxTexture_mjmwi") -theme_override_styles/hover = SubResource("StyleBoxTexture_udeaf") -theme_override_styles/pressed = SubResource("StyleBoxTexture_5yqcp") +theme_override_styles/disabled = SubResource("StyleBoxTexture_cg1t8") +theme_override_styles/hover = SubResource("StyleBoxTexture_5yqcp") theme_override_styles/normal = SubResource("StyleBoxTexture_cg1t8") +[node name="TextureRect" type="TextureRect" parent="VBoxContainer/HBoxContainer/first/Button"] +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -20.0 +offset_top = -20.0 +offset_right = 20.0 +offset_bottom = 20.0 +grow_horizontal = 2 +grow_vertical = 2 +texture = ExtResource("6_udeaf") + [node name="Label2" type="Label" parent="VBoxContainer/HBoxContainer/first"] layout_mode = 2 size_flags_horizontal = 4 @@ -152,10 +177,24 @@ text = "2nd Level" [node name="Button" type="Button" parent="VBoxContainer/HBoxContainer/second"] custom_minimum_size = Vector2(120, 80) layout_mode = 2 -theme_override_styles/focus = SubResource("StyleBoxTexture_losb8") -theme_override_styles/hover = SubResource("StyleBoxTexture_rjq3w") -theme_override_styles/pressed = SubResource("StyleBoxTexture_uvrvw") -theme_override_styles/normal = SubResource("StyleBoxTexture_44oc2") +theme_override_styles/disabled = SubResource("StyleBoxTexture_rjq3w") +theme_override_styles/hover = SubResource("StyleBoxTexture_uvrvw") +theme_override_styles/normal = SubResource("StyleBoxTexture_hmthg") + +[node name="TextureRect" type="TextureRect" parent="VBoxContainer/HBoxContainer/second/Button"] +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -20.0 +offset_top = -20.0 +offset_right = 20.0 +offset_bottom = 20.0 +grow_horizontal = 2 +grow_vertical = 2 +texture = ExtResource("6_udeaf") [node name="Label2" type="Label" parent="VBoxContainer/HBoxContainer/second"] layout_mode = 2 @@ -174,11 +213,25 @@ text = "3rd Level" [node name="Button" type="Button" parent="VBoxContainer/HBoxContainer/third"] custom_minimum_size = Vector2(120, 80) layout_mode = 2 -theme_override_styles/focus = SubResource("StyleBoxTexture_losb8") -theme_override_styles/hover = SubResource("StyleBoxTexture_rjq3w") -theme_override_styles/pressed = SubResource("StyleBoxTexture_uvrvw") +theme_override_styles/disabled = SubResource("StyleBoxTexture_44oc2") +theme_override_styles/hover = SubResource("StyleBoxTexture_losb8") theme_override_styles/normal = SubResource("StyleBoxTexture_44oc2") +[node name="TextureRect" type="TextureRect" parent="VBoxContainer/HBoxContainer/third/Button"] +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -20.0 +offset_top = -20.0 +offset_right = 20.0 +offset_bottom = 20.0 +grow_horizontal = 2 +grow_vertical = 2 +texture = ExtResource("6_udeaf") + [node name="Label2" type="Label" parent="VBoxContainer/HBoxContainer/third"] layout_mode = 2 size_flags_horizontal = 4 diff --git a/Game/sidepanel.gd b/Game/sidepanel.gd index 7045b51..abfe588 100644 --- a/Game/sidepanel.gd +++ b/Game/sidepanel.gd @@ -195,15 +195,33 @@ func GameOver() -> void: get_node("GameOverAudio").play() func GameWon() -> void: - get_node("Panel").hide() - get_node("GameWon").show() - - map_scores[get_parent().get_parent().name] = int((lives / originallives) *10) - var file = FileAccess.open(save_path, FileAccess.WRITE) - file.store_var(map_scores) + get_node("Panel").hide() + get_node("GameWon").show() + + var map_name = get_parent().get_parent().name + var new_score = int((lives / originallives) * 10) + + var file + var old_scores = {} + + # Try to load old scores if file exists + if FileAccess.file_exists(save_path): + file = FileAccess.open(save_path, FileAccess.READ) + if not file.eof_reached(): + old_scores = file.get_var() file.close() - get_parent().get_parent().get_node("MusicPlayer").PauseAudio() - get_node("VictoryAudio").play() + + var old_score = old_scores.get(map_name, 0) + if new_score > old_score: + old_scores[map_name] = new_score + file = FileAccess.open(save_path, FileAccess.WRITE) + file.store_var(old_scores) + file.close() + + get_parent().get_parent().get_node("MusicPlayer").PauseAudio() + get_node("VictoryAudio").play() + + func _on_button_3_pressed() -> void: get_node("pausemenu").hide() diff --git a/Game/sidepanel.tscn b/Game/sidepanel.tscn index 368ad9b..6ee2030 100644 --- a/Game/sidepanel.tscn +++ b/Game/sidepanel.tscn @@ -72,7 +72,11 @@ shadow_size = 5 [sub_resource type="StyleBoxFlat" id="StyleBoxFlat_s7jra"] bg_color = Color(0.6, 0.6, 0.6, 0.392157) -border_color = Color(0, 0, 0, 1) +border_width_left = 20 +border_width_top = 20 +border_width_right = 20 +border_width_bottom = 20 +border_color = Color(0.6, 0.6, 0.6, 0.392157) corner_radius_top_left = 20 corner_radius_top_right = 20 corner_radius_bottom_right = 20