Merge branch 'master' of gitlab.com:MaddoScientisto/cirnogodot

This commit is contained in:
MaddoScientisto 2025-01-31 22:18:56 +01:00
commit 4dbbb00115
42 changed files with 1089 additions and 367 deletions

View file

@ -0,0 +1,14 @@
[gd_resource type="Resource" script_class="LootItem" load_steps=3 format=3 uid="uid://ct1fa2huvy34n"]
[ext_resource type="Script" path="res://Scripts/Resources/LootItem.cs" id="1_31o2l"]
[ext_resource type="SpriteFrames" uid="uid://pmwatoyt2ase" path="res://Resources/Sprites/Ammo_Inventory_Sprite.tres" id="1_fubhk"]
[resource]
script = ExtResource("1_31o2l")
Item = 3
Amount = 100
Max = 800
PickupIfMaxed = false
ConsumeOnUse = false
InventorySprite = ExtResource("1_fubhk")
WorldSprite = ExtResource("1_fubhk")

View file

@ -0,0 +1,11 @@
[gd_scene load_steps=4 format=3 uid="uid://j1pbuvw2kduo"]
[ext_resource type="PackedScene" uid="uid://dxs3ks2ucaxl4" path="res://Scenes/Items/Red_Keycard.tscn" id="1_v0ux4"]
[ext_resource type="Resource" uid="uid://ct1fa2huvy34n" path="res://Resources/Items/Ammo1.tres" id="2_2eoli"]
[ext_resource type="SpriteFrames" uid="uid://pmwatoyt2ase" path="res://Resources/Sprites/Ammo_Inventory_Sprite.tres" id="2_8g7mw"]
[node name="Ammo1" instance=ExtResource("1_v0ux4")]
LootTable = [ExtResource("2_2eoli")]
[node name="AnimatedSprite2D" parent="." index="1"]
sprite_frames = ExtResource("2_8g7mw")

View file

@ -0,0 +1,9 @@
[gd_resource type="Resource" script_class="LootItem" load_steps=2 format=3 uid="uid://cj5aa7btaw6q0"]
[ext_resource type="Script" path="res://Scripts/Resources/LootItem.cs" id="1_k8cnp"]
[resource]
script = ExtResource("1_k8cnp")
Item = 1
Amount = 1
Max = 1

View file

@ -0,0 +1,9 @@
[gd_resource type="Resource" script_class="LootItem" load_steps=2 format=3 uid="uid://cspcgkr0tane2"]
[ext_resource type="Script" path="res://Scripts/Resources/LootItem.cs" id="1_t0s5w"]
[resource]
script = ExtResource("1_t0s5w")
Item = 2
Amount = 1
Max = 1

View file

@ -1,5 +1,7 @@
[gd_resource type="Resource" script_class="LootItem" load_steps=2 format=3 uid="uid://dibquna7fww7t"]
[gd_resource type="Resource" script_class="LootItem" load_steps=4 format=3 uid="uid://dibquna7fww7t"]
[ext_resource type="SpriteFrames" uid="uid://cikw4v6n0folb" path="res://Resources/Sprites/Red_Keycard_Overworld_Sprite.tres" id="1_1j6xs"]
[ext_resource type="Texture2D" uid="uid://bao53hesxreoh" path="res://Resources/Sprites/Red_Keycard_Inventory_Texture.tres" id="1_glhfu"]
[ext_resource type="Script" path="res://Scripts/Resources/LootItem.cs" id="1_istlt"]
[resource]
@ -7,3 +9,7 @@ script = ExtResource("1_istlt")
Item = 0
Amount = 1
Max = 1
PickupIfMaxed = false
ConsumeOnUse = false
InventorySprite = ExtResource("1_glhfu")
WorldSprite = ExtResource("1_1j6xs")

View file

@ -0,0 +1,18 @@
[gd_resource type="SpriteFrames" load_steps=3 format=3 uid="uid://pmwatoyt2ase"]
[ext_resource type="Texture2D" uid="uid://c5g0qg6u2gm6f" path="res://Sprites/Items/Ammo1.png" id="1_opgo2"]
[sub_resource type="AtlasTexture" id="AtlasTexture_0k673"]
atlas = ExtResource("1_opgo2")
region = Rect2(0, 0, 16, 16)
[resource]
animations = [{
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_0k673")
}],
"loop": true,
"name": &"default",
"speed": 5.0
}]

View file

@ -0,0 +1,18 @@
[gd_resource type="SpriteFrames" load_steps=3 format=3 uid="uid://bnvusxrrd2351"]
[ext_resource type="Texture2D" uid="uid://c53bchw2krocb" path="res://Sprites/Red_Keycard.png" id="1_l8v2c"]
[sub_resource type="AtlasTexture" id="AtlasTexture_us62y"]
atlas = ExtResource("1_l8v2c")
region = Rect2(0, 0, 16, 16)
[resource]
animations = [{
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_us62y")
}],
"loop": true,
"name": &"default",
"speed": 5.0
}]

View file

@ -0,0 +1,7 @@
[gd_resource type="AtlasTexture" load_steps=2 format=3 uid="uid://bao53hesxreoh"]
[ext_resource type="Texture2D" uid="uid://bad6gbl2gity3" path="res://Sprites/Items/RedKeycard_Small.png" id="1_eer7d"]
[resource]
atlas = ExtResource("1_eer7d")
region = Rect2(0, 0, 16.0056, 16)

View file

@ -0,0 +1,25 @@
[gd_resource type="SpriteFrames" load_steps=4 format=3 uid="uid://cikw4v6n0folb"]
[ext_resource type="Texture2D" uid="uid://bad6gbl2gity3" path="res://Sprites/Items/RedKeycard_Small.png" id="1_shn5c"]
[sub_resource type="AtlasTexture" id="AtlasTexture_o0au0"]
atlas = ExtResource("1_shn5c")
region = Rect2(0, 0, 16, 16)
[sub_resource type="AtlasTexture" id="AtlasTexture_fx6tu"]
atlas = ExtResource("1_shn5c")
region = Rect2(16, 0, 16, 16)
[resource]
animations = [{
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_o0au0")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_fx6tu")
}],
"loop": true,
"name": &"default",
"speed": 5.0
}]

View file

