first background, new grass asset, player-detached camera

This commit is contained in:
Jakob Feldmann 2022-10-17 21:15:19 +02:00
parent f04dfdbdfe
commit ce838b0602
32 changed files with 907 additions and 291 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.6 KiB

View File

@ -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

View File

@ -5,6 +5,6 @@ onready var anim_player: AnimationPlayer = get_node("AnimationPlayer")
export var scoreValue: = 100 export var scoreValue: = 100
func _on_body_entered(body: Node) -> void: func _on_body_entered(body: Node) -> void:
PlayerData.score += scoreValue GlobalData.score += scoreValue
anim_player.play("fade_out") anim_player.play("fade_out")
queue_free() queue_free()

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.9 KiB

View File

@ -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

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.0 KiB

View File

@ -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

View File

@ -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}"

View File

@ -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}"

View File

@ -38,13 +38,13 @@ _global_script_class_icons={
[application] [application]
config/name="Wumper" config/name="Blobby"
run/main_scene="res://src/UserInterface/Screens/MainScreen.tscn" run/main_scene="res://src/UserInterface/Screens/MainScreen.tscn"
config/icon="res://icon.png" config/icon="res://icon.png"
[autoload] [autoload]
PlayerData="*res://src/Autoload/PlayerData.tscn" GlobalData="*res://src/Autoload/GlobalData.tscn"
[debug] [debug]
@ -68,6 +68,7 @@ enabled=PoolStringArray( "res://addons/AsepriteWizard/plugin.cfg" )
window=false window=false
grav=false grav=false
layer=false layer=false
viewport=true
[importer_defaults] [importer_defaults]

View File

@ -1,16 +1,20 @@
extends Player extends Player
const PhysicsFunc = preload("res://src/Utilities/Physic/PhysicsFunc.gd") const PhysicsFunc = preload("res://src/Utilities/Physic/PhysicsFunc.gd")
export var jump_buffer_filled := false export var jump_buffer_filled := false
#TODO Switch to new unique node name method for referencing #TODO Switch to new unique node name method for referencing
onready var left_wall_raycasts = $WallRaycasts/LeftWallRaycast onready var left_wall_raycasts = $WallRaycasts/LeftWallRaycast
onready var right_wall_raycasts = $WallRaycasts/RightWallRaycast onready var right_wall_raycasts = $WallRaycasts/RightWallRaycast
onready var ground_raycasts = $GroundRaycasts
onready var player_state_machine = $BlobbyStateMachine onready var player_state_machine = $BlobbyStateMachine
onready var init_boost = player_state_machine.init_boost onready var init_boost = player_state_machine.init_boost
onready var init_boost_type = player_state_machine.init_boost_type onready var init_boost_type = player_state_machine.init_boost_type
onready var effect_player = $BlobbyActionEffects/AnimationPlayer onready var effect_player = $BlobbyActionEffects/AnimationPlayer
var wall_touch_direction = 1 var wall_touch_direction = 1
var stomping = false var stomping = false
var floor_angle = Vector2(0,0)
# When the Enemy stomp AREA enters the enemy collision area -> stomp # When the Enemy stomp AREA enters the enemy collision area -> stomp
func _on_BlobbySkin_area_entered(area: Area2D) -> void: func _on_BlobbySkin_area_entered(area: Area2D) -> void:
@ -351,33 +355,17 @@ func execute_airstrafe(
air_strafe_charges -= 1 air_strafe_charges -= 1
return linear_velocity return linear_velocity
func execute_movement() -> void: func execute_movement() -> void:
print(get_floor_angle()) velocity = move_and_slide(velocity, FLOOR_NORMAL,true, 4, 0.785398,false)
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)
#TODO Limit movement
func die() -> void: func die() -> void:
z_index = 1 z_index = 1
$BlobbyCam.position = position GlobalData.is_dead = true
$BlobbyCam/AnimationPlayer.play("deathCam") GlobalData.deaths += 1
$BlobbySprite/AnimationTree.active = false $BlobbySprite/AnimationTree.active = false
$BlobbySprite/BlobbymationPlayer.play("dying") $BlobbySprite/BlobbymationPlayer.play("dying3")
PlayerData.is_dead = true
PlayerData.deaths += 1
func respawn() -> void: func respawn() -> void:
get_tree().reload_current_scene() get_tree().reload_current_scene()

View File

@ -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://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/BlobbyStateMachine.gd" type="Script" id=3]
[ext_resource path="res://src/Actors/Blobby/Blobby.gd" type="Script" id=4] [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] [ext_resource path="res://assets/meta/new_dynamicfont.tres" type="DynamicFont" id=5]
@ -10,7 +9,7 @@
extents = Vector2( 14.9127, 5.98593 ) extents = Vector2( 14.9127, 5.98593 )
[sub_resource type="StreamTexture" id=62] [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] [sub_resource type="AnimationNodeAnimation" id=126]
animation = "duckTurn" animation = "duckTurn"
@ -284,7 +283,7 @@ states/wallsliding/node = SubResource( 96 )
states/wallsliding/position = Vector2( 1795.54, 493.009 ) 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 ) ] 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" start_node = "idling"
graph_offset = Vector2( 1113.54, -70.991 ) graph_offset = Vector2( 1041.54, -349.991 )
[sub_resource type="AnimationNodeStateMachinePlayback" id=48] [sub_resource type="AnimationNodeStateMachinePlayback" id=48]
@ -1094,6 +1093,36 @@ tracks/0/keys = {
"values": [ 30 ] "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] [sub_resource type="Animation" id=6]
length = 0.1 length = 0.1
loop = true loop = true
@ -4408,207 +4437,6 @@ tracks/2/keys = {
"values": [ Vector2( -1, 1 ) ] "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"]] [node name="Blobby" type="KinematicBody2D" groups=["player"]]
collision_mask = 248 collision_mask = 248
collision/safe_margin = 0.001 collision/safe_margin = 0.001
@ -4664,6 +4492,8 @@ anims/duckTurn = SubResource( 68 )
anims/ducking = SubResource( 69 ) anims/ducking = SubResource( 69 )
anims/duckingLeft = SubResource( 107 ) anims/duckingLeft = SubResource( 107 )
anims/dying = SubResource( 184 ) anims/dying = SubResource( 184 )
anims/dying2 = SubResource( 187 )
anims/dying3 = SubResource( 188 )
anims/falling = SubResource( 6 ) anims/falling = SubResource( 6 )
anims/fallingLeft = SubResource( 106 ) anims/fallingLeft = SubResource( 106 )
anims/idleTurn = SubResource( 70 ) anims/idleTurn = SubResource( 70 )
@ -4711,27 +4541,11 @@ frame = 8
position = Vector2( 0.0392303, -10.002 ) position = Vector2( 0.0392303, -10.002 )
shape = SubResource( 1 ) 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="."] [node name="BlobbyStateMachine" type="Node" parent="."]
script = ExtResource( 3 ) script = ExtResource( 3 )
coyote_hanging = null
init_boost = null
init_boost_type = null
[node name="JumpBufferTimer" type="Timer" parent="BlobbyStateMachine"] [node name="JumpBufferTimer" type="Timer" parent="BlobbyStateMachine"]
wait_time = 0.067 wait_time = 0.067
@ -4747,7 +4561,8 @@ margin_left = -37.0
margin_top = -44.0 margin_top = -44.0
margin_right = 36.0 margin_right = 36.0
margin_bottom = -30.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 ) custom_fonts/font = ExtResource( 5 )
text = "Ihre Werbung" text = "Ihre Werbung"
align = 1 align = 1
@ -4786,6 +4601,21 @@ exclude_parent = false
cast_to = Vector2( 1.5, 0 ) cast_to = Vector2( 1.5, 0 )
collision_mask = 56 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="area_entered" from="BlobbySkin" to="." method="_on_BlobbySkin_area_entered"]
[connection signal="body_entered" from="BlobbySkin" to="." method="_on_BlobbySkin_body_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"] [connection signal="got_grounded" from="BlobbyStateMachine" to="." method="_on_Blobby_got_grounded"]

