Compare commits

...

6 Commits

110 changed files with 10677 additions and 2089 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.3 KiB

View File

@ -0,0 +1,35 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/Spaceship-Wall-Lampsl-sheet.png-81a0f93d52765da5deec33ed3479b007.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/environment/background/Spaceship-Wall-Lampsl-sheet.png"
dest_files=[ "res://.import/Spaceship-Wall-Lampsl-sheet.png-81a0f93d52765da5deec33ed3479b007.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=false
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=false
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
process/normal_map_invert_y=false
stream=false
size_limit=0
detect_3d=false
svg/scale=1.0

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

View File

@ -0,0 +1,35 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/Spaceship-Wall-Lampsl1.png-cd48df8eda708b9f973197801c68696e.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/environment/background/Spaceship-Wall-Lampsl1.png"
dest_files=[ "res://.import/Spaceship-Wall-Lampsl1.png-cd48df8eda708b9f973197801c68696e.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=false
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=false
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
process/normal_map_invert_y=false
stream=false
size_limit=0
detect_3d=false
svg/scale=1.0

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

View File

@ -0,0 +1,35 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/Spaceship-Wall-Lampsl2.png-f6b7833ca90f073563e826e888db6450.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/environment/background/Spaceship-Wall-Lampsl2.png"
dest_files=[ "res://.import/Spaceship-Wall-Lampsl2.png-f6b7833ca90f073563e826e888db6450.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=false
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=false
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
process/normal_map_invert_y=false
stream=false
size_limit=0
detect_3d=false
svg/scale=1.0

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

View File

@ -0,0 +1,35 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/Spaceship-Wall-Lampsl3.png-02f969cb682211992f47e569087fbed9.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/environment/background/Spaceship-Wall-Lampsl3.png"
dest_files=[ "res://.import/Spaceship-Wall-Lampsl3.png-02f969cb682211992f47e569087fbed9.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=false
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=false
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
process/normal_map_invert_y=false
stream=false
size_limit=0
detect_3d=false
svg/scale=1.0

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

View File

@ -0,0 +1,35 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/Spaceship-Wall-Lampsl4.png-929e020ff24cceb6fd5891ae9942ed61.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/environment/background/Spaceship-Wall-Lampsl4.png"
dest_files=[ "res://.import/Spaceship-Wall-Lampsl4.png-929e020ff24cceb6fd5891ae9942ed61.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=false
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=false
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
process/normal_map_invert_y=false
stream=false
size_limit=0
detect_3d=false
svg/scale=1.0

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

View File

@ -0,0 +1,35 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/Spaceship-Wall-Lampsl5.png-2c0c735f6c479835eef787691210e144.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/environment/background/Spaceship-Wall-Lampsl5.png"
dest_files=[ "res://.import/Spaceship-Wall-Lampsl5.png-2c0c735f6c479835eef787691210e144.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=false
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=false
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
process/normal_map_invert_y=false
stream=false
size_limit=0
detect_3d=false
svg/scale=1.0

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.0 KiB

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

After

Width:  |  Height:  |  Size: 9.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.6 KiB

After

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.0 KiB

After

Width:  |  Height:  |  Size: 4.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 23 KiB

After

Width:  |  Height:  |  Size: 24 KiB

View File

@ -0,0 +1,11 @@
Model Information:
* title: Pirate Coin (game ready asset)
* source: https://sketchfab.com/3d-models/pirate-coin-game-ready-asset-7f5bd42a45164a64a20a39a8c37befb5
* author: Pixel Life (https://sketchfab.com/pixellife)
Model License:
* license type: CC-BY-4.0 (http://creativecommons.org/licenses/by/4.0/)
* requirements: Author must be credited. Commercial use is allowed.
If you use this 3D model in your project be sure to copy paste this credit wherever you share it:
This work is based on "Pirate Coin (game ready asset)" (https://sketchfab.com/3d-models/pirate-coin-game-ready-asset-7f5bd42a45164a64a20a39a8c37befb5) by Pixel Life (https://sketchfab.com/pixellife) licensed under CC-BY-4.0 (http://creativecommons.org/licenses/by/4.0/)

View File

@ -0,0 +1,395 @@
{
"accessors": [
{
"bufferView": 2,
"componentType": 5126,
"count": 388,
"max": [
11.877857208251953,
1.4657793045043945,
12.0
],
"min": [
-11.877856254577637,
-1.4657793045043945,
-12.000001907348633
],
"type": "VEC3"
},
{
"bufferView": 2,
"byteOffset": 4656,
"componentType": 5126,
"count": 388,
"max": [
0.9898214936256409,
1.0,
1.0
],
"min": [
-0.9898214936256409,
-1.0,
-1.0
],
"type": "VEC3"
},
{
"bufferView": 3,
"componentType": 5126,
"count": 388,
"max": [
0.9999979734420776,
0.619443416595459,
0.9901516437530518,
1.0
],
"min": [
-0.9999992251396179,
-0.6194434762001038,
-0.9901516437530518,
1.0
],
"type": "VEC4"
},
{
"bufferView": 1,
"componentType": 5126,
"count": 388,
"max": [
0.9929424524307251,
0.9907678365707397
],
"min": [
0.006324410438537598,
0.005905091762542725
],
"type": "VEC2"
},
{
"bufferView": 1,
"byteOffset": 3104,
"componentType": 5126,
"count": 388,
"max": [
0.9929424524307251,
0.9907678365707397
],
"min": [
0.006324410438537598,
0.005905091762542725
],
"type": "VEC2"
},
{
"bufferView": 1,
"byteOffset": 6208,
"componentType": 5126,
"count": 388,
"max": [
0.9929424524307251,
0.9907678365707397
],
"min": [
0.006324410438537598,
0.005905091762542725
],
"type": "VEC2"
},
{
"bufferView": 1,
"byteOffset": 9312,
"componentType": 5126,
"count": 388,
"max": [
0.9929424524307251,
0.9907678365707397
],
"min": [
0.006324410438537598,
0.005905091762542725
],
"type": "VEC2"
},
{
"bufferView": 1,
"byteOffset": 12416,
"componentType": 5126,
"count": 388,
"max": [
0.9929424524307251,
0.9907678365707397
],
"min": [
0.006324410438537598,
0.005905091762542725
],
"type": "VEC2"
},
{
"bufferView": 1,
"byteOffset": 15520,
"componentType": 5126,
"count": 388,
"max": [
0.9929424524307251,
0.9907678365707397
],
"min": [
0.006324410438537598,
0.005905091762542725
],
"type": "VEC2"
},
{
"bufferView": 1,
"byteOffset": 18624,
"componentType": 5126,
"count": 388,
"max": [
0.9929424524307251,
0.9907678365707397
],
"min": [
0.006324410438537598,
0.005905091762542725
],
"type": "VEC2"
},
{
"bufferView": 1,
"byteOffset": 21728,
"componentType": 5126,
"count": 388,
"max": [
0.9929424524307251,
0.9907678365707397
],
"min": [
0.006324410438537598,
0.005905091762542725
],
"type": "VEC2"
},
{
"bufferView": 1,
"byteOffset": 24832,
"componentType": 5126,
"count": 388,
"max": [
0.9929424524307251,
0.9907678365707397
],
"min": [
0.006324410438537598,
0.005905091762542725
],
"type": "VEC2"
},
{
"bufferView": 1,
"byteOffset": 27936,
"componentType": 5126,
"count": 388,
"max": [
0.9929424524307251,
0.9907678365707397
],
"min": [
0.006324410438537598,
0.005905091762542725
],
"type": "VEC2"
},
{
"bufferView": 0,
"componentType": 5125,
"count": 1176,
"type": "SCALAR"
}
],
"asset": {
"extras": {
"author": "Pixel Life (https://sketchfab.com/pixellife)",
"license": "CC-BY-4.0 (http://creativecommons.org/licenses/by/4.0/)",
"source": "https://sketchfab.com/3d-models/pirate-coin-game-ready-asset-7f5bd42a45164a64a20a39a8c37befb5",
"title": "Pirate Coin (game ready asset)"
},
"generator": "Sketchfab-15.55.0",
"version": "2.0"
},
"bufferViews": [
{
"buffer": 0,
"byteLength": 4704,
"name": "floatBufferViews",
"target": 34963
},
{
"buffer": 0,
"byteLength": 31040,
"byteOffset": 4704,
"byteStride": 8,
"name": "floatBufferViews",
"target": 34962
},
{
"buffer": 0,
"byteLength": 9312,
"byteOffset": 35744,
"byteStride": 12,
"name": "floatBufferViews",
"target": 34962
},
{
"buffer": 0,
"byteLength": 6208,
"byteOffset": 45056,
"byteStride": 16,
"name": "floatBufferViews",
"target": 34962
}
],
"buffers": [
{
"byteLength": 51264,
"uri": "scene.bin"
}
],
"images": [
{
"uri": "textures/DefaultMaterial_baseColor.jpeg"
},
{
"uri": "textures/DefaultMaterial_metallicRoughness.png"
},
{
"uri": "textures/DefaultMaterial_normal.jpeg"
}
],
"materials": [
{
"doubleSided": true,
"name": "DefaultMaterial",
"normalTexture": {
"index": 2
},
"occlusionTexture": {
"index": 1
},
"pbrMetallicRoughness": {
"baseColorTexture": {
"index": 0
},
"metallicRoughnessTexture": {
"index": 1
}
}
}
],
"meshes": [
{
"name": "Coin.007_DefaultMaterial_0",
"primitives": [
{
"attributes": {
"NORMAL": 1,
"POSITION": 0,
"TANGENT": 2,
"TEXCOORD_0": 3,
"TEXCOORD_1": 4,
"TEXCOORD_2": 5,
"TEXCOORD_3": 6,
"TEXCOORD_4": 7,
"TEXCOORD_5": 8,
"TEXCOORD_6": 9,
"TEXCOORD_7": 10,
"TEXCOORD_8": 11,
"TEXCOORD_9": 12
},
"indices": 13,
"material": 0,
"mode": 4
}
]
}
],
"nodes": [
{
"children": [
1
],
"name": "Sketchfab_model"
},
{
"children": [
2
],
"matrix": [
0.009999999776482582,
0.0,
0.0,
0.0,
0.0,
0.0,
0.009999999776482582,
0.0,
0.0,
-0.009999999776482582,
0.0,
0.0,
0.0,
0.0,
0.0,
1.0
],
"name": "7c04764b7991465cb15354db574230fc.fbx"
},
{
"children": [
3
],
"name": "RootNode"
},
{
"children": [
4
],
"name": "Coin.007"
},
{
"mesh": 0,
"name": "Coin.007_DefaultMaterial_0"
}
],
"samplers": [
{
"magFilter": 9729,
"minFilter": 9987,
"wrapS": 10497,
"wrapT": 10497
}
],
"scene": 0,
"scenes": [
{
"name": "Sketchfab_Scene",
"nodes": [
0
]
}
],
"textures": [
{
"sampler": 0,
"source": 0
},
{
"sampler": 0,
"source": 1
},
{
"sampler": 0,
"source": 2
}
]
}

File diff suppressed because it is too large Load Diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 731 KiB

View File

@ -0,0 +1,35 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/DefaultMaterial_baseColor.jpeg-f34274fff2bcffdb5cd47b6b0c3d5efd.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/neutral object/pirate_coin_game_ready_asset/textures/DefaultMaterial_baseColor.jpeg"
dest_files=[ "res://.import/DefaultMaterial_baseColor.jpeg-f34274fff2bcffdb5cd47b6b0c3d5efd.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=false
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=false
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
process/normal_map_invert_y=false
stream=false
size_limit=0
detect_3d=false
svg/scale=1.0

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 MiB

View File

@ -0,0 +1,35 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/DefaultMaterial_metallicRoughness.png-958280e9782dca231a73c8238e7ca67d.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/neutral object/pirate_coin_game_ready_asset/textures/DefaultMaterial_metallicRoughness.png"
dest_files=[ "res://.import/DefaultMaterial_metallicRoughness.png-958280e9782dca231a73c8238e7ca67d.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=false
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=false
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
process/normal_map_invert_y=false
stream=false
size_limit=0
detect_3d=false
svg/scale=1.0

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 MiB

View File

@ -0,0 +1,35 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/DefaultMaterial_normal.jpeg-2f9f944d0380d27de066c503b7bc4f6a.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/neutral object/pirate_coin_game_ready_asset/textures/DefaultMaterial_normal.jpeg"
dest_files=[ "res://.import/DefaultMaterial_normal.jpeg-2f9f944d0380d27de066c503b7bc4f6a.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=false
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=false
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
process/normal_map_invert_y=false
stream=false
size_limit=0
detect_3d=false
svg/scale=1.0

Binary file not shown.

View File

@ -0,0 +1,15 @@
[remap]
importer="mp3"
type="AudioStreamMP3"
path="res://.import/im-a-gnome-meme-sound-effect-woo.mp3-c0ceb808d06c5b9eca4990074297fcbf.mp3str"
[deps]
source_file="res://assets/sounds/im-a-gnome-meme-sound-effect-woo.mp3"
dest_files=[ "res://.import/im-a-gnome-meme-sound-effect-woo.mp3-c0ceb808d06c5b9eca4990074297fcbf.mp3str" ]
[params]
loop=false
loop_offset=0

View File

@ -117,7 +117,7 @@ _global_script_class_icons={
[application] [application]
config/name="Blobby" config/name="Blobby"
run/main_scene="res://src/Levels/Level 1.tscn" run/main_scene="res://src/UserInterface/Screens/MainMenu/MainScreen.tscn"
config/icon="res://icon.png" config/icon="res://icon.png"
config/windows_native_icon="res://icon.ico" config/windows_native_icon="res://icon.ico"
@ -149,7 +149,7 @@ window/stretch/aspect="expand"
[editor_plugins] [editor_plugins]
enabled=PoolStringArray( "res://addons/AsepriteWizard/plugin.cfg", "res://addons/controller_icons/plugin.cfg" ) enabled=PoolStringArray( "res://addons/controller_icons/plugin.cfg" )
[global] [global]
@ -239,58 +239,58 @@ 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":16777232,"physical_scancode":0,"unicode":0,"echo":false,"script":null) "events": [ 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":87,"physical_scancode":0,"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(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(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":0,"physical_scancode":87,"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":16777231,"physical_scancode":0,"unicode":0,"echo":false,"script":null) "events": [ 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":65,"physical_scancode":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)
, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":14,"pressure":0.0,"pressed":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":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":0,"physical_scancode":65,"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":16777233,"physical_scancode":0,"unicode":0,"echo":false,"script":null) "events": [ 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":68,"physical_scancode":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)
, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":15,"pressure":0.0,"pressed":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":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":0,"physical_scancode":68,"unicode":0,"echo":false,"script":null)
] ]
} }
duck={ duck={
"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":16777234,"physical_scancode":0,"unicode":0,"echo":false,"script":null) "events": [ 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":83,"physical_scancode":0,"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(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":13,"pressure":0.0,"pressed":false,"script":null) , 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":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":0,"physical_scancode":83,"unicode":0,"echo":false,"script":null)
] ]
} }
jump={ jump={
"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":32,"physical_scancode":0,"unicode":0,"echo":false,"script":null) "events": [ 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) , 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":32,"unicode":0,"echo":false,"script":null)
] ]
} }
run={ run={
"deadzone": 0.5, "deadzone": 0.5,
"events": [ Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":5,"pressure":0.0,"pressed":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(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) , 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":16777237,"unicode":0,"echo":false,"script":null)
] ]
} }
interact={ interact={
"deadzone": 0.5, "deadzone": 0.5,
"events": [ Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":2,"pressure":0.0,"pressed":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(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) , 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)
] ]
} }
pause={ pause={
"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":16777217,"physical_scancode":0,"unicode":0,"echo":false,"script":null) "events": [ Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":11,"pressure":0.0,"pressed":false,"script":null)
, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":11,"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":16777217,"unicode":0,"echo":false,"script":null)
] ]
} }
ui_click={ ui_click={
@ -322,13 +322,11 @@ common/enable_object_picking=false
[rendering] [rendering]
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
threads/thread_model=2 threads/thread_model=2
2d/options/use_software_skinning=false 2d/options/ninepatch_mode=0
gles3/shaders/shader_compilation_mode=2 gles3/shaders/shader_compilation_mode=2
2d/options/culling_mode=0
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

Binary file not shown.

After

Width:  |  Height:  |  Size: 58 KiB

View File

@ -0,0 +1,35 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/Blobby Title Text.png-b56d752e1370a9af4a331dfcbe7e57a1.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://promotional/Blobby Title Text.png"
dest_files=[ "res://.import/Blobby Title Text.png-b56d752e1370a9af4a331dfcbe7e57a1.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=false
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=false
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
process/normal_map_invert_y=false
stream=false
size_limit=0
detect_3d=false
svg/scale=1.0

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 19 KiB

View File

@ -0,0 +1,35 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/blobby thumbnail.svg-8df8f1a979945b1db939f5be2b9114d0.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://promotional/blobby thumbnail.svg"
dest_files=[ "res://.import/blobby thumbnail.svg-8df8f1a979945b1db939f5be2b9114d0.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=false
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=false
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
process/normal_map_invert_y=false
stream=false
size_limit=0
detect_3d=false
svg/scale=1.0

BIN
promotional/pxArt.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.7 KiB

View File

@ -0,0 +1,35 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/pxArt.png-91930f1af0df83aa2229f2de60d103ea.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://promotional/pxArt.png"
dest_files=[ "res://.import/pxArt.png-91930f1af0df83aa2229f2de60d103ea.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=false
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=false
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
process/normal_map_invert_y=false
stream=false
size_limit=0
detect_3d=false
svg/scale=1.0

Binary file not shown.

After

Width:  |  Height:  |  Size: 82 KiB

View File

@ -0,0 +1,35 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/sunglass baldy.png-36716af8122194d706759764218ef4e8.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://promotional/sunglass baldy.png"
dest_files=[ "res://.import/sunglass baldy.png-36716af8122194d706759764218ef4e8.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=false
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=false
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
process/normal_map_invert_y=false
stream=false
size_limit=0
detect_3d=false
svg/scale=1.0

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

View File

@ -0,0 +1,35 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/thumbnail 16by9 normal.png-fd23ef0133875dc9e47dca28ba4b5906.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://promotional/thumbnail 16by9 normal.png"
dest_files=[ "res://.import/thumbnail 16by9 normal.png-fd23ef0133875dc9e47dca28ba4b5906.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=false
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=false
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
process/normal_map_invert_y=false
stream=false
size_limit=0
detect_3d=false
svg/scale=1.0

Binary file not shown.

After

Width:  |  Height:  |  Size: 52 KiB

View File

@ -0,0 +1,35 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/thumbnail itch normal.png-71e98903ef83e6b954f3b44a19cdcc14.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://promotional/thumbnail itch normal.png"
dest_files=[ "res://.import/thumbnail itch normal.png-71e98903ef83e6b954f3b44a19cdcc14.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=false
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=false
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
process/normal_map_invert_y=false
stream=false
size_limit=0
detect_3d=false
svg/scale=1.0

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 115 KiB

View File

@ -0,0 +1,35 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/thumbnail itch.png-d9d35379e92ebaa66fc888b83b7f9be1.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://promotional/thumbnail itch.png"
dest_files=[ "res://.import/thumbnail itch.png-d9d35379e92ebaa66fc888b83b7f9be1.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=false
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=false
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
process/normal_map_invert_y=false
stream=false
size_limit=0
detect_3d=false
svg/scale=1.0

Binary file not shown.

BIN
promotional/thumbnail.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 107 KiB

View File

@ -0,0 +1,35 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/thumbnail.png-41d59d0ef33fdaf756917c624cfb8a10.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://promotional/thumbnail.png"
dest_files=[ "res://.import/thumbnail.png-41d59d0ef33fdaf756917c624cfb8a10.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=false
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=false
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
process/normal_map_invert_y=false
stream=false
size_limit=0
detect_3d=false
svg/scale=1.0

View File

@ -11,7 +11,7 @@
[ext_resource path="res://src/Utilities/SceneAudio.tscn" type="PackedScene" id=9] [ext_resource path="res://src/Utilities/SceneAudio.tscn" type="PackedScene" id=9]
[sub_resource type="RectangleShape2D" id=2] [sub_resource type="RectangleShape2D" id=2]
extents = Vector2( 12.9698, 8.9748 ) extents = Vector2( 10.4505, 13.5399 )
[sub_resource type="StreamTexture" id=62] [sub_resource type="StreamTexture" id=62]
load_path = "res://.import/blobby-spritesheet.png-205c8efc79bec685345a637ed2dcfc9b.stex" load_path = "res://.import/blobby-spritesheet.png-205c8efc79bec685345a637ed2dcfc9b.stex"
@ -345,12 +345,12 @@ states/wallsliding/node = SubResource( 96 )
states/wallsliding/position = Vector2( 1795.45, 770.152 ) states/wallsliding/position = Vector2( 1795.45, 770.152 )
transitions = [ "falling", "wallsliding", SubResource( 138 ), "wallsliding", "idling", SubResource( 139 ), "wallsliding", "wallslideToJump", SubResource( 140 ), "wallslideToJump", "jumping", SubResource( 141 ), "runToJump", "jumping", SubResource( 148 ), "jumping", "jumpToFall", SubResource( 150 ), "jumpToFall", "falling", SubResource( 151 ), "ducking", "duckTurn", SubResource( 152 ), "duckTurn", "ducking", SubResource( 153 ), "falling", "ducking", SubResource( 154 ), "ducking", "falling", SubResource( 155 ), "ducking", "walking", SubResource( 156 ), "walking", "ducking", SubResource( 157 ), "idling", "ducking", SubResource( 158 ), "ducking", "idling", SubResource( 159 ), "ducking", "running", SubResource( 160 ), "running", "falling", SubResource( 162 ), "falling", "running", SubResource( 163 ), "walking", "falling", SubResource( 164 ), "idling", "walking", SubResource( 167 ), "walking", "idling", SubResource( 168 ), "walking", "turnToRun", SubResource( 169 ), "turnToRun", "walking", SubResource( 170 ), "turnToRun", "running", SubResource( 172 ), "idling", "idleTurn", SubResource( 173 ), "walking", "idleTurn", SubResource( 174 ), "idleTurn", "walking", SubResource( 175 ), "idling", "turnToRun", SubResource( 176 ), "turnToRun", "idling", SubResource( 177 ), "running", "runToJump", SubResource( 178 ), "wallsliding", "falling", SubResource( 137 ), "jumping", "wallsliding", SubResource( 189 ), "jumping", "idling", SubResource( 193 ), "jumping", "walking", SubResource( 194 ), "runToJump", "wallsliding", SubResource( 195 ), "jumpToFall", "idling", SubResource( 196 ), "running", "turnToRun", SubResource( 203 ), "running", "ducking", SubResource( 161 ), "falling", "landStretching", SubResource( 220 ), "landStretching", "idling", SubResource( 221 ), "landStretching", "walking", SubResource( 222 ), "jumpStretching", "jumping", SubResource( 224 ), "ducking", "jumpStretching", SubResource( 225 ), "idling", "jumpStretching", SubResource( 226 ), "walking", "jumpStretching", SubResource( 229 ) ] transitions = [ "falling", "wallsliding", SubResource( 138 ), "wallsliding", "idling", SubResource( 139 ), "wallsliding", "wallslideToJump", SubResource( 140 ), "wallslideToJump", "jumping", SubResource( 141 ), "runToJump", "jumping", SubResource( 148 ), "jumping", "jumpToFall", SubResource( 150 ), "jumpToFall", "falling", SubResource( 151 ), "ducking", "duckTurn", SubResource( 152 ), "duckTurn", "ducking", SubResource( 153 ), "falling", "ducking", SubResource( 154 ), "ducking", "falling", SubResource( 155 ), "ducking", "walking", SubResource( 156 ), "walking", "ducking", SubResource( 157 ), "idling", "ducking", SubResource( 158 ), "ducking", "idling", SubResource( 159 ), "ducking", "running", SubResource( 160 ), "running", "falling", SubResource( 162 ), "falling", "running", SubResource( 163 ), "walking", "falling", SubResource( 164 ), "idling", "walking", SubResource( 167 ), "walking", "idling", SubResource( 168 ), "walking", "turnToRun", SubResource( 169 ), "turnToRun", "walking", SubResource( 170 ), "turnToRun", "running", SubResource( 172 ), "idling", "idleTurn", SubResource( 173 ), "walking", "idleTurn", SubResource( 174 ), "idleTurn", "walking", SubResource( 175 ), "idling", "turnToRun", SubResource( 176 ), "turnToRun", "idling", SubResource( 177 ), "running", "runToJump", SubResource( 178 ), "wallsliding", "falling", SubResource( 137 ), "jumping", "wallsliding", SubResource( 189 ), "jumping", "idling", SubResource( 193 ), "jumping", "walking", SubResource( 194 ), "runToJump", "wallsliding", SubResource( 195 ), "jumpToFall", "idling", SubResource( 196 ), "running", "turnToRun", SubResource( 203 ), "running", "ducking", SubResource( 161 ), "falling", "landStretching", SubResource( 220 ), "landStretching", "idling", SubResource( 221 ), "landStretching", "walking", SubResource( 222 ), "jumpStretching", "jumping", SubResource( 224 ), "ducking", "jumpStretching", SubResource( 225 ), "idling", "jumpStretching", SubResource( 226 ), "walking", "jumpStretching", SubResource( 229 ) ]
start_node = "idling" start_node = "idling"
graph_offset = Vector2( 642.54, -299.431 ) graph_offset = Vector2( 947.54, 222.569 )
[sub_resource type="AnimationNodeStateMachinePlayback" id=48] [sub_resource type="AnimationNodeStateMachinePlayback" id=48]
[sub_resource type="RectangleShape2D" id=1] [sub_resource type="RectangleShape2D" id=1]
extents = Vector2( 12, 8.99662 ) extents = Vector2( 10.531, 10 )
[sub_resource type="Animation" id=17] [sub_resource type="Animation" id=17]
length = 0.001 length = 0.001
@ -546,6 +546,18 @@ tracks/15/keys = {
"update": 0, "update": 0,
"values": [ 1.0 ] "values": [ 1.0 ]
} }
tracks/16/type = "value"
tracks/16/path = NodePath("../Blobby3DEffects:position")
tracks/16/interp = 1
tracks/16/loop_wrap = true
tracks/16/imported = false
tracks/16/enabled = true
tracks/16/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 0,
"values": [ Vector2( 0, -9 ) ]
}
[sub_resource type="Animation" id=67] [sub_resource type="Animation" id=67]
length = 0.1 length = 0.1
@ -1237,7 +1249,7 @@ tracks/3/keys = {
"times": PoolRealArray( 0 ), "times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ), "transitions": PoolRealArray( 1 ),
"update": 0, "update": 0,
"values": [ Vector2( 12, 10.525 ) ] "values": [ Vector2( 11, 9 ) ]
} }
tracks/4/type = "value" tracks/4/type = "value"
tracks/4/path = NodePath("../BlobbyBody:position") tracks/4/path = NodePath("../BlobbyBody:position")
@ -1249,7 +1261,7 @@ tracks/4/keys = {
"times": PoolRealArray( 0 ), "times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ), "transitions": PoolRealArray( 1 ),
"update": 0, "update": 0,
"values": [ Vector2( 0, -10.481 ) ] "values": [ Vector2( 0, -9 ) ]
} }
tracks/5/type = "value" tracks/5/type = "value"
tracks/5/path = NodePath("../WallRaycasts/LeftWallRaycast/Left_Wallcast1:position") tracks/5/path = NodePath("../WallRaycasts/LeftWallRaycast/Left_Wallcast1:position")
@ -1374,7 +1386,7 @@ tracks/3/keys = {
"times": PoolRealArray( 0 ), "times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ), "transitions": PoolRealArray( 1 ),
"update": 0, "update": 0,
"values": [ Vector2( 12, 10.525 ) ] "values": [ Vector2( 11, 9 ) ]
} }
tracks/4/type = "value" tracks/4/type = "value"
tracks/4/path = NodePath("../BlobbyBody:position") tracks/4/path = NodePath("../BlobbyBody:position")
@ -1386,7 +1398,7 @@ tracks/4/keys = {
"times": PoolRealArray( 0 ), "times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ), "transitions": PoolRealArray( 1 ),
"update": 0, "update": 0,
"values": [ Vector2( 0, -10.481 ) ] "values": [ Vector2( 0, -9 ) ]
} }
tracks/5/type = "value" tracks/5/type = "value"
tracks/5/path = NodePath("../WallRaycasts/LeftWallRaycast/Left_Wallcast1:position") tracks/5/path = NodePath("../WallRaycasts/LeftWallRaycast/Left_Wallcast1:position")
@ -2240,7 +2252,7 @@ tracks/2/keys = {
"times": PoolRealArray( 0 ), "times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ), "transitions": PoolRealArray( 1 ),
"update": 0, "update": 0,
"values": [ Vector2( 12, 9.981 ) ] "values": [ Vector2( 11, 9 ) ]
} }
tracks/3/type = "value" tracks/3/type = "value"
tracks/3/path = NodePath("../BlobbyBody:position") tracks/3/path = NodePath("../BlobbyBody:position")
@ -2377,7 +2389,7 @@ tracks/2/keys = {
"times": PoolRealArray( 0 ), "times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ), "transitions": PoolRealArray( 1 ),
"update": 0, "update": 0,
"values": [ Vector2( 12, 9.981 ) ] "values": [ Vector2( 11, 9 ) ]
} }
tracks/3/type = "value" tracks/3/type = "value"
tracks/3/path = NodePath("../BlobbyBody:position") tracks/3/path = NodePath("../BlobbyBody:position")
@ -2584,7 +2596,7 @@ tracks/3/keys = {
"times": PoolRealArray( 0 ), "times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ), "transitions": PoolRealArray( 1 ),
"update": 0, "update": 0,
"values": [ Vector2( 11, 10.534 ) ] "values": [ Vector2( 8, 8 ) ]
} }
tracks/4/type = "value" tracks/4/type = "value"
tracks/4/path = NodePath("../BlobbyBody:position") tracks/4/path = NodePath("../BlobbyBody:position")
@ -2721,7 +2733,7 @@ tracks/3/keys = {
"times": PoolRealArray( 0 ), "times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ), "transitions": PoolRealArray( 1 ),
"update": 0, "update": 0,
"values": [ Vector2( 11, 10.534 ) ] "values": [ Vector2( 8, 8 ) ]
} }
tracks/4/type = "value" tracks/4/type = "value"
tracks/4/path = NodePath("../BlobbyBody:position") tracks/4/path = NodePath("../BlobbyBody:position")
@ -3681,7 +3693,7 @@ tracks/3/keys = {
"times": PoolRealArray( 0 ), "times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ), "transitions": PoolRealArray( 1 ),
"update": 0, "update": 0,
"values": [ Vector2( 10.5306, 13.5644 ) ] "values": [ Vector2( 10.531, 10 ) ]
} }
tracks/4/type = "value" tracks/4/type = "value"
tracks/4/path = NodePath("../BlobbyBody:position") tracks/4/path = NodePath("../BlobbyBody:position")
@ -3690,10 +3702,10 @@ tracks/4/loop_wrap = true
tracks/4/imported = false tracks/4/imported = false
tracks/4/enabled = true tracks/4/enabled = true
tracks/4/keys = { tracks/4/keys = {
"times": PoolRealArray( 0 ), "times": PoolRealArray( 0.01 ),
"transitions": PoolRealArray( 1 ), "transitions": PoolRealArray( 1 ),
"update": 0, "update": 0,
"values": [ Vector2( -2.5137, -13.5066 ) ] "values": [ Vector2( -2.514, -10 ) ]
} }
tracks/5/type = "value" tracks/5/type = "value"
tracks/5/path = NodePath("../WallRaycasts/LeftWallRaycast/Left_Wallcast1:position") tracks/5/path = NodePath("../WallRaycasts/LeftWallRaycast/Left_Wallcast1:position")
@ -3819,7 +3831,7 @@ tracks/3/keys = {
"times": PoolRealArray( 0 ), "times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ), "transitions": PoolRealArray( 1 ),
"update": 0, "update": 0,
"values": [ Vector2( 10.5306, 13.5644 ) ] "values": [ Vector2( 10.531, 10 ) ]
} }
tracks/4/type = "value" tracks/4/type = "value"
tracks/4/path = NodePath("../BlobbyBody:position") tracks/4/path = NodePath("../BlobbyBody:position")
@ -3828,10 +3840,10 @@ tracks/4/loop_wrap = true
tracks/4/imported = false tracks/4/imported = false
tracks/4/enabled = true tracks/4/enabled = true
tracks/4/keys = { tracks/4/keys = {
"times": PoolRealArray( 0 ), "times": PoolRealArray( 0.01 ),
"transitions": PoolRealArray( 1 ), "transitions": PoolRealArray( 1 ),
"update": 0, "update": 0,
"values": [ Vector2( 2.5, -13.507 ) ] "values": [ Vector2( 2.5, -10 ) ]
} }
tracks/5/type = "value" tracks/5/type = "value"
tracks/5/path = NodePath("../WallRaycasts/LeftWallRaycast/Left_Wallcast1:position") tracks/5/path = NodePath("../WallRaycasts/LeftWallRaycast/Left_Wallcast1:position")
@ -3979,7 +3991,7 @@ tracks/5/keys = {
"times": PoolRealArray( 0 ), "times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ), "transitions": PoolRealArray( 1 ),
"update": 0, "update": 0,
"values": [ Vector2( 6.01041, 15.026 ) ] "values": [ Vector2( 6.01, 10 ) ]
} }
tracks/6/type = "value" tracks/6/type = "value"
tracks/6/path = NodePath("../BlobbyBody:position") tracks/6/path = NodePath("../BlobbyBody:position")
@ -3991,7 +4003,7 @@ tracks/6/keys = {
"times": PoolRealArray( 0 ), "times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ), "transitions": PoolRealArray( 1 ),
"update": 0, "update": 0,
"values": [ Vector2( -7, -14.968 ) ] "values": [ Vector2( -7, -10 ) ]
} }
tracks/7/type = "value" tracks/7/type = "value"
tracks/7/path = NodePath("../BlobbySkin/CollisionPolygon2D:shape:extents") tracks/7/path = NodePath("../BlobbySkin/CollisionPolygon2D:shape:extents")
@ -4116,7 +4128,7 @@ tracks/5/keys = {
"times": PoolRealArray( 0 ), "times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ), "transitions": PoolRealArray( 1 ),
"update": 0, "update": 0,
"values": [ Vector2( 6.01041, 15.026 ) ] "values": [ Vector2( 6.01, 10 ) ]
} }
tracks/6/type = "value" tracks/6/type = "value"
tracks/6/path = NodePath("../BlobbyBody:position") tracks/6/path = NodePath("../BlobbyBody:position")
@ -4128,7 +4140,7 @@ tracks/6/keys = {
"times": PoolRealArray( 0 ), "times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ), "transitions": PoolRealArray( 1 ),
"update": 0, "update": 0,
"values": [ Vector2( 7, -14.968 ) ] "values": [ Vector2( 7, -10 ) ]
} }
tracks/7/type = "value" tracks/7/type = "value"
tracks/7/path = NodePath("../BlobbySkin/CollisionPolygon2D:shape:extents") tracks/7/path = NodePath("../BlobbySkin/CollisionPolygon2D:shape:extents")
@ -4342,6 +4354,8 @@ __meta__ = {
"_edit_vertical_guides_": [ -22.4902 ] "_edit_vertical_guides_": [ -22.4902 ]
} }
[node name="SceneAudio" parent="." instance=ExtResource( 9 )]
[node name="StateLabel" type="Label" parent="."] [node name="StateLabel" type="Label" parent="."]
visible = false visible = false
show_behind_parent = true show_behind_parent = true
@ -4356,24 +4370,27 @@ text = "Ihre Werbung"
align = 1 align = 1
valign = 1 valign = 1
[node name="SceneAudio" parent="." instance=ExtResource( 9 )]
[node name="Listener2D" type="Listener2D" parent="."] [node name="Listener2D" type="Listener2D" parent="."]
current = true current = true
[node name="BlobbySkin" type="Area2D" parent="." groups=["player"]] [node name="BlobbySkin" type="Area2D" parent="." groups=["player"]]
unique_name_in_owner = true
process_priority = -1 process_priority = -1
collision_mask = 254 collision_mask = 254
[node name="CollisionPolygon2D" type="CollisionShape2D" parent="BlobbySkin"] [node name="CollisionPolygon2D" type="CollisionShape2D" parent="BlobbySkin"]
position = Vector2( 1, -8.975 ) position = Vector2( -2.48624, -13.4786 )
scale = Vector2( 1.03, 1.04 ) scale = Vector2( 1.03, 1.04 )
shape = SubResource( 2 ) shape = SubResource( 2 )
[node name="BubbleShieldViewport" type="Viewport" parent="."] [node name="BubbleShieldViewport" type="Viewport" parent="."]
unique_name_in_owner = true unique_name_in_owner = true
size = Vector2( 128, 128 ) size = Vector2( 128, 128 )
own_world = true
transparent_bg = true transparent_bg = true
handle_input_locally = false
hdr = false
usage = 3
[node name="IridescenceBall" parent="BubbleShieldViewport" instance=ExtResource( 6 )] [node name="IridescenceBall" parent="BubbleShieldViewport" instance=ExtResource( 6 )]
visible = false visible = false
@ -4382,10 +4399,9 @@ visible = false
material = ExtResource( 2 ) material = ExtResource( 2 )
position = Vector2( 0, -16 ) position = Vector2( 0, -16 )
texture = SubResource( 62 ) texture = SubResource( 62 )
offset = Vector2( 1, 0 )
hframes = 6 hframes = 6
vframes = 6 vframes = 6
frame = 6 frame = 26
__meta__ = { __meta__ = {
"_editor_description_": "YXNlcHJpdGVfd2l6YXJkX2NvbmZpZwpwbGF5ZXJ8PUJsb2JieVNwcml0ZS9CbG9iYnltYXRpb25QbGF5ZXIKc291cmNlfD1yZXM6Ly9hc3NldHMvYmxvYmJ5L2Jsb2JieS1zcHJpdGVzaGVldHQuYXNlcHJpdGUKbGF5ZXJ8PUJsb2JieQpvcF9leHB8PUZhbHNlCm9fZm9sZGVyfD0Kb19uYW1lfD0Kb25seV92aXNpYmxlfD1GYWxzZQpvX2V4X3B8PQo=" "_editor_description_": "YXNlcHJpdGVfd2l6YXJkX2NvbmZpZwpwbGF5ZXJ8PUJsb2JieVNwcml0ZS9CbG9iYnltYXRpb25QbGF5ZXIKc291cmNlfD1yZXM6Ly9hc3NldHMvYmxvYmJ5L2Jsb2JieS1zcHJpdGVzaGVldHQuYXNlcHJpdGUKbGF5ZXJ8PUJsb2JieQpvcF9leHB8PUZhbHNlCm9fZm9sZGVyfD0Kb19uYW1lfD0Kb25seV92aXNpYmxlfD1GYWxzZQpvX2V4X3B8PQo="
} }
@ -4394,7 +4410,6 @@ __meta__ = {
unique_name_in_owner = true unique_name_in_owner = true
tree_root = SubResource( 47 ) tree_root = SubResource( 47 )
anim_player = NodePath("../BlobbymationPlayer") anim_player = NodePath("../BlobbymationPlayer")
active = true
root_motion_track = NodePath(".") root_motion_track = NodePath(".")
parameters/playback = SubResource( 48 ) parameters/playback = SubResource( 48 )
parameters/ducking/blend_position = 1.0 parameters/ducking/blend_position = 1.0
@ -4492,11 +4507,12 @@ anims/airstrafingLeft = SubResource( 183 )
[node name="Blobby3DEffects" type="Sprite" parent="."] [node name="Blobby3DEffects" type="Sprite" parent="."]
unique_name_in_owner = true unique_name_in_owner = true
position = Vector2( 0, -9 ) position = Vector2( -1, -9 )
scale = Vector2( 0.48, 0.48 ) scale = Vector2( 0.48, 0.48 )
[node name="BlobbyBody" type="CollisionShape2D" parent="." groups=["player"]] [node name="BlobbyBody" type="CollisionShape2D" parent="." groups=["player"]]
position = Vector2( 1, -8.975 ) unique_name_in_owner = true
position = Vector2( -2.514, -10 )
shape = SubResource( 1 ) shape = SubResource( 1 )
[node name="WallRaycasts" type="Node2D" parent="."] [node name="WallRaycasts" type="Node2D" parent="."]
@ -4505,13 +4521,13 @@ position = Vector2( 0, -1 )
[node name="LeftWallRaycast" type="Node2D" parent="WallRaycasts"] [node name="LeftWallRaycast" type="Node2D" parent="WallRaycasts"]
[node name="Left_Wallcast1" type="RayCast2D" parent="WallRaycasts/LeftWallRaycast"] [node name="Left_Wallcast1" type="RayCast2D" parent="WallRaycasts/LeftWallRaycast"]
position = Vector2( -9.5, -10.686 ) position = Vector2( -11.5, -15 )
enabled = true enabled = true
cast_to = Vector2( -5, 0 ) cast_to = Vector2( -5, 0 )
collision_mask = 40 collision_mask = 40
[node name="Left_Wallcast2" type="RayCast2D" parent="WallRaycasts/LeftWallRaycast"] [node name="Left_Wallcast2" type="RayCast2D" parent="WallRaycasts/LeftWallRaycast"]
position = Vector2( -9.5, -1.942 ) position = Vector2( -11.5, -7.751 )
enabled = true enabled = true
cast_to = Vector2( -5, 0 ) cast_to = Vector2( -5, 0 )
collision_mask = 40 collision_mask = 40
@ -4519,13 +4535,13 @@ collision_mask = 40
[node name="RightWallRaycast" type="Node2D" parent="WallRaycasts"] [node name="RightWallRaycast" type="Node2D" parent="WallRaycasts"]
[node name="Right_Wallcast1" type="RayCast2D" parent="WallRaycasts/RightWallRaycast"] [node name="Right_Wallcast1" type="RayCast2D" parent="WallRaycasts/RightWallRaycast"]
position = Vector2( 11.5, -10.686 ) position = Vector2( 5.5, -15.351 )
enabled = true enabled = true
cast_to = Vector2( 5, 0 ) cast_to = Vector2( 5, 0 )
collision_mask = 40 collision_mask = 40
[node name="Right_Wallcast2" type="RayCast2D" parent="WallRaycasts/RightWallRaycast"] [node name="Right_Wallcast2" type="RayCast2D" parent="WallRaycasts/RightWallRaycast"]
position = Vector2( 11.5, -1.942 ) position = Vector2( 5.5, -7.751 )
enabled = true enabled = true
cast_to = Vector2( 5, 0 ) cast_to = Vector2( 5, 0 )
collision_mask = 40 collision_mask = 40
@ -4552,7 +4568,7 @@ collision_mask = 8
script = ExtResource( 3 ) script = ExtResource( 3 )
[node name="JumpBufferTimer" type="Timer" parent="BlobbyStateMachine"] [node name="JumpBufferTimer" type="Timer" parent="BlobbyStateMachine"]
wait_time = 0.1 wait_time = 0.14
one_shot = true one_shot = true
[node name="CrushTimer" type="Timer" parent="BlobbyStateMachine"] [node name="CrushTimer" type="Timer" parent="BlobbyStateMachine"]
@ -4576,5 +4592,5 @@ one_shot = true
[connection signal="timeout" from="BlobbyStateMachine/JumpBufferTimer" to="BlobbyStateMachine" method="_on_JumpBufferTimer_timeout"] [connection signal="timeout" from="BlobbyStateMachine/JumpBufferTimer" to="BlobbyStateMachine" method="_on_JumpBufferTimer_timeout"]
[connection signal="timeout" from="BlobbyStateMachine/CrushTimer" to="." method="_on_CrushTimer_timeout"] [connection signal="timeout" from="BlobbyStateMachine/CrushTimer" to="." method="_on_CrushTimer_timeout"]
[connection signal="timeout" from="InvincibilityTimer" to="." method="_on_InvincibilityTimer_timeout"] [connection signal="timeout" from="InvincibilityTimer" to="." method="_on_InvincibilityTimer_timeout"]
[connection signal="timeout" from="PitfallTimer" to="." method="die_for_real" binds= [ -1 ]]
[connection signal="timeout" from="PitfallTimer" to="." method="_on_PitfallTimer_timeout"] [connection signal="timeout" from="PitfallTimer" to="." method="_on_PitfallTimer_timeout"]
[connection signal="timeout" from="PitfallTimer" to="." method="die_for_real" binds= [ -1 ]]

View File

@ -6,6 +6,11 @@ export var offset_adapt_seconds := 1
export var offset_input_seconds := 0.618 * 2 export var offset_input_seconds := 0.618 * 2
export var alarm_light_shader: Material export var alarm_light_shader: Material
export var fixed_position: bool = false export var fixed_position: bool = false
export var alarm_light_color: Color = Color("#3eff0000")
export var alarm_light_strength: float = 0.8
export var normal_light_color: Color = Color("#aaf9ff99")
export var normal_light_strength: float = 0.2
export var normal_light_radius: float = 256
onready var level_state := $"%LevelState" onready var level_state := $"%LevelState"
onready var signal_manager := $"%SignalManager" onready var signal_manager := $"%SignalManager"
@ -34,6 +39,7 @@ var target_offset: Vector2 = Vector2(0, 0)
var terminal_activated: bool = false var terminal_activated: bool = false
var image = Image.new() var image = Image.new()
var texture = ImageTexture.new() var texture = ImageTexture.new()
var emitters
var prev_pos: Vector2 var prev_pos: Vector2
var camera_state := "centered" var camera_state := "centered"
@ -52,6 +58,13 @@ var screen_right = Vector2()
# Gets the camera limits from the tilemap of the level # Gets the camera limits from the tilemap of the level
# Requires "TileMap" to be a sibling of blobby # Requires "TileMap" to be a sibling of blobby
func _ready(): func _ready():
# Emitters affect the gameendeavour light shader in the background only
emitters = get_tree().get_nodes_in_group("emitters")
$"LampAnimationPlayer".play("CloseRedLight")
for emitter in emitters:
emitter.color = normal_light_color;
emitter.strength = normal_light_strength;
emitter.radius = normal_light_radius;
_set_boundaries() _set_boundaries()
get_tree().get_root().connect("size_changed", self, "_set_boundaries") get_tree().get_root().connect("size_changed", self, "_set_boundaries")
if !fixed_position: if !fixed_position:
@ -59,15 +72,26 @@ func _ready():
image.create(128, 2, false, Image.FORMAT_RGBAH) image.create(128, 2, false, Image.FORMAT_RGBAH)
# TODO Test Performance # TODO Test Performance
material.set_shader_param("light_data", null) material.set_shader_param("light_data", null)
_update_lighting_shader() _update_lighting_shader(true)
# TODO Trigger when needed # TODO Trigger when needed
signal_manager.connect("terminal_activated", self, "_on_SignalManager_terminal_activated") signal_manager.connect("terminal_activated", self, "_on_SignalManager_terminal_activated")
signal_manager.connect("player_died", self, "_death_cam") signal_manager.connect("player_died", self, "_death_cam")
func _on_SignalManager_terminal_activated(animation_number: int = 0): func _on_SignalManager_terminal_activated(animation_number: int = 0):
for emitter in emitters:
emitter.color = alarm_light_color;
emitter.strength = alarm_light_strength;
var light_groups = get_tree().get_nodes_in_group("lights")
var lights := []
for group in light_groups:
lights.append_array(group.get_children())
for light in lights:
if "enabled" in light:
light.enabled = false
terminal_activated = true terminal_activated = true
get_node("LightAnimationPlayer").play("Pulsing") $"LampAnimationPlayer".play("OpenRedLight")
$"LightAnimationPlayer".play("Pulsing")
#func _draw(): #func _draw():
@ -120,7 +144,7 @@ func _physics_process(delta: float) -> void:
_adapt_to_input(player_vel, delta) _adapt_to_input(player_vel, delta)
position = blobby.position position = blobby.position
prev_pos = position prev_pos = position
_update_lighting_shader() _update_lighting_shader(true)
# TODO This has to be redone when the screen is resized in any way # TODO This has to be redone when the screen is resized in any way
@ -223,12 +247,14 @@ func _adapt_to_input(velocity: Vector2, delta: float) -> void:
# TODO Maybe just make background black and dont bother # TODO Maybe just make background black and dont bother
func _adjust_offset(delta: float) -> bool: func _adjust_offset(delta: float) -> bool:
var new_offset = offset var new_offset = offset
if limit_left - position.x - screen_left.x > 0.1: var overshot_left = limit_left - position.x - screen_left.x > 0.1
if anim_player.is_playing(): var overshot_right = limit_right - position.x - screen_right.x < 0.1
if overshot_left:
if anim_player.is_playing() && !overshot_right:
anim_player.stop(true) anim_player.stop(true)
new_offset.x += (limit_left - position.x - screen_left.x) / 1.5 new_offset.x += (limit_left - position.x - screen_left.x) / 1.5
if limit_right - position.x - screen_right.x < 0.1: if overshot_right:
if anim_player.is_playing(): if anim_player.is_playing() && !overshot_left:
anim_player.stop(true) anim_player.stop(true)
new_offset.x += (limit_right - position.x - screen_right.x) / 1.5 new_offset.x += (limit_right - position.x - screen_right.x) / 1.5
if limit_top - position.y - screen_top.y > 0.001: if limit_top - position.y - screen_top.y > 0.001:
@ -257,25 +283,29 @@ func _death_cam(animation_number: int = 0) -> void:
$CameraAnimationPlayer.play("deathCamJustZoom") $CameraAnimationPlayer.play("deathCamJustZoom")
if animation_number == 1: if animation_number == 1:
$CameraAnimationPlayer.play("deathCamLateRotation") $CameraAnimationPlayer.play("deathCamLateRotation")
#$"LampAnimationPlayer".play("CloseRedLight")
#for light in lights:
# light.color = normal_light_color;
# TODO Rename to alarm lights specially # TODO Rename to alarm lights specially
func _update_lighting_shader() -> void: # Shader Idea and implementation from gameendeavour
if !terminal_activated: func _update_lighting_shader(fire_once: bool = false) -> void:
if !terminal_activated && !fire_once:
return return
# Props to gameendaevour # Props to gameendaevour
# TODO get this into a central world update management system # TODO get this into a central world update management system
var lights = get_tree().get_nodes_in_group("light")
image.lock() image.lock()
for i in lights.size(): for i in emitters.size():
var light = lights[i] var light = emitters[i]
# TODO To make the lighting affect all layers properly # TODO To make the lighting affect all layers properly
# I would have the access the global positions of nodes in different Z layers # I would have the access the global positions of nodes in different Z layers
# without the projection to the global center layer. # without the projection to the global center layer.
# var vtrans = get_canvas_transform() #var vtrans = get_canvas_transform()
# var top_left = -vtrans.origin / vtrans.get_scale() #var top_left = -vtrans.origin / vtrans.get_scale()
# var vsize = get_viewport_rect().size #var vsize = get_viewport_rect().size
# var t = Transform2D(0, (top_left + 0.5*vsize/vtrans.get_scale()).rotated(rotation)) #var t = Transform2D(0, (top_left + 0.5*vsize/vtrans.get_scale()).rotated(rotation))
image.set_pixel( image.set_pixel(
i, 0, Color(light.position.x, light.position.y, light.strength, light.radius) i, 0, Color(light.position.x, light.position.y, light.strength, light.radius)
) )
@ -284,7 +314,7 @@ func _update_lighting_shader() -> void:
texture.create_from_image(image) texture.create_from_image(image)
material.set_shader_param("n_lights", lights.size()) material.set_shader_param("n_lights", emitters.size())
material.set_shader_param("light_data", texture) material.set_shader_param("light_data", texture)
material.set_shader_param("global_transform", get_global_transform()) material.set_shader_param("global_transform", get_global_transform())
material.set_shader_param("viewport_transform", get_viewport_transform()) material.set_shader_param("viewport_transform", get_viewport_transform())

View File

@ -1,11 +1,11 @@
[gd_scene load_steps=58 format=2] [gd_scene load_steps=60 format=2]
[ext_resource path="res://src/Actors/BlobbyCam.gd" type="Script" id=1] [ext_resource path="res://src/Actors/BlobbyCam.gd" type="Script" id=1]
[ext_resource path="res://assets/environment/background/starry-space-near.png" type="Texture" id=2] [ext_resource path="res://assets/environment/background/starry-space-near.png" type="Texture" id=2]
[ext_resource path="res://assets/environment/background/starry-space-far.png" type="Texture" id=3] [ext_resource path="res://assets/environment/background/starry-space-far.png" type="Texture" id=3]
[ext_resource path="res://assets/environment/background/starry-space-middle.png" type="Texture" id=4] [ext_resource path="res://assets/environment/background/starry-space-middle.png" type="Texture" id=4]
[ext_resource path="res://assets/environment/background/Spaceship-Wall.png" type="Texture" id=5] [ext_resource path="res://assets/environment/background/Spaceship-Wall.png" type="Texture" id=5]
[ext_resource path="res://assets/environment/background/Spaceship-Wall-Lampsl.png" type="Texture" id=6] [ext_resource path="res://assets/environment/background/Spaceship-Wall-Lampsl-sheet.png" type="Texture" id=6]
[ext_resource path="res://assets/environment/decor/Robbit-Left.png" type="Texture" id=7] [ext_resource path="res://assets/environment/decor/Robbit-Left.png" type="Texture" id=7]
[ext_resource path="res://assets/environment/decor/Robbit-Right.png" type="Texture" id=8] [ext_resource path="res://assets/environment/decor/Robbit-Right.png" type="Texture" id=8]
[ext_resource path="res://assets/environment/decor/Ceiling-Struct.png" type="Texture" id=9] [ext_resource path="res://assets/environment/decor/Ceiling-Struct.png" type="Texture" id=9]
@ -560,7 +560,7 @@ tracks/9/keys = {
[sub_resource type="Animation" id=23] [sub_resource type="Animation" id=23]
resource_name = "justRespawn" resource_name = "justRespawn"
[sub_resource type="Animation" id=11] [sub_resource type="Animation" id=39]
resource_name = "shiftingCenter" resource_name = "shiftingCenter"
length = 0.6 length = 0.6
tracks/0/type = "value" tracks/0/type = "value"
@ -648,7 +648,7 @@ tracks/6/keys = {
"values": [ 0.2, 0.05 ] "values": [ 0.2, 0.05 ]
} }
[sub_resource type="Animation" id=12] [sub_resource type="Animation" id=40]
resource_name = "shiftingLeft" resource_name = "shiftingLeft"
length = 0.6 length = 0.6
tracks/0/type = "value" tracks/0/type = "value"
@ -688,7 +688,7 @@ tracks/2/keys = {
"values": [ 0.2, 0.05 ] "values": [ 0.2, 0.05 ]
} }
[sub_resource type="Animation" id=13] [sub_resource type="Animation" id=41]
resource_name = "shiftingRight" resource_name = "shiftingRight"
length = 0.6 length = 0.6
tracks/0/type = "value" tracks/0/type = "value"
@ -728,7 +728,7 @@ tracks/2/keys = {
"values": [ 0.2, 0.05 ] "values": [ 0.2, 0.05 ]
} }
[sub_resource type="Animation" id=16] [sub_resource type="Animation" id=42]
resource_name = "shiftingUp" resource_name = "shiftingUp"
length = 0.6 length = 0.6
tracks/0/type = "value" tracks/0/type = "value"
@ -768,86 +768,48 @@ tracks/2/keys = {
"values": [ 0.2, 0.05 ] "values": [ 0.2, 0.05 ]
} }
[sub_resource type="Animation" id=9] [sub_resource type="Animation" id=25]
resource_name = "CloseRedLight"
length = 0.2
step = 0.01
tracks/0/type = "value"
tracks/0/path = NodePath("../ParallaxBackground/ParallaxLayer4/Sprite2: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.05, 0.1, 0.15, 0.2 ),
"transitions": PoolRealArray( 1, 1, 1, 1, 1 ),
"update": 1,
"values": [ 0, 1, 2, 3, 4 ]
}
[sub_resource type="Animation" id=24]
resource_name = "OpenRedLight"
length = 0.2
step = 0.01
tracks/0/type = "value"
tracks/0/path = NodePath("../ParallaxBackground/ParallaxLayer4/Sprite2: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.05, 0.1, 0.15, 0.2 ),
"transitions": PoolRealArray( 1, 1, 1, 1, 1 ),
"update": 1,
"values": [ 4, 3, 2, 1, 0 ]
}
[sub_resource type="Animation" id=43]
resource_name = "Pulsing" resource_name = "Pulsing"
length = 3.33 length = 3.33
loop = true loop = true
step = 0.05 step = 0.05
tracks/0/type = "value"
tracks/0/path = NodePath("Emitter3:radius")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/keys = {
"times": PoolRealArray( 0, 1.65 ),
"transitions": PoolRealArray( 1, 1 ),
"update": 0,
"values": [ 128, 256 ]
}
tracks/1/type = "value"
tracks/1/path = NodePath("Emitter4:radius")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/keys = {
"times": PoolRealArray( 0, 1.65 ),
"transitions": PoolRealArray( 1, 1 ),
"update": 0,
"values": [ 128, 256 ]
}
tracks/2/type = "value"
tracks/2/path = NodePath("Emitter5:radius")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/keys = {
"times": PoolRealArray( 0, 1.65 ),
"transitions": PoolRealArray( 1, 1 ),
"update": 0,
"values": [ 128, 256 ]
}
[sub_resource type="Animation" id=10] [sub_resource type="Animation" id=44]
length = 0.001 length = 0.001
tracks/0/type = "value"
tracks/0/path = NodePath("Emitter3:radius")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 0,
"values": [ 128 ]
}
tracks/1/type = "value"
tracks/1/path = NodePath("Emitter4: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": [ 128 ]
}
tracks/2/type = "value"
tracks/2/path = NodePath("Emitter5:radius")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 0,
"values": [ 128 ]
}
[sub_resource type="Gradient" id=20] [sub_resource type="Gradient" id=20]
interpolation_mode = 2 interpolation_mode = 2
@ -875,7 +837,7 @@ fill = 1
fill_from = Vector2( 0.507438, 0.866468 ) fill_from = Vector2( 0.507438, 0.866468 )
fill_to = Vector2( 1, 0.994443 ) fill_to = Vector2( 1, 0.994443 )
[sub_resource type="SpriteFrames" id=7] [sub_resource type="SpriteFrames" id=45]
animations = [ { animations = [ {
"frames": [ ExtResource( 10 ), ExtResource( 12 ), ExtResource( 11 ), ExtResource( 13 ), ExtResource( 14 ), ExtResource( 15 ), ExtResource( 19 ), ExtResource( 16 ), ExtResource( 17 ), ExtResource( 20 ), ExtResource( 18 ), ExtResource( 21 ), ExtResource( 22 ), ExtResource( 23 ) ], "frames": [ ExtResource( 10 ), ExtResource( 12 ), ExtResource( 11 ), ExtResource( 13 ), ExtResource( 14 ), ExtResource( 15 ), ExtResource( 19 ), ExtResource( 16 ), ExtResource( 17 ), ExtResource( 20 ), ExtResource( 18 ), ExtResource( 21 ), ExtResource( 22 ), ExtResource( 23 ) ],
"loop": true, "loop": true,
@ -883,7 +845,7 @@ animations = [ {
"speed": 5.0 "speed": 5.0
} ] } ]
[sub_resource type="SpriteFrames" id=8] [sub_resource type="SpriteFrames" id=46]
animations = [ { animations = [ {
"frames": [ ExtResource( 36 ), ExtResource( 28 ), ExtResource( 35 ), ExtResource( 29 ), ExtResource( 26 ), ExtResource( 27 ), ExtResource( 31 ), ExtResource( 24 ), ExtResource( 33 ), ExtResource( 25 ), ExtResource( 30 ), ExtResource( 37 ), ExtResource( 32 ), ExtResource( 34 ) ], "frames": [ ExtResource( 36 ), ExtResource( 28 ), ExtResource( 35 ), ExtResource( 29 ), ExtResource( 26 ), ExtResource( 27 ), ExtResource( 31 ), ExtResource( 24 ), ExtResource( 33 ), ExtResource( 25 ), ExtResource( 30 ), ExtResource( 37 ), ExtResource( 32 ), ExtResource( 34 ) ],
"loop": true, "loop": true,
@ -892,7 +854,6 @@ animations = [ {
} ] } ]
[node name="BlobbyCam" type="Camera2D"] [node name="BlobbyCam" type="Camera2D"]
physics_interpolation_mode = 2
material = ExtResource( 38 ) material = ExtResource( 38 )
z_index = 3 z_index = 3
rotating = true rotating = true
@ -914,15 +875,20 @@ anims/deathCam = SubResource( 6 )
anims/deathCamJustZoom = SubResource( 15 ) anims/deathCamJustZoom = SubResource( 15 )
anims/deathCamLateRotation = SubResource( 14 ) anims/deathCamLateRotation = SubResource( 14 )
anims/justRespawn = SubResource( 23 ) anims/justRespawn = SubResource( 23 )
anims/shiftingCenter = SubResource( 11 ) anims/shiftingCenter = SubResource( 39 )
anims/shiftingLeft = SubResource( 12 ) anims/shiftingLeft = SubResource( 40 )
anims/shiftingRight = SubResource( 13 ) anims/shiftingRight = SubResource( 41 )
anims/shiftingUp = SubResource( 16 ) anims/shiftingUp = SubResource( 42 )
[node name="LampAnimationPlayer" type="AnimationPlayer" parent="."]
root_node = NodePath("../LightAnimationPlayer")
anims/CloseRedLight = SubResource( 25 )
anims/OpenRedLight = SubResource( 24 )
[node name="LightAnimationPlayer" type="AnimationPlayer" parent="."] [node name="LightAnimationPlayer" type="AnimationPlayer" parent="."]
root_node = NodePath("../ParallaxBackground/ParallaxLayer4") root_node = NodePath("../ParallaxBackground/ParallaxLayer4")
anims/Pulsing = SubResource( 9 ) anims/Pulsing = SubResource( 43 )
anims/RESET = SubResource( 10 ) anims/RESET = SubResource( 44 )
[node name="ParallaxBackground" type="ParallaxBackground" parent="."] [node name="ParallaxBackground" type="ParallaxBackground" parent="."]
layer = -2 layer = -2
@ -956,30 +922,114 @@ material = ExtResource( 38 )
z_index = -1 z_index = -1
texture = ExtResource( 5 ) texture = ExtResource( 5 )
[node name="Emitter3" type="Sprite" parent="ParallaxBackground/ParallaxLayer4" groups=["light"]] [node name="Light2" type="Sprite" parent="ParallaxBackground/ParallaxLayer4" groups=["emitters"]]
visible = false visible = false
position = Vector2( -154, 14 ) position = Vector2( -147, 14 )
texture = ExtResource( 40 ) texture = ExtResource( 40 )
script = ExtResource( 39 ) script = ExtResource( 39 )
color = Color( 1, 0, 0, 0.615686 ) color = Color( 0.976471, 1, 0.6, 0.666667 )
radius = 256
strength = 0.3
[node name="Emitter4" type="Sprite" parent="ParallaxBackground/ParallaxLayer4" groups=["light"]] [node name="Light4" type="Sprite" parent="ParallaxBackground/ParallaxLayer4" groups=["emitters"]]
visible = false visible = false
position = Vector2( 1, 14 ) position = Vector2( -162, 14 )
texture = ExtResource( 40 ) texture = ExtResource( 40 )
script = ExtResource( 39 ) script = ExtResource( 39 )
color = Color( 1, 0, 0, 0.615686 ) color = Color( 0.976471, 1, 0.6, 0.666667 )
strength = 0.3
[node name="Emitter5" type="Sprite" parent="ParallaxBackground/ParallaxLayer4" groups=["light"]] [node name="Light8" type="Sprite" parent="ParallaxBackground/ParallaxLayer4" groups=["emitters"]]
visible = false visible = false
position = Vector2( 154, 14 ) position = Vector2( -209, -164 )
texture = ExtResource( 40 ) texture = ExtResource( 40 )
script = ExtResource( 39 ) script = ExtResource( 39 )
color = Color( 1, 0, 0, 0.615686 ) color = Color( 0.976471, 1, 0.6, 0.666667 )
radius = 256
strength = 0.3
[node name="Light10" type="Sprite" parent="ParallaxBackground/ParallaxLayer4" groups=["emitters"]]
visible = false
position = Vector2( -1, -171 )
texture = ExtResource( 40 )
script = ExtResource( 39 )
color = Color( 0.976471, 1, 0.6, 0.666667 )
radius = 400
strength = 0.3
[node name="Light9" type="Sprite" parent="ParallaxBackground/ParallaxLayer4" groups=["emitters"]]
visible = false
position = Vector2( 213, 160 )
texture = ExtResource( 40 )
script = ExtResource( 39 )
color = Color( 0.976471, 1, 0.6, 0.666667 )
radius = 300
strength = 0.3
[node name="Light11" type="Sprite" parent="ParallaxBackground/ParallaxLayer4" groups=["emitters"]]
visible = false
position = Vector2( 0, 157 )
texture = ExtResource( 40 )
script = ExtResource( 39 )
color = Color( 0.976471, 1, 0.6, 0.666667 )
radius = 300
strength = 0.3
[node name="Light12" type="Sprite" parent="ParallaxBackground/ParallaxLayer4" groups=["emitters"]]
visible = false
position = Vector2( -254, 161 )
texture = ExtResource( 40 )
script = ExtResource( 39 )
color = Color( 0.976471, 1, 0.6, 0.666667 )
radius = 300
strength = 0.3
[node name="Light13" type="Sprite" parent="ParallaxBackground/ParallaxLayer4" groups=["emitters"]]
visible = false
position = Vector2( 201, -165 )
texture = ExtResource( 40 )
script = ExtResource( 39 )
color = Color( 0.976471, 1, 0.6, 0.666667 )
strength = 0.3
[node name="Light3" type="Sprite" parent="ParallaxBackground/ParallaxLayer4" groups=["emitters"]]
visible = false
position = Vector2( 9, 14 )
texture = ExtResource( 40 )
script = ExtResource( 39 )
color = Color( 0.976471, 1, 0.6, 0.666667 )
radius = 256
strength = 0.3
[node name="Light5" type="Sprite" parent="ParallaxBackground/ParallaxLayer4" groups=["emitters"]]
visible = false
position = Vector2( -8, 14 )
texture = ExtResource( 40 )
script = ExtResource( 39 )
color = Color( 0.976471, 1, 0.6, 0.666667 )
strength = 0.3
[node name="Light6" type="Sprite" parent="ParallaxBackground/ParallaxLayer4" groups=["emitters"]]
visible = false
position = Vector2( 163, 14 )
texture = ExtResource( 40 )
script = ExtResource( 39 )
color = Color( 0.976471, 1, 0.6, 0.666667 )
radius = 256
strength = 0.3
[node name="Light7" type="Sprite" parent="ParallaxBackground/ParallaxLayer4" groups=["emitters"]]
visible = false
position = Vector2( 146, 14 )
texture = ExtResource( 40 )
script = ExtResource( 39 )
color = Color( 0.976471, 1, 0.6, 0.666667 )
strength = 0.3
[node name="Sprite2" type="Sprite" parent="ParallaxBackground/ParallaxLayer4"] [node name="Sprite2" type="Sprite" parent="ParallaxBackground/ParallaxLayer4"]
material = ExtResource( 38 ) material = ExtResource( 38 )
texture = ExtResource( 6 ) texture = ExtResource( 6 )
hframes = 5
[node name="TextureRect" type="TextureRect" parent="ParallaxBackground/ParallaxLayer4"] [node name="TextureRect" type="TextureRect" parent="ParallaxBackground/ParallaxLayer4"]
anchor_left = 0.5 anchor_left = 0.5
@ -1034,9 +1084,9 @@ z_index = -1
texture = ExtResource( 8 ) texture = ExtResource( 8 )
[node name="AnimatedSprite" type="AnimatedSprite" parent="ParallaxBackground/ParallaxLayer5"] [node name="AnimatedSprite" type="AnimatedSprite" parent="ParallaxBackground/ParallaxLayer5"]
frames = SubResource( 7 ) frames = SubResource( 45 )
playing = true playing = true
[node name="AnimatedSprite2" type="AnimatedSprite" parent="ParallaxBackground/ParallaxLayer5"] [node name="AnimatedSprite2" type="AnimatedSprite" parent="ParallaxBackground/ParallaxLayer5"]
frames = SubResource( 8 ) frames = SubResource( 46 )
playing = true playing = true

View File

@ -5,13 +5,14 @@ onready var right_src = $SlopeRaycastRight
onready var left_wrc = $WallRaycastLeft onready var left_wrc = $WallRaycastLeft
onready var right_wrc = $WallRaycastRight onready var right_wrc = $WallRaycastRight
export var block_size := 16 export var block_size := 16
export var speed := -120
var time = 0 var time = 0
var snap = Vector2.DOWN * block_size var snap = Vector2.DOWN * block_size
func _ready() -> void: func _ready() -> void:
velocity.x = -120 velocity.x = speed
func execute_movement(delta: float) -> void: func execute_movement(delta: float) -> void:

View File

@ -192,9 +192,9 @@ extents = Vector2( 11.4286, 5.12039 )
[sub_resource type="RectangleShape2D" id=52] [sub_resource type="RectangleShape2D" id=52]
extents = Vector2( 15.7143, 12.1429 ) extents = Vector2( 15.7143, 12.1429 )
[node name="Flyer" type="KinematicBody2D" groups=["frogfood", "harmful"]] [node name="Flyer" type="KinematicBody2D" groups=["flying", "frogfood", "harmful"]]
collision_layer = 258 collision_layer = 258
collision_mask = 25 collision_mask = 57
script = ExtResource( 2 ) script = ExtResource( 2 )
vision_distance = 8.0 vision_distance = 8.0
loose_target_seconds = 5.0 loose_target_seconds = 5.0
@ -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=["frogfood", "harmful"]] [node name="EnemyBody" type="CollisionShape2D" parent="." groups=["flying", "frogfood", "harmful"]]
position = Vector2( 0, -0.5 ) position = Vector2( 0, -0.5 )
shape = SubResource( 1 ) shape = SubResource( 1 )
@ -289,7 +289,7 @@ shape = SubResource( 2 )
[node name="DangerousBlockArea" type="Node2D" parent="."] [node name="DangerousBlockArea" type="Node2D" parent="."]
scale = Vector2( 0.7, 0.7 ) scale = Vector2( 0.7, 0.7 )
[node name="Area2D" type="Area2D" parent="DangerousBlockArea" groups=["frogfood", "harmful"]] [node name="Area2D" type="Area2D" parent="DangerousBlockArea" groups=["flying", "frogfood", "harmful"]]
collision_layer = 2 collision_layer = 2
collision_mask = 0 collision_mask = 0
monitoring = false monitoring = false

View File

@ -62,3 +62,4 @@ func _on_FrogFreeButton_pushed() -> void:
level_state.free_a_frog(frog_number) level_state.free_a_frog(frog_number)
disconnect_rope() disconnect_rope()
is_first_signal = false is_first_signal = false

View File

@ -1,11 +1,21 @@
extends Node extends Node
onready var players: Dictionary = {} onready var players: Dictionary = {}
onready var max_parallel: int = 4
func play_scene_independent(sound_name: String, bus: String = "Master", attenuation: float = 0.0, func play_scene_independent(
singleton = false, start_time = 0.0, random_pitch = false, pitch = 1.0) -> void: sound_name: String,
bus: String = "Master",
attenuation: float = 0.0,
singleton = false,
start_time = 0.0,
random_pitch = false,
pitch = 1.0
) -> void:
if singleton && players.has(sound_name): if singleton && players.has(sound_name):
return return
if players.size() >= max_parallel:
return
var disposable_player var disposable_player
disposable_player = AudioStreamPlayer.new() disposable_player = AudioStreamPlayer.new()
add_child(disposable_player) add_child(disposable_player)
@ -21,11 +31,13 @@ func play_scene_independent(sound_name: String, bus: String = "Master", attenuat
disposable_player.play(start_time) disposable_player.play(start_time)
players[sound_name] = weakref(disposable_player) players[sound_name] = weakref(disposable_player)
func dispose_player(player: WeakRef) -> void: func dispose_player(player: WeakRef) -> void:
if !player.get_ref(): return if !player.get_ref():
return
var p = player.get_ref() var p = player.get_ref()
var sound_name var sound_name
if("audio_stream" in p.stream): if "audio_stream" in p.stream:
sound_name = p.stream.audio_stream.resource_path sound_name = p.stream.audio_stream.resource_path
else: else:
sound_name = p.stream.resource_path sound_name = p.stream.resource_path
@ -33,14 +45,17 @@ func dispose_player(player: WeakRef) -> void:
players.erase(sound_name) players.erase(sound_name)
p.queue_free() p.queue_free()
func pause_scene_independent(sound_name: String): func pause_scene_independent(sound_name: String):
if players.has(sound_name) && players[sound_name].get_ref(): if players.has(sound_name) && players[sound_name].get_ref():
players[sound_name].set_stream_paused(true) players[sound_name].set_stream_paused(true)
func continue_scene_independent(sound_name: String): func continue_scene_independent(sound_name: String):
if players.has(sound_name) && players[sound_name].get_ref(): if players.has(sound_name) && players[sound_name].get_ref():
players[sound_name].set_stream_paused(false) players[sound_name].set_stream_paused(false)
func stop_scene_independent(sound_name: String): func stop_scene_independent(sound_name: String):
if players.has(sound_name) && players[sound_name].get_ref(): if players.has(sound_name) && players[sound_name].get_ref():
dispose_player(players[sound_name]) dispose_player(players[sound_name])

View File

@ -154,6 +154,13 @@ func set_wallet(value) -> void:
func get_wallet() -> int: func get_wallet() -> int:
return gsr.wallet return gsr.wallet
func set_swaying_grass(value: bool) -> void:
gsr.swaying_grass = value
SaveManager.save_default()
func get_swaying_grass() -> bool:
return gsr.swaying_grass
func reinstate() -> void: func reinstate() -> void:
if gsr.input_map.size() <= 1: if gsr.input_map.size() <= 1:
InputMap.load_from_globals() InputMap.load_from_globals()

View File

@ -2,12 +2,16 @@ extends Area2D
onready var anim_player: AnimationPlayer = get_node("AnimationPlayer") onready var anim_player: AnimationPlayer = get_node("AnimationPlayer")
onready var level_state := get_tree().root.get_child(4).get_node("%LevelState") onready var level_state := get_tree().root.get_child(4).get_node("%LevelState")
onready var proto_coin := get_parent().get_node("ProtoCoin3DSprite")
export onready var was_collected := false export onready var was_collected := false
export var currencyValue := 1 export var currencyValue := 1
export var coin_3D_fps := 30
var last_draw_time := 0
var scene_saved_id := 0 var scene_saved_id := 0
func _ready() -> void: func _ready() -> void:
scene_saved_id = level_state.register_saveable_object(self) scene_saved_id = level_state.register_saveable_object(self)
var collected_saved = level_state.get_saved_object_property(scene_saved_id, "was_collected") var collected_saved = level_state.get_saved_object_property(scene_saved_id, "was_collected")
@ -18,6 +22,16 @@ func _ready() -> void:
if was_collected: if was_collected:
visible = false visible = false
level_state.set_currency(level_state.get_currency() + currencyValue) level_state.set_currency(level_state.get_currency() + currencyValue)
return
func _physics_process(delta: float) -> void:
if !visible || proto_coin == null:
return
if last_draw_time <= 0:
$CoinSprite.texture = proto_coin.texture
last_draw_time = 1/coin_3D_fps
else:
last_draw_time -= delta
func _on_body_entered(_body: Node) -> void: func _on_body_entered(_body: Node) -> void:
if was_collected == true: if was_collected == true:

View File

@ -29,7 +29,7 @@ resource_name = "oscilating"
length = 2.4 length = 2.4
loop = true loop = true
tracks/0/type = "value" tracks/0/type = "value"
tracks/0/path = NodePath("Sprite2:position") tracks/0/path = NodePath("CoinSprite:position")
tracks/0/interp = 2 tracks/0/interp = 2
tracks/0/loop_wrap = true tracks/0/loop_wrap = true
tracks/0/imported = false tracks/0/imported = false
@ -106,7 +106,7 @@ script = ExtResource( 2 )
[node name="CollisionShape2D" type="CollisionShape2D" parent="."] [node name="CollisionShape2D" type="CollisionShape2D" parent="."]
position = Vector2( 3.8147e-06, 2.49189 ) position = Vector2( 3.8147e-06, 2.49189 )
scale = Vector2( 0.18, 0.18 ) scale = Vector2( 0.2, 0.2 )
shape = SubResource( 1 ) shape = SubResource( 1 )
[node name="AnimationPlayer" type="AnimationPlayer" parent="."] [node name="AnimationPlayer" type="AnimationPlayer" parent="."]
@ -114,12 +114,13 @@ autoplay = "oscilating"
anims/fade_out = SubResource( 2 ) anims/fade_out = SubResource( 2 )
anims/oscilating = SubResource( 3 ) anims/oscilating = SubResource( 3 )
[node name="Sprite2" type="Sprite" parent="."] [node name="CoinSprite" type="Sprite" parent="."]
position = Vector2( 0, 2.62356 ) position = Vector2( 0, 2.62356 )
scale = Vector2( -0.484, -0.5 ) scale = Vector2( 0.7, 0.7 )
texture = ExtResource( 1 ) texture = ExtResource( 1 )
[node name="Sprite" type="Sprite" parent="."] [node name="Sprite" type="Sprite" parent="."]
visible = false
material = SubResource( 6 ) material = SubResource( 6 )
position = Vector2( 0.0564967, 2.37292 ) position = Vector2( 0.0564967, 2.37292 )
texture = ExtResource( 317 ) texture = ExtResource( 317 )
@ -131,4 +132,3 @@ pitch_scale = 1.09
bus = "Effects" bus = "Effects"
[connection signal="body_entered" from="." to="." method="_on_body_entered"] [connection signal="body_entered" from="." to="." method="_on_body_entered"]
[connection signal="finished" from="AudioStreamPlayer" to="." method="collected"]

View File

@ -0,0 +1,51 @@
[gd_scene load_steps=5 format=2]
[ext_resource path="res://src/BenefitialObjects/Coin3DModel.tscn" type="PackedScene" id=1]
[sub_resource type="PanoramaSky" id=3]
[sub_resource type="Environment" id=2]
background_mode = 1
background_sky = SubResource( 3 )
background_color = Color( 1, 0.976471, 0.439216, 1 )
background_energy = 0.4
[sub_resource type="Animation" id=1]
resource_name = "speeen"
length = 6.18
loop = true
step = 0.01
tracks/0/type = "value"
tracks/0/path = NodePath("Coin3DModel:rotation_degrees")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/keys = {
"times": PoolRealArray( 0, 6.18 ),
"transitions": PoolRealArray( 1, 1 ),
"update": 0,
"values": [ Vector3( 0, 0, 0 ), Vector3( 0, 360, 0 ) ]
}
[node name="Coin3D" type="Spatial"]
[node name="Camera" type="Camera" parent="."]
transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1.5884 )
environment = SubResource( 2 )
fov = 14.2
far = 2.0
[node name="Coin3DModel" parent="." instance=ExtResource( 1 )]
transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -0.00453615, -4.76837e-07, -0.00402737 )
[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
autoplay = "speeen"
anims/speeen = SubResource( 1 )
[node name="SpotLight" type="DirectionalLight" parent="."]
transform = Transform( 0.999963, 0, 0.0085869, 0, 1, 0, -0.0085869, 0, 0.999963, -0.081981, -0.0615109, 1.41474 )
light_indirect_energy = 0.0
directional_shadow_mode = 0
directional_shadow_depth_range = 1
directional_shadow_max_distance = 0.7

View File

@ -0,0 +1,5 @@
[gd_scene load_steps=2 format=2]
[ext_resource path="res://assets/neutral object/pirate_coin_game_ready_asset/scene.gltf" type="PackedScene" id=1]
[node name="Coin3DModel" instance=ExtResource( 1 )]

View File

@ -0,0 +1,9 @@
extends Sprite
export var coin_3D_fps = 30
var last_draw_time = 0
func _physics_process(delta: float) -> void:
if last_draw_time <= 0:
texture = $ProtoCoin3DViewport.get_texture()
last_draw_time = 1/coin_3D_fps
else:
last_draw_time -= delta

View File

@ -0,0 +1,45 @@
[gd_scene load_steps=4 format=2]
[ext_resource path="res://src/BenefitialObjects/Coin3D.tscn" type="PackedScene" id=1]
[ext_resource path="res://src/BenefitialObjects/ProtoCoin3DSprite.gd" type="Script" id=2]
[sub_resource type="Animation" id=1]
resource_name = "speeen"
length = 6.18
loop = true
step = 0.01
tracks/0/type = "value"
tracks/0/path = NodePath("Coin3DModel:rotation_degrees")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/keys = {
"times": PoolRealArray( 0, 6.18 ),
"transitions": PoolRealArray( 1, 1 ),
"update": 0,
"values": [ Vector3( 0, 0, 0 ), Vector3( 0, 360, 0 ) ]
}
[node name="ProtoCoin3DSprite" type="Sprite"]
visible = false
script = ExtResource( 2 )
[node name="ProtoCoin3DViewport" type="Viewport" parent="."]
size = Vector2( 40, 40 )
own_world = true
transparent_bg = true
handle_input_locally = false
hdr = false
usage = 3
render_target_v_flip = true
__meta__ = {
"_editor_description_": ""
}
[node name="Coin3D" parent="ProtoCoin3DViewport" instance=ExtResource( 1 )]
[node name="AnimationPlayer" parent="ProtoCoin3DViewport/Coin3D" index="2"]
anims/speeen = SubResource( 1 )
[editable path="ProtoCoin3DViewport/Coin3D"]

View File

@ -8,33 +8,40 @@ onready var signal_manager := get_tree().root.get_child(4).get_node("%SignalMana
export(String, FILE, "*.tscn") var next_scene export(String, FILE, "*.tscn") var next_scene
export(bool) var is_active export(bool) var is_active
func _ready() -> void: func _ready() -> void:
if(!is_active): if !is_active:
monitoring = false monitoring = false
signal_manager.connect("terminal_activated", self, "activate_portal") signal_manager.connect("terminal_activated", self, "activate_portal")
else: else:
$portal.frame = 0 $portal.frame = 0
func _get_configuration_warning() -> String: func _get_configuration_warning() -> String:
return "The next scene property can't be empty" if not next_scene else "" return "The next scene property can't be empty" if not next_scene else ""
func level_completion() -> void: func level_completion() -> void:
signal_manager.emit_signal("level_completed") signal_manager.emit_signal("level_completed")
func activate_portal(_time: float) -> void: func activate_portal(_time: float) -> void:
$AnimationPlayer.play("activatePortal") $AnimationPlayer.play("activatePortal")
monitoring = true monitoring = true
func teleport() -> void: func teleport() -> void:
GlobalAudio.play_scene_independent("res://assets/sounds/MAGIC_SPELL_Morphing_Synth_Harp_Scales_stereo.wav", "Music", -15) GlobalAudio.play_scene_independent(
get_tree().paused = true "res://assets/sounds/MAGIC_SPELL_Morphing_Synth_Harp_Scales_stereo.wav", "Music", -15
anim_player.play("fade_in") )
# TODO This doesn't pause the game but should get_tree().paused = true
yield(anim_player, "animation_finished") anim_player.play("fade_in")
if ResourceLoader.exists(next_scene): # TODO This doesn't pause the game but should
get_tree().change_scene(next_scene) yield(anim_player, "animation_finished")
if ResourceLoader.exists(next_scene):
get_tree().change_scene(next_scene)
func _on_body_entered(_body: Node) -> void: func _on_body_entered(_body: Node) -> void:
level_completion() level_completion()
teleport() teleport()

View File

@ -84,7 +84,7 @@ z_as_relative = false
collision_layer = 0 collision_layer = 0
monitorable = false monitorable = false
script = ExtResource( 2 ) script = ExtResource( 2 )
next_scene = "res://src/Levels/Level 1.tscn" next_scene = "res://src/UserInterface/Screens/MainMenu/MainScreen.tscn"
[node name="portal" type="Sprite" parent="."] [node name="portal" type="Sprite" parent="."]
texture = ExtResource( 1 ) texture = ExtResource( 1 )

View File

@ -147,6 +147,7 @@
9/z_index = 0 9/z_index = 0
[node name="GlassAndRoots" type="TileMap"] [node name="GlassAndRoots" type="TileMap"]
z_index = -1
tile_set = SubResource( 1 ) tile_set = SubResource( 1 )
cell_size = Vector2( 16, 16 ) cell_size = Vector2( 16, 16 )
format = 1 format = 1

View File

@ -19,7 +19,10 @@ var is_idle_swinging
var start_swing_time := 0.0 var start_swing_time := 0.0
var begin_idle var begin_idle
var time_since_last_exec := 0.0 var time_since_last_exec := 0.0
var time_since_last_setting_check := 0.0
var enabled := true
# TODO accomplish this grouping with a folder instead of hardcoding it here
var grass_sounds := ["res://assets/sounds/grass swish 1.ogg","res://assets/sounds/grass swish 2.ogg", var grass_sounds := ["res://assets/sounds/grass swish 1.ogg","res://assets/sounds/grass swish 2.ogg",
"res://assets/sounds/grass swish 3.ogg","res://assets/sounds/grass swish 4.ogg"] "res://assets/sounds/grass swish 3.ogg","res://assets/sounds/grass swish 4.ogg"]
# var thread : Thread # var thread : Thread
@ -29,25 +32,32 @@ var saved_coeff:= 0.0
func _ready(): func _ready():
# TODO This could probably fuck something up later? For other randomness based events # TODO This could probably fuck something up later? For other randomness based events
randomize() randomize()
enabled = GlobalState.get_swaying_grass()
# thread = Thread.new() # thread = Thread.new()
func _process(delta: float) -> void: func _physics_process(delta: float) -> void:
# TODO This should be in the settings and applied to all shaders # TODO This should be in the settings and applied to all shaders
time_since_last_exec += delta time_since_last_exec += delta
time_since_last_setting_check += delta
# if thread.is_alive(): # if thread.is_alive():
# print("was_running") # print("was_running")
# return # return
# if thread.is_active(): # if thread.is_active():
# thread.wait_to_finish() # thread.wait_to_finish()
if time_since_last_exec <= 1.0/fps_limit: if time_since_last_setting_check >= 30/fps_limit:
return time_since_last_setting_check = 0.0
enabled = GlobalState.get_swaying_grass()
if time_since_last_exec >= 1.0/fps_limit:
time_since_last_exec = 0.0
if enabled:
grass_wave_update(delta)
# thread.start(self, "grass_wave_update", delta) # thread.start(self, "grass_wave_update", delta)
grass_wave_update(delta) return
func grass_wave_update(delta: float) -> void: func grass_wave_update(delta: float) -> void:
time_since_last_exec = 0.0
var distance: float = abs(global_position.x - blobby.global_position.x + 6) var distance: float = abs(global_position.x - blobby.global_position.x + 6)
var v_distance: float = abs(global_position.y - blobby.global_position.y + 11) var v_distance: float = abs(global_position.y - blobby.global_position.y + 11)
#if (distance > draft_radius * 2 || v_distance > v_radius * 2): #if (distance > draft_radius * 2 || v_distance > v_radius * 2):
@ -99,6 +109,7 @@ func grass_wave_update(delta: float) -> void:
# if(displacement_coeff.x > saved_coeff): # if(displacement_coeff.x > saved_coeff):
# print(displacement_coeff.x) # print(displacement_coeff.x)
# saved_coeff = displacement_coeff.x # saved_coeff = displacement_coeff.x
for polygon in get_children(): for polygon in get_children():
displacement_coeff.x = clamp(displacement_coeff.x, -max_displacement, max_displacement) displacement_coeff.x = clamp(displacement_coeff.x, -max_displacement, max_displacement)
if polygon is Polygon2D: if polygon is Polygon2D:
@ -111,6 +122,8 @@ func grass_wave_update(delta: float) -> void:
func _on_Area2D_body_entered(body: Node) -> void: func _on_Area2D_body_entered(body: Node) -> void:
if !enabled:
return
var sound_index = round(rand_range(0,grass_sounds.size())) - 1 var sound_index = round(rand_range(0,grass_sounds.size())) - 1
if(body.is_in_group("player")): if(body.is_in_group("player")):
GlobalAudio.play_scene_independent(grass_sounds[sound_index], "Effects", -22, true, 0, true, 1) GlobalAudio.play_scene_independent(grass_sounds[sound_index], "Effects", -22, true, 0, true, 1)

View File

@ -1,4 +1,4 @@
[gd_resource type="TileSet" load_steps=33 format=2] [gd_resource type="TileSet" load_steps=40 format=2]
[ext_resource path="res://assets/environment/blocks/Planting-Grounds-For-Basic.png" type="Texture" id=1] [ext_resource path="res://assets/environment/blocks/Planting-Grounds-For-Basic.png" type="Texture" id=1]
[ext_resource path="res://assets/environment/blocks/BasicTileSet.png" type="Texture" id=2] [ext_resource path="res://assets/environment/blocks/BasicTileSet.png" type="Texture" id=2]
@ -43,6 +43,27 @@ points = PoolVector2Array( 0, 0, 16, 0, 16, 16, 0, 16 )
[sub_resource type="ConvexPolygonShape2D" id=49] [sub_resource type="ConvexPolygonShape2D" id=49]
points = PoolVector2Array( 0, 0, 16, 0, 16, 16, 0, 16 ) points = PoolVector2Array( 0, 0, 16, 0, 16, 16, 0, 16 )
[sub_resource type="ConvexPolygonShape2D" id=52]
points = PoolVector2Array( 0, 0, 16, 0, 16, 16, 0, 16 )
[sub_resource type="ConvexPolygonShape2D" id=54]
points = PoolVector2Array( 0, 0, 16, 0, 16, 16, 0, 16 )
[sub_resource type="ConvexPolygonShape2D" id=55]
points = PoolVector2Array( 0, 0, 16, 0, 16, 16, 0, 16 )
[sub_resource type="ConvexPolygonShape2D" id=56]
points = PoolVector2Array( 0, 0, 16, 0, 16, 16, 0, 16 )
[sub_resource type="ConvexPolygonShape2D" id=57]
points = PoolVector2Array( 0, 0, 16, 0, 16, 16, 0, 16 )
[sub_resource type="ConvexPolygonShape2D" id=58]
points = PoolVector2Array( 0, 0, 16, 0, 16, 16, 0, 16 )
[sub_resource type="ConvexPolygonShape2D" id=59]
points = PoolVector2Array( 0, 0, 16, 0, 16, 16, 0, 16 )
[sub_resource type="NavigationPolygon" id=21] [sub_resource type="NavigationPolygon" id=21]
vertices = PoolVector2Array( 0, 0, 16, 0, 16, 16, 0, 16 ) vertices = PoolVector2Array( 0, 0, 16, 0, 16, 16, 0, 16 )
polygons = [ PoolIntArray( 0, 1, 2, 3 ) ] polygons = [ PoolIntArray( 0, 1, 2, 3 ) ]
@ -339,3 +360,150 @@ outlines = [ PoolVector2Array( 0, 0, 16, 0, 16, 16, 0, 16 ) ]
"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) "shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 )
} ] } ]
16/z_index = 0 16/z_index = 0
17/name = "Planting-Grounds-For-Basic.png 17"
17/texture = ExtResource( 1 )
17/tex_offset = Vector2( 0, 0 )
17/modulate = Color( 1, 1, 1, 1 )
17/region = Rect2( 256, 128, 16, 16 )
17/tile_mode = 0
17/occluder_offset = Vector2( 0, 0 )
17/navigation_offset = Vector2( 0, 0 )
17/shape_offset = Vector2( 0, 0 )
17/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 )
17/shape = SubResource( 52 )
17/shape_one_way = false
17/shape_one_way_margin = 1.0
17/shapes = [ {
"autotile_coord": Vector2( 0, 0 ),
"one_way": false,
"one_way_margin": 1.0,
"shape": SubResource( 52 ),
"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 )
} ]
17/z_index = 0
19/name = "Planting-Grounds-For-Basic.png 19"
19/texture = ExtResource( 1 )
19/tex_offset = Vector2( 0, 0 )
19/modulate = Color( 1, 1, 1, 1 )
19/region = Rect2( 160, 224, 16, 16 )
19/tile_mode = 0
19/occluder_offset = Vector2( 0, 0 )
19/navigation_offset = Vector2( 0, 0 )
19/shape_offset = Vector2( 0, 0 )
19/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 )
19/shape = SubResource( 54 )
19/shape_one_way = false
19/shape_one_way_margin = 1.0
19/shapes = [ {
"autotile_coord": Vector2( 0, 0 ),
"one_way": false,
"one_way_margin": 1.0,
"shape": SubResource( 54 ),
"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 )
} ]
19/z_index = 0
20/name = "Planting-Grounds-For-Basic.png 20"
20/texture = ExtResource( 1 )
20/tex_offset = Vector2( 0, 0 )
20/modulate = Color( 1, 1, 1, 1 )
20/region = Rect2( 176, 224, 16, 16 )
20/tile_mode = 0
20/occluder_offset = Vector2( 0, 0 )
20/navigation_offset = Vector2( 0, 0 )
20/shape_offset = Vector2( 0, 0 )
20/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 )
20/shape = SubResource( 55 )
20/shape_one_way = false
20/shape_one_way_margin = 1.0
20/shapes = [ {
"autotile_coord": Vector2( 0, 0 ),
"one_way": false,
"one_way_margin": 1.0,
"shape": SubResource( 55 ),
"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 )
} ]
20/z_index = 0
21/name = "Planting-Grounds-For-Basic.png 21"
21/texture = ExtResource( 1 )
21/tex_offset = Vector2( 0, 0 )
21/modulate = Color( 1, 1, 1, 1 )
21/region = Rect2( 240, 128, 16, 16 )
21/tile_mode = 0
21/occluder_offset = Vector2( 0, 0 )
21/navigation_offset = Vector2( 0, 0 )
21/shape_offset = Vector2( 0, 0 )
21/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 )
21/shape = SubResource( 56 )
21/shape_one_way = false
21/shape_one_way_margin = 1.0
21/shapes = [ {
"autotile_coord": Vector2( 0, 0 ),
"one_way": false,
"one_way_margin": 1.0,
"shape": SubResource( 56 ),
"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 )
} ]
21/z_index = 0
22/name = "Planting-Grounds-For-Basic.png 22"
22/texture = ExtResource( 1 )
22/tex_offset = Vector2( 0, 0 )
22/modulate = Color( 1, 1, 1, 1 )
22/region = Rect2( 224, 128, 16, 16 )
22/tile_mode = 0
22/occluder_offset = Vector2( 0, 0 )
22/navigation_offset = Vector2( 0, 0 )
22/shape_offset = Vector2( 0, 0 )
22/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 )
22/shape = SubResource( 57 )
22/shape_one_way = false
22/shape_one_way_margin = 1.0
22/shapes = [ {
"autotile_coord": Vector2( 0, 0 ),
"one_way": false,
"one_way_margin": 1.0,
"shape": SubResource( 57 ),
"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 )
} ]
22/z_index = 0
23/name = "Planting-Grounds-For-Basic.png 23"
23/texture = ExtResource( 1 )
23/tex_offset = Vector2( 0, 0 )
23/modulate = Color( 1, 1, 1, 1 )
23/region = Rect2( 304, 160, 16, 16 )
23/tile_mode = 0
23/occluder_offset = Vector2( 0, 0 )
23/navigation_offset = Vector2( 0, 0 )
23/shape_offset = Vector2( 0, 0 )
23/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 )
23/shape = SubResource( 58 )
23/shape_one_way = false
23/shape_one_way_margin = 1.0
23/shapes = [ {
"autotile_coord": Vector2( 0, 0 ),
"one_way": false,
"one_way_margin": 1.0,
"shape": SubResource( 58 ),
"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 )
} ]
23/z_index = 0
24/name = "Planting-Grounds-For-Basic.png 24"
24/texture = ExtResource( 1 )
24/tex_offset = Vector2( 0, 0 )
24/modulate = Color( 1, 1, 1, 1 )
24/region = Rect2( 288, 128, 16, 16 )
24/tile_mode = 0
24/occluder_offset = Vector2( 0, 0 )
24/navigation_offset = Vector2( 0, 0 )
24/shape_offset = Vector2( 0, 0 )
24/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 )
24/shape = SubResource( 59 )
24/shape_one_way = false
24/shape_one_way_margin = 1.0
24/shapes = [ {
"autotile_coord": Vector2( 0, 0 ),
"one_way": false,
"one_way_margin": 1.0,
"shape": SubResource( 59 ),
"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 )
} ]
24/z_index = 0

