feat: thwomp improvements

This commit is contained in:
Jakob Feldmann 2023-09-19 20:04:45 +02:00
parent fab18d3a98
commit c02296721a
26 changed files with 1310 additions and 51 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 989 B

View File

@ -0,0 +1,35 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/Main Ship - Base - Very damaged.png-926168939abe4d38178928ec91f12a7c.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/Main Ship - Base - Very damaged.png"
dest_files=[ "res://.import/Main Ship - Base - Very damaged.png-926168939abe4d38178928ec91f12a7c.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: 2.0 KiB

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 938 B

View File

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

View File

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

@ -30,7 +30,7 @@ var max_velocity := {
"duck_walk": 165
}
# x is applied directly to velocity and y is multiplied with acceleration
var duck_boost = Vector2(2.5, 0.75)
var duck_boost = Vector2(2, 0.75)
var velocity_jump_boost_ratio := 10
# This is added to the acceleration force initially
var init_acceleration_force := {"": 0, "idle_walk": 4181, "idle_run": 5765, "walk_run": 1000}

View File

@ -4343,6 +4343,7 @@ __meta__ = {
}
[node name="StateLabel" type="Label" parent="."]
visible = false
show_behind_parent = true
margin_left = -37.0
margin_top = -44.0

View File

@ -484,7 +484,6 @@ position = Vector2( 0, -7 )
texture = ExtResource( 1 )
hframes = 2
vframes = 4
frame = 1
[node name="AnimationPlayer" type="AnimationPlayer" parent="FrogSprite"]
anims/RESET = SubResource( 5 )

View File

@ -6,8 +6,10 @@ func play_scene_independent(sound_name: String, bus: String = "Master", attenuat
singleton = false, start_time = 0.0, random_pitch = false, pitch = 1.0) -> void:
if singleton && players.has(sound_name):
return
var disposable_player = AudioStreamPlayer.new()
var disposable_player
disposable_player = AudioStreamPlayer.new()
add_child(disposable_player)
disposable_player.connect("finished", self, "dispose_player", [weakref(disposable_player)])
var stream = GlobalState.sound_library[sound_name]
if random_pitch:
stream = AudioStreamRandomPitch.new()
@ -17,12 +19,19 @@ func play_scene_independent(sound_name: String, bus: String = "Master", attenuat
disposable_player.bus = bus
disposable_player.pitch_scale = pitch
disposable_player.play(start_time)
disposable_player.connect("finished", self, "dispose_player", [weakref(disposable_player)])
players[sound_name] = weakref(disposable_player)
func dispose_player(player: WeakRef) -> void:
if !player.get_ref(): return
player.get_ref().queue_free()
var p = player.get_ref()
var sound_name
if("audio_stream" in p.stream):
sound_name = p.stream.audio_stream.resource_path
else:
sound_name = p.stream.resource_path
if players.has(sound_name):
players.erase(sound_name)
p.queue_free()
func pause_scene_independent(sound_name: String):
if players.has(sound_name) && players[sound_name].get_ref():

View File

@ -7,7 +7,14 @@ onready var signal_manager := get_tree().root.get_child(4).get_node("%SignalMana
onready var levelName := get_tree().get_current_scene().get_name()
export(String, FILE, "*.tscn") var next_scene
export(bool) var is_active
func _ready() -> void:
if(!is_active):
monitoring = false
signal_manager.connect("terminal_activated", self, "activate_portal")
else:
$portal.frame = 0
func _get_configuration_warning() -> String:
return "The next scene property can't be empty" if not next_scene else ""
@ -15,7 +22,10 @@ func _get_configuration_warning() -> String:
func level_completion() -> void:
GlobalState.remove_savepoint(levelName)
signal_manager.emit_signal("level_completed")
func activate_portal(_time: float) -> void:
$AnimationPlayer.play("activatePortal")
monitoring = true
func teleport() -> void:
GlobalAudio.play_scene_independent("res://assets/sounds/MAGIC_SPELL_Morphing_Synth_Harp_Scales_stereo.wav", "Music", -15)

View File

@ -1,11 +1,10 @@
[gd_scene load_steps=7 format=2]
[ext_resource path="res://assets/contraption/portal.png" type="Texture" id=1]
[ext_resource path="res://assets/contraption/PixelPortal.png" type="Texture" id=1]
[ext_resource path="res://src/Contraptions/Portal/Portal.gd" type="Script" id=2]
[ext_resource path="res://src/UserInterface/Screens/InGameMenu/LevelEndScreen.tscn" type="PackedScene" id=3]
[sub_resource type="CapsuleShape2D" id=1]
radius = 22.1169
radius = 40.0
height = 22.4675
[sub_resource type="Animation" id=2]
@ -35,6 +34,22 @@ tracks/1/keys = {
"values": [ false ]
}
[sub_resource type="Animation" id=4]
resource_name = "activatePortal"
length = 2.0
tracks/0/type = "value"
tracks/0/path = NodePath("portal: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.7, 1.3, 1.8 ),
"transitions": PoolRealArray( 1, 1, 1, 1 ),
"update": 1,
"values": [ 3, 2, 1, 0 ]
}
[sub_resource type="Animation" id=3]
resource_name = "fade_in"
tracks/0/type = "value"
@ -64,15 +79,18 @@ tracks/1/keys = {
[node name="Portal" type="Area2D"]
pause_mode = 2
z_index = -1
z_as_relative = false
collision_layer = 0
monitorable = false
script = ExtResource( 2 )
next_scene = ExtResource( 3 )
next_scene = "res://src/Levels/Level 1.tscn"
[node name="portal" type="Sprite" parent="."]
scale = Vector2( 0.1, 0.1 )
texture = ExtResource( 1 )
hframes = 2
vframes = 2
frame = 3
[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
scale = Vector2( 0.3, 0.3 )
@ -86,13 +104,11 @@ visible = false
margin_right = 1024.0
margin_bottom = 600.0
color = Color( 0, 0, 0, 0 )
__meta__ = {
"_edit_use_anchors_": false
}
[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
autoplay = "Start"
anims/Start = SubResource( 2 )
anims/activatePortal = SubResource( 4 )
anims/fade_in = SubResource( 3 )
[connection signal="body_entered" from="." to="." method="_on_body_entered"]

View File

@ -13,8 +13,6 @@ var activatable = false
func _ready() -> void:
get_back_timer.wait_time = elevator_time
elevator.get_node("./portal").frame = 1
elevator.monitoring = false
func _input(event: InputEvent) -> void:
if activatable && Input.is_action_just_released("interact"):
@ -26,8 +24,6 @@ func _input(event: InputEvent) -> void:
func selfActivate():
indicatorPlayer.play("onning")
buttonPlayer.play("pushing")
elevator.get_node("./portal").frame = 0
elevator.monitoring = true
#TODO dis importante
activatorArea.set_deferred("monitoring", false)
$GetBackMusic.play()

View File

@ -19,6 +19,9 @@ var is_idle_swinging
var start_swing_time := 0.0
var begin_idle
var time_since_last_exec := 0.0
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"]
# var thread : Thread
var saved_coeff:= 0.0
@ -107,4 +110,8 @@ func grass_wave_update(delta: float) -> void:
func _on_Area2D_body_entered(body: Node) -> void:
$AudioStreamPlayer2D.play()
var sound_index = round(rand_range(0,grass_sounds.size())) - 1
if(body.is_in_group("player")):
GlobalAudio.play_scene_independent(grass_sounds[sound_index], "Effects", -22, true, 0, true, 1)
else:
$AudioStreamPlayer2D.play()

View File

@ -78,6 +78,7 @@ uv = PoolVector2Array( 4.9375, 11.875, 5, 8.8125, 2.8125, 7, -0.375, 4.0625, 2.2
polygons = [ PoolIntArray( 0, 6, 7 ), PoolIntArray( 0, 1, 6 ), PoolIntArray( 1, 5, 6 ), PoolIntArray( 1, 2, 5 ), PoolIntArray( 2, 4, 5 ), PoolIntArray( 2, 3, 4 ) ]
[node name="Sprite" type="Sprite" parent="."]
visible = false
position = Vector2( 5.00909, 19.9567 )
z_index = -1
texture = ExtResource( 10 )

File diff suppressed because it is too large Load Diff

View File

@ -1150,6 +1150,9 @@ unique_name_in_owner = true
position = Vector2( -156, -51 )
scale = Vector2( 0.878906, 0.936025 )
[node name="BlobbySprite" parent="Blobby" index="5"]
frame = 6
[node name="BlobbymationTree" parent="Blobby/BlobbySprite" index="0"]
parameters/playback = SubResource( 6 )
parameters/jumpStretching/blend_position = 1

File diff suppressed because one or more lines are too long

View File

@ -4,20 +4,23 @@ extends Node2D
# Declare member variables here. Examples:
# var a: int = 2
# var b: String = "text"
export var is_locked = true
export var is_armed = false
func _ready() -> void:
$Area2D.remove_from_group("harmful")
$Sprite/AnimationPlayer.play("unarmed")
if(!is_armed):
$Area2D.remove_from_group("harmful")
$Sprite/AnimationPlayer.play("unarmed")
else:
$Area2D.add_to_group("harmful")
$Sprite/AnimationPlayer.play("armed")
func _on_Area2D_area_exited(area: Area2D) -> void:
$Timer.start()
func _on_Timer_timeout() -> void:
is_locked = true
is_armed = true
$Area2D.add_to_group("harmful")
$Sprite/AnimationPlayer.play("arming")

View File

@ -10,10 +10,13 @@ onready var slide_friction = 1.5
var flyoff_triggered = false
var has_hit_player = false
var velocity = 1
var max_velocity = 200
var acceleration_force = 1200
var mass = 10
var halted = false
export(float) var velocity = 1
export(float) var max_velocity = 200
export(float) var acceleration_force = 1200
export(float) var mass = 10
export(bool) var avoid_crushing = false
export(bool) var fast_retrigger = false
# TODO Returing Laser cutter has broken collision and infinite inertia
# Maybe keep returning paths free and crush player when in the way
@ -23,18 +26,21 @@ func _ready() -> void:
func _physics_process(delta: float) -> void:
if !flyoff_triggered:
for ray in trigger_rays:
# When player has been hit on the way
if (has_hit_player && body.position.x > 0):
break
if ray.is_colliding():
if ray.is_colliding() && (body.position.x < 1 || fast_retrigger):
var collider = ray.get_collider()
if collider.is_in_group("player"):
flyoff_triggered = true
body.set("motion/sync_to_physics", false)
break
if body.position.x > 0:
if halted && avoid_crushing:
return
velocity=1
body.position.x += (max_velocity/3)*-1*delta
elif body.position.x == 0:
@ -51,3 +57,13 @@ func _physics_process(delta: float) -> void:
else:
has_hit_player = true
flyoff_triggered = false
func _on_BackArea_body_entered(body: Node) -> void:
if(body.is_in_group("player")):
halted = true
func _on_BackArea_body_exited(body: Node) -> void:
if(body.is_in_group("player")):
halted = false

View File

@ -1,4 +1,4 @@
[gd_scene load_steps=6 format=2]
[gd_scene load_steps=7 format=2]
[ext_resource path="res://assets/contraption/FlyingLaserCutterShaded.png" type="Texture" id=1]
[ext_resource path="res://src/Platforms/FlyingLaserCutter.gd" type="Script" id=2]
@ -25,6 +25,9 @@ extents = Vector2( 11.4921, 11.9129 )
[sub_resource type="RectangleShape2D" id=4]
extents = Vector2( 3.067, 10 )
[sub_resource type="RectangleShape2D" id=5]
extents = Vector2( 0.5, 11 )
[node name="FlyingLaserCutter" type="Node2D"]
script = ExtResource( 2 )
@ -32,6 +35,7 @@ script = ExtResource( 2 )
collision_layer = 32
collision_mask = 57
collision/safe_margin = 0.001
motion/sync_to_physics = true
[node name="Sprite" type="Sprite" parent="FlyingLaserCutterBody"]
texture = ExtResource( 1 )
@ -51,14 +55,25 @@ shape = SubResource( 3 )
[node name="LaserArea" type="Area2D" parent="FlyingLaserCutterBody" groups=["harmful"]]
process_priority = -1
position = Vector2( 10, 0 )
collision_layer = 32
collision_mask = 3
[node name="PainZone" type="CollisionShape2D" parent="FlyingLaserCutterBody/LaserArea" groups=["harmful"]]
process_priority = -1
position = Vector2( 9.647, 0 )
position = Vector2( -9.53674e-07, 0 )
shape = SubResource( 4 )
[node name="BackArea" type="Area2D" parent="FlyingLaserCutterBody"]
position = Vector2( -11.5, 0 )
collision_layer = 16
collision_mask = 3
monitorable = false
[node name="CollisionShape2D" type="CollisionShape2D" parent="FlyingLaserCutterBody/BackArea"]
position = Vector2( -1, 0 )
shape = SubResource( 5 )
[node name="Triggers" type="Node2D" parent="FlyingLaserCutterBody"]
visible = false
position = Vector2( 0, 0.0077219 )
@ -78,3 +93,6 @@ scale = Vector2( 1, 1000 )
enabled = true
cast_to = Vector2( 0, 1 )
collision_mask = 9
[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"]

View File

@ -41,12 +41,12 @@ resource_name = "LowPassFilter"
cutoff_hz = 3000.0
[resource]
bus/0/volume_db = inf_neg
bus/0/volume_db = -6.0206
bus/1/name = "Music"
bus/1/solo = false
bus/1/mute = false
bus/1/bypass_fx = false
bus/1/volume_db = 0.0
bus/1/volume_db = -6.0206
bus/1/send = "Master"
bus/1/effect/0/effect = SubResource( 1 )
bus/1/effect/0/enabled = false

View File

@ -2,5 +2,5 @@ extends MeshInstance
func _process(delta):
if(get_parent().visible):
rotate_y(PI / 4.0 * delta)
if(get_parent().visible):
rotate_y(PI / 4.0 * delta)