diff --git a/components/reactor.gd b/components/reactor.gd new file mode 100644 index 0000000..17cb8b4 --- /dev/null +++ b/components/reactor.gd @@ -0,0 +1,16 @@ +extends Node +class_name Reactor + +var energy: float = 1.0 +var production: float = 0.005 + +func _physics_process(_delta: float) -> void: + energy += production + energy = minf(1.0, energy) + +func try_drain(amount) -> bool: + if energy < amount: + return false + else: + energy -= amount + return true diff --git a/components/reactor.gd.uid b/components/reactor.gd.uid new file mode 100644 index 0000000..582ce78 --- /dev/null +++ b/components/reactor.gd.uid @@ -0,0 +1 @@ +uid://0d467kggbn3d diff --git a/components/reactor.tscn b/components/reactor.tscn new file mode 100644 index 0000000..19c1e50 --- /dev/null +++ b/components/reactor.tscn @@ -0,0 +1,6 @@ +[gd_scene load_steps=2 format=3 uid="uid://dqic53gtybiyf"] + +[ext_resource type="Script" uid="uid://0d467kggbn3d" path="res://components/reactor.gd" id="1_yoeux"] + +[node name="reactor" type="Node"] +script = ExtResource("1_yoeux") diff --git a/hud/aim_indicator.gd b/hud/aim_indicator.gd new file mode 100644 index 0000000..1b425d2 --- /dev/null +++ b/hud/aim_indicator.gd @@ -0,0 +1,16 @@ +extends Control +class_name AimIndicator + +@export var player: Player +@onready var dot: Sprite2D = $dot + +func _physics_process(_delta: float) -> void: + if player == null: + return + + var angle := player.radar.get_closest_threat_angle(player.global_rotation) + if angle == 100: + dot.visible = false + else: + dot.visible = true + dot.position.x = angle / PI * 13.0 diff --git a/hud/aim_indicator.gd.uid b/hud/aim_indicator.gd.uid new file mode 100644 index 0000000..1304c94 --- /dev/null +++ b/hud/aim_indicator.gd.uid @@ -0,0 +1 @@ +uid://bkcrwbj4qsyu6 diff --git a/hud/aim_indicator/dot.png b/hud/aim_indicator/dot.png new file mode 100644 index 0000000..707633d Binary files /dev/null and b/hud/aim_indicator/dot.png differ diff --git a/hud/aim_indicator/dot.png.import b/hud/aim_indicator/dot.png.import new file mode 100644 index 0000000..e17c257 --- /dev/null +++ b/hud/aim_indicator/dot.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cxfxrcm7n85cp" +path="res://.godot/imported/dot.png-7c9255f201ba11edc4a0fe23c3290ff1.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://hud/aim_indicator/dot.png" +dest_files=["res://.godot/imported/dot.png-7c9255f201ba11edc4a0fe23c3290ff1.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/hud/aim_indicator/scale.png b/hud/aim_indicator/scale.png new file mode 100644 index 0000000..6e7056e Binary files /dev/null and b/hud/aim_indicator/scale.png differ diff --git a/hud/aim_indicator/scale.png.import b/hud/aim_indicator/scale.png.import new file mode 100644 index 0000000..9c77209 --- /dev/null +++ b/hud/aim_indicator/scale.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://phih5e11qe3a" +path="res://.godot/imported/scale.png-57744c464fe9e89383ba0f36c96fe685.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://hud/aim_indicator/scale.png" +dest_files=["res://.godot/imported/scale.png-57744c464fe9e89383ba0f36c96fe685.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/hud/component_indicators.gd b/hud/component_indicators.gd new file mode 100644 index 0000000..e07a0bf --- /dev/null +++ b/hud/component_indicators.gd @@ -0,0 +1 @@ +extends Control diff --git a/hud/component_indicators.gd.uid b/hud/component_indicators.gd.uid new file mode 100644 index 0000000..daa8aa9 --- /dev/null +++ b/hud/component_indicators.gd.uid @@ -0,0 +1 @@ +uid://cbfjmrwk5vvgx diff --git a/hud/dia_smalll.png b/hud/dia_smalll.png new file mode 100644 index 0000000..4bf3f85 Binary files /dev/null and b/hud/dia_smalll.png differ diff --git a/hud/dia_smalll.png.import b/hud/dia_smalll.png.import new file mode 100644 index 0000000..f49563a --- /dev/null +++ b/hud/dia_smalll.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://tnjq0pju1y5o" +path="res://.godot/imported/dia_smalll.png-c5ef927364136ffb39c9023ac1d62f5a.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://hud/dia_smalll.png" +dest_files=["res://.godot/imported/dia_smalll.png-c5ef927364136ffb39c9023ac1d62f5a.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/hud/dial.png b/hud/dial.png new file mode 100644 index 0000000..51f1853 Binary files /dev/null and b/hud/dial.png differ diff --git a/hud/dial.png.import b/hud/dial.png.import new file mode 100644 index 0000000..8b34302 --- /dev/null +++ b/hud/dial.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://c7pknth5b6pt6" +path="res://.godot/imported/dial.png-204b560adca7d42912b76c878d309f42.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://hud/dial.png" +dest_files=["res://.godot/imported/dial.png-204b560adca7d42912b76c878d309f42.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/hud/dial_full.png b/hud/dial_full.png new file mode 100644 index 0000000..d5bf701 Binary files /dev/null and b/hud/dial_full.png differ diff --git a/hud/dial_full.png.import b/hud/dial_full.png.import new file mode 100644 index 0000000..6456725 --- /dev/null +++ b/hud/dial_full.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dxnwaxcclojrh" +path="res://.godot/imported/dial_full.png-536b6a74c15baf626163cb0cdbe790ea.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://hud/dial_full.png" +dest_files=["res://.godot/imported/dial_full.png-536b6a74c15baf626163cb0cdbe790ea.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/hud/energy_indicator.gd b/hud/energy_indicator.gd new file mode 100644 index 0000000..f174829 --- /dev/null +++ b/hud/energy_indicator.gd @@ -0,0 +1,14 @@ +extends Control +class_name EnergyIndicator + +@export var player: Player +@onready var fg: Sprite2D = $fg +@onready var upper: Marker2D = $upper +@onready var lower: Marker2D = $lower + +func _physics_process(_delta: float) -> void: + var energy := player.reactor.energy + var upperb := remap(upper.position.y, -34, 0, 0, 1) + var lowerb := remap(lower.position.y, -34, 0, 0, 1) + var min_y := remap(1.0 - energy, 0, 1, upperb, lowerb) + (fg.material as ShaderMaterial).set_shader_parameter("min_y", min_y) diff --git a/hud/energy_indicator.gd.uid b/hud/energy_indicator.gd.uid new file mode 100644 index 0000000..bfed816 --- /dev/null +++ b/hud/energy_indicator.gd.uid @@ -0,0 +1 @@ +uid://dm6tu57vgijdh diff --git a/hud/hud.gd b/hud/hud.gd new file mode 100644 index 0000000..c8a4d3a --- /dev/null +++ b/hud/hud.gd @@ -0,0 +1,11 @@ +extends CanvasLayer +class_name Hud + +@export var player: Player +@export var aim_indicator: AimIndicator +@export var energy_indicator: EnergyIndicator + + +func _ready() -> void: + aim_indicator.player = player + energy_indicator.player = player diff --git a/hud/hud.gd.uid b/hud/hud.gd.uid new file mode 100644 index 0000000..51428fe --- /dev/null +++ b/hud/hud.gd.uid @@ -0,0 +1 @@ +uid://dwjysathl0a8g diff --git a/hud/hud.tscn b/hud/hud.tscn new file mode 100644 index 0000000..223f3cf --- /dev/null +++ b/hud/hud.tscn @@ -0,0 +1,102 @@ +[gd_scene load_steps=13 format=3 uid="uid://cyq7l8x1pbh1h"] + +[ext_resource type="Script" uid="uid://dwjysathl0a8g" path="res://hud/hud.gd" id="1_0ivg5"] +[ext_resource type="Texture2D" uid="uid://c7pknth5b6pt6" path="res://hud/dial.png" id="1_6ca3a"] +[ext_resource type="Texture2D" uid="uid://dtrxl6d62e3c2" path="res://hud/text.png" id="1_318vg"] +[ext_resource type="Script" uid="uid://dm6tu57vgijdh" path="res://hud/energy_indicator.gd" id="2_1kkc0"] +[ext_resource type="Texture2D" uid="uid://dxnwaxcclojrh" path="res://hud/dial_full.png" id="2_2gk58"] +[ext_resource type="Script" uid="uid://bkcrwbj4qsyu6" path="res://hud/aim_indicator.gd" id="4_fjv1a"] +[ext_resource type="Shader" uid="uid://b1dxg2p1lqx1g" path="res://hud/yclip.gdshader" id="4_qv4qp"] +[ext_resource type="Texture2D" uid="uid://phih5e11qe3a" path="res://hud/aim_indicator/scale.png" id="4_w8tcp"] +[ext_resource type="Texture2D" uid="uid://cxfxrcm7n85cp" path="res://hud/aim_indicator/dot.png" id="5_svhta"] +[ext_resource type="Script" uid="uid://cbfjmrwk5vvgx" path="res://hud/component_indicators.gd" id="10_sh35x"] +[ext_resource type="Texture2D" uid="uid://tnjq0pju1y5o" path="res://hud/dia_smalll.png" id="11_gms7k"] + +[sub_resource type="ShaderMaterial" id="ShaderMaterial_sh35x"] +shader = ExtResource("4_qv4qp") +shader_parameter/min_y = 0.235291 + +[node name="hud" type="CanvasLayer" node_paths=PackedStringArray("aim_indicator", "energy_indicator")] +script = ExtResource("1_0ivg5") +aim_indicator = NodePath("aim_indicator") +energy_indicator = NodePath("energy_indicator") + +[node name="energy_indicator" type="Control" parent="."] +layout_mode = 3 +anchors_preset = 2 +anchor_top = 1.0 +anchor_bottom = 1.0 +offset_left = 10.0 +offset_top = -8.0 +offset_right = 10.0 +offset_bottom = -8.0 +grow_vertical = 0 +scale = Vector2(6, 6) +script = ExtResource("2_1kkc0") + +[node name="bg" type="Sprite2D" parent="energy_indicator"] +position = Vector2(17, -17) +texture = ExtResource("1_6ca3a") + +[node name="fg" type="Sprite2D" parent="energy_indicator"] +modulate = Color(1.1, 1.1, 1.1, 1) +material = SubResource("ShaderMaterial_sh35x") +position = Vector2(17, -17) +texture = ExtResource("2_2gk58") + +[node name="upper" type="Marker2D" parent="energy_indicator"] +position = Vector2(17.5, -26.0001) +gizmo_extents = 3.0 + +[node name="lower" type="Marker2D" parent="energy_indicator"] +position = Vector2(17.3333, -11) +gizmo_extents = 3.0 + +[node name="text" type="Sprite2D" parent="energy_indicator"] +position = Vector2(17.5, -6) +texture = ExtResource("1_318vg") + +[node name="aim_indicator" type="Control" parent="."] +layout_mode = 3 +anchors_preset = 7 +anchor_left = 0.5 +anchor_top = 1.0 +anchor_right = 0.5 +anchor_bottom = 1.0 +offset_top = -39.0 +offset_bottom = -39.0 +grow_horizontal = 2 +grow_vertical = 0 +scale = Vector2(6, 6) +script = ExtResource("4_fjv1a") + +[node name="scale" type="Sprite2D" parent="aim_indicator"] +texture = ExtResource("4_w8tcp") + +[node name="dot" type="Sprite2D" parent="aim_indicator"] +position = Vector2(-13, 0) +texture = ExtResource("5_svhta") + +[node name="component_indicators" type="Control" parent="."] +layout_mode = 3 +anchors_preset = 3 +anchor_left = 1.0 +anchor_top = 1.0 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 0 +grow_vertical = 0 +scale = Vector2(6, 6) +script = ExtResource("10_sh35x") + +[node name="Sprite2D" type="Sprite2D" parent="component_indicators"] +position = Vector2(-11.1667, -11.3333) +texture = ExtResource("11_gms7k") + +[node name="Sprite2D2" type="Sprite2D" parent="component_indicators"] +position = Vector2(-28.8333, -11.3333) +texture = ExtResource("11_gms7k") + +[node name="Sprite2D3" type="Sprite2D" parent="component_indicators"] +position = Vector2(-46.3333, -11) +texture = ExtResource("11_gms7k") diff --git a/hud/radar/line_pattern.png b/hud/radar/line_pattern.png new file mode 100644 index 0000000..33f534c Binary files /dev/null and b/hud/radar/line_pattern.png differ diff --git a/hud/radar/line_pattern.png.import b/hud/radar/line_pattern.png.import new file mode 100644 index 0000000..85fbcc9 --- /dev/null +++ b/hud/radar/line_pattern.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://u24e08wntllm" +path="res://.godot/imported/line_pattern.png-2d0f0bbd403bb86e0dc98f37128c7313.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://hud/radar/line_pattern.png" +dest_files=["res://.godot/imported/line_pattern.png-2d0f0bbd403bb86e0dc98f37128c7313.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/hud/radar/line_pattern1.png b/hud/radar/line_pattern1.png new file mode 100644 index 0000000..33f534c Binary files /dev/null and b/hud/radar/line_pattern1.png differ diff --git a/hud/radar/line_pattern1.png.import b/hud/radar/line_pattern1.png.import new file mode 100644 index 0000000..200983b --- /dev/null +++ b/hud/radar/line_pattern1.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://45x7cysybp10" +path="res://.godot/imported/line_pattern1.png-e905f27dc8bd4716c98832f5f3f2141d.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://hud/radar/line_pattern1.png" +dest_files=["res://.godot/imported/line_pattern1.png-e905f27dc8bd4716c98832f5f3f2141d.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/hud/radar/line_pattern2.png b/hud/radar/line_pattern2.png new file mode 100644 index 0000000..90ec68f Binary files /dev/null and b/hud/radar/line_pattern2.png differ diff --git a/hud/radar/line_pattern2.png.import b/hud/radar/line_pattern2.png.import new file mode 100644 index 0000000..f560a00 --- /dev/null +++ b/hud/radar/line_pattern2.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bdeu7o7ot7863" +path="res://.godot/imported/line_pattern2.png-b42d98c671fa3c9f40176e695342dc34.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://hud/radar/line_pattern2.png" +dest_files=["res://.godot/imported/line_pattern2.png-b42d98c671fa3c9f40176e695342dc34.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/hud/radar/line_pattern3.png b/hud/radar/line_pattern3.png new file mode 100644 index 0000000..617b354 Binary files /dev/null and b/hud/radar/line_pattern3.png differ diff --git a/hud/radar/line_pattern3.png.import b/hud/radar/line_pattern3.png.import new file mode 100644 index 0000000..538d76f --- /dev/null +++ b/hud/radar/line_pattern3.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dj8k7p8o7w11w" +path="res://.godot/imported/line_pattern3.png-32a68df136812f801e41f935ea854235.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://hud/radar/line_pattern3.png" +dest_files=["res://.godot/imported/line_pattern3.png-32a68df136812f801e41f935ea854235.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/hud/radar/line_pattern4.png b/hud/radar/line_pattern4.png new file mode 100644 index 0000000..735b249 Binary files /dev/null and b/hud/radar/line_pattern4.png differ diff --git a/hud/radar/line_pattern4.png.import b/hud/radar/line_pattern4.png.import new file mode 100644 index 0000000..8c55e20 --- /dev/null +++ b/hud/radar/line_pattern4.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dol4rha25gfdq" +path="res://.godot/imported/line_pattern4.png-b7ca190a13a81dba84de16d5bec367de.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://hud/radar/line_pattern4.png" +dest_files=["res://.godot/imported/line_pattern4.png-b7ca190a13a81dba84de16d5bec367de.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/hud/radar/radar.gd b/hud/radar/radar.gd index b14e15e..b111bd7 100644 --- a/hud/radar/radar.gd +++ b/hud/radar/radar.gd @@ -28,3 +28,18 @@ func release_danger(node: Node2D) -> void: func _process(_delta: float) -> void: global_rotation = 0.0 + + +# returns 100 if there is no threat, else -PI to PI +func get_closest_threat_angle(angle: float) -> float: + var min_diff: float = 100 + for i: int in get_child_count(): + var threat: Threat = get_child(i) + var a := global_position.angle_to_point(threat.node.global_position) - angle + PI / 2 + while a > PI: + a -= 2 * PI + while a < -PI: + a += 2 * PI + if abs(a) < abs(min_diff): + min_diff = a + return min_diff diff --git a/hud/radar/threat.gd b/hud/radar/threat.gd index c4e5f39..9eb12a0 100644 --- a/hud/radar/threat.gd +++ b/hud/radar/threat.gd @@ -2,6 +2,8 @@ extends Sprite2D class_name Threat @export var node: Node2D +@onready var line: Line2D = $line +@onready var animations: AnimationPlayer = $animations const dst: float = 70.0 @@ -11,11 +13,10 @@ func _physics_process(_delta: float) -> void: else: position = dst * (node.global_position - get_parent().global_position).normalized() modulate.a = 1 + line.points[0] = -position func declare_danger(): - print("danger") - $animations.play("blink") + animations.play("blink") func release_danger(): - print("no danger") - $animations.stop() + animations.stop() visible = true diff --git a/hud/radar/threat.tscn b/hud/radar/threat.tscn index 849851b..4102387 100644 --- a/hud/radar/threat.tscn +++ b/hud/radar/threat.tscn @@ -1,7 +1,26 @@ -[gd_scene load_steps=6 format=3 uid="uid://dwk5lnfnntqh2"] +[gd_scene load_steps=11 format=3 uid="uid://dwk5lnfnntqh2"] [ext_resource type="Texture2D" uid="uid://b8u4cc61kpl" path="res://hud/radar/threat_normal.png" id="1_cuq7j"] [ext_resource type="Script" uid="uid://bm76ox7rvuita" path="res://hud/radar/threat.gd" id="2_oq6ws"] +[ext_resource type="Texture2D" uid="uid://45x7cysybp10" path="res://hud/radar/line_pattern1.png" id="3_66ojb"] +[ext_resource type="Texture2D" uid="uid://bdeu7o7ot7863" path="res://hud/radar/line_pattern2.png" id="4_k5g0t"] +[ext_resource type="Texture2D" uid="uid://dj8k7p8o7w11w" path="res://hud/radar/line_pattern3.png" id="5_q6cw4"] +[ext_resource type="Texture2D" uid="uid://dol4rha25gfdq" path="res://hud/radar/line_pattern4.png" id="6_qa0nt"] + +[sub_resource type="Animation" id="Animation_3aocn"] +length = 0.001 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath(".:visible") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [true] +} [sub_resource type="Animation" id="Animation_oq6ws"] resource_name = "blink" @@ -20,27 +39,23 @@ tracks/0/keys = { "values": [false, true, false, true] } -[sub_resource type="Animation" id="Animation_3aocn"] -length = 0.001 -tracks/0/type = "value" -tracks/0/imported = false -tracks/0/enabled = true -tracks/0/path = NodePath(".:visible") -tracks/0/interp = 1 -tracks/0/loop_wrap = true -tracks/0/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 1, -"values": [true] -} - [sub_resource type="AnimationLibrary" id="AnimationLibrary_3aocn"] _data = { &"RESET": SubResource("Animation_3aocn"), &"blink": SubResource("Animation_oq6ws") } +[sub_resource type="AnimatedTexture" id="AnimatedTexture_hpcgs"] +frames = 4 +speed_scale = -2.0 +frame_0/texture = ExtResource("3_66ojb") +frame_1/texture = ExtResource("4_k5g0t") +frame_1/duration = 1.0 +frame_2/texture = ExtResource("5_q6cw4") +frame_2/duration = 1.0 +frame_3/texture = ExtResource("6_qa0nt") +frame_3/duration = 1.0 + [node name="threat" type="Sprite2D"] modulate = Color(2, 2, 2, 1) texture = ExtResource("1_cuq7j") @@ -50,3 +65,13 @@ script = ExtResource("2_oq6ws") libraries = { &"": SubResource("AnimationLibrary_3aocn") } + +[node name="line" type="Line2D" parent="."] +z_index = -1 +z_as_relative = false +texture_repeat = 2 +points = PackedVector2Array(9, 13, 0, 0) +width = 1.0 +default_color = Color(1, 1, 1, 0.458824) +texture = SubResource("AnimatedTexture_hpcgs") +texture_mode = 1 diff --git a/hud/text.png b/hud/text.png new file mode 100644 index 0000000..eaff96b Binary files /dev/null and b/hud/text.png differ diff --git a/hud/text.png.import b/hud/text.png.import new file mode 100644 index 0000000..e6356f6 --- /dev/null +++ b/hud/text.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dtrxl6d62e3c2" +path="res://.godot/imported/text.png-85ac651c4114738a1037075c89a1e462.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://hud/text.png" +dest_files=["res://.godot/imported/text.png-85ac651c4114738a1037075c89a1e462.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/hud/yclip.gdshader b/hud/yclip.gdshader new file mode 100644 index 0000000..aeeb8a3 --- /dev/null +++ b/hud/yclip.gdshader @@ -0,0 +1,7 @@ +shader_type canvas_item; + +uniform float min_y; + +void fragment() { + COLOR = texture(TEXTURE, UV) * step(min_y, UV.y); +} \ No newline at end of file diff --git a/hud/yclip.gdshader.uid b/hud/yclip.gdshader.uid new file mode 100644 index 0000000..b9c263a --- /dev/null +++ b/hud/yclip.gdshader.uid @@ -0,0 +1 @@ +uid://b1dxg2p1lqx1g diff --git a/main.tscn b/main.tscn index 03254ef..8cfe226 100644 --- a/main.tscn +++ b/main.tscn @@ -1,44 +1,804 @@ -[gd_scene load_steps=13 format=4 uid="uid://dh8rn8jgqd1vu"] +[gd_scene load_steps=12 format=4 uid="uid://dh8rn8jgqd1vu"] [ext_resource type="PackedScene" uid="uid://b3xadpl4pu33u" path="res://player/player.tscn" id="1_1fxsm"] [ext_resource type="Texture2D" uid="uid://dywcxixvvt1u5" path="res://tiles/big_wall.png" id="2_xpfyb"] -[ext_resource type="Texture2D" uid="uid://2b3vdhhu0yih" path="res://tiles/wall.png" id="3_bw3wk"] +[ext_resource type="Texture2D" uid="uid://b1bkcg45orxr0" path="res://tiles/small_wall_2.png" id="3_lquwl"] [ext_resource type="Texture2D" uid="uid://d0wr4ox4fkkt" path="res://tiles/small_wall.png" id="4_e7cbe"] [ext_resource type="PackedScene" uid="uid://cwedpavtb5vfc" path="res://enemies/basic/basic.tscn" id="5_lquwl"] [sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_x4q1a"] texture = ExtResource("2_xpfyb") texture_region_size = Vector2i(64, 64) +0:0/next_alternative_id = 4 0:0/0 = 0 0:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-32, -32, 32, -32, 32, 32, -32, 32) +0:0/1 = 1 +0:0/1/flip_h = true +0:0/1/physics_layer_0/polygon_0/points = PackedVector2Array(-32, -32, 32, -32, 32, 32, -32, 32) +0:0/2 = 2 +0:0/2/flip_v = true +0:0/2/physics_layer_0/polygon_0/points = PackedVector2Array(-32, -32, 32, -32, 32, 32, -32, 32) +0:0/3 = 3 +0:0/3/flip_h = true +0:0/3/flip_v = true +0:0/3/physics_layer_0/polygon_0/points = PackedVector2Array(-32, -32, 32, -32, 32, 32, -32, 32) [sub_resource type="TileSet" id="TileSet_28ku6"] tile_size = Vector2i(64, 64) physics_layer_0/collision_layer = 1 sources/1 = SubResource("TileSetAtlasSource_x4q1a") -[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_l8agp"] -texture = ExtResource("3_bw3wk") -texture_region_size = Vector2i(32, 32) +[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_7mycd"] +texture = ExtResource("3_lquwl") 0:0/0 = 0 -0:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) - -[sub_resource type="TileSet" id="TileSet_mnawe"] -tile_size = Vector2i(32, 32) -physics_layer_0/collision_layer = 1 -sources/0 = SubResource("TileSetAtlasSource_l8agp") +0:0/0/terrain_set = 0 +0:0/0/terrain = 1 +0:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) +0:0/0/terrains_peering_bit/right_side = 1 +0:0/0/terrains_peering_bit/bottom_right_corner = 1 +0:0/0/terrains_peering_bit/bottom_side = 1 +1:0/0 = 0 +1:0/0/terrain_set = 0 +1:0/0/terrain = 1 +1:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) +1:0/0/terrains_peering_bit/right_side = 1 +1:0/0/terrains_peering_bit/bottom_right_corner = 1 +1:0/0/terrains_peering_bit/bottom_side = 1 +1:0/0/terrains_peering_bit/bottom_left_corner = 1 +1:0/0/terrains_peering_bit/left_side = 1 +2:0/0 = 0 +2:0/0/terrain_set = 0 +2:0/0/terrain = 1 +2:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) +2:0/0/terrains_peering_bit/bottom_side = 1 +2:0/0/terrains_peering_bit/bottom_left_corner = 1 +2:0/0/terrains_peering_bit/left_side = 1 +3:0/0 = 0 +3:0/0/terrain_set = 0 +3:0/0/terrain = 1 +3:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) +3:0/0/terrains_peering_bit/bottom_side = 1 +4:0/0 = 0 +4:0/0/terrain_set = 0 +4:0/0/terrain = 1 +4:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) +4:0/0/terrains_peering_bit/right_side = 1 +4:0/0/terrains_peering_bit/bottom_side = 1 +5:0/0 = 0 +5:0/0/terrain_set = 0 +5:0/0/terrain = 1 +5:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) +5:0/0/terrains_peering_bit/right_side = 1 +5:0/0/terrains_peering_bit/bottom_side = 1 +5:0/0/terrains_peering_bit/bottom_left_corner = 1 +5:0/0/terrains_peering_bit/left_side = 1 +6:0/0 = 0 +6:0/0/terrain_set = 0 +6:0/0/terrain = 1 +6:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) +6:0/0/terrains_peering_bit/right_side = 1 +6:0/0/terrains_peering_bit/bottom_right_corner = 1 +6:0/0/terrains_peering_bit/bottom_side = 1 +6:0/0/terrains_peering_bit/left_side = 1 +7:0/0 = 0 +7:0/0/terrain_set = 0 +7:0/0/terrain = 1 +7:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) +7:0/0/terrains_peering_bit/bottom_side = 1 +7:0/0/terrains_peering_bit/left_side = 1 +8:0/0 = 0 +8:0/0/terrain_set = 0 +8:0/0/terrain = 1 +8:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) +8:0/0/terrains_peering_bit/right_side = 1 +8:0/0/terrains_peering_bit/bottom_side = 1 +8:0/0/terrains_peering_bit/left_side = 1 +9:0/0 = 0 +9:0/0/terrain_set = 0 +9:0/0/terrain = 1 +9:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) +9:0/0/terrains_peering_bit/right_side = 1 +9:0/0/terrains_peering_bit/bottom_right_corner = 1 +9:0/0/terrains_peering_bit/bottom_side = 1 +9:0/0/terrains_peering_bit/left_side = 1 +9:0/0/terrains_peering_bit/top_left_corner = 1 +9:0/0/terrains_peering_bit/top_side = 1 +0:1/0 = 0 +0:1/0/terrain_set = 0 +0:1/0/terrain = 1 +0:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) +0:1/0/terrains_peering_bit/right_side = 1 +0:1/0/terrains_peering_bit/bottom_right_corner = 1 +0:1/0/terrains_peering_bit/bottom_side = 1 +0:1/0/terrains_peering_bit/top_side = 1 +0:1/0/terrains_peering_bit/top_right_corner = 1 +1:1/0 = 0 +1:1/0/terrain_set = 0 +1:1/0/terrain = 1 +1:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) +1:1/0/terrains_peering_bit/right_side = 1 +1:1/0/terrains_peering_bit/bottom_right_corner = 1 +1:1/0/terrains_peering_bit/bottom_side = 1 +1:1/0/terrains_peering_bit/bottom_left_corner = 1 +1:1/0/terrains_peering_bit/left_side = 1 +1:1/0/terrains_peering_bit/top_left_corner = 1 +1:1/0/terrains_peering_bit/top_side = 1 +1:1/0/terrains_peering_bit/top_right_corner = 1 +2:1/0 = 0 +2:1/0/terrain_set = 0 +2:1/0/terrain = 1 +2:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) +2:1/0/terrains_peering_bit/bottom_side = 1 +2:1/0/terrains_peering_bit/bottom_left_corner = 1 +2:1/0/terrains_peering_bit/left_side = 1 +2:1/0/terrains_peering_bit/top_left_corner = 1 +2:1/0/terrains_peering_bit/top_side = 1 +3:1/0 = 0 +3:1/0/terrain_set = 0 +3:1/0/terrain = 1 +3:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) +3:1/0/terrains_peering_bit/bottom_side = 1 +3:1/0/terrains_peering_bit/top_side = 1 +4:1/0 = 0 +4:1/0/terrain_set = 0 +4:1/0/terrain = 1 +4:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) +4:1/0/terrains_peering_bit/right_side = 1 +4:1/0/terrains_peering_bit/bottom_side = 1 +4:1/0/terrains_peering_bit/top_side = 1 +4:1/0/terrains_peering_bit/top_right_corner = 1 +5:1/0 = 0 +5:1/0/terrain_set = 0 +5:1/0/terrain = 1 +5:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) +5:1/0/terrains_peering_bit/right_side = 1 +5:1/0/terrains_peering_bit/bottom_side = 1 +5:1/0/terrains_peering_bit/bottom_left_corner = 1 +5:1/0/terrains_peering_bit/left_side = 1 +5:1/0/terrains_peering_bit/top_left_corner = 1 +5:1/0/terrains_peering_bit/top_side = 1 +5:1/0/terrains_peering_bit/top_right_corner = 1 +6:1/0 = 0 +6:1/0/terrain_set = 0 +6:1/0/terrain = 1 +6:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) +6:1/0/terrains_peering_bit/right_side = 1 +6:1/0/terrains_peering_bit/bottom_right_corner = 1 +6:1/0/terrains_peering_bit/bottom_side = 1 +6:1/0/terrains_peering_bit/left_side = 1 +6:1/0/terrains_peering_bit/top_left_corner = 1 +6:1/0/terrains_peering_bit/top_side = 1 +6:1/0/terrains_peering_bit/top_right_corner = 1 +7:1/0 = 0 +7:1/0/terrain_set = 0 +7:1/0/terrain = 1 +7:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) +7:1/0/terrains_peering_bit/bottom_side = 1 +7:1/0/terrains_peering_bit/left_side = 1 +7:1/0/terrains_peering_bit/top_left_corner = 1 +7:1/0/terrains_peering_bit/top_side = 1 +8:1/0 = 0 +8:1/0/terrain_set = 0 +8:1/0/terrain = 1 +8:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) +8:1/0/terrains_peering_bit/right_side = 1 +8:1/0/terrains_peering_bit/bottom_side = 1 +8:1/0/terrains_peering_bit/left_side = 1 +8:1/0/terrains_peering_bit/top_left_corner = 1 +8:1/0/terrains_peering_bit/top_side = 1 +8:1/0/terrains_peering_bit/top_right_corner = 1 +9:1/0 = 0 +9:1/0/terrain_set = 0 +9:1/0/terrain = 1 +9:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) +9:1/0/terrains_peering_bit/right_side = 1 +9:1/0/terrains_peering_bit/bottom_side = 1 +9:1/0/terrains_peering_bit/bottom_left_corner = 1 +9:1/0/terrains_peering_bit/left_side = 1 +9:1/0/terrains_peering_bit/top_side = 1 +9:1/0/terrains_peering_bit/top_right_corner = 1 +0:2/0 = 0 +0:2/0/terrain_set = 0 +0:2/0/terrain = 1 +0:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) +0:2/0/terrains_peering_bit/right_side = 1 +0:2/0/terrains_peering_bit/top_side = 1 +0:2/0/terrains_peering_bit/top_right_corner = 1 +1:2/0 = 0 +1:2/0/terrain_set = 0 +1:2/0/terrain = 1 +1:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) +1:2/0/terrains_peering_bit/right_side = 1 +1:2/0/terrains_peering_bit/left_side = 1 +1:2/0/terrains_peering_bit/top_left_corner = 1 +1:2/0/terrains_peering_bit/top_side = 1 +1:2/0/terrains_peering_bit/top_right_corner = 1 +2:2/0 = 0 +2:2/0/terrain_set = 0 +2:2/0/terrain = 1 +2:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) +2:2/0/terrains_peering_bit/left_side = 1 +2:2/0/terrains_peering_bit/top_left_corner = 1 +2:2/0/terrains_peering_bit/top_side = 1 +3:2/0 = 0 +3:2/0/terrain_set = 0 +3:2/0/terrain = 1 +3:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) +3:2/0/terrains_peering_bit/top_side = 1 +4:2/0 = 0 +4:2/0/terrain_set = 0 +4:2/0/terrain = 1 +4:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) +4:2/0/terrains_peering_bit/right_side = 1 +4:2/0/terrains_peering_bit/bottom_right_corner = 1 +4:2/0/terrains_peering_bit/bottom_side = 1 +4:2/0/terrains_peering_bit/top_side = 1 +5:2/0 = 0 +5:2/0/terrain_set = 0 +5:2/0/terrain = 1 +5:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) +5:2/0/terrains_peering_bit/right_side = 1 +5:2/0/terrains_peering_bit/bottom_right_corner = 1 +5:2/0/terrains_peering_bit/bottom_side = 1 +5:2/0/terrains_peering_bit/bottom_left_corner = 1 +5:2/0/terrains_peering_bit/left_side = 1 +5:2/0/terrains_peering_bit/top_left_corner = 1 +5:2/0/terrains_peering_bit/top_side = 1 +6:2/0 = 0 +6:2/0/terrain_set = 0 +6:2/0/terrain = 1 +6:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) +6:2/0/terrains_peering_bit/right_side = 1 +6:2/0/terrains_peering_bit/bottom_right_corner = 1 +6:2/0/terrains_peering_bit/bottom_side = 1 +6:2/0/terrains_peering_bit/bottom_left_corner = 1 +6:2/0/terrains_peering_bit/left_side = 1 +6:2/0/terrains_peering_bit/top_side = 1 +6:2/0/terrains_peering_bit/top_right_corner = 1 +7:2/0 = 0 +7:2/0/terrain_set = 0 +7:2/0/terrain = 1 +7:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) +7:2/0/terrains_peering_bit/bottom_side = 1 +7:2/0/terrains_peering_bit/bottom_left_corner = 1 +7:2/0/terrains_peering_bit/left_side = 1 +7:2/0/terrains_peering_bit/top_side = 1 +8:2/0 = 0 +8:2/0/terrain_set = 0 +8:2/0/terrain = 1 +8:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) +8:2/0/terrains_peering_bit/right_side = 1 +8:2/0/terrains_peering_bit/bottom_right_corner = 1 +8:2/0/terrains_peering_bit/bottom_side = 1 +8:2/0/terrains_peering_bit/bottom_left_corner = 1 +8:2/0/terrains_peering_bit/left_side = 1 +8:2/0/terrains_peering_bit/top_side = 1 +9:2/0 = 0 +9:2/0/terrain_set = 0 +9:2/0/terrain = 1 +9:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) +9:2/0/terrains_peering_bit/right_side = 1 +9:2/0/terrains_peering_bit/bottom_right_corner = 1 +9:2/0/terrains_peering_bit/bottom_side = 1 +9:2/0/terrains_peering_bit/left_side = 1 +9:2/0/terrains_peering_bit/top_side = 1 +10:2/0 = 0 +10:2/0/terrain_set = 0 +10:2/0/terrain = 1 +10:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) +10:2/0/terrains_peering_bit/right_side = 1 +10:2/0/terrains_peering_bit/bottom_side = 1 +10:2/0/terrains_peering_bit/bottom_left_corner = 1 +10:2/0/terrains_peering_bit/left_side = 1 +10:2/0/terrains_peering_bit/top_side = 1 +0:3/0 = 0 +0:3/0/terrain_set = 0 +0:3/0/terrain = 1 +0:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) +0:3/0/terrains_peering_bit/right_side = 1 +1:3/0 = 0 +1:3/0/terrain_set = 0 +1:3/0/terrain = 1 +1:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) +1:3/0/terrains_peering_bit/right_side = 1 +1:3/0/terrains_peering_bit/left_side = 1 +2:3/0 = 0 +2:3/0/terrain_set = 0 +2:3/0/terrain = 1 +2:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) +2:3/0/terrains_peering_bit/left_side = 1 +3:3/0 = 0 +3:3/0/terrain_set = 0 +3:3/0/terrain = 1 +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/terrain_set = 0 +4:3/0/terrain = 1 +4:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) +4:3/0/terrains_peering_bit/right_side = 1 +4:3/0/terrains_peering_bit/top_side = 1 +5:3/0 = 0 +5:3/0/terrain_set = 0 +5:3/0/terrain = 1 +5:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) +5:3/0/terrains_peering_bit/right_side = 1 +5:3/0/terrains_peering_bit/left_side = 1 +5:3/0/terrains_peering_bit/top_left_corner = 1 +5:3/0/terrains_peering_bit/top_side = 1 +6:3/0 = 0 +6:3/0/terrain_set = 0 +6:3/0/terrain = 1 +6:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) +6:3/0/terrains_peering_bit/right_side = 1 +6:3/0/terrains_peering_bit/left_side = 1 +6:3/0/terrains_peering_bit/top_side = 1 +6:3/0/terrains_peering_bit/top_right_corner = 1 +7:3/0 = 0 +7:3/0/terrain_set = 0 +7:3/0/terrain = 1 +7:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) +7:3/0/terrains_peering_bit/left_side = 1 +7:3/0/terrains_peering_bit/top_side = 1 +8:3/0 = 0 +8:3/0/terrain_set = 0 +8:3/0/terrain = 1 +8:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) +8:3/0/terrains_peering_bit/right_side = 1 +8:3/0/terrains_peering_bit/left_side = 1 +8:3/0/terrains_peering_bit/top_side = 1 +9:3/0 = 0 +9:3/0/terrain_set = 0 +9:3/0/terrain = 1 +9:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) +9:3/0/terrains_peering_bit/right_side = 1 +9:3/0/terrains_peering_bit/bottom_side = 1 +9:3/0/terrains_peering_bit/left_side = 1 +9:3/0/terrains_peering_bit/top_side = 1 +9:3/0/terrains_peering_bit/top_right_corner = 1 +10:3/0 = 0 +10:3/0/terrain_set = 0 +10:3/0/terrain = 1 +10:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) +10:3/0/terrains_peering_bit/right_side = 1 +10:3/0/terrains_peering_bit/bottom_side = 1 +10:3/0/terrains_peering_bit/left_side = 1 +10:3/0/terrains_peering_bit/top_left_corner = 1 +10:3/0/terrains_peering_bit/top_side = 1 +4:4/0 = 0 +4:4/0/terrain_set = 0 +4:4/0/terrain = 1 +4:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) +4:4/0/terrains_peering_bit/right_side = 1 +4:4/0/terrains_peering_bit/bottom_side = 1 +4:4/0/terrains_peering_bit/top_side = 1 +5:4/0 = 0 +5:4/0/terrain_set = 0 +5:4/0/terrain = 1 +5:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) +5:4/0/terrains_peering_bit/right_side = 1 +5:4/0/terrains_peering_bit/bottom_side = 1 +5:4/0/terrains_peering_bit/bottom_left_corner = 1 +5:4/0/terrains_peering_bit/left_side = 1 +5:4/0/terrains_peering_bit/top_left_corner = 1 +5:4/0/terrains_peering_bit/top_side = 1 +6:4/0 = 0 +6:4/0/terrain_set = 0 +6:4/0/terrain = 1 +6:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) +6:4/0/terrains_peering_bit/right_side = 1 +6:4/0/terrains_peering_bit/bottom_right_corner = 1 +6:4/0/terrains_peering_bit/bottom_side = 1 +6:4/0/terrains_peering_bit/left_side = 1 +6:4/0/terrains_peering_bit/top_side = 1 +6:4/0/terrains_peering_bit/top_right_corner = 1 +7:4/0 = 0 +7:4/0/terrain_set = 0 +7:4/0/terrain = 1 +7:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) +7:4/0/terrains_peering_bit/bottom_side = 1 +7:4/0/terrains_peering_bit/left_side = 1 +7:4/0/terrains_peering_bit/top_side = 1 +8:4/0 = 0 +8:4/0/terrain_set = 0 +8:4/0/terrain = 1 +8:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) +8:4/0/terrains_peering_bit/right_side = 1 +8:4/0/terrains_peering_bit/bottom_side = 1 +8:4/0/terrains_peering_bit/left_side = 1 +8:4/0/terrains_peering_bit/top_side = 1 [sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_8fd31"] texture = ExtResource("4_e7cbe") 0:0/0 = 0 +0:0/0/terrain_set = 0 +0:0/0/terrain = 0 0:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) +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 +1:0/0 = 0 +1:0/0/terrain_set = 0 +1:0/0/terrain = 0 +1:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) +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 +1:0/0/terrains_peering_bit/bottom_left_corner = 0 +1:0/0/terrains_peering_bit/left_side = 0 +1:1/0 = 0 +1:1/0/terrain_set = 0 +1:1/0/terrain = 0 +1:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) +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 +1:1/0/terrains_peering_bit/bottom_left_corner = 0 +1:1/0/terrains_peering_bit/left_side = 0 +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:2/0 = 0 +1:2/0/terrain_set = 0 +1:2/0/terrain = 0 +1:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) +1:2/0/terrains_peering_bit/right_side = 0 +1:2/0/terrains_peering_bit/left_side = 0 +1:2/0/terrains_peering_bit/top_left_corner = 0 +1:2/0/terrains_peering_bit/top_side = 0 +1:2/0/terrains_peering_bit/top_right_corner = 0 +0:2/0 = 0 +0:2/0/terrain_set = 0 +0:2/0/terrain = 0 +0:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) +0:2/0/terrains_peering_bit/right_side = 0 +0:2/0/terrains_peering_bit/top_side = 0 +0:2/0/terrains_peering_bit/top_right_corner = 0 +0:1/0 = 0 +0:1/0/terrain_set = 0 +0:1/0/terrain = 0 +0:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) +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 +0:1/0/terrains_peering_bit/top_side = 0 +0:1/0/terrains_peering_bit/top_right_corner = 0 +2:1/0 = 0 +2:1/0/terrain_set = 0 +2:1/0/terrain = 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/bottom_side = 0 +2:1/0/terrains_peering_bit/bottom_left_corner = 0 +2:1/0/terrains_peering_bit/left_side = 0 +2:1/0/terrains_peering_bit/top_left_corner = 0 +2:1/0/terrains_peering_bit/top_side = 0 +3:1/0 = 0 +3:1/0/terrain_set = 0 +3:1/0/terrain = 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/bottom_side = 0 +3:1/0/terrains_peering_bit/top_side = 0 +2:3/0 = 0 +2:3/0/terrain_set = 0 +2:3/0/terrain = 0 +2:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) +2:3/0/terrains_peering_bit/left_side = 0 +3:3/0 = 0 +3:3/0/terrain_set = 0 +3:3/0/terrain = 0 +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/terrain_set = 0 +4:3/0/terrain = 0 +4:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) +4:3/0/terrains_peering_bit/right_side = 0 +4:3/0/terrains_peering_bit/top_side = 0 +2:0/0 = 0 +2:0/0/terrain_set = 0 +2:0/0/terrain = 0 +2:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) +2:0/0/terrains_peering_bit/bottom_side = 0 +2:0/0/terrains_peering_bit/bottom_left_corner = 0 +2:0/0/terrains_peering_bit/left_side = 0 +3:0/0 = 0 +3:0/0/terrain_set = 0 +3:0/0/terrain = 0 +3:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) +3:0/0/terrains_peering_bit/bottom_side = 0 +4:0/0 = 0 +4:0/0/terrain_set = 0 +4:0/0/terrain = 0 +4:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) +4:0/0/terrains_peering_bit/right_side = 0 +4:0/0/terrains_peering_bit/bottom_side = 0 +5:0/0 = 0 +5:0/0/terrain_set = 0 +5:0/0/terrain = 0 +5:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) +5:0/0/terrains_peering_bit/right_side = 0 +5:0/0/terrains_peering_bit/bottom_side = 0 +5:0/0/terrains_peering_bit/bottom_left_corner = 0 +5:0/0/terrains_peering_bit/left_side = 0 +6:1/0 = 0 +6:1/0/terrain_set = 0 +6:1/0/terrain = 0 +6:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) +6:1/0/terrains_peering_bit/right_side = 0 +6:1/0/terrains_peering_bit/bottom_right_corner = 0 +6:1/0/terrains_peering_bit/bottom_side = 0 +6:1/0/terrains_peering_bit/left_side = 0 +6:1/0/terrains_peering_bit/top_left_corner = 0 +6:1/0/terrains_peering_bit/top_side = 0 +6:1/0/terrains_peering_bit/top_right_corner = 0 +7:1/0 = 0 +7:1/0/terrain_set = 0 +7:1/0/terrain = 0 +7:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) +7:1/0/terrains_peering_bit/bottom_side = 0 +7:1/0/terrains_peering_bit/left_side = 0 +7:1/0/terrains_peering_bit/top_left_corner = 0 +7:1/0/terrains_peering_bit/top_side = 0 +8:1/0 = 0 +8:1/0/terrain_set = 0 +8:1/0/terrain = 0 +8:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) +8:1/0/terrains_peering_bit/right_side = 0 +8:1/0/terrains_peering_bit/bottom_side = 0 +8:1/0/terrains_peering_bit/left_side = 0 +8:1/0/terrains_peering_bit/top_left_corner = 0 +8:1/0/terrains_peering_bit/top_side = 0 +8:1/0/terrains_peering_bit/top_right_corner = 0 +9:1/0 = 0 +9:1/0/terrain_set = 0 +9:1/0/terrain = 0 +9:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) +9:1/0/terrains_peering_bit/right_side = 0 +9:1/0/terrains_peering_bit/bottom_side = 0 +9:1/0/terrains_peering_bit/bottom_left_corner = 0 +9:1/0/terrains_peering_bit/left_side = 0 +9:1/0/terrains_peering_bit/top_side = 0 +9:1/0/terrains_peering_bit/top_right_corner = 0 +5:1/0 = 0 +5:1/0/terrain_set = 0 +5:1/0/terrain = 0 +5:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) +5:1/0/terrains_peering_bit/right_side = 0 +5:1/0/terrains_peering_bit/bottom_side = 0 +5:1/0/terrains_peering_bit/bottom_left_corner = 0 +5:1/0/terrains_peering_bit/left_side = 0 +5:1/0/terrains_peering_bit/top_left_corner = 0 +5:1/0/terrains_peering_bit/top_side = 0 +5:1/0/terrains_peering_bit/top_right_corner = 0 +4:1/0 = 0 +4:1/0/terrain_set = 0 +4:1/0/terrain = 0 +4:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) +4:1/0/terrains_peering_bit/right_side = 0 +4:1/0/terrains_peering_bit/bottom_side = 0 +4:1/0/terrains_peering_bit/top_side = 0 +4:1/0/terrains_peering_bit/top_right_corner = 0 +10:2/0 = 0 +10:2/0/terrain_set = 0 +10:2/0/terrain = 0 +10:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) +10:2/0/terrains_peering_bit/right_side = 0 +10:2/0/terrains_peering_bit/bottom_side = 0 +10:2/0/terrains_peering_bit/bottom_left_corner = 0 +10:2/0/terrains_peering_bit/left_side = 0 +10:2/0/terrains_peering_bit/top_side = 0 +7:2/0 = 0 +7:2/0/terrain_set = 0 +7:2/0/terrain = 0 +7:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) +7:2/0/terrains_peering_bit/bottom_side = 0 +7:2/0/terrains_peering_bit/bottom_left_corner = 0 +7:2/0/terrains_peering_bit/left_side = 0 +7:2/0/terrains_peering_bit/top_side = 0 +6:2/0 = 0 +6:2/0/terrain_set = 0 +6:2/0/terrain = 0 +6:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) +6:2/0/terrains_peering_bit/right_side = 0 +6:2/0/terrains_peering_bit/bottom_right_corner = 0 +6:2/0/terrains_peering_bit/bottom_side = 0 +6:2/0/terrains_peering_bit/bottom_left_corner = 0 +6:2/0/terrains_peering_bit/left_side = 0 +6:2/0/terrains_peering_bit/top_side = 0 +6:2/0/terrains_peering_bit/top_right_corner = 0 +5:2/0 = 0 +5:2/0/terrain_set = 0 +5:2/0/terrain = 0 +5:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) +5:2/0/terrains_peering_bit/right_side = 0 +5:2/0/terrains_peering_bit/bottom_right_corner = 0 +5:2/0/terrains_peering_bit/bottom_side = 0 +5:2/0/terrains_peering_bit/bottom_left_corner = 0 +5:2/0/terrains_peering_bit/left_side = 0 +5:2/0/terrains_peering_bit/top_left_corner = 0 +5:2/0/terrains_peering_bit/top_side = 0 +4:2/0 = 0 +4:2/0/terrain_set = 0 +4:2/0/terrain = 0 +4:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) +4:2/0/terrains_peering_bit/right_side = 0 +4:2/0/terrains_peering_bit/bottom_right_corner = 0 +4:2/0/terrains_peering_bit/bottom_side = 0 +4:2/0/terrains_peering_bit/top_side = 0 +3:2/0 = 0 +3:2/0/terrain_set = 0 +3:2/0/terrain = 0 +3:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) +3:2/0/terrains_peering_bit/top_side = 0 +2:2/0 = 0 +2:2/0/terrain_set = 0 +2:2/0/terrain = 0 +2:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) +2:2/0/terrains_peering_bit/left_side = 0 +2:2/0/terrains_peering_bit/top_left_corner = 0 +2:2/0/terrains_peering_bit/top_side = 0 +8:2/0 = 0 +8:2/0/terrain_set = 0 +8:2/0/terrain = 0 +8:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) +8:2/0/terrains_peering_bit/right_side = 0 +8:2/0/terrains_peering_bit/bottom_right_corner = 0 +8:2/0/terrains_peering_bit/bottom_side = 0 +8:2/0/terrains_peering_bit/bottom_left_corner = 0 +8:2/0/terrains_peering_bit/left_side = 0 +8:2/0/terrains_peering_bit/top_side = 0 +9:0/0 = 0 +9:0/0/terrain_set = 0 +9:0/0/terrain = 0 +9:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) +9:0/0/terrains_peering_bit/right_side = 0 +9:0/0/terrains_peering_bit/bottom_right_corner = 0 +9:0/0/terrains_peering_bit/bottom_side = 0 +9:0/0/terrains_peering_bit/left_side = 0 +9:0/0/terrains_peering_bit/top_left_corner = 0 +9:0/0/terrains_peering_bit/top_side = 0 +8:0/0 = 0 +8:0/0/terrain_set = 0 +8:0/0/terrain = 0 +8:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) +8:0/0/terrains_peering_bit/right_side = 0 +8:0/0/terrains_peering_bit/bottom_side = 0 +8:0/0/terrains_peering_bit/left_side = 0 +7:0/0 = 0 +7:0/0/terrain_set = 0 +7:0/0/terrain = 0 +7:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) +7:0/0/terrains_peering_bit/bottom_side = 0 +7:0/0/terrains_peering_bit/left_side = 0 +6:0/0 = 0 +6:0/0/terrain_set = 0 +6:0/0/terrain = 0 +6:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) +6:0/0/terrains_peering_bit/right_side = 0 +6:0/0/terrains_peering_bit/bottom_right_corner = 0 +6:0/0/terrains_peering_bit/bottom_side = 0 +6:0/0/terrains_peering_bit/left_side = 0 +9:2/0 = 0 +9:2/0/terrain_set = 0 +9:2/0/terrain = 0 +9:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) +9:2/0/terrains_peering_bit/right_side = 0 +9:2/0/terrains_peering_bit/bottom_right_corner = 0 +9:2/0/terrains_peering_bit/bottom_side = 0 +9:2/0/terrains_peering_bit/left_side = 0 +9:2/0/terrains_peering_bit/top_side = 0 +10:3/0 = 0 +10:3/0/terrain_set = 0 +10:3/0/terrain = 0 +10:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) +10:3/0/terrains_peering_bit/right_side = 0 +10:3/0/terrains_peering_bit/bottom_side = 0 +10:3/0/terrains_peering_bit/left_side = 0 +10:3/0/terrains_peering_bit/top_left_corner = 0 +10:3/0/terrains_peering_bit/top_side = 0 +9:3/0 = 0 +9:3/0/terrain_set = 0 +9:3/0/terrain = 0 +9:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) +9:3/0/terrains_peering_bit/right_side = 0 +9:3/0/terrains_peering_bit/bottom_side = 0 +9:3/0/terrains_peering_bit/left_side = 0 +9:3/0/terrains_peering_bit/top_side = 0 +9:3/0/terrains_peering_bit/top_right_corner = 0 +8:3/0 = 0 +8:3/0/terrain_set = 0 +8:3/0/terrain = 0 +8:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) +8:3/0/terrains_peering_bit/right_side = 0 +8:3/0/terrains_peering_bit/left_side = 0 +8:3/0/terrains_peering_bit/top_side = 0 +7:3/0 = 0 +7:3/0/terrain_set = 0 +7:3/0/terrain = 0 +7:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) +7:3/0/terrains_peering_bit/left_side = 0 +7:3/0/terrains_peering_bit/top_side = 0 +6:3/0 = 0 +6:3/0/terrain_set = 0 +6:3/0/terrain = 0 +6:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) +6:3/0/terrains_peering_bit/right_side = 0 +6:3/0/terrains_peering_bit/left_side = 0 +6:3/0/terrains_peering_bit/top_side = 0 +6:3/0/terrains_peering_bit/top_right_corner = 0 +5:3/0 = 0 +5:3/0/terrain_set = 0 +5:3/0/terrain = 0 +5:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) +5:3/0/terrains_peering_bit/right_side = 0 +5:3/0/terrains_peering_bit/left_side = 0 +5:3/0/terrains_peering_bit/top_left_corner = 0 +5:3/0/terrains_peering_bit/top_side = 0 +0:3/0 = 0 +0:3/0/terrain_set = 0 +0:3/0/terrain = 0 +0:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) +0:3/0/terrains_peering_bit/right_side = 0 +1:3/0 = 0 +1:3/0/terrain_set = 0 +1:3/0/terrain = 0 +1:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) +1:3/0/terrains_peering_bit/right_side = 0 +1:3/0/terrains_peering_bit/left_side = 0 +8:4/0 = 0 +8:4/0/terrain_set = 0 +8:4/0/terrain = 0 +8:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) +8:4/0/terrains_peering_bit/right_side = 0 +8:4/0/terrains_peering_bit/bottom_side = 0 +8:4/0/terrains_peering_bit/left_side = 0 +8:4/0/terrains_peering_bit/top_side = 0 +7:4/0 = 0 +7:4/0/terrain_set = 0 +7:4/0/terrain = 0 +7:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) +7:4/0/terrains_peering_bit/bottom_side = 0 +7:4/0/terrains_peering_bit/left_side = 0 +7:4/0/terrains_peering_bit/top_side = 0 +6:4/0 = 0 +6:4/0/terrain_set = 0 +6:4/0/terrain = 0 +6:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) +6:4/0/terrains_peering_bit/right_side = 0 +6:4/0/terrains_peering_bit/bottom_right_corner = 0 +6:4/0/terrains_peering_bit/bottom_side = 0 +6:4/0/terrains_peering_bit/left_side = 0 +6:4/0/terrains_peering_bit/top_side = 0 +6:4/0/terrains_peering_bit/top_right_corner = 0 +5:4/0 = 0 +5:4/0/terrain_set = 0 +5:4/0/terrain = 0 +5:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) +5:4/0/terrains_peering_bit/right_side = 0 +5:4/0/terrains_peering_bit/bottom_side = 0 +5:4/0/terrains_peering_bit/bottom_left_corner = 0 +5:4/0/terrains_peering_bit/left_side = 0 +5:4/0/terrains_peering_bit/top_left_corner = 0 +5:4/0/terrains_peering_bit/top_side = 0 +4:4/0 = 0 +4:4/0/terrain_set = 0 +4:4/0/terrain = 0 +4:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) +4:4/0/terrains_peering_bit/right_side = 0 +4:4/0/terrains_peering_bit/bottom_side = 0 +4:4/0/terrains_peering_bit/top_side = 0 [sub_resource type="TileSet" id="TileSet_5p5j0"] physics_layer_0/collision_layer = 1 +terrain_set_0/mode = 0 +terrain_set_0/terrain_0/name = "walls" +terrain_set_0/terrain_0/color = Color(0, 0.866667, 1, 1) +terrain_set_0/terrain_1/name = "walls2" +terrain_set_0/terrain_1/color = Color(0.674858, 0.00136422, 0.81652, 1) sources/1 = SubResource("TileSetAtlasSource_8fd31") +sources/0 = SubResource("TileSetAtlasSource_7mycd") [sub_resource type="Environment" id="Environment_iwcc3"] background_mode = 3 +background_canvas_max_layer = 1 glow_enabled = true glow_levels/1 = 2.0 glow_levels/2 = 1.0 @@ -52,17 +812,15 @@ glow_blend_mode = 1 [node name="main" type="Node2D"] [node name="player" parent="." instance=ExtResource("1_1fxsm")] +thruster_strength = 40.0 +rotation_strength = 10.0 [node name="tilesbig" type="TileMapLayer" parent="."] -tile_map_data = PackedByteArray("AAD3//f/AQAAAAAAAAD3//j/AQAAAAAAAAD3//n/AQAAAAAAAAD3//r/AQAAAAAAAAD3//v/AQAAAAAAAAD3//z/AQAAAAAAAAD3//3/AQAAAAAAAAD3//7/AQAAAAAAAAD3////AQAAAAAAAAD3/wAAAQAAAAAAAAD3/wEAAQAAAAAAAAD3/wIAAQAAAAAAAAD3/wMAAQAAAAAAAAD3/wQAAQAAAAAAAAD3/wUAAQAAAAAAAAD3/wYAAQAAAAAAAAD3/wcAAQAAAAAAAAD4/wcAAQAAAAAAAAD5//f/AQAAAAAAAAD5/wcAAQAAAAAAAAD6//f/AQAAAAAAAAD6/wcAAQAAAAAAAAD7//f/AQAAAAAAAAD7/wcAAQAAAAAAAAD8//f/AQAAAAAAAAD8/wcAAQAAAAAAAAD9//f/AQAAAAAAAAD9/wcAAQAAAAAAAAD+//f/AQAAAAAAAAD+/wcAAQAAAAAAAAD///f/AQAAAAAAAAD//wcAAQAAAAAAAAAAAPf/AQAAAAAAAAAAAAcAAQAAAAAAAAABAPf/AQAAAAAAAAABAAcAAQAAAAAAAAACAPf/AQAAAAAAAAACAAcAAQAAAAAAAAADAPf/AQAAAAAAAAADAAcAAQAAAAAAAAAEAPf/AQAAAAAAAAAEAAcAAQAAAAAAAAAFAPf/AQAAAAAAAAAFAAcAAQAAAAAAAAAGAPf/AQAAAAAAAAAGAAcAAQAAAAAAAAAHAPf/AQAAAAAAAAAHAAcAAQAAAAAAAAAIAPf/AQAAAAAAAAAIAAcAAQAAAAAAAAAJAPf/AQAAAAAAAAAJAAcAAQAAAAAAAAAKAPf/AQAAAAAAAAAKAAcAAQAAAAAAAAALAPf/AQAAAAAAAAALAAcAAQAAAAAAAAAMAPf/AQAAAAAAAAAMAAcAAQAAAAAAAAANAPf/AQAAAAAAAAANAPj/AQAAAAAAAAANAPn/AQAAAAAAAAANAPr/AQAAAAAAAAANAPv/AQAAAAAAAAANAPz/AQAAAAAAAAANAP3/AQAAAAAAAAANAP7/AQAAAAAAAAANAP//AQAAAAAAAAANAAAAAQAAAAAAAAANAAEAAQAAAAAAAAANAAIAAQAAAAAAAAANAAMAAQAAAAAAAAANAAQAAQAAAAAAAAANAAUAAQAAAAAAAAANAAYAAQAAAAAAAAANAAcAAQAAAAAAAAD4//f/AQAAAAAAAAD8//v/AQAAAAAAAAD7//v/AQAAAAAAAAD6//v/AQAAAAAAAAD5//v/AQAAAAAAAAD5//r/AQAAAAAAAAD5//n/AQAAAAAAAAD6//n/AQAAAAAAAAD6//j/AQAAAAAAAAD///j/AQAAAAAAAAAAAPn/AQAAAAAAAAABAPn/AQAAAAAAAAABAPj/AQAAAAAAAAACAPj/AQAAAAAAAAACAPn/AQAAAAAAAAADAPn/AQAAAAAAAAAEAPn/AQAAAAAAAAAEAPr/AQAAAAAAAAAFAPr/AQAAAAAAAAAFAPv/AQAAAAAAAAAEAPz/AQAAAAAAAAAFAPz/AQAAAAAAAAAGAPv/AQAAAAAAAAAGAPz/AQAAAAAAAAAFAP3/AQAAAAAAAAAFAP7/AQAAAAAAAAAGAP7/AQAAAAAAAAAGAP//AQAAAAAAAAAGAAAAAQAAAAAAAAAHAAAAAQAAAAAAAAAIAAAAAQAAAAAAAAAIAAEAAQAAAAAAAAAIAAIAAQAAAAAAAAAJAAIAAQAAAAAAAAAKAAIAAQAAAAAAAAAKAAEAAQAAAAAAAAAJAPv/AQAAAAAAAAAKAPv/AQAAAAAAAAALAPv/AQAAAAAAAAALAPr/AQAAAAAAAAALAPn/AQAAAAAAAAALAPj/AQAAAAAAAAAKAPj/AQAAAAAAAAAJAPn/AQAAAAAAAAAJAPr/AQAAAAAAAAAKAPr/AQAAAAAAAAAEAAEAAQAAAAAAAAAEAAIAAQAAAAAAAAAFAAIAAQAAAAAAAAAFAAMAAQAAAAAAAAAAAAMAAQAAAAAAAAABAAQAAQAAAAAAAAACAAQAAQAAAAAAAAD6/wEAAQAAAAAAAAD6/wIAAQAAAAAAAAD6/wMAAQAAAAAAAAD7/wMAAQAAAAAAAAD8/wMAAQAAAAAAAAD8/wQAAQAAAAAAAAD7/wQAAQAAAAAAAAD4/wYAAQAAAAAAAAD4/wMAAQAAAAAAAAD4/wQAAQAAAAAAAAD5/wUAAQAAAAAAAAD5/wYAAQAAAAAAAAD6/wYAAQAAAAAAAAD7/wYAAQAAAAAAAAD4/wUAAQAAAAAAAAAGAAYAAQAAAAAAAAAKAAYAAQAAAAAAAAAKAAUAAQAAAAAAAAAKAAQAAQAAAAAAAAAJAP3/AQAAAAAAAAAJAP7/AQAAAAAAAAAKAP7/AQAAAAAAAAAKAP3/AQAAAAAAAAADAP//AQAAAAAAAAAAAPz/AQAAAAAAAAD///z/AQAAAAAAAAD6//7/AQAAAAAAAAD7//7/AQAAAAAAAAD7//3/AQAAAAAAAAD6//3/AQAAAAAAAAAAAAEAAQAAAAAAAAA=") +tile_map_data = PackedByteArray("AAD3//f/AQAAAAAAAQD3//j/AQAAAAAAAAD3//n/AQAAAAAAAgD3//r/AQAAAAAAAwD3//v/AQAAAAAAAgD3//z/AQAAAAAAAQD3//3/AQAAAAAAAgD3//7/AQAAAAAAAAD3////AQAAAAAAAAD3/wAAAQAAAAAAAwD3/wEAAQAAAAAAAAD3/wIAAQAAAAAAAQD3/wMAAQAAAAAAAwD3/wQAAQAAAAAAAgD3/wUAAQAAAAAAAwD3/wYAAQAAAAAAAwD3/wcAAQAAAAAAAQD4/wcAAQAAAAAAAgD5//f/AQAAAAAAAQD5/wcAAQAAAAAAAAD6//f/AQAAAAAAAgD6/wcAAQAAAAAAAQD7//f/AQAAAAAAAwD7/wcAAQAAAAAAAQD8//f/AQAAAAAAAwD8/wcAAQAAAAAAAQD9//f/AQAAAAAAAgD9/wcAAQAAAAAAAgD+//f/AQAAAAAAAQD+/wcAAQAAAAAAAwD///f/AQAAAAAAAQD//wcAAQAAAAAAAwAAAPf/AQAAAAAAAAAAAAcAAQAAAAAAAAABAPf/AQAAAAAAAAABAAcAAQAAAAAAAQACAPf/AQAAAAAAAgACAAcAAQAAAAAAAgADAPf/AQAAAAAAAAADAAcAAQAAAAAAAwAEAPf/AQAAAAAAAwAEAAcAAQAAAAAAAwAFAPf/AQAAAAAAAwAFAAcAAQAAAAAAAwAGAPf/AQAAAAAAAQAGAAcAAQAAAAAAAgAHAPf/AQAAAAAAAQAHAAcAAQAAAAAAAgAIAPf/AQAAAAAAAwAIAAcAAQAAAAAAAgAJAPf/AQAAAAAAAwAJAAcAAQAAAAAAAwAKAPf/AQAAAAAAAAAKAAcAAQAAAAAAAAALAPf/AQAAAAAAAQALAAcAAQAAAAAAAAAMAPf/AQAAAAAAAwAMAAcAAQAAAAAAAAANAPf/AQAAAAAAAwANAPj/AQAAAAAAAAANAPn/AQAAAAAAAgANAPr/AQAAAAAAAQANAPv/AQAAAAAAAgANAPz/AQAAAAAAAQANAP3/AQAAAAAAAgANAP7/AQAAAAAAAQANAP//AQAAAAAAAwANAAAAAQAAAAAAAAANAAEAAQAAAAAAAgANAAIAAQAAAAAAAAANAAMAAQAAAAAAAAANAAQAAQAAAAAAAwANAAUAAQAAAAAAAgANAAYAAQAAAAAAAwANAAcAAQAAAAAAAQD4//f/AQAAAAAAAgD8//v/AQAAAAAAAwD7//v/AQAAAAAAAQD6//v/AQAAAAAAAwD5//v/AQAAAAAAAgD5//r/AQAAAAAAAQD5//n/AQAAAAAAAQD6//n/AQAAAAAAAQD6//j/AQAAAAAAAAD///j/AQAAAAAAAgAAAPn/AQAAAAAAAwABAPn/AQAAAAAAAQABAPj/AQAAAAAAAgACAPj/AQAAAAAAAgACAPn/AQAAAAAAAAADAPn/AQAAAAAAAwAEAPn/AQAAAAAAAgAEAPr/AQAAAAAAAQAFAPr/AQAAAAAAAQAFAPv/AQAAAAAAAAAEAPz/AQAAAAAAAAAFAPz/AQAAAAAAAwAGAPv/AQAAAAAAAgAGAPz/AQAAAAAAAwAFAP3/AQAAAAAAAwAFAP7/AQAAAAAAAwAGAP7/AQAAAAAAAgAGAP//AQAAAAAAAgAGAAAAAQAAAAAAAAAHAAAAAQAAAAAAAwAIAAAAAQAAAAAAAwAIAAEAAQAAAAAAAgAIAAIAAQAAAAAAAgAJAAIAAQAAAAAAAQAKAAIAAQAAAAAAAQAKAAEAAQAAAAAAAQAJAPv/AQAAAAAAAAAKAPv/AQAAAAAAAgALAPv/AQAAAAAAAQALAPr/AQAAAAAAAAALAPn/AQAAAAAAAwALAPj/AQAAAAAAAwAKAPj/AQAAAAAAAAAJAPn/AQAAAAAAAwAJAPr/AQAAAAAAAQAKAPr/AQAAAAAAAAAEAAEAAQAAAAAAAgAEAAIAAQAAAAAAAwAFAAIAAQAAAAAAAQAFAAMAAQAAAAAAAQAAAAMAAQAAAAAAAAABAAQAAQAAAAAAAgACAAQAAQAAAAAAAgD6/wEAAQAAAAAAAAD6/wIAAQAAAAAAAQD6/wMAAQAAAAAAAgD7/wMAAQAAAAAAAQD8/wMAAQAAAAAAAAD8/wQAAQAAAAAAAAD7/wQAAQAAAAAAAQD4/wYAAQAAAAAAAwD4/wMAAQAAAAAAAgD4/wQAAQAAAAAAAAD5/wUAAQAAAAAAAgD5/wYAAQAAAAAAAQD6/wYAAQAAAAAAAAD7/wYAAQAAAAAAAgD4/wUAAQAAAAAAAgAGAAYAAQAAAAAAAwAKAAYAAQAAAAAAAwAKAAUAAQAAAAAAAwAKAAQAAQAAAAAAAAAJAP3/AQAAAAAAAAAJAP7/AQAAAAAAAAAKAP7/AQAAAAAAAgAKAP3/AQAAAAAAAgADAP//AQAAAAAAAAAAAPz/AQAAAAAAAwD///z/AQAAAAAAAgD6//7/AQAAAAAAAQD7//7/AQAAAAAAAgD7//3/AQAAAAAAAwD6//3/AQAAAAAAAgAAAAEAAQAAAAAAAAA=") tile_set = SubResource("TileSet_28ku6") -[node name="tilesmiddle" type="TileMapLayer" parent="."] -tile_map_data = PackedByteArray("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") -tile_set = SubResource("TileSet_mnawe") - [node name="tilessmall" type="TileMapLayer" parent="."] -tile_map_data = PackedByteArray("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AAD//w0AAQAAAAAAAAABAAsAAQAAAAAAAAACAAsAAQAAAAAAAAAEAA0AAQAAAAAAAAAFAA0AAQAAAAAAAAAGAA0AAQAAAAAAAAAEAAwAAQAAAAAAAAADAAsAAQAAAAAAAAACAAgAAQAAAAAAAAADAAgAAQAAAAAAAAAEAAUAAQAAAAAAAAAEAAQAAQAAAAAAAAAEAAMAAQAAAAAAAAABAAMAAQAAAAAAAAD//wUAAQAAAAAAAAD+/wUAAQAAAAAAAAABAAIAAQAAAAAAAAAAAAMAAQAAAAAAAAD//wQAAQAAAAAAAAD9/wcAAQAAAAAAAAD9/wgAAQAAAAAAAAD//woAAQAAAAAAAAD0/w0AAQAAAAAAAADw/wsAAQAAAAAAAADx/wsAAQAAAAAAAADu/wkAAQAAAAAAAADu/wgAAQAAAAAAAADu/wcAAQAAAAAAAADs/wUAAQAAAAAAAADn/wUAAQAAAAAAAADn/wwAAQAAAAAAAADn/w0AAQAAAAAAAADn/w4AAQAAAAAAAADp/xAAAQAAAAAAAADr/xIAAQAAAAAAAADu/xQAAQAAAAAAAADv/xQAAQAAAAAAAADw/xQAAQAAAAAAAADx/xQAAQAAAAAAAADs/xcAAQAAAAAAAADt/xcAAQAAAAAAAADu/xcAAQAAAAAAAADy/xkAAQAAAAAAAADz/xkAAQAAAAAAAADo/xUAAQAAAAAAAADp/xUAAQAAAAAAAADk/xMAAQAAAAAAAADk/xIAAQAAAAAAAADk/xEAAQAAAAAAAADk/xAAAQAAAAAAAADl/xMAAQAAAAAAAADi/wsAAQAAAAAAAADi/woAAQAAAAAAAADi/wkAAQAAAAAAAADg/wUAAQAAAAAAAADg/wQAAQAAAAAAAADg/wMAAQAAAAAAAADg/wAAAQAAAAAAAADi//7/AQAAAAAAAADi//v/AQAAAAAAAADg//n/AQAAAAAAAADg//j/AQAAAAAAAADg//f/AQAAAAAAAADg//b/AQAAAAAAAADg/+7/AQAAAAAAAADg/+//AQAAAAAAAADg//D/AQAAAAAAAADj/+r/AQAAAAAAAADj/+v/AQAAAAAAAADs//L/AQAAAAAAAADr//D/AQAAAAAAAADq//D/AQAAAAAAAADp//D/AQAAAAAAAADv//D/AQAAAAAAAADu//D/AQAAAAAAAADw//D/AQAAAAAAAAD9//T/AQAAAAAAAAACAPT/AQAAAAAAAAD9/+//AQAAAAAAAAD+/+//AQAAAAAAAAD//+//AQAAAAAAAAAAAO//AQAAAAAAAAABAO//AQAAAAAAAAAAAPb/AQAAAAAAAAALAPv/AQAAAAAAAAANAPn/AQAAAAAAAAAOAPn/AQAAAAAAAAAQAP3/AQAAAAAAAAAQAP7/AQAAAAAAAAAQAP//AQAAAAAAAAALAP7/AQAAAAAAAAANAAAAAQAAAAAAAAAzABYAAQAAAAAAAAAzABcAAQAAAAAAAAAzABkAAQAAAAAAAAAxABsAAQAAAAAAAAAuABkAAQAAAAAAAAAuABgAAQAAAAAAAAAuABcAAQAAAAAAAAAsABIAAQAAAAAAAAAsABEAAQAAAAAAAAAsABMAAQAAAAAAAAAxABEAAQAAAAAAAAAzAA4AAQAAAAAAAAAzAA8AAQAAAAAAAAAzAA0AAQAAAAAAAAAzAAwAAQAAAAAAAAAzAAIAAQAAAAAAAAAzAAMAAQAAAAAAAAAzAAQAAQAAAAAAAAAyAAIAAQAAAAAAAAAxAP//AQAAAAAAAAAzAP3/AQAAAAAAAAAvAAEAAQAAAAAAAAAzAPL/AQAAAAAAAAAzAPP/AQAAAAAAAAAyAPP/AQAAAAAAAAAzAPT/AQAAAAAAAAAzAPX/AQAAAAAAAAAnABMAAQAAAAAAAAAnABIAAQAAAAAAAAAlABkAAQAAAAAAAAAlABgAAQAAAAAAAAAjABsAAQAAAAAAAAAgABsAAQAAAAAAAAAcABkAAQAAAAAAAAAdABkAAQAAAAAAAAAaABcAAQAAAAAAAAAaABYAAQAAAAAAAAAaABUAAQAAAAAAAAAYABMAAQAAAAAAAAAYABIAAQAAAAAAAAAXABoAAQAAAAAAAAAXABsAAQAAAAAAAAAGABsAAQAAAAAAAAAHABsAAQAAAAAAAAAIABsAAQAAAAAAAAAJABsAAQAAAAAAAAAKABsAAQAAAAAAAAALABsAAQAAAAAAAAAMABsAAQAAAAAAAAANABsAAQAAAAAAAAACABkAAQAAAAAAAAADABkAAQAAAAAAAAAAABcAAQAAAAAAAAAAABYAAQAAAAAAAAD//xkAAQAAAAAAAAD//xoAAQAAAAAAAAD//xsAAQAAAAAAAAD+/xsAAQAAAAAAAAD2/xsAAQAAAAAAAAD3/xsAAQAAAAAAAAD4/xsAAQAAAAAAAAD5/xsAAQAAAAAAAAD0/xIAAQAAAAAAAADw//7/AQAAAAAAAADy//z/AQAAAAAAAADw////AQAAAAAAAADz//z/AQAAAAAAAADy//f/AQAAAAAAAADw//X/AQAAAAAAAADw//T/AQAAAAAAAADp//P/AQAAAAAAAADo//P/AQAAAAAAAADn//b/AQAAAAAAAADn//f/AQAAAAAAAADn//j/AQAAAAAAAADn//n/AQAAAAAAAADn//r/AQAAAAAAAADo//z/AQAAAAAAAADp//z/AQAAAAAAAADr//7/AQAAAAAAAADk//D/AQAAAAAAAAA=") +tile_map_data = PackedByteArray("AADs/wcAAQADAAAAAADs/wgAAQAEAAIAAADs/wkAAQAGAAIAAADs/woAAQABAAEAAADs/wsAAQABAAEAAADt/wsAAQAFAAEAAADu/wsAAQAFAAMAAADv/wsAAQABAAMAAADw/wsAAQACAAMAAADt/woAAQAFAAIAAADt/wkAAQACAAEAAADt/wgAAQACAAAAAADu/woAAQACAAAAAADr/woAAQAAAAEAAADr/wsAAQAAAAEAAADr/wwAAQAAAAIAAADs/wwAAQABAAIAAADt/wwAAQACAAIAAADr/wkAAQAAAAAAAADp/wMAAQACAAAAAADo/wMAAQAFAAIAAADn/wMAAQABAAEAAADn/wQAAQABAAEAAADn/wUAAQAIAAEAAADo/wUAAQACAAIAAADp/wQAAQACAAIAAADn/wIAAQABAAAAAADm/wMAAQAAAAEAAADo/wQAAQAFAAEAAADo/wIAAQACAAAAAADm/wIAAQAAAAAAAADm/wQAAQAAAAEAAADm/wUAAQAAAAIAAADn/wYAAQADAAEAAADn/wcAAQADAAIAAADp/xAAAQAAAAMAAADq/xAAAQAGAAAAAADr/xAAAQAGAAIAAADr/xEAAQAGAAEAAADr/xIAAQAAAAIAAADq/xEAAQAAAAIAAADo/xUAAQADAAAAAADo/xYAAQAIAAIAAADp/xYAAQACAAAAAADp/xcAAQAFAAIAAADq/xcAAQACAAAAAADo/xcAAQAGAAEAAADq/xgAAQACAAIAAADp/xgAAQABAAIAAADo/xgAAQAAAAIAAADn/xcAAQAAAAIAAADn/xYAAQAAAAAAAADr/w8AAQAAAAAAAADs/w8AAQACAAAAAADs/xAAAQAFAAIAAADt/xAAAQACAAAAAADt/xEAAQACAAIAAADs/xEAAQAFAAEAAADs/xIAAQACAAIAAAD0/w4AAQAAAAAAAADz/w8AAQAAAAAAAADz/xAAAQAAAAEAAAD0/xAAAQAFAAEAAAD1/xAAAQACAAIAAAD1/w8AAQACAAEAAAD1/w4AAQACAAAAAAD0/w8AAQAGAAIAAAD0/xEAAQACAAIAAADz/xEAAQAAAAIAAAAEAA4AAQAFAAIAAAADAA4AAQAGAAIAAAADAA8AAQABAAEAAAACABAAAQAGAAEAAAACABEAAQAAAAIAAAADABEAAQAGAAEAAAAEABEAAQACAAEAAAAEABAAAQAFAAEAAAAFABAAAQABAAIAAAAFAA8AAQAFAAIAAAAFAA4AAQACAAAAAAADABAAAQABAAEAAAAEAA8AAQABAAEAAAABABAAAQAAAAIAAAABAA8AAQAAAAAAAAAEABIAAQACAAIAAAADABIAAQAAAAIAAAAEAA0AAQACAAAAAAADAA0AAQAAAAAAAAACAA4AAQAAAAAAAAACAA8AAQAGAAIAAAAGAA8AAQAFAAAAAAAHAA8AAQABAAMAAAAIAA8AAQACAAMAAAAGABAAAQACAAIAAAAGABQAAQAAAAMAAAAHABQAAQAGAAMAAAAIABQAAQABAAIAAAAJABQAAQAFAAMAAAAKABQAAQACAAMAAAAJABMAAQACAAAAAAAIABMAAQABAAAAAAAHABMAAQAAAAAAAAATAAsAAQABAAEAAAASAAsAAQAAAAEAAAASAAwAAQAGAAQAAAATAA0AAQAIAAEAAAAUAA0AAQACAAIAAAAUAAwAAQACAAEAAAAUAAsAAQACAAEAAAAUAAoAAQACAAAAAAATAAoAAQABAAAAAAASAAoAAQAAAAAAAAATAAwAAQABAAEAAAARAAwAAQAAAAMAAAATAA4AAQADAAIAAAASAA0AAQAAAAIAAAAUAAYAAQAEAAIAAAAUAAcAAQAAAAIAAAAVAAYAAQACAAAAAAAVAAcAAQACAAIAAAAUAAUAAQADAAAAAAAYAAoAAQADAAAAAAAXAAsAAQAAAAMAAAAYAAsAAQAHAAQAAAAYAAwAAQADAAEAAAAYAA0AAQADAAIAAAAPAAYAAQADAAAAAAAPAAcAAQADAAEAAAAPAAgAAQAEAAQAAAAPAAkAAQADAAIAAAAQAAgAAQACAAMAAAAgAAMAAQACAAAAAAAfAAMAAQAFAAIAAAAfAAQAAQABAAEAAAAeAAQAAQABAAEAAAAdAAQAAQABAAEAAAAdAAUAAQABAAEAAAAdAAYAAQABAAIAAAAeAAYAAQAGAAEAAAAfAAYAAQABAAEAAAAgAAUAAQAFAAEAAAAhAAUAAQACAAIAAAAhAAQAAQACAAAAAAAfAAIAAQACAAAAAAAeAAIAAQABAAAAAAAdAAIAAQAAAAAAAAAdAAMAAQAGAAIAAAAcAAMAAQABAAAAAAAbAAMAAQAAAAAAAAAbAAQAAQAGAAIAAAAaAAQAAQAAAAAAAAAaAAUAAQAAAAIAAAAbAAUAAQABAAIAAAAcAAUAAQAGAAEAAAAcAAYAAQAAAAIAAAAeAAUAAQABAAEAAAAcAAQAAQABAAEAAAAfAAUAAQABAAEAAAAfAAcAAQAIAAEAAAAfAAgAAQADAAEAAAAfAAkAAQADAAIAAAAeAAcAAQAAAAIAAAAgAAQAAQAFAAIAAAAeAAMAAQABAAEAAAAgAAYAAQACAAEAAAAgAAcAAQACAAIAAAD//wMAAQAAAAAAAAD//wQAAQAAAAIAAAAAAAQAAQAGAAEAAAAAAAUAAQAAAAIAAAABAAUAAQACAAIAAAABAAQAAQACAAEAAAABAAMAAQACAAAAAAAAAAMAAQABAAAAAAAYAPf/AQABAAEAAAAYAPj/AQABAAIAAAAZAPj/AQACAAIAAAAXAPb/AQAAAAAAAAAYAPb/AQABAAAAAAAXAPf/AQAGAAQAAAAWAPf/AQAAAAMAAAAXAPj/AQAAAAIAAAAZAPf/AQACAAEAAAAZAPb/AQACAAAAAAAcAPD/AQACAAEAAAAbAPH/AQAAAAEAAAAbAPL/AQAAAAIAAAAcAPL/AQACAAIAAAAcAPH/AQAFAAQAAAAdAPH/AQACAAMAAAAcAO//AQACAAAAAAAbAPD/AQAAAAEAAAAbAO//AQAAAAAAAAATAPL/AQACAAAAAAASAPL/AQAAAAAAAAASAPP/AQAGAAQAAAARAPP/AQAAAAMAAAASAPT/AQAAAAIAAAATAPT/AQABAAIAAAAUAPT/AQACAAIAAAAUAPP/AQACAAAAAAATAPP/AQAFAAIAAAATAO7/AQAFAAQAAAASAO7/AQAGAAQAAAAUAO7/AQACAAMAAAATAO3/AQACAAAAAAASAO3/AQAAAAAAAAARAO7/AQAAAAMAAAATAO//AQAHAAEAAAASAO//AQAAAAIAAAATAPD/AQADAAIAAAAUAOb/AQABAAAAAAAUAOf/AQAGAAEAAAATAOf/AQAAAAIAAAAUAOj/AQAAAAIAAAAVAOj/AQACAAIAAAAVAOf/AQACAAEAAAAVAOb/AQACAAAAAAATAOb/AQAAAAAAAAAHAOf/AQAFAAAAAAAGAOf/AQAAAAAAAAAGAOj/AQAAAAIAAAAHAOj/AQACAAIAAAAIAOf/AQACAAMAAAAAAOP/AQAFAAIAAAABAOP/AQACAAAAAAAAAOL/AQACAAAAAAD//+L/AQAAAAAAAAD//+P/AQAAAAEAAAAAAOT/AQABAAIAAAABAOT/AQACAAIAAAD//+T/AQAAAAIAAAACAN//AQAAAAAAAAACAOD/AQAAAAIAAAADAOD/AQABAAIAAAAEAOD/AQACAAIAAAAEAN//AQACAAAAAAADAN7/AQADAAAAAAADAN//AQAIAAIAAAD8/9//AQACAAAAAAD7/9//AQABAAAAAAD6/9//AQAAAAAAAAD6/+D/AQAAAAIAAAD7/+D/AQABAAIAAAD8/+D/AQACAAIAAADz/9//AQABAAAAAADy/9//AQABAAAAAADx/9//AQAAAAAAAADx/+D/AQAAAAIAAADy/+H/AQAAAAIAAADz/+H/AQABAAIAAAD0/+H/AQACAAIAAAD0/+D/AQACAAEAAAD0/9//AQACAAAAAADy/+D/AQAGAAEAAADz/+D/AQABAAEAAADr/+b/AQABAAAAAADr/+f/AQAGAAEAAADq/+f/AQAAAAIAAADr/+j/AQAAAAIAAADs/+j/AQABAAIAAADt/+j/AQACAAIAAADt/+f/AQACAAAAAADs/+b/AQACAAAAAADq/+b/AQAAAAAAAADs/+f/AQAFAAIAAADy/+r/AQAAAAAAAADy/+v/AQAAAAIAAADz/+z/AQAAAAIAAAD0/+z/AQACAAIAAAD0/+v/AQACAAEAAAD0/+r/AQACAAAAAADz/+r/AQABAAAAAADz/+v/AQAGAAEAAADt/+//AQAFAAIAAADs/+//AQAGAAIAAADs//D/AQABAAIAAADt//D/AQABAAIAAADu//D/AQACAAIAAADu/+//AQACAAAAAADt/+7/AQACAAAAAADs/+7/AQAAAAAAAADr/+//AQAAAAAAAADr//D/AQAAAAIAAADj/xEAAAACAAAAAADi/xEAAAAAAAAAAADi/xIAAAAAAAEAAADi/xMAAAAAAAIAAADj/xMAAAAGAAEAAADk/xMAAAACAAEAAADk/xIAAAACAAAAAADj/xIAAAAFAAIAAADk/xQAAAACAAIAAADj/xQAAAAAAAIAAADg/wsAAAABAAAAAADf/wsAAAAAAAAAAADf/wwAAAAAAAIAAADg/wwAAAAGAAEAAADh/wwAAAACAAEAAADh/wsAAAACAAAA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AADr/97/AAAAAAAAAADr/9//AAAAAAEAAADs/9//AAAFAAIAAADq/+D/AAAAAAMAAAD1/+D/AAADAAAAAAD1/+H/AAAEAAIAAAD1/+L/AAAGAAIAAAD2/+L/AAACAAEAAAD2/+H/AAACAAAAAAD0/+L/AAAAAAAAAAD0/+P/AAAAAAIAAAD1/+P/AAAGAAEAAAD2/+P/AAACAAEAAAD1/+T/AAAAAAIAAAD2/+T/AAACAAIAAAAAAN//AAACAAEAAAD//9//AAAGAAIAAAD//+D/AAAIAAEAAAD//+H/AAADAAIAAAAAAOD/AAACAAIAAAD+/9//AAAAAAAAAAD+/+D/AAAAAAIAAAAAAN7/AAACAAAAAAD//97/AAAAAAAAAAAOAN//AAACAAMAAAANAN//AAAFAAAAAAAMAN//AAABAAAAAAAMAOD/AAABAAEAAAALAOD/AAAAAAEAAAANAOD/AAACAAEAAAALAN//AAAAAAAAAAALAOH/AAAAAAIAAAAMAOH/AAABAAIAAAANAOH/AAACAAIAAAARAOP/AQACAAEAAAAQAOP/AQAGAAQAAAARAOL/AQACAAAAAAAQAOL/AQAAAAAAAAAPAOP/AQAAAAMAAAAQAOT/AQAAAAIAAAARAOT/AQACAAIAAAASAOP/AAAAAAAAAAATAOP/AAABAAAAAAAUAOP/AAACAAAAAAAUAOT/AAACAAEAAAAUAOX/AAACAAIAAAATAOX/AAABAAIAAAATAOT/AAABAAEAAAASAOT/AAAAAAEAAAASAOX/AAAJAAEAAAARAOX/AAAAAAAAAAASAOb/AAACAAIAAAARAOb/AAAAAAIAAAAYAPP/AAAGAAIAAAAXAPP/AAAAAAAAAAAXAPT/AAAAAAIAAAAYAPT/AAABAAIAAAAYAPL/AAAAAAAAAAAZAPL/AAACAAAAAAAZAPP/AAACAAEAAAAZAPT/AAACAAIAAAAQAPD/AAACAAAAAAAPAPD/AAABAAAAAAAOAPD/AAAJAAAAAAAPAPH/AAABAAEAAAAPAPL/AAAGAAEAAAAQAPL/AAAFAAEAAAAQAPH/AAAFAAIAAAAOAPL/AAAAAAIAAAAOAPH/AAAAAAEAAAAPAPP/AAAAAAIAAAAQAPP/AAACAAIAAAARAPH/AAACAAAAAAARAPL/AAACAAIAAAAOAO//AAACAAAAAAANAO//AAAAAAAAAAANAPD/AAAAAAIAAADv//r/AAAFAAIAAADu//r/AAAAAAEAAADv//v/AAABAAEAAADw//v/AAACAAEAAADw//r/AAACAAAAAADv//n/AAACAAAAAADu//n/AAAAAAAAAADu//v/AAAAAAEAAADv//z/AAABAAIAAADu//z/AAAAAAIAAADw//z/AAACAAIAAADx//r/AQAAAAEAAADx//v/AQAAAAIAAADy//v/AQACAAIAAADy//r/AQACAAEAAADy//n/AQACAAEAAADx//n/AQAGAAEAAADy//j/AQACAAAAAADx//j/AQAFAAIAAADw//j/AQAGAAEAAADw//n/AQAAAAIAAADx//f/AQACAAAAAADw//f/AQABAAAAAADv//f/AQAAAAAAAADv//j/AQAAAAIAAADn//X/AQAAAAAAAADm//b/AQAAAAAAAADm//f/AQAAAAIAAADn//f/AQAGAAEAAADo//f/AQAFAAEAAADp//f/AQACAAIAAADp//b/AQACAAAAAADo//b/AQAFAAIAAADo//X/AQACAAAAAADn//b/AQAGAAIAAADn//j/AQAAAAIAAADo//j/AQAHAAEAAADo//n/AQADAAIAAADr//P/AAAAAAAAAADr//T/AAAAAAEAAADs//T/AAAFAAEAAADs//P/AAABAAAAAADt//P/AAACAAAAAADt//T/AAACAAIAAADs//X/AAACAAIAAADr//X/AAAAAAIAAAA=") tile_set = SubResource("TileSet_5p5j0") [node name="environment" type="WorldEnvironment" parent="."] diff --git a/player/player.gd b/player/player.gd index 8abd56e..d086f68 100644 --- a/player/player.gd +++ b/player/player.gd @@ -3,12 +3,12 @@ class_name Player @export var thruster_strength := 40.0 @export var rotation_strength := 10.0 - @export var drift_curve : Curve - var angular_velocity_target := 0.0 -@onready var radar: Radar = $radar +@export var radar: Radar + +@export var reactor: Reactor var delay := false func _physics_process(delta: float) -> void: diff --git a/player/player.tscn b/player/player.tscn index 5a83d4f..cd211c1 100644 --- a/player/player.tscn +++ b/player/player.tscn @@ -1,12 +1,14 @@ -[gd_scene load_steps=18 format=3 uid="uid://b3xadpl4pu33u"] +[gd_scene load_steps=20 format=3 uid="uid://b3xadpl4pu33u"] [ext_resource type="Script" uid="uid://erjhplyctxik" path="res://player/player.gd" id="1_kkw55"] [ext_resource type="Texture2D" uid="uid://dlenptyfk1iwn" path="res://player/ship.png" id="2_1h4u8"] +[ext_resource type="PackedScene" uid="uid://cyq7l8x1pbh1h" path="res://hud/hud.tscn" id="2_rgyib"] [ext_resource type="PackedScene" uid="uid://dnndsvtgqr8eq" path="res://bullet/bullet.tscn" id="2_yw30f"] [ext_resource type="PackedScene" uid="uid://y08tu4ftj3t4" path="res://player/thruster.tscn" id="3_r6c8y"] [ext_resource type="Script" uid="uid://dccya6vnwi1x4" path="res://player/railgun.gd" id="5_g6k8r"] [ext_resource type="PackedScene" uid="uid://800ou0i3omcs" path="res://effects/flash.tscn" id="5_qjkh3"] [ext_resource type="PackedScene" uid="uid://dfm1atk5lpdo4" path="res://hud/radar/radar.tscn" id="7_rgyib"] +[ext_resource type="PackedScene" uid="uid://dqic53gtybiyf" path="res://components/reactor.tscn" id="9_hg6s5"] [sub_resource type="PhysicsMaterial" id="PhysicsMaterial_6481p"] friction = 0.0 @@ -44,6 +46,31 @@ scale_max = 2.0 scale_curve = SubResource("CurveTexture_w2mcu") alpha_curve = SubResource("CurveTexture_q5aon") +[sub_resource type="Animation" id="Animation_g6k8r"] +length = 0.001 +tracks/0/type = "bezier" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("%railgun/../image:scale:x") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"handle_modes": PackedInt32Array(0), +"points": PackedFloat32Array(1, -0.25, 0, 0.25, 0), +"times": PackedFloat32Array(0) +} +tracks/1/type = "bezier" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("%railgun/../image:scale:y") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"handle_modes": PackedInt32Array(0), +"points": PackedFloat32Array(1, -0.25, 0, 0.25, 0), +"times": PackedFloat32Array(0) +} + [sub_resource type="Animation" id="Animation_qjkh3"] resource_name = "shoot" length = 0.4 @@ -85,46 +112,21 @@ tracks/2/keys = { }] } -[sub_resource type="Animation" id="Animation_g6k8r"] -length = 0.001 -tracks/0/type = "bezier" -tracks/0/imported = false -tracks/0/enabled = true -tracks/0/path = NodePath("%railgun/../image:scale:x") -tracks/0/interp = 1 -tracks/0/loop_wrap = true -tracks/0/keys = { -"handle_modes": PackedInt32Array(0), -"points": PackedFloat32Array(1, -0.25, 0, 0.25, 0), -"times": PackedFloat32Array(0) -} -tracks/1/type = "bezier" -tracks/1/imported = false -tracks/1/enabled = true -tracks/1/path = NodePath("%railgun/../image:scale:y") -tracks/1/interp = 1 -tracks/1/loop_wrap = true -tracks/1/keys = { -"handle_modes": PackedInt32Array(0), -"points": PackedFloat32Array(1, -0.25, 0, 0.25, 0), -"times": PackedFloat32Array(0) -} - [sub_resource type="AnimationLibrary" id="AnimationLibrary_g6k8r"] _data = { &"RESET": SubResource("Animation_g6k8r"), &"shoot": SubResource("Animation_qjkh3") } -[node name="player" type="RigidBody2D"] +[node name="player" type="RigidBody2D" node_paths=PackedStringArray("radar", "reactor")] physics_material_override = SubResource("PhysicsMaterial_6481p") gravity_scale = 0.0 can_sleep = false angular_damp = 2.0 script = ExtResource("1_kkw55") -thruster_strength = null -rotation_strength = null drift_curve = SubResource("Curve_f6djc") +radar = NodePath("radar") +reactor = NodePath("components/reactor") [node name="camera" type="Camera2D" parent="."] zoom = Vector2(4, 4) @@ -135,6 +137,9 @@ amount = 100 lifetime = 30.0 process_material = SubResource("ParticleProcessMaterial_k0vl1") +[node name="hud" parent="camera" node_paths=PackedStringArray("player") instance=ExtResource("2_rgyib")] +player = NodePath("../..") + [node name="collision" type="CollisionPolygon2D" parent="."] polygon = PackedVector2Array(-5, 7, 0, -7, 5, 7, 2, 8, -2, 8) @@ -162,3 +167,7 @@ libraries = { } [node name="radar" parent="." instance=ExtResource("7_rgyib")] + +[node name="components" type="Node" parent="."] + +[node name="reactor" parent="components" instance=ExtResource("9_hg6s5")] diff --git a/player/railgun.gd b/player/railgun.gd index 2909b28..98f1279 100644 --- a/player/railgun.gd +++ b/player/railgun.gd @@ -1,11 +1,12 @@ extends Marker2D -@export var bullet : PackedScene -@export var speed : float = 100.0 -@export var knockback : float = 30.0 +@export var bullet: PackedScene +@export var speed: float = 100.0 +@export var knockback: float = 30.0 +@export var energy_cost: float = 0.5 @onready var flash: Flash = %flash -@onready var parent: RigidBody2D = get_parent() +@onready var player: Player = get_parent() var can_shoot: bool = true @@ -17,13 +18,14 @@ func shoot() -> void: func do_shoot() -> void: if not can_shoot: return - var instance : Bullet = bullet.instantiate() as Bullet - parent.get_parent().add_child(instance) - instance.global_position = global_position - instance.apply_central_impulse(Vector2.UP.rotated(global_rotation) * speed) - instance.player = parent - parent.apply_central_impulse(Vector2.DOWN.rotated(global_rotation) * knockback) - flash.flash() + if player.reactor.try_drain(energy_cost): + var instance : Bullet = bullet.instantiate() as Bullet + player.get_parent().add_child(instance) + instance.global_position = global_position + instance.apply_central_impulse(Vector2.UP.rotated(global_rotation) * speed) + instance.player = player + player.apply_central_impulse(Vector2.DOWN.rotated(global_rotation) * knockback) + flash.flash() can_shoot = false await get_tree().create_timer(0.5).timeout can_shoot = true diff --git a/player/ship.png b/player/ship.png index 4eb7343..9ef0c1d 100644 Binary files a/player/ship.png and b/player/ship.png differ diff --git a/tiles/big_wall.png b/tiles/big_wall.png index c2e5da5..254583f 100644 Binary files a/tiles/big_wall.png and b/tiles/big_wall.png differ diff --git a/tiles/small_wall.png b/tiles/small_wall.png index bd26f1d..2a3d80c 100644 Binary files a/tiles/small_wall.png and b/tiles/small_wall.png differ diff --git a/tiles/small_wall_2.png b/tiles/small_wall_2.png new file mode 100644 index 0000000..e9ff838 Binary files /dev/null and b/tiles/small_wall_2.png differ diff --git a/tiles/small_wall_2.png.import b/tiles/small_wall_2.png.import new file mode 100644 index 0000000..b5428f5 --- /dev/null +++ b/tiles/small_wall_2.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b1bkcg45orxr0" +path="res://.godot/imported/small_wall_2.png-39a3d70409d292baf907fc3d9c5045b4.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://tiles/small_wall_2.png" +dest_files=["res://.godot/imported/small_wall_2.png-39a3d70409d292baf907fc3d9c5045b4.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