Convert demos to Godot 4 using regular expressions in a script

This commit is contained in:
Aaron Franke
2022-03-26 05:00:50 -05:00
parent 410d783126
commit bbe50fc9da
1095 changed files with 13628 additions and 13557 deletions

View File

@@ -1,8 +1,8 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/cloud_1.png-03c0ad8be397b731df0dd38fa3c87727.stex"
type="StreamTexture2D"
path="res://.godot/imported/cloud_1.png-03c0ad8be397b731df0dd38fa3c87727.stex"
metadata={
"vram_texture": false
}
@@ -10,7 +10,7 @@ metadata={
[deps]
source_file="res://assets/art/background/cloud_1.png"
dest_files=[ "res://.import/cloud_1.png-03c0ad8be397b731df0dd38fa3c87727.stex" ]
dest_files=["res://.godot/imported/cloud_1.png-03c0ad8be397b731df0dd38fa3c87727.stex"]
[params]

View File

@@ -1,8 +1,8 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/cloud_2.png-4ddf8c5bceca4aa07a8bc86d7d788e02.stex"
type="StreamTexture2D"
path="res://.godot/imported/cloud_2.png-4ddf8c5bceca4aa07a8bc86d7d788e02.stex"
metadata={
"vram_texture": false
}
@@ -10,7 +10,7 @@ metadata={
[deps]
source_file="res://assets/art/background/cloud_2.png"
dest_files=[ "res://.import/cloud_2.png-4ddf8c5bceca4aa07a8bc86d7d788e02.stex" ]
dest_files=["res://.godot/imported/cloud_2.png-4ddf8c5bceca4aa07a8bc86d7d788e02.stex"]
[params]

View File

@@ -1,8 +1,8 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/cloud_3.png-a1b7dc71aa84bea9cb4f78f585dcc65d.stex"
type="StreamTexture2D"
path="res://.godot/imported/cloud_3.png-a1b7dc71aa84bea9cb4f78f585dcc65d.stex"
metadata={
"vram_texture": false
}
@@ -10,7 +10,7 @@ metadata={
[deps]
source_file="res://assets/art/background/cloud_3.png"
dest_files=[ "res://.import/cloud_3.png-a1b7dc71aa84bea9cb4f78f585dcc65d.stex" ]
dest_files=["res://.godot/imported/cloud_3.png-a1b7dc71aa84bea9cb4f78f585dcc65d.stex"]
[params]

View File

@@ -1,8 +1,8 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/distant_platforms_1.png-7286fe6c8587b96abbbe0bc4a8cbc510.stex"
type="StreamTexture2D"
path="res://.godot/imported/distant_platforms_1.png-7286fe6c8587b96abbbe0bc4a8cbc510.stex"
metadata={
"vram_texture": false
}
@@ -10,7 +10,7 @@ metadata={
[deps]
source_file="res://assets/art/background/distant_platforms_1.png"
dest_files=[ "res://.import/distant_platforms_1.png-7286fe6c8587b96abbbe0bc4a8cbc510.stex" ]
dest_files=["res://.godot/imported/distant_platforms_1.png-7286fe6c8587b96abbbe0bc4a8cbc510.stex"]
[params]

View File

@@ -1,8 +1,8 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/distant_platforms_2.png-ba010b30987da6d74062ce964ab450ef.stex"
type="StreamTexture2D"
path="res://.godot/imported/distant_platforms_2.png-ba010b30987da6d74062ce964ab450ef.stex"
metadata={
"vram_texture": false
}
@@ -10,7 +10,7 @@ metadata={
[deps]
source_file="res://assets/art/background/distant_platforms_2.png"
dest_files=[ "res://.import/distant_platforms_2.png-ba010b30987da6d74062ce964ab450ef.stex" ]
dest_files=["res://.godot/imported/distant_platforms_2.png-ba010b30987da6d74062ce964ab450ef.stex"]
[params]

View File

@@ -1,8 +1,8 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/sky.png-c175b712c46edc17f2b5fc55b9de3c49.stex"
type="StreamTexture2D"
path="res://.godot/imported/sky.png-c175b712c46edc17f2b5fc55b9de3c49.stex"
metadata={
"vram_texture": false
}
@@ -10,7 +10,7 @@ metadata={
[deps]
source_file="res://assets/art/background/sky.png"
dest_files=[ "res://.import/sky.png-c175b712c46edc17f2b5fc55b9de3c49.stex" ]
dest_files=["res://.godot/imported/sky.png-c175b712c46edc17f2b5fc55b9de3c49.stex"]
[params]

View File

@@ -1,8 +1,8 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/coin.png-87689993f83db6056500d4fa153313d8.stex"
type="StreamTexture2D"
path="res://.godot/imported/coin.png-87689993f83db6056500d4fa153313d8.stex"
metadata={
"vram_texture": false
}
@@ -10,7 +10,7 @@ metadata={
[deps]
source_file="res://assets/art/coin/coin.png"
dest_files=[ "res://.import/coin.png-87689993f83db6056500d4fa153313d8.stex" ]
dest_files=["res://.godot/imported/coin.png-87689993f83db6056500d4fa153313d8.stex"]
[params]

View File

@@ -1,8 +1,8 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/enemy.png-c2f48b2558d3b68a547452306041a310.stex"
type="StreamTexture2D"
path="res://.godot/imported/enemy.png-c2f48b2558d3b68a547452306041a310.stex"
metadata={
"vram_texture": false
}
@@ -10,7 +10,7 @@ metadata={
[deps]
source_file="res://assets/art/enemy/enemy.png"
dest_files=[ "res://.import/enemy.png-c2f48b2558d3b68a547452306041a310.stex" ]
dest_files=["res://.godot/imported/enemy.png-c2f48b2558d3b68a547452306041a310.stex"]
[params]

View File

@@ -1,8 +1,8 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/moving_platform.png-479aa8f802d1a4964b138893ada8d372.stex"
type="StreamTexture2D"
path="res://.godot/imported/moving_platform.png-479aa8f802d1a4964b138893ada8d372.stex"
metadata={
"vram_texture": false
}
@@ -10,7 +10,7 @@ metadata={
[deps]
source_file="res://assets/art/platforms/moving_platform.png"
dest_files=[ "res://.import/moving_platform.png-479aa8f802d1a4964b138893ada8d372.stex" ]
dest_files=["res://.godot/imported/moving_platform.png-479aa8f802d1a4964b138893ada8d372.stex"]
[params]

View File

@@ -1,8 +1,8 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/one_way_platform.png-aaf0179c7171228f27cb489e99e339bd.stex"
type="StreamTexture2D"
path="res://.godot/imported/one_way_platform.png-aaf0179c7171228f27cb489e99e339bd.stex"
metadata={
"vram_texture": false
}
@@ -10,7 +10,7 @@ metadata={
[deps]
source_file="res://assets/art/platforms/one_way_platform.png"
dest_files=[ "res://.import/one_way_platform.png-aaf0179c7171228f27cb489e99e339bd.stex" ]
dest_files=["res://.godot/imported/one_way_platform.png-aaf0179c7171228f27cb489e99e339bd.stex"]
[params]

View File

@@ -1,8 +1,8 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/bullet.png-a148438922f3743d5615622ef8134c9f.stex"
type="StreamTexture2D"
path="res://.godot/imported/bullet.png-a148438922f3743d5615622ef8134c9f.stex"
metadata={
"vram_texture": false
}
@@ -10,7 +10,7 @@ metadata={
[deps]
source_file="res://assets/art/player/bullet/bullet.png"
dest_files=[ "res://.import/bullet.png-a148438922f3743d5615622ef8134c9f.stex" ]
dest_files=["res://.godot/imported/bullet.png-a148438922f3743d5615622ef8134c9f.stex"]
[params]

View File

@@ -1,8 +1,8 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/robot_demo.png-cd7cbcf6d0c47d4a233ea7ce93b142c2.stex"
type="StreamTexture2D"
path="res://.godot/imported/robot_demo.png-cd7cbcf6d0c47d4a233ea7ce93b142c2.stex"
metadata={
"vram_texture": false
}
@@ -10,7 +10,7 @@ metadata={
[deps]
source_file="res://assets/art/player/robot_demo.png"
dest_files=[ "res://.import/robot_demo.png-cd7cbcf6d0c47d4a233ea7ce93b142c2.stex" ]
dest_files=["res://.godot/imported/robot_demo.png-cd7cbcf6d0c47d4a233ea7ce93b142c2.stex"]
[params]

View File

@@ -1,8 +1,8 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/tiles_demo.png-f720a7de2b60b01f690cfa3cb881996b.stex"
type="StreamTexture2D"
path="res://.godot/imported/tiles_demo.png-f720a7de2b60b01f690cfa3cb881996b.stex"
metadata={
"vram_texture": false
}
@@ -10,7 +10,7 @@ metadata={
[deps]
source_file="res://assets/art/tileset/tiles_demo.png"
dest_files=[ "res://.import/tiles_demo.png-f720a7de2b60b01f690cfa3cb881996b.stex" ]
dest_files=["res://.godot/imported/tiles_demo.png-f720a7de2b60b01f690cfa3cb881996b.stex"]
[params]

View File

@@ -1,42 +1,42 @@
[gd_resource type="TileSet" load_steps=14 format=2]
[ext_resource path="res://assets/art/tileset/tiles_demo.png" type="Texture" id=1]
[ext_resource path="res://assets/art/tileset/tiles_demo.png" type="Texture2D" id=1]
[sub_resource type="ConvexPolygonShape2D" id=1]
points = PoolVector2Array( 0, 6, 32, 6, 32, 32, 0, 32 )
points = PackedVector2Array( 0, 6, 32, 6, 32, 32, 0, 32 )
[sub_resource type="ConvexPolygonShape2D" id=2]
points = PoolVector2Array( 0, 6, 28, 6, 28, 32, 0, 32 )
points = PackedVector2Array( 0, 6, 28, 6, 28, 32, 0, 32 )
[sub_resource type="ConvexPolygonShape2D" id=3]
points = PoolVector2Array( 0, 0, 32, 0, 32, 32, 0, 32 )
points = PackedVector2Array( 0, 0, 32, 0, 32, 32, 0, 32 )
[sub_resource type="ConvexPolygonShape2D" id=4]
points = PoolVector2Array( 0, 6, 32, 6, 32, 32, 0, 32 )
points = PackedVector2Array( 0, 6, 32, 6, 32, 32, 0, 32 )
[sub_resource type="ConvexPolygonShape2D" id=5]
points = PoolVector2Array( 32, 38, 32, 64, 0, 64, 0, 6 )
points = PackedVector2Array( 32, 38, 32, 64, 0, 64, 0, 6 )
[sub_resource type="ConvexPolygonShape2D" id=6]
points = PoolVector2Array( 0, 0, 28, 0, 28, 32, 0, 32 )
points = PackedVector2Array( 0, 0, 28, 0, 28, 32, 0, 32 )
[sub_resource type="ConvexPolygonShape2D" id=7]
points = PoolVector2Array( 28, 6, 32, 6, 32, 32, 0, 32, 0, 0, 28, 0 )
points = PackedVector2Array( 28, 6, 32, 6, 32, 32, 0, 32, 0, 0, 28, 0 )
[sub_resource type="ConvexPolygonShape2D" id=8]
points = PoolVector2Array( 0, 6, 32, 6, 32, 32, 0, 32 )
points = PackedVector2Array( 0, 6, 32, 6, 32, 32, 0, 32 )
[sub_resource type="ConvexPolygonShape2D" id=9]
points = PoolVector2Array( 0, 6, 28, 6, 28, 32, 0, 32 )
points = PackedVector2Array( 0, 6, 28, 6, 28, 32, 0, 32 )
[sub_resource type="ConvexPolygonShape2D" id=10]
points = PoolVector2Array( 0, 0, 32, 0, 32, 32, 0, 32 )
points = PackedVector2Array( 0, 0, 32, 0, 32, 32, 0, 32 )
[sub_resource type="ConvexPolygonShape2D" id=11]
points = PoolVector2Array( 0, 0, 32, 0, 32, 24, 0, 24 )
points = PackedVector2Array( 0, 0, 32, 0, 32, 24, 0, 24 )
[sub_resource type="ConvexPolygonShape2D" id=12]
points = PoolVector2Array( 0, 0, 28, 0, 28, 24, 0, 24 )
points = PackedVector2Array( 0, 0, 28, 0, 28, 24, 0, 24 )
[resource]
0/name = "ground"

View File

@@ -1,8 +1,8 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/touch_button_fire.png-8b72c42a8cb252207ce8948d4b623690.stex"
type="StreamTexture2D"
path="res://.godot/imported/touch_button_fire.png-8b72c42a8cb252207ce8948d4b623690.stex"
metadata={
"vram_texture": false
}
@@ -10,7 +10,7 @@ metadata={
[deps]
source_file="res://assets/art/ui/touch_button_fire.png"
dest_files=[ "res://.import/touch_button_fire.png-8b72c42a8cb252207ce8948d4b623690.stex" ]
dest_files=["res://.godot/imported/touch_button_fire.png-8b72c42a8cb252207ce8948d4b623690.stex"]
[params]

View File

@@ -1,8 +1,8 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/touch_button_jump.png-f72afeb370538aa951853dbc52052250.stex"
type="StreamTexture2D"
path="res://.godot/imported/touch_button_jump.png-f72afeb370538aa951853dbc52052250.stex"
metadata={
"vram_texture": false
}
@@ -10,7 +10,7 @@ metadata={
[deps]
source_file="res://assets/art/ui/touch_button_jump.png"
dest_files=[ "res://.import/touch_button_jump.png-f72afeb370538aa951853dbc52052250.stex" ]
dest_files=["res://.godot/imported/touch_button_jump.png-f72afeb370538aa951853dbc52052250.stex"]
[params]

View File

@@ -1,8 +1,8 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/touch_button_left.png-e48f16cfdaae98fdc92a21f20c157c53.stex"
type="StreamTexture2D"
path="res://.godot/imported/touch_button_left.png-e48f16cfdaae98fdc92a21f20c157c53.stex"
metadata={
"vram_texture": false
}
@@ -10,7 +10,7 @@ metadata={
[deps]
source_file="res://assets/art/ui/touch_button_left.png"
dest_files=[ "res://.import/touch_button_left.png-e48f16cfdaae98fdc92a21f20c157c53.stex" ]
dest_files=["res://.godot/imported/touch_button_left.png-e48f16cfdaae98fdc92a21f20c157c53.stex"]
[params]

View File

@@ -1,8 +1,8 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/touch_button_right.png-74bf87a3a0fa663fbb3574844de31372.stex"
type="StreamTexture2D"
path="res://.godot/imported/touch_button_right.png-74bf87a3a0fa663fbb3574844de31372.stex"
metadata={
"vram_texture": false
}
@@ -10,7 +10,7 @@ metadata={
[deps]
source_file="res://assets/art/ui/touch_button_right.png"
dest_files=[ "res://.import/touch_button_right.png-74bf87a3a0fa663fbb3574844de31372.stex" ]
dest_files=["res://.godot/imported/touch_button_right.png-74bf87a3a0fa663fbb3574844de31372.stex"]
[params]

View File

@@ -2,12 +2,12 @@
importer="ogg_vorbis"
type="AudioStreamOGGVorbis"
path="res://.import/music.ogg-e27216112531ea490cdad574860a53a5.oggstr"
path="res://.godot/imported/music.ogg-e27216112531ea490cdad574860a53a5.oggstr"
[deps]
source_file="res://assets/audio/music/music.ogg"
dest_files=[ "res://.import/music.ogg-e27216112531ea490cdad574860a53a5.oggstr" ]
dest_files=["res://.godot/imported/music.ogg-e27216112531ea490cdad574860a53a5.oggstr"]
[params]

View File

@@ -2,12 +2,12 @@
importer="wav"
type="AudioStreamSample"
path="res://.import/coin_pickup.wav-69d455f3063e30fd994846647c281aea.sample"
path="res://.godot/imported/coin_pickup.wav-69d455f3063e30fd994846647c281aea.sample"
[deps]
source_file="res://assets/audio/sfx/coin_pickup.wav"
dest_files=[ "res://.import/coin_pickup.wav-69d455f3063e30fd994846647c281aea.sample" ]
dest_files=["res://.godot/imported/coin_pickup.wav-69d455f3063e30fd994846647c281aea.sample"]
[params]

View File

@@ -2,12 +2,12 @@
importer="wav"
type="AudioStreamSample"
path="res://.import/explode.wav-302a3de6d016432bf47477d337a4d553.sample"
path="res://.godot/imported/explode.wav-302a3de6d016432bf47477d337a4d553.sample"
[deps]
source_file="res://assets/audio/sfx/explode.wav"
dest_files=[ "res://.import/explode.wav-302a3de6d016432bf47477d337a4d553.sample" ]
dest_files=["res://.godot/imported/explode.wav-302a3de6d016432bf47477d337a4d553.sample"]
[params]

View File

@@ -2,12 +2,12 @@
importer="wav"
type="AudioStreamSample"
path="res://.import/hit.wav-27e178036f6cee6545e9f025a3865a36.sample"
path="res://.godot/imported/hit.wav-27e178036f6cee6545e9f025a3865a36.sample"
[deps]
source_file="res://assets/audio/sfx/hit.wav"
dest_files=[ "res://.import/hit.wav-27e178036f6cee6545e9f025a3865a36.sample" ]
dest_files=["res://.godot/imported/hit.wav-27e178036f6cee6545e9f025a3865a36.sample"]
[params]

View File

@@ -2,12 +2,12 @@
importer="wav"
type="AudioStreamSample"
path="res://.import/jump.wav-127418ac4fc0b61a7fed0684053202c7.sample"
path="res://.godot/imported/jump.wav-127418ac4fc0b61a7fed0684053202c7.sample"
[deps]
source_file="res://assets/audio/sfx/jump.wav"
dest_files=[ "res://.import/jump.wav-127418ac4fc0b61a7fed0684053202c7.sample" ]
dest_files=["res://.godot/imported/jump.wav-127418ac4fc0b61a7fed0684053202c7.sample"]
[params]

View File

@@ -2,12 +2,12 @@
importer="wav"
type="AudioStreamSample"
path="res://.import/shoot.wav-f3ce9b4ae60220ecd3cf78df7278a10f.sample"
path="res://.godot/imported/shoot.wav-f3ce9b4ae60220ecd3cf78df7278a10f.sample"
[deps]
source_file="res://assets/audio/sfx/shoot.wav"
dest_files=[ "res://.import/shoot.wav-f3ce9b4ae60220ecd3cf78df7278a10f.sample" ]
dest_files=["res://.godot/imported/shoot.wav-f3ce9b4ae60220ecd3cf78df7278a10f.sample"]
[params]

View File

@@ -1,4 +1,4 @@
[gd_resource type="DynamicFontData" format=2]
[gd_resource type="FontData" format=2]
[resource]
antialiased = false

View File

@@ -1,6 +1,6 @@
[gd_resource type="Theme" load_steps=8 format=2]
[ext_resource path="res://assets/theme/fonts/kenney_mini_square.tres" type="DynamicFontData" id=1]
[ext_resource path="res://assets/theme/fonts/kenney_mini_square.tres" type="FontData" id=1]
[sub_resource type="StyleBoxFlat" id=1]
content_margin_left = 6.0
@@ -62,7 +62,7 @@ border_width_right = 1
border_width_bottom = 1
border_color = Color( 0.41, 0.61, 0.91, 1 )
[sub_resource type="DynamicFont" id=6]
[sub_resource type="Font" id=6]
size = 30
font_data = ExtResource( 1 )

View File

@@ -1,8 +1,8 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/icon.png-487276ed1e3a0c39cad0279d744ee560.stex"
type="StreamTexture2D"
path="res://.godot/imported/icon.png-487276ed1e3a0c39cad0279d744ee560.stex"
metadata={
"vram_texture": false
}
@@ -10,7 +10,7 @@ metadata={
[deps]
source_file="res://icon.png"
dest_files=[ "res://.import/icon.png-487276ed1e3a0c39cad0279d744ee560.stex" ]
dest_files=["res://.godot/imported/icon.png-487276ed1e3a0c39cad0279d744ee560.stex"]
[params]

View File

@@ -8,37 +8,37 @@
config_version=4
_global_script_classes=[ {
"base": "KinematicBody2D",
"class": "Actor",
"language": "GDScript",
_global_script_classes=[{
"base": "CharacterBody2D",
"class": &"Actor",
"language": &"GDScript",
"path": "res://src/Actors/Actor.gd"
}, {
"base": "RigidBody2D",
"class": "Bullet",
"language": "GDScript",
"class": &"Bullet",
"language": &"GDScript",
"path": "res://src/Objects/Bullet.gd"
}, {
"base": "Area2D",
"class": "Coin",
"language": "GDScript",
"class": &"Coin",
"language": &"GDScript",
"path": "res://src/Objects/Coin.gd"
}, {
"base": "Actor",
"class": "Enemy",
"language": "GDScript",
"class": &"Enemy",
"language": &"GDScript",
"path": "res://src/Actors/Enemy.gd"
}, {
"base": "Position2D",
"class": "Gun",
"language": "GDScript",
"class": &"Gun",
"language": &"GDScript",
"path": "res://src/Actors/Gun.gd"
}, {
"base": "Actor",
"class": "Player",
"language": "GDScript",
"class": &"Player",
"language": &"GDScript",
"path": "res://src/Actors/Player.gd"
} ]
}]
_global_script_class_icons={
"Actor": "",
"Bullet": "",
@@ -82,7 +82,7 @@ stretch/mode="2d"
[gdnative]
singletons=[ ]
singletons=[]
[image_loader]
@@ -115,107 +115,107 @@ texture={
jump={
"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":16777232,"physical_scancode":0,"unicode":0,"echo":false,"script":null)
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"store_command":true,"alt_pressed":false,"shift_pressed":false,"meta_pressed":false,"command_pressed":false,"pressed":false,"keycode":16777232,"physical_keycode":0,"unicode":0,"echo":false,"script":null)
, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":0,"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":87,"physical_scancode":0,"unicode":0,"echo":false,"script":null)
]
, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"store_command":true,"alt_pressed":false,"shift_pressed":false,"meta_pressed":false,"command_pressed":false,"pressed":false,"keycode":87,"physical_keycode":0,"unicode":0,"echo":false,"script":null)
]
}
move_left={
"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":16777231,"physical_scancode":0,"unicode":0,"echo":false,"script":null)
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"store_command":true,"alt_pressed":false,"shift_pressed":false,"meta_pressed":false,"command_pressed":false,"pressed":false,"keycode":16777231,"physical_keycode":0,"unicode":0,"echo":false,"script":null)
, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":14,"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":65,"physical_scancode":0,"unicode":0,"echo":false,"script":null)
, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"store_command":true,"alt_pressed":false,"shift_pressed":false,"meta_pressed":false,"command_pressed":false,"pressed":false,"keycode":65,"physical_keycode":0,"unicode":0,"echo":false,"script":null)
, Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":0,"axis":0,"axis_value":-1.0,"script":null)
]
]
}
move_right={
"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":16777233,"physical_scancode":0,"unicode":0,"echo":false,"script":null)
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"store_command":true,"alt_pressed":false,"shift_pressed":false,"meta_pressed":false,"command_pressed":false,"pressed":false,"keycode":16777233,"physical_keycode":0,"unicode":0,"echo":false,"script":null)
, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":15,"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":68,"physical_scancode":0,"unicode":0,"echo":false,"script":null)
, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"store_command":true,"alt_pressed":false,"shift_pressed":false,"meta_pressed":false,"command_pressed":false,"pressed":false,"keycode":68,"physical_keycode":0,"unicode":0,"echo":false,"script":null)
, Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":0,"axis":0,"axis_value":1.0,"script":null)
]
]
}
shoot={
"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":32,"physical_scancode":0,"unicode":0,"echo":false,"script":null)
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"store_command":true,"alt_pressed":false,"shift_pressed":false,"meta_pressed":false,"command_pressed":false,"pressed":false,"keycode":32,"physical_keycode":0,"unicode":0,"echo":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":90,"physical_scancode":0,"unicode":0,"echo":false,"script":null)
, Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"button_mask":0,"position":Vector2( 0, 0 ),"global_position":Vector2( 0, 0 ),"factor":1.0,"button_index":1,"pressed":false,"doubleclick":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":16777350,"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":16777238,"physical_scancode":0,"unicode":0,"echo":false,"script":null)
]
, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"store_command":true,"alt_pressed":false,"shift_pressed":false,"meta_pressed":false,"command_pressed":false,"pressed":false,"keycode":90,"physical_keycode":0,"unicode":0,"echo":false,"script":null)
, Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"store_command":true,"alt_pressed":false,"shift_pressed":false,"meta_pressed":false,"command_pressed":false,"button_mask":0,"position":Vector2(0, 0),"global_position":Vector2(0, 0),"factor":1.0,"button_index":1,"pressed":false,"double_click":false,"script":null)
, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"store_command":true,"alt_pressed":false,"shift_pressed":false,"meta_pressed":false,"command_pressed":false,"pressed":false,"keycode":16777350,"physical_keycode":0,"unicode":0,"echo":false,"script":null)
, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"store_command":true,"alt_pressed":false,"shift_pressed":false,"meta_pressed":false,"command_pressed":false,"pressed":false,"keycode":16777238,"physical_keycode":0,"unicode":0,"echo":false,"script":null)
]
}
toggle_fullscreen={
"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":16777254,"physical_scancode":0,"unicode":0,"echo":false,"script":null)
]
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"store_command":true,"alt_pressed":false,"shift_pressed":false,"meta_pressed":false,"command_pressed":false,"pressed":false,"keycode":16777254,"physical_keycode":0,"unicode":0,"echo":false,"script":null)
]
}
toggle_pause={
"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":16777217,"physical_scancode":0,"unicode":0,"echo":false,"script":null)
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"store_command":true,"alt_pressed":false,"shift_pressed":false,"meta_pressed":false,"command_pressed":false,"pressed":false,"keycode":16777217,"physical_keycode":0,"unicode":0,"echo":false,"script":null)
, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":11,"pressure":0.0,"pressed":false,"script":null)
]
]
}
jump_p1={
"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":87,"physical_scancode":0,"unicode":0,"echo":false,"script":null)
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"store_command":true,"alt_pressed":false,"shift_pressed":false,"meta_pressed":false,"command_pressed":false,"pressed":false,"keycode":87,"physical_keycode":0,"unicode":0,"echo":false,"script":null)
, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":0,"pressure":0.0,"pressed":false,"script":null)
]
]
}
move_left_p1={
"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(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"store_command":true,"alt_pressed":false,"shift_pressed":false,"meta_pressed":false,"command_pressed":false,"pressed":false,"keycode":65,"physical_keycode":0,"unicode":0,"echo":false,"script":null)
, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"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)
]
]
}
move_right_p1={
"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(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"store_command":true,"alt_pressed":false,"shift_pressed":false,"meta_pressed":false,"command_pressed":false,"pressed":false,"keycode":68,"physical_keycode":0,"unicode":0,"echo":false,"script":null)
, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"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)
]
]
}
shoot_p1={
"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":90,"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":32,"physical_scancode":0,"unicode":0,"echo":false,"script":null)
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"store_command":true,"alt_pressed":false,"shift_pressed":false,"meta_pressed":false,"command_pressed":false,"pressed":false,"keycode":90,"physical_keycode":0,"unicode":0,"echo":false,"script":null)
, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"store_command":true,"alt_pressed":false,"shift_pressed":false,"meta_pressed":false,"command_pressed":false,"pressed":false,"keycode":32,"physical_keycode":0,"unicode":0,"echo":false,"script":null)
, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":2,"pressure":0.0,"pressed":false,"script":null)
]
]
}
jump_p2={
"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":16777232,"physical_scancode":0,"unicode":0,"echo":false,"script":null)
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"store_command":true,"alt_pressed":false,"shift_pressed":false,"meta_pressed":false,"command_pressed":false,"pressed":false,"keycode":16777232,"physical_keycode":0,"unicode":0,"echo":false,"script":null)
, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":1,"button_index":0,"pressure":0.0,"pressed":false,"script":null)
]
]
}
move_left_p2={
"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":16777231,"physical_scancode":0,"unicode":0,"echo":false,"script":null)
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"store_command":true,"alt_pressed":false,"shift_pressed":false,"meta_pressed":false,"command_pressed":false,"pressed":false,"keycode":16777231,"physical_keycode":0,"unicode":0,"echo":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":1,"axis":0,"axis_value":-1.0,"script":null)
]
]
}
move_right_p2={
"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":16777233,"physical_scancode":0,"unicode":0,"echo":false,"script":null)
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"store_command":true,"alt_pressed":false,"shift_pressed":false,"meta_pressed":false,"command_pressed":false,"pressed":false,"keycode":16777233,"physical_keycode":0,"unicode":0,"echo":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":1,"axis":0,"axis_value":1.0,"script":null)
]
]
}
shoot_p2={
"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":16777350,"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":16777238,"physical_scancode":0,"unicode":0,"echo":false,"script":null)
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"store_command":true,"alt_pressed":false,"shift_pressed":false,"meta_pressed":false,"command_pressed":false,"pressed":false,"keycode":16777350,"physical_keycode":0,"unicode":0,"echo":false,"script":null)
, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"store_command":true,"alt_pressed":false,"shift_pressed":false,"meta_pressed":false,"command_pressed":false,"pressed":false,"keycode":16777238,"physical_keycode":0,"unicode":0,"echo":false,"script":null)
, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":1,"button_index":2,"pressure":0.0,"pressed":false,"script":null)
]
]
}
splitscreen={
"deadzone": 0.5,
"events": [ Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"button_index":10,"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":16777218,"physical_scancode":0,"unicode":0,"echo":false,"script":null)
]
"events": [Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"button_index":10,"pressure":0.0,"pressed":false,"script":null)
, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"store_command":true,"alt_pressed":false,"shift_pressed":false,"meta_pressed":false,"command_pressed":false,"pressed":false,"keycode":16777218,"physical_keycode":0,"unicode":0,"echo":false,"script":null)
]
}
[layer_names]

