1
Fork 0
mirror of https://github.com/RYGhub/the-cold-night.git synced 2024-11-25 14:14:19 +00:00

Allow arrows to catch on fire

This commit is contained in:
Steffo 2022-04-03 22:58:02 +02:00
parent 3cd2ac2a39
commit 4e24e3465e
Signed by: steffo
GPG key ID: 6965406171929D01
7 changed files with 93 additions and 9 deletions

View file

@ -14,6 +14,11 @@ _global_script_classes=[ {
"language": "GDScript", "language": "GDScript",
"path": "res://src/behaviours/damage/Alliance.gd" "path": "res://src/behaviours/damage/Alliance.gd"
}, { }, {
"base": "KinematicBody2D",
"class": "ArrowAlternative",
"language": "GDScript",
"path": "res://src/entities/bullets/ArrowAlternative.gd"
}, {
"base": "Node", "base": "Node",
"class": "AttractedToMovement", "class": "AttractedToMovement",
"language": "GDScript", "language": "GDScript",
@ -44,6 +49,11 @@ _global_script_classes=[ {
"language": "GDScript", "language": "GDScript",
"path": "res://FireExtinguisherEnemy.gd" "path": "res://FireExtinguisherEnemy.gd"
}, { }, {
"base": "Node",
"class": "Flammable",
"language": "GDScript",
"path": "res://src/behaviours/damage/Flammable.gd"
}, {
"base": "AnimatedSprite", "base": "AnimatedSprite",
"class": "FourSidedSprite", "class": "FourSidedSprite",
"language": "GDScript", "language": "GDScript",
@ -91,12 +101,14 @@ _global_script_classes=[ {
} ] } ]
_global_script_class_icons={ _global_script_class_icons={
"Alliance": "", "Alliance": "",
"ArrowAlternative": "",
"AttractedToMovement": "", "AttractedToMovement": "",
"BulletMovement": "", "BulletMovement": "",
"Damaging": "", "Damaging": "",
"DropLoot": "", "DropLoot": "",
"ErraticMovement": "", "ErraticMovement": "",
"FireExtinguisherEnemy": "", "FireExtinguisherEnemy": "",
"Flammable": "",
"FourSidedSprite": "", "FourSidedSprite": "",
"Ownership": "", "Ownership": "",
"PlayerMovement": "", "PlayerMovement": "",

View file

@ -0,0 +1,19 @@
extends Node
class_name Flammable
signal caught_fire
signal extinguished_fire
var on_fire = false
func catch_fire():
if not on_fire:
emit_signal("caught_fire")
func extinguish_fire():
if on_fire:
emit_signal("extinguished_fire")

View file

@ -0,0 +1,6 @@
[gd_scene load_steps=2 format=2]
[ext_resource path="res://src/behaviours/damage/Flammable.gd" type="Script" id=1]
[node name="Flammable" type="Node"]
script = ExtResource( 1 )

View file

@ -0,0 +1,19 @@
extends KinematicBody2D
class_name ArrowAlternative
export var dim_texture: Texture = preload("res://src/entities/bullets/ArrowAlternative.png")
export var dim_damage: int = 1
export var lit_texture: Texture = preload("res://src/entities/bullets/ArrowAlternativeOnFire.png")
export var lit_damage: int = 5
func _on_Flammable_caught_fire():
$Shape/Sprite.texture = lit_texture
$Damaging.damage = lit_damage
func _on_Flammable_extinguished_fire():
$Shape/Sprite.texture = dim_texture
$Damaging.damage = dim_damage

View file

@ -1,12 +1,15 @@
[gd_scene load_steps=4 format=2] [gd_scene load_steps=6 format=2]
[ext_resource path="res://src/entities/bullets/AbstractBullet.tscn" type="PackedScene" id=1] [ext_resource path="res://src/entities/bullets/AbstractBullet.tscn" type="PackedScene" id=1]
[ext_resource path="res://src/entities/bullets/ArrowAlternative.png" type="Texture" id=2] [ext_resource path="res://src/entities/bullets/ArrowAlternative.png" type="Texture" id=2]
[ext_resource path="res://src/entities/bullets/ArrowAlternative.gd" type="Script" id=3]
[ext_resource path="res://src/behaviours/damage/Flammable.tscn" type="PackedScene" id=4]
[sub_resource type="RectangleShape2D" id=1] [sub_resource type="RectangleShape2D" id=1]
extents = Vector2( 6, 1.5 ) extents = Vector2( 6, 1.5 )
[node name="ArrowAlternative" instance=ExtResource( 1 )] [node name="ArrowAlternative" instance=ExtResource( 1 )]
script = ExtResource( 3 )
[node name="Shape" type="CollisionShape2D" parent="." index="0"] [node name="Shape" type="CollisionShape2D" parent="." index="0"]
shape = SubResource( 1 ) shape = SubResource( 1 )
@ -16,3 +19,8 @@ texture = ExtResource( 2 )
[node name="BulletMovement" parent="." index="1"] [node name="BulletMovement" parent="." index="1"]
movement_per_second = 400.0 movement_per_second = 400.0
[node name="Flammable" parent="." index="4" instance=ExtResource( 4 )]
[connection signal="caught_fire" from="Flammable" to="." method="_on_Flammable_caught_fire"]
[connection signal="extinguished_fire" from="Flammable" to="." method="_on_Flammable_extinguished_fire"]

View file

@ -18,7 +18,7 @@ signal intensity_reached_max
func set_intensity(value): func set_intensity(value):
intensity = clamp(value, min_intensity, max_intensity) intensity = clamp(value, min_intensity, max_intensity)
# Update everything that needs to be updated when the intensity changes # Update everything that needs to be updated when the intensity changes
$Light.scale = Vector2(value, value) $Flame.scale = Vector2(value, value)
# Trigger signals # Trigger signals
emit_signal("intensity_changed", intensity) emit_signal("intensity_changed", intensity)
# max intensity signal # max intensity signal
@ -41,3 +41,9 @@ func set_intensity(value):
func _process(delta): func _process(delta):
set_intensity(intensity + (delta * change_per_second)) set_intensity(intensity + (delta * change_per_second))
func _on_Flame_body_entered(body: PhysicsBody2D):
var flammable = body.get_node("Flammable")
if flammable != null:
flammable.catch_fire()

View file

@ -1,4 +1,4 @@
[gd_scene load_steps=7 format=2] [gd_scene load_steps=8 format=2]
[ext_resource path="res://src/mechanics/Light.png" type="Texture" id=1] [ext_resource path="res://src/mechanics/Light.png" type="Texture" id=1]
[ext_resource path="res://src/entities/fire/FirePit.png" type="Texture" id=2] [ext_resource path="res://src/entities/fire/FirePit.png" type="Texture" id=2]
@ -9,27 +9,41 @@
radius = 20.0 radius = 20.0
height = 10.0 height = 10.0
[sub_resource type="CapsuleShape2D" id=3]
radius = 14.0
[sub_resource type="CanvasItemMaterial" id=2] [sub_resource type="CanvasItemMaterial" id=2]
blend_mode = 1 blend_mode = 1
[node name="Fire" type="StaticBody2D"] [node name="Fire" type="Node2D"]
script = ExtResource( 3 ) script = ExtResource( 3 )
[node name="Shape" type="CollisionShape2D" parent="."] [node name="Firepit" type="StaticBody2D" parent="."]
[node name="Shape" type="CollisionShape2D" parent="Firepit"]
rotation = 1.5708 rotation = 1.5708
shape = SubResource( 1 ) shape = SubResource( 1 )
[node name="Sprite" type="Sprite" parent="Shape"] [node name="Sprite" type="Sprite" parent="Firepit/Shape"]
rotation = -1.5708 rotation = -1.5708
texture = ExtResource( 2 ) texture = ExtResource( 2 )
[node name="Light" type="Light2D" parent="."] [node name="Flame" type="Area2D" parent="."]
collision_layer = 4
collision_mask = 4
[node name="Light" type="Light2D" parent="Flame"]
texture = ExtResource( 1 ) texture = ExtResource( 1 )
texture_scale = 0.5 texture_scale = 0.5
color = Color( 1, 0.607843, 0, 1 ) color = Color( 1, 0.607843, 0, 1 )
[node name="FlameSprite" type="Sprite" parent="Light"] [node name="Shape" type="CollisionShape2D" parent="Flame"]
position = Vector2( 0, -20 )
shape = SubResource( 3 )
[node name="FlameSprite" type="Sprite" parent="Flame/Shape"]
material = SubResource( 2 ) material = SubResource( 2 )
z_index = 1 z_index = 1
texture = ExtResource( 4 ) texture = ExtResource( 4 )
offset = Vector2( 0, -20 )
[connection signal="body_entered" from="Flame" to="." method="_on_Flame_body_entered"]