init
This commit is contained in:
commit
18efc36800
161 changed files with 5008 additions and 0 deletions
51
scripts/effects/engines.gd
Normal file
51
scripts/effects/engines.gd
Normal file
|
@ -0,0 +1,51 @@
|
|||
extends Node
|
||||
|
||||
@onready var leftEngine: Sprite2D = $MotorIzquierdo
|
||||
@onready var rightEngine: Sprite2D = $MotorDerecho
|
||||
|
||||
var leftPowerLevel: float
|
||||
var currentLeftPowerLevel: float
|
||||
var rightPowerLevel: float
|
||||
var currentRightPowerLevel: float
|
||||
|
||||
@export var leftPowerSprites: Array[Texture2D]
|
||||
@export var rightPowerSprites: Array[Texture2D]
|
||||
|
||||
@export_range(0, 2) var transitionDelta: float
|
||||
|
||||
|
||||
func _transition(curr: float, goal: float, delta: float) -> float:
|
||||
return curr + (goal - curr) * transitionDelta * delta
|
||||
|
||||
|
||||
# Called every frame. 'delta' is the elapsed time since the previous frame.
|
||||
func _process(delta):
|
||||
currentLeftPowerLevel = _transition(currentLeftPowerLevel, leftPowerLevel, delta)
|
||||
currentRightPowerLevel = _transition(currentRightPowerLevel, rightPowerLevel, delta)
|
||||
|
||||
if not leftPowerSprites.is_empty():
|
||||
var index = roundf(currentLeftPowerLevel * leftPowerSprites.size())
|
||||
index = clamp(index, 0, leftPowerSprites.size() - 1)
|
||||
leftEngine.texture = leftPowerSprites[index]
|
||||
if not rightPowerSprites.is_empty():
|
||||
var index = roundf(currentRightPowerLevel * rightPowerSprites.size())
|
||||
index = clamp(index, 0, rightPowerSprites.size() - 1)
|
||||
rightEngine.texture = rightPowerSprites[index]
|
||||
|
||||
|
||||
func _change_left_power_level(level: float):
|
||||
leftPowerLevel = level
|
||||
|
||||
|
||||
func _change_right_power_level(level: float):
|
||||
rightPowerLevel = level
|
||||
|
||||
|
||||
func _on_left_engine_off():
|
||||
_change_left_power_level(0)
|
||||
func _on_left_engine_on():
|
||||
_change_left_power_level(1)
|
||||
func _on_right_engine_off():
|
||||
_change_right_power_level(0)
|
||||
func _on_right_engine_on():
|
||||
_change_right_power_level(1)
|
41
scripts/effects/light_face.gd
Normal file
41
scripts/effects/light_face.gd
Normal file
|
@ -0,0 +1,41 @@
|
|||
extends Node2D
|
||||
|
||||
@onready var on: Sprite2D = $CaraFeliz
|
||||
@onready var powerless: Sprite2D = $CaraTieso
|
||||
@onready var off: Sprite2D = $CaraPanico
|
||||
|
||||
|
||||
@export var game_manager: GameManager
|
||||
var lights_out: bool
|
||||
|
||||
|
||||
# Called every frame. 'delta' is the elapsed time since the previous frame.
|
||||
func _process(delta):
|
||||
if abs(game_manager.spinner_speed) > 0:
|
||||
_on_face()
|
||||
lights_out = false
|
||||
elif not lights_out:
|
||||
_powerless_face()
|
||||
|
||||
|
||||
func _on_lights_out():
|
||||
lights_out = true
|
||||
_off_face()
|
||||
|
||||
|
||||
func _on_face():
|
||||
on.visible = true
|
||||
powerless.visible = false
|
||||
off.visible = false
|
||||
|
||||
|
||||
func _off_face():
|
||||
on.visible = false
|
||||
powerless.visible = false
|
||||
off.visible = true
|
||||
|
||||
|
||||
func _powerless_face():
|
||||
on.visible = false
|
||||
powerless.visible = true
|
||||
off.visible = false
|
21
scripts/effects/lights.gd
Normal file
21
scripts/effects/lights.gd
Normal file
|
@ -0,0 +1,21 @@
|
|||
extends Node2D
|
||||
|
||||
@export var light1: Sprite2D
|
||||
@export var light2: Sprite2D
|
||||
@export var light3: Sprite2D
|
||||
@export var light4: Sprite2D
|
||||
|
||||
|
||||
# Called when the node enters the scene tree for the first time.
|
||||
func _ready():
|
||||
light1.visible = false
|
||||
light2.visible = false
|
||||
light3.visible = false
|
||||
light4.visible = false
|
||||
|
||||
|
||||
func _process(_delta):
|
||||
light1.visible = Input.is_action_pressed("BTN_1")
|
||||
light2.visible = Input.is_action_pressed("BTN_2")
|
||||
light3.visible = Input.is_action_pressed("BTN_3")
|
||||
light4.visible = Input.is_action_pressed("BTN_4")
|
44
scripts/effects/shadow.gd
Normal file
44
scripts/effects/shadow.gd
Normal file
|
@ -0,0 +1,44 @@
|
|||
extends Sprite2D
|
||||
|
||||
@export var powerOnCurve: Curve
|
||||
@export var shutDownCurve: Curve
|
||||
var time: float
|
||||
@export var duration: float
|
||||
|
||||
@export var bubbleMask: Sprite2D
|
||||
|
||||
var curve: Curve
|
||||
var animating: bool = false
|
||||
|
||||
|
||||
# Called every frame. 'delta' is the elapsed time since the previous frame.
|
||||
func _process(delta):
|
||||
if (not animating):
|
||||
return
|
||||
|
||||
time += delta
|
||||
var alpha = curve.sample(clamp(time / duration, 0, 1))
|
||||
modulate = Color(Color.WHITE, alpha)
|
||||
bubbleMask.modulate = Color(Color.WHITE, alpha)
|
||||
if (time >= duration):
|
||||
animating = false
|
||||
|
||||
|
||||
func shut_down():
|
||||
time = 0
|
||||
curve = shutDownCurve
|
||||
animating = true
|
||||
|
||||
|
||||
func power_on():
|
||||
time = 0
|
||||
curve = powerOnCurve
|
||||
animating = true
|
||||
|
||||
|
||||
func _on_lights_out():
|
||||
shut_down()
|
||||
|
||||
|
||||
func _on_lights_in():
|
||||
power_on()
|
26
scripts/effects/shake.gd
Normal file
26
scripts/effects/shake.gd
Normal file
|
@ -0,0 +1,26 @@
|
|||
extends Camera2D
|
||||
|
||||
@export var randomStrength: float = 30.0
|
||||
@export var randomRotationStrength: float = 5.0
|
||||
@export var shakeFade: float = 5.0
|
||||
|
||||
@export var intensity: float = 0.0
|
||||
|
||||
var rng = RandomNumberGenerator.new()
|
||||
var shake_strength: float = 0.0
|
||||
|
||||
var initialPos: Vector2
|
||||
|
||||
|
||||
func _ready():
|
||||
initialPos = offset
|
||||
|
||||
func _process(delta):
|
||||
offset = initialPos + randomOffset() * intensity
|
||||
rotation = randomRotation() * intensity
|
||||
|
||||
func randomOffset() -> Vector2:
|
||||
return Vector2(rng.randf_range(-randomStrength, randomStrength), rng.randf_range(-randomStrength, randomStrength))
|
||||
|
||||
func randomRotation() -> float:
|
||||
return deg_to_rad(randf_range(-randomRotationStrength, randomRotationStrength))
|
14
scripts/effects/smoke.gd
Normal file
14
scripts/effects/smoke.gd
Normal file
|
@ -0,0 +1,14 @@
|
|||
extends Node2D
|
||||
|
||||
@export var positions: Array[Node2D]
|
||||
|
||||
|
||||
func spawn():
|
||||
var pos: Node2D = positions.pick_random()
|
||||
if not pos:
|
||||
return
|
||||
positions.erase(pos)
|
||||
var scene = load("res://scenes/smoke_particles.tscn")
|
||||
var scene_instance = scene.instantiate()
|
||||
add_child(scene_instance)
|
||||
scene_instance.global_position = pos.global_position
|
39
scripts/effects/speaker.gd
Normal file
39
scripts/effects/speaker.gd
Normal file
|
@ -0,0 +1,39 @@
|
|||
extends Node2D
|
||||
|
||||
@export var sound_sources: Array[AudioStream]
|
||||
|
||||
@export var enabled_speaker: Sprite2D
|
||||
@export var disabled_speaker: Sprite2D
|
||||
|
||||
|
||||
func _ready():
|
||||
_disable_speaker()
|
||||
|
||||
|
||||
# Called every frame. 'delta' is the elapsed time since the previous frame.
|
||||
func _process(delta):
|
||||
if (Input.is_action_just_pressed("BTN_5")):
|
||||
_play_random_sound()
|
||||
|
||||
|
||||
func _play_random_sound():
|
||||
var stream = sound_sources.pick_random()
|
||||
var length = stream.get_length()
|
||||
SoundManager.play_sound(stream)
|
||||
|
||||
_enable_speaker()
|
||||
if ($Timer.time_left < length):
|
||||
$Timer.start(length)
|
||||
|
||||
func _enable_speaker():
|
||||
enabled_speaker.visible = true
|
||||
disabled_speaker.visible = false
|
||||
|
||||
|
||||
func _disable_speaker():
|
||||
enabled_speaker.visible = false
|
||||
disabled_speaker.visible = true
|
||||
|
||||
|
||||
func _on_timer_timeout():
|
||||
_disable_speaker()
|
15
scripts/effects/vignette.gd
Normal file
15
scripts/effects/vignette.gd
Normal file
|
@ -0,0 +1,15 @@
|
|||
extends ColorRect
|
||||
|
||||
@export var intensity: float
|
||||
|
||||
|
||||
# Called when the node enters the scene tree for the first time.
|
||||
func _ready():
|
||||
var tween = get_tree().create_tween()
|
||||
tween.tween_method(_set_vignette, 0.0, 1.5, 0.5).set_trans(Tween.TRANS_LINEAR)
|
||||
tween.tween_method(_set_vignette, 1.5, 0.0, 0.5).set_trans(Tween.TRANS_LINEAR).set_delay(0.5)
|
||||
tween.set_loops()
|
||||
|
||||
func _set_vignette(value: float):
|
||||
var mat: ShaderMaterial = material
|
||||
mat.set_shader_parameter("vignette_strength", value * intensity)
|
Loading…
Add table
Add a link
Reference in a new issue