View File

@@ -1,12 +1,12 @@
class_name Actor
extends KinematicBody2D
extends CharacterBody2D
# Both the Player and Enemy inherit this scene as they have shared behaviours
# such as speed and are affected by gravity.
export var speed = Vector2(150.0, 350.0)
onready var gravity = ProjectSettings.get("physics/2d/default_gravity")
@export var speed = Vector2(150.0, 350.0)
@onready var gravity = ProjectSettings.get("physics/2d/default_gravity")
const FLOOR_NORMAL = Vector2.UP

View File

@@ -9,11 +9,11 @@ enum State {
var _state = State.WALKING
onready var platform_detector = $PlatformDetector
onready var floor_detector_left = $FloorDetectorLeft
onready var floor_detector_right = $FloorDetectorRight
onready var sprite = $Sprite
onready var animation_player = $AnimationPlayer
@onready var platform_detector = $PlatformDetector
@onready var floor_detector_left = $FloorDetectorLeft
@onready var floor_detector_right = $FloorDetectorRight
@onready var sprite = $Sprite2D
@onready var animation_player = $AnimationPlayer
# This function is called when the scene enters the scene tree.
# We can initialize variables here.
@@ -46,9 +46,10 @@ func _physics_process(_delta):
_velocity.x *= -1
# We only update the y value of _velocity as we want to handle the horizontal movement ourselves.
_velocity.y = move_and_slide(_velocity, FLOOR_NORMAL).y
# TODO: This information should be set to the CharacterBody properties instead of arguments.
move_and_slide(_velocity, FLOOR_NORMAL).y
# We flip the Sprite depending on which way the enemy is moving.
# We flip the Sprite2D depending on which way the enemy is moving.
if _velocity.x > 0:
sprite.scale.x = 1
else:

View File

@@ -1,9 +1,9 @@
[gd_scene load_steps=13 format=2]
[ext_resource path="res://assets/art/player/bullet/bullet.png" type="Texture" id=1]
[ext_resource path="res://assets/art/player/bullet/bullet.png" type="Texture2D" id=1]
[ext_resource path="res://assets/audio/sfx/explode.wav" type="AudioStream" id=2]
[ext_resource path="res://assets/audio/sfx/hit.wav" type="AudioStream" id=3]
[ext_resource path="res://assets/art/enemy/enemy.png" type="Texture" id=4]
[ext_resource path="res://assets/art/enemy/enemy.png" type="Texture2D" id=4]
[ext_resource path="res://src/Actors/Enemy.gd" type="Script" id=5]
[sub_resource type="CanvasItemMaterial" id=1]
@@ -12,40 +12,40 @@
resource_name = "destroy"
length = 1.5
tracks/0/type = "value"
tracks/0/path = NodePath("Sprite:frame")
tracks/0/path = NodePath("Sprite2D:frame")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [ 7 ]
"values": [7]
}
tracks/1/type = "value"
tracks/1/path = NodePath("Sprite:rotation_degrees")
tracks/1/path = NodePath("Sprite2D:rotation_degrees")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/keys = {
"times": PoolRealArray( 0, 0.8 ),
"transitions": PoolRealArray( 0.0796601, 1 ),
"times": PackedFloat32Array(0, 0.8),
"transitions": PackedFloat32Array(0.0796601, 1),
"update": 0,
"values": [ 0.0, 180.0 ]
"values": [0.0, 180.0]
}
tracks/2/type = "value"
tracks/2/path = NodePath("Sprite:self_modulate")
tracks/2/path = NodePath("Sprite2D:self_modulate")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/keys = {
"times": PoolRealArray( 0, 0.5, 1.1 ),
"transitions": PoolRealArray( 1, 1, 1 ),
"times": PackedFloat32Array(0, 0.5, 1.1),
"transitions": PackedFloat32Array(1, 1, 1),
"update": 0,
"values": [ Color( 1, 1, 1, 1 ), Color( 1, 1, 1, 1 ), Color( 1, 1, 1, 0 ) ]
"values": [Color(1, 1, 1, 1), Color(1, 1, 1, 1), Color(1, 1, 1, 0)]
}
tracks/3/type = "value"
tracks/3/path = NodePath("Explosion:emitting")
@@ -54,10 +54,10 @@ tracks/3/loop_wrap = true
tracks/3/imported = false
tracks/3/enabled = true
tracks/3/keys = {
"times": PoolRealArray( 0, 1 ),
"transitions": PoolRealArray( 1, 1 ),
"times": PackedFloat32Array(0, 1),
"transitions": PackedFloat32Array(1, 1),
"update": 1,
"values": [ false, true ]
"values": [false, true]
}
tracks/4/type = "value"
tracks/4/path = NodePath("Explosion:process_material:scale")
@@ -66,10 +66,10 @@ tracks/4/loop_wrap = true
tracks/4/imported = false
tracks/4/enabled = true
tracks/4/keys = {
"times": PoolRealArray( 0.6, 1 ),
"transitions": PoolRealArray( 1, 1 ),
"times": PackedFloat32Array(0.6, 1),
"transitions": PackedFloat32Array(1, 1),
"update": 0,
"values": [ 1.0, 4.0 ]
"values": [1.0, 4.0]
}
tracks/5/type = "value"
tracks/5/path = NodePath("Hit:playing")
@@ -78,10 +78,10 @@ tracks/5/loop_wrap = true
tracks/5/imported = false
tracks/5/enabled = true
tracks/5/keys = {
"times": PoolRealArray( 0.00999999 ),
"transitions": PoolRealArray( 1 ),
"times": PackedFloat32Array(0.00999999),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [ true ]
"values": [true]
}
tracks/6/type = "value"
tracks/6/path = NodePath("Explode:playing")
@@ -90,10 +90,10 @@ tracks/6/loop_wrap = true
tracks/6/imported = false
tracks/6/enabled = true
tracks/6/keys = {
"times": PoolRealArray( 0.8 ),
"transitions": PoolRealArray( 1 ),
"times": PackedFloat32Array(0.8),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [ true ]
"values": [true]
}
tracks/7/type = "method"
tracks/7/path = NodePath(".")
@@ -102,12 +102,12 @@ tracks/7/loop_wrap = true
tracks/7/imported = false
tracks/7/enabled = true
tracks/7/keys = {
"times": PoolRealArray( 1.5 ),
"transitions": PoolRealArray( 1 ),
"values": [ {
"args": [ ],
"times": PackedFloat32Array(1.5),
"transitions": PackedFloat32Array(1),
"values": [{
"args": [],
"method": "queue_free"
} ]
}]
}
tracks/8/type = "value"
tracks/8/path = NodePath(".:collision_layer")
@@ -116,22 +116,22 @@ tracks/8/loop_wrap = true
tracks/8/imported = false
tracks/8/enabled = true
tracks/8/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [ 0 ]
"values": [0]
}
tracks/9/type = "value"
tracks/9/path = NodePath("Sprite:position")
tracks/9/path = NodePath("Sprite2D:position")
tracks/9/interp = 1
tracks/9/loop_wrap = true
tracks/9/imported = false
tracks/9/enabled = true
tracks/9/keys = {
"times": PoolRealArray( 0, 0.2, 0.4 ),
"transitions": PoolRealArray( 2.2974, 0.183011, 1 ),
"times": PackedFloat32Array(0, 0.2, 0.4),
"transitions": PackedFloat32Array(2.2974, 0.183011, 1),
"update": 0,
"values": [ Vector2( 0, 0 ), Vector2( 0, -32 ), Vector2( 0, 0 ) ]
"values": [Vector2(0, 0), Vector2(0, -32), Vector2(0, 0)]
}
[sub_resource type="Animation" id=3]
@@ -139,16 +139,16 @@ length = 6.75
loop = true
step = 0.25
tracks/0/type = "value"
tracks/0/path = NodePath("Sprite:frame")
tracks/0/path = NodePath("Sprite2D:frame")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/keys = {
"times": PoolRealArray( 0, 0.75, 1.5, 2.25, 3, 3.75, 4.5, 5.25, 6, 6.75 ),
"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ),
"times": PackedFloat32Array(0, 0.75, 1.5, 2.25, 3, 3.75, 4.5, 5.25, 6, 6.75),
"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1),
"update": 1,
"values": [ 5, 6, 5, 6, 5, 6, 7, 6, 7, 5 ]
"values": [5, 6, 5, 6, 5, 6, 7, 6, 7, 5]
}
[sub_resource type="Animation" id=4]
@@ -156,16 +156,16 @@ length = 1.25
loop = true
step = 0.25
tracks/0/type = "value"
tracks/0/path = NodePath("Sprite:frame")
tracks/0/path = NodePath("Sprite2D:frame")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/keys = {
"times": PoolRealArray( 0, 0.25, 0.5, 0.75, 1, 1.25 ),
"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1 ),
"times": PackedFloat32Array(0, 0.25, 0.5, 0.75, 1, 1.25),
"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1),
"update": 1,
"values": [ 0, 1, 2, 3, 4, 0 ]
"values": [0, 1, 2, 3, 4, 0]
}
[sub_resource type="CapsuleShape2D" id=5]
@@ -176,34 +176,34 @@ height = 7.0
blend_mode = 1
[sub_resource type="Gradient" id=7]
offsets = PoolRealArray( 0.5, 1 )
colors = PoolColorArray( 1, 1, 1, 1, 0, 0, 0, 1 )
offsets = PackedFloat32Array(0.5, 1)
colors = PackedColorArray(1, 1, 1, 1, 0, 0, 0, 1)
[node name="Enemy" type="KinematicBody2D"]
[node name="Enemy" type="CharacterBody2D"]
collision_layer = 2
collision_mask = 24
script = ExtResource( 5 )
speed = Vector2( 75, 250 )
speed = Vector2(75, 250)
[node name="PlatformDetector" type="RayCast2D" parent="."]
position = Vector2( 0, 6 )
position = Vector2(0, 6)
enabled = true
cast_to = Vector2( 0, 8 )
cast_to = Vector2(0, 8)
collision_mask = 8
[node name="FloorDetectorLeft" type="RayCast2D" parent="."]
position = Vector2( -15, -4 )
position = Vector2(-15, -4)
enabled = true
cast_to = Vector2( 0, 35 )
cast_to = Vector2(0, 35)
collision_mask = 24
[node name="FloorDetectorRight" type="RayCast2D" parent="."]
position = Vector2( 15.5, -3 )
position = Vector2(15.5, -3)
enabled = true
cast_to = Vector2( 0, 35 )
cast_to = Vector2(0, 35)
collision_mask = 24
[node name="Sprite" type="Sprite" parent="."]
[node name="Sprite2D" type="Sprite2D" parent="."]
material = SubResource( 1 )
texture = ExtResource( 4 )
flip_h = true
@@ -220,7 +220,7 @@ rotation = -1.5708
shape = SubResource( 5 )
[node name="Explosion" type="CPUParticles2D" parent="."]
self_modulate = Color( 1, 1, 1, 0.12 )
self_modulate = Color(1, 1, 1, 0.12)
material = SubResource( 6 )
emitting = false
amount = 32
@@ -233,7 +233,7 @@ texture = ExtResource( 1 )
emission_shape = 1
emission_sphere_radius = 8.0
spread = 180.0
gravity = Vector2( 0, 250 )
gravity = Vector2(0, 250)
initial_velocity = 120.0
initial_velocity_random = 0.5
angle_random = 1.0

