Compare commits
4 Commits
37b702f94a
...
a32e99cf42
| Author | SHA1 | Date | |
|---|---|---|---|
| a32e99cf42 | |||
| 54ab071bf6 | |||
| 59625e704f | |||
| 3daf49f002 |
|
Before Width: | Height: | Size: 692 B After Width: | Height: | Size: 755 B |
BIN
assets/environment/blocks/Mega_Man_3_Topman_Asset_Grab.aseprite
Normal file
BIN
assets/environment/blocks/Mega_Man_3_Topman_Asset_Grab.png
Normal file
|
After Width: | Height: | Size: 1.6 KiB |
@ -0,0 +1,35 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="StreamTexture"
|
||||
path="res://.import/Mega_Man_3_Topman_Asset_Grab.png-ee0c2a41f62387abc451b1a8212f4676.stex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://assets/environment/blocks/Mega_Man_3_Topman_Asset_Grab.png"
|
||||
dest_files=[ "res://.import/Mega_Man_3_Topman_Asset_Grab.png-ee0c2a41f62387abc451b1a8212f4676.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
assets/environment/blocks/Planting-Grounds-For-Basic.png
Normal file
|
After Width: | Height: | Size: 23 KiB |
@ -0,0 +1,35 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="StreamTexture"
|
||||
path="res://.import/Planting-Grounds-For-Basic.png-48b5c6d5ee7249e4ac85f61e28d73029.stex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://assets/environment/blocks/Planting-Grounds-For-Basic.png"
|
||||
dest_files=[ "res://.import/Planting-Grounds-For-Basic.png-48b5c6d5ee7249e4ac85f61e28d73029.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
assets/environment/decor/Deko_Plants_Sprite_Sheet.aseprite
Normal file
BIN
assets/environment/decor/Deko_Plants_Sprite_Sheet.png
Normal file
|
After Width: | Height: | Size: 27 KiB |
35
assets/environment/decor/Deko_Plants_Sprite_Sheet.png.import
Normal file
@ -0,0 +1,35 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="StreamTexture"
|
||||
path="res://.import/Deko_Plants_Sprite_Sheet.png-f067c3e18377ae129b10565f72c4255a.stex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://assets/environment/decor/Deko_Plants_Sprite_Sheet.png"
|
||||
dest_files=[ "res://.import/Deko_Plants_Sprite_Sheet.png-f067c3e18377ae129b10565f72c4255a.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
assets/environment/decor/Roots_And_Leafs.aseprite
Normal file
BIN
assets/environment/decor/Roots_And_Leafs.png
Normal file
|
After Width: | Height: | Size: 1.1 KiB |
35
assets/environment/decor/Roots_And_Leafs.png.import
Normal file
@ -0,0 +1,35 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="StreamTexture"
|
||||
path="res://.import/Roots_And_Leafs.png-f6fc38556570fe29c021e9f188aa8405.stex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://assets/environment/decor/Roots_And_Leafs.png"
|
||||
dest_files=[ "res://.import/Roots_And_Leafs.png-f6fc38556570fe29c021e9f188aa8405.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
|
||||
|
Before Width: | Height: | Size: 150 B After Width: | Height: | Size: 177 B |
|
Before Width: | Height: | Size: 155 B After Width: | Height: | Size: 165 B |
|
Before Width: | Height: | Size: 167 B After Width: | Height: | Size: 176 B |
|
Before Width: | Height: | Size: 158 B After Width: | Height: | Size: 176 B |
BIN
assets/environment/decor/glass.aseprite
Normal file
BIN
assets/environment/decor/glass.png
Normal file
|
After Width: | Height: | Size: 342 B |
35
assets/environment/decor/glass.png.import
Normal file
@ -0,0 +1,35 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="StreamTexture"
|
||||
path="res://.import/glass.png-745834525a9b5546c44d2aa3dc6f78e7.stex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://assets/environment/decor/glass.png"
|
||||
dest_files=[ "res://.import/glass.png-745834525a9b5546c44d2aa3dc6f78e7.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
|
||||
|
Before Width: | Height: | Size: 121 B After Width: | Height: | Size: 135 B |
|
Before Width: | Height: | Size: 122 B After Width: | Height: | Size: 132 B |
@ -118,11 +118,14 @@ _global_script_class_icons={
|
||||
|
||||
config/name="Blobby"
|
||||
run/main_scene="res://src/UserInterface/Screens/MainMenu/MainScreen.tscn"
|
||||
run/low_processor_mode=true
|
||||
config/icon="res://icon.png"
|
||||
|
||||
[audio]
|
||||
|
||||
default_bus_layout="res://src/Sounds/default_bus_layout.tres"
|
||||
output_latency=32
|
||||
output_latency.web=128
|
||||
|
||||
[autoload]
|
||||
|
||||
@ -139,7 +142,7 @@ settings/fps/force_fps=60
|
||||
|
||||
window/size/width=640
|
||||
window/size/height=360
|
||||
window/size/test_width=1240
|
||||
window/size/test_width=1280
|
||||
window/size/test_height=720
|
||||
window/stretch/mode="2d"
|
||||
window/stretch/aspect="expand"
|
||||
@ -312,8 +315,8 @@ ui_click={
|
||||
[physics]
|
||||
|
||||
common/physics_fps=120
|
||||
common/physics_jitter_fix=0.8
|
||||
2d/thread_model=0
|
||||
2d/use_bvh=false
|
||||
2d/cell_size=100
|
||||
common/physics_interpolation=true
|
||||
common/enable_object_picking=false
|
||||
@ -323,8 +326,17 @@ common/enable_object_picking=false
|
||||
2d/options/use_nvidia_rect_flicker_workaround=true
|
||||
quality/intended_usage/framebuffer_allocation=0
|
||||
quality/intended_usage/framebuffer_allocation.mobile=0
|
||||
2d/snapping/use_gpu_pixel_snap=true
|
||||
threads/thread_model=2
|
||||
quality/reflections/texture_array_reflections=false
|
||||
quality/reflections/high_quality_ggx=false
|
||||
2d/options/use_software_skinning=false
|
||||
gles3/shaders/shader_compilation_mode=2
|
||||
gles3/shaders/shader_compilation_mode.mobile=2
|
||||
gles3/shaders/shader_compilation_mode.web=2
|
||||
gles3/shaders/max_simultaneous_compiles.web=2
|
||||
gles3/shaders/shader_cache_size_mb.mobile=256
|
||||
gles3/shaders/shader_cache_size_mb.web=256
|
||||
quality/depth/hdr=false
|
||||
environment/default_environment="res://default_env.tres"
|
||||
environment/2d/use_nvidia_rect_flicker_workaround=true
|
||||
|
||||
@ -345,7 +345,7 @@ states/wallsliding/node = SubResource( 96 )
|
||||
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 ) ]
|
||||
start_node = "idling"
|
||||
graph_offset = Vector2( 1124.54, -315.431 )
|
||||
graph_offset = Vector2( 642.54, -299.431 )
|
||||
|
||||
[sub_resource type="AnimationNodeStateMachinePlayback" id=48]
|
||||
|
||||
@ -4385,7 +4385,7 @@ texture = SubResource( 62 )
|
||||
offset = Vector2( 1, 0 )
|
||||
hframes = 6
|
||||
vframes = 6
|
||||
frame = 5
|
||||
frame = 6
|
||||
__meta__ = {
|
||||
"_editor_description_": "YXNlcHJpdGVfd2l6YXJkX2NvbmZpZwpwbGF5ZXJ8PUJsb2JieVNwcml0ZS9CbG9iYnltYXRpb25QbGF5ZXIKc291cmNlfD1yZXM6Ly9hc3NldHMvYmxvYmJ5L2Jsb2JieS1zcHJpdGVzaGVldHQuYXNlcHJpdGUKbGF5ZXJ8PUJsb2JieQpvcF9leHB8PUZhbHNlCm9fZm9sZGVyfD0Kb19uYW1lfD0Kb25seV92aXNpYmxlfD1GYWxzZQpvX2V4X3B8PQo="
|
||||
}
|
||||
|
||||
@ -30,12 +30,13 @@ tracks/0/keys = {
|
||||
"values": [ Vector2( 1, 1 ), Vector2( 1.05, 1 ), Vector2( 1.1, 1.05 ), Vector2( 1.05, 1.1 ) ]
|
||||
}
|
||||
|
||||
[node name="Caterpillar" type="KinematicBody2D" groups=["harmful"]]
|
||||
[node name="Caterpillar" type="KinematicBody2D" groups=["frogfood", "harmful"]]
|
||||
scale = Vector2( 0.747749, 0.572926 )
|
||||
collision_layer = 2
|
||||
collision_layer = 258
|
||||
collision_mask = 9
|
||||
collision/safe_margin = 0.001
|
||||
script = ExtResource( 2 )
|
||||
killable = false
|
||||
|
||||
[node name="enemy" type="Sprite" parent="."]
|
||||
position = Vector2( 0, -3.49085 )
|
||||
|
||||
@ -16,6 +16,7 @@ onready var invincible_shader = preload("res://src/Actors/Blobby/InvincibleShade
|
||||
# Is given in blocks
|
||||
export var frog_number := 0
|
||||
export var vision_distance := 6.0
|
||||
export var vision_angle := 180.0
|
||||
export var attack_jump_range := 6.0
|
||||
export var aggressive_to_player := false
|
||||
export var loose_target_seconds := 3.0
|
||||
@ -254,7 +255,7 @@ func detect_food() -> void:
|
||||
var ray_angle_to_facing = vision_raycast.cast_to.angle_to(orientation.cast_to)
|
||||
vision_raycast.force_raycast_update()
|
||||
var collider = vision_raycast.get_collider()
|
||||
if abs(ray_angle_to_facing) < PI / 3 && collider != null && collider.is_in_group("frogfood"):
|
||||
if abs(ray_angle_to_facing) < deg2rad(vision_angle) && collider != null && collider.is_in_group("frogfood"):
|
||||
target_lost_timer.stop()
|
||||
target = collider
|
||||
food_target = collider
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
[gd_scene load_steps=51 format=2]
|
||||
[gd_scene load_steps=50 format=2]
|
||||
|
||||
[ext_resource path="res://assets/enemy/froshler.png" type="Texture" id=1]
|
||||
[ext_resource path="res://src/Actors/Friendlies/WhatAreFrog.gd" type="Script" id=2]
|
||||
@ -433,9 +433,6 @@ extents = Vector2( 12, 0.75 )
|
||||
[sub_resource type="RectangleShape2D" id=3]
|
||||
extents = Vector2( 18.2143, 13.5955 )
|
||||
|
||||
[sub_resource type="RectangleShape2D" id=59]
|
||||
extents = Vector2( 12, 15 )
|
||||
|
||||
[sub_resource type="RectangleShape2D" id=60]
|
||||
extents = Vector2( 12, 0.53125 )
|
||||
|
||||
@ -444,6 +441,8 @@ collision_layer = 2
|
||||
collision_mask = 184
|
||||
collision/safe_margin = 0.002
|
||||
script = ExtResource( 2 )
|
||||
vision_distance = 16.0
|
||||
attack_jump_range = 10.0
|
||||
|
||||
[node name="Statemachine" type="Node2D" parent="."]
|
||||
script = ExtResource( 3 )
|
||||
@ -520,7 +519,7 @@ physics_process_parent = true
|
||||
[node name="FeelerRayCast" type="RayCast2D" parent="."]
|
||||
enabled = true
|
||||
cast_to = Vector2( 0, -1 )
|
||||
collision_mask = 281
|
||||
collision_mask = 25
|
||||
collide_with_areas = true
|
||||
|
||||
[node name="Orientation" type="RayCast2D" parent="."]
|
||||
@ -543,9 +542,10 @@ collision_mask = 41
|
||||
collide_with_areas = true
|
||||
|
||||
[node name="VisionRayCast" type="RayCast2D" parent="."]
|
||||
visible = false
|
||||
enabled = true
|
||||
cast_to = Vector2( 0, -1 )
|
||||
collision_mask = 297
|
||||
collision_mask = 256
|
||||
collide_with_areas = true
|
||||
|
||||
[node name="EnemyBody" type="CollisionShape2D" parent="."]
|
||||
@ -602,17 +602,10 @@ one_shot = true
|
||||
wait_time = 0.3
|
||||
one_shot = true
|
||||
|
||||
[node name="JumpCollisionBody" type="KinematicBody2D" parent="."]
|
||||
collision_layer = 0
|
||||
collision_mask = 8
|
||||
|
||||
[node name="CollisionShape2D" type="CollisionShape2D" parent="JumpCollisionBody"]
|
||||
position = Vector2( 0, -6 )
|
||||
shape = SubResource( 59 )
|
||||
|
||||
[node name="RideCollisionBody" type="KinematicBody2D" parent="."]
|
||||
position = Vector2( 0, -7 )
|
||||
collision_layer = 2
|
||||
collision_mask = 16
|
||||
|
||||
[node name="CollisionShape2D" type="CollisionShape2D" parent="RideCollisionBody"]
|
||||
shape = SubResource( 60 )
|
||||
|
||||
@ -118,6 +118,8 @@ func set_wallet(value) -> void:
|
||||
gsr.wallet = value
|
||||
SaveManager.save_default()
|
||||
|
||||
func get_wallet() -> int:
|
||||
return gsr.wallet
|
||||
|
||||
func reinstate() -> void:
|
||||
if gsr.input_map.size() <= 1:
|
||||
|
||||
@ -140,8 +140,8 @@ texture = ExtResource( 317 )
|
||||
|
||||
[node name="AudioStreamPlayer" type="AudioStreamPlayer" parent="."]
|
||||
stream = ExtResource( 316 )
|
||||
volume_db = -10.0
|
||||
pitch_scale = 1.1
|
||||
volume_db = -15.0
|
||||
pitch_scale = 1.09
|
||||
bus = "Effects"
|
||||
|
||||
[connection signal="body_entered" from="." to="." method="_on_body_entered"]
|
||||
|
||||
@ -1,21 +1,61 @@
|
||||
[gd_scene load_steps=14 format=2]
|
||||
[gd_scene load_steps=16 format=2]
|
||||
|
||||
[ext_resource path="res://src/Environment/GreenHouseTiles.tres" type="TileSet" id=1]
|
||||
[ext_resource path="res://src/Environment/DropThroughPlatforms.tres" type="TileSet" id=2]
|
||||
[ext_resource path="res://assets/environment/decor/platform-plants.png" type="Texture" id=3]
|
||||
[ext_resource path="res://src/Actors/Friendlies/WhatAreFrog.tscn" type="PackedScene" id=4]
|
||||
[ext_resource path="res://src/Actors/BlobbyCam.tscn" type="PackedScene" id=5]
|
||||
[ext_resource path="res://src/Utilities/SceneAudio.tscn" type="PackedScene" id=6]
|
||||
[ext_resource path="res://src/Utilities/SignalManager.tscn" type="PackedScene" id=7]
|
||||
[ext_resource path="res://src/UserInterface/UserInterface.tscn" type="PackedScene" id=8]
|
||||
[ext_resource path="res://src/Utilities/LevelState.tscn" type="PackedScene" id=9]
|
||||
[ext_resource path="res://src/Levels/Templates/LevelTemplate.gd" type="Script" id=10]
|
||||
[ext_resource path="res://assets/sounds/AMBIENCE_SciFi_Large_Space_Hangar_Deep_Smooth_loop_stereo.wav" type="AudioStream" id=11]
|
||||
[ext_resource path="res://assets/ui/fonts/kenny_space.tres" type="DynamicFont" id=12]
|
||||
[ext_resource path="res://src/Utilities/LevelState.tscn" type="PackedScene" id=1]
|
||||
[ext_resource path="res://src/Actors/Friendlies/WhatAreFrog.tscn" type="PackedScene" id=2]
|
||||
[ext_resource path="res://src/Utilities/SceneAudio.tscn" type="PackedScene" id=3]
|
||||
[ext_resource path="res://src/UserInterface/UserInterface.tscn" type="PackedScene" id=4]
|
||||
[ext_resource path="res://src/Utilities/SignalManager.tscn" type="PackedScene" id=5]
|
||||
[ext_resource path="res://src/Actors/BlobbyCam.tscn" type="PackedScene" id=6]
|
||||
[ext_resource path="res://assets/environment/decor/platform-plants.png" type="Texture" id=7]
|
||||
[ext_resource path="res://assets/ui/fonts/kenny_space.tres" type="DynamicFont" id=8]
|
||||
[ext_resource path="res://src/Levels/Templates/LevelTemplate.gd" type="Script" id=9]
|
||||
[ext_resource path="res://src/Environment/GreenHouseTiles.tres" type="TileSet" id=10]
|
||||
[ext_resource path="res://src/Environment/DropThroughPlatforms.tres" type="TileSet" id=11]
|
||||
[ext_resource path="res://assets/sounds/AMBIENCE_SciFi_Large_Space_Hangar_Deep_Smooth_loop_stereo.wav" type="AudioStream" id=12]
|
||||
|
||||
[sub_resource type="Shader" id=15]
|
||||
code = "shader_type canvas_item;
|
||||
|
||||
uniform vec4 in_color:hint_color;
|
||||
uniform vec4 out_color:hint_color;
|
||||
|
||||
uniform float in_out:hint_range(0.,1.)=0.;
|
||||
|
||||
uniform float position:hint_range(-1.5,1.) = 0.856;
|
||||
uniform vec2 size = vec2(16., 16.);
|
||||
|
||||
void fragment(){
|
||||
|
||||
vec2 a = (1./SCREEN_PIXEL_SIZE) / size;
|
||||
|
||||
vec2 uv=UV;
|
||||
uv *= a;
|
||||
|
||||
vec2 i_uv = floor(uv);
|
||||
vec2 f_uv = fract(uv);
|
||||
|
||||
float wave = max(0.,i_uv.x/(a.x) - position);
|
||||
|
||||
vec2 center = f_uv*2.-1.;
|
||||
float circle = length(center);
|
||||
circle = 1. - step(wave,circle);
|
||||
|
||||
vec4 color = mix(in_color, out_color, step(0.5, in_out));
|
||||
|
||||
COLOR=vec4(circle) * color;
|
||||
}"
|
||||
|
||||
[sub_resource type="ShaderMaterial" id=16]
|
||||
shader = SubResource( 15 )
|
||||
shader_param/in_color = Color( 0, 0, 0, 1 )
|
||||
shader_param/out_color = Color( 0, 0, 0, 0.568627 )
|
||||
shader_param/in_out = 0.0
|
||||
shader_param/position = -1.5
|
||||
shader_param/size = Vector2( 32, 32 )
|
||||
|
||||
[sub_resource type="TileSet" id=5]
|
||||
0/name = "platform-plants.png 0"
|
||||
0/texture = ExtResource( 3 )
|
||||
0/texture = ExtResource( 7 )
|
||||
0/tex_offset = Vector2( 0, 0 )
|
||||
0/modulate = Color( 1, 1, 1, 1 )
|
||||
0/region = Rect2( 16, 0, 256, 16 )
|
||||
@ -37,17 +77,29 @@
|
||||
0/z_index = 0
|
||||
|
||||
[node name="LevelTemplate" type="Node2D"]
|
||||
script = ExtResource( 10 )
|
||||
script = ExtResource( 9 )
|
||||
__meta__ = {
|
||||
"_edit_horizontal_guides_": [ 464.0 ],
|
||||
"_edit_vertical_guides_": [ 2880.0 ]
|
||||
}
|
||||
|
||||
[node name="SignalManager" parent="." instance=ExtResource( 7 )]
|
||||
[node name="SignalManager" parent="." instance=ExtResource( 5 )]
|
||||
|
||||
[node name="SceneAudio" parent="." instance=ExtResource( 6 )]
|
||||
[node name="SceneAudio" parent="." instance=ExtResource( 3 )]
|
||||
|
||||
[node name="LevelState" parent="." instance=ExtResource( 9 )]
|
||||
[node name="TransitionLayer" type="CanvasLayer" parent="."]
|
||||
visible = false
|
||||
|
||||
[node name="SceneTransition" type="ColorRect" parent="TransitionLayer"]
|
||||
material = SubResource( 16 )
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
size_flags_horizontal = 3
|
||||
size_flags_vertical = 3
|
||||
|
||||
[node name="LevelState" parent="." instance=ExtResource( 1 )]
|
||||
unique_name_in_owner = true
|
||||
|
||||
[node name="Label" type="Label" parent="."]
|
||||
@ -55,29 +107,26 @@ margin_left = -100.0
|
||||
margin_top = 21.0
|
||||
margin_right = 109.0
|
||||
margin_bottom = 62.0
|
||||
custom_fonts/font = ExtResource( 12 )
|
||||
custom_fonts/font = ExtResource( 8 )
|
||||
text = "< = Rescue Pod
|
||||
0/10 sests occupied"
|
||||
align = 1
|
||||
|
||||
[node name="UserInterface" parent="." instance=ExtResource( 8 )]
|
||||
[node name="UserInterface" parent="." instance=ExtResource( 4 )]
|
||||
unique_name_in_owner = true
|
||||
visible = false
|
||||
|
||||
[node name="Timer" parent="UserInterface/HUD/HUDOverlay/GetBackTimer" index="0"]
|
||||
wait_time = 20.0
|
||||
|
||||
[node name="WhatAreFrog" parent="." instance=ExtResource( 4 )]
|
||||
[node name="WhatAreFrog" parent="." instance=ExtResource( 2 )]
|
||||
position = Vector2( 121, 103 )
|
||||
|
||||
[node name="BlobbyCam" parent="." instance=ExtResource( 5 )]
|
||||
[node name="BlobbyCam" parent="." instance=ExtResource( 6 )]
|
||||
unique_name_in_owner = true
|
||||
drag_margin_bottom = 0.3
|
||||
fixed_position = true
|
||||
|
||||
[node name="TileMap" type="TileMap" parent="."]
|
||||
unique_name_in_owner = true
|
||||
tile_set = ExtResource( 1 )
|
||||
tile_set = ExtResource( 10 )
|
||||
cell_size = Vector2( 16, 16 )
|
||||
cell_quadrant_size = 3
|
||||
cell_custom_transform = Transform2D( 24, 0, 0, 24, 0, 0 )
|
||||
@ -85,10 +134,10 @@ collision_layer = 8
|
||||
collision_mask = 8
|
||||
bake_navigation = true
|
||||
format = 1
|
||||
tile_data = PoolIntArray( 65522, 5, 65540, 65523, 5, 10, 65524, 5, 10, 65525, 5, 10, 65526, 5, 10, 65527, 5, 10, 65528, 5, 10, 65529, 5, 10, 65530, 5, 10, 65531, 5, 10, 65532, 5, 10, 65533, 5, 10, 65534, 5, 10, 65535, 5, 10, 0, 5, 10, 1, 5, 10, 2, 5, 10, 3, 5, 10, 4, 5, 10, 5, 5, 10, 6, 5, 10, 7, 5, 10, 8, 5, 10, 9, 5, 10, 10, 5, 10, 11, 5, 10, 12, 5, 10, 13, 5, 10, 14, 5, 10, 15, 5, 10, 16, 5, 10, 17, 5, 10, 18, 5, 10, 19, 5, 10, 131058, 5, 7, 196594, 5, 7, 262130, 5, 7, 327666, 5, 7, 393202, 5, 7, 458738, 5, 7, 524274, 5, 65538, 524275, 5, 2, 524276, 5, 2, 524277, 5, 2, 524278, 5, 2, 524279, 5, 2, 524280, 5, 2, 524281, 5, 2, 524282, 5, 2, 524283, 5, 2, 524284, 5, 2, 524285, 5, 2, 524286, 5, 2, 524287, 5, 2, 458752, 5, 2, 458753, 5, 2, 458754, 5, 2, 458755, 5, 2, 458756, 5, 2, 458757, 5, 2, 458758, 5, 2, 458759, 5, 2, 458760, 5, 2, 458761, 5, 2, 458762, 5, 2, 458763, 5, 2, 458764, 5, 2, 458765, 5, 2, 458766, 5, 2, 458767, 5, 2, 458768, 5, 2, 458769, 5, 2, 458770, 5, 2, 458771, 5, 3 )
|
||||
tile_data = PoolIntArray( 65522, 5, 65540, 65523, 5, 10, 65524, 5, 10, 65525, 5, 10, 65526, 5, 10, 65527, 5, 10, 65528, 5, 10, 65529, 5, 10, 65530, 5, 10, 65531, 5, 10, 65532, 5, 10, 65533, 5, 10, 65534, 5, 10, 65535, 5, 10, 0, 5, 10, 1, 5, 10, 2, 5, 10, 3, 5, 10, 4, 5, 10, 5, 5, 10, 6, 5, 10, 7, 5, 10, 8, 5, 10, 9, 5, 10, 10, 5, 10, 11, 5, 10, 12, 5, 10, 13, 5, 10, 14, 5, 10, 15, 5, 10, 16, 5, 10, 17, 5, 10, 18, 5, 10, 19, 5, 10, 524274, 5, 65538, 524275, 5, 2, 524276, 5, 2, 524277, 5, 2, 524278, 5, 2, 524279, 5, 2, 524280, 5, 2, 524281, 5, 2, 524282, 5, 2, 524283, 5, 2, 524284, 5, 2, 524285, 5, 2, 524286, 5, 2, 524287, 5, 2, 458752, 5, 2, 458753, 5, 2, 458754, 5, 2, 458755, 5, 2, 458756, 5, 2, 458757, 5, 2, 458758, 5, 2, 458759, 5, 2, 458760, 5, 2, 458761, 5, 2, 458762, 5, 2, 458763, 5, 2, 458764, 5, 2, 458765, 5, 2, 458766, 5, 2, 458767, 5, 2, 458768, 5, 2, 458769, 5, 2, 458770, 5, 2, 458771, 5, 3 )
|
||||
|
||||
[node name="DropThroughPlatforms" type="TileMap" parent="."]
|
||||
tile_set = ExtResource( 2 )
|
||||
tile_set = ExtResource( 11 )
|
||||
cell_size = Vector2( 16, 16 )
|
||||
format = 1
|
||||
|
||||
@ -99,7 +148,7 @@ format = 1
|
||||
|
||||
[node name="LevelAmbiance" type="AudioStreamPlayer" parent="."]
|
||||
unique_name_in_owner = true
|
||||
stream = ExtResource( 11 )
|
||||
stream = ExtResource( 12 )
|
||||
volume_db = -14.994
|
||||
autoplay = true
|
||||
bus = "Music"
|
||||
|
||||
@ -6,10 +6,6 @@ onready var signal_manager := get_tree().root.get_child(4).get_node("%SignalMana
|
||||
onready var unactivatable_timer := $Timer
|
||||
|
||||
var activatable = true
|
||||
|
||||
func _input(event: InputEvent) -> void:
|
||||
if activatable && Input.is_action_just_released("interact"):
|
||||
selfActivate()
|
||||
|
||||
|
||||
func selfActivate():
|
||||
@ -20,7 +16,9 @@ func selfActivate():
|
||||
signal_manager.emit_signal("unlocked", "gateblock")
|
||||
|
||||
|
||||
func _on_ActivatorArea_area_entered(area:Area2D) -> void:
|
||||
func _on_ActivatorArea_body_entered(body: Node) -> void:
|
||||
if(!body.is_in_group("player") && !body.is_in_group("frog")):
|
||||
return
|
||||
$Highlight.visible = true
|
||||
if activatable:
|
||||
selfActivate()
|
||||
|
||||
@ -104,7 +104,8 @@ anims/onning = SubResource( 13 )
|
||||
|
||||
[node name="ActivatorArea" type="Area2D" parent="."]
|
||||
unique_name_in_owner = true
|
||||
collision_layer = 32
|
||||
collision_layer = 0
|
||||
collision_mask = 3
|
||||
monitorable = false
|
||||
|
||||
[node name="ActivatorAreaShape" type="CollisionShape2D" parent="ActivatorArea"]
|
||||
@ -115,6 +116,5 @@ shape = SubResource( 18 )
|
||||
wait_time = 0.333
|
||||
one_shot = true
|
||||
|
||||
[connection signal="area_entered" from="ActivatorArea" to="." method="_on_ActivatorArea_area_entered"]
|
||||
[connection signal="area_exited" from="ActivatorArea" to="." method="_on_ActivatorArea_area_exited"]
|
||||
[connection signal="body_entered" from="ActivatorArea" to="." method="_on_ActivatorArea_body_entered"]
|
||||
[connection signal="timeout" from="Timer" to="." method="_on_Timer_timeout"]
|
||||
|
||||
@ -28,6 +28,7 @@ func selfActivate():
|
||||
|
||||
func _on_ActivatorArea_area_entered(area:Area2D) -> void:
|
||||
$Label.visible = true
|
||||
$Label.text = "Orbs in Wallet: " + str(level_state.check_balance())
|
||||
$Highlight.visible = true
|
||||
activatable = true
|
||||
|
||||
|
||||
@ -26,6 +26,7 @@ z_index = -1
|
||||
script = ExtResource( 2 )
|
||||
|
||||
[node name="Highlight" type="TextureRect" parent="."]
|
||||
visible = false
|
||||
anchor_left = 0.5
|
||||
anchor_top = 0.5
|
||||
anchor_right = 0.5
|
||||
@ -37,13 +38,14 @@ margin_bottom = 34.0
|
||||
texture = SubResource( 22 )
|
||||
|
||||
[node name="Label" type="Label" parent="."]
|
||||
margin_left = -18.0
|
||||
visible = false
|
||||
margin_left = -32.0
|
||||
margin_top = -30.0
|
||||
margin_right = 48.0
|
||||
margin_right = 78.0
|
||||
margin_bottom = -16.0
|
||||
rect_scale = Vector2( 0.590909, 0.627907 )
|
||||
custom_fonts/font = ExtResource( 3 )
|
||||
text = "[purchase]"
|
||||
text = "Orbs in wallet: 999"
|
||||
|
||||
[node name="Sprite" type="Sprite" parent="."]
|
||||
position = Vector2( 0, -4 )
|
||||
|
||||
137
src/Environment/GlassAndRoots.tscn
Normal file
@ -0,0 +1,137 @@
|
||||
[gd_scene load_steps=4 format=2]
|
||||
|
||||
[ext_resource path="res://assets/environment/decor/glass.png" type="Texture" id=1]
|
||||
[ext_resource path="res://assets/environment/decor/Roots_And_Leafs.png" type="Texture" id=2]
|
||||
|
||||
[sub_resource type="TileSet" id=1]
|
||||
0/name = "glass.png 0"
|
||||
0/texture = ExtResource( 1 )
|
||||
0/tex_offset = Vector2( 0, 0 )
|
||||
0/modulate = Color( 1, 1, 1, 1 )
|
||||
0/region = Rect2( 32, 0, 16, 16 )
|
||||
0/tile_mode = 0
|
||||
0/occluder_offset = Vector2( 0, 0 )
|
||||
0/navigation_offset = Vector2( 0, 0 )
|
||||
0/shape_offset = Vector2( 0, 0 )
|
||||
0/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 )
|
||||
0/shape_one_way = false
|
||||
0/shape_one_way_margin = 0.0
|
||||
0/shapes = [ ]
|
||||
0/z_index = 0
|
||||
1/name = "glass.png 1"
|
||||
1/texture = ExtResource( 1 )
|
||||
1/tex_offset = Vector2( 0, 0 )
|
||||
1/modulate = Color( 1, 1, 1, 1 )
|
||||
1/region = Rect2( 48, 16, 16, 16 )
|
||||
1/tile_mode = 0
|
||||
1/occluder_offset = Vector2( 0, 0 )
|
||||
1/navigation_offset = Vector2( 0, 0 )
|
||||
1/shape_offset = Vector2( 0, 0 )
|
||||
1/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 )
|
||||
1/shape_one_way = false
|
||||
1/shape_one_way_margin = 0.0
|
||||
1/shapes = [ ]
|
||||
1/z_index = 0
|
||||
2/name = "glass.png 2"
|
||||
2/texture = ExtResource( 1 )
|
||||
2/tex_offset = Vector2( 0, 0 )
|
||||
2/modulate = Color( 1, 1, 1, 1 )
|
||||
2/region = Rect2( 8, 0, 16, 16 )
|
||||
2/tile_mode = 0
|
||||
2/occluder_offset = Vector2( 0, 0 )
|
||||
2/navigation_offset = Vector2( 0, 0 )
|
||||
2/shape_offset = Vector2( 0, 0 )
|
||||
2/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 )
|
||||
2/shape_one_way = false
|
||||
2/shape_one_way_margin = 0.0
|
||||
2/shapes = [ ]
|
||||
2/z_index = 0
|
||||
3/name = "glass.png 3"
|
||||
3/texture = ExtResource( 1 )
|
||||
3/tex_offset = Vector2( 0, 0 )
|
||||
3/modulate = Color( 1, 1, 1, 1 )
|
||||
3/region = Rect2( 8, 16, 16, 16 )
|
||||
3/tile_mode = 0
|
||||
3/occluder_offset = Vector2( 0, 0 )
|
||||
3/navigation_offset = Vector2( 0, 0 )
|
||||
3/shape_offset = Vector2( 0, 0 )
|
||||
3/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 )
|
||||
3/shape_one_way = false
|
||||
3/shape_one_way_margin = 0.0
|
||||
3/shapes = [ ]
|
||||
3/z_index = 0
|
||||
4/name = "Roots_And_Leafs.png 4"
|
||||
4/texture = ExtResource( 2 )
|
||||
4/tex_offset = Vector2( 0, 0 )
|
||||
4/modulate = Color( 1, 1, 1, 1 )
|
||||
4/region = Rect2( 0, 0, 16, 16 )
|
||||
4/tile_mode = 0
|
||||
4/occluder_offset = Vector2( 0, 0 )
|
||||
4/navigation_offset = Vector2( 0, 0 )
|
||||
4/shape_offset = Vector2( 0, 0 )
|
||||
4/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 )
|
||||
4/shape_one_way = false
|
||||
4/shape_one_way_margin = 0.0
|
||||
4/shapes = [ ]
|
||||
4/z_index = 0
|
||||
5/name = "Roots_And_Leafs.png 5"
|
||||
5/texture = ExtResource( 2 )
|
||||
5/tex_offset = Vector2( 0, 0 )
|
||||
5/modulate = Color( 1, 1, 1, 1 )
|
||||
5/region = Rect2( 16, 0, 16, 16 )
|
||||
5/tile_mode = 0
|
||||
5/occluder_offset = Vector2( 0, 0 )
|
||||
5/navigation_offset = Vector2( 0, 0 )
|
||||
5/shape_offset = Vector2( 0, 0 )
|
||||
5/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 )
|
||||
5/shape_one_way = false
|
||||
5/shape_one_way_margin = 0.0
|
||||
5/shapes = [ ]
|
||||
5/z_index = 0
|
||||
6/name = "Roots_And_Leafs.png 6"
|
||||
6/texture = ExtResource( 2 )
|
||||
6/tex_offset = Vector2( 0, 0 )
|
||||
6/modulate = Color( 1, 1, 1, 1 )
|
||||
6/region = Rect2( 32, 0, 16, 16 )
|
||||
6/tile_mode = 0
|
||||
6/occluder_offset = Vector2( 0, 0 )
|
||||
6/navigation_offset = Vector2( 0, 0 )
|
||||
6/shape_offset = Vector2( 0, 0 )
|
||||
6/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 )
|
||||
6/shape_one_way = false
|
||||
6/shape_one_way_margin = 0.0
|
||||
6/shapes = [ ]
|
||||
6/z_index = 0
|
||||
7/name = "Roots_And_Leafs.png 7"
|
||||
7/texture = ExtResource( 2 )
|
||||
7/tex_offset = Vector2( 0, 0 )
|
||||
7/modulate = Color( 1, 1, 1, 1 )
|
||||
7/region = Rect2( 0, 16, 16, 16 )
|
||||
7/tile_mode = 0
|
||||
7/occluder_offset = Vector2( 0, 0 )
|
||||
7/navigation_offset = Vector2( 0, 0 )
|
||||
7/shape_offset = Vector2( 0, 0 )
|
||||
7/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 )
|
||||
7/shape_one_way = false
|
||||
7/shape_one_way_margin = 0.0
|
||||
7/shapes = [ ]
|
||||
7/z_index = 0
|
||||
8/name = "Roots_And_Leafs.png 8"
|
||||
8/texture = ExtResource( 2 )
|
||||
8/tex_offset = Vector2( 0, 0 )
|
||||
8/modulate = Color( 1, 1, 1, 1 )
|
||||
8/region = Rect2( 16, 16, 16, 16 )
|
||||
8/tile_mode = 0
|
||||
8/occluder_offset = Vector2( 0, 0 )
|
||||
8/navigation_offset = Vector2( 0, 0 )
|
||||
8/shape_offset = Vector2( 0, 0 )
|
||||
8/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 )
|
||||
8/shape_one_way = false
|
||||
8/shape_one_way_margin = 0.0
|
||||
8/shapes = [ ]
|
||||
8/z_index = 0
|
||||
|
||||
[node name="GlassAndRoots" type="TileMap"]
|
||||
tile_set = SubResource( 1 )
|
||||
cell_size = Vector2( 16, 16 )
|
||||
format = 1
|
||||
@ -100,9 +100,10 @@ func grass_wave_update(delta: float) -> void:
|
||||
# print(displacement_coeff.x)
|
||||
# saved_coeff = displacement_coeff.x
|
||||
for polygon in get_children():
|
||||
displacement_coeff.x = clamp(displacement_coeff.x, -max_displacement, max_displacement)
|
||||
if polygon is Polygon2D:
|
||||
polygon.material.set_shader_param("displacement_coefficient_x",
|
||||
clamp(displacement_coeff.x, -max_displacement, max_displacement))
|
||||
displacement_coeff.x)
|
||||
break
|
||||
|
||||
last_distance = Vector2(distance, v_distance)
|
||||
|
||||
@ -1,6 +1,47 @@
|
||||
[gd_resource type="TileSet" load_steps=18 format=2]
|
||||
[gd_resource type="TileSet" load_steps=33 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/BasicTileSet.png" type="Texture" id=2]
|
||||
[ext_resource path="res://assets/environment/blocks/Mega_Man_3_Topman_Asset_Grab.png" type="Texture" id=3]
|
||||
|
||||
[sub_resource type="ConvexPolygonShape2D" id=37]
|
||||
points = PoolVector2Array( 0, 0, 16, 0, 16, 16, 0, 16 )
|
||||
|
||||
[sub_resource type="ConvexPolygonShape2D" id=38]
|
||||
points = PoolVector2Array( 0, 0, 16, 0, 16, 16, 0, 16 )
|
||||
|
||||
[sub_resource type="ConvexPolygonShape2D" id=39]
|
||||
points = PoolVector2Array( 0, 0, 16, 0, 16, 16, 0, 16 )
|
||||
|
||||
[sub_resource type="ConvexPolygonShape2D" id=40]
|
||||
points = PoolVector2Array( 0, 0, 16, 0, 16, 16, 0, 16 )
|
||||
|
||||
[sub_resource type="ConvexPolygonShape2D" id=41]
|
||||
points = PoolVector2Array( 0, 0, 16, 0, 16, 16, 0, 16 )
|
||||
|
||||
[sub_resource type="ConvexPolygonShape2D" id=42]
|
||||
points = PoolVector2Array( 0, 0, 16, 0, 16, 16, 0, 16 )
|
||||
|
||||
[sub_resource type="ConvexPolygonShape2D" id=50]
|
||||
points = PoolVector2Array( 16, 16, 16, 16, 4, 14, 2, 12, 0, 0, 16, 0 )
|
||||
|
||||
[sub_resource type="ConvexPolygonShape2D" id=51]
|
||||
points = PoolVector2Array( 0, 0, 0, 0, 16, 0, 14, 12, 12, 14, 0, 16 )
|
||||
|
||||
[sub_resource type="ConvexPolygonShape2D" id=45]
|
||||
points = PoolVector2Array( 0, 0, 16, 0, 16, 16, 0, 16 )
|
||||
|
||||
[sub_resource type="ConvexPolygonShape2D" id=46]
|
||||
points = PoolVector2Array( 0, 0, 16, 0, 16, 16, 0, 16 )
|
||||
|
||||
[sub_resource type="ConvexPolygonShape2D" id=47]
|
||||
points = PoolVector2Array( 0, 0, 16, 0, 16, 16, 0, 16 )
|
||||
|
||||
[sub_resource type="ConvexPolygonShape2D" id=48]
|
||||
points = PoolVector2Array( 0, 0, 16, 0, 16, 16, 0, 16 )
|
||||
|
||||
[sub_resource type="ConvexPolygonShape2D" id=49]
|
||||
points = PoolVector2Array( 0, 0, 16, 0, 16, 16, 0, 16 )
|
||||
|
||||
[sub_resource type="NavigationPolygon" id=21]
|
||||
vertices = PoolVector2Array( 0, 0, 16, 0, 16, 16, 0, 16 )
|
||||
@ -176,3 +217,125 @@ outlines = [ PoolVector2Array( 0, 0, 16, 0, 16, 16, 0, 16 ) ]
|
||||
7/shape_one_way_margin = 0.0
|
||||
7/shapes = [ ]
|
||||
7/z_index = 0
|
||||
15/name = "Mega_Man_3_Topman_Asset_Grab.png 15"
|
||||
15/texture = ExtResource( 3 )
|
||||
15/tex_offset = Vector2( 0, 0 )
|
||||
15/modulate = Color( 1, 1, 1, 1 )
|
||||
15/region = Rect2( 0, 0, 64, 64 )
|
||||
15/tile_mode = 2
|
||||
15/autotile/icon_coordinate = Vector2( 2, 1 )
|
||||
15/autotile/tile_size = Vector2( 16, 16 )
|
||||
15/autotile/spacing = 0
|
||||
15/autotile/occluder_map = [ ]
|
||||
15/autotile/navpoly_map = [ ]
|
||||
15/autotile/priority_map = [ ]
|
||||
15/autotile/z_index_map = [ ]
|
||||
15/occluder_offset = Vector2( 0, 0 )
|
||||
15/navigation_offset = Vector2( 0, 0 )
|
||||
15/shape_offset = Vector2( 0, 0 )
|
||||
15/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 )
|
||||
15/shape = SubResource( 37 )
|
||||
15/shape_one_way = false
|
||||
15/shape_one_way_margin = 1.0
|
||||
15/shapes = [ {
|
||||
"autotile_coord": Vector2( 0, 0 ),
|
||||
"one_way": false,
|
||||
"one_way_margin": 1.0,
|
||||
"shape": SubResource( 37 ),
|
||||
"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 )
|
||||
}, {
|
||||
"autotile_coord": Vector2( 1, 0 ),
|
||||
"one_way": false,
|
||||
"one_way_margin": 1.0,
|
||||
"shape": SubResource( 38 ),
|
||||
"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 )
|
||||
}, {
|
||||
"autotile_coord": Vector2( 2, 0 ),
|
||||
"one_way": false,
|
||||
"one_way_margin": 1.0,
|
||||
"shape": SubResource( 39 ),
|
||||
"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 )
|
||||
}, {
|
||||
"autotile_coord": Vector2( 3, 0 ),
|
||||
"one_way": false,
|
||||
"one_way_margin": 1.0,
|
||||
"shape": SubResource( 40 ),
|
||||
"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 )
|
||||
}, {
|
||||
"autotile_coord": Vector2( 0, 1 ),
|
||||
"one_way": false,
|
||||
"one_way_margin": 1.0,
|
||||
"shape": SubResource( 41 ),
|
||||
"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 )
|
||||
}, {
|
||||
"autotile_coord": Vector2( 1, 1 ),
|
||||
"one_way": false,
|
||||
"one_way_margin": 1.0,
|
||||
"shape": SubResource( 42 ),
|
||||
"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 )
|
||||
}, {
|
||||
"autotile_coord": Vector2( 3, 1 ),
|
||||
"one_way": false,
|
||||
"one_way_margin": 1.0,
|
||||
"shape": SubResource( 50 ),
|
||||
"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 )
|
||||
}, {
|
||||
"autotile_coord": Vector2( 2, 1 ),
|
||||
"one_way": false,
|
||||
"one_way_margin": 1.0,
|
||||
"shape": SubResource( 51 ),
|
||||
"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 )
|
||||
} ]
|
||||
15/z_index = 0
|
||||
16/name = "Planting-Grounds-For-Basic.png 16"
|
||||
16/texture = ExtResource( 1 )
|
||||
16/tex_offset = Vector2( 0, 0 )
|
||||
16/modulate = Color( 1, 1, 1, 1 )
|
||||
16/region = Rect2( 64, 0, 80, 16 )
|
||||
16/tile_mode = 2
|
||||
16/autotile/icon_coordinate = Vector2( 0, 0 )
|
||||
16/autotile/tile_size = Vector2( 16, 16 )
|
||||
16/autotile/spacing = 0
|
||||
16/autotile/occluder_map = [ ]
|
||||
16/autotile/navpoly_map = [ ]
|
||||
16/autotile/priority_map = [ ]
|
||||
16/autotile/z_index_map = [ ]
|
||||
16/occluder_offset = Vector2( 0, 0 )
|
||||
16/navigation_offset = Vector2( 0, 0 )
|
||||
16/shape_offset = Vector2( 0, 0 )
|
||||
16/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 )
|
||||
16/shape = SubResource( 45 )
|
||||
16/shape_one_way = false
|
||||
16/shape_one_way_margin = 1.0
|
||||
16/shapes = [ {
|
||||
"autotile_coord": Vector2( 3, 0 ),
|
||||
"one_way": false,
|
||||
"one_way_margin": 1.0,
|
||||
"shape": SubResource( 45 ),
|
||||
"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 )
|
||||
}, {
|
||||
"autotile_coord": Vector2( 2, 0 ),
|
||||
"one_way": false,
|
||||
"one_way_margin": 1.0,
|
||||
"shape": SubResource( 46 ),
|
||||
"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 )
|
||||
}, {
|
||||
"autotile_coord": Vector2( 1, 0 ),
|
||||
"one_way": false,
|
||||
"one_way_margin": 1.0,
|
||||
"shape": SubResource( 47 ),
|
||||
"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 )
|
||||
}, {
|
||||
"autotile_coord": Vector2( 0, 0 ),
|
||||
"one_way": false,
|
||||
"one_way_margin": 1.0,
|
||||
"shape": SubResource( 48 ),
|
||||
"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 )
|
||||
}, {
|
||||
"autotile_coord": Vector2( 4, 0 ),
|
||||
"one_way": false,
|
||||
"one_way_margin": 1.0,
|
||||
"shape": SubResource( 49 ),
|
||||
"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 )
|
||||
} ]
|
||||
16/z_index = 0
|
||||
|
||||
@ -88,10 +88,10 @@ shader = SubResource( 1 )
|
||||
shader_param/global_transform = null
|
||||
shader_param/viewport_transform = null
|
||||
shader_param/n_lights = 0
|
||||
shader_param/default_light_color = Color( 1, 0.94902, 0.74902, 1 )
|
||||
shader_param/default_light_color = null
|
||||
shader_param/light_level = 0.0
|
||||
shader_param/offset_modifier = 0.48
|
||||
shader_param/n_light_bands = 13
|
||||
shader_param/will_smooth_shade = true
|
||||
shader_param/offset_modifier = 1.0
|
||||
shader_param/n_light_bands = 7
|
||||
shader_param/will_smooth_shade = false
|
||||
shader_param/band_decay_rate = 0.5
|
||||
shader_param/light_strength_modifier = 1.0
|
||||
|
||||
1020
src/Environment/Plants/DecorPlant.tscn
Normal file
@ -125,6 +125,9 @@ unique_name_in_owner = true
|
||||
position = Vector2( -70, 1 )
|
||||
scale = Vector2( 0.878906, 0.936025 )
|
||||
|
||||
[node name="BlobbySprite" parent="Blobby" index="5"]
|
||||
frame = 7
|
||||
|
||||
[node name="BlobbymationTree" parent="Blobby/BlobbySprite" index="0"]
|
||||
parameters/playback = SubResource( 6 )
|
||||
|
||||
@ -152,7 +155,7 @@ format = 1
|
||||
|
||||
[node name="ElevatorButton" parent="." instance=ExtResource( 10 )]
|
||||
position = Vector2( 832, 310 )
|
||||
elevator_time = 5
|
||||
elevator_time = 15
|
||||
|
||||
[node name="Portal" parent="." instance=ExtResource( 11 )]
|
||||
position = Vector2( 832, 368 )
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
[gd_scene load_steps=26 format=2]
|
||||
[gd_scene load_steps=30 format=2]
|
||||
|
||||
[ext_resource path="res://src/Contraptions/Rope/RopeAnchor.tscn" type="PackedScene" id=1]
|
||||
[ext_resource path="res://assets/environment/decor/platform-plants.png" type="Texture" id=2]
|
||||
@ -20,6 +20,8 @@
|
||||
[ext_resource path="res://src/Environment/DropThroughPlatforms.tres" type="TileSet" id=18]
|
||||
[ext_resource path="res://src/Actors/Friendlies/BoundFrog.gd" type="Script" id=19]
|
||||
[ext_resource path="res://src/Levels/Templates/LevelTemplate.gd" type="Script" id=20]
|
||||
[ext_resource path="res://src/UserInterface/TutorialComboThingy.tscn" type="PackedScene" id=21]
|
||||
[ext_resource path="res://assets/effects/noise.png" type="Texture" id=22]
|
||||
|
||||
[sub_resource type="Shader" id=55]
|
||||
code = "shader_type canvas_item;
|
||||
@ -88,6 +90,62 @@ shader_param/size = Vector2( 32, 32 )
|
||||
|
||||
[sub_resource type="AnimationNodeStateMachinePlayback" id=54]
|
||||
|
||||
[sub_resource type="Shader" id=15]
|
||||
code = "shader_type canvas_item;
|
||||
|
||||
uniform sampler2D noise_tex_normal;
|
||||
uniform sampler2D noise_tex;
|
||||
uniform float progress : hint_range(0.0, 1.0);
|
||||
uniform float scale : hint_range(0.0, 100.0);
|
||||
uniform float strength = 1.0;
|
||||
|
||||
// If your sprite doesn't have enough space and the explosion gets clipped,
|
||||
// you can uncomment this and adjust the scale
|
||||
void vertex() {
|
||||
VERTEX *= scale;
|
||||
|
||||
UV *= scale;
|
||||
UV -= (scale - 1.0) / 2.0;
|
||||
}
|
||||
|
||||
void fragment() {
|
||||
vec2 direction = texture(noise_tex_normal, UV).xy; // We're using normal map as direction
|
||||
direction -= 0.5; // Since our normal map is a texture, it ranges from 0.0 to 1.0...
|
||||
direction *= 2.0; // ...so we're going to make it range from -1.0 to 1.0.
|
||||
direction = direction * strength * progress;
|
||||
|
||||
// UV for exploded texture
|
||||
vec2 tex_size = 1.0 / TEXTURE_PIXEL_SIZE; // Real texture size in pixels
|
||||
vec2 uv = floor(UV * tex_size) / (tex_size - 1.0); // Pixelate UV to snap pixels
|
||||
uv = uv - direction; // Distort UV
|
||||
|
||||
// Texture with exploded UV
|
||||
vec4 tex = texture(TEXTURE, uv);
|
||||
|
||||
// Dissolve alpha
|
||||
float dissolve = texture(noise_tex, UV).x;
|
||||
dissolve = step(progress, dissolve);
|
||||
tex.a *= dissolve;
|
||||
|
||||
// Border (in case the edge of your sprite stretches, otherwise you can remove this block)
|
||||
vec2 border_uv = uv * 2.0 - 1.0;
|
||||
border_uv = clamp(abs(border_uv), 0.0, 1.0);
|
||||
float border = max(border_uv.x, border_uv.y);
|
||||
border = ceil(1.0 - border);
|
||||
tex.a *= border;
|
||||
|
||||
COLOR = tex;
|
||||
}"
|
||||
|
||||
[sub_resource type="ShaderMaterial" id=57]
|
||||
resource_local_to_scene = true
|
||||
shader = SubResource( 15 )
|
||||
shader_param/progress = 0.0
|
||||
shader_param/scale = 1.0
|
||||
shader_param/strength = 0.1
|
||||
shader_param/noise_tex_normal = ExtResource( 22 )
|
||||
shader_param/noise_tex = ExtResource( 22 )
|
||||
|
||||
[node name="LevelTemplate" type="Node2D"]
|
||||
script = ExtResource( 20 )
|
||||
__meta__ = {
|
||||
@ -215,6 +273,28 @@ position = Vector2( 48, 91 )
|
||||
position = Vector2( 207, -4 )
|
||||
z_index = -1
|
||||
|
||||
[node name="TutorialComboThingy" parent="." instance=ExtResource( 21 )]
|
||||
visible = false
|
||||
position = Vector2( -45, -46 )
|
||||
action1 = "duck"
|
||||
action2 = "jump"
|
||||
goal_state = "ducking"
|
||||
tutorial_text = "Duck and Jump to fall through"
|
||||
press_limit = 1
|
||||
|
||||
[node name="Button1" parent="TutorialComboThingy" index="1"]
|
||||
material = SubResource( 57 )
|
||||
|
||||
[node name="Button2" parent="TutorialComboThingy" index="2"]
|
||||
material = SubResource( 57 )
|
||||
|
||||
[node name="Label" parent="TutorialComboThingy/TextureRect" index="0"]
|
||||
margin_left = -126.0
|
||||
margin_right = 7.0
|
||||
|
||||
[node name="CollisionShape2D" parent="TutorialComboThingy/StartTutorialArea" index="0"]
|
||||
position = Vector2( 5, 86 )
|
||||
|
||||
[connection signal="body_exited" from="Blobby/BlobbySkin" to="Blobby" method="_on_BlobbySkin_body_exited"]
|
||||
[connection signal="child_exiting_tree" from="BoundFrog/WhatAreFrog" to="BoundFrog" method="_on_WhatAreFrog_child_exiting_tree"]
|
||||
[connection signal="button_pushed" from="FrogFreeButton" to="BoundFrog" method="_on_FrogFreeButton_pushed"]
|
||||
@ -227,3 +307,4 @@ z_index = -1
|
||||
[editable path="Blobby"]
|
||||
[editable path="Flyer"]
|
||||
[editable path="BoundFrog/RopeAnchor"]
|
||||
[editable path="TutorialComboThingy"]
|
||||
|
||||
@ -1,7 +1,6 @@
|
||||
[gd_scene load_steps=26 format=2]
|
||||
[gd_scene load_steps=25 format=2]
|
||||
|
||||
[ext_resource path="res://assets/environment/decor/platform-plants.png" type="Texture" id=1]
|
||||
[ext_resource path="res://assets/sounds/AMBIENCE_SciFi_Large_Space_Hangar_Deep_Smooth_loop_stereo.wav" type="AudioStream" id=2]
|
||||
[ext_resource path="res://src/UserInterface/UserInterface.tscn" type="PackedScene" id=3]
|
||||
[ext_resource path="res://src/Actors/Blobby/Blobby.tscn" type="PackedScene" id=4]
|
||||
[ext_resource path="res://src/Utilities/SignalManager.tscn" type="PackedScene" id=5]
|
||||
@ -135,7 +134,7 @@ death_sound_1 = null
|
||||
death_sound_2 = null
|
||||
|
||||
[node name="BlobbySprite" parent="Blobby" index="5"]
|
||||
frame = 9
|
||||
frame = 7
|
||||
|
||||
[node name="BlobbymationTree" parent="Blobby/BlobbySprite" index="0"]
|
||||
parameters/playback = SubResource( 6 )
|
||||
@ -230,13 +229,6 @@ elevator_time = 16
|
||||
position = Vector2( 16, 112 )
|
||||
next_scene = "res://src/Levels/Level 2.tscn"
|
||||
|
||||
[node name="LevelAmbiance" type="AudioStreamPlayer" parent="."]
|
||||
unique_name_in_owner = true
|
||||
stream = ExtResource( 2 )
|
||||
volume_db = -14.994
|
||||
autoplay = true
|
||||
bus = "Music"
|
||||
|
||||
[connection signal="body_exited" from="Blobby/BlobbySkin" to="Blobby" method="_on_BlobbySkin_body_exited"]
|
||||
[connection signal="button_pushed" from="FrogFreeButton" to="BoundFrog" method="_on_FrogFreeButton_pushed"]
|
||||
|
||||
|
||||
@ -981,6 +981,7 @@ __meta__ = {
|
||||
"_edit_horizontal_guides_": [ 464.0 ],
|
||||
"_edit_vertical_guides_": [ 2880.0 ]
|
||||
}
|
||||
level_music = "res://assets/music/The Laboratory (LOOP).wav"
|
||||
|
||||
[node name="SignalManager" parent="." instance=ExtResource( 6 )]
|
||||
|
||||
@ -1009,6 +1010,9 @@ unique_name_in_owner = true
|
||||
position = Vector2( -88, 96 )
|
||||
scale = Vector2( 0.878906, 0.936025 )
|
||||
|
||||
[node name="BlobbySprite" parent="Blobby" index="5"]
|
||||
frame = 7
|
||||
|
||||
[node name="BlobbymationTree" parent="Blobby/BlobbySprite" index="0"]
|
||||
parameters/playback = SubResource( 6 )
|
||||
|
||||
|
||||
@ -86,6 +86,7 @@ shader_param/size = Vector2( 32, 32 )
|
||||
|
||||
[node name="Level 4" type="Node2D"]
|
||||
script = ExtResource( 10 )
|
||||
level_music = "res://assets/music/The Laboratory (LOOP).wav"
|
||||
|
||||
[node name="SignalManager" parent="." instance=ExtResource( 2 )]
|
||||
|
||||
@ -119,7 +120,7 @@ position = Vector2( -183, 111 )
|
||||
scale = Vector2( 0.878906, 0.936025 )
|
||||
|
||||
[node name="BlobbySprite" parent="Blobby" index="5"]
|
||||
frame = 6
|
||||
frame = 7
|
||||
|
||||
[node name="BlobbymationTree" parent="Blobby/BlobbySprite" index="0"]
|
||||
parameters/playback = SubResource( 6 )
|
||||
|
||||
@ -185,7 +185,7 @@ position = Vector2( -45, -5.96046e-08 )
|
||||
scale = Vector2( 0.878906, 0.936025 )
|
||||
|
||||
[node name="BlobbySprite" parent="Blobby" index="5"]
|
||||
frame = 8
|
||||
frame = 5
|
||||
|
||||
[node name="BlobbymationTree" parent="Blobby/BlobbySprite" index="0"]
|
||||
parameters/playback = SubResource( 6 )
|
||||
|
||||
228
src/Levels/MockUp Level.tscn
Normal file
@ -1,4 +1,4 @@
|
||||
[gd_scene load_steps=17 format=2]
|
||||
[gd_scene load_steps=19 format=2]
|
||||
|
||||
[ext_resource path="res://src/Environment/GreenHouseTiles.tres" type="TileSet" id=1]
|
||||
[ext_resource path="res://src/Utilities/SignalManager.tscn" type="PackedScene" id=2]
|
||||
@ -11,7 +11,9 @@
|
||||
[ext_resource path="res://src/Levels/Templates/LevelTemplate.gd" type="Script" id=9]
|
||||
[ext_resource path="res://assets/environment/decor/platform-plants.png" type="Texture" id=10]
|
||||
[ext_resource path="res://src/Contraptions/Triggers/ElevatorButton.tscn" type="PackedScene" id=11]
|
||||
[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/Environment/Plants/DecorPlant.tscn" type="PackedScene" id=14]
|
||||
|
||||
[sub_resource type="Shader" id=15]
|
||||
code = "shader_type canvas_item;
|
||||
@ -146,6 +148,10 @@ tile_set = SubResource( 5 )
|
||||
cell_size = Vector2( 16, 16 )
|
||||
format = 1
|
||||
|
||||
[node name="DecorPlants" parent="." instance=ExtResource( 14 )]
|
||||
|
||||
[node name="GlassAndRoots" parent="." instance=ExtResource( 12 )]
|
||||
|
||||
[node name="ElevatorButton" parent="." instance=ExtResource( 11 )]
|
||||
position = Vector2( 208, 102 )
|
||||
elevator_time = 10
|
||||
|
||||
@ -41,7 +41,7 @@ resource_name = "LowPassFilter"
|
||||
cutoff_hz = 3000.0
|
||||
|
||||
[resource]
|
||||
bus/0/volume_db = -20.0
|
||||
bus/0/volume_db = -6.93575
|
||||
bus/1/name = "Music"
|
||||
bus/1/solo = false
|
||||
bus/1/mute = false
|
||||
|
||||
@ -43,16 +43,16 @@ resource_name = "Redlight"
|
||||
length = 3.33
|
||||
loop = true
|
||||
tracks/0/type = "value"
|
||||
tracks/0/path = NodePath("../HUDOverlay:color")
|
||||
tracks/0/path = NodePath("../../HUDOverlay:color")
|
||||
tracks/0/interp = 1
|
||||
tracks/0/loop_wrap = true
|
||||
tracks/0/imported = false
|
||||
tracks/0/enabled = true
|
||||
tracks/0/keys = {
|
||||
"times": PoolRealArray( 0, 1.7 ),
|
||||
"times": PoolRealArray( 0, 1.66 ),
|
||||
"transitions": PoolRealArray( 1, 1 ),
|
||||
"update": 0,
|
||||
"values": [ Color( 0, 0, 0, 0 ), Color( 0.478431, 0, 0, 0.207843 ) ]
|
||||
"values": [ Color( 0, 0, 0, 0 ), Color( 1, 0, 0, 0.117647 ) ]
|
||||
}
|
||||
|
||||
[node name="HUD" type="Control"]
|
||||
|
||||
@ -38,7 +38,9 @@ func check_goal_state() -> void:
|
||||
$TextureRect2.visible = false
|
||||
$TextureRect3.visible = false
|
||||
$AudioStreamPlayer.play()
|
||||
$AnimationPlayer.play("cease_4_exist")
|
||||
$AnimationPlayer.play("cease_4_exist")
|
||||
else:
|
||||
queue_free()
|
||||
|
||||
func _ready() -> void:
|
||||
# Should save itself into the progress dictionary upon creation
|
||||
|
||||
@ -15,8 +15,6 @@ var level_time := 0.0
|
||||
func _ready() -> void:
|
||||
GlobalState.gsr.last_played_level = levelName
|
||||
SaveManager.save_default()
|
||||
if GlobalState.get_level_completed(levelName):
|
||||
GlobalState.set_level_completed(levelName, false)
|
||||
signal_manager.connect("level_completed", self, "_on_level_completed")
|
||||
signal_manager.connect("player_died", self, "player_dying")
|
||||
|
||||
@ -39,12 +37,11 @@ func set_currency(value: int) -> void:
|
||||
signal_manager.emit_signal("currency_updated")
|
||||
|
||||
func get_currency() -> int:
|
||||
return GlobalState.gsr.wallet + currency
|
||||
return currency
|
||||
|
||||
func set_deaths(value: int) -> void:
|
||||
deaths = value
|
||||
|
||||
|
||||
func set_dead(value: bool) -> void:
|
||||
is_dead = value
|
||||
|
||||
@ -96,7 +93,7 @@ func spend_currency(cost: int) -> bool:
|
||||
# TODO member that
|
||||
if OS.is_debug_build():
|
||||
return true
|
||||
if get_currency() < cost:
|
||||
if check_balance() < cost:
|
||||
return false
|
||||
var remainder = currency - cost
|
||||
if remainder >= 0:
|
||||
@ -107,6 +104,9 @@ func spend_currency(cost: int) -> bool:
|
||||
GlobalState.set_wallet(GlobalState.gsr.wallet + remainder)
|
||||
return true
|
||||
|
||||
func check_balance() -> int:
|
||||
var balance = currency + GlobalState.get_wallet()
|
||||
return balance
|
||||
|
||||
func _on_level_completed():
|
||||
#if(OS.is_debug_build()):
|
||||
|
||||