Compare commits
4 Commits
1d4948e5b4
...
4c15f50f6e
Author | SHA1 | Date | |
---|---|---|---|
4c15f50f6e | |||
cea3956fbb | |||
ad53ef9715 | |||
ca0d21e40a |
@@ -9,12 +9,13 @@ namespace Mr.BrickAdventures.Autoloads;
|
||||
|
||||
public partial class GameManager : Node
|
||||
{
|
||||
[Export] public Array<PackedScene> LevelScenes { get; set; } = new();
|
||||
[Export] public Array<PackedScene> LevelScenes { get; set; } = [];
|
||||
|
||||
public PlayerController Player { get; set; }
|
||||
|
||||
private List<Node> _sceneNodes = new();
|
||||
private List<Node> _sceneNodes = [];
|
||||
|
||||
[Export]
|
||||
public Dictionary PlayerState { get; set; } = new()
|
||||
{
|
||||
{ "coins", 0 },
|
||||
@@ -25,6 +26,7 @@ public partial class GameManager : Node
|
||||
{ "unlocked_skills", new Array<SkillData>() }
|
||||
};
|
||||
|
||||
[Export]
|
||||
public Dictionary CurrentSessionState { get; private set; } = new()
|
||||
{
|
||||
{ "coins_collected", 0 },
|
||||
|
@@ -1,6 +1,10 @@
|
||||
<wpf:ResourceDictionary xml:space="preserve" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:ss="urn:shemas-jetbrains-com:settings-storage-xaml" xmlns:wpf="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
|
||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ACanvasItem_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003F_002Econfig_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FSourcesCache_003Fef7b819b226fab796d1dfe66d415dd7510bcac87675020ddb8f03a828e763_003FCanvasItem_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ACollisionShape2D_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003F_002Econfig_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FSourcesCache_003F2ca9b7334678f5c97c7c2a9fbe4837be71cae11b6a30408dd4791b18f997e4a_003FCollisionShape2D_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ACSharpInstanceBridge_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003F_002Econfig_003FJetBrains_003FRider2025_002E2_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F94701b444afa4c3d9a7a53ebcaa35fd1583c00_003F14_003F4b4ade3f_003FCSharpInstanceBridge_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ADelegateUtils_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003F_002Econfig_003FJetBrains_003FRider2025_002E2_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F94701b444afa4c3d9a7a53ebcaa35fd1583c00_003F08_003F45f75e10_003FDelegateUtils_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ADictionary_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003F_002Econfig_003FJetBrains_003FRider2025_002E2_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F94701b444afa4c3d9a7a53ebcaa35fd1583c00_003F47_003Fda1d8d31_003FDictionary_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AMr_002EBrickAdventures_002Escripts_002Ecomponents_002ECollectableComponent_005FScriptSignals_002Egenerated_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003F_002Econfig_003FJetBrains_003FRider2025_002E2_003Fresharper_002Dhost_003FSourcesCache_003F80d9408eb7280c15eb4a12b61cdf8f7f1b0c5a2_003FMr_002EBrickAdventures_002Escripts_002Ecomponents_002ECollectableComponent_005FScriptSignals_002Egenerated_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ANode2D_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003F_002Econfig_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FSourcesCache_003F86db9cd834346aad02d74c1b66dd9c64d6ef3147435dd9c9c9477b48f7_003FNode2D_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ARectangleShape2D_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003F_002Econfig_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FSourcesCache_003Fa1cc98873548652da0c14ecefa4737431426fcbb24a7f0641e3d9c266c3_003FRectangleShape2D_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AShape2D_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003F_002Econfig_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FSourcesCache_003F3671dbbd9b17cdf2bf9075b468b6bd7e3ab13fc3be7a116484085d3b6cc9fe_003FShape2D_002Ecs/@EntryIndexedValue">ForceIncluded</s:String></wpf:ResourceDictionary>
|
3
addons/phantom_camera/icons/viewfinder/Select.svg
Normal file
3
addons/phantom_camera/icons/viewfinder/Select.svg
Normal file
@@ -0,0 +1,3 @@
|
||||
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M10.5 0H13.5V3.12444C17.2688 3.75672 20.2433 6.73124 20.8756 10.5H24V13.5H20.8756C20.2433 17.2688 17.2688 20.2433 13.5 20.8756V24H10.5V20.8756C6.73124 20.2433 3.75672 17.2688 3.12444 13.5H0V10.5H3.12444C3.75672 6.73124 6.73124 3.75672 10.5 3.12444V0ZM18 12C18 15.3137 15.3137 18 12 18C8.68629 18 6 15.3137 6 12C6 8.68629 8.68629 6 12 6C15.3137 6 18 8.68629 18 12ZM12 15C13.6569 15 15 13.6569 15 12C15 10.3431 13.6569 9 12 9C10.3431 9 9 10.3431 9 12C9 13.6569 10.3431 15 12 15Z" fill="#F5F5F5"/>
|
||||
</svg>
|
After Width: | Height: | Size: 647 B |
37
addons/phantom_camera/icons/viewfinder/Select.svg.import
Normal file
37
addons/phantom_camera/icons/viewfinder/Select.svg.import
Normal file
@@ -0,0 +1,37 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://rghrkoqrm2ig"
|
||||
path="res://.godot/imported/Select.svg-cdf90b8b400d3b91a023b70c6a823894.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://addons/phantom_camera/icons/viewfinder/Select.svg"
|
||||
dest_files=["res://.godot/imported/Select.svg-cdf90b8b400d3b91a023b70c6a823894.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
|
||||
svg/scale=2.0
|
||||
editor/scale_with_editor_scale=false
|
||||
editor/convert_colors_with_editor_theme=false
|
4
addons/phantom_camera/icons/warning.svg
Normal file
4
addons/phantom_camera/icons/warning.svg
Normal file
@@ -0,0 +1,4 @@
|
||||
<svg width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M13.4696 3.48718C14.5942 1.50427 17.4058 1.50428 18.5304 3.48718L31.6042 26.5385C32.7288 28.5214 31.323 31 29.0738 31H2.92622C0.676966 31 -0.72881 28.5214 0.395816 26.5385L13.4696 3.48718Z" fill="#EAA15E"/>
|
||||
<path d="M16 22.0875C15.4694 22.0875 15.0408 21.9222 14.7143 21.5917C14.4082 21.2611 14.2143 20.8042 14.1327 20.2208L13.0612 11.4125C12.9184 10.4014 13.1122 9.58472 13.6429 8.9625C14.1735 8.32083 14.9592 8 16 8C17.0612 8 17.8469 8.32083 18.3571 8.9625C18.8673 9.58472 19.051 10.4014 18.9082 11.4125L17.8673 20.2208C17.7857 20.8042 17.5918 21.2611 17.2857 21.5917C16.9796 21.9222 16.551 22.0875 16 22.0875ZM16 29C15.0816 29 14.3469 28.7375 13.7959 28.2125C13.2653 27.6875 13 26.9972 13 26.1417C13 25.3056 13.2653 24.6347 13.7959 24.1292C14.3469 23.6042 15.0816 23.3417 16 23.3417C16.9592 23.3417 17.6939 23.6042 18.2041 24.1292C18.7347 24.6347 19 25.3056 19 26.1417C19 26.9972 18.7347 27.6875 18.2041 28.2125C17.6939 28.7375 16.9592 29 16 29Z" fill="black"/>
|
||||
</svg>
|
After Width: | Height: | Size: 1.1 KiB |
37
addons/phantom_camera/icons/warning.svg.import
Normal file
37
addons/phantom_camera/icons/warning.svg.import
Normal file
@@ -0,0 +1,37 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://cjlv0bg7byjx0"
|
||||
path="res://.godot/imported/warning.svg-c1b21c265e0842bbdc9ed10735995366.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://addons/phantom_camera/icons/warning.svg"
|
||||
dest_files=["res://.godot/imported/warning.svg-c1b21c265e0842bbdc9ed10735995366.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
|
||||
svg/scale=2.0
|
||||
editor/scale_with_editor_scale=false
|
||||
editor/convert_colors_with_editor_theme=false
|
@@ -0,0 +1,87 @@
|
||||
[gd_scene load_steps=8 format=3 uid="uid://mbjdav5oqves"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://c84cxry3t35ny" path="res://addons/phantom_camera/scripts/panel/viewfinder/host_list.gd" id="1_h6ayt"]
|
||||
[ext_resource type="Texture2D" uid="uid://5fatldiu7dd5" path="res://addons/phantom_camera/icons/phantom_camera_host.svg" id="1_xlgqb"]
|
||||
|
||||
[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_w002y"]
|
||||
|
||||
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_kq7gm"]
|
||||
content_margin_left = 8.0
|
||||
content_margin_top = 4.0
|
||||
content_margin_right = 8.0
|
||||
content_margin_bottom = 4.0
|
||||
bg_color = Color(0.0784314, 0.109804, 0.129412, 1)
|
||||
border_width_top = 2
|
||||
border_width_right = 2
|
||||
border_color = Color(0.960784, 0.960784, 0.960784, 1)
|
||||
corner_radius_top_right = 8
|
||||
|
||||
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_ynag5"]
|
||||
content_margin_left = 8.0
|
||||
content_margin_top = 4.0
|
||||
content_margin_right = 8.0
|
||||
content_margin_bottom = 4.0
|
||||
bg_color = Color(0.960784, 0.960784, 0.960784, 1)
|
||||
border_width_top = 2
|
||||
border_width_right = 2
|
||||
border_width_bottom = 2
|
||||
corner_radius_top_right = 6
|
||||
|
||||
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_q2svd"]
|
||||
content_margin_left = 8.0
|
||||
content_margin_top = 4.0
|
||||
content_margin_right = 8.0
|
||||
content_margin_bottom = 4.0
|
||||
bg_color = Color(0.0784314, 0.109804, 0.129412, 1)
|
||||
border_width_top = 2
|
||||
border_width_right = 2
|
||||
border_width_bottom = 2
|
||||
border_color = Color(0.227451, 0.72549, 0.603922, 1)
|
||||
corner_radius_top_right = 8
|
||||
|
||||
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_e0jvt"]
|
||||
content_margin_left = 0.0
|
||||
content_margin_top = 8.0
|
||||
content_margin_right = 0.0
|
||||
content_margin_bottom = 8.0
|
||||
bg_color = Color(0.0784314, 0.109804, 0.129412, 1)
|
||||
border_width_top = 2
|
||||
border_width_right = 2
|
||||
border_color = Color(0.227451, 0.72549, 0.603922, 1)
|
||||
corner_radius_top_right = 10
|
||||
|
||||
[node name="PCamHostList" type="VBoxContainer"]
|
||||
anchors_preset = 9
|
||||
anchor_bottom = 1.0
|
||||
size_flags_horizontal = 0
|
||||
size_flags_vertical = 0
|
||||
theme_override_constants/separation = -2
|
||||
alignment = 2
|
||||
script = ExtResource("1_h6ayt")
|
||||
|
||||
[node name="HostListButton" type="Button" parent="."]
|
||||
unique_name_in_owner = true
|
||||
custom_minimum_size = Vector2(40, 40)
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 0
|
||||
theme_override_colors/icon_hover_color = Color(0.0784314, 0.109804, 0.129412, 1)
|
||||
theme_override_colors/icon_hover_pressed_color = Color(0.0784314, 0.109804, 0.129412, 1)
|
||||
theme_override_styles/focus = SubResource("StyleBoxEmpty_w002y")
|
||||
theme_override_styles/hover_pressed = SubResource("StyleBoxFlat_kq7gm")
|
||||
theme_override_styles/hover = SubResource("StyleBoxFlat_ynag5")
|
||||
theme_override_styles/pressed = SubResource("StyleBoxFlat_kq7gm")
|
||||
theme_override_styles/normal = SubResource("StyleBoxFlat_q2svd")
|
||||
icon = ExtResource("1_xlgqb")
|
||||
expand_icon = true
|
||||
|
||||
[node name="ScrollContainer" type="ScrollContainer" parent="."]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
size_flags_vertical = 3
|
||||
theme_override_styles/panel = SubResource("StyleBoxFlat_e0jvt")
|
||||
horizontal_scroll_mode = 0
|
||||
|
||||
[node name="HostListContainer" type="VBoxContainer" parent="ScrollContainer"]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
theme_override_constants/separation = 8
|
@@ -0,0 +1,68 @@
|
||||
[gd_scene load_steps=10 format=3 uid="uid://btn6jgv0vix7"]
|
||||
|
||||
[ext_resource type="FontFile" uid="uid://dve7mgsjik4dg" path="res://addons/phantom_camera/fonts/Nunito-Regular.ttf" id="1_anjxo"]
|
||||
[ext_resource type="Theme" uid="uid://bhppejri5dbsf" path="res://addons/phantom_camera/themes/theme.tres" id="1_wql5t"]
|
||||
[ext_resource type="Texture2D" uid="uid://rghrkoqrm2ig" path="res://addons/phantom_camera/icons/viewfinder/Select.svg" id="2_71b6g"]
|
||||
[ext_resource type="ButtonGroup" uid="uid://dfu0b8jbtyr1n" path="res://addons/phantom_camera/panel/viewfinder/host_list/host_list_item_group.tres" id="3_06a0y"]
|
||||
[ext_resource type="Script" uid="uid://bv24ubx8mutw7" path="res://addons/phantom_camera/scripts/panel/viewfinder/host_list_item.gd" id="3_a5o8b"]
|
||||
[ext_resource type="Texture2D" uid="uid://cjlv0bg7byjx0" path="res://addons/phantom_camera/icons/warning.svg" id="3_qgpy7"]
|
||||
|
||||
[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_0rxfi"]
|
||||
content_margin_right = 6.0
|
||||
|
||||
[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_llqnh"]
|
||||
|
||||
[sub_resource type="Theme" id="Theme_7h15c"]
|
||||
Button/colors/icon_hover_color = Color(0.960784, 0.960784, 0.960784, 1)
|
||||
Button/colors/icon_hover_pressed_color = Color(0.227451, 0.72549, 0.603922, 1)
|
||||
Button/colors/icon_normal_color = Color(0.227451, 0.72549, 0.603922, 1)
|
||||
Button/colors/icon_pressed_color = Color(0.227451, 0.72549, 0.603922, 1)
|
||||
Button/constants/icon_max_width = 20
|
||||
Button/styles/focus = SubResource("StyleBoxEmpty_llqnh")
|
||||
|
||||
[node name="HostListItem" type="PanelContainer"]
|
||||
offset_right = 229.0
|
||||
offset_bottom = 34.0
|
||||
theme_override_styles/panel = SubResource("StyleBoxEmpty_0rxfi")
|
||||
script = ExtResource("3_a5o8b")
|
||||
|
||||
[node name="HBoxContainer" type="HBoxContainer" parent="."]
|
||||
layout_mode = 2
|
||||
theme_override_constants/separation = 2
|
||||
|
||||
[node name="SelectPCamHost" type="Button" parent="HBoxContainer"]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
size_flags_vertical = 4
|
||||
tooltip_text = "Select the Phantom Camera Host node from the scene hierarchy"
|
||||
focus_mode = 0
|
||||
theme = SubResource("Theme_7h15c")
|
||||
icon = ExtResource("2_71b6g")
|
||||
flat = true
|
||||
|
||||
[node name="HBoxContainer" type="HBoxContainer" parent="HBoxContainer"]
|
||||
layout_mode = 2
|
||||
theme_override_constants/separation = 8
|
||||
|
||||
[node name="ErrorPCamHost" type="TextureRect" parent="HBoxContainer/HBoxContainer"]
|
||||
unique_name_in_owner = true
|
||||
custom_minimum_size = Vector2(18, 18)
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
size_flags_vertical = 4
|
||||
tooltip_text = "This Phantom Camera Host node will not affect a Camera node.
|
||||
See the warning in the Scene Tree for more information."
|
||||
texture = ExtResource("3_qgpy7")
|
||||
expand_mode = 1
|
||||
|
||||
[node name="SwitchPCamHost" type="Button" parent="HBoxContainer/HBoxContainer"]
|
||||
unique_name_in_owner = true
|
||||
custom_minimum_size = Vector2(40, 0)
|
||||
layout_mode = 2
|
||||
tooltip_text = "Change the viewfinder's camera to the camera of this Phantom Camera Host"
|
||||
theme = ExtResource("1_wql5t")
|
||||
theme_override_fonts/font = ExtResource("1_anjxo")
|
||||
theme_override_font_sizes/font_size = 18
|
||||
toggle_mode = true
|
||||
button_group = ExtResource("3_06a0y")
|
||||
text = "{ PCamHostName }"
|
@@ -0,0 +1,3 @@
|
||||
[gd_resource type="ButtonGroup" format=3 uid="uid://dfu0b8jbtyr1n"]
|
||||
|
||||
[resource]
|
@@ -0,0 +1,84 @@
|
||||
@tool
|
||||
extends EditorNode3DGizmo
|
||||
|
||||
#var pcam_3d: PhantomCamera3D
|
||||
|
||||
func _redraw() -> void:
|
||||
clear()
|
||||
|
||||
var icon: Material = get_plugin().get_material(get_plugin().get_name(), self)
|
||||
add_unscaled_billboard(icon, 0.035)
|
||||
|
||||
var pcam_3d: PhantomCamera3D = get_node_3d()
|
||||
|
||||
# if pcam_3d.is_following():
|
||||
# _draw_target(pcam_3d, pcam_3d.get_follow_target_position(), "follow_target")
|
||||
# if pcam_3d.is_looking_at():
|
||||
# _draw_target(pcam_3d, pcam_3d.get_look_at_target_position(), "look_at_target")
|
||||
|
||||
if pcam_3d.is_active(): return
|
||||
|
||||
var frustum_lines: PackedVector3Array = PackedVector3Array()
|
||||
var height: float = 0.25
|
||||
var width: float = height * 1.25
|
||||
var forward: float = height * -1.5
|
||||
|
||||
# Trapezoid
|
||||
frustum_lines.push_back(Vector3.ZERO)
|
||||
frustum_lines.push_back(Vector3(-width, height, forward))
|
||||
|
||||
frustum_lines.push_back(Vector3.ZERO)
|
||||
frustum_lines.push_back(Vector3(width, height, forward))
|
||||
|
||||
frustum_lines.push_back(Vector3.ZERO)
|
||||
frustum_lines.push_back(Vector3(-width, -height, forward))
|
||||
|
||||
frustum_lines.push_back(Vector3.ZERO)
|
||||
frustum_lines.push_back(Vector3(width, -height, forward))
|
||||
|
||||
#######
|
||||
# Frame
|
||||
#######
|
||||
## Left
|
||||
frustum_lines.push_back(Vector3(-width, height, forward))
|
||||
frustum_lines.push_back(Vector3(-width, -height, forward))
|
||||
|
||||
## Bottom
|
||||
frustum_lines.push_back(Vector3(-width, -height, forward))
|
||||
frustum_lines.push_back(Vector3(width, -height, forward))
|
||||
|
||||
## Right
|
||||
frustum_lines.push_back(Vector3(width, -height, forward))
|
||||
frustum_lines.push_back(Vector3(width, height, forward))
|
||||
|
||||
## Top
|
||||
frustum_lines.push_back(Vector3(width, height, forward))
|
||||
frustum_lines.push_back(Vector3(-width, height, forward))
|
||||
|
||||
##############
|
||||
# Up Direction
|
||||
##############
|
||||
var up_height: float = height + 0.15
|
||||
var up_width: float = width / 3
|
||||
|
||||
## Left
|
||||
frustum_lines.push_back(Vector3(0, up_height, forward))
|
||||
frustum_lines.push_back(Vector3(-up_width, height, forward))
|
||||
|
||||
## Right
|
||||
frustum_lines.push_back(Vector3(0, up_height, forward))
|
||||
frustum_lines.push_back(Vector3(up_width, height, forward))
|
||||
|
||||
var frustum_material: StandardMaterial3D = get_plugin().get_material("frustum", self)
|
||||
add_lines(frustum_lines, frustum_material, false)
|
||||
|
||||
|
||||
func _draw_target(pcam_3d: Node3D, target_position: Vector3, type: String) -> void:
|
||||
var target_lines: PackedVector3Array = PackedVector3Array()
|
||||
var direction: Vector3 = target_position - pcam_3d.global_position
|
||||
var end_position: Vector3 = pcam_3d.global_basis.z * direction
|
||||
|
||||
target_lines.push_back(Vector3.ZERO)
|
||||
target_lines.push_back(end_position)
|
||||
var target_material: StandardMaterial3D = get_plugin().get_material(type, self)
|
||||
add_lines(target_lines, target_material, false)
|
@@ -0,0 +1 @@
|
||||
uid://cyr6fgximfw6q
|
@@ -0,0 +1,37 @@
|
||||
@tool
|
||||
extends EditorNode3DGizmoPlugin
|
||||
|
||||
const PhantomCamera3DNode: Script = preload("res://addons/phantom_camera/scripts/phantom_camera/phantom_camera_3d.gd")
|
||||
const PhantomCamera3DGizmo: Script = preload("res://addons/phantom_camera/scripts/gizmos/phantom_camera_3d_gizmo.gd")
|
||||
const _icon_texture: Texture2D = preload("res://addons/phantom_camera/icons/phantom_camera_gizmo.svg")
|
||||
var _gizmo_name: String = "PhantomCamera3D"
|
||||
|
||||
var gizmo_name: String: set = set_gizmo_name
|
||||
var _gizmo_icon: Texture2D
|
||||
var _gizmo_spatial_script: Script = PhantomCamera3DNode
|
||||
|
||||
|
||||
func set_gizmo_name(name: String) -> void:
|
||||
_gizmo_name = name
|
||||
|
||||
|
||||
func _get_gizmo_name() -> String:
|
||||
return _gizmo_name
|
||||
|
||||
|
||||
func _has_gizmo(spatial: Node3D) -> bool:
|
||||
return spatial is PhantomCamera3D
|
||||
|
||||
|
||||
func _init() -> void:
|
||||
create_icon_material(gizmo_name, _icon_texture, false, Color.WHITE)
|
||||
create_material("frustum", Color8(252, 127, 127, 255))
|
||||
create_material("follow_target", Color8(185, 58, 89))
|
||||
create_material("look_at_target", Color8(61, 207, 225))
|
||||
|
||||
|
||||
func _create_gizmo(for_node_3d: Node3D) -> EditorNode3DGizmo:
|
||||
if for_node_3d is PhantomCamera3DNode:
|
||||
return PhantomCamera3DGizmo.new()
|
||||
else:
|
||||
return null
|
@@ -0,0 +1 @@
|
||||
uid://bkevga3bx4rfj
|
@@ -0,0 +1,29 @@
|
||||
extends EditorNode3DGizmoPlugin
|
||||
|
||||
var _spatial_script: Script = preload("res://addons/phantom_camera/scripts/phantom_camera/phantom_camera_noise_emitter_3d.gd")
|
||||
var _gizmo_icon: Texture2D = preload("res://addons/phantom_camera/icons/phantom_camera_noise_emitter_gizmo.svg")
|
||||
|
||||
var _gizmo_name: StringName = "PhantomCameraNoiseEmitter"
|
||||
|
||||
func _init() -> void:
|
||||
create_material("main", Color8(252, 127, 127, 255))
|
||||
create_handle_material("handles")
|
||||
create_icon_material(_gizmo_name, _gizmo_icon, false, Color.WHITE)
|
||||
|
||||
|
||||
func _has_gizmo(node: Node3D):
|
||||
return node.get_script() == _spatial_script
|
||||
|
||||
|
||||
func _get_gizmo_name() -> String:
|
||||
return _gizmo_name
|
||||
|
||||
|
||||
func _redraw(gizmo: EditorNode3DGizmo):
|
||||
gizmo.clear()
|
||||
|
||||
var icon: Material = get_material(_gizmo_name, gizmo)
|
||||
gizmo.add_unscaled_billboard(icon, 0.035)
|
||||
|
||||
#var material = get_material("main", gizmo)
|
||||
#gizmo.add_lines(_draw_frustum(), material)
|
@@ -0,0 +1 @@
|
||||
uid://dddokcd2ug05i
|
@@ -0,0 +1,36 @@
|
||||
using System.Linq;
|
||||
using Godot;
|
||||
|
||||
#nullable enable
|
||||
|
||||
namespace PhantomCamera.Manager;
|
||||
|
||||
public static class PhantomCameraManager
|
||||
{
|
||||
private static GodotObject? _instance;
|
||||
|
||||
public static GodotObject Instance => _instance ??= Engine.GetSingleton("PhantomCameraManager");
|
||||
|
||||
public static PhantomCamera2D[] PhantomCamera2Ds =>
|
||||
Instance.Call(MethodName.GetPhantomCamera2Ds).AsGodotArray<Node2D>()
|
||||
.Select(node => new PhantomCamera2D(node)).ToArray();
|
||||
|
||||
public static PhantomCamera3D[] PhantomCamera3Ds =>
|
||||
Instance.Call(MethodName.GetPhantomCamera3Ds).AsGodotArray<Node3D>()
|
||||
.Select(node => new PhantomCamera3D(node)).ToArray();
|
||||
|
||||
public static PhantomCameraHost[] PhantomCameraHosts =>
|
||||
Instance.Call(MethodName.GetPhantomCameraHosts).AsGodotArray<Node>()
|
||||
.Select(node => new PhantomCameraHost(node)).ToArray();
|
||||
|
||||
public static PhantomCamera2D[] GetPhantomCamera2Ds() => PhantomCamera2Ds;
|
||||
public static PhantomCamera3D[] GetPhantomCamera3Ds() => PhantomCamera3Ds;
|
||||
public static PhantomCameraHost[] GetPhantomCameraHosts() => PhantomCameraHosts;
|
||||
|
||||
public static class MethodName
|
||||
{
|
||||
public const string GetPhantomCamera2Ds = "get_phantom_camera_2ds";
|
||||
public const string GetPhantomCamera3Ds = "get_phantom_camera_3ds";
|
||||
public const string GetPhantomCameraHosts = "get_phantom_camera_hosts";
|
||||
}
|
||||
}
|
@@ -0,0 +1 @@
|
||||
uid://vtj8iqx4bp43
|
23
addons/phantom_camera/scripts/panel/editor.gd
Normal file
23
addons/phantom_camera/scripts/panel/editor.gd
Normal file
@@ -0,0 +1,23 @@
|
||||
@tool
|
||||
extends VBoxContainer
|
||||
|
||||
#region Onready
|
||||
|
||||
@onready var updater: Control = %UpdateButton
|
||||
@onready var viewfinder: Control = %ViewfinderPanel
|
||||
|
||||
#endregion
|
||||
|
||||
#region Public Variables
|
||||
|
||||
var editor_plugin: EditorPlugin
|
||||
|
||||
#endregion
|
||||
|
||||
|
||||
#region Private Functions
|
||||
|
||||
func _ready():
|
||||
updater.editor_plugin = editor_plugin
|
||||
|
||||
#endregion
|
1
addons/phantom_camera/scripts/panel/editor.gd.uid
Normal file
1
addons/phantom_camera/scripts/panel/editor.gd.uid
Normal file
@@ -0,0 +1 @@
|
||||
uid://cgfwg3paxkj2x
|
112
addons/phantom_camera/scripts/panel/viewfinder/host_list.gd
Normal file
112
addons/phantom_camera/scripts/panel/viewfinder/host_list.gd
Normal file
@@ -0,0 +1,112 @@
|
||||
@tool
|
||||
extends VBoxContainer
|
||||
|
||||
#region Constants
|
||||
|
||||
const _constants := preload("res://addons/phantom_camera/scripts/phantom_camera/phantom_camera_constants.gd")
|
||||
const _host_list_item: PackedScene = preload("res://addons/phantom_camera/panel/viewfinder/host_list/host_list_item.tscn")
|
||||
|
||||
#endregion
|
||||
|
||||
signal pcam_host_removed(pcam_host: PhantomCameraHost)
|
||||
|
||||
@onready var _host_list_button: Button = %HostListButton
|
||||
@onready var _host_list_scroll_container: ScrollContainer = %ScrollContainer
|
||||
@onready var _host_list_item_container: VBoxContainer = %HostListContainer
|
||||
|
||||
var _host_list_open: bool = false
|
||||
|
||||
var _bottom_offset_value: float
|
||||
|
||||
var _pcam_host_list: Array[PhantomCameraHost]
|
||||
var _pcam_manager: Node
|
||||
|
||||
var _viewfinder_panel: Control
|
||||
|
||||
#region Private Functions
|
||||
|
||||
func _ready() -> void:
|
||||
_host_list_button.pressed.connect(_host_list_button_pressed)
|
||||
if Engine.has_singleton(_constants.PCAM_MANAGER_NODE_NAME):
|
||||
_pcam_manager = Engine.get_singleton(_constants.PCAM_MANAGER_NODE_NAME)
|
||||
_pcam_manager.pcam_host_removed_from_scene.connect(_remove_pcam_host)
|
||||
|
||||
if not get_parent() is Control: return # To prevent errors when opening the scene on its own
|
||||
_viewfinder_panel = get_parent()
|
||||
_viewfinder_panel.resized.connect(_set_offset_top)
|
||||
|
||||
_host_list_item_container.resized.connect(_set_offset_top)
|
||||
|
||||
|
||||
func _set_offset_top() -> void:
|
||||
offset_top = _set_host_list_size()
|
||||
|
||||
|
||||
func _host_list_button_pressed() -> void:
|
||||
_host_list_open = !_host_list_open
|
||||
|
||||
var tween: Tween = create_tween()
|
||||
var max_duration: float = 0.6
|
||||
|
||||
# 300 being the minimum size of the viewfinder's height
|
||||
var duration: float = clampf(
|
||||
max_duration / (300 / _host_list_item_container.size.y),
|
||||
0.3,
|
||||
max_duration)
|
||||
|
||||
tween.tween_property(self, "offset_top", _set_host_list_size(), duration)\
|
||||
.set_ease(Tween.EASE_OUT)\
|
||||
.set_trans(Tween.TRANS_QUINT)
|
||||
|
||||
|
||||
func _set_host_list_size() -> float:
|
||||
if not _host_list_open:
|
||||
return clampf(
|
||||
_viewfinder_panel.size.y - \
|
||||
_host_list_item_container.size.y - \
|
||||
_host_list_button.size.y - 20,
|
||||
0,
|
||||
INF
|
||||
)
|
||||
else:
|
||||
return (_viewfinder_panel.size.y - _host_list_button.size.y / 2)
|
||||
|
||||
|
||||
func _remove_pcam_host(pcam_host: PhantomCameraHost) -> void:
|
||||
if _pcam_host_list.has(pcam_host):
|
||||
_pcam_host_list.erase(pcam_host)
|
||||
|
||||
var freed_pcam_host: Control
|
||||
for host_list_item_instance in _host_list_item_container.get_children():
|
||||
if not host_list_item_instance.pcam_host == pcam_host: continue
|
||||
freed_pcam_host = host_list_item_instance
|
||||
host_list_item_instance.queue_free()
|
||||
|
||||
#endregion
|
||||
|
||||
#region Public Functions
|
||||
|
||||
func add_pcam_host(pcam_host: PhantomCameraHost, is_default: bool) -> void:
|
||||
if _pcam_host_list.has(pcam_host): return
|
||||
|
||||
_pcam_host_list.append(pcam_host)
|
||||
|
||||
var host_list_item_instance: PanelContainer = _host_list_item.instantiate()
|
||||
var switch_pcam_host_button: Button = host_list_item_instance.get_node("%SwitchPCamHost")
|
||||
if is_default: switch_pcam_host_button.button_pressed = true
|
||||
|
||||
if not pcam_host.tree_exiting.is_connected(_remove_pcam_host):
|
||||
pcam_host.tree_exiting.connect(_remove_pcam_host.bind(pcam_host))
|
||||
|
||||
host_list_item_instance.pcam_host = pcam_host
|
||||
|
||||
_host_list_item_container.add_child(host_list_item_instance)
|
||||
|
||||
|
||||
func clear_pcam_host_list() -> void:
|
||||
_pcam_host_list.clear()
|
||||
|
||||
for host_list_item_instance in _host_list_item_container.get_children():
|
||||
host_list_item_instance.queue_free()
|
||||
|
||||
#endregion
|
@@ -0,0 +1 @@
|
||||
uid://c84cxry3t35ny
|
@@ -0,0 +1,58 @@
|
||||
@tool
|
||||
extends Control
|
||||
|
||||
const button_group_resource: ButtonGroup = preload("res://addons/phantom_camera/panel/viewfinder/host_list/host_list_item_group.tres")
|
||||
const _constants = preload("res://addons/phantom_camera/scripts/phantom_camera/phantom_camera_constants.gd")
|
||||
|
||||
@onready var select_pcam_host: Button = %SelectPCamHost
|
||||
@onready var switch_pcam_host: Button = %SwitchPCamHost
|
||||
|
||||
var pcam_host: PhantomCameraHost:
|
||||
set(value):
|
||||
pcam_host = value
|
||||
if not is_instance_valid(value): return
|
||||
if not pcam_host.renamed.is_connected(_rename_pcam_host):
|
||||
pcam_host.renamed.connect(_rename_pcam_host)
|
||||
pcam_host.has_error.connect(_pcam_host_has_error)
|
||||
get:
|
||||
return pcam_host
|
||||
|
||||
var _pcam_manager: Node
|
||||
|
||||
#region Private fucntions
|
||||
|
||||
func _ready() -> void:
|
||||
switch_pcam_host.button_group = button_group_resource
|
||||
select_pcam_host.pressed.connect(_select_pcam)
|
||||
switch_pcam_host.pressed.connect(_switch_pcam_host)
|
||||
|
||||
if not is_instance_valid(pcam_host): return
|
||||
switch_pcam_host.text = pcam_host.name
|
||||
|
||||
_pcam_host_has_error()
|
||||
|
||||
|
||||
func _pcam_host_has_error() -> void:
|
||||
if pcam_host.show_warning:
|
||||
%ErrorPCamHost.visible = true
|
||||
else:
|
||||
%ErrorPCamHost.visible = false
|
||||
|
||||
|
||||
func _rename_pcam_host() -> void:
|
||||
switch_pcam_host.text = pcam_host.name
|
||||
|
||||
|
||||
func _select_pcam() -> void:
|
||||
EditorInterface.get_selection().clear()
|
||||
EditorInterface.get_selection().add_node(pcam_host)
|
||||
|
||||
|
||||
func _switch_pcam_host() -> void:
|
||||
if not Engine.has_singleton(_constants.PCAM_MANAGER_NODE_NAME): return
|
||||
if not is_instance_valid(_pcam_manager):
|
||||
_pcam_manager = Engine.get_singleton(_constants.PCAM_MANAGER_NODE_NAME)
|
||||
|
||||
_pcam_manager.viewfinder_pcam_host_switch.emit(pcam_host)
|
||||
|
||||
#endregion
|
@@ -0,0 +1 @@
|
||||
uid://bv24ubx8mutw7
|
253
addons/phantom_camera/scripts/phantom_camera/PhantomCamera.cs
Normal file
253
addons/phantom_camera/scripts/phantom_camera/PhantomCamera.cs
Normal file
@@ -0,0 +1,253 @@
|
||||
using Godot;
|
||||
using PhantomCamera.Noise;
|
||||
|
||||
#nullable enable
|
||||
|
||||
namespace PhantomCamera;
|
||||
|
||||
public enum InactiveUpdateMode
|
||||
{
|
||||
Always,
|
||||
Never
|
||||
}
|
||||
|
||||
public abstract class PhantomCamera
|
||||
{
|
||||
protected readonly GodotObject Node;
|
||||
|
||||
public delegate void BecameActiveEventHandler();
|
||||
public delegate void BecameInactiveEventHandler();
|
||||
public delegate void FollowTargetChangedEventHandler();
|
||||
public delegate void DeadZoneChangedEventHandler();
|
||||
public delegate void TweenStartedEventHandler();
|
||||
public delegate void IsTweeningEventHandler();
|
||||
public delegate void TweenCompletedEventHandler();
|
||||
|
||||
public event BecameActiveEventHandler? BecameActive;
|
||||
public event BecameInactiveEventHandler? BecameInactive;
|
||||
public event FollowTargetChangedEventHandler? FollowTargetChanged;
|
||||
public event DeadZoneChangedEventHandler? DeadZoneChanged;
|
||||
public event TweenStartedEventHandler? TweenStarted;
|
||||
public event IsTweeningEventHandler? IsTweening;
|
||||
public event TweenCompletedEventHandler? TweenCompleted;
|
||||
|
||||
private readonly Callable _callableBecameActive;
|
||||
private readonly Callable _callableBecameInactive;
|
||||
private readonly Callable _callableFollowTargetChanged;
|
||||
private readonly Callable _callableDeadZoneChanged;
|
||||
private readonly Callable _callableTweenStarted;
|
||||
private readonly Callable _callableIsTweening;
|
||||
private readonly Callable _callableTweenCompleted;
|
||||
|
||||
public int Priority
|
||||
{
|
||||
get => (int)Node.Call(MethodName.GetPriority);
|
||||
set => Node.Call(MethodName.SetPriority, value);
|
||||
}
|
||||
|
||||
public bool IsActive => (bool)Node.Call(MethodName.IsActive);
|
||||
|
||||
public bool FollowDamping
|
||||
{
|
||||
get => (bool)Node.Call(MethodName.GetFollowDamping);
|
||||
set => Node.Call(MethodName.SetFollowDamping, value);
|
||||
}
|
||||
|
||||
public bool IsFollowing => (bool)Node.Call(PhantomCamera.MethodName.IsFollowing);
|
||||
|
||||
public float DeadZoneWidth
|
||||
{
|
||||
get => (float)Node.Get(PropertyName.DeadZoneWidth);
|
||||
set => Node.Set(PropertyName.DeadZoneWidth, value);
|
||||
}
|
||||
|
||||
public float DeadZoneHeight
|
||||
{
|
||||
get => (float)Node.Get(PropertyName.DeadZoneHeight);
|
||||
set => Node.Set(PropertyName.DeadZoneHeight, value);
|
||||
}
|
||||
|
||||
public PhantomCameraTween TweenResource
|
||||
{
|
||||
get => new((Resource)Node.Call(MethodName.GetTweenResource));
|
||||
set => Node.Call(MethodName.SetTweenResource, (GodotObject)value.Resource);
|
||||
}
|
||||
|
||||
public bool TweenSkip
|
||||
{
|
||||
get => (bool)Node.Call(MethodName.GetTweenSkip);
|
||||
set => Node.Call(MethodName.SetTweenSkip, value);
|
||||
}
|
||||
|
||||
public float TweenDuration
|
||||
{
|
||||
get => (float)Node.Call(MethodName.GetTweenDuration);
|
||||
set => Node.Call(MethodName.SetTweenDuration, value);
|
||||
}
|
||||
|
||||
public TransitionType TweenTransition
|
||||
{
|
||||
get => (TransitionType)(int)Node.Call(MethodName.GetTweenTransition);
|
||||
set => Node.Call(MethodName.SetTweenTransition, (int)value);
|
||||
}
|
||||
|
||||
public EaseType TweenEase
|
||||
{
|
||||
get => (EaseType)(int)Node.Call(MethodName.GetTweenEase);
|
||||
set => Node.Call(MethodName.SetTweenEase, (int)value);
|
||||
}
|
||||
|
||||
public bool TweenOnLoad
|
||||
{
|
||||
get => (bool)Node.Call(MethodName.GetTweenOnLoad);
|
||||
set => Node.Call(MethodName.SetTweenOnLoad, value);
|
||||
}
|
||||
|
||||
public InactiveUpdateMode InactiveUpdateMode
|
||||
{
|
||||
get => (InactiveUpdateMode)(int)Node.Call(MethodName.GetInactiveUpdateMode);
|
||||
set => Node.Call(MethodName.SetInactiveUpdateMode, (int)value);
|
||||
}
|
||||
|
||||
public int HostLayers
|
||||
{
|
||||
get => (int)Node.Call(MethodName.GetHostLayers);
|
||||
set => Node.Call(MethodName.SetHostLayers, value);
|
||||
}
|
||||
|
||||
public int NoiseEmitterLayer
|
||||
{
|
||||
get => (int)Node.Call(MethodName.GetNoiseEmitterLayer);
|
||||
set => Node.Call(MethodName.SetNoiseEmitterLayer, value);
|
||||
}
|
||||
|
||||
public void TeleportPosition()
|
||||
{
|
||||
Node.Call(MethodName.TeleportPosition);
|
||||
}
|
||||
|
||||
public void SetHostLayersValue(int layer, bool enabled)
|
||||
{
|
||||
Node.Call(MethodName.SetHostLayersValue, layer, enabled);
|
||||
}
|
||||
|
||||
protected PhantomCamera(GodotObject phantomCameraNode)
|
||||
{
|
||||
Node = phantomCameraNode;
|
||||
|
||||
_callableBecameActive = Callable.From(() => BecameActive?.Invoke());
|
||||
_callableBecameInactive = Callable.From(() => BecameInactive?.Invoke());
|
||||
_callableFollowTargetChanged = Callable.From(() => FollowTargetChanged?.Invoke());
|
||||
_callableDeadZoneChanged = Callable.From(() => DeadZoneChanged?.Invoke());
|
||||
_callableTweenStarted = Callable.From(() => TweenStarted?.Invoke());
|
||||
_callableIsTweening = Callable.From(() => IsTweening?.Invoke());
|
||||
_callableTweenCompleted = Callable.From(() => TweenCompleted?.Invoke());
|
||||
|
||||
Node.Connect(SignalName.BecameActive, _callableBecameActive);
|
||||
Node.Connect(SignalName.BecameInactive, _callableBecameInactive);
|
||||
Node.Connect(SignalName.FollowTargetChanged, _callableFollowTargetChanged);
|
||||
Node.Connect(SignalName.DeadZoneChanged, _callableDeadZoneChanged);
|
||||
Node.Connect(SignalName.TweenStarted, _callableTweenStarted);
|
||||
Node.Connect(SignalName.IsTweening, _callableIsTweening);
|
||||
Node.Connect(SignalName.TweenCompleted, _callableTweenCompleted);
|
||||
}
|
||||
|
||||
~PhantomCamera()
|
||||
{
|
||||
Node.Disconnect(SignalName.BecameActive, _callableBecameActive);
|
||||
Node.Disconnect(SignalName.BecameInactive, _callableBecameInactive);
|
||||
Node.Disconnect(SignalName.FollowTargetChanged, _callableFollowTargetChanged);
|
||||
Node.Disconnect(SignalName.DeadZoneChanged, _callableDeadZoneChanged);
|
||||
Node.Disconnect(SignalName.TweenStarted, _callableTweenStarted);
|
||||
Node.Disconnect(SignalName.IsTweening, _callableIsTweening);
|
||||
Node.Disconnect(SignalName.TweenCompleted, _callableTweenCompleted);
|
||||
}
|
||||
|
||||
public static class MethodName
|
||||
{
|
||||
public const string GetFollowMode = "get_follow_mode";
|
||||
public const string IsActive = "is_active";
|
||||
|
||||
public const string GetPriority = "get_priority";
|
||||
public const string SetPriority = "set_priority";
|
||||
|
||||
public const string IsFollowing = "is_following";
|
||||
|
||||
public const string GetFollowTarget = "get_follow_target";
|
||||
public const string SetFollowTarget = "set_follow_target";
|
||||
|
||||
public const string GetFollowTargets = "get_follow_targets";
|
||||
public const string SetFollowTargets = "set_follow_targets";
|
||||
|
||||
public const string TeleportPosition = "teleport_position";
|
||||
|
||||
public const string AppendFollowTargets = "append_follow_targets";
|
||||
public const string AppendFollowTargetsArray = "append_follow_targets_array";
|
||||
public const string EraseFollowTargets = "erase_follow_targets";
|
||||
|
||||
public const string GetFollowPath = "get_follow_path";
|
||||
public const string SetFollowPath = "set_follow_path";
|
||||
|
||||
public const string GetFollowOffset = "get_follow_offset";
|
||||
public const string SetFollowOffset = "set_follow_offset";
|
||||
|
||||
public const string GetFollowDamping = "get_follow_damping";
|
||||
public const string SetFollowDamping = "set_follow_damping";
|
||||
|
||||
public const string GetFollowDampingValue = "get_follow_damping_value";
|
||||
public const string SetFollowDampingValue = "set_follow_damping_value";
|
||||
|
||||
public const string GetFollowAxisLock = "get_follow_axis_lock";
|
||||
public const string SetFollowAxisLock = "set_follow_axis_lock";
|
||||
|
||||
public const string GetTweenResource = "get_tween_resource";
|
||||
public const string SetTweenResource = "set_tween_resource";
|
||||
|
||||
public const string GetTweenSkip = "get_tween_skip";
|
||||
public const string SetTweenSkip = "set_tween_skip";
|
||||
|
||||
public const string GetTweenDuration = "get_tween_duration";
|
||||
public const string SetTweenDuration = "set_tween_duration";
|
||||
|
||||
public const string GetTweenTransition = "get_tween_transition";
|
||||
public const string SetTweenTransition = "set_tween_transition";
|
||||
|
||||
public const string GetTweenEase = "get_tween_ease";
|
||||
public const string SetTweenEase = "set_tween_ease";
|
||||
|
||||
public const string GetTweenOnLoad = "get_tween_on_load";
|
||||
public const string SetTweenOnLoad = "set_tween_on_load";
|
||||
|
||||
public const string GetInactiveUpdateMode = "get_inactive_update_mode";
|
||||
public const string SetInactiveUpdateMode = "set_inactive_update_mode";
|
||||
|
||||
public const string GetHostLayers = "get_host_layers";
|
||||
public const string SetHostLayers = "set_host_layers";
|
||||
public const string SetHostLayersValue = "set_host_layers_value";
|
||||
|
||||
public const string GetNoiseEmitterLayer = "get_noise_emitter_layer";
|
||||
public const string SetNoiseEmitterLayer = "set_noise_emitter_layer";
|
||||
|
||||
public const string EmitNoise = "emit_noise";
|
||||
}
|
||||
|
||||
public static class PropertyName
|
||||
{
|
||||
public const string DeadZoneWidth = "dead_zone_width";
|
||||
public const string DeadZoneHeight = "dead_zone_height";
|
||||
}
|
||||
|
||||
public static class SignalName
|
||||
{
|
||||
public const string BecameActive = "became_active";
|
||||
public const string BecameInactive = "became_inactive";
|
||||
public const string FollowTargetChanged = "follow_target_changed";
|
||||
public const string DeadZoneChanged = "dead_zone_changed";
|
||||
public const string DeadZoneReached = "dead_zone_reached";
|
||||
public const string TweenStarted = "tween_started";
|
||||
public const string IsTweening = "is_tweening";
|
||||
public const string TweenCompleted = "tween_completed";
|
||||
public const string TweenInterrupted = "tween_interrupted";
|
||||
public const string NoiseEmitted = "noise_emitted";
|
||||
}
|
||||
}
|
@@ -0,0 +1 @@
|
||||
uid://d3wh0457i0i3
|
351
addons/phantom_camera/scripts/phantom_camera/PhantomCamera2D.cs
Normal file
351
addons/phantom_camera/scripts/phantom_camera/PhantomCamera2D.cs
Normal file
@@ -0,0 +1,351 @@
|
||||
using System.Linq;
|
||||
using Godot;
|
||||
using Godot.Collections;
|
||||
using PhantomCamera.Noise;
|
||||
|
||||
#nullable enable
|
||||
|
||||
namespace PhantomCamera;
|
||||
|
||||
public enum FollowMode2D
|
||||
{
|
||||
None,
|
||||
Glued,
|
||||
Simple,
|
||||
Group,
|
||||
Path,
|
||||
Framed
|
||||
}
|
||||
|
||||
public enum FollowLockAxis2D
|
||||
{
|
||||
None,
|
||||
X,
|
||||
Y,
|
||||
XY
|
||||
}
|
||||
|
||||
public static class PhantomCamera2DExtensions
|
||||
{
|
||||
public static PhantomCamera2D AsPhantomCamera2D(this Node2D node2D)
|
||||
{
|
||||
return new PhantomCamera2D(node2D);
|
||||
}
|
||||
|
||||
public static PhantomCameraNoiseEmitter2D AsPhantomCameraNoiseEmitter2D(this Node2D node2D)
|
||||
{
|
||||
return new PhantomCameraNoiseEmitter2D(node2D);
|
||||
}
|
||||
|
||||
public static PhantomCameraNoise2D AsPhantomCameraNoise2D(this Resource resource)
|
||||
{
|
||||
return new PhantomCameraNoise2D(resource);
|
||||
}
|
||||
}
|
||||
|
||||
public class PhantomCamera2D : PhantomCamera
|
||||
{
|
||||
public Node2D Node2D => (Node2D)Node;
|
||||
|
||||
public delegate void TweenInterruptedEventHandler(Node2D pCam);
|
||||
public delegate void DeadZoneReachedEventHandler(Vector2 side);
|
||||
public delegate void NoiseEmittedEventHandler(Transform2D output);
|
||||
|
||||
public event TweenInterruptedEventHandler? TweenInterrupted;
|
||||
public event DeadZoneReachedEventHandler? DeadZoneReached;
|
||||
public event NoiseEmittedEventHandler? NoiseEmitted;
|
||||
|
||||
private readonly Callable _callableTweenInterrupted;
|
||||
private readonly Callable _callableDeadZoneReached;
|
||||
private readonly Callable _callableNoiseEmitted;
|
||||
|
||||
public Node2D FollowTarget
|
||||
{
|
||||
get => (Node2D)Node2D.Call(PhantomCamera.MethodName.GetFollowTarget);
|
||||
set => Node2D.Call(PhantomCamera.MethodName.SetFollowTarget, value);
|
||||
}
|
||||
|
||||
public Node2D[] FollowTargets
|
||||
{
|
||||
get => Node2D.Call(PhantomCamera.MethodName.GetFollowTargets).AsGodotArray<Node2D>().ToArray();
|
||||
set => Node2D.Call(PhantomCamera.MethodName.SetFollowTargets, new Array<Node2D>(value));
|
||||
}
|
||||
|
||||
public void AppendFollowTargets(Node2D target) => Node2D.Call(PhantomCamera.MethodName.AppendFollowTargets, target);
|
||||
public void AppendFollowTargetsArray(Node2D[] targets) => Node2D.Call(PhantomCamera.MethodName.AppendFollowTargetsArray, targets);
|
||||
public void EraseFollowTargets(Node2D target) => Node2D.Call(PhantomCamera.MethodName.EraseFollowTargets, target);
|
||||
|
||||
public FollowMode2D FollowMode => (FollowMode2D)(int)Node.Call(PhantomCamera.MethodName.GetFollowMode);
|
||||
|
||||
public Path2D FollowPath
|
||||
{
|
||||
get => (Path2D)Node2D.Call(PhantomCamera.MethodName.GetFollowPath);
|
||||
set => Node2D.Call(PhantomCamera.MethodName.SetFollowPath, value);
|
||||
}
|
||||
|
||||
public Vector2 FollowOffset
|
||||
{
|
||||
get => (Vector2)Node2D.Call(PhantomCamera.MethodName.GetFollowOffset);
|
||||
set => Node2D.Call(PhantomCamera.MethodName.SetFollowOffset, value);
|
||||
}
|
||||
|
||||
public Vector2 FollowDampingValue
|
||||
{
|
||||
get => (Vector2)Node2D.Call(PhantomCamera.MethodName.GetFollowDampingValue);
|
||||
set => Node2D.Call(PhantomCamera.MethodName.SetFollowDampingValue, value);
|
||||
}
|
||||
|
||||
public FollowLockAxis2D FollowAxisLock
|
||||
{
|
||||
get => (FollowLockAxis2D)(int)Node2D.Call(PhantomCamera.MethodName.GetFollowAxisLock);
|
||||
set => Node2D.Call(PhantomCamera.MethodName.SetFollowAxisLock, (int)value);
|
||||
}
|
||||
|
||||
public Vector2 Zoom
|
||||
{
|
||||
get => (Vector2)Node2D.Call(MethodName.GetZoom);
|
||||
set => Node2D.Call(MethodName.SetZoom, value);
|
||||
}
|
||||
|
||||
public bool SnapToPixel
|
||||
{
|
||||
get => (bool)Node2D.Call(MethodName.GetSnapToPixel);
|
||||
set => Node2D.Call(MethodName.SetSnapToPixel, value);
|
||||
}
|
||||
|
||||
public bool RotateWithTarget
|
||||
{
|
||||
get => (bool)Node2D.Call(MethodName.GetRotateWithTarget);
|
||||
set => Node2D.Call(MethodName.SetRotateWithTarget, value);
|
||||
}
|
||||
|
||||
public float RotationOffset
|
||||
{
|
||||
get => (float)Node2D.Call(MethodName.GetRotationOffset);
|
||||
set => Node2D.Call(MethodName.SetRotationOffset, value);
|
||||
}
|
||||
|
||||
public bool RotationDamping
|
||||
{
|
||||
get => (bool)Node2D.Call(MethodName.GetRotationDamping);
|
||||
set => Node2D.Call(MethodName.SetRotationDamping, value);
|
||||
}
|
||||
|
||||
public float RotationDampingValue
|
||||
{
|
||||
get => (float)Node2D.Call(MethodName.GetRotationDampingValue);
|
||||
set => Node2D.Call(MethodName.SetRotationDampingValue, value);
|
||||
}
|
||||
|
||||
public int LimitLeft
|
||||
{
|
||||
get => (int)Node2D.Call(MethodName.GetLimitLeft);
|
||||
set => Node2D.Call(MethodName.SetLimitLeft, value);
|
||||
}
|
||||
|
||||
public int LimitTop
|
||||
{
|
||||
get => (int)Node2D.Call(MethodName.GetLimitTop);
|
||||
set => Node2D.Call(MethodName.SetLimitTop, value);
|
||||
}
|
||||
|
||||
public int LimitRight
|
||||
{
|
||||
get => (int)Node2D.Call(MethodName.GetLimitRight);
|
||||
set => Node2D.Call(MethodName.SetLimitRight, value);
|
||||
}
|
||||
|
||||
public int LimitBottom
|
||||
{
|
||||
get => (int)Node2D.Call(MethodName.GetLimitBottom);
|
||||
set => Node2D.Call(MethodName.SetLimitBottom, value);
|
||||
}
|
||||
|
||||
public Vector4I LimitMargin
|
||||
{
|
||||
get => (Vector4I)Node2D.Call(MethodName.GetLimitMargin);
|
||||
set => Node2D.Call(MethodName.SetLimitMargin, value);
|
||||
}
|
||||
|
||||
public bool AutoZoom
|
||||
{
|
||||
get => (bool)Node2D.Call(MethodName.GetAutoZoom);
|
||||
set => Node2D.Call(MethodName.SetAutoZoom, value);
|
||||
}
|
||||
|
||||
public float AutoZoomMin
|
||||
{
|
||||
get => (float)Node2D.Call(MethodName.GetAutoZoomMin);
|
||||
set => Node2D.Call(MethodName.SetAutoZoomMin, value);
|
||||
}
|
||||
|
||||
public float AutoZoomMax
|
||||
{
|
||||
get => (float)Node2D.Call(MethodName.GetAutoZoomMax);
|
||||
set => Node2D.Call(MethodName.SetAutoZoomMax, value);
|
||||
}
|
||||
|
||||
public Vector4 AutoZoomMargin
|
||||
{
|
||||
get => (Vector4)Node2D.Call(MethodName.GetAutoZoomMargin);
|
||||
set => Node2D.Call(MethodName.SetAutoZoomMargin, value);
|
||||
}
|
||||
|
||||
public bool DrawLimits
|
||||
{
|
||||
get => (bool)Node2D.Get(PropertyName.DrawLimits);
|
||||
set => Node2D.Set(PropertyName.DrawLimits, value);
|
||||
}
|
||||
|
||||
public PhantomCameraNoise2D Noise
|
||||
{
|
||||
get => new((Resource)Node2D.Call(MethodName.GetNoise));
|
||||
set => Node2D.Call(MethodName.SetNoise, (GodotObject)value.Resource);
|
||||
}
|
||||
|
||||
public void EmitNoise(Transform2D transform) => Node2D.Call(PhantomCamera.MethodName.EmitNoise, transform);
|
||||
|
||||
public NodePath LimitTarget
|
||||
{
|
||||
get => (NodePath)Node2D.Call(MethodName.GetLimitTarget);
|
||||
set => Node2D.Call(MethodName.SetLimitTarget, value);
|
||||
}
|
||||
|
||||
public static PhantomCamera2D FromScript(string path) => new(GD.Load<GDScript>(path).New().AsGodotObject());
|
||||
public static PhantomCamera2D FromScript(GDScript script) => new(script.New().AsGodotObject());
|
||||
|
||||
public PhantomCamera2D(GodotObject phantomCameraNode) : base(phantomCameraNode)
|
||||
{
|
||||
_callableTweenInterrupted = Callable.From<Node2D>(pCam => TweenInterrupted?.Invoke(pCam));
|
||||
_callableDeadZoneReached = Callable.From((Vector2 side) => DeadZoneReached?.Invoke(side));
|
||||
_callableNoiseEmitted = Callable.From((Transform2D output) => NoiseEmitted?.Invoke(output));
|
||||
|
||||
Node2D.Connect(SignalName.TweenInterrupted, _callableTweenInterrupted);
|
||||
Node2D.Connect(SignalName.DeadZoneReached, _callableDeadZoneReached);
|
||||
Node2D.Connect(SignalName.NoiseEmitted, _callableNoiseEmitted);
|
||||
}
|
||||
|
||||
~PhantomCamera2D()
|
||||
{
|
||||
Node2D.Disconnect(SignalName.TweenInterrupted, _callableTweenInterrupted);
|
||||
Node2D.Disconnect(SignalName.DeadZoneReached, _callableDeadZoneReached);
|
||||
Node2D.Disconnect(SignalName.NoiseEmitted, _callableNoiseEmitted);
|
||||
}
|
||||
|
||||
public void SetLimitTarget(TileMap tileMap)
|
||||
{
|
||||
Node2D.Call(MethodName.SetLimitTarget, tileMap.GetPath());
|
||||
}
|
||||
|
||||
public void SetLimitTarget(TileMapLayer tileMapLayer)
|
||||
{
|
||||
Node2D.Call(MethodName.SetLimitTarget, tileMapLayer.GetPath());
|
||||
}
|
||||
|
||||
public void SetLimitTarget(CollisionShape2D shape2D)
|
||||
{
|
||||
Node2D.Call(MethodName.SetLimitTarget, shape2D.GetPath());
|
||||
}
|
||||
|
||||
public LimitTargetQueryResult? GetLimitTarget()
|
||||
{
|
||||
var result = (NodePath)Node2D.Call(MethodName.GetLimitTarget);
|
||||
return result.IsEmpty ? null : new LimitTargetQueryResult(Node2D.GetNode(result));
|
||||
}
|
||||
|
||||
public void SetLimit(Side side, int value)
|
||||
{
|
||||
Node2D.Call(MethodName.SetLimit, (int)side, value);
|
||||
}
|
||||
|
||||
public int GetLimit(Side side)
|
||||
{
|
||||
return (int)Node2D.Call(MethodName.GetLimit, (int)side);
|
||||
}
|
||||
|
||||
public new static class MethodName
|
||||
{
|
||||
public const string GetZoom = "get_zoom";
|
||||
public const string SetZoom = "set_zoom";
|
||||
|
||||
public const string GetSnapToPixel = "get_snap_to_pixel";
|
||||
public const string SetSnapToPixel = "set_snap_to_pixel";
|
||||
|
||||
public const string GetRotateWithTarget = "get_rotate_with_target";
|
||||
public const string SetRotateWithTarget = "set_rotate_with_target";
|
||||
|
||||
public const string GetRotationOffset = "get_rotation_offset";
|
||||
public const string SetRotationOffset = "set_rotation_offset";
|
||||
|
||||
public const string GetRotationDamping = "get_rotation_damping";
|
||||
public const string SetRotationDamping = "set_rotation_damping";
|
||||
|
||||
public const string GetRotationDampingValue = "get_rotation_damping_value";
|
||||
public const string SetRotationDampingValue = "set_rotation_damping_value";
|
||||
|
||||
public const string GetLimit = "get_limit";
|
||||
public const string SetLimit = "set_limit";
|
||||
|
||||
public const string GetLimitLeft = "get_limit_left";
|
||||
public const string SetLimitLeft = "set_limit_left";
|
||||
|
||||
public const string GetLimitTop = "get_limit_top";
|
||||
public const string SetLimitTop = "set_limit_top";
|
||||
|
||||
public const string GetLimitRight = "get_limit_right";
|
||||
public const string SetLimitRight = "set_limit_right";
|
||||
|
||||
public const string GetLimitBottom = "get_limit_bottom";
|
||||
public const string SetLimitBottom = "set_limit_bottom";
|
||||
|
||||
public const string GetLimitTarget = "get_limit_target";
|
||||
public const string SetLimitTarget = "set_limit_target";
|
||||
|
||||
public const string GetLimitMargin = "get_limit_margin";
|
||||
public const string SetLimitMargin = "set_limit_margin";
|
||||
|
||||
public const string GetAutoZoom = "get_auto_zoom";
|
||||
public const string SetAutoZoom = "set_auto_zoom";
|
||||
|
||||
public const string GetAutoZoomMin = "get_auto_zoom_min";
|
||||
public const string SetAutoZoomMin = "set_auto_zoom_min";
|
||||
|
||||
public const string GetAutoZoomMax = "get_auto_zoom_max";
|
||||
public const string SetAutoZoomMax = "set_auto_zoom_max";
|
||||
|
||||
public const string GetAutoZoomMargin = "get_auto_zoom_margin";
|
||||
public const string SetAutoZoomMargin = "set_auto_zoom_margin";
|
||||
|
||||
public const string GetNoise = "get_noise";
|
||||
public const string SetNoise = "set_noise";
|
||||
}
|
||||
|
||||
public new static class PropertyName
|
||||
{
|
||||
public const string DrawLimits = "draw_limits";
|
||||
}
|
||||
}
|
||||
|
||||
public class LimitTargetQueryResult(GodotObject godotObject)
|
||||
{
|
||||
public bool IsTileMap => godotObject.IsClass("TileMap");
|
||||
|
||||
public bool IsTileMapLayer => godotObject.IsClass("TileMapLayer");
|
||||
|
||||
public bool IsCollisionShape2D => godotObject.IsClass("CollisionShape2D");
|
||||
|
||||
public TileMap? AsTileMap()
|
||||
{
|
||||
return IsTileMap ? (TileMap)godotObject : null;
|
||||
}
|
||||
|
||||
public TileMapLayer? AsTileMapLayer()
|
||||
{
|
||||
return IsTileMapLayer ? (TileMapLayer)godotObject : null;
|
||||
}
|
||||
|
||||
public CollisionShape2D? AsCollisionShape2D()
|
||||
{
|
||||
return IsCollisionShape2D ? (CollisionShape2D)godotObject : null;
|
||||
}
|
||||
}
|
@@ -0,0 +1 @@
|
||||
uid://c38e5qhsf3fk3
|
493
addons/phantom_camera/scripts/phantom_camera/PhantomCamera3D.cs
Normal file
493
addons/phantom_camera/scripts/phantom_camera/PhantomCamera3D.cs
Normal file
@@ -0,0 +1,493 @@
|
||||
using System.Linq;
|
||||
using Godot;
|
||||
using Godot.Collections;
|
||||
using PhantomCamera.Noise;
|
||||
|
||||
#nullable enable
|
||||
|
||||
namespace PhantomCamera;
|
||||
|
||||
public enum LookAtMode
|
||||
{
|
||||
None,
|
||||
Mimic,
|
||||
Simple,
|
||||
Group
|
||||
}
|
||||
|
||||
public enum FollowMode3D
|
||||
{
|
||||
None,
|
||||
Glued,
|
||||
Simple,
|
||||
Group,
|
||||
Path,
|
||||
Framed,
|
||||
ThirdPerson
|
||||
}
|
||||
|
||||
public enum FollowLockAxis3D
|
||||
{
|
||||
None,
|
||||
X,
|
||||
Y,
|
||||
Z,
|
||||
XY,
|
||||
XZ,
|
||||
YZ,
|
||||
XYZ
|
||||
}
|
||||
|
||||
public static class PhantomCamera3DExtensions
|
||||
{
|
||||
public static PhantomCamera3D AsPhantomCamera3D(this Node3D node3D)
|
||||
{
|
||||
return new PhantomCamera3D(node3D);
|
||||
}
|
||||
|
||||
public static PhantomCameraNoiseEmitter3D AsPhantomCameraNoiseEmitter3D(this Node3D node3D)
|
||||
{
|
||||
return new PhantomCameraNoiseEmitter3D(node3D);
|
||||
}
|
||||
|
||||
public static PhantomCameraNoise3D AsPhantomCameraNoise3D(this Resource resource)
|
||||
{
|
||||
return new PhantomCameraNoise3D(resource);
|
||||
}
|
||||
|
||||
public static Camera3DResource AsCamera3DResource(this Resource resource)
|
||||
{
|
||||
return new Camera3DResource(resource);
|
||||
}
|
||||
|
||||
public static Vector3 GetThirdPersonRotation(this PhantomCamera3D pCam3D) =>
|
||||
(Vector3)pCam3D.Node3D.Call(PhantomCamera3D.MethodName.GetThirdPersonRotation);
|
||||
|
||||
public static void SetThirdPersonRotation(this PhantomCamera3D pCam3D, Vector3 rotation) =>
|
||||
pCam3D.Node3D.Call(PhantomCamera3D.MethodName.SetThirdPersonRotation, rotation);
|
||||
|
||||
public static Vector3 GetThirdPersonRotationDegrees(this PhantomCamera3D pCam3D) =>
|
||||
(Vector3)pCam3D.Node3D.Call(PhantomCamera3D.MethodName.GetThirdPersonRotationDegrees);
|
||||
|
||||
public static void SetThirdPersonDegrees(this PhantomCamera3D pCam3D, Vector3 rotation) =>
|
||||
pCam3D.Node3D.Call(PhantomCamera3D.MethodName.SetThirdPersonRotationDegrees, rotation);
|
||||
|
||||
public static Quaternion GetThirdPersonQuaternion(this PhantomCamera3D pCam3D) =>
|
||||
(Quaternion)pCam3D.Node3D.Call(PhantomCamera3D.MethodName.GetThirdPersonQuaternion);
|
||||
|
||||
public static void SetThirdPersonQuaternion(this PhantomCamera3D pCam3D, Quaternion quaternion) =>
|
||||
pCam3D.Node3D.Call(PhantomCamera3D.MethodName.SetThirdPersonQuaternion, quaternion);
|
||||
|
||||
}
|
||||
|
||||
public class PhantomCamera3D : PhantomCamera
|
||||
{
|
||||
public Node3D Node3D => (Node3D)Node;
|
||||
|
||||
public delegate void LookAtTargetChangedEventHandler();
|
||||
public delegate void DeadZoneReachedEventHandler();
|
||||
public delegate void Camera3DResourceChangedEventHandler();
|
||||
public delegate void Camera3DResourcePropertyChangedEventHandler(StringName property, Variant value);
|
||||
public delegate void TweenInterruptedEventHandler(Node3D pCam);
|
||||
public delegate void NoiseEmittedEventHandler(Transform3D output);
|
||||
|
||||
public event LookAtTargetChangedEventHandler? LookAtTargetChanged;
|
||||
public event DeadZoneReachedEventHandler? DeadZoneReached;
|
||||
public event Camera3DResourceChangedEventHandler? Camera3DResourceChanged;
|
||||
public event Camera3DResourcePropertyChangedEventHandler? Camera3DResourcePropertyChanged;
|
||||
public event TweenInterruptedEventHandler? TweenInterrupted;
|
||||
public event NoiseEmittedEventHandler? NoiseEmitted;
|
||||
|
||||
private readonly Callable _callableLookAtTargetChanged;
|
||||
private readonly Callable _callableDeadZoneReached;
|
||||
private readonly Callable _callableCamera3DResourceChanged;
|
||||
private readonly Callable _callableCamera3DResourcePropertyChanged;
|
||||
private readonly Callable _callableTweenInterrupted;
|
||||
private readonly Callable _callableNoiseEmitted;
|
||||
|
||||
public Node3D FollowTarget
|
||||
{
|
||||
get => (Node3D)Node3D.Call(PhantomCamera.MethodName.GetFollowTarget);
|
||||
set => Node3D.Call(PhantomCamera.MethodName.SetFollowTarget, value);
|
||||
}
|
||||
|
||||
public Node3D[] FollowTargets
|
||||
{
|
||||
get => Node3D.Call(PhantomCamera.MethodName.GetFollowTargets).AsGodotArray<Node3D>().ToArray();
|
||||
set => Node3D.Call(PhantomCamera.MethodName.SetFollowTargets, new Array<Node3D>(value));
|
||||
}
|
||||
|
||||
public void AppendFollowTarget(Node3D target) => Node3D.Call(PhantomCamera.MethodName.AppendFollowTargets, target);
|
||||
public void AppendFollowTargetArray(Node3D[] targets) => Node3D.Call(PhantomCamera.MethodName.AppendFollowTargetsArray, targets);
|
||||
public void EraseFollowTarget(Node3D target) => Node3D.Call(PhantomCamera.MethodName.EraseFollowTargets, target);
|
||||
|
||||
public FollowMode3D FollowMode => (FollowMode3D)(int)Node.Call(PhantomCamera.MethodName.GetFollowMode);
|
||||
|
||||
public Path3D FollowPath
|
||||
{
|
||||
get => (Path3D)Node3D.Call(PhantomCamera.MethodName.GetFollowPath);
|
||||
set => Node3D.Call(PhantomCamera.MethodName.SetFollowPath, value);
|
||||
}
|
||||
|
||||
public Vector3 FollowOffset
|
||||
{
|
||||
get => (Vector3)Node3D.Call(PhantomCamera.MethodName.GetFollowOffset);
|
||||
set => Node3D.Call(PhantomCamera.MethodName.SetFollowOffset, value);
|
||||
}
|
||||
|
||||
public Vector3 FollowDampingValue
|
||||
{
|
||||
get => (Vector3)Node3D.Call(PhantomCamera.MethodName.GetFollowDampingValue);
|
||||
set => Node3D.Call(PhantomCamera.MethodName.SetFollowDampingValue, value);
|
||||
}
|
||||
|
||||
public FollowLockAxis3D FollowAxisLock
|
||||
{
|
||||
get => (FollowLockAxis3D)(int)Node3D.Call(PhantomCamera.MethodName.GetFollowAxisLock);
|
||||
set => Node3D.Call(PhantomCamera.MethodName.SetFollowAxisLock, (int)value);
|
||||
}
|
||||
|
||||
public LookAtMode LookAtMode => (LookAtMode)(int)Node3D.Call(MethodName.GetLookAtMode);
|
||||
|
||||
public Camera3DResource Camera3DResource
|
||||
{
|
||||
get => new((Resource)Node3D.Call(MethodName.GetCamera3DResource));
|
||||
set => Node3D.Call(MethodName.SetCamera3DResource, value.Resource);
|
||||
}
|
||||
|
||||
public float SpringLength
|
||||
{
|
||||
get => (float)Node3D.Call(MethodName.GetSpringLength);
|
||||
set => Node3D.Call(MethodName.SetSpringLength, value);
|
||||
}
|
||||
|
||||
public float VerticalRotationOffset
|
||||
{
|
||||
get => (float)Node3D.Call(MethodName.GetVerticalRotationOffset);
|
||||
set => Node3D.Call(MethodName.SetVerticalRotationOffset, value);
|
||||
}
|
||||
|
||||
public float HorizontalRotationOffset
|
||||
{
|
||||
get => (float)Node3D.Call(MethodName.GetHorizontalRotationOffset);
|
||||
set => Node3D.Call(MethodName.SetHorizontalRotationOffset, value);
|
||||
}
|
||||
|
||||
public float FollowDistance
|
||||
{
|
||||
get => (float)Node3D.Call(MethodName.GetFollowDistance);
|
||||
set => Node3D.Call(MethodName.SetFollowDistance, value);
|
||||
}
|
||||
|
||||
public bool AutoFollowDistance
|
||||
{
|
||||
get => (bool)Node3D.Call(MethodName.GetAutoFollowDistance);
|
||||
set => Node3D.Call(MethodName.SetAutoFollowDistance, value);
|
||||
}
|
||||
|
||||
public float AutoFollowDistanceMin
|
||||
{
|
||||
get => (float)Node3D.Call(MethodName.GetAutoFollowDistanceMin);
|
||||
set => Node3D.Call(MethodName.SetAutoFollowDistanceMin, value);
|
||||
}
|
||||
|
||||
public float AutoFollowDistanceMax
|
||||
{
|
||||
get => (float)Node3D.Call(MethodName.GetAutoFollowDistanceMax);
|
||||
set => Node3D.Call(MethodName.SetAutoFollowDistanceMax, value);
|
||||
}
|
||||
|
||||
public float AutoFollowDistanceDivisor
|
||||
{
|
||||
get => (float)Node3D.Call(MethodName.GetAutoFollowDistanceDivisor);
|
||||
set => Node3D.Call(MethodName.SetAutoFollowDistanceDivisor, value);
|
||||
}
|
||||
|
||||
public Node3D LookAtTarget
|
||||
{
|
||||
get => (Node3D)Node3D.Call(MethodName.GetLookAtTarget);
|
||||
set => Node3D.Call(MethodName.SetLookAtTarget, value);
|
||||
}
|
||||
|
||||
public Node3D[] LookAtTargets
|
||||
{
|
||||
get => Node3D.Call(MethodName.GetLookAtTargets).AsGodotArray<Node3D>().ToArray();
|
||||
set => Node3D.Call(MethodName.SetLookAtTargets, new Array<Node3D>(value));
|
||||
}
|
||||
|
||||
public bool IsLooking => (bool)Node3D.Call(MethodName.IsLooking);
|
||||
|
||||
public int CollisionMask
|
||||
{
|
||||
get => (int)Node3D.Call(MethodName.GetCollisionMask);
|
||||
set => Node3D.Call(MethodName.SetCollisionMask, value);
|
||||
}
|
||||
|
||||
public void SetCollisionMaskValue(int maskLayer, bool enable) =>
|
||||
Node3D.Call(MethodName.SetCollisionMaskValue, maskLayer, enable);
|
||||
|
||||
public Shape3D Shape
|
||||
{
|
||||
get => (Shape3D)Node3D.Call(MethodName.GetShape);
|
||||
set => Node3D.Call(MethodName.SetShape, value);
|
||||
}
|
||||
|
||||
public float Margin
|
||||
{
|
||||
get => (float)Node3D.Call(MethodName.GetMargin);
|
||||
set => Node3D.Call(MethodName.SetMargin, value);
|
||||
}
|
||||
|
||||
public Vector3 LookAtOffset
|
||||
{
|
||||
get => (Vector3)Node3D.Call(MethodName.GetLookAtOffset);
|
||||
set => Node3D.Call(MethodName.SetLookAtOffset, value);
|
||||
}
|
||||
|
||||
public bool LookAtDamping
|
||||
{
|
||||
get => (bool)Node3D.Call(MethodName.GetLookAtDamping);
|
||||
set => Node3D.Call(MethodName.SetLookAtDamping, value);
|
||||
}
|
||||
|
||||
public float LookAtDampingValue
|
||||
{
|
||||
get => (float)Node3D.Call(MethodName.GetLookAtDampingValue);
|
||||
set => Node3D.Call(MethodName.SetLookAtDampingValue, value);
|
||||
}
|
||||
|
||||
public Node3D Up
|
||||
{
|
||||
get => (Node3D)Node3D.Call(MethodName.GetUp);
|
||||
set => Node3D.Call(MethodName.SetUp, value);
|
||||
}
|
||||
|
||||
public Vector3 UpTarget
|
||||
{
|
||||
get => (Vector3)Node3D.Call(MethodName.GetUpTarget);
|
||||
set => Node3D.Call(MethodName.SetUpTarget, value);
|
||||
}
|
||||
|
||||
public int CullMask
|
||||
{
|
||||
get => (int)Node3D.Call(MethodName.GetCullMask);
|
||||
set => Node3D.Call(MethodName.SetCullMask, value);
|
||||
}
|
||||
|
||||
public float HOffset
|
||||
{
|
||||
get => (float)Node3D.Call(MethodName.GetHOffset);
|
||||
set => Node3D.Call(MethodName.SetHOffset, value);
|
||||
}
|
||||
|
||||
public float VOffset
|
||||
{
|
||||
get => (float)Node3D.Call(MethodName.GetVOffset);
|
||||
set => Node3D.Call(MethodName.SetVOffset, value);
|
||||
}
|
||||
|
||||
public ProjectionType Projection
|
||||
{
|
||||
get => (ProjectionType)(int)Node3D.Call(MethodName.GetProjection);
|
||||
set => Node3D.Call(MethodName.SetProjection, (int)value);
|
||||
}
|
||||
|
||||
public float Fov
|
||||
{
|
||||
get => (float)Node3D.Call(MethodName.GetFov);
|
||||
set => Node3D.Call(MethodName.SetFov, value);
|
||||
}
|
||||
|
||||
public float Size
|
||||
{
|
||||
get => (float)Node3D.Call(MethodName.GetSize);
|
||||
set => Node3D.Call(MethodName.SetSize, value);
|
||||
}
|
||||
|
||||
public Vector2 FrustumOffset
|
||||
{
|
||||
get => (Vector2)Node3D.Call(MethodName.GetFrustumOffset);
|
||||
set => Node3D.Call(MethodName.SetFrustumOffset, value);
|
||||
}
|
||||
|
||||
public float Far
|
||||
{
|
||||
get => (float)Node3D.Call(MethodName.GetFar);
|
||||
set => Node3D.Call(MethodName.SetFar, value);
|
||||
}
|
||||
|
||||
public float Near
|
||||
{
|
||||
get => (float)Node3D.Call(MethodName.GetNear);
|
||||
set => Node3D.Call(MethodName.SetNear, value);
|
||||
}
|
||||
|
||||
public Environment Environment
|
||||
{
|
||||
get => (Environment)Node3D.Call(MethodName.GetEnvironment);
|
||||
set => Node3D.Call(MethodName.SetEnvironment, value);
|
||||
}
|
||||
|
||||
public CameraAttributes Attributes
|
||||
{
|
||||
get => (CameraAttributes)Node3D.Call(MethodName.GetAttributes);
|
||||
set => Node3D.Call(MethodName.SetAttributes, value);
|
||||
}
|
||||
|
||||
public PhantomCameraNoise3D Noise
|
||||
{
|
||||
get => new((Resource)Node3D.Call(MethodName.GetNoise));
|
||||
set => Node3D.Call(MethodName.SetNoise, (GodotObject)value.Resource);
|
||||
}
|
||||
|
||||
public void EmitNoise(Transform3D transform) => Node3D.Call(PhantomCamera.MethodName.EmitNoise, transform);
|
||||
|
||||
public static PhantomCamera3D FromScript(string path) => new(GD.Load<GDScript>(path).New().AsGodotObject());
|
||||
public static PhantomCamera3D FromScript(GDScript script) => new(script.New().AsGodotObject());
|
||||
|
||||
public PhantomCamera3D(GodotObject phantomCamera3DNode) : base(phantomCamera3DNode)
|
||||
{
|
||||
_callableLookAtTargetChanged = Callable.From(() => LookAtTargetChanged?.Invoke());
|
||||
_callableDeadZoneReached = Callable.From(() => DeadZoneReached?.Invoke());
|
||||
_callableCamera3DResourceChanged = Callable.From(() => Camera3DResourceChanged?.Invoke());
|
||||
_callableCamera3DResourcePropertyChanged = Callable.From((StringName property, Variant value) =>
|
||||
Camera3DResourcePropertyChanged?.Invoke(property, value));
|
||||
_callableTweenInterrupted = Callable.From<Node3D>(pCam => TweenInterrupted?.Invoke(pCam));
|
||||
_callableNoiseEmitted = Callable.From((Transform3D output) => NoiseEmitted?.Invoke(output));
|
||||
|
||||
Node3D.Connect(SignalName.LookAtTargetChanged, _callableLookAtTargetChanged);
|
||||
Node3D.Connect(PhantomCamera.SignalName.DeadZoneReached, _callableDeadZoneReached);
|
||||
Node3D.Connect(SignalName.Camera3DResourceChanged, _callableCamera3DResourceChanged);
|
||||
Node3D.Connect(SignalName.Camera3DResourcePropertyChanged, _callableCamera3DResourcePropertyChanged);
|
||||
Node3D.Connect(PhantomCamera.SignalName.TweenInterrupted, _callableTweenInterrupted);
|
||||
Node3D.Connect(PhantomCamera.SignalName.NoiseEmitted, _callableNoiseEmitted);
|
||||
}
|
||||
|
||||
~PhantomCamera3D()
|
||||
{
|
||||
Node3D.Disconnect(SignalName.LookAtTargetChanged, _callableLookAtTargetChanged);
|
||||
Node3D.Disconnect(PhantomCamera.SignalName.DeadZoneReached, _callableDeadZoneReached);
|
||||
Node3D.Disconnect(SignalName.Camera3DResourceChanged, _callableCamera3DResourceChanged);
|
||||
Node3D.Disconnect(SignalName.Camera3DResourcePropertyChanged, _callableCamera3DResourcePropertyChanged);
|
||||
Node3D.Disconnect(PhantomCamera.SignalName.TweenInterrupted, _callableTweenInterrupted);
|
||||
Node3D.Disconnect(PhantomCamera.SignalName.NoiseEmitted, _callableNoiseEmitted);
|
||||
}
|
||||
|
||||
public new static class MethodName
|
||||
{
|
||||
public const string GetLookAtMode = "get_look_at_mode";
|
||||
|
||||
public const string GetCamera3DResource = "get_camera_3d_resource";
|
||||
public const string SetCamera3DResource = "set_camera_3d_resource";
|
||||
|
||||
public const string GetThirdPersonRotation = "get_third_person_rotation";
|
||||
public const string SetThirdPersonRotation = "set_third_person_rotation";
|
||||
|
||||
public const string GetThirdPersonRotationDegrees = "get_third_person_rotation_degrees";
|
||||
public const string SetThirdPersonRotationDegrees = "set_third_person_rotation_degrees";
|
||||
|
||||
public const string GetThirdPersonQuaternion = "get_third_person_quaternion";
|
||||
public const string SetThirdPersonQuaternion = "set_third_person_quaternion";
|
||||
|
||||
public const string GetVerticalRotationOffset = "get_vertical_rotation_offset";
|
||||
public const string SetVerticalRotationOffset = "set_vertical_rotation_offset";
|
||||
|
||||
public const string GetHorizontalRotationOffset = "get_horizontal_rotation_offset";
|
||||
public const string SetHorizontalRotationOffset = "set_horizontal_rotation_offset";
|
||||
|
||||
public const string GetSpringLength = "get_spring_length";
|
||||
public const string SetSpringLength = "set_spring_length";
|
||||
|
||||
public const string GetFollowDistance = "get_follow_distance";
|
||||
public const string SetFollowDistance = "set_follow_distance";
|
||||
|
||||
public const string GetAutoFollowDistance = "get_auto_follow_distance";
|
||||
public const string SetAutoFollowDistance = "set_auto_follow_distance";
|
||||
|
||||
public const string GetAutoFollowDistanceMin = "get_auto_follow_distance_min";
|
||||
public const string SetAutoFollowDistanceMin = "set_auto_follow_distance_min";
|
||||
|
||||
public const string GetAutoFollowDistanceMax = "get_auto_follow_distance_max";
|
||||
public const string SetAutoFollowDistanceMax = "set_auto_follow_distance_max";
|
||||
|
||||
public const string GetAutoFollowDistanceDivisor = "get_auto_follow_distance_divisor";
|
||||
public const string SetAutoFollowDistanceDivisor = "set_auto_follow_distance_divisor";
|
||||
|
||||
public const string GetLookAtTarget = "get_look_at_target";
|
||||
public const string SetLookAtTarget = "set_look_at_target";
|
||||
|
||||
public const string GetLookAtTargets = "get_look_at_targets";
|
||||
public const string SetLookAtTargets = "set_look_at_targets";
|
||||
|
||||
public const string IsLooking = "is_looking";
|
||||
|
||||
public const string GetUp = "get_up";
|
||||
public const string SetUp = "set_up";
|
||||
|
||||
public const string GetUpTarget = "get_up_target";
|
||||
public const string SetUpTarget = "set_up_target";
|
||||
|
||||
public const string GetCollisionMask = "get_collision_mask";
|
||||
public const string SetCollisionMask = "set_collision_mask";
|
||||
|
||||
public const string SetCollisionMaskValue = "set_collision_mask_value";
|
||||
|
||||
public const string GetShape = "get_shape";
|
||||
public const string SetShape = "set_shape";
|
||||
|
||||
public const string GetMargin = "get_margin";
|
||||
public const string SetMargin = "set_margin";
|
||||
|
||||
public const string GetLookAtOffset = "get_look_at_offset";
|
||||
public const string SetLookAtOffset = "set_look_at_offset";
|
||||
|
||||
public const string GetLookAtDamping = "get_look_at_damping";
|
||||
public const string SetLookAtDamping = "set_look_at_damping";
|
||||
|
||||
public const string GetLookAtDampingValue = "get_look_at_damping_value";
|
||||
public const string SetLookAtDampingValue = "set_look_at_damping_value";
|
||||
|
||||
public const string GetCullMask = "get_cull_mask";
|
||||
public const string SetCullMask = "set_cull_mask";
|
||||
|
||||
public const string GetHOffset = "get_h_offset";
|
||||
public const string SetHOffset = "set_h_offset";
|
||||
|
||||
public const string GetVOffset = "get_v_offset";
|
||||
public const string SetVOffset = "set_v_offset";
|
||||
|
||||
public const string GetProjection = "get_projection";
|
||||
public const string SetProjection = "set_projection";
|
||||
|
||||
public const string GetFov = "get_fov";
|
||||
public const string SetFov = "set_fov";
|
||||
|
||||
public const string GetSize = "get_size";
|
||||
public const string SetSize = "set_size";
|
||||
|
||||
public const string GetFrustumOffset = "get_frustum_offset";
|
||||
public const string SetFrustumOffset = "set_frustum_offset";
|
||||
|
||||
public const string GetFar = "get_far";
|
||||
public const string SetFar = "set_far";
|
||||
|
||||
public const string GetNear = "get_near";
|
||||
public const string SetNear = "set_near";
|
||||
|
||||
public const string GetEnvironment = "get_environment";
|
||||
public const string SetEnvironment = "set_environment";
|
||||
|
||||
public const string GetAttributes = "get_attributes";
|
||||
public const string SetAttributes = "set_attributes";
|
||||
|
||||
public const string GetNoise = "get_noise";
|
||||
public const string SetNoise = "set_noise";
|
||||
}
|
||||
|
||||
public new static class SignalName
|
||||
{
|
||||
public const string LookAtTargetChanged = "look_at_target_changed";
|
||||
public const string Camera3DResourceChanged = "camera_3d_resource_changed";
|
||||
public const string Camera3DResourcePropertyChanged = "camera_3d_resource_property_changed";
|
||||
}
|
||||
}
|
@@ -0,0 +1 @@
|
||||
uid://bx3g7jxtwhi04
|
@@ -0,0 +1,83 @@
|
||||
using Godot;
|
||||
|
||||
namespace PhantomCamera.Noise;
|
||||
|
||||
public class PhantomCameraNoiseEmitter2D(GodotObject node)
|
||||
{
|
||||
public Node2D Node2D = (Node2D)node;
|
||||
|
||||
public PhantomCameraNoise2D Noise
|
||||
{
|
||||
get => new((Resource)Node2D.Call(MethodName.GetNoise));
|
||||
set => Node2D.Call(MethodName.SetNoise, (GodotObject)value.Resource);
|
||||
}
|
||||
|
||||
public bool Continuous
|
||||
{
|
||||
get => (bool)Node2D.Call(MethodName.GetContinuous);
|
||||
set => Node2D.Call(MethodName.SetContinuous, value);
|
||||
}
|
||||
|
||||
public float GrowthTime
|
||||
{
|
||||
get => (float)Node2D.Call(MethodName.GetGrowthTime);
|
||||
set => Node2D.Call(MethodName.SetGrowthTime, value);
|
||||
}
|
||||
|
||||
public float Duration
|
||||
{
|
||||
get => (float)Node2D.Call(MethodName.GetDuration);
|
||||
set => Node2D.Call(MethodName.SetDuration, value);
|
||||
}
|
||||
|
||||
public float DecayTime
|
||||
{
|
||||
get => (float)Node2D.Call(MethodName.GetDecayTime);
|
||||
set => Node2D.Call(MethodName.SetDecayTime, value);
|
||||
}
|
||||
|
||||
public int NoiseEmitterLayer
|
||||
{
|
||||
get => (int)Node2D.Call(MethodName.GetNoiseEmitterLayer);
|
||||
set => Node2D.Call(MethodName.SetNoiseEmitterLayer, value);
|
||||
}
|
||||
|
||||
public void SetNoiseEmitterLayerValue(int layer, bool value) =>
|
||||
Node2D.Call(MethodName.SetNoiseEmitterLayerValue, layer, value);
|
||||
|
||||
public void Emit() => Node2D.Call(MethodName.Emit);
|
||||
|
||||
public bool IsEmitting() => (bool)Node2D.Call(MethodName.IsEmitting);
|
||||
|
||||
public void Stop() => Node2D.Call(MethodName.Stop);
|
||||
|
||||
public void Toggle() => Node2D.Call(MethodName.Toggle);
|
||||
|
||||
public static class MethodName
|
||||
{
|
||||
public const string GetNoise = "get_noise";
|
||||
public const string SetNoise = "set_noise";
|
||||
|
||||
public const string GetContinuous = "get_continuous";
|
||||
public const string SetContinuous = "set_continuous";
|
||||
|
||||
public const string GetGrowthTime = "get_growth_time";
|
||||
public const string SetGrowthTime = "set_growth_time";
|
||||
|
||||
public const string GetDuration = "get_duration";
|
||||
public const string SetDuration = "set_duration";
|
||||
|
||||
public const string GetDecayTime = "get_decay_time";
|
||||
public const string SetDecayTime = "set_decay_time";
|
||||
|
||||
public const string GetNoiseEmitterLayer = "get_noise_emitter_layer";
|
||||
public const string SetNoiseEmitterLayer = "set_noise_emitter_layer";
|
||||
|
||||
public const string SetNoiseEmitterLayerValue = "set_noise_emitter_layer_value";
|
||||
|
||||
public const string Emit = "emit";
|
||||
public const string IsEmitting = "is_emitting";
|
||||
public const string Stop = "stop";
|
||||
public const string Toggle = "toggle";
|
||||
}
|
||||
}
|
@@ -0,0 +1 @@
|
||||
uid://btom8l3wlkn2j
|
@@ -0,0 +1,83 @@
|
||||
using Godot;
|
||||
|
||||
namespace PhantomCamera.Noise;
|
||||
|
||||
public class PhantomCameraNoiseEmitter3D(GodotObject node)
|
||||
{
|
||||
public Node3D Node3D = (Node3D)node;
|
||||
|
||||
public PhantomCameraNoise3D Noise
|
||||
{
|
||||
get => new((Resource)Node3D.Call(MethodName.GetNoise));
|
||||
set => Node3D.Call(MethodName.SetNoise, (GodotObject)value.Resource);
|
||||
}
|
||||
|
||||
public bool Continuous
|
||||
{
|
||||
get => (bool)Node3D.Call(MethodName.GetContinuous);
|
||||
set => Node3D.Call(MethodName.SetContinuous, value);
|
||||
}
|
||||
|
||||
public float GrowthTime
|
||||
{
|
||||
get => (float)Node3D.Call(MethodName.GetGrowthTime);
|
||||
set => Node3D.Call(MethodName.SetGrowthTime, value);
|
||||
}
|
||||
|
||||
public float Duration
|
||||
{
|
||||
get => (float)Node3D.Call(MethodName.GetDuration);
|
||||
set => Node3D.Call(MethodName.SetDuration, value);
|
||||
}
|
||||
|
||||
public float DecayTime
|
||||
{
|
||||
get => (float)Node3D.Call(MethodName.GetDecayTime);
|
||||
set => Node3D.Call(MethodName.SetDecayTime, value);
|
||||
}
|
||||
|
||||
public int NoiseEmitterLayer
|
||||
{
|
||||
get => (int)Node3D.Call(MethodName.GetNoiseEmitterLayer);
|
||||
set => Node3D.Call(MethodName.SetNoiseEmitterLayer, value);
|
||||
}
|
||||
|
||||
public void SetNoiseEmitterLayerValue(int layer, bool value) =>
|
||||
Node3D.Call(MethodName.SetNoiseEmitterLayerValue, layer, value);
|
||||
|
||||
public void Emit() => Node3D.Call(MethodName.Emit);
|
||||
|
||||
public bool IsEmitting() => (bool)Node3D.Call(MethodName.IsEmitting);
|
||||
|
||||
public void Stop() => Node3D.Call(MethodName.Stop);
|
||||
|
||||
public void Toggle() => Node3D.Call(MethodName.Toggle);
|
||||
|
||||
public static class MethodName
|
||||
{
|
||||
public const string GetNoise = "get_noise";
|
||||
public const string SetNoise = "set_noise";
|
||||
|
||||
public const string GetContinuous = "get_continuous";
|
||||
public const string SetContinuous = "set_continuous";
|
||||
|
||||
public const string GetGrowthTime = "get_growth_time";
|
||||
public const string SetGrowthTime = "set_growth_time";
|
||||
|
||||
public const string GetDuration = "get_duration";
|
||||
public const string SetDuration = "set_duration";
|
||||
|
||||
public const string GetDecayTime = "get_decay_time";
|
||||
public const string SetDecayTime = "set_decay_time";
|
||||
|
||||
public const string GetNoiseEmitterLayer = "get_noise_emitter_layer";
|
||||
public const string SetNoiseEmitterLayer = "set_noise_emitter_layer";
|
||||
|
||||
public const string SetNoiseEmitterLayerValue = "set_noise_emitter_layer_value";
|
||||
|
||||
public const string Emit = "emit";
|
||||
public const string IsEmitting = "is_emitting";
|
||||
public const string Stop = "stop";
|
||||
public const string Toggle = "toggle";
|
||||
}
|
||||
}
|
@@ -0,0 +1 @@
|
||||
uid://buvda14filkjx
|
@@ -0,0 +1,128 @@
|
||||
using Godot;
|
||||
|
||||
#nullable enable
|
||||
|
||||
namespace PhantomCamera;
|
||||
|
||||
public enum InterpolationMode
|
||||
{
|
||||
Auto,
|
||||
Idle,
|
||||
Physics
|
||||
}
|
||||
|
||||
public static class PhantomCameraHostExtensions
|
||||
{
|
||||
public static PhantomCameraHost AsPhantomCameraHost(this Node node)
|
||||
{
|
||||
return new PhantomCameraHost(node);
|
||||
}
|
||||
}
|
||||
|
||||
public class PhantomCameraHost()
|
||||
{
|
||||
public Node Node { get; } = null!;
|
||||
|
||||
public PhantomCameraHost(Node node) : this()
|
||||
{
|
||||
Node = node;
|
||||
|
||||
_callablePCamBecameActive = Callable.From<Node>(pCam => PCamBecameActive?.Invoke(pCam));
|
||||
_callablePCamBecameInactive = Callable.From<Node>(pCam => PCamBecameInactive?.Invoke(pCam));
|
||||
|
||||
Node.Connect(SignalName.PCamBecameActive, _callablePCamBecameActive);
|
||||
Node.Connect(SignalName.PCamBecameInactive, _callablePCamBecameInactive);
|
||||
}
|
||||
|
||||
~PhantomCameraHost()
|
||||
{
|
||||
Node.Disconnect(SignalName.PCamBecameActive, _callablePCamBecameActive);
|
||||
Node.Disconnect(SignalName.PCamBecameInactive, _callablePCamBecameInactive);
|
||||
}
|
||||
|
||||
public delegate void PCamBecameActiveEventHandler(Node pCam);
|
||||
public delegate void PCamBecameInactiveEventHandler(Node pCam);
|
||||
|
||||
public event PCamBecameActiveEventHandler? PCamBecameActive;
|
||||
public event PCamBecameInactiveEventHandler? PCamBecameInactive;
|
||||
|
||||
|
||||
private readonly Callable _callablePCamBecameActive;
|
||||
private readonly Callable _callablePCamBecameInactive;
|
||||
// For when Godot becomes the minimum version
|
||||
// public InterpolationMode InterpolationMode
|
||||
// {
|
||||
// get => (InterpolationMode)(int)Node.Call(MethodName.GetInterpolationMode);
|
||||
// set => Node.Call(MethodName.SetInterpolationMode, (int)value);
|
||||
// }
|
||||
|
||||
public int HostLayers
|
||||
{
|
||||
get => (int)Node.Call(PhantomCamera.MethodName.GetHostLayers);
|
||||
set => Node.Call(PhantomCamera.MethodName.SetHostLayers, value);
|
||||
}
|
||||
|
||||
public void SetHostLayersValue(int layer, bool value) => Node.Call(MethodName.SetHostLayersValue, layer, value);
|
||||
|
||||
public Camera2D? Camera2D => (Camera2D?)Node.Get(PropertyName.Camera2D);
|
||||
|
||||
public Camera3D? Camera3D => (Camera3D?)Node.Get(PropertyName.Camera3D);
|
||||
|
||||
public InterpolationMode InterpolationMode
|
||||
{
|
||||
get => (InterpolationMode)(int)Node.Call(MethodName.GetInterpolationMode);
|
||||
set => Node.Call(MethodName.SetInterpolationMode, (int)value);
|
||||
}
|
||||
|
||||
public bool TriggerPhantomCameraTween => (bool)Node.Call(MethodName.GetTriggerPhantomCameraTween);
|
||||
|
||||
public ActivePhantomCameraQueryResult? GetActivePhantomCamera()
|
||||
{
|
||||
var result = Node.Call(MethodName.GetActivePhantomCamera);
|
||||
return result.VariantType == Variant.Type.Nil ? null : new ActivePhantomCameraQueryResult(result.AsGodotObject());
|
||||
}
|
||||
|
||||
public static class PropertyName
|
||||
{
|
||||
public const string Camera2D = "camera_2d";
|
||||
public const string Camera3D = "camera_3d";
|
||||
}
|
||||
|
||||
public static class MethodName
|
||||
{
|
||||
public const string GetActivePhantomCamera = "get_active_pcam";
|
||||
public const string GetTriggerPhantomCameraTween = "get_trigger_pcam_tween";
|
||||
|
||||
public const string GetInterpolationMode = "get_interpolation_mode";
|
||||
public const string SetInterpolationMode = "set_interpolation_mode";
|
||||
|
||||
public const string SetHostLayersValue = "set_host_layers_value";
|
||||
}
|
||||
|
||||
public static class SignalName
|
||||
{
|
||||
public const string PCamBecameActive = "pcam_became_active";
|
||||
public const string PCamBecameInactive = "pcam_became_inactive";
|
||||
}
|
||||
}
|
||||
|
||||
public class ActivePhantomCameraQueryResult(GodotObject godotObject)
|
||||
{
|
||||
public bool Is2D => godotObject.IsClass("Node2D") || ((Node)godotObject).Name.ToString().Contains("PhantomCamera2D")
|
||||
|| ((Node)godotObject).Name.ToString().Contains("PCam2D")
|
||||
|| ((Node)godotObject).Name.ToString().Contains("2D");
|
||||
|
||||
public bool Is3D => godotObject.IsClass("Node3D") || ((Node)godotObject).Name.ToString().Contains("PhantomCamera3D")
|
||||
|| ((Node)godotObject).Name.ToString().Contains("PCam3D")
|
||||
|| ((Node)godotObject).Name.ToString().Contains("3D");
|
||||
|
||||
public PhantomCamera2D? AsPhantomCamera2D()
|
||||
{
|
||||
return Is2D ? new PhantomCamera2D(godotObject) : null;
|
||||
}
|
||||
|
||||
public PhantomCamera3D? AsPhantomCamera3D()
|
||||
{
|
||||
return Is3D ? new PhantomCamera3D(godotObject) : null;
|
||||
}
|
||||
}
|
@@ -0,0 +1 @@
|
||||
uid://cr8brwrls2nn3
|
117
addons/phantom_camera/scripts/resources/Camera3DResource.cs
Normal file
117
addons/phantom_camera/scripts/resources/Camera3DResource.cs
Normal file
@@ -0,0 +1,117 @@
|
||||
using Godot;
|
||||
|
||||
namespace PhantomCamera;
|
||||
|
||||
public enum KeepAspect
|
||||
{
|
||||
KeepWidth,
|
||||
KeepHeight
|
||||
}
|
||||
|
||||
public enum ProjectionType
|
||||
{
|
||||
Perspective,
|
||||
Orthogonal,
|
||||
Frustum
|
||||
}
|
||||
|
||||
public class Camera3DResource(Resource resource)
|
||||
{
|
||||
public readonly Resource Resource = resource;
|
||||
|
||||
public KeepAspect KeepAspect
|
||||
{
|
||||
get => (KeepAspect)(int)Resource.Call(MethodName.GetKeepAspect);
|
||||
set => Resource.Call(MethodName.SetKeepAspect, (int)value);
|
||||
}
|
||||
|
||||
public int CullMask
|
||||
{
|
||||
get => (int)Resource.Call(MethodName.GetCullMask);
|
||||
set => Resource.Call(MethodName.SetCullMask, value);
|
||||
}
|
||||
|
||||
public void SetCullMaskValue(int layer, bool value) => Resource.Call(MethodName.SetCullMaskValue, layer, value);
|
||||
|
||||
public float HOffset
|
||||
{
|
||||
get => (float)Resource.Call(MethodName.GetHOffset);
|
||||
set => Resource.Call(MethodName.SetHOffset, value);
|
||||
}
|
||||
|
||||
public float VOffset
|
||||
{
|
||||
get => (float)Resource.Call(MethodName.GetVOffset);
|
||||
set => Resource.Call(MethodName.SetVOffset, value);
|
||||
}
|
||||
|
||||
public ProjectionType Projection
|
||||
{
|
||||
get => (ProjectionType)(int)Resource.Call(MethodName.GetProjection);
|
||||
set => Resource.Call(MethodName.SetProjection, (int)value);
|
||||
}
|
||||
|
||||
public float Fov
|
||||
{
|
||||
get => (float)Resource.Call(MethodName.GetFov);
|
||||
set => Resource.Call(MethodName.SetFov, Mathf.Clamp(value, 1, 179));
|
||||
}
|
||||
|
||||
public float Size
|
||||
{
|
||||
get => (float)Resource.Call(MethodName.GetSize);
|
||||
set => Resource.Call(MethodName.SetSize, Mathf.Clamp(value, 0.001f, float.PositiveInfinity));
|
||||
}
|
||||
|
||||
public Vector2 FrustumOffset
|
||||
{
|
||||
get => (Vector2)Resource.Call(MethodName.GetFrustumOffset);
|
||||
set => Resource.Call(MethodName.SetFrustumOffset, value);
|
||||
}
|
||||
|
||||
public float Near
|
||||
{
|
||||
get => (float)Resource.Call(MethodName.GetNear);
|
||||
set => Resource.Call(MethodName.SetNear, Mathf.Clamp(value, 0.001f, float.PositiveInfinity));
|
||||
}
|
||||
|
||||
public float Far
|
||||
{
|
||||
get => (float)Resource.Call(MethodName.GetFar);
|
||||
set => Resource.Call(MethodName.SetFar, Mathf.Clamp(value, 0.01f, float.PositiveInfinity));
|
||||
}
|
||||
|
||||
public static class MethodName
|
||||
{
|
||||
public const string GetKeepAspect = "get_keep_aspect";
|
||||
public const string SetKeepAspect = "set_keep_aspect";
|
||||
|
||||
public const string GetCullMask = "get_cull_mask";
|
||||
public const string SetCullMask = "set_cull_mask";
|
||||
public const string SetCullMaskValue = "set_cull_mask_value";
|
||||
|
||||
public const string GetHOffset = "get_h_offset";
|
||||
public const string SetHOffset = "set_h_offset";
|
||||
|
||||
public const string GetVOffset = "get_v_offset";
|
||||
public const string SetVOffset = "set_v_offset";
|
||||
|
||||
public const string GetProjection = "get_projection";
|
||||
public const string SetProjection = "set_projection";
|
||||
|
||||
public const string GetFov = "get_fov";
|
||||
public const string SetFov = "set_fov";
|
||||
|
||||
public const string GetSize = "get_size";
|
||||
public const string SetSize = "set_size";
|
||||
|
||||
public const string GetFrustumOffset = "get_frustum_offset";
|
||||
public const string SetFrustumOffset = "set_frustum_offset";
|
||||
|
||||
public const string GetNear = "get_near";
|
||||
public const string SetNear = "set_near";
|
||||
|
||||
public const string GetFar = "get_far";
|
||||
public const string SetFar = "set_far";
|
||||
}
|
||||
}
|
@@ -0,0 +1 @@
|
||||
uid://jedyxlihuwbj
|
@@ -0,0 +1,92 @@
|
||||
using Godot;
|
||||
|
||||
namespace PhantomCamera.Noise;
|
||||
|
||||
public class PhantomCameraNoise2D(Resource resource)
|
||||
{
|
||||
public readonly Resource Resource = resource;
|
||||
|
||||
public float Amplitude
|
||||
{
|
||||
get => (float)Resource.Call(MethodName.GetAmplitude);
|
||||
set => Resource.Call(MethodName.SetAmplitude, value);
|
||||
}
|
||||
|
||||
public float Frequency
|
||||
{
|
||||
get => (float)Resource.Call(MethodName.GetFrequency);
|
||||
set => Resource.Call(MethodName.SetFrequency, value);
|
||||
}
|
||||
|
||||
public bool RandomizeNoiseSeed
|
||||
{
|
||||
get => (bool)Resource.Call(MethodName.GetRandomizeNoiseSeed);
|
||||
set => Resource.Call(MethodName.SetRandomizeNoiseSeed, value);
|
||||
}
|
||||
|
||||
public int NoiseSeed
|
||||
{
|
||||
get => (int)Resource.Call(MethodName.GetNoiseSeed);
|
||||
set => Resource.Call(MethodName.SetNoiseSeed, value);
|
||||
}
|
||||
|
||||
public bool RotationalNoise
|
||||
{
|
||||
get => (bool)Resource.Call(MethodName.GetRotationalNoise);
|
||||
set => Resource.Call(MethodName.SetRotationalNoise, value);
|
||||
}
|
||||
|
||||
public bool PositionalNoise
|
||||
{
|
||||
get => (bool)Resource.Call(MethodName.GetPositionalNoise);
|
||||
set => Resource.Call(MethodName.SetPositionalNoise, value);
|
||||
}
|
||||
|
||||
public float RotationalMultiplier
|
||||
{
|
||||
get => (float)Resource.Call(MethodName.GetRotationalMultiplier);
|
||||
set => Resource.Call(MethodName.SetRotationalMultiplier, value);
|
||||
}
|
||||
|
||||
public float PositionalMultiplierX
|
||||
{
|
||||
get => (float)Resource.Call(MethodName.GetPositionalMultiplierX);
|
||||
set => Resource.Call(MethodName.SetPositionalMultiplierX, value);
|
||||
}
|
||||
|
||||
public float PositionalMultiplierY
|
||||
{
|
||||
get => (float)Resource.Call(MethodName.GetPositionalMultiplierY);
|
||||
set => Resource.Call(MethodName.SetPositionalMultiplierY, value);
|
||||
}
|
||||
|
||||
public static class MethodName
|
||||
{
|
||||
public const string GetAmplitude = "get_amplitude";
|
||||
public const string SetAmplitude = "set_amplitude";
|
||||
|
||||
public const string GetFrequency = "get_frequency";
|
||||
public const string SetFrequency = "set_frequency";
|
||||
|
||||
public const string GetRandomizeNoiseSeed = "get_randomize_noise_seed";
|
||||
public const string SetRandomizeNoiseSeed = "set_randomize_noise_seed";
|
||||
|
||||
public const string GetNoiseSeed = "get_noise_seed";
|
||||
public const string SetNoiseSeed = "set_noise_seed";
|
||||
|
||||
public const string GetRotationalNoise = "get_rotational_noise";
|
||||
public const string SetRotationalNoise = "set_rotational_noise";
|
||||
|
||||
public const string GetPositionalNoise = "get_positional_noise";
|
||||
public const string SetPositionalNoise = "set_positional_noise";
|
||||
|
||||
public const string GetRotationalMultiplier = "get_rotational_multiplier";
|
||||
public const string SetRotationalMultiplier = "set_rotational_multiplier";
|
||||
|
||||
public const string GetPositionalMultiplierX = "get_positional_multiplier_x";
|
||||
public const string SetPositionalMultiplierX = "set_positional_multiplier_x";
|
||||
|
||||
public const string GetPositionalMultiplierY = "get_positional_multiplier_y";
|
||||
public const string SetPositionalMultiplierY = "set_positional_multiplier_y";
|
||||
}
|
||||
}
|
@@ -0,0 +1 @@
|
||||
uid://capjdoxs6gs6r
|
119
addons/phantom_camera/scripts/resources/PhantomCameraNoise3D.cs
Normal file
119
addons/phantom_camera/scripts/resources/PhantomCameraNoise3D.cs
Normal file
@@ -0,0 +1,119 @@
|
||||
using Godot;
|
||||
|
||||
namespace PhantomCamera.Noise;
|
||||
|
||||
public class PhantomCameraNoise3D(Resource resource)
|
||||
{
|
||||
public readonly Resource Resource = resource;
|
||||
|
||||
public float Amplitude
|
||||
{
|
||||
get => (float)Resource.Call(MethodName.GetAmplitude);
|
||||
set => Resource.Call(MethodName.SetAmplitude, value);
|
||||
}
|
||||
|
||||
public float Frequency
|
||||
{
|
||||
get => (float)Resource.Call(MethodName.GetFrequency);
|
||||
set => Resource.Call(MethodName.SetFrequency, value);
|
||||
}
|
||||
|
||||
public bool RandomizeNoiseSeed
|
||||
{
|
||||
get => (bool)Resource.Call(MethodName.GetRandomizeNoiseSeed);
|
||||
set => Resource.Call(MethodName.SetRandomizeNoiseSeed, value);
|
||||
}
|
||||
|
||||
public int NoiseSeed
|
||||
{
|
||||
get => (int)Resource.Call(MethodName.GetNoiseSeed);
|
||||
set => Resource.Call(MethodName.SetNoiseSeed, value);
|
||||
}
|
||||
|
||||
public bool RotationalNoise
|
||||
{
|
||||
get => (bool)Resource.Call(MethodName.GetRotationalNoise);
|
||||
set => Resource.Call(MethodName.SetRotationalNoise, value);
|
||||
}
|
||||
|
||||
public bool PositionalNoise
|
||||
{
|
||||
get => (bool)Resource.Call(MethodName.GetPositionalNoise);
|
||||
set => Resource.Call(MethodName.SetPositionalNoise, value);
|
||||
}
|
||||
|
||||
public float RotationalMultiplierX
|
||||
{
|
||||
get => (float)Resource.Call(MethodName.GetRotationalMultiplierX);
|
||||
set => Resource.Call(MethodName.SetRotationalMultiplierX, value);
|
||||
}
|
||||
|
||||
public float RotationalMultiplierY
|
||||
{
|
||||
get => (float)Resource.Call(MethodName.GetRotationalMultiplierY);
|
||||
set => Resource.Call(MethodName.SetRotationalMultiplierY, value);
|
||||
}
|
||||
|
||||
public float RotationalMultiplierZ
|
||||
{
|
||||
get => (float)Resource.Call(MethodName.GetRotationalMultiplierZ);
|
||||
set => Resource.Call(MethodName.SetRotationalMultiplierZ, value);
|
||||
}
|
||||
|
||||
public float PositionalMultiplierX
|
||||
{
|
||||
get => (float)Resource.Call(MethodName.GetPositionalMultiplierX);
|
||||
set => Resource.Call(MethodName.SetPositionalMultiplierX, value);
|
||||
}
|
||||
|
||||
public float PositionalMultiplierY
|
||||
{
|
||||
get => (float)Resource.Call(MethodName.GetPositionalMultiplierY);
|
||||
set => Resource.Call(MethodName.SetPositionalMultiplierY, value);
|
||||
}
|
||||
|
||||
public float PositionalMultiplierZ
|
||||
{
|
||||
get => (float)Resource.Call(MethodName.GetPositionalMultiplierZ);
|
||||
set => Resource.Call(MethodName.SetPositionalMultiplierZ, value);
|
||||
}
|
||||
|
||||
public static class MethodName
|
||||
{
|
||||
public const string GetAmplitude = "get_amplitude";
|
||||
public const string SetAmplitude = "set_amplitude";
|
||||
|
||||
public const string GetFrequency = "get_frequency";
|
||||
public const string SetFrequency = "set_frequency";
|
||||
|
||||
public const string GetRandomizeNoiseSeed = "get_randomize_noise_seed";
|
||||
public const string SetRandomizeNoiseSeed = "set_randomize_noise_seed";
|
||||
|
||||
public const string GetNoiseSeed = "get_noise_seed";
|
||||
public const string SetNoiseSeed = "set_noise_seed";
|
||||
|
||||
public const string GetRotationalNoise = "get_rotational_noise";
|
||||
public const string SetRotationalNoise = "set_rotational_noise";
|
||||
|
||||
public const string GetPositionalNoise = "get_positional_noise";
|
||||
public const string SetPositionalNoise = "set_positional_noise";
|
||||
|
||||
public const string GetRotationalMultiplierX = "get_rotational_multiplier_x";
|
||||
public const string SetRotationalMultiplierX = "set_rotational_multiplier_x";
|
||||
|
||||
public const string GetRotationalMultiplierY = "get_rotational_multiplier_y";
|
||||
public const string SetRotationalMultiplierY = "set_rotational_multiplier_y";
|
||||
|
||||
public const string GetRotationalMultiplierZ = "get_rotational_multiplier_z";
|
||||
public const string SetRotationalMultiplierZ = "set_rotational_multiplier_z";
|
||||
|
||||
public const string GetPositionalMultiplierX = "get_positional_multiplier_x";
|
||||
public const string SetPositionalMultiplierX = "set_positional_multiplier_x";
|
||||
|
||||
public const string GetPositionalMultiplierY = "get_positional_multiplier_y";
|
||||
public const string SetPositionalMultiplierY = "set_positional_multiplier_y";
|
||||
|
||||
public const string GetPositionalMultiplierZ = "get_positional_multiplier_z";
|
||||
public const string SetPositionalMultiplierZ = "set_positional_multiplier_z";
|
||||
}
|
||||
}
|
@@ -0,0 +1 @@
|
||||
uid://chk7643ynhe4f
|
@@ -0,0 +1,64 @@
|
||||
using Godot;
|
||||
|
||||
namespace PhantomCamera;
|
||||
|
||||
public enum TransitionType
|
||||
{
|
||||
Linear,
|
||||
Sine,
|
||||
Quint,
|
||||
Quart,
|
||||
Quad,
|
||||
Expo,
|
||||
Elastic,
|
||||
Cubic,
|
||||
Circ,
|
||||
Bounce,
|
||||
Back
|
||||
}
|
||||
|
||||
public enum EaseType
|
||||
{
|
||||
EaseIn,
|
||||
EaseOut,
|
||||
EaseInOut,
|
||||
EaseOutIn
|
||||
}
|
||||
|
||||
public static class PhantomCameraTweenExtensions
|
||||
{
|
||||
public static PhantomCameraTween AsPhantomCameraTween(this Resource resource)
|
||||
{
|
||||
return new PhantomCameraTween(resource);
|
||||
}
|
||||
}
|
||||
|
||||
public class PhantomCameraTween(Resource tweenResource)
|
||||
{
|
||||
public Resource Resource { get; } = tweenResource;
|
||||
|
||||
public float Duration
|
||||
{
|
||||
get => (float)Resource.Get(PropertyName.Duration);
|
||||
set => Resource.Set(PropertyName.Duration, value);
|
||||
}
|
||||
|
||||
public TransitionType Transition
|
||||
{
|
||||
get => (TransitionType)(int)Resource.Get(PropertyName.Transition);
|
||||
set => Resource.Set(PropertyName.Transition, (int)value);
|
||||
}
|
||||
|
||||
public EaseType Ease
|
||||
{
|
||||
get => (EaseType)(int)Resource.Get(PropertyName.Ease);
|
||||
set => Resource.Set(PropertyName.Ease, (int)value);
|
||||
}
|
||||
|
||||
public static class PropertyName
|
||||
{
|
||||
public const string Duration = "duration";
|
||||
public const string Transition = "transition";
|
||||
public const string Ease = "ease";
|
||||
}
|
||||
}
|
@@ -0,0 +1 @@
|
||||
uid://ybr5c2s0tfvx
|
17
addons/phantom_camera/themes/button_focus.tres
Normal file
17
addons/phantom_camera/themes/button_focus.tres
Normal file
@@ -0,0 +1,17 @@
|
||||
[gd_resource type="StyleBoxFlat" format=3 uid="uid://p058hmj3uut0"]
|
||||
|
||||
[resource]
|
||||
content_margin_left = 8.0
|
||||
content_margin_top = 4.0
|
||||
content_margin_right = 8.0
|
||||
content_margin_bottom = 4.0
|
||||
bg_color = Color(0.0784314, 0.109804, 0.129412, 1)
|
||||
border_width_left = 2
|
||||
border_width_top = 2
|
||||
border_width_right = 2
|
||||
border_width_bottom = 2
|
||||
border_color = Color(0.227451, 0.72549, 0.603922, 1)
|
||||
corner_radius_top_left = 8
|
||||
corner_radius_top_right = 8
|
||||
corner_radius_bottom_right = 8
|
||||
corner_radius_bottom_left = 8
|
13
addons/phantom_camera/themes/button_hover.tres
Normal file
13
addons/phantom_camera/themes/button_hover.tres
Normal file
@@ -0,0 +1,13 @@
|
||||
[gd_resource type="StyleBoxFlat" format=3 uid="uid://5weqvkjsfso3"]
|
||||
|
||||
[resource]
|
||||
content_margin_left = 8.0
|
||||
content_margin_top = 4.0
|
||||
content_margin_right = 8.0
|
||||
content_margin_bottom = 4.0
|
||||
bg_color = Color(0.960784, 0.960784, 0.960784, 1)
|
||||
border_color = Color(0.227451, 0.72549, 0.603922, 1)
|
||||
corner_radius_top_left = 8
|
||||
corner_radius_top_right = 8
|
||||
corner_radius_bottom_right = 8
|
||||
corner_radius_bottom_left = 8
|
17
addons/phantom_camera/themes/button_normal.tres
Normal file
17
addons/phantom_camera/themes/button_normal.tres
Normal file
@@ -0,0 +1,17 @@
|
||||
[gd_resource type="StyleBoxFlat" format=3 uid="uid://bclbwo3xrdat0"]
|
||||
|
||||
[resource]
|
||||
content_margin_left = 8.0
|
||||
content_margin_top = 4.0
|
||||
content_margin_right = 8.0
|
||||
content_margin_bottom = 4.0
|
||||
bg_color = Color(0.0784314, 0.109804, 0.129412, 1)
|
||||
border_width_left = 2
|
||||
border_width_top = 2
|
||||
border_width_right = 2
|
||||
border_width_bottom = 2
|
||||
border_color = Color(0.227451, 0.72549, 0.603922, 1)
|
||||
corner_radius_top_left = 8
|
||||
corner_radius_top_right = 8
|
||||
corner_radius_bottom_right = 8
|
||||
corner_radius_bottom_left = 8
|
102
addons/phantom_camera/themes/theme.tres
Normal file
102
addons/phantom_camera/themes/theme.tres
Normal file
@@ -0,0 +1,102 @@
|
||||
[gd_resource type="Theme" load_steps=12 format=3 uid="uid://bhppejri5dbsf"]
|
||||
|
||||
[ext_resource type="FontFile" uid="uid://dve7mgsjik4dg" path="res://addons/phantom_camera/fonts/Nunito-Regular.ttf" id="1_5rtjh"]
|
||||
[ext_resource type="StyleBox" uid="uid://5weqvkjsfso3" path="res://addons/phantom_camera/themes/button_hover.tres" id="2_du6h5"]
|
||||
[ext_resource type="StyleBox" uid="uid://bclbwo3xrdat0" path="res://addons/phantom_camera/themes/button_normal.tres" id="3_a8j1f"]
|
||||
|
||||
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_ek0y3"]
|
||||
content_margin_left = 8.0
|
||||
content_margin_top = 4.0
|
||||
content_margin_right = 8.0
|
||||
content_margin_bottom = 4.0
|
||||
bg_color = Color(0.227451, 0.72549, 0.603922, 1)
|
||||
corner_radius_top_left = 8
|
||||
corner_radius_top_right = 8
|
||||
corner_radius_bottom_right = 8
|
||||
corner_radius_bottom_left = 8
|
||||
|
||||
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_rjkuq"]
|
||||
content_margin_left = 8.0
|
||||
content_margin_top = 4.0
|
||||
content_margin_right = 8.0
|
||||
content_margin_bottom = 4.0
|
||||
bg_color = Color(0.227451, 0.72549, 0.603922, 1)
|
||||
corner_radius_top_left = 8
|
||||
corner_radius_top_right = 8
|
||||
corner_radius_bottom_right = 8
|
||||
corner_radius_bottom_left = 8
|
||||
|
||||
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_x7u0w"]
|
||||
content_margin_top = 2.0
|
||||
content_margin_right = 8.0
|
||||
bg_color = Color(0.0784314, 0.109804, 0.129412, 1)
|
||||
border_width_top = 2
|
||||
border_width_right = 2
|
||||
border_color = Color(0.227451, 0.72549, 0.603922, 1)
|
||||
corner_radius_top_right = 10
|
||||
|
||||
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_dln2q"]
|
||||
content_margin_top = 8.0
|
||||
content_margin_bottom = 8.0
|
||||
draw_center = false
|
||||
|
||||
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_wk7ot"]
|
||||
bg_color = Color(0.227451, 0.72549, 0.603922, 1)
|
||||
border_color = Color(0.227451, 0.72549, 0.603922, 1)
|
||||
corner_radius_top_left = 8
|
||||
corner_radius_top_right = 8
|
||||
corner_radius_bottom_right = 8
|
||||
corner_radius_bottom_left = 8
|
||||
|
||||
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_jidrt"]
|
||||
bg_color = Color(0.960784, 0.960784, 0.960784, 1)
|
||||
border_width_left = 2
|
||||
border_width_top = 2
|
||||
border_width_right = 2
|
||||
border_width_bottom = 2
|
||||
corner_radius_top_left = 8
|
||||
corner_radius_top_right = 8
|
||||
corner_radius_bottom_right = 8
|
||||
corner_radius_bottom_left = 8
|
||||
|
||||
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_o2xwc"]
|
||||
bg_color = Color(0.960784, 0.960784, 0.960784, 1)
|
||||
border_width_left = 2
|
||||
border_width_top = 2
|
||||
border_width_right = 2
|
||||
border_width_bottom = 2
|
||||
corner_radius_top_left = 8
|
||||
corner_radius_top_right = 8
|
||||
corner_radius_bottom_right = 8
|
||||
corner_radius_bottom_left = 8
|
||||
|
||||
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_ul127"]
|
||||
draw_center = false
|
||||
border_width_left = 4
|
||||
border_width_right = 4
|
||||
border_color = Color(0.8, 0.8, 0.8, 0)
|
||||
|
||||
[resource]
|
||||
default_font = ExtResource("1_5rtjh")
|
||||
Button/colors/font_color = Color(0.227451, 0.72549, 0.603922, 1)
|
||||
Button/colors/font_focus_color = Color(0.0784314, 0.109804, 0.129412, 1)
|
||||
Button/colors/font_hover_color = Color(0.0784314, 0.109804, 0.129412, 1)
|
||||
Button/colors/font_hover_pressed_color = Color(0.0784314, 0.109804, 0.129412, 1)
|
||||
Button/colors/font_pressed_color = Color(0.0784314, 0.109804, 0.129412, 1)
|
||||
Button/colors/icon_focus_color = Color(0.0784314, 0.109804, 0.129412, 1)
|
||||
Button/colors/icon_hover_color = Color(0.0784314, 0.109804, 0.129412, 1)
|
||||
Button/colors/icon_hover_pressed_color = Color(0.227451, 0.72549, 0.603922, 1)
|
||||
Button/colors/icon_normal_color = Color(0.0784314, 0.109804, 0.129412, 1)
|
||||
Button/colors/icon_pressed_color = Color(0.227451, 0.72549, 0.603922, 1)
|
||||
Button/styles/focus = SubResource("StyleBoxFlat_ek0y3")
|
||||
Button/styles/hover = ExtResource("2_du6h5")
|
||||
Button/styles/hover_pressed = null
|
||||
Button/styles/normal = ExtResource("3_a8j1f")
|
||||
Button/styles/pressed = SubResource("StyleBoxFlat_rjkuq")
|
||||
PanelContainer/styles/panel = SubResource("StyleBoxFlat_x7u0w")
|
||||
ScrollContainer/styles/panel = SubResource("StyleBoxFlat_dln2q")
|
||||
VBoxContainer/constants/separation = 8
|
||||
VScrollBar/styles/grabber = SubResource("StyleBoxFlat_wk7ot")
|
||||
VScrollBar/styles/grabber_highlight = SubResource("StyleBoxFlat_jidrt")
|
||||
VScrollBar/styles/grabber_pressed = SubResource("StyleBoxFlat_o2xwc")
|
||||
VScrollBar/styles/scroll = SubResource("StyleBoxFlat_ul127")
|
@@ -1,5 +0,0 @@
|
||||
[gd_scene format=3 uid="uid://qq5g75cinhap"]
|
||||
|
||||
[node name="Camera Manager" type="Node"]
|
||||
|
||||
[node name="Camera Nodes" type="StaticBody2D" parent="."]
|
@@ -9,7 +9,7 @@
|
||||
[sub_resource type="CircleShape2D" id="CircleShape2D_3ask2"]
|
||||
radius = 9.0
|
||||
|
||||
[node name="Big Coin" type="Area2D"]
|
||||
[node name="Big Coin" type="Area2D" groups=["coins"]]
|
||||
scale = Vector2(2, 2)
|
||||
collision_layer = 2
|
||||
collision_mask = 4
|
||||
@@ -23,7 +23,7 @@ hframes = 12
|
||||
vframes = 12
|
||||
frame = 51
|
||||
|
||||
[node name="CollectableComponent" type="Node" parent="." node_paths=PackedStringArray("Area2D", "CollisionShape", "Sfx") groups=["coins"]]
|
||||
[node name="CollectableComponent" type="Node" parent="." node_paths=PackedStringArray("Area2D", "CollisionShape", "Sfx")]
|
||||
script = ExtResource("2_htmrw")
|
||||
Area2D = NodePath("..")
|
||||
CollisionShape = NodePath("../CollisionShape2D")
|
||||
|
@@ -9,7 +9,7 @@
|
||||
[sub_resource type="CircleShape2D" id="CircleShape2D_3ask2"]
|
||||
radius = 9.0
|
||||
|
||||
[node name="Big Treasure" type="Area2D"]
|
||||
[node name="Big Treasure" type="Area2D" groups=["coins"]]
|
||||
collision_layer = 2
|
||||
collision_mask = 4
|
||||
|
||||
@@ -22,7 +22,7 @@ hframes = 12
|
||||
vframes = 12
|
||||
frame = 64
|
||||
|
||||
[node name="CollectableComponent" type="Node" parent="." node_paths=PackedStringArray("Area2D", "CollisionShape", "Sfx") groups=["coins"]]
|
||||
[node name="CollectableComponent" type="Node" parent="." node_paths=PackedStringArray("Area2D", "CollisionShape", "Sfx")]
|
||||
script = ExtResource("2_lthbn")
|
||||
Area2D = NodePath("..")
|
||||
CollisionShape = NodePath("../CollisionShape2D")
|
||||
|
@@ -1,4 +1,4 @@
|
||||
[gd_scene load_steps=11 format=3 uid="uid://bymro4t7angv5"]
|
||||
[gd_scene load_steps=10 format=3 uid="uid://bymro4t7angv5"]
|
||||
|
||||
[ext_resource type="Texture2D" uid="uid://djifxc5x0dyrw" path="res://sprites/ppc_tileset.png" id="1_1c3jb"]
|
||||
[ext_resource type="Script" uid="uid://cfw8nbrarex0i" path="res://scripts/components/BulletComponent.cs" id="2_r41xl"]
|
||||
@@ -8,7 +8,6 @@
|
||||
[ext_resource type="Script" uid="uid://cbexrnnj47f87" path="res://scripts/components/LaunchComponent.cs" id="6_t4c40"]
|
||||
[ext_resource type="Script" uid="uid://c7p06t0eax8am" path="res://scripts/components/StraightMotionComponent.cs" id="7_y10b5"]
|
||||
[ext_resource type="PackedScene" uid="uid://c1iorglk708g0" path="res://objects/fxs/terrain_hit_fx.tscn" id="8_d0tcd"]
|
||||
[ext_resource type="Script" uid="uid://cypxrqoeiihbf" path="res://scripts/components/TerrainHitFx.cs" id="9_y1xkr"]
|
||||
|
||||
[sub_resource type="RectangleShape2D" id="RectangleShape2D_ar0xf"]
|
||||
size = Vector2(16, 10)
|
||||
@@ -62,4 +61,3 @@ LaunchComponent = NodePath("../LaunchComponent")
|
||||
metadata/_custom_type_script = "uid://cvcnfrr1udco5"
|
||||
|
||||
[node name="TerrainHitFX" parent="." instance=ExtResource("8_d0tcd")]
|
||||
script = ExtResource("9_y1xkr")
|
||||
|
@@ -1,4 +1,4 @@
|
||||
[gd_scene load_steps=49 format=3 uid="uid://bqi5s710xb1ju"]
|
||||
[gd_scene load_steps=42 format=3 uid="uid://bqi5s710xb1ju"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://csel4s0e4g5uf" path="res://scripts/components/PlayerController.cs" id="1_yysbb"]
|
||||
[ext_resource type="Shader" uid="uid://bs4xvm4qkurpr" path="res://shaders/hit_flash.tres" id="2_lgb3u"]
|
||||
@@ -15,27 +15,20 @@
|
||||
[ext_resource type="Script" uid="uid://byw1legrv1ep2" path="res://scripts/components/PlayerDeathComponent.cs" id="13_7til7"]
|
||||
[ext_resource type="Script" uid="uid://cgfynrn68lp12" path="res://scripts/components/KnockbackComponent.cs" id="14_e5pae"]
|
||||
[ext_resource type="Script" uid="uid://cecelixl41t3j" path="res://scripts/components/InvulnerabilityComponent.cs" id="15_xuhvf"]
|
||||
[ext_resource type="Resource" uid="uid://dw5ee2lpeypnb" path="res://resources/skills/brick_throw.tres" id="16_smbir"]
|
||||
[ext_resource type="Script" uid="uid://dvyd26ricriql" path="res://scripts/components/FlashingComponent.cs" id="16_uno3u"]
|
||||
[ext_resource type="Resource" uid="uid://2glvryih82t1" path="res://resources/skills/fire_brick.tres" id="17_6y5qu"]
|
||||
[ext_resource type="Script" uid="uid://dtg6115je7b5s" path="res://scripts/components/StompDamageComponent.cs" id="17_bl1gx"]
|
||||
[ext_resource type="Script" uid="uid://di572axt0c3s8" path="res://scripts/SkillManager.cs" id="18_6lsog"]
|
||||
[ext_resource type="AudioStream" uid="uid://duj2q0rqytaxg" path="res://sfx/jump.wav" id="18_pysae"]
|
||||
[ext_resource type="Resource" uid="uid://cx5fsbexblp60" path="res://resources/skills/ice_brick.tres" id="18_umfbf"]
|
||||
[ext_resource type="Resource" uid="uid://cdp8sex36vdq2" path="res://resources/skills/explosive_brick.tres" id="19_5wjb7"]
|
||||
[ext_resource type="AudioStream" uid="uid://bmfn6p88gy575" path="res://sfx/player_hurt.wav" id="19_7anly"]
|
||||
[ext_resource type="Script" uid="uid://dlh5xcv2sy82s" path="res://scripts/components/SkillUnlockedComponent.cs" id="19_gwc8i"]
|
||||
[ext_resource type="AudioStream" uid="uid://ycgtf6wj7mto" path="res://sfx/heal.wav" id="20_bptj5"]
|
||||
[ext_resource type="Script" uid="uid://cjqe428jwip6b" path="res://scripts/skill_manager.gd" id="20_ppfy7"]
|
||||
[ext_resource type="Script" uid="uid://bya240e627ti6" path="res://scripts/resources/skill_data.gd" id="21_d0oiv"]
|
||||
[ext_resource type="Resource" uid="uid://d3bjre2etov1n" path="res://resources/skills/magnetic.tres" id="22_vnsgd"]
|
||||
[ext_resource type="Script" uid="uid://bjsyeo1n7bsri" path="res://scripts/components/skill_unlocker_component.gd" id="23_qsv2c"]
|
||||
[ext_resource type="Script" uid="uid://bo506l4x0808e" path="res://scripts/components/HitComponent.cs" id="26_6n1ss"]
|
||||
[ext_resource type="Script" uid="uid://cjcc7fia15wu3" path="res://scripts/components/CanBeLaunchedComponent.cs" id="27_oefns"]
|
||||
[ext_resource type="PackedScene" uid="uid://bg76mtpcmfm2j" path="res://objects/ui/charging_bar_layer.tscn" id="28_3f5nm"]
|
||||
[ext_resource type="Script" uid="uid://cqau0810tjk4d" path="res://scripts/components/TriggerLeverComponent.cs" id="28_bnap0"]
|
||||
[ext_resource type="PackedScene" uid="uid://b12tppjkkqpt4" path="res://objects/fxs/hit_particles.tscn" id="28_jh5m0"]
|
||||
[ext_resource type="Script" uid="uid://dr3uv0j7n75s" path="res://scripts/components/ShipShooterComponent.cs" id="30_usc1p"]
|
||||
[ext_resource type="AudioStream" uid="uid://dyev46uqusimi" path="res://sfx/shoot.wav" id="32_x2b7c"]
|
||||
[ext_resource type="Script" uid="uid://d1ctdx52gskv1" path="res://scripts/components/ship_shooter.gd" id="34_gwc8i"]
|
||||
[ext_resource type="Script" uid="uid://dev2q1228otm2" path="res://scripts/UI/ChargeProgressBar.cs" id="34_o1ihh"]
|
||||
[ext_resource type="PackedScene" uid="uid://dtem8jgcyoqar" path="res://objects/entities/green_laser.tscn" id="36_oxudy"]
|
||||
[ext_resource type="Script" uid="uid://diw6opv6yutgi" path="res://scripts/components/KillPlayerOutOfScreenComponent.cs" id="37_qec3q"]
|
||||
[ext_resource type="Script" uid="uid://3qy7rm28q66a" path="res://scripts/components/ProgressiveDamageComponent.cs" id="38_dhjci"]
|
||||
@@ -89,7 +82,8 @@ collision_layer = 4
|
||||
collision_mask = 43
|
||||
script = ExtResource("1_yysbb")
|
||||
MovementTypes = Dictionary[String, NodePath]({
|
||||
"platform": NodePath("Movements/PlatformMovement")
|
||||
"platform": NodePath("Movements/PlatformMovement"),
|
||||
"ship": NodePath("Movements/ShipMovement")
|
||||
})
|
||||
ShipSprite = NodePath("Graphics/Ship")
|
||||
|
||||
@@ -206,12 +200,10 @@ Area = NodePath("../StompDamageArea")
|
||||
Root = NodePath("..")
|
||||
|
||||
[node name="SkillManager" type="Node" parent="."]
|
||||
script = ExtResource("20_ppfy7")
|
||||
available_skills = Array[ExtResource("21_d0oiv")]([ExtResource("22_vnsgd"), ExtResource("17_6y5qu"), ExtResource("16_smbir"), ExtResource("18_umfbf"), ExtResource("19_5wjb7")])
|
||||
script = ExtResource("18_6lsog")
|
||||
|
||||
[node name="SkillUnlockerComponent" type="Node" parent="." node_paths=PackedStringArray("skill_manager")]
|
||||
script = ExtResource("23_qsv2c")
|
||||
skill_manager = NodePath("../SkillManager")
|
||||
[node name="SkillUnlockerComponent" type="Node" parent="."]
|
||||
script = ExtResource("19_gwc8i")
|
||||
|
||||
[node name="HitComponent" type="Node" parent="." node_paths=PackedStringArray("Sprite", "Health", "HitFx")]
|
||||
script = ExtResource("26_6n1ss")
|
||||
@@ -250,22 +242,20 @@ bus = &"sfx"
|
||||
stream = ExtResource("32_x2b7c")
|
||||
bus = &"sfx"
|
||||
|
||||
[node name="ChargingBarLayer" parent="." node_paths=PackedStringArray("ProgressBar") instance=ExtResource("28_3f5nm")]
|
||||
[node name="ChargingBarLayer" parent="." instance=ExtResource("28_3f5nm")]
|
||||
offset_left = -17.0
|
||||
offset_top = -30.0
|
||||
offset_right = 23.0
|
||||
offset_bottom = -20.0
|
||||
script = ExtResource("34_o1ihh")
|
||||
ProgressBar = NodePath(".")
|
||||
|
||||
[node name="HitParticles" parent="." instance=ExtResource("28_jh5m0")]
|
||||
process_material = SubResource("ParticleProcessMaterial_lgb3u")
|
||||
|
||||
[node name="ShipShooter" type="Node" parent="." node_paths=PackedStringArray("bullet_spawn", "shoot_sfx")]
|
||||
script = ExtResource("34_gwc8i")
|
||||
bullet_scene = ExtResource("36_oxudy")
|
||||
bullet_spawn = NodePath("../Ship shoot spawn")
|
||||
shoot_sfx = NodePath("../sfx_shoot")
|
||||
[node name="ShipShooter" type="Node" parent="." node_paths=PackedStringArray("BulletSpawn", "ShootSfx")]
|
||||
script = ExtResource("30_usc1p")
|
||||
BulletScene = ExtResource("36_oxudy")
|
||||
BulletSpawn = NodePath("../Ship shoot spawn")
|
||||
ShootSfx = NodePath("../sfx_shoot")
|
||||
metadata/_custom_type_script = "uid://d1ctdx52gskv1"
|
||||
|
||||
[node name="Ship shoot spawn" type="Marker2D" parent="."]
|
||||
@@ -282,6 +272,7 @@ ScreenNotifier = NodePath("../VisibleOnScreenNotifier2D")
|
||||
HealthComponent = NodePath("../HealthComponent")
|
||||
|
||||
[node name="ProgressiveDamageComponent" type="Node" parent="." node_paths=PackedStringArray("HealthComponent", "Sprite", "PlatformMovement")]
|
||||
process_mode = 4
|
||||
script = ExtResource("38_dhjci")
|
||||
HealthComponent = NodePath("../HealthComponent")
|
||||
Sprite = NodePath("../Graphics/Root/Base")
|
||||
|
@@ -1,12 +1,12 @@
|
||||
[gd_scene load_steps=10 format=3 uid="uid://bhc7y4xugu4q7"]
|
||||
|
||||
[ext_resource type="Texture2D" uid="uid://djifxc5x0dyrw" path="res://sprites/ppc_tileset.png" id="1_w543f"]
|
||||
[ext_resource type="Script" uid="uid://dkmxhjtmu5xlb" path="res://scripts/components/damage_component.gd" id="2_ll0xw"]
|
||||
[ext_resource type="Script" uid="uid://cdnwrn8v05qhi" path="res://scripts/components/bullet_component.gd" id="3_keogl"]
|
||||
[ext_resource type="Script" uid="uid://1tnr46o1ib4u" path="res://scripts/components/out_of_screen_component.gd" id="4_lqg4f"]
|
||||
[ext_resource type="Script" uid="uid://bvsgg8lu0a8m6" path="res://scripts/components/lifetime_component.gd" id="5_qsc5m"]
|
||||
[ext_resource type="Script" uid="uid://873un8agkyja" path="res://scripts/components/launch_component.gd" id="6_6th6w"]
|
||||
[ext_resource type="Script" uid="uid://cvcnfrr1udco5" path="res://scripts/components/straight_motion_component.gd" id="7_e0mqp"]
|
||||
[ext_resource type="Script" uid="uid://2i7p7v135u7c" path="res://scripts/components/DamageComponent.cs" id="2_6th6w"]
|
||||
[ext_resource type="Script" uid="uid://cs6u3sh68f43j" path="res://scripts/components/OutOfScreenComponent.cs" id="3_e0mqp"]
|
||||
[ext_resource type="Script" uid="uid://oyf25mpc5etr" path="res://scripts/components/LifetimeComponent.cs" id="4_r4wv6"]
|
||||
[ext_resource type="Script" uid="uid://cbexrnnj47f87" path="res://scripts/components/LaunchComponent.cs" id="5_7bijt"]
|
||||
[ext_resource type="Script" uid="uid://c7p06t0eax8am" path="res://scripts/components/StraightMotionComponent.cs" id="6_lycw2"]
|
||||
[ext_resource type="Script" uid="uid://cfw8nbrarex0i" path="res://scripts/components/BulletComponent.cs" id="7_2aweg"]
|
||||
[ext_resource type="PackedScene" uid="uid://c1iorglk708g0" path="res://objects/fxs/terrain_hit_fx.tscn" id="8_6th6w"]
|
||||
|
||||
[sub_resource type="CircleShape2D" id="CircleShape2D_txsw8"]
|
||||
@@ -30,42 +30,37 @@ frame = 79
|
||||
position = Vector2(2.38419e-07, 2.38419e-07)
|
||||
scale = Vector2(0.4, 0.4)
|
||||
|
||||
[node name="DamageComponent" type="Node" parent="." node_paths=PackedStringArray("area2d")]
|
||||
script = ExtResource("2_ll0xw")
|
||||
area2d = NodePath("..")
|
||||
[node name="DamageComponent" type="Node" parent="." node_paths=PackedStringArray("Area", "DamageTimer")]
|
||||
script = ExtResource("2_6th6w")
|
||||
Area = NodePath("..")
|
||||
DamageTimer = NodePath("../Timer")
|
||||
|
||||
[node name="Timer" type="Timer" parent="."]
|
||||
wait_time = 5.0
|
||||
autostart = true
|
||||
|
||||
[node name="OutOfScreenComponent" type="Node" parent="." node_paths=PackedStringArray("visibility_notifier", "root")]
|
||||
script = ExtResource("4_lqg4f")
|
||||
visibility_notifier = NodePath("../VisibleOnScreenNotifier2D")
|
||||
root = NodePath("..")
|
||||
[node name="OutOfScreenComponent" type="Node" parent="." node_paths=PackedStringArray("VisibilityNotifier")]
|
||||
script = ExtResource("3_e0mqp")
|
||||
VisibilityNotifier = NodePath("../VisibleOnScreenNotifier2D")
|
||||
|
||||
[node name="LifetimeComponent" type="Node" parent="." node_paths=PackedStringArray("root", "timer")]
|
||||
script = ExtResource("5_qsc5m")
|
||||
root = NodePath("..")
|
||||
life_time = 10.0
|
||||
timer = NodePath("../Timer")
|
||||
[node name="LifetimeComponent" type="Node" parent="."]
|
||||
script = ExtResource("4_r4wv6")
|
||||
LifeTime = 10.0
|
||||
|
||||
[node name="LaunchComponent" type="Node2D" parent="." node_paths=PackedStringArray("root")]
|
||||
script = ExtResource("6_6th6w")
|
||||
root = NodePath("..")
|
||||
speed = 120.0
|
||||
[node name="LaunchComponent" type="Node2D" parent="."]
|
||||
script = ExtResource("5_7bijt")
|
||||
Speed = 120.0
|
||||
metadata/_custom_type_script = "uid://873un8agkyja"
|
||||
|
||||
[node name="StraightMotionComponent" type="Node" parent="." node_paths=PackedStringArray("root", "launch_component")]
|
||||
script = ExtResource("7_e0mqp")
|
||||
root = NodePath("..")
|
||||
launch_component = NodePath("../LaunchComponent")
|
||||
[node name="StraightMotionComponent" type="Node" parent="." node_paths=PackedStringArray("LaunchComponent")]
|
||||
script = ExtResource("6_lycw2")
|
||||
LaunchComponent = NodePath("../LaunchComponent")
|
||||
|
||||
[node name="BulletComponent" type="Node" parent="." node_paths=PackedStringArray("root", "area2d", "hit_terrain_fx", "bullet_sprite")]
|
||||
script = ExtResource("3_keogl")
|
||||
root = NodePath("..")
|
||||
area2d = NodePath("..")
|
||||
hit_terrain_fx = NodePath("../TerrainHitFX")
|
||||
bullet_sprite = NodePath("../Sprite2D")
|
||||
[node name="BulletComponent" type="Node" parent="." node_paths=PackedStringArray("Area", "TerrainHitFx", "BulletSprite")]
|
||||
script = ExtResource("7_2aweg")
|
||||
Area = NodePath("..")
|
||||
TerrainHitFx = NodePath("../TerrainHitFX")
|
||||
BulletSprite = NodePath("../Sprite2D")
|
||||
metadata/_custom_type_script = "uid://cdnwrn8v05qhi"
|
||||
|
||||
[node name="TerrainHitFX" parent="." instance=ExtResource("8_6th6w")]
|
||||
|
@@ -1,7 +1,7 @@
|
||||
[gd_scene load_steps=5 format=3 uid="uid://to2xnqev0pu1"]
|
||||
|
||||
[ext_resource type="Texture2D" uid="uid://djifxc5x0dyrw" path="res://sprites/ppc_tileset.png" id="1_5poh3"]
|
||||
[ext_resource type="Script" uid="uid://ddplvyjqguxtl" path="res://scripts/components/cage_component.gd" id="2_unomj"]
|
||||
[ext_resource type="Script" uid="uid://dojn0gw8hsv02" path="res://scripts/components/CageComponent.cs" id="2_in1f7"]
|
||||
|
||||
[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_aivtb"]
|
||||
texture = ExtResource("1_5poh3")
|
||||
@@ -23,7 +23,6 @@ position = Vector2(20, 4)
|
||||
tile_map_data = PackedByteArray(0, 0, 255, 255, 255, 255, 0, 0, 2, 0, 9, 0, 0, 0)
|
||||
tile_set = SubResource("TileSet_67qt2")
|
||||
|
||||
[node name="CageComponent" type="Node" parent="." node_paths=PackedStringArray("root")]
|
||||
script = ExtResource("2_unomj")
|
||||
root = NodePath("..")
|
||||
should_free = false
|
||||
[node name="CageComponent" type="Node" parent="."]
|
||||
script = ExtResource("2_in1f7")
|
||||
ShouldFree = false
|
||||
|
@@ -1,8 +1,8 @@
|
||||
[gd_scene load_steps=5 format=3 uid="uid://dstko446qydsc"]
|
||||
|
||||
[ext_resource type="Texture2D" uid="uid://djifxc5x0dyrw" path="res://sprites/ppc_tileset.png" id="1_6gptm"]
|
||||
[ext_resource type="Script" uid="uid://d01dmoafptl2p" path="res://scripts/components/destroyable_component.gd" id="2_2tib2"]
|
||||
[ext_resource type="Script" uid="uid://btfsq0bvtrx3t" path="res://scripts/components/health.gd" id="3_vevhj"]
|
||||
[ext_resource type="Script" uid="uid://ctfrbj52ejay4" path="res://scripts/components/DestroyableComponent.cs" id="2_q37h7"]
|
||||
[ext_resource type="Script" uid="uid://dgb8bqcri7nsj" path="res://scripts/components/HealthComponent.cs" id="3_bhwy3"]
|
||||
|
||||
[sub_resource type="RectangleShape2D" id="RectangleShape2D_j5sus"]
|
||||
size = Vector2(16, 16)
|
||||
@@ -15,13 +15,12 @@ hframes = 12
|
||||
vframes = 12
|
||||
frame = 42
|
||||
|
||||
[node name="DestroyableComponent" type="Node" parent="." node_paths=PackedStringArray("root", "health_component")]
|
||||
script = ExtResource("2_2tib2")
|
||||
root = NodePath("..")
|
||||
health_component = NodePath("../HealthComponent")
|
||||
[node name="DestroyableComponent" type="Node" parent="." node_paths=PackedStringArray("Health")]
|
||||
script = ExtResource("2_q37h7")
|
||||
Health = NodePath("../HealthComponent")
|
||||
|
||||
[node name="HealthComponent" type="Node" parent="."]
|
||||
script = ExtResource("3_vevhj")
|
||||
[node name="HealthComponent" type="Node2D" parent="."]
|
||||
script = ExtResource("3_bhwy3")
|
||||
|
||||
[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
|
||||
shape = SubResource("RectangleShape2D_j5sus")
|
||||
|
@@ -1,8 +1,8 @@
|
||||
[gd_scene load_steps=5 format=3 uid="uid://dfwpha0d18dmn"]
|
||||
|
||||
[ext_resource type="Texture2D" uid="uid://djifxc5x0dyrw" path="res://sprites/ppc_tileset.png" id="1_rwgpm"]
|
||||
[ext_resource type="Script" uid="uid://dkmxhjtmu5xlb" path="res://scripts/components/damage_component.gd" id="2_cprue"]
|
||||
[ext_resource type="Script" uid="uid://bejv75mi8npj0" path="res://scripts/components/beam_component.gd" id="3_jlh0s"]
|
||||
[ext_resource type="Script" uid="uid://2i7p7v135u7c" path="res://scripts/components/DamageComponent.cs" id="2_hrj61"]
|
||||
[ext_resource type="Script" uid="uid://df1llrbm80e02" path="res://scripts/components/BeamComponent.cs" id="3_hrj61"]
|
||||
|
||||
[sub_resource type="RectangleShape2D" id="RectangleShape2D_ptfn7"]
|
||||
size = Vector2(8, 16)
|
||||
@@ -20,13 +20,14 @@ region_rect = Rect2(176, 64, 16, 16)
|
||||
[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
|
||||
shape = SubResource("RectangleShape2D_ptfn7")
|
||||
|
||||
[node name="DamageComponent" type="Node" parent="." node_paths=PackedStringArray("area2d")]
|
||||
script = ExtResource("2_cprue")
|
||||
area2d = NodePath("..")
|
||||
[node name="DamageComponent" type="Node" parent="." node_paths=PackedStringArray("Area")]
|
||||
script = ExtResource("2_hrj61")
|
||||
Area = NodePath("..")
|
||||
|
||||
[node name="BeamComponent" type="Node2D" parent="." node_paths=PackedStringArray("root", "sprite2d", "collision_shape")]
|
||||
[node name="BeamComponent" type="Node2D" parent="." node_paths=PackedStringArray("Root", "Sprite", "CollisionShape")]
|
||||
position = Vector2(0, -8)
|
||||
script = ExtResource("3_jlh0s")
|
||||
root = NodePath("..")
|
||||
sprite2d = NodePath("../Sprite2D")
|
||||
collision_shape = NodePath("../CollisionShape2D")
|
||||
script = ExtResource("3_hrj61")
|
||||
ExpansionSpeed = 16.0
|
||||
Root = NodePath(".")
|
||||
Sprite = NodePath("../Sprite2D")
|
||||
CollisionShape = NodePath("../CollisionShape2D")
|
||||
|
@@ -1,8 +1,8 @@
|
||||
[gd_scene load_steps=5 format=3 uid="uid://d3lt4rhxduv44"]
|
||||
|
||||
[ext_resource type="Texture2D" uid="uid://djifxc5x0dyrw" path="res://sprites/ppc_tileset.png" id="1_l5x2w"]
|
||||
[ext_resource type="Script" uid="uid://dkmxhjtmu5xlb" path="res://scripts/components/damage_component.gd" id="2_mxy0q"]
|
||||
[ext_resource type="Script" uid="uid://bejv75mi8npj0" path="res://scripts/components/beam_component.gd" id="3_mcbof"]
|
||||
[ext_resource type="Script" uid="uid://2i7p7v135u7c" path="res://scripts/components/DamageComponent.cs" id="2_0kbpg"]
|
||||
[ext_resource type="Script" uid="uid://df1llrbm80e02" path="res://scripts/components/BeamComponent.cs" id="3_0kbpg"]
|
||||
|
||||
[sub_resource type="RectangleShape2D" id="RectangleShape2D_ptfn7"]
|
||||
size = Vector2(16, 8)
|
||||
@@ -22,14 +22,14 @@ region_filter_clip_enabled = true
|
||||
[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
|
||||
shape = SubResource("RectangleShape2D_ptfn7")
|
||||
|
||||
[node name="DamageComponent" type="Node" parent="." node_paths=PackedStringArray("area2d")]
|
||||
script = ExtResource("2_mxy0q")
|
||||
area2d = NodePath("..")
|
||||
[node name="DamageComponent" type="Node" parent="." node_paths=PackedStringArray("Area")]
|
||||
script = ExtResource("2_0kbpg")
|
||||
Area = NodePath("..")
|
||||
|
||||
[node name="BeamComponent" type="Node2D" parent="." node_paths=PackedStringArray("root", "sprite2d", "collision_shape")]
|
||||
[node name="BeamComponent" type="Node2D" parent="." node_paths=PackedStringArray("Root", "Sprite", "CollisionShape")]
|
||||
position = Vector2(8, 0)
|
||||
script = ExtResource("3_mcbof")
|
||||
direction = Vector2(-1, 0)
|
||||
root = NodePath("..")
|
||||
sprite2d = NodePath("../Sprite2D")
|
||||
collision_shape = NodePath("../CollisionShape2D")
|
||||
script = ExtResource("3_0kbpg")
|
||||
ExpansionSpeed = 16.0
|
||||
Root = NodePath("..")
|
||||
Sprite = NodePath("../Sprite2D")
|
||||
CollisionShape = NodePath("../CollisionShape2D")
|
||||
|
@@ -1,6 +1,6 @@
|
||||
[gd_scene load_steps=2 format=3 uid="uid://bon6raeddf3tu"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://cf4li7whw5old" path="res://scripts/components/chase_level_component.gd" id="1_ico16"]
|
||||
[ext_resource type="Script" uid="uid://dnpj72mfi1ywl" path="res://scripts/components/ChaseLevelComponent.cs" id="1_ico16"]
|
||||
|
||||
[node name="Chaser" type="Node2D"]
|
||||
|
||||
|
@@ -5,14 +5,14 @@
|
||||
[ext_resource type="Texture2D" uid="uid://iiawtnwmeny3" path="res://sprites/right_eye.png" id="3_k41y7"]
|
||||
[ext_resource type="Texture2D" uid="uid://8h05rd26t66q" path="res://sprites/lollipop.png" id="4_vq1oq"]
|
||||
[ext_resource type="Texture2D" uid="uid://dpbpjffbdbovp" path="res://sprites/cap.png" id="5_m7x6t"]
|
||||
[ext_resource type="Script" uid="uid://pa1bwc4no08q" path="res://scripts/components/collectable.gd" id="5_wc3ym"]
|
||||
[ext_resource type="Script" uid="uid://r4jybneigfcn" path="res://scripts/components/CollectableComponent.cs" id="6_rgif4"]
|
||||
[ext_resource type="Resource" uid="uid://b6apusc0jmi3x" path="res://resources/collectables/child.tres" id="6_vmvuo"]
|
||||
[ext_resource type="AudioStream" uid="uid://drfr0wlgkhkdq" path="res://sfx/child_pickup.wav" id="7_j8eyh"]
|
||||
|
||||
[sub_resource type="RectangleShape2D" id="RectangleShape2D_dj5g5"]
|
||||
size = Vector2(10, 20)
|
||||
|
||||
[node name="Child" type="Area2D"]
|
||||
[node name="Child" type="Area2D" groups=["Collectables"]]
|
||||
collision_layer = 0
|
||||
collision_mask = 4
|
||||
|
||||
@@ -45,12 +45,12 @@ texture = ExtResource("4_vq1oq")
|
||||
position = Vector2(4, -18)
|
||||
texture = ExtResource("5_m7x6t")
|
||||
|
||||
[node name="Collectable" type="Node" parent="." node_paths=PackedStringArray("area2d", "collision_shape", "sfx")]
|
||||
script = ExtResource("5_wc3ym")
|
||||
area2d = NodePath("..")
|
||||
collision_shape = NodePath("../CollisionShape2D")
|
||||
collectable_data = ExtResource("6_vmvuo")
|
||||
sfx = NodePath("../sfx_pickup")
|
||||
[node name="CollectableComponent" type="Node" parent="." node_paths=PackedStringArray("Area2D", "CollisionShape", "Sfx")]
|
||||
script = ExtResource("6_rgif4")
|
||||
Area2D = NodePath("..")
|
||||
CollisionShape = NodePath("../CollisionShape2D")
|
||||
Data = ExtResource("6_vmvuo")
|
||||
Sfx = NodePath("../sfx_pickup")
|
||||
|
||||
[node name="sfx_pickup" type="AudioStreamPlayer2D" parent="."]
|
||||
stream = ExtResource("7_j8eyh")
|
||||
|
@@ -1,15 +1,15 @@
|
||||
[gd_scene load_steps=7 format=3 uid="uid://54w4wisfj8v8"]
|
||||
|
||||
[ext_resource type="Texture2D" uid="uid://djifxc5x0dyrw" path="res://sprites/ppc_tileset.png" id="1_epuj5"]
|
||||
[ext_resource type="Script" uid="uid://pa1bwc4no08q" path="res://scripts/components/collectable.gd" id="2_y0k47"]
|
||||
[ext_resource type="Script" uid="uid://r4jybneigfcn" path="res://scripts/components/CollectableComponent.cs" id="2_gxix7"]
|
||||
[ext_resource type="Resource" uid="uid://vql535ckoeqm" path="res://resources/collectables/coin.tres" id="3_fm2fq"]
|
||||
[ext_resource type="Script" uid="uid://bg75hnr3q6grk" path="res://scripts/components/fade_away.gd" id="4_fx1h2"]
|
||||
[ext_resource type="Script" uid="uid://bjln6jb1sigx2" path="res://scripts/components/FadeAwayComponent.cs" id="4_gxix7"]
|
||||
[ext_resource type="AudioStream" uid="uid://dpyr80hk4kebc" path="res://sfx/pickup_coin_1.wav" id="5_4jc2c"]
|
||||
|
||||
[sub_resource type="CircleShape2D" id="CircleShape2D_3ask2"]
|
||||
radius = 9.0
|
||||
|
||||
[node name="Coin" type="Area2D"]
|
||||
[node name="Coin" type="Area2D" groups=["coins"]]
|
||||
collision_layer = 2
|
||||
collision_mask = 4
|
||||
|
||||
@@ -22,19 +22,18 @@ hframes = 12
|
||||
vframes = 12
|
||||
frame = 51
|
||||
|
||||
[node name="Collectable" type="Node" parent="." node_paths=PackedStringArray("area2d", "collision_shape", "sfx") groups=["coins"]]
|
||||
script = ExtResource("2_y0k47")
|
||||
area2d = NodePath("..")
|
||||
collision_shape = NodePath("../CollisionShape2D")
|
||||
collectable_data = ExtResource("3_fm2fq")
|
||||
sfx = NodePath("../sfx")
|
||||
[node name="CollectableComponent" type="Node" parent="." node_paths=PackedStringArray("Area2D", "CollisionShape", "Sfx")]
|
||||
script = ExtResource("2_gxix7")
|
||||
Area2D = NodePath("..")
|
||||
CollisionShape = NodePath("../CollisionShape2D")
|
||||
Data = ExtResource("3_fm2fq")
|
||||
Sfx = NodePath("../sfx")
|
||||
|
||||
[node name="FadeAwayComponent" type="Node" parent="." node_paths=PackedStringArray("sprite2d", "root", "area2d")]
|
||||
script = ExtResource("4_fx1h2")
|
||||
sprite2d = NodePath("../Sprite2D")
|
||||
fade_duration = 0.4
|
||||
root = NodePath("..")
|
||||
area2d = NodePath("..")
|
||||
[node name="FadeAwayComponent" type="Node" parent="." node_paths=PackedStringArray("Sprite", "Area")]
|
||||
script = ExtResource("4_gxix7")
|
||||
Sprite = NodePath("../Sprite2D")
|
||||
FadeDuration = 0.4
|
||||
Area = NodePath("..")
|
||||
|
||||
[node name="sfx" type="AudioStreamPlayer2D" parent="."]
|
||||
stream = ExtResource("5_4jc2c")
|
||||
|
@@ -1,7 +1,7 @@
|
||||
[gd_scene load_steps=5 format=3 uid="uid://c40r76qqacqie"]
|
||||
|
||||
[ext_resource type="Texture2D" uid="uid://cw42lvnqxubq2" path="res://sprites/PS_Tileset_10_nes.png" id="1_jmsgb"]
|
||||
[ext_resource type="Script" uid="uid://r0a6xjicrh74" path="res://scripts/components/collapsable.gd" id="2_cs5vh"]
|
||||
[ext_resource type="Script" uid="uid://xqhrb1c7f6y4" path="res://scripts/components/CollapsableComponent.cs" id="2_jmsgb"]
|
||||
|
||||
[sub_resource type="RectangleShape2D" id="RectangleShape2D_l44jt"]
|
||||
size = Vector2(16, 16)
|
||||
@@ -32,16 +32,15 @@ wait_time = 0.5
|
||||
|
||||
[node name="ResetTimer" type="Timer" parent="."]
|
||||
|
||||
[node name="CollapsableComponent" type="Node" parent="." node_paths=PackedStringArray("to_collapse_timer", "reset_timer", "sprite2d", "collision_shape")]
|
||||
script = ExtResource("2_cs5vh")
|
||||
to_collapse_timer = NodePath("../ToCollapseTimer")
|
||||
reset_timer = NodePath("../ResetTimer")
|
||||
sprite2d = NodePath("../Sprite2D")
|
||||
collision_shape = NodePath("../StaticCollisionShape2D")
|
||||
collapse_time = 0.75
|
||||
reset_time = 3.0
|
||||
[node name="CollapsableComponent" type="Node" parent="." node_paths=PackedStringArray("ToCollapseTimer", "ResetTimer", "Sprite2D", "CollisionShape")]
|
||||
script = ExtResource("2_jmsgb")
|
||||
ToCollapseTimer = NodePath("../ToCollapseTimer")
|
||||
ResetTimer = NodePath("../ResetTimer")
|
||||
Sprite2D = NodePath("../Sprite2D")
|
||||
CollisionShape = NodePath("../StaticCollisionShape2D")
|
||||
ResetTime = 1.0
|
||||
|
||||
[connection signal="body_entered" from="Collapsable detector" to="CollapsableComponent" method="_on_collapsable_detector_body_entered"]
|
||||
[connection signal="body_exited" from="Collapsable detector" to="CollapsableComponent" method="_on_collapsable_detector_body_exited"]
|
||||
[connection signal="body_entered" from="Collapsable detector" to="CollapsableComponent" method="OnCollapsableDetectorBodyEntered"]
|
||||
[connection signal="body_exited" from="Collapsable detector" to="CollapsableComponent" method="OnCollapsableDetectorBodyExited"]
|
||||
[connection signal="timeout" from="ToCollapseTimer" to="CollapsableComponent" method="_on_to_collapse_timer_timeout"]
|
||||
[connection signal="timeout" from="ResetTimer" to="CollapsableComponent" method="_on_reset_timer_timeout"]
|
||||
|
@@ -1,7 +1,7 @@
|
||||
[gd_scene load_steps=5 format=3 uid="uid://ct8fim6mduyl3"]
|
||||
|
||||
[ext_resource type="Texture2D" uid="uid://djifxc5x0dyrw" path="res://sprites/ppc_tileset.png" id="1_rka1x"]
|
||||
[ext_resource type="Script" uid="uid://r0a6xjicrh74" path="res://scripts/components/collapsable.gd" id="2_3vvum"]
|
||||
[ext_resource type="Script" uid="uid://xqhrb1c7f6y4" path="res://scripts/components/CollapsableComponent.cs" id="2_w33sr"]
|
||||
|
||||
[sub_resource type="RectangleShape2D" id="RectangleShape2D_l44jt"]
|
||||
size = Vector2(16, 4)
|
||||
@@ -34,16 +34,16 @@ wait_time = 0.5
|
||||
|
||||
[node name="ResetTimer" type="Timer" parent="."]
|
||||
|
||||
[node name="CollapsableComponent" type="Node" parent="." node_paths=PackedStringArray("to_collapse_timer", "reset_timer", "sprite2d", "collision_shape")]
|
||||
script = ExtResource("2_3vvum")
|
||||
to_collapse_timer = NodePath("../ToCollapseTimer")
|
||||
reset_timer = NodePath("../ResetTimer")
|
||||
sprite2d = NodePath("../Sprite2D")
|
||||
collision_shape = NodePath("../StaticCollisionShape2D")
|
||||
collapse_time = 0.75
|
||||
reset_time = 3.0
|
||||
[node name="CollapsableComponent" type="Node" parent="." node_paths=PackedStringArray("ToCollapseTimer", "ResetTimer", "Sprite2D", "CollisionShape")]
|
||||
script = ExtResource("2_w33sr")
|
||||
ToCollapseTimer = NodePath("../ToCollapseTimer")
|
||||
ResetTimer = NodePath("../ResetTimer")
|
||||
Sprite2D = NodePath("../Sprite2D")
|
||||
CollisionShape = NodePath("../StaticCollisionShape2D")
|
||||
CollapseTime = 0.75
|
||||
ResetTime = 3.0
|
||||
|
||||
[connection signal="body_entered" from="Collapsable detector" to="CollapsableComponent" method="_on_collapsable_detector_body_entered"]
|
||||
[connection signal="body_exited" from="Collapsable detector" to="CollapsableComponent" method="_on_collapsable_detector_body_exited"]
|
||||
[connection signal="body_entered" from="Collapsable detector" to="CollapsableComponent" method="OnCollapsableDetectorBodyEntered"]
|
||||
[connection signal="body_exited" from="Collapsable detector" to="CollapsableComponent" method="OnCollapsableDetectorBodyExited"]
|
||||
[connection signal="timeout" from="ToCollapseTimer" to="CollapsableComponent" method="_on_to_collapse_timer_timeout"]
|
||||
[connection signal="timeout" from="ResetTimer" to="CollapsableComponent" method="_on_reset_timer_timeout"]
|
||||
|
@@ -1,18 +1,19 @@
|
||||
[gd_scene load_steps=26 format=3 uid="uid://bwdlmualj6xbw"]
|
||||
[gd_scene load_steps=27 format=3 uid="uid://bwdlmualj6xbw"]
|
||||
|
||||
[ext_resource type="Shader" uid="uid://bs4xvm4qkurpr" path="res://shaders/hit_flash.tres" id="1_ep4yr"]
|
||||
[ext_resource type="Texture2D" uid="uid://cu72810eyk4dx" path="res://sprites/enemy-robot.png" id="2_hjtwe"]
|
||||
[ext_resource type="Script" uid="uid://btfsq0bvtrx3t" path="res://scripts/components/health.gd" id="2_o170m"]
|
||||
[ext_resource type="Script" uid="uid://dkmxhjtmu5xlb" path="res://scripts/components/damage_component.gd" id="4_4eajk"]
|
||||
[ext_resource type="Script" uid="uid://dmqpif5qhvri3" path="res://scripts/components/side_to_side_movement.gd" id="4_gbsq8"]
|
||||
[ext_resource type="Script" uid="uid://b37gqnycj6rtk" path="res://scripts/components/periodic_shooting.gd" id="5_m03v0"]
|
||||
[ext_resource type="Script" uid="uid://dqm371fysuk7i" path="res://scripts/components/enemy_death.gd" id="6_6p3gr"]
|
||||
[ext_resource type="Script" uid="uid://dqmbvuutd5c3c" path="res://scripts/components/flashing_component.gd" id="7_xsaiy"]
|
||||
[ext_resource type="Script" uid="uid://ceq8n7yw7qxpi" path="res://scripts/components/hit_component.gd" id="9_0qjr4"]
|
||||
[ext_resource type="Script" uid="uid://c07d50s20rl8s" path="res://scripts/components/status_effect_component.gd" id="10_5i27q"]
|
||||
[ext_resource type="Script" uid="uid://qi2irprbqru2" path="res://scripts/components/fire_effect_component.gd" id="10_ej8vg"]
|
||||
[ext_resource type="Script" uid="uid://dhj4qtwcqmqkj" path="res://scripts/components/ice_effect_component.gd" id="11_pq0k7"]
|
||||
[ext_resource type="Script" uid="uid://dgb8bqcri7nsj" path="res://scripts/components/HealthComponent.cs" id="3_pxaaa"]
|
||||
[ext_resource type="Script" uid="uid://2i7p7v135u7c" path="res://scripts/components/DamageComponent.cs" id="4_xku20"]
|
||||
[ext_resource type="Script" uid="uid://d2hrr8fruho1d" path="res://scripts/components/SideToSideMovementComponent.cs" id="5_5lji2"]
|
||||
[ext_resource type="Script" uid="uid://bnaxy8cw3wrko" path="res://scripts/components/PeriodicShootingComponent.cs" id="6_lgbyy"]
|
||||
[ext_resource type="PackedScene" uid="uid://bhc7y4xugu4q7" path="res://objects/entities/bullet.tscn" id="7_r48kf"]
|
||||
[ext_resource type="Script" uid="uid://cfdugoeduudar" path="res://scripts/components/EnemyDeathComponent.cs" id="8_pxaaa"]
|
||||
[ext_resource type="Script" uid="uid://dvyd26ricriql" path="res://scripts/components/FlashingComponent.cs" id="9_xku20"]
|
||||
[ext_resource type="Script" uid="uid://bo506l4x0808e" path="res://scripts/components/HitComponent.cs" id="10_5lji2"]
|
||||
[ext_resource type="Script" uid="uid://t8rsvwdwt8ea" path="res://scripts/components/StatusEffectComponent.cs" id="11_lgbyy"]
|
||||
[ext_resource type="Script" uid="uid://cxuig4xh8nfov" path="res://scripts/components/FireEffectComponent.cs" id="12_pxaaa"]
|
||||
[ext_resource type="AudioStream" uid="uid://b3tsqhr06pbrs" path="res://sfx/enemy_hurt.wav" id="13_u4k3d"]
|
||||
[ext_resource type="Script" uid="uid://d1388lhp2gpgr" path="res://scripts/components/IceEffectComponent.cs" id="13_xku20"]
|
||||
[ext_resource type="AudioStream" uid="uid://dyev46uqusimi" path="res://sfx/shoot.wav" id="14_tdjks"]
|
||||
[ext_resource type="PackedScene" uid="uid://dx80ivlvuuew4" path="res://objects/fxs/fire_fx.tscn" id="15_mc6rj"]
|
||||
[ext_resource type="PackedScene" uid="uid://ck6nml06tm6ue" path="res://objects/fxs/ice_fx.tscn" id="16_68hnm"]
|
||||
@@ -77,38 +78,37 @@ position = Vector2(16, 7)
|
||||
[node name="left bullet spawn" type="Node2D" parent="Sprite2D"]
|
||||
position = Vector2(-17, 7)
|
||||
|
||||
[node name="HealthComponent" type="Node" parent="." node_paths=PackedStringArray("hurt_fx")]
|
||||
script = ExtResource("2_o170m")
|
||||
hurt_fx = NodePath("../sfx_hurt")
|
||||
[node name="HealthComponent" type="Node2D" parent="." node_paths=PackedStringArray("HurtSfx")]
|
||||
script = ExtResource("3_pxaaa")
|
||||
HurtSfx = NodePath("../sfx_hurt")
|
||||
|
||||
[node name="DamageComponent" type="Node" parent="." node_paths=PackedStringArray("area2d")]
|
||||
script = ExtResource("4_4eajk")
|
||||
area2d = NodePath("../Hitbox")
|
||||
[node name="DamageComponent" type="Node" parent="." node_paths=PackedStringArray("Area")]
|
||||
script = ExtResource("4_xku20")
|
||||
Area = NodePath("../Hitbox")
|
||||
|
||||
[node name="SideToSideMovement" type="Node" parent="." node_paths=PackedStringArray("root", "sprite2d", "left_ray", "right_ray", "left_wall_ray", "right_wall_ray")]
|
||||
script = ExtResource("4_gbsq8")
|
||||
root = NodePath("..")
|
||||
sprite2d = NodePath("../Sprite2D")
|
||||
speed = 60.0
|
||||
wait_time = 0.5
|
||||
left_ray = NodePath("../Left Ray")
|
||||
right_ray = NodePath("../Right Ray")
|
||||
left_wall_ray = NodePath("../Left Wall Ray")
|
||||
right_wall_ray = NodePath("../Right Wall Ray")
|
||||
[node name="SideToSideMovement" type="Node" parent="." node_paths=PackedStringArray("Sprite", "LeftRay", "RightRay", "LeftWallRay", "RightWallRay")]
|
||||
script = ExtResource("5_5lji2")
|
||||
Sprite = NodePath("../Sprite2D")
|
||||
Speed = 60.0
|
||||
WaitTime = 0.5
|
||||
LeftRay = NodePath("../Left Ray")
|
||||
RightRay = NodePath("../Right Ray")
|
||||
LeftWallRay = NodePath("../Left Wall Ray")
|
||||
RightWallRay = NodePath("../Right Wall Ray")
|
||||
|
||||
[node name="PeriodicShootingComponent" type="Node" parent="." node_paths=PackedStringArray("side_to_side_movement", "root", "bullet_spawn_right", "bullet_spawn_left")]
|
||||
script = ExtResource("5_m03v0")
|
||||
side_to_side_movement = NodePath("../SideToSideMovement")
|
||||
root = NodePath("..")
|
||||
bullet_spawn_right = NodePath("../Sprite2D/right bullet spawn")
|
||||
bullet_spawn_left = NodePath("../Sprite2D/left bullet spawn")
|
||||
[node name="PeriodicShootingComponent" type="Node" parent="." node_paths=PackedStringArray("SideToSideMovement", "BulletSpawnRight", "BulletSpawnLeft")]
|
||||
script = ExtResource("6_lgbyy")
|
||||
BulletScene = ExtResource("7_r48kf")
|
||||
SideToSideMovement = NodePath("../SideToSideMovement")
|
||||
BulletSpawnRight = NodePath("../Sprite2D/right bullet spawn")
|
||||
BulletSpawnLeft = NodePath("../Sprite2D/left bullet spawn")
|
||||
ShootingIntervalVariation = 0.1
|
||||
|
||||
[node name="EnemyDeathComponent" type="Node" parent="." node_paths=PackedStringArray("root", "collision_shape_2d", "health_component")]
|
||||
script = ExtResource("6_6p3gr")
|
||||
root = NodePath("..")
|
||||
tween_duration = 0.1
|
||||
collision_shape_2d = NodePath("../Hitbox/CollisionShape2D")
|
||||
health_component = NodePath("../HealthComponent")
|
||||
[node name="EnemyDeathComponent" type="Node" parent="." node_paths=PackedStringArray("CollisionShape", "Health")]
|
||||
script = ExtResource("8_pxaaa")
|
||||
TweenDuration = 0.1
|
||||
CollisionShape = NodePath("../Hitbox/CollisionShape2D")
|
||||
Health = NodePath("../HealthComponent")
|
||||
|
||||
[node name="Hitbox" type="Area2D" parent="."]
|
||||
collision_layer = 8
|
||||
@@ -136,33 +136,32 @@ target_position = Vector2(0, 8)
|
||||
position = Vector2(16, 0)
|
||||
target_position = Vector2(8, 0)
|
||||
|
||||
[node name="FlashingComponent" type="Node" parent="." node_paths=PackedStringArray("sprite", "health_component")]
|
||||
[node name="FlashingComponent" type="Node" parent="." node_paths=PackedStringArray("Sprite", "HealthComponent")]
|
||||
process_mode = 3
|
||||
script = ExtResource("7_xsaiy")
|
||||
sprite = NodePath("../Sprite2D")
|
||||
health_component = NodePath("../HealthComponent")
|
||||
script = ExtResource("9_xku20")
|
||||
Sprite = NodePath("../Sprite2D")
|
||||
HealthComponent = NodePath("../HealthComponent")
|
||||
|
||||
[node name="HitComponent" type="Node" parent="." node_paths=PackedStringArray("sprite", "health_component", "hit_fx")]
|
||||
script = ExtResource("9_0qjr4")
|
||||
sprite = NodePath("../Sprite2D")
|
||||
health_component = NodePath("../HealthComponent")
|
||||
hit_fx = NodePath("../HitParticles")
|
||||
[node name="HitComponent" type="Node" parent="." node_paths=PackedStringArray("Sprite", "Health", "HitFx")]
|
||||
script = ExtResource("10_5lji2")
|
||||
Sprite = NodePath("../Sprite2D")
|
||||
Health = NodePath("../HealthComponent")
|
||||
HitFx = NodePath("../HitParticles")
|
||||
|
||||
[node name="StatusEffectComponent" type="Node" parent="."]
|
||||
script = ExtResource("10_5i27q")
|
||||
script = ExtResource("11_lgbyy")
|
||||
|
||||
[node name="FireEffectComponent" type="Node" parent="." node_paths=PackedStringArray("health_component", "status_effect_component", "root", "fire_fx")]
|
||||
script = ExtResource("10_ej8vg")
|
||||
health_component = NodePath("../HealthComponent")
|
||||
status_effect_component = NodePath("../StatusEffectComponent")
|
||||
root = NodePath("..")
|
||||
fire_fx = NodePath("../FireFX")
|
||||
[node name="FireEffectComponent" type="Node" parent="." node_paths=PackedStringArray("Health", "StatusEffectComponent", "FireFX")]
|
||||
script = ExtResource("12_pxaaa")
|
||||
Health = NodePath("../HealthComponent")
|
||||
StatusEffectComponent = NodePath("../StatusEffectComponent")
|
||||
FireFX = NodePath("../FireFX")
|
||||
|
||||
[node name="IceEffectComponent" type="Node" parent="." node_paths=PackedStringArray("status_effect_component", "ice_fx")]
|
||||
script = ExtResource("11_pq0k7")
|
||||
components_to_disable = [NodePath("../SideToSideMovement"), NodePath("../PeriodicShootingComponent"), NodePath("../DamageComponent")]
|
||||
status_effect_component = NodePath("../StatusEffectComponent")
|
||||
ice_fx = NodePath("../Ice FX")
|
||||
[node name="IceEffectComponent" type="Node" parent="." node_paths=PackedStringArray("ComponentsToDisable", "StatusEffectComponent", "IceFx")]
|
||||
script = ExtResource("13_xku20")
|
||||
ComponentsToDisable = [NodePath("../SideToSideMovement"), NodePath("../PeriodicShootingComponent"), NodePath("../DamageComponent")]
|
||||
StatusEffectComponent = NodePath("../StatusEffectComponent")
|
||||
IceFx = NodePath("../Ice FX")
|
||||
|
||||
[node name="sfx_hurt" type="AudioStreamPlayer2D" parent="."]
|
||||
stream = ExtResource("13_u4k3d")
|
||||
|
@@ -1,9 +1,9 @@
|
||||
[gd_scene load_steps=6 format=3 uid="uid://12jnkdygpxwc"]
|
||||
|
||||
[ext_resource type="Texture2D" uid="uid://djifxc5x0dyrw" path="res://sprites/ppc_tileset.png" id="1_agxwm"]
|
||||
[ext_resource type="Script" uid="uid://cmh8k0rdsyh7j" path="res://scripts/components/requirement_component.gd" id="2_iysc1"]
|
||||
[ext_resource type="Script" uid="uid://c8xhgkg8gcqu6" path="res://scripts/components/unlock_on_requirement_component.gd" id="3_5ktpq"]
|
||||
[ext_resource type="Script" uid="uid://bwamqffvpa452" path="res://scripts/components/exit_door_component.gd" id="4_4jgt0"]
|
||||
[ext_resource type="Script" uid="uid://dnh0mekg2vqxi" path="res://scripts/components/RequirementComponent.cs" id="2_ed7mh"]
|
||||
[ext_resource type="Script" uid="uid://gwr4eajx8j50" path="res://scripts/components/UnlockOnRequirementComponent.cs" id="3_ed7mh"]
|
||||
[ext_resource type="Script" uid="uid://c5mhwlyvfuaip" path="res://scripts/components/ExitDoorComponent.cs" id="4_06sog"]
|
||||
|
||||
[sub_resource type="RectangleShape2D" id="RectangleShape2D_yfu6m"]
|
||||
size = Vector2(28, 32)
|
||||
@@ -25,19 +25,19 @@ position = Vector2(0, -8)
|
||||
shape = SubResource("RectangleShape2D_yfu6m")
|
||||
|
||||
[node name="RequirementComponent" type="Node" parent="."]
|
||||
script = ExtResource("2_iysc1")
|
||||
requirement_type = 1
|
||||
script = ExtResource("2_ed7mh")
|
||||
RequirementType = 1
|
||||
metadata/_custom_type_script = "uid://cmh8k0rdsyh7j"
|
||||
|
||||
[node name="UnlockOnRequirementComponent" type="Node" parent="." node_paths=PackedStringArray("requirement_component", "unlock_target")]
|
||||
script = ExtResource("3_5ktpq")
|
||||
requirement_component = NodePath("../RequirementComponent")
|
||||
unlock_target = NodePath("../ExitDoorComponent")
|
||||
[node name="UnlockOnRequirementComponent" type="Node" parent="." node_paths=PackedStringArray("RequirementComponent", "UnlockTarget")]
|
||||
script = ExtResource("3_ed7mh")
|
||||
RequirementComponent = NodePath("../RequirementComponent")
|
||||
UnlockTarget = NodePath("../ExitDoorComponent")
|
||||
metadata/_custom_type_script = "uid://c8xhgkg8gcqu6"
|
||||
|
||||
[node name="ExitDoorComponent" type="Node" parent="." node_paths=PackedStringArray("exit_area", "door_sprite")]
|
||||
script = ExtResource("4_4jgt0")
|
||||
exit_area = NodePath("..")
|
||||
door_sprite = NodePath("../Sprite2D")
|
||||
opened_door_frame = 88
|
||||
[node name="ExitDoorComponent" type="Node" parent="." node_paths=PackedStringArray("ExitArea", "DoorSprite")]
|
||||
script = ExtResource("4_06sog")
|
||||
ExitArea = NodePath("..")
|
||||
DoorSprite = NodePath("../Sprite2D")
|
||||
OpenedDoorFrame = 88
|
||||
metadata/_custom_type_script = "uid://bwamqffvpa452"
|
||||
|
@@ -1,13 +1,13 @@
|
||||
[gd_scene load_steps=12 format=3 uid="uid://5surx230gfw3"]
|
||||
|
||||
[ext_resource type="Texture2D" uid="uid://djifxc5x0dyrw" path="res://sprites/ppc_tileset.png" id="1_rcgxf"]
|
||||
[ext_resource type="Script" uid="uid://dkmxhjtmu5xlb" path="res://scripts/components/damage_component.gd" id="3_y0uai"]
|
||||
[ext_resource type="Script" uid="uid://beg4dk7d5pvhp" path="res://scripts/components/explosive_component.gd" id="4_8lw0n"]
|
||||
[ext_resource type="Script" uid="uid://2i7p7v135u7c" path="res://scripts/components/DamageComponent.cs" id="2_nqeob"]
|
||||
[ext_resource type="Script" uid="uid://7uttgdr6cr5y" path="res://scripts/components/ExplosiveComponent.cs" id="3_a2b5x"]
|
||||
[ext_resource type="PackedScene" uid="uid://dyp4i4ru2j2jh" path="res://objects/fxs/explosion_fx.tscn" id="5_6oopj"]
|
||||
[ext_resource type="Script" uid="uid://873un8agkyja" path="res://scripts/components/launch_component.gd" id="7_a2b5x"]
|
||||
[ext_resource type="Script" uid="uid://bvsgg8lu0a8m6" path="res://scripts/components/lifetime_component.gd" id="7_nqeob"]
|
||||
[ext_resource type="Script" uid="uid://c2gbumw4x4t1v" path="res://scripts/components/gravity_motion_component.gd" id="8_4ly8b"]
|
||||
[ext_resource type="Script" uid="uid://bgty7040ams6s" path="res://scripts/components/projectile_init_component.gd" id="8_nqeob"]
|
||||
[ext_resource type="Script" uid="uid://oyf25mpc5etr" path="res://scripts/components/LifetimeComponent.cs" id="5_nqeob"]
|
||||
[ext_resource type="Script" uid="uid://cbexrnnj47f87" path="res://scripts/components/LaunchComponent.cs" id="6_a2b5x"]
|
||||
[ext_resource type="Script" uid="uid://cwi5qashdag1g" path="res://scripts/components/GravityMotionComponent.cs" id="7_4ly8b"]
|
||||
[ext_resource type="Script" uid="uid://c7n6ecsobohjn" path="res://scripts/components/ProjectileInitComponent.cs" id="8_nqeob"]
|
||||
|
||||
[sub_resource type="RectangleShape2D" id="RectangleShape2D_ar0xf"]
|
||||
size = Vector2(16, 10)
|
||||
@@ -37,19 +37,17 @@ scale = Vector2(0.8, 0.5)
|
||||
|
||||
[node name="Timer" type="Timer" parent="."]
|
||||
|
||||
[node name="DamageComponent" type="Node" parent="." node_paths=PackedStringArray("area2d", "damage_timer")]
|
||||
script = ExtResource("3_y0uai")
|
||||
damage = 5.0
|
||||
area2d = NodePath("../Explosion area")
|
||||
damage_timer = NodePath("../Timer")
|
||||
[node name="DamageComponent" type="Node" parent="." node_paths=PackedStringArray("DamageTimer")]
|
||||
script = ExtResource("2_nqeob")
|
||||
Damage = 5.0
|
||||
DamageTimer = NodePath("../Timer")
|
||||
|
||||
[node name="ExplosiveComponent" type="Node" parent="." node_paths=PackedStringArray("root", "damage", "area2d", "explosion_area2d")]
|
||||
script = ExtResource("4_8lw0n")
|
||||
root = NodePath("..")
|
||||
damage = NodePath("../DamageComponent")
|
||||
area2d = NodePath("../BulletArea")
|
||||
explosion_area2d = NodePath("../Explosion area")
|
||||
explosion_effect = ExtResource("5_6oopj")
|
||||
[node name="ExplosiveComponent" type="Node" parent="." node_paths=PackedStringArray("Damage", "Area", "ExplodeArea")]
|
||||
script = ExtResource("3_a2b5x")
|
||||
Damage = NodePath("../DamageComponent")
|
||||
Area = NodePath("../BulletArea")
|
||||
ExplodeArea = NodePath("../Explosion area")
|
||||
ExplosionEffect = ExtResource("5_6oopj")
|
||||
|
||||
[node name="Explosion area" type="Area2D" parent="."]
|
||||
collision_layer = 0
|
||||
@@ -62,22 +60,20 @@ debug_color = Color(0.919034, 6.36289e-05, 0.69998, 0.42)
|
||||
[node name="ExplosionFX" parent="." instance=ExtResource("5_6oopj")]
|
||||
randomness = 0.24
|
||||
|
||||
[node name="LifetimeComponent" type="Node" parent="." node_paths=PackedStringArray("root", "timer")]
|
||||
script = ExtResource("7_nqeob")
|
||||
root = NodePath("..")
|
||||
life_time = 30.0
|
||||
timer = NodePath("../Timer")
|
||||
[node name="LifetimeComponent" type="Node" parent="."]
|
||||
script = ExtResource("5_nqeob")
|
||||
LifeTime = 30.0
|
||||
|
||||
[node name="LaunchComponent" type="Node2D" parent="." node_paths=PackedStringArray("root")]
|
||||
script = ExtResource("7_a2b5x")
|
||||
root = NodePath("..")
|
||||
speed = 240.0
|
||||
[node name="LaunchComponent" type="Node2D" parent="."]
|
||||
script = ExtResource("6_a2b5x")
|
||||
Speed = 240.0
|
||||
metadata/_custom_type_script = "uid://873un8agkyja"
|
||||
|
||||
[node name="GravityMotionComponent" type="Node2D" parent="." node_paths=PackedStringArray("character_body", "launch_component")]
|
||||
script = ExtResource("8_4ly8b")
|
||||
character_body = NodePath("..")
|
||||
launch_component = NodePath("../LaunchComponent")
|
||||
[node name="GravityMotionComponent" type="Node2D" parent="." node_paths=PackedStringArray("Body", "LaunchComponent")]
|
||||
script = ExtResource("7_4ly8b")
|
||||
Body = NodePath("..")
|
||||
LaunchComponent = NodePath("../LaunchComponent")
|
||||
Gravity = Vector2(0, 980)
|
||||
|
||||
[node name="BulletArea" type="Area2D" parent="."]
|
||||
collision_layer = 16
|
||||
@@ -85,7 +81,7 @@ collision_layer = 16
|
||||
[node name="CollisionShape2D" type="CollisionShape2D" parent="BulletArea"]
|
||||
shape = SubResource("RectangleShape2D_nqeob")
|
||||
|
||||
[node name="ProjectileInitComponent" type="Node" parent="." node_paths=PackedStringArray("launch_component")]
|
||||
[node name="ProjectileInitComponent" type="Node" parent="." node_paths=PackedStringArray("LaunchComponent")]
|
||||
script = ExtResource("8_nqeob")
|
||||
launch_component = NodePath("../LaunchComponent")
|
||||
LaunchComponent = NodePath("../LaunchComponent")
|
||||
metadata/_custom_type_script = "uid://bgty7040ams6s"
|
||||
|
@@ -1,14 +1,14 @@
|
||||
[gd_scene load_steps=11 format=3 uid="uid://daau4j5hbklk0"]
|
||||
|
||||
[ext_resource type="Texture2D" uid="uid://djifxc5x0dyrw" path="res://sprites/ppc_tileset.png" id="1_52l28"]
|
||||
[ext_resource type="Script" uid="uid://cdnwrn8v05qhi" path="res://scripts/components/bullet_component.gd" id="2_hjcob"]
|
||||
[ext_resource type="Script" uid="uid://dkmxhjtmu5xlb" path="res://scripts/components/damage_component.gd" id="3_sog2h"]
|
||||
[ext_resource type="Script" uid="uid://cfw8nbrarex0i" path="res://scripts/components/BulletComponent.cs" id="2_5ybdf"]
|
||||
[ext_resource type="Script" uid="uid://2i7p7v135u7c" path="res://scripts/components/DamageComponent.cs" id="3_b1kpf"]
|
||||
[ext_resource type="Resource" uid="uid://obodgnkhxuhe" path="res://resources/status_effect/fire.tres" id="4_xx5l4"]
|
||||
[ext_resource type="Script" uid="uid://d3brcje121krs" path="res://scripts/components/effect_inflictor_component.gd" id="5_ofrqk"]
|
||||
[ext_resource type="Script" uid="uid://1tnr46o1ib4u" path="res://scripts/components/out_of_screen_component.gd" id="6_64yur"]
|
||||
[ext_resource type="Script" uid="uid://873un8agkyja" path="res://scripts/components/launch_component.gd" id="7_hulun"]
|
||||
[ext_resource type="Script" uid="uid://cvcnfrr1udco5" path="res://scripts/components/straight_motion_component.gd" id="8_kift8"]
|
||||
[ext_resource type="Script" uid="uid://bgty7040ams6s" path="res://scripts/components/projectile_init_component.gd" id="9_5ybdf"]
|
||||
[ext_resource type="Script" uid="uid://xjq33vj0rol0" path="res://scripts/components/EffectInflictorComponent.cs" id="5_wfje1"]
|
||||
[ext_resource type="Script" uid="uid://cs6u3sh68f43j" path="res://scripts/components/OutOfScreenComponent.cs" id="6_666k7"]
|
||||
[ext_resource type="Script" uid="uid://cbexrnnj47f87" path="res://scripts/components/LaunchComponent.cs" id="7_67bn4"]
|
||||
[ext_resource type="Script" uid="uid://c7p06t0eax8am" path="res://scripts/components/StraightMotionComponent.cs" id="8_5ybdf"]
|
||||
[ext_resource type="Script" uid="uid://c7n6ecsobohjn" path="res://scripts/components/ProjectileInitComponent.cs" id="9_b1kpf"]
|
||||
|
||||
[sub_resource type="RectangleShape2D" id="RectangleShape2D_ar0xf"]
|
||||
size = Vector2(16, 10)
|
||||
@@ -26,10 +26,10 @@ hframes = 12
|
||||
vframes = 12
|
||||
frame = 80
|
||||
|
||||
[node name="BulletComponent" type="Node" parent="." node_paths=PackedStringArray("root", "area2d")]
|
||||
script = ExtResource("2_hjcob")
|
||||
root = NodePath("..")
|
||||
area2d = NodePath("..")
|
||||
[node name="BulletComponent" type="Node" parent="." node_paths=PackedStringArray("Area", "BulletSprite")]
|
||||
script = ExtResource("2_5ybdf")
|
||||
Area = NodePath("..")
|
||||
BulletSprite = NodePath("../Sprite2D")
|
||||
|
||||
[node name="VisibleOnScreenNotifier2D" type="VisibleOnScreenNotifier2D" parent="."]
|
||||
position = Vector2(0, 2.38419e-07)
|
||||
@@ -37,34 +37,31 @@ scale = Vector2(0.8, 0.5)
|
||||
|
||||
[node name="Timer" type="Timer" parent="."]
|
||||
|
||||
[node name="DamageComponent" type="Node" parent="." node_paths=PackedStringArray("area2d")]
|
||||
script = ExtResource("3_sog2h")
|
||||
damage = 0.1
|
||||
area2d = NodePath("..")
|
||||
status_effect_data = ExtResource("4_xx5l4")
|
||||
[node name="DamageComponent" type="Node" parent="." node_paths=PackedStringArray("Area", "DamageTimer")]
|
||||
script = ExtResource("3_b1kpf")
|
||||
Area = NodePath("..")
|
||||
StatusEffectData = ExtResource("4_xx5l4")
|
||||
DamageTimer = NodePath("../Timer")
|
||||
|
||||
[node name="EffectInflictorComponent" type="Node" parent="." node_paths=PackedStringArray("damage")]
|
||||
script = ExtResource("5_ofrqk")
|
||||
damage = NodePath("../DamageComponent")
|
||||
[node name="EffectInflictorComponent" type="Node" parent="." node_paths=PackedStringArray("Damage")]
|
||||
script = ExtResource("5_wfje1")
|
||||
Damage = NodePath("../DamageComponent")
|
||||
|
||||
[node name="OutOfScreenComponent" type="Node" parent="." node_paths=PackedStringArray("visibility_notifier", "root")]
|
||||
script = ExtResource("6_64yur")
|
||||
visibility_notifier = NodePath("../VisibleOnScreenNotifier2D")
|
||||
root = NodePath("..")
|
||||
[node name="OutOfScreenComponent" type="Node" parent="." node_paths=PackedStringArray("VisibilityNotifier")]
|
||||
script = ExtResource("6_666k7")
|
||||
VisibilityNotifier = NodePath("../VisibleOnScreenNotifier2D")
|
||||
|
||||
[node name="LaunchComponent" type="Node2D" parent="." node_paths=PackedStringArray("root")]
|
||||
script = ExtResource("7_hulun")
|
||||
root = NodePath("..")
|
||||
speed = 200.0
|
||||
[node name="LaunchComponent" type="Node2D" parent="."]
|
||||
script = ExtResource("7_67bn4")
|
||||
Speed = 200.0
|
||||
metadata/_custom_type_script = "uid://873un8agkyja"
|
||||
|
||||
[node name="StraightMotionComponent" type="Node" parent="." node_paths=PackedStringArray("root", "launch_component")]
|
||||
script = ExtResource("8_kift8")
|
||||
root = NodePath("..")
|
||||
launch_component = NodePath("../LaunchComponent")
|
||||
[node name="StraightMotionComponent" type="Node" parent="." node_paths=PackedStringArray("LaunchComponent")]
|
||||
script = ExtResource("8_5ybdf")
|
||||
LaunchComponent = NodePath("../LaunchComponent")
|
||||
metadata/_custom_type_script = "uid://cvcnfrr1udco5"
|
||||
|
||||
[node name="ProjectileInitComponent" type="Node" parent="." node_paths=PackedStringArray("launch_component")]
|
||||
script = ExtResource("9_5ybdf")
|
||||
launch_component = NodePath("../LaunchComponent")
|
||||
[node name="ProjectileInitComponent" type="Node" parent="." node_paths=PackedStringArray("LaunchComponent")]
|
||||
script = ExtResource("9_b1kpf")
|
||||
LaunchComponent = NodePath("../LaunchComponent")
|
||||
metadata/_custom_type_script = "uid://bgty7040ams6s"
|
||||
|
@@ -2,20 +2,20 @@
|
||||
|
||||
[ext_resource type="Texture2D" uid="uid://22k1u37j6k8y" path="res://sprites/flying_enemy.png" id="1_30hhw"]
|
||||
[ext_resource type="Shader" uid="uid://bs4xvm4qkurpr" path="res://shaders/hit_flash.tres" id="1_uyhuj"]
|
||||
[ext_resource type="Script" uid="uid://btfsq0bvtrx3t" path="res://scripts/components/health.gd" id="2_ivniq"]
|
||||
[ext_resource type="AudioStream" uid="uid://b3tsqhr06pbrs" path="res://sfx/enemy_hurt.wav" id="3_fd2du"]
|
||||
[ext_resource type="Script" uid="uid://dgb8bqcri7nsj" path="res://scripts/components/HealthComponent.cs" id="3_uyhuj"]
|
||||
[ext_resource type="AudioStream" uid="uid://dyev46uqusimi" path="res://sfx/shoot.wav" id="4_rhq76"]
|
||||
[ext_resource type="Script" uid="uid://dkmxhjtmu5xlb" path="res://scripts/components/damage_component.gd" id="5_cmp1h"]
|
||||
[ext_resource type="Script" uid="uid://b37gqnycj6rtk" path="res://scripts/components/periodic_shooting.gd" id="6_4ajjm"]
|
||||
[ext_resource type="Script" uid="uid://2i7p7v135u7c" path="res://scripts/components/DamageComponent.cs" id="6_q78ru"]
|
||||
[ext_resource type="PackedScene" uid="uid://t422jkov2t1b" path="res://objects/entities/red_laser.tscn" id="7_4ajjm"]
|
||||
[ext_resource type="Script" uid="uid://dqm371fysuk7i" path="res://scripts/components/enemy_death.gd" id="7_uyhuj"]
|
||||
[ext_resource type="Script" uid="uid://dqmbvuutd5c3c" path="res://scripts/components/flashing_component.gd" id="8_q78ru"]
|
||||
[ext_resource type="Script" uid="uid://ceq8n7yw7qxpi" path="res://scripts/components/hit_component.gd" id="9_weo6b"]
|
||||
[ext_resource type="Script" uid="uid://c07d50s20rl8s" path="res://scripts/components/status_effect_component.gd" id="10_6p4k7"]
|
||||
[ext_resource type="Script" uid="uid://qi2irprbqru2" path="res://scripts/components/fire_effect_component.gd" id="11_jmybk"]
|
||||
[ext_resource type="Script" uid="uid://dhj4qtwcqmqkj" path="res://scripts/components/ice_effect_component.gd" id="12_2yvae"]
|
||||
[ext_resource type="Script" uid="uid://bnaxy8cw3wrko" path="res://scripts/components/PeriodicShootingComponent.cs" id="7_weo6b"]
|
||||
[ext_resource type="Script" uid="uid://cfdugoeduudar" path="res://scripts/components/EnemyDeathComponent.cs" id="9_6p4k7"]
|
||||
[ext_resource type="Script" uid="uid://dvyd26ricriql" path="res://scripts/components/FlashingComponent.cs" id="10_jmybk"]
|
||||
[ext_resource type="Script" uid="uid://bo506l4x0808e" path="res://scripts/components/HitComponent.cs" id="11_2yvae"]
|
||||
[ext_resource type="Script" uid="uid://t8rsvwdwt8ea" path="res://scripts/components/StatusEffectComponent.cs" id="12_xlup2"]
|
||||
[ext_resource type="Script" uid="uid://cxuig4xh8nfov" path="res://scripts/components/FireEffectComponent.cs" id="13_mrjm6"]
|
||||
[ext_resource type="PackedScene" uid="uid://b12tppjkkqpt4" path="res://objects/fxs/hit_particles.tscn" id="13_xlup2"]
|
||||
[ext_resource type="PackedScene" uid="uid://dx80ivlvuuew4" path="res://objects/fxs/fire_fx.tscn" id="14_mrjm6"]
|
||||
[ext_resource type="Script" uid="uid://d1388lhp2gpgr" path="res://scripts/components/IceEffectComponent.cs" id="14_pkino"]
|
||||
[ext_resource type="PackedScene" uid="uid://ck6nml06tm6ue" path="res://objects/fxs/ice_fx.tscn" id="15_pkino"]
|
||||
|
||||
[sub_resource type="CapsuleShape2D" id="CapsuleShape2D_hil2i"]
|
||||
@@ -106,10 +106,9 @@ explosiveness = 0.5
|
||||
fixed_fps = 24
|
||||
process_material = SubResource("ParticleProcessMaterial_fd2du")
|
||||
|
||||
[node name="HealthComponent" type="Node" parent="." node_paths=PackedStringArray("hurt_fx")]
|
||||
script = ExtResource("2_ivniq")
|
||||
hurt_fx = NodePath("../sfx_hurt")
|
||||
metadata/_custom_type_script = "uid://btfsq0bvtrx3t"
|
||||
[node name="HealthComponent" type="Node2D" parent="." node_paths=PackedStringArray("HurtSfx")]
|
||||
script = ExtResource("3_uyhuj")
|
||||
HurtSfx = NodePath("../sfx_hurt")
|
||||
|
||||
[node name="sfx_hurt" type="AudioStreamPlayer2D" parent="."]
|
||||
stream = ExtResource("3_fd2du")
|
||||
@@ -119,53 +118,50 @@ bus = &"sfx"
|
||||
stream = ExtResource("4_rhq76")
|
||||
bus = &"sfx"
|
||||
|
||||
[node name="DamageComponent" type="Node" parent="." node_paths=PackedStringArray("area2d")]
|
||||
script = ExtResource("5_cmp1h")
|
||||
area2d = NodePath("../Hitbox")
|
||||
[node name="DamageComponent" type="Node" parent="." node_paths=PackedStringArray("Area")]
|
||||
script = ExtResource("6_q78ru")
|
||||
Area = NodePath("../Hitbox")
|
||||
|
||||
[node name="PeriodicShootingComponent" type="Node" parent="." node_paths=PackedStringArray("root", "bullet_spawn_right", "bullet_spawn_left")]
|
||||
script = ExtResource("6_4ajjm")
|
||||
bullet_scene = ExtResource("7_4ajjm")
|
||||
shoot_interval = 2.0
|
||||
root = NodePath("..")
|
||||
bullet_spawn_right = NodePath("../laser spawn point right")
|
||||
bullet_spawn_left = NodePath("../laser spawn point left")
|
||||
shooting_interval_variation = 0.5
|
||||
[node name="PeriodicShootingComponent" type="Node" parent="." node_paths=PackedStringArray("BulletSpawnRight", "BulletSpawnLeft")]
|
||||
script = ExtResource("7_weo6b")
|
||||
BulletScene = ExtResource("7_4ajjm")
|
||||
ShootInterval = 2.0
|
||||
BulletSpawnRight = NodePath("../laser spawn point right")
|
||||
BulletSpawnLeft = NodePath("../laser spawn point left")
|
||||
ShootingIntervalVariation = 0.5
|
||||
|
||||
[node name="EnemyDeathComponent" type="Node" parent="." node_paths=PackedStringArray("root", "collision_shape_2d", "health_component")]
|
||||
script = ExtResource("7_uyhuj")
|
||||
root = NodePath("..")
|
||||
tween_duration = 0.1
|
||||
collision_shape_2d = NodePath("../CollisionShape2D")
|
||||
health_component = NodePath("../HealthComponent")
|
||||
[node name="EnemyDeathComponent" type="Node" parent="." node_paths=PackedStringArray("CollisionShape", "Health")]
|
||||
script = ExtResource("9_6p4k7")
|
||||
TweenDuration = 0.1
|
||||
CollisionShape = NodePath("../CollisionShape2D")
|
||||
Health = NodePath("../HealthComponent")
|
||||
|
||||
[node name="FlashingComponent" type="Node" parent="." node_paths=PackedStringArray("sprite", "health_component")]
|
||||
[node name="FlashingComponent" type="Node" parent="." node_paths=PackedStringArray("Sprite", "HealthComponent")]
|
||||
process_mode = 3
|
||||
script = ExtResource("8_q78ru")
|
||||
sprite = NodePath("../Sprite2D")
|
||||
health_component = NodePath("../HealthComponent")
|
||||
script = ExtResource("10_jmybk")
|
||||
Sprite = NodePath("../Sprite2D")
|
||||
HealthComponent = NodePath("../HealthComponent")
|
||||
|
||||
[node name="HitComponent" type="Node" parent="." node_paths=PackedStringArray("sprite", "health_component", "hit_fx")]
|
||||
script = ExtResource("9_weo6b")
|
||||
sprite = NodePath("../Sprite2D")
|
||||
health_component = NodePath("../HealthComponent")
|
||||
hit_fx = NodePath("../HitParticles")
|
||||
[node name="HitComponent" type="Node" parent="." node_paths=PackedStringArray("Sprite", "Health", "HitFx")]
|
||||
script = ExtResource("11_2yvae")
|
||||
Sprite = NodePath("../Sprite2D")
|
||||
Health = NodePath("../HealthComponent")
|
||||
HitFx = NodePath("../HitParticles")
|
||||
|
||||
[node name="StatusEffectComponent" type="Node" parent="."]
|
||||
script = ExtResource("10_6p4k7")
|
||||
script = ExtResource("12_xlup2")
|
||||
|
||||
[node name="FireEffectComponent" type="Node" parent="." node_paths=PackedStringArray("health_component", "status_effect_component", "root", "fire_fx")]
|
||||
script = ExtResource("11_jmybk")
|
||||
health_component = NodePath("../HealthComponent")
|
||||
status_effect_component = NodePath("../StatusEffectComponent")
|
||||
root = NodePath("..")
|
||||
fire_fx = NodePath("../FireFX")
|
||||
[node name="FireEffectComponent" type="Node" parent="." node_paths=PackedStringArray("Health", "StatusEffectComponent", "FireFX")]
|
||||
script = ExtResource("13_mrjm6")
|
||||
Health = NodePath("../HealthComponent")
|
||||
StatusEffectComponent = NodePath("../StatusEffectComponent")
|
||||
FireFX = NodePath("../FireFX")
|
||||
|
||||
[node name="IceEffectComponent" type="Node" parent="." node_paths=PackedStringArray("status_effect_component", "ice_fx")]
|
||||
script = ExtResource("12_2yvae")
|
||||
components_to_disable = [NodePath("../PeriodicShootingComponent"), NodePath("../DamageComponent")]
|
||||
status_effect_component = NodePath("../StatusEffectComponent")
|
||||
ice_fx = NodePath("../Ice FX")
|
||||
[node name="IceEffectComponent" type="Node" parent="." node_paths=PackedStringArray("ComponentsToDisable", "StatusEffectComponent", "IceFx")]
|
||||
script = ExtResource("14_pkino")
|
||||
ComponentsToDisable = [NodePath("../PeriodicShootingComponent"), NodePath("../DamageComponent")]
|
||||
StatusEffectComponent = NodePath("../StatusEffectComponent")
|
||||
IceFx = NodePath("../Ice FX")
|
||||
|
||||
[node name="HitParticles" parent="." instance=ExtResource("13_xlup2")]
|
||||
position = Vector2(0, 1)
|
||||
|
@@ -1,13 +1,13 @@
|
||||
[gd_scene load_steps=10 format=3 uid="uid://dtem8jgcyoqar"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://dkmxhjtmu5xlb" path="res://scripts/components/damage_component.gd" id="1_nuljg"]
|
||||
[ext_resource type="Script" uid="uid://cdnwrn8v05qhi" path="res://scripts/components/bullet_component.gd" id="2_1gu8o"]
|
||||
[ext_resource type="Script" uid="uid://1tnr46o1ib4u" path="res://scripts/components/out_of_screen_component.gd" id="3_2vcrp"]
|
||||
[ext_resource type="Script" uid="uid://cvcnfrr1udco5" path="res://scripts/components/straight_motion_component.gd" id="4_2bmqm"]
|
||||
[ext_resource type="Script" uid="uid://873un8agkyja" path="res://scripts/components/launch_component.gd" id="5_772bd"]
|
||||
[ext_resource type="Script" uid="uid://bvsgg8lu0a8m6" path="res://scripts/components/lifetime_component.gd" id="6_vd16u"]
|
||||
[ext_resource type="Script" uid="uid://bgty7040ams6s" path="res://scripts/components/projectile_init_component.gd" id="7_1gu8o"]
|
||||
[ext_resource type="Script" uid="uid://bpy6xtfm8l3hy" path="res://scripts/components/trigger_lever_component.gd" id="8_2vcrp"]
|
||||
[ext_resource type="Script" uid="uid://2i7p7v135u7c" path="res://scripts/components/DamageComponent.cs" id="1_2vcrp"]
|
||||
[ext_resource type="Script" uid="uid://cfw8nbrarex0i" path="res://scripts/components/BulletComponent.cs" id="2_2bmqm"]
|
||||
[ext_resource type="Script" uid="uid://cs6u3sh68f43j" path="res://scripts/components/OutOfScreenComponent.cs" id="3_772bd"]
|
||||
[ext_resource type="Script" uid="uid://c7p06t0eax8am" path="res://scripts/components/StraightMotionComponent.cs" id="4_vd16u"]
|
||||
[ext_resource type="Script" uid="uid://cbexrnnj47f87" path="res://scripts/components/LaunchComponent.cs" id="5_8s1u3"]
|
||||
[ext_resource type="Script" uid="uid://oyf25mpc5etr" path="res://scripts/components/LifetimeComponent.cs" id="6_vuegc"]
|
||||
[ext_resource type="Script" uid="uid://c7n6ecsobohjn" path="res://scripts/components/ProjectileInitComponent.cs" id="7_kkqle"]
|
||||
[ext_resource type="Script" uid="uid://cqau0810tjk4d" path="res://scripts/components/TriggerLeverComponent.cs" id="8_g8he0"]
|
||||
|
||||
[sub_resource type="RectangleShape2D" id="RectangleShape2D_n4uav"]
|
||||
size = Vector2(16, 2)
|
||||
@@ -16,65 +16,59 @@ size = Vector2(16, 2)
|
||||
collision_layer = 16
|
||||
collision_mask = 9
|
||||
|
||||
[node name="DamageComponent" type="Node" parent="." node_paths=PackedStringArray("area2d")]
|
||||
script = ExtResource("1_nuljg")
|
||||
damage = 1.0
|
||||
area2d = NodePath("..")
|
||||
[node name="DamageComponent" type="Node" parent="." node_paths=PackedStringArray("Area")]
|
||||
script = ExtResource("1_2vcrp")
|
||||
Area = NodePath("..")
|
||||
metadata/_custom_type_script = "uid://dkmxhjtmu5xlb"
|
||||
|
||||
[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
|
||||
visible = false
|
||||
position = Vector2(8, -0.5)
|
||||
shape = SubResource("RectangleShape2D_n4uav")
|
||||
|
||||
[node name="Line2D" type="Line2D" parent="."]
|
||||
points = PackedVector2Array(0, 0, 16, 0)
|
||||
width = 2.0
|
||||
default_color = Color(0, 94.012, 1, 1)
|
||||
default_color = Color(0, 90, 0, 1)
|
||||
|
||||
[node name="BulletComponent" type="Node" parent="." node_paths=PackedStringArray("root", "area2d")]
|
||||
script = ExtResource("2_1gu8o")
|
||||
root = NodePath("..")
|
||||
area2d = NodePath("..")
|
||||
[node name="BulletComponent" type="Node" parent="." node_paths=PackedStringArray("Area")]
|
||||
script = ExtResource("2_2bmqm")
|
||||
Area = NodePath("..")
|
||||
metadata/_custom_type_script = "uid://cdnwrn8v05qhi"
|
||||
|
||||
[node name="OutOfScreenComponent" type="Node" parent="." node_paths=PackedStringArray("visibility_notifier", "root")]
|
||||
script = ExtResource("3_2vcrp")
|
||||
visibility_notifier = NodePath("../VisibleOnScreenNotifier2D")
|
||||
root = NodePath("..")
|
||||
[node name="OutOfScreenComponent" type="Node" parent="." node_paths=PackedStringArray("VisibilityNotifier")]
|
||||
script = ExtResource("3_772bd")
|
||||
VisibilityNotifier = NodePath("../VisibleOnScreenNotifier2D")
|
||||
metadata/_custom_type_script = "uid://1tnr46o1ib4u"
|
||||
|
||||
[node name="VisibleOnScreenNotifier2D" type="VisibleOnScreenNotifier2D" parent="."]
|
||||
position = Vector2(8, 0)
|
||||
scale = Vector2(0.8, 0.1)
|
||||
|
||||
[node name="StraightMotionComponent" type="Node" parent="." node_paths=PackedStringArray("root", "launch_component")]
|
||||
script = ExtResource("4_2bmqm")
|
||||
root = NodePath("..")
|
||||
launch_component = NodePath("../LaunchComponent")
|
||||
[node name="StraightMotionComponent" type="Node" parent="." node_paths=PackedStringArray("LaunchComponent")]
|
||||
script = ExtResource("4_vd16u")
|
||||
LaunchComponent = NodePath("../LaunchComponent")
|
||||
metadata/_custom_type_script = "uid://cvcnfrr1udco5"
|
||||
|
||||
[node name="LaunchComponent" type="Node2D" parent="." node_paths=PackedStringArray("root")]
|
||||
script = ExtResource("5_772bd")
|
||||
root = NodePath("..")
|
||||
speed = 320.0
|
||||
[node name="LaunchComponent" type="Node2D" parent="."]
|
||||
script = ExtResource("5_8s1u3")
|
||||
Speed = 320.0
|
||||
metadata/_custom_type_script = "uid://873un8agkyja"
|
||||
|
||||
[node name="LifetimeComponent" type="Node" parent="." node_paths=PackedStringArray("root", "timer")]
|
||||
script = ExtResource("6_vd16u")
|
||||
root = NodePath("..")
|
||||
life_time = 10.0
|
||||
timer = NodePath("../Timer")
|
||||
[node name="LifetimeComponent" type="Node" parent="."]
|
||||
script = ExtResource("6_vuegc")
|
||||
LifeTime = 10.0
|
||||
metadata/_custom_type_script = "uid://bvsgg8lu0a8m6"
|
||||
|
||||
[node name="Timer" type="Timer" parent="."]
|
||||
wait_time = 5.0
|
||||
autostart = true
|
||||
|
||||
[node name="ProjectileInitComponent" type="Node" parent="." node_paths=PackedStringArray("launch_component")]
|
||||
script = ExtResource("7_1gu8o")
|
||||
launch_component = NodePath("../LaunchComponent")
|
||||
[node name="ProjectileInitComponent" type="Node" parent="." node_paths=PackedStringArray("LaunchComponent")]
|
||||
script = ExtResource("7_kkqle")
|
||||
LaunchComponent = NodePath("../LaunchComponent")
|
||||
metadata/_custom_type_script = "uid://bgty7040ams6s"
|
||||
|
||||
[node name="TriggerLeverComponent" type="Node" parent="."]
|
||||
script = ExtResource("8_2vcrp")
|
||||
script = ExtResource("8_g8he0")
|
||||
metadata/_custom_type_script = "uid://bpy6xtfm8l3hy"
|
||||
|
@@ -1,13 +1,13 @@
|
||||
[gd_scene load_steps=13 format=3 uid="uid://jiv4e82ycwmq"]
|
||||
|
||||
[ext_resource type="Texture2D" uid="uid://djifxc5x0dyrw" path="res://sprites/ppc_tileset.png" id="1_bmfqy"]
|
||||
[ext_resource type="Script" uid="uid://dkmxhjtmu5xlb" path="res://scripts/components/damage_component.gd" id="2_id4r8"]
|
||||
[ext_resource type="Script" uid="uid://1tnr46o1ib4u" path="res://scripts/components/out_of_screen_component.gd" id="3_2uduj"]
|
||||
[ext_resource type="Script" uid="uid://bvsgg8lu0a8m6" path="res://scripts/components/lifetime_component.gd" id="4_x32ji"]
|
||||
[ext_resource type="Script" uid="uid://873un8agkyja" path="res://scripts/components/launch_component.gd" id="5_r3id6"]
|
||||
[ext_resource type="Script" uid="uid://cdnwrn8v05qhi" path="res://scripts/components/bullet_component.gd" id="7_8gqaa"]
|
||||
[ext_resource type="Script" uid="uid://be8jhvb8t3kif" path="res://scripts/components/homing_missile_motion.gd" id="7_bmfqy"]
|
||||
[ext_resource type="Script" uid="uid://c0bvan0swashx" path="res://scripts/components/trail_component.gd" id="8_id4r8"]
|
||||
[ext_resource type="Script" uid="uid://2i7p7v135u7c" path="res://scripts/components/DamageComponent.cs" id="2_id4r8"]
|
||||
[ext_resource type="Script" uid="uid://cs6u3sh68f43j" path="res://scripts/components/OutOfScreenComponent.cs" id="3_2uduj"]
|
||||
[ext_resource type="Script" uid="uid://oyf25mpc5etr" path="res://scripts/components/LifetimeComponent.cs" id="4_x32ji"]
|
||||
[ext_resource type="Script" uid="uid://cbexrnnj47f87" path="res://scripts/components/LaunchComponent.cs" id="5_id4r8"]
|
||||
[ext_resource type="Script" uid="uid://cfw8nbrarex0i" path="res://scripts/components/BulletComponent.cs" id="6_2uduj"]
|
||||
[ext_resource type="Script" uid="uid://c2hplha6af74q" path="res://scripts/components/HomingMissileMotionComponent.cs" id="7_x32ji"]
|
||||
[ext_resource type="Script" uid="uid://cqkh5e36p5fj0" path="res://scripts/components/TrailComponent.cs" id="8_id4r8"]
|
||||
|
||||
[sub_resource type="CircleShape2D" id="CircleShape2D_txsw8"]
|
||||
radius = 4.0
|
||||
@@ -41,47 +41,42 @@ frame = 79
|
||||
position = Vector2(2.38419e-07, 2.38419e-07)
|
||||
scale = Vector2(0.4, 0.4)
|
||||
|
||||
[node name="DamageComponent" type="Node" parent="." node_paths=PackedStringArray("area2d")]
|
||||
[node name="DamageComponent" type="Node" parent="." node_paths=PackedStringArray("Area")]
|
||||
script = ExtResource("2_id4r8")
|
||||
area2d = NodePath("..")
|
||||
Area = NodePath("..")
|
||||
|
||||
[node name="Timer" type="Timer" parent="."]
|
||||
wait_time = 5.0
|
||||
autostart = true
|
||||
|
||||
[node name="OutOfScreenComponent" type="Node" parent="." node_paths=PackedStringArray("visibility_notifier", "root")]
|
||||
[node name="OutOfScreenComponent" type="Node" parent="." node_paths=PackedStringArray("VisibilityNotifier")]
|
||||
script = ExtResource("3_2uduj")
|
||||
visibility_notifier = NodePath("../VisibleOnScreenNotifier2D")
|
||||
root = NodePath("..")
|
||||
VisibilityNotifier = NodePath("../VisibleOnScreenNotifier2D")
|
||||
|
||||
[node name="LifetimeComponent" type="Node" parent="." node_paths=PackedStringArray("root", "timer")]
|
||||
[node name="LifetimeComponent" type="Node" parent="."]
|
||||
script = ExtResource("4_x32ji")
|
||||
root = NodePath("..")
|
||||
life_time = 10.0
|
||||
timer = NodePath("../Timer")
|
||||
LifeTime = 10.0
|
||||
|
||||
[node name="LaunchComponent" type="Node2D" parent="." node_paths=PackedStringArray("root")]
|
||||
script = ExtResource("5_r3id6")
|
||||
root = NodePath("..")
|
||||
speed = 120.0
|
||||
[node name="LaunchComponent" type="Node2D" parent="."]
|
||||
script = ExtResource("5_id4r8")
|
||||
Speed = 120.0
|
||||
metadata/_custom_type_script = "uid://873un8agkyja"
|
||||
|
||||
[node name="BulletComponent" type="Node" parent="." node_paths=PackedStringArray("root", "area2d")]
|
||||
script = ExtResource("7_8gqaa")
|
||||
root = NodePath("..")
|
||||
area2d = NodePath("..")
|
||||
[node name="BulletComponent" type="Node" parent="." node_paths=PackedStringArray("Area", "BulletSprite")]
|
||||
script = ExtResource("6_2uduj")
|
||||
Area = NodePath("..")
|
||||
BulletSprite = NodePath("../Sprite2D")
|
||||
metadata/_custom_type_script = "uid://cdnwrn8v05qhi"
|
||||
|
||||
[node name="HomingMissileMotion" type="Node" parent="." node_paths=PackedStringArray("launch_component", "root", "detection_area")]
|
||||
script = ExtResource("7_bmfqy")
|
||||
launch_component = NodePath("../LaunchComponent")
|
||||
root = NodePath("..")
|
||||
max_speed = 122.0
|
||||
acceleration = 4.0
|
||||
detection_area = NodePath("../DetectionArea")
|
||||
wobble_strength = 10.0
|
||||
drag = 1.0
|
||||
steering_lerp = 0.01
|
||||
[node name="HomingMissileMotion" type="Node" parent="." node_paths=PackedStringArray("Launch", "DetectionArea")]
|
||||
script = ExtResource("7_x32ji")
|
||||
Launch = NodePath("../LaunchComponent")
|
||||
MaxSpeed = 122.0
|
||||
Acceleration = 4.0
|
||||
WobbleStrength = 10.0
|
||||
Drag = 1.0
|
||||
SteeringLerp = 0.01
|
||||
DetectionArea = NodePath("../DetectionArea")
|
||||
|
||||
[node name="DetectionArea" type="Area2D" parent="."]
|
||||
collision_layer = 0
|
||||
|
@@ -1,14 +1,13 @@
|
||||
[gd_scene load_steps=11 format=3 uid="uid://bcmx07k12gcsc"]
|
||||
[gd_scene load_steps=10 format=3 uid="uid://bcmx07k12gcsc"]
|
||||
|
||||
[ext_resource type="Texture2D" uid="uid://djifxc5x0dyrw" path="res://sprites/ppc_tileset.png" id="1_xusxl"]
|
||||
[ext_resource type="Script" uid="uid://cdnwrn8v05qhi" path="res://scripts/components/bullet_component.gd" id="2_ilnf5"]
|
||||
[ext_resource type="Script" uid="uid://dkmxhjtmu5xlb" path="res://scripts/components/damage_component.gd" id="3_3yf4g"]
|
||||
[ext_resource type="Resource" uid="uid://02l4nbnf2aft" path="res://resources/status_effect/ice.tres" id="4_da7hn"]
|
||||
[ext_resource type="Script" uid="uid://d3brcje121krs" path="res://scripts/components/effect_inflictor_component.gd" id="5_x7vqb"]
|
||||
[ext_resource type="Script" uid="uid://1tnr46o1ib4u" path="res://scripts/components/out_of_screen_component.gd" id="6_7tdxt"]
|
||||
[ext_resource type="Script" uid="uid://cvcnfrr1udco5" path="res://scripts/components/straight_motion_component.gd" id="7_22hnt"]
|
||||
[ext_resource type="Script" uid="uid://873un8agkyja" path="res://scripts/components/launch_component.gd" id="8_xvjl0"]
|
||||
[ext_resource type="Script" uid="uid://bgty7040ams6s" path="res://scripts/components/projectile_init_component.gd" id="9_xvjl0"]
|
||||
[ext_resource type="Script" uid="uid://cfw8nbrarex0i" path="res://scripts/components/BulletComponent.cs" id="2_xvjl0"]
|
||||
[ext_resource type="Script" uid="uid://2i7p7v135u7c" path="res://scripts/components/DamageComponent.cs" id="3_22hnt"]
|
||||
[ext_resource type="Script" uid="uid://xjq33vj0rol0" path="res://scripts/components/EffectInflictorComponent.cs" id="4_22hnt"]
|
||||
[ext_resource type="Script" uid="uid://cs6u3sh68f43j" path="res://scripts/components/OutOfScreenComponent.cs" id="5_xvjl0"]
|
||||
[ext_resource type="Script" uid="uid://c7p06t0eax8am" path="res://scripts/components/StraightMotionComponent.cs" id="6_6nrp8"]
|
||||
[ext_resource type="Script" uid="uid://cbexrnnj47f87" path="res://scripts/components/LaunchComponent.cs" id="7_oml3k"]
|
||||
[ext_resource type="Script" uid="uid://c7n6ecsobohjn" path="res://scripts/components/ProjectileInitComponent.cs" id="8_22hnt"]
|
||||
|
||||
[sub_resource type="RectangleShape2D" id="RectangleShape2D_ar0xf"]
|
||||
size = Vector2(16, 10)
|
||||
@@ -26,10 +25,10 @@ hframes = 12
|
||||
vframes = 12
|
||||
frame = 80
|
||||
|
||||
[node name="BulletComponent" type="Node" parent="." node_paths=PackedStringArray("root", "area2d")]
|
||||
script = ExtResource("2_ilnf5")
|
||||
root = NodePath("..")
|
||||
area2d = NodePath("..")
|
||||
[node name="BulletComponent" type="Node" parent="." node_paths=PackedStringArray("Area", "BulletSprite")]
|
||||
script = ExtResource("2_xvjl0")
|
||||
Area = NodePath("..")
|
||||
BulletSprite = NodePath("../Sprite2D")
|
||||
|
||||
[node name="VisibleOnScreenNotifier2D" type="VisibleOnScreenNotifier2D" parent="."]
|
||||
position = Vector2(0, 2.38419e-07)
|
||||
@@ -37,34 +36,29 @@ scale = Vector2(0.8, 0.5)
|
||||
|
||||
[node name="Timer" type="Timer" parent="."]
|
||||
|
||||
[node name="DamageComponent" type="Node" parent="." node_paths=PackedStringArray("area2d")]
|
||||
script = ExtResource("3_3yf4g")
|
||||
damage = 0.05
|
||||
area2d = NodePath("..")
|
||||
status_effect_data = ExtResource("4_da7hn")
|
||||
[node name="DamageComponent" type="Node" parent="." node_paths=PackedStringArray("Area")]
|
||||
script = ExtResource("3_22hnt")
|
||||
Area = NodePath("..")
|
||||
|
||||
[node name="EffectInflictorComponent" type="Node" parent="." node_paths=PackedStringArray("damage")]
|
||||
script = ExtResource("5_x7vqb")
|
||||
damage = NodePath("../DamageComponent")
|
||||
[node name="EffectInflictorComponent" type="Node" parent="." node_paths=PackedStringArray("Damage")]
|
||||
script = ExtResource("4_22hnt")
|
||||
Damage = NodePath("../DamageComponent")
|
||||
|
||||
[node name="OutOfScreenComponent" type="Node" parent="." node_paths=PackedStringArray("visibility_notifier", "root")]
|
||||
script = ExtResource("6_7tdxt")
|
||||
visibility_notifier = NodePath("../VisibleOnScreenNotifier2D")
|
||||
root = NodePath("..")
|
||||
[node name="OutOfScreenComponent" type="Node" parent="." node_paths=PackedStringArray("VisibilityNotifier")]
|
||||
script = ExtResource("5_xvjl0")
|
||||
VisibilityNotifier = NodePath("../VisibleOnScreenNotifier2D")
|
||||
|
||||
[node name="StraightMotionComponent" type="Node" parent="." node_paths=PackedStringArray("root", "launch_component")]
|
||||
script = ExtResource("7_22hnt")
|
||||
root = NodePath("..")
|
||||
launch_component = NodePath("../LaunchComponent")
|
||||
[node name="StraightMotionComponent" type="Node" parent="." node_paths=PackedStringArray("LaunchComponent")]
|
||||
script = ExtResource("6_6nrp8")
|
||||
LaunchComponent = NodePath("../LaunchComponent")
|
||||
metadata/_custom_type_script = "uid://cvcnfrr1udco5"
|
||||
|
||||
[node name="LaunchComponent" type="Node2D" parent="." node_paths=PackedStringArray("root")]
|
||||
script = ExtResource("8_xvjl0")
|
||||
root = NodePath("..")
|
||||
speed = 170.0
|
||||
[node name="LaunchComponent" type="Node2D" parent="."]
|
||||
script = ExtResource("7_oml3k")
|
||||
Speed = 170.0
|
||||
metadata/_custom_type_script = "uid://873un8agkyja"
|
||||
|
||||
[node name="ProjectileInitComponent" type="Node" parent="." node_paths=PackedStringArray("launch_component")]
|
||||
script = ExtResource("9_xvjl0")
|
||||
launch_component = NodePath("../LaunchComponent")
|
||||
[node name="ProjectileInitComponent" type="Node" parent="." node_paths=PackedStringArray("LaunchComponent")]
|
||||
script = ExtResource("8_22hnt")
|
||||
LaunchComponent = NodePath("../LaunchComponent")
|
||||
metadata/_custom_type_script = "uid://bgty7040ams6s"
|
||||
|
@@ -1,7 +1,7 @@
|
||||
[gd_scene load_steps=4 format=3 uid="uid://cm3rixnnev1pg"]
|
||||
|
||||
[ext_resource type="Texture2D" uid="uid://djifxc5x0dyrw" path="res://sprites/ppc_tileset.png" id="1_ctugi"]
|
||||
[ext_resource type="Script" uid="uid://dwok2qx4wpkey" path="res://scripts/components/jump_pad_component.gd" id="2_2ypfs"]
|
||||
[ext_resource type="Script" uid="uid://bgbnof7aeydmq" path="res://scripts/components/JumpPadComponent.cs" id="2_huktk"]
|
||||
|
||||
[sub_resource type="RectangleShape2D" id="RectangleShape2D_ci3ij"]
|
||||
size = Vector2(16, 6)
|
||||
@@ -20,9 +20,9 @@ hframes = 12
|
||||
vframes = 12
|
||||
frame = 120
|
||||
|
||||
[node name="JumpPadComponent" type="Node" parent="." node_paths=PackedStringArray("area2d", "sprite2d")]
|
||||
script = ExtResource("2_2ypfs")
|
||||
jump_force = 1110.0
|
||||
area2d = NodePath("..")
|
||||
sprite2d = NodePath("../Sprite2D")
|
||||
start_animation_index = 120
|
||||
[node name="JumpPadComponent" type="Node" parent="." node_paths=PackedStringArray("Area", "Sprite")]
|
||||
script = ExtResource("2_huktk")
|
||||
JumpForce = 1110.0
|
||||
Area = NodePath("..")
|
||||
Sprite = NodePath("../Sprite2D")
|
||||
StartAnimationIndex = 120
|
||||
|
@@ -1,6 +1,6 @@
|
||||
[gd_scene load_steps=3 format=3 uid="uid://bqom4cm7r18db"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://dkmxhjtmu5xlb" path="res://scripts/components/damage_component.gd" id="1_un3fl"]
|
||||
[ext_resource type="Script" uid="uid://2i7p7v135u7c" path="res://scripts/components/DamageComponent.cs" id="1_ggub0"]
|
||||
|
||||
[sub_resource type="WorldBoundaryShape2D" id="WorldBoundaryShape2D_cr00c"]
|
||||
|
||||
@@ -11,7 +11,7 @@ collision_mask = 4
|
||||
[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
|
||||
shape = SubResource("WorldBoundaryShape2D_cr00c")
|
||||
|
||||
[node name="DamageComponent" type="Node" parent="." node_paths=PackedStringArray("area2d")]
|
||||
script = ExtResource("1_un3fl")
|
||||
damage = 999999.0
|
||||
area2d = NodePath("..")
|
||||
[node name="DamageComponent" type="Node" parent="." node_paths=PackedStringArray("Area")]
|
||||
script = ExtResource("1_ggub0")
|
||||
Damage = 400000.0
|
||||
Area = NodePath("..")
|
||||
|
@@ -1,8 +1,8 @@
|
||||
[gd_scene load_steps=5 format=3 uid="uid://c7ku0k8n55hjv"]
|
||||
|
||||
[ext_resource type="Texture2D" uid="uid://djifxc5x0dyrw" path="res://sprites/ppc_tileset.png" id="1_brnkm"]
|
||||
[ext_resource type="Script" uid="uid://dkmxhjtmu5xlb" path="res://scripts/components/damage_component.gd" id="2_x12f0"]
|
||||
[ext_resource type="Script" uid="uid://bejv75mi8npj0" path="res://scripts/components/beam_component.gd" id="3_6pj0h"]
|
||||
[ext_resource type="Script" uid="uid://2i7p7v135u7c" path="res://scripts/components/DamageComponent.cs" id="2_l5xec"]
|
||||
[ext_resource type="Script" uid="uid://df1llrbm80e02" path="res://scripts/components/BeamComponent.cs" id="3_l5xec"]
|
||||
|
||||
[sub_resource type="RectangleShape2D" id="RectangleShape2D_ptfn7"]
|
||||
size = Vector2(8, 16)
|
||||
@@ -20,13 +20,14 @@ region_rect = Rect2(176, 64, 16, 16)
|
||||
[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
|
||||
shape = SubResource("RectangleShape2D_ptfn7")
|
||||
|
||||
[node name="DamageComponent" type="Node" parent="." node_paths=PackedStringArray("area2d")]
|
||||
script = ExtResource("2_x12f0")
|
||||
area2d = NodePath("..")
|
||||
[node name="DamageComponent" type="Node" parent="." node_paths=PackedStringArray("Area")]
|
||||
script = ExtResource("2_l5xec")
|
||||
Area = NodePath("..")
|
||||
|
||||
[node name="BeamComponent" type="Node2D" parent="." node_paths=PackedStringArray("root", "sprite2d", "collision_shape")]
|
||||
[node name="BeamComponent" type="Node2D" parent="." node_paths=PackedStringArray("Root", "Sprite", "CollisionShape")]
|
||||
position = Vector2(0, -8)
|
||||
script = ExtResource("3_6pj0h")
|
||||
root = NodePath("..")
|
||||
sprite2d = NodePath("../Sprite2D")
|
||||
collision_shape = NodePath("../CollisionShape2D")
|
||||
script = ExtResource("3_l5xec")
|
||||
ExpansionSpeed = 16.0
|
||||
Root = NodePath("..")
|
||||
Sprite = NodePath("../Sprite2D")
|
||||
CollisionShape = NodePath("../CollisionShape2D")
|
||||
|
@@ -1,7 +1,7 @@
|
||||
[gd_scene load_steps=5 format=3 uid="uid://bd51frym6mm7v"]
|
||||
|
||||
[ext_resource type="Texture2D" uid="uid://djifxc5x0dyrw" path="res://sprites/ppc_tileset.png" id="1_psg62"]
|
||||
[ext_resource type="Script" uid="uid://hyuwsp1b336a" path="res://scripts/components/lever_component.gd" id="2_0p0wb"]
|
||||
[ext_resource type="Script" uid="uid://1oo22ieply7n" path="res://scripts/components/LeverComponent.cs" id="2_a6tw0"]
|
||||
[ext_resource type="AudioStream" uid="uid://beq14we7v3iw4" path="res://sfx/activate_lever.wav" id="3_gipby"]
|
||||
|
||||
[sub_resource type="RectangleShape2D" id="RectangleShape2D_ke5tv"]
|
||||
@@ -21,12 +21,12 @@ hframes = 12
|
||||
vframes = 12
|
||||
frame = 75
|
||||
|
||||
[node name="LeverComponent" type="Node" parent="." node_paths=PackedStringArray("area2d", "sprite2d", "sfx")]
|
||||
script = ExtResource("2_0p0wb")
|
||||
area2d = NodePath("..")
|
||||
sprite2d = NodePath("../Sprite2D")
|
||||
start_animation_index = 75
|
||||
sfx = NodePath("../sfx")
|
||||
[node name="LeverComponent" type="Node" parent="." node_paths=PackedStringArray("Area", "Sprite", "Sfx")]
|
||||
script = ExtResource("2_a6tw0")
|
||||
Area = NodePath("..")
|
||||
Sprite = NodePath("../Sprite2D")
|
||||
StartAnimationIndex = 75
|
||||
Sfx = NodePath("../sfx")
|
||||
|
||||
[node name="sfx" type="AudioStreamPlayer2D" parent="."]
|
||||
stream = ExtResource("3_gipby")
|
||||
|
@@ -1,11 +1,11 @@
|
||||
[gd_scene load_steps=8 format=3 uid="uid://t422jkov2t1b"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://dkmxhjtmu5xlb" path="res://scripts/components/damage_component.gd" id="1_koyoa"]
|
||||
[ext_resource type="Script" uid="uid://cdnwrn8v05qhi" path="res://scripts/components/bullet_component.gd" id="2_eru3x"]
|
||||
[ext_resource type="Script" uid="uid://1tnr46o1ib4u" path="res://scripts/components/out_of_screen_component.gd" id="3_m14o3"]
|
||||
[ext_resource type="Script" uid="uid://cvcnfrr1udco5" path="res://scripts/components/straight_motion_component.gd" id="4_dolct"]
|
||||
[ext_resource type="Script" uid="uid://873un8agkyja" path="res://scripts/components/launch_component.gd" id="5_eafpt"]
|
||||
[ext_resource type="Script" uid="uid://bvsgg8lu0a8m6" path="res://scripts/components/lifetime_component.gd" id="6_m14o3"]
|
||||
[ext_resource type="Script" uid="uid://2i7p7v135u7c" path="res://scripts/components/DamageComponent.cs" id="1_m14o3"]
|
||||
[ext_resource type="Script" uid="uid://cfw8nbrarex0i" path="res://scripts/components/BulletComponent.cs" id="2_m14o3"]
|
||||
[ext_resource type="Script" uid="uid://cs6u3sh68f43j" path="res://scripts/components/OutOfScreenComponent.cs" id="3_m14o3"]
|
||||
[ext_resource type="Script" uid="uid://c7p06t0eax8am" path="res://scripts/components/StraightMotionComponent.cs" id="4_dolct"]
|
||||
[ext_resource type="Script" uid="uid://cbexrnnj47f87" path="res://scripts/components/LaunchComponent.cs" id="5_eafpt"]
|
||||
[ext_resource type="Script" uid="uid://oyf25mpc5etr" path="res://scripts/components/LifetimeComponent.cs" id="6_0c45k"]
|
||||
|
||||
[sub_resource type="RectangleShape2D" id="RectangleShape2D_n4uav"]
|
||||
size = Vector2(16, 2)
|
||||
@@ -14,9 +14,9 @@ size = Vector2(16, 2)
|
||||
collision_layer = 8
|
||||
collision_mask = 21
|
||||
|
||||
[node name="DamageComponent" type="Node" parent="." node_paths=PackedStringArray("area2d")]
|
||||
script = ExtResource("1_koyoa")
|
||||
area2d = NodePath("..")
|
||||
[node name="DamageComponent" type="Node" parent="." node_paths=PackedStringArray("Area")]
|
||||
script = ExtResource("1_m14o3")
|
||||
Area = NodePath("..")
|
||||
metadata/_custom_type_script = "uid://dkmxhjtmu5xlb"
|
||||
|
||||
[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
|
||||
@@ -28,41 +28,31 @@ points = PackedVector2Array(0, 0, 16, 0)
|
||||
width = 2.0
|
||||
default_color = Color(90, 1, 1, 1)
|
||||
|
||||
[node name="BulletComponent" type="Node" parent="." node_paths=PackedStringArray("root", "area2d")]
|
||||
script = ExtResource("2_eru3x")
|
||||
root = NodePath("..")
|
||||
area2d = NodePath("..")
|
||||
[node name="BulletComponent" type="Node" parent="." node_paths=PackedStringArray("Area")]
|
||||
script = ExtResource("2_m14o3")
|
||||
Area = NodePath("..")
|
||||
metadata/_custom_type_script = "uid://cdnwrn8v05qhi"
|
||||
|
||||
[node name="OutOfScreenComponent" type="Node" parent="." node_paths=PackedStringArray("visibility_notifier", "root")]
|
||||
[node name="OutOfScreenComponent" type="Node" parent="." node_paths=PackedStringArray("VisibilityNotifier")]
|
||||
script = ExtResource("3_m14o3")
|
||||
visibility_notifier = NodePath("../VisibleOnScreenNotifier2D")
|
||||
root = NodePath("..")
|
||||
VisibilityNotifier = NodePath("../VisibleOnScreenNotifier2D")
|
||||
metadata/_custom_type_script = "uid://1tnr46o1ib4u"
|
||||
|
||||
[node name="VisibleOnScreenNotifier2D" type="VisibleOnScreenNotifier2D" parent="."]
|
||||
position = Vector2(8, 0)
|
||||
scale = Vector2(0.8, 0.1)
|
||||
|
||||
[node name="StraightMotionComponent" type="Node" parent="." node_paths=PackedStringArray("root", "launch_component")]
|
||||
[node name="StraightMotionComponent" type="Node" parent="." node_paths=PackedStringArray("LaunchComponent")]
|
||||
script = ExtResource("4_dolct")
|
||||
root = NodePath("..")
|
||||
launch_component = NodePath("../LaunchComponent")
|
||||
LaunchComponent = NodePath("../LaunchComponent")
|
||||
metadata/_custom_type_script = "uid://cvcnfrr1udco5"
|
||||
|
||||
[node name="LaunchComponent" type="Node2D" parent="." node_paths=PackedStringArray("root")]
|
||||
[node name="LaunchComponent" type="Node2D" parent="."]
|
||||
script = ExtResource("5_eafpt")
|
||||
root = NodePath("..")
|
||||
speed = 64.0
|
||||
Speed = 64.0
|
||||
metadata/_custom_type_script = "uid://873un8agkyja"
|
||||
|
||||
[node name="LifetimeComponent" type="Node" parent="." node_paths=PackedStringArray("root", "timer")]
|
||||
script = ExtResource("6_m14o3")
|
||||
root = NodePath("..")
|
||||
life_time = 10.0
|
||||
timer = NodePath("../Timer")
|
||||
[node name="LifetimeComponent" type="Node" parent="."]
|
||||
script = ExtResource("6_0c45k")
|
||||
LifeTime = 10.0
|
||||
metadata/_custom_type_script = "uid://bvsgg8lu0a8m6"
|
||||
|
||||
[node name="Timer" type="Timer" parent="."]
|
||||
wait_time = 5.0
|
||||
autostart = true
|
||||
|
@@ -1,8 +1,8 @@
|
||||
[gd_scene load_steps=6 format=3 uid="uid://t6h2ra7kjyq"]
|
||||
|
||||
[ext_resource type="Texture2D" uid="uid://1x4iq56rhc18" path="res://sprites/health_potions.png" id="1_p0sdo"]
|
||||
[ext_resource type="Script" uid="uid://cegdd1sravi5m" path="res://scripts/components/heal_component.gd" id="2_piwlp"]
|
||||
[ext_resource type="Script" uid="uid://pa1bwc4no08q" path="res://scripts/components/collectable.gd" id="3_k2tv6"]
|
||||
[ext_resource type="Script" uid="uid://bmx6rk281yim2" path="res://scripts/components/HealComponent.cs" id="2_p0sdo"]
|
||||
[ext_resource type="Script" uid="uid://r4jybneigfcn" path="res://scripts/components/CollectableComponent.cs" id="3_p0sdo"]
|
||||
[ext_resource type="Resource" uid="uid://2tl3yoh202no" path="res://resources/collectables/small_health_potion.tres" id="4_p0sdo"]
|
||||
|
||||
[sub_resource type="CircleShape2D" id="CircleShape2D_uj2v5"]
|
||||
@@ -20,13 +20,13 @@ texture = ExtResource("1_p0sdo")
|
||||
hframes = 4
|
||||
frame = 1
|
||||
|
||||
[node name="HealComponent" type="Node" parent="." node_paths=PackedStringArray("collectable")]
|
||||
script = ExtResource("2_piwlp")
|
||||
collectable = NodePath("../CollectableComponent")
|
||||
[node name="HealComponent" type="Node" parent="." node_paths=PackedStringArray("Collectable")]
|
||||
script = ExtResource("2_p0sdo")
|
||||
Collectable = NodePath("../CollectableComponent")
|
||||
|
||||
[node name="CollectableComponent" type="Node" parent="." node_paths=PackedStringArray("area2d", "collision_shape")]
|
||||
script = ExtResource("3_k2tv6")
|
||||
area2d = NodePath("..")
|
||||
collision_shape = NodePath("../CollisionShape2D")
|
||||
collectable_data = ExtResource("4_p0sdo")
|
||||
[node name="CollectableComponent" type="Node" parent="." node_paths=PackedStringArray("Area2D", "CollisionShape")]
|
||||
script = ExtResource("3_p0sdo")
|
||||
Area2D = NodePath("..")
|
||||
CollisionShape = NodePath("../CollisionShape2D")
|
||||
Data = ExtResource("4_p0sdo")
|
||||
metadata/_custom_type_script = "uid://pa1bwc4no08q"
|
||||
|
@@ -1,7 +1,7 @@
|
||||
[gd_scene load_steps=4 format=3 uid="uid://lpovacvt3yyj"]
|
||||
|
||||
[ext_resource type="Texture2D" uid="uid://dhkwyv6ayb5qb" path="res://sprites/flying_ship.png" id="1_r82pf"]
|
||||
[ext_resource type="Script" uid="uid://ghb614g22ph7" path="res://scripts/components/spaceship_enter_component.gd" id="2_wanmd"]
|
||||
[ext_resource type="Script" uid="uid://dtv2r7q4elgre" path="res://scripts/components/SpaceshipEnterComponent.cs" id="2_wanmd"]
|
||||
|
||||
[sub_resource type="CircleShape2D" id="CircleShape2D_wanmd"]
|
||||
radius = 16.1245
|
||||
@@ -9,13 +9,10 @@ radius = 16.1245
|
||||
[node name="Spaceship Enter" type="Area2D"]
|
||||
collision_layer = 0
|
||||
collision_mask = 4
|
||||
script = ExtResource("2_wanmd")
|
||||
|
||||
[node name="Sprite2D" type="Sprite2D" parent="."]
|
||||
texture = ExtResource("1_r82pf")
|
||||
|
||||
[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
|
||||
shape = SubResource("CircleShape2D_wanmd")
|
||||
|
||||
[node name="SpaceshipEnterComponent" type="Node" parent="." node_paths=PackedStringArray("area2d")]
|
||||
script = ExtResource("2_wanmd")
|
||||
area2d = NodePath("..")
|
||||
|
@@ -1,14 +1,14 @@
|
||||
[gd_scene load_steps=3 format=3 uid="uid://dkqa3q6j2gof4"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://ybmwls7hv8j3" path="res://scripts/components/spaceship_exit_component.gd" id="1_1cmfv"]
|
||||
[ext_resource type="Script" uid="uid://d3gfg05ll8uw3" path="res://scripts/components/SpaceshipExitComponent.cs" id="1_1cmfv"]
|
||||
|
||||
[sub_resource type="RectangleShape2D" id="RectangleShape2D_njt46"]
|
||||
|
||||
[node name="Spaceship exit" type="Area2D" node_paths=PackedStringArray("area2d")]
|
||||
[node name="Spaceship exit" type="Area2D" node_paths=PackedStringArray("Area")]
|
||||
collision_layer = 0
|
||||
collision_mask = 4
|
||||
script = ExtResource("1_1cmfv")
|
||||
area2d = NodePath(".")
|
||||
Area = NodePath(".")
|
||||
|
||||
[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
|
||||
shape = SubResource("RectangleShape2D_njt46")
|
||||
|
@@ -1,8 +1,8 @@
|
||||
[gd_scene load_steps=5 format=3 uid="uid://buff711j0f2ph"]
|
||||
|
||||
[ext_resource type="Texture2D" uid="uid://ddlwjg81ro1kl" path="res://sprites/spike_trap.png" id="1_xg6e1"]
|
||||
[ext_resource type="Script" uid="uid://cq26pfxn17s7s" path="res://scripts/components/spin_component.gd" id="2_3d4lc"]
|
||||
[ext_resource type="Script" uid="uid://dkmxhjtmu5xlb" path="res://scripts/components/damage_component.gd" id="3_ytlu4"]
|
||||
[ext_resource type="Script" uid="uid://cqw134ewht3hc" path="res://scripts/components/SpinComponent.cs" id="2_ytlu4"]
|
||||
[ext_resource type="Script" uid="uid://2i7p7v135u7c" path="res://scripts/components/DamageComponent.cs" id="3_ytlu4"]
|
||||
|
||||
[sub_resource type="CircleShape2D" id="CircleShape2D_xg6e1"]
|
||||
radius = 8.0
|
||||
@@ -17,14 +17,13 @@ texture = ExtResource("1_xg6e1")
|
||||
[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
|
||||
shape = SubResource("CircleShape2D_xg6e1")
|
||||
|
||||
[node name="SpinComponent" type="Node2D" parent="." node_paths=PackedStringArray("root")]
|
||||
script = ExtResource("2_3d4lc")
|
||||
root = NodePath("../Sprite2D")
|
||||
speed = 1.0
|
||||
[node name="SpinComponent" type="Node2D" parent="."]
|
||||
script = ExtResource("2_ytlu4")
|
||||
SpinSpeed = 1.0
|
||||
metadata/_custom_type_script = "uid://cq26pfxn17s7s"
|
||||
|
||||
[node name="DamageComponent" type="Node" parent="." node_paths=PackedStringArray("area2d")]
|
||||
[node name="DamageComponent" type="Node" parent="." node_paths=PackedStringArray("Area")]
|
||||
script = ExtResource("3_ytlu4")
|
||||
damage = 1.0
|
||||
area2d = NodePath("..")
|
||||
Damage = 1.0
|
||||
Area = NodePath("..")
|
||||
metadata/_custom_type_script = "uid://dkmxhjtmu5xlb"
|
||||
|
@@ -1,7 +1,7 @@
|
||||
[gd_scene load_steps=7 format=3 uid="uid://073ts5cxtwbl"]
|
||||
|
||||
[ext_resource type="Texture2D" uid="uid://djifxc5x0dyrw" path="res://sprites/ppc_tileset.png" id="1_uh3ex"]
|
||||
[ext_resource type="Script" uid="uid://pa1bwc4no08q" path="res://scripts/components/collectable.gd" id="2_i1ssp"]
|
||||
[ext_resource type="Script" uid="uid://r4jybneigfcn" path="res://scripts/components/CollectableComponent.cs" id="2_n5rum"]
|
||||
[ext_resource type="Resource" uid="uid://bws2xldndlre1" path="res://resources/collectables/treasure.tres" id="3_uknsr"]
|
||||
[ext_resource type="Script" uid="uid://bg75hnr3q6grk" path="res://scripts/components/fade_away.gd" id="4_ccbcr"]
|
||||
[ext_resource type="AudioStream" uid="uid://d2rj7uy5f0kwm" path="res://sfx/pickup_coin_3.wav" id="5_xt2rk"]
|
||||
@@ -9,7 +9,7 @@
|
||||
[sub_resource type="CircleShape2D" id="CircleShape2D_3ask2"]
|
||||
radius = 9.0
|
||||
|
||||
[node name="Treasure" type="Area2D"]
|
||||
[node name="Treasure" type="Area2D" groups=["coins"]]
|
||||
collision_layer = 2
|
||||
collision_mask = 4
|
||||
|
||||
@@ -22,12 +22,12 @@ hframes = 12
|
||||
vframes = 12
|
||||
frame = 66
|
||||
|
||||
[node name="Collectable" type="Node" parent="." node_paths=PackedStringArray("area2d", "collision_shape", "sfx") groups=["coins"]]
|
||||
script = ExtResource("2_i1ssp")
|
||||
area2d = NodePath("..")
|
||||
collision_shape = NodePath("../CollisionShape2D")
|
||||
collectable_data = ExtResource("3_uknsr")
|
||||
sfx = NodePath("../sfx")
|
||||
[node name="CollectableComponent" type="Node" parent="." node_paths=PackedStringArray("Area2D", "CollisionShape", "Sfx")]
|
||||
script = ExtResource("2_n5rum")
|
||||
Area2D = NodePath("..")
|
||||
CollisionShape = NodePath("../CollisionShape2D")
|
||||
Data = ExtResource("3_uknsr")
|
||||
Sfx = NodePath("../sfx")
|
||||
|
||||
[node name="FadeAwayComponent" type="Node" parent="." node_paths=PackedStringArray("sprite2d", "root", "area2d")]
|
||||
script = ExtResource("4_ccbcr")
|
||||
|
@@ -1,22 +1,15 @@
|
||||
[gd_scene load_steps=7 format=3 uid="uid://b4eifkc31jsun"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://dd30bgqiagi25" path="res://scripts/game_manager.gd" id="1_58t7u"]
|
||||
[ext_resource type="Script" uid="uid://c6eoi3ymefc0x" path="res://Autoloads/GameManager.cs" id="1_t2tr6"]
|
||||
[ext_resource type="PackedScene" uid="uid://bol7g83v2accs" path="res://scenes/level_village_1.tscn" id="2_bentb"]
|
||||
[ext_resource type="PackedScene" uid="uid://chqb11pfoqmeb" path="res://scenes/level_village_2.tscn" id="3_ajlkg"]
|
||||
[ext_resource type="PackedScene" uid="uid://h60obxmju6mo" path="res://scenes/level_village_3.tscn" id="4_se5tb"]
|
||||
[ext_resource type="PackedScene" uid="uid://bhad760x3vvco" path="res://scenes/level_village_4.tscn" id="5_mnosh"]
|
||||
[ext_resource type="Script" uid="uid://bydv4g1n5s3nf" path="res://scripts/screenshot.gd" id="6_t2tr6"]
|
||||
[ext_resource type="Script" uid="uid://chrhjch4ymfvr" path="res://scripts/Screenshot.cs" id="6_bbtu1"]
|
||||
|
||||
[node name="GameManager" type="Node"]
|
||||
script = ExtResource("1_58t7u")
|
||||
level_scenes = Array[PackedScene]([ExtResource("2_bentb"), ExtResource("3_ajlkg"), ExtResource("4_se5tb"), ExtResource("5_mnosh")])
|
||||
player_state = {
|
||||
"coins": 0,
|
||||
"current_level": 0,
|
||||
"lives": 3,
|
||||
"unlocked_levels": [ExtResource("4_se5tb")],
|
||||
"unlocked_skills": []
|
||||
}
|
||||
script = ExtResource("1_t2tr6")
|
||||
LevelScenes = Array[PackedScene]([ExtResource("2_bentb"), ExtResource("3_ajlkg"), ExtResource("4_se5tb"), ExtResource("5_mnosh")])
|
||||
|
||||
[node name="Node" type="Node" parent="."]
|
||||
script = ExtResource("6_t2tr6")
|
||||
[node name="Screenshot" type="Node" parent="."]
|
||||
script = ExtResource("6_bbtu1")
|
||||
|
@@ -1,10 +1,9 @@
|
||||
[gd_scene load_steps=21 format=4 uid="uid://fw5fbdy5gcmx"]
|
||||
[gd_scene load_steps=19 format=4 uid="uid://fw5fbdy5gcmx"]
|
||||
|
||||
[ext_resource type="PackedScene" uid="uid://cawlpch2lk3a2" path="res://objects/level/world_environment.tscn" id="1_hb5r3"]
|
||||
[ext_resource type="PackedScene" uid="uid://bqi5s710xb1ju" path="res://objects/entities/brick_player.tscn" id="1_lbnsn"]
|
||||
[ext_resource type="PackedScene" uid="uid://6foggu31cu14" path="res://objects/level/ui_layer.tscn" id="2_lbnsn"]
|
||||
[ext_resource type="PackedScene" uid="uid://cywsu7yrtjdog" path="res://objects/level/global_light.tscn" id="3_3732a"]
|
||||
[ext_resource type="Resource" uid="uid://cqtalsov2bkpo" path="res://resources/levels/village/village_1.tres" id="4_c2yv5"]
|
||||
[ext_resource type="PackedScene" uid="uid://cb0mnye1ki5a6" path="res://objects/level/camera_2d.tscn" id="5_517ha"]
|
||||
[ext_resource type="Script" uid="uid://d23haq52m7ulv" path="res://addons/phantom_camera/scripts/phantom_camera/phantom_camera_2d.gd" id="6_6imqp"]
|
||||
[ext_resource type="Script" uid="uid://ccfft4b8rwgbo" path="res://addons/phantom_camera/scripts/resources/tween_resource.gd" id="7_kl81p"]
|
||||
@@ -12,7 +11,6 @@
|
||||
[ext_resource type="TileSet" uid="uid://cu2sx7qigrqnv" path="res://resources/tilesets/village/terain.tres" id="9_etwin"]
|
||||
[ext_resource type="TileSet" uid="uid://bc5a20s6kuy8e" path="res://resources/tilesets/village/entities.tres" id="10_8xrv5"]
|
||||
[ext_resource type="TileSet" uid="uid://bbppo0irxdmqy" path="res://resources/tilesets/village/foreground.tres" id="11_0vx27"]
|
||||
[ext_resource type="Script" uid="uid://8r1y8elyw7kt" path="res://scripts/console_management.gd" id="12_8xrv5"]
|
||||
[ext_resource type="PackedScene" uid="uid://bqom4cm7r18db" path="res://objects/entities/killzone.tscn" id="13_0vx27"]
|
||||
|
||||
[sub_resource type="Gradient" id="Gradient_qb72p"]
|
||||
@@ -62,17 +60,6 @@ process_material = SubResource("ParticleProcessMaterial_lgb3u")
|
||||
|
||||
[node name="UI Layer" parent="." instance=ExtResource("2_lbnsn")]
|
||||
|
||||
[node name="HUD" parent="UI Layer" index="0" node_paths=PackedStringArray("player_health")]
|
||||
player_health = NodePath("../../Brick Player/HealthComponent")
|
||||
|
||||
[node name="DeathScreen" parent="UI Layer" index="1" node_paths=PackedStringArray("nodes_to_disable")]
|
||||
current_level = ExtResource("4_c2yv5")
|
||||
nodes_to_disable = [NodePath("../../Brick Player")]
|
||||
|
||||
[node name="Marketplace" parent="UI Layer" index="3" node_paths=PackedStringArray("skill_unlocker", "components_to_disable")]
|
||||
skill_unlocker = NodePath("../../Brick Player/SkillUnlockerComponent")
|
||||
components_to_disable = [NodePath("../../Brick Player")]
|
||||
|
||||
[node name="Global Light" parent="." instance=ExtResource("3_3732a")]
|
||||
|
||||
[node name="Camera2D" parent="." instance=ExtResource("5_517ha")]
|
||||
@@ -83,7 +70,8 @@ limit_top = -10000000
|
||||
limit_right = 10000000
|
||||
limit_bottom = 10000000
|
||||
|
||||
[node name="PhantomCamera2D" type="Node2D" parent="." node_paths=PackedStringArray("follow_target")]
|
||||
[node name="PhantomCamera" type="Node2D" parent="." node_paths=PackedStringArray("follow_target")]
|
||||
unique_name_in_owner = true
|
||||
top_level = true
|
||||
script = ExtResource("6_6imqp")
|
||||
follow_mode = 2
|
||||
@@ -106,18 +94,11 @@ tile_set = ExtResource("10_8xrv5")
|
||||
[node name="Foreground layer" type="TileMapLayer" parent="."]
|
||||
tile_set = ExtResource("11_0vx27")
|
||||
|
||||
[node name="ConsoleManagement" type="Node" parent="." node_paths=PackedStringArray("player_health", "skill_unlocker", "skill_manager")]
|
||||
script = ExtResource("12_8xrv5")
|
||||
player_health = NodePath("../Brick Player/HealthComponent")
|
||||
skill_unlocker = NodePath("../Brick Player/SkillUnlockerComponent")
|
||||
skill_manager = NodePath("../Brick Player/SkillManager")
|
||||
metadata/_custom_type_script = "uid://8r1y8elyw7kt"
|
||||
|
||||
[node name="Killzone" parent="." instance=ExtResource("13_0vx27")]
|
||||
position = Vector2(215, 324)
|
||||
|
||||
[connection signal="on_death" from="Brick Player/HealthComponent" to="UI Layer/DeathScreen" method="on_player_death"]
|
||||
[connection signal="on_death" from="Brick Player/HealthComponent" to="UI Layer/GameOverScreen" method="on_player_death"]
|
||||
[connection signal="Death" from="Brick Player/HealthComponent" to="UI Layer/DeathScreen" method="OnPlayerDeath"]
|
||||
[connection signal="Death" from="Brick Player/HealthComponent" to="UI Layer/GameOverScreen" method="OnPlayerDeath"]
|
||||
|
||||
[editable path="Brick Player"]
|
||||
[editable path="UI Layer"]
|
||||
|
@@ -1,8 +1,7 @@
|
||||
[gd_scene load_steps=11 format=3 uid="uid://6foggu31cu14"]
|
||||
[gd_scene load_steps=9 format=3 uid="uid://6foggu31cu14"]
|
||||
|
||||
[ext_resource type="PackedScene" uid="uid://byxf45ukq82pe" path="res://objects/ui/hud.tscn" id="1_tgtfe"]
|
||||
[ext_resource type="PackedScene" uid="uid://dulkm3ah4tm0u" path="res://objects/ui/death_screen.tscn" id="2_ln68j"]
|
||||
[ext_resource type="Script" uid="uid://cp68km8bykymb" path="res://scripts/resources/level_resource.gd" id="3_5kt5k"]
|
||||
[ext_resource type="PackedScene" uid="uid://wmw6gaisyrvx" path="res://objects/ui/game_over_screen.tscn" id="4_11xmk"]
|
||||
[ext_resource type="PackedScene" uid="uid://dlm2ri562fynd" path="res://objects/ui/marketplace.tscn" id="5_8e0cs"]
|
||||
[ext_resource type="PackedScene" uid="uid://i6mnjbjcoqe5" path="res://objects/ui/pause_menu.tscn" id="6_1q4vn"]
|
||||
@@ -10,38 +9,26 @@
|
||||
[ext_resource type="PackedScene" uid="uid://cvfsbiy5ggrpg" path="res://objects/ui/input_settings.tscn" id="8_6pnu3"]
|
||||
[ext_resource type="PackedScene" uid="uid://b5fx1vdfky307" path="res://objects/ui/audio_settings.tscn" id="9_ln68j"]
|
||||
|
||||
[sub_resource type="Resource" id="Resource_75pfo"]
|
||||
script = ExtResource("3_5kt5k")
|
||||
level_name = "Village - 1"
|
||||
scene_path = ""
|
||||
metadata/_custom_type_script = "uid://cp68km8bykymb"
|
||||
|
||||
[node name="UI Layer" type="CanvasLayer"]
|
||||
|
||||
[node name="HUD" parent="." instance=ExtResource("1_tgtfe")]
|
||||
|
||||
[node name="DeathScreen" parent="." node_paths=PackedStringArray("nodes_to_disable") instance=ExtResource("2_ln68j")]
|
||||
[node name="DeathScreen" parent="." instance=ExtResource("2_ln68j")]
|
||||
visible = false
|
||||
offset_top = 32.0
|
||||
current_level = SubResource("Resource_75pfo")
|
||||
nodes_to_disable = [null]
|
||||
|
||||
[node name="GameOverScreen" parent="." instance=ExtResource("4_11xmk")]
|
||||
visible = false
|
||||
|
||||
[node name="Marketplace" parent="." node_paths=PackedStringArray("components_to_disable") instance=ExtResource("5_8e0cs")]
|
||||
[node name="Marketplace" parent="." instance=ExtResource("5_8e0cs")]
|
||||
visible = false
|
||||
offset_top = 32.0
|
||||
components_to_disable = [null]
|
||||
|
||||
[node name="Pause menu" parent="." node_paths=PackedStringArray("settings_menu") instance=ExtResource("6_1q4vn")]
|
||||
[node name="Pause menu" parent="." instance=ExtResource("6_1q4vn")]
|
||||
visible = false
|
||||
settings_menu = NodePath("../Settings menu")
|
||||
|
||||
[node name="Settings menu" parent="." node_paths=PackedStringArray("input_settings", "audio_settings") instance=ExtResource("7_hkjav")]
|
||||
[node name="Settings menu" parent="." instance=ExtResource("7_hkjav")]
|
||||
visible = false
|
||||
input_settings = NodePath("../Input Settings")
|
||||
audio_settings = NodePath("../Audio settings")
|
||||
|
||||
[node name="Input Settings" parent="." instance=ExtResource("8_6pnu3")]
|
||||
visible = false
|
||||
|
@@ -1,6 +1,6 @@
|
||||
[gd_scene load_steps=5 format=3 uid="uid://b4pdt1gv2ymyi"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://bsq5pplxqbssh" path="res://scripts/components/tooltip_component.gd" id="1_kkpqq"]
|
||||
[ext_resource type="Script" uid="uid://cvaa6aqyijcp1" path="res://scripts/components/TooltipComponent.cs" id="1_aw8h8"]
|
||||
[ext_resource type="Texture2D" uid="uid://djifxc5x0dyrw" path="res://sprites/ppc_tileset.png" id="1_yy7uq"]
|
||||
|
||||
[sub_resource type="RectangleShape2D" id="RectangleShape2D_hkd8b"]
|
||||
@@ -9,13 +9,13 @@ size = Vector2(38, 22)
|
||||
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_lqw6h"]
|
||||
bg_color = Color(0, 0, 0, 1)
|
||||
|
||||
[node name="Tooltip" type="Area2D" node_paths=PackedStringArray("area2d", "ui_root", "tooltip_label")]
|
||||
[node name="Tooltip" type="Area2D" node_paths=PackedStringArray("Area", "UiRoot", "TooltipLabel")]
|
||||
collision_layer = 0
|
||||
collision_mask = 4
|
||||
script = ExtResource("1_kkpqq")
|
||||
area2d = NodePath(".")
|
||||
ui_root = NodePath("Panel")
|
||||
tooltip_label = NodePath("Panel/PanelContainer/Label")
|
||||
script = ExtResource("1_aw8h8")
|
||||
Area = NodePath(".")
|
||||
UiRoot = NodePath("Panel")
|
||||
TooltipLabel = NodePath("Panel/PanelContainer/Label")
|
||||
|
||||
[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
|
||||
position = Vector2(1, -3)
|
||||
|
@@ -1,11 +1,11 @@
|
||||
[gd_scene load_steps=3 format=3 uid="uid://b5fx1vdfky307"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://dujk6pnftm7ra" path="res://scripts/ui/audio_settings.gd" id="1_g522b"]
|
||||
[ext_resource type="Script" uid="uid://g61qqsymqfxd" path="res://scripts/UI/AudioSettings.cs" id="1_g522b"]
|
||||
|
||||
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_g4ivv"]
|
||||
bg_color = Color(0, 0, 0, 1)
|
||||
|
||||
[node name="Audio settings" type="Control" node_paths=PackedStringArray("master_volume_slider", "music_volume_slider", "sfx_volume_slider", "audio_settings_control")]
|
||||
[node name="Audio settings" type="Control" node_paths=PackedStringArray("MasterVolumeSlider", "MusicVolumeSlider", "SfxVolumeSlider", "AudioSettingsControl")]
|
||||
layout_mode = 3
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
||||
@@ -15,10 +15,10 @@ grow_vertical = 2
|
||||
size_flags_horizontal = 6
|
||||
size_flags_vertical = 6
|
||||
script = ExtResource("1_g522b")
|
||||
master_volume_slider = NodePath("PanelContainer/MarginContainer/VBoxContainer/Master volume/HSlider")
|
||||
music_volume_slider = NodePath("PanelContainer/MarginContainer/VBoxContainer/Music volume/HSlider")
|
||||
sfx_volume_slider = NodePath("PanelContainer/MarginContainer/VBoxContainer/SFX volume/HSlider")
|
||||
audio_settings_control = NodePath(".")
|
||||
MasterVolumeSlider = NodePath("PanelContainer/MarginContainer/VBoxContainer/Master volume/HSlider")
|
||||
MusicVolumeSlider = NodePath("PanelContainer/MarginContainer/VBoxContainer/Music volume/HSlider")
|
||||
SfxVolumeSlider = NodePath("PanelContainer/MarginContainer/VBoxContainer/SFX volume/HSlider")
|
||||
AudioSettingsControl = NodePath(".")
|
||||
|
||||
[node name="PanelContainer" type="PanelContainer" parent="."]
|
||||
layout_mode = 1
|
||||
|
@@ -1,6 +1,6 @@
|
||||
[gd_scene load_steps=4 format=3 uid="uid://bg76mtpcmfm2j"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://q32rtephu1t1" path="res://scripts/ui/charge_progress_bar.gd" id="1_014ut"]
|
||||
[ext_resource type="Script" uid="uid://dev2q1228otm2" path="res://scripts/UI/ChargeProgressBar.cs" id="1_014ut"]
|
||||
|
||||
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_arbva"]
|
||||
bg_color = Color(0, 0, 0, 1)
|
||||
@@ -8,10 +8,10 @@ bg_color = Color(0, 0, 0, 1)
|
||||
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_014ut"]
|
||||
bg_color = Color(0.921569, 0.827451, 0.12549, 1)
|
||||
|
||||
[node name="ProgressBar" type="ProgressBar" node_paths=PackedStringArray("progress_bar")]
|
||||
[node name="ProgressBar" type="ProgressBar" node_paths=PackedStringArray("ProgressBar")]
|
||||
offset_right = 40.0
|
||||
offset_bottom = 10.0
|
||||
theme_override_styles/background = SubResource("StyleBoxFlat_arbva")
|
||||
theme_override_styles/fill = SubResource("StyleBoxFlat_014ut")
|
||||
script = ExtResource("1_014ut")
|
||||
progress_bar = NodePath(".")
|
||||
ProgressBar = NodePath(".")
|
||||
|
@@ -1,6 +1,6 @@
|
||||
[gd_scene load_steps=3 format=3 uid="uid://bwgmrcyj4mvu"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://dtjgndehihl6d" path="res://scripts/ui/credits.gd" id="1_3aqj3"]
|
||||
[ext_resource type="Script" uid="uid://daevj4uootmcw" path="res://scripts/UI/Credits.cs" id="1_3aqj3"]
|
||||
|
||||
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_g4ivv"]
|
||||
bg_color = Color(0, 0, 0, 1)
|
||||
|
@@ -1,12 +1,12 @@
|
||||
[gd_scene load_steps=4 format=3 uid="uid://dulkm3ah4tm0u"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://b3d1p21sviww4" path="res://scripts/ui/death_screen.gd" id="1_eaoak"]
|
||||
[ext_resource type="Script" uid="uid://csprksav8mj1h" path="res://scripts/UI/DeathScreen.cs" id="1_eaoak"]
|
||||
[ext_resource type="Texture2D" uid="uid://jix7wdn0isr3" path="res://sprites/ppc_icon.png" id="1_m30em"]
|
||||
|
||||
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_eaoak"]
|
||||
bg_color = Color(0, 0, 0, 1)
|
||||
|
||||
[node name="DeathScreen" type="Control" node_paths=PackedStringArray("death_screen_root", "current_level_label", "lives_left_label")]
|
||||
[node name="DeathScreen" type="Control" node_paths=PackedStringArray("CurrentLevelLabel", "LivesLeftLabel")]
|
||||
layout_mode = 3
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
||||
@@ -14,9 +14,8 @@ anchor_bottom = 1.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
script = ExtResource("1_eaoak")
|
||||
death_screen_root = NodePath(".")
|
||||
current_level_label = NodePath("PanelContainer/MarginContainer/VBoxContainer/LevelName")
|
||||
lives_left_label = NodePath("PanelContainer/MarginContainer/VBoxContainer/HBoxContainer/LivesLeft")
|
||||
CurrentLevelLabel = NodePath("PanelContainer/MarginContainer/VBoxContainer/LevelName")
|
||||
LivesLeftLabel = NodePath("PanelContainer/MarginContainer/VBoxContainer/HBoxContainer/LivesLeft")
|
||||
|
||||
[node name="PanelContainer" type="PanelContainer" parent="."]
|
||||
layout_mode = 1
|
||||
|
@@ -1,21 +1,23 @@
|
||||
[gd_scene load_steps=3 format=3 uid="uid://wmw6gaisyrvx"]
|
||||
[gd_scene load_steps=4 format=3 uid="uid://wmw6gaisyrvx"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://bkd7o2u4psu4p" path="res://scripts/ui/game_over_screen.gd" id="1_v1o0m"]
|
||||
[ext_resource type="Script" uid="uid://u4qfsx4w72dv" path="res://scripts/UI/GameOverScreen.cs" id="1_w4aho"]
|
||||
[ext_resource type="PackedScene" uid="uid://cl00e2ocomk3m" path="res://scenes/main_menu.tscn" id="2_brh6h"]
|
||||
|
||||
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_mtg1b"]
|
||||
bg_color = Color(0, 0, 0, 1)
|
||||
|
||||
[node name="GameOverScreen" type="Control" node_paths=PackedStringArray("game_over_screen", "restart_button", "main_menu_button")]
|
||||
[node name="GameOverScreen" type="Control" node_paths=PackedStringArray("GameOverPanel", "RestartButton", "MainMenuButton")]
|
||||
layout_mode = 3
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
script = ExtResource("1_v1o0m")
|
||||
game_over_screen = NodePath(".")
|
||||
restart_button = NodePath("PanelContainer/MarginContainer/VBoxContainer/RestartLevelButton")
|
||||
main_menu_button = NodePath("PanelContainer/MarginContainer/VBoxContainer/MenuButton")
|
||||
script = ExtResource("1_w4aho")
|
||||
GameOverPanel = NodePath(".")
|
||||
RestartButton = NodePath("PanelContainer/MarginContainer/VBoxContainer/RestartLevelButton")
|
||||
MainMenuButton = NodePath("PanelContainer/MarginContainer/VBoxContainer/MenuButton")
|
||||
MainMenuScene = ExtResource("2_brh6h")
|
||||
|
||||
[node name="PanelContainer" type="PanelContainer" parent="."]
|
||||
layout_mode = 1
|
||||
|
@@ -1,7 +1,7 @@
|
||||
[gd_scene load_steps=8 format=3 uid="uid://byxf45ukq82pe"]
|
||||
|
||||
[ext_resource type="LabelSettings" uid="uid://rvn5ivivfvv6" path="res://resources/ui/hud_label_settings.tres" id="1_4dsh5"]
|
||||
[ext_resource type="Script" uid="uid://c3pde84b3kdco" path="res://scripts/ui/hud.gd" id="1_ueofj"]
|
||||
[ext_resource type="Script" uid="uid://wfj674u4486f" path="res://scripts/UI/Hud.cs" id="1_lscdw"]
|
||||
[ext_resource type="FontFile" uid="uid://xm0vbusjr7b7" path="res://fonts/PressStart2P-Regular.ttf" id="1_ygmwt"]
|
||||
|
||||
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_mmcdi"]
|
||||
@@ -16,7 +16,7 @@ bg_color = Color(0.47451, 0.47451, 0.47451, 1)
|
||||
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_22dp1"]
|
||||
bg_color = Color(0.858824, 0.254902, 0.380392, 1)
|
||||
|
||||
[node name="HUD" type="Control" node_paths=PackedStringArray("coins_label", "health_progressbar", "lives_label")]
|
||||
[node name="HUD" type="Control" node_paths=PackedStringArray("CoinsLabel", "HealthBar", "LivesLabel")]
|
||||
layout_mode = 3
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
||||
@@ -25,10 +25,10 @@ grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
size_flags_horizontal = 4
|
||||
size_flags_vertical = 4
|
||||
script = ExtResource("1_ueofj")
|
||||
coins_label = NodePath("PanelContainer/MarginContainer/HBoxContainer/Coins label")
|
||||
health_progressbar = NodePath("PanelContainer/MarginContainer/HBoxContainer/ProgressBar")
|
||||
lives_label = NodePath("PanelContainer/MarginContainer/HBoxContainer/Lives")
|
||||
script = ExtResource("1_lscdw")
|
||||
CoinsLabel = NodePath("PanelContainer/MarginContainer/HBoxContainer/Coins label")
|
||||
HealthBar = NodePath("PanelContainer/MarginContainer/HBoxContainer/ProgressBar")
|
||||
LivesLabel = NodePath("PanelContainer/MarginContainer/HBoxContainer/Lives")
|
||||
|
||||
[node name="PanelContainer" type="PanelContainer" parent="."]
|
||||
layout_mode = 1
|
||||
|
@@ -1,21 +1,17 @@
|
||||
[gd_scene load_steps=4 format=3 uid="uid://cvfsbiy5ggrpg"]
|
||||
[gd_scene load_steps=3 format=3 uid="uid://cvfsbiy5ggrpg"]
|
||||
|
||||
[ext_resource type="PackedScene" uid="uid://bxpr4m7lq7clh" path="res://objects/ui/input_button.tscn" id="1_h8s4o"]
|
||||
[ext_resource type="Script" uid="uid://dppwl7xie2mh" path="res://scripts/ui/input_settings.gd" id="1_v2gus"]
|
||||
|
||||
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_se25o"]
|
||||
bg_color = Color(0, 0, 0, 1)
|
||||
|
||||
[node name="Input Settings" type="Control" node_paths=PackedStringArray("action_list", "reset_to_default_button")]
|
||||
[node name="Input Settings" type="Control"]
|
||||
layout_mode = 3
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
script = ExtResource("1_v2gus")
|
||||
action_list = NodePath("PanelContainer/MarginContainer/VBoxContainer/ScrollContainer/Actions")
|
||||
reset_to_default_button = NodePath("PanelContainer/MarginContainer/VBoxContainer/Reset to default Button")
|
||||
|
||||
[node name="PanelContainer" type="PanelContainer" parent="."]
|
||||
layout_mode = 1
|
||||
|
@@ -1,11 +1,11 @@
|
||||
[gd_scene load_steps=3 format=3 uid="uid://8b6ol5sssbgo"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://hyfvthdbgjbc" path="res://scripts/ui/main_menu.gd" id="1_epxpl"]
|
||||
[ext_resource type="Script" uid="uid://bna3ggr6n7ycr" path="res://scripts/UI/MainMenu.cs" id="1_epxpl"]
|
||||
|
||||
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_qv2q0"]
|
||||
bg_color = Color(0, 0, 0, 1)
|
||||
|
||||
[node name="MainMenu" type="Control" node_paths=PackedStringArray("main_menu_control", "new_game_button", "continue_button", "settings_button", "credits_button", "exit_button", "version_label")]
|
||||
[node name="MainMenu" type="Control" node_paths=PackedStringArray("MainMenuControl", "NewGameButton", "ContinueButton", "SettingsButton", "CreditsButton", "ExitButton", "VersionLabel")]
|
||||
layout_mode = 3
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
||||
@@ -13,13 +13,13 @@ anchor_bottom = 1.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
script = ExtResource("1_epxpl")
|
||||
main_menu_control = NodePath(".")
|
||||
new_game_button = NodePath("PanelContainer/MarginContainer/VBoxContainer/NewGameButton")
|
||||
continue_button = NodePath("PanelContainer/MarginContainer/VBoxContainer/ContinueButton")
|
||||
settings_button = NodePath("PanelContainer/MarginContainer/VBoxContainer/SettingsButton")
|
||||
credits_button = NodePath("PanelContainer/MarginContainer/VBoxContainer/CreditsButton")
|
||||
exit_button = NodePath("PanelContainer/MarginContainer/VBoxContainer/QuitButton")
|
||||
version_label = NodePath("PanelContainer/MarginContainer/VBoxContainer/version")
|
||||
MainMenuControl = NodePath(".")
|
||||
NewGameButton = NodePath("PanelContainer/MarginContainer/VBoxContainer/NewGameButton")
|
||||
ContinueButton = NodePath("PanelContainer/MarginContainer/VBoxContainer/ContinueButton")
|
||||
SettingsButton = NodePath("PanelContainer/MarginContainer/VBoxContainer/SettingsButton")
|
||||
CreditsButton = NodePath("PanelContainer/MarginContainer/VBoxContainer/CreditsButton")
|
||||
ExitButton = NodePath("PanelContainer/MarginContainer/VBoxContainer/QuitButton")
|
||||
VersionLabel = NodePath("PanelContainer/MarginContainer/VBoxContainer/VersionLabel")
|
||||
|
||||
[node name="PanelContainer" type="PanelContainer" parent="."]
|
||||
layout_mode = 1
|
||||
@@ -41,7 +41,7 @@ theme_override_constants/margin_bottom = 32
|
||||
layout_mode = 2
|
||||
theme_override_constants/separation = 16
|
||||
|
||||
[node name="Label" type="Label" parent="PanelContainer/MarginContainer/VBoxContainer"]
|
||||
[node name="TitleLabel" type="Label" parent="PanelContainer/MarginContainer/VBoxContainer"]
|
||||
layout_mode = 2
|
||||
text = "GAME_TITLE"
|
||||
horizontal_alignment = 1
|
||||
@@ -77,7 +77,7 @@ layout_mode = 2
|
||||
text = "QUIT_BUTTON"
|
||||
flat = true
|
||||
|
||||
[node name="version" type="Label" parent="PanelContainer/MarginContainer/VBoxContainer"]
|
||||
[node name="VersionLabel" type="Label" parent="PanelContainer/MarginContainer/VBoxContainer"]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 0
|
||||
size_flags_vertical = 8
|
||||
|
@@ -1,34 +1,26 @@
|
||||
[gd_scene load_steps=12 format=3 uid="uid://dlm2ri562fynd"]
|
||||
[gd_scene load_steps=6 format=3 uid="uid://dlm2ri562fynd"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://duifmqjarjpuv" path="res://scripts/ui/marketplace.gd" id="1_ncpyg"]
|
||||
[ext_resource type="Script" uid="uid://bnc16gndpl87i" path="res://scripts/UI/Marketplace.cs" id="1_li4x3"]
|
||||
[ext_resource type="FontFile" uid="uid://xm0vbusjr7b7" path="res://fonts/PressStart2P-Regular.ttf" id="2_ho1tm"]
|
||||
[ext_resource type="Script" uid="uid://bya240e627ti6" path="res://scripts/resources/skill_data.gd" id="2_pg4mc"]
|
||||
[ext_resource type="Resource" uid="uid://dw5ee2lpeypnb" path="res://resources/skills/brick_throw.tres" id="3_bk5yi"]
|
||||
[ext_resource type="Resource" uid="uid://cdp8sex36vdq2" path="res://resources/skills/explosive_brick.tres" id="4_tx0n3"]
|
||||
[ext_resource type="Resource" uid="uid://2glvryih82t1" path="res://resources/skills/fire_brick.tres" id="5_fqx8e"]
|
||||
[ext_resource type="Resource" uid="uid://cx5fsbexblp60" path="res://resources/skills/ice_brick.tres" id="6_6665y"]
|
||||
[ext_resource type="Resource" uid="uid://d3bjre2etov1n" path="res://resources/skills/magnetic.tres" id="7_ukny6"]
|
||||
[ext_resource type="PackedScene" uid="uid://dtl03rod7l2t0" path="res://objects/ui/marketplace_button.tscn" id="9_ode10"]
|
||||
[ext_resource type="PackedScene" uid="uid://ceqjwmihj70lt" path="res://objects/ui/skill_button.tscn" id="10_c7w2b"]
|
||||
|
||||
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_ode10"]
|
||||
bg_color = Color(0, 0, 0, 1)
|
||||
|
||||
[node name="Marketplace" type="Control" node_paths=PackedStringArray("root", "to_unlock_grid", "unlocked_grid")]
|
||||
[node name="Marketplace" type="Control" node_paths=PackedStringArray("ToUnlockGrid", "UnlockedGrid")]
|
||||
layout_mode = 3
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
script = ExtResource("1_ncpyg")
|
||||
root = NodePath(".")
|
||||
skill_data = Array[ExtResource("2_pg4mc")]([ExtResource("3_bk5yi"), ExtResource("4_tx0n3"), ExtResource("5_fqx8e"), ExtResource("6_6665y"), ExtResource("7_ukny6")])
|
||||
to_unlock_grid = NodePath("PanelContainer/MarginContainer/VBoxContainer/ToUnlockGridContainer")
|
||||
unlocked_grid = NodePath("PanelContainer/MarginContainer/VBoxContainer/UnlockedGridContainer")
|
||||
font = ExtResource("2_ho1tm")
|
||||
marketplace_button = ExtResource("9_ode10")
|
||||
skill_button = ExtResource("10_c7w2b")
|
||||
script = ExtResource("1_li4x3")
|
||||
ToUnlockGrid = NodePath("PanelContainer/MarginContainer/VBoxContainer/ToUnlockGridContainer")
|
||||
UnlockedGrid = NodePath("PanelContainer/MarginContainer/VBoxContainer/UnlockedGridContainer")
|
||||
Font = ExtResource("2_ho1tm")
|
||||
MarketplaceButtonScene = ExtResource("9_ode10")
|
||||
SkillButtonScene = ExtResource("10_c7w2b")
|
||||
|
||||
[node name="PanelContainer" type="PanelContainer" parent="."]
|
||||
layout_mode = 1
|
||||
|
@@ -1,11 +1,9 @@
|
||||
[gd_scene load_steps=5 format=3 uid="uid://dtl03rod7l2t0"]
|
||||
[gd_scene load_steps=3 format=3 uid="uid://dtl03rod7l2t0"]
|
||||
|
||||
[ext_resource type="Texture2D" uid="uid://cvhoq7aubxlmq" path="res://sprites/ui/magnetic_skill_icon.png" id="1_5kqfg"]
|
||||
[ext_resource type="Script" uid="uid://dx8lex40lotr5" path="res://scripts/ui/marketplace_button.gd" id="2_ulgvb"]
|
||||
[ext_resource type="Texture2D" uid="uid://52adghxscdgy" path="res://sprites/locked_skill.png" id="2_vb2qn"]
|
||||
[ext_resource type="Texture2D" uid="uid://rucyqmgrdld3" path="res://sprites/unlocked_skill.png" id="3_guyun"]
|
||||
[ext_resource type="Script" uid="uid://vokgv56bjpf1" path="res://scripts/UI/MarketplaceButton.cs" id="2_vb2qn"]
|
||||
|
||||
[node name="MarketplaceButton" type="Button" node_paths=PackedStringArray("skill_level_container")]
|
||||
[node name="MarketplaceButton" type="Button" node_paths=PackedStringArray("SkillLevelContainer")]
|
||||
offset_right = 8.0
|
||||
offset_bottom = 8.0
|
||||
size_flags_horizontal = 3
|
||||
@@ -15,10 +13,8 @@ text = "Fire brick 100"
|
||||
icon = ExtResource("1_5kqfg")
|
||||
flat = true
|
||||
autowrap_mode = 2
|
||||
script = ExtResource("2_ulgvb")
|
||||
unlocked_skill_icon = ExtResource("3_guyun")
|
||||
locked_skill_icon = ExtResource("2_vb2qn")
|
||||
skill_level_container = NodePath("HBoxContainer")
|
||||
script = ExtResource("2_vb2qn")
|
||||
SkillLevelContainer = NodePath("HBoxContainer")
|
||||
|
||||
[node name="HBoxContainer" type="HBoxContainer" parent="."]
|
||||
layout_mode = 1
|
||||
|
@@ -1,12 +1,12 @@
|
||||
[gd_scene load_steps=4 format=3 uid="uid://i6mnjbjcoqe5"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://cugifchx6jhuk" path="res://scripts/ui/pause_menu.gd" id="1_aktha"]
|
||||
[ext_resource type="Script" uid="uid://cakgxndurgfa3" path="res://scripts/UI/PauseMenu.cs" id="1_h4pd5"]
|
||||
[ext_resource type="PackedScene" uid="uid://cl00e2ocomk3m" path="res://scenes/main_menu.tscn" id="2_h4pd5"]
|
||||
|
||||
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_g4ivv"]
|
||||
bg_color = Color(0, 0, 0, 1)
|
||||
|
||||
[node name="Pause menu" type="Control" node_paths=PackedStringArray("pause_menu_control", "resume_button", "quit_button", "settings_button", "exit_to_menu_button")]
|
||||
[node name="Pause menu" type="Control" node_paths=PackedStringArray("PauseMenuControl", "ResumeButton", "MainMenuButton", "QuitButton", "SettingsButton")]
|
||||
layout_mode = 3
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
||||
@@ -15,13 +15,13 @@ grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
size_flags_horizontal = 6
|
||||
size_flags_vertical = 6
|
||||
script = ExtResource("1_aktha")
|
||||
pause_menu_control = NodePath(".")
|
||||
resume_button = NodePath("PanelContainer/MarginContainer/VBoxContainer/Resume Button")
|
||||
quit_button = NodePath("PanelContainer/MarginContainer/VBoxContainer/Quit game Button")
|
||||
settings_button = NodePath("PanelContainer/MarginContainer/VBoxContainer/Settings Button")
|
||||
exit_to_menu_button = NodePath("PanelContainer/MarginContainer/VBoxContainer/Exit to menu Button")
|
||||
exit_to_menu_scene = ExtResource("2_h4pd5")
|
||||
script = ExtResource("1_h4pd5")
|
||||
PauseMenuControl = NodePath(".")
|
||||
ResumeButton = NodePath("PanelContainer/MarginContainer/VBoxContainer/Resume Button")
|
||||
MainMenuButton = NodePath("PanelContainer/MarginContainer/VBoxContainer/Exit to menu Button")
|
||||
QuitButton = NodePath("PanelContainer/MarginContainer/VBoxContainer/Quit game Button")
|
||||
SettingsButton = NodePath("PanelContainer/MarginContainer/VBoxContainer/Settings Button")
|
||||
MainMenuScene = ExtResource("2_h4pd5")
|
||||
|
||||
[node name="PanelContainer" type="PanelContainer" parent="."]
|
||||
layout_mode = 1
|
||||
|
@@ -1,11 +1,11 @@
|
||||
[gd_scene load_steps=3 format=3 uid="uid://y0ae6e7t70fj"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://c506rigcjlm6x" path="res://scripts/ui/settings_menu.gd" id="1_lt6q2"]
|
||||
[ext_resource type="Script" uid="uid://i8j47qnrytuo" path="res://scripts/UI/SettingsMenu.cs" id="1_lt6q2"]
|
||||
|
||||
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_wgbcl"]
|
||||
bg_color = Color(0, 0, 0, 1)
|
||||
|
||||
[node name="Settings menu" type="Control" node_paths=PackedStringArray("settings_menu_control", "input_settings_button", "audio_settings_button", "display_settings_button", "gameplay_settings_button")]
|
||||
[node name="Settings menu" type="Control" node_paths=PackedStringArray("SettingsMenuControl", "InputSettingsButton", "AudioSettingsButton", "DisplaySettingsButton", "GameplaySettingsButton")]
|
||||
layout_mode = 3
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
||||
@@ -13,11 +13,11 @@ anchor_bottom = 1.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
script = ExtResource("1_lt6q2")
|
||||
settings_menu_control = NodePath(".")
|
||||
input_settings_button = NodePath("PanelContainer/MarginContainer/VBoxContainer/Input Settings Button")
|
||||
audio_settings_button = NodePath("PanelContainer/MarginContainer/VBoxContainer/Audio Settings Button")
|
||||
display_settings_button = NodePath("PanelContainer/MarginContainer/VBoxContainer/Display Settings Button")
|
||||
gameplay_settings_button = NodePath("PanelContainer/MarginContainer/VBoxContainer/Gameplay Settings Button")
|
||||
SettingsMenuControl = NodePath(".")
|
||||
InputSettingsButton = NodePath("PanelContainer/MarginContainer/VBoxContainer/Input Settings Button")
|
||||
AudioSettingsButton = NodePath("PanelContainer/MarginContainer/VBoxContainer/Audio Settings Button")
|
||||
DisplaySettingsButton = NodePath("PanelContainer/MarginContainer/VBoxContainer/Display Settings Button")
|
||||
GameplaySettingsButton = NodePath("PanelContainer/MarginContainer/VBoxContainer/Gameplay Settings Button")
|
||||
|
||||
[node name="PanelContainer" type="PanelContainer" parent="."]
|
||||
layout_mode = 1
|
||||
@@ -39,7 +39,7 @@ theme_override_constants/margin_bottom = 16
|
||||
layout_mode = 2
|
||||
theme_override_constants/separation = 16
|
||||
|
||||
[node name="Label" type="Label" parent="PanelContainer/MarginContainer/VBoxContainer"]
|
||||
[node name="Title" type="Label" parent="PanelContainer/MarginContainer/VBoxContainer"]
|
||||
layout_mode = 2
|
||||
theme_override_font_sizes/font_size = 16
|
||||
text = "SETTINGS"
|
||||
|
@@ -1,7 +1,7 @@
|
||||
[gd_scene load_steps=3 format=3 uid="uid://ceqjwmihj70lt"]
|
||||
|
||||
[ext_resource type="Texture2D" uid="uid://cvhoq7aubxlmq" path="res://sprites/ui/magnetic_skill_icon.png" id="1_wnfk3"]
|
||||
[ext_resource type="Script" uid="uid://0obbehfd8fki" path="res://scripts/ui/skill_button.gd" id="2_m2732"]
|
||||
[ext_resource type="Script" uid="uid://bw8dlgq86jrtt" path="res://scripts/UI/SkillButton.cs" id="2_m2732"]
|
||||
|
||||
[node name="SkillButton" type="Button"]
|
||||
offset_right = 8.0
|
||||
|
@@ -1,6 +1,6 @@
|
||||
[gd_scene load_steps=2 format=3 uid="uid://dyjumgjkqrufa"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://vmhlsc3fu3bn" path="res://autoloads/ui_manager.gd" id="1_53w4j"]
|
||||
[ext_resource type="Script" uid="uid://c3ldmnrwperr4" path="res://Autoloads/UIManager.cs" id="1_53w4j"]
|
||||
|
||||
[node name="UiManager" type="Node"]
|
||||
script = ExtResource("1_53w4j")
|
||||
|
@@ -16,7 +16,7 @@ config/name_localized={
|
||||
"pl": "Przygody Pana Cegły"
|
||||
}
|
||||
config/version="in-dev"
|
||||
run/main_scene="uid://cl00e2ocomk3m"
|
||||
run/main_scene="uid://bhad760x3vvco"
|
||||
config/use_custom_user_dir=true
|
||||
config/custom_user_dir_name="MrBrickAdventures"
|
||||
config/features=PackedStringArray("4.4", "C#", "GL Compatibility")
|
||||
@@ -34,11 +34,11 @@ PhantomCameraManager="*res://addons/phantom_camera/scripts/managers/phantom_came
|
||||
AudioController="*res://objects/audio_controller.tscn"
|
||||
SteamIntegrationNode="*res://objects/steam_integration.tscn"
|
||||
SteamControllerInput="*res://autoloads/steam_controller_input.gd"
|
||||
Console="*res://addons/console/console.gd"
|
||||
AchievementsManager="*res://objects/achievements.tscn"
|
||||
ConfigFileHandler="*res://autoloads/config_file_handler.gd"
|
||||
UiManager="*res://autoloads/ui_manager.gd"
|
||||
SaveSystem="*res://autoloads/save_system.gd"
|
||||
UIManager="*res://Autoloads/UIManager.cs"
|
||||
ConfigFileHandler="*res://Autoloads/ConfigFileHandler.cs"
|
||||
SaveSystem="*res://Autoloads/SaveSystem.cs"
|
||||
Console="*res://addons/console/console.gd"
|
||||
|
||||
[debug]
|
||||
|
||||
@@ -74,6 +74,7 @@ enabled=PackedStringArray("res://addons/console/plugin.cfg", "res://addons/phant
|
||||
coins=""
|
||||
levers=""
|
||||
player=""
|
||||
Collectables=""
|
||||
|
||||
[gui]
|
||||
|
||||
|
@@ -1,9 +1,9 @@
|
||||
[gd_resource type="Resource" script_class="LevelResource" load_steps=2 format=3 uid="uid://dsq0y2iw7tfmk"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://cp68km8bykymb" path="res://scripts/resources/level_resource.gd" id="1_8mmd7"]
|
||||
[ext_resource type="Script" uid="uid://c2h0pqhxiqswe" path="res://scripts/Resources/LevelResource.cs" id="1_8mmd7"]
|
||||
|
||||
[resource]
|
||||
script = ExtResource("1_8mmd7")
|
||||
level_name = "LEVEL_5_NAME"
|
||||
scene_path = "res://scenes/level_forest_5.tscn"
|
||||
LevelName = "LEVEL_5_NAME"
|
||||
ScenePath = "res://scenes/level_forest_5.tscn"
|
||||
metadata/_custom_type_script = "uid://cp68km8bykymb"
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user