View File

@ -0,0 +1,54 @@
[gd_scene load_steps=3 format=2]
[ext_resource path="res://assets/meta/light.png" type="Texture" id=1]
[ext_resource path="res://src/Environment/WorldEnvironment.tscn" type="PackedScene" id=2]
[node name="LevelLighting" type="Node2D"]
[node name="CanvasModulate" type="CanvasModulate" parent="."]
color = Color( 0.513726, 0.592157, 0.701961, 1 )
[node name="WorldEnvironment" parent="." instance=ExtResource( 2 )]
[node name="Lamps" type="Node2D" parent="." groups=["lights"]]
[node name="LightYellow" type="Light2D" parent="Lamps"]
visible = false
texture = ExtResource( 1 )
texture_scale = 0.25
color = Color( 1, 0.921569, 0, 1 )
energy = 0.4
[node name="Accents" type="Node2D" parent="." groups=["lights"]]
[node name="LightGreen" type="Light2D" parent="Accents"]
visible = false
position = Vector2( -66, 105 )
texture = ExtResource( 1 )
texture_scale = 0.1
color = Color( 0.301961, 1, 0.301961, 1 )
energy = 0.7
[node name="LightBlue" type="Light2D" parent="Accents"]
visible = false
position = Vector2( 52, 104 )
texture = ExtResource( 1 )
texture_scale = 0.1
color = Color( 0.301961, 0.301961, 1, 1 )
energy = 0.7
[node name="LightRed" type="Light2D" parent="Accents"]
visible = false
position = Vector2( 99, 104 )
texture = ExtResource( 1 )
texture_scale = 0.1
color = Color( 1, 0.301961, 0.301961, 1 )
energy = 0.7
[node name="LightPurple" type="Light2D" parent="Accents"]
visible = false
position = Vector2( 151, 105 )
texture = ExtResource( 1 )
texture_scale = 0.1
color = Color( 0.698039, 0.301961, 0.698039, 1 )
energy = 0.7

