diff --git a/Assets/Animations/player_hurt.res b/Assets/Animations/player_hurt.res index e77a06f..8501f29 100644 Binary files a/Assets/Animations/player_hurt.res and b/Assets/Animations/player_hurt.res differ diff --git a/Assets/Fonts/calamity/calamity.ttf b/Assets/Fonts/calamity/calamity.ttf new file mode 100644 index 0000000..fd4d859 Binary files /dev/null and b/Assets/Fonts/calamity/calamity.ttf differ diff --git a/Assets/Fonts/calamity/calamity.ttf.import b/Assets/Fonts/calamity/calamity.ttf.import new file mode 100644 index 0000000..7829e0a --- /dev/null +++ b/Assets/Fonts/calamity/calamity.ttf.import @@ -0,0 +1,38 @@ +[remap] + +importer="font_data_dynamic" +type="FontFile" +uid="uid://6bvgjbmqovau" +path="res://.godot/imported/calamity.ttf-a5cf9ddf9de733f9de8155c59043bcbb.fontdata" + +[deps] + +source_file="res://Assets/Fonts/calamity/calamity.ttf" +dest_files=["res://.godot/imported/calamity.ttf-a5cf9ddf9de733f9de8155c59043bcbb.fontdata"] + +[params] + +Rendering=null +antialiasing=1 +generate_mipmaps=false +multichannel_signed_distance_field=false +msdf_pixel_range=8 +msdf_size=48 +allow_system_fallback=true +force_autohinter=false +hinting=1 +subpixel_positioning=0 +oversampling=0.0 +Fallbacks=null +fallbacks=[] +Compress=null +compress=true +preload=[{ +"chars": [], +"glyphs": [], +"name": "New Configuration", +"size": Vector2i(16, 0) +}] +language_support={} +script_support={} +opentype_features={} diff --git a/Assets/Fonts/calamity/license.txt b/Assets/Fonts/calamity/license.txt new file mode 100644 index 0000000..55c0b4e --- /dev/null +++ b/Assets/Fonts/calamity/license.txt @@ -0,0 +1,4 @@ +The FontStruction “calamity,” +(https://fontstruct.com/fontstructions/show/2158964) by “Doph” is licensed +under a Creative Commons Attribution license +(http://creativecommons.org/licenses/by/3.0/). diff --git a/Assets/Fonts/calamity/readme.txt b/Assets/Fonts/calamity/readme.txt new file mode 100644 index 0000000..d9075e2 --- /dev/null +++ b/Assets/Fonts/calamity/readme.txt @@ -0,0 +1,16 @@ +The font file in this archive was created using Fontstruct the free, online +font-building tool. +This font was created by “Doph”. +This font has a homepage where this archive and other versions may be found: +https://fontstruct.com/fontstructions/show/2158964 + +Try Fontstruct at https://fontstruct.com +It’s easy and it’s fun. + +Fontstruct is copyright ©2022-2023 Rob Meek + +LEGAL NOTICE: +In using this font you must comply with the licensing terms described in the +file “license.txt” included with this archive. +If you redistribute the font file in this archive, it must be accompanied by all +the other files from this archive, including this one. diff --git a/Assets/Sounds/switch-off.wav b/Assets/Sounds/switch-off.wav new file mode 100644 index 0000000..a2001d0 Binary files /dev/null and b/Assets/Sounds/switch-off.wav differ diff --git a/Assets/Sounds/switch-off.wav.import b/Assets/Sounds/switch-off.wav.import new file mode 100644 index 0000000..d31d086 --- /dev/null +++ b/Assets/Sounds/switch-off.wav.import @@ -0,0 +1,24 @@ +[remap] + +importer="wav" +type="AudioStreamWAV" +uid="uid://dryqvdw6cffvf" +path="res://.godot/imported/switch-off.wav-0024f6c2bcc11e1a011aeb566d001d1f.sample" + +[deps] + +source_file="res://Assets/Sounds/switch-off.wav" +dest_files=["res://.godot/imported/switch-off.wav-0024f6c2bcc11e1a011aeb566d001d1f.sample"] + +[params] + +force/8_bit=false +force/mono=false +force/max_rate=false +force/max_rate_hz=44100 +edit/trim=false +edit/normalize=false +edit/loop_mode=0 +edit/loop_begin=0 +edit/loop_end=-1 +compress/mode=0 diff --git a/Assets/Sounds/switch-on.wav b/Assets/Sounds/switch-on.wav new file mode 100644 index 0000000..25a3074 Binary files /dev/null and b/Assets/Sounds/switch-on.wav differ diff --git a/Assets/Sounds/switch-on.wav.import b/Assets/Sounds/switch-on.wav.import new file mode 100644 index 0000000..e8325a9 --- /dev/null +++ b/Assets/Sounds/switch-on.wav.import @@ -0,0 +1,24 @@ +[remap] + +importer="wav" +type="AudioStreamWAV" +uid="uid://djs15wmc7c77f" +path="res://.godot/imported/switch-on.wav-15db37d94b60bcbb1f01bd22cc4f0da4.sample" + +[deps] + +source_file="res://Assets/Sounds/switch-on.wav" +dest_files=["res://.godot/imported/switch-on.wav-15db37d94b60bcbb1f01bd22cc4f0da4.sample"] + +[params] + +force/8_bit=false +force/mono=false +force/max_rate=false +force/max_rate_hz=44100 +edit/trim=false +edit/normalize=false +edit/loop_mode=0 +edit/loop_begin=0 +edit/loop_end=-1 +compress/mode=0 diff --git a/Assets/Sounds/ui-tick.wav b/Assets/Sounds/ui-tick.wav new file mode 100644 index 0000000..94501ef Binary files /dev/null and b/Assets/Sounds/ui-tick.wav differ diff --git a/Assets/Sounds/ui-tick.wav.import b/Assets/Sounds/ui-tick.wav.import new file mode 100644 index 0000000..6d958f1 --- /dev/null +++ b/Assets/Sounds/ui-tick.wav.import @@ -0,0 +1,24 @@ +[remap] + +importer="wav" +type="AudioStreamWAV" +uid="uid://b1p5eylqc2bsy" +path="res://.godot/imported/ui-tick.wav-d0cf7e35255cfa69e990d4acd2ae6b0b.sample" + +[deps] + +source_file="res://Assets/Sounds/ui-tick.wav" +dest_files=["res://.godot/imported/ui-tick.wav-d0cf7e35255cfa69e990d4acd2ae6b0b.sample"] + +[params] + +force/8_bit=false +force/mono=false +force/max_rate=false +force/max_rate_hz=44100 +edit/trim=false +edit/normalize=false +edit/loop_mode=0 +edit/loop_begin=0 +edit/loop_end=-1 +compress/mode=0 diff --git a/Assets/Sprites/Characters/doc-cultist.ase b/Assets/Sprites/Characters/doc-cultist.ase index f104c40..927f4bd 100644 Binary files a/Assets/Sprites/Characters/doc-cultist.ase and b/Assets/Sprites/Characters/doc-cultist.ase differ diff --git a/Assets/Sprites/Characters/doc-cultist.png b/Assets/Sprites/Characters/doc-cultist.png new file mode 100644 index 0000000..c23a46c Binary files /dev/null and b/Assets/Sprites/Characters/doc-cultist.png differ diff --git a/Assets/Sprites/Characters/doc-cultist.png.import b/Assets/Sprites/Characters/doc-cultist.png.import new file mode 100644 index 0000000..fe907cc --- /dev/null +++ b/Assets/Sprites/Characters/doc-cultist.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cynlarq6mmvmd" +path="res://.godot/imported/doc-cultist.png-26cf20be254e797e5619dcf399e1e92a.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Assets/Sprites/Characters/doc-cultist.png" +dest_files=["res://.godot/imported/doc-cultist.png-26cf20be254e797e5619dcf399e1e92a.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/Assets/Sprites/Particles/NPCDeathParticles.tres b/Assets/Sprites/Particles/NPCDeathParticles.tres new file mode 100644 index 0000000..9483311 --- /dev/null +++ b/Assets/Sprites/Particles/NPCDeathParticles.tres @@ -0,0 +1,43 @@ +[gd_resource type="ParticleProcessMaterial" load_steps=7 format=3 uid="uid://2tsvsp45elru"] + +[sub_resource type="Gradient" id="Gradient_6k7fi"] +offsets = PackedFloat32Array(0.103704, 0.488889, 0.592593, 1) +colors = PackedColorArray(0.501961, 0.345098, 0.631373, 1, 0.501961, 0.345098, 0.631373, 1, 1, 1, 1, 1, 1, 1, 1, 1) + +[sub_resource type="GradientTexture1D" id="GradientTexture1D_1phkb"] +gradient = SubResource("Gradient_6k7fi") + +[sub_resource type="Gradient" id="Gradient_3tax5"] +offsets = PackedFloat32Array(0, 0.533333, 1) +colors = PackedColorArray(1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0) + +[sub_resource type="GradientTexture1D" id="GradientTexture1D_13jjx"] +gradient = SubResource("Gradient_3tax5") + +[sub_resource type="Curve" id="Curve_0565g"] +_data = [Vector2(0, 0.5), 0.0, 5.0, 0, 1, Vector2(0.1, 1), 0.0, 0.0, 0, 0, Vector2(1, 0), -1.11111, 0.0, 1, 0] +point_count = 3 + +[sub_resource type="CurveTexture" id="CurveTexture_k4txv"] +curve = SubResource("Curve_0565g") + +[resource] +emission_shape = 2 +emission_sphere_radius = 8.0 +particle_flag_disable_z = true +direction = Vector3(0, -1, 0) +spread = 90.0 +gravity = Vector3(0, 0, 0) +initial_velocity_min = 128.0 +initial_velocity_max = 256.0 +orbit_velocity_min = 0.0 +orbit_velocity_max = 0.0 +tangential_accel_min = -16.0 +tangential_accel_max = 16.0 +scale_min = 0.25 +scale_max = 0.25 +scale_curve = SubResource("CurveTexture_k4txv") +color_ramp = SubResource("GradientTexture1D_13jjx") +color_initial_ramp = SubResource("GradientTexture1D_1phkb") +turbulence_enabled = true +turbulence_noise_scale = 4.0 diff --git a/Assets/Sprites/Particles/NoiseLarge.tres b/Assets/Sprites/Particles/NoiseLarge.tres new file mode 100644 index 0000000..e767961 --- /dev/null +++ b/Assets/Sprites/Particles/NoiseLarge.tres @@ -0,0 +1,10 @@ +[gd_resource type="NoiseTexture2D" load_steps=2 format=3 uid="uid://dejwdw7or8c"] + +[sub_resource type="FastNoiseLite" id="FastNoiseLite_udpsv"] +frequency = 0.1 + +[resource] +width = 256 +height = 256 +seamless = true +noise = SubResource("FastNoiseLite_udpsv") diff --git a/Assets/Sprites/Particles/NoiseSmall.tres b/Assets/Sprites/Particles/NoiseSmall.tres new file mode 100644 index 0000000..274c393 --- /dev/null +++ b/Assets/Sprites/Particles/NoiseSmall.tres @@ -0,0 +1,9 @@ +[gd_resource type="NoiseTexture2D" load_steps=2 format=3 uid="uid://dngclnqt7pe3k"] + +[sub_resource type="FastNoiseLite" id="FastNoiseLite_24q81"] + +[resource] +width = 256 +height = 256 +seamless = true +noise = SubResource("FastNoiseLite_24q81") diff --git a/Assets/Sprites/Props/arena-gate.ase b/Assets/Sprites/Props/arena-gate.ase new file mode 100644 index 0000000..1e01756 Binary files /dev/null and b/Assets/Sprites/Props/arena-gate.ase differ diff --git a/Assets/Sprites/Props/arena-gate.png b/Assets/Sprites/Props/arena-gate.png new file mode 100644 index 0000000..dd776d2 Binary files /dev/null and b/Assets/Sprites/Props/arena-gate.png differ diff --git a/Assets/Sprites/Props/arena-gate.png.import b/Assets/Sprites/Props/arena-gate.png.import new file mode 100644 index 0000000..59c1409 --- /dev/null +++ b/Assets/Sprites/Props/arena-gate.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://crddevohy65we" +path="res://.godot/imported/arena-gate.png-ca0820a90b0e6a5968263b742bb1862a.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Assets/Sprites/Props/arena-gate.png" +dest_files=["res://.godot/imported/arena-gate.png-ca0820a90b0e6a5968263b742bb1862a.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/Assets/Sprites/Props/switch.ase b/Assets/Sprites/Props/switch.ase new file mode 100644 index 0000000..bc7bd33 Binary files /dev/null and b/Assets/Sprites/Props/switch.ase differ diff --git a/Assets/Sprites/Props/switch.png b/Assets/Sprites/Props/switch.png new file mode 100644 index 0000000..a843983 Binary files /dev/null and b/Assets/Sprites/Props/switch.png differ diff --git a/Assets/Sprites/Props/switch.png.import b/Assets/Sprites/Props/switch.png.import new file mode 100644 index 0000000..20d3e52 --- /dev/null +++ b/Assets/Sprites/Props/switch.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://88iqlixjutsn" +path="res://.godot/imported/switch.png-f1a5070bd0995b912e6a24e1c48f03da.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Assets/Sprites/Props/switch.png" +dest_files=["res://.godot/imported/switch.png-f1a5070bd0995b912e6a24e1c48f03da.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/Assets/Sprites/UI/arrow.ase b/Assets/Sprites/UI/arrow.ase new file mode 100644 index 0000000..34f1b1e Binary files /dev/null and b/Assets/Sprites/UI/arrow.ase differ diff --git a/Assets/Sprites/UI/arrow.png b/Assets/Sprites/UI/arrow.png new file mode 100644 index 0000000..7dea561 Binary files /dev/null and b/Assets/Sprites/UI/arrow.png differ diff --git a/Assets/Sprites/UI/arrow.png.import b/Assets/Sprites/UI/arrow.png.import new file mode 100644 index 0000000..84081b5 --- /dev/null +++ b/Assets/Sprites/UI/arrow.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dqat7fjm20yie" +path="res://.godot/imported/arrow.png-8e07c35d14a15694847eda7a334fbb50.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Assets/Sprites/UI/arrow.png" +dest_files=["res://.godot/imported/arrow.png-8e07c35d14a15694847eda7a334fbb50.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/BoundingBoxes/InteractionRay.cs b/BoundingBoxes/InteractionRay.cs index 8ca963e..830a049 100644 --- a/BoundingBoxes/InteractionRay.cs +++ b/BoundingBoxes/InteractionRay.cs @@ -14,10 +14,21 @@ public partial class InteractionRay : RayCast2D if (_trigger != value) { EmitSignal(SignalName.TriggerHit, value); + + if (value is not null) + { + // focus on the new trigger + value.Focus(); + } } if (_trigger is not null) { + if (_trigger != value) + { + // unfocus from the old trigger + _trigger.Unfocus(); + } LastValidTrigger = value; } diff --git a/BoundingBoxes/InteractionTrigger.cs b/BoundingBoxes/InteractionTrigger.cs index 1e7b830..ab27938 100644 --- a/BoundingBoxes/InteractionTrigger.cs +++ b/BoundingBoxes/InteractionTrigger.cs @@ -14,6 +14,20 @@ public partial class InteractionTrigger : Area2D [Signal] public delegate void UntargetEventHandler(); + [Export] + public string PopupText { get; set; } + + private Control _popup; + + public override void _Ready() + { + base._Ready(); + + _popup = GetNode("Popup"); + _popup.Visible = false; + _popup.GetNode