mirror of
https://github.com/RYGhub/the-cold-night.git
synced 2024-11-21 20:24:20 +00:00
✨ Add fire scripting
This commit is contained in:
parent
6b2cb18319
commit
c1adb9adb8
4 changed files with 67 additions and 4 deletions
|
@ -8,16 +8,26 @@
|
|||
|
||||
config_version=4
|
||||
|
||||
_global_script_classes=[ {
|
||||
"base": "Sprite",
|
||||
"class": "Fire",
|
||||
"language": "GDScript",
|
||||
"path": "res://src/Fire.gd"
|
||||
} ]
|
||||
_global_script_class_icons={
|
||||
"Fire": ""
|
||||
}
|
||||
|
||||
[application]
|
||||
|
||||
config/name="LD50"
|
||||
run/main_scene="res://src/MainMenu.tscn"
|
||||
config/icon="res://src/icon.png"
|
||||
run/main_scene="res://src/Game.tscn"
|
||||
|
||||
[display]
|
||||
|
||||
window/size/width=1280
|
||||
window/size/height=720
|
||||
window/size/resizable=false
|
||||
|
||||
[physics]
|
||||
|
||||
|
|
42
src/Fire.gd
Normal file
42
src/Fire.gd
Normal file
|
@ -0,0 +1,42 @@
|
|||
extends Sprite
|
||||
|
||||
|
||||
export var intensity: float = 0.5 setget set_intensity
|
||||
export var change_per_second: float = - 1.0 / 60.0
|
||||
export var min_intensity: float = 0
|
||||
export var max_intensity: float = INF
|
||||
|
||||
signal intensity_at_max
|
||||
signal intensity_at_min
|
||||
var intensity_reached_max_triggered: bool = false
|
||||
var intensity_reached_min_triggered: bool = false
|
||||
signal intensity_reached_min
|
||||
signal intensity_reached_max
|
||||
|
||||
|
||||
func set_intensity(value):
|
||||
intensity = clamp(value, min_intensity, max_intensity)
|
||||
print(intensity)
|
||||
# Update everything that needs to be updated when the intensity changes
|
||||
$Light.texture_scale = value
|
||||
# Trigger signals
|
||||
# max intensity signal
|
||||
if intensity == max_intensity:
|
||||
emit_signal("intensity_at_max")
|
||||
if not intensity_reached_max_triggered:
|
||||
emit_signal("intensity_reached_max")
|
||||
intensity_reached_max_triggered = true
|
||||
else:
|
||||
intensity_reached_max_triggered = false
|
||||
# min intensity signal
|
||||
if intensity == min_intensity:
|
||||
emit_signal("intensity_at_min")
|
||||
if not intensity_reached_min_triggered:
|
||||
emit_signal("intensity_reached_min")
|
||||
intensity_reached_min_triggered = true
|
||||
else:
|
||||
intensity_reached_min_triggered = false
|
||||
|
||||
|
||||
func _process(delta):
|
||||
set_intensity(intensity + (delta * change_per_second))
|
|
@ -1,13 +1,15 @@
|
|||
[gd_scene load_steps=4 format=2]
|
||||
[gd_scene load_steps=5 format=2]
|
||||
|
||||
[ext_resource path="res://src/Light.png" type="Texture" id=1]
|
||||
[ext_resource path="res://src/White.png" type="Texture" id=2]
|
||||
[ext_resource path="res://src/Fire.gd" type="Script" id=3]
|
||||
|
||||
[sub_resource type="RectangleShape2D" id=1]
|
||||
extents = Vector2( 16, 16 )
|
||||
|
||||
[node name="Fire" type="Sprite"]
|
||||
texture = ExtResource( 2 )
|
||||
script = ExtResource( 3 )
|
||||
|
||||
[node name="Light" type="Light2D" parent="."]
|
||||
texture = ExtResource( 1 )
|
||||
|
|
|
@ -13,4 +13,13 @@ tile_data = PoolIntArray( 0, 2, 0, 1, 2, 0, 2, 2, 0, 3, 2, 0, 4, 2, 0, 5, 2, 0,
|
|||
position = Vector2( 553, 296 )
|
||||
|
||||
[node name="Fire" parent="." instance=ExtResource( 3 )]
|
||||
position = Vector2( 594, 305 )
|
||||
position = Vector2( 597, 323 )
|
||||
|
||||
[node name="Fire2" parent="." instance=ExtResource( 3 )]
|
||||
position = Vector2( 251, 458 )
|
||||
|
||||
[node name="Fire3" parent="." instance=ExtResource( 3 )]
|
||||
position = Vector2( 622, 549 )
|
||||
|
||||
[node name="Fire4" parent="." instance=ExtResource( 3 )]
|
||||
position = Vector2( 325, 147 )
|
||||
|
|
Loading…
Reference in a new issue