View File

@@ -7,19 +7,19 @@ extends Position2D
const BULLET_VELOCITY = 500.0
const Bullet = preload("res://src/Objects/Bullet.tscn")
onready var sound_shoot = $Shoot
onready var timer = $Cooldown
@onready var sound_shoot = $Shoot
@onready var timer = $Cooldown
# This method is only called by Player.gd.
func shoot(direction = 1):
if not timer.is_stopped():
return false
var bullet = Bullet.instance()
var bullet = Bullet.instantiate()
bullet.global_position = global_position
bullet.linear_velocity = Vector2(direction * BULLET_VELOCITY, 0)
bullet.set_as_toplevel(true)
bullet.set_as_top_level(true)
add_child(bullet)
sound_shoot.play()
timer.start()

View File

@@ -7,28 +7,28 @@ signal collect_coin()
const FLOOR_DETECT_DISTANCE = 20.0
export(String) var action_suffix = ""
@export var action_suffix: String = ""
onready var platform_detector = $PlatformDetector
onready var animation_player = $AnimationPlayer
onready var shoot_timer = $ShootAnimation
onready var sprite = $Sprite
onready var sound_jump = $Jump
onready var gun = sprite.get_node(@"Gun")
@onready var platform_detector = $PlatformDetector
@onready var animation_player = $AnimationPlayer
@onready var shoot_timer = $ShootAnimation
@onready var sprite = $Sprite2D
@onready var sound_jump = $Jump
@onready var gun = sprite.get_node(^"Gun")
func _ready():
# Static types are necessary here to avoid warnings.
var camera: Camera2D = $Camera
var camera: Camera2D = $Camera3D
if action_suffix == "_p1":
camera.custom_viewport = $"../.."
yield(get_tree(), "idle_frame")
await get_tree().process_frame
camera.make_current()
elif action_suffix == "_p2":
var viewport: Viewport = $"../../../../ViewportContainer2/Viewport2"
viewport.world_2d = ($"../.." as Viewport).world_2d
var viewport: SubViewport = $"../../../../ViewportContainer2/Viewport2"
viewport.world_2d = ($"../.." as SubViewport).world_2d
camera.custom_viewport = viewport
yield(get_tree(), "idle_frame")
await get_tree().process_frame
camera.make_current()
@@ -64,11 +64,12 @@ func _physics_process(_delta):
if direction.y == 0.0:
snap_vector = Vector2.DOWN * FLOOR_DETECT_DISTANCE
var is_on_platform = platform_detector.is_colliding()
_velocity = move_and_slide_with_snap(
# TODO: This information should be set to the CharacterBody properties instead of arguments.
move_and_slide(
_velocity, snap_vector, FLOOR_NORMAL, not is_on_platform, 4, 0.9, false
)
# When the characters direction changes, we want to to scale the Sprite accordingly to flip it.
# When the characters direction changes, we want to to scale the Sprite2D accordingly to flip it.
# This will make Robi face left or right depending on the direction you move.
if direction.x != 0:
if direction.x > 0:

View File

@@ -1,13 +1,13 @@
[gd_scene load_steps=21 format=2]
[ext_resource path="res://src/Actors/Player.gd" type="Script" id=1]
[ext_resource path="res://assets/art/player/robot_demo.png" type="Texture" id=2]
[ext_resource path="res://assets/art/player/robot_demo.png" type="Texture2D" id=2]
[ext_resource path="res://assets/audio/sfx/jump.wav" type="AudioStream" id=3]
[ext_resource path="res://assets/audio/sfx/shoot.wav" type="AudioStream" id=4]
[ext_resource path="res://assets/art/ui/touch_button_left.png" type="Texture" id=5]
[ext_resource path="res://assets/art/ui/touch_button_right.png" type="Texture" id=6]
[ext_resource path="res://assets/art/ui/touch_button_jump.png" type="Texture" id=7]
[ext_resource path="res://assets/art/ui/touch_button_fire.png" type="Texture" id=8]
[ext_resource path="res://assets/art/ui/touch_button_left.png" type="Texture2D" id=5]
[ext_resource path="res://assets/art/ui/touch_button_right.png" type="Texture2D" id=6]
[ext_resource path="res://assets/art/ui/touch_button_jump.png" type="Texture2D" id=7]
[ext_resource path="res://assets/art/ui/touch_button_fire.png" type="Texture2D" id=8]
[ext_resource path="res://src/Actors/Gun.gd" type="Script" id=9]
[sub_resource type="Animation" id=1]
@@ -16,16 +16,16 @@ length = 0.01
loop = true
step = 0.25
tracks/0/type = "value"
tracks/0/path = NodePath("Sprite:frame")
tracks/0/path = NodePath("Sprite2D:frame")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [ 22 ]
"values": [22]
}
[sub_resource type="Animation" id=2]
@@ -34,16 +34,16 @@ length = 0.01
loop = true
step = 0.25
tracks/0/type = "value"
tracks/0/path = NodePath("Sprite:frame")
tracks/0/path = NodePath("Sprite2D:frame")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [ 21 ]
"values": [21]
}
[sub_resource type="Animation" id=3]
@@ -52,16 +52,16 @@ length = 0.5
loop = true
step = 0.25
tracks/0/type = "value"
tracks/0/path = NodePath("Sprite:frame")
tracks/0/path = NodePath("Sprite2D:frame")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [ 26 ]
"values": [26]
}
[sub_resource type="Animation" id=4]
@@ -69,16 +69,16 @@ length = 7.0
loop = true
step = 0.25
tracks/0/type = "value"
tracks/0/path = NodePath("Sprite:frame")
tracks/0/path = NodePath("Sprite2D:frame")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/keys = {
"times": PoolRealArray( 0, 1.25, 1.5, 2, 4.5, 4.75, 5, 5.25 ),
"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1, 1 ),
"times": PackedFloat32Array(0, 1.25, 1.5, 2, 4.5, 4.75, 5, 5.25),
"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1),
"update": 1,
"values": [ 16, 17, 18, 16, 19, 20, 19, 16 ]
"values": [16, 17, 18, 16, 19, 20, 19, 16]
}
[sub_resource type="Animation" id=5]
@@ -86,16 +86,16 @@ length = 0.5
loop = true
step = 0.25
tracks/0/type = "value"
tracks/0/path = NodePath("Sprite:frame")
tracks/0/path = NodePath("Sprite2D:frame")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [ 25 ]
"values": [25]
}
[sub_resource type="Animation" id=6]
@@ -103,16 +103,16 @@ length = 0.5
loop = true
step = 0.25
tracks/0/type = "value"
tracks/0/path = NodePath("Sprite:frame")
tracks/0/path = NodePath("Sprite2D:frame")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/keys = {
"times": PoolRealArray( 0, 0.25, 0.5 ),
"transitions": PoolRealArray( 1, 1, 1 ),
"times": PackedFloat32Array(0, 0.25, 0.5),
"transitions": PackedFloat32Array(1, 1, 1),
"update": 1,
"values": [ 23, 24, 23 ]
"values": [23, 24, 23]
}
[sub_resource type="Animation" id=7]
@@ -120,16 +120,16 @@ length = 0.5
loop = true
step = 0.25
tracks/0/type = "value"
tracks/0/path = NodePath("Sprite:frame")
tracks/0/path = NodePath("Sprite2D:frame")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [ 26 ]
"values": [26]
}
[sub_resource type="Animation" id=8]
@@ -137,16 +137,16 @@ length = 1.25
loop = true
step = 0.25
tracks/0/type = "value"
tracks/0/path = NodePath("Sprite:frame")
tracks/0/path = NodePath("Sprite2D:frame")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/keys = {
"times": PoolRealArray( 0, 0.25, 0.5, 0.75, 1, 1.25 ),
"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1 ),
"times": PackedFloat32Array(0, 0.25, 0.5, 0.75, 1, 1.25),
"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1),
"update": 1,
"values": [ 0, 1, 2, 3, 4, 0 ]
"values": [0, 1, 2, 3, 4, 0]
}
[sub_resource type="Animation" id=9]
@@ -154,16 +154,16 @@ length = 1.25
loop = true
step = 0.25
tracks/0/type = "value"
tracks/0/path = NodePath("Sprite:frame")
tracks/0/path = NodePath("Sprite2D:frame")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/keys = {
"times": PoolRealArray( 0, 0.25, 0.5, 0.75, 1, 1.25 ),
"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1 ),
"times": PackedFloat32Array(0, 0.25, 0.5, 0.75, 1, 1.25),
"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1),
"update": 1,
"values": [ 5, 6, 7, 8, 9, 5 ]
"values": [5, 6, 7, 8, 9, 5]
}
[sub_resource type="Animation" id=10]
@@ -171,22 +171,22 @@ length = 1.25
loop = true
step = 0.25
tracks/0/type = "value"
tracks/0/path = NodePath("Sprite:frame")
tracks/0/path = NodePath("Sprite2D:frame")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/keys = {
"times": PoolRealArray( 0, 0.25, 0.5, 0.75, 1, 1.25 ),
"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1 ),
"times": PackedFloat32Array(0, 0.25, 0.5, 0.75, 1, 1.25),
"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1),
"update": 1,
"values": [ 10, 11, 12, 13, 14, 5 ]
"values": [10, 11, 12, 13, 14, 5]
}
[sub_resource type="RectangleShape2D" id=11]
extents = Vector2( 10, 14 )
extents = Vector2(10, 14)
[node name="Player" type="KinematicBody2D"]
[node name="Player" type="CharacterBody2D"]
collision_mask = 30
script = ExtResource( 1 )
@@ -197,25 +197,25 @@ one_shot = true
[node name="PlatformDetector" type="RayCast2D" parent="."]
enabled = true
cast_to = Vector2( 0, 6 )
cast_to = Vector2(0, 6)
collision_mask = 8
[node name="Sprite" type="Sprite" parent="."]
position = Vector2( 0, -14 )
[node name="Sprite2D" type="Sprite2D" parent="."]
position = Vector2(0, -14)
texture = ExtResource( 2 )
hframes = 16
vframes = 2
frame = 16
[node name="Gun" type="Position2D" parent="Sprite"]
position = Vector2( 14, 1 )
[node name="Gun" type="Position2D" parent="Sprite2D"]
position = Vector2(14, 1)
script = ExtResource( 9 )
[node name="Shoot" type="AudioStreamPlayer2D" parent="Sprite/Gun"]
position = Vector2( -30.6589, -6.13176 )
[node name="Shoot" type="AudioStreamPlayer2D" parent="Sprite2D/Gun"]
position = Vector2(-30.6589, -6.13176)
stream = ExtResource( 4 )
[node name="Cooldown" type="Timer" parent="Sprite/Gun"]
[node name="Cooldown" type="Timer" parent="Sprite2D/Gun"]
process_mode = 0
wait_time = 0.3
one_shot = true
@@ -233,14 +233,14 @@ anims/run = SubResource( 8 )
anims/run_weapon = SubResource( 9 )
anims/standing_weapon_ready = SubResource( 10 )
[node name="Camera" type="Camera2D" parent="."]
position = Vector2( 0, -28 )
[node name="Camera3D" type="Camera2D" parent="."]
position = Vector2(0, -28)
current = true
zoom = Vector2( 0.5, 0.5 )
zoom = Vector2(0.5, 0.5)
process_mode = 0
[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
position = Vector2( 0, -14 )
position = Vector2(0, -14)
shape = SubResource( 11 )
[node name="Jump" type="AudioStreamPlayer2D" parent="."]
@@ -250,31 +250,31 @@ stream = ExtResource( 3 )
layer = 0
[node name="Left" type="TouchScreenButton" parent="UI"]
position = Vector2( 27.7593, 360.87 )
scale = Vector2( 1.49157, 1.46265 )
position = Vector2(27.7593, 360.87)
scale = Vector2(1.49157, 1.46265)
normal = ExtResource( 5 )
passby_press = true
action = "move_left"
visibility_mode = 1
[node name="Right" type="TouchScreenButton" parent="UI"]
position = Vector2( 121.542, 361.415 )
scale = Vector2( 1.49157, 1.46265 )
position = Vector2(121.542, 361.415)
scale = Vector2(1.49157, 1.46265)
normal = ExtResource( 6 )
passby_press = true
action = "move_right"
visibility_mode = 1
[node name="Jump" type="TouchScreenButton" parent="UI"]
position = Vector2( 666.224, 359.02 )
scale = Vector2( 1.49157, 1.46265 )
position = Vector2(666.224, 359.02)
scale = Vector2(1.49157, 1.46265)
normal = ExtResource( 7 )
action = "jump"
visibility_mode = 1
[node name="Fire" type="TouchScreenButton" parent="UI"]
position = Vector2( 668.073, 262.788 )
scale = Vector2( 1.49157, 1.46265 )
position = Vector2(668.073, 262.788)
scale = Vector2(1.49157, 1.46265)
normal = ExtResource( 8 )
action = "shoot"
visibility_mode = 1

View File

@@ -8,7 +8,7 @@ const LIMIT_BOTTOM = 690
func _ready():
for child in get_children():
if child is Player:
var camera = child.get_node("Camera")
var camera = child.get_node(^"Camera3D")
camera.limit_left = LIMIT_LEFT
camera.limit_top = LIMIT_TOP
camera.limit_right = LIMIT_RIGHT

File diff suppressed because one or more lines are too long

View File

@@ -2,7 +2,7 @@ extends AudioStreamPlayer
const DOUBLE_VOLUME_DB = 6 # Do not change. Represents doubling of sound pressure.
export(int) var base_volume_db = -14
@export var base_volume_db: int = -14
func _ready():
# To avoid AudioStreamPlayer2D sounds playing on top of each other and

View File

@@ -1,174 +1,174 @@
[gd_scene load_steps=7 format=2]
[ext_resource path="res://assets/art/background/distant_platforms_2.png" type="Texture" id=1]
[ext_resource path="res://assets/art/background/sky.png" type="Texture" id=2]
[ext_resource path="res://assets/art/background/cloud_1.png" type="Texture" id=3]
[ext_resource path="res://assets/art/background/cloud_2.png" type="Texture" id=4]
[ext_resource path="res://assets/art/background/cloud_3.png" type="Texture" id=5]
[ext_resource path="res://assets/art/background/distant_platforms_1.png" type="Texture" id=6]
[ext_resource path="res://assets/art/background/distant_platforms_2.png" type="Texture2D" id=1]
[ext_resource path="res://assets/art/background/sky.png" type="Texture2D" id=2]
[ext_resource path="res://assets/art/background/cloud_1.png" type="Texture2D" id=3]
[ext_resource path="res://assets/art/background/cloud_2.png" type="Texture2D" id=4]
[ext_resource path="res://assets/art/background/cloud_3.png" type="Texture2D" id=5]
[ext_resource path="res://assets/art/background/distant_platforms_1.png" type="Texture2D" id=6]
[node name="ParallaxBackground" type="ParallaxBackground"]
scroll_base_scale = Vector2( 0.4, 0 )
scroll_base_scale = Vector2(0.4, 0)
[node name="Sky" type="ParallaxLayer" parent="."]
motion_mirroring = Vector2( 400, 0 )
motion_mirroring = Vector2(400, 0)
[node name="Sprite" type="Sprite" parent="Sky"]
scale = Vector2( 64, 0.94 )
[node name="Sprite2D" type="Sprite2D" parent="Sky"]
scale = Vector2(64, 0.94)
texture = ExtResource( 2 )
centered = false
[node name="Clouds" type="ParallaxLayer" parent="."]
motion_scale = Vector2( 0.1, 1 )
motion_offset = Vector2( -550, 0 )
motion_scale = Vector2(0.1, 1)
motion_offset = Vector2(-550, 0)
[node name="CloudGroup1" type="Node2D" parent="Clouds"]
position = Vector2( -780, 0 )
position = Vector2(-780, 0)
[node name="Sprite1" type="Sprite" parent="Clouds/CloudGroup1"]
position = Vector2( -200, 120 )
[node name="Sprite1" type="Sprite2D" parent="Clouds/CloudGroup1"]
position = Vector2(-200, 120)
texture = ExtResource( 3 )
centered = false
[node name="Sprite2" type="Sprite" parent="Clouds/CloudGroup1"]
position = Vector2( 100, 10 )
[node name="Sprite2" type="Sprite2D" parent="Clouds/CloudGroup1"]
position = Vector2(100, 10)
texture = ExtResource( 3 )
centered = false
[node name="Sprite3" type="Sprite" parent="Clouds/CloudGroup1"]
position = Vector2( -60, 40 )
[node name="Sprite3" type="Sprite2D" parent="Clouds/CloudGroup1"]
position = Vector2(-60, 40)
texture = ExtResource( 4 )
centered = false
[node name="Sprite4" type="Sprite" parent="Clouds/CloudGroup1"]
position = Vector2( 150, 65 )
[node name="Sprite4" type="Sprite2D" parent="Clouds/CloudGroup1"]
position = Vector2(150, 65)
texture = ExtResource( 4 )
centered = false
[node name="Sprite5" type="Sprite" parent="Clouds/CloudGroup1"]
position = Vector2( 15, 75 )
[node name="Sprite5" type="Sprite2D" parent="Clouds/CloudGroup1"]
position = Vector2(15, 75)
texture = ExtResource( 5 )
centered = false
[node name="Sprite6" type="Sprite" parent="Clouds/CloudGroup1"]
position = Vector2( 225, 35 )
[node name="Sprite6" type="Sprite2D" parent="Clouds/CloudGroup1"]
position = Vector2(225, 35)
texture = ExtResource( 5 )
centered = false
[node name="CloudGroup2" type="Node2D" parent="Clouds"]
[node name="Sprite1" type="Sprite" parent="Clouds/CloudGroup2"]
position = Vector2( -200, 120 )
[node name="Sprite1" type="Sprite2D" parent="Clouds/CloudGroup2"]
position = Vector2(-200, 120)
texture = ExtResource( 3 )
centered = false
[node name="Sprite2" type="Sprite" parent="Clouds/CloudGroup2"]
position = Vector2( 100, 10 )
[node name="Sprite2" type="Sprite2D" parent="Clouds/CloudGroup2"]
position = Vector2(100, 10)
texture = ExtResource( 3 )
centered = false
[node name="Sprite3" type="Sprite" parent="Clouds/CloudGroup2"]
position = Vector2( -60, 40 )
[node name="Sprite3" type="Sprite2D" parent="Clouds/CloudGroup2"]
position = Vector2(-60, 40)
texture = ExtResource( 4 )
centered = false
[node name="Sprite4" type="Sprite" parent="Clouds/CloudGroup2"]
position = Vector2( 150, 65 )
[node name="Sprite4" type="Sprite2D" parent="Clouds/CloudGroup2"]
position = Vector2(150, 65)
texture = ExtResource( 4 )
centered = false
[node name="Sprite5" type="Sprite" parent="Clouds/CloudGroup2"]
position = Vector2( 15, 75 )
[node name="Sprite5" type="Sprite2D" parent="Clouds/CloudGroup2"]
position = Vector2(15, 75)
texture = ExtResource( 5 )
centered = false
[node name="Sprite6" type="Sprite" parent="Clouds/CloudGroup2"]
position = Vector2( 225, 35 )
[node name="Sprite6" type="Sprite2D" parent="Clouds/CloudGroup2"]
position = Vector2(225, 35)
texture = ExtResource( 5 )
centered = false
[node name="CloudGroup3" type="Node2D" parent="Clouds"]
position = Vector2( 390, 0 )
position = Vector2(390, 0)
[node name="Sprite1" type="Sprite" parent="Clouds/CloudGroup3"]
position = Vector2( -200, 120 )
[node name="Sprite1" type="Sprite2D" parent="Clouds/CloudGroup3"]
position = Vector2(-200, 120)
texture = ExtResource( 3 )
centered = false
[node name="Sprite2" type="Sprite" parent="Clouds/CloudGroup3"]
position = Vector2( 100, 10 )
[node name="Sprite2" type="Sprite2D" parent="Clouds/CloudGroup3"]
position = Vector2(100, 10)
texture = ExtResource( 3 )
centered = false
[node name="Sprite3" type="Sprite" parent="Clouds/CloudGroup3"]
position = Vector2( -60, 40 )
[node name="Sprite3" type="Sprite2D" parent="Clouds/CloudGroup3"]
position = Vector2(-60, 40)
texture = ExtResource( 4 )
centered = false
[node name="Sprite4" type="Sprite" parent="Clouds/CloudGroup3"]
position = Vector2( 150, 65 )
[node name="Sprite4" type="Sprite2D" parent="Clouds/CloudGroup3"]
position = Vector2(150, 65)
texture = ExtResource( 4 )
centered = false
[node name="Sprite5" type="Sprite" parent="Clouds/CloudGroup3"]
position = Vector2( 15, 75 )
[node name="Sprite5" type="Sprite2D" parent="Clouds/CloudGroup3"]
position = Vector2(15, 75)
texture = ExtResource( 5 )
centered = false
[node name="Sprite6" type="Sprite" parent="Clouds/CloudGroup3"]
position = Vector2( 225, 35 )
[node name="Sprite6" type="Sprite2D" parent="Clouds/CloudGroup3"]
position = Vector2(225, 35)
texture = ExtResource( 5 )
centered = false
[node name="CloudGroup4" type="Node2D" parent="Clouds"]
position = Vector2( 780, 0 )
position = Vector2(780, 0)
[node name="Sprite1" type="Sprite" parent="Clouds/CloudGroup4"]
position = Vector2( -200, 120 )
[node name="Sprite1" type="Sprite2D" parent="Clouds/CloudGroup4"]
position = Vector2(-200, 120)
texture = ExtResource( 3 )
centered = false
[node name="Sprite2" type="Sprite" parent="Clouds/CloudGroup4"]
position = Vector2( 100, 10 )
[node name="Sprite2" type="Sprite2D" parent="Clouds/CloudGroup4"]
position = Vector2(100, 10)
texture = ExtResource( 3 )
centered = false
[node name="Sprite3" type="Sprite" parent="Clouds/CloudGroup4"]
position = Vector2( -60, 40 )
[node name="Sprite3" type="Sprite2D" parent="Clouds/CloudGroup4"]
position = Vector2(-60, 40)
texture = ExtResource( 4 )
centered = false
[node name="Sprite4" type="Sprite" parent="Clouds/CloudGroup4"]
position = Vector2( 150, 65 )
[node name="Sprite4" type="Sprite2D" parent="Clouds/CloudGroup4"]
position = Vector2(150, 65)
texture = ExtResource( 4 )
centered = false
[node name="Sprite5" type="Sprite" parent="Clouds/CloudGroup4"]
position = Vector2( 15, 75 )
[node name="Sprite5" type="Sprite2D" parent="Clouds/CloudGroup4"]
position = Vector2(15, 75)
texture = ExtResource( 5 )
centered = false
[node name="Sprite6" type="Sprite" parent="Clouds/CloudGroup4"]
position = Vector2( 225, 35 )
[node name="Sprite6" type="Sprite2D" parent="Clouds/CloudGroup4"]
position = Vector2(225, 35)
texture = ExtResource( 5 )
centered = false
[node name="Mountains2" type="ParallaxLayer" parent="."]
position = Vector2( 0, 243 )
motion_scale = Vector2( 0.2, 1 )
position = Vector2(0, 243)
motion_scale = Vector2(0.2, 1)
[node name="Sprite" type="Sprite" parent="Mountains2"]
position = Vector2( 0, -64 )
[node name="Sprite2D" type="Sprite2D" parent="Mountains2"]
position = Vector2(0, -64)
texture = ExtResource( 1 )
region_enabled = true
region_rect = Rect2( 0, 0, 2048, 128 )
region_rect = Rect2(0, 0, 2048, 128)
[node name="Mountains1" type="ParallaxLayer" parent="."]
position = Vector2( 0, 246 )
motion_scale = Vector2( 0.4, 1 )
position = Vector2(0, 246)
motion_scale = Vector2(0.4, 1)
[node name="Sprite" type="Sprite" parent="Mountains1"]
position = Vector2( 0, -64 )
[node name="Sprite2D" type="Sprite2D" parent="Mountains1"]
position = Vector2(0, -64)
texture = ExtResource( 6 )
region_enabled = true
region_rect = Rect2( 0, 0, 2048, 128 )
region_rect = Rect2(0, 0, 2048, 128)

View File

@@ -5,7 +5,7 @@ extends Node
# The "_" prefix is a convention to indicate that variables are private,
# that is to say, another node or script should not access them.
onready var _pause_menu = $InterfaceLayer/PauseMenu
@onready var _pause_menu = $InterfaceLayer/PauseMenu
func _init():
@@ -15,7 +15,7 @@ func _init():
func _notification(what):
if what == NOTIFICATION_WM_QUIT_REQUEST:
# We need to clean up a little bit first to avoid Viewport errors.
# We need to clean up a little bit first to avoid SubViewport errors.
if name == "Splitscreen":
$Black/SplitContainer/ViewportContainer1.free()
$Black.queue_free()
@@ -40,7 +40,7 @@ func _unhandled_input(event):
elif event.is_action_pressed("splitscreen"):
if name == "Splitscreen":
# We need to clean up a little bit first to avoid Viewport errors.
# We need to clean up a little bit first to avoid SubViewport errors.
$Black/SplitContainer/ViewportContainer1.free()
$Black.queue_free()
# warning-ignore:return_value_discarded

View File

@@ -6,13 +6,13 @@
[ext_resource path="res://src/Actors/Player.tscn" type="PackedScene" id=4]
[node name="Game" type="Node"]
pause_mode = 2
process_mode = 3
script = ExtResource( 2 )
[node name="Level" parent="." instance=ExtResource( 3 )]
[node name="Player" parent="Level" instance=ExtResource( 4 )]
position = Vector2( 90, 546 )
position = Vector2(90, 546)
[node name="InterfaceLayer" type="CanvasLayer" parent="."]
layer = 100

View File

@@ -7,7 +7,7 @@
[ext_resource path="res://src/Level/ParallaxBackground.tscn" type="PackedScene" id=5]
[node name="Splitscreen" type="Node"]
pause_mode = 2
process_mode = 3
script = ExtResource( 2 )
[node name="InterfaceLayer" type="CanvasLayer" parent="."]
@@ -18,9 +18,9 @@ layer = 100
[node name="Black" type="ColorRect" parent="."]
anchor_right = 1.0
anchor_bottom = 1.0
margin_right = 6.10352e-05
margin_bottom = 3.05176e-05
color = Color( 0, 0, 0, 1 )
offset_right = 6.10352e-05
offset_bottom = 3.05176e-05
color = Color(0, 0, 0, 1)
[node name="SplitContainer" type="HSplitContainer" parent="Black"]
anchor_right = 1.0
@@ -30,9 +30,9 @@ __meta__ = {
"_edit_use_anchors_": false
}
[node name="ViewportContainer1" type="ViewportContainer" parent="Black/SplitContainer"]
margin_right = 394.0
margin_bottom = 480.0
[node name="ViewportContainer1" type="SubViewportContainer" parent="Black/SplitContainer"]
offset_right = 394.0
offset_bottom = 480.0
size_flags_horizontal = 3
size_flags_vertical = 3
stretch = true
@@ -40,8 +40,8 @@ __meta__ = {
"_edit_use_anchors_": false
}
[node name="Viewport1" type="Viewport" parent="Black/SplitContainer/ViewportContainer1"]
size = Vector2( 394, 480 )
[node name="Viewport1" type="SubViewport" parent="Black/SplitContainer/ViewportContainer1"]
size = Vector2(394, 480)
size_override_stretch = true
handle_input_locally = false
usage = 0
@@ -51,17 +51,17 @@ audio_listener_enable_2d = true
[node name="Level" parent="Black/SplitContainer/ViewportContainer1/Viewport1" instance=ExtResource( 3 )]
[node name="Player1" parent="Black/SplitContainer/ViewportContainer1/Viewport1/Level" instance=ExtResource( 4 )]
position = Vector2( 90, 546 )
position = Vector2(90, 546)
action_suffix = "_p1"
[node name="Player2" parent="Black/SplitContainer/ViewportContainer1/Viewport1/Level" instance=ExtResource( 4 )]
position = Vector2( 120, 546 )
position = Vector2(120, 546)
action_suffix = "_p2"
[node name="ViewportContainer2" type="ViewportContainer" parent="Black/SplitContainer"]
margin_left = 406.0
margin_right = 800.0
margin_bottom = 480.0
[node name="ViewportContainer2" type="SubViewportContainer" parent="Black/SplitContainer"]
offset_left = 406.0
offset_right = 800.0
offset_bottom = 480.0
size_flags_horizontal = 3
size_flags_vertical = 3
stretch = true
@@ -69,8 +69,8 @@ __meta__ = {
"_edit_use_anchors_": false
}
[node name="Viewport2" type="Viewport" parent="Black/SplitContainer/ViewportContainer2"]
size = Vector2( 394, 480 )
[node name="Viewport2" type="SubViewport" parent="Black/SplitContainer/ViewportContainer2"]
size = Vector2(394, 480)
size_override_stretch = true
handle_input_locally = false
usage = 0

View File

@@ -2,7 +2,7 @@ class_name Bullet
extends RigidBody2D
onready var animation_player = $AnimationPlayer
@onready var animation_player = $AnimationPlayer
func destroy():

View File

@@ -1,6 +1,6 @@
[gd_scene load_steps=8 format=2]
[ext_resource path="res://assets/art/player/bullet/bullet.png" type="Texture" id=1]
[ext_resource path="res://assets/art/player/bullet/bullet.png" type="Texture2D" id=1]
[ext_resource path="res://src/Objects/Bullet.gd" type="Script" id=2]
[sub_resource type="CanvasItemMaterial" id=1]
@@ -23,36 +23,36 @@ tracks/0/loop_wrap = true
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/keys = {
"times": PoolRealArray( 0.3 ),
"transitions": PoolRealArray( 1 ),
"values": [ {
"args": [ ],
"times": PackedFloat32Array(0.3),
"transitions": PackedFloat32Array(1),
"values": [{
"args": [],
"method": "queue_free"
} ]
}]
}
tracks/1/type = "value"
tracks/1/path = NodePath("Sprite:self_modulate")
tracks/1/path = NodePath("Sprite2D:self_modulate")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/keys = {
"times": PoolRealArray( 0, 0.3 ),
"transitions": PoolRealArray( 1, 1 ),
"times": PackedFloat32Array(0, 0.3),
"transitions": PackedFloat32Array(1, 1),
"update": 0,
"values": [ Color( 1, 1, 1, 1 ), Color( 1, 1, 1, 0 ) ]
"values": [Color(1, 1, 1, 1), Color(1, 1, 1, 0)]
}
tracks/2/type = "value"
tracks/2/path = NodePath("Particles2D:self_modulate")
tracks/2/path = NodePath("GPUParticles2D:self_modulate")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/keys = {
"times": PoolRealArray( 0, 0.3 ),
"transitions": PoolRealArray( 1, 1 ),
"times": PackedFloat32Array(0, 0.3),
"transitions": PackedFloat32Array(1, 1),
"update": 0,
"values": [ Color( 1, 1, 1, 1 ), Color( 1, 1, 1, 0 ) ]
"values": [Color(1, 1, 1, 1), Color(1, 1, 1, 0)]
}
[node name="Bullet" type="RigidBody2D"]
@@ -64,7 +64,7 @@ contacts_reported = 1
contact_monitor = true
script = ExtResource( 2 )
[node name="Particles2D" type="CPUParticles2D" parent="."]
[node name="GPUParticles2D" type="CPUParticles2D" parent="."]
material = SubResource( 2 )
emitting = false
lifetime = 0.3
@@ -72,11 +72,11 @@ speed_scale = 3.0
local_coords = false
texture = ExtResource( 1 )
spread = 0.0
gravity = Vector2( 0, 0 )
gravity = Vector2(0, 0)
scale_amount = 0.8
color = Color( 1, 1, 1, 0.705882 )
color = Color(1, 1, 1, 0.705882)
[node name="Sprite" type="Sprite" parent="."]
[node name="Sprite2D" type="Sprite2D" parent="."]
material = SubResource( 3 )
texture = ExtResource( 1 )

View File

@@ -2,7 +2,7 @@ class_name Coin
extends Area2D
# Collectible that disappears when the player touches it.
onready var animation_player = $AnimationPlayer
@onready var animation_player = $AnimationPlayer
# The Coins only detects collisions with the Player thanks to its collision mask.
# This prevents other characters such as enemies from picking up coins.

View File

@@ -1,6 +1,6 @@
[gd_scene load_steps=7 format=2]
[ext_resource path="res://assets/art/coin/coin.png" type="Texture" id=2]
[ext_resource path="res://assets/art/coin/coin.png" type="Texture2D" id=2]
[ext_resource path="res://assets/audio/sfx/coin_pickup.wav" type="AudioStream" id=3]
[ext_resource path="res://src/Objects/Coin.gd" type="Script" id=4]
@@ -9,16 +9,16 @@ resource_name = "picked"
length = 1.5
step = 0.25
tracks/0/type = "value"
tracks/0/path = NodePath("Sprite:frame")
tracks/0/path = NodePath("Sprite2D:frame")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [ 0 ]
"values": [0]
}
tracks/1/type = "method"
tracks/1/path = NodePath(".")
@@ -27,24 +27,24 @@ tracks/1/loop_wrap = true
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/keys = {
"times": PoolRealArray( 1 ),
"transitions": PoolRealArray( 1 ),
"values": [ {
"args": [ ],
"times": PackedFloat32Array(1),
"transitions": PackedFloat32Array(1),
"values": [{
"args": [],
"method": "queue_free"
} ]
}]
}
tracks/2/type = "value"
tracks/2/path = NodePath("Sprite:self_modulate")
tracks/2/path = NodePath("Sprite2D:self_modulate")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/keys = {
"times": PoolRealArray( 0.25, 1.25 ),
"transitions": PoolRealArray( 1, 1 ),
"times": PackedFloat32Array(0.25, 1.25),
"transitions": PackedFloat32Array(1, 1),
"update": 0,
"values": [ Color( 1, 1, 1, 1 ), Color( 1, 1, 1, 0 ) ]
"values": [Color(1, 1, 1, 1), Color(1, 1, 1, 0)]
}
tracks/3/type = "value"
tracks/3/path = NodePath("Pickup:playing")
@@ -53,10 +53,10 @@ tracks/3/loop_wrap = true
tracks/3/imported = false
tracks/3/enabled = true
tracks/3/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 2,
"values": [ true ]
"values": [true]
}
tracks/4/type = "value"
tracks/4/path = NodePath(".:monitoring")
@@ -65,22 +65,22 @@ tracks/4/loop_wrap = true
tracks/4/imported = false
tracks/4/enabled = true
tracks/4/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [ false ]
"values": [false]
}
tracks/5/type = "value"
tracks/5/path = NodePath("Sprite:position")
tracks/5/path = NodePath("Sprite2D:position")
tracks/5/interp = 1
tracks/5/loop_wrap = true
tracks/5/imported = false
tracks/5/enabled = true
tracks/5/keys = {
"times": PoolRealArray( 0, 1.5 ),
"transitions": PoolRealArray( 1, 1 ),
"times": PackedFloat32Array(0, 1.5),
"transitions": PackedFloat32Array(1, 1),
"update": 0,
"values": [ Vector2( 0, 0 ), Vector2( 0, -42 ) ]
"values": [Vector2(0, 0), Vector2(0, -42)]
}
[sub_resource type="Animation" id=2]
@@ -88,40 +88,40 @@ length = 1.5
loop = true
step = 0.25
tracks/0/type = "value"
tracks/0/path = NodePath("Sprite:frame")
tracks/0/path = NodePath("Sprite2D:frame")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/keys = {
"times": PoolRealArray( 0, 0.25, 0.5, 0.75, 1, 1.25, 1.5 ),
"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1 ),
"times": PackedFloat32Array(0, 0.25, 0.5, 0.75, 1, 1.25, 1.5),
"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1),
"update": 1,
"values": [ 0, 1, 2, 3, 2, 1, 0 ]
"values": [0, 1, 2, 3, 2, 1, 0]
}
tracks/1/type = "value"
tracks/1/path = NodePath("Sprite:position")
tracks/1/path = NodePath("Sprite2D:position")
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 ),
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 2,
"values": [ Vector2( 0, 0 ) ]
"values": [Vector2(0, 0)]
}
tracks/2/type = "value"
tracks/2/path = NodePath("Sprite:self_modulate")
tracks/2/path = NodePath("Sprite2D:self_modulate")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 2,
"values": [ Color( 1, 1, 1, 1 ) ]
"values": [Color(1, 1, 1, 1)]
}
tracks/3/type = "value"
tracks/3/path = NodePath(".:monitoring")
@@ -130,10 +130,10 @@ tracks/3/loop_wrap = true
tracks/3/imported = false
tracks/3/enabled = true
tracks/3/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 2,
"values": [ true ]
"values": [true]
}
[sub_resource type="CircleShape2D" id=3]
@@ -145,7 +145,7 @@ monitoring = false
monitorable = false
script = ExtResource( 4 )
[node name="Sprite" type="Sprite" parent="."]
[node name="Sprite2D" type="Sprite2D" parent="."]
texture = ExtResource( 2 )
hframes = 4

