Compare commits
45 Commits
4de81c9a63
...
24b5dc09d0
|
@ -0,0 +1,38 @@
|
|||
---
|
||||
name: Bug report
|
||||
about: Create a report to help us improve
|
||||
title: ''
|
||||
labels: ''
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
|
||||
**Describe the bug**
|
||||
A clear and concise description of what the bug is.
|
||||
|
||||
**To Reproduce**
|
||||
Steps to reproduce the behavior:
|
||||
1. Go to '...'
|
||||
2. Click on '....'
|
||||
3. Scroll down to '....'
|
||||
4. See error
|
||||
|
||||
**Expected behavior**
|
||||
A clear and concise description of what you expected to happen.
|
||||
|
||||
**Screenshots**
|
||||
If applicable, add screenshots to help explain your problem.
|
||||
|
||||
**Desktop (please complete the following information):**
|
||||
- OS: [e.g. iOS]
|
||||
- Browser [e.g. chrome, safari]
|
||||
- Version [e.g. 22]
|
||||
|
||||
**Smartphone (please complete the following information):**
|
||||
- Device: [e.g. iPhone6]
|
||||
- OS: [e.g. iOS8.1]
|
||||
- Browser [e.g. stock browser, safari]
|
||||
- Version [e.g. 22]
|
||||
|
||||
**Additional context**
|
||||
Add any other context about the problem here.
|
|
@ -0,0 +1,20 @@
|
|||
---
|
||||
name: Feature request
|
||||
about: Suggest an idea for this project
|
||||
title: ''
|
||||
labels: ''
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
|
||||
**Is your feature request related to a problem? Please describe.**
|
||||
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
|
||||
|
||||
**Describe the solution you'd like**
|
||||
A clear and concise description of what you want to happen.
|
||||
|
||||
**Describe alternatives you've considered**
|
||||
A clear and concise description of any alternative solutions or features you've considered.
|
||||
|
||||
**Additional context**
|
||||
Add any other context or screenshots about the feature request here.
|
|
@ -16,4 +16,10 @@ I can write english pretty good but since It is not my mothertounge I will make
|
|||
|
||||
The dark room was clouded with smoke as the 1st lieutenant entered the room. He walked slowly , trying to avoid the big clouds, towards the black desk where a man in black cape was sitting and enjoying his last cigar.
|
||||
|
||||
=> END
|
||||
=> END
|
||||
|
||||
~ wall_writing
|
||||
|
||||
"Life's not fair. Get a grip." -- Doc, The Two Time
|
||||
|
||||
=> END
|
||||
|
|
|
@ -0,0 +1,19 @@
|
|||
[remap]
|
||||
|
||||
importer="mp3"
|
||||
type="AudioStreamMP3"
|
||||
uid="uid://bskrlh73x1sgp"
|
||||
path="res://.godot/imported/doc-summon.mp3-ebe66881fc8469c2b9dc405db43209d0.mp3str"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://Assets/Sounds/doc-summon.mp3"
|
||||
dest_files=["res://.godot/imported/doc-summon.mp3-ebe66881fc8469c2b9dc405db43209d0.mp3str"]
|
||||
|
||||
[params]
|
||||
|
||||
loop=false
|
||||
loop_offset=0
|
||||
bpm=0
|
||||
beat_count=0
|
||||
bar_beats=4
|
After Width: | Height: | Size: 1.5 KiB |
|
@ -0,0 +1,34 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://xgy5gihyxgih"
|
||||
path="res://.godot/imported/fire-32x32.png-6317a2b0efbef8c9d4ff90f6384746c6.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://Assets/Sprites/Misc/fire-32x32.png"
|
||||
dest_files=["res://.godot/imported/fire-32x32.png-6317a2b0efbef8c9d4ff90f6384746c6.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
|
After Width: | Height: | Size: 743 B |
|
@ -0,0 +1,34 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://c1garalf1clsp"
|
||||
path="res://.godot/imported/flame-large.png-41b172a8bfc9c186ab97a98ae0c5a459.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://Assets/Sprites/Misc/flame-large.png"
|
||||
dest_files=["res://.godot/imported/flame-large.png-41b172a8bfc9c186ab97a98ae0c5a459.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
|
After Width: | Height: | Size: 379 B |
|
@ -0,0 +1,34 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://dj1vsctgh1scr"
|
||||
path="res://.godot/imported/flame.png-e7b2d4c51e3e9c0041d6294e9c805c89.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://Assets/Sprites/Misc/flame.png"
|
||||
dest_files=["res://.godot/imported/flame.png-e7b2d4c51e3e9c0041d6294e9c805c89.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
|
After Width: | Height: | Size: 92 B |
|
@ -0,0 +1,34 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://bitpf645g0prl"
|
||||
path="res://.godot/imported/torch-base.png-d14e78df3788bf6d3a9565b574d6c1a1.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://Assets/Sprites/Misc/torch-base.png"
|
||||
dest_files=["res://.godot/imported/torch-base.png-d14e78df3788bf6d3a9565b574d6c1a1.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
|
After Width: | Height: | Size: 379 B |
|
@ -0,0 +1,34 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://cyfyelyq3o15s"
|
||||
path="res://.godot/imported/torch-fire.png-a9f51cf7273c726b68014cb26a31d54c.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://Assets/Sprites/Misc/torch-fire.png"
|
||||
dest_files=["res://.godot/imported/torch-fire.png-a9f51cf7273c726b68014cb26a31d54c.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
|
After Width: | Height: | Size: 379 B |
|
@ -0,0 +1,34 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://i5ksh8i0q48o"
|
||||
path="res://.godot/imported/torch-lamp-base-back.png-a6c17eff02f04f493c4e495a2d662d5a.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://Assets/Sprites/Misc/torch-lamp-base-back.png"
|
||||
dest_files=["res://.godot/imported/torch-lamp-base-back.png-a6c17eff02f04f493c4e495a2d662d5a.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
|
After Width: | Height: | Size: 416 B |
|
@ -0,0 +1,34 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://ca0htndnsb38k"
|
||||
path="res://.godot/imported/torch-lamp-base.png-03b38ecb41ff35cadec5aeaad2c98e38.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://Assets/Sprites/Misc/torch-lamp-base.png"
|
||||
dest_files=["res://.godot/imported/torch-lamp-base.png-03b38ecb41ff35cadec5aeaad2c98e38.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
|
Before Width: | Height: | Size: 783 B After Width: | Height: | Size: 810 B |
Before Width: | Height: | Size: 152 B After Width: | Height: | Size: 148 B |
After Width: | Height: | Size: 596 B |
|
@ -0,0 +1,34 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://dlxiybkk75imp"
|
||||
path="res://.godot/imported/tree-leaves-dark-0.png-c0a1d8978753948673d83a622b613796.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://Assets/Sprites/Props/tree-leaves-dark-0.png"
|
||||
dest_files=["res://.godot/imported/tree-leaves-dark-0.png-c0a1d8978753948673d83a622b613796.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
|
After Width: | Height: | Size: 775 B |
|
@ -0,0 +1,34 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://022r5gtr5ut5"
|
||||
path="res://.godot/imported/tree-leaves-dark-1.png-e500a7048d53ad3769f9fb33e7139e3a.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://Assets/Sprites/Props/tree-leaves-dark-1.png"
|
||||
dest_files=["res://.godot/imported/tree-leaves-dark-1.png-e500a7048d53ad3769f9fb33e7139e3a.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
|
After Width: | Height: | Size: 1.8 KiB |
|
@ -0,0 +1,34 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://fb2cpwplhe7o"
|
||||
path="res://.godot/imported/tree-leaves-dark-2.png-e3e4a859dde5c7535113533f8a9eb51d.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://Assets/Sprites/Props/tree-leaves-dark-2.png"
|
||||
dest_files=["res://.godot/imported/tree-leaves-dark-2.png-e3e4a859dde5c7535113533f8a9eb51d.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
|
After Width: | Height: | Size: 4.8 KiB |
|
@ -0,0 +1,34 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://bth1v3dyuqwg6"
|
||||
path="res://.godot/imported/arena-tileset-new.png-be9f2f14aeaee34d9c3f67ae1188e672.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://Assets/Sprites/arena-tileset-new.png"
|
||||
dest_files=["res://.godot/imported/arena-tileset-new.png-be9f2f14aeaee34d9c3f67ae1188e672.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
|
|
@ -1,48 +0,0 @@
|
|||
using Godot;
|
||||
|
||||
namespace SupaLidlGame.BoundingBoxes;
|
||||
|
||||
public partial class CameraBounds : Node2D
|
||||
{
|
||||
[Export]
|
||||
public Area2D Trigger { get; set; }
|
||||
|
||||
//[Export]
|
||||
//public Rect2I Bounds { get; set; }
|
||||
|
||||
[Export]
|
||||
public Marker2D TopLeft { get; set; }
|
||||
|
||||
[Export]
|
||||
public Marker2D BottomRight { get; set; }
|
||||
|
||||
public override void _Ready()
|
||||
{
|
||||
Trigger.BodyEntered += OnBodyEntered;
|
||||
Trigger.BodyExited += OnBodyExited;
|
||||
}
|
||||
|
||||
private void OnBodyEntered(Node2D body)
|
||||
{
|
||||
if (body is Characters.Player player)
|
||||
{
|
||||
var camera = player.Camera;
|
||||
var rect = new Rect2I();
|
||||
rect.Position = (Vector2I)TopLeft.GlobalPosition;
|
||||
rect.End = (Vector2I)BottomRight.GlobalPosition;
|
||||
camera.SetCameraBounds(rect);
|
||||
}
|
||||
}
|
||||
|
||||
private void OnBodyExited(Node2D body)
|
||||
{
|
||||
if (body is Characters.Player player)
|
||||
{
|
||||
var camera = player.Camera;
|
||||
camera.LimitLeft = int.MinValue;
|
||||
camera.LimitTop = int.MinValue;
|
||||
camera.LimitRight = int.MaxValue;
|
||||
camera.LimitBottom = int.MaxValue;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,25 +0,0 @@
|
|||
[gd_scene load_steps=3 format=3 uid="uid://malbos18dh7l"]
|
||||
|
||||
[ext_resource type="Script" path="res://BoundingBoxes/CameraBounds.cs" id="1_vaknk"]
|
||||
|
||||
[sub_resource type="RectangleShape2D" id="RectangleShape2D_b2lli"]
|
||||
size = Vector2(256, 272)
|
||||
|
||||
[node name="CameraBounds" type="Node2D" node_paths=PackedStringArray("Trigger", "TopLeft", "BottomRight")]
|
||||
script = ExtResource("1_vaknk")
|
||||
Trigger = NodePath("Area2D")
|
||||
TopLeft = NodePath("TopLeft")
|
||||
BottomRight = NodePath("BottomRight")
|
||||
|
||||
[node name="Area2D" type="Area2D" parent="."]
|
||||
collision_layer = 0
|
||||
collision_mask = 4
|
||||
monitorable = false
|
||||
|
||||
[node name="CollisionShape2D" type="CollisionShape2D" parent="Area2D"]
|
||||
shape = SubResource("RectangleShape2D_b2lli")
|
||||
debug_color = Color(0.631373, 0.345098, 1, 0.419608)
|
||||
|
||||
[node name="TopLeft" type="Marker2D" parent="."]
|
||||
|
||||
[node name="BottomRight" type="Marker2D" parent="."]
|
|
@ -0,0 +1,47 @@
|
|||
using Godot;
|
||||
|
||||
namespace SupaLidlGame.BoundingBoxes;
|
||||
|
||||
public partial class CameraTrigger : Area2D
|
||||
{
|
||||
[Export]
|
||||
public Node Camera { get; set; }
|
||||
|
||||
[Export]
|
||||
public int EnablePriority { get; set; } = 2;
|
||||
|
||||
[Export]
|
||||
public int DisablePriority { get; set; } = 0;
|
||||
|
||||
public override void _Ready()
|
||||
{
|
||||
Connect(SignalName.BodyEntered, new Callable(this, nameof(OnBodyEntered)));
|
||||
Connect(SignalName.BodyExited, new Callable(this, nameof(OnBodyExited)));
|
||||
}
|
||||
|
||||
public override void _EnterTree()
|
||||
{
|
||||
if (!Camera.Get("tween_on_load").AsBool())
|
||||
{
|
||||
var tween = Camera.Get("tween_resource").AsGodotObject();
|
||||
double duration = tween.Get("duration").AsDouble();
|
||||
|
||||
// HACK: manually set this field to interrupt tween when the
|
||||
// trigger enters the scene, which happens when the scene is loaded
|
||||
// from the cache
|
||||
Camera.SetDeferred("_has_tweened", true);
|
||||
GD.Print("set tween");
|
||||
}
|
||||
}
|
||||
|
||||
private void OnBodyEntered(Node2D node)
|
||||
{
|
||||
Camera.Set("priority", EnablePriority);
|
||||
Camera.Set("follow_target", node);
|
||||
}
|
||||
|
||||
private void OnBodyExited(Node2D node)
|
||||
{
|
||||
Camera.Set("priority", DisablePriority);
|
||||
}
|
||||
}
|
|
@ -3,7 +3,9 @@
|
|||
[ext_resource type="Script" path="res://BoundingBoxes/Hitbox.cs" id="1_44i8j"]
|
||||
|
||||
[node name="Hitbox" type="Area2D"]
|
||||
priority = 5.0
|
||||
collision_layer = 256
|
||||
collision_mask = 769
|
||||
priority = 5
|
||||
script = ExtResource("1_44i8j")
|
||||
|
||||
[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
|
||||
|
|
|
@ -3,6 +3,8 @@
|
|||
[ext_resource type="Script" path="res://BoundingBoxes/Hurtbox.cs" id="1_ov1ss"]
|
||||
|
||||
[node name="Hurtbox" type="Area2D"]
|
||||
collision_layer = 512
|
||||
collision_mask = 769
|
||||
script = ExtResource("1_ov1ss")
|
||||
|
||||
[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
|
||||
|
|
|
@ -0,0 +1,70 @@
|
|||
using Godot;
|
||||
using System.Linq;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace SupaLidlGame.BoundingBoxes;
|
||||
|
||||
public partial class OcclusionTrigger : Area2D
|
||||
{
|
||||
[Export]
|
||||
public double FadeDuration { get; set; }
|
||||
|
||||
[Export]
|
||||
public Godot.Collections.Array<string> Groups { get; set; }
|
||||
|
||||
private Tween _tween = null;
|
||||
|
||||
public override void _Ready()
|
||||
{
|
||||
Connect(SignalName.BodyEntered, new Callable(this, nameof(OnBodyEntered)));
|
||||
Connect(SignalName.BodyExited, new Callable(this, nameof(OnBodyExited)));
|
||||
}
|
||||
|
||||
private IEnumerable<CanvasItem> GetCanvasItems()
|
||||
{
|
||||
IEnumerable<IEnumerable<CanvasItem>> pack()
|
||||
{
|
||||
foreach (string group in Groups)
|
||||
{
|
||||
var nodes = GetTree().GetNodesInGroup(group)
|
||||
.OfType<CanvasItem>();
|
||||
|
||||
yield return nodes;
|
||||
}
|
||||
}
|
||||
|
||||
return pack().SelectMany(e => e);
|
||||
}
|
||||
|
||||
private void OnBodyEntered(Node2D _)
|
||||
{
|
||||
if (IsInstanceValid(_tween))
|
||||
{
|
||||
_tween.Kill();
|
||||
}
|
||||
|
||||
_tween = GetTree().CreateTween();
|
||||
_tween.SetParallel();
|
||||
|
||||
foreach (var node in GetCanvasItems())
|
||||
{
|
||||
_tween.TweenProperty(node, "modulate", Colors.Transparent, FadeDuration);
|
||||
}
|
||||
}
|
||||
|
||||
private void OnBodyExited(Node2D _)
|
||||
{
|
||||
if (IsInstanceValid(_tween))
|
||||
{
|
||||
_tween.Kill();
|
||||
}
|
||||
|
||||
_tween = GetTree().CreateTween();
|
||||
_tween.SetParallel();
|
||||
|
||||
foreach (var node in GetCanvasItems())
|
||||
{
|
||||
_tween.TweenProperty(node, "modulate", Colors.White, FadeDuration);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -10,9 +10,6 @@ public partial class Doc : Boss
|
|||
|
||||
public AnimationPlayer MiscAnimation { get; set; }
|
||||
|
||||
[Export]
|
||||
public Items.Weapons.Sword Lance { get; set; }
|
||||
|
||||
[Export]
|
||||
public override bool IsActive
|
||||
{
|
||||
|
@ -109,7 +106,7 @@ public partial class Doc : Boss
|
|||
if (name == "Doc")
|
||||
{
|
||||
IsActive = true;
|
||||
Inventory.SelectedItem = Lance;
|
||||
Inventory.SelectedItem = GetNode<Items.Item>("%DocLance");
|
||||
}
|
||||
};
|
||||
|
||||
|
@ -122,7 +119,7 @@ public partial class Doc : Boss
|
|||
if (this.GetWorld().CurrentPlayer.IsAlive && !IsActive)
|
||||
{
|
||||
IsActive = true;
|
||||
Inventory.SelectedItem = Lance;
|
||||
Inventory.SelectedItem = GetNode<Items.Item>("%DocLance");
|
||||
}
|
||||
};
|
||||
}
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
[gd_scene load_steps=70 format=3 uid="uid://d2skjvvx6fal0"]
|
||||
[gd_scene load_steps=72 format=3 uid="uid://d2skjvvx6fal0"]
|
||||
|
||||
[ext_resource type="Script" path="res://Characters/Doc.cs" id="2_3elet"]
|
||||
[ext_resource type="Shader" path="res://Shaders/Flash.gdshader" id="2_5jxom"]
|
||||
|
@ -38,6 +38,7 @@
|
|||
[ext_resource type="PackedScene" uid="uid://p7oijq6dbvvk" path="res://Items/Weapons/DocLance.tscn" id="24_2es2r"]
|
||||
[ext_resource type="AudioStream" uid="uid://cqj44je3mvk60" path="res://Assets/Sounds/rauuul.wav" id="26_js7p2"]
|
||||
[ext_resource type="PackedScene" uid="uid://dldnp8eunxj3q" path="res://BoundingBoxes/InteractionTrigger.tscn" id="33_08dyq"]
|
||||
[ext_resource type="AudioStream" uid="uid://bskrlh73x1sgp" path="res://Assets/Sounds/doc-summon.mp3" id="34_g57b0"]
|
||||
|
||||
[sub_resource type="ShaderMaterial" id="ShaderMaterial_7n7iy"]
|
||||
resource_local_to_scene = true
|
||||
|
@ -327,6 +328,21 @@ tracks/2/keys = {
|
|||
"update": 0,
|
||||
"values": [Vector2(1.5, 0.75), Vector2(1, 1)]
|
||||
}
|
||||
tracks/3/type = "audio"
|
||||
tracks/3/imported = false
|
||||
tracks/3/enabled = true
|
||||
tracks/3/path = NodePath("../Effects/SummonCry")
|
||||
tracks/3/interp = 1
|
||||
tracks/3/loop_wrap = true
|
||||
tracks/3/keys = {
|
||||
"clips": [{
|
||||
"end_offset": 1.1,
|
||||
"start_offset": 0.4,
|
||||
"stream": ExtResource("34_g57b0")
|
||||
}],
|
||||
"times": PackedFloat32Array(0)
|
||||
}
|
||||
tracks/3/use_blend = true
|
||||
|
||||
[sub_resource type="AnimationLibrary" id="AnimationLibrary_rpply"]
|
||||
_data = {
|
||||
|
@ -552,14 +568,16 @@ size = Vector2(16, 19)
|
|||
[sub_resource type="CircleShape2D" id="CircleShape2D_8hwat"]
|
||||
radius = 16.0
|
||||
|
||||
[node name="Doc" type="CharacterBody2D" node_paths=PackedStringArray("Lance", "BossStateMachine", "DefaultSelectedItem", "ThinkerStateMachine", "Stats", "Sprite", "Inventory", "StateMachine", "Hurtbox")]
|
||||
[sub_resource type="CircleShape2D" id="CircleShape2D_kap5k"]
|
||||
radius = 48.0
|
||||
|
||||
[node name="Doc" type="CharacterBody2D" node_paths=PackedStringArray("BossStateMachine", "DefaultSelectedItem", "ThinkerStateMachine", "Stats", "Sprite", "Inventory", "StateMachine", "Hurtbox")]
|
||||
y_sort_enabled = true
|
||||
texture_filter = 3
|
||||
material = SubResource("ShaderMaterial_7n7iy")
|
||||
collision_layer = 10
|
||||
collision_mask = 17
|
||||
script = ExtResource("2_3elet")
|
||||
Lance = NodePath("Inventory/DocLance")
|
||||
BossStateMachine = NodePath("BossStateMachine")
|
||||
BossName = "Doc, The Two-Time"
|
||||
Music = ExtResource("3_qnxmu")
|
||||
|
@ -682,8 +700,9 @@ InitialState = NodePath("Attack")
|
|||
script = ExtResource("21_ij3bp")
|
||||
NPC = NodePath("../..")
|
||||
|
||||
[node name="DashDefensive" type="Node" parent="ThinkerStateMachine" node_paths=PackedStringArray("NPC")]
|
||||
[node name="DashDefensive" type="Node" parent="ThinkerStateMachine" node_paths=PackedStringArray("ProjectileDetection", "NPC")]
|
||||
script = ExtResource("20_12htp")
|
||||
ProjectileDetection = NodePath("../../ProjectileDetection")
|
||||
MaxDistanceToTarget = 256.0
|
||||
UseItemDistance = 64.0
|
||||
NPC = NodePath("../..")
|
||||
|
@ -760,6 +779,9 @@ attenuation = 0.5
|
|||
[node name="HurtSound" type="AudioStreamPlayer2D" parent="Effects"]
|
||||
stream = ExtResource("9_stm0e")
|
||||
|
||||
[node name="SummonCry" type="AudioStreamPlayer2D" parent="Effects"]
|
||||
attenuation = 4.0
|
||||
|
||||
[node name="Sprite" type="Sprite2D" parent="."]
|
||||
y_sort_enabled = true
|
||||
use_parent_material = true
|
||||
|
@ -785,14 +807,8 @@ script = ExtResource("8_r8ejq")
|
|||
Hotbar = []
|
||||
Items = []
|
||||
|
||||
[node name="DocLance" parent="Inventory" node_paths=PackedStringArray("Hitbox", "AnimationPlayer", "ParryParticles", "StateMachine", "Anchor", "HandAnchor") instance=ExtResource("24_2es2r")]
|
||||
[node name="DocLance" parent="Inventory" instance=ExtResource("24_2es2r")]
|
||||
unique_name_in_owner = true
|
||||
Hitbox = NodePath("Hitbox")
|
||||
AnimationPlayer = NodePath("AnimationPlayer")
|
||||
ParryParticles = NodePath("Anchor/Node2D/Sprite2D/ParryParticles")
|
||||
StateMachine = NodePath("State")
|
||||
Anchor = NodePath("Anchor")
|
||||
HandAnchor = NodePath("Anchor/Node2D/Sprite2D/Hand")
|
||||
|
||||
[node name="InteractionTrigger" parent="." instance=ExtResource("33_08dyq")]
|
||||
|
||||
|
@ -807,5 +823,13 @@ offset_bottom = -14.0
|
|||
[node name="Label" parent="InteractionTrigger/Popup" index="0"]
|
||||
text = "Duel"
|
||||
|
||||
[node name="ProjectileDetection" type="Area2D" parent="."]
|
||||
unique_name_in_owner = true
|
||||
collision_layer = 0
|
||||
collision_mask = 256
|
||||
|
||||
[node name="CollisionShape2D" type="CollisionShape2D" parent="ProjectileDetection"]
|
||||
shape = SubResource("CircleShape2D_kap5k")
|
||||
|
||||
[editable path="Hurtbox"]
|
||||
[editable path="InteractionTrigger"]
|
||||
|
|
|
@ -152,6 +152,7 @@ Sprite = NodePath("Sprites/Node2D/Character")
|
|||
Inventory = NodePath("Inventory")
|
||||
StateMachine = NodePath("StateMachine")
|
||||
Hurtbox = NodePath("Hurtbox")
|
||||
Faction = 2
|
||||
|
||||
[node name="Stats" type="Node" parent="."]
|
||||
script = ExtResource("9_bxrs2")
|
||||
|
|
|
@ -364,13 +364,11 @@ curve = SubResource("Curve_30p4b")
|
|||
[sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_qdhau"]
|
||||
particle_flag_disable_z = true
|
||||
spread = 180.0
|
||||
gravity = Vector3(0, 0, 0)
|
||||
initial_velocity_min = 32.0
|
||||
initial_velocity_max = 32.0
|
||||
angular_velocity_min = 90.0
|
||||
angular_velocity_max = 90.0
|
||||
orbit_velocity_min = 0.0
|
||||
orbit_velocity_max = 0.0
|
||||
gravity = Vector3(0, 0, 0)
|
||||
linear_accel_min = -64.0
|
||||
linear_accel_max = -32.0
|
||||
tangential_accel_min = 8.0
|
||||
|
@ -405,6 +403,7 @@ Sprite = NodePath("Sprites/Node2D/Character")
|
|||
Inventory = NodePath("Inventory")
|
||||
StateMachine = NodePath("StateMachine")
|
||||
Hurtbox = NodePath("Hurtbox")
|
||||
Faction = 2
|
||||
|
||||
[node name="StateMachine" type="Node" parent="." node_paths=PackedStringArray("InitialState", "Character")]
|
||||
script = ExtResource("3_lj2a2")
|
||||
|
@ -441,7 +440,6 @@ MaxDistanceToTarget = 128.0
|
|||
UseItemDistance = 128.0
|
||||
PassiveState = NodePath("../Pursue")
|
||||
PursueState = NodePath("../Pursue")
|
||||
PursueOnLineOfSight = false
|
||||
NPC = NodePath("../..")
|
||||
|
||||
[node name="Idle" type="Node" parent="ThinkerStateMachine" node_paths=PackedStringArray("PursueState", "NavigationAgent", "NPC")]
|
||||
|
@ -450,7 +448,6 @@ PursueState = NodePath("../Pursue")
|
|||
MinTargetDistance = 32.0
|
||||
PursueOnLineOfSight = true
|
||||
MinLineOfSightDistance = 128.0
|
||||
ShouldReturnToOriginalPosition = true
|
||||
NavigationAgent = NodePath("../../NavigationAgent2D")
|
||||
NPC = NodePath("../..")
|
||||
|
||||
|
@ -530,15 +527,17 @@ hframes = 6
|
|||
position = Vector2(0, -4)
|
||||
shape = SubResource("RectangleShape2D_bfqew")
|
||||
|
||||
[node name="Inventory" type="Node2D" parent="."]
|
||||
[node name="Inventory" type="Node2D" parent="." node_paths=PackedStringArray("Hotbar")]
|
||||
position = Vector2(0, -4)
|
||||
script = ExtResource("17_sjq8t")
|
||||
Hotbar = []
|
||||
|
||||
[node name="ProjectileSpawner" parent="Inventory" instance=ExtResource("17_dmlbb")]
|
||||
[node name="ProjectileSpawner" parent="Inventory" node_paths=PackedStringArray("StateMachine") instance=ExtResource("17_dmlbb")]
|
||||
Projectile = ExtResource("18_lwg36")
|
||||
ShouldOverrideProjectileDamage = false
|
||||
ShouldOverrideVelocity = false
|
||||
ShouldRotate = false
|
||||
StateMachine = NodePath("StateMachine")
|
||||
UseTime = 2.0
|
||||
|
||||
[node name="Hurtbox" parent="." instance=ExtResource("18_ajs2x")]
|
||||
|
|
|
@ -268,8 +268,8 @@ scale_curve = SubResource("CurveTexture_5uulw")
|
|||
color = Color(1, 0, 0, 1)
|
||||
color_ramp = SubResource("GradientTexture1D_iyaih")
|
||||
|
||||
[sub_resource type="RectangleShape2D" id="RectangleShape2D_bfqew"]
|
||||
size = Vector2(8, 8)
|
||||
[sub_resource type="CircleShape2D" id="CircleShape2D_umi1b"]
|
||||
radius = 4.0
|
||||
|
||||
[sub_resource type="RectangleShape2D" id="RectangleShape2D_1gjgc"]
|
||||
size = Vector2(12, 16)
|
||||
|
@ -290,6 +290,7 @@ Sprite = NodePath("Sprites/Node2D/Character")
|
|||
Inventory = NodePath("Inventory")
|
||||
StateMachine = NodePath("StateMachine")
|
||||
Hurtbox = NodePath("Hurtbox")
|
||||
Faction = 2
|
||||
metadata/_edit_vertical_guides_ = []
|
||||
|
||||
[node name="Stats" type="Node" parent="."]
|
||||
|
@ -416,7 +417,7 @@ stream = ExtResource("15_w7mkq")
|
|||
unique_name_in_owner = true
|
||||
y_sort_enabled = true
|
||||
use_parent_material = true
|
||||
position = Vector2(-0.5, 4)
|
||||
position = Vector2(0, 4)
|
||||
rotation = 6.28319
|
||||
|
||||
[node name="Node2D" type="Node2D" parent="Sprites"]
|
||||
|
@ -429,7 +430,7 @@ offset = Vector2(0, -12)
|
|||
hframes = 7
|
||||
|
||||
[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
|
||||
shape = SubResource("RectangleShape2D_bfqew")
|
||||
shape = SubResource("CircleShape2D_umi1b")
|
||||
|
||||
[node name="Inventory" type="Node2D" parent="." node_paths=PackedStringArray("Hotbar")]
|
||||
script = ExtResource("17_5rur0")
|
||||
|
|
|
@ -104,27 +104,25 @@ public partial class NPC : Character
|
|||
{
|
||||
float bestScore = float.MaxValue;
|
||||
Character bestChar = null;
|
||||
// NOTE: this relies on all Characters being under the Entities node
|
||||
foreach (Node node in GetParent().GetChildren())
|
||||
|
||||
foreach (var character in World.Instance.CurrentMap.GetCharacters())
|
||||
{
|
||||
if (node is Character character)
|
||||
bool isFriendly = ((IFaction)character).AlignsWith(this);
|
||||
if (isFriendly || !character.IsAlive)
|
||||
{
|
||||
bool isFriendly = character.Faction == Faction;
|
||||
if (isFriendly || character.Health <= 0)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
continue;
|
||||
}
|
||||
|
||||
float score = 0;
|
||||
score -= Position.DistanceTo(character.Position);
|
||||
float score = 0;
|
||||
score += GlobalPosition.DistanceSquaredTo(character.GlobalPosition);
|
||||
|
||||
if (score < bestScore)
|
||||
{
|
||||
bestScore = score;
|
||||
bestChar = character;
|
||||
}
|
||||
if (score < bestScore)
|
||||
{
|
||||
bestScore = score;
|
||||
bestChar = character;
|
||||
}
|
||||
}
|
||||
|
||||
return bestChar;
|
||||
}
|
||||
|
||||
|
|
|
@ -36,6 +36,9 @@ public sealed partial class Player : Character
|
|||
[Export]
|
||||
public PlayerCamera Camera { get; set; }
|
||||
|
||||
[Export]
|
||||
public GodotObject PCamera { get; set; }
|
||||
|
||||
[Export]
|
||||
public Marker2D DirectionMarker { get; private set; }
|
||||
|
||||
|
@ -75,6 +78,17 @@ public sealed partial class Player : Character
|
|||
Inventory.SelectedIndex = 0;
|
||||
}
|
||||
|
||||
public override void _EnterTree()
|
||||
{
|
||||
// HACK: instantly move camera to player when switching to a scene
|
||||
// with another PhantomCamera2D
|
||||
var tween = GetNode<GodotObject>("PCamera")
|
||||
.Get("tween_resource")
|
||||
.AsGodotObject();
|
||||
tween.Set("duration", 0);
|
||||
tween.SetDeferred("duration", 1);
|
||||
}
|
||||
|
||||
public override void _Process(double delta)
|
||||
{
|
||||
base._Process(delta);
|
||||
|
@ -238,7 +252,6 @@ public sealed partial class Player : Character
|
|||
switch (inputMethod)
|
||||
{
|
||||
case State.Global.InputMethod.Joystick:
|
||||
GD.Print(joystick);
|
||||
if (joystick.IsZeroApprox())
|
||||
{
|
||||
return Direction;
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
[gd_scene load_steps=74 format=3 uid="uid://b2254pup8k161"]
|
||||
[gd_scene load_steps=77 format=3 uid="uid://b2254pup8k161"]
|
||||
|
||||
[ext_resource type="Script" path="res://Characters/Player.cs" id="1_flygr"]
|
||||
[ext_resource type="Shader" path="res://Shaders/Flash.gdshader" id="2_ngsgt"]
|
||||
|
@ -27,16 +27,18 @@
|
|||
[ext_resource type="Script" path="res://BoundingBoxes/InteractionRay.cs" id="13_hs3u1"]
|
||||
[ext_resource type="Script" path="res://State/Character/PlayerHealState.cs" id="13_t103m"]
|
||||
[ext_resource type="Script" path="res://State/Character/PlayerMaxLevelState.cs" id="14_1sn10"]
|
||||
[ext_resource type="Texture2D" uid="uid://d1ukste16yq6v" path="res://Assets/Sprites/Particles/player-light.png" id="15_3hahh"]
|
||||
[ext_resource type="Script" path="res://Utils/DamageTime.cs" id="15_4xl06"]
|
||||
[ext_resource type="AudioStream" uid="uid://st8qgqiygy5a" path="res://Assets/Sounds/electricity.wav" id="15_61bua"]
|
||||
[ext_resource type="PackedScene" uid="uid://ce0ph4wk0ylra" path="res://UI/TargetTracer.tscn" id="22_hxi53"]
|
||||
[ext_resource type="Texture2D" uid="uid://bd8l8kafb42dt" path="res://Assets/Sprites/Particles/circle.png" id="22_uefct"]
|
||||
[ext_resource type="Texture2D" uid="uid://bcgm3r168qjn3" path="res://Assets/Sprites/Particles/cast-effect.png" id="24_njn4h"]
|
||||
[ext_resource type="Script" path="res://addons/phantom_camera/scripts/phantom_camera/phantom_camera_2d.gd" id="27_mndpv"]
|
||||
[ext_resource type="Script" path="res://addons/phantom_camera/scripts/resources/tween_resource.gd" id="28_6gq8l"]
|
||||
[ext_resource type="Script" path="res://Items/PlayerInventory.cs" id="30_y2wmw"]
|
||||
[ext_resource type="PackedScene" uid="uid://cgg0sfm2qeiwn" path="res://Items/Weapons/Bow.tscn" id="31_mofvy"]
|
||||
[ext_resource type="PackedScene" uid="uid://dvqap2uhcah63" path="res://Items/Weapons/Sword.tscn" id="31_ql4as"]
|
||||
[ext_resource type="PackedScene" uid="uid://5y1acxl4j4n7" path="res://Items/Weapons/Pugio.tscn" id="32_6ffmm"]
|
||||
[ext_resource type="Resource" uid="uid://cl7jvdu2lnv2d" path="res://Items/Weapons/Sword.tres" id="33_3qyfl"]
|
||||
[ext_resource type="Resource" uid="uid://cjsh0dcgbfn77" path="res://Items/Weapons/Bow.tres" id="34_70ron"]
|
||||
[ext_resource type="Resource" uid="uid://iqe6rgnb3jur" path="res://Items/Weapons/Pugio.tres" id="35_4pap1"]
|
||||
[ext_resource type="Texture2D" uid="uid://coarr28adgo1u" path="res://Assets/Sprites/Particles/point-light.png" id="38_6udj8"]
|
||||
|
||||
[sub_resource type="ShaderMaterial" id="ShaderMaterial_h78y7"]
|
||||
shader = ExtResource("2_ngsgt")
|
||||
|
@ -44,6 +46,12 @@ shader_parameter/color = Vector4(1, 1, 1, 1)
|
|||
shader_parameter/intensity = 0.0
|
||||
shader_parameter/alpha_modulate = 1.0
|
||||
|
||||
[sub_resource type="Resource" id="Resource_535hq"]
|
||||
script = ExtResource("28_6gq8l")
|
||||
duration = 1.0
|
||||
transition = 0
|
||||
ease = 2
|
||||
|
||||
[sub_resource type="Animation" id="Animation_imqdv"]
|
||||
length = 0.001
|
||||
tracks/0/type = "value"
|
||||
|
@ -594,6 +602,14 @@ StateMachine = NodePath("StateMachine")
|
|||
Hurtbox = NodePath("Hurtbox")
|
||||
Faction = 1
|
||||
|
||||
[node name="PCamera" type="Node2D" parent="."]
|
||||
script = ExtResource("27_mndpv")
|
||||
priority = 1
|
||||
follow_mode = 2
|
||||
zoom = Vector2(4, 4)
|
||||
tween_resource = SubResource("Resource_535hq")
|
||||
draw_limits = true
|
||||
|
||||
[node name="Stats" type="Node" parent="."]
|
||||
script = ExtResource("4_06oya")
|
||||
|
||||
|
@ -765,6 +781,7 @@ stream = ExtResource("12_vvem5")
|
|||
unique_name_in_owner = true
|
||||
|
||||
[node name="Camera2D" parent="." instance=ExtResource("4_ym125")]
|
||||
enabled = false
|
||||
zoom = Vector2(4, 4)
|
||||
position_smoothing_speed = 8.0
|
||||
|
||||
|
@ -819,34 +836,8 @@ horizontal_alignment = 1
|
|||
[node name="Inventory" type="Node2D" parent="." node_paths=PackedStringArray("Hotbar")]
|
||||
y_sort_enabled = true
|
||||
script = ExtResource("30_y2wmw")
|
||||
Hotbar = [NodePath("Sword"), NodePath("Bow"), NodePath("Pugio")]
|
||||
InventoryMap = {
|
||||
"equip_1": 0,
|
||||
"equip_2": 1,
|
||||
"equip_3": 2
|
||||
}
|
||||
|
||||
[node name="Bow" parent="Inventory" node_paths=PackedStringArray("StateMachine") instance=ExtResource("31_mofvy")]
|
||||
visible = false
|
||||
StateMachine = NodePath("StateMachine")
|
||||
|
||||
[node name="Sword" parent="Inventory" node_paths=PackedStringArray("Hitbox", "AnimationPlayer", "ParryParticles", "StateMachine", "Anchor", "HandAnchor") instance=ExtResource("31_ql4as")]
|
||||
visible = false
|
||||
Hitbox = NodePath("Hitbox")
|
||||
AnimationPlayer = NodePath("AnimationPlayer")
|
||||
ParryParticles = NodePath("Anchor/Node2D/Sprite2D/ParryParticles")
|
||||
StateMachine = NodePath("State")
|
||||
Anchor = NodePath("Anchor")
|
||||
HandAnchor = NodePath("Anchor/Node2D/Sprite2D/Hand")
|
||||
|
||||
[node name="Pugio" parent="Inventory" node_paths=PackedStringArray("Hitbox", "AnimationPlayer", "ParryParticles", "StateMachine", "Anchor", "HandAnchor") instance=ExtResource("32_6ffmm")]
|
||||
visible = false
|
||||
Hitbox = NodePath("Hitbox")
|
||||
AnimationPlayer = NodePath("AnimationPlayer")
|
||||
ParryParticles = NodePath("Anchor/Node2D/Sprite2D/ParryParticles")
|
||||
StateMachine = NodePath("State")
|
||||
Anchor = NodePath("Anchor")
|
||||
HandAnchor = NodePath("Anchor/Node2D/Sprite2D/Hand")
|
||||
Hotbar = [null, null, null]
|
||||
Items = Array[Object]([ExtResource("33_3qyfl"), ExtResource("34_70ron"), ExtResource("35_4pap1")])
|
||||
|
||||
[node name="Hurtbox" parent="." node_paths=PackedStringArray("InvincibilityTimer") instance=ExtResource("9_avyu4")]
|
||||
visible = false
|
||||
|
@ -875,12 +866,12 @@ script = ExtResource("13_hs3u1")
|
|||
|
||||
[node name="PointLight2D" type="PointLight2D" parent="."]
|
||||
position = Vector2(0, -4)
|
||||
blend_mode = 2
|
||||
energy = 0.2
|
||||
shadow_enabled = true
|
||||
shadow_filter = 2
|
||||
shadow_filter_smooth = 3.0
|
||||
texture = ExtResource("15_3hahh")
|
||||
height = 10.0
|
||||
texture = ExtResource("38_6udj8")
|
||||
texture_scale = 0.5
|
||||
|
||||
[node name="DamageTime" type="Node" parent="."]
|
||||
script = ExtResource("15_4xl06")
|
||||
|
|
|
@ -174,6 +174,7 @@ Sprite = NodePath("Sprites/Sprite2D")
|
|||
Inventory = NodePath("Inventory")
|
||||
StateMachine = NodePath("StateMachine")
|
||||
Hurtbox = NodePath("Hurtbox")
|
||||
Faction = 4
|
||||
|
||||
[node name="StateMachine" type="Node" parent="." node_paths=PackedStringArray("InitialState", "Character")]
|
||||
script = ExtResource("2_dhles")
|
||||
|
|
|
@ -91,11 +91,6 @@ public class Parser
|
|||
}
|
||||
else if (token.Type == TokenType.Grouping)
|
||||
{
|
||||
if (token.Value == ")")
|
||||
{
|
||||
throw new InterpreterException("Unexpected )",
|
||||
token.Line, token.Column);
|
||||
}
|
||||
if (prev is LiteralExpression l)
|
||||
{
|
||||
// this is a function call
|
||||
|
|
|
@ -17,11 +17,9 @@ gradient = SubResource("Gradient_uqfn8")
|
|||
[sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_yg5po"]
|
||||
particle_flag_disable_z = true
|
||||
direction = Vector3(-1, 0, 0)
|
||||
gravity = Vector3(0, 0, 0)
|
||||
initial_velocity_min = 4.0
|
||||
initial_velocity_max = 8.0
|
||||
orbit_velocity_min = 0.0
|
||||
orbit_velocity_max = 0.0
|
||||
gravity = Vector3(0, 0, 0)
|
||||
scale_min = 2.0
|
||||
scale_max = 2.0
|
||||
color_ramp = SubResource("GradientTexture1D_te0n4")
|
||||
|
|
|
@ -59,7 +59,10 @@ public partial class DynamicDoor : StaticBody2D
|
|||
{
|
||||
// rebake navmesh so NPCs can correctly travel conditionally
|
||||
GD.Print("Dynamic door updated; rebaking navmeshes...");
|
||||
navmesh.BakeNavigationPolygon();
|
||||
if (!navmesh.IsBaking())
|
||||
{
|
||||
navmesh.BakeNavigationPolygon();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -85,7 +85,7 @@ tracks/2/keys = {
|
|||
"times": PackedFloat32Array(0, 0.7),
|
||||
"transitions": PackedFloat32Array(1, 1),
|
||||
"update": 0,
|
||||
"values": [0.5, 0.0]
|
||||
"values": [1.0, 0.0]
|
||||
}
|
||||
|
||||
[sub_resource type="AnimationLibrary" id="AnimationLibrary_g3m4l"]
|
||||
|
@ -105,6 +105,7 @@ ProjectileName = "Lightning"
|
|||
Hitbox = NodePath("Hitbox")
|
||||
|
||||
[node name="Sprite2D" type="Sprite2D" parent="."]
|
||||
modulate = Color(4, 4, 4, 1)
|
||||
material = SubResource("CanvasItemMaterial_3bsa7")
|
||||
position = Vector2(0, 8)
|
||||
texture = ExtResource("1_bf8ae")
|
||||
|
@ -119,6 +120,7 @@ libraries = {
|
|||
|
||||
[node name="Hitbox" parent="." instance=ExtResource("3_vlt1v")]
|
||||
collision_layer = 0
|
||||
priority = 5
|
||||
Damage = 20.0
|
||||
|
||||
[node name="CollisionShape2D" parent="Hitbox" index="0"]
|
||||
|
|
|
@ -1,59 +1,60 @@
|
|||
[gd_scene load_steps=12 format=3 uid="uid://c1w7t6irnohfx"]
|
||||
[gd_scene load_steps=13 format=3 uid="uid://c1w7t6irnohfx"]
|
||||
|
||||
[ext_resource type="Texture2D" uid="uid://har1bd5u4dq3" path="res://Assets/Sprites/Misc/torch.png" id="1_14bgb"]
|
||||
[ext_resource type="Texture2D" uid="uid://cyfyelyq3o15s" path="res://Assets/Sprites/Misc/torch-fire.png" id="1_gnoxc"]
|
||||
[ext_resource type="Texture2D" uid="uid://bitpf645g0prl" path="res://Assets/Sprites/Misc/torch-base.png" id="2_cwgtj"]
|
||||
[ext_resource type="Texture2D" uid="uid://coarr28adgo1u" path="res://Assets/Sprites/Particles/point-light.png" id="2_hotvd"]
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_js1l1"]
|
||||
atlas = ExtResource("1_14bgb")
|
||||
region = Rect2(0, 0, 8, 12)
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_vnjya"]
|
||||
atlas = ExtResource("1_gnoxc")
|
||||
region = Rect2(0, 0, 8, 8)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_gdxtl"]
|
||||
atlas = ExtResource("1_14bgb")
|
||||
region = Rect2(8, 0, 8, 12)
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_l2emm"]
|
||||
atlas = ExtResource("1_gnoxc")
|
||||
region = Rect2(8, 0, 8, 8)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_da7fw"]
|
||||
atlas = ExtResource("1_14bgb")
|
||||
region = Rect2(16, 0, 8, 12)
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_03weu"]
|
||||
atlas = ExtResource("1_gnoxc")
|
||||
region = Rect2(16, 0, 8, 8)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_rpccx"]
|
||||
atlas = ExtResource("1_14bgb")
|
||||
region = Rect2(24, 0, 8, 12)
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_1fqw1"]
|
||||
atlas = ExtResource("1_gnoxc")
|
||||
region = Rect2(24, 0, 8, 8)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_crwu1"]
|
||||
atlas = ExtResource("1_14bgb")
|
||||
region = Rect2(32, 0, 8, 12)
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_sj1bi"]
|
||||
atlas = ExtResource("1_gnoxc")
|
||||
region = Rect2(32, 0, 8, 8)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_r3kxc"]
|
||||
atlas = ExtResource("1_14bgb")
|
||||
region = Rect2(40, 0, 8, 12)
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_1xpxx"]
|
||||
atlas = ExtResource("1_gnoxc")
|
||||
region = Rect2(40, 0, 8, 8)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_225la"]
|
||||
atlas = ExtResource("1_14bgb")
|
||||
region = Rect2(48, 0, 8, 12)
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_dxfgw"]
|
||||
atlas = ExtResource("1_gnoxc")
|
||||
region = Rect2(48, 0, 8, 8)
|
||||
|
||||
[sub_resource type="SpriteFrames" id="SpriteFrames_gf7ku"]
|
||||
animations = [{
|
||||
"frames": [{
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_js1l1")
|
||||
"texture": SubResource("AtlasTexture_vnjya")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_gdxtl")
|
||||
"texture": SubResource("AtlasTexture_l2emm")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_da7fw")
|
||||
"texture": SubResource("AtlasTexture_03weu")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_rpccx")
|
||||
"texture": SubResource("AtlasTexture_1fqw1")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_crwu1")
|
||||
"texture": SubResource("AtlasTexture_sj1bi")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_r3kxc")
|
||||
"texture": SubResource("AtlasTexture_1xpxx")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_225la")
|
||||
"texture": SubResource("AtlasTexture_dxfgw")
|
||||
}],
|
||||
"loop": true,
|
||||
"name": &"default",
|
||||
|
@ -64,18 +65,25 @@ animations = [{
|
|||
radius = 4.0
|
||||
|
||||
[node name="Torch" type="Node2D"]
|
||||
y_sort_enabled = true
|
||||
|
||||
[node name="AnimatedSprite2D" type="AnimatedSprite2D" parent="."]
|
||||
texture_filter = 1
|
||||
position = Vector2(0, -10)
|
||||
[node name="Sprites" type="Node2D" parent="."]
|
||||
|
||||
[node name="AnimatedSprite2D" type="AnimatedSprite2D" parent="Sprites"]
|
||||
modulate = Color(3.5, 3.5, 3, 1)
|
||||
position = Vector2(0, -14)
|
||||
sprite_frames = SubResource("SpriteFrames_gf7ku")
|
||||
autoplay = "default"
|
||||
frame_progress = 0.337799
|
||||
|
||||
[node name="Sprite2D" type="Sprite2D" parent="Sprites"]
|
||||
position = Vector2(0, -8)
|
||||
texture = ExtResource("2_cwgtj")
|
||||
|
||||
[node name="PointLight2D" type="PointLight2D" parent="."]
|
||||
color = Color(1, 0.976471, 0.92549, 1)
|
||||
color = Color(1, 0.811765, 0.537255, 1)
|
||||
energy = 1.2
|
||||
blend_mode = 2
|
||||
shadow_enabled = true
|
||||
shadow_filter_smooth = 3.0
|
||||
texture = ExtResource("2_hotvd")
|
||||
offset = Vector2(0, 2)
|
||||
|
|
|
@ -1,94 +1,96 @@
|
|||
[gd_scene load_steps=16 format=3 uid="uid://ceadk7pam7vab"]
|
||||
[gd_scene load_steps=18 format=3 uid="uid://ceadk7pam7vab"]
|
||||
|
||||
[ext_resource type="Texture2D" uid="uid://cyldr0ck3yfrp" path="res://Assets/Sprites/Misc/torch-lamp.png" id="1_dlkl0"]
|
||||
[ext_resource type="Texture2D" uid="uid://coarr28adgo1u" path="res://Assets/Sprites/Particles/point-light.png" id="2_0xpf8"]
|
||||
[ext_resource type="Texture2D" uid="uid://c1garalf1clsp" path="res://Assets/Sprites/Misc/flame-large.png" id="2_a6lwn"]
|
||||
[ext_resource type="Texture2D" uid="uid://ca0htndnsb38k" path="res://Assets/Sprites/Misc/torch-lamp-base.png" id="2_bq1kw"]
|
||||
[ext_resource type="Texture2D" uid="uid://i5ksh8i0q48o" path="res://Assets/Sprites/Misc/torch-lamp-base-back.png" id="3_vh465"]
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_ikvnd"]
|
||||
atlas = ExtResource("1_dlkl0")
|
||||
region = Rect2(0, 0, 12, 24)
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_dtmd3"]
|
||||
atlas = ExtResource("2_a6lwn")
|
||||
region = Rect2(0, 0, 12, 14)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_b7wal"]
|
||||
atlas = ExtResource("1_dlkl0")
|
||||
region = Rect2(12, 0, 12, 24)
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_irtpk"]
|
||||
atlas = ExtResource("2_a6lwn")
|
||||
region = Rect2(12, 0, 12, 14)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_68y2k"]
|
||||
atlas = ExtResource("1_dlkl0")
|
||||
region = Rect2(24, 0, 12, 24)
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_0gb20"]
|
||||
atlas = ExtResource("2_a6lwn")
|
||||
region = Rect2(24, 0, 12, 14)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_eib4d"]
|
||||
atlas = ExtResource("1_dlkl0")
|
||||
region = Rect2(36, 0, 12, 24)
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_5uhdg"]
|
||||
atlas = ExtResource("2_a6lwn")
|
||||
region = Rect2(36, 0, 12, 14)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_7q5cd"]
|
||||
atlas = ExtResource("1_dlkl0")
|
||||
region = Rect2(48, 0, 12, 24)
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_e4moo"]
|
||||
atlas = ExtResource("2_a6lwn")
|
||||
region = Rect2(48, 0, 12, 14)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_k8jtr"]
|
||||
atlas = ExtResource("1_dlkl0")
|
||||
region = Rect2(60, 0, 12, 24)
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_soja6"]
|
||||
atlas = ExtResource("2_a6lwn")
|
||||
region = Rect2(60, 0, 12, 14)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_egan1"]
|
||||
atlas = ExtResource("1_dlkl0")
|
||||
region = Rect2(72, 0, 12, 24)
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_sn741"]
|
||||
atlas = ExtResource("2_a6lwn")
|
||||
region = Rect2(72, 0, 12, 14)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_eymjc"]
|
||||
atlas = ExtResource("1_dlkl0")
|
||||
region = Rect2(84, 0, 12, 24)
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_r825r"]
|
||||
atlas = ExtResource("2_a6lwn")
|
||||
region = Rect2(84, 0, 12, 14)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_go3ky"]
|
||||
atlas = ExtResource("1_dlkl0")
|
||||
region = Rect2(96, 0, 12, 24)
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_75y5m"]
|
||||
atlas = ExtResource("2_a6lwn")
|
||||
region = Rect2(96, 0, 12, 14)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_rvq52"]
|
||||
atlas = ExtResource("1_dlkl0")
|
||||
region = Rect2(108, 0, 12, 24)
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_l8r4c"]
|
||||
atlas = ExtResource("2_a6lwn")
|
||||
region = Rect2(108, 0, 12, 14)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_cjdtb"]
|
||||
atlas = ExtResource("1_dlkl0")
|
||||
region = Rect2(120, 0, 12, 24)
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_7gxo8"]
|
||||
atlas = ExtResource("2_a6lwn")
|
||||
region = Rect2(120, 0, 12, 14)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_vi5xh"]
|
||||
atlas = ExtResource("1_dlkl0")
|
||||
region = Rect2(132, 0, 12, 24)
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_60wov"]
|
||||
atlas = ExtResource("2_a6lwn")
|
||||
region = Rect2(132, 0, 12, 14)
|
||||
|
||||
[sub_resource type="SpriteFrames" id="SpriteFrames_gf7ku"]
|
||||
animations = [{
|
||||
"frames": [{
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_ikvnd")
|
||||
"texture": SubResource("AtlasTexture_dtmd3")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_b7wal")
|
||||
"texture": SubResource("AtlasTexture_irtpk")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_68y2k")
|
||||
"texture": SubResource("AtlasTexture_0gb20")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_eib4d")
|
||||
"texture": SubResource("AtlasTexture_5uhdg")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_7q5cd")
|
||||
"texture": SubResource("AtlasTexture_e4moo")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_k8jtr")
|
||||
"texture": SubResource("AtlasTexture_soja6")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_egan1")
|
||||
"texture": SubResource("AtlasTexture_sn741")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_eymjc")
|
||||
"texture": SubResource("AtlasTexture_r825r")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_go3ky")
|
||||
"texture": SubResource("AtlasTexture_75y5m")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_rvq52")
|
||||
"texture": SubResource("AtlasTexture_l8r4c")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_cjdtb")
|
||||
"texture": SubResource("AtlasTexture_7gxo8")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_vi5xh")
|
||||
"texture": SubResource("AtlasTexture_60wov")
|
||||
}],
|
||||
"loop": true,
|
||||
"name": &"default",
|
||||
|
@ -97,15 +99,26 @@ animations = [{
|
|||
|
||||
[node name="TorchLamp" type="Node2D"]
|
||||
|
||||
[node name="Sprite2D2" type="Sprite2D" parent="."]
|
||||
texture = ExtResource("3_vh465")
|
||||
centered = false
|
||||
offset = Vector2(-6, -16)
|
||||
|
||||
[node name="AnimatedSprite2D" type="AnimatedSprite2D" parent="."]
|
||||
modulate = Color(2.5, 2, 2, 1)
|
||||
y_sort_enabled = true
|
||||
texture_filter = 1
|
||||
position = Vector2(0, -6)
|
||||
sprite_frames = SubResource("SpriteFrames_gf7ku")
|
||||
autoplay = "default"
|
||||
frame = 9
|
||||
frame_progress = 0.966501
|
||||
frame_progress = 0.557817
|
||||
offset = Vector2(0, -12)
|
||||
|
||||
[node name="Sprite2D" type="Sprite2D" parent="."]
|
||||
texture = ExtResource("2_bq1kw")
|
||||
centered = false
|
||||
offset = Vector2(-6, -16)
|
||||
|
||||
[node name="PointLight2D" type="PointLight2D" parent="."]
|
||||
color = Color(1, 0.811765, 0.537255, 1)
|
||||
energy = 1.2
|
||||
|
@ -113,3 +126,13 @@ blend_mode = 2
|
|||
shadow_filter_smooth = 3.0
|
||||
texture = ExtResource("2_0xpf8")
|
||||
texture_scale = 0.25
|
||||
|
||||
[node name="PointLight2D2" type="PointLight2D" parent="."]
|
||||
visible = false
|
||||
color = Color(1, 0.811765, 0.537255, 1)
|
||||
energy = 1.2
|
||||
blend_mode = 2
|
||||
range_item_cull_mask = 8
|
||||
shadow_filter_smooth = 3.0
|
||||
texture = ExtResource("2_0xpf8")
|
||||
texture_scale = 0.25
|
||||
|
|
|
@ -59,7 +59,7 @@ public partial class UnwantedFrequency : Projectile, Utils.ITarget
|
|||
TrailPosition.Position = new Vector2(0, 4 * Mathf.Sin(radians));
|
||||
TrailPosition2.Position = -TrailPosition.Position;
|
||||
|
||||
if (CharacterTarget is not null)
|
||||
if (CharacterTarget is not null && IsInstanceValid(CharacterTarget))
|
||||
{
|
||||
var pos = CharacterTarget.GlobalPosition;
|
||||
var desired = GlobalPosition.DirectionTo(pos);
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
[gd_scene load_steps=24 format=3 uid="uid://1y5r6sklwgrp"]
|
||||
[gd_scene load_steps=25 format=3 uid="uid://1y5r6sklwgrp"]
|
||||
|
||||
[ext_resource type="Script" path="res://Entities/UnwantedFrequency.cs" id="1_6sbe0"]
|
||||
[ext_resource type="PackedScene" uid="uid://du5vhccg75nrq" path="res://BoundingBoxes/Hitbox.tscn" id="2_gxtvd"]
|
||||
|
@ -10,17 +10,20 @@
|
|||
[sub_resource type="RectangleShape2D" id="RectangleShape2D_30y8q"]
|
||||
size = Vector2(8, 8)
|
||||
|
||||
[sub_resource type="CanvasItemMaterial" id="CanvasItemMaterial_dhurx"]
|
||||
light_mode = 1
|
||||
|
||||
[sub_resource type="Curve" id="Curve_eu273"]
|
||||
_data = [Vector2(0.0618557, 0), 0.0, 0.0, 0, 0, Vector2(0.489691, 1), 0.0, 0.0, 0, 0]
|
||||
point_count = 2
|
||||
|
||||
[sub_resource type="Gradient" id="Gradient_dyqhb"]
|
||||
offsets = PackedFloat32Array(0.00662252, 0.715232, 1)
|
||||
colors = PackedColorArray(0.996078, 0, 0.164706, 0, 0.996045, 0, 0.166638, 1, 1, 1, 1, 1)
|
||||
colors = PackedColorArray(0.996078, 0, 0.164706, 0, 1.992, 0, 0.334, 1, 2, 2, 2, 1)
|
||||
|
||||
[sub_resource type="Gradient" id="Gradient_m1y6u"]
|
||||
offsets = PackedFloat32Array(0.00662252, 0.715232, 1)
|
||||
colors = PackedColorArray(0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1)
|
||||
colors = PackedColorArray(0, 0, 0, 0, 0, 0, 0, 1, 2, 2, 2, 1)
|
||||
|
||||
[sub_resource type="Gradient" id="Gradient_2q0ut"]
|
||||
offsets = PackedFloat32Array(0.525926, 0.740741, 1)
|
||||
|
@ -132,11 +135,14 @@ Knockback = 324.0
|
|||
shape = SubResource("RectangleShape2D_30y8q")
|
||||
|
||||
[node name="TrailRotation" type="Node2D" parent="."]
|
||||
material = SubResource("CanvasItemMaterial_dhurx")
|
||||
|
||||
[node name="TrailPosition" type="Node2D" parent="TrailRotation"]
|
||||
use_parent_material = true
|
||||
|
||||
[node name="Trail" parent="TrailRotation/TrailPosition" instance=ExtResource("3_67uhs")]
|
||||
self_modulate = Color(2, 2, 2, 1)
|
||||
use_parent_material = true
|
||||
width = 2.0
|
||||
width_curve = SubResource("Curve_eu273")
|
||||
default_color = Color(1, 0.0862745, 0.207843, 1)
|
||||
|
@ -148,9 +154,11 @@ MaximumPoints = 64
|
|||
Frequency = 30
|
||||
|
||||
[node name="TrailPosition2" type="Node2D" parent="TrailRotation"]
|
||||
use_parent_material = true
|
||||
|
||||
[node name="Trail" parent="TrailRotation/TrailPosition2" instance=ExtResource("3_67uhs")]
|
||||
self_modulate = Color(2, 2, 2, 1)
|
||||
use_parent_material = true
|
||||
width = 2.0
|
||||
width_curve = SubResource("Curve_eu273")
|
||||
gradient = SubResource("Gradient_m1y6u")
|
||||
|
|
|
@ -36,6 +36,9 @@ public partial class EventBus : Node
|
|||
[Signal]
|
||||
public delegate void PlayerStunEventHandler();
|
||||
|
||||
[Signal]
|
||||
public delegate void PlayerOpenInventoryEventHandler(Items.Inventory inventory);
|
||||
|
||||
[Signal]
|
||||
public delegate void RegisteredBossEventHandler(Characters.Boss boss);
|
||||
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
using Godot;
|
||||
using IEnumerableNode = System.Collections.Generic.IEnumerable<Godot.Node>;
|
||||
|
||||
namespace SupaLidlGame.Extensions;
|
||||
|
||||
|
@ -55,4 +56,13 @@ public static class NodeExtensions
|
|||
return node.GetNode<UI.UIController>("/root/BaseUI/" +
|
||||
"SubViewportContainer/UIViewport/CanvasLayer/MainUILayer/Main");
|
||||
}
|
||||
|
||||
public static IEnumerableNode GetChildrenEnumerable(this Node node)
|
||||
{
|
||||
int childCount = node.GetChildCount();
|
||||
for (int i = 0; i < childCount; i++)
|
||||
{
|
||||
yield return node.GetChild(i);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -11,10 +11,11 @@ public partial class Inventory : Node2D, IItemCollection<ItemMetadata>
|
|||
[Export]
|
||||
public Array<Item> Hotbar { get; private set; }
|
||||
|
||||
[Export]
|
||||
public Array<ItemMetadata> Items { get; private set; }
|
||||
public Array<int> HotbarToItemIndexMap { get; set; } = new();
|
||||
|
||||
[Export]
|
||||
public Array<ItemMetadata> Items { get; set; }
|
||||
|
||||
public Dictionary<string, int> InventoryMap { get; set; }
|
||||
|
||||
[Signal]
|
||||
|
@ -62,6 +63,12 @@ public partial class Inventory : Node2D, IItemCollection<ItemMetadata>
|
|||
|
||||
public bool IsUsingItem => SelectedItem?.IsUsing ?? false;
|
||||
|
||||
public Inventory()
|
||||
{
|
||||
HotbarToItemIndexMap.Resize(HotbarCapacity);
|
||||
HotbarToItemIndexMap.Fill(-1);
|
||||
}
|
||||
|
||||
public override void _Ready()
|
||||
{
|
||||
if (Hotbar is null)
|
||||
|
@ -69,6 +76,7 @@ public partial class Inventory : Node2D, IItemCollection<ItemMetadata>
|
|||
// instantiating a new array will prevent characters from
|
||||
// sharing inventories
|
||||
Hotbar = new();
|
||||
Hotbar.Resize(HotbarCapacity);
|
||||
}
|
||||
|
||||
if (Items is null)
|
||||
|
@ -111,8 +119,6 @@ public partial class Inventory : Node2D, IItemCollection<ItemMetadata>
|
|||
|
||||
EmitSignal(SignalName.EquippedItem, prevItem, _selectedItem);
|
||||
|
||||
GD.Print($"Inventory: {index} is new selected index.");
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -156,6 +162,47 @@ public partial class Inventory : Node2D, IItemCollection<ItemMetadata>
|
|||
return item;
|
||||
}
|
||||
|
||||
public Item SetHotbarIndexToItemIndex(int hotbarIndex, int itemIndex)
|
||||
{
|
||||
HotbarToItemIndexMap[hotbarIndex] = itemIndex;
|
||||
|
||||
if (itemIndex >= 0)
|
||||
{
|
||||
return SetHotbarIndexToItem(hotbarIndex, Items[itemIndex]);
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
private Item SetHotbarIndexToItem(int index, ItemMetadata metadata)
|
||||
{
|
||||
var oldItem = Hotbar[index];
|
||||
Item newItem = null;
|
||||
|
||||
if (IsInstanceValid(oldItem))
|
||||
{
|
||||
oldItem?.QueueFree();
|
||||
}
|
||||
|
||||
if (metadata is not null)
|
||||
{
|
||||
newItem = metadata.Instance.Instantiate<Item>();
|
||||
AddChild(newItem);
|
||||
Hotbar[index] = newItem;
|
||||
}
|
||||
|
||||
if (SelectedIndex == index)
|
||||
{
|
||||
// equip item if the hotbar index we are setting is selected
|
||||
EquipIndex(index);
|
||||
}
|
||||
|
||||
var bus = Events.EventBus.Instance;
|
||||
bus.EmitSignal(Events.EventBus.SignalName.PlayerInventoryUpdate, this);
|
||||
|
||||
return newItem;
|
||||
}
|
||||
|
||||
public Item AddItem(Item item)
|
||||
{
|
||||
if (Hotbar.Count >= HotbarCapacity)
|
||||
|
@ -192,6 +239,21 @@ public partial class Inventory : Node2D, IItemCollection<ItemMetadata>
|
|||
|
||||
public bool Remove(ItemMetadata item)
|
||||
{
|
||||
int indexInInventory = Items.IndexOf(item);
|
||||
if (indexInInventory < 0)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
// remove instances of item from hotbar
|
||||
int indexInHotbar = HotbarToItemIndexMap.IndexOf(indexInInventory);
|
||||
if (indexInHotbar >= 0)
|
||||
{
|
||||
HotbarToItemIndexMap[indexInHotbar] = -1;
|
||||
Hotbar[indexInHotbar].QueueFree();
|
||||
}
|
||||
|
||||
Items[indexInInventory] = null;
|
||||
return Items.Remove(item);
|
||||
}
|
||||
|
||||
|
|
|
@ -65,4 +65,15 @@ public abstract partial class Item : Node2D
|
|||
{
|
||||
|
||||
}
|
||||
|
||||
public virtual void Remove()
|
||||
{
|
||||
if (IsUsing)
|
||||
{
|
||||
Deuse();
|
||||
}
|
||||
|
||||
Unequip(CharacterOwner);
|
||||
QueueFree();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
using Godot;
|
||||
using SupaLidlGame.Extensions;
|
||||
|
||||
namespace SupaLidlGame.Items.Weapons;
|
||||
|
||||
|
@ -8,19 +9,47 @@ public partial class Bow : ProjectileSpawner
|
|||
|
||||
protected Area2D _ignitionArea;
|
||||
|
||||
protected override void SpawnProjectile(Scenes.Map map,
|
||||
protected override Entities.Projectile SpawnProjectile(Scenes.Map map,
|
||||
Vector2 direction, float velocityModifier = 1)
|
||||
{
|
||||
base.SpawnProjectile(map, direction, velocityModifier);
|
||||
var projectile = base.SpawnProjectile(map, direction, velocityModifier);
|
||||
|
||||
if (_isOnFire)
|
||||
{
|
||||
var flame = GetNode<AnimatedSprite2D>("%Flame");
|
||||
|
||||
var newFlame = flame.Duplicate() as Node2D;
|
||||
projectile.AddChild(newFlame);
|
||||
|
||||
newFlame.Position = Vector2.Zero;
|
||||
|
||||
flame.Visible = false;
|
||||
// TODO: instead of doing 1.5x damage, create an "On Fire" debuff
|
||||
projectile.Hitbox.Damage *= 1.5f;
|
||||
_isOnFire = false;
|
||||
}
|
||||
|
||||
return projectile;
|
||||
}
|
||||
|
||||
public override void _Ready()
|
||||
{
|
||||
base._Ready();
|
||||
_ignitionArea = GetNode<Area2D>("IgnitionArea");
|
||||
_ignitionArea.AreaEntered += (Area2D area) =>
|
||||
var onAreaEntered = (Area2D area) =>
|
||||
{
|
||||
_isOnFire = false;
|
||||
if (!_isOnFire)
|
||||
{
|
||||
var flame = GetNode<AnimatedSprite2D>("%Flame");
|
||||
flame.Visible = true;
|
||||
flame.GetNode<AudioStreamPlayer2D>("Ignite")
|
||||
.OnWorld()
|
||||
.PlayOneShot();
|
||||
_isOnFire = true;
|
||||
}
|
||||
};
|
||||
_ignitionArea.Connect(
|
||||
Area2D.SignalName.AreaEntered,
|
||||
Callable.From(onAreaEntered));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,15 +1,75 @@
|
|||
[gd_scene load_steps=17 format=3 uid="uid://cgg0sfm2qeiwn"]
|
||||
[gd_scene load_steps=29 format=3 uid="uid://cgg0sfm2qeiwn"]
|
||||
|
||||
[ext_resource type="Texture2D" uid="uid://dam6aigkw8xs" path="res://Assets/Sprites/Items/bow-and-arrow.png" id="1_1ghvv"]
|
||||
[ext_resource type="Script" path="res://Items/Weapons/ProjectileSpawner.cs" id="1_76bur"]
|
||||
[ext_resource type="Script" path="res://Items/Weapons/Bow.cs" id="1_ikgu2"]
|
||||
[ext_resource type="PackedScene" uid="uid://cjiftn2suskla" path="res://Entities/Arrow.tscn" id="2_mvw0j"]
|
||||
[ext_resource type="Resource" uid="uid://cjsh0dcgbfn77" path="res://Items/Weapons/Bow.tres" id="3_j7q7r"]
|
||||
[ext_resource type="Script" path="res://State/Weapon/WeaponStateMachine.cs" id="3_pg4gy"]
|
||||
[ext_resource type="Script" path="res://State/Weapon/RangedIdleState.cs" id="3_uxif8"]
|
||||
[ext_resource type="Script" path="res://State/Weapon/RangedFireState.cs" id="4_moo4d"]
|
||||
[ext_resource type="Script" path="res://State/Weapon/RangedChargeState.cs" id="5_k8y6f"]
|
||||
[ext_resource type="Script" path="res://State/Weapon/BowAltState.cs" id="7_l73rl"]
|
||||
[ext_resource type="AudioStream" uid="uid://bkekgj4gu7fw4" path="res://Assets/Sounds/bow-draw.wav" id="7_t07v0"]
|
||||
[ext_resource type="Texture2D" uid="uid://coarr28adgo1u" path="res://Assets/Sprites/Particles/point-light.png" id="9_tk6lc"]
|
||||
[ext_resource type="AudioStream" uid="uid://cwy4giq8eod5g" path="res://Assets/Sounds/bow-release.wav" id="9_v051g"]
|
||||
[ext_resource type="Texture2D" uid="uid://dj1vsctgh1scr" path="res://Assets/Sprites/Misc/flame.png" id="9_xwcvy"]
|
||||
[ext_resource type="AudioStream" uid="uid://braj74by0oowo" path="res://Assets/Sounds/fire-burst-flash.wav" id="11_65ega"]
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_5af70"]
|
||||
atlas = ExtResource("9_xwcvy")
|
||||
region = Rect2(0, 0, 8, 8)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_bct7o"]
|
||||
atlas = ExtResource("9_xwcvy")
|
||||
region = Rect2(8, 0, 8, 8)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_fhtjn"]
|
||||
atlas = ExtResource("9_xwcvy")
|
||||
region = Rect2(16, 0, 8, 8)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_si88l"]
|
||||
atlas = ExtResource("9_xwcvy")
|
||||
region = Rect2(24, 0, 8, 8)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_ap5vw"]
|
||||
atlas = ExtResource("9_xwcvy")
|
||||
region = Rect2(32, 0, 8, 8)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_uad0p"]
|
||||
atlas = ExtResource("9_xwcvy")
|
||||
region = Rect2(40, 0, 8, 8)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_cxv2f"]
|
||||
atlas = ExtResource("9_xwcvy")
|
||||
region = Rect2(48, 0, 8, 8)
|
||||
|
||||
[sub_resource type="SpriteFrames" id="SpriteFrames_b2khh"]
|
||||
animations = [{
|
||||
"frames": [{
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_5af70")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_bct7o")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_fhtjn")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_si88l")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_ap5vw")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_uad0p")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_cxv2f")
|
||||
}],
|
||||
"loop": true,
|
||||
"name": &"default",
|
||||
"speed": 10.0
|
||||
}]
|
||||
|
||||
[sub_resource type="Animation" id="Animation_h0fti"]
|
||||
resource_name = "RESET"
|
||||
|
@ -25,6 +85,101 @@ tracks/0/keys = {
|
|||
"update": 1,
|
||||
"values": [0]
|
||||
}
|
||||
tracks/1/type = "value"
|
||||
tracks/1/imported = false
|
||||
tracks/1/enabled = true
|
||||
tracks/1/path = NodePath("Anchor/Flame:position")
|
||||
tracks/1/interp = 1
|
||||
tracks/1/loop_wrap = true
|
||||
tracks/1/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 0,
|
||||
"values": [Vector2(15, -4)]
|
||||
}
|
||||
tracks/2/type = "value"
|
||||
tracks/2/imported = false
|
||||
tracks/2/enabled = true
|
||||
tracks/2/path = NodePath("Anchor/Flame:visible")
|
||||
tracks/2/interp = 1
|
||||
tracks/2/loop_wrap = true
|
||||
tracks/2/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 1,
|
||||
"values": [false]
|
||||
}
|
||||
|
||||
[sub_resource type="Animation" id="Animation_bejvb"]
|
||||
resource_name = "alt_fire"
|
||||
step = 0.05
|
||||
tracks/0/type = "value"
|
||||
tracks/0/imported = false
|
||||
tracks/0/enabled = true
|
||||
tracks/0/path = NodePath("Anchor/Sprite2D:frame")
|
||||
tracks/0/interp = 1
|
||||
tracks/0/loop_wrap = true
|
||||
tracks/0/keys = {
|
||||
"times": PackedFloat32Array(0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8),
|
||||
"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1, 1),
|
||||
"update": 1,
|
||||
"values": [0, 5, 0, 5, 0, 5, 0, 5, 0]
|
||||
}
|
||||
tracks/1/type = "audio"
|
||||
tracks/1/imported = false
|
||||
tracks/1/enabled = true
|
||||
tracks/1/path = NodePath("AudioStreamPlayer2D")
|
||||
tracks/1/interp = 1
|
||||
tracks/1/loop_wrap = true
|
||||
tracks/1/keys = {
|
||||
"clips": [{
|
||||
"end_offset": 0.0,
|
||||
"start_offset": 0.03,
|
||||
"stream": ExtResource("9_v051g")
|
||||
}, {
|
||||
"end_offset": 0.0,
|
||||
"start_offset": 0.03,
|
||||
"stream": ExtResource("9_v051g")
|
||||
}, {
|
||||
"end_offset": 0.0,
|
||||
"start_offset": 0.03,
|
||||
"stream": ExtResource("9_v051g")
|
||||
}, {
|
||||
"end_offset": 0.0,
|
||||
"start_offset": 0.03,
|
||||
"stream": ExtResource("9_v051g")
|
||||
}, {
|
||||
"end_offset": 0.0,
|
||||
"start_offset": 0.03,
|
||||
"stream": ExtResource("9_v051g")
|
||||
}],
|
||||
"times": PackedFloat32Array(0, 0.1998, 0.3996, 0.5994, 0.7992)
|
||||
}
|
||||
tracks/1/use_blend = true
|
||||
tracks/2/type = "value"
|
||||
tracks/2/imported = false
|
||||
tracks/2/enabled = true
|
||||
tracks/2/path = NodePath("Anchor/Flame:position")
|
||||
tracks/2/interp = 1
|
||||
tracks/2/loop_wrap = true
|
||||
tracks/2/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 0,
|
||||
"values": [Vector2(15, -4)]
|
||||
}
|
||||
tracks/3/type = "value"
|
||||
tracks/3/imported = false
|
||||
tracks/3/enabled = true
|
||||
tracks/3/path = NodePath("Anchor/Flame:visible")
|
||||
tracks/3/interp = 1
|
||||
tracks/3/loop_wrap = true
|
||||
tracks/3/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 1,
|
||||
"values": [false]
|
||||
}
|
||||
|
||||
[sub_resource type="Animation" id="Animation_8qr8x"]
|
||||
resource_name = "charge"
|
||||
|
@ -56,8 +211,20 @@ tracks/1/keys = {
|
|||
"times": PackedFloat32Array(0)
|
||||
}
|
||||
tracks/1/use_blend = true
|
||||
tracks/2/type = "value"
|
||||
tracks/2/imported = false
|
||||
tracks/2/enabled = true
|
||||
tracks/2/path = NodePath("Anchor/Flame:position")
|
||||
tracks/2/interp = 1
|
||||
tracks/2/loop_wrap = true
|
||||
tracks/2/keys = {
|
||||
"times": PackedFloat32Array(0, 0.1, 0.2, 0.3, 0.4, 0.5),
|
||||
"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1),
|
||||
"update": 1,
|
||||
"values": [Vector2(15, -4), Vector2(14, -4), Vector2(13, -4), Vector2(12, -4), Vector2(11, -4), Vector2(9, -4)]
|
||||
}
|
||||
|
||||
[sub_resource type="Animation" id="Animation_bejvb"]
|
||||
[sub_resource type="Animation" id="Animation_j5qtq"]
|
||||
resource_name = "fire"
|
||||
tracks/0/type = "value"
|
||||
tracks/0/imported = false
|
||||
|
@ -86,6 +253,30 @@ tracks/1/keys = {
|
|||
"times": PackedFloat32Array(0)
|
||||
}
|
||||
tracks/1/use_blend = true
|
||||
tracks/2/type = "value"
|
||||
tracks/2/imported = false
|
||||
tracks/2/enabled = true
|
||||
tracks/2/path = NodePath("Anchor/Flame:position")
|
||||
tracks/2/interp = 1
|
||||
tracks/2/loop_wrap = true
|
||||
tracks/2/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 0,
|
||||
"values": [Vector2(15, -4)]
|
||||
}
|
||||
tracks/3/type = "value"
|
||||
tracks/3/imported = false
|
||||
tracks/3/enabled = true
|
||||
tracks/3/path = NodePath("Anchor/Flame:visible")
|
||||
tracks/3/interp = 1
|
||||
tracks/3/loop_wrap = true
|
||||
tracks/3/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 1,
|
||||
"values": [false]
|
||||
}
|
||||
|
||||
[sub_resource type="Animation" id="Animation_riv7t"]
|
||||
resource_name = "idle"
|
||||
|
@ -105,8 +296,9 @@ tracks/0/keys = {
|
|||
[sub_resource type="AnimationLibrary" id="AnimationLibrary_5vx8d"]
|
||||
_data = {
|
||||
"RESET": SubResource("Animation_h0fti"),
|
||||
"alt_fire": SubResource("Animation_bejvb"),
|
||||
"charge": SubResource("Animation_8qr8x"),
|
||||
"fire": SubResource("Animation_bejvb"),
|
||||
"fire": SubResource("Animation_j5qtq"),
|
||||
"idle": SubResource("Animation_riv7t")
|
||||
}
|
||||
|
||||
|
@ -114,27 +306,29 @@ _data = {
|
|||
|
||||
[node name="Bow" type="Node2D" node_paths=PackedStringArray("StateMachine")]
|
||||
y_sort_enabled = true
|
||||
script = ExtResource("1_76bur")
|
||||
script = ExtResource("1_ikgu2")
|
||||
Projectile = ExtResource("2_mvw0j")
|
||||
ChargeTime = 0.5
|
||||
StateMachine = NodePath("StateMachine")
|
||||
Damage = 20.0
|
||||
UseTime = 0.5
|
||||
UseAltTime = 0.2
|
||||
Knockback = 64.0
|
||||
InitialVelocity = 200.0
|
||||
ShouldFreezeAngleOnUse = false
|
||||
PlayerLevelGain = 1.0
|
||||
Metadata = ExtResource("3_j7q7r")
|
||||
|
||||
[node name="StateMachine" type="Node" parent="." node_paths=PackedStringArray("InitialState")]
|
||||
script = ExtResource("3_pg4gy")
|
||||
InitialState = NodePath("Idle")
|
||||
UsedItemStates = Array[NodePath]([NodePath("Charge"), NodePath("Fire")])
|
||||
UsedItemAltStates = Array[NodePath]([NodePath("AltFire")])
|
||||
DeusedItemStates = Array[NodePath]([NodePath("Idle")])
|
||||
|
||||
[node name="Idle" type="Node" parent="StateMachine" node_paths=PackedStringArray("FireState", "Weapon", "AnimationPlayer")]
|
||||
[node name="Idle" type="Node" parent="StateMachine" node_paths=PackedStringArray("FireState", "AltFireState", "Weapon", "AnimationPlayer")]
|
||||
script = ExtResource("3_uxif8")
|
||||
FireState = NodePath("../Charge")
|
||||
AltFireState = NodePath("../AltFire")
|
||||
Weapon = NodePath("../..")
|
||||
AnimationPlayer = NodePath("../../AnimationPlayer")
|
||||
AnimationKey = "idle"
|
||||
|
@ -154,6 +348,14 @@ IdleState = NodePath("../Idle")
|
|||
AnimationPlayer = NodePath("../../AnimationPlayer")
|
||||
AnimationKey = "fire"
|
||||
|
||||
[node name="AltFire" type="Node" parent="StateMachine" node_paths=PackedStringArray("Bow", "IdleState", "AnimationPlayer")]
|
||||
script = ExtResource("7_l73rl")
|
||||
Bow = NodePath("../..")
|
||||
IdleState = NodePath("../Idle")
|
||||
AnimationPlayer = NodePath("../../AnimationPlayer")
|
||||
AnimationKey = "alt_fire"
|
||||
AngleDeviation = 30.0
|
||||
|
||||
[node name="Anchor" type="Node2D" parent="."]
|
||||
y_sort_enabled = true
|
||||
position = Vector2(0, 4)
|
||||
|
@ -166,6 +368,25 @@ centered = false
|
|||
offset = Vector2(-8, -16)
|
||||
hframes = 8
|
||||
|
||||
[node name="Flame" type="AnimatedSprite2D" parent="Anchor"]
|
||||
unique_name_in_owner = true
|
||||
visible = false
|
||||
modulate = Color(3, 3, 3, 1)
|
||||
position = Vector2(15, -4)
|
||||
sprite_frames = SubResource("SpriteFrames_b2khh")
|
||||
autoplay = "default"
|
||||
frame_progress = 0.1652
|
||||
offset = Vector2(0, -4)
|
||||
|
||||
[node name="PointLight2D" type="PointLight2D" parent="Anchor/Flame"]
|
||||
color = Color(1, 0.8, 0.701961, 1)
|
||||
energy = 0.5
|
||||
texture = ExtResource("9_tk6lc")
|
||||
texture_scale = 0.13
|
||||
|
||||
[node name="Ignite" type="AudioStreamPlayer2D" parent="Anchor/Flame"]
|
||||
stream = ExtResource("11_65ega")
|
||||
|
||||
[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
|
||||
libraries = {
|
||||
"": SubResource("AnimationLibrary_5vx8d")
|
||||
|
|
|
@ -33,7 +33,7 @@ public partial class ProjectileSpawner : Ranged
|
|||
}
|
||||
}
|
||||
|
||||
protected virtual void SpawnProjectile(Scenes.Map map,
|
||||
protected virtual Entities.Projectile SpawnProjectile(Scenes.Map map,
|
||||
Vector2 direction, float velocityModifier = 1)
|
||||
{
|
||||
var projectile = map.SpawnEntity<Entities.Projectile>(Projectile);
|
||||
|
@ -70,6 +70,7 @@ public partial class ProjectileSpawner : Ranged
|
|||
}
|
||||
}
|
||||
|
||||
return projectile;
|
||||
}
|
||||
|
||||
public override void Attack()
|
||||
|
@ -85,6 +86,12 @@ public partial class ProjectileSpawner : Ranged
|
|||
|
||||
Vector2 target = Character.Target.Normalized();
|
||||
|
||||
if (AngleDeviation > 0)
|
||||
{
|
||||
float angle = (GD.Randf() - 0.5f) * AngleDeviation;
|
||||
target = target.Rotated(Mathf.DegToRad(angle));
|
||||
}
|
||||
|
||||
if (CharacterRecoil > 0)
|
||||
{
|
||||
Character.ApplyImpulse(-target * CharacterRecoil);
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
[gd_scene load_steps=30 format=3 uid="uid://5y1acxl4j4n7"]
|
||||
[gd_scene load_steps=29 format=3 uid="uid://5y1acxl4j4n7"]
|
||||
|
||||
[ext_resource type="Script" path="res://Items/Weapons/Sword.cs" id="1_mai31"]
|
||||
[ext_resource type="Script" path="res://State/Weapon/WeaponStateMachine.cs" id="2_5ramr"]
|
||||
|
@ -19,11 +19,6 @@
|
|||
[ext_resource type="AudioStream" uid="uid://qvthq6tppp63" path="res://Assets/Sounds/whoosh.wav" id="12_a8o3x"]
|
||||
[ext_resource type="AudioStream" uid="uid://c4n7ioxpukdwi" path="res://Assets/Sounds/parry.wav" id="13_t5wmj"]
|
||||
|
||||
[sub_resource type="Environment" id="Environment_72txp"]
|
||||
background_mode = 3
|
||||
glow_enabled = true
|
||||
glow_hdr_threshold = 1.42
|
||||
|
||||
[sub_resource type="Animation" id="Animation_b7327"]
|
||||
length = 0.001
|
||||
tracks/0/type = "value"
|
||||
|
@ -382,9 +377,6 @@ IdleState = NodePath("../Idle")
|
|||
UseState = NodePath("../Anticipate")
|
||||
BlockAnimKey = "block"
|
||||
|
||||
[node name="WorldEnvironment" type="WorldEnvironment" parent="."]
|
||||
environment = SubResource("Environment_72txp")
|
||||
|
||||
[node name="Anchor" type="Node2D" parent="."]
|
||||
y_sort_enabled = true
|
||||
rotation = 3.14159
|
||||
|
@ -420,7 +412,6 @@ libraries = {
|
|||
}
|
||||
|
||||
[node name="Hitbox" parent="." instance=ExtResource("9_qimey")]
|
||||
priority = 5
|
||||
IsDisabled = true
|
||||
|
||||
[node name="CollisionShape2D" parent="Hitbox" index="0"]
|
||||
|
|
|
@ -29,12 +29,24 @@ public abstract partial class Ranged : Weapon
|
|||
base.Use();
|
||||
}
|
||||
|
||||
public override void UseAlt()
|
||||
{
|
||||
StateMachine.UseAlt();
|
||||
base.Use();
|
||||
}
|
||||
|
||||
public override void Deuse()
|
||||
{
|
||||
StateMachine.Deuse();
|
||||
base.Deuse();
|
||||
}
|
||||
|
||||
public override void DeuseAlt()
|
||||
{
|
||||
StateMachine.DeuseAlt();
|
||||
base.Deuse();
|
||||
}
|
||||
|
||||
public override void _Process(double delta)
|
||||
{
|
||||
StateMachine.Process(delta);
|
||||
|
|
|
@ -65,9 +65,9 @@ tracks/0/path = NodePath("Anchor:position")
|
|||
tracks/0/interp = 1
|
||||
tracks/0/loop_wrap = true
|
||||
tracks/0/keys = {
|
||||
"times": PackedFloat32Array(0, 0.5),
|
||||
"times": PackedFloat32Array(0, 0.2),
|
||||
"transitions": PackedFloat32Array(1, 1),
|
||||
"update": 1,
|
||||
"update": 0,
|
||||
"values": [Vector2(-4, 0), Vector2(0, 0)]
|
||||
}
|
||||
tracks/1/type = "audio"
|
||||
|
@ -92,10 +92,10 @@ tracks/2/path = NodePath("Anchor:rotation")
|
|||
tracks/2/interp = 1
|
||||
tracks/2/loop_wrap = true
|
||||
tracks/2/keys = {
|
||||
"times": PackedFloat32Array(0, 1, 1.5),
|
||||
"transitions": PackedFloat32Array(1, 1, 1),
|
||||
"times": PackedFloat32Array(0, 0.1, 1, 1.5),
|
||||
"transitions": PackedFloat32Array(1, 1, 1, 1),
|
||||
"update": 0,
|
||||
"values": [6.28319, 6.28319, 0.0]
|
||||
"values": [6.19592, 6.28319, 6.28319, 0.0]
|
||||
}
|
||||
tracks/3/type = "audio"
|
||||
tracks/3/imported = false
|
||||
|
|
|
@ -206,6 +206,11 @@ public partial class Sword : Weapon, IParryable
|
|||
this);
|
||||
}
|
||||
}
|
||||
|
||||
if (Hitbox.Hits.Count > 0)
|
||||
{
|
||||
Character.ApplyImpulse(-Character.Target.Normalized() * Knockback);
|
||||
}
|
||||
}
|
||||
|
||||
public void AttemptParry(Weapon otherWeapon)
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
[gd_scene load_steps=26 format=3 uid="uid://dvqap2uhcah63"]
|
||||
[gd_scene load_steps=25 format=3 uid="uid://dvqap2uhcah63"]
|
||||
|
||||
[ext_resource type="Script" path="res://Items/Weapons/Sword.cs" id="1_mlo73"]
|
||||
[ext_resource type="Resource" uid="uid://cl7jvdu2lnv2d" path="res://Items/Weapons/Sword.tres" id="2_atd4f"]
|
||||
|
@ -16,11 +16,6 @@
|
|||
[ext_resource type="Texture2D" uid="uid://cmvh6pc71ir1m" path="res://Assets/Sprites/sword-swing-large.png" id="10_672jv"]
|
||||
[ext_resource type="AudioStream" uid="uid://qvthq6tppp63" path="res://Assets/Sounds/whoosh.wav" id="10_mfnl7"]
|
||||
|
||||
[sub_resource type="Environment" id="Environment_72txp"]
|
||||
background_mode = 3
|
||||
glow_enabled = true
|
||||
glow_hdr_threshold = 1.42
|
||||
|
||||
[sub_resource type="Curve" id="Curve_4cxtp"]
|
||||
_data = [Vector2(0.00687286, 1), 0.0, 0.0, 0, 0, Vector2(0.879725, 0.190909), -2.93145, -2.93145, 0, 0, Vector2(1, 0.0454545), 0.0483926, 0.0, 0, 0]
|
||||
point_count = 3
|
||||
|
@ -103,6 +98,18 @@ tracks/5/keys = {
|
|||
"update": 1,
|
||||
"values": [true]
|
||||
}
|
||||
tracks/6/type = "value"
|
||||
tracks/6/imported = false
|
||||
tracks/6/enabled = true
|
||||
tracks/6/path = NodePath("SwingSprite:position")
|
||||
tracks/6/interp = 1
|
||||
tracks/6/loop_wrap = true
|
||||
tracks/6/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 0,
|
||||
"values": [Vector2(0, 0)]
|
||||
}
|
||||
|
||||
[sub_resource type="Animation" id="Animation_ameas"]
|
||||
resource_name = "anticipate"
|
||||
|
@ -173,7 +180,7 @@ tracks/0/path = NodePath("Anchor:rotation")
|
|||
tracks/0/interp = 1
|
||||
tracks/0/loop_wrap = true
|
||||
tracks/0/keys = {
|
||||
"times": PackedFloat32Array(0, 0.15, 0.35),
|
||||
"times": PackedFloat32Array(0, 0.1, 0.35),
|
||||
"transitions": PackedFloat32Array(1, 1, 1),
|
||||
"update": 1,
|
||||
"values": [-1.5708, 1.5708, 1.5708]
|
||||
|
@ -209,10 +216,10 @@ tracks/3/path = NodePath("Anchor/Node2D:rotation")
|
|||
tracks/3/interp = 1
|
||||
tracks/3/loop_wrap = true
|
||||
tracks/3/keys = {
|
||||
"times": PackedFloat32Array(0, 0.15),
|
||||
"transitions": PackedFloat32Array(1, 1),
|
||||
"times": PackedFloat32Array(0.1),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 1,
|
||||
"values": [0.0, 2.35619]
|
||||
"values": [2.35619]
|
||||
}
|
||||
tracks/4/type = "method"
|
||||
tracks/4/imported = false
|
||||
|
@ -235,10 +242,34 @@ tracks/5/path = NodePath("Anchor/Node2D/Sprite2D:visible")
|
|||
tracks/5/interp = 1
|
||||
tracks/5/loop_wrap = true
|
||||
tracks/5/keys = {
|
||||
"times": PackedFloat32Array(0, 0.35),
|
||||
"transitions": PackedFloat32Array(1, 1),
|
||||
"times": PackedFloat32Array(0, 0.1, 0.35),
|
||||
"transitions": PackedFloat32Array(1, 1, 1),
|
||||
"update": 1,
|
||||
"values": [true, false]
|
||||
"values": [false, true, false]
|
||||
}
|
||||
tracks/6/type = "value"
|
||||
tracks/6/imported = false
|
||||
tracks/6/enabled = true
|
||||
tracks/6/path = NodePath("SwingSprite:modulate")
|
||||
tracks/6/interp = 1
|
||||
tracks/6/loop_wrap = true
|
||||
tracks/6/keys = {
|
||||
"times": PackedFloat32Array(0, 0.2, 0.35),
|
||||
"transitions": PackedFloat32Array(1, 1, 1),
|
||||
"update": 0,
|
||||
"values": [Color(2, 2, 2, 1), Color(2, 2, 2, 1), Color(2, 2, 2, 0)]
|
||||
}
|
||||
tracks/7/type = "value"
|
||||
tracks/7/imported = false
|
||||
tracks/7/enabled = true
|
||||
tracks/7/path = NodePath("SwingSprite:position")
|
||||
tracks/7/interp = 1
|
||||
tracks/7/loop_wrap = true
|
||||
tracks/7/keys = {
|
||||
"times": PackedFloat32Array(0, 0.2, 0.35),
|
||||
"transitions": PackedFloat32Array(1, 1, 1),
|
||||
"update": 0,
|
||||
"values": [Vector2(0, 0), Vector2(0, 0), Vector2(2, 0)]
|
||||
}
|
||||
|
||||
[sub_resource type="Animation" id="Animation_pclfs"]
|
||||
|
@ -344,9 +375,6 @@ script = ExtResource("5_hmisb")
|
|||
Sword = NodePath("../..")
|
||||
IdleState = NodePath("../Idle")
|
||||
|
||||
[node name="WorldEnvironment" type="WorldEnvironment" parent="."]
|
||||
environment = SubResource("Environment_72txp")
|
||||
|
||||
[node name="Anchor" type="Node2D" parent="."]
|
||||
y_sort_enabled = true
|
||||
rotation = -1.5708
|
||||
|
@ -389,7 +417,6 @@ libraries = {
|
|||
}
|
||||
|
||||
[node name="Hitbox" parent="." instance=ExtResource("3_up3ob")]
|
||||
priority = 5
|
||||
IsDisabled = true
|
||||
|
||||
[node name="CollisionShape2D" parent="Hitbox" index="0"]
|
||||
|
|
|
@ -111,6 +111,7 @@ offset_bottom = -8.0
|
|||
text = "Activate"
|
||||
|
||||
[node name="Sprite2D" type="Sprite2D" parent="."]
|
||||
position = Vector2(0, -4)
|
||||
texture = ExtResource("3_pgkt4")
|
||||
centered = false
|
||||
offset = Vector2(-2, -8)
|
||||
|
|
|
@ -1,13 +1,10 @@
|
|||
[gd_scene load_steps=4 format=3 uid="uid://hm3ek8vqt1d4"]
|
||||
[gd_scene load_steps=3 format=3 uid="uid://hm3ek8vqt1d4"]
|
||||
|
||||
[ext_resource type="Texture2D" uid="uid://dwbrymm3ud5xu" path="res://Assets/Sprites/Props/bookshelf.png" id="1_cnrpk"]
|
||||
|
||||
[sub_resource type="RectangleShape2D" id="RectangleShape2D_wc4oe"]
|
||||
size = Vector2(28, 8)
|
||||
|
||||
[sub_resource type="NavigationPolygon" id="NavigationPolygon_tsfmt"]
|
||||
source_geometry_group_name = &"navigation_polygon_source_group"
|
||||
|
||||
[node name="Bookshelf" type="StaticBody2D"]
|
||||
y_sort_enabled = true
|
||||
|
||||
|
@ -29,18 +26,17 @@ vframes = 2
|
|||
frame = 9
|
||||
|
||||
[node name="TopLeft" type="Sprite2D" parent="."]
|
||||
position = Vector2(-16, -16)
|
||||
position = Vector2(-16, 0)
|
||||
texture = ExtResource("1_cnrpk")
|
||||
centered = false
|
||||
offset = Vector2(0, -16)
|
||||
offset = Vector2(0, -32)
|
||||
hframes = 8
|
||||
vframes = 2
|
||||
|
||||
[node name="TopRight" type="Sprite2D" parent="."]
|
||||
position = Vector2(0, -16)
|
||||
texture = ExtResource("1_cnrpk")
|
||||
centered = false
|
||||
offset = Vector2(0, -16)
|
||||
offset = Vector2(0, -32)
|
||||
hframes = 8
|
||||
vframes = 2
|
||||
frame = 1
|
||||
|
@ -48,6 +44,3 @@ frame = 1
|
|||
[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
|
||||
position = Vector2(0, -4)
|
||||
shape = SubResource("RectangleShape2D_wc4oe")
|
||||
|
||||
[node name="NavigationRegion2D" type="NavigationRegion2D" parent="."]
|
||||
navigation_polygon = SubResource("NavigationPolygon_tsfmt")
|
||||
|
|
|
@ -7,9 +7,8 @@ Forsen-related game
|
|||
## Building
|
||||
|
||||
> [!IMPORTANT]
|
||||
> This is currently being developed with Godot 4.3 dev 3 snapshot, which
|
||||
> includes a fix for C# generics causing problems and resetting properties to
|
||||
> null.
|
||||
> This is currently being developed with Godot 4.3 beta 1, which > includes
|
||||
a fix for C# generics causing problems and resetting properties to > null.
|
||||
|
||||
Requires .NET version >=7.0.
|
||||
|
||||
|
|
|
@ -10,45 +10,62 @@ physics_layer_1/collision_mask = 0
|
|||
[sub_resource type="Environment" id="Environment_pxx66"]
|
||||
background_mode = 3
|
||||
glow_enabled = true
|
||||
glow_hdr_threshold = 1.4
|
||||
glow_hdr_threshold = 1.2
|
||||
|
||||
[node name="TileMap" type="TileMap" node_paths=PackedStringArray("Entities", "Areas", "Spawners", "Markers")]
|
||||
[node name="TileMap" type="Node2D" node_paths=PackedStringArray("Entities", "Areas", "Spawners", "Markers")]
|
||||
process_mode = 1
|
||||
y_sort_enabled = true
|
||||
texture_filter = 3
|
||||
tile_set = SubResource("TileSet_18c7j")
|
||||
format = 2
|
||||
layer_0/name = "z-index 0"
|
||||
layer_0/y_sort_enabled = true
|
||||
layer_1/name = "z-index -1"
|
||||
layer_1/y_sort_enabled = true
|
||||
layer_1/z_index = -1
|
||||
layer_1/tile_data = PackedInt32Array()
|
||||
layer_2/name = "z-index -1 (under)"
|
||||
layer_2/y_sort_enabled = true
|
||||
layer_2/z_index = -1
|
||||
layer_2/tile_data = PackedInt32Array()
|
||||
layer_3/name = "z-index -2"
|
||||
layer_3/y_sort_enabled = true
|
||||
layer_3/z_index = -2
|
||||
layer_3/tile_data = PackedInt32Array()
|
||||
layer_4/name = "z-index -3"
|
||||
layer_4/y_sort_enabled = true
|
||||
layer_4/z_index = -3
|
||||
layer_4/tile_data = PackedInt32Array()
|
||||
layer_5/name = "Lower 1"
|
||||
layer_5/z_index = -4
|
||||
layer_5/tile_data = PackedInt32Array()
|
||||
layer_6/name = "z-index 0 (walls)"
|
||||
layer_6/y_sort_enabled = true
|
||||
layer_6/y_sort_origin = -8
|
||||
layer_6/tile_data = PackedInt32Array()
|
||||
script = ExtResource("2_4m0a1")
|
||||
Entities = NodePath("Entities")
|
||||
Areas = NodePath("Areas")
|
||||
Spawners = NodePath("Spawners")
|
||||
Markers = NodePath("Markers")
|
||||
|
||||
[node name="Layers" type="Node2D" parent="."]
|
||||
y_sort_enabled = true
|
||||
|
||||
[node name="z-index 0" type="TileMapLayer" parent="Layers"]
|
||||
y_sort_enabled = true
|
||||
texture_filter = 3
|
||||
use_parent_material = true
|
||||
tile_set = SubResource("TileSet_18c7j")
|
||||
|
||||
[node name="z-index -1" type="TileMapLayer" parent="Layers"]
|
||||
z_index = -1
|
||||
y_sort_enabled = true
|
||||
use_parent_material = true
|
||||
tile_set = SubResource("TileSet_18c7j")
|
||||
|
||||
[node name="z-index -1 (under)" type="TileMapLayer" parent="Layers"]
|
||||
z_index = -1
|
||||
y_sort_enabled = true
|
||||
use_parent_material = true
|
||||
tile_set = SubResource("TileSet_18c7j")
|
||||
|
||||
[node name="z-index -2" type="TileMapLayer" parent="Layers"]
|
||||
z_index = -2
|
||||
y_sort_enabled = true
|
||||
use_parent_material = true
|
||||
tile_set = SubResource("TileSet_18c7j")
|
||||
|
||||
[node name="z-index -3" type="TileMapLayer" parent="Layers"]
|
||||
z_index = -3
|
||||
y_sort_enabled = true
|
||||
use_parent_material = true
|
||||
tile_set = SubResource("TileSet_18c7j")
|
||||
|
||||
[node name="z-index -4" type="TileMapLayer" parent="Layers"]
|
||||
z_index = -4
|
||||
use_parent_material = true
|
||||
tile_set = SubResource("TileSet_18c7j")
|
||||
|
||||
[node name="z-index 0 (walls)" type="TileMapLayer" parent="Layers"]
|
||||
y_sort_enabled = true
|
||||
use_parent_material = true
|
||||
tile_set = SubResource("TileSet_18c7j")
|
||||
y_sort_origin = -8
|
||||
|
||||
[node name="CanvasModulate" type="CanvasModulate" parent="."]
|
||||
|
||||
[node name="Props" type="Node2D" parent="."]
|
||||
|
|
|
@ -1,7 +1,8 @@
|
|||
[gd_scene load_steps=3 format=3 uid="uid://1pb3mpmrl7lc"]
|
||||
[gd_scene load_steps=4 format=3 uid="uid://1pb3mpmrl7lc"]
|
||||
|
||||
[ext_resource type="Script" path="res://Utils/World.cs" id="1_1k6ew"]
|
||||
[ext_resource type="PackedScene" uid="uid://c271rdjhd1gfo" path="res://UI/Base.tscn" id="2_mm0qt"]
|
||||
[ext_resource type="Script" path="res://addons/phantom_camera/scripts/phantom_camera_host/phantom_camera_host.gd" id="3_ge4f0"]
|
||||
|
||||
[node name="World" type="Node2D" node_paths=PackedStringArray("MusicPlayer")]
|
||||
process_mode = 3
|
||||
|
@ -24,3 +25,8 @@ mouse_filter = 2
|
|||
|
||||
[node name="MusicPlayer" type="AudioStreamPlayer" parent="."]
|
||||
bus = &"Music"
|
||||
|
||||
[node name="Camera2D" type="Camera2D" parent="."]
|
||||
|
||||
[node name="PhantomCameraHost" type="Node" parent="Camera2D"]
|
||||
script = ExtResource("3_ge4f0")
|
||||
|
|
|
@ -1,9 +1,10 @@
|
|||
using Godot;
|
||||
using SupaLidlGame.Extensions;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace SupaLidlGame.Scenes;
|
||||
|
||||
public partial class Map : TileMap
|
||||
public partial class Map : Node2D
|
||||
{
|
||||
[Export]
|
||||
public Node2D Entities { get; set; }
|
||||
|
@ -71,6 +72,17 @@ public partial class Map : TileMap
|
|||
GetNode<Audio.AudioManager>("/root/AudioManager").PlayBackground(Music);
|
||||
}
|
||||
|
||||
public IEnumerable<Characters.Character> GetCharacters()
|
||||
{
|
||||
foreach (var child in Entities.GetChildren())
|
||||
{
|
||||
if (child is Characters.Character c)
|
||||
{
|
||||
yield return c;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public Node SpawnEntity(PackedScene scene)
|
||||
{
|
||||
var instance = scene.Instantiate();
|
||||
|
|
|
@ -0,0 +1,16 @@
|
|||
[gd_resource type="Environment" load_steps=3 format=3 uid="uid://bl15544uvuppq"]
|
||||
|
||||
[sub_resource type="Gradient" id="Gradient_u5tnr"]
|
||||
offsets = PackedFloat32Array(0, 0.933649, 1)
|
||||
colors = PackedColorArray(0, 0, 0, 1, 0.938186, 0.874428, 0.818076, 1, 1, 1, 1, 1)
|
||||
|
||||
[sub_resource type="GradientTexture1D" id="GradientTexture1D_ri0vy"]
|
||||
gradient = SubResource("Gradient_u5tnr")
|
||||
|
||||
[resource]
|
||||
background_mode = 3
|
||||
glow_enabled = true
|
||||
glow_intensity = 4.0
|
||||
adjustment_enabled = true
|
||||
adjustment_saturation = 0.75
|
||||
adjustment_color_correction = SubResource("GradientTexture1D_ri0vy")
|
|
@ -1,25 +1,17 @@
|
|||
[gd_resource type="TileSet" load_steps=12 format=3 uid="uid://l61kbx31ug4p"]
|
||||
[gd_resource type="TileSet" load_steps=14 format=3 uid="uid://l61kbx31ug4p"]
|
||||
|
||||
[ext_resource type="Texture2D" uid="uid://b0yiy7w8nxmas" path="res://Assets/Sprites/arena-tileset.png" id="1_kud44"]
|
||||
[ext_resource type="Texture2D" uid="uid://j1ekk1ppenm4" path="res://Assets/Sprites/grass-tileset.png" id="2_lihbs"]
|
||||
[ext_resource type="Texture2D" uid="uid://udgjrcaexuaq" path="res://Assets/Sprites/Props/arena-arches.png" id="3_hbylw"]
|
||||
[ext_resource type="Texture2D" uid="uid://bth1v3dyuqwg6" path="res://Assets/Sprites/arena-tileset-new.png" id="4_n70qi"]
|
||||
|
||||
[sub_resource type="NavigationPolygon" id="NavigationPolygon_7lhug"]
|
||||
vertices = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
|
||||
polygons = Array[PackedInt32Array]([PackedInt32Array(0, 1, 2, 3)])
|
||||
outlines = Array[PackedVector2Array]([PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)])
|
||||
[sub_resource type="NavigationPolygon" id="NavigationPolygon_7s0wj"]
|
||||
source_geometry_group_name = &"navigation_polygon_source_group"
|
||||
|
||||
[sub_resource type="NavigationPolygon" id="NavigationPolygon_d0snv"]
|
||||
vertices = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
|
||||
polygons = Array[PackedInt32Array]([PackedInt32Array(0, 1, 2, 3)])
|
||||
outlines = Array[PackedVector2Array]([PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)])
|
||||
[sub_resource type="NavigationPolygon" id="NavigationPolygon_7vkqx"]
|
||||
source_geometry_group_name = &"navigation_polygon_source_group"
|
||||
|
||||
[sub_resource type="NavigationPolygon" id="NavigationPolygon_m43r7"]
|
||||
vertices = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
|
||||
polygons = Array[PackedInt32Array]([PackedInt32Array(0, 1, 2, 3)])
|
||||
outlines = Array[PackedVector2Array]([PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)])
|
||||
[sub_resource type="NavigationPolygon" id="NavigationPolygon_pxj45"]
|
||||
source_geometry_group_name = &"navigation_polygon_source_group"
|
||||
|
||||
[sub_resource type="CanvasTexture" id="CanvasTexture_3n6aa"]
|
||||
|
@ -30,8 +22,6 @@ texture = SubResource("CanvasTexture_3n6aa")
|
|||
0:0/0 = 0
|
||||
0:0/0/terrain_set = 0
|
||||
0:0/0/terrain = 0
|
||||
0:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
|
||||
0:0/0/physics_layer_0/angular_velocity = 0.0
|
||||
0:0/0/terrains_peering_bit/right_side = 0
|
||||
0:0/0/terrains_peering_bit/bottom_right_corner = 0
|
||||
0:0/0/terrains_peering_bit/bottom_side = 0
|
||||
|
@ -40,12 +30,10 @@ texture = SubResource("CanvasTexture_3n6aa")
|
|||
0:0/0/terrains_peering_bit/top_left_corner = 0
|
||||
0:0/0/terrains_peering_bit/top_side = 0
|
||||
0:0/0/terrains_peering_bit/top_right_corner = 0
|
||||
0:0/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_7lhug")
|
||||
0:0/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_7s0wj")
|
||||
1:1/0 = 0
|
||||
1:1/0/terrain_set = 0
|
||||
1:1/0/terrain = 0
|
||||
1:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
|
||||
1:1/0/physics_layer_0/angular_velocity = 0.0
|
||||
1:1/0/terrains_peering_bit/right_side = 0
|
||||
1:1/0/terrains_peering_bit/bottom_right_corner = 0
|
||||
1:1/0/terrains_peering_bit/bottom_side = 0
|
||||
|
@ -54,12 +42,10 @@ texture = SubResource("CanvasTexture_3n6aa")
|
|||
1:1/0/terrains_peering_bit/top_left_corner = 0
|
||||
1:1/0/terrains_peering_bit/top_side = 0
|
||||
1:1/0/terrains_peering_bit/top_right_corner = 0
|
||||
1:1/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_7lhug")
|
||||
1:1/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_7s0wj")
|
||||
2:1/0 = 0
|
||||
2:1/0/terrain_set = 0
|
||||
2:1/0/terrain = 1
|
||||
2:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
|
||||
2:1/0/physics_layer_0/angular_velocity = 0.0
|
||||
2:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
|
||||
2:1/0/terrains_peering_bit/right_side = 1
|
||||
2:1/0/terrains_peering_bit/bottom_right_corner = 0
|
||||
|
@ -71,17 +57,14 @@ texture = SubResource("CanvasTexture_3n6aa")
|
|||
2:1/0/terrains_peering_bit/top_right_corner = 1
|
||||
2:2/0 = 0
|
||||
2:2/0/terrain_set = 0
|
||||
2:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
|
||||
2:2/0/physics_layer_0/angular_velocity = 0.0
|
||||
2:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, 0, 8, 0, 8, 8, -8, 8)
|
||||
2:2/0/terrains_peering_bit/bottom_right_corner = 1
|
||||
2:2/0/terrains_peering_bit/bottom_side = 1
|
||||
2:2/0/terrains_peering_bit/bottom_left_corner = 1
|
||||
2:2/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_7s0wj")
|
||||
1:0/0 = 0
|
||||
1:0/0/terrain_set = 0
|
||||
1:0/0/terrain = 0
|
||||
1:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
|
||||
1:0/0/physics_layer_0/angular_velocity = 0.0
|
||||
1:0/0/terrains_peering_bit/right_side = 0
|
||||
1:0/0/terrains_peering_bit/bottom_right_corner = 0
|
||||
1:0/0/terrains_peering_bit/bottom_side = 0
|
||||
|
@ -90,12 +73,10 @@ texture = SubResource("CanvasTexture_3n6aa")
|
|||
1:0/0/terrains_peering_bit/top_left_corner = 0
|
||||
1:0/0/terrains_peering_bit/top_side = 0
|
||||
1:0/0/terrains_peering_bit/top_right_corner = 0
|
||||
1:0/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_7lhug")
|
||||
1:0/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_7s0wj")
|
||||
0:1/0 = 0
|
||||
0:1/0/terrain_set = 0
|
||||
0:1/0/terrain = 0
|
||||
0:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
|
||||
0:1/0/physics_layer_0/angular_velocity = 0.0
|
||||
0:1/0/terrains_peering_bit/right_side = 0
|
||||
0:1/0/terrains_peering_bit/bottom_right_corner = 0
|
||||
0:1/0/terrains_peering_bit/bottom_side = 0
|
||||
|
@ -104,59 +85,35 @@ texture = SubResource("CanvasTexture_3n6aa")
|
|||
0:1/0/terrains_peering_bit/top_left_corner = 0
|
||||
0:1/0/terrains_peering_bit/top_side = 0
|
||||
0:1/0/terrains_peering_bit/top_right_corner = 0
|
||||
0:1/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_7lhug")
|
||||
0:1/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_7s0wj")
|
||||
0:2/0 = 0
|
||||
0:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
|
||||
0:2/0/physics_layer_0/angular_velocity = 0.0
|
||||
0:3/0 = 0
|
||||
0:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
|
||||
0:3/0/physics_layer_0/angular_velocity = 0.0
|
||||
1:3/0 = 0
|
||||
1:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
|
||||
1:3/0/physics_layer_0/angular_velocity = 0.0
|
||||
1:2/0 = 0
|
||||
1:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
|
||||
1:2/0/physics_layer_0/angular_velocity = 0.0
|
||||
1:2/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_7s0wj")
|
||||
2:0/0 = 0
|
||||
2:0/0/terrain_set = 0
|
||||
2:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
|
||||
2:0/0/physics_layer_0/angular_velocity = 0.0
|
||||
2:0/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_m43r7")
|
||||
2:0/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_7s0wj")
|
||||
3:0/0 = 0
|
||||
3:0/0/terrain_set = 0
|
||||
3:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
|
||||
3:0/0/physics_layer_0/angular_velocity = 0.0
|
||||
3:0/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_m43r7")
|
||||
3:0/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_7s0wj")
|
||||
4:0/0 = 0
|
||||
4:0/0/terrain_set = 0
|
||||
4:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
|
||||
4:0/0/physics_layer_0/angular_velocity = 0.0
|
||||
4:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
|
||||
4:0/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_7s0wj")
|
||||
5:0/0 = 0
|
||||
5:0/0/terrain_set = 0
|
||||
5:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
|
||||
5:0/0/physics_layer_0/angular_velocity = 0.0
|
||||
5:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
|
||||
6:0/0 = 0
|
||||
6:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
|
||||
6:0/0/physics_layer_0/angular_velocity = 0.0
|
||||
6:1/0 = 0
|
||||
6:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
|
||||
6:1/0/physics_layer_0/angular_velocity = 0.0
|
||||
6:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
|
||||
5:1/0 = 0
|
||||
5:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
|
||||
5:1/0/physics_layer_0/angular_velocity = 0.0
|
||||
5:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
|
||||
4:1/0 = 0
|
||||
4:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
|
||||
4:1/0/physics_layer_0/angular_velocity = 0.0
|
||||
4:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
|
||||
3:1/0 = 0
|
||||
3:1/0/terrain_set = 0
|
||||
3:1/0/terrain = 1
|
||||
3:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
|
||||
3:1/0/physics_layer_0/angular_velocity = 0.0
|
||||
3:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
|
||||
3:1/0/terrains_peering_bit/right_side = 1
|
||||
3:1/0/terrains_peering_bit/bottom_right_corner = 0
|
||||
|
@ -168,74 +125,53 @@ texture = SubResource("CanvasTexture_3n6aa")
|
|||
3:1/0/terrains_peering_bit/top_right_corner = 1
|
||||
3:2/0 = 0
|
||||
3:2/0/terrain_set = 0
|
||||
3:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
|
||||
3:2/0/physics_layer_0/angular_velocity = 0.0
|
||||
3:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 0, -8, 0)
|
||||
3:2/0/terrains_peering_bit/top_left_corner = 0
|
||||
3:2/0/terrains_peering_bit/top_side = 0
|
||||
3:2/0/terrains_peering_bit/top_right_corner = 0
|
||||
3:2/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_7s0wj")
|
||||
3:3/0 = 0
|
||||
3:3/0/terrain_set = 0
|
||||
3:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
|
||||
3:3/0/physics_layer_0/angular_velocity = 0.0
|
||||
3:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(0, -8, 8, -8, 8, 8, 0, 8)
|
||||
3:3/0/terrains_peering_bit/right_side = 0
|
||||
3:3/0/terrains_peering_bit/bottom_right_corner = 0
|
||||
3:3/0/terrains_peering_bit/top_right_corner = 1
|
||||
2:3/0 = 0
|
||||
2:3/0/terrain_set = 0
|
||||
2:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
|
||||
2:3/0/physics_layer_0/angular_velocity = 0.0
|
||||
2:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 0, -8, 0, 8, -8, 8)
|
||||
2:3/0/terrains_peering_bit/bottom_left_corner = 0
|
||||
2:3/0/terrains_peering_bit/left_side = 0
|
||||
2:3/0/terrains_peering_bit/top_left_corner = 1
|
||||
4:3/0 = 0
|
||||
4:3/0/terrain_set = 0
|
||||
4:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
|
||||
4:3/0/physics_layer_0/angular_velocity = 0.0
|
||||
4:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(8, -8, 8, 0, 0, 0, 0, -8)
|
||||
4:3/0/terrains_peering_bit/top_right_corner = 0
|
||||
4:2/0 = 0
|
||||
4:2/0/terrain_set = 0
|
||||
4:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
|
||||
4:2/0/physics_layer_0/angular_velocity = 0.0
|
||||
4:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(0, 0, 8, 0, 8, 8, 0, 8)
|
||||
4:2/0/terrains_peering_bit/bottom_right_corner = 1
|
||||
4:2/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_7s0wj")
|
||||
5:2/0 = 0
|
||||
5:2/0/terrain_set = 0
|
||||
5:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
|
||||
5:2/0/physics_layer_0/angular_velocity = 0.0
|
||||
5:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, 0, 0, 0, 0, 8, -8, 8)
|
||||
5:2/0/terrains_peering_bit/bottom_left_corner = 1
|
||||
5:2/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_7s0wj")
|
||||
5:3/0 = 0
|
||||
5:3/0/terrain_set = 0
|
||||
5:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
|
||||
5:3/0/physics_layer_0/angular_velocity = 0.0
|
||||
5:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 0, -8, 0, 0, -8, 0)
|
||||
5:3/0/terrains_peering_bit/top_left_corner = 0
|
||||
6:3/0 = 0
|
||||
6:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
|
||||
6:3/0/physics_layer_0/angular_velocity = 0.0
|
||||
6:2/0 = 0
|
||||
6:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
|
||||
6:2/0/physics_layer_0/angular_velocity = 0.0
|
||||
6:2/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_7s0wj")
|
||||
7:2/0 = 0
|
||||
7:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
|
||||
7:2/0/physics_layer_0/angular_velocity = 0.0
|
||||
7:2/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_7s0wj")
|
||||
7:3/0 = 0
|
||||
7:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
|
||||
7:3/0/physics_layer_0/angular_velocity = 0.0
|
||||
7:0/size_in_atlas = Vector2i(1, 2)
|
||||
7:0/0 = 0
|
||||
7:0/0/texture_origin = Vector2i(0, 8)
|
||||
7:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
|
||||
7:0/0/physics_layer_0/angular_velocity = 0.0
|
||||
7:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -5, 8, -5, 8, 4, 4, 8, -4, 8, -8, 4)
|
||||
0:4/0 = 0
|
||||
0:4/0/terrain_set = 0
|
||||
0:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
|
||||
0:4/0/physics_layer_0/angular_velocity = 0.0
|
||||
0:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
|
||||
0:4/0/terrains_peering_bit/bottom_left_corner = 0
|
||||
0:4/0/terrains_peering_bit/left_side = 0
|
||||
|
@ -244,8 +180,6 @@ texture = SubResource("CanvasTexture_3n6aa")
|
|||
0:4/0/terrains_peering_bit/top_right_corner = 0
|
||||
0:5/0 = 0
|
||||
0:5/0/terrain_set = 0
|
||||
0:5/0/physics_layer_0/linear_velocity = Vector2(0, 0)
|
||||
0:5/0/physics_layer_0/angular_velocity = 0.0
|
||||
0:5/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
|
||||
0:5/0/terrains_peering_bit/bottom_right_corner = 1
|
||||
0:5/0/terrains_peering_bit/bottom_side = 1
|
||||
|
@ -254,8 +188,6 @@ texture = SubResource("CanvasTexture_3n6aa")
|
|||
0:5/0/terrains_peering_bit/top_left_corner = 0
|
||||
1:5/0 = 0
|
||||
1:5/0/terrain_set = 0
|
||||
1:5/0/physics_layer_0/linear_velocity = Vector2(0, 0)
|
||||
1:5/0/physics_layer_0/angular_velocity = 0.0
|
||||
1:5/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
|
||||
1:5/0/terrains_peering_bit/right_side = 0
|
||||
1:5/0/terrains_peering_bit/bottom_right_corner = 1
|
||||
|
@ -264,8 +196,6 @@ texture = SubResource("CanvasTexture_3n6aa")
|
|||
1:5/0/terrains_peering_bit/top_right_corner = 0
|
||||
1:4/0 = 0
|
||||
1:4/0/terrain_set = 0
|
||||
1:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
|
||||
1:4/0/physics_layer_0/angular_velocity = 0.0
|
||||
1:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
|
||||
1:4/0/terrains_peering_bit/right_side = 0
|
||||
1:4/0/terrains_peering_bit/bottom_right_corner = 0
|
||||
|
@ -275,100 +205,61 @@ texture = SubResource("CanvasTexture_3n6aa")
|
|||
2:4/size_in_atlas = Vector2i(1, 3)
|
||||
2:4/0 = 0
|
||||
2:4/0/texture_origin = Vector2i(0, 16)
|
||||
2:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
|
||||
2:4/0/physics_layer_0/angular_velocity = 0.0
|
||||
3:4/size_in_atlas = Vector2i(2, 2)
|
||||
3:4/0 = 0
|
||||
3:4/0/texture_origin = Vector2i(8, 9)
|
||||
3:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
|
||||
3:4/0/physics_layer_0/angular_velocity = 0.0
|
||||
5:4/size_in_atlas = Vector2i(2, 2)
|
||||
5:4/0 = 0
|
||||
5:4/0/texture_origin = Vector2i(8, 9)
|
||||
5:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
|
||||
5:4/0/physics_layer_0/angular_velocity = 0.0
|
||||
7:4/size_in_atlas = Vector2i(1, 2)
|
||||
7:4/0 = 0
|
||||
7:4/0/texture_origin = Vector2i(0, 8)
|
||||
7:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
|
||||
7:4/0/physics_layer_0/angular_velocity = 0.0
|
||||
3:6/0 = 0
|
||||
3:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
|
||||
3:6/0/physics_layer_0/angular_velocity = 0.0
|
||||
3:6/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
|
||||
4:6/0 = 0
|
||||
4:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
|
||||
4:6/0/physics_layer_0/angular_velocity = 0.0
|
||||
4:6/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
|
||||
4:7/0 = 0
|
||||
4:7/0/physics_layer_0/linear_velocity = Vector2(0, 0)
|
||||
4:7/0/physics_layer_0/angular_velocity = 0.0
|
||||
4:7/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
|
||||
3:7/0 = 0
|
||||
3:7/0/physics_layer_0/linear_velocity = Vector2(0, 0)
|
||||
3:7/0/physics_layer_0/angular_velocity = 0.0
|
||||
3:7/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
|
||||
10:1/0 = 0
|
||||
10:1/0/terrain_set = 1
|
||||
10:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
|
||||
10:1/0/physics_layer_0/angular_velocity = 0.0
|
||||
10:1/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_d0snv")
|
||||
10:1/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_7s0wj")
|
||||
11:1/0 = 0
|
||||
11:1/0/terrain_set = 1
|
||||
11:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
|
||||
11:1/0/physics_layer_0/angular_velocity = 0.0
|
||||
11:1/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_d0snv")
|
||||
11:1/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_7s0wj")
|
||||
11:2/0 = 0
|
||||
11:2/0/terrain_set = 1
|
||||
11:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
|
||||
11:2/0/physics_layer_0/angular_velocity = 0.0
|
||||
11:2/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_d0snv")
|
||||
11:2/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_7s0wj")
|
||||
10:2/0 = 0
|
||||
10:2/0/terrain_set = 1
|
||||
10:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
|
||||
10:2/0/physics_layer_0/angular_velocity = 0.0
|
||||
10:2/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_d0snv")
|
||||
10:2/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_7s0wj")
|
||||
8:1/0 = 0
|
||||
8:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
|
||||
8:1/0/physics_layer_0/angular_velocity = 0.0
|
||||
8:2/0 = 0
|
||||
8:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
|
||||
8:2/0/physics_layer_0/angular_velocity = 0.0
|
||||
8:2/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_7s0wj")
|
||||
9:1/0 = 0
|
||||
9:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
|
||||
9:1/0/physics_layer_0/angular_velocity = 0.0
|
||||
9:1/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_7s0wj")
|
||||
9:2/0 = 0
|
||||
9:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
|
||||
9:2/0/physics_layer_0/angular_velocity = 0.0
|
||||
9:2/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_7s0wj")
|
||||
9:5/0 = 0
|
||||
9:5/0/terrain_set = 1
|
||||
9:5/0/physics_layer_0/linear_velocity = Vector2(0, 0)
|
||||
9:5/0/physics_layer_0/angular_velocity = 0.0
|
||||
9:5/0/terrains_peering_bit/bottom_right_corner = 0
|
||||
10:5/0 = 0
|
||||
10:5/0/terrain_set = 1
|
||||
10:5/0/physics_layer_0/linear_velocity = Vector2(0, 0)
|
||||
10:5/0/physics_layer_0/angular_velocity = 0.0
|
||||
10:5/0/terrains_peering_bit/bottom_right_corner = 0
|
||||
10:5/0/terrains_peering_bit/bottom_side = 0
|
||||
10:5/0/terrains_peering_bit/bottom_left_corner = 0
|
||||
11:5/0 = 0
|
||||
11:5/0/terrain_set = 1
|
||||
11:5/0/physics_layer_0/linear_velocity = Vector2(0, 0)
|
||||
11:5/0/physics_layer_0/angular_velocity = 0.0
|
||||
11:5/0/terrains_peering_bit/bottom_left_corner = 0
|
||||
11:6/0 = 0
|
||||
11:6/0/terrain_set = 1
|
||||
11:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
|
||||
11:6/0/physics_layer_0/angular_velocity = 0.0
|
||||
11:6/0/terrains_peering_bit/bottom_left_corner = 0
|
||||
11:6/0/terrains_peering_bit/left_side = 0
|
||||
11:6/0/terrains_peering_bit/top_left_corner = 0
|
||||
10:6/0 = 0
|
||||
10:6/0/terrain_set = 1
|
||||
10:6/0/terrain = 0
|
||||
10:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
|
||||
10:6/0/physics_layer_0/angular_velocity = 0.0
|
||||
10:6/0/terrains_peering_bit/right_side = 0
|
||||
10:6/0/terrains_peering_bit/bottom_right_corner = 0
|
||||
10:6/0/terrains_peering_bit/bottom_side = 0
|
||||
|
@ -379,52 +270,37 @@ texture = SubResource("CanvasTexture_3n6aa")
|
|||
10:6/0/terrains_peering_bit/top_right_corner = 0
|
||||
9:6/0 = 0
|
||||
9:6/0/terrain_set = 1
|
||||
9:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
|
||||
9:6/0/physics_layer_0/angular_velocity = 0.0
|
||||
9:6/0/terrains_peering_bit/right_side = 0
|
||||
9:6/0/terrains_peering_bit/bottom_right_corner = 0
|
||||
9:6/0/terrains_peering_bit/top_right_corner = 0
|
||||
9:6/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_pxj45")
|
||||
9:7/0 = 0
|
||||
9:7/0/terrain_set = 1
|
||||
9:7/0/physics_layer_0/linear_velocity = Vector2(0, 0)
|
||||
9:7/0/physics_layer_0/angular_velocity = 0.0
|
||||
9:7/0/terrains_peering_bit/top_right_corner = 0
|
||||
10:7/0 = 0
|
||||
10:7/0/terrain_set = 1
|
||||
10:7/0/physics_layer_0/linear_velocity = Vector2(0, 0)
|
||||
10:7/0/physics_layer_0/angular_velocity = 0.0
|
||||
10:7/0/terrains_peering_bit/top_left_corner = 0
|
||||
10:7/0/terrains_peering_bit/top_side = 0
|
||||
10:7/0/terrains_peering_bit/top_right_corner = 0
|
||||
11:7/0 = 0
|
||||
11:7/0/terrain_set = 1
|
||||
11:7/0/physics_layer_0/linear_velocity = Vector2(0, 0)
|
||||
11:7/0/physics_layer_0/angular_velocity = 0.0
|
||||
11:7/0/terrains_peering_bit/top_left_corner = 0
|
||||
12:5/0 = 0
|
||||
12:5/0/terrain_set = 1
|
||||
12:5/0/physics_layer_0/linear_velocity = Vector2(0, 0)
|
||||
12:5/0/physics_layer_0/angular_velocity = 0.0
|
||||
12:5/0/terrains_peering_bit/bottom_right_corner = 1
|
||||
13:5/0 = 0
|
||||
13:5/0/terrain_set = 1
|
||||
13:5/0/physics_layer_0/linear_velocity = Vector2(0, 0)
|
||||
13:5/0/physics_layer_0/angular_velocity = 0.0
|
||||
13:5/0/terrains_peering_bit/bottom_right_corner = 1
|
||||
13:5/0/terrains_peering_bit/bottom_side = 1
|
||||
13:5/0/terrains_peering_bit/bottom_left_corner = 1
|
||||
14:6/0 = 0
|
||||
14:6/0/terrain_set = 1
|
||||
14:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
|
||||
14:6/0/physics_layer_0/angular_velocity = 0.0
|
||||
14:6/0/terrains_peering_bit/bottom_left_corner = 1
|
||||
14:6/0/terrains_peering_bit/left_side = 1
|
||||
14:6/0/terrains_peering_bit/top_left_corner = 1
|
||||
13:6/0 = 0
|
||||
13:6/0/terrain_set = 1
|
||||
13:6/0/terrain = 1
|
||||
13:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
|
||||
13:6/0/physics_layer_0/angular_velocity = 0.0
|
||||
13:6/0/terrains_peering_bit/right_side = 1
|
||||
13:6/0/terrains_peering_bit/bottom_right_corner = 1
|
||||
13:6/0/terrains_peering_bit/bottom_side = 1
|
||||
|
@ -435,70 +311,43 @@ texture = SubResource("CanvasTexture_3n6aa")
|
|||
13:6/0/terrains_peering_bit/top_right_corner = 1
|
||||
12:6/0 = 0
|
||||
12:6/0/terrain_set = 1
|
||||
12:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
|
||||
12:6/0/physics_layer_0/angular_velocity = 0.0
|
||||
12:6/0/terrains_peering_bit/right_side = 1
|
||||
12:6/0/terrains_peering_bit/bottom_right_corner = 1
|
||||
12:6/0/terrains_peering_bit/top_right_corner = 1
|
||||
12:7/0 = 0
|
||||
12:7/0/terrain_set = 1
|
||||
12:7/0/physics_layer_0/linear_velocity = Vector2(0, 0)
|
||||
12:7/0/physics_layer_0/angular_velocity = 0.0
|
||||
12:7/0/terrains_peering_bit/top_right_corner = 1
|
||||
13:7/0 = 0
|
||||
13:7/0/terrain_set = 1
|
||||
13:7/0/physics_layer_0/linear_velocity = Vector2(0, 0)
|
||||
13:7/0/physics_layer_0/angular_velocity = 0.0
|
||||
13:7/0/terrains_peering_bit/top_left_corner = 1
|
||||
13:7/0/terrains_peering_bit/top_side = 1
|
||||
13:7/0/terrains_peering_bit/top_right_corner = 1
|
||||
14:7/0 = 0
|
||||
14:7/0/terrain_set = 1
|
||||
14:7/0/physics_layer_0/linear_velocity = Vector2(0, 0)
|
||||
14:7/0/physics_layer_0/angular_velocity = 0.0
|
||||
14:7/0/terrains_peering_bit/top_left_corner = 1
|
||||
14:5/0 = 0
|
||||
14:5/0/terrain_set = 1
|
||||
14:5/0/physics_layer_0/linear_velocity = Vector2(0, 0)
|
||||
14:5/0/physics_layer_0/angular_velocity = 0.0
|
||||
14:5/0/terrains_peering_bit/bottom_left_corner = 1
|
||||
5:7/0 = 0
|
||||
5:7/0/physics_layer_0/linear_velocity = Vector2(0, 0)
|
||||
5:7/0/physics_layer_0/angular_velocity = 0.0
|
||||
5:7/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
|
||||
5:6/0 = 0
|
||||
5:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
|
||||
5:6/0/physics_layer_0/angular_velocity = 0.0
|
||||
5:6/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
|
||||
6:6/0 = 0
|
||||
6:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
|
||||
6:6/0/physics_layer_0/angular_velocity = 0.0
|
||||
6:6/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
|
||||
6:7/0 = 0
|
||||
6:7/0/physics_layer_0/linear_velocity = Vector2(0, 0)
|
||||
6:7/0/physics_layer_0/angular_velocity = 0.0
|
||||
6:7/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
|
||||
7:7/0 = 0
|
||||
7:7/0/physics_layer_0/linear_velocity = Vector2(0, 0)
|
||||
7:7/0/physics_layer_0/angular_velocity = 0.0
|
||||
7:7/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
|
||||
7:7/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_7vkqx")
|
||||
8:7/0 = 0
|
||||
8:7/0/physics_layer_0/linear_velocity = Vector2(0, 0)
|
||||
8:7/0/physics_layer_0/angular_velocity = 0.0
|
||||
8:7/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
|
||||
8:6/0 = 0
|
||||
8:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
|
||||
8:6/0/physics_layer_0/angular_velocity = 0.0
|
||||
8:6/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
|
||||
12:0/0 = 0
|
||||
12:0/0/y_sort_origin = 8
|
||||
12:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
|
||||
12:0/0/physics_layer_0/angular_velocity = 0.0
|
||||
12:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, 2, 8, 2, 8, 8, -8, 8)
|
||||
13:0/0 = 0
|
||||
13:0/0/y_sort_origin = 8
|
||||
13:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
|
||||
13:0/0/physics_layer_0/angular_velocity = 0.0
|
||||
13:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, 2, 8, 2, 8, 8, -8, 8)
|
||||
|
||||
[sub_resource type="NavigationPolygon" id="NavigationPolygon_que0c"]
|
||||
|
@ -510,213 +359,271 @@ source_geometry_group_name = &"navigation_polygon_source_group"
|
|||
[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_mdfpe"]
|
||||
texture = ExtResource("2_lihbs")
|
||||
0:0/0 = 0
|
||||
0:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
|
||||
0:0/0/physics_layer_0/angular_velocity = 0.0
|
||||
0:0/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_que0c")
|
||||
1:0/0 = 0
|
||||
1:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
|
||||
1:0/0/physics_layer_0/angular_velocity = 0.0
|
||||
1:0/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_que0c")
|
||||
2:0/0 = 0
|
||||
2:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
|
||||
2:0/0/physics_layer_0/angular_velocity = 0.0
|
||||
2:0/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_que0c")
|
||||
3:0/0 = 0
|
||||
3:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
|
||||
3:0/0/physics_layer_0/angular_velocity = 0.0
|
||||
3:0/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_que0c")
|
||||
4:0/0 = 0
|
||||
4:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
|
||||
4:0/0/physics_layer_0/angular_velocity = 0.0
|
||||
4:0/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_que0c")
|
||||
5:0/0 = 0
|
||||
5:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
|
||||
5:0/0/physics_layer_0/angular_velocity = 0.0
|
||||
5:0/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_que0c")
|
||||
6:0/0 = 0
|
||||
6:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
|
||||
6:0/0/physics_layer_0/angular_velocity = 0.0
|
||||
6:0/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_que0c")
|
||||
7:0/0 = 0
|
||||
7:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
|
||||
7:0/0/physics_layer_0/angular_velocity = 0.0
|
||||
7:0/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_que0c")
|
||||
7:1/0 = 0
|
||||
7:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
|
||||
7:1/0/physics_layer_0/angular_velocity = 0.0
|
||||
7:1/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_que0c")
|
||||
7:2/0 = 0
|
||||
7:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
|
||||
7:2/0/physics_layer_0/angular_velocity = 0.0
|
||||
7:2/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_que0c")
|
||||
7:3/0 = 0
|
||||
7:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
|
||||
7:3/0/physics_layer_0/angular_velocity = 0.0
|
||||
7:3/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_que0c")
|
||||
7:4/0 = 0
|
||||
7:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
|
||||
7:4/0/physics_layer_0/angular_velocity = 0.0
|
||||
7:4/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_que0c")
|
||||
6:4/0 = 0
|
||||
6:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
|
||||
6:4/0/physics_layer_0/angular_velocity = 0.0
|
||||
6:4/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_que0c")
|
||||
5:4/0 = 0
|
||||
5:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
|
||||
5:4/0/physics_layer_0/angular_velocity = 0.0
|
||||
5:4/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_que0c")
|
||||
4:4/0 = 0
|
||||
4:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
|
||||
4:4/0/physics_layer_0/angular_velocity = 0.0
|
||||
4:4/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_que0c")
|
||||
3:4/0 = 0
|
||||
3:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
|
||||
3:4/0/physics_layer_0/angular_velocity = 0.0
|
||||
3:4/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_que0c")
|
||||
2:4/0 = 0
|
||||
2:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
|
||||
2:4/0/physics_layer_0/angular_velocity = 0.0
|
||||
2:4/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_que0c")
|
||||
1:4/0 = 0
|
||||
1:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
|
||||
1:4/0/physics_layer_0/angular_velocity = 0.0
|
||||
1:4/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_que0c")
|
||||
0:4/0 = 0
|
||||
0:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
|
||||
0:4/0/physics_layer_0/angular_velocity = 0.0
|
||||
0:4/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_que0c")
|
||||
0:3/0 = 0
|
||||
0:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
|
||||
0:3/0/physics_layer_0/angular_velocity = 0.0
|
||||
0:3/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_que0c")
|
||||
1:2/0 = 0
|
||||
1:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
|
||||
1:2/0/physics_layer_0/angular_velocity = 0.0
|
||||
1:2/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_que0c")
|
||||
1:1/0 = 0
|
||||
1:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
|
||||
1:1/0/physics_layer_0/angular_velocity = 0.0
|
||||
1:1/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_que0c")
|
||||
0:1/0 = 0
|
||||
0:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
|
||||
0:1/0/physics_layer_0/angular_velocity = 0.0
|
||||
0:1/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_que0c")
|
||||
0:2/0 = 0
|
||||
0:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
|
||||
0:2/0/physics_layer_0/angular_velocity = 0.0
|
||||
0:2/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_que0c")
|
||||
2:3/0 = 0
|
||||
2:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
|
||||
2:3/0/physics_layer_0/angular_velocity = 0.0
|
||||
2:3/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_que0c")
|
||||
3:3/0 = 0
|
||||
3:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
|
||||
3:3/0/physics_layer_0/angular_velocity = 0.0
|
||||
3:3/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_que0c")
|
||||
1:3/0 = 0
|
||||
1:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
|
||||
1:3/0/physics_layer_0/angular_velocity = 0.0
|
||||
1:3/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_que0c")
|
||||
2:2/0 = 0
|
||||
2:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
|
||||
2:2/0/physics_layer_0/angular_velocity = 0.0
|
||||
2:2/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_que0c")
|
||||
3:1/0 = 0
|
||||
3:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
|
||||
3:1/0/physics_layer_0/angular_velocity = 0.0
|
||||
3:1/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_que0c")
|
||||
4:1/0 = 0
|
||||
4:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
|
||||
4:1/0/physics_layer_0/angular_velocity = 0.0
|
||||
4:1/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_que0c")
|
||||
2:1/0 = 0
|
||||
2:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
|
||||
2:1/0/physics_layer_0/angular_velocity = 0.0
|
||||
2:1/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_que0c")
|
||||
4:2/0 = 0
|
||||
4:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
|
||||
4:2/0/physics_layer_0/angular_velocity = 0.0
|
||||
4:2/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_que0c")
|
||||
5:2/0 = 0
|
||||
5:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
|
||||
5:2/0/physics_layer_0/angular_velocity = 0.0
|
||||
5:2/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_que0c")
|
||||
3:2/0 = 0
|
||||
3:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
|
||||
3:2/0/physics_layer_0/angular_velocity = 0.0
|
||||
3:2/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_que0c")
|
||||
6:3/0 = 0
|
||||
6:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
|
||||
6:3/0/physics_layer_0/angular_velocity = 0.0
|
||||
6:3/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_que0c")
|
||||
5:3/0 = 0
|
||||
5:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
|
||||
5:3/0/physics_layer_0/angular_velocity = 0.0
|
||||
5:3/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_que0c")
|
||||
4:3/0 = 0
|
||||
4:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
|
||||
4:3/0/physics_layer_0/angular_velocity = 0.0
|
||||
4:3/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_que0c")
|
||||
6:2/0 = 0
|
||||
6:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
|
||||
6:2/0/physics_layer_0/angular_velocity = 0.0
|
||||
6:2/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_que0c")
|
||||
6:1/0 = 0
|
||||
6:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
|
||||
6:1/0/physics_layer_0/angular_velocity = 0.0
|
||||
6:1/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_que0c")
|
||||
5:1/0 = 0
|
||||
5:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
|
||||
5:1/0/physics_layer_0/angular_velocity = 0.0
|
||||
5:1/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_que0c")
|
||||
0:5/0 = 0
|
||||
0:5/0/physics_layer_0/linear_velocity = Vector2(0, 0)
|
||||
0:5/0/physics_layer_0/angular_velocity = 0.0
|
||||
1:5/0 = 0
|
||||
1:5/0/physics_layer_0/linear_velocity = Vector2(0, 0)
|
||||
1:5/0/physics_layer_0/angular_velocity = 0.0
|
||||
0:6/0 = 0
|
||||
0:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
|
||||
0:6/0/physics_layer_0/angular_velocity = 0.0
|
||||
0:7/0 = 0
|
||||
0:7/0/physics_layer_0/linear_velocity = Vector2(0, 0)
|
||||
0:7/0/physics_layer_0/angular_velocity = 0.0
|
||||
1:7/0 = 0
|
||||
1:7/0/physics_layer_0/linear_velocity = Vector2(0, 0)
|
||||
1:7/0/physics_layer_0/angular_velocity = 0.0
|
||||
1:6/0 = 0
|
||||
1:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
|
||||
1:6/0/physics_layer_0/angular_velocity = 0.0
|
||||
2:6/0 = 0
|
||||
2:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
|
||||
2:6/0/physics_layer_0/angular_velocity = 0.0
|
||||
2:5/0 = 0
|
||||
2:5/0/physics_layer_0/linear_velocity = Vector2(0, 0)
|
||||
2:5/0/physics_layer_0/angular_velocity = 0.0
|
||||
2:7/0 = 0
|
||||
2:7/0/physics_layer_0/linear_velocity = Vector2(0, 0)
|
||||
2:7/0/physics_layer_0/angular_velocity = 0.0
|
||||
|
||||
[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_u4tjf"]
|
||||
texture = ExtResource("3_hbylw")
|
||||
0:0/0 = 0
|
||||
0:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
|
||||
0:0/0/physics_layer_0/angular_velocity = 0.0
|
||||
1:0/0 = 0
|
||||
1:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
|
||||
1:0/0/physics_layer_0/angular_velocity = 0.0
|
||||
2:0/0 = 0
|
||||
2:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
|
||||
2:0/0/physics_layer_0/angular_velocity = 0.0
|
||||
0:1/0 = 0
|
||||
0:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
|
||||
0:1/0/physics_layer_0/angular_velocity = 0.0
|
||||
1:1/0 = 0
|
||||
1:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
|
||||
1:1/0/physics_layer_0/angular_velocity = 0.0
|
||||
2:1/0 = 0
|
||||
2:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
|
||||
2:1/0/physics_layer_0/angular_velocity = 0.0
|
||||
|
||||
[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_45tin"]
|
||||
texture = ExtResource("4_n70qi")
|
||||
0:0/0 = 0
|
||||
1:0/0 = 0
|
||||
4:0/0 = 0
|
||||
4:0/0/y_sort_origin = 8
|
||||
4:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
|
||||
5:0/0 = 0
|
||||
5:0/0/y_sort_origin = 8
|
||||
5:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
|
||||
6:0/0 = 0
|
||||
6:0/0/y_sort_origin = 8
|
||||
6:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
|
||||
8:0/0 = 0
|
||||
9:0/0 = 0
|
||||
10:0/0 = 0
|
||||
11:0/0 = 0
|
||||
12:0/0 = 0
|
||||
13:0/0 = 0
|
||||
0:1/0 = 0
|
||||
1:1/0 = 0
|
||||
4:1/0 = 0
|
||||
4:1/0/y_sort_origin = 8
|
||||
4:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
|
||||
5:1/0 = 0
|
||||
5:1/0/y_sort_origin = 8
|
||||
5:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
|
||||
6:1/0 = 0
|
||||
6:1/0/y_sort_origin = 8
|
||||
6:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
|
||||
7:1/0 = 0
|
||||
7:1/0/y_sort_origin = 8
|
||||
7:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
|
||||
8:1/0 = 0
|
||||
8:1/0/y_sort_origin = 8
|
||||
8:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
|
||||
9:1/0 = 0
|
||||
9:1/0/y_sort_origin = 8
|
||||
9:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
|
||||
10:1/0 = 0
|
||||
11:1/0 = 0
|
||||
2:2/0 = 0
|
||||
2:2/0/y_sort_origin = 8
|
||||
2:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
|
||||
3:2/0 = 0
|
||||
3:2/0/y_sort_origin = 8
|
||||
3:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
|
||||
4:2/0 = 0
|
||||
4:2/0/y_sort_origin = 8
|
||||
4:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
|
||||
5:2/0 = 0
|
||||
5:2/0/y_sort_origin = 8
|
||||
5:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
|
||||
6:2/0 = 0
|
||||
6:2/0/y_sort_origin = 8
|
||||
6:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
|
||||
7:2/0 = 0
|
||||
7:2/0/y_sort_origin = 8
|
||||
7:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
|
||||
8:2/0 = 0
|
||||
8:2/0/y_sort_origin = 8
|
||||
8:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
|
||||
9:2/0 = 0
|
||||
9:2/0/y_sort_origin = 8
|
||||
9:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
|
||||
10:2/0 = 0
|
||||
11:2/0 = 0
|
||||
0:3/0 = 0
|
||||
0:3/0/y_sort_origin = 12
|
||||
1:3/0 = 0
|
||||
1:3/0/y_sort_origin = 12
|
||||
2:3/0 = 0
|
||||
2:3/0/y_sort_origin = 12
|
||||
3:3/0 = 0
|
||||
3:3/0/y_sort_origin = 8
|
||||
3:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
|
||||
4:3/0 = 0
|
||||
4:3/0/y_sort_origin = 8
|
||||
4:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
|
||||
8:3/0 = 0
|
||||
0:4/0 = 0
|
||||
0:4/0/y_sort_origin = 8
|
||||
0:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
|
||||
2:4/0 = 0
|
||||
2:4/0/y_sort_origin = 8
|
||||
2:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
|
||||
3:4/0 = 0
|
||||
3:4/0/y_sort_origin = 12
|
||||
3:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
|
||||
4:4/0 = 0
|
||||
4:4/0/y_sort_origin = 12
|
||||
4:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
|
||||
5:4/0 = 0
|
||||
5:4/0/y_sort_origin = 8
|
||||
5:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
|
||||
6:4/0 = 0
|
||||
6:4/0/y_sort_origin = 8
|
||||
6:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
|
||||
0:5/0 = 0
|
||||
0:5/0/y_sort_origin = 8
|
||||
0:5/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
|
||||
1:5/0 = 0
|
||||
1:5/0/y_sort_origin = 8
|
||||
1:5/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
|
||||
2:5/0 = 0
|
||||
2:5/0/y_sort_origin = 8
|
||||
2:5/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
|
||||
3:5/0 = 0
|
||||
4:5/0 = 0
|
||||
5:3/0 = 0
|
||||
5:3/0/y_sort_origin = 12
|
||||
6:3/0 = 0
|
||||
6:3/0/y_sort_origin = 12
|
||||
0:6/0 = 0
|
||||
0:7/0 = 0
|
||||
1:7/0 = 0
|
||||
2:7/0 = 0
|
||||
1:6/0 = 0
|
||||
2:6/0 = 0
|
||||
2:1/0 = 0
|
||||
2:0/0 = 0
|
||||
3:0/0 = 0
|
||||
3:1/0 = 0
|
||||
13:5/size_in_atlas = Vector2i(1, 2)
|
||||
13:5/0 = 0
|
||||
13:5/0/texture_origin = Vector2i(0, 8)
|
||||
13:5/0/y_sort_origin = 8
|
||||
13:5/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
|
||||
12:4/size_in_atlas = Vector2i(1, 3)
|
||||
12:4/0 = 0
|
||||
12:4/0/texture_origin = Vector2i(0, 16)
|
||||
12:4/0/y_sort_origin = -2
|
||||
10:3/0 = 0
|
||||
10:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
|
||||
11:3/0 = 0
|
||||
11:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
|
||||
12:2/0 = 0
|
||||
12:3/0 = 0
|
||||
13:3/0 = 0
|
||||
13:2/0 = 0
|
||||
12:1/0 = 0
|
||||
13:1/0 = 0
|
||||
14:2/0 = 0
|
||||
8:5/0 = 0
|
||||
7:5/0 = 0
|
||||
9:4/size_in_atlas = Vector2i(1, 2)
|
||||
9:4/0 = 0
|
||||
9:4/0/texture_origin = Vector2i(0, -8)
|
||||
10:4/size_in_atlas = Vector2i(1, 2)
|
||||
10:4/0 = 0
|
||||
10:4/0/texture_origin = Vector2i(0, -8)
|
||||
8:4/0 = 0
|
||||
11:4/0 = 0
|
||||
14:4/size_in_atlas = Vector2i(1, 3)
|
||||
14:4/0 = 0
|
||||
14:4/0/texture_origin = Vector2i(0, 16)
|
||||
14:4/0/y_sort_origin = 8
|
||||
14:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
|
||||
3:6/0 = 0
|
||||
3:7/0 = 0
|
||||
4:6/0 = 0
|
||||
7:4/0 = 0
|
||||
15:4/size_in_atlas = Vector2i(1, 3)
|
||||
15:4/0 = 0
|
||||
15:4/0/texture_origin = Vector2i(0, 16)
|
||||
15:4/0/y_sort_origin = 8
|
||||
15:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
|
||||
|
||||
[resource]
|
||||
occlusion_layer_0/light_mask = 1
|
||||
|
@ -735,3 +642,4 @@ navigation_layer_0/layers = 1
|
|||
sources/0 = SubResource("TileSetAtlasSource_fcd6d")
|
||||
sources/1 = SubResource("TileSetAtlasSource_mdfpe")
|
||||
sources/2 = SubResource("TileSetAtlasSource_u4tjf")
|
||||
sources/3 = SubResource("TileSetAtlasSource_45tin")
|
||||
|
|
|
@ -0,0 +1,211 @@
|
|||
[gd_resource type="TileSet" load_steps=7 format=3 uid="uid://dkis3rb4n62cu"]
|
||||
|
||||
[ext_resource type="Texture2D" uid="uid://c70cn53osy56w" path="res://Assets/Sprites/dev-tileset.png" id="1_nk7yv"]
|
||||
[ext_resource type="Texture2D" uid="uid://lnyd6osxcu0g" path="res://Assets/Sprites/Props/tree-autumn-cluster-tiles.png" id="2_j2hod"]
|
||||
[ext_resource type="Texture2D" uid="uid://ccqfwgjkerta5" path="res://Assets/Sprites/grass-tileset-dark.png" id="3_dmva5"]
|
||||
|
||||
[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_s1h2f"]
|
||||
texture = ExtResource("1_nk7yv")
|
||||
0:0/0 = 0
|
||||
1:0/0 = 0
|
||||
2:0/0 = 0
|
||||
3:0/0 = 0
|
||||
0:1/0 = 0
|
||||
1:1/0 = 0
|
||||
2:1/0 = 0
|
||||
3:1/0 = 0
|
||||
0:2/0 = 0
|
||||
1:2/0 = 0
|
||||
2:2/0 = 0
|
||||
3:2/0 = 0
|
||||
0:3/0 = 0
|
||||
0:3/0/y_sort_origin = 8
|
||||
1:3/0 = 0
|
||||
1:3/0/y_sort_origin = 8
|
||||
2:3/0 = 0
|
||||
2:3/0/y_sort_origin = 8
|
||||
0:4/0 = 0
|
||||
0:4/0/y_sort_origin = 8
|
||||
0:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(4, -8, 8, -8, 8, 8, 4, 8)
|
||||
1:4/0 = 0
|
||||
1:4/0/y_sort_origin = 8
|
||||
1:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
|
||||
2:4/0 = 0
|
||||
2:4/0/y_sort_origin = 8
|
||||
2:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, -4, -8, -4, 8, -8, 8)
|
||||
0:5/0 = 0
|
||||
0:5/0/y_sort_origin = 8
|
||||
0:5/0/physics_layer_0/polygon_0/points = PackedVector2Array(3.5, -8, 8, -8, 8, -4, 4, -4)
|
||||
1:5/0 = 0
|
||||
1:5/0/y_sort_origin = 8
|
||||
1:5/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, -4, -8, -4)
|
||||
2:5/0 = 0
|
||||
2:5/0/y_sort_origin = 8
|
||||
2:5/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, -4, -8, -4, -4, -8, -4)
|
||||
3:5/0 = 0
|
||||
3:5/0/y_sort_origin = 8
|
||||
4:5/0 = 0
|
||||
4:5/0/y_sort_origin = 8
|
||||
5:5/0 = 0
|
||||
5:5/0/y_sort_origin = 8
|
||||
4:4/0 = 0
|
||||
4:4/0/y_sort_origin = 8
|
||||
4:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(4, -8, 4, 8, 8, 8, 8, -8)
|
||||
3:4/0 = 0
|
||||
3:4/0/y_sort_origin = 8
|
||||
3:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, -4, -8, -4, 8, -8, 8)
|
||||
4:3/0 = 0
|
||||
4:3/0/y_sort_origin = 8
|
||||
3:3/0 = 0
|
||||
3:3/0/y_sort_origin = 8
|
||||
5:2/0 = 0
|
||||
5:2/0/y_sort_origin = 8
|
||||
4:1/0 = 0
|
||||
4:1/0/y_sort_origin = 8
|
||||
4:0/0 = 0
|
||||
4:0/0/y_sort_origin = 8
|
||||
5:0/0 = 0
|
||||
5:0/0/y_sort_origin = 8
|
||||
5:1/0 = 0
|
||||
5:1/0/y_sort_origin = 8
|
||||
4:2/0 = 0
|
||||
4:2/0/y_sort_origin = 8
|
||||
5:4/0 = 0
|
||||
5:4/0/y_sort_origin = 8
|
||||
5:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(4, -8, 8, -8, 8, 8, 4, 8)
|
||||
5:3/0 = 0
|
||||
5:3/0/y_sort_origin = 8
|
||||
5:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, -4, -8, -4, 8, -8, 8)
|
||||
|
||||
[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_tw0o1"]
|
||||
texture = ExtResource("2_j2hod")
|
||||
0:0/0 = 0
|
||||
0:0/0/y_sort_origin = 8
|
||||
0:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
|
||||
1:0/0 = 0
|
||||
1:0/0/y_sort_origin = 8
|
||||
1:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
|
||||
2:0/0 = 0
|
||||
2:0/0/y_sort_origin = 8
|
||||
2:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
|
||||
3:0/0 = 0
|
||||
3:0/0/y_sort_origin = 8
|
||||
3:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
|
||||
0:1/0 = 0
|
||||
0:1/0/y_sort_origin = 8
|
||||
0:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
|
||||
1:1/0 = 0
|
||||
1:1/0/y_sort_origin = 8
|
||||
1:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
|
||||
2:1/0 = 0
|
||||
2:1/0/y_sort_origin = 8
|
||||
2:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
|
||||
3:1/0 = 0
|
||||
3:1/0/y_sort_origin = 8
|
||||
3:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
|
||||
0:2/0 = 0
|
||||
0:2/0/y_sort_origin = 8
|
||||
0:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
|
||||
1:2/0 = 0
|
||||
1:2/0/y_sort_origin = 8
|
||||
1:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
|
||||
2:2/0 = 0
|
||||
2:2/0/y_sort_origin = 8
|
||||
2:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
|
||||
3:2/0 = 0
|
||||
3:2/0/y_sort_origin = 8
|
||||
3:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
|
||||
0:3/size_in_atlas = Vector2i(1, 2)
|
||||
0:3/0 = 0
|
||||
0:3/0/texture_origin = Vector2i(0, 8)
|
||||
0:3/0/y_sort_origin = 8
|
||||
0:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -24, 8, -24, 8, 8, -8, 8)
|
||||
1:3/size_in_atlas = Vector2i(1, 2)
|
||||
1:3/0 = 0
|
||||
1:3/0/texture_origin = Vector2i(0, 8)
|
||||
1:3/0/y_sort_origin = 8
|
||||
1:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -24, 8, -24, 8, 8, -8, 8)
|
||||
2:3/size_in_atlas = Vector2i(1, 2)
|
||||
2:3/0 = 0
|
||||
2:3/0/texture_origin = Vector2i(0, 8)
|
||||
2:3/0/y_sort_origin = 8
|
||||
2:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -24, 8, -24, 8, 8, -8, 8)
|
||||
3:3/size_in_atlas = Vector2i(1, 2)
|
||||
3:3/0 = 0
|
||||
3:3/0/texture_origin = Vector2i(0, 8)
|
||||
3:3/0/y_sort_origin = 8
|
||||
3:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -24, 8, -24, 8, 8, -8, 8)
|
||||
4:0/0 = 0
|
||||
4:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
|
||||
5:0/0 = 0
|
||||
5:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
|
||||
5:1/0 = 0
|
||||
5:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
|
||||
4:1/0 = 0
|
||||
4:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
|
||||
4:2/0 = 0
|
||||
4:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
|
||||
5:2/0 = 0
|
||||
5:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
|
||||
5:3/0 = 0
|
||||
5:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
|
||||
4:3/0 = 0
|
||||
4:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
|
||||
|
||||
[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_w8vpx"]
|
||||
texture = ExtResource("3_dmva5")
|
||||
0:0/0 = 0
|
||||
1:0/0 = 0
|
||||
1:1/0 = 0
|
||||
2:1/0 = 0
|
||||
3:2/0 = 0
|
||||
4:2/0 = 0
|
||||
4:3/0 = 0
|
||||
5:3/0 = 0
|
||||
0:1/0 = 0
|
||||
0:2/0 = 0
|
||||
0:3/0 = 0
|
||||
0:4/0 = 0
|
||||
0:5/0 = 0
|
||||
1:5/0 = 0
|
||||
1:6/0 = 0
|
||||
2:6/0 = 0
|
||||
0:6/0 = 0
|
||||
0:7/0 = 0
|
||||
1:7/0 = 0
|
||||
2:7/0 = 0
|
||||
2:5/0 = 0
|
||||
1:2/0 = 0
|
||||
1:3/0 = 0
|
||||
2:3/0 = 0
|
||||
3:3/0 = 0
|
||||
1:4/0 = 0
|
||||
6:3/0 = 0
|
||||
2:4/0 = 0
|
||||
3:4/0 = 0
|
||||
4:4/0 = 0
|
||||
2:2/0 = 0
|
||||
5:4/0 = 0
|
||||
6:4/0 = 0
|
||||
7:4/0 = 0
|
||||
7:3/0 = 0
|
||||
2:0/0 = 0
|
||||
3:0/0 = 0
|
||||
4:0/0 = 0
|
||||
5:0/0 = 0
|
||||
6:0/0 = 0
|
||||
7:0/0 = 0
|
||||
7:1/0 = 0
|
||||
6:2/0 = 0
|
||||
5:2/0 = 0
|
||||
4:1/0 = 0
|
||||
3:1/0 = 0
|
||||
6:1/0 = 0
|
||||
7:2/0 = 0
|
||||
5:1/0 = 0
|
||||
|
||||
[resource]
|
||||
physics_layer_0/collision_layer = 1
|
||||
sources/0 = SubResource("TileSetAtlasSource_s1h2f")
|
||||
sources/3 = SubResource("TileSetAtlasSource_w8vpx")
|
||||
sources/1 = SubResource("TileSetAtlasSource_tw0o1")
|
|
@ -23,17 +23,14 @@ public abstract partial class PlayerState : CharacterState
|
|||
{
|
||||
if (@event.IsActionPressed("equip_1"))
|
||||
{
|
||||
//inventory.SelectedItem = inventory.GetItemByMap("equip_1");
|
||||
inventory.SelectedIndex = 0;
|
||||
}
|
||||
else if (@event.IsActionPressed("equip_2"))
|
||||
{
|
||||
//inventory.SelectedItem = inventory.GetItemByMap("equip_2");
|
||||
inventory.SelectedIndex = 1;
|
||||
}
|
||||
else if (@event.IsActionPressed("equip_3"))
|
||||
{
|
||||
//inventory.SelectedItem = inventory.GetItemByMap("equip_3");
|
||||
inventory.SelectedIndex = 2;
|
||||
}
|
||||
else if (@event.IsActionPressed("next_item"))
|
||||
|
@ -58,6 +55,13 @@ public abstract partial class PlayerState : CharacterState
|
|||
return MaxLevelState;
|
||||
}
|
||||
}
|
||||
|
||||
if (@event.IsActionPressed("inventory"))
|
||||
{
|
||||
var bus = Events.EventBus.Instance;
|
||||
bus.EmitSignal(Events.EventBus.SignalName.PlayerOpenInventory,
|
||||
player.Inventory);
|
||||
}
|
||||
}
|
||||
|
||||
return base.UnhandledInput(@event);
|
||||
|
|
|
@ -3,7 +3,7 @@ using SupaLidlGame.Utils;
|
|||
|
||||
namespace SupaLidlGame.State.Global;
|
||||
|
||||
public partial class GlobalState : Node
|
||||
public partial class GlobalState : Node, ISave
|
||||
{
|
||||
[Export]
|
||||
public Progression Progression { get; set; }
|
||||
|
@ -14,6 +14,10 @@ public partial class GlobalState : Node
|
|||
[Export]
|
||||
public Stats Stats { get; set; }
|
||||
|
||||
private ulong _saveTimeElapsed = 0;
|
||||
|
||||
public ulong TimeElapsed => _saveTimeElapsed + Godot.Time.GetTicksMsec();
|
||||
|
||||
public static GlobalState Instance { get; private set; }
|
||||
|
||||
[Export]
|
||||
|
@ -76,6 +80,20 @@ public partial class GlobalState : Node
|
|||
Progression = save.Progression;
|
||||
MapState = save.MapState;
|
||||
Stats = save.Stats;
|
||||
_saveTimeElapsed = save.TimeElapsed; // use as offset
|
||||
|
||||
var inventory = World.Instance.CurrentPlayer.Inventory;
|
||||
inventory.Items = Stats.Items;
|
||||
|
||||
for (int i = 0; i < Stats.HotbarToItemIndexMap.Count; i++)
|
||||
{
|
||||
int itemIndex = Stats.HotbarToItemIndexMap[i];
|
||||
|
||||
if (itemIndex >= 0)
|
||||
{
|
||||
inventory.SetHotbarIndexToItemIndex(i, itemIndex);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void ExportToSave(Save save)
|
||||
|
@ -83,5 +101,10 @@ public partial class GlobalState : Node
|
|||
save.Progression = Progression;
|
||||
save.MapState = MapState;
|
||||
save.Stats = Stats;
|
||||
save.TimeElapsed = TimeElapsed; // update time elapsed when saving
|
||||
|
||||
var inventory = World.Instance.CurrentPlayer.Inventory;
|
||||
Stats.Items = inventory.Items;
|
||||
Stats.HotbarToItemIndexMap = inventory.HotbarToItemIndexMap;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -54,4 +54,14 @@ public partial class MapState : Resource
|
|||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public Variant Get(string key)
|
||||
{
|
||||
return this[key];
|
||||
}
|
||||
|
||||
public void Set(string key, Variant value)
|
||||
{
|
||||
this[key] = value;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
using Godot;
|
||||
using Godot.Collections;
|
||||
|
||||
namespace SupaLidlGame.State.Global;
|
||||
|
||||
|
@ -13,4 +14,10 @@ public partial class Stats : Resource
|
|||
|
||||
[Export]
|
||||
public int DeathCount { get; set; } = 0;
|
||||
|
||||
[Export]
|
||||
public Array<Items.ItemMetadata> Items { get; set; } = new();
|
||||
|
||||
[Export]
|
||||
public Array<int> HotbarToItemIndexMap { get; set; } = new();
|
||||
}
|
||||
|
|
|
@ -15,24 +15,39 @@ public partial class DocExitState : NPCState
|
|||
|
||||
private double _currentDuration = 0;
|
||||
|
||||
private bool _hasPlayedExitAnim = false;
|
||||
|
||||
private bool _previouslyCouldAttack = false;
|
||||
|
||||
public override NPCState Enter(IState<NPCState> previousState)
|
||||
{
|
||||
_currentDuration = Duration;
|
||||
TelegraphAnimationPlayer.Play("exit_out");
|
||||
NPC.ShouldMove = false;
|
||||
_hasPlayedExitAnim = false;
|
||||
return null;
|
||||
}
|
||||
|
||||
public override void Exit(IState<NPCState> nextState)
|
||||
{
|
||||
|
||||
NPC.CanAttack = _previouslyCouldAttack;
|
||||
}
|
||||
|
||||
public override NPCState Process(double delta)
|
||||
{
|
||||
if ((_currentDuration -= delta) <= 0)
|
||||
if (!NPC.Inventory.IsUsingItem)
|
||||
{
|
||||
return TelegraphState;
|
||||
if (!_hasPlayedExitAnim)
|
||||
{
|
||||
_hasPlayedExitAnim = true;
|
||||
_previouslyCouldAttack = NPC.CanAttack;
|
||||
NPC.CanAttack = false;
|
||||
TelegraphAnimationPlayer.Play("exit_out");
|
||||
}
|
||||
|
||||
if ((_currentDuration -= delta) <= 0)
|
||||
{
|
||||
return TelegraphState;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
|
|
@ -33,8 +33,19 @@ public partial class DocTelegraphState : NPCState
|
|||
|
||||
do
|
||||
{
|
||||
float randX = GD.RandRange(-112, 112);
|
||||
float randY = GD.RandRange(-112, 112);
|
||||
float randX = GD.RandRange(32, 112);
|
||||
float randY = GD.RandRange(32, 112);
|
||||
|
||||
if (GD.Randi() % 2 == 0)
|
||||
{
|
||||
randX = -randX;
|
||||
}
|
||||
|
||||
if (GD.Randi() % 2 == 0)
|
||||
{
|
||||
randY = -randY;
|
||||
}
|
||||
|
||||
randVec = new Vector2(randX, randY);
|
||||
}
|
||||
while (randVec.DistanceSquaredTo(player.GlobalPosition) < 9216);
|
||||
|
|