View File

@ -10,6 +10,7 @@ uniform mat4 global_transform;
uniform mat4 viewport_transform; uniform mat4 viewport_transform;
uniform sampler2D light_data; uniform sampler2D light_data;
uniform int n_lights = 0; uniform int n_lights = 0;
uniform vec4 dark_color : hint_color = vec4(0.,0.,0.,0.);
uniform vec4 default_light_color : hint_color; uniform vec4 default_light_color : hint_color;
uniform float light_level : hint_range(0.0, 1.0) = 0.0; uniform float light_level : hint_range(0.0, 1.0) = 0.0;
uniform float offset_modifier : hint_range(0.0, 8.0) = 1.0; uniform float offset_modifier : hint_range(0.0, 8.0) = 1.0;
@ -25,6 +26,10 @@ void vertex() {
world_position = (viewport_transform * (global_transform * vec4(VERTEX, 0.0, 1.0))).xy; world_position = (viewport_transform * (global_transform * vec4(VERTEX, 0.0, 1.0))).xy;
} }
vec3 softblend_pegtop(vec3 src, vec3 dest){
return (1.-2. * dest)*(src * src) + 2.*src*dest;
}
void fragment() { void fragment() {
vec4 col = texture(TEXTURE, UV); vec4 col = texture(TEXTURE, UV);
if (col.a <= 0.0){ if (col.a <= 0.0){
@ -84,7 +89,7 @@ void fragment() {
} }
} }
COLOR = col + m_value * light_color; COLOR = vec4(softblend_pegtop(col.rgb,dark_color.rgb) + m_value * light_color.rgb, col.a + (m_value * light_color).a);
} }
}" }"
@ -93,6 +98,7 @@ shader = SubResource( 1 )
shader_param/global_transform = null shader_param/global_transform = null
shader_param/viewport_transform = null shader_param/viewport_transform = null
shader_param/n_lights = 0 shader_param/n_lights = 0
shader_param/dark_color = Color( 0.223529, 0.12549, 0.298039, 1 )
shader_param/default_light_color = null 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