View File

@ -5,33 +5,41 @@ var vertical_facing = 0
var camera_horizontal_shift = 70 var camera_horizontal_shift = 70
var camera_vertical_shift = 90 var camera_vertical_shift = 90
onready var prev_camera_pos = get_camera_position()
onready var tween = $ShiftTween onready var tween = $ShiftTween
onready var original_x_zoom = zoom.x onready var original_x_zoom = zoom.x
onready var original_y_zoom = zoom.y 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 # Gets the camera limits from the tilemap of the level
# Requires "TileMap" to be a sibling of blobby # Requires "TileMap" to be a sibling of blobby
func _ready(): func _ready():
_set_boundaries() _set_boundaries()
self.position = blobby.global_position
prev_camera_pos = get_camera_screen_center()
func _physics_process(_delta: float) -> void: func _physics_process(_delta: float) -> void:
if(!PlayerData.is_dead): if(!GlobalData.is_dead):
_adapt_to_movement() _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(): func _set_boundaries():
# This is ok, because it only happens on initialization # This is ok, because it only happens on initialization
# But it is also quite fickle # 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 # TODO This goes wrong when overwriting old tiles with new sprites
# New pngs -> completely new tiles and rebuild map # New pngs -> completely new tiles and rebuild map
var rect = tilemap.get_used_rect() var rect = tilemap.get_used_rect()
var cell_size = tilemap.cell_size var cell_size = tilemap.cell_size
limit_right = rect.end.x * cell_size.x limit_right = rect.end.x * cell_size.x - camera_horizontal_shift
limit_left = rect.position.x * cell_size.x limit_left = rect.position.x * cell_size.x + camera_horizontal_shift
limit_top = rect.position.y * cell_size.y # TODO When vertical scrolling is fixed
limit_bottom = rect.end.y * cell_size.y 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 screen_size = get_viewport_rect()
var h_pixels = limit_right - limit_left var h_pixels = limit_right - limit_left
var v_pixels = limit_bottom - limit_top var v_pixels = limit_bottom - limit_top
@ -49,7 +57,7 @@ func _adapt_to_movement():
var target_offset: Vector2 = Vector2(0,0) var target_offset: Vector2 = Vector2(0,0)
var tween_v = false var tween_v = false
var tween_h = 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: if new_h_facing != 0 && horizontal_facing != new_h_facing:
horizontal_facing = new_h_facing horizontal_facing = new_h_facing
target_offset.x = camera_horizontal_shift * horizontal_facing target_offset.x = camera_horizontal_shift * horizontal_facing
@ -66,14 +74,16 @@ func _adapt_to_movement():
#TODO Motion may be too complex #TODO Motion may be too complex
tween.interpolate_property( tween.interpolate_property(
self, self,
"transform:origin", "offset",
self.transform.origin, offset,
target_offset, target_offset,
1.2, 1.2,
Tween.TRANS_SINE, Tween.TRANS_SINE,
Tween.EASE_OUT Tween.EASE_OUT
) )
tween.start() tween.start()
self.position = blobby.global_position
func _death_cam(): func _death_cam():
pass $AnimationPlayer.play("deathCam")
#TODO Animation not always centered