@ -1,4 +1,4 @@
[gd_scene load_steps=9 format=3 uid="uid://v8s3kubgb2qg"]
[gd_scene load_steps=10 format=3 uid="uid://v8s3kubgb2qg"]
[ext_resource type="Texture2D" uid="uid://b4ynnb14mb4uq" path="res://Sprites/Reisen.png" id="1_4w8mj"]
[ext_resource type="Script" path="res://Scripts/Enemy.cs" id="1_lpwdj"]
@ -18,11 +18,15 @@ radius = 4.0
[sub_resource type="CircleShape2D" id="CircleShape2D_v711r"]
radius = 85.0529
[node name="Enemy" type="Area2D" node_paths=PackedStringArray("EquippedWeapon") groups=["Destroyable"]]
[sub_resource type="RectangleShape2D" id="RectangleShape2D_m1rsg"]
size = Vector2(8, 12)
[node name="Enemy" type="CharacterBody2D" node_paths=PackedStringArray("EquippedWeapon") groups=["Destroyable"]]
collision_layer = 16
collision_mask = 9
script = ExtResource("1_lpwdj")
EquippedWeapon = NodePath("Weapon")
NavigationEnabled = true
metadata/_edit_group_ = true
[node name="Sprite2D" type="Sprite2D" parent="."]
@ -33,6 +37,7 @@ visible = false
shape = SubResource("CircleShape2D_8gtts")
[node name="RigidBody2D" type="RigidBody2D" parent="."]
collision_layer = 16
[node name="CollisionShape2D" type="CollisionShape2D" parent="RigidBody2D"]
visible = false
@ -40,11 +45,11 @@ position = Vector2(0, 5)
shape = SubResource("CircleShape2D_cacb5")
[node name="PlayerDetection" type="Area2D" parent="."]
visible = false
collision_layer = 16
collision_mask = 2
[node name="PlayerDetectionArea" type="CollisionShape2D" parent="PlayerDetection"]
visible = false
shape = SubResource("CircleShape2D_v711r")
[node name="ShootTimer" type="Timer" parent="."]
@ -57,7 +62,21 @@ BulletCapacity = 4
BulletSpeed = 50.0
[node name="NavigationAgent2D" type="NavigationAgent2D" parent="."]
target_desired_distance = 64.0
path_max_distance = 800.0
path_postprocessing = 1
avoidance_enabled = true
debug_enabled = true
debug_path_custom_color = Color(1, 0, 0, 1)
[node name="DamageHitbox" type="Area2D" parent="."]
collision_layer = 16
collision_mask = 9
[node name="CollisionShape2D" type="CollisionShape2D" parent="DamageHitbox"]
shape = SubResource("RectangleShape2D_m1rsg")
[connection signal="area_entered" from="." to="." method="_on_area_entered"]
[connection signal="area_entered" from="PlayerDetection" to="." method="_on_player_detection_area_entered"]
[connection signal="area_exited" from="PlayerDetection" to="." method="_on_player_detection_area_exited"]
[connection signal="velocity_computed" from="NavigationAgent2D" to="." method="_on_navigation_agent_2d_velocity_computed"]
[connection signal="area_entered" from="DamageHitbox" to="." method="_on_damage_hitbox_area_entered"]

View file

@ -26,21 +26,10 @@ animations = [{
"speed": 5.0
}]
[node name="HUD" type="CanvasLayer"]
[node name="HUD" type="CanvasLayer" node_paths=PackedStringArray("_healthLabel", "_itemsContainer")]
script = ExtResource("1_m0hb0")
[node name="HealthLabel" type="Label" parent="."]
anchors_preset = 2
anchor_top = 1.0
anchor_bottom = 1.0
offset_left = 1.0
offset_top = -160.0
offset_right = 306.0
offset_bottom = -82.0
grow_vertical = 0
theme_override_fonts/font = ExtResource("2_0xmx2")
theme_override_font_sizes/font_size = 12
text = "100/100"
_healthLabel = NodePath("VBoxContainer/HealthLabel")
_itemsContainer = NodePath("VBoxContainer/ItemsContainer")
[node name="GameOver" type="Label" parent="."]
visible = false
@ -69,3 +58,24 @@ position = Vector2(67, 47)
sprite_frames = SubResource("SpriteFrames_78fwv")
frame = 1
frame_progress = 0.8514
[node name="VBoxContainer" type="VBoxContainer" parent="."]
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
size_flags_horizontal = 3
size_flags_vertical = 3
[node name="HealthLabel" type="Label" parent="VBoxContainer"]
layout_mode = 2
theme_override_fonts/font = ExtResource("2_0xmx2")
theme_override_font_sizes/font_size = 12
text = "100/100"
[node name="ItemsContainer" type="VBoxContainer" parent="VBoxContainer"]
layout_mode = 2
[node name="TextureRect" type="TextureRect" parent="VBoxContainer/ItemsContainer"]
layout_mode = 2

11
Scenes/Items/Ammo1.tscn Normal file
View file

@ -0,0 +1,11 @@
[gd_scene load_steps=4 format=3 uid="uid://cmr6fclttrpkb"]
[ext_resource type="PackedScene" uid="uid://dxs3ks2ucaxl4" path="res://Scenes/Items/Red_Keycard.tscn" id="1_i3l7m"]
[ext_resource type="Resource" uid="uid://ct1fa2huvy34n" path="res://Resources/Items/Ammo1.tres" id="2_j10i4"]
[ext_resource type="SpriteFrames" uid="uid://pmwatoyt2ase" path="res://Resources/Sprites/Ammo_Inventory_Sprite.tres" id="3_6n103"]
[node name="Ammo1" instance=ExtResource("1_i3l7m")]
LootTable = [ExtResource("2_j10i4")]
[node name="AnimatedSprite2D" parent="." index="1"]
sprite_frames = ExtResource("3_6n103")

View file

@ -0,0 +1,33 @@
[gd_scene load_steps=7 format=3 uid="uid://d0yes7huiyisw"]
[ext_resource type="PackedScene" uid="uid://dxs3ks2ucaxl4" path="res://Scenes/Items/Red_Keycard.tscn" id="1_8f4hq"]
[ext_resource type="Resource" uid="uid://cj5aa7btaw6q0" path="res://Resources/Items/Blue_Keycard.tres" id="2_woclw"]
[ext_resource type="Texture2D" uid="uid://bvybqletsvqgk" path="res://Sprites/Items/BlueKeycard_Small.png" id="3_k20dr"]
[sub_resource type="AtlasTexture" id="AtlasTexture_kprwo"]
atlas = ExtResource("3_k20dr")
region = Rect2(0, 0, 16, 16)
[sub_resource type="AtlasTexture" id="AtlasTexture_kems3"]
atlas = ExtResource("3_k20dr")
region = Rect2(16, 0, 16, 16)
[sub_resource type="SpriteFrames" id="SpriteFrames_gbw5v"]
animations = [{
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_kprwo")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_kems3")
}],
"loop": true,
"name": &"default",
"speed": 5.0
}]
[node name="BlueKeycard" instance=ExtResource("1_8f4hq")]
LootTable = [ExtResource("2_woclw")]
[node name="AnimatedSprite2D" parent="." index="1"]
sprite_frames = SubResource("SpriteFrames_gbw5v")

View file

@ -0,0 +1,31 @@
[gd_scene load_steps=6 format=3 uid="uid://r25rq6ijgm6m"]
[ext_resource type="PackedScene" uid="uid://dxs3ks2ucaxl4" path="res://Scenes/Items/Red_Keycard.tscn" id="1_o26qb"]
[ext_resource type="Texture2D" uid="uid://bvkjnc3ggp7ba" path="res://Sprites/Items/GreenKeycard_Small.png" id="2_lts72"]
[sub_resource type="AtlasTexture" id="AtlasTexture_3c71u"]
atlas = ExtResource("2_lts72")
region = Rect2(0, 0, 16, 16)
[sub_resource type="AtlasTexture" id="AtlasTexture_tdlc7"]
atlas = ExtResource("2_lts72")
region = Rect2(16, 0, 16, 16)
[sub_resource type="SpriteFrames" id="SpriteFrames_y8q6b"]
animations = [{
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_3c71u")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_tdlc7")
}],
"loop": true,
"name": &"default",
"speed": 5.0
}]
[node name="GreenKeyCard" instance=ExtResource("1_o26qb")]
[node name="AnimatedSprite2D" parent="." index="1"]
sprite_frames = SubResource("SpriteFrames_y8q6b")