View File

@ -0,0 +1,19 @@
[gd_scene load_steps=2 format=2]
[sub_resource type="Environment" id=38]
background_mode = 4
tonemap_mode = 4
tonemap_white = 0.6
auto_exposure_scale = 0.08
auto_exposure_max_luma = 16.0
auto_exposure_speed = 0.01
dof_blur_far_distance = 12.17
dof_blur_far_amount = 1.0
dof_blur_near_distance = 1.2
glow_intensity = 1.81
glow_hdr_threshold = 0.34
glow_hdr_scale = 1.18
adjustment_brightness = 0.95
[node name="WorldEnvironment" type="WorldEnvironment"]
environment = SubResource( 38 )

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

528
src/Levels/Level 6.tscn Normal file

File diff suppressed because one or more lines are too long

978
src/Levels/Level 7.tscn Normal file

File diff suppressed because one or more lines are too long

View File

@ -1,4 +1,4 @@
[gd_scene load_steps=19 format=2] [gd_scene load_steps=23 format=2]
[ext_resource path="res://src/Environment/GreenHouseTiles.tres" type="TileSet" id=1] [ext_resource path="res://src/Environment/GreenHouseTiles.tres" type="TileSet" id=1]
[ext_resource path="res://src/Utilities/SignalManager.tscn" type="PackedScene" id=2] [ext_resource path="res://src/Utilities/SignalManager.tscn" type="PackedScene" id=2]
@ -14,6 +14,10 @@
[ext_resource path="res://src/Environment/GlassAndRoots.tscn" type="PackedScene" id=12] [ext_resource path="res://src/Environment/GlassAndRoots.tscn" type="PackedScene" id=12]
[ext_resource path="res://src/Utilities/SceneAudio.tscn" type="PackedScene" id=13] [ext_resource path="res://src/Utilities/SceneAudio.tscn" type="PackedScene" id=13]
[ext_resource path="res://src/Environment/Plants/DecorPlant.tscn" type="PackedScene" id=14] [ext_resource path="res://src/Environment/Plants/DecorPlant.tscn" type="PackedScene" id=14]
[ext_resource path="res://assets/meta/light.png" type="Texture" id=15]
[ext_resource path="res://src/BenefitialObjects/Coin.tscn" type="PackedScene" id=16]
[ext_resource path="res://src/BenefitialObjects/ProtoCoin3DSprite.tscn" type="PackedScene" id=17]
[ext_resource path="res://src/Environment/WorldEnvironment.tscn" type="PackedScene" id=18]
[sub_resource type="Shader" id=15] [sub_resource type="Shader" id=15]
code = "shader_type canvas_item; code = "shader_type canvas_item;
@ -86,6 +90,7 @@ __meta__ = {
"_edit_horizontal_guides_": [ 464.0 ], "_edit_horizontal_guides_": [ 464.0 ],
"_edit_vertical_guides_": [ 2880.0 ] "_edit_vertical_guides_": [ 2880.0 ]
} }
level_music = "res://assets/music/The Laboratory (LOOP).wav"
[node name="SignalManager" parent="." instance=ExtResource( 2 )] [node name="SignalManager" parent="." instance=ExtResource( 2 )]
@ -113,13 +118,66 @@ unique_name_in_owner = true
unique_name_in_owner = true unique_name_in_owner = true
drag_margin_bottom = 0.3 drag_margin_bottom = 0.3
[node name="Sprite2" parent="BlobbyCam/ParallaxBackground/ParallaxLayer4" index="13"]
frame = 4
[node name="LevelLighting" type="Node2D" parent="."]
[node name="CanvasModulate" type="CanvasModulate" parent="LevelLighting"]
color = Color( 0.513726, 0.592157, 0.701961, 1 )
[node name="WorldEnvironment" parent="LevelLighting" instance=ExtResource( 18 )]
[node name="Lamps" type="Node2D" parent="LevelLighting" groups=["lights"]]
[node name="LightYellow" type="Light2D" parent="LevelLighting/Lamps"]
visible = false
texture = ExtResource( 15 )
texture_scale = 0.25
color = Color( 1, 0.921569, 0, 1 )
energy = 0.4
[node name="Accents" type="Node2D" parent="LevelLighting" groups=["lights"]]
[node name="LightGreen" type="Light2D" parent="LevelLighting/Accents"]
visible = false
position = Vector2( -66, 105 )
texture = ExtResource( 15 )
texture_scale = 0.1
color = Color( 0.301961, 1, 0.301961, 1 )
energy = 0.7
[node name="LightBlue" type="Light2D" parent="LevelLighting/Accents"]
visible = false
position = Vector2( 52, 104 )
texture = ExtResource( 15 )
texture_scale = 0.1
color = Color( 0.301961, 0.301961, 1, 1 )
energy = 0.7
[node name="LightRed" type="Light2D" parent="LevelLighting/Accents"]
visible = false
position = Vector2( 99, 104 )
texture = ExtResource( 15 )
texture_scale = 0.1
color = Color( 1, 0.301961, 0.301961, 1 )
energy = 0.7
[node name="LightPurple" type="Light2D" parent="LevelLighting/Accents"]
visible = false
position = Vector2( 151, 105 )
texture = ExtResource( 15 )
texture_scale = 0.1
color = Color( 0.698039, 0.301961, 0.698039, 1 )
energy = 0.7
[node name="Blobby" parent="." instance=ExtResource( 7 )] [node name="Blobby" parent="." instance=ExtResource( 7 )]
unique_name_in_owner = true unique_name_in_owner = true
position = Vector2( -1, 112 ) position = Vector2( -1, 112 )
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 )
@ -160,6 +218,15 @@ elevator_time = 10
position = Vector2( 288, 96 ) position = Vector2( 288, 96 )
next_scene = "res://src/Levels/Actual Level 1.tscn" next_scene = "res://src/Levels/Actual Level 1.tscn"
[node name="Coins" type="Node2D" parent="."]
[node name="Coin" parent="Coins" instance=ExtResource( 16 )]
[node name="ProtoCoin3DSprite" parent="Coins" instance=ExtResource( 17 )]
unique_name_in_owner = true
position = Vector2( -6, -6 )
scale = Vector2( 0.8, 0.8 )
[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"]
[editable path="SignalManager"] [editable path="SignalManager"]

View File

@ -29,7 +29,6 @@ func _ready():
func _on_Timer_timeout() -> void: func _on_Timer_timeout() -> void:
is_armed = true is_armed = true
$HarmfulArea.add_to_group("harmful") $HarmfulArea.add_to_group("harmful")
$Sprite/AnimationPlayer.play("arming")
func _on_AnimationPlayer_animation_finished(anim_name: String) -> void: func _on_AnimationPlayer_animation_finished(anim_name: String) -> void:
@ -42,6 +41,7 @@ func _on_DetectionArea_area_exited(area: Area2D) -> void:
&& trigger_zone_entered): && trigger_zone_entered):
$Timer.start() $Timer.start()
trigger_zone_entered = false trigger_zone_entered = false
$Sprite/AnimationPlayer.play("arming")
func _on_HarmfulArea_area_entered(area: Area2D) -> void: func _on_HarmfulArea_area_entered(area: Area2D) -> void:

View File

@ -74,7 +74,7 @@ radius = 6.0
[sub_resource type="CircleShape2D" id=9] [sub_resource type="CircleShape2D" id=9]
resource_local_to_scene = true resource_local_to_scene = true
radius = 9.0 radius = 11.0
[node name="Mine" type="Node2D"] [node name="Mine" type="Node2D"]
script = ExtResource( 2 ) script = ExtResource( 2 )
@ -104,7 +104,7 @@ collision_layer = 64
shape = SubResource( 9 ) shape = SubResource( 9 )
[node name="Timer" type="Timer" parent="."] [node name="Timer" type="Timer" parent="."]
wait_time = 0.1 wait_time = 0.3
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"]

View File

@ -1,6 +1,7 @@
[gd_scene load_steps=4 format=2] [gd_scene load_steps=5 format=2]
[ext_resource path="res://src/ObstacleObjects/DangerousBlockArea.tscn" type="PackedScene" id=1] [ext_resource path="res://src/ObstacleObjects/DangerousBlockArea.tscn" type="PackedScene" id=1]
[ext_resource path="res://assets/meta/light.png" type="Texture" id=2]
[ext_resource path="res://assets/obstacle object/speiku/speiku16.png" type="Texture" id=23] [ext_resource path="res://assets/obstacle object/speiku/speiku16.png" type="Texture" id=23]
[sub_resource type="RectangleShape2D" id=1] [sub_resource type="RectangleShape2D" id=1]
@ -18,4 +19,10 @@ texture = ExtResource( 23 )
[node name="CollisionShape2D" type="CollisionShape2D" parent="."] [node name="CollisionShape2D" type="CollisionShape2D" parent="."]
shape = SubResource( 1 ) shape = SubResource( 1 )
[node name="LightOrange" type="Light2D" parent="."]
texture = ExtResource( 2 )
texture_scale = 0.1
color = Color( 1, 0.580392, 0.301961, 1 )
energy = 0.5
[editable path="DangerousBlockArea"] [editable path="DangerousBlockArea"]