View File

@@ -1,21 +1,21 @@
[gd_scene load_steps=3 format=2]
[ext_resource path="res://assets/art/platforms/moving_platform.png" type="Texture" id=2]
[ext_resource path="res://assets/art/platforms/moving_platform.png" type="Texture2D" id=2]
[sub_resource type="RectangleShape2D" id=1]
extents = Vector2( 47, 6 )
extents = Vector2(47, 6)
[node name="Platform" type="KinematicBody2D"]
[node name="Platform" type="CharacterBody2D"]
z_index = -1
collision_layer = 8
collision_mask = 0
collision/safe_margin = 0.12
motion/sync_to_physics = true
[node name="Sprite" type="Sprite" parent="."]
[node name="Sprite2D" type="Sprite2D" parent="."]
texture = ExtResource( 2 )
[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
position = Vector2( 0, -4 )
position = Vector2(0, -4)
shape = SubResource( 1 )
one_way_collision = true

View File

@@ -2,22 +2,22 @@ extends Panel
var coins_collected = 0
onready var coins_label = $Label
@onready var coins_label = $Label
func _ready():
coins_label.set_text(str(coins_collected))
# Static types are necessary here to avoid warnings.
var anim_sprite: AnimatedSprite = $AnimatedSprite
var anim_sprite: AnimatedSprite2D = $AnimatedSprite2D
anim_sprite.play()
# Check if the game is in splitscreen mode by checking the scene root name.
if get_tree().get_root().get_child(0).name == "Splitscreen":
var _level_node = get_node(@"../../../../Black/SplitContainer/ViewportContainer1/Viewport1/Level")
_level_node.get_node("Player1").connect("collect_coin", self, "_collect_coin")
_level_node.get_node("Player2").connect("collect_coin", self, "_collect_coin")
var _level_node = get_node(^"../../../../Black/SplitContainer/ViewportContainer1/Viewport1/Level")
_level_node.get_node(^"Player1").connect(&"collect_coin", self._collect_coin)
_level_node.get_node(^"Player2").connect(&"collect_coin", self._collect_coin)
else:
var _player_path = get_node(@"../../../../Level/Player")
_player_path.connect("collect_coin", self, "_collect_coin")
var _player_path = get_node(^"../../../../Level/Player")
_player_path.connect(&"collect_coin", self._collect_coin)
func _collect_coin():

View File

@@ -1,42 +1,42 @@
[gd_scene load_steps=10 format=2]
[ext_resource path="res://assets/theme/user_interface.tres" type="Theme" id=1]
[ext_resource path="res://assets/art/coin/coin.png" type="Texture" id=2]
[ext_resource path="res://assets/art/coin/coin.png" type="Texture2D" id=2]
[ext_resource path="res://src/UserInterface/CoinsCounter.gd" type="Script" id=3]
[sub_resource type="StyleBoxFlat" id=1]
bg_color = Color( 0, 0, 0, 0.5 )
bg_color = Color(0, 0, 0, 0.5)
[sub_resource type="AtlasTexture" id=2]
atlas = ExtResource( 2 )
region = Rect2( 0, 0, 8, 8 )
region = Rect2(0, 0, 8, 8)
[sub_resource type="AtlasTexture" id=3]
atlas = ExtResource( 2 )
region = Rect2( 8, 0, 8, 8 )
region = Rect2(8, 0, 8, 8)
[sub_resource type="AtlasTexture" id=4]
atlas = ExtResource( 2 )
region = Rect2( 16, 0, 8, 8 )
region = Rect2(16, 0, 8, 8)
[sub_resource type="AtlasTexture" id=5]
atlas = ExtResource( 2 )
region = Rect2( 24, 0, 8, 8 )
region = Rect2(24, 0, 8, 8)
[sub_resource type="SpriteFrames" id=6]
animations = [ {
"frames": [ SubResource( 2 ), SubResource( 3 ), SubResource( 4 ), SubResource( 5 ), SubResource( 4 ), SubResource( 3 ) ],
animations = [{
"frames": [SubResource( 2 ), SubResource( 3 ), SubResource( 4 ), SubResource( 5 ), SubResource( 4 ), SubResource( 3 )],
"loop": true,
"name": "coin_spinning",
"speed": 6.5
} ]
}]
[node name="CoinsCounter" type="Panel"]
margin_left = 5.0
margin_top = 5.0
margin_right = 100.0
margin_bottom = 45.0
rect_min_size = Vector2( 100, 45 )
offset_left = 5.0
offset_top = 5.0
offset_right = 100.0
offset_bottom = 45.0
rect_min_size = Vector2(100, 45)
theme = ExtResource( 1 )
custom_styles/panel = SubResource( 1 )
script = ExtResource( 3 )
@@ -47,7 +47,7 @@ __meta__ = {
[node name="Label" type="Label" parent="."]
anchor_right = 1.0
anchor_bottom = 1.0
margin_right = -8.0
offset_right = -8.0
text = "100"
align = 2
valign = 1
@@ -56,8 +56,8 @@ __meta__ = {
"_edit_use_anchors_": false
}
[node name="AnimatedSprite" type="AnimatedSprite" parent="."]
position = Vector2( 21.5, 22.5 )
scale = Vector2( 4.375, 4.375 )
[node name="AnimatedSprite2D" type="AnimatedSprite2D" parent="."]
position = Vector2(21.5, 22.5)
scale = Vector2(4.375, 4.375)
frames = SubResource( 6 )
animation = "coin_spinning"

View File

@@ -1,17 +1,17 @@
extends Control
export(Vector2) var _start_position = Vector2(0, -20)
export(Vector2) var _end_position = Vector2.ZERO
export(float) var fade_in_duration = 0.3
export(float) var fade_out_duration = 0.2
@export var _start_position: Vector2 = Vector2(0, -20)
@export var _end_position: Vector2 = Vector2.ZERO
@export var fade_in_duration: float = 0.3
@export var fade_out_duration: float = 0.2
onready var center_cont = $ColorRect/CenterContainer
onready var resume_button = center_cont.get_node(@"VBoxContainer/ResumeButton")
@onready var center_cont = $ColorRect/CenterContainer
@onready var resume_button = center_cont.get_node(^"VBoxContainer/ResumeButton")
onready var root = get_tree().get_root()
onready var scene_root = root.get_child(root.get_child_count() - 1)
onready var tween = $Tween
@onready var root = get_tree().get_root()
@onready var scene_root = root.get_child(root.get_child_count() - 1)
@onready var tween = $Tween
func _ready():
@@ -25,7 +25,7 @@ func close():
# Tween duration, Transition type, Easing type, Optional delay)
tween.interpolate_property(self, "modulate:a", 1.0, 0.0,
fade_out_duration, Tween.TRANS_LINEAR, Tween.EASE_IN)
tween.interpolate_property(center_cont, "rect_position",
tween.interpolate_property(center_cont, "position",
_end_position, _start_position, fade_out_duration,
Tween.TRANS_CUBIC, Tween.EASE_OUT)
tween.start()
@@ -37,7 +37,7 @@ func open():
tween.interpolate_property(self, "modulate:a", 0.0, 1.0,
fade_in_duration, Tween.TRANS_LINEAR, Tween.EASE_IN)
tween.interpolate_property(center_cont, "rect_position",
tween.interpolate_property(center_cont, "position",
_start_position, _end_position, fade_in_duration,
Tween.TRANS_CUBIC, Tween.EASE_OUT)
tween.start()

View File

@@ -2,15 +2,15 @@
[ext_resource path="res://assets/theme/user_interface.tres" type="Theme" id=1]
[ext_resource path="res://src/UserInterface/PauseMenu.gd" type="Script" id=2]
[ext_resource path="res://assets/theme/fonts/kenney_mini_square.tres" type="DynamicFontData" id=3]
[ext_resource path="res://assets/theme/fonts/kenney_mini_square.tres" type="FontData" id=3]
[ext_resource path="res://src/UserInterface/CoinsCounter.tscn" type="PackedScene" id=4]
[sub_resource type="DynamicFont" id=1]
[sub_resource type="Font" id=1]
size = 44
font_data = ExtResource( 3 )
[node name="PauseMenu" type="Control"]
pause_mode = 2
process_mode = 3
anchor_right = 1.0
anchor_bottom = 1.0
theme = ExtResource( 1 )
@@ -22,7 +22,7 @@ __meta__ = {
[node name="ColorRect" type="ColorRect" parent="."]
anchor_right = 1.0
anchor_bottom = 1.0
color = Color( 0, 0, 0, 0.294118 )
color = Color(0, 0, 0, 0.294118)
__meta__ = {
"_edit_use_anchors_": false
}
@@ -35,11 +35,11 @@ __meta__ = {
}
[node name="VBoxContainer" type="VBoxContainer" parent="ColorRect/CenterContainer"]
margin_left = 250.0
margin_top = 140.0
margin_right = 550.0
margin_bottom = 340.0
rect_min_size = Vector2( 300, 200 )
offset_left = 250.0
offset_top = 140.0
offset_right = 550.0
offset_bottom = 340.0
rect_min_size = Vector2(300, 200)
custom_constants/separation = 6
alignment = 1
__meta__ = {
@@ -47,41 +47,41 @@ __meta__ = {
}
[node name="Label" type="Label" parent="ColorRect/CenterContainer/VBoxContainer"]
margin_top = 7.0
margin_right = 300.0
margin_bottom = 62.0
offset_top = 7.0
offset_right = 300.0
offset_bottom = 62.0
custom_fonts/font = SubResource( 1 )
text = "Game Paused"
align = 1
valign = 1
[node name="MarginContainer" type="MarginContainer" parent="ColorRect/CenterContainer/VBoxContainer"]
margin_top = 68.0
margin_right = 300.0
margin_bottom = 88.0
rect_min_size = Vector2( 0, 20 )
offset_top = 68.0
offset_right = 300.0
offset_bottom = 88.0
rect_min_size = Vector2(0, 20)
[node name="ResumeButton" type="Button" parent="ColorRect/CenterContainer/VBoxContainer"]
margin_left = 60.0
margin_top = 94.0
margin_right = 240.0
margin_bottom = 140.0
rect_min_size = Vector2( 180, 40 )
offset_left = 60.0
offset_top = 94.0
offset_right = 240.0
offset_bottom = 140.0
rect_min_size = Vector2(180, 40)
size_flags_horizontal = 4
text = "Resume"
[node name="QuitButton" type="Button" parent="ColorRect/CenterContainer/VBoxContainer"]
margin_left = 60.0
margin_top = 146.0
margin_right = 240.0
margin_bottom = 192.0
rect_min_size = Vector2( 180, 40 )
offset_left = 60.0
offset_top = 146.0
offset_right = 240.0
offset_bottom = 192.0
rect_min_size = Vector2(180, 40)
size_flags_horizontal = 4
text = "Quit"
[node name="CoinsCounter" parent="ColorRect" instance=ExtResource( 4 )]
margin_right = 105.0
margin_bottom = 50.0
offset_right = 105.0
offset_bottom = 50.0
[node name="Tween" type="Tween" parent="."]