From d318add3750f33186f277ad8e8b0921388c9c210 Mon Sep 17 00:00:00 2001 From: Haze Weathers Date: Fri, 2 Jun 2023 20:57:11 -0400 Subject: [PATCH] can't have shit in Virginia --- autoloads/level_data.tscn | 18 +-- graphics/level_select/small_sg.png | Bin 0 -> 674 bytes graphics/level_select/small_sg.png.import | 35 +++++ graphics/level_select/world_map.png | Bin 0 -> 7285 bytes graphics/level_select/world_map.png.import | 35 +++++ graphics/level_select/world_map.xcf | Bin 0 -> 56509 bytes menus/level_select_scholar.gd | 90 +++++++++++++ menus/level_select_scholar.tscn | 147 +++++++++++++++++++++ objects/hud/pause_screen.gd | 3 +- project.godot | 2 +- 10 files changed, 319 insertions(+), 11 deletions(-) create mode 100644 graphics/level_select/small_sg.png create mode 100644 graphics/level_select/small_sg.png.import create mode 100644 graphics/level_select/world_map.png create mode 100644 graphics/level_select/world_map.png.import create mode 100644 graphics/level_select/world_map.xcf create mode 100644 menus/level_select_scholar.gd create mode 100644 menus/level_select_scholar.tscn diff --git a/autoloads/level_data.tscn b/autoloads/level_data.tscn index 9e1f0d5..7b3ae27 100644 --- a/autoloads/level_data.tscn +++ b/autoloads/level_data.tscn @@ -59,14 +59,6 @@ shard_titles = [ "Bone Climb", "Soul Graze", "Bow Happy Hellarcher", "Look out f save_id = "graveyard" scene = ExtResource( 11 ) -[sub_resource type="Resource" id=7] -resource_name = "Rust Inc." -script = ExtResource( 5 ) -title = "Rust Inc." -shard_titles = [ "Precarious Block", "Beside the button", "Saws and bullets", "Beyond the Steam", "5 Rainbow Stars", "Collection Bonus", "Time Bonus", "Life Bonus" ] -save_id = "rust" -scene = ExtResource( 9 ) - [sub_resource type="Resource" id=8] resource_name = "Police Station" script = ExtResource( 5 ) @@ -75,6 +67,14 @@ shard_titles = [ "All Cops Are Bastards", "Save Ms.X", "Treacherous Climb", "Dod save_id = "station" scene = ExtResource( 10 ) +[sub_resource type="Resource" id=7] +resource_name = "Rust Inc." +script = ExtResource( 5 ) +title = "Rust Inc." +shard_titles = [ "Precarious Block", "Beside the button", "Saws and bullets", "Beyond the Steam", "5 Rainbow Stars", "Collection Bonus", "Time Bonus", "Life Bonus" ] +save_id = "rust" +scene = ExtResource( 9 ) + [node name="LevelData" type="Node"] script = ExtResource( 1 ) -levels = [ SubResource( 1 ), SubResource( 2 ), SubResource( 4 ), SubResource( 6 ), SubResource( 3 ), SubResource( 9 ), SubResource( 7 ), SubResource( 8 ) ] +levels = [ SubResource( 1 ), SubResource( 2 ), SubResource( 4 ), SubResource( 6 ), SubResource( 3 ), SubResource( 9 ), SubResource( 8 ), SubResource( 7 ) ] diff --git a/graphics/level_select/small_sg.png b/graphics/level_select/small_sg.png new file mode 100644 index 0000000000000000000000000000000000000000..2739498bb7fd34ac962102b04ba2a778367a0a7f GIT binary patch literal 674 zcmV;T0$u%yP)EX>4Tx04R}tkv&MmKpe$iQ?()$1v`j1WN4l2q9Tr3g(6f4wL+^7CYOFelZGV4 z#ZhoAIQX$xb#QUk)xlK|1V2DrU7QqMq{ROvg%&X$9QWhhy~o`jaOdLUpBF+^o%8FP}9g75gcM}V()ah~OW?$6P$<}C&UMB-Uym^SeS@${x` zaNZ}5u#&72pA(OpbV1@rt}7nDaW1+n@XUyrNzW5Uh{a+DD;>;ArbawP991=)@`bF& zD(5ZETBXKX_v9}O=k=9kuG1Vv5{p=Z1Q7~qD5C-!aawg!ETm~a;o~21{Svtpa+Sfz zv4AQx$gUs!4}N!R6(%RVq;LZ0esP?S7!cY8nsvwdK6aeu2@re+uJpFQ+5l!gNw2rH z=n*im4P0EeHDwRD+yRE44B3=jDM(W&6oB_L`lcK(bPM#YdA+svaryvcsH@ZsaBv8W z6)Ah&=iR-Xz5RQp)!z?|M{==)wtUL~000JJOGiWig8+E|nneFtxBvhE32;bRa{vG? zBLDy{BLR4&KXw2B00(qQO+^Ri1_Bc^1P{6Zu>b%78FWQhbVF}#ZDnqB07G(RVRU6= zAa`kWXdp*PO;A^X4i^9b0DDP9K~xyiZH_Stg)kU{6Y&ynR0Kf>H|gqCdIMKirN`*@ z?$TN4;O;&0hKHr1nG*h=d?7MvF}gfmAOI9^$6RF|=)(UwdI%6*U~xl44@oyfYS?6P ztUG`iZPh(lie6@%WX4H~KJ7^e_LfaOps5G2w|pJ>IlqtQANz$TaC~6RRR91007*qo IM6N<$g3Ch`761SM literal 0 HcmV?d00001 diff --git a/graphics/level_select/small_sg.png.import b/graphics/level_select/small_sg.png.import new file mode 100644 index 0000000..89c353a --- /dev/null +++ b/graphics/level_select/small_sg.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/small_sg.png-1e404b8f0979e895a2dcca9c5f498c3c.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/level_select/small_sg.png" +dest_files=[ "res://.import/small_sg.png-1e404b8f0979e895a2dcca9c5f498c3c.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/level_select/world_map.png b/graphics/level_select/world_map.png new file mode 100644 index 0000000000000000000000000000000000000000..90cad2f2c221c7feec5e3e05a7a700886307a7cc GIT binary patch literal 7285 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 LG(eZD+lKxZ;NNfX literal 0 HcmV?d00001 diff --git a/graphics/level_select/world_map.png.import b/graphics/level_select/world_map.png.import new file mode 100644 index 0000000..dc5f7a1 --- /dev/null +++ b/graphics/level_select/world_map.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/world_map.png-c7670ec033333050c2cad389b5ebb694.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/level_select/world_map.png" +dest_files=[ "res://.import/world_map.png-c7670ec033333050c2cad389b5ebb694.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/level_select/world_map.xcf b/graphics/level_select/world_map.xcf new file mode 100644 index 0000000000000000000000000000000000000000..ffa90723cf04da50a4fb2438dd903e32b758f39a GIT binary patch literal 56509 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 literal 0 HcmV?d00001 diff --git a/menus/level_select_scholar.gd b/menus/level_select_scholar.gd new file mode 100644 index 0000000..0aebf2c --- /dev/null +++ b/menus/level_select_scholar.gd @@ -0,0 +1,90 @@ +extends Node + +export var travel_time: float = 1.0 + +var selected_level: int = 0 +var tween: SceneTreeTween = null +var hop_tween: SceneTreeTween = null + +onready var level_path: Path2D = $LevelPath +onready var player_position: PathFollow2D = $"%PlayerPosition" +onready var player_sprite: Sprite = $"%PlayerSprite" +onready var back_arrow: TextureRect = $"%BackArrow" +onready var level_title: Label = $"%LevelTitle" +onready var forward_arrow: TextureRect = $"%ForwardArrow" +onready var in_cave: PathFollow2D = $"%InCave" +onready var out_cave: PathFollow2D = $"%OutCave" + +func _ready() -> void: + Fade.fade_in(0.4) + Audio.ac_music.stop() + # set initial offset + LevelData.levels[selected_level].save_id + var target_level = level_path.get_node(LevelData.levels[selected_level].save_id) + if target_level != null: + player_position.offset = target_level.offset + _select_level(selected_level) + +func _input(event: InputEvent) -> void: + # load selected map + if Input.is_action_just_pressed("ui_accept"): + Game.current_level = selected_level + Game.change_map(LevelData.levels[selected_level].scene) + elif Input.is_action_just_pressed("ui_right"): + _select_level(int(clamp(selected_level + 1, 0, LevelData.levels.size() - 1))) + elif Input.is_action_just_pressed("ui_left"): + _select_level(int(clamp(selected_level - 1, 0, LevelData.levels.size() - 1))) + +func _process(delta: float) -> void: + # make SG disappear inside of cave + if player_position.offset >= in_cave.offset and player_position.offset <= out_cave.offset: + player_sprite.visible = false + else: + player_sprite.visible = true + +func _select_level(level_id: int) -> void: + var level = LevelData.levels[level_id] + selected_level = level_id + # hide arrows at edges of leve set + if level_id == 0: + back_arrow.modulate.a = 0.0 + else: + back_arrow.modulate.a = 1.0 + if level_id == LevelData.levels.size() - 1: + forward_arrow.modulate.a = 0.0 + else: + forward_arrow.modulate.a = 1.0 + # set text + level_title.text = level.title + # initiate animation + _travel_to_level(level.save_id) + +func _travel_to_level(level_name: String) -> void: + # get path offset of target level + var target_level = level_path.get_node(level_name) + if target_level != null: + if target_level.offset < player_position.offset: + player_sprite.flip_h = true + else: + player_sprite.flip_h = false + # kill existing tweens if exist + if tween != null: + tween.kill() + if hop_tween != null: + hop_tween.kill() + player_sprite.position.y = -2.0 + + # hopping animation + hop_tween = create_tween().set_loops() + hop_tween.tween_property(player_sprite, "position:y", -4.0, 0.0) + hop_tween.tween_interval(0.1) + hop_tween.tween_property(player_sprite, "position:y", -2.0, 0.0) + hop_tween.tween_interval(0.1) + + # travel animation + tween = create_tween() + # go to target offset + tween.tween_property(player_position, "offset", target_level.offset, travel_time) + # kill other animation + tween.tween_callback(hop_tween, "kill") + tween.tween_property(player_sprite, "position:y", -2.0, 0.0) diff --git a/menus/level_select_scholar.tscn b/menus/level_select_scholar.tscn new file mode 100644 index 0000000..ad4e18a --- /dev/null +++ b/menus/level_select_scholar.tscn @@ -0,0 +1,147 @@ +[gd_scene load_steps=11 format=2] + +[ext_resource path="res://menus/level_select_scholar.gd" type="Script" id=1] +[ext_resource path="res://graphics/level_select/world_map.png" type="Texture" id=2] +[ext_resource path="res://graphics/level_select/small_sg.png" type="Texture" id=3] +[ext_resource path="res://ui/theme.tres" type="Theme" id=4] +[ext_resource path="res://graphics/hud/pause_arrow.png" type="Texture" id=5] +[ext_resource path="res://ui/2ndpuberty_outline.tres" type="Material" id=6] +[ext_resource path="res://shaders/wibble_wobble.gdshader" type="Shader" id=7] + +[sub_resource type="Curve2D" id=1] +_data = { +"points": PoolVector2Array( -2.9375, -8.1875, 2.9375, 8.1875, 61, 140, -4.4375, -0.0625, 4.4375, 0.0625, 78, 149, -4.15425, 1.32583, 4.15425, -1.32583, 96, 148, -1.65424, 3.52941, 1.65424, -3.52941, 112, 142, -1.88775, 1.4748, 1.88775, -1.4748, 113, 134, 0, 0, 0, 0, 119, 134, -1.08543, 0.828444, 1.08543, -0.828444, 125, 134, 2.83044, 1.16526, -2.83044, -1.16526, 125, 128, -0.794597, 4.50272, 0.794597, -4.50272, 123, 106, -4.30959, 1.47157, 4.30959, -1.47157, 130, 93, -11.05, -1.311, 11.05, 1.311, 141, 96, -1.31102, 2.24746, 1.31102, -2.24746, 155, 99, -2.22725, 4.12041, 2.22725, -4.12041, 162, 84, -4.89994, 0, 4.89994, 0, 172, 75, 0, -4.73004, 0, 4.73004, 184, 88, 0, -4.51982, 0, 4.51982, 177, 100, -3.88915, 0.630672, 3.88915, -0.630672, 185, 107, -0.630672, -4.62493, 0.630672, 4.62493, 192, 118, 1.05112, -1.99713, -1.05112, 1.99713, 190, 128, 2.6278, -0.420448, -2.6278, 0.420448, 184, 132, 1.78381, -1.78381, -1.78381, 1.78381, 175, 132, -6.30672, -0.210224, 6.30672, 0.210224, 181, 137, 0.52556, 6.83228, -0.52556, -6.83228, 204, 130 ) +} + +[sub_resource type="ShaderMaterial" id=2] +shader = ExtResource( 7 ) +shader_param/speed = Vector2( 4, 0 ) +shader_param/ammount = Vector2( 2, 0 ) +shader_param/offset = Vector2( 0, 0 ) +shader_param/delay = Vector2( 0, 0 ) + +[sub_resource type="ShaderMaterial" id=3] +shader = ExtResource( 7 ) +shader_param/speed = Vector2( 4, 0 ) +shader_param/ammount = Vector2( 2, 0 ) +shader_param/offset = Vector2( 0, 0 ) +shader_param/delay = Vector2( 4, 0 ) + +[node name="LevelSelect" type="Node"] +script = ExtResource( 1 ) + +[node name="WorldMap" type="TextureRect" parent="."] +margin_right = 40.0 +margin_bottom = 40.0 +texture = ExtResource( 2 ) + +[node name="LevelPath" type="Path2D" parent="."] +curve = SubResource( 1 ) + +[node name="PlayerPosition" type="PathFollow2D" parent="LevelPath"] +unique_name_in_owner = true +position = Vector2( 61, 140 ) +rotate = false + +[node name="PlayerSprite" type="Sprite" parent="LevelPath/PlayerPosition"] +unique_name_in_owner = true +position = Vector2( 0, -2 ) +texture = ExtResource( 3 ) + +[node name="hills" type="PathFollow2D" parent="LevelPath"] +position = Vector2( 61, 140 ) +rotation = 1.04814 + +[node name="canopy" type="PathFollow2D" parent="LevelPath"] +position = Vector2( 89.5314, 148.93 ) +rotation = -0.105869 +offset = 32.0 + +[node name="mountain" type="PathFollow2D" parent="LevelPath"] +position = Vector2( 111.481, 142.765 ) +rotation = -1.37064 +offset = 55.0 + +[node name="boss1" type="PathFollow2D" parent="LevelPath"] +position = Vector2( 118.615, 133.912 ) +rotation = 0.140896 +offset = 69.0 + +[node name="cave" type="PathFollow2D" parent="LevelPath"] +position = Vector2( 126.41, 129.495 ) +rotation = -2.19952 +offset = 80.0 + +[node name="InCave" type="PathFollow2D" parent="LevelPath"] +unique_name_in_owner = true +position = Vector2( 124.058, 126.26 ) +rotation = -1.85459 +offset = 84.0 + +[node name="OutCave" type="PathFollow2D" parent="LevelPath"] +unique_name_in_owner = true +position = Vector2( 139.8, 95.8421 ) +rotation = 0.144373 +offset = 130.0 + +[node name="abyss" type="PathFollow2D" parent="LevelPath"] +position = Vector2( 154.261, 99.6526 ) +rotation = -1.01682 +offset = 145.0 + +[node name="graveyard" type="PathFollow2D" parent="LevelPath"] +position = Vector2( 171.416, 75.085 ) +rotation = 0.234945 +offset = 176.0 + +[node name="station" type="PathFollow2D" parent="LevelPath"] +position = Vector2( 181.076, 106.194 ) +rotation = 0.297386 +offset = 217.0 + +[node name="rust" type="PathFollow2D" parent="LevelPath"] +position = Vector2( 177.983, 131.216 ) +rotation = 2.36539 +offset = 258.0 + +[node name="lab" type="PathFollow2D" parent="LevelPath"] +position = Vector2( 204, 130 ) +offset = 300.0 + +[node name="CurrentLevel" type="HBoxContainer" parent="."] +anchor_right = 1.0 +margin_bottom = 16.0 +alignment = 1 + +[node name="BackArrow" type="TextureRect" parent="CurrentLevel"] +unique_name_in_owner = true +material = SubResource( 2 ) +margin_left = 72.0 +margin_top = 4.0 +margin_right = 78.0 +margin_bottom = 12.0 +size_flags_vertical = 4 +texture = ExtResource( 5 ) +flip_h = true + +[node name="LevelTitle" type="Label" parent="CurrentLevel"] +unique_name_in_owner = true +material = ExtResource( 6 ) +margin_left = 82.0 +margin_top = 3.0 +margin_right = 173.0 +margin_bottom = 13.0 +theme = ExtResource( 4 ) +text = "Verdant Hills" +align = 1 +valign = 1 + +[node name="ForwardArrow" type="TextureRect" parent="CurrentLevel"] +unique_name_in_owner = true +material = SubResource( 3 ) +margin_left = 177.0 +margin_top = 4.0 +margin_right = 183.0 +margin_bottom = 12.0 +size_flags_vertical = 4 +texture = ExtResource( 5 ) diff --git a/objects/hud/pause_screen.gd b/objects/hud/pause_screen.gd index b9a0da4..0b2ebfd 100644 --- a/objects/hud/pause_screen.gd +++ b/objects/hud/pause_screen.gd @@ -40,7 +40,8 @@ func _on_Settings_pressed(): func _on_ExitLevel_pressed(): get_tree().paused = false - Game.change_map(load("res://maps/level_select.tscn")) + Game.change_map(load("res://menus/level_select_scholar.tscn")) + yield(Fade, "fade_finished") queue_free() diff --git a/project.godot b/project.godot index 22e7337..3719b4c 100644 --- a/project.godot +++ b/project.godot @@ -63,7 +63,7 @@ _global_script_class_icons={ [application] config/name="Robobong" -run/main_scene="res://maps/level_select.tscn" +run/main_scene="res://menus/level_select_scholar.tscn" config/use_custom_user_dir=true config/custom_user_dir_name="heromark2" config/icon="res://icon.png"