View File

@ -1,9 +1,10 @@
[gd_scene load_steps=11 format=2] [gd_scene load_steps=12 format=2]
[ext_resource path="res://assets/contraption/FlyingLaserCutterShaded.png" type="Texture" id=1] [ext_resource path="res://assets/contraption/FlyingLaserCutterShaded.png" type="Texture" id=1]
[ext_resource path="res://src/Platforms/FlyingLaserCutter.gd" type="Script" id=2] [ext_resource path="res://src/Platforms/FlyingLaserCutter.gd" type="Script" id=2]
[ext_resource path="res://src/Platforms/FlyingLaserCutterTriggerRayShader.gshader.gdshader" type="Shader" id=3] [ext_resource path="res://src/Platforms/FlyingLaserCutterTriggerRayShader.gshader.gdshader" type="Shader" id=3]
[ext_resource path="res://assets/Sprite-0001.png" type="Texture" id=4] [ext_resource path="res://assets/Sprite-0001.png" type="Texture" id=4]
[ext_resource path="res://assets/meta/light.png" type="Texture" id=5]
[sub_resource type="Animation" id=2] [sub_resource type="Animation" id=2]
length = 2.4 length = 2.4
@ -156,5 +157,12 @@ texture = ExtResource( 4 )
offset = Vector2( 2430, 4 ) offset = Vector2( 2430, 4 )
region_rect = Rect2( 2106.25, 268.196, 8.5918, 0 ) region_rect = Rect2( 2106.25, 268.196, 8.5918, 0 )
[node name="LightOrange" type="Light2D" parent="FlyingLaserCutterBody"]
position = Vector2( 16, 0 )
texture = ExtResource( 5 )
texture_scale = 0.1
color = Color( 1, 0.580392, 0.301961, 1 )
energy = 0.5
[connection signal="body_entered" from="FlyingLaserCutterBody/BackArea" to="." method="_on_BackArea_body_entered"] [connection signal="body_entered" from="FlyingLaserCutterBody/BackArea" to="." method="_on_BackArea_body_entered"]
[connection signal="body_exited" from="FlyingLaserCutterBody/BackArea" to="." method="_on_BackArea_body_exited"] [connection signal="body_exited" from="FlyingLaserCutterBody/BackArea" to="." method="_on_BackArea_body_exited"]