View File

@ -25,7 +25,7 @@ func _ready():
add_state("fall") add_state("fall")
add_state("wallslide") add_state("wallslide")
state = states.idle state = states.idle
PlayerData.is_dead = false GlobalData.is_dead = false
set_state(states.idle) set_state(states.idle)

View File

@ -30,7 +30,7 @@ func player_on_floor_direction():
func die() -> void: func die() -> void:
queue_free() queue_free()
PlayerData.score += score GlobalData.score += score
func _on_EnemySkin_area_entered(area:Area2D) -> void: func _on_EnemySkin_area_entered(area:Area2D) -> void:
if area.is_in_group("harmful"): if area.is_in_group("harmful"):

View File

@ -25,7 +25,7 @@ func _physics_process(delta: float) -> void:
func die() -> void: func die() -> void:
queue_free() queue_free()
PlayerData.score += score GlobalData.score += score
func _on_EnemySkin_area_entered(area:Area2D) -> void: func _on_EnemySkin_area_entered(area:Area2D) -> void:

View File

@ -30,7 +30,7 @@ func is_at_ledge():
func die() -> void: func die() -> void:
queue_free() queue_free()
PlayerData.score += score GlobalData.score += score
func _on_EnemySkin_area_entered(area:Area2D) -> void: func _on_EnemySkin_area_entered(area:Area2D) -> void:

View File

@ -31,7 +31,7 @@ func is_safe_drop():
func die() -> void: func die() -> void:
queue_free() queue_free()
PlayerData.score += score GlobalData.score += score
func _on_EnemySkin_area_entered(area:Area2D) -> void: func _on_EnemySkin_area_entered(area:Area2D) -> void:
if area.is_in_group("harmful"): if area.is_in_group("harmful"):

View File

@ -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 )

View File

@ -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 )

View File

@ -6,7 +6,7 @@ const PhysicsConst = preload("res://src/Utilities/Physic/PhysicsConst.gd")
var mass = 1 var mass = 1
var coupled_mass = mass var coupled_mass = mass
var spring_k = -1000 var spring_k = -400
var start_y = 0 var start_y = 0
var y_velocity = 0 var y_velocity = 0
var friction = 0.91 var friction = 0.91

View File

@ -7,7 +7,7 @@
extents = Vector2( 11.4863, 2.10568 ) extents = Vector2( 11.4863, 2.10568 )
[sub_resource type="RectangleShape2D" id=1] [sub_resource type="RectangleShape2D" id=1]
extents = Vector2( 11.918, 1.57982 ) extents = Vector2( 11.925, 0.0109166 )
[sub_resource type="RectangleShape2D" id=3] [sub_resource type="RectangleShape2D" id=3]
extents = Vector2( 11.9158, 2.06284 ) extents = Vector2( 11.9158, 2.06284 )
@ -32,7 +32,7 @@ collision_layer = 32
collision_mask = 41 collision_mask = 41
[node name="CollisionShape2D" type="CollisionShape2D" parent="SpringBody"] [node name="CollisionShape2D" type="CollisionShape2D" parent="SpringBody"]
position = Vector2( 0.00390673, 0 ) position = Vector2( 0.0109062, -1.5689 )
shape = SubResource( 1 ) shape = SubResource( 1 )
one_way_collision = true one_way_collision = true

File diff suppressed because one or more lines are too long

View File

@ -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"]

View File

@ -2,6 +2,6 @@ extends Button
func _on_button_up() -> void: func _on_button_up() -> void:
PlayerData.score = 0 GlobalData.score = 0
get_tree().paused = false get_tree().paused = false
get_tree().reload_current_scene() get_tree().reload_current_scene()

View File

@ -1,4 +1,4 @@
extends Label extends Label
func _ready(): func _ready():
self.text = self.text % [PlayerData.score, PlayerData.deaths] self.text = self.text % [GlobalData.score, GlobalData.deaths]

View File

@ -9,7 +9,7 @@ onready var score: Label = $HUDOverlay/Score
func _ready(): func _ready():
#TODO Connect what HOW? #TODO Connect what HOW?
PlayerData.connect("score_updated", self, "update_interface") GlobalData.connect("score_updated", self, "update_interface")
update_interface() update_interface()
func _process(delta): func _process(delta):
@ -29,7 +29,7 @@ func _zoom_timer() -> void:
func update_interface() -> void: func update_interface() -> void:
score.text = "Score: %s" % PlayerData.score score.text = "Score: %s" % GlobalData.score
func _on_SignalManager_terminal_activated() -> void: func _on_SignalManager_terminal_activated() -> void:

View File

@ -8,10 +8,10 @@ onready var pause_title: Label = get_node("PauseOverlay/Title")
var paused := false setget set_paused var paused := false setget set_paused
func _ready(): 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 self.paused = true
pause_title.text = "You lost" pause_title.text = "You lost"

View File

@ -2,8 +2,30 @@ extends Node2D
signal terminal_activated() signal terminal_activated()
signal getback_timer_up() signal getback_timer_up()
signal score_updated
signal player_died
func _on_Timer_timeout() -> void: func _on_Timer_timeout() -> void:
emit_signal("getback_timer_up") 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