View file

@ -0,0 +1,19 @@
[gd_scene load_steps=5 format=3 uid="uid://dxs3ks2ucaxl4"]
[ext_resource type="Script" path="res://Scripts/Interactables/ItemPickup.cs" id="1_cvvxn"]
[ext_resource type="SpriteFrames" uid="uid://cikw4v6n0folb" path="res://Resources/Sprites/Red_Keycard_Overworld_Sprite.tres" id="3_htu4x"]
[ext_resource type="Resource" uid="uid://dibquna7fww7t" path="res://Resources/Items/Red_Keycard.tres" id="4_84krq"]
[sub_resource type="CircleShape2D" id="CircleShape2D_6vv2s"]
[node name="RedKeyCard" type="Area2D" groups=["Interactable"]]
collision_layer = 4
collision_mask = 2
script = ExtResource("1_cvvxn")
LootTable = [ExtResource("4_84krq")]
[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
shape = SubResource("CircleShape2D_6vv2s")
[node name="AnimatedSprite2D" type="AnimatedSprite2D" parent="."]
sprite_frames = ExtResource("3_htu4x")

View file

@ -1,21 +0,0 @@
[gd_scene load_steps=5 format=3 uid="uid://dxs3ks2ucaxl4"]
[ext_resource type="Script" path="res://Scenes/Interactable.cs" id="1_8ev2v"]
[ext_resource type="Texture2D" uid="uid://c53bchw2krocb" path="res://Sprites/Red_Keycard.png" id="2_onmup"]
[ext_resource type="Script" path="res://Scripts/Pickupper.cs" id="3_t6rqq"]
[sub_resource type="RectangleShape2D" id="RectangleShape2D_x0adl"]
[node name="ControlPad" type="Area2D" groups=["Interactable"]]
collision_layer = 4
collision_mask = 2
script = ExtResource("1_8ev2v")
[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
shape = SubResource("RectangleShape2D_x0adl")
[node name="Sprite2D" type="Sprite2D" parent="."]
texture = ExtResource("2_onmup")
[node name="Pickupper" type="Node2D" parent="."]
script = ExtResource("3_t6rqq")

View file

@ -11,6 +11,7 @@ collision_layer = 8
collision_mask = 85
script = ExtResource("1_jvxw3")
Speed = 200.0
Owner = 1
metadata/_edit_group_ = true
[node name="Sprite2D" type="Sprite2D" parent="."]

View file

@ -11,6 +11,7 @@ collision_layer = 128
collision_mask = 71
script = ExtResource("1_s0j1e")
Speed = 200.0
Owner = 2
metadata/_edit_group_ = true
[node name="Sprite2D" type="Sprite2D" parent="."]

View file

@ -0,0 +1,75 @@
[gd_scene load_steps=10 format=4 uid="uid://c4yvclwjr2g3s"]
[ext_resource type="TileSet" uid="uid://6k28roiljylj" path="res://Tilesets/factory_tileset.tres" id="1_0ej5m"]
[ext_resource type="Script" path="res://Scripts/TilemapAvoidance.cs" id="2_8fanf"]
[ext_resource type="Texture2D" uid="uid://b4ynnb14mb4uq" path="res://Sprites/Reisen.png" id="2_jwyql"]
[ext_resource type="Script" path="res://Scripts/Actors/NavigationTestEnemy.cs" id="2_ow6o3"]
[sub_resource type="CircleShape2D" id="CircleShape2D_uexe4"]
radius = 6.0
[sub_resource type="AtlasTexture" id="AtlasTexture_dbu6i"]
atlas = ExtResource("2_jwyql")
region = Rect2(0, 0, 8, 16)
[sub_resource type="AtlasTexture" id="AtlasTexture_gx747"]
atlas = ExtResource("2_jwyql")
region = Rect2(8, 0, 8, 16)
[sub_resource type="AtlasTexture" id="AtlasTexture_yqxl3"]
atlas = ExtResource("2_jwyql")
region = Rect2(16, 0, 8, 16)
[sub_resource type="SpriteFrames" id="SpriteFrames_s36lq"]
animations = [{
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_dbu6i")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_gx747")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_yqxl3")
}],
"loop": true,
"name": &"default",
"speed": 5.0
}]
[node name="Node2D" type="Node2D"]
[node name="Floor" type="TileMapLayer" parent="." node_paths=PackedStringArray("_solidLayer")]
tile_map_data = PackedByteArray("AAAHAAIAAAAAAAEAAAAHAAMAAAAAAAEAAAAIAAMAAAAAAAEAAAAIAAQAAAAAAAEAAAAIAAUAAAAAAAEAAAAHAAUAAAAAAAEAAAAGAAUAAAAAAAEAAAAFAAQAAAAAAAEAAAAGAAIAAAAAAAEAAAAIAAIAAAACAAMAAAAJAAMAAAAAAAEAAAAJAAQAAAAAAAEAAAAJAAUAAAAGAAEAAAAHAAQAAAAAAAEAAAAKAAMAAAAAAAEAAAAKAAQAAAAAAAEAAAAIAAYAAAAGAAEAAAAHAAYAAAAAAAEAAAAGAAYAAAAAAAEAAAALAAQAAAAAAAEAAAAKAAUAAAAGAAEAAAAGAAQAAAAAAAEAAAAGAAcAAAAAAAMAAAAHAAcAAAAAAAMAAAAIAAcAAAAGAAEAAAAJAAcAAAAGAAEAAAAKAAcAAAAGAAEAAAALAAcAAAAGAAEAAAAMAAcAAAAAAAMAAAALAAUAAAAAAAMAAAAMAAUAAAAAAAMAAAAMAAQAAAAAAAMAAAAMAAMAAAACAAMAAAANAAYAAAAAAAMAAAANAAUAAAAAAAMAAAANAAQAAAAAAAMAAAANAAMAAAAAAAMAAAANAAIAAAAAAAMAAAANAAcAAAAAAAMAAAANAAgAAAACAAMAAAAMAAgAAAACAAMAAAALAAgAAAACAAMAAAAKAAgAAAAGAAEAAAAJAAgAAAAGAAEAAAAIAAgAAAACAAMAAAAHAAgAAAACAAMAAAAGAAgAAAACAAMAAAAGAAkAAAACAAMAAAAHAAkAAAACAAMAAAAHAAoAAAACAAMAAAAIAAoAAAACAAMAAAAIAAkAAAACAAMAAAAJAAkAAAACAAMAAAAKAAkAAAACAAMAAAALAAkAAAACAAMAAAAMAAkAAAACAAMAAAANAAkAAAACAAMAAAAMAAoAAAACAAMAAAALAAoAAAACAAMAAAAKAAoAAAACAAMAAAAJAAoAAAACAAMAAAAGAAoAAAACAAMAAAAJAAsAAAACAAMAAAAKAAsAAAACAAMAAAALAAsAAAACAAMAAAAMAAsAAAACAAMAAAANAAoAAAACAAMAAAADAAgAAAAAAAMAAAAFAAoAAAACAAMAAAAEAAoAAAACAAMAAAADAAoAAAACAAMAAAACAAoAAAAAAAMAAAACAAsAAAACAAMAAAACAAwAAAACAAMAAAACAA0AAAACAAMAAAABAA0AAAACAAMAAAABAA4AAAACAAMAAAAFAAYAAAAAAAMAAAAFAAcAAAAAAAMAAAAFAAgAAAAAAAMAAAAEAAgAAAAAAAMAAAAEAAcAAAAAAAMAAAAEAAYAAAAAAAMAAAAFAAUAAAAAAAMAAAAEAAUAAAAAAAMAAAAEAAQAAAAAAAMAAAAEAAMAAAACAAMAAAAEAAkAAAAAAAMAAAADAAkAAAAAAAMAAAAFAAkAAAAAAAMAAAACAAMAAAAAAAMAAAACAAQAAAAAAAMAAAACAAUAAAAAAAMAAAACAAYAAAAAAAMAAAACAAcAAAAAAAMAAAACAAgAAAAAAAMAAAACAAkAAAAAAAMAAAAEAAsAAAACAAMAAAADAAsAAAACAAMAAAAFAAsAAAACAAMAAAAGAAsAAAACAAMAAAAHAAsAAAACAAMAAAAIAAsAAAACAAMAAAAIAAwAAAACAAMAAAAHAAwAAAACAAMAAAAGAAwAAAACAAMAAAAFAAwAAAACAAMAAAAEAAwAAAACAAMAAAADAAwAAAACAAMAAAAJAAwAAAACAAMAAAAKAAwAAAACAAMAAAALAAwAAAACAAMAAAAMAAwAAAACAAMAAAANAAwAAAACAAMAAAANAA0AAAACAAMAAAAMAA0AAAACAAMAAAALAA4AAAACAAMAAAAKAA4AAAACAAMAAAAJAA4AAAACAAMAAAAIAA4AAAACAAMAAAAHAA4AAAACAAMAAAAGAA4AAAACAAMAAAAFAA4AAAACAAMAAAAEAA4AAAACAAMAAAADAA4AAAACAAMAAAACAA4AAAACAAMAAAADAA0AAAACAAMAAAAEAA0AAAACAAMAAAAFAA0AAAACAAMAAAAGAA0AAAACAAMAAAAHAA0AAAACAAMAAAAIAA0AAAACAAMAAAAJAA0AAAACAAMAAAAKAA0AAAACAAMAAAALAA0AAAACAAMAAAANAAsAAAACAAMAAAAMAAYAAAACAAMAAAALAAYAAAACAAMAAAAKAAYAAAACAAMAAAAJAAYAAAACAAMAAAALAAMAAAACAAMAAAALAAIAAAACAAMAAAAMAAIAAAACAAMAAAAKAAIAAAACAAMAAAAJAAIAAAACAAMAAAAGAAMAAAACAAMAAAAFAAMAAAACAAMAAAAEAAIAAAACAAMAAAAFAAIAAAACAAMAAAADAAIAAAACAAMAAAADAAMAAAACAAMAAAADAAQAAAACAAMAAAADAAUAAAACAAMAAAADAAYAAAACAAMAAAADAAcAAAACAAMAAAABAAcAAAACAAMAAAABAAYAAAACAAMAAAABAAUAAAACAAMAAAAAAAUAAAACAAMAAAAAAAQAAAACAAMAAAAAAAMAAAACAAMAAAAAAAYAAAACAAMAAAABAAQAAAACAAMAAAABAAMAAAACAAMAAAABAAIAAAACAAMAAAABAAEAAAACAAMAAAAAAAAAAAACAAMAAAABAAAAAAACAAMAAAACAAAAAAACAAMAAAADAAAAAAACAAMAAAAEAAAAAAACAAMAAAAFAAAAAAACAAMAAAAGAAAAAAACAAMAAAAHAAAAAAACAAMAAAAIAAAAAAACAAMAAAAJAAAAAAACAAMAAAAKAAAAAAACAAMAAAAJAAEAAAACAAMAAAAIAAEAAAACAAMAAAAHAAEAAAACAAMAAAAGAAEAAAACAAMAAAAFAAEAAAACAAMAAAAEAAEAAAACAAMAAAADAAEAAAACAAMAAAACAAEAAAACAAMAAAACAAIAAAACAAMAAAALAAAAAAACAAMAAAAMAAAAAAACAAMAAAAMAAEAAAACAAMAAAALAAEAAAACAAMAAAAKAAEAAAACAAMAAAANAAEAAAACAAMAAAANAAAAAAACAAMAAAAOAAEAAAACAAMAAAAOAAIAAAACAAMAAAAOAAMAAAACAAMAAAAOAAQAAAACAAMAAAAOAAUAAAACAAMAAAAOAAYAAAACAAMAAAAOAAcAAAACAAMAAAAOAAgAAAACAAMAAAAOAAkAAAACAAMAAAAOAAoAAAACAAMAAAAOAAsAAAACAAMAAAAOAAwAAAACAAMAAAAOAA0AAAACAAMAAAAOAA4AAAACAAMAAAANAA4AAAACAAMAAAAMAA4AAAACAAMAAAAAAA0AAAACAAMAAAAAAAwAAAACAAMAAAAAAAsAAAACAAMAAAAAAAoAAAACAAMAAAABAAwAAAACAAMAAAAAAA4AAAACAAMAAAABAAsAAAACAAMAAAABAAgAAAACAAMAAAAAAAcAAAACAAMAAAAAAAgAAAACAAMAAAAAAAkAAAACAAMAAAABAAoAAAACAAMAAAABAAkAAAACAAMAAAAAAAIAAAACAAMAAAAAAAEAAAACAAMAAAAOAAAAAAACAAMAAAA=")
tile_set = ExtResource("1_0ej5m")
script = ExtResource("2_8fanf")
_solidLayer = NodePath("../Walls")
[node name="Walls" type="TileMapLayer" parent="."]
tile_map_data = PackedByteArray("AAADAAYAAAABAAEAAAADAAcAAAABAAEAAAADAAUAAAABAAEAAAADAAQAAAABAAEAAAADAAMAAAABAAEAAAADAAIAAAABAAEAAAAGAAMAAAABAAEAAAAFAAMAAAABAAEAAAAFAAIAAAABAAEAAAAEAAIAAAABAAEAAAAKAAIAAAABAAEAAAAJAAIAAAABAAEAAAALAAIAAAABAAEAAAAMAAIAAAABAAEAAAALAAMAAAABAAEAAAAJAAYAAAABAAEAAAAKAAYAAAABAAEAAAALAAYAAAABAAEAAAAMAAYAAAABAAEAAAAPAAEAAAABAAEAAAAPAAIAAAABAAEAAAAPAAMAAAABAAEAAAAPAAQAAAABAAEAAAAPAAUAAAABAAEAAAAPAAYAAAABAAEAAAAPAAcAAAABAAEAAAAPAAgAAAABAAEAAAAPAAkAAAABAAEAAAAPAAoAAAABAAEAAAAPAAsAAAABAAEAAAAPAAwAAAABAAEAAAAPAA0AAAABAAEAAAAPAA4AAAABAAEAAAAPAA8AAAABAAEAAAAOAA8AAAABAAEAAAANAA8AAAABAAEAAAAMAA8AAAABAAEAAAALAA8AAAABAAEAAAAKAA8AAAABAAEAAAAJAA8AAAABAAEAAAAIAA8AAAABAAEAAAAHAA8AAAABAAEAAAAGAA8AAAABAAEAAAAFAA8AAAABAAEAAAAEAA8AAAABAAEAAAADAA8AAAABAAEAAAACAA8AAAABAAEAAAABAA8AAAABAAEAAAAAAA8AAAABAAEAAAD//w8AAAABAAEAAAD//w4AAAABAAEAAAD//w0AAAABAAEAAAD//wwAAAABAAEAAAD//wsAAAABAAEAAAD//woAAAABAAEAAAD//wkAAAABAAEAAAD//wgAAAABAAEAAAD//wcAAAABAAEAAAD//wYAAAABAAEAAAD//wUAAAABAAEAAAD+/wUAAAABAAEAAAD+/wQAAAABAAEAAAD+/wMAAAABAAEAAAD+/wIAAAABAAEAAAD//wIAAAABAAEAAAD//wEAAAABAAEAAAD+/wEAAAABAAEAAAD+/wAAAAABAAEAAAAFAP//AAABAAEAAAAGAP//AAABAAEAAAAHAP//AAABAAEAAAAIAP//AAABAAEAAAAJAP//AAABAAEAAAAKAP//AAABAAEAAAALAP//AAABAAEAAAAMAP//AAABAAEAAAANAP//AAABAAEAAAAOAP//AAABAAEAAAAOAAAAAAABAAEAAAAPAAAAAAABAAEAAAD9//7/AAABAAEAAAD+//3/AAABAAEAAAD///3/AAABAAEAAAD///z/AAABAAEAAAAAAPz/AAABAAEAAAABAPz/AAABAAEAAAACAPz/AAABAAEAAAADAPz/AAABAAEAAAAEAPz/AAABAAEAAAAFAPz/AAABAAEAAAAGAPz/AAABAAEAAAAGAP3/AAABAAEAAAAHAP3/AAABAAEAAAAIAP3/AAABAAEAAAAIAP7/AAABAAEAAAAJAP7/AAABAAEAAAD8////AAABAAEAAAD9////AAABAAEAAAD9/wAAAAABAAEAAAAGAAwAAAABAAEAAAAHAAwAAAABAAEAAAAIAAwAAAABAAEAAAAJAAoAAAAEAAUAAAAKAAoAAAAEAAUAAAALAAoAAAAEAAUAAAALAAsAAAAEAAUAAAAMAAsAAAAEAAUAAAAMAAwAAAAEAAUAAAAMAA0AAAAEAAUAAAADAAoAAAAEAAUAAAACAAoAAAAEAAUAAAABAAoAAAAEAAUAAAABAAkAAAAEAAUAAAAAAAkAAAAEAAUAAAAAAAgAAAAEAAUAAAAGAAkAAAAEAAUAAAAHAAkAAAAEAAUAAAAHAAoAAAAEAAUAAAAGAAoAAAAEAAUAAAAGAAUAAAAEAAUAAAAFAAUAAAAEAAUAAAABAP//AAAEAAUAAAACAP//AAAEAAUAAAA=")
tile_set = ExtResource("1_0ej5m")
[node name="Enemy" type="CharacterBody2D" parent="."]
position = Vector2(88, 129)
collision_layer = 16
script = ExtResource("2_ow6o3")
_movementSpeed = 50.0
metadata/_edit_group_ = true
[node name="NavigationAgent2D" type="NavigationAgent2D" parent="Enemy"]
target_desired_distance = 64.0
path_max_distance = 200.0
path_postprocessing = 1
debug_enabled = true
debug_use_custom = true
debug_path_custom_color = Color(1, 0.0235294, 0.0156863, 1)
[node name="CollisionShape2D" type="CollisionShape2D" parent="Enemy"]
shape = SubResource("CircleShape2D_uexe4")
[node name="AnimatedSprite2D" type="AnimatedSprite2D" parent="Enemy"]
sprite_frames = SubResource("SpriteFrames_s36lq")
frame = 2
frame_progress = 0.620075
[connection signal="velocity_computed" from="Enemy/NavigationAgent2D" to="Enemy" method="_on_navigation_agent_2d_velocity_computed"]

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,87 @@
using Godot;
using System;
public partial class NavigationTestEnemy : CharacterBody2D
{
[Export]
private float _movementSpeed = 300.0f;
public const float JumpVelocity = -400.0f;
private NavigationAgent2D _navigationAgent;
public override void _Ready()
{
_navigationAgent = GetNode<NavigationAgent2D>("NavigationAgent2D");
}
public override void _PhysicsProcess(double delta)
{
var mousePosition = GetGlobalMousePosition();
_navigationAgent.TargetPosition = mousePosition;
var currentAgentPosition = GlobalPosition;
var nexPathPosition = _navigationAgent.GetNextPathPosition();
var newVelocity = currentAgentPosition.DirectionTo(nexPathPosition) * (_movementSpeed);
// Navigation is over, can do other things
if (_navigationAgent.IsNavigationFinished())
{
return;
}
if (_navigationAgent.AvoidanceEnabled)
{
_navigationAgent.SetVelocity(newVelocity);
}
else
{
_on_navigation_agent_2d_velocity_computed(newVelocity);
}
MoveAndSlide();
}
public void _on_navigation_agent_2d_velocity_computed(Vector2 safeVelocity)
{
this.Velocity = safeVelocity;
}
// public override void _PhysicsProcess(double delta)
// {
// Vector2 velocity = Velocity;
//
// // Add the gravity.
// if (!IsOnFloor())
// {
// velocity += GetGravity() * (float)delta;
// }
//
// // Handle Jump.
// if (Input.IsActionJustPressed("ui_accept") && IsOnFloor())
// {
// velocity.Y = JumpVelocity;
// }
//
// // Get the input direction and handle the movement/deceleration.
// // As good practice, you should replace UI actions with custom gameplay actions.
// Vector2 direction = Input.GetVector("ui_left", "ui_right", "ui_up", "ui_down");
// if (direction != Vector2.Zero)
// {
// velocity.X = direction.X * Speed;
// }
// else
// {
// velocity.X = Mathf.MoveToward(Velocity.X, 0, Speed);
// }
//
// Velocity = velocity;
// MoveAndSlide();
// }
}