View File

@ -1,8 +1,9 @@
[gd_scene load_steps=7 format=2] [gd_scene load_steps=8 format=2]
[ext_resource path="res://src/Platforms/FlyingPlatform.gd" type="Script" id=1] [ext_resource path="res://src/Platforms/FlyingPlatform.gd" type="Script" id=1]
[ext_resource path="res://assets/contraption/5xFloatingPlatform.png" type="Texture" id=2] [ext_resource path="res://assets/contraption/5xFloatingPlatform.png" type="Texture" id=2]
[ext_resource path="res://assets/sounds/AMBIENCE_SciFi_Static_Tonal_loop_stereo.wav" type="AudioStream" id=3] [ext_resource path="res://assets/sounds/AMBIENCE_SciFi_Static_Tonal_loop_stereo.wav" type="AudioStream" id=3]
[ext_resource path="res://assets/meta/light.png" type="Texture" id=4]
[sub_resource type="Animation" id=1] [sub_resource type="Animation" id=1]
length = 0.001 length = 0.001
@ -86,6 +87,13 @@ position = Vector2( 0, 4 )
scale = Vector2( 4, 0.4 ) scale = Vector2( 4, 0.4 )
polygon = PoolVector2Array( -10, -10, 10, -10, 9.5, 0, 9.25, 5, -9.25, 5, -9.5, 0 ) polygon = PoolVector2Array( -10, -10, 10, -10, 9.5, 0, 9.25, 5, -9.25, 5, -9.5, 0 )
[node name="LightGreen" type="Light2D" parent="PlatformBody"]
position = Vector2( 0, 15 )
texture = ExtResource( 4 )
texture_scale = 0.1
color = Color( 0.301961, 1, 0.301961, 1 )
energy = 0.5
[node name="FlyTween" type="Tween" parent="."] [node name="FlyTween" type="Tween" parent="."]
[connection signal="tween_completed" from="FlyTween" to="." method="_on_FlyTween_tween_completed"] [connection signal="tween_completed" from="FlyTween" to="." method="_on_FlyTween_tween_completed"]

