diff --git a/project.godot b/project.godot index 77b8786..baf3966 100644 --- a/project.godot +++ b/project.godot @@ -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] diff --git a/src/Fire.gd b/src/Fire.gd new file mode 100644 index 0000000..ce4e67e --- /dev/null +++ b/src/Fire.gd @@ -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)) diff --git a/src/Fire.tscn b/src/Fire.tscn index 86262a9..b064e4c 100644 --- a/src/Fire.tscn +++ b/src/Fire.tscn @@ -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 ) diff --git a/src/Game.tscn b/src/Game.tscn index bef61aa..c33552f 100644 --- a/src/Game.tscn +++ b/src/Game.tscn @@ -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 )