diff --git a/assets/blobby/blobby-spritesheet.png b/assets/blobby/blobby-spritesheet.png new file mode 100644 index 0000000..fc56c07 Binary files /dev/null and b/assets/blobby/blobby-spritesheet.png differ diff --git a/assets/blobby/blobby-spritesheet.png.import b/assets/blobby/blobby-spritesheet.png.import new file mode 100644 index 0000000..0bcedc0 --- /dev/null +++ b/assets/blobby/blobby-spritesheet.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/blobby-spritesheet.png-205c8efc79bec685345a637ed2dcfc9b.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/blobby/blobby-spritesheet.png" +dest_files=[ "res://.import/blobby-spritesheet.png-205c8efc79bec685345a637ed2dcfc9b.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=false +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=false +svg/scale=1.0 diff --git a/assets/blobby/blobby-spritesheett.aseprite b/assets/blobby/blobby-spritesheett.aseprite index 4e44bf8..704cc2f 100644 Binary files a/assets/blobby/blobby-spritesheett.aseprite and b/assets/blobby/blobby-spritesheett.aseprite differ diff --git a/assets/contraption/Coin.gd b/assets/contraption/Coin.gd index 20ac5d0..c12cf73 100644 --- a/assets/contraption/Coin.gd +++ b/assets/contraption/Coin.gd @@ -5,6 +5,6 @@ onready var anim_player: AnimationPlayer = get_node("AnimationPlayer") export var scoreValue: = 100 func _on_body_entered(body: Node) -> void: - PlayerData.score += scoreValue + GlobalData.score += scoreValue anim_player.play("fade_out") queue_free() diff --git a/assets/environment/background/asteroids.png b/assets/environment/background/asteroids.png new file mode 100644 index 0000000..be8b35f Binary files /dev/null and b/assets/environment/background/asteroids.png differ diff --git a/assets/environment/background/asteroids.png.import b/assets/environment/background/asteroids.png.import new file mode 100644 index 0000000..6faf691 --- /dev/null +++ b/assets/environment/background/asteroids.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/asteroids.png-6d2b9726b496c4691448df35794a6849.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/environment/background/asteroids.png" +dest_files=[ "res://.import/asteroids.png-6d2b9726b496c4691448df35794a6849.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=false +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=false +svg/scale=1.0 diff --git a/assets/environment/background/space.aseprite b/assets/environment/background/space.aseprite new file mode 100644 index 0000000..daee028 Binary files /dev/null and b/assets/environment/background/space.aseprite differ diff --git a/assets/environment/background/space.png b/assets/environment/background/space.png new file mode 100644 index 0000000..8c2ab45 Binary files /dev/null and b/assets/environment/background/space.png differ diff --git a/assets/environment/background/space.png.import b/assets/environment/background/space.png.import new file mode 100644 index 0000000..12cfb46 --- /dev/null +++ b/assets/environment/background/space.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/space.png-2bc3b8e0798271df8499baa94973b7e7.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/environment/background/space.png" +dest_files=[ "res://.import/space.png-2bc3b8e0798271df8499baa94973b7e7.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=false +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=false +svg/scale=1.0 diff --git a/assets/environment/decor/Beispiel-Busch.aseprite.import b/assets/environment/decor/Beispiel-Busch.aseprite.import new file mode 100644 index 0000000..78ef18b --- /dev/null +++ b/assets/environment/decor/Beispiel-Busch.aseprite.import @@ -0,0 +1,26 @@ +[remap] + +importer="aseprite.wizard.plugin" +type="SpriteFrames" +path="res://.import/Beispiel-Busch.aseprite-e4b7724fea18978e42f11f3729f9d1a8.res" + +[deps] + +source_file="res://assets/environment/decor/Beispiel-Busch.aseprite" +dest_files=[ "res://.import/Beispiel-Busch.aseprite-e4b7724fea18978e42f11f3729f9d1a8.res" ] + +[params] + +split_layers=false +exclude_layers_pattern="" +only_visible_layers=false +sheet_type="Packed" +sprite_filename_pattern="{basename}.{layer}.{extension}" +texture_strip/import_texture_strip=false +texture_strip/filename_pattern="{basename}.{layer}.Strip.{extension}" +texture_atlas/import_texture_atlas=false +texture_atlas/filename_pattern="{basename}.{layer}.Atlas.{extension}" +texture_atlas/frame_filename_pattern="{basename}.{layer}.{animation}.{frame}.Atlas.{extension}" +animated_texture/import_animated_texture=false +animated_texture/filename_pattern="{basename}.{layer}.{animation}.Texture.{extension}" +animated_texture/frame_filename_pattern="{basename}.{layer}.{animation}.{frame}.Texture.{extension}" diff --git a/assets/environment/decor/bent_straw_2.aseprite.import b/assets/environment/decor/bent_straw_2.aseprite.import new file mode 100644 index 0000000..cc7afdf --- /dev/null +++ b/assets/environment/decor/bent_straw_2.aseprite.import @@ -0,0 +1,26 @@ +[remap] + +importer="aseprite.wizard.plugin" +type="SpriteFrames" +path="res://.import/bent_straw_2.aseprite-533c943446b43f78ec49a9f7e64d2cbb.res" + +[deps] + +source_file="res://assets/environment/decor/bent_straw_2.aseprite" +dest_files=[ "res://.import/bent_straw_2.aseprite-533c943446b43f78ec49a9f7e64d2cbb.res" ] + +[params] + +split_layers=false +exclude_layers_pattern="" +only_visible_layers=false +sheet_type="Packed" +sprite_filename_pattern="{basename}.{layer}.{extension}" +texture_strip/import_texture_strip=false +texture_strip/filename_pattern="{basename}.{layer}.Strip.{extension}" +texture_atlas/import_texture_atlas=false +texture_atlas/filename_pattern="{basename}.{layer}.Atlas.{extension}" +texture_atlas/frame_filename_pattern="{basename}.{layer}.{animation}.{frame}.Atlas.{extension}" +animated_texture/import_animated_texture=false +animated_texture/filename_pattern="{basename}.{layer}.{animation}.Texture.{extension}" +animated_texture/frame_filename_pattern="{basename}.{layer}.{animation}.{frame}.Texture.{extension}" diff --git a/project.godot b/project.godot index fe407cd..c851910 100644 --- a/project.godot +++ b/project.godot @@ -38,13 +38,13 @@ _global_script_class_icons={ [application] -config/name="Wumper" +config/name="Blobby" run/main_scene="res://src/UserInterface/Screens/MainScreen.tscn" config/icon="res://icon.png" [autoload] -PlayerData="*res://src/Autoload/PlayerData.tscn" +GlobalData="*res://src/Autoload/GlobalData.tscn" [debug] @@ -68,6 +68,7 @@ enabled=PoolStringArray( "res://addons/AsepriteWizard/plugin.cfg" ) window=false grav=false layer=false +viewport=true [importer_defaults] diff --git a/src/Actors/Blobby/Blobby.gd b/src/Actors/Blobby/Blobby.gd index 8a80fe4..0425e57 100644 --- a/src/Actors/Blobby/Blobby.gd +++ b/src/Actors/Blobby/Blobby.gd @@ -1,16 +1,20 @@ + extends Player const PhysicsFunc = preload("res://src/Utilities/Physic/PhysicsFunc.gd") export var jump_buffer_filled := false #TODO Switch to new unique node name method for referencing onready var left_wall_raycasts = $WallRaycasts/LeftWallRaycast onready var right_wall_raycasts = $WallRaycasts/RightWallRaycast +onready var ground_raycasts = $GroundRaycasts onready var player_state_machine = $BlobbyStateMachine onready var init_boost = player_state_machine.init_boost onready var init_boost_type = player_state_machine.init_boost_type onready var effect_player = $BlobbyActionEffects/AnimationPlayer var wall_touch_direction = 1 + var stomping = false +var floor_angle = Vector2(0,0) # When the Enemy stomp AREA enters the enemy collision area -> stomp func _on_BlobbySkin_area_entered(area: Area2D) -> void: @@ -351,33 +355,17 @@ func execute_airstrafe( air_strafe_charges -= 1 return linear_velocity - func execute_movement() -> void: - print(get_floor_angle()) - if is_equal_approx(get_floor_angle(), 0): - print("slide") - velocity = move_and_slide(velocity, FLOOR_NORMAL,true, 4, 0.785398,false) - else: - print("snap") - velocity = move_and_slide_with_snap(velocity, Vector2.DOWN, FLOOR_NORMAL) - if is_on_floor(): - pass - #rotate_to_ground() - - - -func rotate_to_ground() -> void: - rotation = -get_floor_angle(FLOOR_NORMAL) + velocity = move_and_slide(velocity, FLOOR_NORMAL,true, 4, 0.785398,false) +#TODO Limit movement func die() -> void: z_index = 1 - $BlobbyCam.position = position - $BlobbyCam/AnimationPlayer.play("deathCam") + GlobalData.is_dead = true + GlobalData.deaths += 1 $BlobbySprite/AnimationTree.active = false - $BlobbySprite/BlobbymationPlayer.play("dying") - PlayerData.is_dead = true - PlayerData.deaths += 1 + $BlobbySprite/BlobbymationPlayer.play("dying3") func respawn() -> void: get_tree().reload_current_scene() diff --git a/src/Actors/Blobby/Blobby.tscn b/src/Actors/Blobby/Blobby.tscn index 76c688d..60272b5 100644 --- a/src/Actors/Blobby/Blobby.tscn +++ b/src/Actors/Blobby/Blobby.tscn @@ -1,7 +1,6 @@ -[gd_scene load_steps=115 format=2] +[gd_scene load_steps=114 format=2] [ext_resource path="res://assets/blobby/blobby-effects-spritesheet.png" type="Texture" id=1] -[ext_resource path="res://src/Actors/Blobby/BlobbyCam.gd" type="Script" id=2] [ext_resource path="res://src/Actors/Blobby/BlobbyStateMachine.gd" type="Script" id=3] [ext_resource path="res://src/Actors/Blobby/Blobby.gd" type="Script" id=4] [ext_resource path="res://assets/meta/new_dynamicfont.tres" type="DynamicFont" id=5] @@ -10,7 +9,7 @@ extents = Vector2( 14.9127, 5.98593 ) [sub_resource type="StreamTexture" id=62] -load_path = "res://.import/blobby-spritesheett.png-31ad471e3ad73a5f4a303e582c829ff7.stex" +load_path = "res://.import/blobby-spritesheet.png-205c8efc79bec685345a637ed2dcfc9b.stex" [sub_resource type="AnimationNodeAnimation" id=126] animation = "duckTurn" @@ -284,7 +283,7 @@ states/wallsliding/node = SubResource( 96 ) states/wallsliding/position = Vector2( 1795.54, 493.009 ) transitions = [ "falling", "wallsliding", SubResource( 138 ), "wallsliding", "idling", SubResource( 139 ), "wallsliding", "wallslideToJump", SubResource( 140 ), "wallslideToJump", "jumping", SubResource( 141 ), "idling", "jumping", SubResource( 147 ), "runToJump", "jumping", SubResource( 148 ), "ducking", "jumping", SubResource( 149 ), "jumping", "jumpToFall", SubResource( 150 ), "jumpToFall", "falling", SubResource( 151 ), "ducking", "duckTurn", SubResource( 152 ), "duckTurn", "ducking", SubResource( 153 ), "falling", "ducking", SubResource( 154 ), "ducking", "falling", SubResource( 155 ), "ducking", "walking", SubResource( 156 ), "walking", "ducking", SubResource( 157 ), "idling", "ducking", SubResource( 158 ), "ducking", "idling", SubResource( 159 ), "ducking", "running", SubResource( 160 ), "running", "ducking", SubResource( 161 ), "running", "falling", SubResource( 162 ), "falling", "running", SubResource( 163 ), "walking", "falling", SubResource( 164 ), "falling", "walking", SubResource( 165 ), "falling", "idling", SubResource( 166 ), "idling", "walking", SubResource( 167 ), "walking", "idling", SubResource( 168 ), "walking", "turnToRun", SubResource( 169 ), "turnToRun", "walking", SubResource( 170 ), "running", "turnToRun", SubResource( 171 ), "turnToRun", "running", SubResource( 172 ), "idling", "idleTurn", SubResource( 173 ), "walking", "idleTurn", SubResource( 174 ), "idleTurn", "walking", SubResource( 175 ), "idling", "turnToRun", SubResource( 176 ), "turnToRun", "idling", SubResource( 177 ), "running", "runToJump", SubResource( 178 ), "wallsliding", "falling", SubResource( 137 ) ] start_node = "idling" -graph_offset = Vector2( 1113.54, -70.991 ) +graph_offset = Vector2( 1041.54, -349.991 ) [sub_resource type="AnimationNodeStateMachinePlayback" id=48] @@ -1094,6 +1093,36 @@ tracks/0/keys = { "values": [ 30 ] } +[sub_resource type="Animation" id=187] +resource_name = "dying2" +tracks/0/type = "value" +tracks/0/path = NodePath(".:frame") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ 31 ] +} + +[sub_resource type="Animation" id=188] +resource_name = "dying3" +tracks/0/type = "value" +tracks/0/path = NodePath(".:frame") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ 32 ] +} + [sub_resource type="Animation" id=6] length = 0.1 loop = true @@ -4408,207 +4437,6 @@ tracks/2/keys = { "values": [ Vector2( -1, 1 ) ] } -[sub_resource type="Animation" id=185] -length = 0.001 -tracks/0/type = "value" -tracks/0/path = NodePath(".:zoom") -tracks/0/interp = 1 -tracks/0/loop_wrap = true -tracks/0/imported = false -tracks/0/enabled = true -tracks/0/keys = { -"times": PoolRealArray( 0 ), -"transitions": PoolRealArray( 1 ), -"update": 0, -"values": [ Vector2( 0.75, 0.75 ) ] -} -tracks/1/type = "value" -tracks/1/path = NodePath(".:limit_left") -tracks/1/interp = 1 -tracks/1/loop_wrap = true -tracks/1/imported = false -tracks/1/enabled = true -tracks/1/keys = { -"times": PoolRealArray( 0 ), -"transitions": PoolRealArray( 1 ), -"update": 0, -"values": [ -10000000 ] -} -tracks/2/type = "value" -tracks/2/path = NodePath(".:limit_top") -tracks/2/interp = 1 -tracks/2/loop_wrap = true -tracks/2/imported = false -tracks/2/enabled = true -tracks/2/keys = { -"times": PoolRealArray( 0 ), -"transitions": PoolRealArray( 1 ), -"update": 0, -"values": [ -10000000 ] -} -tracks/3/type = "value" -tracks/3/path = NodePath(".:limit_right") -tracks/3/interp = 1 -tracks/3/loop_wrap = true -tracks/3/imported = false -tracks/3/enabled = true -tracks/3/keys = { -"times": PoolRealArray( 0 ), -"transitions": PoolRealArray( 1 ), -"update": 0, -"values": [ 10000000 ] -} -tracks/4/type = "value" -tracks/4/path = NodePath(".:limit_bottom") -tracks/4/interp = 1 -tracks/4/loop_wrap = true -tracks/4/imported = false -tracks/4/enabled = true -tracks/4/keys = { -"times": PoolRealArray( 0 ), -"transitions": PoolRealArray( 1 ), -"update": 0, -"values": [ 10000000 ] -} -tracks/5/type = "value" -tracks/5/path = NodePath(".:rotating") -tracks/5/interp = 1 -tracks/5/loop_wrap = true -tracks/5/imported = false -tracks/5/enabled = true -tracks/5/keys = { -"times": PoolRealArray( 0 ), -"transitions": PoolRealArray( 1 ), -"update": 0, -"values": [ true ] -} -tracks/6/type = "value" -tracks/6/path = NodePath(".:rotation_degrees") -tracks/6/interp = 1 -tracks/6/loop_wrap = true -tracks/6/imported = false -tracks/6/enabled = true -tracks/6/keys = { -"times": PoolRealArray( 0 ), -"transitions": PoolRealArray( 1 ), -"update": 0, -"values": [ 0.0 ] -} -tracks/7/type = "value" -tracks/7/path = NodePath(".:position") -tracks/7/interp = 1 -tracks/7/loop_wrap = true -tracks/7/imported = false -tracks/7/enabled = true -tracks/7/keys = { -"times": PoolRealArray( 0 ), -"transitions": PoolRealArray( 1 ), -"update": 0, -"values": [ Vector2( 0, 0 ) ] -} - -[sub_resource type="Animation" id=186] -resource_name = "deathCam" -length = 3.0 -tracks/0/type = "value" -tracks/0/path = NodePath(".:zoom") -tracks/0/interp = 1 -tracks/0/loop_wrap = true -tracks/0/imported = false -tracks/0/enabled = true -tracks/0/keys = { -"times": PoolRealArray( 0, 2.5 ), -"transitions": PoolRealArray( 1, 0.5 ), -"update": 0, -"values": [ Vector2( 0.75, 0.75 ), Vector2( 0.002, 0.002 ) ] -} -tracks/1/type = "value" -tracks/1/path = NodePath(".:limit_left") -tracks/1/interp = 1 -tracks/1/loop_wrap = true -tracks/1/imported = false -tracks/1/enabled = true -tracks/1/keys = { -"times": PoolRealArray( 0 ), -"transitions": PoolRealArray( 1 ), -"update": 1, -"values": [ -10000000 ] -} -tracks/2/type = "value" -tracks/2/path = NodePath(".:limit_top") -tracks/2/interp = 1 -tracks/2/loop_wrap = true -tracks/2/imported = false -tracks/2/enabled = true -tracks/2/keys = { -"times": PoolRealArray( 0 ), -"transitions": PoolRealArray( 1 ), -"update": 1, -"values": [ -10000000 ] -} -tracks/3/type = "value" -tracks/3/path = NodePath(".:limit_right") -tracks/3/interp = 1 -tracks/3/loop_wrap = true -tracks/3/imported = false -tracks/3/enabled = true -tracks/3/keys = { -"times": PoolRealArray( 0 ), -"transitions": PoolRealArray( 1 ), -"update": 1, -"values": [ 10000000 ] -} -tracks/4/type = "value" -tracks/4/path = NodePath(".:limit_bottom") -tracks/4/interp = 1 -tracks/4/loop_wrap = true -tracks/4/imported = false -tracks/4/enabled = true -tracks/4/keys = { -"times": PoolRealArray( 0 ), -"transitions": PoolRealArray( 1 ), -"update": 1, -"values": [ 10000000 ] -} -tracks/5/type = "value" -tracks/5/path = NodePath(".:rotation_degrees") -tracks/5/interp = 1 -tracks/5/loop_wrap = true -tracks/5/imported = false -tracks/5/enabled = true -tracks/5/keys = { -"times": PoolRealArray( 0, 2.5 ), -"transitions": PoolRealArray( 1, 1 ), -"update": 0, -"values": [ 0.0, 360.0 ] -} -tracks/6/type = "value" -tracks/6/path = NodePath(".:position") -tracks/6/interp = 1 -tracks/6/loop_wrap = true -tracks/6/imported = false -tracks/6/enabled = true -tracks/6/keys = { -"times": PoolRealArray( 0 ), -"transitions": PoolRealArray( 1 ), -"update": 0, -"values": [ Vector2( 0, -4 ) ] -} -tracks/7/type = "method" -tracks/7/path = NodePath("..") -tracks/7/interp = 1 -tracks/7/loop_wrap = true -tracks/7/imported = false -tracks/7/enabled = true -tracks/7/keys = { -"times": PoolRealArray( 3 ), -"transitions": PoolRealArray( 1 ), -"values": [ { -"args": [ ], -"method": "respawn" -} ] -} - [node name="Blobby" type="KinematicBody2D" groups=["player"]] collision_mask = 248 collision/safe_margin = 0.001 @@ -4664,6 +4492,8 @@ anims/duckTurn = SubResource( 68 ) anims/ducking = SubResource( 69 ) anims/duckingLeft = SubResource( 107 ) anims/dying = SubResource( 184 ) +anims/dying2 = SubResource( 187 ) +anims/dying3 = SubResource( 188 ) anims/falling = SubResource( 6 ) anims/fallingLeft = SubResource( 106 ) anims/idleTurn = SubResource( 70 ) @@ -4711,27 +4541,11 @@ frame = 8 position = Vector2( 0.0392303, -10.002 ) shape = SubResource( 1 ) -[node name="BlobbyCam" type="Camera2D" parent="."] -rotating = true -current = true -zoom = Vector2( 0.75, 0.75 ) -drag_margin_h_enabled = true -drag_margin_v_enabled = true -drag_margin_left = 0.05 -drag_margin_top = 0.05 -drag_margin_right = 0.05 -drag_margin_bottom = 0.05 -editor_draw_screen = false -script = ExtResource( 2 ) - -[node name="ShiftTween" type="Tween" parent="BlobbyCam"] - -[node name="AnimationPlayer" type="AnimationPlayer" parent="BlobbyCam"] -anims/RESET = SubResource( 185 ) -anims/deathCam = SubResource( 186 ) - [node name="BlobbyStateMachine" type="Node" parent="."] script = ExtResource( 3 ) +coyote_hanging = null +init_boost = null +init_boost_type = null [node name="JumpBufferTimer" type="Timer" parent="BlobbyStateMachine"] wait_time = 0.067 @@ -4747,7 +4561,8 @@ margin_left = -37.0 margin_top = -44.0 margin_right = 36.0 margin_bottom = -30.0 -custom_colors/font_color = Color( 0, 0, 0, 1 ) +custom_colors/font_color = Color( 1, 1, 1, 1 ) +custom_colors/font_outline_modulate = Color( 0, 0, 0, 1 ) custom_fonts/font = ExtResource( 5 ) text = "Ihre Werbung" align = 1 @@ -4786,6 +4601,21 @@ exclude_parent = false cast_to = Vector2( 1.5, 0 ) collision_mask = 56 +[node name="GroundRaycasts" type="Node2D" parent="."] +position = Vector2( 0, -1 ) + +[node name="Groundcast2" type="RayCast2D" parent="GroundRaycasts"] +position = Vector2( 14, 0 ) +enabled = true +cast_to = Vector2( 0, 10 ) +collision_mask = 56 + +[node name="Groundcast3" type="RayCast2D" parent="GroundRaycasts"] +position = Vector2( -12, 0 ) +enabled = true +cast_to = Vector2( 0, 10 ) +collision_mask = 56 + [connection signal="area_entered" from="BlobbySkin" to="." method="_on_BlobbySkin_area_entered"] [connection signal="body_entered" from="BlobbySkin" to="." method="_on_BlobbySkin_body_entered"] [connection signal="got_grounded" from="BlobbyStateMachine" to="." method="_on_Blobby_got_grounded"] diff --git a/src/Actors/Blobby/BlobbyCam.gd b/src/Actors/Blobby/BlobbyCam.gd index 10ebe11..54d5268 100644 --- a/src/Actors/Blobby/BlobbyCam.gd +++ b/src/Actors/Blobby/BlobbyCam.gd @@ -5,33 +5,41 @@ var vertical_facing = 0 var camera_horizontal_shift = 70 var camera_vertical_shift = 90 -onready var prev_camera_pos = get_camera_position() onready var tween = $ShiftTween onready var original_x_zoom = zoom.x onready var original_y_zoom = zoom.y +onready var blobby = get_node("%Blobby") +onready var prev_camera_pos # Gets the camera limits from the tilemap of the level # Requires "TileMap" to be a sibling of blobby func _ready(): _set_boundaries() + self.position = blobby.global_position + prev_camera_pos = get_camera_screen_center() func _physics_process(_delta: float) -> void: - if(!PlayerData.is_dead): + if(!GlobalData.is_dead): _adapt_to_movement() - prev_camera_pos = get_camera_position() + #TODO Do this via a event + else: + self.position = blobby.global_position + _death_cam() + prev_camera_pos = get_camera_screen_center() func _set_boundaries(): # This is ok, because it only happens on initialization # But it is also quite fickle - var tilemap = get_node("../../TileMap") + var tilemap = get_node("../TileMap") # TODO This goes wrong when overwriting old tiles with new sprites # New pngs -> completely new tiles and rebuild map var rect = tilemap.get_used_rect() var cell_size = tilemap.cell_size - limit_right = rect.end.x * cell_size.x - limit_left = rect.position.x * cell_size.x - limit_top = rect.position.y * cell_size.y - limit_bottom = rect.end.y * cell_size.y + limit_right = rect.end.x * cell_size.x - camera_horizontal_shift + limit_left = rect.position.x * cell_size.x + camera_horizontal_shift + # TODO When vertical scrolling is fixed + limit_top = rect.position.y * cell_size.y #+ camera_vertical_shift + limit_bottom = rect.end.y * cell_size.y #- camera_vertical_shift var screen_size = get_viewport_rect() var h_pixels = limit_right - limit_left var v_pixels = limit_bottom - limit_top @@ -49,7 +57,7 @@ func _adapt_to_movement(): var target_offset: Vector2 = Vector2(0,0) var tween_v = false var tween_h = false - var new_h_facing = sign(get_camera_position().x - prev_camera_pos.x) + var new_h_facing = sign(get_camera_screen_center().x - prev_camera_pos.x) if new_h_facing != 0 && horizontal_facing != new_h_facing: horizontal_facing = new_h_facing target_offset.x = camera_horizontal_shift * horizontal_facing @@ -66,14 +74,16 @@ func _adapt_to_movement(): #TODO Motion may be too complex tween.interpolate_property( self, - "transform:origin", - self.transform.origin, + "offset", + offset, target_offset, 1.2, Tween.TRANS_SINE, Tween.EASE_OUT ) tween.start() + self.position = blobby.global_position func _death_cam(): - pass \ No newline at end of file + $AnimationPlayer.play("deathCam") + #TODO Animation not always centered diff --git a/src/Actors/Blobby/BlobbyStateMachine.gd b/src/Actors/Blobby/BlobbyStateMachine.gd index 48928cd..3701966 100644 --- a/src/Actors/Blobby/BlobbyStateMachine.gd +++ b/src/Actors/Blobby/BlobbyStateMachine.gd @@ -25,7 +25,7 @@ func _ready(): add_state("fall") add_state("wallslide") state = states.idle - PlayerData.is_dead = false + GlobalData.is_dead = false set_state(states.idle) diff --git a/src/Actors/Enemies/Beings/DartingEnemy.gd b/src/Actors/Enemies/Beings/DartingEnemy.gd index 754f78e..eb6319d 100644 --- a/src/Actors/Enemies/Beings/DartingEnemy.gd +++ b/src/Actors/Enemies/Beings/DartingEnemy.gd @@ -30,7 +30,7 @@ func player_on_floor_direction(): func die() -> void: queue_free() - PlayerData.score += score + GlobalData.score += score func _on_EnemySkin_area_entered(area:Area2D) -> void: if area.is_in_group("harmful"): diff --git a/src/Actors/Enemies/Beings/Enemy.gd b/src/Actors/Enemies/Beings/Enemy.gd index 35d2aae..ccfe834 100644 --- a/src/Actors/Enemies/Beings/Enemy.gd +++ b/src/Actors/Enemies/Beings/Enemy.gd @@ -25,7 +25,7 @@ func _physics_process(delta: float) -> void: func die() -> void: queue_free() - PlayerData.score += score + GlobalData.score += score func _on_EnemySkin_area_entered(area:Area2D) -> void: diff --git a/src/Actors/Enemies/Beings/SimpleEnemy.gd b/src/Actors/Enemies/Beings/SimpleEnemy.gd index d75dae2..17539f0 100644 --- a/src/Actors/Enemies/Beings/SimpleEnemy.gd +++ b/src/Actors/Enemies/Beings/SimpleEnemy.gd @@ -30,7 +30,7 @@ func is_at_ledge(): func die() -> void: queue_free() - PlayerData.score += score + GlobalData.score += score func _on_EnemySkin_area_entered(area:Area2D) -> void: diff --git a/src/Actors/Enemies/Beings/SmortEnemy.gd b/src/Actors/Enemies/Beings/SmortEnemy.gd index 6343ee4..e00ba11 100644 --- a/src/Actors/Enemies/Beings/SmortEnemy.gd +++ b/src/Actors/Enemies/Beings/SmortEnemy.gd @@ -31,7 +31,7 @@ func is_safe_drop(): func die() -> void: queue_free() - PlayerData.score += score + GlobalData.score += score func _on_EnemySkin_area_entered(area:Area2D) -> void: if area.is_in_group("harmful"): diff --git a/src/Autoload/PlayerData.gd b/src/Autoload/GlobalData.gd similarity index 100% rename from src/Autoload/PlayerData.gd rename to src/Autoload/GlobalData.gd diff --git a/src/Autoload/GlobalData.tscn b/src/Autoload/GlobalData.tscn new file mode 100644 index 0000000..4d2edb7 --- /dev/null +++ b/src/Autoload/GlobalData.tscn @@ -0,0 +1,6 @@ +[gd_scene load_steps=2 format=2] + +[ext_resource path="res://src/Autoload/GlobalData.gd" type="Script" id=1] + +[node name="GlobalData" type="Node"] +script = ExtResource( 1 ) diff --git a/src/Autoload/PlayerData.tscn b/src/Autoload/PlayerData.tscn deleted file mode 100644 index 39f01db..0000000 --- a/src/Autoload/PlayerData.tscn +++ /dev/null @@ -1,6 +0,0 @@ -[gd_scene load_steps=2 format=2] - -[ext_resource path="res://src/Autoload/PlayerData.gd" type="Script" id=1] - -[node name="PlayerData" type="Node"] -script = ExtResource( 1 ) diff --git a/src/Contraptions/Platform/Spring.gd b/src/Contraptions/Platform/Spring.gd index 9a2e041..970f93e 100644 --- a/src/Contraptions/Platform/Spring.gd +++ b/src/Contraptions/Platform/Spring.gd @@ -6,7 +6,7 @@ const PhysicsConst = preload("res://src/Utilities/Physic/PhysicsConst.gd") var mass = 1 var coupled_mass = mass -var spring_k = -1000 +var spring_k = -400 var start_y = 0 var y_velocity = 0 var friction = 0.91 diff --git a/src/Contraptions/Platform/Spring.tscn b/src/Contraptions/Platform/Spring.tscn index dc495a7..4656ec1 100644 --- a/src/Contraptions/Platform/Spring.tscn +++ b/src/Contraptions/Platform/Spring.tscn @@ -7,7 +7,7 @@ extents = Vector2( 11.4863, 2.10568 ) [sub_resource type="RectangleShape2D" id=1] -extents = Vector2( 11.918, 1.57982 ) +extents = Vector2( 11.925, 0.0109166 ) [sub_resource type="RectangleShape2D" id=3] extents = Vector2( 11.9158, 2.06284 ) @@ -32,7 +32,7 @@ collision_layer = 32 collision_mask = 41 [node name="CollisionShape2D" type="CollisionShape2D" parent="SpringBody"] -position = Vector2( 0.00390673, 0 ) +position = Vector2( 0.0109062, -1.5689 ) shape = SubResource( 1 ) one_way_collision = true diff --git a/src/Levels/01 Level.tscn b/src/Levels/01 Level.tscn index 2bb76e6..d31719f 100644 --- a/src/Levels/01 Level.tscn +++ b/src/Levels/01 Level.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=14 format=2] +[gd_scene load_steps=18 format=2] [ext_resource path="res://src/Environment/AlienShipTileSet.tres" type="TileSet" id=1] [ext_resource path="res://src/Actors/Blobby/Blobby.tscn" type="PackedScene" id=2] @@ -11,7 +11,234 @@ [ext_resource path="res://src/Levels/Grass Test Level.tscn" type="PackedScene" id=9] [ext_resource path="res://src/Utilities/GameplaySignalManager.gd" type="Script" id=10] [ext_resource path="res://src/Contraptions/Platform/DropThroughPlatform.tscn" type="PackedScene" id=11] -[ext_resource path="res://src/Contraptions/Platform/Spring.tscn" type="PackedScene" id=12] +[ext_resource path="res://assets/environment/background/asteroids.png" type="Texture" id=12] +[ext_resource path="res://assets/environment/background/space.png" type="Texture" id=13] +[ext_resource path="res://src/Actors/Blobby/BlobbyCam.gd" type="Script" id=14] + +[sub_resource type="Animation" id=5] +length = 0.001 +tracks/0/type = "value" +tracks/0/path = NodePath(".:zoom") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 0.75, 0.75 ) ] +} +tracks/1/type = "value" +tracks/1/path = NodePath(".:limit_left") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ -10000000 ] +} +tracks/2/type = "value" +tracks/2/path = NodePath(".:limit_top") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ -10000000 ] +} +tracks/3/type = "value" +tracks/3/path = NodePath(".:limit_right") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 10000000 ] +} +tracks/4/type = "value" +tracks/4/path = NodePath(".:limit_bottom") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 10000000 ] +} +tracks/5/type = "value" +tracks/5/path = NodePath(".:rotating") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ true ] +} +tracks/6/type = "value" +tracks/6/path = NodePath(".:rotation_degrees") +tracks/6/interp = 1 +tracks/6/loop_wrap = true +tracks/6/imported = false +tracks/6/enabled = true +tracks/6/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 0.0 ] +} +tracks/7/type = "value" +tracks/7/path = NodePath(".:position") +tracks/7/interp = 1 +tracks/7/loop_wrap = true +tracks/7/imported = false +tracks/7/enabled = false +tracks/7/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 0, 0 ) ] +} + +[sub_resource type="Animation" id=6] +resource_name = "deathCam" +length = 2.3 +tracks/0/type = "value" +tracks/0/path = NodePath(".:zoom") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 1.6 ), +"transitions": PoolRealArray( 1, 3.24901 ), +"update": 0, +"values": [ Vector2( 0.75, 0.75 ), Vector2( 0.002, 0.002 ) ] +} +tracks/1/type = "value" +tracks/1/path = NodePath(".:limit_left") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0.8 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ -10000000 ] +} +tracks/2/type = "value" +tracks/2/path = NodePath(".:limit_top") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0.8 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ -10000000 ] +} +tracks/3/type = "value" +tracks/3/path = NodePath(".:limit_right") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 0.8 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ 10000000 ] +} +tracks/4/type = "value" +tracks/4/path = NodePath(".:limit_bottom") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/keys = { +"times": PoolRealArray( 0.8 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ 10000000 ] +} +tracks/5/type = "value" +tracks/5/path = NodePath(".:rotation_degrees") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/keys = { +"times": PoolRealArray( 0.6, 1.6 ), +"transitions": PoolRealArray( 1, 0.120742 ), +"update": 0, +"values": [ 0.0, 360.0 ] +} +tracks/6/type = "method" +tracks/6/path = NodePath("../Blobby") +tracks/6/interp = 1 +tracks/6/loop_wrap = true +tracks/6/imported = false +tracks/6/enabled = true +tracks/6/keys = { +"times": PoolRealArray( 2.3 ), +"transitions": PoolRealArray( 1 ), +"values": [ { +"args": [ ], +"method": "respawn" +} ] +} +tracks/7/type = "value" +tracks/7/path = NodePath(".:offset") +tracks/7/interp = 1 +tracks/7/loop_wrap = true +tracks/7/imported = false +tracks/7/enabled = true +tracks/7/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 0, -6 ) ] +} +tracks/8/type = "value" +tracks/8/path = NodePath(".:drag_margin_h_enabled") +tracks/8/interp = 1 +tracks/8/loop_wrap = true +tracks/8/imported = false +tracks/8/enabled = true +tracks/8/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} +tracks/9/type = "value" +tracks/9/path = NodePath(".:drag_margin_v_enabled") +tracks/9/interp = 1 +tracks/9/loop_wrap = true +tracks/9/imported = false +tracks/9/enabled = true +tracks/9/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} [sub_resource type="AnimationNodeStateMachinePlayback" id=4] @@ -26,7 +253,45 @@ __meta__ = { [node name="Timer" parent="UserInterface/HUD/HUDOverlay/GetBackTimer" index="0"] wait_time = 20.0 +[node name="Background" type="CanvasLayer" parent="."] + +[node name="BlobbyCam" type="Camera2D" parent="."] +rotating = true +current = true +zoom = Vector2( 0.75, 0.75 ) +process_mode = 0 +drag_margin_h_enabled = true +drag_margin_v_enabled = true +drag_margin_left = 0.05 +drag_margin_top = 0.05 +drag_margin_right = 0.05 +drag_margin_bottom = 0.05 +editor_draw_screen = false +script = ExtResource( 14 ) + +[node name="ShiftTween" type="Tween" parent="BlobbyCam"] + +[node name="AnimationPlayer" type="AnimationPlayer" parent="BlobbyCam"] +anims/RESET = SubResource( 5 ) +anims/deathCam = SubResource( 6 ) + +[node name="ParallaxBackground" type="ParallaxBackground" parent="BlobbyCam"] +scroll_base_offset = Vector2( 320, 180 ) + +[node name="ParallaxLayer" type="ParallaxLayer" parent="BlobbyCam/ParallaxBackground"] +motion_scale = Vector2( 0, 0 ) + +[node name="Sprite" type="Sprite" parent="BlobbyCam/ParallaxBackground/ParallaxLayer"] +texture = ExtResource( 13 ) + +[node name="ParallaxLayer2" type="ParallaxLayer" parent="BlobbyCam/ParallaxBackground"] +motion_scale = Vector2( 0.001, 0.001 ) + +[node name="Sprite" type="Sprite" parent="BlobbyCam/ParallaxBackground/ParallaxLayer2"] +texture = ExtResource( 12 ) + [node name="Blobby" parent="." instance=ExtResource( 2 )] +unique_name_in_owner = true position = Vector2( -60, -3.8147e-06 ) scale = Vector2( 0.878906, 0.936025 ) @@ -38,26 +303,32 @@ parameters/playback = SubResource( 4 ) [node name="Coin" parent="Collectibles" instance=ExtResource( 6 )] position = Vector2( 336, -60 ) scale = Vector2( 0.133, 0.133 ) +scoreValue = null [node name="Coin2" parent="Collectibles" instance=ExtResource( 6 )] position = Vector2( 324, -11 ) scale = Vector2( 0.133, 0.133 ) +scoreValue = null [node name="Coin3" parent="Collectibles" instance=ExtResource( 6 )] position = Vector2( 1188, -84 ) scale = Vector2( 0.133, 0.133 ) +scoreValue = null [node name="Coin4" parent="Collectibles" instance=ExtResource( 6 )] position = Vector2( 1236, -108 ) scale = Vector2( 0.133, 0.133 ) +scoreValue = null [node name="Coin5" parent="Collectibles" instance=ExtResource( 6 )] position = Vector2( 1140, -108 ) scale = Vector2( 0.133, 0.133 ) +scoreValue = null [node name="Coin6" parent="Collectibles" instance=ExtResource( 6 )] position = Vector2( 696, -48 ) scale = Vector2( 0.133, 0.133 ) +scoreValue = null [node name="TileMap" type="TileMap" parent="."] tile_set = ExtResource( 1 ) @@ -67,7 +338,7 @@ cell_custom_transform = Transform2D( 24, 0, 0, 24, 0, 0 ) collision_layer = 8 collision_mask = 8 format = 1 -tile_data = PoolIntArray( -786438, -1610612735, 0, -786437, 1610612738, 0, -786436, 1610612738, 0, -786435, 1610612736, 0, -786434, 1610612738, 0, -786433, 1610612738, 0, -851968, 1610612736, 0, -851967, 1610612738, 0, -851966, 1610612738, 0, -851965, 1610612736, 0, -851964, 1610612738, 0, -851963, 1610612738, 0, -851962, 1610612736, 0, -851961, 1610612738, 0, -851960, 1610612738, 0, -851959, 1610612736, 0, -851958, 1610612738, 0, -851957, 1610612738, 0, -851956, 1610612736, 0, -851955, 1610612738, 0, -851954, 1610612738, 0, -851953, 1610612736, 0, -851952, 1610612738, 0, -851951, 1610612738, 0, -851950, 1610612736, 0, -851949, 1610612738, 0, -851948, 1610612738, 0, -851947, 1610612736, 0, -851946, 1610612738, 0, -851945, 1610612738, 0, -851944, 1610612736, 0, -851943, 1610612738, 0, -851942, 1610612738, 0, -851941, 1610612736, 0, -851940, 1610612738, 0, -851939, 1610612738, 0, -851938, 1610612736, 0, -851937, 1610612738, 0, -851936, 1610612738, 0, -851935, 1610612736, 0, -851934, 1610612738, 0, -851933, 1610612738, 0, -851932, 1610612736, 0, -851931, 1610612738, 0, -851930, 1610612738, 0, -851929, 1610612736, 0, -851928, 1610612738, 0, -851927, 1610612738, 0, -851926, 1610612736, 0, -851925, 1610612738, 0, -851924, 1610612738, 0, -851923, 1610612736, 0, -851922, 1610612738, 0, -851921, 1610612738, 0, -851920, 1610612736, 0, -851919, 1610612738, 0, -851918, 1610612738, 0, -851917, 1610612736, 0, -851916, 1610612738, 0, -851915, 1610612738, 0, -851914, 1610612736, 0, -851913, 1610612738, 0, -851912, 1610612738, 0, -851911, 1610612736, 0, -851910, 1610612738, 0, -851909, 1610612738, 0, -851908, 1610612736, 0, -851907, 3, 0, -720902, -1610612734, 0, -786371, -1073741822, 0, -655366, -1610612734, 0, -720835, -1073741824, 0, -589830, -1610612736, 0, -655299, -1073741822, 0, -524294, -1610612734, 0, -589763, -1073741822, 0, -458758, -1610612734, 0, -524227, -1073741824, 0, -393222, -1610612736, 0, -458691, -1073741822, 0, -327686, -1610612734, 0, -393155, -1073741822, 0, -262150, -1610612734, 0, -327619, -1073741824, 0, -196614, -1610612736, 0, -262088, 0, 0, -262087, 2, 0, -262086, 2, 0, -262085, 0, 0, -262084, 2, 0, -262083, 1610612739, 0, -131078, -1610612734, 0, -196568, 0, 0, -196567, 2, 0, -196566, 2, 0, -196565, 0, 0, -196564, 2, 0, -196563, 2, 0, -196562, 0, 0, -196559, 2, 0, -196556, 2, 0, -196555, 0, 0, -196554, 2, 0, -196553, 2, 0, -196552, 1610612739, 0, -196551, 1610612739, 0, -196550, 1610612739, 0, -196549, 1610612739, 0, -196548, 1610612739, 0, -196547, 1610612739, 0, -65542, -1610612734, 0, -131066, 6, 0, -131064, 0, 0, -131063, 2, 0, -131059, -1073741822, 0, -131058, -1610612734, 0, -131054, 2, 0, -131053, 2, 0, -131052, 0, 0, -131051, 2, 0, -131032, 1610612739, 0, -131031, 1610612739, 0, -131030, 1610612739, 0, -131029, 1610612739, 0, -131028, 1610612739, 0, -131027, 1610612739, 0, -131026, 1610612739, 0, -131020, 1610612739, 0, -131019, 1610612739, 0, -131018, 1610612739, 0, -131017, 1610612739, 0, -131016, 1, 0, -131015, 1610612739, 0, -131014, 1610612739, 0, -131013, 1, 0, -131012, 1610612739, 0, -131011, 1610612739, 0, -6, -1610612736, 0, -65533, 5, 0, -65532, 2, 0, -65531, 0, 0, -65530, 2, 0, -65529, 2, 0, -65528, 1610612739, 0, -65527, 1610612739, 0, -65526, 2, 0, -65519, 0, 0, -65518, 1610612739, 0, -65517, 1610612739, 0, -65516, 1610612739, 0, -65515, 1610612739, 0, -65514, 2, 0, -65501, 2, 0, -65500, 2, 0, -65499, 0, 0, -65498, 2, 0, -65497, 2, 0, -65496, 1, 0, -65495, 1610612739, 0, -65494, 1610612739, 0, -65493, 1, 0, -65492, 1610612739, 0, -65491, 1610612739, 0, -65490, 1, 0, -65489, 2, 0, -65488, 2, 0, -65487, 2, 0, -65486, 2, 0, -65485, 2, 0, -65484, 1610612739, 0, -65483, 1, 0, -65482, 1610612739, 0, -65481, 1610612739, 0, -65480, 1610612739, 0, -65479, 1610612739, 0, -65478, 1610612739, 0, -65477, 1610612739, 0, -65476, 1610612739, 0, -65475, 1610612739, 0, 65530, 3, 0, 65531, 2, 0, 65532, 0, 0, 65533, 2, 0, 65534, 2, 0, 65535, 0, 0, 0, 2, 0, 1, 2, 0, 2, 0, 0, 3, 2, 0, 4, 1610612739, 0, 5, 1610612739, 0, 6, 1610612739, 0, 7, 1610612739, 0, 8, 1610612739, 0, 9, 1610612739, 0, 10, 1610612739, 0, 11, 0, 0, 12, 2, 0, 13, 2, 0, 14, 0, 0, 15, 2, 0, 16, 2, 0, 17, 1610612739, 0, 18, 1610612739, 0, 19, 1610612739, 0, 20, 1610612739, 0, 21, 1610612739, 0, 22, 1610612739, 0, 23, 0, 0, 24, 2, 0, 25, 2, 0, 26, 0, 0, 27, 2, 0, 30, 2, 0, 31, 0, 0, 32, 2, 0, 33, 2, 0, 34, 0, 0, 35, 1610612739, 0, 36, 1610612739, 0, 37, 1610612739, 0, 38, 1610612739, 0, 39, 1610612739, 0, 40, 1610612739, 0, 41, 1610612739, 0, 42, 1610612739, 0, 43, 1610612739, 0, 44, 1610612739, 0, 45, 1610612739, 0, 46, 1610612739, 0, 47, 1610612739, 0, 48, 1610612739, 0, 49, 1610612739, 0, 50, 1610612739, 0, 51, 1610612739, 0, 52, 1610612739, 0, 53, 1610612739, 0, 54, 1610612739, 0, 55, 1610612739, 0, 56, 1, 0, 57, 1610612739, 0, 58, 1610612739, 0, 59, 1, 0, 60, 1610612739, 0, 61, 1610612739, 0 ) +tile_data = PoolIntArray( -851975, 3, 0, -851974, 3, 0, -851973, 3, 0, -851972, 3, 0, -851971, 3, 0, -851970, 3, 0, -851969, 3, 0, -917504, 3, 0, -917503, 3, 0, -917502, 3, 0, -917501, 3, 0, -917500, 3, 0, -917499, 3, 0, -917498, 3, 0, -917497, 3, 0, -917496, 3, 0, -917495, 3, 0, -917494, 3, 0, -917493, 3, 0, -917492, 3, 0, -917491, 3, 0, -917490, 3, 0, -917489, 3, 0, -917488, 3, 0, -917487, 3, 0, -917486, 3, 0, -917485, 3, 0, -917484, 3, 0, -917483, 3, 0, -917482, 3, 0, -917481, 3, 0, -917480, 3, 0, -917479, 3, 0, -917478, 3, 0, -917477, 3, 0, -917476, 3, 0, -917475, 3, 0, -917474, 3, 0, -917473, 3, 0, -917472, 3, 0, -917471, 3, 0, -917470, 3, 0, -917469, 3, 0, -917468, 3, 0, -917467, 3, 0, -917466, 3, 0, -917465, 3, 0, -917464, 3, 0, -917463, 3, 0, -917462, 3, 0, -917461, 3, 0, -917460, 3, 0, -917459, 3, 0, -917458, 3, 0, -917457, 3, 0, -917456, 3, 0, -917455, 3, 0, -917454, 3, 0, -917453, 3, 0, -917452, 3, 0, -917451, 3, 0, -917450, 3, 0, -917449, 3, 0, -917448, 3, 0, -917447, 3, 0, -917446, 3, 0, -917445, 3, 0, -917444, 3, 0, -917443, 3, 0, -917442, 3, 0, -786439, 3, 0, -786438, -1610612735, 0, -786437, 1610612738, 0, -786436, 1610612738, 0, -786435, 1610612736, 0, -786434, 1610612738, 0, -786433, 1610612738, 0, -851968, 1610612736, 0, -851967, 1610612738, 0, -851966, 1610612738, 0, -851965, 1610612736, 0, -851964, 1610612738, 0, -851963, 1610612738, 0, -851962, 1610612736, 0, -851961, 1610612738, 0, -851960, 1610612738, 0, -851959, 1610612736, 0, -851958, 1610612738, 0, -851957, 1610612738, 0, -851956, 1610612736, 0, -851955, 1610612738, 0, -851954, 1610612738, 0, -851953, 1610612736, 0, -851952, 1610612738, 0, -851951, 1610612738, 0, -851950, 1610612736, 0, -851949, 1610612738, 0, -851948, 1610612738, 0, -851947, 1610612736, 0, -851946, 1610612738, 0, -851945, 1610612738, 0, -851944, 1610612736, 0, -851943, 1610612738, 0, -851942, 1610612738, 0, -851941, 1610612736, 0, -851940, 1610612738, 0, -851939, 1610612738, 0, -851938, 1610612736, 0, -851937, 1610612738, 0, -851936, 1610612738, 0, -851935, 3, 0, -851934, 1610612738, 0, -851933, 1610612738, 0, -851932, 1610612736, 0, -851931, 1610612738, 0, -851930, 1610612738, 0, -851929, 1610612736, 0, -851928, 1610612738, 0, -851927, 1610612738, 0, -851926, 1610612736, 0, -851925, 1610612738, 0, -851924, 1610612738, 0, -851923, 1610612736, 0, -851922, 1610612738, 0, -851921, 1610612738, 0, -851920, 1610612736, 0, -851919, 1610612738, 0, -851918, 1610612738, 0, -851917, 1610612736, 0, -851916, 1610612738, 0, -851915, 1610612738, 0, -851914, 1610612736, 0, -851913, 1610612738, 0, -851912, 1610612738, 0, -851911, 1610612736, 0, -851910, 1610612738, 0, -851909, 1610612738, 0, -851908, 1610612736, 0, -851907, 3, 0, -851906, 3, 0, -720903, 3, 0, -720902, -1610612734, 0, -786371, -1073741822, 0, -786370, 3, 0, -655367, 3, 0, -655366, -1610612734, 0, -720835, -1073741824, 0, -720834, 3, 0, -589831, 3, 0, -589830, -1610612736, 0, -655299, -1073741822, 0, -655298, 3, 0, -524295, 3, 0, -524294, -1610612734, 0, -589763, -1073741822, 0, -589762, 3, 0, -458759, 3, 0, -458758, -1610612734, 0, -524227, -1073741824, 0, -524226, 3, 0, -393223, 3, 0, -393222, -1610612736, 0, -458691, -1073741822, 0, -458690, 3, 0, -327687, 3, 0, -327686, -1610612734, 0, -393155, -1073741822, 0, -393154, 3, 0, -262151, 3, 0, -262150, -1610612734, 0, -327619, -1073741824, 0, -327618, 3, 0, -196615, 3, 0, -196614, -1610612736, 0, -262088, 0, 0, -262087, 2, 0, -262086, 2, 0, -262085, 0, 0, -262084, 2, 0, -262083, 1610612739, 0, -262082, 3, 0, -131079, 3, 0, -131078, -1610612734, 0, -196568, 0, 0, -196567, 2, 0, -196566, 2, 0, -196565, 0, 0, -196564, 2, 0, -196563, 2, 0, -196562, 0, 0, -196559, 2, 0, -196556, 2, 0, -196555, 0, 0, -196554, 2, 0, -196553, 2, 0, -196552, 1610612739, 0, -196551, 1610612739, 0, -196550, 1610612739, 0, -196549, 1610612739, 0, -196548, 1610612739, 0, -196547, 3, 0, -196546, 3, 0, -65543, 3, 0, -65542, -1610612734, 0, -131066, 6, 0, -131064, 0, 0, -131063, 2, 0, -131059, -1073741822, 0, -131058, -1610612734, 0, -131054, 2, 0, -131053, 2, 0, -131052, 0, 0, -131051, 2, 0, -131032, 1610612739, 0, -131031, 1610612739, 0, -131030, 1610612739, 0, -131029, 1610612739, 0, -131028, 1610612739, 0, -131027, 1610612739, 0, -131026, 1610612739, 0, -131020, 1610612739, 0, -131019, 1610612739, 0, -131018, 1610612739, 0, -131017, 1610612739, 0, -131016, 1, 0, -131015, 1610612739, 0, -131014, 1610612739, 0, -131013, 1, 0, -131012, 1610612739, 0, -131011, 3, 0, -131010, 3, 0, -7, 3, 0, -6, -1610612736, 0, -65533, 5, 0, -65532, 2, 0, -65531, 0, 0, -65530, 2, 0, -65529, 2, 0, -65528, 1610612739, 0, -65527, 1610612739, 0, -65526, 2, 0, -65519, 0, 0, -65518, 1610612739, 0, -65517, 1610612739, 0, -65516, 1610612739, 0, -65515, 1610612739, 0, -65514, 2, 0, -65501, 2, 0, -65500, 2, 0, -65499, 0, 0, -65498, 2, 0, -65497, 2, 0, -65496, 1, 0, -65495, 1610612739, 0, -65494, 1610612739, 0, -65493, 1, 0, -65492, 1610612739, 0, -65491, 1610612739, 0, -65490, 1, 0, -65489, 2, 0, -65488, 2, 0, -65487, 2, 0, -65486, 2, 0, -65485, 2, 0, -65484, 1610612739, 0, -65483, 1, 0, -65482, 1610612739, 0, -65481, 1610612739, 0, -65480, 1610612739, 0, -65479, 1610612739, 0, -65478, 1610612739, 0, -65477, 1610612739, 0, -65476, 1610612739, 0, -65475, 3, 0, -65474, 3, 0, 65529, 3, 0, 65530, 3, 0, 65531, 2, 0, 65532, 0, 0, 65533, 2, 0, 65534, 2, 0, 65535, 0, 0, 0, 2, 0, 1, 2, 0, 2, 0, 0, 3, 2, 0, 4, 1610612739, 0, 5, 1610612739, 0, 6, 1610612739, 0, 7, 1610612739, 0, 8, 1610612739, 0, 9, 1610612739, 0, 10, 1610612739, 0, 11, 0, 0, 12, 2, 0, 13, 2, 0, 14, 0, 0, 15, 2, 0, 16, 2, 0, 17, 1610612739, 0, 18, 1610612739, 0, 19, 1610612739, 0, 20, 1610612739, 0, 21, 1610612739, 0, 22, 1610612739, 0, 23, 0, 0, 24, 2, 0, 25, 2, 0, 26, 0, 0, 27, 2, 0, 30, 2, 0, 31, 0, 0, 32, 2, 0, 33, 2, 0, 34, 0, 0, 35, 1610612739, 0, 36, 1610612739, 0, 37, 1610612739, 0, 38, 1610612739, 0, 39, 1610612739, 0, 40, 1610612739, 0, 41, 1610612739, 0, 42, 1610612739, 0, 43, 1610612739, 0, 44, 1610612739, 0, 45, 1610612739, 0, 46, 1610612739, 0, 47, 1610612739, 0, 48, 1610612739, 0, 49, 1610612739, 0, 50, 1610612739, 0, 51, 1610612739, 0, 52, 1610612739, 0, 53, 1610612739, 0, 54, 1610612739, 0, 55, 1610612739, 0, 56, 1, 0, 57, 1610612739, 0, 58, 1610612739, 0, 59, 1, 0, 60, 1610612739, 0, 61, 1610612739, 0, 62, 3, 0, 131065, 3, 0, 131066, 3, 0, 131067, 3, 0, 131068, 3, 0, 131069, 3, 0, 131070, 3, 0, 131071, 3, 0, 65536, 3, 0, 65537, 3, 0, 65538, 3, 0, 65539, 3, 0, 65540, 3, 0, 65541, 3, 0, 65542, 3, 0, 65543, 3, 0, 65544, 3, 0, 65545, 3, 0, 65546, 3, 0, 65547, 3, 0, 65548, 3, 0, 65549, 3, 0, 65550, 3, 0, 65551, 3, 0, 65552, 3, 0, 65553, 3, 0, 65554, 3, 0, 65555, 3, 0, 65556, 3, 0, 65557, 3, 0, 65558, 3, 0, 65559, 3, 0, 65560, 3, 0, 65561, 3, 0, 65562, 3, 0, 65563, 3, 0, 65564, 3, 0, 65565, 3, 0, 65566, 3, 0, 65567, 3, 0, 65568, 3, 0, 65569, 3, 0, 65570, 3, 0, 65571, 3, 0, 65572, 3, 0, 65573, 3, 0, 65574, 3, 0, 65575, 3, 0, 65576, 3, 0, 65577, 3, 0, 65578, 3, 0, 65579, 3, 0, 65580, 3, 0, 65581, 3, 0, 65582, 3, 0, 65583, 3, 0, 65584, 3, 0, 65585, 3, 0, 65586, 3, 0, 65587, 3, 0, 65588, 3, 0, 65589, 3, 0, 65590, 3, 0, 65591, 3, 0, 65592, 3, 0, 65593, 3, 0, 65594, 3, 0, 65595, 3, 0, 65596, 3, 0, 65597, 3, 0, 65598, 3, 0 ) [node name="Spikes" parent="TileMap" instance=ExtResource( 3 )] position = Vector2( 708, 12 ) @@ -88,10 +359,10 @@ position = Vector2( 1212, -36 ) position = Vector2( 1236, -36 ) [node name="Spikes3" parent="TileMap" instance=ExtResource( 3 )] -position = Vector2( 8, -16 ) +position = Vector2( 684, 12 ) [node name="DropThroughPlatform" parent="." instance=ExtResource( 11 )] -tile_data = PoolIntArray( ) +tile_data = PoolIntArray( -786315, 1, 0, -786314, 0, 0, -786312, 2, 0 ) [node name="TreeWhyButtons" parent="." instance=ExtResource( 8 )] position = Vector2( -108, -7 ) @@ -118,11 +389,9 @@ monitoring = false next_scene = ExtResource( 9 ) [node name="GameplaySignalManager" type="Node2D" parent="."] +visible = false script = ExtResource( 10 ) -[node name="Spring" parent="." instance=ExtResource( 12 )] -position = Vector2( 272, -72 ) - [connection signal="timeout" from="UserInterface/HUD/HUDOverlay/GetBackTimer/Timer" to="GameplaySignalManager" method="_on_Timer_timeout"] [connection signal="body_exited" from="Blobby/BlobbySkin" to="Blobby" method="_on_BlobbySkin_body_exited"] [connection signal="getback_timer_up" from="GameplaySignalManager" to="Blobby" method="_on_GameplaySignalManager_getback_timer_up"] diff --git a/src/Levels/The Line Level.tscn b/src/Levels/The Line Level.tscn new file mode 100644 index 0000000..b0d4ae3 --- /dev/null +++ b/src/Levels/The Line Level.tscn @@ -0,0 +1,339 @@ +[gd_scene load_steps=12 format=2] + +[ext_resource path="res://src/Utilities/GameplaySignalManager.gd" type="Script" id=1] +[ext_resource path="res://src/Environment/AlienShipTileSet.tres" type="TileSet" id=2] +[ext_resource path="res://src/Contraptions/Triggers/ElevatorButton.tscn" type="PackedScene" id=3] +[ext_resource path="res://src/Actors/Blobby/Blobby.tscn" type="PackedScene" id=4] +[ext_resource path="res://src/NeutralObjects/Coin.tscn" type="PackedScene" id=5] +[ext_resource path="res://src/Levels/Enemy Test Level.tscn" type="PackedScene" id=6] +[ext_resource path="res://src/Environment/ShaderGrass.tscn" type="PackedScene" id=7] +[ext_resource path="res://src/Contraptions/Triggers/ThreeWhyButtons.tscn" type="PackedScene" id=8] +[ext_resource path="res://src/UserInterface/UserInterface.tscn" type="PackedScene" id=9] +[ext_resource path="res://src/Contraptions/Portal/Portal.tscn" type="PackedScene" id=10] + +[sub_resource type="AnimationNodeStateMachinePlayback" id=4] + +[node name="LevelTemplate" type="Node2D"] +__meta__ = { +"_edit_horizontal_guides_": [ 464.0 ], +"_edit_vertical_guides_": [ 2880.0 ] +} + +[node name="UserInterface" parent="." instance=ExtResource( 9 )] + +[node name="Timer" parent="UserInterface/HUD/HUDOverlay/GetBackTimer" index="0"] +wait_time = 20.0 + +[node name="PauseScreen" parent="UserInterface" index="1"] +margin_left = 3.15372 +margin_top = 0.456848 +margin_right = 3.15375 +margin_bottom = 0.456848 + +[node name="Blobby" parent="." instance=ExtResource( 4 )] +position = Vector2( 71.0069, 335.293 ) +scale = Vector2( 0.878906, 0.936025 ) + +[node name="AnimationTree" parent="Blobby/BlobbySprite" index="0"] +parameters/playback = SubResource( 4 ) + +[node name="Collectibles" type="Node2D" parent="."] +visible = false + +[node name="Coin" parent="Collectibles" instance=ExtResource( 5 )] +position = Vector2( 336, -60 ) +scale = Vector2( 0.133, 0.133 ) +scoreValue = null + +[node name="Coin2" parent="Collectibles" instance=ExtResource( 5 )] +position = Vector2( 324, -11 ) +scale = Vector2( 0.133, 0.133 ) +scoreValue = null + +[node name="Coin3" parent="Collectibles" instance=ExtResource( 5 )] +position = Vector2( 1188, -84 ) +scale = Vector2( 0.133, 0.133 ) +scoreValue = null + +[node name="Coin4" parent="Collectibles" instance=ExtResource( 5 )] +position = Vector2( 1236, -108 ) +scale = Vector2( 0.133, 0.133 ) +scoreValue = null + +[node name="Coin5" parent="Collectibles" instance=ExtResource( 5 )] +position = Vector2( 1140, -108 ) +scale = Vector2( 0.133, 0.133 ) +scoreValue = null + +[node name="Coin6" parent="Collectibles" instance=ExtResource( 5 )] +position = Vector2( 696, -48 ) +scale = Vector2( 0.133, 0.133 ) +scoreValue = null + +[node name="TileMap" type="TileMap" parent="."] +tile_set = ExtResource( 2 ) +cell_size = Vector2( 24, 24 ) +cell_quadrant_size = 3 +cell_custom_transform = Transform2D( 24, 0, 0, 24, 0, 0 ) +collision_layer = 8 +collision_mask = 8 +format = 1 +tile_data = PoolIntArray( 0, 4, 0, 260, 4, 0, 65536, 4, 0, 65796, 4, 0, 131072, 4, 0, 131332, 4, 0, 196608, 4, 0, 196868, 4, 0, 262144, 4, 0, 262404, 4, 0, 327680, 4, 0, 327940, 4, 0, 393216, 4, 0, 393476, 4, 0, 458752, 4, 0, 459012, 4, 0, 524288, 4, 0, 524548, 4, 0, 589824, 4, 0, 590084, 4, 0, 655360, 4, 0, 655620, 4, 0, 720896, 4, 0, 721156, 4, 0, 786432, 4, 0, 786692, 4, 0, 851968, 4, 0, 852228, 4, 0, 917504, 2, 0, 917505, 2, 0, 917506, 2, 0, 917507, 2, 0, 917508, 2, 0, 917509, 2, 0, 917510, 2, 0, 917511, 2, 0, 917512, 2, 0, 917513, 4, 0, 917514, 4, 0, 917515, 4, 0, 917516, 4, 0, 917517, 4, 0, 917518, 4, 0, 917519, 4, 0, 917520, 4, 0, 917521, 4, 0, 917522, 4, 0, 917523, 4, 0, 917524, 4, 0, 917525, 4, 0, 917526, 4, 0, 917527, 4, 0, 917528, 4, 0, 917529, 4, 0, 917530, 4, 0, 917531, 4, 0, 917532, 4, 0, 917533, 4, 0, 917534, 4, 0, 917535, 4, 0, 917536, 4, 0, 917537, 4, 0, 917538, 4, 0, 917539, 4, 0, 917540, 4, 0, 917541, 4, 0, 917542, 4, 0, 917543, 4, 0, 917544, 4, 0, 917545, 4, 0, 917546, 4, 0, 917547, 4, 0, 917548, 4, 0, 917549, 4, 0, 917550, 4, 0, 917551, 4, 0, 917552, 4, 0, 917553, 4, 0, 917554, 4, 0, 917555, 4, 0, 917556, 4, 0, 917557, 4, 0, 917558, 4, 0, 917559, 4, 0, 917560, 4, 0, 917561, 4, 0, 917562, 4, 0, 917563, 4, 0, 917564, 4, 0, 917565, 4, 0, 917566, 4, 0, 917567, 4, 0, 917568, 4, 0, 917569, 4, 0, 917570, 4, 0, 917571, 4, 0, 917572, 4, 0, 917573, 4, 0, 917574, 4, 0, 917575, 4, 0, 917576, 4, 0, 917577, 4, 0, 917578, 4, 0, 917579, 4, 0, 917580, 4, 0, 917581, 4, 0, 917582, 4, 0, 917583, 4, 0, 917584, 4, 0, 917585, 4, 0, 917586, 4, 0, 917587, 4, 0, 917588, 4, 0, 917589, 4, 0, 917590, 4, 0, 917591, 4, 0, 917592, 4, 0, 917593, 4, 0, 917594, 4, 0, 917595, 4, 0, 917596, 4, 0, 917597, 4, 0, 917598, 4, 0, 917599, 4, 0, 917600, 4, 0, 917601, 4, 0, 917602, 4, 0, 917603, 4, 0, 917604, 4, 0, 917605, 4, 0, 917606, 4, 0, 917607, 4, 0, 917608, 4, 0, 917609, 4, 0, 917610, 4, 0, 917611, 4, 0, 917612, 4, 0, 917613, 4, 0, 917614, 4, 0, 917615, 4, 0, 917616, 4, 0, 917617, 4, 0, 917618, 4, 0, 917619, 4, 0, 917620, 4, 0, 917621, 4, 0, 917622, 4, 0, 917623, 4, 0, 917624, 4, 0, 917625, 4, 0, 917626, 4, 0, 917627, 4, 0, 917628, 4, 0, 917629, 4, 0, 917630, 4, 0, 917631, 4, 0, 917632, 4, 0, 917633, 4, 0, 917634, 4, 0, 917635, 4, 0, 917636, 4, 0, 917637, 4, 0, 917638, 4, 0, 917639, 4, 0, 917640, 4, 0, 917641, 4, 0, 917642, 4, 0, 917643, 4, 0, 917644, 4, 0, 917645, 4, 0, 917646, 4, 0, 917647, 4, 0, 917648, 4, 0, 917649, 4, 0, 917650, 4, 0, 917651, 4, 0, 917652, 4, 0, 917653, 4, 0, 917654, 4, 0, 917655, 4, 0, 917656, 4, 0, 917657, 4, 0, 917658, 4, 0, 917659, 4, 0, 917660, 4, 0, 917661, 4, 0, 917662, 4, 0, 917663, 4, 0, 917664, 4, 0, 917665, 4, 0, 917666, 4, 0, 917667, 4, 0, 917668, 4, 0, 917669, 4, 0, 917670, 4, 0, 917671, 4, 0, 917672, 4, 0, 917673, 4, 0, 917674, 4, 0, 917675, 4, 0, 917676, 4, 0, 917677, 4, 0, 917678, 4, 0, 917679, 4, 0, 917680, 4, 0, 917681, 4, 0, 917682, 4, 0, 917683, 4, 0, 917684, 4, 0, 917685, 4, 0, 917686, 4, 0, 917687, 4, 0, 917688, 4, 0, 917689, 4, 0, 917690, 4, 0, 917691, 4, 0, 917692, 4, 0, 917693, 4, 0, 917694, 4, 0, 917695, 4, 0, 917696, 4, 0, 917697, 4, 0, 917698, 4, 0, 917699, 4, 0, 917700, 4, 0, 917701, 4, 0, 917702, 4, 0, 917703, 4, 0, 917704, 4, 0, 917705, 4, 0, 917706, 4, 0, 917707, 4, 0, 917708, 4, 0, 917709, 4, 0, 917710, 4, 0, 917711, 4, 0, 917712, 4, 0, 917713, 4, 0, 917714, 4, 0, 917715, 4, 0, 917716, 4, 0, 917717, 4, 0, 917718, 4, 0, 917719, 4, 0, 917720, 4, 0, 917721, 4, 0, 917722, 4, 0, 917723, 4, 0, 917724, 4, 0, 917725, 4, 0, 917726, 4, 0, 917727, 4, 0, 917728, 4, 0, 917729, 4, 0, 917730, 4, 0, 917731, 4, 0, 917732, 4, 0, 917733, 4, 0, 917734, 4, 0, 917735, 4, 0, 917736, 4, 0, 917737, 4, 0, 917738, 4, 0, 917739, 4, 0, 917740, 4, 0, 917741, 4, 0, 917742, 4, 0, 917743, 4, 0, 917744, 4, 0, 917745, 4, 0, 917746, 4, 0, 917747, 4, 0, 917748, 4, 0, 917749, 4, 0, 917750, 4, 0, 917751, 4, 0, 917752, 4, 0, 917753, 4, 0, 917754, 4, 0, 917755, 4, 0, 917756, 4, 0, 917757, 4, 0, 917758, 4, 0, 917759, 4, 0, 917760, 4, 0, 917761, 4, 0, 917762, 4, 0, 917763, 4, 0, 917764, 4, 0 ) + +[node name="TreeWhyButtons" parent="." instance=ExtResource( 8 )] +visible = false +position = Vector2( -108, -7 ) + +[node name="WhyButton1" parent="TreeWhyButtons" index="0"] +position = Vector2( -12, -49 ) +rotation = 1.5708 + +[node name="WhyButton2" parent="TreeWhyButtons" index="1"] +position = Vector2( 444, -17 ) +rotation = 3.14159 + +[node name="WhyButton3" parent="TreeWhyButtons" index="2"] +position = Vector2( 1452, -77 ) +rotation = -1.5708 + +[node name="ElevatorButton" parent="." instance=ExtResource( 3 )] +visible = false +position = Vector2( 1452, -96 ) + +[node name="Portal" parent="ElevatorButton" instance=ExtResource( 10 )] +visible = false +position = Vector2( -1464, 84 ) +monitoring = false +next_scene = ExtResource( 6 ) + +[node name="GameplaySignalManager" type="Node2D" parent="."] +script = ExtResource( 1 ) + +[node name="ShaderGrass" parent="." instance=ExtResource( 7 )] +position = Vector2( 94.3273, 323.897 ) +z_index = -1 + +[node name="ShaderGrass2" parent="." instance=ExtResource( 7 )] +position = Vector2( 97.7583, 323.726 ) + +[node name="ShaderGrass3" parent="." instance=ExtResource( 7 )] +position = Vector2( 103.443, 323.813 ) + +[node name="ShaderGrass4" parent="." instance=ExtResource( 7 )] +position = Vector2( 99.556, 322.393 ) +z_index = -1 + +[node name="ShaderGrass5" parent="." instance=ExtResource( 7 )] +position = Vector2( 107.485, 323.87 ) + +[node name="ShaderGrass6" parent="." instance=ExtResource( 7 )] +position = Vector2( 104.781, 322.084 ) +z_index = -1 + +[node name="ShaderGrass7" parent="." instance=ExtResource( 7 )] +position = Vector2( 118.829, 323.704 ) + +[node name="ShaderGrass8" parent="." instance=ExtResource( 7 )] +position = Vector2( 112.732, 323.918 ) + +[node name="ShaderGrass9" parent="." instance=ExtResource( 7 )] +position = Vector2( 110.33, 321.607 ) +z_index = -1 + +[node name="ShaderGrass10" parent="." instance=ExtResource( 7 )] +position = Vector2( 122.514, 323.848 ) +z_index = -1 + +[node name="ShaderGrass11" parent="." instance=ExtResource( 7 )] +position = Vector2( 125.945, 323.677 ) + +[node name="ShaderGrass12" parent="." instance=ExtResource( 7 )] +position = Vector2( 131.629, 323.764 ) + +[node name="ShaderGrass13" parent="." instance=ExtResource( 7 )] +position = Vector2( 127.742, 322.345 ) +z_index = -1 + +[node name="ShaderGrass14" parent="." instance=ExtResource( 7 )] +position = Vector2( 135.671, 323.821 ) + +[node name="ShaderGrass15" parent="." instance=ExtResource( 7 )] +position = Vector2( 132.967, 322.035 ) +z_index = -1 + +[node name="ShaderGrass16" parent="." instance=ExtResource( 7 )] +position = Vector2( 147.015, 323.655 ) + +[node name="ShaderGrass17" parent="." instance=ExtResource( 7 )] +position = Vector2( 140.918, 323.869 ) + +[node name="ShaderGrass18" parent="." instance=ExtResource( 7 )] +position = Vector2( 138.516, 321.559 ) +z_index = -1 + +[node name="ShaderGrass19" parent="." instance=ExtResource( 7 )] +position = Vector2( 149.723, 323.897 ) +z_index = -1 + +[node name="ShaderGrass20" parent="." instance=ExtResource( 7 )] +position = Vector2( 153.154, 323.726 ) + +[node name="ShaderGrass21" parent="." instance=ExtResource( 7 )] +position = Vector2( 158.839, 323.813 ) + +[node name="ShaderGrass22" parent="." instance=ExtResource( 7 )] +position = Vector2( 154.952, 322.393 ) +z_index = -1 + +[node name="ShaderGrass23" parent="." instance=ExtResource( 7 )] +position = Vector2( 162.881, 323.87 ) + +[node name="ShaderGrass24" parent="." instance=ExtResource( 7 )] +position = Vector2( 160.177, 322.084 ) +z_index = -1 + +[node name="ShaderGrass25" parent="." instance=ExtResource( 7 )] +position = Vector2( 174.225, 323.704 ) + +[node name="ShaderGrass26" parent="." instance=ExtResource( 7 )] +position = Vector2( 168.128, 323.918 ) + +[node name="ShaderGrass27" parent="." instance=ExtResource( 7 )] +position = Vector2( 165.726, 321.607 ) +z_index = -1 + +[node name="ShaderGrass28" parent="." instance=ExtResource( 7 )] +position = Vector2( 64.794, 323.73 ) +z_index = -1 + +[node name="ShaderGrass29" parent="." instance=ExtResource( 7 )] +position = Vector2( 68.225, 323.559 ) + +[node name="ShaderGrass30" parent="." instance=ExtResource( 7 )] +position = Vector2( 73.9096, 323.646 ) + +[node name="ShaderGrass31" parent="." instance=ExtResource( 7 )] +position = Vector2( 70.0227, 322.227 ) +z_index = -1 + +[node name="ShaderGrass32" parent="." instance=ExtResource( 7 )] +position = Vector2( 77.9516, 323.703 ) + +[node name="ShaderGrass33" parent="." instance=ExtResource( 7 )] +position = Vector2( 75.2476, 321.917 ) +z_index = -1 + +[node name="ShaderGrass34" parent="." instance=ExtResource( 7 )] +position = Vector2( 89.2956, 323.538 ) + +[node name="ShaderGrass35" parent="." instance=ExtResource( 7 )] +position = Vector2( 83.1986, 323.751 ) + +[node name="ShaderGrass36" parent="." instance=ExtResource( 7 )] +position = Vector2( 80.7966, 321.441 ) +z_index = -1 + +[node name="ShaderGrass37" parent="." instance=ExtResource( 7 )] +position = Vector2( 39.2652, 323.564 ) +z_index = -1 + +[node name="ShaderGrass38" parent="." instance=ExtResource( 7 )] +position = Vector2( 42.6962, 323.393 ) + +[node name="ShaderGrass39" parent="." instance=ExtResource( 7 )] +position = Vector2( 48.3808, 323.48 ) + +[node name="ShaderGrass40" parent="." instance=ExtResource( 7 )] +position = Vector2( 44.4939, 322.06 ) +z_index = -1 + +[node name="ShaderGrass41" parent="." instance=ExtResource( 7 )] +position = Vector2( 52.4228, 323.537 ) + +[node name="ShaderGrass42" parent="." instance=ExtResource( 7 )] +position = Vector2( 49.7188, 321.751 ) +z_index = -1 + +[node name="ShaderGrass43" parent="." instance=ExtResource( 7 )] +position = Vector2( 63.7668, 323.371 ) + +[node name="ShaderGrass44" parent="." instance=ExtResource( 7 )] +position = Vector2( 57.6698, 323.585 ) + +[node name="ShaderGrass45" parent="." instance=ExtResource( 7 )] +position = Vector2( 55.2678, 321.274 ) +z_index = -1 + +[node name="ShaderGrass46" parent="." instance=ExtResource( 7 )] +position = Vector2( 17.2403, 323.73 ) +z_index = -1 + +[node name="ShaderGrass47" parent="." instance=ExtResource( 7 )] +position = Vector2( 20.6713, 323.559 ) + +[node name="ShaderGrass48" parent="." instance=ExtResource( 7 )] +position = Vector2( 26.3559, 323.646 ) + +[node name="ShaderGrass49" parent="." instance=ExtResource( 7 )] +position = Vector2( 22.469, 322.227 ) +z_index = -1 + +[node name="ShaderGrass50" parent="." instance=ExtResource( 7 )] +position = Vector2( 30.3979, 323.703 ) + +[node name="ShaderGrass51" parent="." instance=ExtResource( 7 )] +position = Vector2( 27.6939, 321.917 ) +z_index = -1 + +[node name="ShaderGrass52" parent="." instance=ExtResource( 7 )] +position = Vector2( 41.7419, 323.538 ) + +[node name="ShaderGrass53" parent="." instance=ExtResource( 7 )] +position = Vector2( 35.6449, 323.751 ) + +[node name="ShaderGrass54" parent="." instance=ExtResource( 7 )] +position = Vector2( 33.2429, 321.441 ) +z_index = -1 + +[node name="ShaderGrass55" parent="." instance=ExtResource( 7 )] +position = Vector2( 166.242, 323.73 ) +z_index = -1 + +[node name="ShaderGrass56" parent="." instance=ExtResource( 7 )] +position = Vector2( 169.673, 323.559 ) + +[node name="ShaderGrass57" parent="." instance=ExtResource( 7 )] +position = Vector2( 175.357, 323.646 ) + +[node name="ShaderGrass58" parent="." instance=ExtResource( 7 )] +position = Vector2( 171.471, 322.227 ) +z_index = -1 + +[node name="ShaderGrass59" parent="." instance=ExtResource( 7 )] +position = Vector2( 179.399, 323.703 ) + +[node name="ShaderGrass60" parent="." instance=ExtResource( 7 )] +position = Vector2( 176.695, 321.917 ) +z_index = -1 + +[node name="ShaderGrass61" parent="." instance=ExtResource( 7 )] +position = Vector2( 190.743, 323.538 ) + +[node name="ShaderGrass62" parent="." instance=ExtResource( 7 )] +position = Vector2( 184.646, 323.751 ) + +[node name="ShaderGrass63" parent="." instance=ExtResource( 7 )] +position = Vector2( 182.244, 321.441 ) +z_index = -1 + +[connection signal="timeout" from="UserInterface/HUD/HUDOverlay/GetBackTimer/Timer" to="GameplaySignalManager" method="_on_Timer_timeout"] +[connection signal="getback_timer_up" from="GameplaySignalManager" to="Blobby" method="_on_GameplaySignalManager_getback_timer_up"] +[connection signal="terminal_activated" from="GameplaySignalManager" to="UserInterface/HUD" method="_on_SignalManager_terminal_activated"] + +[editable path="UserInterface"] +[editable path="UserInterface/HUD"] +[editable path="Blobby"] +[editable path="TreeWhyButtons"] +[editable path="TreeWhyButtons/WhyButton1"] +[editable path="TreeWhyButtons/WhyButton2"] +[editable path="TreeWhyButtons/WhyButton3"] diff --git a/src/UserInterface/Buttons/RetryButton.gd b/src/UserInterface/Buttons/RetryButton.gd index a211e4d..dbec988 100644 --- a/src/UserInterface/Buttons/RetryButton.gd +++ b/src/UserInterface/Buttons/RetryButton.gd @@ -2,6 +2,6 @@ extends Button func _on_button_up() -> void: - PlayerData.score = 0 + GlobalData.score = 0 get_tree().paused = false get_tree().reload_current_scene() diff --git a/src/UserInterface/Buttons/StatsLabel.gd b/src/UserInterface/Buttons/StatsLabel.gd index 5e4d8aa..701cb6c 100644 --- a/src/UserInterface/Buttons/StatsLabel.gd +++ b/src/UserInterface/Buttons/StatsLabel.gd @@ -1,4 +1,4 @@ extends Label func _ready(): - self.text = self.text % [PlayerData.score, PlayerData.deaths] + self.text = self.text % [GlobalData.score, GlobalData.deaths] diff --git a/src/UserInterface/Screens/HUD.gd b/src/UserInterface/Screens/HUD.gd index aa42f52..b799155 100644 --- a/src/UserInterface/Screens/HUD.gd +++ b/src/UserInterface/Screens/HUD.gd @@ -9,7 +9,7 @@ onready var score: Label = $HUDOverlay/Score func _ready(): #TODO Connect what HOW? - PlayerData.connect("score_updated", self, "update_interface") + GlobalData.connect("score_updated", self, "update_interface") update_interface() func _process(delta): @@ -29,7 +29,7 @@ func _zoom_timer() -> void: func update_interface() -> void: - score.text = "Score: %s" % PlayerData.score + score.text = "Score: %s" % GlobalData.score func _on_SignalManager_terminal_activated() -> void: diff --git a/src/UserInterface/Screens/PauseScreen.gd b/src/UserInterface/Screens/PauseScreen.gd index 0a3b3f9..cf5574d 100644 --- a/src/UserInterface/Screens/PauseScreen.gd +++ b/src/UserInterface/Screens/PauseScreen.gd @@ -8,10 +8,10 @@ onready var pause_title: Label = get_node("PauseOverlay/Title") var paused := false setget set_paused func _ready(): - PlayerData.connect("player_died", self, "_on_PlayerData_player_died") + GlobalData.connect("player_died", self, "_on_GlobalData_player_died") -func _on_PlayerData_player_died() -> void: +func _on_GlobalData_player_died() -> void: self.paused = true pause_title.text = "You lost" diff --git a/src/Utilities/GameplaySignalManager.gd b/src/Utilities/GameplaySignalManager.gd index e4f3aa4..69d5f63 100644 --- a/src/Utilities/GameplaySignalManager.gd +++ b/src/Utilities/GameplaySignalManager.gd @@ -2,8 +2,30 @@ extends Node2D signal terminal_activated() signal getback_timer_up() - - +signal score_updated +signal player_died func _on_Timer_timeout() -> void: emit_signal("getback_timer_up") + +#TODO Easteregg pls +var score: = 0 setget set_score +var deaths: = 0 setget set_deaths +var is_dead: = false setget set_dead + + +func reset() -> void: + score = 0 + deaths = 0 + +#TODO Remove score +func set_score(value: int) -> void: + score = value + emit_signal("score_updated") + +func set_deaths(value: int) -> void: + deaths = value + #emit_signal("player_died") + +func set_dead(value: bool) -> void: + is_dead = value \ No newline at end of file