View file

@ -9,6 +9,9 @@ public partial class Bullet : Area2D
[Export]
public float Damage = 1f;
[Export]
public BulletOwner Owner = BulletOwner.None;
private Vector2 _direction = Vector2.Right;
@ -87,3 +90,10 @@ public partial class Bullet : Area2D
}
}
}
public enum BulletOwner
{
None,
Player,
Enemy
}

View file

@ -3,7 +3,7 @@ using Godot;
using System;
using System.Diagnostics;
public partial class Enemy : Area2D, IDestructible
public partial class Enemy : CharacterBody2D
{
private InteractionController _cachedPlayer;
private EnemyState _currentState = EnemyState.Idle;
@ -12,6 +12,8 @@ public partial class Enemy : Area2D, IDestructible
[Export] public float WalkSpeed = 2500f;
[Export] public float PlayerDisengageRange = 500f;
[Export] public Weapon EquippedWeapon;
private float _currentHealth = 0f;
@ -20,6 +22,10 @@ public partial class Enemy : Area2D, IDestructible
private NavigationAgent2D _navigationAgent;
private bool _isPlayerInRange = false;
private Vector2? _lastPlayerPosition = null;
[Export] public bool NavigationEnabled { get; set; } = false;
// Called when the node enters the scene tree for the first time.
@ -29,13 +35,13 @@ public partial class Enemy : Area2D, IDestructible
_navigationAgent = GetNode<NavigationAgent2D>("NavigationAgent2D");
CallDeferred("Setup");
//CallDeferred("Setup");
}
private void Setup()
{
}
// private void Setup()
// {
//
// }
// Called every frame. 'delta' is the elapsed time since the previous frame.
public override void _Process(double delta)
@ -45,10 +51,7 @@ public partial class Enemy : Area2D, IDestructible
case EnemyState.Idle:
break;
case EnemyState.Primed:
// Have the raycast follow the player and shoot if visible
//HandlePlayerDetection();
case EnemyState.Alert:
break;
//case EnemyState.Shooting:
@ -61,24 +64,72 @@ public partial class Enemy : Area2D, IDestructible
public override void _PhysicsProcess(double delta)
{
HandlePlayerDetection();
if (NavigationEnabled)
switch (_currentState)
{
var moveLocation = _navigationAgent.GetNextPathPosition();
case EnemyState.Idle:
HandlePlayerDetection();
break;
case EnemyState.Alert:
// Update last known player position if it's in range
if (_isPlayerInRange)
{
_lastPlayerPosition = _cachedPlayer.GlobalPosition;
}
if (_lastPlayerPosition.HasValue)
{
_navigationAgent.SetTargetPosition(_lastPlayerPosition.Value);
}
var currentAgentPosition = GlobalPosition;
if (_currentState is EnemyState.Primed)
{
this.Position = moveLocation;
}
var nextPathPosition = _navigationAgent.GetNextPathPosition();
var newVelocity = currentAgentPosition.DirectionTo(nextPathPosition) * (float)(WalkSpeed * delta);
// Navigation is over, can do other things like shooting
if (_navigationAgent.IsNavigationFinished())
{
// Shoot player
Shoot();
// TODO: If player totally left the max range it should stop shooting and go back to idle
return;
}
if (_navigationAgent.AvoidanceEnabled)
{
_navigationAgent.SetVelocity(newVelocity);
}
else
{
_on_navigation_agent_2d_velocity_computed(newVelocity);
}
MoveAndSlide();
break;
case EnemyState.Patrolling:
break;
default:
throw new ArgumentOutOfRangeException();
}
}
public void _on_navigation_agent_2d_velocity_computed(Vector2 safeVelocity)
{
this.Velocity = safeVelocity;
}
private void HandlePlayerDetection()
{
if (_cachedPlayer == null || _currentState is not EnemyState.Primed)
if (_cachedPlayer == null)
{
return;
}
@ -86,21 +137,22 @@ public partial class Enemy : Area2D, IDestructible
if (IsPlayerInSight())
{
// Update player position only if player is in sight
if (NavigationEnabled)
{
_navigationAgent.SetTargetPosition(_cachedPlayer.GlobalPosition);
}
Shoot();
// if (NavigationEnabled)
// {
// _navigationAgent.SetTargetPosition(_cachedPlayer.GlobalPosition);
// }
//Shoot();
_currentState = EnemyState.Alert;
}
}
private void Shoot()
{
if (EquippedWeapon == null) return;
if (EquippedWeapon == null || !_lastPlayerPosition.HasValue) return;
EquippedWeapon.ShootDirection = (_cachedPlayer.GlobalPosition - this.GlobalPosition).Normalized();
// Shoot at the player's last known position
EquippedWeapon.ShootDirection = (_lastPlayerPosition.Value - this.GlobalPosition).Normalized();
EquippedWeapon.Shoot();
@ -147,19 +199,31 @@ public partial class Enemy : Area2D, IDestructible
Debug.WriteLine("Enemy detection area Entered by interaction controller");
_cachedPlayer = player;
if (_currentState is EnemyState.Idle)
{
_currentState = EnemyState.Primed;
}
_isPlayerInRange = true;
// if (_currentState is EnemyState.Idle)
// {
// _currentState = EnemyState.Primed;
// }
}
}
private void _on_player_detection_area_exited(Area2D area)
{
if (_currentState is EnemyState.Primed)
{
_currentState = EnemyState.Idle;
}
_isPlayerInRange = false;
// if (_currentState is EnemyState.Primed)
// {
// _currentState = EnemyState.Idle;
// }
}
private void _on_damage_hitbox_area_entered(Area2D area)
{
if (area is not Bullet bullet) return;
GD.Print("Enemy Received damage");
this.Hit(bullet.Damage);
bullet.QueueFree();
}
// Bullets collision
@ -167,7 +231,7 @@ public partial class Enemy : Area2D, IDestructible
{
}
private void Explode()
{
Debug.WriteLine("Ded");
@ -194,7 +258,7 @@ public partial class Enemy : Area2D, IDestructible
private enum EnemyState
{
Idle,
Primed,
Alert,
Patrolling
}
}

