Compare commits
5 Commits
a32e99cf42
...
a12e4e4c0b
| Author | SHA1 | Date | |
|---|---|---|---|
| a12e4e4c0b | |||
| bbbd36d91b | |||
| 44b6cbf379 | |||
| bf802571a2 | |||
| 1c5caa5d29 |
BIN
icon.ico
BIN
icon.ico
Binary file not shown.
|
Before Width: | Height: | Size: 4.2 KiB After Width: | Height: | Size: 351 KiB |
@ -59,6 +59,11 @@ _global_script_classes=[ {
|
|||||||
"language": "GDScript",
|
"language": "GDScript",
|
||||||
"path": "res://addons/controller_icons/objects/TextureRect.gd"
|
"path": "res://addons/controller_icons/objects/TextureRect.gd"
|
||||||
}, {
|
}, {
|
||||||
|
"base": "SceneTree",
|
||||||
|
"class": "CreateIcon",
|
||||||
|
"language": "GDScript",
|
||||||
|
"path": "res://Neuer Ordner/CreateIcon.gd"
|
||||||
|
}, {
|
||||||
"base": "Actor",
|
"base": "Actor",
|
||||||
"class": "Enemy",
|
"class": "Enemy",
|
||||||
"language": "GDScript",
|
"language": "GDScript",
|
||||||
@ -84,6 +89,11 @@ _global_script_classes=[ {
|
|||||||
"language": "GDScript",
|
"language": "GDScript",
|
||||||
"path": "res://src/RayCasters/RayCaster.gd"
|
"path": "res://src/RayCasters/RayCaster.gd"
|
||||||
}, {
|
}, {
|
||||||
|
"base": "Reference",
|
||||||
|
"class": "ReplaceIcon",
|
||||||
|
"language": "GDScript",
|
||||||
|
"path": "res://Neuer Ordner/ReplaceIcon.gd"
|
||||||
|
}, {
|
||||||
"base": "Button",
|
"base": "Button",
|
||||||
"class": "SoundButton",
|
"class": "SoundButton",
|
||||||
"language": "GDScript",
|
"language": "GDScript",
|
||||||
@ -105,11 +115,13 @@ _global_script_class_icons={
|
|||||||
"ControllerSprite": "",
|
"ControllerSprite": "",
|
||||||
"ControllerSprite3D": "",
|
"ControllerSprite3D": "",
|
||||||
"ControllerTextureRect": "",
|
"ControllerTextureRect": "",
|
||||||
|
"CreateIcon": "",
|
||||||
"Enemy": "",
|
"Enemy": "",
|
||||||
"GlobalStateResource": "",
|
"GlobalStateResource": "",
|
||||||
"LevelTemplate": "",
|
"LevelTemplate": "",
|
||||||
"RayCastDebugLines": "",
|
"RayCastDebugLines": "",
|
||||||
"RayCaster": "",
|
"RayCaster": "",
|
||||||
|
"ReplaceIcon": "",
|
||||||
"SoundButton": "",
|
"SoundButton": "",
|
||||||
"StateMachine": ""
|
"StateMachine": ""
|
||||||
}
|
}
|
||||||
@ -118,8 +130,8 @@ _global_script_class_icons={
|
|||||||
|
|
||||||
config/name="Blobby"
|
config/name="Blobby"
|
||||||
run/main_scene="res://src/UserInterface/Screens/MainMenu/MainScreen.tscn"
|
run/main_scene="res://src/UserInterface/Screens/MainMenu/MainScreen.tscn"
|
||||||
run/low_processor_mode=true
|
|
||||||
config/icon="res://icon.png"
|
config/icon="res://icon.png"
|
||||||
|
config/windows_native_icon="res://icon.ico"
|
||||||
|
|
||||||
[audio]
|
[audio]
|
||||||
|
|
||||||
@ -239,34 +251,34 @@ ui_end={
|
|||||||
}
|
}
|
||||||
up={
|
up={
|
||||||
"deadzone": 0.5,
|
"deadzone": 0.5,
|
||||||
"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":0,"physical_scancode":87,"unicode":0,"echo":false,"script":null)
|
"events": [ Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":12,"pressure":0.0,"pressed":false,"script":null)
|
||||||
, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":12,"pressure":0.0,"pressed":false,"script":null)
|
|
||||||
, Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":0,"axis":1,"axis_value":-1.0,"script":null)
|
, Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":0,"axis":1,"axis_value":-1.0,"script":null)
|
||||||
, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":0,"physical_scancode":16777232,"unicode":0,"echo":false,"script":null)
|
, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":87,"physical_scancode":0,"unicode":0,"echo":false,"script":null)
|
||||||
|
, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777232,"physical_scancode":0,"unicode":0,"echo":false,"script":null)
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
duck={
|
duck={
|
||||||
"deadzone": 0.5,
|
"deadzone": 0.5,
|
||||||
"events": [ Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":13,"pressure":0.0,"pressed":false,"script":null)
|
"events": [ Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":13,"pressure":0.0,"pressed":false,"script":null)
|
||||||
, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":0,"physical_scancode":83,"unicode":0,"echo":false,"script":null)
|
|
||||||
, Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":0,"axis":1,"axis_value":1.0,"script":null)
|
, Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":0,"axis":1,"axis_value":1.0,"script":null)
|
||||||
, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":0,"physical_scancode":16777234,"unicode":0,"echo":false,"script":null)
|
, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":83,"physical_scancode":0,"unicode":0,"echo":false,"script":null)
|
||||||
|
, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777234,"physical_scancode":0,"unicode":0,"echo":false,"script":null)
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
move_left={
|
move_left={
|
||||||
"deadzone": 0.5,
|
"deadzone": 0.5,
|
||||||
"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":65,"physical_scancode":0,"unicode":0,"echo":false,"script":null)
|
"events": [ Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"button_index":14,"pressure":0.0,"pressed":false,"script":null)
|
||||||
, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"button_index":14,"pressure":0.0,"pressed":false,"script":null)
|
|
||||||
, Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":0,"axis":0,"axis_value":-1.0,"script":null)
|
, Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":0,"axis":0,"axis_value":-1.0,"script":null)
|
||||||
, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":0,"physical_scancode":16777231,"unicode":0,"echo":false,"script":null)
|
, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":65,"physical_scancode":0,"unicode":0,"echo":false,"script":null)
|
||||||
|
, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777231,"physical_scancode":0,"unicode":0,"echo":false,"script":null)
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
move_right={
|
move_right={
|
||||||
"deadzone": 0.5,
|
"deadzone": 0.5,
|
||||||
"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":68,"physical_scancode":0,"unicode":0,"echo":false,"script":null)
|
"events": [ Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"button_index":15,"pressure":0.0,"pressed":false,"script":null)
|
||||||
, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"button_index":15,"pressure":0.0,"pressed":false,"script":null)
|
|
||||||
, Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":0,"axis":0,"axis_value":1.0,"script":null)
|
, Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":0,"axis":0,"axis_value":1.0,"script":null)
|
||||||
, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":0,"physical_scancode":16777233,"unicode":0,"echo":false,"script":null)
|
, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":68,"physical_scancode":0,"unicode":0,"echo":false,"script":null)
|
||||||
|
, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777233,"physical_scancode":0,"unicode":0,"echo":false,"script":null)
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
jump={
|
jump={
|
||||||
@ -275,16 +287,16 @@ jump={
|
|||||||
, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":0,"pressure":0.0,"pressed":false,"script":null)
|
, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":0,"pressure":0.0,"pressed":false,"script":null)
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
boost_move={
|
run={
|
||||||
"deadzone": 0.5,
|
"deadzone": 0.5,
|
||||||
"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777237,"physical_scancode":0,"unicode":0,"echo":false,"script":null)
|
"events": [ Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":5,"pressure":0.0,"pressed":false,"script":null)
|
||||||
, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":1,"pressure":0.0,"pressed":false,"script":null)
|
, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777237,"physical_scancode":0,"unicode":0,"echo":false,"script":null)
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
interact={
|
interact={
|
||||||
"deadzone": 0.5,
|
"deadzone": 0.5,
|
||||||
"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":0,"physical_scancode":69,"unicode":0,"echo":false,"script":null)
|
"events": [ Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":2,"pressure":0.0,"pressed":false,"script":null)
|
||||||
, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":2,"pressure":0.0,"pressed":false,"script":null)
|
, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":69,"physical_scancode":0,"unicode":0,"echo":false,"script":null)
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
pause={
|
pause={
|
||||||
@ -316,7 +328,6 @@ ui_click={
|
|||||||
|
|
||||||
common/physics_fps=120
|
common/physics_fps=120
|
||||||
2d/thread_model=0
|
2d/thread_model=0
|
||||||
2d/use_bvh=false
|
|
||||||
2d/cell_size=100
|
2d/cell_size=100
|
||||||
common/physics_interpolation=true
|
common/physics_interpolation=true
|
||||||
common/enable_object_picking=false
|
common/enable_object_picking=false
|
||||||
@ -326,17 +337,11 @@ common/enable_object_picking=false
|
|||||||
2d/options/use_nvidia_rect_flicker_workaround=true
|
2d/options/use_nvidia_rect_flicker_workaround=true
|
||||||
quality/intended_usage/framebuffer_allocation=0
|
quality/intended_usage/framebuffer_allocation=0
|
||||||
quality/intended_usage/framebuffer_allocation.mobile=0
|
quality/intended_usage/framebuffer_allocation.mobile=0
|
||||||
2d/snapping/use_gpu_pixel_snap=true
|
|
||||||
threads/thread_model=2
|
threads/thread_model=2
|
||||||
quality/reflections/texture_array_reflections=false
|
|
||||||
quality/reflections/high_quality_ggx=false
|
|
||||||
2d/options/use_software_skinning=false
|
2d/options/use_software_skinning=false
|
||||||
gles3/shaders/shader_compilation_mode=2
|
gles3/shaders/shader_compilation_mode=2
|
||||||
gles3/shaders/shader_compilation_mode.mobile=2
|
|
||||||
gles3/shaders/shader_compilation_mode.web=2
|
gles3/shaders/shader_compilation_mode.web=2
|
||||||
gles3/shaders/max_simultaneous_compiles.web=2
|
2d/options/culling_mode=0
|
||||||
gles3/shaders/shader_cache_size_mb.mobile=256
|
|
||||||
gles3/shaders/shader_cache_size_mb.web=256
|
|
||||||
quality/depth/hdr=false
|
quality/depth/hdr=false
|
||||||
environment/default_environment="res://default_env.tres"
|
environment/default_environment="res://default_env.tres"
|
||||||
environment/2d/use_nvidia_rect_flicker_workaround=true
|
environment/2d/use_nvidia_rect_flicker_workaround=true
|
||||||
|
|||||||
@ -80,29 +80,25 @@ cast_to = Vector2( 3, 0 )
|
|||||||
collision_mask = 8
|
collision_mask = 8
|
||||||
|
|
||||||
[node name="StompDetector" type="Area2D" parent="." groups=["weakpoint"]]
|
[node name="StompDetector" type="Area2D" parent="." groups=["weakpoint"]]
|
||||||
visible = false
|
|
||||||
modulate = Color( 0, 0.0392157, 1, 1 )
|
modulate = Color( 0, 0.0392157, 1, 1 )
|
||||||
light_mask = 0
|
light_mask = 0
|
||||||
position = Vector2( 0, -6.44095 )
|
position = Vector2( 0, 5.23628 )
|
||||||
collision_layer = 2
|
collision_layer = 2
|
||||||
input_pickable = false
|
input_pickable = false
|
||||||
monitorable = false
|
monitorable = false
|
||||||
priority = 1.0
|
priority = 1.0
|
||||||
|
|
||||||
[node name="CollisionShape2D" type="CollisionShape2D" parent="StompDetector"]
|
[node name="CollisionShape2D" type="CollisionShape2D" parent="StompDetector"]
|
||||||
visible = false
|
|
||||||
position = Vector2( 0, -2.28618 )
|
position = Vector2( 0, -2.28618 )
|
||||||
shape = SubResource( 2 )
|
shape = SubResource( 2 )
|
||||||
|
|
||||||
[node name="EnemySkin" type="Area2D" parent="."]
|
[node name="EnemySkin" type="Area2D" parent="."]
|
||||||
process_priority = -1
|
process_priority = -1
|
||||||
visible = false
|
|
||||||
collision_layer = 2
|
collision_layer = 2
|
||||||
collision_mask = 127
|
collision_mask = 127
|
||||||
input_pickable = false
|
input_pickable = false
|
||||||
|
|
||||||
[node name="CollisionPolygon2D" type="CollisionShape2D" parent="EnemySkin"]
|
[node name="CollisionPolygon2D" type="CollisionShape2D" parent="EnemySkin"]
|
||||||
visible = false
|
|
||||||
position = Vector2( 0, 3.49085 )
|
position = Vector2( 0, 3.49085 )
|
||||||
shape = SubResource( 3 )
|
shape = SubResource( 3 )
|
||||||
|
|
||||||
|
|||||||
@ -257,7 +257,7 @@ cast_to = Vector2( 0, -1 )
|
|||||||
collision_mask = 56
|
collision_mask = 56
|
||||||
collide_with_areas = true
|
collide_with_areas = true
|
||||||
|
|
||||||
[node name="EnemyBody" type="CollisionShape2D" parent="." groups=["harmful"]]
|
[node name="EnemyBody" type="CollisionShape2D" parent="." groups=["frogfood", "harmful"]]
|
||||||
position = Vector2( 0, -0.5 )
|
position = Vector2( 0, -0.5 )
|
||||||
shape = SubResource( 1 )
|
shape = SubResource( 1 )
|
||||||
|
|
||||||
|
|||||||
@ -11,7 +11,7 @@ func _ready() -> void:
|
|||||||
|
|
||||||
|
|
||||||
# TODO Only moves when on screen
|
# TODO Only moves when on screen
|
||||||
func _physics_process(delta: float) -> void:
|
func execute_movement(delta: float) -> void:
|
||||||
velocity.y += _gravity * delta
|
velocity.y += _gravity * delta
|
||||||
var player_direction := player_on_floor_direction()
|
var player_direction := player_on_floor_direction()
|
||||||
if(player_direction != 0):
|
if(player_direction != 0):
|
||||||
|
|||||||
@ -1,7 +1,8 @@
|
|||||||
[gd_scene load_steps=6 format=2]
|
[gd_scene load_steps=7 format=2]
|
||||||
|
|
||||||
[ext_resource path="res://assets/enemy/VacuumRobot.png" type="Texture" id=1]
|
[ext_resource path="res://assets/enemy/VacuumRobot.png" type="Texture" id=1]
|
||||||
[ext_resource path="res://src/Actors/Enemies/Vacuum.gd" type="Script" id=2]
|
[ext_resource path="res://src/Actors/Enemies/Vacuum.gd" type="Script" id=2]
|
||||||
|
[ext_resource path="res://src/StateMachines/VacuumStateMachine.gd" type="Script" id=3]
|
||||||
|
|
||||||
[sub_resource type="RectangleShape2D" id=1]
|
[sub_resource type="RectangleShape2D" id=1]
|
||||||
extents = Vector2( 14, 7 )
|
extents = Vector2( 14, 7 )
|
||||||
@ -14,8 +15,9 @@ extents = Vector2( 15, 6.5 )
|
|||||||
|
|
||||||
[node name="Vacuum" type="KinematicBody2D" groups=["harmful"]]
|
[node name="Vacuum" type="KinematicBody2D" groups=["harmful"]]
|
||||||
collision_layer = 2
|
collision_layer = 2
|
||||||
collision_mask = 9
|
collision_mask = 11
|
||||||
script = ExtResource( 2 )
|
script = ExtResource( 2 )
|
||||||
|
mass = 1.0
|
||||||
speed = 180
|
speed = 180
|
||||||
acceleration = 100
|
acceleration = 100
|
||||||
|
|
||||||
@ -70,6 +72,9 @@ collision_mask = 127
|
|||||||
position = Vector2( 0, 5.5 )
|
position = Vector2( 0, 5.5 )
|
||||||
shape = SubResource( 3 )
|
shape = SubResource( 3 )
|
||||||
|
|
||||||
|
[node name="StateMachine" type="Node" parent="."]
|
||||||
|
script = ExtResource( 3 )
|
||||||
|
|
||||||
[connection signal="body_entered" from="StompDetector" to="." method="_on_StompDetector_body_entered"]
|
[connection signal="body_entered" from="StompDetector" to="." method="_on_StompDetector_body_entered"]
|
||||||
[connection signal="area_entered" from="EnemySkin" to="." method="_on_EnemySkin_area_entered"]
|
[connection signal="area_entered" from="EnemySkin" to="." method="_on_EnemySkin_area_entered"]
|
||||||
[connection signal="body_entered" from="EnemySkin" to="." method="_on_EnemySkin_body_entered"]
|
[connection signal="body_entered" from="EnemySkin" to="." method="_on_EnemySkin_body_entered"]
|
||||||
|
|||||||
@ -517,6 +517,7 @@ func is_jump_path_safe(v: Vector2, pos: Vector2) -> bool:
|
|||||||
abs(node_pos.x - pos.x) > abs(jump_distance) * 3
|
abs(node_pos.x - pos.x) > abs(jump_distance) * 3
|
||||||
|| abs(node_pos.y - pos.y) > block_size * 4
|
|| abs(node_pos.y - pos.y) > block_size * 4
|
||||||
|| abs(node_pos.x - pos.x) < 1
|
|| abs(node_pos.x - pos.x) < 1
|
||||||
|
|| node.is_in_group("frogfood")
|
||||||
):
|
):
|
||||||
continue
|
continue
|
||||||
var node_y = node_pos.y - block_size / 2.0
|
var node_y = node_pos.y - block_size / 2.0
|
||||||
|
|||||||
@ -112,6 +112,18 @@ func get_savepoint(levelName: String) -> Vector2:
|
|||||||
else:
|
else:
|
||||||
return Vector2()
|
return Vector2()
|
||||||
|
|
||||||
|
func was_level_touched(levelName: String) -> bool:
|
||||||
|
if OS.is_debug_build():
|
||||||
|
return true
|
||||||
|
if !gsr.progress_dict.has(levelName) || !gsr.progress_dict[levelName].has("touched"):
|
||||||
|
return false
|
||||||
|
return gsr.progress_dict[levelName]["touched"]
|
||||||
|
|
||||||
|
func touch_level(levelName: String) -> void:
|
||||||
|
if !gsr.progress_dict.has(levelName):
|
||||||
|
gsr.progress_dict[levelName] = {}
|
||||||
|
gsr.progress_dict[levelName]["touched"] = true
|
||||||
|
|
||||||
|
|
||||||
# TODO This is permanent immediatly
|
# TODO This is permanent immediatly
|
||||||
func set_wallet(value) -> void:
|
func set_wallet(value) -> void:
|
||||||
|
|||||||
@ -3,18 +3,18 @@ extends Node
|
|||||||
export var save_location: String = "res://savefile.tres"
|
export var save_location: String = "res://savefile.tres"
|
||||||
|
|
||||||
func _ready() -> void:
|
func _ready() -> void:
|
||||||
load_initial_save()
|
load_initial_save()
|
||||||
|
|
||||||
func load_initial_save() -> void:
|
func load_initial_save() -> void:
|
||||||
var initial_state = load(save_location)
|
var initial_state = load(save_location)
|
||||||
if !initial_state:
|
if !initial_state:
|
||||||
initial_state = GlobalStateResource.new()
|
initial_state = GlobalStateResource.new()
|
||||||
GlobalState.gsr = initial_state
|
GlobalState.gsr = initial_state
|
||||||
GlobalState.reinstate()
|
GlobalState.reinstate()
|
||||||
|
|
||||||
func save_default() -> void:
|
func save_default() -> void:
|
||||||
var signal_manager = get_tree().root.get_child(4).get_node("%SignalManager")
|
var signal_manager = get_tree().root.get_child(4).get_node("%SignalManager")
|
||||||
for action in InputMap.get_actions():
|
for action in InputMap.get_actions():
|
||||||
GlobalState.gsr.input_map[action] = InputMap.get_action_list(action)
|
GlobalState.gsr.input_map[action] = InputMap.get_action_list(action)
|
||||||
ResourceSaver.save(save_location, GlobalState.gsr)
|
ResourceSaver.save(save_location, GlobalState.gsr)
|
||||||
signal_manager.emit_signal("savemanager_saved")
|
signal_manager.emit_signal("savemanager_saved")
|
||||||
|
|||||||
@ -85,7 +85,7 @@ valign = 1
|
|||||||
unique_name_in_owner = true
|
unique_name_in_owner = true
|
||||||
position = Vector2( 0, -6 )
|
position = Vector2( 0, -6 )
|
||||||
scale = Vector2( 0.5, 0.5 )
|
scale = Vector2( 0.5, 0.5 )
|
||||||
collision_layer = 24
|
collision_layer = 0
|
||||||
monitorable = false
|
monitorable = false
|
||||||
|
|
||||||
[node name="ActivatorAreaShape" type="CollisionShape2D" parent="ActivatorArea"]
|
[node name="ActivatorAreaShape" type="CollisionShape2D" parent="ActivatorArea"]
|
||||||
|
|||||||
@ -93,6 +93,7 @@ volume_db = -22.0
|
|||||||
bus = "Effects"
|
bus = "Effects"
|
||||||
|
|
||||||
[node name="Area2D" type="Area2D" parent="."]
|
[node name="Area2D" type="Area2D" parent="."]
|
||||||
|
visible = false
|
||||||
collision_layer = 0
|
collision_layer = 0
|
||||||
collision_mask = 3
|
collision_mask = 3
|
||||||
monitorable = false
|
monitorable = false
|
||||||
|
|||||||
@ -17,6 +17,7 @@ uniform int n_light_bands : hint_range(1, 13) = 7;
|
|||||||
uniform bool will_smooth_shade = false;
|
uniform bool will_smooth_shade = false;
|
||||||
uniform float band_decay_rate : hint_range(0.0, 1.0, 0.05) = 0.5;
|
uniform float band_decay_rate : hint_range(0.0, 1.0, 0.05) = 0.5;
|
||||||
uniform float light_strength_modifier : hint_range(0.0, 1.0) = 1.0;
|
uniform float light_strength_modifier : hint_range(0.0, 1.0) = 1.0;
|
||||||
|
uniform float bits = 1.;
|
||||||
|
|
||||||
varying vec2 world_position;
|
varying vec2 world_position;
|
||||||
|
|
||||||
@ -25,7 +26,7 @@ void vertex() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void fragment() {
|
void fragment() {
|
||||||
vec4 col = texture(TEXTURE, UV);
|
vec4 col = texture(TEXTURE, UV);
|
||||||
if (col.a <= 0.0){
|
if (col.a <= 0.0){
|
||||||
COLOR = col;
|
COLOR = col;
|
||||||
}
|
}
|
||||||
@ -39,7 +40,11 @@ void fragment() {
|
|||||||
// Get the data for this light source as passed in via texture
|
// Get the data for this light source as passed in via texture
|
||||||
vec4 texel = texelFetch(light_data, ivec2(i, 0), 0);
|
vec4 texel = texelFetch(light_data, ivec2(i, 0), 0);
|
||||||
vec2 texel_pos = (viewport_transform * (global_transform * vec4(texel.xy, 0.0, 1.0))).xy;
|
vec2 texel_pos = (viewport_transform * (global_transform * vec4(texel.xy, 0.0, 1.0))).xy;
|
||||||
vec2 texel_pos2 = texel.xy;
|
float x_bits = bits / TEXTURE_PIXEL_SIZE.x;
|
||||||
|
float y_bits = bits / TEXTURE_PIXEL_SIZE.y;
|
||||||
|
float pixelized_x = floor(texel_pos.x * x_bits)/x_bits + 0.5/x_bits;
|
||||||
|
float pixelized_y = floor(texel_pos.y * y_bits)/y_bits + 0.5/y_bits;
|
||||||
|
texel_pos = vec2(pixelized_x, pixelized_y);
|
||||||
|
|
||||||
// How far the light source extends
|
// How far the light source extends
|
||||||
float radius = texel.a;
|
float radius = texel.a;
|
||||||
@ -92,6 +97,7 @@ shader_param/default_light_color = null
|
|||||||
shader_param/light_level = 0.0
|
shader_param/light_level = 0.0
|
||||||
shader_param/offset_modifier = 1.0
|
shader_param/offset_modifier = 1.0
|
||||||
shader_param/n_light_bands = 7
|
shader_param/n_light_bands = 7
|
||||||
shader_param/will_smooth_shade = false
|
shader_param/will_smooth_shade = true
|
||||||
shader_param/band_decay_rate = 0.5
|
shader_param/band_decay_rate = 0.5
|
||||||
shader_param/light_strength_modifier = 1.0
|
shader_param/light_strength_modifier = 1.0
|
||||||
|
shader_param/bits = 1.0
|
||||||
|
|||||||
@ -1226,7 +1226,7 @@ visible = false
|
|||||||
position = Vector2( -154, 14 )
|
position = Vector2( -154, 14 )
|
||||||
texture = ExtResource( 36 )
|
texture = ExtResource( 36 )
|
||||||
script = ExtResource( 9 )
|
script = ExtResource( 9 )
|
||||||
color = Color( 1, 0, 0, 0.615686 )
|
color = Color( 1, 0, 0, 0.321569 )
|
||||||
|
|
||||||
[node name="Emitter4" type="Sprite" parent="BlobbyCam/ParallaxBackground/ParallaxLayer4" groups=["light"]]
|
[node name="Emitter4" type="Sprite" parent="BlobbyCam/ParallaxBackground/ParallaxLayer4" groups=["light"]]
|
||||||
visible = false
|
visible = false
|
||||||
|
|||||||
@ -1172,9 +1172,6 @@ jump_buffer_filled = null
|
|||||||
death_sound_1 = null
|
death_sound_1 = null
|
||||||
death_sound_2 = null
|
death_sound_2 = null
|
||||||
|
|
||||||
[node name="BlobbySprite" parent="Blobby" index="5"]
|
|
||||||
frame = 10
|
|
||||||
|
|
||||||
[node name="BlobbymationTree" parent="Blobby/BlobbySprite" index="0"]
|
[node name="BlobbymationTree" parent="Blobby/BlobbySprite" index="0"]
|
||||||
parameters/playback = SubResource( 6 )
|
parameters/playback = SubResource( 6 )
|
||||||
parameters/jumpStretching/blend_position = 1
|
parameters/jumpStretching/blend_position = 1
|
||||||
@ -1259,7 +1256,7 @@ position = Vector2( 6, -6 )
|
|||||||
[node name="TutorialComboThingy" parent="." instance=ExtResource( 13 )]
|
[node name="TutorialComboThingy" parent="." instance=ExtResource( 13 )]
|
||||||
visible = false
|
visible = false
|
||||||
position = Vector2( 1115, 4 )
|
position = Vector2( 1115, 4 )
|
||||||
action1 = "boost_move"
|
action1 = "run"
|
||||||
action2 = "move_right"
|
action2 = "move_right"
|
||||||
press_limit = 2
|
press_limit = 2
|
||||||
|
|
||||||
|
|||||||
@ -236,9 +236,6 @@ unique_name_in_owner = true
|
|||||||
position = Vector2( -180, 113 )
|
position = Vector2( -180, 113 )
|
||||||
scale = Vector2( 0.878906, 0.936025 )
|
scale = Vector2( 0.878906, 0.936025 )
|
||||||
|
|
||||||
[node name="BlobbySprite" parent="Blobby" index="5"]
|
|
||||||
frame = 7
|
|
||||||
|
|
||||||
[node name="BlobbymationTree" parent="Blobby/BlobbySprite" index="0"]
|
[node name="BlobbymationTree" parent="Blobby/BlobbySprite" index="0"]
|
||||||
parameters/playback = SubResource( 6 )
|
parameters/playback = SubResource( 6 )
|
||||||
|
|
||||||
@ -280,7 +277,7 @@ position = Vector2( 369, -300 )
|
|||||||
elevator_time = 10
|
elevator_time = 10
|
||||||
|
|
||||||
[node name="Portal" parent="." instance=ExtResource( 9 )]
|
[node name="Portal" parent="." instance=ExtResource( 9 )]
|
||||||
position = Vector2( 716, 48 )
|
position = Vector2( 712, 48 )
|
||||||
next_scene = "res://src/Levels/Level 0.4.tscn"
|
next_scene = "res://src/Levels/Level 0.4.tscn"
|
||||||
|
|
||||||
[node name="FlyingPlatform2" parent="." instance=ExtResource( 15 )]
|
[node name="FlyingPlatform2" parent="." instance=ExtResource( 15 )]
|
||||||
@ -302,7 +299,7 @@ y_target = 112
|
|||||||
[node name="TutorialComboThingy" parent="." instance=ExtResource( 6 )]
|
[node name="TutorialComboThingy" parent="." instance=ExtResource( 6 )]
|
||||||
visible = false
|
visible = false
|
||||||
position = Vector2( 276, -35 )
|
position = Vector2( 276, -35 )
|
||||||
action1 = "boost_move"
|
action1 = "run"
|
||||||
action2 = "jump"
|
action2 = "jump"
|
||||||
goal_state = "runToJump"
|
goal_state = "runToJump"
|
||||||
tutorial_text = "Move and press to runjump:"
|
tutorial_text = "Move and press to runjump:"
|
||||||
@ -320,7 +317,7 @@ position = Vector2( -10, 75 )
|
|||||||
[node name="TutorialComboThingy2" parent="." instance=ExtResource( 6 )]
|
[node name="TutorialComboThingy2" parent="." instance=ExtResource( 6 )]
|
||||||
visible = false
|
visible = false
|
||||||
position = Vector2( 381, -230 )
|
position = Vector2( 381, -230 )
|
||||||
action1 = "boost_move"
|
action1 = "run"
|
||||||
action2 = "jump"
|
action2 = "jump"
|
||||||
goal_state = "runToJump"
|
goal_state = "runToJump"
|
||||||
tutorial_text = "Move and press to runjump:"
|
tutorial_text = "Move and press to runjump:"
|
||||||
@ -343,6 +340,7 @@ position = Vector2( -61, 100 )
|
|||||||
|
|
||||||
[node name="ShaderGrass7" parent="Decor" instance=ExtResource( 4 )]
|
[node name="ShaderGrass7" parent="Decor" instance=ExtResource( 4 )]
|
||||||
position = Vector2( -55, 98 )
|
position = Vector2( -55, 98 )
|
||||||
|
z_index = -1
|
||||||
|
|
||||||
[node name="ShaderGrass9" parent="Decor" instance=ExtResource( 4 )]
|
[node name="ShaderGrass9" parent="Decor" instance=ExtResource( 4 )]
|
||||||
position = Vector2( -41, 100 )
|
position = Vector2( -41, 100 )
|
||||||
@ -420,6 +418,7 @@ position = Vector2( 511, 100 )
|
|||||||
|
|
||||||
[node name="ShaderGrass5" parent="Decor" instance=ExtResource( 4 )]
|
[node name="ShaderGrass5" parent="Decor" instance=ExtResource( 4 )]
|
||||||
position = Vector2( 517, 97 )
|
position = Vector2( 517, 97 )
|
||||||
|
z_index = -1
|
||||||
|
|
||||||
[node name="ShaderGrass6" parent="Decor" instance=ExtResource( 4 )]
|
[node name="ShaderGrass6" parent="Decor" instance=ExtResource( 4 )]
|
||||||
position = Vector2( 503, 100 )
|
position = Vector2( 503, 100 )
|
||||||
@ -629,6 +628,7 @@ position = Vector2( 556, 100 )
|
|||||||
|
|
||||||
[node name="ShaderGrass99" parent="Decor" instance=ExtResource( 4 )]
|
[node name="ShaderGrass99" parent="Decor" instance=ExtResource( 4 )]
|
||||||
position = Vector2( 554, 97 )
|
position = Vector2( 554, 97 )
|
||||||
|
z_index = -1
|
||||||
|
|
||||||
[node name="ShaderGrass100" parent="Decor" instance=ExtResource( 4 )]
|
[node name="ShaderGrass100" parent="Decor" instance=ExtResource( 4 )]
|
||||||
position = Vector2( 589, 100 )
|
position = Vector2( 589, 100 )
|
||||||
@ -660,6 +660,7 @@ position = Vector2( 614, 100 )
|
|||||||
|
|
||||||
[node name="ShaderGrass109" parent="Decor" instance=ExtResource( 4 )]
|
[node name="ShaderGrass109" parent="Decor" instance=ExtResource( 4 )]
|
||||||
position = Vector2( 612, 97 )
|
position = Vector2( 612, 97 )
|
||||||
|
z_index = -1
|
||||||
|
|
||||||
[node name="ShaderGrass110" parent="Decor" instance=ExtResource( 4 )]
|
[node name="ShaderGrass110" parent="Decor" instance=ExtResource( 4 )]
|
||||||
position = Vector2( 647, 100 )
|
position = Vector2( 647, 100 )
|
||||||
@ -681,6 +682,7 @@ position = Vector2( 57, 100 )
|
|||||||
|
|
||||||
[node name="ShaderGrass23" parent="Decor" instance=ExtResource( 4 )]
|
[node name="ShaderGrass23" parent="Decor" instance=ExtResource( 4 )]
|
||||||
position = Vector2( 63, 98 )
|
position = Vector2( 63, 98 )
|
||||||
|
z_index = -1
|
||||||
|
|
||||||
[node name="ShaderGrass24" parent="Decor" instance=ExtResource( 4 )]
|
[node name="ShaderGrass24" parent="Decor" instance=ExtResource( 4 )]
|
||||||
position = Vector2( 77, 100 )
|
position = Vector2( 77, 100 )
|
||||||
|
|||||||
@ -12,7 +12,7 @@
|
|||||||
[ext_resource path="res://src/Utilities/SignalManager.tscn" type="PackedScene" id=10]
|
[ext_resource path="res://src/Utilities/SignalManager.tscn" type="PackedScene" id=10]
|
||||||
[ext_resource path="res://src/Actors/Blobby/Blobby.tscn" type="PackedScene" id=11]
|
[ext_resource path="res://src/Actors/Blobby/Blobby.tscn" type="PackedScene" id=11]
|
||||||
[ext_resource path="res://src/Utilities/LevelState.tscn" type="PackedScene" id=12]
|
[ext_resource path="res://src/Utilities/LevelState.tscn" type="PackedScene" id=12]
|
||||||
[ext_resource path="res://src/Actors/Enemies/SimpleEnemy.tscn" type="PackedScene" id=13]
|
[ext_resource path="res://src/Actors/Enemies/Vacuum.tscn" type="PackedScene" id=13]
|
||||||
[ext_resource path="res://src/Platforms/FlyingPlatform.tscn" type="PackedScene" id=14]
|
[ext_resource path="res://src/Platforms/FlyingPlatform.tscn" type="PackedScene" id=14]
|
||||||
[ext_resource path="res://src/Actors/Enemies/Flyer.tscn" type="PackedScene" id=15]
|
[ext_resource path="res://src/Actors/Enemies/Flyer.tscn" type="PackedScene" id=15]
|
||||||
[ext_resource path="res://src/Actors/Friendlies/BoundFrog.tscn" type="PackedScene" id=16]
|
[ext_resource path="res://src/Actors/Friendlies/BoundFrog.tscn" type="PackedScene" id=16]
|
||||||
@ -128,11 +128,11 @@ drag_margin_bottom = 0.3
|
|||||||
|
|
||||||
[node name="Blobby" parent="." instance=ExtResource( 11 )]
|
[node name="Blobby" parent="." instance=ExtResource( 11 )]
|
||||||
unique_name_in_owner = true
|
unique_name_in_owner = true
|
||||||
position = Vector2( -64, -1.90735e-06 )
|
position = Vector2( -32, 0 )
|
||||||
scale = Vector2( 0.878906, 0.936025 )
|
scale = Vector2( 0.878906, 0.936025 )
|
||||||
|
|
||||||
[node name="BlobbySprite" parent="Blobby" index="5"]
|
[node name="BlobbySprite" parent="Blobby" index="5"]
|
||||||
frame = 7
|
frame = 9
|
||||||
|
|
||||||
[node name="BlobbymationTree" parent="Blobby/BlobbySprite" index="0"]
|
[node name="BlobbymationTree" parent="Blobby/BlobbySprite" index="0"]
|
||||||
parameters/playback = SubResource( 6 )
|
parameters/playback = SubResource( 6 )
|
||||||
@ -198,12 +198,6 @@ next_scene = "res://src/Levels/Level 3.tscn"
|
|||||||
position = Vector2( 1248, 16 )
|
position = Vector2( 1248, 16 )
|
||||||
rotation = 1.57079
|
rotation = 1.57079
|
||||||
|
|
||||||
[node name="SimpleEnemy" parent="." instance=ExtResource( 13 )]
|
|
||||||
position = Vector2( 16, -207 )
|
|
||||||
|
|
||||||
[node name="SimpleEnemy2" parent="." instance=ExtResource( 13 )]
|
|
||||||
position = Vector2( 336, -206 )
|
|
||||||
|
|
||||||
[node name="Spikes" parent="." instance=ExtResource( 20 )]
|
[node name="Spikes" parent="." instance=ExtResource( 20 )]
|
||||||
position = Vector2( 447, 176 )
|
position = Vector2( 447, 176 )
|
||||||
|
|
||||||
@ -297,6 +291,14 @@ position = Vector2( 857, -272 )
|
|||||||
[node name="Coin3" parent="." instance=ExtResource( 21 )]
|
[node name="Coin3" parent="." instance=ExtResource( 21 )]
|
||||||
position = Vector2( 216, -272 )
|
position = Vector2( 216, -272 )
|
||||||
|
|
||||||
|
[node name="Vacuum" parent="." instance=ExtResource( 13 )]
|
||||||
|
position = Vector2( 413, -204 )
|
||||||
|
killable = false
|
||||||
|
|
||||||
|
[node name="Vacuum2" parent="." instance=ExtResource( 13 )]
|
||||||
|
position = Vector2( 44, -204 )
|
||||||
|
killable = false
|
||||||
|
|
||||||
[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="button_pushed" from="FrogFreeButton" to="BoundFrog" method="_on_FrogFreeButton_pushed"]
|
[connection signal="button_pushed" from="FrogFreeButton" to="BoundFrog" method="_on_FrogFreeButton_pushed"]
|
||||||
|
|
||||||
|
|||||||
@ -1011,7 +1011,7 @@ position = Vector2( -88, 96 )
|
|||||||
scale = Vector2( 0.878906, 0.936025 )
|
scale = Vector2( 0.878906, 0.936025 )
|
||||||
|
|
||||||
[node name="BlobbySprite" parent="Blobby" index="5"]
|
[node name="BlobbySprite" parent="Blobby" index="5"]
|
||||||
frame = 7
|
frame = 5
|
||||||
|
|
||||||
[node name="BlobbymationTree" parent="Blobby/BlobbySprite" index="0"]
|
[node name="BlobbymationTree" parent="Blobby/BlobbySprite" index="0"]
|
||||||
parameters/playback = SubResource( 6 )
|
parameters/playback = SubResource( 6 )
|
||||||
@ -1234,6 +1234,7 @@ next_scene = "res://src/Levels/Level 4.tscn"
|
|||||||
|
|
||||||
[node name="BoundFrog" parent="." instance=ExtResource( 56 )]
|
[node name="BoundFrog" parent="." instance=ExtResource( 56 )]
|
||||||
position = Vector2( 203, -45 )
|
position = Vector2( 203, -45 )
|
||||||
|
movement_radius = 9
|
||||||
|
|
||||||
[node name="FrogFreeButton" parent="." instance=ExtResource( 59 )]
|
[node name="FrogFreeButton" parent="." instance=ExtResource( 59 )]
|
||||||
position = Vector2( 408, -272 )
|
position = Vector2( 408, -272 )
|
||||||
@ -1274,3 +1275,5 @@ format = 1
|
|||||||
[editable path="UserInterface"]
|
[editable path="UserInterface"]
|
||||||
[editable path="UserInterface/HUD"]
|
[editable path="UserInterface/HUD"]
|
||||||
[editable path="Blobby"]
|
[editable path="Blobby"]
|
||||||
|
[editable path="BoundFrog"]
|
||||||
|
[editable path="BoundFrog/RopeAnchor"]
|
||||||
|
|||||||
@ -6,25 +6,37 @@ extends Node2D
|
|||||||
# var b: String = "text"
|
# var b: String = "text"
|
||||||
export var is_armed = false
|
export var is_armed = false
|
||||||
|
|
||||||
|
var trigger_zone_entered: bool = false
|
||||||
|
|
||||||
|
|
||||||
func _ready() -> void:
|
func _ready() -> void:
|
||||||
if(!is_armed):
|
if(!is_armed):
|
||||||
$Area2D.remove_from_group("harmful")
|
if($HarmfulArea.is_in_group("harmful")):
|
||||||
|
$HarmfulArea.remove_from_group("harmful")
|
||||||
$Sprite/AnimationPlayer.play("unarmed")
|
$Sprite/AnimationPlayer.play("unarmed")
|
||||||
else:
|
else:
|
||||||
$Area2D.add_to_group("harmful")
|
$HarmfulArea.add_to_group("harmful")
|
||||||
$Sprite/AnimationPlayer.play("armed")
|
$Sprite/AnimationPlayer.play("armed")
|
||||||
|
|
||||||
func _on_Area2D_area_exited(area: Area2D) -> void:
|
|
||||||
if(area.is_in_group("player")):
|
|
||||||
$Timer.start()
|
|
||||||
|
|
||||||
func _on_Timer_timeout() -> void:
|
func _on_Timer_timeout() -> void:
|
||||||
is_armed = true
|
is_armed = true
|
||||||
$Area2D.add_to_group("harmful")
|
$HarmfulArea.add_to_group("harmful")
|
||||||
$Sprite/AnimationPlayer.play("arming")
|
$Sprite/AnimationPlayer.play("arming")
|
||||||
|
|
||||||
|
|
||||||
func _on_AnimationPlayer_animation_finished(anim_name: String) -> void:
|
func _on_AnimationPlayer_animation_finished(anim_name: String) -> void:
|
||||||
if(anim_name == "arming"):
|
if(anim_name == "arming"):
|
||||||
$Sprite/AnimationPlayer.play("armed")
|
$Sprite/AnimationPlayer.play("armed")
|
||||||
|
|
||||||
|
|
||||||
|
func _on_DetectionArea_area_exited(area: Area2D) -> void:
|
||||||
|
if(area.is_in_group("player") && !$HarmfulArea.is_in_group("harmful")
|
||||||
|
&& trigger_zone_entered):
|
||||||
|
$Timer.start()
|
||||||
|
trigger_zone_entered = false
|
||||||
|
|
||||||
|
|
||||||
|
func _on_HarmfulArea_area_entered(area: Area2D) -> void:
|
||||||
|
if(area.is_in_group("player")):
|
||||||
|
trigger_zone_entered = true
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
[gd_scene load_steps=8 format=2]
|
[gd_scene load_steps=9 format=2]
|
||||||
|
|
||||||
[ext_resource path="res://assets/obstacle object/SpikyMinePlant.png" type="Texture" id=1]
|
[ext_resource path="res://assets/obstacle object/SpikyMinePlant.png" type="Texture" id=1]
|
||||||
[ext_resource path="res://src/ObstacleObjects/Mine.gd" type="Script" id=2]
|
[ext_resource path="res://src/ObstacleObjects/Mine.gd" type="Script" id=2]
|
||||||
@ -17,18 +17,6 @@ tracks/0/keys = {
|
|||||||
"update": 0,
|
"update": 0,
|
||||||
"values": [ 0 ]
|
"values": [ 0 ]
|
||||||
}
|
}
|
||||||
tracks/1/type = "value"
|
|
||||||
tracks/1/path = NodePath("../Area2D/CollisionShape2D:shape:radius")
|
|
||||||
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": [ 4.0 ]
|
|
||||||
}
|
|
||||||
|
|
||||||
[sub_resource type="Animation" id=8]
|
[sub_resource type="Animation" id=8]
|
||||||
resource_name = "armed"
|
resource_name = "armed"
|
||||||
@ -46,18 +34,6 @@ tracks/0/keys = {
|
|||||||
"update": 1,
|
"update": 1,
|
||||||
"values": [ 22, 23, 24, 25, 26, 27, 28, 29 ]
|
"values": [ 22, 23, 24, 25, 26, 27, 28, 29 ]
|
||||||
}
|
}
|
||||||
tracks/1/type = "value"
|
|
||||||
tracks/1/path = NodePath("../Area2D/CollisionShape2D:shape:radius")
|
|
||||||
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": [ 7.0 ]
|
|
||||||
}
|
|
||||||
|
|
||||||
[sub_resource type="Animation" id=6]
|
[sub_resource type="Animation" id=6]
|
||||||
resource_name = "arming"
|
resource_name = "arming"
|
||||||
@ -74,18 +50,6 @@ tracks/0/keys = {
|
|||||||
"update": 1,
|
"update": 1,
|
||||||
"values": [ 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21 ]
|
"values": [ 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21 ]
|
||||||
}
|
}
|
||||||
tracks/1/type = "value"
|
|
||||||
tracks/1/path = NodePath("../Area2D/CollisionShape2D:shape:radius")
|
|
||||||
tracks/1/interp = 1
|
|
||||||
tracks/1/loop_wrap = true
|
|
||||||
tracks/1/imported = false
|
|
||||||
tracks/1/enabled = true
|
|
||||||
tracks/1/keys = {
|
|
||||||
"times": PoolRealArray( 0.00519588, 0.698901 ),
|
|
||||||
"transitions": PoolRealArray( 1, 1 ),
|
|
||||||
"update": 1,
|
|
||||||
"values": [ 4.0, 7.0 ]
|
|
||||||
}
|
|
||||||
|
|
||||||
[sub_resource type="Animation" id=3]
|
[sub_resource type="Animation" id=3]
|
||||||
resource_name = "unarmed"
|
resource_name = "unarmed"
|
||||||
@ -103,22 +67,14 @@ tracks/0/keys = {
|
|||||||
"update": 1,
|
"update": 1,
|
||||||
"values": [ 0, 1, 2, 3, 4, 5, 6, 7, 8 ]
|
"values": [ 0, 1, 2, 3, 4, 5, 6, 7, 8 ]
|
||||||
}
|
}
|
||||||
tracks/1/type = "value"
|
|
||||||
tracks/1/path = NodePath("../Area2D/CollisionShape2D:shape:radius")
|
|
||||||
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": [ 4.0 ]
|
|
||||||
}
|
|
||||||
|
|
||||||
[sub_resource type="CircleShape2D" id=7]
|
[sub_resource type="CircleShape2D" id=12]
|
||||||
resource_local_to_scene = true
|
resource_local_to_scene = true
|
||||||
radius = 4.0
|
radius = 6.0
|
||||||
|
|
||||||
|
[sub_resource type="CircleShape2D" id=9]
|
||||||
|
resource_local_to_scene = true
|
||||||
|
radius = 9.0
|
||||||
|
|
||||||
[node name="Mine" type="Node2D"]
|
[node name="Mine" type="Node2D"]
|
||||||
script = ExtResource( 2 )
|
script = ExtResource( 2 )
|
||||||
@ -135,16 +91,23 @@ anims/armed = SubResource( 8 )
|
|||||||
anims/arming = SubResource( 6 )
|
anims/arming = SubResource( 6 )
|
||||||
anims/unarmed = SubResource( 3 )
|
anims/unarmed = SubResource( 3 )
|
||||||
|
|
||||||
[node name="Area2D" type="Area2D" parent="."]
|
[node name="HarmfulArea" type="Area2D" parent="."]
|
||||||
collision_layer = 64
|
collision_layer = 64
|
||||||
|
|
||||||
[node name="CollisionShape2D" type="CollisionShape2D" parent="Area2D"]
|
[node name="CollisionShape2D" type="CollisionShape2D" parent="HarmfulArea"]
|
||||||
shape = SubResource( 7 )
|
shape = SubResource( 12 )
|
||||||
|
|
||||||
|
[node name="DetectionArea" type="Area2D" parent="."]
|
||||||
|
collision_layer = 64
|
||||||
|
|
||||||
|
[node name="CollisionShape2D" type="CollisionShape2D" parent="DetectionArea"]
|
||||||
|
shape = SubResource( 9 )
|
||||||
|
|
||||||
[node name="Timer" type="Timer" parent="."]
|
[node name="Timer" type="Timer" parent="."]
|
||||||
wait_time = 0.1
|
wait_time = 0.1
|
||||||
one_shot = true
|
one_shot = true
|
||||||
|
|
||||||
[connection signal="animation_finished" from="Sprite/AnimationPlayer" to="." method="_on_AnimationPlayer_animation_finished"]
|
[connection signal="animation_finished" from="Sprite/AnimationPlayer" to="." method="_on_AnimationPlayer_animation_finished"]
|
||||||
[connection signal="area_exited" from="Area2D" to="." method="_on_Area2D_area_exited"]
|
[connection signal="area_entered" from="HarmfulArea" to="." method="_on_HarmfulArea_area_entered"]
|
||||||
|
[connection signal="area_exited" from="DetectionArea" to="." method="_on_DetectionArea_area_exited"]
|
||||||
[connection signal="timeout" from="Timer" to="." method="_on_Timer_timeout"]
|
[connection signal="timeout" from="Timer" to="." method="_on_Timer_timeout"]
|
||||||
|
|||||||
@ -189,7 +189,7 @@ func _get_transition(_delta):
|
|||||||
|
|
||||||
elif abs(parent.velocity.x) > 5:
|
elif abs(parent.velocity.x) > 5:
|
||||||
was_coyote_hanging = false
|
was_coyote_hanging = false
|
||||||
if Input.is_action_pressed("boost_move"):
|
if Input.is_action_pressed("run"):
|
||||||
new_state = states.run
|
new_state = states.run
|
||||||
# TODO Walking when stopping and not pressing anything?
|
# TODO Walking when stopping and not pressing anything?
|
||||||
else:
|
else:
|
||||||
|
|||||||
32
src/StateMachines/VacuumStateMachine.gd
Normal file
32
src/StateMachines/VacuumStateMachine.gd
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
extends StateMachine
|
||||||
|
|
||||||
|
func _ready() -> void:
|
||||||
|
add_state("darting")
|
||||||
|
state = states.darting
|
||||||
|
set_state(states.darting)
|
||||||
|
for state in states:
|
||||||
|
if state_matching_method_exists(state):
|
||||||
|
continue
|
||||||
|
else:
|
||||||
|
printerr("StateMachine -> State: " + state + " has no matching method in parent.")
|
||||||
|
push_error("StateMachine -> State: " + state + " has no matching method in parent.")
|
||||||
|
# _animation_logic()
|
||||||
|
|
||||||
|
|
||||||
|
# Game logic consequences of state
|
||||||
|
func _state_logic(delta):
|
||||||
|
#var state_action_ref = funcref(parent, self.state)
|
||||||
|
#parent.velocity = state_action_ref.call_func()
|
||||||
|
parent.execute_movement(delta)
|
||||||
|
|
||||||
|
|
||||||
|
func _get_transition(_delta):
|
||||||
|
return null
|
||||||
|
|
||||||
|
|
||||||
|
func _enter_state(_new_state, _previous_state):
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
func _exit_state(_previous_state, _new_state):
|
||||||
|
pass
|
||||||
@ -1,6 +1,6 @@
|
|||||||
extends AudibleButton
|
extends AudibleButton
|
||||||
|
|
||||||
export(String, FILE) var next_scene_path: String = ""
|
export(String, FILE) var next_scene_path: String = "res://src/Levels/Level 0.1.tscn"
|
||||||
onready var selected_level_base_path: String = "res://src/Levels/"
|
onready var selected_level_base_path: String = "res://src/Levels/"
|
||||||
|
|
||||||
func _on_button_up() -> void:
|
func _on_button_up() -> void:
|
||||||
|
|||||||
@ -38,6 +38,8 @@ func _fill_level_list():
|
|||||||
func _spawn_level_options(levels: Array):
|
func _spawn_level_options(levels: Array):
|
||||||
var first = true
|
var first = true
|
||||||
for level in levels:
|
for level in levels:
|
||||||
|
if !GlobalState.was_level_touched(LEVELS_PATH + level) && !first:
|
||||||
|
continue
|
||||||
var level_check_box = LEVEL_CHECK_BOX.instance()
|
var level_check_box = LEVEL_CHECK_BOX.instance()
|
||||||
vbox.add_child(level_check_box)
|
vbox.add_child(level_check_box)
|
||||||
level_check_box.initialize_with_progress(LEVELS_PATH + level)
|
level_check_box.initialize_with_progress(LEVELS_PATH + level)
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
extends Node2D
|
extends Node2D
|
||||||
export var action1 = "move_right"
|
export var action1 = "move_right"
|
||||||
export var action2 = "boost_move"
|
export var action2 = "run"
|
||||||
export var goal_state = ""
|
export var goal_state = ""
|
||||||
export var tutorial_text = ""
|
export var tutorial_text = ""
|
||||||
export var velocity = Vector2(0.309,0.309)
|
export var velocity = Vector2(0.309,0.309)
|
||||||
|
|||||||
@ -13,6 +13,7 @@ var is_dead := false setget set_dead
|
|||||||
var level_time := 0.0
|
var level_time := 0.0
|
||||||
|
|
||||||
func _ready() -> void:
|
func _ready() -> void:
|
||||||
|
GlobalState.touch_level(levelName)
|
||||||
GlobalState.gsr.last_played_level = levelName
|
GlobalState.gsr.last_played_level = levelName
|
||||||
SaveManager.save_default()
|
SaveManager.save_default()
|
||||||
signal_manager.connect("level_completed", self, "_on_level_completed")
|
signal_manager.connect("level_completed", self, "_on_level_completed")
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user