Überholtes Management Level State und Signals

This commit is contained in:
Jakob Feldmann 2023-03-12 22:45:00 +01:00
parent 2062e84d09
commit d5197ea39e
53 changed files with 489 additions and 247 deletions

View File

@ -1,10 +0,0 @@
extends Area2D
onready var anim_player: AnimationPlayer = get_node("AnimationPlayer")
export var scoreValue: = 100
func _on_body_entered(body: Node) -> void:
GlobalState.score += scoreValue
anim_player.play("fade_out")
queue_free()

View File

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 1.9 KiB

View File

@ -0,0 +1,35 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/FlyingLaserCutter.png-c86b91b5050518f7eae705da3712cbdc.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/contraption/FlyingLaserCutter.png"
dest_files=[ "res://.import/FlyingLaserCutter.png-c86b91b5050518f7eae705da3712cbdc.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.

After

Width:  |  Height:  |  Size: 2.0 KiB

View File

@ -0,0 +1,35 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/FlyingLaserCutterShaded.png-bdace770643648214f1e8737a3432eb7.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/contraption/FlyingLaserCutterShaded.png"
dest_files=[ "res://.import/FlyingLaserCutterShaded.png-bdace770643648214f1e8737a3432eb7.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.

Before

Width:  |  Height:  |  Size: 370 B

After

Width:  |  Height:  |  Size: 425 B

View File

@ -10,9 +10,9 @@ config_version=4
_global_script_classes=[ { _global_script_classes=[ {
"base": "KinematicBody2D", "base": "KinematicBody2D",
"class": "Player", "class": "Actor",
"language": "GDScript", "language": "GDScript",
"path": "res://src/Actors/Player.gd" "path": "res://src/Actors/Actor.gd"
}, { }, {
"base": "Line2D", "base": "Line2D",
"class": "RayCastDebugLines", "class": "RayCastDebugLines",
@ -30,7 +30,7 @@ _global_script_classes=[ {
"path": "res://src/StateMachines/StateMachine.gd" "path": "res://src/StateMachines/StateMachine.gd"
} ] } ]
_global_script_class_icons={ _global_script_class_icons={
"Player": "", "Actor": "",
"RayCastDebugLines": "", "RayCastDebugLines": "",
"RayCaster": "", "RayCaster": "",
"StateMachine": "" "StateMachine": ""
@ -42,10 +42,6 @@ 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]
GlobalState="*res://src/Autoload/GlobalState.tscn"
[debug] [debug]
settings/fps/force_fps=144 settings/fps/force_fps=144

View File

@ -1,5 +1,9 @@
extends KinematicBody2D extends KinematicBody2D
class_name Player class_name Actor
onready var levelState := get_tree().root.get_child(0).get_node("%LevelState")
onready var signalManager := get_tree().root.get_child(0).get_node("%SignalManager")
const PhysicsConst = preload("res://src/Utilities/Physic/PhysicsConst.gd") const PhysicsConst = preload("res://src/Utilities/Physic/PhysicsConst.gd")
const FLOOR_NORMAL := Vector2.UP const FLOOR_NORMAL := Vector2.UP

View File

@ -1,14 +1,16 @@
extends Actor
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 effect_player = $BlobbyActionEffects/AnimationPlayer
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
var wall_touch_direction = 1 var wall_touch_direction = 1
@ -356,7 +358,7 @@ func execute_airstrafe(
return linear_velocity return linear_velocity
func execute_movement() -> void: func execute_movement() -> void:
if(GlobalState.is_dead): if(levelState.is_dead):
return return
var snap = Vector2.DOWN * 128 var snap = Vector2.DOWN * 128
var center_floor_rot = 0 var center_floor_rot = 0
@ -408,8 +410,8 @@ func calculate_slope_rotation(onfloor: bool) -> float:
func die() -> void: func die() -> void:
z_index = 1 z_index = 1
GlobalState.is_dead = true levelState.is_dead = true
GlobalState.deaths += 1 levelState.deaths += 1
$BlobbySprite/AnimationTree.active = false $BlobbySprite/AnimationTree.active = false
$BlobbySprite/BlobbymationPlayer.play("dying3") $BlobbySprite/BlobbymationPlayer.play("dying3")
@ -433,10 +435,6 @@ func _on_Blobby_got_grounded() -> void:
air_strafe_charges = air_strafe_charges + 1 if max_air_strafe_charges > air_strafe_charges else 0 air_strafe_charges = air_strafe_charges + 1 if max_air_strafe_charges > air_strafe_charges else 0
func _on_GameplaySignalManager_getback_timer_up() -> void:
die()
func _on_BlobbySkin_body_exited(body:Node) -> void: func _on_BlobbySkin_body_exited(body:Node) -> void:
# This is for drop through platforms # This is for drop through platforms
if body.get_collision_mask_bit(7): if body.get_collision_mask_bit(7):

View File

@ -4514,6 +4514,7 @@ size = Vector2( 128, 128 )
transparent_bg = true transparent_bg = true
[node name="IridescenceBall" parent="BubbleShieldViewport" instance=ExtResource( 6 )] [node name="IridescenceBall" parent="BubbleShieldViewport" instance=ExtResource( 6 )]
visible = false
[node name="BlobbySprite" type="Sprite" parent="."] [node name="BlobbySprite" type="Sprite" parent="."]
position = Vector2( 0, -16 ) position = Vector2( 0, -16 )
@ -4609,7 +4610,6 @@ position = Vector2( 0.0392303, -10.002 )
shape = SubResource( 1 ) shape = SubResource( 1 )
[node name="WallRaycasts" type="Node2D" parent="."] [node name="WallRaycasts" type="Node2D" parent="."]
visible = false
position = Vector2( 0, -1 ) position = Vector2( 0, -1 )
[node name="LeftWallRaycast" type="Node2D" parent="WallRaycasts"] [node name="LeftWallRaycast" type="Node2D" parent="WallRaycasts"]
@ -4618,13 +4618,13 @@ position = Vector2( 0, -1 )
position = Vector2( -11.9763, -5 ) position = Vector2( -11.9763, -5 )
enabled = true enabled = true
cast_to = Vector2( -1.5, 0 ) cast_to = Vector2( -1.5, 0 )
collision_mask = 56 collision_mask = 40
[node name="Left_Wallcast2" type="RayCast2D" parent="WallRaycasts/LeftWallRaycast"] [node name="Left_Wallcast2" type="RayCast2D" parent="WallRaycasts/LeftWallRaycast"]
position = Vector2( -11.9763, 5 ) position = Vector2( -11.9763, 5 )
enabled = true enabled = true
cast_to = Vector2( -1.5, 0 ) cast_to = Vector2( -1.5, 0 )
collision_mask = 56 collision_mask = 40
[node name="RightWallRaycast" type="Node2D" parent="WallRaycasts"] [node name="RightWallRaycast" type="Node2D" parent="WallRaycasts"]
@ -4633,14 +4633,14 @@ position = Vector2( 12.0551, -5 )
enabled = true enabled = true
exclude_parent = false exclude_parent = false
cast_to = Vector2( 1.5, 0 ) cast_to = Vector2( 1.5, 0 )
collision_mask = 56 collision_mask = 40
[node name="Right_Wallcast2" type="RayCast2D" parent="WallRaycasts/RightWallRaycast"] [node name="Right_Wallcast2" type="RayCast2D" parent="WallRaycasts/RightWallRaycast"]
position = Vector2( 12.0551, 5 ) position = Vector2( 12.0551, 5 )
enabled = true enabled = true
exclude_parent = false exclude_parent = false
cast_to = Vector2( 1.5, 0 ) cast_to = Vector2( 1.5, 0 )
collision_mask = 56 collision_mask = 40
[node name="SlopeRaycastLeft" type="RayCast2D" parent="."] [node name="SlopeRaycastLeft" type="RayCast2D" parent="."]
visible = false visible = false

View File

@ -18,6 +18,7 @@ var didTurn
# Adds the intial states # Adds the intial states
func _ready(): func _ready():
signalManager.connect("getback_timer_up", parent, "die")
add_state("idle") add_state("idle")
add_state("duck") add_state("duck")
add_state("run") add_state("run")
@ -26,7 +27,7 @@ func _ready():
add_state("fall") add_state("fall")
add_state("wallslide") add_state("wallslide")
state = states.idle state = states.idle
GlobalState.is_dead = false levelState.is_dead = false
set_state(states.idle) set_state(states.idle)

View File

@ -17,6 +17,8 @@ export var camera_horizontal_shift = 60
export var offset_reset_seconds := 1 export var offset_reset_seconds := 1
export var offset_adapt_seconds := 1 export var offset_adapt_seconds := 1
onready var levelState := $"%LevelState"
onready var signalManager := $"%SignalManager"
onready var shiftLeft = $CameraAnimationPlayer.get_animation("shiftingLeft") onready var shiftLeft = $CameraAnimationPlayer.get_animation("shiftingLeft")
onready var shiftRight = $CameraAnimationPlayer.get_animation("shiftingRight") onready var shiftRight = $CameraAnimationPlayer.get_animation("shiftingRight")
onready var shiftCenter = $CameraAnimationPlayer.get_animation("shiftingCenter") onready var shiftCenter = $CameraAnimationPlayer.get_animation("shiftingCenter")
@ -42,7 +44,12 @@ func _ready():
# get_node("LightAnimationPlayer").play("Pulsing") # get_node("LightAnimationPlayer").play("Pulsing")
func _physics_process(delta: float) -> void: func _physics_process(delta: float) -> void:
if(!GlobalState.is_dead): if(!levelState.is_dead):
if(anim_player.is_playing()):
position = blobby.position
prev_pos = position
_update_lighting_shader()
return
var player_vel = (blobby.position - prev_pos)/delta var player_vel = (blobby.position - prev_pos)/delta
# TODO Take average of velocity here # TODO Take average of velocity here
if(abs(player_vel.x) >= blobby.max_velocity["walk"] * 0.97 if(abs(player_vel.x) >= blobby.max_velocity["walk"] * 0.97
@ -61,7 +68,6 @@ func _physics_process(delta: float) -> void:
left_move_time = max(0, left_move_time - delta) left_move_time = max(0, left_move_time - delta)
right_move_time = max(0, right_move_time - delta) right_move_time = max(0, right_move_time - delta)
if(!anim_player.is_playing()):
_adapt_to_movement(player_vel) _adapt_to_movement(player_vel)
position = blobby.position position = blobby.position
prev_pos = position prev_pos = position
@ -104,8 +110,6 @@ func _adapt_to_movement(velocity: Vector2) -> void:
var center = get_camera_screen_center() var center = get_camera_screen_center()
var left_edge_pos = center.x - screen_rect.x/2 + camera_horizontal_shift var left_edge_pos = center.x - screen_rect.x/2 + camera_horizontal_shift
var right_edge_pos = center.x + screen_rect.x/2 - camera_horizontal_shift var right_edge_pos = center.x + screen_rect.x/2 - camera_horizontal_shift
# TODO: Blobby can go off screen, when shifting camera at level edge and returning i
# n the opposite direction slowly
if(left_move_time >= offset_adapt_seconds && !anim_player.is_playing()): if(left_move_time >= offset_adapt_seconds && !anim_player.is_playing()):
left_move_time = 0 left_move_time = 0
target_offset.x = -camera_horizontal_shift target_offset.x = -camera_horizontal_shift

View File

@ -366,6 +366,30 @@ tracks/4/keys = {
"update": 0, "update": 0,
"values": [ 10000000, 10000000 ] "values": [ 10000000, 10000000 ]
} }
tracks/5/type = "value"
tracks/5/path = NodePath(".:drag_margin_left")
tracks/5/interp = 1
tracks/5/loop_wrap = true
tracks/5/imported = false
tracks/5/enabled = true
tracks/5/keys = {
"times": PoolRealArray( 0, 0.6 ),
"transitions": PoolRealArray( 1, 0.5 ),
"update": 0,
"values": [ 0.2, 0.05 ]
}
tracks/6/type = "value"
tracks/6/path = NodePath(".:drag_margin_right")
tracks/6/interp = 1
tracks/6/loop_wrap = true
tracks/6/imported = false
tracks/6/enabled = true
tracks/6/keys = {
"times": PoolRealArray( 0, 0.6 ),
"transitions": PoolRealArray( 1, 0.5 ),
"update": 0,
"values": [ 0.2, 0.05 ]
}
[sub_resource type="Animation" id=12] [sub_resource type="Animation" id=12]
resource_name = "shiftingLeft" resource_name = "shiftingLeft"
@ -394,6 +418,18 @@ tracks/1/keys = {
"update": 0, "update": 0,
"values": [ -10000000, -10000000 ] "values": [ -10000000, -10000000 ]
} }
tracks/2/type = "value"
tracks/2/path = NodePath(".:drag_margin_left")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/imported = false
tracks/2/enabled = false
tracks/2/keys = {
"times": PoolRealArray( 0, 0.6 ),
"transitions": PoolRealArray( 1, 1 ),
"update": 0,
"values": [ 0.2, 0.05 ]
}
[sub_resource type="Animation" id=13] [sub_resource type="Animation" id=13]
resource_name = "shiftingRight" resource_name = "shiftingRight"
@ -422,6 +458,18 @@ tracks/1/keys = {
"update": 0, "update": 0,
"values": [ 10000000, 10000000 ] "values": [ 10000000, 10000000 ]
} }
tracks/2/type = "value"
tracks/2/path = NodePath(".:drag_margin_right")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/imported = false
tracks/2/enabled = false
tracks/2/keys = {
"times": PoolRealArray( 0, 0.6 ),
"transitions": PoolRealArray( 1, 1 ),
"update": 0,
"values": [ 0.2, 0.05 ]
}
[sub_resource type="Animation" id=9] [sub_resource type="Animation" id=9]
resource_name = "Pulsing" resource_name = "Pulsing"
@ -529,9 +577,7 @@ zoom = Vector2( 0.75, 0.75 )
limit_smoothed = true limit_smoothed = true
drag_margin_h_enabled = true drag_margin_h_enabled = true
drag_margin_v_enabled = true drag_margin_v_enabled = true
drag_margin_left = 0.05
drag_margin_top = 0.0 drag_margin_top = 0.0
drag_margin_right = 0.05
drag_margin_bottom = 0.0 drag_margin_bottom = 0.0
editor_draw_drag_margin = true editor_draw_drag_margin = true
script = ExtResource( 1 ) script = ExtResource( 1 )
@ -633,10 +679,10 @@ texture = ExtResource( 8 )
[node name="AnimatedSprite" type="AnimatedSprite" parent="ParallaxBackground/ParallaxLayer5"] [node name="AnimatedSprite" type="AnimatedSprite" parent="ParallaxBackground/ParallaxLayer5"]
visible = false visible = false
frames = SubResource( 7 ) frames = SubResource( 7 )
frame = 4 frame = 13
playing = true playing = true
[node name="AnimatedSprite2" type="AnimatedSprite" parent="ParallaxBackground/ParallaxLayer5"] [node name="AnimatedSprite2" type="AnimatedSprite" parent="ParallaxBackground/ParallaxLayer5"]
frames = SubResource( 8 ) frames = SubResource( 8 )
frame = 9 frame = 4
playing = true playing = true

View File

@ -1,6 +1,4 @@
extends Player extends Actor
export var score := 100
onready var left_src = $SlopeRaycastLeft onready var left_src = $SlopeRaycastLeft
onready var right_src = $SlopeRaycastRight onready var right_src = $SlopeRaycastRight
@ -39,7 +37,7 @@ func _physics_process(delta: float) -> void:
func die() -> void: func die() -> void:
queue_free() queue_free()
GlobalState.score += score levelState.kills += 1
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

@ -1,12 +1,8 @@
extends Player extends Actor
export var score := 100
func _ready() -> void: func _ready() -> void:
set_physics_process(false) set_physics_process(false)
# TODO adapt to groups # TODO adapt to groups
func _on_StompDetector_body_entered(body: Node) -> void: func _on_StompDetector_body_entered(body: Node) -> void:
if body.global_position.y > get_node("StompDetector").global_position.y: if body.global_position.y > get_node("StompDetector").global_position.y:
@ -30,7 +26,7 @@ func player_on_floor_direction():
func die() -> void: func die() -> void:
queue_free() queue_free()
GlobalState.score += score levelState.kills += 1
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

@ -1,6 +1,4 @@
extends Player extends Actor
export var score := 100
func _ready() -> void: func _ready() -> void:
@ -26,7 +24,7 @@ func _physics_process(delta: float) -> void:
func die() -> void: func die() -> void:
queue_free() queue_free()
GlobalState.score += score levelState.kills += 1
func _on_EnemySkin_area_entered(area:Area2D) -> void: func _on_EnemySkin_area_entered(area:Area2D) -> void:

View File

@ -1,4 +1,4 @@
extends Player extends Actor
const PhysicsFunc = preload("res://src/Utilities/Physic/PhysicsFunc.gd") const PhysicsFunc = preload("res://src/Utilities/Physic/PhysicsFunc.gd")
onready var players = get_tree().get_nodes_in_group("player") onready var players = get_tree().get_nodes_in_group("player")
@ -12,7 +12,6 @@ onready var target_lost_timer: Timer
onready var update_navigation_timer: Timer onready var update_navigation_timer: Timer
onready var rng = RandomNumberGenerator.new() onready var rng = RandomNumberGenerator.new()
export var score := 100
# Is given in blocks # Is given in blocks
export var vision_distance := 6.0 export var vision_distance := 6.0
export var blindspot_angle := 20 export var blindspot_angle := 20
@ -155,7 +154,7 @@ func update_navigation() -> void:
nav_agent.set_target_location(next_waypoint) nav_agent.set_target_location(next_waypoint)
func die() -> void: func die() -> void:
GlobalState.score += score levelState.kills += 1
queue_free() queue_free()
func get_facing_direction() -> float: func get_facing_direction() -> float:

View File

@ -219,6 +219,7 @@ valign = 1
[node name="FlyerSprite" type="Sprite" parent="."] [node name="FlyerSprite" type="Sprite" parent="."]
unique_name_in_owner = true unique_name_in_owner = true
scale = Vector2( -1, 1 )
texture = ExtResource( 4 ) texture = ExtResource( 4 )
hframes = 2 hframes = 2

View File

@ -1,6 +1,4 @@
extends Player extends Actor
export var score := 100
func _ready() -> void: func _ready() -> void:
@ -30,7 +28,7 @@ func is_at_ledge():
func die() -> void: func die() -> void:
queue_free() queue_free()
GlobalState.score += score levelState.kills += 1
func _on_EnemySkin_area_entered(area:Area2D) -> void: func _on_EnemySkin_area_entered(area:Area2D) -> void:

View File

@ -1,6 +1,4 @@
extends Player extends Actor
export var score := 100
func _ready() -> void: func _ready() -> void:
@ -31,7 +29,7 @@ func is_safe_drop():
func die() -> void: func die() -> void:
queue_free() queue_free()
GlobalState.score += score levelState.kills += 1
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

@ -1,4 +1,4 @@
extends Player extends Actor
const PhysicsFunc = preload("res://src/Utilities/Physic/PhysicsFunc.gd") const PhysicsFunc = preload("res://src/Utilities/Physic/PhysicsFunc.gd")
onready var players = get_tree().get_nodes_in_group("player") onready var players = get_tree().get_nodes_in_group("player")
@ -13,7 +13,6 @@ onready var jump_timer: Timer
onready var target_lost_timer: Timer onready var target_lost_timer: Timer
onready var rng = RandomNumberGenerator.new() onready var rng = RandomNumberGenerator.new()
export var score := 100
# Is given in blocks # Is given in blocks
export var vision_distance := 6.0 export var vision_distance := 6.0
export var attack_jump_range := 6.0 export var attack_jump_range := 6.0
@ -98,7 +97,7 @@ func execute_movement(delta: float) -> void:
func die() -> void: func die() -> void:
GlobalState.score += score levelState.kills += 1
queue_free() queue_free()

View File

@ -350,7 +350,7 @@ extents = Vector2( 18.2143, 13.5955 )
[node name="WhatAreFrog" type="KinematicBody2D" groups=["harmful"]] [node name="WhatAreFrog" type="KinematicBody2D" groups=["harmful"]]
collision_layer = 2 collision_layer = 2
collision_mask = 9 collision_mask = 57
collision/safe_margin = 0.001 collision/safe_margin = 0.001
script = ExtResource( 2 ) script = ExtResource( 2 )

View File

@ -1,26 +0,0 @@
extends Node
signal score_updated
signal player_died
#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

View File

@ -1,6 +0,0 @@
[gd_scene load_steps=2 format=2]
[ext_resource path="res://src/Autoload/GlobalState.gd" type="Script" id=1]
[node name="GlobalState" type="Node"]
script = ExtResource( 1 )

View File

@ -1,9 +1,7 @@
[gd_scene load_steps=6 format=2] [gd_scene load_steps=6 format=2]
[ext_resource path="res://src/Contraptions/Platform/FlyingLaserCutter.gd" type="Script" id=1] [ext_resource path="res://src/Contraptions/Platform/FlyingLaserCutter.gd" type="Script" id=1]
[ext_resource path="res://assets/contraption/FlyingLaserCutterShaded.png" type="Texture" id=2]
[sub_resource type="StreamTexture" id=5]
load_path = "res://.import/FlyingLaserCutter.png-9cf80385a79c58041216f8c2509a5bab.stex"
[sub_resource type="Animation" id=2] [sub_resource type="Animation" id=2]
length = 2.4 length = 2.4
@ -25,7 +23,7 @@ tracks/0/keys = {
extents = Vector2( 11.4921, 11.9129 ) extents = Vector2( 11.4921, 11.9129 )
[sub_resource type="RectangleShape2D" id=4] [sub_resource type="RectangleShape2D" id=4]
extents = Vector2( 3.06672, 10.9923 ) extents = Vector2( 3.067, 10.5 )
[node name="FlyingLaserCutter" type="Node2D"] [node name="FlyingLaserCutter" type="Node2D"]
script = ExtResource( 1 ) script = ExtResource( 1 )
@ -36,7 +34,7 @@ collision_mask = 57
collision/safe_margin = 0.001 collision/safe_margin = 0.001
[node name="Sprite" type="Sprite" parent="FlyingLaserCutterBody"] [node name="Sprite" type="Sprite" parent="FlyingLaserCutterBody"]
texture = SubResource( 5 ) texture = ExtResource( 2 )
hframes = 5 hframes = 5
vframes = 5 vframes = 5
frame = 21 frame = 21
@ -48,20 +46,17 @@ __meta__ = {
anims/default = SubResource( 2 ) anims/default = SubResource( 2 )
[node name="CollisionShape2D" type="CollisionShape2D" parent="FlyingLaserCutterBody"] [node name="CollisionShape2D" type="CollisionShape2D" parent="FlyingLaserCutterBody"]
visible = false
position = Vector2( -0.461, 0 ) position = Vector2( -0.461, 0 )
shape = SubResource( 3 ) shape = SubResource( 3 )
[node name="LaserArea" type="Area2D" parent="FlyingLaserCutterBody" groups=["harmful"]] [node name="LaserArea" type="Area2D" parent="FlyingLaserCutterBody" groups=["harmful"]]
process_priority = -1 process_priority = -1
visible = false
collision_layer = 32 collision_layer = 32
collision_mask = 3 collision_mask = 3
[node name="PainZone" type="CollisionShape2D" parent="FlyingLaserCutterBody/LaserArea" groups=["harmful"]] [node name="PainZone" type="CollisionShape2D" parent="FlyingLaserCutterBody/LaserArea" groups=["harmful"]]
process_priority = -1 process_priority = -1
visible = false position = Vector2( 9.647, 0 )
position = Vector2( 9.64728, 0.0077219 )
shape = SubResource( 4 ) shape = SubResource( 4 )
[node name="Triggers" type="Node2D" parent="FlyingLaserCutterBody"] [node name="Triggers" type="Node2D" parent="FlyingLaserCutterBody"]

View File

@ -27,7 +27,7 @@ tracks/0/keys = {
script = ExtResource( 2 ) script = ExtResource( 2 )
[node name="KinematicBody2D" type="KinematicBody2D" parent="."] [node name="KinematicBody2D" type="KinematicBody2D" parent="."]
collision_layer = 8 collision_layer = 16
collision_mask = 0 collision_mask = 0
motion/sync_to_physics = true motion/sync_to_physics = true

View File

@ -27,7 +27,7 @@ tracks/0/keys = {
script = ExtResource( 2 ) script = ExtResource( 2 )
[node name="KinematicBody2D" type="KinematicBody2D" parent="."] [node name="KinematicBody2D" type="KinematicBody2D" parent="."]
collision_layer = 8 collision_layer = 16
collision_mask = 0 collision_mask = 0
motion/sync_to_physics = true motion/sync_to_physics = true

View File

@ -50,5 +50,5 @@ animations = [ {
position = Vector2( 0, 1.5 ) position = Vector2( 0, 1.5 )
z_index = -1 z_index = -1
frames = SubResource( 1 ) frames = SubResource( 1 )
frame = 19 frame = 11
playing = true playing = true

View File

@ -4,7 +4,7 @@ onready var buttonPlayer = $"%ButtonPlayer"
onready var activatorArea = $"%ActivatorArea" onready var activatorArea = $"%ActivatorArea"
onready var indicatorPlayer = $"%IndicatorPlayer" onready var indicatorPlayer = $"%IndicatorPlayer"
onready var elevator = get_node("./Portal") onready var elevator = get_node("./Portal")
onready var signalManager = get_node("../GameplaySignalManager") onready var signalManager = $"%SignalManager"
func selfActivate(): func selfActivate():

View File

@ -3,7 +3,6 @@
[ext_resource path="res://src/Contraptions/Triggers/ElevatorButton.gd" type="Script" id=1] [ext_resource path="res://src/Contraptions/Triggers/ElevatorButton.gd" type="Script" id=1]
[sub_resource type="StreamTexture" id=1] [sub_resource type="StreamTexture" id=1]
load_path = "res://.import/button.png-6b06252879983e2da39a6ce37483d567.stex"
[sub_resource type="Animation" id=2] [sub_resource type="Animation" id=2]
resource_name = "pushing" resource_name = "pushing"
@ -22,7 +21,6 @@ tracks/0/keys = {
} }
[sub_resource type="StreamTexture" id=17] [sub_resource type="StreamTexture" id=17]
load_path = "res://.import/buttonStateIndicator.png-4ad4dfff1d6add183d62f1b602452b7a.stex"
[sub_resource type="Animation" id=10] [sub_resource type="Animation" id=10]
length = 0.1 length = 0.1

View File

@ -1,4 +1,4 @@
[gd_scene load_steps=12 format=2] [gd_scene load_steps=14 format=2]
[ext_resource path="res://src/Environment/AlienShipTileSet.tres" type="TileSet" id=1] [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] [ext_resource path="res://src/Actors/Blobby/Blobby.tscn" type="PackedScene" id=2]
@ -7,7 +7,9 @@
[ext_resource path="res://src/Contraptions/Portal/Portal.tscn" type="PackedScene" id=5] [ext_resource path="res://src/Contraptions/Portal/Portal.tscn" type="PackedScene" id=5]
[ext_resource path="res://src/NeutralObjects/Coin.tscn" type="PackedScene" id=6] [ext_resource path="res://src/NeutralObjects/Coin.tscn" type="PackedScene" id=6]
[ext_resource path="res://src/UserInterface/UserInterface.tscn" type="PackedScene" id=7] [ext_resource path="res://src/UserInterface/UserInterface.tscn" type="PackedScene" id=7]
[ext_resource path="res://src/Utilities/GameplaySignalManager.gd" type="Script" id=10] [ext_resource path="res://src/Utilities/SignalManager.tscn" type="PackedScene" id=8]
[ext_resource path="res://src/Utilities/LevelState.tscn" type="PackedScene" id=9]
[ext_resource path="res://src/Utilities/LevelState.gd" type="Script" id=10]
[ext_resource path="res://src/Actors/BlobbyCam.tscn" type="PackedScene" id=12] [ext_resource path="res://src/Actors/BlobbyCam.tscn" type="PackedScene" id=12]
[ext_resource path="res://src/Environment/ShaderGrass.tscn" type="PackedScene" id=13] [ext_resource path="res://src/Environment/ShaderGrass.tscn" type="PackedScene" id=13]
@ -19,6 +21,12 @@ __meta__ = {
"_edit_vertical_guides_": [ 2880.0 ] "_edit_vertical_guides_": [ 2880.0 ]
} }
[node name="SignalManager" parent="." instance=ExtResource( 8 )]
[node name="LevelState" parent="." instance=ExtResource( 9 )]
unique_name_in_owner = true
script = ExtResource( 10 )
[node name="UserInterface" parent="." instance=ExtResource( 7 )] [node name="UserInterface" parent="." instance=ExtResource( 7 )]
[node name="Timer" parent="UserInterface/HUD/HUDOverlay/GetBackTimer" index="0"] [node name="Timer" parent="UserInterface/HUD/HUDOverlay/GetBackTimer" index="0"]
@ -28,10 +36,10 @@ wait_time = 20.0
drag_margin_bottom = 0.3 drag_margin_bottom = 0.3
[node name="AnimatedSprite" parent="BlobbyCam/ParallaxBackground/ParallaxLayer5" index="4"] [node name="AnimatedSprite" parent="BlobbyCam/ParallaxBackground/ParallaxLayer5" index="4"]
frame = 4 frame = 1
[node name="AnimatedSprite2" parent="BlobbyCam/ParallaxBackground/ParallaxLayer5" index="5"] [node name="AnimatedSprite2" parent="BlobbyCam/ParallaxBackground/ParallaxLayer5" index="5"]
frame = 12 frame = 5
[node name="Blobby" parent="." instance=ExtResource( 2 )] [node name="Blobby" parent="." instance=ExtResource( 2 )]
unique_name_in_owner = true unique_name_in_owner = true
@ -131,17 +139,11 @@ rotation = 1.57079
position = Vector2( 684, 12 ) position = Vector2( 684, 12 )
rotation = 1.57079 rotation = 1.57079
[node name="GameplaySignalManager" type="Node2D" parent="."]
script = ExtResource( 10 )
[node name="Portal" parent="." instance=ExtResource( 5 )] [node name="Portal" parent="." instance=ExtResource( 5 )]
position = Vector2( 1488, -120 ) position = Vector2( 1488, -120 )
next_scene = ExtResource( 4 ) next_scene = ExtResource( 4 )
[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="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"]
[connection signal="terminal_activated" from="GameplaySignalManager" to="UserInterface/HUD" method="_on_SignalManager_terminal_activated"]
[editable path="UserInterface"] [editable path="UserInterface"]
[editable path="UserInterface/HUD"] [editable path="UserInterface/HUD"]

View File

@ -1,4 +1,4 @@
[gd_scene load_steps=16 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/Environment/AlienShipTileSet.tres" type="TileSet" id=1]
[ext_resource path="res://src/Actors/Blobby/Blobby.tscn" type="PackedScene" id=2] [ext_resource path="res://src/Actors/Blobby/Blobby.tscn" type="PackedScene" id=2]
@ -7,8 +7,10 @@
[ext_resource path="res://src/Contraptions/Platform/FlyingPlatform.gd" type="Script" id=5] [ext_resource path="res://src/Contraptions/Platform/FlyingPlatform.gd" type="Script" id=5]
[ext_resource path="res://src/Contraptions/Portal/Portal.tscn" type="PackedScene" id=6] [ext_resource path="res://src/Contraptions/Portal/Portal.tscn" type="PackedScene" id=6]
[ext_resource path="res://src/UserInterface/UserInterface.tscn" type="PackedScene" id=7] [ext_resource path="res://src/UserInterface/UserInterface.tscn" type="PackedScene" id=7]
[ext_resource path="res://src/Utilities/LevelState.gd" type="Script" id=8]
[ext_resource path="res://assets/contraption/FlyingPlatformClean.png" type="Texture" id=9] [ext_resource path="res://assets/contraption/FlyingPlatformClean.png" type="Texture" id=9]
[ext_resource path="res://src/Utilities/GameplaySignalManager.gd" type="Script" id=10] [ext_resource path="res://src/Utilities/SignalManager.tscn" type="PackedScene" id=10]
[ext_resource path="res://src/Utilities/LevelState.tscn" type="PackedScene" id=11]
[ext_resource path="res://src/Actors/BlobbyCam.tscn" type="PackedScene" id=12] [ext_resource path="res://src/Actors/BlobbyCam.tscn" type="PackedScene" id=12]
[sub_resource type="AnimationNodeStateMachinePlayback" id=4] [sub_resource type="AnimationNodeStateMachinePlayback" id=4]
@ -73,6 +75,12 @@ __meta__ = {
"_edit_vertical_guides_": [ 2880.0 ] "_edit_vertical_guides_": [ 2880.0 ]
} }
[node name="SignalManager" parent="." instance=ExtResource( 10 )]
[node name="LevelState" parent="." instance=ExtResource( 11 )]
unique_name_in_owner = true
script = ExtResource( 8 )
[node name="UserInterface" parent="." instance=ExtResource( 7 )] [node name="UserInterface" parent="." instance=ExtResource( 7 )]
[node name="Timer" parent="UserInterface/HUD/HUDOverlay/GetBackTimer" index="0"] [node name="Timer" parent="UserInterface/HUD/HUDOverlay/GetBackTimer" index="0"]
@ -81,10 +89,10 @@ wait_time = 20.0
[node name="BlobbyCam" parent="." instance=ExtResource( 12 )] [node name="BlobbyCam" parent="." instance=ExtResource( 12 )]
[node name="AnimatedSprite" parent="BlobbyCam/ParallaxBackground/ParallaxLayer5" index="4"] [node name="AnimatedSprite" parent="BlobbyCam/ParallaxBackground/ParallaxLayer5" index="4"]
frame = 1 frame = 0
[node name="AnimatedSprite2" parent="BlobbyCam/ParallaxBackground/ParallaxLayer5" index="5"] [node name="AnimatedSprite2" parent="BlobbyCam/ParallaxBackground/ParallaxLayer5" index="5"]
frame = 6 frame = 5
[node name="Blobby" parent="." instance=ExtResource( 2 )] [node name="Blobby" parent="." instance=ExtResource( 2 )]
unique_name_in_owner = true unique_name_in_owner = true
@ -193,13 +201,7 @@ position = Vector2( 492, -156 )
[node name="Spikes4" parent="TileMap" instance=ExtResource( 3 )] [node name="Spikes4" parent="TileMap" instance=ExtResource( 3 )]
position = Vector2( 468, -156 ) position = Vector2( 468, -156 )
[node name="GameplaySignalManager" type="Node2D" parent="."]
script = ExtResource( 10 )
[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="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"]
[connection signal="terminal_activated" from="GameplaySignalManager" to="UserInterface/HUD" method="_on_SignalManager_terminal_activated"]
[editable path="UserInterface"] [editable path="UserInterface"]
[editable path="UserInterface/HUD"] [editable path="UserInterface/HUD"]

File diff suppressed because one or more lines are too long

View File

@ -1,4 +1,4 @@
[gd_scene load_steps=12 format=2] [gd_scene load_steps=15 format=2]
[ext_resource path="res://src/Actors/Blobby/Blobby.tscn" type="PackedScene" id=1] [ext_resource path="res://src/Actors/Blobby/Blobby.tscn" type="PackedScene" id=1]
[ext_resource path="res://assets/environment/blocks/legacy/24BlockBasic.png" type="Texture" id=2] [ext_resource path="res://assets/environment/blocks/legacy/24BlockBasic.png" type="Texture" id=2]
@ -9,6 +9,9 @@
[ext_resource path="res://src/Actors/Enemies/Beings/SmortEnemy.tscn" type="PackedScene" id=7] [ext_resource path="res://src/Actors/Enemies/Beings/SmortEnemy.tscn" type="PackedScene" id=7]
[ext_resource path="res://src/Actors/Enemies/Beings/DartingEnemy.tscn" type="PackedScene" id=8] [ext_resource path="res://src/Actors/Enemies/Beings/DartingEnemy.tscn" type="PackedScene" id=8]
[ext_resource path="res://src/Actors/BlobbyCam.tscn" type="PackedScene" id=9] [ext_resource path="res://src/Actors/BlobbyCam.tscn" type="PackedScene" id=9]
[ext_resource path="res://src/Utilities/LevelState.gd" type="Script" id=10]
[ext_resource path="res://src/Utilities/SignalManager.tscn" type="PackedScene" id=11]
[ext_resource path="res://src/Utilities/LevelState.tscn" type="PackedScene" id=12]
[sub_resource type="ConvexPolygonShape2D" id=3] [sub_resource type="ConvexPolygonShape2D" id=3]
points = PoolVector2Array( 0, 0, 24, 0, 24, 24, 0, 24 ) points = PoolVector2Array( 0, 0, 24, 0, 24, 24, 0, 24 )
@ -42,6 +45,12 @@ __meta__ = {
"_edit_vertical_guides_": [ 2880.0 ] "_edit_vertical_guides_": [ 2880.0 ]
} }
[node name="SignalManager" parent="." instance=ExtResource( 11 )]
[node name="LevelState" parent="." instance=ExtResource( 12 )]
unique_name_in_owner = true
script = ExtResource( 10 )
[node name="UserInterface" parent="." instance=ExtResource( 3 )] [node name="UserInterface" parent="." instance=ExtResource( 3 )]
[node name="BlobbyCam" parent="." instance=ExtResource( 9 )] [node name="BlobbyCam" parent="." instance=ExtResource( 9 )]

View File

@ -1,16 +1,20 @@
[gd_scene load_steps=12 format=2] [gd_scene load_steps=15 format=2]
[ext_resource path="res://src/Environment/AlienShipTileSet.tres" type="TileSet" id=1] [ext_resource path="res://src/Environment/AlienShipTileSet.tres" type="TileSet" id=1]
[ext_resource path="res://src/Utilities/GameplaySignalManager.gd" type="Script" id=2] [ext_resource path="res://src/Utilities/LevelState.gd" type="Script" id=2]
[ext_resource path="res://src/Contraptions/Triggers/ElevatorButton.tscn" type="PackedScene" id=3] [ext_resource path="res://src/Contraptions/Triggers/ElevatorButton.tscn" type="PackedScene" id=3]
[ext_resource path="res://src/Actors/BlobbyCam.tscn" type="PackedScene" id=4] [ext_resource path="res://src/Actors/BlobbyCam.tscn" type="PackedScene" id=4]
[ext_resource path="res://src/Utilities/SignalManager.tscn" type="PackedScene" id=5]
[ext_resource path="res://src/Contraptions/Portal/Portal.tscn" type="PackedScene" id=6] [ext_resource path="res://src/Contraptions/Portal/Portal.tscn" type="PackedScene" id=6]
[ext_resource path="res://src/Levels/Enemy Test Level.tscn" type="PackedScene" id=7] [ext_resource path="res://src/Levels/Enemy Test Level.tscn" type="PackedScene" id=7]
[ext_resource path="res://src/Actors/Enemies/Beings/Flyer.tscn" type="PackedScene" id=8] [ext_resource path="res://src/Actors/Enemies/Beings/Flyer.tscn" type="PackedScene" id=8]
[ext_resource path="res://src/Utilities/LevelState.tscn" type="PackedScene" id=9]
[ext_resource path="res://src/Contraptions/Triggers/ThreeWhyButtons.tscn" type="PackedScene" id=10] [ext_resource path="res://src/Contraptions/Triggers/ThreeWhyButtons.tscn" type="PackedScene" id=10]
[ext_resource path="res://src/Actors/Blobby/Blobby.tscn" type="PackedScene" id=12] [ext_resource path="res://src/Actors/Blobby/Blobby.tscn" type="PackedScene" id=12]
[ext_resource path="res://src/UserInterface/UserInterface.tscn" type="PackedScene" id=13] [ext_resource path="res://src/UserInterface/UserInterface.tscn" type="PackedScene" id=13]
[sub_resource type="AnimationNodeStateMachinePlayback" id=5]
[sub_resource type="AnimationNodeStateMachinePlayback" id=4] [sub_resource type="AnimationNodeStateMachinePlayback" id=4]
[node name="LevelTemplate" type="Node2D"] [node name="LevelTemplate" type="Node2D"]
@ -19,6 +23,12 @@ __meta__ = {
"_edit_vertical_guides_": [ 2880.0 ] "_edit_vertical_guides_": [ 2880.0 ]
} }
[node name="SignalManager" parent="." instance=ExtResource( 5 )]
[node name="LevelState" parent="." instance=ExtResource( 9 )]
unique_name_in_owner = true
script = ExtResource( 2 )
[node name="TileMap" type="TileMap" parent="."] [node name="TileMap" type="TileMap" parent="."]
unique_name_in_owner = true unique_name_in_owner = true
tile_set = ExtResource( 1 ) tile_set = ExtResource( 1 )
@ -42,6 +52,9 @@ rect_pivot_offset = Vector2( 389, 267 )
position = Vector2( 72, 301 ) position = Vector2( 72, 301 )
patrolling_slowdown = 0.4 patrolling_slowdown = 0.4
[node name="AnimationTree" parent="Flyer/FlyerSprite" index="1"]
parameters/playback = SubResource( 5 )
[node name="NavigationAgent2D" parent="Flyer" index="6"] [node name="NavigationAgent2D" parent="Flyer" index="6"]
path_max_distance = 10.0 path_max_distance = 10.0
@ -87,13 +100,6 @@ position = Vector2( -1464, 84 )
monitoring = false monitoring = false
next_scene = ExtResource( 7 ) next_scene = ExtResource( 7 )
[node name="GameplaySignalManager" type="Node2D" parent="."]
script = ExtResource( 2 )
[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"]
[editable path="UserInterface/HUD"] [editable path="UserInterface/HUD"]
[editable path="Flyer"] [editable path="Flyer"]

File diff suppressed because one or more lines are too long

View File

@ -1,7 +1,9 @@
[gd_scene load_steps=8 format=2] [gd_scene load_steps=10 format=2]
[ext_resource path="res://src/Environment/AlienShipTileSet.tres" type="TileSet" id=1] [ext_resource path="res://src/Environment/AlienShipTileSet.tres" type="TileSet" id=1]
[ext_resource path="res://src/Utilities/GameplaySignalManager.gd" type="Script" id=2] [ext_resource path="res://src/Utilities/LevelState.gd" type="Script" id=2]
[ext_resource path="res://src/Utilities/SignalManager.tscn" type="PackedScene" id=3]
[ext_resource path="res://src/Utilities/LevelState.tscn" type="PackedScene" id=4]
[ext_resource path="res://src/Environment/ShaderGrass.tscn" type="PackedScene" id=5] [ext_resource path="res://src/Environment/ShaderGrass.tscn" type="PackedScene" id=5]
[ext_resource path="res://src/UserInterface/UserInterface.tscn" type="PackedScene" id=6] [ext_resource path="res://src/UserInterface/UserInterface.tscn" type="PackedScene" id=6]
[ext_resource path="res://src/Actors/Blobby/Blobby.tscn" type="PackedScene" id=10] [ext_resource path="res://src/Actors/Blobby/Blobby.tscn" type="PackedScene" id=10]
@ -16,6 +18,12 @@ __meta__ = {
"_edit_vertical_guides_": [ 2880.0 ] "_edit_vertical_guides_": [ 2880.0 ]
} }
[node name="SignalManager" parent="." instance=ExtResource( 3 )]
[node name="LevelState" parent="." instance=ExtResource( 4 )]
unique_name_in_owner = true
script = ExtResource( 2 )
[node name="UserInterface" parent="." instance=ExtResource( 6 )] [node name="UserInterface" parent="." instance=ExtResource( 6 )]
[node name="Timer" parent="UserInterface/HUD/HUDOverlay/GetBackTimer" index="0"] [node name="Timer" parent="UserInterface/HUD/HUDOverlay/GetBackTimer" index="0"]
@ -213,10 +221,10 @@ position = Vector2( 210, -15 )
[node name="BlobbyCam" parent="." instance=ExtResource( 11 )] [node name="BlobbyCam" parent="." instance=ExtResource( 11 )]
[node name="AnimatedSprite" parent="BlobbyCam/ParallaxBackground/ParallaxLayer5" index="4"] [node name="AnimatedSprite" parent="BlobbyCam/ParallaxBackground/ParallaxLayer5" index="4"]
frame = 0 frame = 9
[node name="AnimatedSprite2" parent="BlobbyCam/ParallaxBackground/ParallaxLayer5" index="5"] [node name="AnimatedSprite2" parent="BlobbyCam/ParallaxBackground/ParallaxLayer5" index="5"]
frame = 5 frame = 0
[node name="Blobby" parent="." instance=ExtResource( 10 )] [node name="Blobby" parent="." instance=ExtResource( 10 )]
unique_name_in_owner = true unique_name_in_owner = true
@ -226,13 +234,6 @@ scale = Vector2( 0.878906, 0.936025 )
[node name="AnimationTree" parent="Blobby/BlobbySprite" index="0"] [node name="AnimationTree" parent="Blobby/BlobbySprite" index="0"]
parameters/playback = SubResource( 4 ) parameters/playback = SubResource( 4 )
[node name="GameplaySignalManager" type="Node2D" parent="."]
script = ExtResource( 2 )
[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"]
[editable path="UserInterface/HUD"] [editable path="UserInterface/HUD"]
[editable path="BlobbyCam"] [editable path="BlobbyCam"]

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,11 @@
extends Area2D
onready var anim_player: AnimationPlayer = get_node("AnimationPlayer")
onready var levelState := $"%LevelState"
export var currencyValue: = 1
func _on_body_entered(_body: Node) -> void:
levelState.currency += currencyValue
anim_player.play("fade_out")
queue_free()

View File

@ -1,7 +1,7 @@
[gd_scene load_steps=320 format=2] [gd_scene load_steps=320 format=2]
[ext_resource path="res://assets/neutral object/whitegold orbicle/0020 (Klein)-fs8.png" type="Texture" id=1] [ext_resource path="res://assets/neutral object/whitegold orbicle/0020 (Klein)-fs8.png" type="Texture" id=1]
[ext_resource path="res://assets/contraption/Coin.gd" type="Script" id=2] [ext_resource path="res://src/NeutralObjects/Coin.gd" type="Script" id=2]
[ext_resource path="res://assets/neutral object/whitegold orbicle/0021 (Klein)-fs8.png" type="Texture" id=3] [ext_resource path="res://assets/neutral object/whitegold orbicle/0021 (Klein)-fs8.png" type="Texture" id=3]
[ext_resource path="res://assets/neutral object/whitegold orbicle/0023 (Klein)-fs8.png" type="Texture" id=4] [ext_resource path="res://assets/neutral object/whitegold orbicle/0023 (Klein)-fs8.png" type="Texture" id=4]
[ext_resource path="res://assets/neutral object/whitegold orbicle/0025 (Klein)-fs8.png" type="Texture" id=5] [ext_resource path="res://assets/neutral object/whitegold orbicle/0025 (Klein)-fs8.png" type="Texture" id=5]
@ -407,7 +407,7 @@ position = Vector2( 0, -2.52127 )
scale = Vector2( 0.149428, 0.151196 ) scale = Vector2( 0.149428, 0.151196 )
frames = SubResource( 4 ) frames = SubResource( 4 )
animation = "rotate" animation = "rotate"
frame = 243 frame = 301
playing = true playing = true
[connection signal="body_entered" from="." to="." method="_on_body_entered"] [connection signal="body_entered" from="." to="." method="_on_body_entered"]

View File

@ -8,6 +8,10 @@ var states = {}
# Parent Node that uses these states # Parent Node that uses these states
onready var parent = get_parent() onready var parent = get_parent()
# Scene Singletons
onready var levelState := get_tree().root.get_child(0).get_node("%LevelState")
onready var signalManager := get_tree().root.get_child(0).get_node("%SignalManager")
# Basic process flow for every SM # Basic process flow for every SM
func _physics_process(delta): func _physics_process(delta):

View File

@ -1,7 +1,8 @@
extends Button extends Button
onready var levelState := $"../%LevelState"
func _on_button_up() -> void: func _on_button_up() -> void:
GlobalState.score = 0 levelState.kills = 0
get_tree().paused = false get_tree().paused = false
get_tree().reload_current_scene() get_tree().reload_current_scene()

View File

@ -1,4 +1,6 @@
extends Label extends Label
onready var levelState = $"%LevelState"
func _ready(): func _ready():
self.text = self.text % [GlobalState.score, GlobalState.deaths] self.text = self.text % [levelState.currency, levelState.kills, levelState.frees]

View File

@ -18,5 +18,5 @@ margin_top = -46.5
margin_right = 206.5 margin_right = 206.5
margin_bottom = 46.5 margin_bottom = 46.5
custom_fonts/font = SubResource( 1 ) custom_fonts/font = SubResource( 1 )
text = "Your final score is %s. text = "You collected %s orbicles.
Your died %s times." You died %s times, destroyed %s and freed %s beings."

View File

@ -4,12 +4,19 @@ extends Control
onready var current_scene := get_tree().get_current_scene() onready var current_scene := get_tree().get_current_scene()
onready var pause_overlay: ColorRect = $HUDOverlay onready var pause_overlay: ColorRect = $HUDOverlay
onready var timer: Label = $HUDOverlay/GetBackTimer onready var timer: Label = $HUDOverlay/GetBackTimer
onready var score: Label = $HUDOverlay/Score onready var currency: Label = $HUDOverlay/Currency
onready var kills: Label = $HUDOverlay/Kills
onready var frees: Label = $HUDOverlay/Frees
onready var levelState := get_tree().root.get_child(0).get_node("%LevelState")
onready var signalManager := get_tree().root.get_child(0).get_node("%SignalManager")
func _ready(): func _ready():
#TODO Connect what HOW? #TODO Connect what HOW?
GlobalState.connect("score_updated", self, "update_interface") signalManager.connect("currency_updated", self, "update_interface")
signalManager.connect("kills_updated", self, "update_interface")
signalManager.connect("frees_updated", self, "update_interface")
signalManager.connect("termial_activated", self, "_on_SignalManager_terminal_activated")
update_interface() update_interface()
func _process(delta): func _process(delta):
@ -29,7 +36,9 @@ func _zoom_timer() -> void:
func update_interface() -> void: func update_interface() -> void:
score.text = "Score: %s" % GlobalState.score currency.text = "Wallet: %s Orbicles" % levelState.currency
kills.text = "Kills: %s" % levelState.kills
frees.text = "Freed: %s" % levelState.frees
func _on_SignalManager_terminal_activated() -> void: func _on_SignalManager_terminal_activated() -> void:

View File

@ -45,31 +45,45 @@ script = ExtResource( 5 )
[node name="HUDOverlay" type="ColorRect" parent="."] [node name="HUDOverlay" type="ColorRect" parent="."]
unique_name_in_owner = true unique_name_in_owner = true
anchor_left = 0.5 margin_right = 480.0
anchor_right = 0.5 margin_bottom = 270.0
margin_left = -320.0
margin_right = 320.0
margin_bottom = 360.0
color = Color( 0, 0, 0, 0 ) color = Color( 0, 0, 0, 0 )
[node name="Score" type="Label" parent="HUDOverlay"] [node name="Currency" type="Label" parent="HUDOverlay"]
unique_name_in_owner = true unique_name_in_owner = true
visible = false margin_left = 3.0
anchor_left = 1.0 margin_top = 291.0
anchor_right = 1.0 margin_right = 174.0
margin_left = -96.0001 margin_bottom = 304.0
rect_scale = Vector2( 0.590909, 0.627907 ) rect_scale = Vector2( 0.590909, 0.627907 )
text = "Score: 100000000000000000" text = "Orbicles: 100000000000000000"
align = 2
[node name="Kills" type="Label" parent="HUDOverlay"]
unique_name_in_owner = true
margin_left = 3.0
margin_top = 315.0
margin_right = 224.0
margin_bottom = 328.0
rect_scale = Vector2( 0.590909, 0.627907 )
text = "Destroyed Beings: 100000000000000000"
[node name="Frees" type="Label" parent="HUDOverlay"]
unique_name_in_owner = true
margin_left = 3.0
margin_top = 339.0
margin_right = 200.0
margin_bottom = 352.0
rect_scale = Vector2( 0.590909, 0.627907 )
text = "Freed Beings: 100000000000000000"
[node name="GetBackTimer" type="Label" parent="HUDOverlay"] [node name="GetBackTimer" type="Label" parent="HUDOverlay"]
unique_name_in_owner = true unique_name_in_owner = true
visible = false visible = false
anchor_left = 0.5 anchor_left = 0.5
anchor_right = 0.5 anchor_right = 0.5
margin_left = -9.0 margin_left = 45.0
margin_right = 9.0 margin_right = 63.0
margin_bottom = 14.0 margin_bottom = 13.0
rect_scale = Vector2( 5, 5 ) rect_scale = Vector2( 5, 5 )
text = "100" text = "100"
align = 2 align = 2

View File

@ -4,11 +4,13 @@ extends Control
onready var current_scene := get_tree().get_current_scene() onready var current_scene := get_tree().get_current_scene()
onready var pause_overlay: ColorRect = get_node("PauseOverlay") onready var pause_overlay: ColorRect = get_node("PauseOverlay")
onready var pause_title: Label = get_node("PauseOverlay/Title") onready var pause_title: Label = get_node("PauseOverlay/Title")
onready var levelState := $"../%LevelState"
onready var signalManager := $"../%SignalManager"
var paused := false setget set_paused var paused := false setget set_paused
func _ready(): func _ready():
GlobalState.connect("player_died", self, "_on_GlobalState_player_died") signalManager.connect("player_died", self, "_on_GlobalState_player_died")
func _on_GlobalState_player_died() -> void: func _on_GlobalState_player_died() -> void:

View File

@ -1,31 +0,0 @@
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

View File

@ -0,0 +1,34 @@
extends Node
onready var signalManager := get_tree().root.get_child(0).get_node("%SignalManager")
#TODO Easteregg pls
var currency: = 0 setget set_currency
var deaths: = 0 setget set_deaths
var kills: = 0 setget set_kills
var frees: = 0 setget set_frees
# TODO Rename probs
var is_dead: = false setget set_dead
func reset() -> void:
deaths = 0
kills = 0
currency = 0
func set_currency(value: int) -> void:
currency = value
signalManager.emit_signal("currency_updated")
func set_deaths(value: int) -> void:
deaths = value
func set_kills(value: int) -> void:
kills = value
signalManager.emit_signal("kills_updated")
func set_frees(value: int) -> void:
frees = value
signalManager.emit_signal("frees_updated")
func set_dead(value: bool) -> void:
is_dead = value

View File

@ -0,0 +1,6 @@
[gd_scene load_steps=2 format=2]
[ext_resource path="res://src/Utilities/LevelState.gd" type="Script" id=1]
[node name="LevelState" type="Node"]
script = ExtResource( 1 )

View File

@ -0,0 +1,11 @@
extends Node
signal terminal_activated()
signal getback_timer_up()
signal currency_updated()
signal kills_updated()
signal frees_updated()
signal player_died()
func _on_Timer_timeout() -> void:
emit_signal("getback_timer_up")

View File

@ -0,0 +1,7 @@
[gd_scene load_steps=2 format=2]
[ext_resource path="res://src/Utilities/SignalManager.gd" type="Script" id=1]
[node name="SignalManager" type="Node"]
unique_name_in_owner = true
script = ExtResource( 1 )