View file

@ -41,7 +41,10 @@ public partial class GameManager : Node2D
_player.HealthChanged += (newHealth, maxHealth) => _hud.UpdateHealth(newHealth, maxHealth);
_player.InteractableAreaEntered += (interactable) => _hud.UpdateInteractable(interactable);
Inventory.ItemAdded += (item) => _hud.AddInventoryItem(item);
Inventory.ItemRemoved += (item) => _hud.RemoveInventoryItem(item);
//_player.Connect(nameof(_player.HealthChanged), _hud, nameof(_hud.UpdateHealth));
}

View file

@ -1,12 +1,13 @@
using Godot;
using System;
using Cirno.Scripts.Resources;
public partial class Hud : CanvasLayer
{
[Signal]
public delegate void StartGameEventHandler();
private Label _healthLabel;
//private Label _healthLabel;
[Export]
public PackedScene SelectorScene { get; set; }
@ -14,10 +15,13 @@ public partial class Hud : CanvasLayer
[Export]
private Node2D _selector;
[Export] private Label _healthLabel;
[Export] private Container _itemsContainer;
public override void _Ready()
{
// Assuming the HUD has a Label node named "HealthLabel"
_healthLabel = GetNode<Label>("HealthLabel");
//_healthLabel = GetNode<Label>("HealthLabel");
}
public void ShowMessage(string text)
@ -56,4 +60,17 @@ public partial class Hud : CanvasLayer
//_selector.Position = _selector.tolo
}
public void AddInventoryItem(LootItem item)
{
TextureRect texture = new TextureRect();
texture.Texture = item.InventorySprite;
_itemsContainer.AddChild(texture);
}
public void RemoveInventoryItem(LootItem item)
{
}
}