View File

@ -1,8 +1,9 @@
[gd_scene load_steps=7 format=2] [gd_scene load_steps=8 format=2]
[ext_resource path="res://src/Platforms/FlyingPlatform.gd" type="Script" id=1] [ext_resource path="res://src/Platforms/FlyingPlatform.gd" type="Script" id=1]
[ext_resource path="res://assets/contraption/3xFloatingPlatform.png" type="Texture" id=2] [ext_resource path="res://assets/contraption/3xFloatingPlatform.png" type="Texture" id=2]
[ext_resource path="res://assets/sounds/AMBIENCE_SciFi_Static_Tonal_loop_stereo.wav" type="AudioStream" id=3] [ext_resource path="res://assets/sounds/AMBIENCE_SciFi_Static_Tonal_loop_stereo.wav" type="AudioStream" id=3]
[ext_resource path="res://assets/meta/light.png" type="Texture" id=4]
[sub_resource type="Animation" id=1] [sub_resource type="Animation" id=1]
length = 0.001 length = 0.001
@ -90,6 +91,13 @@ position = Vector2( 0, 4 )
scale = Vector2( 4, 0.4 ) scale = Vector2( 4, 0.4 )
polygon = PoolVector2Array( -6, -10, 6, -10, 5.5, 0, 5.25, 5, -5.25, 5, -5.5, 0 ) polygon = PoolVector2Array( -6, -10, 6, -10, 5.5, 0, 5.25, 5, -5.25, 5, -5.5, 0 )
[node name="LightGreen" type="Light2D" parent="PlatformBody"]
position = Vector2( 0, 15 )
texture = ExtResource( 4 )
texture_scale = 0.1
color = Color( 0.301961, 1, 0.301961, 1 )
energy = 0.5
[node name="FlyTween" type="Tween" parent="."] [node name="FlyTween" type="Tween" parent="."]
[node name="FlyingSound" type="AudioStreamPlayer2D" parent="."] [node name="FlyingSound" type="AudioStreamPlayer2D" parent="."]

View File

@ -41,7 +41,7 @@ resource_name = "LowPassFilter"
cutoff_hz = 3000.0 cutoff_hz = 3000.0
[resource] [resource]
bus/0/volume_db = -10.4576 bus/0/volume_db = -3.09804
bus/1/name = "Music" bus/1/name = "Music"
bus/1/solo = false bus/1/solo = false
bus/1/mute = false bus/1/mute = false

View File

@ -44,7 +44,7 @@ func _ready():
state = states.idle state = states.idle
level_state.is_dead = false level_state.is_dead = false
set_state(states.idle) set_state(states.idle)
anim_tree.active = true
# Zero Vector is false # Zero Vector is false
if level_state.load_savepoint(): if level_state.load_savepoint():
parent.global_position = GlobalState.get_savepoint(level_state.level_name) parent.global_position = GlobalState.get_savepoint(level_state.level_name)
@ -82,8 +82,10 @@ func _state_logic(delta):
handle_input_ref = funcref(self, "handle_wallslide_input") handle_input_ref = funcref(self, "handle_wallslide_input")
_: _:
print("don't panik") print("don't panik")
var texture = $"%BubbleShieldViewport".get_texture() if $"%BubbleShieldViewport/IridescenceBall".visible:
$"%Blobby3DEffects".texture = texture var texture = $"%BubbleShieldViewport".get_texture()
$"%Blobby3DEffects".texture = texture
$"%Blobby3DEffects".position = $"%BlobbySkin/CollisionPolygon2D".position
var direction = get_horizontal_direction() var direction = get_horizontal_direction()
did_turn = false did_turn = false
@ -150,6 +152,7 @@ func _get_transition(_delta):
# + " y vel/10:" # + " y vel/10:"
# + String(round(parent.velocity.y / 10)) # + String(round(parent.velocity.y / 10))
var new_state var new_state
if parent.is_crushed() && $CrushTimer.is_stopped(): if parent.is_crushed() && $CrushTimer.is_stopped():
print(parent.is_crushed()) print(parent.is_crushed())
$CrushTimer.start() $CrushTimer.start()
@ -272,8 +275,10 @@ func _enter_state(new_state, old_state):
anim_state_playback.travel("wallsliding") anim_state_playback.travel("wallsliding")
func _exit_state(old_state, new_state): func _exit_state(old_state, new_state):
scene_audio.stop_sound() if(scene_audio != null):
scene_audio.stop_sound()
if old_state == "run": if old_state == "run":
running_particles.emitting = false running_particles.emitting = false
if old_state == "fall" && new_state != "wallslide": if old_state == "fall" && new_state != "wallslide":

View File

@ -9,7 +9,7 @@
[node name="Camera" type="Camera" parent="."] [node name="Camera" type="Camera" parent="."]
transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 3 ) transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 3 )
far = 150.0 far = 5.0
[node name="MeshInstance" type="MeshInstance" parent="."] [node name="MeshInstance" type="MeshInstance" parent="."]
transform = Transform( 1, -0.00767937, 0, 0.00767937, 1, 0, 0, 0, 1, 0, 0, 0 ) transform = Transform( 1, -0.00767937, 0, 0.00767937, 1, 0, 0, 0, 1, 0, 0, 0 )

Binary file not shown.

View File

@ -1,8 +1,10 @@
[gd_resource type="GradientTexture" load_steps=2 format=2] [gd_resource type="GradientTexture" load_steps=2 format=2]
[sub_resource type="Gradient" id=1] [sub_resource type="Gradient" id=1]
offsets = PoolRealArray( 0, 0.0816327, 0.156463, 0.238095, 0.319728, 0.414966, 0.489796, 0.591837, 0.70068, 0.809524, 0.911565, 1 ) interpolation_mode = 1
colors = PoolColorArray( 0, 0, 0, 0, 1, 0, 0, 1, 1, 0.585938, 0, 1, 1, 0.960938, 0, 1, 0.631893, 1, 0.403573, 1, 0, 1, 0.554688, 1, 0, 0.953125, 1, 1, 0, 0.390625, 1, 1, 0.382812, 0, 1, 1, 1, 0, 0.820312, 1, 1, 0, 0, 1, 1, 0.611765, 0.611765, 0 ) offsets = PoolRealArray( 0, 0.056435, 0.169305, 0.309016, 0.459738, 0.619408, 0.782519, 0.946318 )
colors = PoolColorArray( 0, 0, 0, 0, 1, 0.585938, 0, 1, 1, 0.960938, 0, 1, 0.631893, 1, 0.403573, 1, 0, 1, 0.554688, 1, 0, 0.953125, 1, 1, 0, 0.390625, 1, 1, 0.382812, 0, 1, 1 )
[resource] [resource]
gradient = SubResource( 1 ) gradient = SubResource( 1 )
width = 1024

View File

@ -2,6 +2,10 @@ extends AudibleButton
onready var level_state := get_tree().root.get_child(4).get_node("%LevelState") onready var level_state := get_tree().root.get_child(4).get_node("%LevelState")
func _ready() -> void:
if !GlobalState.get_savepoint(level_state.level_name):
visible = false
func _on_button_up() -> void: func _on_button_up() -> void:
get_tree().paused = false get_tree().paused = false
get_tree().reload_current_scene() get_tree().reload_current_scene()

Some files were not shown because too many files have changed in this diff Show More