View file

@ -0,0 +1,26 @@
using Cirno.Scripts.Resources;
using Godot;
using Godot.Collections;
namespace Cirno.Scripts.Interactables;
public partial class ItemPickup : Interactable
{
[Export] public Array<LootItem> LootTable = new Array<LootItem>();
public override bool Activate()
{
GD.Print("Attempting to Pickup Item");
if (!MeetsRequirements()) return false;
foreach (var item in LootTable)
{
_inventoryManager.AddItem(item.Item, item.Amount);
}
// Delet This
QueueFree();
return true;
}
}

View file

@ -10,6 +10,12 @@ public partial class InventoryManager : Node2D
public bool RedKeycard { get; set; }
private List<LootItem> _items = new List<LootItem>();
[Signal]
public delegate void ItemAddedEventHandler(LootItem item);
[Signal]
public delegate void ItemRemovedEventHandler(LootItem item);
// Called when the node enters the scene tree for the first time.
public override void _Ready()
@ -33,8 +39,10 @@ public partial class InventoryManager : Node2D
public bool AddItem(ItemTypes type, int amount = 1)
{
_items.Add(new LootItem() { Item = type, Amount = amount });
var item = new LootItem() { Item = type, Amount = amount };
_items.Add(item);
GD.Print($"Added {type} x{amount}");
EmitSignal(nameof(ItemAdded), item);
// switch (type)
// {
// // case ItemTypes.KeycardRed:

View file

@ -8,4 +8,9 @@ public partial class LootItem : Resource
[Export] public ItemTypes Item;
[Export] public int Amount;
[Export] public int Max;
[Export] public bool PickupIfMaxed;
[Export] public bool ConsumeOnUse;
[Export] public AtlasTexture InventorySprite;
[Export] public SpriteFrames WorldSprite;
}

View file

@ -0,0 +1,23 @@
using Godot;
using System;
public partial class TilemapAvoidance : TileMapLayer
{
[Export] private TileMapLayer _solidLayer;
public override bool _UseTileDataRuntimeUpdate(Vector2I coords)
{
if (_solidLayer.GetUsedCellsById(0).Contains(coords))
{
return true;
}
return false;
}
public override void _TileDataRuntimeUpdate(Vector2I coords, TileData tileData)
{
tileData.SetNavigationPolygon(0, null);
}
}

BIN
Sprites/Items/Ammo1.aseprite (Stored with Git LFS) Normal file

Binary file not shown.

BIN
Sprites/Items/Ammo1.png (Stored with Git LFS) Normal file

Binary file not shown.

View file

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://c5g0qg6u2gm6f"
path="res://.godot/imported/Ammo1.png-05d86b462dc0f5b4fb8cd16192981dcd.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://Sprites/Items/Ammo1.png"
dest_files=["res://.godot/imported/Ammo1.png-05d86b462dc0f5b4fb8cd16192981dcd.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

BIN
Sprites/Items/BlueKeycard_Small.aseprite (Stored with Git LFS) Normal file

Binary file not shown.

BIN
Sprites/Items/BlueKeycard_Small.png (Stored with Git LFS) Normal file

Binary file not shown.

View file

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bvybqletsvqgk"
path="res://.godot/imported/BlueKeycard_Small.png-b925d0e80a2eaa9ef7fe1ee182ce6c65.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://Sprites/Items/BlueKeycard_Small.png"
dest_files=["res://.godot/imported/BlueKeycard_Small.png-b925d0e80a2eaa9ef7fe1ee182ce6c65.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

BIN
Sprites/Items/GreenKeycard_Small.aseprite (Stored with Git LFS) Normal file

Binary file not shown.

BIN
Sprites/Items/GreenKeycard_Small.png (Stored with Git LFS) Normal file

Binary file not shown.

View file

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bvkjnc3ggp7ba"
path="res://.godot/imported/GreenKeycard_Small.png-a8d591427ed9e736d5a900d3111dd142.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://Sprites/Items/GreenKeycard_Small.png"
dest_files=["res://.godot/imported/GreenKeycard_Small.png-a8d591427ed9e736d5a900d3111dd142.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

BIN
Sprites/Items/RedKeycard_Small.aseprite (Stored with Git LFS) Normal file

Binary file not shown.

BIN
Sprites/Items/RedKeycard_Small.png (Stored with Git LFS) Normal file

Binary file not shown.

View file

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bad6gbl2gity3"
path="res://.godot/imported/RedKeycard_Small.png-11803ebfee263388f1f5d2bd1a970e0e.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://Sprites/Items/RedKeycard_Small.png"
dest_files=["res://.godot/imported/RedKeycard_Small.png-11803ebfee263388f1f5d2bd1a970e0e.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

View file

@ -0,0 +1,293 @@
[gd_resource type="TileSet" load_steps=24 format=3 uid="uid://6k28roiljylj"]
[ext_resource type="Texture2D" uid="uid://tphqodqyere1" path="res://Tilesets/factory.png" id="1_70kxh"]
[ext_resource type="PackedScene" uid="uid://bj28qiai2x2ar" path="res://Scenes/Props/Barrel.tscn" id="2_cxg4b"]
[ext_resource type="PackedScene" uid="uid://bgk7fgwiis425" path="res://Scenes/Props/Box_Red.tscn" id="3_hrh63"]
[ext_resource type="PackedScene" uid="uid://crph24e6e0v0q" path="res://Scenes/Interactable/Control_Pad.tscn" id="4_brv02"]
[ext_resource type="PackedScene" uid="uid://bqq3q37hugdlj" path="res://Scenes/Door.tscn" id="5_1xipm"]
[ext_resource type="PackedScene" uid="uid://uaf5r6cd71hu" path="res://Scenes/Props/LargeTank.tscn" id="6_p8eu6"]
[ext_resource type="PackedScene" uid="uid://7cpk3c3d8cl7" path="res://Scenes/Props/MediumLiquidTank.tscn" id="7_k6a3n"]
[ext_resource type="PackedScene" uid="uid://crmwuwhltmdq7" path="res://Scenes/Props/MediumTank.tscn" id="8_vuaww"]
[ext_resource type="PackedScene" uid="uid://bnhck5eh0tqxf" path="res://Scenes/Props/MediumTerminal.tscn" id="9_wc4jy"]
[ext_resource type="PackedScene" uid="uid://e80xujqyjoh" path="res://Scenes/Props/Box_Vertical.tscn" id="10_hg2bp"]
[sub_resource type="NavigationPolygon" id="NavigationPolygon_l8pdw"]
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)])
agent_radius = 0.0
[sub_resource type="NavigationPolygon" id="NavigationPolygon_lnwgu"]
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)])
agent_radius = 0.0
[sub_resource type="NavigationPolygon" id="NavigationPolygon_ml1qs"]
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)])
agent_radius = 0.0
[sub_resource type="NavigationPolygon" id="NavigationPolygon_h4p0b"]
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)])
agent_radius = 0.0
[sub_resource type="NavigationPolygon" id="NavigationPolygon_t0ujl"]
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)])
agent_radius = 0.0
[sub_resource type="NavigationPolygon" id="NavigationPolygon_uanwu"]
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)])
agent_radius = 0.0
[sub_resource type="NavigationPolygon" id="NavigationPolygon_6t4b1"]
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)])
agent_radius = 0.0
[sub_resource type="NavigationPolygon" id="NavigationPolygon_ajuv4"]
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)])
agent_radius = 0.0
[sub_resource type="NavigationPolygon" id="NavigationPolygon_3ass8"]
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)])
agent_radius = 0.0
[sub_resource type="NavigationPolygon" id="NavigationPolygon_2t186"]
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)])
agent_radius = 0.0
[sub_resource type="NavigationPolygon" id="NavigationPolygon_63d1d"]
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)])
agent_radius = 0.0
[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_jwf4b"]
resource_name = "Factory"
texture = ExtResource("1_70kxh")
0:0/0 = 0
1:0/0 = 0
2:0/0 = 0
3:0/0 = 0
3:0/0/physics_layer_1/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
4:0/0 = 0
5:0/0 = 0
6:0/0 = 0
7:0/0 = 0
8:0/0 = 0
9:0/0 = 0
0:1/0 = 0
0:1/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_l8pdw")
1:1/0 = 0
1:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
2:1/0 = 0
3:1/0 = 0
3: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)
5:1/0 = 0
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/navigation_layer_0/polygon = SubResource("NavigationPolygon_uanwu")
7:1/0 = 0
8:1/0 = 0
9:1/0 = 0
0:2/0 = 0
1:2/0 = 0
2:2/0 = 0
3:2/0 = 0
4:2/0 = 0
5:2/0 = 0
6:2/0 = 0
6:2/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_6t4b1")
7:2/0 = 0
8:2/0 = 0
9:2/0 = 0
0:3/0 = 0
0:3/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_lnwgu")
1:3/0 = 0
1:3/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_ml1qs")
2:3/0 = 0
2:3/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_h4p0b")
3:3/0 = 0
3:3/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_t0ujl")
4:3/animation_columns = 2
4:3/0 = 0
5:3/0 = 0
7:3/0 = 0
8:3/0 = 0
9:3/0 = 0
0:4/0 = 0
0:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
1:4/0 = 0
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/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
3:4/0 = 0
3:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
4:4/0 = 0
5:4/0 = 0
6:4/0 = 0
7:4/0 = 0
8:4/0 = 0
9:4/0 = 0
0:5/0 = 0
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/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
2:5/0 = 0
2:5/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
3:5/0 = 0
3:5/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
4:5/0 = 0
4:5/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
5:5/0 = 0
5:5/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
6:5/0 = 0
6:5/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_ajuv4")
7:5/0 = 0
7:5/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_ajuv4")
8:5/0 = 0
8:5/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_ajuv4")
9:5/0 = 0
0:6/0 = 0
0:6/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
1:6/0 = 0
1:6/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
2:6/0 = 0
2:6/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
3:6/0 = 0
3:6/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/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
6:6/0 = 0
6:6/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_3ass8")
7:6/0 = 0
8:6/0 = 0
8:6/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_63d1d")
9:6/0 = 0
0:7/0 = 0
0:7/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
1:7/0 = 0
1:7/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
2:7/0 = 0
2: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/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
5:7/0 = 0
5:7/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
6:7/0 = 0
6:7/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_2t186")
7:7/0 = 0
7:7/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_2t186")
8:7/0 = 0
8:7/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_63d1d")
9:7/0 = 0
0:8/0 = 0
1:8/0 = 0
2:8/0 = 0
3:8/0 = 0
4:8/0 = 0
5:8/0 = 0
6:8/0 = 0
7:8/0 = 0
8:8/0 = 0
9:8/0 = 0
0:9/0 = 0
1:9/0 = 0
2:9/0 = 0
3:9/0 = 0
4:9/0 = 0
5:9/0 = 0
6:9/0 = 0
7:9/0 = 0
8:9/0 = 0
9:9/0 = 0
0:10/0 = 0
1:10/0 = 0
2:10/0 = 0
3:10/0 = 0
4:10/0 = 0
5:10/0 = 0
6:10/0 = 0
7:10/0 = 0
8:10/0 = 0
9:10/0 = 0
0:11/0 = 0
1:11/0 = 0
2:11/0 = 0
3:11/0 = 0
4:11/0 = 0
5:11/0 = 0
6:11/0 = 0
7:11/0 = 0
8:11/0 = 0
9:11/0 = 0
0:12/0 = 0
1:12/0 = 0
2:12/0 = 0
3:12/0 = 0
4:12/0 = 0
5:12/0 = 0
6:12/0 = 0
7:12/0 = 0
8:12/0 = 0
9:12/0 = 0
0:13/0 = 0
1:13/0 = 0
2:13/0 = 0
3:13/0 = 0
4:13/0 = 0
5:13/0 = 0
6:13/0 = 0
7:13/0 = 0
8:13/0 = 0
9:13/0 = 0
0:14/0 = 0
1:14/0 = 0
2:14/0 = 0
3:14/0 = 0
4:14/0 = 0
5:14/0 = 0
6:14/0 = 0
7:14/0 = 0
8:14/0 = 0
9:14/0 = 0
6:3/0 = 0
6:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-4, -6, -4, 0, 4, 0, 4, -6)
[sub_resource type="TileSetScenesCollectionSource" id="TileSetScenesCollectionSource_qg3vu"]
resource_name = "Props"
scenes/1/scene = ExtResource("2_cxg4b")
scenes/2/scene = ExtResource("3_hrh63")
scenes/3/scene = ExtResource("4_brv02")
scenes/4/scene = ExtResource("5_1xipm")
scenes/5/scene = ExtResource("6_p8eu6")
scenes/6/scene = ExtResource("7_k6a3n")
scenes/7/scene = ExtResource("8_vuaww")
scenes/8/scene = ExtResource("9_wc4jy")
scenes/9/scene = ExtResource("10_hg2bp")
[resource]
physics_layer_0/collision_layer = 1
physics_layer_0/collision_mask = 30
physics_layer_1/collision_layer = 32
physics_layer_1/collision_mask = 18
navigation_layer_0/layers = 1
sources/0 = SubResource("TileSetAtlasSource_jwf4b")
sources/1 = SubResource("TileSetScenesCollectionSource_qg3vu")