diff --git a/.gitignore b/.gitignore index 4709183..93eaf00 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,9 @@ # Godot 4+ specific ignores .godot/ +.vscode/ + +build/ + +resources/concept art/ + +resources/textures/beehive.png~ diff --git a/addons/anim_player_refactor/lib/anim_player_refactor.gd b/addons/anim_player_refactor/lib/anim_player_refactor.gd new file mode 100644 index 0000000..9e533e4 --- /dev/null +++ b/addons/anim_player_refactor/lib/anim_player_refactor.gd @@ -0,0 +1,207 @@ +## Core utility class to handle all refactoring logic + +const EditorUtil := preload("res://addons/anim_player_refactor/lib/editor_util.gd") + +var _editor_plugin: EditorPlugin +var _undo_redo: EditorUndoRedoManager + +func _init(editor_plugin: EditorPlugin) -> void: + _editor_plugin = editor_plugin + _undo_redo = editor_plugin.get_undo_redo() + +# Nodes +func rename_node_path(anim_player: AnimationPlayer, old: NodePath, new: NodePath): + if old == new: + return + + _undo_redo.create_action("Refactor node tracks", UndoRedo.MERGE_ALL, anim_player) + + _foreach_animation(anim_player, func(animation: Animation): + for i in animation.get_track_count(): + var path := animation.track_get_path(i) + var node_path := path.get_concatenated_names() + + if node_path == old.get_concatenated_names(): + var new_path := new.get_concatenated_names() + ":" + path.get_concatenated_subnames() + animation.track_set_path(i, NodePath(new_path)) + + _undo_redo.add_do_property(animation, "tracks/%d/path" % i, new_path) + _undo_redo.add_undo_property(animation, "tracks/%d/path" % i, path) + ) + + _undo_redo.commit_action() + + +func remove_node_path(anim_player: AnimationPlayer, node_path: NodePath): + _undo_redo.create_action("Remove node tracks", UndoRedo.MERGE_ALL, anim_player) + + _foreach_animation_restore(anim_player, _undo_redo, func(animation: Animation): + var removed_tracks = 0 + + for i in range(animation.get_track_count() - 1, -1, -1): + var path = animation.track_get_path(i) + + if NodePath(path.get_concatenated_names()) == node_path: + removed_tracks += 1 + _undo_redo.add_do_method(animation, &'remove_track', i) + + return removed_tracks + ) + + _undo_redo.commit_action() + + +# Tracks +func rename_track_path(anim_player: AnimationPlayer, old: NodePath, new: NodePath): + if old == new: + return + + _undo_redo.create_action("Refactor track paths", UndoRedo.MERGE_ALL, anim_player) + + _foreach_animation(anim_player, func(animation: Animation): + for i in animation.get_track_count(): + var path = animation.track_get_path(i) + + if path == old: + animation.track_set_path(i, new) + + _undo_redo.add_do_property(animation, "tracks/%d/path" % i, new) + _undo_redo.add_undo_property(animation, "tracks/%d/path" % i, old) + ) + + _undo_redo.commit_action() + + +func remove_track_path(anim_player: AnimationPlayer, property_path: NodePath): + _undo_redo.create_action("Remove tracks", UndoRedo.MERGE_ALL, anim_player) + + _foreach_animation_restore(anim_player, _undo_redo, func(animation: Animation): + var removed_tracks = 0 + + for i in range(animation.get_track_count() - 1, -1, -1): + var path = animation.track_get_path(i) + + if path == property_path: + removed_tracks += 1 + _undo_redo.add_do_method(animation, &'remove_track', i) + + return removed_tracks + ) + + _undo_redo.commit_action() + +# Method tracks +func rename_method(anim_player, old: NodePath, new: NodePath): + if old == new: + return + + var node_path := NodePath(old.get_concatenated_names()) + var old_method := old.get_concatenated_subnames() + var new_method := new.get_concatenated_subnames() + + _undo_redo.create_action("Rename method keys", UndoRedo.MERGE_ALL, anim_player) + + _foreach_animation(anim_player, func(animation: Animation): + for i in animation.get_track_count(): + if (animation.track_get_type(i) == Animation.TYPE_METHOD and animation.track_get_path(i) == node_path): + for j in animation.track_get_key_count(i): + var name := animation.method_track_get_name(i, j) + if name == old_method: + var old_method_params := { + "method": old_method, + "args": animation.method_track_get_params(i, j) + } + + var method_params := { + "method": new_method, + "args": animation.method_track_get_params(i, j) + } + + _undo_redo.add_do_method(animation, &'track_set_key_value', i, j, method_params) + _undo_redo.add_undo_method(animation, &'track_set_key_value', i, j, old_method_params) + ) + + _undo_redo.commit_action() + + +func remove_method(anim_player: AnimationPlayer, method_path: NodePath): + _undo_redo.create_action("Remove method keys", UndoRedo.MERGE_ALL, anim_player) + + _foreach_animation_restore(anim_player, _undo_redo, func(animation: Animation): + for i in animation.get_track_count(): + if ( + animation.track_get_type(i) == Animation.TYPE_METHOD + and StringName(animation.track_get_path(i)) == method_path.get_concatenated_names() + ): + for j in range(animation.track_get_key_count(i) - 1, -1, -1): + var name := animation.method_track_get_name(i, j) + if name == method_path.get_concatenated_subnames(): + _undo_redo.add_do_method(animation, &'track_remove_key', i, j) + return 0 + ) + + _undo_redo.commit_action() + + +# Root +func change_root(anim_player: AnimationPlayer, new_path: NodePath): + var current_root: Node = anim_player.get_node(anim_player.root_node) + var new_root: Node = anim_player.get_node_or_null(new_path) + + if new_root == null: + return + + _undo_redo.create_action("Change animation player root", UndoRedo.MERGE_ALL, anim_player) + + _foreach_animation(anim_player, func(animation: Animation): + for i in animation.get_track_count(): + var path := animation.track_get_path(i) + var node := current_root.get_node_or_null(NodePath(path.get_concatenated_names())) + + if node == null: + push_warning("Invalid path: %s. Skipping root change." % path) + continue + + var updated_path = str(new_root.get_path_to(node)) + ":" + path.get_concatenated_subnames() + + _undo_redo.add_do_property(animation, "tracks/%d/path" % i, updated_path) + _undo_redo.add_undo_property(animation, "tracks/%d/path" % i, path) + ) + + _undo_redo.add_do_property(anim_player, "root_node", new_path) + _undo_redo.add_undo_property(anim_player, "root_node", anim_player.root_node) + + _undo_redo.commit_action() + + + +# Helper methods + +## Iterates over all animations in the animation player +static func _foreach_animation(anim_player: AnimationPlayer, callback: Callable): + for lib_name in anim_player.get_animation_library_list(): + var lib := anim_player.get_animation_library(lib_name) + for animation_name in lib.get_animation_list(): + var animation := lib.get_animation(animation_name) + callback.call(animation) + + +## Iterates over all animations in the animation player and adds a full revert to the undo stack +## Useful for do actions that remove tracks +static func _foreach_animation_restore(anim_player: AnimationPlayer, undo_redo: EditorUndoRedoManager, callback: Callable): + for lib_name in anim_player.get_animation_library_list(): + var lib := anim_player.get_animation_library(lib_name) + for animation_name in lib.get_animation_list(): + var animation := lib.get_animation(animation_name) + + var old_anim := animation.duplicate(true) + + var removed_tracked = callback.call(animation) + + for i in range(animation.get_track_count() - 1 - removed_tracked, -1, -1): + undo_redo.add_undo_method(animation, &'remove_track', i) + + for i in range(old_anim.get_track_count()): + undo_redo.add_undo_method(old_anim, &'copy_track', i, animation) + + undo_redo.add_undo_reference(old_anim) diff --git a/addons/anim_player_refactor/lib/editor_util.gd b/addons/anim_player_refactor/lib/editor_util.gd new file mode 100644 index 0000000..bbce3d6 --- /dev/null +++ b/addons/anim_player_refactor/lib/editor_util.gd @@ -0,0 +1,64 @@ +# Utility class for parsing and hacking the editor + +## Find menu button to add option to +static func find_animation_menu_button(node: Node) -> MenuButton: + var animation_editor := find_editor_control_with_class(node, "AnimationPlayerEditor") + if animation_editor: + return find_editor_control_with_class( + animation_editor, + "MenuButton", + func(node): return node.text == "Animation" + ) + + return null + + +## General utility to find a control in the editor using an iterative search +static func find_editor_control_with_class( + base: Control, + p_class_name: StringName, + condition := func(node: Node): return true + ) -> Node: + if base.get_class() == p_class_name and condition.call(base): + return base + + for child in base.get_children(): + if not child is Control: + continue + + var found = find_editor_control_with_class(child, p_class_name) + if found: + return found + + return null + + + +# Finds the active animation player (either pinned or selected) +static func find_active_anim_player(base_control: Control, scene_tree: Tree) -> AnimationPlayer: + var find_anim_player_recursive: Callable + + var pin_icon := scene_tree.get_theme_icon("Pin", "EditorIcons") + + var stack: Array[TreeItem] = [] + stack.append(scene_tree.get_root()) + + while not stack.is_empty(): + var current := stack.pop_back() as TreeItem + + # Check for pin icon + for i in current.get_button_count(0): + if current.get_button(0, i) == pin_icon: + var node := base_control.get_node_or_null(current.get_metadata(0)) + if node is AnimationPlayer: + return node + + if current.is_selected(0): + var node := base_control.get_node_or_null(current.get_metadata(0)) + if node is AnimationPlayer: + return node + + for i in range(current.get_child_count() - 1, -1, -1): + stack.push_back(current.get_child(i)) + + return null diff --git a/addons/anim_player_refactor/plugin.cfg b/addons/anim_player_refactor/plugin.cfg new file mode 100644 index 0000000..cfbfe9f --- /dev/null +++ b/addons/anim_player_refactor/plugin.cfg @@ -0,0 +1,7 @@ +[plugin] + +name="Animation Player Refactor" +description="Refactoring tools for AnimationPlayer libraries. Adds \"Refactor\" menu option under AnimationPlayer > Animation." +author="poohcom1" +version="0.1.4" +script="plugin.gd" diff --git a/addons/anim_player_refactor/plugin.gd b/addons/anim_player_refactor/plugin.gd new file mode 100644 index 0000000..d29481f --- /dev/null +++ b/addons/anim_player_refactor/plugin.gd @@ -0,0 +1,144 @@ +@tool +extends EditorPlugin + +const RefactorDialogue := preload("scenes/refactor_dialogue/refactor_dialogue.gd") + +const AnimPlayerInspectorButton := preload("scenes/inspector_button/inspector_button.gd") + +const EditorUtil := preload("lib/editor_util.gd") + +var activate_button: AnimPlayerInspectorButton +var refactor_dialogue: RefactorDialogue + +var anim_menu_button: MenuButton + +var _last_anim_player: AnimationPlayer +const SCENE_TREE_IDX := 0 +var _scene_tree: Tree + +func _enter_tree() -> void: + # Create dialogue + refactor_dialogue = load("res://addons/anim_player_refactor/scenes/refactor_dialogue/refactor_dialogue.tscn").instantiate() + get_editor_interface().get_base_control().add_child(refactor_dialogue) + refactor_dialogue.init(self) + # Create menu button + _add_refactor_option(func(): + refactor_dialogue.popup_centered() + refactor_dialogue.reset_size() + ) + + +func _exit_tree() -> void: + if refactor_dialogue and refactor_dialogue.is_inside_tree(): + get_editor_interface().get_base_control().remove_child(refactor_dialogue) + refactor_dialogue.queue_free() + + _remove_refactor_option() + + +func _handles(object: Object) -> bool: + if object is AnimationPlayer: + _last_anim_player = object + return false + + +# Editor methods +func get_anim_player() -> AnimationPlayer: + # Check for pinned animation + if not _scene_tree: + var _scene_tree_editor = EditorUtil.find_editor_control_with_class( + get_editor_interface().get_base_control(), + "SceneTreeEditor" + ) + + if not _scene_tree_editor: + push_error("[Animation Refactor] Could not find scene tree editor. Please report this.") + return null + + _scene_tree = _scene_tree_editor.get_child(SCENE_TREE_IDX) + + if not _scene_tree: + push_error("[Animation Refactor] Could not find scene tree editor. Please report this.") + return null + + var found_anim := EditorUtil.find_active_anim_player( + get_editor_interface().get_base_control(), + _scene_tree + ) + + if found_anim: + return found_anim + + # Get latest edited + return _last_anim_player + + +# Plugin buttons + +const TOOL_REFACTOR := 999 +const TOOL_ANIM_LIBRARY := 1 + +func _add_refactor_option(on_pressed: Callable): + var base_control := get_editor_interface().get_base_control() + if not anim_menu_button: + anim_menu_button = EditorUtil.find_animation_menu_button(base_control) + if not anim_menu_button: + push_error("Could not find Animation menu button. Please report this issue.") + return + + # Remove item up to "Manage Animations..." + var menu_popup := anim_menu_button.get_popup() + var items := [] + var count := menu_popup.item_count - 1 + + while count >= 0 and menu_popup.get_item_id(count) != TOOL_ANIM_LIBRARY: + if menu_popup.is_item_separator(count): + items.append({}) + else: + items.append({ + "shortcut": menu_popup.get_item_shortcut(count), + "id": menu_popup.get_item_id(count), + "icon": menu_popup.get_item_icon(count) + }) + + menu_popup.remove_item(count) + count -= 1 + + # Add refactor item + menu_popup.add_icon_item( + base_control.get_theme_icon(&"Reload", &"EditorIcons"), + "Refactor", + TOOL_REFACTOR, + ) + + # Re-add items + for i in range(items.size() - 1, -1, -1): + var item: Dictionary = items[i] + + if not item.is_empty(): + menu_popup.add_shortcut(item.shortcut, item.id) + menu_popup.set_item_icon(menu_popup.get_item_index(item.id), item.icon) + else: + menu_popup.add_separator() + + menu_popup.notification(NOTIFICATION_TRANSLATION_CHANGED) + + menu_popup.id_pressed.connect(_on_menu_button_pressed) + + +func _remove_refactor_option(): + if not anim_menu_button: + return + + var base_control := get_editor_interface().get_base_control() + + var menu_popup := anim_menu_button.get_popup() + menu_popup.remove_item(menu_popup.get_item_index(TOOL_REFACTOR)) + + menu_popup.id_pressed.disconnect(_on_menu_button_pressed) + + +func _on_menu_button_pressed(id: int): + if id == TOOL_REFACTOR: + refactor_dialogue.popup_centered() + diff --git a/addons/anim_player_refactor/scenes/autocomplete/autocomplete.gd b/addons/anim_player_refactor/scenes/autocomplete/autocomplete.gd new file mode 100644 index 0000000..9fafb2b --- /dev/null +++ b/addons/anim_player_refactor/scenes/autocomplete/autocomplete.gd @@ -0,0 +1,17 @@ +extends CodeEdit + + +func _ready() -> void: + code_completion_enabled = true + add_code_completion_option(CodeEdit.KIND_MEMBER, "Test", "test") + add_code_completion_option(CodeEdit.KIND_MEMBER, "Boo", "boo") + code_completion_prefixes = ["t", "b"] + + code_completion_requested.connect(func(): + add_code_completion_option(CodeEdit.KIND_MEMBER, "Test", "test") + add_code_completion_option(CodeEdit.KIND_MEMBER, "Boo", "boo") + update_code_completion_options(true) + ) + + text_changed.connect(func(): request_code_completion(true)) + diff --git a/addons/anim_player_refactor/scenes/autocomplete/autocomplete_option.gd b/addons/anim_player_refactor/scenes/autocomplete/autocomplete_option.gd new file mode 100644 index 0000000..7bd41c5 --- /dev/null +++ b/addons/anim_player_refactor/scenes/autocomplete/autocomplete_option.gd @@ -0,0 +1,50 @@ +## Autocomplete Class +extends OptionButton + +## LineEdit.text_change_rejected +signal text_change_rejected(rejected_substring: String) +## LineEdit.text_changed +signal text_changed(new_text: String) +## LineEdit.text_submitted +signal text_submitted(new_text: String) + +## LineEdit component +var edit: LineEdit = LineEdit.new() + +@export var get_autocomplete_options: Callable = func(text: String): return [] + +func _ready() -> void: + focus_mode = Control.FOCUS_NONE + edit.custom_minimum_size = size + get_popup().unfocusable = true + + add_child(edit) + edit.reset_size() + + edit.text_change_rejected.connect(func(arg): text_change_rejected.emit(arg)) + edit.text_changed.connect(func(arg): text_changed.emit(arg)) + edit.text_submitted.connect(func(arg): text_submitted.emit(arg)) + + edit.text_changed.connect(_update_options) + + edit.focus_entered.connect(_update_options) + edit.focus_exited.connect(clear) + + get_autocomplete_options = func(text: String): + return [ + "test", + "ashina", + "hello" + ].filter(func(el: String): return el.contains(text)) + +func _update_options(text: String = edit.text): + clear() + var options = get_autocomplete_options.call(text) + + for option in options: + if typeof(option) == TYPE_STRING: + add_item(option) + + show_popup() + + diff --git a/addons/anim_player_refactor/scenes/inspector_button/inspector_button.gd b/addons/anim_player_refactor/scenes/inspector_button/inspector_button.gd new file mode 100644 index 0000000..50b8a17 --- /dev/null +++ b/addons/anim_player_refactor/scenes/inspector_button/inspector_button.gd @@ -0,0 +1,37 @@ +extends EditorInspectorPlugin +signal button_clicked + +var button: Button +var button_text: String + +func _init(text: String) -> void: + button_text = text + +func _can_handle(object: Object) -> bool: + return object is AnimationPlayer + +func _parse_end(object: Object) -> void: + button = Button.new() + button.text = button_text + button.pressed.connect(func(): button_clicked.emit()) + + var margins := MarginContainer.new() + margins.add_theme_constant_override("margin_top", 8) + margins.add_theme_constant_override("margin_left", 16) + margins.add_theme_constant_override("margin_bottom", 8) + margins.add_theme_constant_override("margin_right", 16) + margins.add_child(button) + + var container = VBoxContainer.new() + container.add_theme_constant_override("separation", 0) + container.add_child(HSeparator.new()) + container.add_child(margins) + + var container_margins := MarginContainer.new() + container_margins.add_theme_constant_override("margin_top", 8) + container_margins.add_theme_constant_override("margin_left", 4) + container_margins.add_theme_constant_override("margin_bottom", 8) + container_margins.add_theme_constant_override("margin_right", 4) + container_margins.add_child(container) + + add_custom_control(container_margins) diff --git a/addons/anim_player_refactor/scenes/refactor_dialogue/components/anim_player_tree.gd b/addons/anim_player_refactor/scenes/refactor_dialogue/components/anim_player_tree.gd new file mode 100644 index 0000000..f09d13a --- /dev/null +++ b/addons/anim_player_refactor/scenes/refactor_dialogue/components/anim_player_tree.gd @@ -0,0 +1,176 @@ +@tool +extends Tree + +signal rendered + +const EditInfo := preload("edit_info.gd") + +@export var edittable_items := false + + +func _ready() -> void: + reset_size() + + +func render(editor_plugin: EditorPlugin, anim_player: AnimationPlayer) -> void: + clear() + + # Get paths + var animations = anim_player.get_animation_list() + var root_node := anim_player.get_node(anim_player.root_node) + + var track_paths := {} # Dictionary[NodePath, Dictionary[NodePath, EditInfo]] + + # Get EditInfo data + for anim_name in animations: + var animation := anim_player.get_animation(anim_name) + + for i in animation.get_track_count(): + var path := animation.track_get_path(i) + var type := animation.track_get_type(i) + + var node_path := NodePath(path.get_concatenated_names()) + var property_path := path.get_concatenated_subnames() + var node := root_node.get_node_or_null(node_path) + + var edit_infos: Array[EditInfo] = [] + + if not node_path in track_paths: + track_paths[node_path] = {} + match type: + Animation.TYPE_METHOD: + for j in animation.track_get_key_count(i): + var method_path = NodePath( + ( + path.get_concatenated_names() + + ":" + + animation.method_track_get_name(i, j) + ) + ) + + var edit_info = EditInfo.new( + EditInfo.Type.METHOD_TRACK, method_path, node_path, node, [anim_name] + ) + + edit_infos.append(edit_info) + _: + if not property_path.is_empty(): + var edit_info = EditInfo.new( + EditInfo.Type.VALUE_TRACK, path, node_path, node, [anim_name] + ) + + edit_infos.append(edit_info) + + # Combine + for info in edit_infos: + if not StringName(info.path) in track_paths[node_path]: + track_paths[node_path][StringName(info.path)] = info + else: + for name in info.animation_names: + if name in track_paths[node_path][StringName(info.path)].animation_names: continue + track_paths[node_path][StringName(info.path)].animation_names.append(name) + + # Sort + var paths := track_paths.keys() + paths.sort() + + var tree_root: TreeItem = create_item() + hide_root = true + + # Get icons + var gui := editor_plugin.get_editor_interface().get_base_control() + + # Render + for path in paths: + var node := root_node.get_node_or_null(path) + var icon := gui.get_theme_icon(node.get_class() if node != null else "", "EditorIcons") + + var path_item = create_item(tree_root) + path_item.set_editable(0, edittable_items) + if edittable_items: + path_item.set_text(0, path) + if path.get_concatenated_names() == ".." and node: + path_item.set_suffix(0, "(" + node.name + ")") + else: + path_item.set_text(0, node.name if node else path) + path_item.set_icon(0, icon) + path_item.set_metadata(0, EditInfo.new(EditInfo.Type.NODE, path, path, node, [])) + path_item.add_button(0, gui.get_theme_icon("Edit", "EditorIcons")) + path_item.add_button(0, gui.get_theme_icon("Remove", "EditorIcons")) + + var property_paths: Array = track_paths[path].keys() + property_paths.sort() + + for property_path in property_paths: + var info: EditInfo = track_paths[path][property_path] + var edit_type = EditInfo.Type.VALUE_TRACK + var icon_type = "KeyValue" + var invalid = false + var property := info.path.get_concatenated_subnames() + if node == null: + invalid = true + icon_type = "" + elif node.has_method(StringName(property)): + icon_type = "KeyCall" + elif str(info.path) in node or node.get_indexed(NodePath(property)) != null: + pass + else: + invalid = true + icon_type = "" + + var property_item = create_item(path_item) + property_item.set_editable(0, edittable_items) + property_item.set_text(0, property) + property_item.set_icon(0, gui.get_theme_icon(icon_type, "EditorIcons")) + property_item.set_metadata(0, info) + property_item.add_button(0, gui.get_theme_icon("Edit", "EditorIcons")) + property_item.add_button(0, gui.get_theme_icon("Remove", "EditorIcons")) + + if invalid: + property_item.set_custom_color(0, Color.RED) + property_item.set_tooltip_text(0, "Possibly invalid value: %s" % info.path) + rendered.emit() + + +func set_filter(filter: String): + var item_stack := [] + var visited := [] + + item_stack.append(get_root()) + + # Post-order traversal + while not item_stack.is_empty(): + var current: TreeItem = item_stack[item_stack.size() - 1] + var children = current.get_children() if current else [] + + var children_all_visited := true + var child_visible := false + + for child in children: + children_all_visited = children_all_visited and child in visited + child_visible = child_visible or child.visible + + if children_all_visited: + item_stack.pop_back() + if current: + if current == get_root() or filter.is_empty() or child_visible: + current.visible = true + else: + current.visible = current.get_text(0).to_lower().contains(filter.to_lower()) + visited.append(current) + else: + item_stack += children + + +## Class to cache heirarchy of nodes +## Unused +class TreeNode: + var node: Node + var path: String + var children: Dictionary + var parent: TreeNode + + func debug(level = 0): + print(" - ".repeat(level) + node.name) + for name in children: + children[name].debug(level + 1) diff --git a/addons/anim_player_refactor/scenes/refactor_dialogue/components/edit_info.gd b/addons/anim_player_refactor/scenes/refactor_dialogue/components/edit_info.gd new file mode 100644 index 0000000..c738759 --- /dev/null +++ b/addons/anim_player_refactor/scenes/refactor_dialogue/components/edit_info.gd @@ -0,0 +1,26 @@ +## Data class for storing information on tracks +extends Object + +enum Type { VALUE_TRACK, METHOD_TRACK, NODE } + +## Type of info being edited +var type: Type + +## Full path to property. Same as node_path if type is NODE +var path: NodePath + +## Full path to node +var node_path: NodePath + +## Cached node +var node: Node + +## Animations the track is used in +var animation_names: Array[String] = [] + +func _init(type: Type, path: NodePath, node_path: NodePath, node: Node, animation_names: Array[String]) -> void: + self.type = type + self.path = path + self.node = node + self.node_path = node_path + self.animation_names = animation_names diff --git a/addons/anim_player_refactor/scenes/refactor_dialogue/components/node_select.gd b/addons/anim_player_refactor/scenes/refactor_dialogue/components/node_select.gd new file mode 100644 index 0000000..c3655a9 --- /dev/null +++ b/addons/anim_player_refactor/scenes/refactor_dialogue/components/node_select.gd @@ -0,0 +1,30 @@ +@tool +extends Tree + +var _editor_plugin: EditorPlugin +var _gui: Control + +func init(editor_plugin: EditorPlugin): + _editor_plugin = editor_plugin + _gui = editor_plugin.get_editor_interface().get_base_control() + +func render(anim_player: AnimationPlayer): + clear() + + _create_items(null, anim_player, anim_player.owner) + + +func _create_items(parent: TreeItem, anim_player: AnimationPlayer, node: Node): + var icon := _gui.get_theme_icon(node.get_class(), "EditorIcons") + + var item := create_item(parent) + item.set_text(0, node.name) + item.set_icon(0, icon) + item.set_metadata(0, anim_player.get_path_to(node)) + + if anim_player.get_path_to(node) == anim_player.root_node: + item.select(0) + scroll_to_item(item) + + for child in node.get_children(): + _create_items(item, anim_player, child) diff --git a/addons/anim_player_refactor/scenes/refactor_dialogue/refactor_dialogue.gd b/addons/anim_player_refactor/scenes/refactor_dialogue/refactor_dialogue.gd new file mode 100644 index 0000000..6f5f265 --- /dev/null +++ b/addons/anim_player_refactor/scenes/refactor_dialogue/refactor_dialogue.gd @@ -0,0 +1,235 @@ +@tool +extends AcceptDialog + +const CustomEditorPlugin := preload("res://addons/anim_player_refactor/plugin.gd") +const EditorUtil := preload("res://addons/anim_player_refactor/lib/editor_util.gd") + +const AnimPlayerRefactor = preload("res://addons/anim_player_refactor/lib/anim_player_refactor.gd") +const AnimPlayerTree := preload("components/anim_player_tree.gd") +const EditInfo := preload("components/edit_info.gd") + +const NodeSelect := preload("components/node_select.gd") + +var _editor_plugin: CustomEditorPlugin +var _editor_interface: EditorInterface +var _anim_player_refactor: AnimPlayerRefactor +var _anim_player: AnimationPlayer + +@onready var anim_player_tree: AnimPlayerTree = $%AnimPlayerTree + +@onready var change_root: Button = $%ChangeRoot + +@onready var edit_dialogue: ConfirmationDialog = $%EditDialogue +@onready var edit_dialogue_input: LineEdit = $%EditInput +@onready var edit_dialogue_button: Button = $%EditDialogueButton # Just for pretty icon display +@onready var edit_full_path_toggle: CheckButton = $%EditFullPathToggle +@onready var edit_anim_list: Label = $%EditAnimationList + +@onready var node_select_dialogue: ConfirmationDialog = $%NodeSelectDialogue +@onready var node_select: NodeSelect = $%NodeSelect + +@onready var confirmation_dialogue: ConfirmationDialog = $%ConfirmationDialog + + +var is_full_path: bool: + set(val): edit_full_path_toggle.button_pressed = val + get: return edit_full_path_toggle.button_pressed + + +func init(editor_plugin: CustomEditorPlugin) -> void: + _editor_plugin = editor_plugin + _editor_interface = editor_plugin.get_editor_interface() + _anim_player_refactor = AnimPlayerRefactor.new(_editor_plugin) + node_select.init(_editor_plugin) + + +func _ready() -> void: + wrap_controls = true + about_to_popup.connect(render) + + +func render(): + _anim_player = _editor_plugin.get_anim_player() + + if not _anim_player or not _anim_player is AnimationPlayer: + push_error("AnimationPlayer is null or invalid") + return + + # Render track tree + anim_player_tree.render(_editor_plugin, _anim_player) + + # Render root node button + var root_node: Node = _anim_player.get_node(_anim_player.root_node) + var node_path := str(_anim_player.owner.get_path_to(root_node)) + if node_path == ".": + node_path = _anim_player.owner.name + else: + node_path = _anim_player.owner.name + "/" + node_path + + change_root.text = "%s (Change)" % node_path + change_root.icon = _editor_interface.get_base_control().get_theme_icon( + root_node.get_class(), "EditorIcons" + ) + + +# Rename +enum Action { Rename, Delete } +var _current_info: EditInfo + +func _on_tree_activated(): + _current_info = anim_player_tree.get_selected().get_metadata(0) + _on_action(Action.Rename) + + +func _on_tree_button_clicked(item: TreeItem, column: int, id: int, mouse_button_index: int): + _current_info = item.get_metadata(column) + if id == 0: + _on_action(Action.Rename) + elif id == 1: + _on_action(Action.Delete) + + +func _on_action(action: Action): + if action == Action.Rename: + _render_edit_dialogue() + edit_dialogue.popup_centered() + edit_dialogue_input.grab_focus() + edit_dialogue_input.caret_column = edit_dialogue_input.text.length() + elif action == Action.Delete: + var track_path = _current_info.path + var anim_player = _editor_plugin.get_anim_player() + var node = anim_player\ + .get_node(anim_player.root_node)\ + .get_node_or_null(_current_info.path) + + if node: + track_path = node.name + var property := _current_info.path.get_concatenated_subnames() + if not property.is_empty(): + track_path += ":" + property + + var msg = 'Delete all tracks with the path "%s"?' % track_path + + if _current_info.type == EditInfo.Type.NODE: + msg = 'Delete tracks belonging to the node "%s"?' % track_path + + _show_confirmation(msg, _remove) + + +func _render_edit_dialogue(): + var info := _current_info + + if info.type == EditInfo.Type.METHOD_TRACK: + is_full_path = false + edit_full_path_toggle.disabled = true + edit_full_path_toggle.visible = false + else: + edit_full_path_toggle.disabled = false + edit_full_path_toggle.visible = true + + if is_full_path: + edit_dialogue_input.text = info.path + else: + if info.type == EditInfo.Type.NODE: + edit_dialogue.title = "Rename node" + edit_dialogue_input.text = info.path.get_name(info.path.get_name_count() - 1) + elif info.type == EditInfo.Type.VALUE_TRACK: + edit_dialogue.title = "Rename Value" + edit_dialogue_input.text = info.path.get_concatenated_subnames() + elif info.type == EditInfo.Type.METHOD_TRACK: + edit_dialogue.title = "Rename method" + edit_dialogue_input.text = info.path.get_concatenated_subnames() + edit_dialogue_button.text = info.node_path + if str(info.node_path) in [".", ".."] and info.node: + # Show name for relatives paths + edit_dialogue_button.text = info.node.name + if info.node: + # Show icon + edit_dialogue_button.icon = _editor_interface.get_base_control().get_theme_icon( + info.node.get_class(), "EditorIcons" + ) + edit_anim_list.text = "" + for name in _current_info.animation_names: + edit_anim_list.text += " • " + name + "\n" + + +## Toggle full path and re-render edit dialogue +func _on_full_path_toggled(pressed: bool): + _render_edit_dialogue() + + +## Callback on rename +func _on_rename_confirmed(_arg0 = null): + var new := edit_dialogue_input.text + + edit_dialogue.hide() + if not _anim_player or not _anim_player is AnimationPlayer: + push_error("AnimationPlayer is null or invalid") + return + + if new.is_empty(): + return + + var info: EditInfo = _current_info + if info.type == EditInfo.Type.NODE: + var old := info.path + var new_path = new + if not is_full_path: + new_path = "" + for i in range(info.path.get_name_count() - 1): + new_path += info.path.get_name(i) + "/" + new_path += new + _anim_player_refactor.rename_node_path(_anim_player, old, NodePath(new)) + elif info.type == EditInfo.Type.VALUE_TRACK: + var old_path := info.path + var new_path := NodePath(new) + if not is_full_path: + new_path = info.node_path.get_concatenated_names() + ":" + new + _anim_player_refactor.rename_track_path(_anim_player, old_path, new_path) + elif info.type == EditInfo.Type.METHOD_TRACK: + var old_method := info.path + var new_method := NodePath( + info.path.get_concatenated_names() + ":" + new + ) + _anim_player_refactor.rename_method(_anim_player, old_method, new_method) + await get_tree().create_timer(0.1).timeout + render() + + +func _remove(): + var info: EditInfo = _current_info + match info.type: + EditInfo.Type.NODE: + _anim_player_refactor.remove_node_path(_anim_player, info.node_path) + EditInfo.Type.VALUE_TRACK: + _anim_player_refactor.remove_track_path(_anim_player, info.path) + EditInfo.Type.METHOD_TRACK: + _anim_player_refactor.remove_method(_anim_player, info.path) + await get_tree().create_timer(0.1).timeout + render() + + +# Change root +func _on_change_root_pressed(): + node_select_dialogue.popup_centered() + node_select.render(_editor_plugin.get_anim_player()) + + +func _on_node_select_confirmed(): + var path: NodePath = node_select.get_selected().get_metadata(0) + + _anim_player_refactor.change_root(_editor_plugin.get_anim_player(), path) + + await get_tree().create_timer(0.1).timeout + render() + + +# Confirmation +func _show_confirmation(text: String, on_confirmed: Callable): + for c in confirmation_dialogue.confirmed.get_connections(): + confirmation_dialogue.confirmed.disconnect(c.callable) + + confirmation_dialogue.confirmed.connect(on_confirmed, CONNECT_ONE_SHOT) + confirmation_dialogue.popup_centered() + confirmation_dialogue.dialog_text = text + diff --git a/addons/anim_player_refactor/scenes/refactor_dialogue/refactor_dialogue.tscn b/addons/anim_player_refactor/scenes/refactor_dialogue/refactor_dialogue.tscn new file mode 100644 index 0000000..cc1dae8 --- /dev/null +++ b/addons/anim_player_refactor/scenes/refactor_dialogue/refactor_dialogue.tscn @@ -0,0 +1,157 @@ +[gd_scene load_steps=4 format=3 uid="uid://cyfxysds8uhnx"] + +[ext_resource type="Script" path="res://addons/anim_player_refactor/scenes/refactor_dialogue/refactor_dialogue.gd" id="1_nkqdl"] +[ext_resource type="Script" path="res://addons/anim_player_refactor/scenes/refactor_dialogue/components/anim_player_tree.gd" id="2_7pqfs"] +[ext_resource type="Script" path="res://addons/anim_player_refactor/scenes/refactor_dialogue/components/node_select.gd" id="3_87x4i"] + +[node name="RefactorDialogue" type="AcceptDialog"] +title = "Refactor Animations" +size = Vector2i(400, 599) +ok_button_text = "Close" +script = ExtResource("1_nkqdl") + +[node name="VBoxContainer" type="VBoxContainer" parent="."] +offset_left = 8.0 +offset_top = 8.0 +offset_right = 392.0 +offset_bottom = 550.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 +theme_override_constants/separation = 8 + +[node name="TreeContainer" type="VBoxContainer" parent="VBoxContainer"] +layout_mode = 2 + +[node name="Label" type="Label" parent="VBoxContainer/TreeContainer"] +layout_mode = 2 +text = "Properties:" + +[node name="FilterInput" type="LineEdit" parent="VBoxContainer/TreeContainer"] +layout_mode = 2 +placeholder_text = "Filter..." +caret_blink = true +caret_blink_interval = 0.5 + +[node name="AnimPlayerTree" type="Tree" parent="VBoxContainer/TreeContainer"] +unique_name_in_owner = true +custom_minimum_size = Vector2(300, 400) +layout_mode = 2 +size_flags_vertical = 3 +hide_root = true +scroll_horizontal_enabled = false +script = ExtResource("2_7pqfs") + +[node name="RootNodeContainer" type="VBoxContainer" parent="VBoxContainer"] +layout_mode = 2 + +[node name="Label" type="Label" parent="VBoxContainer/RootNodeContainer"] +layout_mode = 2 +text = "Root Node" + +[node name="HBoxContainer" type="HBoxContainer" parent="VBoxContainer/RootNodeContainer"] +layout_mode = 2 + +[node name="ChangeRoot" type="Button" parent="VBoxContainer/RootNodeContainer/HBoxContainer"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +text = "Change Root" + +[node name="EditDialogue" type="ConfirmationDialog" parent="."] +unique_name_in_owner = true +title = "Renaming" +position = Vector2i(0, 36) +size = Vector2i(230, 239) + +[node name="VBoxContainer" type="VBoxContainer" parent="EditDialogue"] +offset_left = 8.0 +offset_top = 8.0 +offset_right = 222.0 +offset_bottom = 190.0 + +[node name="HBoxContainer" type="HBoxContainer" parent="EditDialogue/VBoxContainer"] +layout_mode = 2 + +[node name="EditDialogueButton" type="Button" parent="EditDialogue/VBoxContainer/HBoxContainer"] +unique_name_in_owner = true +layout_mode = 2 +focus_mode = 0 + +[node name="EditInput" type="LineEdit" parent="EditDialogue/VBoxContainer"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_vertical = 0 + +[node name="HBoxContainer2" type="HBoxContainer" parent="EditDialogue/VBoxContainer"] +layout_mode = 2 + +[node name="Label" type="Label" parent="EditDialogue/VBoxContainer/HBoxContainer2"] +layout_mode = 2 +text = "Used in:" + +[node name="EditFullPathToggle" type="CheckButton" parent="EditDialogue/VBoxContainer/HBoxContainer2"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 10 +text = "Edit full path" + +[node name="MarginContainer" type="MarginContainer" parent="EditDialogue/VBoxContainer"] +custom_minimum_size = Vector2(0, 100) +layout_mode = 2 + +[node name="ColorRect" type="ColorRect" parent="EditDialogue/VBoxContainer/MarginContainer"] +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 +color = Color(0, 0, 0, 0.211765) + +[node name="ScrollContainer" type="ScrollContainer" parent="EditDialogue/VBoxContainer/MarginContainer"] +layout_mode = 2 +size_flags_vertical = 3 +horizontal_scroll_mode = 0 + +[node name="MarginContainer" type="MarginContainer" parent="EditDialogue/VBoxContainer/MarginContainer/ScrollContainer"] +layout_mode = 2 +theme_override_constants/margin_left = 2 +theme_override_constants/margin_top = 2 +theme_override_constants/margin_right = 2 +theme_override_constants/margin_bottom = 2 + +[node name="EditAnimationList" type="Label" parent="EditDialogue/VBoxContainer/MarginContainer/ScrollContainer/MarginContainer"] +unique_name_in_owner = true +layout_mode = 2 +text = "Test +Test 2" + +[node name="NodeSelectDialogue" type="ConfirmationDialog" parent="."] +unique_name_in_owner = true +title = "Select a node..." +size = Vector2i(616, 557) +ok_button_text = "Change" + +[node name="NodeSelect" type="Tree" parent="NodeSelectDialogue"] +unique_name_in_owner = true +custom_minimum_size = Vector2(600, 500) +offset_left = 8.0 +offset_top = 8.0 +offset_right = 608.0 +offset_bottom = 508.0 +scroll_horizontal_enabled = false +script = ExtResource("3_87x4i") + +[node name="ConfirmationDialog" type="ConfirmationDialog" parent="."] +unique_name_in_owner = true +size = Vector2i(300, 200) +ok_button_text = "Delete" +dialog_autowrap = true + +[connection signal="about_to_popup" from="." to="VBoxContainer/TreeContainer/FilterInput" method="clear"] +[connection signal="text_changed" from="VBoxContainer/TreeContainer/FilterInput" to="VBoxContainer/TreeContainer/AnimPlayerTree" method="set_filter"] +[connection signal="button_clicked" from="VBoxContainer/TreeContainer/AnimPlayerTree" to="." method="_on_tree_button_clicked"] +[connection signal="item_activated" from="VBoxContainer/TreeContainer/AnimPlayerTree" to="." method="_on_tree_activated"] +[connection signal="rendered" from="VBoxContainer/TreeContainer/AnimPlayerTree" to="VBoxContainer/TreeContainer/FilterInput" method="clear"] +[connection signal="pressed" from="VBoxContainer/RootNodeContainer/HBoxContainer/ChangeRoot" to="." method="_on_change_root_pressed"] +[connection signal="confirmed" from="EditDialogue" to="." method="_on_rename_confirmed"] +[connection signal="text_submitted" from="EditDialogue/VBoxContainer/EditInput" to="." method="_on_rename_confirmed"] +[connection signal="toggled" from="EditDialogue/VBoxContainer/HBoxContainer2/EditFullPathToggle" to="." method="_on_full_path_toggled"] +[connection signal="confirmed" from="NodeSelectDialogue" to="." method="_on_node_select_confirmed"] diff --git a/addons/gd-plug/plug.gd b/addons/gd-plug/plug.gd new file mode 100644 index 0000000..14d2cdd --- /dev/null +++ b/addons/gd-plug/plug.gd @@ -0,0 +1,1163 @@ +@tool +extends SceneTree + +signal updated(plugin) + +const VERSION = "0.2.5" +const DEFAULT_PLUGIN_URL = "https://git::@github.com/%s.git" +const DEFAULT_PLUG_DIR = "res://.plugged" +const DEFAULT_CONFIG_PATH = DEFAULT_PLUG_DIR + "/index.cfg" +const DEFAULT_USER_PLUG_SCRIPT_PATH = "res://plug.gd" +const DEFAULT_BASE_PLUG_SCRIPT_PATH = "res://addons/gd-plug/plug.gd" + +const ENV_PRODUCTION = "production" +const ENV_TEST = "test" +const ENV_FORCE = "force" +const ENV_KEEP_IMPORT_FILE = "keep_import_file" +const ENV_KEEP_IMPORT_RESOURCE_FILE = "keep_import_resource_file" + +const MSG_PLUG_START_ASSERTION = "_plug_start() must be called first" + +var project_dir +var installation_config = ConfigFile.new() +var logger = _Logger.new() + +var _installed_plugins +var _plugged_plugins = {} + +var _threads = [] +var _mutex = Mutex.new() +var _start_time = 0 +var threadpool = _ThreadPool.new(logger) + + +func _init(): + threadpool.connect("all_thread_finished", request_quit) + project_dir = DirAccess.open("res://") + +func _initialize(): + var args = OS.get_cmdline_args() + # Trim unwanted args passed to godot executable + for arg in Array(args): + args.remove_at(0) + if "plug.gd" in arg: + break + + var help = false + var help_config = false + for arg in args: + # NOTE: "--key" or "-key" will always be consumed by godot executable, see https://github.com/godotengine/godot/issues/8721 + var key = arg.to_lower() + match key: + "help": + help = true + "help-config": + help_config = true + "detail": + logger.log_format = _Logger.DEFAULT_LOG_FORMAT_DETAIL + "debug", "d": + logger.log_level = _Logger.LogLevel.DEBUG + "quiet", "q", "silent": + logger.log_level = _Logger.LogLevel.NONE + "production": + OS.set_environment(ENV_PRODUCTION, "true") + "test": + OS.set_environment(ENV_TEST, "true") + "force": + OS.set_environment(ENV_FORCE, "true") + "keep-import-file": + OS.set_environment(ENV_KEEP_IMPORT_FILE, "true") + "keep-import-resource-file": + OS.set_environment(ENV_KEEP_IMPORT_RESOURCE_FILE, "true") + + logger.debug("cmdline_args: %s" % args) + _start_time = Time.get_ticks_msec() + _plug_start() + if help_config: + show_config_syntax() + elif help or args.size() == 0: + show_syntax() + else: + _plugging() + match args[0]: + "init": + _plug_init() + "install", "update": + _plug_install() + "uninstall": + _plug_uninstall() + "clean": + _plug_clean() + "upgrade": + _plug_upgrade() + "status": + _plug_status() + "version": + logger.info(VERSION) + _: + logger.error("Unknown command %s" % args[0]) + show_syntax() + # NOTE: Do no put anything after this line except request_quit(), as _plug_*() may call request_quit() + request_quit() + +func show_syntax(): + logger.info("gd-plug - Minimal plugin manager for Godot") + logger.info("") + logger.info("Usage: godot --headless -s plug.gd action [options...]") + logger.info("") + logger.info("Actions:") + var actions = { + "init": "Initialize current project by creating plug.gd at root", + "status": "Check the status of plugins(installed, added or removed), execute this command whenever in doubts", + "install(alias update)": "Install or update plugins based on plug.gd", + "uninstall": "Uninstall all plugins, regardless of plug.gd", + "clean": "Clean unused files/folders from /.plugged", + "upgrade": "Upgrade addons/gd-plug/plug.gd to the latest version", + "version": "Print current version of gd-plug", + } + logger.indent() + logger.table_start() + for action_name in actions: + logger.table_row([action_name, actions[action_name]]) + logger.table_end() + logger.dedent() + + logger.info("") + logger.info("Options:") + var options = { + "production": "Install only plugins not marked as dev, or uninstall already installed dev plugins", + "test": "Testing mode, no files will actually be installed/uninstalled", + "force": "Force gd-plug to overwrite destination files when running install command. *WARNING: Check README for more details*", + "keep-import-file": "Keep \".import\" files generated by plugin, when run uninstall command", + "keep-import-resource-file": "Keep files located in \".import\" that generated by plugin, when run uninstall command", + "debug(alias d)": "Print debug message", + "detail": "Print with datetime and log level, \"[{time}] [{level}] {msg}\"", + "quiet(alias q, silent)": "Disable logging", + "help": "Show this help", + "help-config": "plug.gd configuration documentation" + } + logger.indent() + logger.table_start() + for option_name in options: + logger.table_row([option_name, options[option_name]]) + logger.table_end() + logger.dedent() + logger.info("") + +func show_config_syntax(): + logger.info("Configs: plug(src, args={})") + logger.info("") + logger.info("Sources:") + logger.indent() + logger.info("Github repo: \"username/repo\", for example, \"imjp94/gd-plug\"") + logger.info("or") + logger.info("Any valid git url, for example, \"git@github.com:username/repo.git\"") + logger.dedent() + logger.info("") + logger.info("Arguments:") + var arguments = { + "include": "Array of strings that define what files or directory to include. Only \"addons/\" will be included if omitted", + "exclude": "Array of strings that define what files or directory to exclude", + "branch": "Name of branch to freeze to", + "tag": "Name of tag to freeze to", + "commit": "Commit hash string to freeze to, must be full length 40 digits commit-hash, for example, 7a642f90d3fb88976dd913051de994e58e838d1a", + "dev": "Boolean to mark the plugin as dev or not, plugin marked as dev will not be installed when production command given", + "on-updated": "Post update hook, a function name declared in plug.gd that will be called whenever the plugin installed/updated" + } + logger.indent() + logger.table_start() + for argument_name in arguments: + logger.table_row([argument_name, arguments[argument_name]]) + logger.table_end() + logger.dedent() + logger.info("") + +func _process(delta): + threadpool.process(delta) + +func _finalize(): + _plug_end() + threadpool.stop() + logger.info("Finished, elapsed %.3fs" % ((Time.get_ticks_msec() - _start_time) / 1000.0)) + +func _on_updated(plugin): + pass + +func _plugging(): + pass + +func request_quit(exit_code=-1): + if threadpool.is_all_thread_finished() and threadpool.is_all_task_finished(): + quit(exit_code) + return true + logger.debug("Request quit declined, threadpool is still running") + return false + +# Index installed plugins, or create directory "plugged" if not exists +func _plug_start(): + logger.debug("Plug start") + if not project_dir.dir_exists(DEFAULT_PLUG_DIR): + if project_dir.make_dir(ProjectSettings.globalize_path(DEFAULT_PLUG_DIR)) == OK: + logger.debug("Make dir %s for plugin installation") + if installation_config.load(DEFAULT_CONFIG_PATH) == OK: + logger.debug("Installation config loaded") + else: + logger.debug("Installation config not found") + _installed_plugins = installation_config.get_value("plugin", "installed", {}) + +# Install plugin or uninstall plugin if unlisted +func _plug_end(): + assert(_installed_plugins != null, MSG_PLUG_START_ASSERTION) + var test = !OS.get_environment(ENV_TEST).is_empty() + if not test: + installation_config.set_value("plugin", "installed", _installed_plugins) + if installation_config.save(DEFAULT_CONFIG_PATH) == OK: + logger.debug("Plugged config saved") + else: + logger.error("Failed to save plugged config") + else: + logger.warn("Skipped saving of plugged config in test mode") + _installed_plugins = null + +func _plug_init(): + assert(_installed_plugins != null, MSG_PLUG_START_ASSERTION) + logger.info("Init gd-plug...") + if FileAccess.file_exists(DEFAULT_USER_PLUG_SCRIPT_PATH): + logger.warn("%s already exists!" % DEFAULT_USER_PLUG_SCRIPT_PATH) + else: + var file = FileAccess.open(DEFAULT_USER_PLUG_SCRIPT_PATH, FileAccess.WRITE) + file.store_string(INIT_PLUG_SCRIPT) + file.close() + logger.info("Created %s" % DEFAULT_USER_PLUG_SCRIPT_PATH) + +func _plug_install(): + assert(_installed_plugins != null, MSG_PLUG_START_ASSERTION) + threadpool.active = false + logger.info("Installing...") + for plugin in _plugged_plugins.values(): + var installed = plugin.name in _installed_plugins + if installed: + var installed_plugin = get_installed_plugin(plugin.name) + if (installed_plugin.dev or plugin.dev) and OS.get_environment(ENV_PRODUCTION): + logger.info("Remove dev plugin for production: %s" % plugin.name) + threadpool.enqueue_task(uninstall_plugin.bind(installed_plugin)) + else: + threadpool.enqueue_task(update_plugin.bind(plugin)) + else: + threadpool.enqueue_task(install_plugin.bind(plugin)) + + var removed_plugins = [] + for plugin in _installed_plugins.values(): + var removed = not (plugin.name in _plugged_plugins) + if removed: + removed_plugins.append(plugin) + if removed_plugins: + threadpool.disconnect("all_thread_finished", request_quit) + if not threadpool.is_all_thread_finished(): + threadpool.active = true + await threadpool.all_thread_finished + threadpool.active = false + logger.debug("All installation finished! Ready to uninstall removed plugins...") + threadpool.connect("all_thread_finished", request_quit) + for plugin in removed_plugins: + threadpool.enqueue_task(uninstall_plugin.bind(plugin), Thread.PRIORITY_LOW) + threadpool.active = true + +func _plug_uninstall(): + assert(_installed_plugins != null, MSG_PLUG_START_ASSERTION) + threadpool.active = false + logger.info("Uninstalling...") + for plugin in _installed_plugins.values(): + var installed_plugin = get_installed_plugin(plugin.name) + threadpool.enqueue_task(uninstall_plugin.bind(installed_plugin), Thread.PRIORITY_LOW) + threadpool.active = true + +func _plug_clean(): + assert(_installed_plugins != null, MSG_PLUG_START_ASSERTION) + threadpool.active = false + logger.info("Cleaning...") + var plugged_dir = DirAccess.open(DEFAULT_PLUG_DIR) + plugged_dir.include_hidden = true + plugged_dir.list_dir_begin() # TODOGODOT4 fill missing arguments https://github.com/godotengine/godot/pull/40547 + var file = plugged_dir.get_next() + while not file.is_empty(): + if plugged_dir.current_is_dir(): + if not (file in _installed_plugins): + logger.info("Remove %s" % file) + threadpool.enqueue_task(directory_delete_recursively.bind(plugged_dir.get_current_dir() + "/" + file)) + file = plugged_dir.get_next() + plugged_dir.list_dir_end() + threadpool.active = true + +func _plug_upgrade(): + assert(_installed_plugins != null, MSG_PLUG_START_ASSERTION) + threadpool.active = false + logger.info("Upgrading gd-plug...") + plug("imjp94/gd-plug") + var gd_plug = _plugged_plugins["gd-plug"] + OS.set_environment(ENV_FORCE, "true") # Required to overwrite res://addons/gd-plug/plug.gd + threadpool.enqueue_task(install_plugin.bind(gd_plug)) + threadpool.disconnect("all_thread_finished", request_quit) + if not threadpool.is_all_thread_finished(): + threadpool.active = true + await threadpool.all_thread_finished + threadpool.active = false + logger.debug("All installation finished! Ready to uninstall removed plugins...") + threadpool.connect("all_thread_finished", request_quit) + threadpool.enqueue_task(directory_delete_recursively.bind(gd_plug.plug_dir)) + threadpool.active = true + +func _plug_status(): + assert(_installed_plugins != null, MSG_PLUG_START_ASSERTION) + threadpool.active = false + logger.info("Installed %d plugin%s" % [_installed_plugins.size(), "s" if _installed_plugins.size() > 1 else ""]) + var new_plugins = _plugged_plugins.duplicate() + var has_checking_plugin = false + var removed_plugins = [] + for plugin in _installed_plugins.values(): + logger.info("- {name} - {url}".format(plugin)) + new_plugins.erase(plugin.name) + var removed = not (plugin.name in _plugged_plugins) + if removed: + removed_plugins.append(plugin) + else: + threadpool.enqueue_task(check_plugin.bind(_plugged_plugins[plugin.name])) + has_checking_plugin = true + if has_checking_plugin: + logger.info("\n", true) + threadpool.disconnect("all_thread_finished", request_quit) + threadpool.active = true + await threadpool.all_thread_finished + threadpool.active = false + threadpool.connect("all_thread_finished", request_quit) + logger.debug("Finished checking plugins, ready to proceed") + if new_plugins: + logger.info("\nPlugged %d plugin%s" % [new_plugins.size(), "s" if new_plugins.size() > 1 else ""]) + for plugin in new_plugins.values(): + var is_new = not (plugin.name in _installed_plugins) + if is_new: + logger.info("- {name} - {url}".format(plugin)) + if removed_plugins: + logger.info("\nUnplugged %d plugin%s" % [removed_plugins.size(), "s" if removed_plugins.size() > 1 else ""]) + for plugin in removed_plugins: + logger.info("- %s removed" % plugin.name) + var plug_directory = DirAccess.open(DEFAULT_PLUG_DIR) + var orphan_dirs = [] + if plug_directory.get_open_error() == OK: + plug_directory.list_dir_begin() # TODOGODOT4 fill missing arguments https://github.com/godotengine/godot/pull/40547 + var file = plug_directory.get_next() + while not file.is_empty(): + if plug_directory.current_is_dir(): + if not (file in _installed_plugins): + orphan_dirs.append(file) + file = plug_directory.get_next() + plug_directory.list_dir_end() + if orphan_dirs: + logger.info("\nOrphan directory, %d found in %s, execute \"clean\" command to remove" % [orphan_dirs.size(), DEFAULT_PLUG_DIR]) + for dir in orphan_dirs: + logger.info("- %s" % dir) + threadpool.active = true + + if has_checking_plugin: + request_quit() + +# Index & validate plugin +func plug(repo, args={}): + assert(_installed_plugins != null, MSG_PLUG_START_ASSERTION) + repo = repo.strip_edges() + var plugin_name = get_plugin_name_from_repo(repo) + if plugin_name in _plugged_plugins: + logger.info("Plugin already plugged: %s" % plugin_name) + return + var plugin = {} + plugin.name = plugin_name + plugin.url = "" + if ":" in repo: + plugin.url = repo + elif repo.find("/") == repo.rfind("/"): + plugin.url = DEFAULT_PLUGIN_URL % repo + else: + logger.error("Invalid repo: %s" % repo) + plugin.plug_dir = DEFAULT_PLUG_DIR + "/" + plugin.name + + var is_valid = true + plugin.include = args.get("include", []) + is_valid = is_valid and validate_var_type(plugin, "include", TYPE_ARRAY, "Array") + plugin.exclude = args.get("exclude", []) + is_valid = is_valid and validate_var_type(plugin, "exclude", TYPE_ARRAY, "Array") + plugin.branch = args.get("branch", "") + is_valid = is_valid and validate_var_type(plugin, "branch", TYPE_STRING, "String") + plugin.tag = args.get("tag", "") + is_valid = is_valid and validate_var_type(plugin, "tag", TYPE_STRING, "String") + plugin.commit = args.get("commit", "") + is_valid = is_valid and validate_var_type(plugin, "commit", TYPE_STRING, "String") + if not plugin.commit.is_empty(): + var is_valid_commit = plugin.commit.length() == 40 + if not is_valid_commit: + logger.error("Expected full length 40 digits commit-hash string, given %s" % plugin.commit) + is_valid = is_valid and is_valid_commit + plugin.dev = args.get("dev", false) + is_valid = is_valid and validate_var_type(plugin, "dev", TYPE_BOOL, "Boolean") + plugin.on_updated = args.get("on_updated", "") + is_valid = is_valid and validate_var_type(plugin, "on_updated", TYPE_STRING, "String") + plugin.install_root = args.get("install_root", "") + is_valid = is_valid and validate_var_type(plugin, "install_root", TYPE_STRING, "String") + + if is_valid: + _plugged_plugins[plugin.name] = plugin + logger.debug("Plug: %s" % plugin) + else: + logger.error("Failed to plug %s, validation error" % plugin.name) + +func install_plugin(plugin): + var test = !OS.get_environment(ENV_TEST).is_empty() + var can_install = OS.get_environment(ENV_PRODUCTION).is_empty() if plugin.dev else true + if can_install: + logger.info("Installing plugin %s..." % plugin.name) + var result = is_plugin_downloaded(plugin) + if result != OK: + result = download(plugin) + else: + logger.info("Plugin already downloaded") + + if result == OK: + install(plugin) + else: + logger.error("Failed to install plugin %s with error code %d" % [plugin.name, result]) + +func uninstall_plugin(plugin): + var test = !OS.get_environment(ENV_TEST).is_empty() + logger.info("Uninstalling plugin %s..." % plugin.name) + uninstall(plugin) + directory_delete_recursively(plugin.plug_dir, {"exclude": [DEFAULT_CONFIG_PATH], "test": test}) + +func update_plugin(plugin, checking=false): + if not (plugin.name in _installed_plugins): + logger.info("%s new plugin" % plugin.name) + return true + + var git = _GitExecutable.new(ProjectSettings.globalize_path(plugin.plug_dir), logger) + var installed_plugin = get_installed_plugin(plugin.name) + var changes = compare_plugins(plugin, installed_plugin) + var should_clone = false + var should_pull = false + var should_reinstall = false + + if plugin.tag or plugin.commit: + for rev in ["tag", "commit"]: + var freeze_at = plugin[rev] + if freeze_at: + logger.info("%s frozen at %s \"%s\"" % [plugin.name, rev, freeze_at]) + break + else: + var ahead_behind = [] + if git.fetch("origin " + plugin.branch if plugin.branch else "origin").exit == OK: + ahead_behind = git.get_commit_comparison("HEAD", "origin/" + plugin.branch if plugin.branch else "origin") + var is_commit_behind = !!ahead_behind[1] if ahead_behind.size() == 2 else false + if is_commit_behind: + logger.info("%s %d commits behind, update required" % [plugin.name, ahead_behind[1]]) + should_pull = true + else: + logger.info("%s up to date" % plugin.name) + + if changes: + logger.info("%s changed %s" % [plugin.name, changes]) + should_reinstall = true + if "url" in changes or "branch" in changes or "tag" in changes or "commit" in changes: + logger.info("%s repository setting changed, update required" % plugin.name) + should_clone = true + + if not checking: + if should_clone: + logger.info("%s cloning from %s..." % [plugin.name, plugin.url]) + var test = !OS.get_environment(ENV_TEST).is_empty() + uninstall(get_installed_plugin(plugin.name)) + directory_delete_recursively(plugin.plug_dir, {"exclude": [DEFAULT_CONFIG_PATH], "test": test}) + if download(plugin) == OK: + install(plugin) + elif should_pull: + logger.info("%s pulling updates from %s..." % [plugin.name, plugin.url]) + uninstall(get_installed_plugin(plugin.name)) + if git.pull().exit == OK: + install(plugin) + elif should_reinstall: + logger.info("%s reinstalling..." % plugin.name) + uninstall(get_installed_plugin(plugin.name)) + install(plugin) + +func check_plugin(plugin): + update_plugin(plugin, true) + +func download(plugin): + logger.info("Downloading %s from %s..." % [plugin.name, plugin.url]) + var test = !OS.get_environment(ENV_TEST).is_empty() + var global_dest_dir = ProjectSettings.globalize_path(plugin.plug_dir) + if project_dir.dir_exists(plugin.plug_dir): + directory_delete_recursively(plugin.plug_dir) + project_dir.make_dir(plugin.plug_dir) + var result = _GitExecutable.new(global_dest_dir, logger).clone(plugin.url, global_dest_dir, {"branch": plugin.branch, "tag": plugin.tag, "commit": plugin.commit}) + if result.exit == OK: + logger.info("Successfully download %s" % [plugin.name]) + else: + logger.info("Failed to download %s" % plugin.name) + # Make sure plug_dir is clean when failed + directory_delete_recursively(plugin.plug_dir, {"exclude": [DEFAULT_CONFIG_PATH], "test": test}) + project_dir.remove(plugin.plug_dir) # Remove empty directory + return result.exit + +func install(plugin): + var include = plugin.get("include", []) + if include.is_empty(): # Auto include "addons/" folder if not explicitly specified + include = ["addons/"] + if OS.get_environment(ENV_FORCE).is_empty() and OS.get_environment(ENV_TEST).is_empty(): + var is_exists = false + var dest_files = directory_copy_recursively(plugin.plug_dir, "res://" + plugin.install_root, {"include": include, "exclude": plugin.exclude, "test": true, "silent_test": true}) + for dest_file in dest_files: + if project_dir.file_exists(dest_file): + logger.warn("%s attempting to overwrite file %s" % [plugin.name, dest_file]) + is_exists = true + if is_exists: + logger.warn("Installation of %s terminated to avoid overwriting user files, you may disable safe mode with command \"force\"" % plugin.name) + return ERR_ALREADY_EXISTS + + logger.info("Installing files for %s..." % plugin.name) + var test = !OS.get_environment(ENV_TEST).is_empty() + var dest_files = directory_copy_recursively(plugin.plug_dir, "res://" + plugin.install_root, {"include": include, "exclude": plugin.exclude, "test": test}) + plugin.dest_files = dest_files + logger.info("Installed %d file%s for %s" % [dest_files.size(), "s" if dest_files.size() > 1 else "", plugin.name]) + if plugin.name != "gd-plug": + set_installed_plugin(plugin) + if plugin.on_updated: + if has_method(plugin.on_updated): + logger.info("Execute post-update function for %s" % plugin.name) + _on_updated(plugin) + call(plugin.on_updated, plugin.duplicate()) + emit_signal("updated", plugin) + return OK + +func uninstall(plugin): + var test = !OS.get_environment(ENV_TEST).is_empty() + var keep_import_file = !OS.get_environment(ENV_KEEP_IMPORT_FILE).is_empty() + var keep_import_resource_file = !OS.get_environment(ENV_KEEP_IMPORT_RESOURCE_FILE).is_empty() + var dest_files = plugin.get("dest_files", []) + logger.info("Uninstalling %d file%s for %s..." % [dest_files.size(), "s" if dest_files.size() > 1 else "",plugin.name]) + directory_remove_batch(dest_files, {"test": test, "keep_import_file": keep_import_file, "keep_import_resource_file": keep_import_resource_file}) + logger.info("Uninstalled %d file%s for %s" % [dest_files.size(), "s" if dest_files.size() > 1 else "",plugin.name]) + remove_installed_plugin(plugin.name) + +func is_plugin_downloaded(plugin): + if not project_dir.dir_exists(plugin.plug_dir + "/.git"): + return + + var git = _GitExecutable.new(ProjectSettings.globalize_path(plugin.plug_dir), logger) + return git.is_up_to_date(plugin) + +# Get installed plugin, thread safe +func get_installed_plugin(plugin_name): + assert(_installed_plugins != null, MSG_PLUG_START_ASSERTION) + _mutex.lock() + var installed_plugin = _installed_plugins[plugin_name] + _mutex.unlock() + return installed_plugin + +# Set installed plugin, thread safe +func set_installed_plugin(plugin): + assert(_installed_plugins != null, MSG_PLUG_START_ASSERTION) + _mutex.lock() + _installed_plugins[plugin.name] = plugin + _mutex.unlock() + +# Remove installed plugin, thread safe +func remove_installed_plugin(plugin_name): + assert(_installed_plugins != null, MSG_PLUG_START_ASSERTION) + _mutex.lock() + var result = _installed_plugins.erase(plugin_name) + _mutex.unlock() + return result + +func directory_copy_recursively(from, to, args={}): + var include = args.get("include", []) + var exclude = args.get("exclude", []) + var test = args.get("test", false) + var silent_test = args.get("silent_test", false) + var dir = DirAccess.open(from) + dir.include_hidden = true + var dest_files = [] + if dir.get_open_error() == OK: + dir.list_dir_begin() # TODOGODOT4 fill missing arguments https://github.com/godotengine/godot/pull/40547 + var file_name = dir.get_next() + while not file_name.is_empty(): + var source = dir.get_current_dir() + ("/" if dir.get_current_dir() != "res://" else "") + file_name + var dest = to + ("/" if to != "res://" else "") + file_name + + if dir.current_is_dir(): + dest_files += directory_copy_recursively(source, dest, args) + else: + for include_key in include: + if include_key in source: + var is_excluded = false + for exclude_key in exclude: + if exclude_key in source: + is_excluded = true + break + if not is_excluded: + if test: + if not silent_test: logger.warn("[TEST] Writing to %s" % dest) + else: + dir.make_dir_recursive(to) + if dir.copy(source, dest) == OK: + logger.debug("Copy from %s to %s" % [source, dest]) + dest_files.append(dest) + break + file_name = dir.get_next() + dir.list_dir_end() + else: + logger.error("Failed to access path: %s" % from) + + return dest_files + +func directory_delete_recursively(dir_path, args={}): + var remove_empty_directory = args.get("remove_empty_directory", true) + var exclude = args.get("exclude", []) + var test = args.get("test", false) + var silent_test = args.get("silent_test", false) + var dir = DirAccess.open(dir_path) + dir.include_hidden = true + if dir.get_open_error() == OK: + dir.list_dir_begin() # TODOGODOT4 fill missing arguments https://github.com/godotengine/godot/pull/40547 + var file_name = dir.get_next() + while not file_name.is_empty(): + var source = dir.get_current_dir() + ("/" if dir.get_current_dir() != "res://" else "") + file_name + + if dir.current_is_dir(): + var sub_dir = directory_delete_recursively(source, args) + if remove_empty_directory: + if test: + if not silent_test: logger.warn("[TEST] Remove empty directory: %s" % sub_dir.get_current_dir()) + else: + if source.get_file() == ".git": + var empty_dir_path = ProjectSettings.globalize_path(source) + var exit = FAILED + match OS.get_name(): + "Windows": + empty_dir_path = "\"%s\"" % empty_dir_path + empty_dir_path = empty_dir_path.replace("/", "\\") + var cmd = "rd /s /q %s" % empty_dir_path + exit = OS.execute("cmd", ["/C", cmd]) + "X11", "OSX", "Server": + empty_dir_path = "\'%s\'" % empty_dir_path + var cmd = "rm -rf %s" % empty_dir_path + exit = OS.execute("bash", ["-c", cmd]) + # Hacks to remove .git, as git pack files stop it from being removed + # See https://stackoverflow.com/questions/1213430/how-to-fully-delete-a-git-repository-created-with-init + if exit == OK: + logger.debug("Remove empty directory: %s" % sub_dir.get_current_dir()) + else: + logger.debug("Failed to remove empty directory: %s" % sub_dir.get_current_dir()) + else: + if dir.remove(sub_dir.get_current_dir()) == OK: + logger.debug("Remove empty directory: %s" % sub_dir.get_current_dir()) + else: + var excluded = false + for exclude_key in exclude: + if source in exclude_key: + excluded = true + break + if not excluded: + if test: + if not silent_test: logger.warn("[TEST] Remove file: %s" % source) + else: + if dir.remove(file_name) == OK: + logger.debug("Remove file: %s" % source) + file_name = dir.get_next() + dir.list_dir_end() + else: + logger.error("Failed to access path: %s" % dir_path) + + if remove_empty_directory: + dir.remove(dir.get_current_dir()) + + return dir + +func directory_remove_batch(files, args={}): + var remove_empty_directory = args.get("remove_empty_directory", true) + var keep_import_file = args.get("keep_import_file", false) + var keep_import_resource_file = args.get("keep_import_resource_file", false) + var test = args.get("test", false) + var silent_test = args.get("silent_test", false) + var dirs = {} + for file in files: + var file_dir = file.get_base_dir() + var file_name =file.get_file() + var dir = dirs.get(file_dir) + + if not dir: + dir = DirAccess.open(file_dir) + dirs[file_dir] = dir + + if file.ends_with(".import"): + if not keep_import_file: + _remove_import_file(dir, file, keep_import_resource_file, test, silent_test) + else: + if test: + if not silent_test: logger.warn("[TEST] Remove file: " + file) + else: + if dir.remove(file_name) == OK: + logger.debug("Remove file: " + file) + if not keep_import_file: + _remove_import_file(dir, file + ".import", keep_import_resource_file, test, silent_test) + + for dir in dirs.values(): + var slash_count = dir.get_current_dir().count("/") - 2 # Deduct 2 slash from "res://" + if test: + if not silent_test: logger.warn("[TEST] Remove empty directory: %s" % dir.get_current_dir()) + else: + if dir.remove(dir.get_current_dir()) == OK: + logger.debug("Remove empty directory: %s" % dir.get_current_dir()) + # Dumb method to clean empty ancestor directories + logger.debug("Removing emoty ancestor directory for %s..." % dir.get_current_dir()) + var current_dir = dir.get_current_dir() + for i in slash_count: + current_dir = current_dir.get_base_dir() + var d = DirAccess.open(current_dir) + if d.get_open_error() == OK: + if test: + if not silent_test: logger.warn("[TEST] Remove empty ancestor directory: %s" % d.get_current_dir()) + else: + if d.remove(d.get_current_dir()) == OK: + logger.debug("Remove empty ancestor directory: %s" % d.get_current_dir()) + +func _remove_import_file(dir, file, keep_import_resource_file=false, test=false, silent_test=false): + if not dir.file_exists(file): + return + + if not keep_import_resource_file: + var import_config = ConfigFile.new() + if import_config.load(file) == OK: + var metadata = import_config.get_value("remap", "metadata", {}) + var imported_formats = metadata.get("imported_formats", []) + if imported_formats: + for format in imported_formats: + _remove_import_resource_file(dir, import_config, "." + format, test) + else: + _remove_import_resource_file(dir, import_config, "", test) + if test: + if not silent_test: logger.warn("[TEST] Remove import file: " + file) + else: + if dir.remove(file) == OK: + logger.debug("Remove import file: " + file) + else: + # TODO: Sometimes Directory.remove() unable to remove random .import file and return error code 1(Generic Error) + # Maybe enforce the removal from shell? + logger.warn("Failed to remove import file: " + file) + +func _remove_import_resource_file(dir, import_config, import_format="", test=false): + var import_resource_file = import_config.get_value("remap", "path" + import_format, "") + var checksum_file = import_resource_file.trim_suffix("." + import_resource_file.get_extension()) + ".md5" if import_resource_file else "" + if import_resource_file: + if dir.file_exists(import_resource_file): + if test: + logger.info("[IMPORT] Remove import resource file: " + import_resource_file) + else: + if dir.remove(import_resource_file) == OK: + logger.debug("Remove import resource file: " + import_resource_file) + if checksum_file: + checksum_file = checksum_file.replace(import_format, "") + if dir.file_exists(checksum_file): + if test: + logger.info("[IMPORT] Remove import checksum file: " + checksum_file) + else: + if dir.remove(checksum_file) == OK: + logger.debug("Remove import checksum file: " + checksum_file) + +func compare_plugins(p1, p2): + var changed_keys = [] + for key in p1.keys(): + var v1 = p1[key] + var v2 = p2[key] + if v1 != v2: + changed_keys.append(key) + return changed_keys + +func get_plugin_name_from_repo(repo): + repo = repo.replace(".git", "").trim_suffix("/") + return repo.get_file() + +func validate_var_type(obj, var_name, type, type_string): + var value = obj.get(var_name) + var is_valid = typeof(value) == type + if not is_valid: + logger.error("Expected variable \"%s\" to be %s, given %s" % [var_name, type_string, value]) + return is_valid + +const INIT_PLUG_SCRIPT = \ +"""extends "res://addons/gd-plug/plug.gd" + +func _plugging(): + # Declare plugins with plug(repo, args) + # For example, clone from github repo("user/repo_name") + # plug("imjp94/gd-YAFSM") # By default, gd-plug will only install anything from "addons/" directory + # Or you can explicitly specify which file/directory to include + # plug("imjp94/gd-YAFSM", {"include": ["addons/"]}) # By default, gd-plug will only install anything from "addons/" directory + pass +""" + +class _GitExecutable extends RefCounted: + var cwd = "" + var logger + + func _init(p_cwd, p_logger): + cwd = p_cwd + logger = p_logger + + func _execute(command, output=[], read_stderr=false): + var cmd = "cd '%s' && %s" % [cwd, command] + # NOTE: OS.execute() seems to ignore read_stderr + var exit = FAILED + match OS.get_name(): + "Windows": + cmd = cmd.replace("\'", "\"") # cmd doesn't accept single-quotes + cmd = cmd if read_stderr else "%s 2> nul" % cmd + logger.debug("Execute \"%s\"" % cmd) + exit = OS.execute("cmd", ["/C", cmd], output, read_stderr) + "macOS", "Linux", "FreeBSD", "NetBSD", "OpenBSD", "BSD": + cmd if read_stderr else "%s 2>/dev/null" % cmd + logger.debug("Execute \"%s\"" % cmd) + exit = OS.execute("bash", ["-c", cmd], output, read_stderr) + var unhandled_os: + logger.error("Unexpected OS: %s" % unhandled_os) + logger.debug("Execution ended(code:%d): %s" % [exit, output]) + return exit + + func init(): + logger.debug("Initializing git at %s..." % cwd) + var output = [] + var exit = _execute("git init", output) + logger.debug("Successfully init" if exit == OK else "Failed to init") + return {"exit": exit, "output": output} + + func clone(src, dest, args={}): + logger.debug("Cloning from %s to %s..." % [src, dest]) + var output = [] + var branch = args.get("branch", "") + var tag = args.get("tag", "") + var commit = args.get("commit", "") + var command = "git clone --depth=1 --progress '%s' '%s'" % [src, dest] + if branch or tag: + command = "git clone --depth=1 --single-branch --branch %s '%s' '%s'" % [branch if branch else tag, src, dest] + elif commit: + return clone_commit(src, dest, commit) + var exit = _execute(command, output) + logger.debug("Successfully cloned from %s" % src if exit == OK else "Failed to clone from %s" % src) + return {"exit": exit, "output": output} + + func clone_commit(src, dest, commit): + var output = [] + if commit.length() < 40: + logger.error("Expected full length 40 digits commit-hash to clone specific commit, given {%s}" % commit) + return {"exit": FAILED, "output": output} + + logger.debug("Cloning from %s to %s @ %s..." % [src, dest, commit]) + var result = init() + if result.exit == OK: + result = remote_add("origin", src) + if result.exit == OK: + result = fetch("%s %s" % ["origin", commit]) + if result.exit == OK: + result = reset("--hard", "FETCH_HEAD") + return result + + func fetch(rm="--all"): + logger.debug("Fetching %s..." % rm.replace("--", "")) + var output = [] + var exit = _execute("git fetch %s" % rm, output) + logger.debug("Successfully fetched" if exit == OK else "Failed to fetch") + return {"exit": exit, "output": output} + + func pull(): + logger.debug("Pulling...") + var output = [] + var exit = _execute("git pull --rebase", output) + logger.debug("Successfully pulled" if exit == OK else "Failed to pull") + return {"exit": exit, "output": output} + + func remote_add(name, src): + logger.debug("Adding remote %s@%s..." % [name, src]) + var output = [] + var exit = _execute("git remote add %s '%s'" % [name, src], output) + logger.debug("Successfully added remote" if exit == OK else "Failed to add remote") + return {"exit": exit, "output": output} + + func reset(mode, to): + logger.debug("Resetting %s %s..." % [mode, to]) + var output = [] + var exit = _execute("git reset %s %s" % [mode, to], output) + logger.debug("Successfully reset" if exit == OK else "Failed to reset") + return {"exit": exit, "output": output} + + func get_commit_comparison(branch_a, branch_b): + var output = [] + var exit = _execute("git rev-list --count --left-right %s...%s" % [branch_a, branch_b], output) + var raw_ahead_behind = output[0].split("\t") + var ahead_behind = [] + for msg in raw_ahead_behind: + ahead_behind.append(msg.to_int()) + return ahead_behind if exit == OK else [] + + func get_current_branch(): + var output = [] + var exit = _execute("git rev-parse --abbrev-ref HEAD", output) + return output[0] if exit == OK else "" + + func get_current_tag(): + var output = [] + var exit = _execute("git describe --tags --exact-match", output) + return output[0] if exit == OK else "" + + func get_current_commit(): + var output = [] + var exit = _execute("git rev-parse --short HEAD", output) + return output[0] if exit == OK else "" + + func is_detached_head(): + var output = [] + var exit = _execute("git rev-parse --short HEAD", output) + return (!!output[0]) if exit == OK else true + + func is_up_to_date(args={}): + if fetch().exit == OK: + var branch = args.get("branch", "") + var tag = args.get("tag", "") + var commit = args.get("commit", "") + + if branch: + if branch == get_current_branch(): + return FAILED if is_detached_head() else OK + elif tag: + if tag == get_current_tag(): + return OK + elif commit: + if commit == get_current_commit(): + return OK + + var ahead_behind = get_commit_comparison("HEAD", "origin") + var is_commit_behind = !!ahead_behind[1] if ahead_behind.size() == 2 else false + return FAILED if is_commit_behind else OK + return FAILED + +class _ThreadPool extends RefCounted: + signal all_thread_finished() + + var active = true + + var _threads = [] + var _finished_threads = [] + var _mutex = Mutex.new() + var _tasks = [] + var logger + + func _init(p_logger): + logger = p_logger + _threads.resize(OS.get_processor_count()) + + func _execute_task(task): + var thread = _get_thread() + var can_execute = thread + if can_execute: + task.thread = weakref(thread) + var callable = task.get("callable") + thread.start(_execute.bind(task), task.priority) + logger.debug("Execute task %s.%s() " % [callable.get_object(), callable.get_method()]) + return can_execute + + func _execute(args): + var callable = args.get("callable") + callable.call() + _mutex.lock() + var thread = args.thread.get_ref() + _threads[_threads.find(thread)] = null + _finished_threads.append(thread) + var all_finished = is_all_thread_finished() + _mutex.unlock() + + logger.debug("Execution finished %s.%s() " % [callable.get_object(), callable.get_method()]) + if all_finished: + logger.debug("All thread finished") + emit_signal("all_thread_finished") + + func _flush_tasks(): + if _tasks.size() == 0: + return + + var executed = true + while executed: + var task = _tasks.pop_front() + if task != null: + executed = _execute_task(task) + if not executed: + _tasks.push_front(task) + else: + executed = false + + func _flush_threads(): + for i in _finished_threads.size(): + var thread = _finished_threads.pop_front() + if not thread.is_alive(): + thread.wait_to_finish() + + func enqueue_task(callable, priority=1): + enqueue({"callable": callable, "priority": priority}) + + func enqueue(task): + var can_execute = false + if active: + can_execute = _execute_task(task) + if not can_execute: + _tasks.append(task) + + func process(delta): + if active: + _flush_tasks() + _flush_threads() + + func stop(): + _tasks.clear() + _flush_threads() + + func _get_thread(): + var thread + for i in OS.get_processor_count(): + var t = _threads[i] + if t: + if not t.is_started(): + thread = t + break + else: + thread = Thread.new() + _threads[i] = thread + break + return thread + + func is_all_thread_finished(): + for i in _threads.size(): + if _threads[i]: + return false + return true + + func is_all_task_finished(): + for i in _tasks.size(): + if _tasks[i]: + return false + return true + +class _Logger extends RefCounted: + enum LogLevel { + ALL, DEBUG, INFO, WARN, ERROR, NONE + } + const DEFAULT_LOG_FORMAT_DETAIL = "[{time}] [{level}] {msg}" + const DEFAULT_LOG_FORMAT_NORMAL = "{msg}" + + var log_level = LogLevel.INFO + var log_format = DEFAULT_LOG_FORMAT_NORMAL + var log_time_format = "{year}/{month}/{day} {hour}:{minute}:{second}" + var indent_level = 0 + var is_locked = false + + var _rows + var _max_column_length = [] + var _max_column_size = 0 + + func debug(msg, raw=false): + _log(LogLevel.DEBUG, msg, raw) + + func info(msg, raw=false): + _log(LogLevel.INFO, msg, raw) + + func warn(msg, raw=false): + _log(LogLevel.WARN, msg, raw) + + func error(msg, raw=false): + _log(LogLevel.ERROR, msg, raw) + + func _log(level, msg, raw=false): + if is_locked: + return + + if typeof(msg) != TYPE_STRING: + msg = str(msg) + if log_level <= level: + match level: + LogLevel.WARN: + push_warning(format_log(level, msg)) + LogLevel.ERROR: + push_error(format_log(level, msg)) + _: + if raw: + printraw(format_log(level, msg)) + else: + print(format_log(level, msg)) + + func format_log(level, msg): + return log_format.format({ + "time": log_time_format.format(get_formatted_datatime()), + "level": LogLevel.keys()[level], + "msg": msg.indent(" ".repeat(indent_level)) + }) + + func indent(): + indent_level += 1 + + func dedent(): + indent_level -= 1 + max(indent_level, 0) + + func lock(): + is_locked = true + + func unlock(): + is_locked = false + + func table_start(): + _rows = [] + + func table_end(): + assert(_rows != null, "Expected table_start() to be called first") + for columns in _rows: + var text = "" + for i in columns.size(): + var column = columns[i] + var max_tab_count = ceil(float(_max_column_length[i]) / 4.0) + var tab_count = max_tab_count - ceil(float(column.length()) / 4.0) + var extra_spaces = ceil(float(column.length()) / 4.0) * 4 - column.length() + if i < _max_column_size - 1: + text += column + " ".repeat(extra_spaces) + " ".repeat(tab_count) + else: + text += column + info(text) + + _rows.clear() + _rows = null + _max_column_length.clear() + _max_column_size = 0 + + func table_row(columns=[]): + assert(_rows != null, "Expected table_start() to be called first") + _rows.append(columns) + _max_column_size = max(_max_column_size, columns.size()) + for i in columns.size(): + var column = columns[i] + if _max_column_length.size() >= i + 1: + var max_column_length = _max_column_length[i] + _max_column_length[i] = max(max_column_length, column.length()) + else: + _max_column_length.append(column.length()) + + func get_formatted_datatime(): + var datetime = Time.get_datetime_dict_from_system() + datetime.year = "%04d" % datetime.year + datetime.month = "%02d" % datetime.month + datetime.day = "%02d" % datetime.day + datetime.hour = "%02d" % datetime.hour + datetime.minute = "%02d" % datetime.minute + datetime.second = "%02d" % datetime.second + return datetime diff --git a/addons/log/log.gd b/addons/log/log.gd new file mode 100644 index 0000000..7a4e5c6 --- /dev/null +++ b/addons/log/log.gd @@ -0,0 +1,484 @@ +@tool +extends Object +class_name Log + +## helpers #################################### + +static func assoc(opts: Dictionary, key: String, val): + var _opts = opts.duplicate(true) + _opts[key] = val + return _opts + +## config #################################### + +static var config = { + max_array_size=20, + dictionary_skip_keys=["layer_0/tile_data"], + } + +static func get_max_array_size(): + return Log.config.get("max_array_size", 20) + +static func get_dictionary_skip_keys(): + return Log.config.get("dictionary_skip_keys", []) + +static func set_color_scheme(scheme): + Log.config["color_scheme"] = scheme + +static func get_config_color_scheme(): + return Log.config.get("color_scheme", {}) + +## colors ########################################################################### + +# terminal safe colors: +# - black +# - red +# - green +# - yellow +# - blue +# - magenta +# - pink +# - purple +# - cyan +# - white +# - orange +# - gray + +static var COLORS_TERMINAL_SAFE = { + "SRC": "cyan", + "ADDONS": "red", + "TEST": "green", + ",": "red", + "(": "red", + ")": "red", + "[": "red", + "]": "red", + "{": "red", + "}": "red", + "&": "orange", + "^": "orange", + "dict_key": "magenta", + "vector_value": "green", + "class_name": "magenta", + TYPE_NIL: "pink", + TYPE_BOOL: "pink", + TYPE_INT: "green", + TYPE_FLOAT: "green", + TYPE_STRING: "pink", + TYPE_VECTOR2: "green", + TYPE_VECTOR2I: "green", + TYPE_RECT2: "green", + TYPE_RECT2I: "green", + TYPE_VECTOR3: "green", + TYPE_VECTOR3I: "green", + TYPE_TRANSFORM2D: "pink", + TYPE_VECTOR4: "green", + TYPE_VECTOR4I: "green", + TYPE_PLANE: "pink", + TYPE_QUATERNION: "pink", + TYPE_AABB: "pink", + TYPE_BASIS: "pink", + TYPE_TRANSFORM3D: "pink", + TYPE_PROJECTION: "pink", + TYPE_COLOR: "pink", + TYPE_STRING_NAME: "pink", + TYPE_NODE_PATH: "pink", + TYPE_RID: "pink", + TYPE_OBJECT: "pink", + TYPE_CALLABLE: "pink", + TYPE_SIGNAL: "pink", + TYPE_DICTIONARY: "pink", + TYPE_ARRAY: "pink", + TYPE_PACKED_BYTE_ARRAY: "pink", + TYPE_PACKED_INT32_ARRAY: "pink", + TYPE_PACKED_INT64_ARRAY: "pink", + TYPE_PACKED_FLOAT32_ARRAY: "pink", + TYPE_PACKED_FLOAT64_ARRAY: "pink", + TYPE_PACKED_STRING_ARRAY: "pink", + TYPE_PACKED_VECTOR2_ARRAY: "pink", + TYPE_PACKED_VECTOR3_ARRAY: "pink", + TYPE_PACKED_COLOR_ARRAY: "pink", + TYPE_MAX: "pink", + } + +static var COLORS_PRETTY_V1 = { + "SRC": "aquamarine", + "ADDONS": "peru", + "TEST": "green_yellow", + ",": "crimson", + "(": "crimson", + ")": "crimson", + "[": "crimson", + "]": "crimson", + "{": "crimson", + "}": "crimson", + "&": "coral", + "^": "coral", + "dict_key": "cadet_blue", + "vector_value": "cornflower_blue", + "class_name": "cadet_blue", + TYPE_NIL: "coral", + TYPE_BOOL: "pink", + TYPE_INT: "cornflower_blue", + TYPE_FLOAT: "cornflower_blue", + TYPE_STRING: "dark_gray", + TYPE_VECTOR2: "cornflower_blue", + TYPE_VECTOR2I: "cornflower_blue", + TYPE_RECT2: "cornflower_blue", + TYPE_RECT2I: "cornflower_blue", + TYPE_VECTOR3: "cornflower_blue", + TYPE_VECTOR3I: "cornflower_blue", + TYPE_TRANSFORM2D: "pink", + TYPE_VECTOR4: "cornflower_blue", + TYPE_VECTOR4I: "cornflower_blue", + TYPE_PLANE: "pink", + TYPE_QUATERNION: "pink", + TYPE_AABB: "pink", + TYPE_BASIS: "pink", + TYPE_TRANSFORM3D: "pink", + TYPE_PROJECTION: "pink", + TYPE_COLOR: "pink", + TYPE_STRING_NAME: "pink", + TYPE_NODE_PATH: "pink", + TYPE_RID: "pink", + TYPE_OBJECT: "pink", + TYPE_CALLABLE: "pink", + TYPE_SIGNAL: "pink", + TYPE_DICTIONARY: "pink", + TYPE_ARRAY: "pink", + TYPE_PACKED_BYTE_ARRAY: "pink", + TYPE_PACKED_INT32_ARRAY: "pink", + TYPE_PACKED_INT64_ARRAY: "pink", + TYPE_PACKED_FLOAT32_ARRAY: "pink", + TYPE_PACKED_FLOAT64_ARRAY: "pink", + TYPE_PACKED_STRING_ARRAY: "pink", + TYPE_PACKED_VECTOR2_ARRAY: "pink", + TYPE_PACKED_VECTOR3_ARRAY: "pink", + TYPE_PACKED_COLOR_ARRAY: "pink", + TYPE_MAX: "pink", + } + +## set color scheme #################################### + +static func set_colors_termsafe(): + set_color_scheme(Log.COLORS_TERMINAL_SAFE) + +static func set_colors_pretty(): + set_color_scheme(Log.COLORS_PRETTY_V1) + +static func color_scheme(opts={}): + var scheme = opts.get("color_scheme", {}) + # fill in any missing vals with the set scheme, then the term-safe fallbacks + scheme.merge(Log.get_config_color_scheme()) + scheme.merge(Log.COLORS_TERMINAL_SAFE) + return scheme + +static func color_wrap(s, opts={}): + var use_color = opts.get("use_color", true) + # don't rebuild the color scheme every time + var colors = opts.get("built_color_scheme", color_scheme(opts)) + + if use_color: + var color = opts.get("color") + if not color: + var s_type = opts.get("typeof", typeof(s)) + if s_type is String: + # type overwrites + color = colors.get(s_type) + elif s_type is int and s_type == TYPE_STRING: + # specific strings/punctuation + var s_trimmed = s.strip_edges() + if s_trimmed in colors: + color = colors.get(s_trimmed) + else: + # fallback string color + color = colors.get(s_type) + else: + # all other types + color = colors.get(s_type) + + if color == null: + print("Log.gd could not determine color for object: %s type: (%s)" % [str(s), typeof(s)]) + + return "[color=%s]%s[/color]" % [color, s] + else: + return s + +## overwrites ########################################################################### + +static var log_overwrites = { + "Vector2": func(msg, opts): + if opts.get("use_color", true): + return '%s%s%s%s%s' % [ + Log.color_wrap("(", opts), + Log.color_wrap(msg.x, Log.assoc(opts, "typeof", "vector_value")), + Log.color_wrap(",", opts), + Log.color_wrap(msg.y, Log.assoc(opts, "typeof", "vector_value")), + Log.color_wrap(")", opts), + ] + else: + return '(%s,%s)' % [msg.x, msg.y], + } + +static func register_overwrite(key, handler): + # TODO warning on key exists? + # support multiple handlers? + # return success/fail? + # validate the key/handler somehow? + log_overwrites[key] = handler + +## to_pretty ########################################################################### + +# returns the passed object as a decorated string +static func to_pretty(msg, opts={}): + var newlines = opts.get("newlines", false) + var use_color = opts.get("use_color", true) + var indent_level = opts.get("indent_level", 0) + if not "indent_level" in opts: + opts["indent_level"] = indent_level + + var color_scheme = opts.get("built_color_scheme", color_scheme(opts)) + if not "built_color_scheme" in opts: + opts["built_color_scheme"] = color_scheme + + if not is_instance_valid(msg) and typeof(msg) == TYPE_OBJECT: + return str("invalid instance: ", msg) + + if msg == null: + return Log.color_wrap(msg, opts) + + if msg is Object and msg.get_class() in log_overwrites: + return log_overwrites.get(msg.get_class()).call(msg, opts) + elif typeof(msg) in log_overwrites: + return log_overwrites.get(typeof(msg)).call(msg, opts) + + # objects + if msg is Object and msg.has_method("to_pretty"): + return Log.to_pretty(msg.to_pretty(), opts) + if msg is Object and msg.has_method("data"): + return Log.to_pretty(msg.data(), opts) + if msg is Object and msg.has_method("to_printable"): + return Log.to_pretty(msg.to_printable(), opts) + + # arrays + if msg is Array or msg is PackedStringArray: + if len(msg) > Log.get_max_array_size(): + pr("[DEBUG]: truncating large array. total:", len(msg)) + msg = msg.slice(0, Log.get_max_array_size() - 1) + if newlines: + msg.append("...") + + var tmp = Log.color_wrap("[ ", opts) + var last = len(msg) - 1 + for i in range(len(msg)): + if newlines and last > 1: + tmp += "\n\t" + tmp += Log.to_pretty(msg[i], + # duplicate here to prevent indenting-per-msg + # e.g. when printing an array of dictionaries + opts.duplicate(true)) + if i != last: + tmp += Log.color_wrap(", ", opts) + tmp += Log.color_wrap(" ]", opts) + return tmp + + # dictionary + elif msg is Dictionary: + var tmp = Log.color_wrap("{ ", opts) + var ct = len(msg) + var last + if len(msg) > 0: + last = msg.keys()[-1] + for k in msg.keys(): + var val + if k in Log.get_dictionary_skip_keys(): + val = "..." + else: + opts.indent_level += 1 + val = Log.to_pretty(msg[k], opts) + if newlines and ct > 1: + tmp += "\n\t" \ + + range(indent_level)\ + .map(func(_i): return "\t")\ + .reduce(func(a, b): return str(a, b), "") + if use_color: + var key = Log.color_wrap('"%s"' % k, Log.assoc(opts, "typeof", "dict_key")) + tmp += "%s: %s" % [key, val] + else: + tmp += '"%s": %s' % [k, val] + if last and str(k) != str(last): + tmp += Log.color_wrap(", ", opts) + tmp += Log.color_wrap(" }", opts) + return tmp + + # strings + elif msg is String: + if msg == "": + return '""' + if "[color=" in msg and "[/color]" in msg: + # assumes the string is already colorized + # NOT PERFECT! could use a regex for something more robust + return msg + return Log.color_wrap(msg, opts) + elif msg is StringName: + return str(Log.color_wrap("&", opts), '"%s"' % msg) + elif msg is NodePath: + return str(Log.color_wrap("^", opts), '"%s"' % msg) + + # vectors + elif msg is Vector2 or msg is Vector2i: + return log_overwrites.get("Vector2").call(msg, opts) + + elif msg is Vector3 or msg is Vector3i: + if use_color: + return '%s%s%s%s%s%s%s' % [ + Log.color_wrap("(", opts), + Log.color_wrap(msg.x, Log.assoc(opts, "typeof", "vector_value")), + Log.color_wrap(",", opts), + Log.color_wrap(msg.y, Log.assoc(opts, "typeof", "vector_value")), + Log.color_wrap(",", opts), + Log.color_wrap(msg.z, Log.assoc(opts, "typeof", "vector_value")), + Log.color_wrap(")", opts), + ] + else: + return '(%s,%s,%s)' % [msg.x, msg.y, msg.z] + elif msg is Vector4 or msg is Vector4i: + if use_color: + return '%s%s%s%s%s%s%s%s%s' % [ + Log.color_wrap("(", opts), + Log.color_wrap(msg.x, Log.assoc(opts, "typeof", "vector_value")), + Log.color_wrap(",", opts), + Log.color_wrap(msg.y, Log.assoc(opts, "typeof", "vector_value")), + Log.color_wrap(",", opts), + Log.color_wrap(msg.z, Log.assoc(opts, "typeof", "vector_value")), + Log.color_wrap(",", opts), + Log.color_wrap(msg.w, Log.assoc(opts, "typeof", "vector_value")), + Log.color_wrap(")", opts), + ] + else: + return '(%s,%s,%s,%s)' % [msg.x, msg.y, msg.z, msg.w] + + # packed scene + elif msg is PackedScene: + if msg.resource_path != "": + return str(Log.color_wrap("PackedScene:", opts), '%s' % msg.resource_path.get_file()) + elif msg.get_script() != null and msg.get_script().resource_path != "": + return Log.color_wrap(msg.get_script().resource_path.get_file(), Log.assoc(opts, "typeof", "class_name")) + else: + return Log.color_wrap(msg, opts) + + # resource + elif msg is Resource: + if msg.get_script() != null and msg.get_script().resource_path != "": + return Log.color_wrap(msg.get_script().resource_path.get_file(), Log.assoc(opts, "typeof", "class_name")) + elif msg.resource_path != "": + return str(Log.color_wrap("Resource:", opts), '%s' % msg.resource_path.get_file()) + else: + return Log.color_wrap(msg, opts) + + # refcounted + elif msg is RefCounted: + if msg.get_script() != null and msg.get_script().resource_path != "": + return Log.color_wrap(msg.get_script().resource_path.get_file(), Log.assoc(opts, "typeof", "class_name")) + else: + return Log.color_wrap(msg.get_class(), Log.assoc(opts, "typeof", "class_name")) + + # fallback to primitive-type lookup + else: + return Log.color_wrap(msg, opts) + +## to_printable ########################################################################### + +static func log_prefix(stack): + if len(stack) > 1: + var call_site = stack[1] + var basename = call_site["source"].get_file().get_basename() + var line_num = str(call_site.get("line", 0)) + if call_site["source"].match("*/test/*"): + return "{" + basename + ":" + line_num + "}: " + elif call_site["source"].match("*/addons/*"): + return "<" + basename + ":" + line_num + ">: " + else: + return "[" + basename + ":" + line_num + "]: " + +static func to_printable(msgs, opts={}): + var stack = opts.get("stack", []) + var pretty = opts.get("pretty", true) + var newlines = opts.get("newlines", false) + var m = "" + if len(stack) > 0: + var prefix = Log.log_prefix(stack) + var prefix_type + if prefix != null and prefix[0] == "[": + prefix_type = "SRC" + elif prefix != null and prefix[0] == "{": + prefix_type = "TEST" + elif prefix != null and prefix[0] == "<": + prefix_type = "ADDONS" + if pretty: + m += Log.color_wrap(prefix, Log.assoc(opts, "typeof", prefix_type)) + else: + m += prefix + for msg in msgs: + # add a space between msgs + if pretty: + m += "%s " % Log.to_pretty(msg, opts) + else: + m += "%s " % str(msg) + return m.trim_suffix(" ") + +## public print fns ########################################################################### + +static func is_not_default(v): + return not v is String or (v is String and v != "ZZZDEF") + +static func pr(msg, msg2="ZZZDEF", msg3="ZZZDEF", msg4="ZZZDEF", msg5="ZZZDEF", msg6="ZZZDEF", msg7="ZZZDEF"): + var msgs = [msg, msg2, msg3, msg4, msg5, msg6, msg7] + msgs = msgs.filter(Log.is_not_default) + var m = Log.to_printable(msgs, {stack=get_stack()}) + print_rich(m) + +static func info(msg, msg2="ZZZDEF", msg3="ZZZDEF", msg4="ZZZDEF", msg5="ZZZDEF", msg6="ZZZDEF", msg7="ZZZDEF"): + var msgs = [msg, msg2, msg3, msg4, msg5, msg6, msg7] + msgs = msgs.filter(Log.is_not_default) + var m = Log.to_printable(msgs, {stack=get_stack()}) + print_rich(m) + +static func log(msg, msg2="ZZZDEF", msg3="ZZZDEF", msg4="ZZZDEF", msg5="ZZZDEF", msg6="ZZZDEF", msg7="ZZZDEF"): + var msgs = [msg, msg2, msg3, msg4, msg5, msg6, msg7] + msgs = msgs.filter(Log.is_not_default) + var m = Log.to_printable(msgs, {stack=get_stack()}) + print_rich(m) + +static func prn(msg, msg2="ZZZDEF", msg3="ZZZDEF", msg4="ZZZDEF", msg5="ZZZDEF", msg6="ZZZDEF", msg7="ZZZDEF"): + var msgs = [msg, msg2, msg3, msg4, msg5, msg6, msg7] + msgs = msgs.filter(Log.is_not_default) + var m = Log.to_printable(msgs, {stack=get_stack(), newlines=true}) + print_rich(m) + +static func warn(msg, msg2="ZZZDEF", msg3="ZZZDEF", msg4="ZZZDEF", msg5="ZZZDEF", msg6="ZZZDEF", msg7="ZZZDEF"): + var msgs = [msg, msg2, msg3, msg4, msg5, msg6, msg7] + msgs = msgs.filter(Log.is_not_default) + var rich_msgs = msgs.duplicate() + rich_msgs.push_front("[color=yellow][WARN][/color]") + print_rich(Log.to_printable(rich_msgs, {stack=get_stack(), newlines=true})) + var m = Log.to_printable(msgs, {stack=get_stack(), newlines=true, pretty=false}) + push_warning(m) + +static func err(msg, msg2="ZZZDEF", msg3="ZZZDEF", msg4="ZZZDEF", msg5="ZZZDEF", msg6="ZZZDEF", msg7="ZZZDEF"): + var msgs = [msg, msg2, msg3, msg4, msg5, msg6, msg7] + msgs = msgs.filter(Log.is_not_default) + var rich_msgs = msgs.duplicate() + rich_msgs.push_front("[color=red][ERR][/color]") + print_rich(Log.to_printable(rich_msgs, {stack=get_stack(), newlines=true})) + var m = Log.to_printable(msgs, {stack=get_stack(), newlines=true, pretty=false}) + push_error(m) + +static func error(msg, msg2="ZZZDEF", msg3="ZZZDEF", msg4="ZZZDEF", msg5="ZZZDEF", msg6="ZZZDEF", msg7="ZZZDEF"): + var msgs = [msg, msg2, msg3, msg4, msg5, msg6, msg7] + msgs = msgs.filter(Log.is_not_default) + var rich_msgs = msgs.duplicate() + rich_msgs.push_front("[color=red][ERR][/color]") + print_rich(Log.to_printable(rich_msgs, {stack=get_stack(), newlines=true})) + var m = Log.to_printable(msgs, {stack=get_stack(), newlines=true, pretty=false}) + push_error(m) diff --git a/addons/log/plugin.cfg b/addons/log/plugin.cfg new file mode 100644 index 0000000..6e89483 --- /dev/null +++ b/addons/log/plugin.cfg @@ -0,0 +1,14 @@ +[plugin] + +name="Log.gd" +description="A pretty-printing debug logger. + +Log.pr(\"some str\", some_object) + +- Colorizes printed data based on datatype +- Handles nested data structures (Arrays and Dictionaries) +- Prefixes logs with the callsite's source file +- Opt-in to pretty printing via duck-typing (implement a `to_printable()` method on the object)" +author="Russell Matney" +version="v0.0.5" +script="plugin.gd" diff --git a/addons/log/plugin.gd b/addons/log/plugin.gd new file mode 100644 index 0000000..15356b8 --- /dev/null +++ b/addons/log/plugin.gd @@ -0,0 +1,3 @@ +@tool +extends EditorPlugin + diff --git a/components/DropShadowComponent.tscn b/components/DropShadowComponent.tscn new file mode 100644 index 0000000..4622bbb --- /dev/null +++ b/components/DropShadowComponent.tscn @@ -0,0 +1,8 @@ +[gd_scene load_steps=2 format=3 uid="uid://6w1nq8lhq3tq"] + +[ext_resource type="Script" path="res://components/scripts/drop_shadow_component.gd" id="1_060pv"] + +[node name="DropShadowComponent" type="Node2D"] +script = ExtResource("1_060pv") + +[node name="DropShadowSprite" type="Sprite2D" parent="."] diff --git a/components/RulesComponent.tscn b/components/RulesComponent.tscn new file mode 100644 index 0000000..ab04a71 --- /dev/null +++ b/components/RulesComponent.tscn @@ -0,0 +1,6 @@ +[gd_scene load_steps=2 format=3 uid="uid://dn6aa6f2f4g4i"] + +[ext_resource type="Script" path="res://components/scripts/rules_component.gd" id="1_53vkw"] + +[node name="RulesComponent" type="Node"] +script = ExtResource("1_53vkw") diff --git a/components/scripts/drop_shadow_component.gd b/components/scripts/drop_shadow_component.gd new file mode 100644 index 0000000..744bb6f --- /dev/null +++ b/components/scripts/drop_shadow_component.gd @@ -0,0 +1,24 @@ +extends Node2D + +@export var parent_sprite : Sprite2D = null +@export var drop_shadow_distance : int = 10 + +var drop_shadow_sprite : Sprite2D = null + +func _ready() -> void: + if parent_sprite is Sprite2D: + drop_shadow() + pass + +func drop_shadow() -> void: + drop_shadow_sprite = parent_sprite.duplicate() + + drop_shadow_sprite.scale = Vector2(1.1, 1.1) + + drop_shadow_sprite.set_modulate(Color(0, 0, 0, 0.1)) + + drop_shadow_sprite.set_position(Vector2(drop_shadow_distance, drop_shadow_distance)) + #drop_shadow_sprite.global_position = parent_sprite.global_position + Vector2(drop_shadow_distance, drop_shadow_distance) + drop_shadow_sprite.show_behind_parent = true + + parent_sprite.add_child.call_deferred(drop_shadow_sprite) diff --git a/components/scripts/game_rules.gd b/components/scripts/game_rules.gd new file mode 100644 index 0000000..9361262 --- /dev/null +++ b/components/scripts/game_rules.gd @@ -0,0 +1,18 @@ +extends Resource +class_name GameRulesResource + +@export_category("Level Description") +@export var level_number : int = 1 +@export var level_name : String = "" +@export var level_description : String = "" + +@export_category("Level Rules") +@export var bees_available : int = 10 +@export var nectar_required : int = 50 +@export var level_par : int = 2 + +@export_category("Drones Enabled") +@export var collector_enabled : bool = true +@export var dancer_enabled : bool = true +@export var director_enabled : bool = false +@export var distractor_enabled : bool = false diff --git a/components/scripts/rules_component.gd b/components/scripts/rules_component.gd new file mode 100644 index 0000000..a7a7e56 --- /dev/null +++ b/components/scripts/rules_component.gd @@ -0,0 +1,4 @@ +extends Node +class_name RulesComponent + +@export var game_rules : GameRulesResource = null diff --git a/entities/Bee.tscn b/entities/Bee.tscn new file mode 100644 index 0000000..0c53987 --- /dev/null +++ b/entities/Bee.tscn @@ -0,0 +1,237 @@ +[gd_scene load_steps=21 format=3 uid="uid://deek6uv574xas"] + +[ext_resource type="Script" path="res://entities/scripts/bee.gd" id="1_pnu7x"] +[ext_resource type="Script" path="res://entities/scripts/finite_state_machine.gd" id="1_t3s5d"] +[ext_resource type="Script" path="res://entities/bee/states/bee_idle.gd" id="3_vasc5"] +[ext_resource type="Script" path="res://entities/bee/states/bee_death.gd" id="5_1q5nb"] +[ext_resource type="Script" path="res://entities/bee/states/bee_gather.gd" id="5_4vs4l"] +[ext_resource type="Script" path="res://entities/scripts/bee_hit_box.gd" id="5_agq38"] +[ext_resource type="Script" path="res://entities/bee/states/bee_travelling.gd" id="5_qtx0r"] +[ext_resource type="Script" path="res://entities/bee/states/bee_sleeping.gd" id="7_6qlbu"] +[ext_resource type="Script" path="res://entities/bee/states/bee_returning.gd" id="8_dptvu"] +[ext_resource type="Texture2D" uid="uid://ch3qalaaky8ng" path="res://resources/textures/bee_body.png" id="10_yi42o"] +[ext_resource type="Texture2D" uid="uid://bsskcrayofs8n" path="res://resources/textures/bee_wings.png" id="11_utbwk"] +[ext_resource type="Texture2D" uid="uid://b2jr0mt5xymog" path="res://resources/particles/smoke_01.png" id="12_52rft"] + +[sub_resource type="Animation" id="Animation_1dh34"] +resource_name = "Death" +length = 2.0 +loop_mode = 1 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("BeeBody:rotation") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 0.5, 2), +"transitions": PackedFloat32Array(1, 1, 1), +"update": 0, +"values": [0.0, 1.5708, 1.5708] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("BeeBody:position") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0, 0.6, 2), +"transitions": PackedFloat32Array(1, 1, 1), +"update": 0, +"values": [Vector2(0, 0), Vector2(0, 50), Vector2(0, 50)] +} +tracks/2/type = "value" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath("ImpactCloud:self_modulate:a") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/keys = { +"times": PackedFloat32Array(0, 0.4, 1.3), +"transitions": PackedFloat32Array(1, 1, 1), +"update": 0, +"values": [0.0, 0.0, 0.5] +} +tracks/3/type = "method" +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/path = NodePath(".") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/keys = { +"times": PackedFloat32Array(2), +"transitions": PackedFloat32Array(1), +"values": [{ +"args": [], +"method": &"queue_free" +}] +} +tracks/4/type = "value" +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/path = NodePath(".:modulate:a") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/keys = { +"times": PackedFloat32Array(0, 1.6, 2), +"transitions": PackedFloat32Array(1, 1, 1), +"update": 0, +"values": [1.0, 1.0, 0.0] +} +tracks/5/type = "value" +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/path = NodePath("ImpactCloud:visible") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/keys = { +"times": PackedFloat32Array(0, 2), +"transitions": PackedFloat32Array(1, 1), +"update": 1, +"values": [true, false] +} + +[sub_resource type="Animation" id="Animation_iys4n"] +resource_name = "Flying" +length = 5.0 +loop_mode = 1 +step = 0.25 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("BeeBody:position") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 1, 2, 3, 4, 5), +"transitions": PackedFloat32Array(-2, -2, -2, -2, -2, -2), +"update": 0, +"values": [Vector2(0, 0), Vector2(0, 10), Vector2(0, 5), Vector2(0, -5), Vector2(0, 10), Vector2(0, 0)] +} + +[sub_resource type="Animation" id="Animation_t75ra"] +resource_name = "Idle" + +[sub_resource type="Animation" id="Animation_0encb"] +length = 0.001 + +[sub_resource type="AnimationLibrary" id="AnimationLibrary_m27po"] +_data = { +"Death": SubResource("Animation_1dh34"), +"Flying": SubResource("Animation_iys4n"), +"Idle": SubResource("Animation_t75ra"), +"RESET": SubResource("Animation_0encb") +} + +[sub_resource type="Animation" id="Animation_muxdj"] +resource_name = "Fly" +length = 0.5 +loop_mode = 1 +step = 0.05 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("BeeBody/BeeWings:scale") +tracks/0/interp = 1 +tracks/0/loop_wrap = false +tracks/0/keys = { +"times": PackedFloat32Array(0, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45), +"transitions": PackedFloat32Array(-2, -2, -2, -2, -2, -2, -2, -2, -2, -2), +"update": 0, +"values": [Vector2(1, 1), Vector2(1, 0.1), Vector2(1, 1), Vector2(1, 0.1), Vector2(1, 1), Vector2(1, 0.1), Vector2(1, 1), Vector2(1, 0.1), Vector2(1, 1), Vector2(1, 0.1)] +} + +[sub_resource type="AnimationLibrary" id="AnimationLibrary_yvewf"] +_data = { +"Fly": SubResource("Animation_muxdj") +} + +[sub_resource type="CircleShape2D" id="CircleShape2D_86nxf"] +radius = 13.0384 + +[node name="Bee" type="CharacterBody2D" groups=["bee"]] +self_modulate = Color(1, 1, 1, 0.169489) +z_index = 99 +collision_mask = 0 +script = ExtResource("1_pnu7x") + +[node name="BeePositionAnimation" type="AnimationPlayer" parent="."] +libraries = { +"": SubResource("AnimationLibrary_m27po") +} + +[node name="WingAnimation" type="AnimationPlayer" parent="."] +libraries = { +"": SubResource("AnimationLibrary_yvewf") +} + +[node name="CollisionShape2D" type="CollisionShape2D" parent="."] +light_mask = 0 +shape = SubResource("CircleShape2D_86nxf") + +[node name="HitBox" type="Area2D" parent="."] +collision_layer = 6 +collision_mask = 7 +script = ExtResource("5_agq38") + +[node name="CollisionShape2D" type="CollisionShape2D" parent="HitBox"] +light_mask = 0 +shape = SubResource("CircleShape2D_86nxf") + +[node name="StateMachine" type="Node2D" parent="." node_paths=PackedStringArray("initial_state")] +script = ExtResource("1_t3s5d") +initial_state = NodePath("Idle") + +[node name="Idle" type="Node" parent="StateMachine"] +script = ExtResource("3_vasc5") + +[node name="Death" type="Node" parent="StateMachine"] +script = ExtResource("5_1q5nb") + +[node name="Travelling" type="Node" parent="StateMachine"] +script = ExtResource("5_qtx0r") + +[node name="Gathering" type="Node" parent="StateMachine"] +script = ExtResource("5_4vs4l") + +[node name="Sleeping" type="Node" parent="StateMachine"] +script = ExtResource("7_6qlbu") + +[node name="Returning" type="Node" parent="StateMachine"] +script = ExtResource("8_dptvu") + +[node name="BeeBody" type="Sprite2D" parent="."] +position = Vector2(0, 50) +rotation = 1.5708 +scale = Vector2(0.1, 0.1) +texture = ExtResource("10_yi42o") + +[node name="BeeWings" type="Sprite2D" parent="BeeBody"] +scale = Vector2(1, 0.999992) +texture = ExtResource("11_utbwk") + +[node name="CPUParticles2D" type="CPUParticles2D" parent="BeeBody"] +position = Vector2(0, 3.94118) +scale = Vector2(1.52885, 1.5978) +lifetime_randomness = 0.33 +gravity = Vector2(0, 0) +linear_accel_min = 5.0 +linear_accel_max = 10.0 + +[node name="Shadow" type="Sprite2D" parent="."] +modulate = Color(0, 0, 0, 0.0784314) +position = Vector2(0, 50) +scale = Vector2(0.07, 0.04) +texture = ExtResource("10_yi42o") + +[node name="ImpactCloud" type="CPUParticles2D" parent="."] +self_modulate = Color(1, 1, 1, 0.333333) +position = Vector2(0, 50) +texture = ExtResource("12_52rft") +gravity = Vector2(0, 0) +scale_amount_min = 0.01 +scale_amount_max = 0.1 + +[connection signal="area_entered" from="HitBox" to="HitBox" method="_on_area_entered"] +[connection signal="area_exited" from="HitBox" to="HitBox" method="_on_area_exited"] diff --git a/entities/Beehive.tscn b/entities/Beehive.tscn new file mode 100644 index 0000000..61ff1e2 --- /dev/null +++ b/entities/Beehive.tscn @@ -0,0 +1,64 @@ +[gd_scene load_steps=8 format=3 uid="uid://dyu4mucawjlu6"] + +[ext_resource type="Script" path="res://entities/scripts/beehive.gd" id="1_ej1r1"] +[ext_resource type="Texture2D" uid="uid://dijxeckxe7trv" path="res://resources/textures/beehive.png" id="2_2xhre"] +[ext_resource type="PackedScene" uid="uid://6w1nq8lhq3tq" path="res://components/DropShadowComponent.tscn" id="3_uglsl"] +[ext_resource type="Texture2D" uid="uid://dhf4dessaw5p5" path="res://resources/particles/twirl_01.png" id="4_4biie"] + +[sub_resource type="CircleShape2D" id="CircleShape2D_h6wmc"] +radius = 250.0 + +[sub_resource type="Animation" id="Animation_41718"] +resource_name = "Highlight" +length = 5.0 +loop_mode = 1 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("AreaHighlight:rotation") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 5), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [6.28319, 0.0] +} + +[sub_resource type="AnimationLibrary" id="AnimationLibrary_qs4pr"] +_data = { +"Highlight": SubResource("Animation_41718") +} + +[node name="Beehive" type="Node2D"] +script = ExtResource("1_ej1r1") + +[node name="BeehiveSprite" type="Sprite2D" parent="."] +position = Vector2(-3, 1) +scale = Vector2(0.5, 0.5) +texture = ExtResource("2_2xhre") + +[node name="DropShadowComponent" parent="." node_paths=PackedStringArray("parent_sprite") instance=ExtResource("3_uglsl")] +parent_sprite = NodePath("../BeehiveSprite") +drop_shadow_distance = 25 + +[node name="Area2D" type="Area2D" parent="."] +visible = false + +[node name="CollisionShape2D" type="CollisionShape2D" parent="Area2D"] +shape = SubResource("CircleShape2D_h6wmc") + +[node name="AreaHighlight" type="Sprite2D" parent="."] +visible = false +self_modulate = Color(1, 1, 0.117647, 0.352941) +rotation = 6.28319 +texture = ExtResource("4_4biie") + +[node name="AnimationPlayer" type="AnimationPlayer" parent="."] +libraries = { +"": SubResource("AnimationLibrary_qs4pr") +} +autoplay = "Highlight" + +[connection signal="area_entered" from="Area2D" to="." method="_on_area_2d_area_entered"] +[connection signal="area_exited" from="Area2D" to="." method="_on_area_2d_area_exited"] diff --git a/entities/CollectorDrone.tscn b/entities/CollectorDrone.tscn new file mode 100644 index 0000000..74dfb6b --- /dev/null +++ b/entities/CollectorDrone.tscn @@ -0,0 +1,80 @@ +[gd_scene load_steps=5 format=3 uid="uid://dqdi1tpoid80c"] + +[ext_resource type="Script" path="res://entities/scripts/collector_drone.gd" id="1_ws83e"] +[ext_resource type="Texture2D" uid="uid://btyc0yk5nbn2t" path="res://resources/textures/collector_drone.png" id="2_wq72s"] + +[sub_resource type="Animation" id="Animation_m21sl"] +resource_name = "Idle" +length = 2.0 +loop_mode = 1 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("CollectorDrone:offset") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 1, 2), +"transitions": PackedFloat32Array(1, -2, 1), +"update": 0, +"values": [Vector2(0, 0), Vector2(10, 8), Vector2(0, 0)] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("CollectorDrone:rotation") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0, 1, 2), +"transitions": PackedFloat32Array(1, -2, 1), +"update": 0, +"values": [0.0, 0.0523599, 0.0] +} +tracks/2/type = "value" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath("Shadow:offset") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/keys = { +"times": PackedFloat32Array(0, 1, 2), +"transitions": PackedFloat32Array(1, -2, 1), +"update": 0, +"values": [Vector2(3.91169, 3.12935), Vector2(10, 8), Vector2(3.91169, 3.12935)] +} + +[sub_resource type="AnimationLibrary" id="AnimationLibrary_keqev"] +_data = { +"Idle": SubResource("Animation_m21sl") +} + +[node name="CollectorDrone" type="Node2D"] +script = ExtResource("1_ws83e") + +[node name="Polygon2D" type="Polygon2D" parent="."] +visible = false +position = Vector2(1, -1) +color = Color(0.620241, 0.619217, 0.900702, 1) +polygon = PackedVector2Array(-28, -25, 25, -28, 26, 33, -32, 19) + +[node name="CollectorDrone" type="Sprite2D" parent="."] +position = Vector2(0, 1) +rotation = 0.00352767 +scale = Vector2(0.25, 0.25) +texture = ExtResource("2_wq72s") +offset = Vector2(0.673735, 0.538988) + +[node name="Shadow" type="Sprite2D" parent="."] +modulate = Color(0, 0, 0, 0.0784314) +position = Vector2(0, 100) +rotation = 0.0204816 +scale = Vector2(0.25, 0.1) +texture = ExtResource("2_wq72s") +offset = Vector2(4.32188, 3.4575) + +[node name="AnimationPlayer" type="AnimationPlayer" parent="."] +libraries = { +"": SubResource("AnimationLibrary_keqev") +} +autoplay = "Idle" diff --git a/entities/DancerDrone.tscn b/entities/DancerDrone.tscn new file mode 100644 index 0000000..1f40797 --- /dev/null +++ b/entities/DancerDrone.tscn @@ -0,0 +1,179 @@ +[gd_scene load_steps=10 format=3 uid="uid://cx7cunaspu08a"] + +[ext_resource type="Script" path="res://entities/scripts/dancer_drone.gd" id="1_44a5b"] +[ext_resource type="Texture2D" uid="uid://ck51br2sjtfbk" path="res://resources/textures/dancing_drone_body.png" id="2_d306w"] +[ext_resource type="Texture2D" uid="uid://bf3e8avdh3iwn" path="res://resources/textures/dancing_drone_hat.png" id="3_deyv3"] +[ext_resource type="Texture2D" uid="uid://btwh1m8nvxxn3" path="res://resources/textures/dancing_drone_leg_1.png" id="4_uppgc"] +[ext_resource type="Texture2D" uid="uid://0e8ksjsqrsg5" path="res://resources/textures/dancing_drone_leg_2.png" id="5_kvsjc"] + +[sub_resource type="CircleShape2D" id="CircleShape2D_xfqbx"] +radius = 25.0 + +[sub_resource type="Animation" id="Animation_utxxn"] +resource_name = "Dancing" +length = 3.0 +loop_mode = 1 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("DancingDroneBody:rotation") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 1.5, 3), +"transitions": PackedFloat32Array(1, -2, 1), +"update": 0, +"values": [0.0, 0.0523599, 0.0] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("DancingDroneBody:position") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0, 1.5, 3), +"transitions": PackedFloat32Array(1, -2, 1), +"update": 0, +"values": [Vector2(1, -3), Vector2(10, -10), Vector2(1, -3)] +} +tracks/2/type = "value" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath("DancingDroneBody/DancingDroneHat:rotation") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/keys = { +"times": PackedFloat32Array(0, 1.7, 3), +"transitions": PackedFloat32Array(1, -2, 1), +"update": 0, +"values": [0.0, 0.349066, 0.0] +} +tracks/3/type = "value" +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/path = NodePath("DancingDroneBody/DancingDroneLeg1:rotation") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/keys = { +"times": PackedFloat32Array(0, 1.6, 3), +"transitions": PackedFloat32Array(1, -2, 1), +"update": 0, +"values": [0.0, -0.174533, 0.0] +} +tracks/4/type = "value" +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/path = NodePath("DancingDroneBody/DancingDroneLeg2:rotation") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/keys = { +"times": PackedFloat32Array(0, 1.3, 3), +"transitions": PackedFloat32Array(1, -2, 1), +"update": 0, +"values": [0.0, -0.349066, 0.0] +} +tracks/5/type = "value" +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/path = NodePath("DancingDroneBody2:position") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/keys = { +"times": PackedFloat32Array(0, 1.5, 2.9), +"transitions": PackedFloat32Array(1, -0.5, 1), +"update": 0, +"values": [Vector2(1, 100), Vector2(10, 102), Vector2(1, 100)] +} + +[sub_resource type="Animation" id="Animation_iwafd"] +length = 0.001 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("DancingDroneBody2:position") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(1, 100)] +} + +[sub_resource type="AnimationLibrary" id="AnimationLibrary_pfpsg"] +_data = { +"Dancing": SubResource("Animation_utxxn"), +"RESET": SubResource("Animation_iwafd") +} + +[node name="DancerDrone" type="Node2D" groups=["dancer"]] +script = ExtResource("1_44a5b") + +[node name="Polygon2D" type="Polygon2D" parent="."] +visible = false +position = Vector2(1, -1) +color = Color(0.354435, 0.719091, 0.745333, 1) +polygon = PackedVector2Array(-28, -25, 25, -28, 26, 33, -32, 19) + +[node name="HitBox" type="Area2D" parent="." groups=["dancer"]] + +[node name="HitBoxShape" type="CollisionShape2D" parent="HitBox"] +shape = SubResource("CircleShape2D_xfqbx") + +[node name="DancingDroneBody" type="Sprite2D" parent="."] +position = Vector2(9.98454, -9.98798) +rotation = 0.05227 +scale = Vector2(0.2, 0.2) +texture = ExtResource("2_d306w") +offset = Vector2(3.09204, 0) + +[node name="DancingDroneHat" type="Sprite2D" parent="DancingDroneBody"] +position = Vector2(-102, -50) +rotation = 0.30747 +texture = ExtResource("3_deyv3") +offset = Vector2(41, -91) + +[node name="DancingDroneLeg1" type="Sprite2D" parent="DancingDroneBody"] +position = Vector2(-72, 94) +rotation = -0.163344 +texture = ExtResource("4_uppgc") +offset = Vector2(19, 94) + +[node name="DancingDroneLeg2" type="Sprite2D" parent="DancingDroneBody"] +position = Vector2(54, 86) +rotation = -0.33965 +texture = ExtResource("5_kvsjc") +offset = Vector2(-16, 107) + +[node name="DancingDroneBody2" type="Sprite2D" parent="."] +modulate = Color(0, 0, 0, 0.0784314) +position = Vector2(1, 100) +rotation = 0.0289966 +scale = Vector2(0.2, 0.05) +texture = ExtResource("2_d306w") +offset = Vector2(3.09204, 0) + +[node name="DancingDroneHat" type="Sprite2D" parent="DancingDroneBody2"] +position = Vector2(-102, -50) +rotation = 0.229387 +texture = ExtResource("3_deyv3") +offset = Vector2(41, -91) + +[node name="DancingDroneLeg1" type="Sprite2D" parent="DancingDroneBody2"] +position = Vector2(-72, 94) +rotation = -0.0983052 +texture = ExtResource("4_uppgc") +offset = Vector2(19, 94) + +[node name="DancingDroneLeg2" type="Sprite2D" parent="DancingDroneBody2"] +position = Vector2(54, 86) +rotation = -0.146 +texture = ExtResource("5_kvsjc") +offset = Vector2(-16, 107) + +[node name="AnimationPlayer" type="AnimationPlayer" parent="."] +libraries = { +"": SubResource("AnimationLibrary_pfpsg") +} +autoplay = "Dancing" diff --git a/entities/DirectorDrone.tscn b/entities/DirectorDrone.tscn new file mode 100644 index 0000000..0783eec --- /dev/null +++ b/entities/DirectorDrone.tscn @@ -0,0 +1,126 @@ +[gd_scene load_steps=7 format=3 uid="uid://nxq2fd04ehcu"] + +[ext_resource type="Script" path="res://entities/scripts/director_drone.gd" id="1_3v6jp"] +[ext_resource type="Texture2D" uid="uid://dnhs5ymd6ybyd" path="res://resources/textures/director_drone.png" id="2_8nbjk"] + +[sub_resource type="CapsuleShape2D" id="CapsuleShape2D_wr5vn"] +radius = 43.0 +height = 94.0 + +[sub_resource type="Animation" id="Animation_qstd5"] +resource_name = "Idle" +length = 2.0 +loop_mode = 1 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("DirectorDrone:offset") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 1, 2), +"transitions": PackedFloat32Array(1, 1, 1), +"update": 0, +"values": [Vector2(0, 0), Vector2(10, 0), Vector2(0, 0)] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("Shadow:offset") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0.047402, 1, 2), +"transitions": PackedFloat32Array(1, 1, 1), +"update": 0, +"values": [Vector2(0, 0), Vector2(10, 0), Vector2(0, 0)] +} +tracks/2/type = "value" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath("DirectorDrone:rotation") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/keys = { +"times": PackedFloat32Array(0, 1, 2), +"transitions": PackedFloat32Array(1, -2, 1), +"update": 0, +"values": [0.0, 0.0523599, 0.0] +} + +[sub_resource type="Animation" id="Animation_gkp0o"] +length = 0.001 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("DirectorDrone:offset") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(0, 0)] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("Shadow:offset") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(0, 0)] +} + +[sub_resource type="AnimationLibrary" id="AnimationLibrary_xu26h"] +_data = { +"Idle": SubResource("Animation_qstd5"), +"RESET": SubResource("Animation_gkp0o") +} + +[node name="DirectorDrone" type="Node2D"] +script = ExtResource("1_3v6jp") + +[node name="ClickDetection" type="Area2D" parent="."] + +[node name="CollisionShape2D" type="CollisionShape2D" parent="ClickDetection"] +position = Vector2(-2, 10) +shape = SubResource("CapsuleShape2D_wr5vn") + +[node name="DirectorDrone" type="Sprite2D" parent="."] +scale = Vector2(0.3, 0.3) +texture = ExtResource("2_8nbjk") + +[node name="Shadow" type="Sprite2D" parent="."] +self_modulate = Color(0, 0, 0, 0.0784314) +position = Vector2(0, 100) +scale = Vector2(0.3, 0.1) +texture = ExtResource("2_8nbjk") + +[node name="Polygon2D" type="Polygon2D" parent="."] +visible = false +position = Vector2(1, -1) +color = Color(0.703926, 0.656042, 0.441124, 1) +polygon = PackedVector2Array(-28, -25, 25, -28, 26, 33, -32, 19) + +[node name="Label" type="Label" parent="."] +visible = false +offset_left = 16.0 +offset_top = 25.0 +offset_right = 56.0 +offset_bottom = 48.0 +theme_override_colors/font_color = Color(1, 1, 1, 1) +text = "9 " + +[node name="AnimationPlayer" type="AnimationPlayer" parent="."] +libraries = { +"": SubResource("AnimationLibrary_xu26h") +} +autoplay = "Idle" + +[connection signal="input_event" from="ClickDetection" to="." method="_on_click_detection_input_event"] +[connection signal="mouse_entered" from="ClickDetection" to="." method="_on_click_detection_mouse_entered"] +[connection signal="mouse_exited" from="ClickDetection" to="." method="_on_click_detection_mouse_exited"] diff --git a/entities/DistractorDrone.tscn b/entities/DistractorDrone.tscn new file mode 100644 index 0000000..8c2ac5b --- /dev/null +++ b/entities/DistractorDrone.tscn @@ -0,0 +1,95 @@ +[gd_scene load_steps=6 format=3 uid="uid://ss2dg1i7j4ck"] + +[ext_resource type="Script" path="res://entities/scripts/distractor_drone.gd" id="1_vnjar"] +[ext_resource type="Texture2D" uid="uid://cfufcbeeeg5oy" path="res://resources/textures/distractor_drone.png" id="2_dr1h4"] + +[sub_resource type="Animation" id="Animation_wno6f"] +resource_name = "Idle" +length = 5.0 +loop_mode = 1 +step = 0.5 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("DistractorDrone:position:x") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 2.5, 5), +"transitions": PackedFloat32Array(-2, -2, -2), +"update": 0, +"values": [30.0, -30.0, 30.0] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("DistractorDrone:position:y") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0, 1, 2.5, 4, 5), +"transitions": PackedFloat32Array(-2, -2, 1, -2, -2), +"update": 0, +"values": [0.0, 30.0, 0.0, 40.0, 0.0] +} +tracks/2/type = "value" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath("DistractorDrone:rotation") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/keys = { +"times": PackedFloat32Array(0, 1, 2.5, 4, 5), +"transitions": PackedFloat32Array(-2, -2, -2, -2, -2), +"update": 0, +"values": [0.0, 0.0698132, -0.10472, 0.10472, 0.0] +} +tracks/3/type = "value" +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/path = NodePath("Shadow:position:x") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/keys = { +"times": PackedFloat32Array(0, 2.5, 5), +"transitions": PackedFloat32Array(-2, -2, -2), +"update": 0, +"values": [30.0, -30.0, 30.0] +} + +[sub_resource type="AnimationLibrary" id="AnimationLibrary_lcuxq"] +_data = { +"Idle": SubResource("Animation_wno6f") +} + +[sub_resource type="CircleShape2D" id="CircleShape2D_bxdlt"] +radius = 31.0161 + +[node name="DistractorDrone" type="CharacterBody2D" groups=["distractor"]] +script = ExtResource("1_vnjar") + +[node name="AnimationPlayer" type="AnimationPlayer" parent="."] +libraries = { +"": SubResource("AnimationLibrary_lcuxq") +} +autoplay = "Idle" + +[node name="DroneShape" type="CollisionShape2D" parent="."] +shape = SubResource("CircleShape2D_bxdlt") + +[node name="HitBox" type="Area2D" parent="."] + +[node name="Shape" type="CollisionShape2D" parent="HitBox"] +shape = SubResource("CircleShape2D_bxdlt") + +[node name="DistractorDrone" type="Sprite2D" parent="."] +position = Vector2(28.6279, 5.71726) +rotation = 0.0149678 +scale = Vector2(0.2, 0.2) +texture = ExtResource("2_dr1h4") + +[node name="Shadow" type="Sprite2D" parent="."] +modulate = Color(0, 0, 0, 0.0784314) +position = Vector2(28.6279, 100) +scale = Vector2(0.151346, 0.0434807) +texture = ExtResource("2_dr1h4") diff --git a/entities/Dog.tscn b/entities/Dog.tscn new file mode 100644 index 0000000..c2621a5 --- /dev/null +++ b/entities/Dog.tscn @@ -0,0 +1,172 @@ +[gd_scene load_steps=11 format=3 uid="uid://cfhoi2rqxa3up"] + +[ext_resource type="Script" path="res://scenes/scripts/dog.gd" id="1_26pvc"] +[ext_resource type="Texture2D" uid="uid://cqs2lfakkpqib" path="res://resources/textures/dog_body.png" id="2_mewoo"] +[ext_resource type="Texture2D" uid="uid://b22isfr66b8y2" path="res://resources/textures/dog_head.png" id="3_d7db6"] +[ext_resource type="Texture2D" uid="uid://bwxbit5i2x2ti" path="res://resources/textures/dog_tail.png" id="4_odrmk"] +[ext_resource type="Texture2D" uid="uid://dhf4dessaw5p5" path="res://resources/particles/twirl_01.png" id="5_dwvih"] + +[sub_resource type="Animation" id="Animation_y6mxj"] +resource_name = "Idle" +loop_mode = 1 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("DogSprite/DogTail:rotation") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 0.5, 1), +"transitions": PackedFloat32Array(-2, -2, -2), +"update": 0, +"values": [-0.10472, 0.10472, -0.10472] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("DogSprite/DogHead:rotation") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0, 0.4, 1), +"transitions": PackedFloat32Array(-2, -2, -2), +"update": 0, +"values": [0.0349066, -0.0349066, 0.0349066] +} +tracks/2/type = "value" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath("DogSprite/DogBody:scale") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/keys = { +"times": PackedFloat32Array(0, 0.6, 1), +"transitions": PackedFloat32Array(-2, -2, -2), +"update": 0, +"values": [Vector2(1, 1), Vector2(1.04, 1), Vector2(1, 1)] +} +tracks/3/type = "value" +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/path = NodePath("DogShadow/DogBody:scale") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/keys = { +"times": PackedFloat32Array(0, 0.6, 1), +"transitions": PackedFloat32Array(-2, -2, -2), +"update": 0, +"values": [Vector2(1, 1), Vector2(1.04, 1), Vector2(1, 1)] +} +tracks/4/type = "value" +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/path = NodePath("DogShadow/DogTail:rotation") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/keys = { +"times": PackedFloat32Array(0, 0.5, 1), +"transitions": PackedFloat32Array(-2, -2, -2), +"update": 0, +"values": [-0.10472, 0.10472, -0.10472] +} + +[sub_resource type="AnimationLibrary" id="AnimationLibrary_2ki86"] +_data = { +"Idle": SubResource("Animation_y6mxj") +} + +[sub_resource type="Animation" id="Animation_ajt0l"] +resource_name = "Highlight" +length = 5.0 +loop_mode = 1 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("AreaHighlight:rotation") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 5), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [6.28319, 0.0] +} + +[sub_resource type="AnimationLibrary" id="AnimationLibrary_t7soo"] +_data = { +"Highlight": SubResource("Animation_ajt0l") +} + +[sub_resource type="CircleShape2D" id="CircleShape2D_eyufl"] +radius = 191.83 + +[node name="Dog" type="Node2D" groups=["dog"]] +position = Vector2(-5, -1) +script = ExtResource("1_26pvc") + +[node name="AnimationPlayer" type="AnimationPlayer" parent="."] +libraries = { +"": SubResource("AnimationLibrary_2ki86") +} +autoplay = "Idle" + +[node name="DogHighlightAnimation" type="AnimationPlayer" parent="."] +libraries = { +"": SubResource("AnimationLibrary_t7soo") +} +autoplay = "Highlight" + +[node name="DeathBox" type="Area2D" parent="."] +input_pickable = false + +[node name="CollisionShape2D" type="CollisionShape2D" parent="DeathBox"] +shape = SubResource("CircleShape2D_eyufl") + +[node name="DogShadow" type="Node2D" parent="."] +modulate = Color(0, 0, 0, 0.0392157) +position = Vector2(10, 10) +rotation = 1.5708 +scale = Vector2(0.4, 0.4) + +[node name="DogBody" type="Sprite2D" parent="DogShadow"] +scale = Vector2(1.03986, 1) +texture = ExtResource("2_mewoo") + +[node name="DogHead" type="Sprite2D" parent="DogShadow"] +position = Vector2(12.5, -165) +rotation = 0.0349066 +texture = ExtResource("3_d7db6") +offset = Vector2(-2.5, -75) + +[node name="DogTail" type="Sprite2D" parent="DogShadow"] +position = Vector2(2.50001, 205) +rotation = 0.0818845 +texture = ExtResource("4_odrmk") +offset = Vector2(2.5, 67.5) + +[node name="DogSprite" type="Node2D" parent="."] +rotation = 1.5708 +scale = Vector2(0.4, 0.4) + +[node name="DogBody" type="Sprite2D" parent="DogSprite"] +scale = Vector2(1.03986, 1) +texture = ExtResource("2_mewoo") + +[node name="DogHead" type="Sprite2D" parent="DogSprite"] +position = Vector2(12.5, -165) +rotation = -0.0166864 +texture = ExtResource("3_d7db6") +offset = Vector2(-2.5, -75) + +[node name="DogTail" type="Sprite2D" parent="DogSprite"] +position = Vector2(5, 182.5) +rotation = 0.0818845 +texture = ExtResource("4_odrmk") +offset = Vector2(2.5, 67.5) + +[node name="AreaHighlight" type="Sprite2D" parent="."] +visible = false +modulate = Color(1, 0.0980392, 0.160784, 0.345098) +rotation = 0.633674 +scale = Vector2(0.8, 0.8) +texture = ExtResource("5_dwvih") diff --git a/entities/Flowers.tscn b/entities/Flowers.tscn new file mode 100644 index 0000000..7105edf --- /dev/null +++ b/entities/Flowers.tscn @@ -0,0 +1,138 @@ +[gd_scene load_steps=9 format=3 uid="uid://bme541qdw7nai"] + +[ext_resource type="Script" path="res://entities/scripts/flowers.gd" id="1_72iub"] +[ext_resource type="PackedScene" uid="uid://rnykx61eqxyk" path="res://scenes/decor/flower_1.tscn" id="1_biusc"] +[ext_resource type="PackedScene" uid="uid://b7quc1hxenh5p" path="res://scenes/decor/flower_2.tscn" id="2_k5hnf"] +[ext_resource type="Texture2D" uid="uid://dhf4dessaw5p5" path="res://resources/particles/twirl_01.png" id="3_xruiv"] +[ext_resource type="PackedScene" uid="uid://bnwvtlsvxjmel" path="res://entities/Snail.tscn" id="5_5uu7l"] + +[sub_resource type="CircleShape2D" id="CircleShape2D_1tovu"] +radius = 142.316 + +[sub_resource type="Animation" id="Animation_41718"] +resource_name = "Highlight" +length = 5.0 +loop_mode = 1 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("AreaHighlight:rotation") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 5), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [6.28319, 0.0] +} + +[sub_resource type="AnimationLibrary" id="AnimationLibrary_qs4pr"] +_data = { +"Highlight": SubResource("Animation_41718") +} + +[node name="Flowers" type="Node2D"] +script = ExtResource("1_72iub") + +[node name="FlowerSprites" type="Node2D" parent="."] + +[node name="Flower1" parent="FlowerSprites" instance=ExtResource("1_biusc")] +position = Vector2(-10, 41) +scale = Vector2(0.5, 0.5) + +[node name="Flower4" parent="FlowerSprites" instance=ExtResource("1_biusc")] +position = Vector2(-50, -75) +scale = Vector2(0.5, 0.5) + +[node name="Flower5" parent="FlowerSprites" instance=ExtResource("1_biusc")] +position = Vector2(-53, -4) +scale = Vector2(0.5, 0.5) + +[node name="Flower6" parent="FlowerSprites" instance=ExtResource("1_biusc")] +position = Vector2(45, -69) +scale = Vector2(0.5, 0.5) + +[node name="Flower14" parent="FlowerSprites" instance=ExtResource("1_biusc")] +position = Vector2(-99, -46) +scale = Vector2(0.5, 0.5) + +[node name="Flower15" parent="FlowerSprites" instance=ExtResource("1_biusc")] +position = Vector2(100, -42) +scale = Vector2(0.5, 0.5) + +[node name="Flower16" parent="FlowerSprites" instance=ExtResource("1_biusc")] +position = Vector2(117, 13) +scale = Vector2(0.5, 0.5) + +[node name="Flower17" parent="FlowerSprites" instance=ExtResource("1_biusc")] +position = Vector2(71, 88) +scale = Vector2(0.5, 0.5) + +[node name="Flower7" parent="FlowerSprites" instance=ExtResource("1_biusc")] +position = Vector2(64, 17) +scale = Vector2(0.5, 0.5) + +[node name="Flower8" parent="FlowerSprites" instance=ExtResource("1_biusc")] +position = Vector2(-84, 60) +scale = Vector2(0.5, 0.5) + +[node name="Flower9" parent="FlowerSprites" instance=ExtResource("1_biusc")] +position = Vector2(30, 68) +scale = Vector2(0.5, 0.5) + +[node name="Flower10" parent="FlowerSprites" instance=ExtResource("1_biusc")] +position = Vector2(0, -61) +scale = Vector2(0.5, 0.5) + +[node name="Flower11" parent="FlowerSprites" instance=ExtResource("1_biusc")] +position = Vector2(1, -123) +scale = Vector2(0.5, 0.5) + +[node name="Flower12" parent="FlowerSprites" instance=ExtResource("1_biusc")] +position = Vector2(-68, 117) +scale = Vector2(0.5, 0.5) + +[node name="Flower13" parent="FlowerSprites" instance=ExtResource("1_biusc")] +position = Vector2(13, 108) +scale = Vector2(0.5, 0.5) + +[node name="Flower2" parent="FlowerSprites" instance=ExtResource("2_k5hnf")] +position = Vector2(-31, 83) +scale = Vector2(0.5, 0.5) + +[node name="Flower3" parent="FlowerSprites" instance=ExtResource("2_k5hnf")] +position = Vector2(4, -16) +scale = Vector2(0.5, 0.5) + +[node name="FlowerCollectionArea" type="Area2D" parent="." groups=["flowers"]] +position = Vector2(1, 2) +collision_layer = 7 +collision_mask = 7 + +[node name="CollisionShape2D" type="CollisionShape2D" parent="FlowerCollectionArea"] +shape = SubResource("CircleShape2D_1tovu") + +[node name="AreaHighlight" type="Sprite2D" parent="."] +visible = false +modulate = Color(1, 1, 0.160784, 0.345098) +rotation = 5.02655 +scale = Vector2(0.6, 0.6) +texture = ExtResource("3_xruiv") + +[node name="AnimationPlayer" type="AnimationPlayer" parent="."] +libraries = { +"": SubResource("AnimationLibrary_qs4pr") +} +autoplay = "Highlight" + +[node name="Snail" parent="." instance=ExtResource("5_5uu7l")] + +[node name="HealthBar" type="ProgressBar" parent="."] +offset_left = -50.0 +offset_top = 90.0 +offset_right = 50.0 +offset_bottom = 110.0 +mouse_filter = 2 +max_value = 10.0 +step = 1.0 +show_percentage = false diff --git a/entities/Snail.tscn b/entities/Snail.tscn new file mode 100644 index 0000000..ed7088b --- /dev/null +++ b/entities/Snail.tscn @@ -0,0 +1,335 @@ +[gd_scene load_steps=14 format=3 uid="uid://bnwvtlsvxjmel"] + +[ext_resource type="Script" path="res://entities/scripts/snail.gd" id="1_lkvd1"] +[ext_resource type="Script" path="res://entities/scripts/finite_state_machine.gd" id="1_tejvt"] +[ext_resource type="Texture2D" uid="uid://dh8fo7865wgs" path="res://resources/textures/snail.png" id="2_yor00"] +[ext_resource type="Script" path="res://entities/snail/states/snail_sleeping.gd" id="3_wnrnl"] +[ext_resource type="Script" path="res://entities/snail/states/snail_eating.gd" id="4_1abwi"] +[ext_resource type="Texture2D" uid="uid://coqnsy2doe00a" path="res://resources/textures/z.png" id="5_owmpd"] +[ext_resource type="Texture2D" uid="uid://d30yqtob6phcj" path="res://resources/textures/snail_body.png" id="7_8spp3"] +[ext_resource type="Texture2D" uid="uid://5vt8eaihmut3" path="res://resources/textures/snail_shell.png" id="8_0v3d4"] + +[sub_resource type="Animation" id="Animation_kpiuy"] +resource_name = "GoingToSleep" +length = 1.5 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Sprite/SnailBody:scale") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 0.3, 1.5), +"transitions": PackedFloat32Array(1, 1, 1), +"update": 0, +"values": [Vector2(1, 1), Vector2(0, 0), Vector2(0, 0)] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("Sprite/SnailShell:rotation") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0.1, 1, 1.1, 1.2, 1.3, 1.4, 1.5), +"transitions": PackedFloat32Array(1, -2, 1, 1, 1, 1, 1), +"update": 0, +"values": [0.0, -6.28319, -6.10865, -6.28319, -6.10865, -6.28319, -6.28319] +} +tracks/2/type = "value" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath("Sprite/SnailShell:position") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/keys = { +"times": PackedFloat32Array(0.1, 0.6, 1, 1.5), +"transitions": PackedFloat32Array(1, 1, 1, 1), +"update": 0, +"values": [Vector2(0, 0), Vector2(0, -300), Vector2(0, 0), Vector2(0, 0)] +} +tracks/3/type = "value" +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/path = NodePath("Sprite/SnailBody:position") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/keys = { +"times": PackedFloat32Array(0, 0.4, 0.6, 1.5), +"transitions": PackedFloat32Array(1, 1, 1, 1), +"update": 0, +"values": [Vector2(60, 30), Vector2(60, -300), Vector2(60, 30), Vector2(60, 30)] +} +tracks/4/type = "value" +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/path = NodePath("Sprite/ShadowEating:scale") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/keys = { +"times": PackedFloat32Array(0, 0.3, 1.5), +"transitions": PackedFloat32Array(1, 1, 1), +"update": 0, +"values": [Vector2(1.09451, 0.620219), Vector2(0, 0), Vector2(0, 0)] +} +tracks/5/type = "value" +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/path = NodePath("Sprite/ShadowShell:scale") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/keys = { +"times": PackedFloat32Array(0, 0.3, 1, 1.5), +"transitions": PackedFloat32Array(1, 1, 1, 1), +"update": 0, +"values": [Vector2(1.002, 0.3), Vector2(0.8, 0.3), Vector2(1.002, 0.3), Vector2(1.002, 0.3)] +} +tracks/6/type = "value" +tracks/6/imported = false +tracks/6/enabled = true +tracks/6/path = NodePath("Sprite/ShadowShell:visible") +tracks/6/interp = 1 +tracks/6/loop_wrap = true +tracks/6/keys = { +"times": PackedFloat32Array(0, 1.5), +"transitions": PackedFloat32Array(1, 1), +"update": 1, +"values": [true, true] +} + +[sub_resource type="Animation" id="Animation_w6m82"] +resource_name = "Move" +loop_mode = 1 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Sprite/SnailBody:scale") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 0.5, 1), +"transitions": PackedFloat32Array(1, 1, 1), +"update": 0, +"values": [Vector2(1, 1), Vector2(1.08, 1), Vector2(1, 1)] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("Sprite/SnailShell:rotation") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0, 0.5, 1), +"transitions": PackedFloat32Array(1, 1, 1), +"update": 0, +"values": [0.0, -0.0523599, 0.0] +} +tracks/2/type = "value" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath("Sprite/SnailBody:visible") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/keys = { +"times": PackedFloat32Array(0, 1), +"transitions": PackedFloat32Array(1, 1), +"update": 1, +"values": [true, true] +} +tracks/3/type = "value" +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/path = NodePath("Sprite/ShadowEating:scale") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/keys = { +"times": PackedFloat32Array(0, 0.5, 1), +"transitions": PackedFloat32Array(1, 1, 1), +"update": 0, +"values": [Vector2(1, 1), Vector2(1.08, 1), Vector2(1, 1)] +} + +[sub_resource type="Animation" id="Animation_oua3i"] +resource_name = "Sleep" +length = 4.0 +loop_mode = 1 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Sprite/SnailBody:visible") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 4), +"transitions": PackedFloat32Array(1, 1), +"update": 1, +"values": [false, false] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("Sprite/SnailShell:scale") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0, 0.5, 1, 1.5, 2, 2.5, 3, 3.5, 4), +"transitions": PackedFloat32Array(-2, -2, -2, -2, -2, -2, -2, -2, -2), +"update": 0, +"values": [Vector2(1, 1), Vector2(1.01, 1.01), Vector2(1, 1), Vector2(1.01, 1.01), Vector2(1, 1), Vector2(1.01, 1.01), Vector2(1, 1), Vector2(1.01, 1.01), Vector2(1, 1)] +} +tracks/2/type = "value" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath("Z:visible") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/keys = { +"times": PackedFloat32Array(0, 4), +"transitions": PackedFloat32Array(1, 1), +"update": 1, +"values": [true, false] +} +tracks/3/type = "value" +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/path = NodePath("Z:modulate") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/keys = { +"times": PackedFloat32Array(0, 0.2, 0.3, 1.2, 1.3, 4), +"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1), +"update": 0, +"values": [Color(1, 1, 1, 0), Color(1, 1, 1, 0), Color(1, 1, 1, 1), Color(1, 1, 1, 1), Color(1, 1, 1, 0), Color(1, 1, 1, 0)] +} +tracks/4/type = "value" +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/path = NodePath("Z2:visible") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/keys = { +"times": PackedFloat32Array(0, 4), +"transitions": PackedFloat32Array(1, 1), +"update": 1, +"values": [true, false] +} +tracks/5/type = "value" +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/path = NodePath("Z2:modulate") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/keys = { +"times": PackedFloat32Array(0, 0.4, 0.5, 1.4, 1.5, 4), +"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1), +"update": 0, +"values": [Color(1, 1, 1, 0), Color(1, 1, 1, 0), Color(1, 1, 1, 1), Color(1, 1, 1, 0.885714), Color(1, 1, 1, 0), Color(1, 1, 1, 0)] +} +tracks/6/type = "value" +tracks/6/imported = false +tracks/6/enabled = true +tracks/6/path = NodePath("Z3:visible") +tracks/6/interp = 1 +tracks/6/loop_wrap = true +tracks/6/keys = { +"times": PackedFloat32Array(0, 4), +"transitions": PackedFloat32Array(1, 1), +"update": 1, +"values": [true, false] +} +tracks/7/type = "value" +tracks/7/imported = false +tracks/7/enabled = true +tracks/7/path = NodePath("Z3:modulate") +tracks/7/interp = 1 +tracks/7/loop_wrap = true +tracks/7/keys = { +"times": PackedFloat32Array(0, 0.6, 0.7, 1.7, 1.8, 4), +"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1), +"update": 0, +"values": [Color(1, 1, 1, 0), Color(1, 1, 1, 0), Color(1, 1, 1, 0.992157), Color(1, 1, 1, 1), Color(1, 1, 1, 0), Color(1, 1, 1, 0)] +} + +[sub_resource type="AnimationLibrary" id="AnimationLibrary_6ntaf"] +_data = { +"GoingToSleep": SubResource("Animation_kpiuy"), +"Move": SubResource("Animation_w6m82"), +"Sleep": SubResource("Animation_oua3i") +} + +[sub_resource type="CircleShape2D" id="CircleShape2D_2whjo"] +radius = 42.0476 + +[node name="Snail" type="CharacterBody2D"] +collision_layer = 8 +collision_mask = 8 +input_pickable = true +script = ExtResource("1_lkvd1") + +[node name="AnimationPlayer" type="AnimationPlayer" parent="."] +libraries = { +"": SubResource("AnimationLibrary_6ntaf") +} +autoplay = "Sleep" + +[node name="Z" type="Sprite2D" parent="."] +position = Vector2(-17, -22) +scale = Vector2(0.1, 0.1) +texture = ExtResource("5_owmpd") + +[node name="Z2" type="Sprite2D" parent="."] +modulate = Color(1, 1, 1, 0.936508) +position = Vector2(-12, -38) +rotation = 0.464258 +scale = Vector2(0.11, 0.11) +texture = ExtResource("5_owmpd") + +[node name="Z3" type="Sprite2D" parent="."] +modulate = Color(1, 1, 1, 0.99451) +position = Vector2(-30, -47) +rotation = -0.205949 +scale = Vector2(0.13, 0.13) +texture = ExtResource("5_owmpd") + +[node name="Sprite" type="Sprite2D" parent="."] +position = Vector2(-6, 0) +scale = Vector2(0.1, 0.1) + +[node name="SnailBody" type="Sprite2D" parent="Sprite"] +visible = false +position = Vector2(60, 30) +scale = Vector2(1e-05, 1e-05) +texture = ExtResource("7_8spp3") + +[node name="ShadowShell" type="Sprite2D" parent="Sprite"] +self_modulate = Color(0, 0, 0, 0.0784314) +position = Vector2(10, 130) +rotation = -0.00998773 +scale = Vector2(1.002, 0.3) +texture = ExtResource("8_0v3d4") + +[node name="SnailShell" type="Sprite2D" parent="Sprite"] +rotation = -6.28319 +scale = Vector2(1, 1) +texture = ExtResource("8_0v3d4") + +[node name="ShadowEating" type="Sprite2D" parent="Sprite"] +self_modulate = Color(0, 0, 0, 0.0784314) +show_behind_parent = true +position = Vector2(60, 20) +scale = Vector2(1e-05, 1e-05) +texture = ExtResource("2_yor00") + +[node name="StateMachine" type="Node" parent="." node_paths=PackedStringArray("initial_state")] +script = ExtResource("1_tejvt") +initial_state = NodePath("Sleeping") + +[node name="Sleeping" type="Node" parent="StateMachine"] +script = ExtResource("3_wnrnl") + +[node name="Eating" type="Node" parent="StateMachine"] +script = ExtResource("4_1abwi") + +[node name="CollisionShape2D" type="CollisionShape2D" parent="."] +visible = false +shape = SubResource("CircleShape2D_2whjo") diff --git a/entities/VegetablePatch.tscn b/entities/VegetablePatch.tscn new file mode 100644 index 0000000..37ef957 --- /dev/null +++ b/entities/VegetablePatch.tscn @@ -0,0 +1,96 @@ +[gd_scene load_steps=7 format=3 uid="uid://clomllso36j02"] + +[ext_resource type="Script" path="res://entities/scripts/vegetable_patch.gd" id="1_0gto5"] +[ext_resource type="Texture2D" uid="uid://s673b25l7g3k" path="res://resources/textures/veg.png" id="1_xnay0"] +[ext_resource type="Texture2D" uid="uid://dn35q8nkyy8q2" path="res://resources/particles/light_03.png" id="2_og86v"] + +[sub_resource type="Curve" id="Curve_j5a63"] +_data = [Vector2(0, 0), 0.0, 0.0, 0, 0, Vector2(1, 1), 1.4, 0.0, 0, 0] +point_count = 2 + +[sub_resource type="Gradient" id="Gradient_am1ne"] +offsets = PackedFloat32Array(0.789238, 1) +colors = PackedColorArray(1, 1, 1, 1, 1, 1, 1, 0) + +[sub_resource type="CapsuleShape2D" id="CapsuleShape2D_qfjud"] +radius = 85.57 +height = 669.91 + +[node name="VegetablePatch" type="Node2D"] +script = ExtResource("1_0gto5") + +[node name="Veg" type="Sprite2D" parent="."] +texture = ExtResource("1_xnay0") +offset = Vector2(1, 18) + +[node name="Outline" type="Sprite2D" parent="Veg"] +visible = false +modulate = Color(0.882353, 0, 0, 1) +show_behind_parent = true +scale = Vector2(1.05, 1.025) +texture = ExtResource("1_xnay0") +offset = Vector2(1, 18) + +[node name="PesticideClouds" type="Node2D" parent="."] + +[node name="PesticideCloud_1" type="CPUParticles2D" parent="PesticideClouds"] +position = Vector2(2, -63) +amount = 6 +lifetime = 3.0 +texture = ExtResource("2_og86v") +emission_shape = 1 +emission_sphere_radius = 20.0 +gravity = Vector2(0, 0) +scale_amount_min = 0.1 +scale_amount_max = 0.4 +scale_amount_curve = SubResource("Curve_j5a63") +color = Color(0.94902, 0.184314, 0.27451, 0.27451) +color_ramp = SubResource("Gradient_am1ne") + +[node name="PesticideCloud_2" type="CPUParticles2D" parent="PesticideClouds"] +position = Vector2(-1, -236) +amount = 6 +lifetime = 3.0 +texture = ExtResource("2_og86v") +emission_shape = 1 +emission_sphere_radius = 20.0 +gravity = Vector2(0, 0) +scale_amount_min = 0.1 +scale_amount_max = 0.4 +scale_amount_curve = SubResource("Curve_j5a63") +color = Color(0.94902, 0.184314, 0.27451, 0.27451) +color_ramp = SubResource("Gradient_am1ne") + +[node name="PesticideCloud_3" type="CPUParticles2D" parent="PesticideClouds"] +position = Vector2(2, 110) +amount = 6 +lifetime = 3.0 +texture = ExtResource("2_og86v") +emission_shape = 1 +emission_sphere_radius = 20.0 +gravity = Vector2(0, 0) +scale_amount_min = 0.1 +scale_amount_max = 0.4 +scale_amount_curve = SubResource("Curve_j5a63") +color = Color(0.94902, 0.184314, 0.27451, 0.27451) +color_ramp = SubResource("Gradient_am1ne") + +[node name="PesticideCloud_4" type="CPUParticles2D" parent="PesticideClouds"] +position = Vector2(6, 269) +amount = 6 +lifetime = 3.0 +texture = ExtResource("2_og86v") +emission_shape = 1 +emission_sphere_radius = 20.0 +gravity = Vector2(0, 0) +scale_amount_min = 0.1 +scale_amount_max = 0.4 +scale_amount_curve = SubResource("Curve_j5a63") +color = Color(0.94902, 0.184314, 0.27451, 0.27451) +color_ramp = SubResource("Gradient_am1ne") + +[node name="DeathBox" type="Area2D" parent="."] + +[node name="CollisionShape2D" type="CollisionShape2D" parent="DeathBox"] +position = Vector2(2, 14) +shape = SubResource("CapsuleShape2D_qfjud") diff --git a/entities/bee/states/bee_death.gd b/entities/bee/states/bee_death.gd new file mode 100644 index 0000000..69c721e --- /dev/null +++ b/entities/bee/states/bee_death.gd @@ -0,0 +1,16 @@ +extends State +class_name BeeDeath + +@onready var bee : Bee = get_parent().get_parent() as Bee + + +func enter(_msg : Dictionary = {}) -> void: + GameState.bee_died() + bee.bee_position_animation.play("Death") + bee.bee_wing_animation.stop() + +func update(_delta : float) -> void: + pass + +func physics_update(_delta : float) -> void: + pass \ No newline at end of file diff --git a/entities/bee/states/bee_gather.gd b/entities/bee/states/bee_gather.gd new file mode 100644 index 0000000..1c7d6e4 --- /dev/null +++ b/entities/bee/states/bee_gather.gd @@ -0,0 +1,36 @@ +extends State +class_name BeeGathering + +@export var animator : AnimationPlayer +@onready var bee : Bee= get_parent().get_parent() as Bee # I think this is bad but I dont care it works + +var time_at_patch : float = 0.0 + +var target : Vector2 = Vector2.ZERO + +func enter(_msg : Dictionary = {}) -> void: + bee.just_gathering = true + + Log.pr("Gathering now...") + + randomize() + target = bee.get_global_position() + Vector2(randi_range(-100, 100), randi_range(-100, 100)) + +func update(_delta : float) -> void: + + if bee.in_range_of_flowers: + #animator.play("Gathering") + time_at_patch += _delta + if time_at_patch > 5.0: + Log.pr("Gathered nectar!") + bee.nectar += GameState.flower_nectar_level # Add nectar to the bee based on current flower nectar level + state_transition.emit(self, "Idle") + else: + state_transition.emit(self, "Idle") + +func physics_update(delta : float) -> void: + if target: + if bee.position.distance_to(target) > 2: + bee.velocity = (target - bee.position).normalized() * bee.speed / 2 * delta + bee.move_and_collide(bee.velocity) + bee.bee_body.look_at(target) diff --git a/entities/bee/states/bee_idle.gd b/entities/bee/states/bee_idle.gd new file mode 100644 index 0000000..f994ff0 --- /dev/null +++ b/entities/bee/states/bee_idle.gd @@ -0,0 +1,50 @@ +extends State +class_name BeeIdle + +@onready var bee : Bee = get_parent().get_parent() as Bee # I think this is bad but I dont care it works + +var idle_time : float = 0.0 + +var target : Vector2 = Vector2.ZERO + +var acquire_new_target : bool = false + + +func enter(_msg : Dictionary = {}) -> void: + if acquire_new_target: + target = bee.get_global_position() + Vector2(randi_range(-60, 60), randi_range(-60, 60)) + +func exit() -> void: + acquire_new_target = true + +func update(delta : float) -> void: + + if target == Vector2.ZERO: + randomize() + target = bee.get_global_position() + Vector2(randi_range(-60, 60), randi_range(-60, 60)) + + + idle_time += delta + + if idle_time > 2.0: + find_something_to_do() + idle_time = 0.0 + pass + +func physics_update(delta : float) -> void: + if target: + if bee.position.distance_to(target) > 3: + + bee.velocity = (target - bee.position).normalized() * bee.speed / 2 * delta + bee.move_and_collide(bee.velocity) + bee.bee_body.look_at(target) + +func find_something_to_do() -> void: + if bee.nectar > 0: + Log.pr("I have pollen, time to move..") + ## Bee has pollen - head home + state_transition.emit(self, "Travelling") + else: + ## Bee has no pollen - they should move to a flower + state_transition.emit(self, "Travelling") + pass diff --git a/entities/bee/states/bee_returning.gd b/entities/bee/states/bee_returning.gd new file mode 100644 index 0000000..5101b7a --- /dev/null +++ b/entities/bee/states/bee_returning.gd @@ -0,0 +1,26 @@ +extends State +class_name BeeReturning + +@onready var bee : Bee = get_parent().get_parent() as Bee # I think this is bad but I dont care it works +@onready var target : Beehive = get_tree().get_first_node_in_group("beehive") + +func enter(_msg : Dictionary = {}) -> void: + Log.pr("Returning to the hive") + bee.bee_position_animation.play("Flying") + +func update(_delta : float) -> void: + pass + + +func physics_update(delta : float) -> void: + if target: + if bee.position.distance_to(target.position) > 3: + + bee.velocity = (target.get_global_position() - bee.position).normalized() * bee.speed * delta + bee.move_and_collide(bee.velocity) + bee.bee_body.look_at(target.position) + + else: + # Deposit the nectar and return it idle state + bee.deposit_nectar() + state_transition.emit(self, "Idle") \ No newline at end of file diff --git a/entities/bee/states/bee_sleeping.gd b/entities/bee/states/bee_sleeping.gd new file mode 100644 index 0000000..a9a526a --- /dev/null +++ b/entities/bee/states/bee_sleeping.gd @@ -0,0 +1,15 @@ +extends State +class_name BeeSleeping + +@onready var bee : Bee = get_parent().get_parent() as Bee # I think this is bad but I dont care it works + +var time_at_patch : float = 0.0 + +func enter(_msg : Dictionary = {}) -> void: + pass + +func update(_delta : float) -> void: + pass + +func physics_update(_delta : float) -> void: + pass \ No newline at end of file diff --git a/entities/bee/states/bee_travelling.gd b/entities/bee/states/bee_travelling.gd new file mode 100644 index 0000000..4e4ccc6 --- /dev/null +++ b/entities/bee/states/bee_travelling.gd @@ -0,0 +1,52 @@ +extends State +class_name BeeTravelling + +@export var target : Drone = null + +@onready var bee : Bee = get_parent().get_parent() as Bee # I think this is bad but I dont care it works + +var return_to_hive : bool = false +var moving_to : Vector2 = Vector2(0,0) + +func enter(_msg : Dictionary = {}) -> void: + return_to_hive = false + ## Get the next target location from the bee + if bee.just_gathering: + target = bee.get_current_director() # We want to go back the way we came + if !target: + Log.pr("No director around, returning to hive") + ## If there is no other director, just go straight back home + state_transition.emit(self, "Returning") + bee.just_gathering = false + else: + target = bee.get_next_target() + + # If we have no target, we are returning to the hive + if !target: + return_to_hive = true + else: + moving_to = target.get_global_position() + + bee.bee_position_animation.play("Flying") + + +func update(_delta : float) -> void: + if return_to_hive: + state_transition.emit(self, "Returning") + return + +func physics_update(delta : float) -> void: + if target: + if bee.position.distance_to(target.position) > 3: + + bee.velocity = (moving_to - bee.position).normalized() * bee.speed * delta + bee.move_and_collide(bee.velocity) + bee.bee_body.look_at(target.position) + + else: + # Bee has arrived at location, if its the hive or a collector drone do the things + if(target.name == "CollectorDrone"): + state_transition.emit(self, "Gathering") + else: + state_transition.emit(self, "Idle") + diff --git a/entities/scripts/bee.gd b/entities/scripts/bee.gd new file mode 100644 index 0000000..73b8118 --- /dev/null +++ b/entities/scripts/bee.gd @@ -0,0 +1,75 @@ +extends Node2D +class_name Bee + +@onready var fsm : FiniteStateMachine = $StateMachine as FiniteStateMachine +@onready var drone_manager : DroneManager = get_tree().get_first_node_in_group("dronemanager") as DroneManager +@onready var bee_position_animation : AnimationPlayer = $BeePositionAnimation as AnimationPlayer +@onready var bee_wing_animation : AnimationPlayer = $WingAnimation as AnimationPlayer +@onready var bee_body : Sprite2D = $BeeBody as Sprite2D +@onready var impact_cloud : CPUParticles2D = $ImpactCloud + +@export var nectar : int = 0 +@export var speed : int = 30 + +var latest_target_director : int = 0 + +# This is updated when the bee enters or exits a flower patch +var in_range_of_flowers : bool = false +var just_gathering : bool = false # Used to check if the bee has just been gathering to return to their previous director + +func _ready() -> void: + modulate = Color(1,1,1,1) + impact_cloud.visible = false + speed = randi_range(35,55) # Randomise the bee speed a bit + bee_wing_animation.play("Fly") + +func get_current_director() -> DirectorDrone: + return drone_manager.get_director(latest_target_director) + +## Get the next target to move to +## If we have no nectar, we need to go up the director list +## If we have nectar, we need to go down the director list +## If we are at the lower director, we need to go the hive +## If we are at the highest director, we need to go to a flower +func get_next_target() -> Drone: + if nectar == 0: + Log.pr("No nectar!") + + ## If there is a next directory drone, lets go to it + var next_drone : DirectorDrone = drone_manager.get_next_director(latest_target_director) + if next_drone: + latest_target_director = next_drone.visit_order + return next_drone + + ## If there is no next drone, check for a collector drone + var collector_drone : CollectorDrone = drone_manager.get_collector() + if collector_drone: + return collector_drone + else: + ## Let's go home, we need the previous director drones location + var previous_drone : DirectorDrone = drone_manager.get_previous_director(latest_target_director) + if previous_drone: + Log.pr("Previous drone", previous_drone) + latest_target_director = previous_drone.visit_order + return previous_drone + else: + Log.pr("No previous drone") + return null + + return null + +func deposit_nectar() -> void: + if nectar > 0: + GameState.add_nectar(nectar) + nectar = 0 + latest_target_director = 0 + just_gathering = false + +func die() -> void: + # Move to the death state + fsm.force_change_state("Death") + + + + + diff --git a/entities/scripts/bee_hit_box.gd b/entities/scripts/bee_hit_box.gd new file mode 100644 index 0000000..dddad5d --- /dev/null +++ b/entities/scripts/bee_hit_box.gd @@ -0,0 +1,13 @@ +extends Area2D + +@onready var bee : Bee = get_parent() as Bee + +func _on_area_entered(area : Area2D) -> void: + ## Check if the area entered is a flower patch + if area.is_in_group("flowers"): + bee.in_range_of_flowers = true + +func _on_area_exited(area : Area2D) -> void: + ## Check if the area exited is a flower patch + if area.is_in_group("flowers"): + bee.in_range_of_flowers = false \ No newline at end of file diff --git a/entities/scripts/beehive.gd b/entities/scripts/beehive.gd new file mode 100644 index 0000000..389577f --- /dev/null +++ b/entities/scripts/beehive.gd @@ -0,0 +1,20 @@ +extends Node2D +class_name Beehive + +var dancer_in_range : bool = false + +@onready var outline : Sprite2D = $AreaHighlight + +func show_outline() -> void: + outline.visible = true + +func hide_outline() -> void: + outline.visible = false + +func _on_area_2d_area_entered(area : Area2D) -> void: + if area.is_in_group("dancer"): + dancer_in_range = true + +func _on_area_2d_area_exited(area : Area2D) -> void: + if area.is_in_group("dancer"): + dancer_in_range = false diff --git a/entities/scripts/collector_drone.gd b/entities/scripts/collector_drone.gd new file mode 100644 index 0000000..7ddf9de --- /dev/null +++ b/entities/scripts/collector_drone.gd @@ -0,0 +1 @@ +class_name CollectorDrone extends Drone \ No newline at end of file diff --git a/entities/scripts/dancer_drone.gd b/entities/scripts/dancer_drone.gd new file mode 100644 index 0000000..b223db7 --- /dev/null +++ b/entities/scripts/dancer_drone.gd @@ -0,0 +1 @@ +class_name DancerDrone extends Drone \ No newline at end of file diff --git a/entities/scripts/director_drone.gd b/entities/scripts/director_drone.gd new file mode 100644 index 0000000..ddf0ec8 --- /dev/null +++ b/entities/scripts/director_drone.gd @@ -0,0 +1,35 @@ +class_name DirectorDrone extends Drone + + +@onready var label : Label = get_node("Label") + +@export var visit_order : int = 0 : + get: + return visit_order + set(value): + visit_order = value + update_label_value() + +func update_label_value() -> void: + $Label.text = str(visit_order) + +func _on_click_detection_mouse_entered() -> void: + if GameState.placing_drone == false: + Log.pr("Mouse entered the director drone!") + label.visible = true + CursorMgr.edit() + +func _on_click_detection_mouse_exited() -> void: + if GameState.placing_drone == false: + Log.pr("Mouse exited the director drone!") + label.visible = false + CursorMgr.reset_cursor() + + +func _on_click_detection_input_event(_viewport:Node, event:InputEvent, _shape_idx:int) -> void: + if GameState.placing_drone == false: + if (event is InputEventMouseButton && event.button_index == MOUSE_BUTTON_RIGHT && event.pressed): + CursorMgr.reset_cursor() + queue_free() + get_parent().get_parent().update_director_drone_list() + diff --git a/entities/scripts/distractor_drone.gd b/entities/scripts/distractor_drone.gd new file mode 100644 index 0000000..e417c08 --- /dev/null +++ b/entities/scripts/distractor_drone.gd @@ -0,0 +1 @@ +class_name DistractorDrone extends Drone \ No newline at end of file diff --git a/entities/scripts/drone.gd b/entities/scripts/drone.gd new file mode 100644 index 0000000..f6cde43 --- /dev/null +++ b/entities/scripts/drone.gd @@ -0,0 +1 @@ +class_name Drone extends Node2D \ No newline at end of file diff --git a/entities/scripts/finite_state_machine.gd b/entities/scripts/finite_state_machine.gd new file mode 100644 index 0000000..fcfb088 --- /dev/null +++ b/entities/scripts/finite_state_machine.gd @@ -0,0 +1,76 @@ +@icon("res://resources/icons/fsm.png") +extends Node +class_name FiniteStateMachine + +var states : Dictionary = {} +var current_state : State +@export var initial_state : State + +#NOTE This is a generic finite_state_machine, it handles all states, changes to this code will affect + # everything that uses a state machine! + +func _ready() -> void: + for child : Node in get_children(): + if child is State: + states[child.name.to_lower()] = child + child.state_transition.connect(change_state) + + if initial_state: + initial_state.enter() + current_state = initial_state + +# Call the current states update function +func _process(delta : float) -> void: + if current_state: + current_state.update(delta) + +func _physics_process(delta : float) -> void: + if current_state: + current_state.physics_update(delta) + +func get_current_state_name() -> String: + if current_state: + return current_state.name.to_lower() + else: + return "" + +# Use force_change_state cautiously, it immediately switches to a state regardless of any transitions. +# This is used to force us into a 'death state' when killed +func force_change_state(new_state : String) -> void: + var newState : State = states.get(new_state.to_lower()) + + if !newState: + print(new_state + " does not exist in the dictionary of states") + return + + if current_state == newState: + print("State is same, aborting") + return + + # NOTE Calling exit like so: (current_state.Exit()) may cause warnings when flushing queries, like when the enemy is being removed after death. + # call_deferred is safe and prevents this from occuring. We get the Exit function from the state as a callable and then call it in a thread-safe manner + if current_state: + var exit_callable : Callable = Callable(current_state, "exit") + exit_callable.call_deferred() + + newState.enter() + + current_state = newState + +func change_state(source_state : State, new_state_name : String) -> void: + if source_state != current_state: + #print("Invalid change_state trying from: " + source_state.name + " but currently in: " + current_state.name) + #This typically only happens when trying to switch from death state following a force_change + return + + var new_state : State = states.get(new_state_name.to_lower()) + if !new_state: + print("New state is empty") + return + + if current_state: + current_state.exit() + + new_state.enter() + + current_state = new_state diff --git a/entities/scripts/flowers.gd b/entities/scripts/flowers.gd new file mode 100644 index 0000000..5d11048 --- /dev/null +++ b/entities/scripts/flowers.gd @@ -0,0 +1,70 @@ +extends Node2D +class_name Flowers + +@onready var outline : Sprite2D = $AreaHighlight + +@export var health : int = 100 + +var spawn_snails : bool = false + +@onready var spawn_area : CollisionShape2D = $FlowerCollectionArea/CollisionShape2D +@onready var snail : Snail = $Snail + +var last_health_check : float = 0 +var health_check_timer : float = 0.5 + +@onready var health_bar : ProgressBar = $HealthBar + +func _ready() -> void: + hide_outline() + setup_healthbar() + + ## Check if this level is spawning snails or not + if GameState.spawn_snails: + Log.pr("Going to be spawning snails!") + spawn_snails = true + + Log.pr(get_random_circumference_points()) + snail.global_position = get_random_circumference_points() + +func _process(delta: float) -> void: + update_healthbar(delta) + +func show_outline() -> void: + outline.visible = true + +func hide_outline() -> void: + outline.visible = false + + +func get_random_circumference_points() -> Vector2: + var circle_radius : float = spawn_area.shape.radius + var random_angle : float = randf_range(0, TAU) + + var x : float = circle_radius * cos(random_angle) + var y : float = circle_radius * sin(random_angle) + + var circle_center : Vector2 = spawn_area.global_position + var random_point : Vector2 = circle_center + Vector2(x, y) + + return random_point + +## Initial setup of the health bar - updating the values +# and hiding it from view. +func setup_healthbar() -> void: + health_bar.max_value = GameState.max_flower_nectar_level + health_bar.value = GameState.flower_nectar_level + health_bar.visible = false + +## Update the health bar based on the current GameState values +# and display it if required. Conversely, hide it if the flower is at max powah. +func update_healthbar(delta : float) -> void: + last_health_check += delta + if last_health_check >= health_check_timer: + last_health_check = 0 + if GameState.flower_nectar_level < GameState.max_flower_nectar_level: + health_bar.value = GameState.flower_nectar_level + health_bar.visible = true + else: + health_bar.value = GameState.max_flower_nectar_level + health_bar.visible = false \ No newline at end of file diff --git a/entities/scripts/snail.gd b/entities/scripts/snail.gd new file mode 100644 index 0000000..db51db0 --- /dev/null +++ b/entities/scripts/snail.gd @@ -0,0 +1,59 @@ +extends CharacterBody2D +class_name Snail + +@onready var fsm : FiniteStateMachine = $StateMachine as FiniteStateMachine +@onready var flowers : Flowers = get_parent() +@onready var sprite : Sprite2D = $Sprite +@onready var animation : AnimationPlayer = $AnimationPlayer + +var enabled : bool = false +var eating : bool = false +var speed : float = 20.0 +var mouse_over : bool = false + +func _ready() -> void: + connect("mouse_entered", Callable(self, "on_mouse_entered")) + connect("mouse_exited", Callable(self, "on_mouse_exited")) + animation.connect("animation_finished", Callable(self, "on_animation_finished")) + +# Detect mouse left click and trigger function +func _input(event : InputEvent) -> void: + if mouse_over: + if event is InputEventMouseButton: + if (event is InputEventMouseButton && event.button_index == MOUSE_BUTTON_LEFT && event.pressed): + maybe_sleep() + +func eat() -> void: + # Play the munch animation and noise + + # Reduce the GameState flower_nectar_level + GameState.flower_nectar_level -= 1 + +func hide_zeds() -> void: + $Z.hide() + $Z2.hide() + $Z3.hide() + $Sprite/ShadowShell.hide() + +func maybe_sleep() -> void: + # If the snail is still eating, then we want a 30% chance of switching it it to the sleeping state + if eating: + if randf() < 0.3: + if fsm.get_current_state_name() == "eating": + fsm.change_state(fsm.current_state, "sleeping") + +func get_random_target() -> Vector2: + return flowers.get_random_circumference_points() + +func on_mouse_entered() -> void: + CursorMgr.hand() + mouse_over = true + +func on_mouse_exited() -> void: + # Reset the cursor to the default + mouse_over = false + CursorMgr.reset_cursor() + +func on_animation_finished(anim_name : StringName) -> void: + if anim_name == "GoingToSleep": + animation.play("Sleep") \ No newline at end of file diff --git a/entities/scripts/state.gd b/entities/scripts/state.gd new file mode 100644 index 0000000..cad643c --- /dev/null +++ b/entities/scripts/state.gd @@ -0,0 +1,15 @@ +@icon("res://resources/icons/fsm.png") +extends Node +class_name State + +signal state_transition + +func enter(_msg : Dictionary = {}) -> void: + pass + +func exit() -> void : + pass + +func update(_delta : float) -> void: + pass + diff --git a/entities/scripts/vegetable_patch.gd b/entities/scripts/vegetable_patch.gd new file mode 100644 index 0000000..5ad3120 --- /dev/null +++ b/entities/scripts/vegetable_patch.gd @@ -0,0 +1,12 @@ + +extends Node2D +class_name VegetablePatch + +@onready var death_box : Area2D = $DeathBox + +func _ready() -> void: + death_box.connect("body_entered", Callable(self, "_on_body_entered")) + +func _on_body_entered(area : Bee) -> void: + if area.is_in_group("bee"): + area.die() diff --git a/entities/snail/states/snail_eating.gd b/entities/snail/states/snail_eating.gd new file mode 100644 index 0000000..1efbe33 --- /dev/null +++ b/entities/snail/states/snail_eating.gd @@ -0,0 +1,51 @@ +extends State +class_name SnailEating + +@onready var snail : Snail = get_parent().get_parent() as Snail # I think this is bad but I dont care it works + +var eat_interval : float = 3.0 +var eat_timer : float = 0.0 + +var move_to : Vector2 = Vector2.ZERO + +var original_snail_scale : float = 0.1 + +func enter(_msg : Dictionary = {}) -> void: + Log.pr("I am a snail and I will eat!") + snail.eating = true + if snail.animation: + snail.animation.play("Move") + + snail.hide_zeds() + +func exit() -> void: + snail.eating = false + snail.sprite.flip_h = false + +func update(delta : float) -> void: + eat_timer += delta + + if eat_timer >= eat_interval: + snail.eat() + eat_timer = 0.0 + +func physics_update(_delta : float) -> void: + + if move_to == Vector2.ZERO: + move_to = snail.get_random_target() + + if snail.global_position.distance_to(move_to) > 3: + + snail.velocity = snail.global_position.direction_to(move_to) * snail.speed + + if move_to.x > snail.global_position.x: + snail.sprite.scale.x = original_snail_scale + else: + snail.sprite.scale.x = -original_snail_scale + + snail.move_and_slide() + else: + move_to = Vector2.ZERO + + + diff --git a/entities/snail/states/snail_sleeping.gd b/entities/snail/states/snail_sleeping.gd new file mode 100644 index 0000000..bb1e245 --- /dev/null +++ b/entities/snail/states/snail_sleeping.gd @@ -0,0 +1,34 @@ +extends State +class_name SnailSleeping + +@onready var snail : Snail = get_parent().get_parent() as Snail # I think this is bad but I dont care it works + +var wakes_up_in : float = 0 +var sleep_timer : float = 0 + +func enter(_msg : Dictionary = {}) -> void: + Log.pr("I am a snail asleep...") + snail.rotation = 0 + if snail.animation: + snail.animation.play("GoingToSleep") + CursorMgr.reset_cursor() + + # Decide how many seconds until the snail wakes up again + wakes_up_in = randf_range(15.0, 25.0) + sleep_timer = 0 + +func exit() -> void: + pass + +func update(delta : float) -> void: + + if GameState.level_started: + sleep_timer += delta + + # Snail will only wake up if the level has started + if sleep_timer > wakes_up_in: + state_transition.emit(self, "Eating") + +func physics_update(_delta : float) -> void: + pass + diff --git a/export_presets.cfg b/export_presets.cfg new file mode 100644 index 0000000..7cc67d1 --- /dev/null +++ b/export_presets.cfg @@ -0,0 +1,140 @@ +[preset.0] + +name="Web" +platform="Web" +runnable=true +dedicated_server=false +custom_features="" +export_filter="all_resources" +include_filter="" +exclude_filter="" +export_path="build/web/index.html" +encryption_include_filters="" +encryption_exclude_filters="" +encrypt_pck=false +encrypt_directory=false + +[preset.0.options] + +custom_template/debug="" +custom_template/release="" +variant/extensions_support=false +vram_texture_compression/for_desktop=true +vram_texture_compression/for_mobile=false +html/export_icon=true +html/custom_html_shell="" +html/head_include="" +html/canvas_resize_policy=2 +html/focus_canvas_on_start=true +html/experimental_virtual_keyboard=false +progressive_web_app/enabled=false +progressive_web_app/offline_page="" +progressive_web_app/display=1 +progressive_web_app/orientation=0 +progressive_web_app/icon_144x144="" +progressive_web_app/icon_180x180="" +progressive_web_app/icon_512x512="" +progressive_web_app/background_color=Color(0, 0, 0, 1) + +[preset.1] + +name="Windows Desktop" +platform="Windows Desktop" +runnable=true +dedicated_server=false +custom_features="" +export_filter="all_resources" +include_filter="" +exclude_filter="" +export_path="build/windows/Pollen Not Included.exe" +encryption_include_filters="" +encryption_exclude_filters="" +encrypt_pck=false +encrypt_directory=false + +[preset.1.options] + +custom_template/debug="" +custom_template/release="" +debug/export_console_wrapper=0 +binary_format/embed_pck=false +texture_format/bptc=true +texture_format/s3tc=true +texture_format/etc=false +texture_format/etc2=false +binary_format/architecture="x86_64" +codesign/enable=false +codesign/timestamp=true +codesign/timestamp_server_url="" +codesign/digest_algorithm=1 +codesign/description="" +codesign/custom_options=PackedStringArray() +application/modify_resources=true +application/icon="res://resources/icons/gameicon.png" +application/console_wrapper_icon="" +application/icon_interpolation=4 +application/file_version="" +application/product_version="" +application/company_name="Happy Little Robots" +application/product_name="Pollen Not Included" +application/file_description="" +application/copyright="" +application/trademarks="" +application/export_angle=0 +ssh_remote_deploy/enabled=false +ssh_remote_deploy/host="user@host_ip" +ssh_remote_deploy/port="22" +ssh_remote_deploy/extra_args_ssh="" +ssh_remote_deploy/extra_args_scp="" +ssh_remote_deploy/run_script="Expand-Archive -LiteralPath '{temp_dir}\\{archive_name}' -DestinationPath '{temp_dir}' +$action = New-ScheduledTaskAction -Execute '{temp_dir}\\{exe_name}' -Argument '{cmd_args}' +$trigger = New-ScheduledTaskTrigger -Once -At 00:00 +$settings = New-ScheduledTaskSettingsSet +$task = New-ScheduledTask -Action $action -Trigger $trigger -Settings $settings +Register-ScheduledTask godot_remote_debug -InputObject $task -Force:$true +Start-ScheduledTask -TaskName godot_remote_debug +while (Get-ScheduledTask -TaskName godot_remote_debug | ? State -eq running) { Start-Sleep -Milliseconds 100 } +Unregister-ScheduledTask -TaskName godot_remote_debug -Confirm:$false -ErrorAction:SilentlyContinue" +ssh_remote_deploy/cleanup_script="Stop-ScheduledTask -TaskName godot_remote_debug -ErrorAction:SilentlyContinue +Unregister-ScheduledTask -TaskName godot_remote_debug -Confirm:$false -ErrorAction:SilentlyContinue +Remove-Item -Recurse -Force '{temp_dir}'" + +[preset.2] + +name="Linux/X11" +platform="Linux/X11" +runnable=true +dedicated_server=false +custom_features="" +export_filter="all_resources" +include_filter="" +exclude_filter="" +export_path="build/linux/PollenNotIncluded.x86_64" +encryption_include_filters="" +encryption_exclude_filters="" +encrypt_pck=false +encrypt_directory=false + +[preset.2.options] + +custom_template/debug="" +custom_template/release="" +debug/export_console_wrapper=1 +binary_format/embed_pck=false +texture_format/bptc=true +texture_format/s3tc=true +texture_format/etc=false +texture_format/etc2=false +binary_format/architecture="x86_64" +ssh_remote_deploy/enabled=false +ssh_remote_deploy/host="user@host_ip" +ssh_remote_deploy/port="22" +ssh_remote_deploy/extra_args_ssh="" +ssh_remote_deploy/extra_args_scp="" +ssh_remote_deploy/run_script="#!/usr/bin/env bash +export DISPLAY=:0 +unzip -o -q \"{temp_dir}/{archive_name}\" -d \"{temp_dir}\" +\"{temp_dir}/{exe_name}\" {cmd_args}" +ssh_remote_deploy/cleanup_script="#!/usr/bin/env bash +kill $(pgrep -x -f \"{temp_dir}/{exe_name} {cmd_args}\") +rm -rf \"{temp_dir}\"" diff --git a/levels/level_1.tscn b/levels/level_1.tscn new file mode 100644 index 0000000..383ffed --- /dev/null +++ b/levels/level_1.tscn @@ -0,0 +1,158 @@ +[gd_scene load_steps=16 format=3 uid="uid://dalh10tit6qg"] + +[ext_resource type="PackedScene" uid="uid://dn6aa6f2f4g4i" path="res://components/RulesComponent.tscn" id="1_g1iu7"] +[ext_resource type="Script" path="res://levels/scripts/level_1.gd" id="1_jrhhc"] +[ext_resource type="Resource" uid="uid://byyectcdb7e14" path="res://levels/rules/level_1_rules.tres" id="2_osic7"] +[ext_resource type="PackedScene" uid="uid://d1uawawum16b0" path="res://scenes/elements/background.tscn" id="3_8a85u"] +[ext_resource type="PackedScene" uid="uid://dwuc6byusf1r3" path="res://scenes/decor/bush.tscn" id="4_f1siw"] +[ext_resource type="PackedScene" uid="uid://dj51rgpihnhi" path="res://scenes/decor/naked_tree.tscn" id="5_mset6"] +[ext_resource type="PackedScene" uid="uid://d3mas42mbgec1" path="res://scenes/decor/tree.tscn" id="6_7gdup"] +[ext_resource type="PackedScene" uid="uid://eiyribk1ijcu" path="res://scenes/decor/mushroom.tscn" id="7_hxhav"] +[ext_resource type="PackedScene" uid="uid://bme541qdw7nai" path="res://entities/Flowers.tscn" id="8_yg6w2"] +[ext_resource type="PackedScene" uid="uid://dyu4mucawjlu6" path="res://entities/Beehive.tscn" id="9_7gmgu"] +[ext_resource type="PackedScene" uid="uid://ddf2mkkw1trkj" path="res://scenes/elements/bee_spawner.tscn" id="10_yjc17"] +[ext_resource type="PackedScene" uid="uid://b7eeptlk47ymd" path="res://ui/UiComponent.tscn" id="11_ndtvv"] +[ext_resource type="PackedScene" uid="uid://ct3c16xm33r2a" path="res://scenes/elements/drone_manager.tscn" id="12_37aah"] +[ext_resource type="PackedScene" uid="uid://cwutwy11pityw" path="res://ui/LevelCompleteComponent.tscn" id="13_we755"] +[ext_resource type="PackedScene" uid="uid://b5whit1dshr3" path="res://ui/GameOverComponent.tscn" id="15_jn0bj"] + +[node name="Level1" type="Node2D"] +script = ExtResource("1_jrhhc") + +[node name="RulesComponent" parent="." instance=ExtResource("1_g1iu7")] +unique_name_in_owner = true +game_rules = ExtResource("2_osic7") + +[node name="Grass" parent="." instance=ExtResource("3_8a85u")] + +[node name="LevelDecor" type="Node" parent="."] + +[node name="BushGroup" type="Node2D" parent="LevelDecor"] + +[node name="Bush" parent="LevelDecor/BushGroup" instance=ExtResource("4_f1siw")] +position = Vector2(1110, 28) +scale = Vector2(0.25, 0.25) + +[node name="Bush3" parent="LevelDecor/BushGroup" instance=ExtResource("4_f1siw")] +position = Vector2(1272, 123) +scale = Vector2(0.25, 0.25) + +[node name="Bush2" parent="LevelDecor/BushGroup" instance=ExtResource("4_f1siw")] +position = Vector2(1214, 47) +rotation = 0.60912 +scale = Vector2(0.4, 0.4) + +[node name="BushGroup3" type="Node2D" parent="LevelDecor"] +position = Vector2(-928, 592) +scale = Vector2(0.75, 0.75) + +[node name="Bush" parent="LevelDecor/BushGroup3" instance=ExtResource("4_f1siw")] +position = Vector2(1110, 28) +scale = Vector2(0.25, 0.25) + +[node name="Bush3" parent="LevelDecor/BushGroup3" instance=ExtResource("4_f1siw")] +position = Vector2(1272, 123) +scale = Vector2(0.25, 0.25) + +[node name="Bush2" parent="LevelDecor/BushGroup3" instance=ExtResource("4_f1siw")] +position = Vector2(1214, 47) +rotation = 0.60912 +scale = Vector2(0.4, 0.4) + +[node name="BushGroup2" type="Node2D" parent="LevelDecor"] +position = Vector2(456, 1669) +rotation = 5.29882 + +[node name="Bush" parent="LevelDecor/BushGroup2" instance=ExtResource("4_f1siw")] +position = Vector2(1110, 28) +scale = Vector2(0.25, 0.25) + +[node name="Bush3" parent="LevelDecor/BushGroup2" instance=ExtResource("4_f1siw")] +position = Vector2(1272, 123) +scale = Vector2(0.25, 0.25) + +[node name="Bush2" parent="LevelDecor/BushGroup2" instance=ExtResource("4_f1siw")] +position = Vector2(1214, 47) +rotation = 0.60912 +scale = Vector2(0.4, 0.4) + +[node name="NakedTree" parent="LevelDecor" instance=ExtResource("5_mset6")] +position = Vector2(53, 336) +scale = Vector2(0.6, 0.6) + +[node name="Tree" parent="LevelDecor" instance=ExtResource("6_7gdup")] +position = Vector2(119, 100) +scale = Vector2(0.6, 0.6) + +[node name="Tree2" parent="LevelDecor" instance=ExtResource("6_7gdup")] +position = Vector2(64, 473) +rotation = -0.42237 +scale = Vector2(0.4, 0.4) + +[node name="Mushrooms" type="Node2D" parent="LevelDecor"] + +[node name="Mushroom" parent="LevelDecor/Mushrooms" instance=ExtResource("7_hxhav")] +position = Vector2(232, 250) +scale = Vector2(0.5, 0.5) + +[node name="Mushroom2" parent="LevelDecor/Mushrooms" instance=ExtResource("7_hxhav")] +position = Vector2(252, 289) +rotation = 1.13446 +scale = Vector2(0.3, 0.3) + +[node name="Mushroom3" parent="LevelDecor/Mushrooms" instance=ExtResource("7_hxhav")] +position = Vector2(260, 225) +rotation = 1.13446 +scale = Vector2(0.3, 0.3) + +[node name="Mushrooms2" type="Node2D" parent="LevelDecor"] +position = Vector2(1553, 732) +rotation = 2.81347 + +[node name="Mushroom" parent="LevelDecor/Mushrooms2" instance=ExtResource("7_hxhav")] +position = Vector2(232, 250) +scale = Vector2(0.5, 0.5) + +[node name="Mushroom2" parent="LevelDecor/Mushrooms2" instance=ExtResource("7_hxhav")] +position = Vector2(252, 289) +rotation = 1.13446 +scale = Vector2(0.3, 0.3) + +[node name="Mushroom3" parent="LevelDecor/Mushrooms2" instance=ExtResource("7_hxhav")] +position = Vector2(260, 225) +rotation = 1.13446 +scale = Vector2(0.3, 0.3) + +[node name="Flowers" parent="." instance=ExtResource("8_yg6w2")] +unique_name_in_owner = true +position = Vector2(1054, 350) + +[node name="Beehive" parent="." groups=["beehive"] instance=ExtResource("9_7gmgu")] +unique_name_in_owner = true +position = Vector2(629, 360) + +[node name="BeeSpawner" parent="." instance=ExtResource("10_yjc17")] +unique_name_in_owner = true + +[node name="UiComponent" parent="." instance=ExtResource("11_ndtvv")] +unique_name_in_owner = true +z_index = 999 +offset_right = 1280.0 +offset_bottom = 720.0 +mouse_filter = 1 + +[node name="DroneManager" parent="." instance=ExtResource("12_37aah")] +unique_name_in_owner = true + +[node name="LevelCompleteComponent" parent="." instance=ExtResource("13_we755")] +visible = false +z_index = 1000 +offset_right = 1280.0 +offset_bottom = 720.0 +mouse_filter = 1 + +[node name="GameOverComponent" parent="." instance=ExtResource("15_jn0bj")] +visible = false +z_index = 900 +offset_right = 1280.0 +offset_bottom = 720.0 diff --git a/levels/level_2.tscn b/levels/level_2.tscn new file mode 100644 index 0000000..fcce4e1 --- /dev/null +++ b/levels/level_2.tscn @@ -0,0 +1,162 @@ +[gd_scene load_steps=17 format=3 uid="uid://dcgmtmjsrtafq"] + +[ext_resource type="Script" path="res://levels/scripts/level_2.gd" id="1_dtbi3"] +[ext_resource type="PackedScene" uid="uid://dn6aa6f2f4g4i" path="res://components/RulesComponent.tscn" id="2_gln7y"] +[ext_resource type="Resource" uid="uid://cqtsmjsyqne41" path="res://levels/rules/level_2_rules.tres" id="3_58a2h"] +[ext_resource type="PackedScene" uid="uid://d1uawawum16b0" path="res://scenes/elements/background.tscn" id="4_tliaa"] +[ext_resource type="PackedScene" uid="uid://dwuc6byusf1r3" path="res://scenes/decor/bush.tscn" id="5_rr770"] +[ext_resource type="PackedScene" uid="uid://dj51rgpihnhi" path="res://scenes/decor/naked_tree.tscn" id="6_rjinx"] +[ext_resource type="PackedScene" uid="uid://d3mas42mbgec1" path="res://scenes/decor/tree.tscn" id="7_cvl7f"] +[ext_resource type="PackedScene" uid="uid://eiyribk1ijcu" path="res://scenes/decor/mushroom.tscn" id="8_8v50e"] +[ext_resource type="PackedScene" uid="uid://bme541qdw7nai" path="res://entities/Flowers.tscn" id="9_4jnhv"] +[ext_resource type="PackedScene" uid="uid://clomllso36j02" path="res://entities/VegetablePatch.tscn" id="10_1x4lm"] +[ext_resource type="PackedScene" uid="uid://dyu4mucawjlu6" path="res://entities/Beehive.tscn" id="10_6ye1u"] +[ext_resource type="PackedScene" uid="uid://ddf2mkkw1trkj" path="res://scenes/elements/bee_spawner.tscn" id="11_gkdx0"] +[ext_resource type="PackedScene" uid="uid://b7eeptlk47ymd" path="res://ui/UiComponent.tscn" id="12_mmtyl"] +[ext_resource type="PackedScene" uid="uid://ct3c16xm33r2a" path="res://scenes/elements/drone_manager.tscn" id="13_pibpn"] +[ext_resource type="PackedScene" uid="uid://cwutwy11pityw" path="res://ui/LevelCompleteComponent.tscn" id="14_uyhgj"] +[ext_resource type="PackedScene" uid="uid://b5whit1dshr3" path="res://ui/GameOverComponent.tscn" id="16_450js"] + +[node name="Level2" type="Node2D"] +script = ExtResource("1_dtbi3") + +[node name="RulesComponent" parent="." instance=ExtResource("2_gln7y")] +unique_name_in_owner = true +game_rules = ExtResource("3_58a2h") + +[node name="Grass" parent="." instance=ExtResource("4_tliaa")] + +[node name="LevelDecor" type="Node" parent="."] + +[node name="BushGroup" type="Node2D" parent="LevelDecor"] + +[node name="Bush" parent="LevelDecor/BushGroup" instance=ExtResource("5_rr770")] +position = Vector2(1110, 28) +scale = Vector2(0.25, 0.25) + +[node name="Bush3" parent="LevelDecor/BushGroup" instance=ExtResource("5_rr770")] +position = Vector2(1272, 123) +scale = Vector2(0.25, 0.25) + +[node name="Bush2" parent="LevelDecor/BushGroup" instance=ExtResource("5_rr770")] +position = Vector2(1214, 47) +rotation = 0.60912 +scale = Vector2(0.4, 0.4) + +[node name="BushGroup3" type="Node2D" parent="LevelDecor"] +position = Vector2(-928, 592) +scale = Vector2(0.75, 0.75) + +[node name="Bush" parent="LevelDecor/BushGroup3" instance=ExtResource("5_rr770")] +position = Vector2(1110, 28) +scale = Vector2(0.25, 0.25) + +[node name="Bush3" parent="LevelDecor/BushGroup3" instance=ExtResource("5_rr770")] +position = Vector2(1272, 123) +scale = Vector2(0.25, 0.25) + +[node name="Bush2" parent="LevelDecor/BushGroup3" instance=ExtResource("5_rr770")] +position = Vector2(1214, 47) +rotation = 0.60912 +scale = Vector2(0.4, 0.4) + +[node name="BushGroup2" type="Node2D" parent="LevelDecor"] +position = Vector2(1291, 1886) +rotation = 4.5012 + +[node name="Bush" parent="LevelDecor/BushGroup2" instance=ExtResource("5_rr770")] +position = Vector2(1110, 28) +scale = Vector2(0.25, 0.25) + +[node name="Bush3" parent="LevelDecor/BushGroup2" instance=ExtResource("5_rr770")] +position = Vector2(1272, 123) +scale = Vector2(0.25, 0.25) + +[node name="Bush2" parent="LevelDecor/BushGroup2" instance=ExtResource("5_rr770")] +position = Vector2(1214, 47) +rotation = 0.60912 +scale = Vector2(0.4, 0.4) + +[node name="NakedTree" parent="LevelDecor" instance=ExtResource("6_rjinx")] +position = Vector2(-41, 437) +scale = Vector2(0.6, 0.6) + +[node name="Tree" parent="LevelDecor" instance=ExtResource("7_cvl7f")] +position = Vector2(217, 52) +scale = Vector2(0.6, 0.6) + +[node name="Tree2" parent="LevelDecor" instance=ExtResource("7_cvl7f")] +position = Vector2(948, 20.0001) +rotation = -0.42237 +scale = Vector2(0.4, 0.4) + +[node name="Mushrooms" type="Node2D" parent="LevelDecor"] + +[node name="Mushroom" parent="LevelDecor/Mushrooms" instance=ExtResource("8_8v50e")] +position = Vector2(232, 250) +scale = Vector2(0.5, 0.5) + +[node name="Mushroom2" parent="LevelDecor/Mushrooms" instance=ExtResource("8_8v50e")] +position = Vector2(252, 289) +rotation = 1.13446 +scale = Vector2(0.3, 0.3) + +[node name="Mushroom3" parent="LevelDecor/Mushrooms" instance=ExtResource("8_8v50e")] +position = Vector2(260, 225) +rotation = 1.13446 +scale = Vector2(0.3, 0.3) + +[node name="Mushrooms2" type="Node2D" parent="LevelDecor"] +position = Vector2(1551, 802) +rotation = 2.81347 + +[node name="Mushroom" parent="LevelDecor/Mushrooms2" instance=ExtResource("8_8v50e")] +position = Vector2(232, 250) +scale = Vector2(0.5, 0.5) + +[node name="Mushroom2" parent="LevelDecor/Mushrooms2" instance=ExtResource("8_8v50e")] +position = Vector2(252, 289) +rotation = 1.13446 +scale = Vector2(0.3, 0.3) + +[node name="Mushroom3" parent="LevelDecor/Mushrooms2" instance=ExtResource("8_8v50e")] +position = Vector2(260, 225) +rotation = 1.13446 +scale = Vector2(0.3, 0.3) + +[node name="Flowers" parent="." instance=ExtResource("9_4jnhv")] +unique_name_in_owner = true +position = Vector2(1102, 298) + +[node name="VegetablePatch" parent="." instance=ExtResource("10_1x4lm")] +position = Vector2(806, 325) +scale = Vector2(0.5, 0.5) + +[node name="Beehive" parent="." groups=["beehive"] instance=ExtResource("10_6ye1u")] +unique_name_in_owner = true +position = Vector2(432, 404) + +[node name="BeeSpawner" parent="." instance=ExtResource("11_gkdx0")] +unique_name_in_owner = true + +[node name="UiComponent" parent="." instance=ExtResource("12_mmtyl")] +unique_name_in_owner = true +z_index = 900 +offset_right = 1280.0 +offset_bottom = 720.0 +mouse_filter = 1 + +[node name="DroneManager" parent="." instance=ExtResource("13_pibpn")] +unique_name_in_owner = true + +[node name="LevelCompleteComponent" parent="." instance=ExtResource("14_uyhgj")] +visible = false +z_index = 999 +offset_right = 1280.0 +offset_bottom = 720.0 + +[node name="GameOverComponent" parent="." instance=ExtResource("16_450js")] +visible = false +z_index = 900 +offset_right = 1280.0 +offset_bottom = 720.0 diff --git a/levels/level_3.tscn b/levels/level_3.tscn new file mode 100644 index 0000000..4888d56 --- /dev/null +++ b/levels/level_3.tscn @@ -0,0 +1,193 @@ +[gd_scene load_steps=17 format=3 uid="uid://bw12t0pk5eecr"] + +[ext_resource type="Script" path="res://levels/scripts/level_3.gd" id="1_6fiq4"] +[ext_resource type="PackedScene" uid="uid://dn6aa6f2f4g4i" path="res://components/RulesComponent.tscn" id="2_qf6aq"] +[ext_resource type="Resource" uid="uid://b5s6jqa3ardn0" path="res://levels/rules/level_3_rules.tres" id="3_j7g73"] +[ext_resource type="PackedScene" uid="uid://d1uawawum16b0" path="res://scenes/elements/background.tscn" id="4_dm3kt"] +[ext_resource type="PackedScene" uid="uid://dwuc6byusf1r3" path="res://scenes/decor/bush.tscn" id="5_73yq7"] +[ext_resource type="PackedScene" uid="uid://dj51rgpihnhi" path="res://scenes/decor/naked_tree.tscn" id="6_kh7s2"] +[ext_resource type="PackedScene" uid="uid://d3mas42mbgec1" path="res://scenes/decor/tree.tscn" id="7_oatrq"] +[ext_resource type="PackedScene" uid="uid://eiyribk1ijcu" path="res://scenes/decor/mushroom.tscn" id="8_biah2"] +[ext_resource type="PackedScene" uid="uid://bme541qdw7nai" path="res://entities/Flowers.tscn" id="9_3gmrl"] +[ext_resource type="PackedScene" uid="uid://clomllso36j02" path="res://entities/VegetablePatch.tscn" id="10_knlnk"] +[ext_resource type="PackedScene" uid="uid://dyu4mucawjlu6" path="res://entities/Beehive.tscn" id="11_xvue4"] +[ext_resource type="PackedScene" uid="uid://ddf2mkkw1trkj" path="res://scenes/elements/bee_spawner.tscn" id="12_vwesr"] +[ext_resource type="PackedScene" uid="uid://b7eeptlk47ymd" path="res://ui/UiComponent.tscn" id="13_cw1ps"] +[ext_resource type="PackedScene" uid="uid://ct3c16xm33r2a" path="res://scenes/elements/drone_manager.tscn" id="14_mtjsg"] +[ext_resource type="PackedScene" uid="uid://cwutwy11pityw" path="res://ui/LevelCompleteComponent.tscn" id="15_1jo0f"] +[ext_resource type="PackedScene" uid="uid://b5whit1dshr3" path="res://ui/GameOverComponent.tscn" id="16_61bnh"] + +[node name="Level3" type="Node2D"] +script = ExtResource("1_6fiq4") + +[node name="RulesComponent" parent="." instance=ExtResource("2_qf6aq")] +unique_name_in_owner = true +game_rules = ExtResource("3_j7g73") + +[node name="Grass" parent="." instance=ExtResource("4_dm3kt")] + +[node name="LevelDecor" type="Node" parent="."] + +[node name="BushGroup" type="Node2D" parent="LevelDecor"] +position = Vector2(-243, -56) + +[node name="Bush" parent="LevelDecor/BushGroup" instance=ExtResource("5_73yq7")] +position = Vector2(1110, 28) +scale = Vector2(0.25, 0.25) + +[node name="Bush3" parent="LevelDecor/BushGroup" instance=ExtResource("5_73yq7")] +position = Vector2(1272, 123) +scale = Vector2(0.25, 0.25) + +[node name="Bush2" parent="LevelDecor/BushGroup" instance=ExtResource("5_73yq7")] +position = Vector2(1214, 47) +rotation = 0.60912 +scale = Vector2(0.4, 0.4) + +[node name="BushGroup4" type="Node2D" parent="LevelDecor"] +position = Vector2(8, -4) + +[node name="Bush" parent="LevelDecor/BushGroup4" instance=ExtResource("5_73yq7")] +position = Vector2(1110, 28) +scale = Vector2(0.25, 0.25) + +[node name="Bush3" parent="LevelDecor/BushGroup4" instance=ExtResource("5_73yq7")] +position = Vector2(1272, 123) +scale = Vector2(0.25, 0.25) + +[node name="Bush2" parent="LevelDecor/BushGroup4" instance=ExtResource("5_73yq7")] +position = Vector2(1214, 47) +rotation = 0.60912 +scale = Vector2(0.4, 0.4) + +[node name="BushGroup3" type="Node2D" parent="LevelDecor"] +position = Vector2(-928, 592) +scale = Vector2(0.75, 0.75) + +[node name="Bush" parent="LevelDecor/BushGroup3" instance=ExtResource("5_73yq7")] +position = Vector2(1110, 28) +scale = Vector2(0.25, 0.25) + +[node name="Bush3" parent="LevelDecor/BushGroup3" instance=ExtResource("5_73yq7")] +position = Vector2(1272, 123) +scale = Vector2(0.25, 0.25) + +[node name="Bush2" parent="LevelDecor/BushGroup3" instance=ExtResource("5_73yq7")] +position = Vector2(1214, 47) +rotation = 0.60912 +scale = Vector2(0.4, 0.4) + +[node name="BushGroup2" type="Node2D" parent="LevelDecor"] +position = Vector2(1291, 1886) +rotation = 4.5012 + +[node name="Bush" parent="LevelDecor/BushGroup2" instance=ExtResource("5_73yq7")] +position = Vector2(1110, 28) +scale = Vector2(0.25, 0.25) + +[node name="Bush3" parent="LevelDecor/BushGroup2" instance=ExtResource("5_73yq7")] +position = Vector2(1272, 123) +scale = Vector2(0.25, 0.25) + +[node name="Bush2" parent="LevelDecor/BushGroup2" instance=ExtResource("5_73yq7")] +position = Vector2(1214, 47) +rotation = 0.60912 +scale = Vector2(0.4, 0.4) + +[node name="NakedTree" parent="LevelDecor" instance=ExtResource("6_kh7s2")] +position = Vector2(-41, 437) +scale = Vector2(0.6, 0.6) + +[node name="Tree" parent="LevelDecor" instance=ExtResource("7_oatrq")] +position = Vector2(217, 52) +scale = Vector2(0.6, 0.6) + +[node name="Tree2" parent="LevelDecor" instance=ExtResource("7_oatrq")] +position = Vector2(1175, -35) +rotation = -0.42237 +scale = Vector2(0.6, 0.6) + +[node name="Mushrooms" type="Node2D" parent="LevelDecor"] +position = Vector2(-254, 571) +rotation = -0.60912 + +[node name="Mushroom" parent="LevelDecor/Mushrooms" instance=ExtResource("8_biah2")] +position = Vector2(232, 250) +scale = Vector2(0.5, 0.5) + +[node name="Mushroom4" parent="LevelDecor/Mushrooms" instance=ExtResource("8_biah2")] +position = Vector2(1209.52, 209.747) +scale = Vector2(0.5, 0.5) + +[node name="Mushroom2" parent="LevelDecor/Mushrooms" instance=ExtResource("8_biah2")] +position = Vector2(252, 289) +rotation = 1.13446 +scale = Vector2(0.3, 0.3) + +[node name="Mushroom3" parent="LevelDecor/Mushrooms" instance=ExtResource("8_biah2")] +position = Vector2(260, 225) +rotation = 1.13446 +scale = Vector2(0.3, 0.3) + +[node name="Mushrooms2" type="Node2D" parent="LevelDecor"] +position = Vector2(1551, 802) +rotation = 2.81347 + +[node name="Mushroom" parent="LevelDecor/Mushrooms2" instance=ExtResource("8_biah2")] +position = Vector2(232, 250) +scale = Vector2(0.5, 0.5) + +[node name="Mushroom2" parent="LevelDecor/Mushrooms2" instance=ExtResource("8_biah2")] +position = Vector2(252, 289) +rotation = 1.13446 +scale = Vector2(0.3, 0.3) + +[node name="Mushroom3" parent="LevelDecor/Mushrooms2" instance=ExtResource("8_biah2")] +position = Vector2(260, 225) +rotation = 1.13446 +scale = Vector2(0.3, 0.3) + +[node name="Flowers" parent="." instance=ExtResource("9_3gmrl")] +unique_name_in_owner = true +position = Vector2(1102, 298) + +[node name="VegetablePatch" parent="." instance=ExtResource("10_knlnk")] +position = Vector2(610, 6) +scale = Vector2(0.5, 0.5) + +[node name="VegetablePatch2" parent="." instance=ExtResource("10_knlnk")] +position = Vector2(608, 567) +scale = Vector2(0.5, 0.5) + +[node name="VegetablePatch3" parent="." instance=ExtResource("10_knlnk")] +position = Vector2(862, 266) +scale = Vector2(0.5, 0.5) + +[node name="Beehive" parent="." groups=["beehive"] instance=ExtResource("11_xvue4")] +unique_name_in_owner = true +position = Vector2(272, 427) + +[node name="BeeSpawner" parent="." instance=ExtResource("12_vwesr")] +unique_name_in_owner = true + +[node name="UiComponent" parent="." instance=ExtResource("13_cw1ps")] +unique_name_in_owner = true +z_index = 1000 +offset_right = 1280.0 +offset_bottom = 720.0 +mouse_filter = 1 + +[node name="DroneManager" parent="." instance=ExtResource("14_mtjsg")] +unique_name_in_owner = true + +[node name="LevelCompleteComponent" parent="." instance=ExtResource("15_1jo0f")] +visible = false +z_index = 999 +offset_right = 1280.0 +offset_bottom = 720.0 + +[node name="GameOverComponent" parent="." instance=ExtResource("16_61bnh")] +visible = false +z_index = 900 +offset_right = 1280.0 +offset_bottom = 720.0 diff --git a/levels/level_4.tscn b/levels/level_4.tscn new file mode 100644 index 0000000..8c6626e --- /dev/null +++ b/levels/level_4.tscn @@ -0,0 +1,185 @@ +[gd_scene load_steps=17 format=3 uid="uid://byndd263rnk4q"] + +[ext_resource type="Script" path="res://levels/scripts/level_3.gd" id="1_uldek"] +[ext_resource type="PackedScene" uid="uid://dn6aa6f2f4g4i" path="res://components/RulesComponent.tscn" id="2_41ccr"] +[ext_resource type="Resource" uid="uid://2xo8nkuq5g35" path="res://levels/rules/level_4_rules.tres" id="3_y0164"] +[ext_resource type="PackedScene" uid="uid://d1uawawum16b0" path="res://scenes/elements/background.tscn" id="4_2ulo2"] +[ext_resource type="PackedScene" uid="uid://dwuc6byusf1r3" path="res://scenes/decor/bush.tscn" id="5_r4fbb"] +[ext_resource type="PackedScene" uid="uid://dj51rgpihnhi" path="res://scenes/decor/naked_tree.tscn" id="6_4f8v1"] +[ext_resource type="PackedScene" uid="uid://d3mas42mbgec1" path="res://scenes/decor/tree.tscn" id="7_tlpqx"] +[ext_resource type="PackedScene" uid="uid://eiyribk1ijcu" path="res://scenes/decor/mushroom.tscn" id="8_fw2qi"] +[ext_resource type="PackedScene" uid="uid://bme541qdw7nai" path="res://entities/Flowers.tscn" id="9_4looi"] +[ext_resource type="PackedScene" uid="uid://dyu4mucawjlu6" path="res://entities/Beehive.tscn" id="11_m7gfp"] +[ext_resource type="PackedScene" uid="uid://ddf2mkkw1trkj" path="res://scenes/elements/bee_spawner.tscn" id="12_scxhi"] +[ext_resource type="PackedScene" uid="uid://b7eeptlk47ymd" path="res://ui/UiComponent.tscn" id="13_a7gm0"] +[ext_resource type="PackedScene" uid="uid://ct3c16xm33r2a" path="res://scenes/elements/drone_manager.tscn" id="14_6mygu"] +[ext_resource type="PackedScene" uid="uid://cwutwy11pityw" path="res://ui/LevelCompleteComponent.tscn" id="15_vt473"] +[ext_resource type="PackedScene" uid="uid://cfhoi2rqxa3up" path="res://entities/Dog.tscn" id="16_ams0s"] +[ext_resource type="PackedScene" uid="uid://b5whit1dshr3" path="res://ui/GameOverComponent.tscn" id="16_quoie"] + +[node name="Level4" type="Node2D"] +script = ExtResource("1_uldek") + +[node name="RulesComponent" parent="." instance=ExtResource("2_41ccr")] +unique_name_in_owner = true +game_rules = ExtResource("3_y0164") + +[node name="Grass" parent="." instance=ExtResource("4_2ulo2")] + +[node name="LevelDecor" type="Node" parent="."] + +[node name="BushGroup" type="Node2D" parent="LevelDecor"] +position = Vector2(-243, -56) + +[node name="Bush" parent="LevelDecor/BushGroup" instance=ExtResource("5_r4fbb")] +position = Vector2(1110, 28) +scale = Vector2(0.25, 0.25) + +[node name="Bush3" parent="LevelDecor/BushGroup" instance=ExtResource("5_r4fbb")] +position = Vector2(1272, 123) +scale = Vector2(0.25, 0.25) + +[node name="Bush2" parent="LevelDecor/BushGroup" instance=ExtResource("5_r4fbb")] +position = Vector2(1214, 47) +rotation = 0.60912 +scale = Vector2(0.4, 0.4) + +[node name="BushGroup4" type="Node2D" parent="LevelDecor"] +position = Vector2(8, -4) + +[node name="Bush" parent="LevelDecor/BushGroup4" instance=ExtResource("5_r4fbb")] +position = Vector2(1110, 28) +scale = Vector2(0.25, 0.25) + +[node name="Bush3" parent="LevelDecor/BushGroup4" instance=ExtResource("5_r4fbb")] +position = Vector2(1272, 123) +scale = Vector2(0.25, 0.25) + +[node name="Bush2" parent="LevelDecor/BushGroup4" instance=ExtResource("5_r4fbb")] +position = Vector2(1214, 47) +rotation = 0.60912 +scale = Vector2(0.4, 0.4) + +[node name="BushGroup3" type="Node2D" parent="LevelDecor"] +position = Vector2(-928, 592) +scale = Vector2(0.75, 0.75) + +[node name="Bush" parent="LevelDecor/BushGroup3" instance=ExtResource("5_r4fbb")] +position = Vector2(1110, 28) +scale = Vector2(0.25, 0.25) + +[node name="Bush3" parent="LevelDecor/BushGroup3" instance=ExtResource("5_r4fbb")] +position = Vector2(1272, 123) +scale = Vector2(0.25, 0.25) + +[node name="Bush2" parent="LevelDecor/BushGroup3" instance=ExtResource("5_r4fbb")] +position = Vector2(1214, 47) +rotation = 0.60912 +scale = Vector2(0.4, 0.4) + +[node name="BushGroup2" type="Node2D" parent="LevelDecor"] +position = Vector2(1291, 1886) +rotation = 4.5012 + +[node name="Bush" parent="LevelDecor/BushGroup2" instance=ExtResource("5_r4fbb")] +position = Vector2(1110, 28) +scale = Vector2(0.25, 0.25) + +[node name="Bush3" parent="LevelDecor/BushGroup2" instance=ExtResource("5_r4fbb")] +position = Vector2(1272, 123) +scale = Vector2(0.25, 0.25) + +[node name="Bush2" parent="LevelDecor/BushGroup2" instance=ExtResource("5_r4fbb")] +position = Vector2(1214, 47) +rotation = 0.60912 +scale = Vector2(0.4, 0.4) + +[node name="NakedTree" parent="LevelDecor" instance=ExtResource("6_4f8v1")] +position = Vector2(-41, 437) +scale = Vector2(0.6, 0.6) + +[node name="Tree" parent="LevelDecor" instance=ExtResource("7_tlpqx")] +position = Vector2(217, 52) +scale = Vector2(0.6, 0.6) + +[node name="Tree2" parent="LevelDecor" instance=ExtResource("7_tlpqx")] +position = Vector2(1175, -35) +rotation = -0.42237 +scale = Vector2(0.6, 0.6) + +[node name="Mushrooms" type="Node2D" parent="LevelDecor"] +position = Vector2(-254, 571) +rotation = -0.60912 + +[node name="Mushroom" parent="LevelDecor/Mushrooms" instance=ExtResource("8_fw2qi")] +position = Vector2(232, 250) +scale = Vector2(0.5, 0.5) + +[node name="Mushroom4" parent="LevelDecor/Mushrooms" instance=ExtResource("8_fw2qi")] +position = Vector2(1209.52, 209.747) +scale = Vector2(0.5, 0.5) + +[node name="Mushroom2" parent="LevelDecor/Mushrooms" instance=ExtResource("8_fw2qi")] +position = Vector2(252, 289) +rotation = 1.13446 +scale = Vector2(0.3, 0.3) + +[node name="Mushroom3" parent="LevelDecor/Mushrooms" instance=ExtResource("8_fw2qi")] +position = Vector2(260, 225) +rotation = 1.13446 +scale = Vector2(0.3, 0.3) + +[node name="Mushrooms2" type="Node2D" parent="LevelDecor"] +position = Vector2(1551, 802) +rotation = 2.81347 + +[node name="Mushroom" parent="LevelDecor/Mushrooms2" instance=ExtResource("8_fw2qi")] +position = Vector2(232, 250) +scale = Vector2(0.5, 0.5) + +[node name="Mushroom2" parent="LevelDecor/Mushrooms2" instance=ExtResource("8_fw2qi")] +position = Vector2(252, 289) +rotation = 1.13446 +scale = Vector2(0.3, 0.3) + +[node name="Mushroom3" parent="LevelDecor/Mushrooms2" instance=ExtResource("8_fw2qi")] +position = Vector2(260, 225) +rotation = 1.13446 +scale = Vector2(0.3, 0.3) + +[node name="Flowers" parent="." instance=ExtResource("9_4looi")] +unique_name_in_owner = true +position = Vector2(1102, 298) + +[node name="Beehive" parent="." groups=["beehive"] instance=ExtResource("11_m7gfp")] +unique_name_in_owner = true +position = Vector2(272, 427) + +[node name="BeeSpawner" parent="." instance=ExtResource("12_scxhi")] +unique_name_in_owner = true + +[node name="UiComponent" parent="." instance=ExtResource("13_a7gm0")] +unique_name_in_owner = true +z_index = 1000 +offset_right = 1280.0 +offset_bottom = 720.0 +mouse_filter = 1 + +[node name="DroneManager" parent="." instance=ExtResource("14_6mygu")] +unique_name_in_owner = true + +[node name="LevelCompleteComponent" parent="." instance=ExtResource("15_vt473")] +visible = false +z_index = 999 +offset_right = 1280.0 +offset_bottom = 720.0 + +[node name="GameOverComponent" parent="." instance=ExtResource("16_quoie")] +visible = false +z_index = 900 +offset_right = 1280.0 +offset_bottom = 720.0 + +[node name="Dog" parent="." instance=ExtResource("16_ams0s")] +position = Vector2(731, 309) +rotation = 0.844739 diff --git a/levels/level_5.tscn b/levels/level_5.tscn new file mode 100644 index 0000000..80f2ad1 --- /dev/null +++ b/levels/level_5.tscn @@ -0,0 +1,220 @@ +[gd_scene load_steps=18 format=3 uid="uid://vvk5h14u0i1k"] + +[ext_resource type="Script" path="res://levels/scripts/level_3.gd" id="1_7viev"] +[ext_resource type="PackedScene" uid="uid://dn6aa6f2f4g4i" path="res://components/RulesComponent.tscn" id="2_d6prf"] +[ext_resource type="Resource" uid="uid://drdk5e8lskbwo" path="res://levels/rules/level_5_rules.tres" id="3_xjoeh"] +[ext_resource type="PackedScene" uid="uid://d1uawawum16b0" path="res://scenes/elements/background.tscn" id="4_o2mgo"] +[ext_resource type="PackedScene" uid="uid://dwuc6byusf1r3" path="res://scenes/decor/bush.tscn" id="5_ldaym"] +[ext_resource type="PackedScene" uid="uid://dj51rgpihnhi" path="res://scenes/decor/naked_tree.tscn" id="6_4xst1"] +[ext_resource type="PackedScene" uid="uid://d3mas42mbgec1" path="res://scenes/decor/tree.tscn" id="7_bmsu5"] +[ext_resource type="PackedScene" uid="uid://eiyribk1ijcu" path="res://scenes/decor/mushroom.tscn" id="8_dtrxx"] +[ext_resource type="PackedScene" uid="uid://bme541qdw7nai" path="res://entities/Flowers.tscn" id="9_ne0y1"] +[ext_resource type="PackedScene" uid="uid://dyu4mucawjlu6" path="res://entities/Beehive.tscn" id="10_ogjm5"] +[ext_resource type="PackedScene" uid="uid://ddf2mkkw1trkj" path="res://scenes/elements/bee_spawner.tscn" id="11_kkv2y"] +[ext_resource type="PackedScene" uid="uid://b7eeptlk47ymd" path="res://ui/UiComponent.tscn" id="12_ml7gj"] +[ext_resource type="PackedScene" uid="uid://ct3c16xm33r2a" path="res://scenes/elements/drone_manager.tscn" id="13_yi2jf"] +[ext_resource type="PackedScene" uid="uid://cwutwy11pityw" path="res://ui/LevelCompleteComponent.tscn" id="14_i1bii"] +[ext_resource type="PackedScene" uid="uid://b5whit1dshr3" path="res://ui/GameOverComponent.tscn" id="15_2iprn"] +[ext_resource type="PackedScene" uid="uid://cfhoi2rqxa3up" path="res://entities/Dog.tscn" id="16_jy3y1"] +[ext_resource type="PackedScene" uid="uid://clomllso36j02" path="res://entities/VegetablePatch.tscn" id="17_0sreo"] + +[node name="Level5" type="Node2D"] +script = ExtResource("1_7viev") + +[node name="RulesComponent" parent="." instance=ExtResource("2_d6prf")] +unique_name_in_owner = true +game_rules = ExtResource("3_xjoeh") + +[node name="Grass" parent="." instance=ExtResource("4_o2mgo")] + +[node name="Beehive" parent="." groups=["beehive"] instance=ExtResource("10_ogjm5")] +unique_name_in_owner = true +position = Vector2(138, 488) + +[node name="Dog" parent="." instance=ExtResource("16_jy3y1")] +position = Vector2(1021, 227) +rotation = 0.844739 + +[node name="VegetablePatch" parent="." instance=ExtResource("17_0sreo")] +position = Vector2(382, 146) +scale = Vector2(0.5, 0.5) + +[node name="LevelDecor" type="Node2D" parent="."] + +[node name="BushGroup" type="Node2D" parent="LevelDecor"] +position = Vector2(-243, -56) + +[node name="Bush" parent="LevelDecor/BushGroup" instance=ExtResource("5_ldaym")] +position = Vector2(1110, 28) +scale = Vector2(0.25, 0.25) + +[node name="Bush3" parent="LevelDecor/BushGroup" instance=ExtResource("5_ldaym")] +position = Vector2(1272, 123) +scale = Vector2(0.25, 0.25) + +[node name="Bush2" parent="LevelDecor/BushGroup" instance=ExtResource("5_ldaym")] +position = Vector2(1214, 47) +rotation = 0.60912 +scale = Vector2(0.4, 0.4) + +[node name="BushGroup4" type="Node2D" parent="LevelDecor"] +position = Vector2(83, 221) + +[node name="Bush" parent="LevelDecor/BushGroup4" instance=ExtResource("5_ldaym")] +position = Vector2(1110, 28) +scale = Vector2(0.25, 0.25) + +[node name="Bush3" parent="LevelDecor/BushGroup4" instance=ExtResource("5_ldaym")] +position = Vector2(1272, 123) +scale = Vector2(0.25, 0.25) + +[node name="Bush2" parent="LevelDecor/BushGroup4" instance=ExtResource("5_ldaym")] +position = Vector2(1214, 47) +rotation = 0.60912 +scale = Vector2(0.4, 0.4) + +[node name="BushGroup3" type="Node2D" parent="LevelDecor"] +position = Vector2(-928, 592) +scale = Vector2(0.75, 0.75) + +[node name="Bush" parent="LevelDecor/BushGroup3" instance=ExtResource("5_ldaym")] +position = Vector2(1110, 28) +scale = Vector2(0.25, 0.25) + +[node name="Bush3" parent="LevelDecor/BushGroup3" instance=ExtResource("5_ldaym")] +position = Vector2(1272, 123) +scale = Vector2(0.25, 0.25) + +[node name="Bush2" parent="LevelDecor/BushGroup3" instance=ExtResource("5_ldaym")] +position = Vector2(1214, 47) +rotation = 0.60912 +scale = Vector2(0.4, 0.4) + +[node name="BushGroup2" type="Node2D" parent="LevelDecor"] +position = Vector2(1291, 1886) +rotation = -1.78199 + +[node name="Bush" parent="LevelDecor/BushGroup2" instance=ExtResource("5_ldaym")] +visible = false +position = Vector2(1110, 28) +scale = Vector2(0.25, 0.25) + +[node name="Bush3" parent="LevelDecor/BushGroup2" instance=ExtResource("5_ldaym")] +position = Vector2(1235.53, -33.756) +scale = Vector2(0.25, 0.25) + +[node name="Bush2" parent="LevelDecor/BushGroup2" instance=ExtResource("5_ldaym")] +visible = false +position = Vector2(1214, 47) +rotation = 0.60912 +scale = Vector2(0.4, 0.4) + +[node name="NakedTree" parent="LevelDecor" instance=ExtResource("6_4xst1")] +position = Vector2(57, 251) +scale = Vector2(0.6, 0.6) + +[node name="Tree" parent="LevelDecor" instance=ExtResource("7_bmsu5")] +position = Vector2(217, 52) +scale = Vector2(0.6, 0.6) + +[node name="Tree3" parent="LevelDecor" instance=ExtResource("7_bmsu5")] +position = Vector2(-27, 309) +rotation = 1.54811 +scale = Vector2(0.3, 0.3) + +[node name="Tree2" parent="LevelDecor" instance=ExtResource("7_bmsu5")] +position = Vector2(1175, -35) +rotation = -0.42237 +scale = Vector2(0.6, 0.6) + +[node name="Mushrooms" type="Node2D" parent="LevelDecor"] +position = Vector2(42, 290) +rotation = 0.563741 + +[node name="Mushroom" parent="LevelDecor/Mushrooms" instance=ExtResource("8_dtrxx")] +position = Vector2(232, 250) +scale = Vector2(0.5, 0.5) + +[node name="Mushroom4" parent="LevelDecor/Mushrooms" instance=ExtResource("8_dtrxx")] +position = Vector2(133.124, -146.86) +scale = Vector2(0.5, 0.5) + +[node name="Mushroom2" parent="LevelDecor/Mushrooms" instance=ExtResource("8_dtrxx")] +visible = false +position = Vector2(252, 289) +rotation = 1.13446 +scale = Vector2(0.3, 0.3) + +[node name="Mushroom3" parent="LevelDecor/Mushrooms" instance=ExtResource("8_dtrxx")] +position = Vector2(260, 225) +rotation = 1.13446 +scale = Vector2(0.3, 0.3) + +[node name="Mushrooms2" type="Node2D" parent="LevelDecor"] +position = Vector2(1551, 802) +rotation = 2.81347 + +[node name="Mushroom" parent="LevelDecor/Mushrooms2" instance=ExtResource("8_dtrxx")] +position = Vector2(232, 250) +scale = Vector2(0.5, 0.5) + +[node name="Mushroom2" parent="LevelDecor/Mushrooms2" instance=ExtResource("8_dtrxx")] +position = Vector2(252, 289) +rotation = 1.13446 +scale = Vector2(0.3, 0.3) + +[node name="Mushroom3" parent="LevelDecor/Mushrooms2" instance=ExtResource("8_dtrxx")] +position = Vector2(260, 225) +rotation = 1.13446 +scale = Vector2(0.3, 0.3) + +[node name="Flowers" parent="." instance=ExtResource("9_ne0y1")] +unique_name_in_owner = true +position = Vector2(1092, 495) + +[node name="BeeSpawner" parent="." instance=ExtResource("11_kkv2y")] +unique_name_in_owner = true + +[node name="UiComponent" parent="." instance=ExtResource("12_ml7gj")] +unique_name_in_owner = true +z_index = 1000 +offset_right = 1280.0 +offset_bottom = 720.0 +mouse_filter = 1 + +[node name="DroneManager" parent="." instance=ExtResource("13_yi2jf")] +unique_name_in_owner = true + +[node name="LevelCompleteComponent" parent="." instance=ExtResource("14_i1bii")] +visible = false +z_index = 999 +offset_right = 1280.0 +offset_bottom = 720.0 + +[node name="GameOverComponent" parent="." instance=ExtResource("15_2iprn")] +visible = false +z_index = 900 +offset_right = 1280.0 +offset_bottom = 720.0 + +[node name="VegetablePatch5" parent="." instance=ExtResource("17_0sreo")] +position = Vector2(620, 691) +scale = Vector2(0.5, 0.5) + +[node name="VegetablePatch6" parent="." instance=ExtResource("17_0sreo")] +position = Vector2(837, 732) +scale = Vector2(0.5, 0.5) + +[node name="VegetablePatch2" parent="." instance=ExtResource("17_0sreo")] +position = Vector2(384, 624) +scale = Vector2(0.5, 0.5) + +[node name="VegetablePatch3" parent="." instance=ExtResource("17_0sreo")] +position = Vector2(747, 374) +rotation = 1.5708 +scale = Vector2(0.5, 0.5) + +[node name="VegetablePatch4" parent="." instance=ExtResource("17_0sreo")] +position = Vector2(743, 151) +rotation = 1.5708 +scale = Vector2(0.5, 0.5) diff --git a/levels/level_6.tscn b/levels/level_6.tscn new file mode 100644 index 0000000..07131a9 --- /dev/null +++ b/levels/level_6.tscn @@ -0,0 +1,225 @@ +[gd_scene load_steps=18 format=3 uid="uid://dtrqvifl07hgo"] + +[ext_resource type="Script" path="res://levels/scripts/level_3.gd" id="1_hg53e"] +[ext_resource type="PackedScene" uid="uid://dn6aa6f2f4g4i" path="res://components/RulesComponent.tscn" id="2_ufpjb"] +[ext_resource type="Resource" uid="uid://bts21313fjhri" path="res://levels/rules/level_6_rules.tres" id="3_ckppu"] +[ext_resource type="PackedScene" uid="uid://d1uawawum16b0" path="res://scenes/elements/background.tscn" id="4_7ro3d"] +[ext_resource type="PackedScene" uid="uid://dyu4mucawjlu6" path="res://entities/Beehive.tscn" id="5_613ii"] +[ext_resource type="PackedScene" uid="uid://cfhoi2rqxa3up" path="res://entities/Dog.tscn" id="6_fbrq3"] +[ext_resource type="PackedScene" uid="uid://clomllso36j02" path="res://entities/VegetablePatch.tscn" id="7_85a4g"] +[ext_resource type="PackedScene" uid="uid://dwuc6byusf1r3" path="res://scenes/decor/bush.tscn" id="8_cbi4d"] +[ext_resource type="PackedScene" uid="uid://dj51rgpihnhi" path="res://scenes/decor/naked_tree.tscn" id="9_hxin4"] +[ext_resource type="PackedScene" uid="uid://d3mas42mbgec1" path="res://scenes/decor/tree.tscn" id="10_60f2e"] +[ext_resource type="PackedScene" uid="uid://eiyribk1ijcu" path="res://scenes/decor/mushroom.tscn" id="11_hhoco"] +[ext_resource type="PackedScene" uid="uid://bme541qdw7nai" path="res://entities/Flowers.tscn" id="12_75856"] +[ext_resource type="PackedScene" uid="uid://ddf2mkkw1trkj" path="res://scenes/elements/bee_spawner.tscn" id="13_wjpeu"] +[ext_resource type="PackedScene" uid="uid://b7eeptlk47ymd" path="res://ui/UiComponent.tscn" id="14_05wvt"] +[ext_resource type="PackedScene" uid="uid://ct3c16xm33r2a" path="res://scenes/elements/drone_manager.tscn" id="15_6fk1g"] +[ext_resource type="PackedScene" uid="uid://cwutwy11pityw" path="res://ui/LevelCompleteComponent.tscn" id="16_r0rm6"] +[ext_resource type="PackedScene" uid="uid://b5whit1dshr3" path="res://ui/GameOverComponent.tscn" id="17_x23hi"] + +[node name="Level6" type="Node2D"] +script = ExtResource("1_hg53e") + +[node name="RulesComponent" parent="." instance=ExtResource("2_ufpjb")] +unique_name_in_owner = true +game_rules = ExtResource("3_ckppu") + +[node name="Grass" parent="." instance=ExtResource("4_7ro3d")] + +[node name="Beehive" parent="." groups=["beehive"] instance=ExtResource("5_613ii")] +unique_name_in_owner = true +position = Vector2(647, 184) + +[node name="VegetablePatch6" parent="." instance=ExtResource("7_85a4g")] +position = Vector2(568, 516) +rotation = 1.5708 +scale = Vector2(0.4, 0.4) + +[node name="VegetablePatch" parent="." instance=ExtResource("7_85a4g")] +position = Vector2(465, 301) +scale = Vector2(0.4, 0.4) + +[node name="VegetablePatch3" parent="." instance=ExtResource("7_85a4g")] +position = Vector2(276, 230) +rotation = 0.785398 +scale = Vector2(0.4, 0.4) + +[node name="VegetablePatch2" parent="." instance=ExtResource("7_85a4g")] +position = Vector2(833, 309) +scale = Vector2(0.4, 0.4) + +[node name="VegetablePatch4" parent="." instance=ExtResource("7_85a4g")] +position = Vector2(1013, 227) +rotation = -0.785398 +scale = Vector2(0.4, 0.4) + +[node name="VegetablePatch5" parent="." instance=ExtResource("7_85a4g")] +position = Vector2(1236, 441) +rotation = -0.785398 +scale = Vector2(0.4, 0.4) + +[node name="LevelDecor" type="Node2D" parent="."] + +[node name="BushGroup" type="Node2D" parent="LevelDecor"] +position = Vector2(-243, -56) + +[node name="Bush" parent="LevelDecor/BushGroup" instance=ExtResource("8_cbi4d")] +position = Vector2(1110, 28) +scale = Vector2(0.25, 0.25) + +[node name="Bush3" parent="LevelDecor/BushGroup" instance=ExtResource("8_cbi4d")] +position = Vector2(495, 53) +scale = Vector2(0.25, 0.25) + +[node name="Bush2" parent="LevelDecor/BushGroup" instance=ExtResource("8_cbi4d")] +position = Vector2(1214, 47) +rotation = 0.60912 +scale = Vector2(0.4, 0.4) + +[node name="BushGroup4" type="Node2D" parent="LevelDecor"] +position = Vector2(83, 221) + +[node name="Bush" parent="LevelDecor/BushGroup4" instance=ExtResource("8_cbi4d")] +position = Vector2(1110, 28) +scale = Vector2(0.25, 0.25) + +[node name="Bush3" parent="LevelDecor/BushGroup4" instance=ExtResource("8_cbi4d")] +position = Vector2(1272, 123) +scale = Vector2(0.25, 0.25) + +[node name="Bush2" parent="LevelDecor/BushGroup4" instance=ExtResource("8_cbi4d")] +position = Vector2(1214, 47) +rotation = 0.60912 +scale = Vector2(0.4, 0.4) + +[node name="BushGroup3" type="Node2D" parent="LevelDecor"] +position = Vector2(-928, 592) +scale = Vector2(0.75, 0.75) + +[node name="Bush" parent="LevelDecor/BushGroup3" instance=ExtResource("8_cbi4d")] +position = Vector2(1726.67, -413.333) +scale = Vector2(0.25, 0.25) + +[node name="Bush3" parent="LevelDecor/BushGroup3" instance=ExtResource("8_cbi4d")] +position = Vector2(1309.33, 81.3333) +scale = Vector2(0.25, 0.25) + +[node name="Bush2" parent="LevelDecor/BushGroup3" instance=ExtResource("8_cbi4d")] +position = Vector2(1233.33, -340) +rotation = 0.60912 +scale = Vector2(0.4, 0.4) + +[node name="BushGroup2" type="Node2D" parent="LevelDecor"] +position = Vector2(1291, 1886) +rotation = -1.78199 + +[node name="Bush" parent="LevelDecor/BushGroup2" instance=ExtResource("8_cbi4d")] +visible = false +position = Vector2(1110, 28) +scale = Vector2(0.25, 0.25) + +[node name="Bush3" parent="LevelDecor/BushGroup2" instance=ExtResource("8_cbi4d")] +position = Vector2(1235.53, -33.756) +scale = Vector2(0.25, 0.25) + +[node name="Bush2" parent="LevelDecor/BushGroup2" instance=ExtResource("8_cbi4d")] +visible = false +position = Vector2(1214, 47) +rotation = 0.60912 +scale = Vector2(0.4, 0.4) + +[node name="NakedTree" parent="LevelDecor" instance=ExtResource("9_hxin4")] +position = Vector2(-4, 157) +scale = Vector2(0.6, 0.6) + +[node name="Tree" parent="LevelDecor" instance=ExtResource("10_60f2e")] +position = Vector2(59, -4) +scale = Vector2(0.6, 0.6) + +[node name="Tree3" parent="LevelDecor" instance=ExtResource("10_60f2e")] +position = Vector2(648, 371) +rotation = 0.986111 +scale = Vector2(0.25, 0.25) + +[node name="Tree2" parent="LevelDecor" instance=ExtResource("10_60f2e")] +position = Vector2(1175, -35) +rotation = -0.42237 +scale = Vector2(0.6, 0.6) + +[node name="Mushrooms" type="Node2D" parent="LevelDecor"] +position = Vector2(42, 290) +rotation = 0.563741 + +[node name="Mushroom" parent="LevelDecor/Mushrooms" instance=ExtResource("11_hhoco")] +position = Vector2(232, 250) +scale = Vector2(0.5, 0.5) + +[node name="Mushroom4" parent="LevelDecor/Mushrooms" instance=ExtResource("11_hhoco")] +position = Vector2(54.3027, -282.772) +scale = Vector2(0.5, 0.5) + +[node name="Mushroom2" parent="LevelDecor/Mushrooms" instance=ExtResource("11_hhoco")] +position = Vector2(949.017, -785.684) +rotation = 1.13446 +scale = Vector2(0.3, 0.3) + +[node name="Mushroom3" parent="LevelDecor/Mushrooms" instance=ExtResource("11_hhoco")] +position = Vector2(260, 225) +rotation = 1.13446 +scale = Vector2(0.3, 0.3) + +[node name="Mushrooms2" type="Node2D" parent="LevelDecor"] +position = Vector2(1551, 802) +rotation = 2.81347 + +[node name="Mushroom" parent="LevelDecor/Mushrooms2" instance=ExtResource("11_hhoco")] +position = Vector2(321.639, 243.653) +scale = Vector2(0.5, 0.5) + +[node name="Mushroom2" parent="LevelDecor/Mushrooms2" instance=ExtResource("11_hhoco")] +position = Vector2(252, 289) +rotation = 1.13446 +scale = Vector2(0.3, 0.3) + +[node name="Mushroom3" parent="LevelDecor/Mushrooms2" instance=ExtResource("11_hhoco")] +position = Vector2(260, 225) +rotation = 1.13446 +scale = Vector2(0.3, 0.3) + +[node name="Flowers" parent="." instance=ExtResource("12_75856")] +unique_name_in_owner = true +position = Vector2(197, 524) + +[node name="Flowers2" parent="." instance=ExtResource("12_75856")] +unique_name_in_owner = true +position = Vector2(1006, 486) + +[node name="Dog" parent="." instance=ExtResource("6_fbrq3")] +position = Vector2(1007, 488) +rotation = 0.844739 + +[node name="BeeSpawner" parent="." instance=ExtResource("13_wjpeu")] +unique_name_in_owner = true + +[node name="UiComponent" parent="." instance=ExtResource("14_05wvt")] +unique_name_in_owner = true +z_index = 1000 +offset_right = 1280.0 +offset_bottom = 720.0 +mouse_filter = 1 + +[node name="DroneManager" parent="." instance=ExtResource("15_6fk1g")] +unique_name_in_owner = true + +[node name="LevelCompleteComponent" parent="." instance=ExtResource("16_r0rm6")] +visible = false +z_index = 999 +offset_right = 1280.0 +offset_bottom = 720.0 + +[node name="GameOverComponent" parent="." instance=ExtResource("17_x23hi")] +visible = false +z_index = 900 +offset_right = 1280.0 +offset_bottom = 720.0 diff --git a/levels/rules/high_scores.tres b/levels/rules/high_scores.tres new file mode 100644 index 0000000..d7842d8 --- /dev/null +++ b/levels/rules/high_scores.tres @@ -0,0 +1,16 @@ +[gd_resource type="Resource" script_class="GameRulesResource" load_steps=2 format=3 uid="uid://dxkuoaiws5cc3"] + +[ext_resource type="Script" path="res://components/scripts/game_rules.gd" id="1_g4ck5"] + +[resource] +script = ExtResource("1_g4ck5") +level_number = 20 +level_name = "High Scores" +level_description = "These are the high scores" +bees_available = 5 +nectar_required = 9999999 +level_par = 2 +collector_enabled = false +dancer_enabled = false +director_enabled = false +distractor_enabled = false diff --git a/levels/rules/level_1_rules.tres b/levels/rules/level_1_rules.tres new file mode 100644 index 0000000..4fb0bee --- /dev/null +++ b/levels/rules/level_1_rules.tres @@ -0,0 +1,16 @@ +[gd_resource type="Resource" script_class="GameRulesResource" load_steps=2 format=3 uid="uid://byyectcdb7e14"] + +[ext_resource type="Script" path="res://components/scripts/game_rules.gd" id="1_265gm"] + +[resource] +script = ExtResource("1_265gm") +level_number = 1 +level_name = "Level One" +level_description = "Basic game introduction" +bees_available = 40 +nectar_required = 400 +level_par = 2 +collector_enabled = true +dancer_enabled = true +director_enabled = false +distractor_enabled = false diff --git a/levels/rules/level_2_rules.tres b/levels/rules/level_2_rules.tres new file mode 100644 index 0000000..e321636 --- /dev/null +++ b/levels/rules/level_2_rules.tres @@ -0,0 +1,16 @@ +[gd_resource type="Resource" script_class="GameRulesResource" load_steps=2 format=3 uid="uid://cqtsmjsyqne41"] + +[ext_resource type="Script" path="res://components/scripts/game_rules.gd" id="1_ga8fp"] + +[resource] +script = ExtResource("1_ga8fp") +level_number = 2 +level_name = "Level Two" +level_description = "Hazard introduction - pesticide" +bees_available = 40 +nectar_required = 800 +level_par = 3 +collector_enabled = true +dancer_enabled = true +director_enabled = true +distractor_enabled = false diff --git a/levels/rules/level_3_rules.tres b/levels/rules/level_3_rules.tres new file mode 100644 index 0000000..75cec6b --- /dev/null +++ b/levels/rules/level_3_rules.tres @@ -0,0 +1,16 @@ +[gd_resource type="Resource" script_class="GameRulesResource" load_steps=2 format=3 uid="uid://b5s6jqa3ardn0"] + +[ext_resource type="Script" path="res://components/scripts/game_rules.gd" id="1_kdeq5"] + +[resource] +script = ExtResource("1_kdeq5") +level_number = 3 +level_name = "Level Three" +level_description = "Hazard introduction - more pesticide!" +bees_available = 60 +nectar_required = 1000 +level_par = 4 +collector_enabled = true +dancer_enabled = true +director_enabled = true +distractor_enabled = false diff --git a/levels/rules/level_4_rules.tres b/levels/rules/level_4_rules.tres new file mode 100644 index 0000000..742c748 --- /dev/null +++ b/levels/rules/level_4_rules.tres @@ -0,0 +1,16 @@ +[gd_resource type="Resource" script_class="GameRulesResource" load_steps=2 format=3 uid="uid://2xo8nkuq5g35"] + +[ext_resource type="Script" path="res://components/scripts/game_rules.gd" id="1_c8fak"] + +[resource] +script = ExtResource("1_c8fak") +level_number = 4 +level_name = "Level Four" +level_description = "Hazard introduction - it's a dog!" +bees_available = 60 +nectar_required = 1000 +level_par = 3 +collector_enabled = true +dancer_enabled = true +director_enabled = false +distractor_enabled = true diff --git a/levels/rules/level_5_rules.tres b/levels/rules/level_5_rules.tres new file mode 100644 index 0000000..5bac148 --- /dev/null +++ b/levels/rules/level_5_rules.tres @@ -0,0 +1,16 @@ +[gd_resource type="Resource" script_class="GameRulesResource" load_steps=2 format=3 uid="uid://drdk5e8lskbwo"] + +[ext_resource type="Script" path="res://components/scripts/game_rules.gd" id="1_6j81d"] + +[resource] +script = ExtResource("1_6j81d") +level_number = 5 +level_name = "Level Five" +level_description = "Serious Business" +bees_available = 100 +nectar_required = 2000 +level_par = 5 +collector_enabled = true +dancer_enabled = true +director_enabled = true +distractor_enabled = true diff --git a/levels/rules/level_6_rules.tres b/levels/rules/level_6_rules.tres new file mode 100644 index 0000000..e7255e2 --- /dev/null +++ b/levels/rules/level_6_rules.tres @@ -0,0 +1,16 @@ +[gd_resource type="Resource" script_class="GameRulesResource" load_steps=2 format=3 uid="uid://bts21313fjhri"] + +[ext_resource type="Script" path="res://components/scripts/game_rules.gd" id="1_j7qva"] + +[resource] +script = ExtResource("1_j7qva") +level_number = 6 +level_name = "Level Six" +level_description = "Serious Business" +bees_available = 120 +nectar_required = 3000 +level_par = 6 +collector_enabled = true +dancer_enabled = true +director_enabled = true +distractor_enabled = true diff --git a/levels/rules/main_menu.tres b/levels/rules/main_menu.tres new file mode 100644 index 0000000..ea2a62f --- /dev/null +++ b/levels/rules/main_menu.tres @@ -0,0 +1,16 @@ +[gd_resource type="Resource" script_class="GameRulesResource" load_steps=2 format=3 uid="uid://bn4qhonifxne3"] + +[ext_resource type="Script" path="res://components/scripts/game_rules.gd" id="1_nviaj"] + +[resource] +script = ExtResource("1_nviaj") +level_number = 0 +level_name = "Main Menu" +level_description = "This is the main menu" +bees_available = 5 +nectar_required = 9999999 +level_par = 2 +collector_enabled = false +dancer_enabled = false +director_enabled = false +distractor_enabled = false diff --git a/levels/scripts/level.gd b/levels/scripts/level.gd new file mode 100644 index 0000000..e2426b5 --- /dev/null +++ b/levels/scripts/level.gd @@ -0,0 +1,17 @@ +class_name Level extends Node + +@onready var rules : RulesComponent = get_node("RulesComponent") as RulesComponent +@onready var bee_spawner : BeeSpawner = get_node("BeeSpawner") as BeeSpawner +@onready var ui_controls : UIComponent = get_node("UiComponent") as UIComponent + +func _ready() -> void: + update_game_state() + +func update_game_state() -> void: + GameState.required_nectar = rules.game_rules.nectar_required + GameState.level_par = rules.game_rules.level_par + GameState.level_number = rules.game_rules.level_number + GameState.bees_available = rules.game_rules.bees_available + ui_controls.update_level_text("Level : " + str(rules.game_rules.level_number)) + ui_controls.update_par_text("Par : " + str(rules.game_rules.level_par)) + bee_spawner.max_bees = rules.game_rules.bees_available diff --git a/levels/scripts/level_1.gd b/levels/scripts/level_1.gd new file mode 100644 index 0000000..d512502 --- /dev/null +++ b/levels/scripts/level_1.gd @@ -0,0 +1,3 @@ +extends Level +class_name LevelOne + diff --git a/levels/scripts/level_2.gd b/levels/scripts/level_2.gd new file mode 100644 index 0000000..0501cdc --- /dev/null +++ b/levels/scripts/level_2.gd @@ -0,0 +1,2 @@ +extends Level +class_name LevelTwo diff --git a/levels/scripts/level_3.gd b/levels/scripts/level_3.gd new file mode 100644 index 0000000..75695b3 --- /dev/null +++ b/levels/scripts/level_3.gd @@ -0,0 +1,2 @@ +extends Level +class_name LevelThree diff --git a/project.godot b/project.godot index 612c2ae..0f70055 100644 --- a/project.godot +++ b/project.godot @@ -11,5 +11,52 @@ config_version=5 [application] config/name="Pollen Not Included" +run/main_scene="res://scenes/scene_manager.tscn" config/features=PackedStringArray("4.2", "Forward Plus") -config/icon="res://icon.svg" +boot_splash/show_image=false +config/icon="res://resources/icons/gameicon.png" +config/windows_native_icon="res://resources/icons/icon.ico" + +[autoload] + +Str="*res://utility/utility_strings.gd" +CursorMgr="*res://utility/cursor_manager.gd" +GameState="*res://utility/game_state.gd" +SceneMgr="*res://utility/global_scene_manager.gd" +HighScoreMgr="*res://utility/high_scores.gd" + +[debug] + +gdscript/warnings/untyped_declaration=1 +gdscript/warnings/inferred_declaration=1 + +[display] + +window/size/viewport_width=1280 +window/size/viewport_height=720 +window/stretch/mode="viewport" +window/vsync/vsync_mode=0 +mouse_cursor/custom_image="res://resources/cursors/pointer_a.png" +mouse_cursor/custom_image_hotspot=Vector2(8, 8) + +[editor_plugins] + +enabled=PackedStringArray("res://addons/log/plugin.cfg") + +[gui] + +theme/custom="res://resources/theme/game_theme.tres" + +[layer_names] + +2d_physics/layer_1="bees" +2d_physics/layer_2="hazards" +2d_physics/layer_3="flowers" + +[physics] + +2d/run_on_separate_thread=true + +[rendering] + +renderer/rendering_method="gl_compatibility" diff --git a/resources/SFX/bee.ogg b/resources/SFX/bee.ogg new file mode 100644 index 0000000..494a8bf Binary files /dev/null and b/resources/SFX/bee.ogg differ diff --git a/resources/SFX/bee.ogg.import b/resources/SFX/bee.ogg.import new file mode 100644 index 0000000..18db444 --- /dev/null +++ b/resources/SFX/bee.ogg.import @@ -0,0 +1,19 @@ +[remap] + +importer="oggvorbisstr" +type="AudioStreamOggVorbis" +uid="uid://jdk681m35wt4" +path="res://.godot/imported/bee.ogg-2ae807cffcea1e18ac098b6092cda761.oggvorbisstr" + +[deps] + +source_file="res://resources/SFX/bee.ogg" +dest_files=["res://.godot/imported/bee.ogg-2ae807cffcea1e18ac098b6092cda761.oggvorbisstr"] + +[params] + +loop=true +loop_offset=0 +bpm=0 +beat_count=0 +bar_beats=4 diff --git a/resources/SFX/mixkit-big-bee-hard-flying-sound-42.wav b/resources/SFX/mixkit-big-bee-hard-flying-sound-42.wav new file mode 100644 index 0000000..062e107 Binary files /dev/null and b/resources/SFX/mixkit-big-bee-hard-flying-sound-42.wav differ diff --git a/resources/SFX/mixkit-big-bee-hard-flying-sound-42.wav.import b/resources/SFX/mixkit-big-bee-hard-flying-sound-42.wav.import new file mode 100644 index 0000000..68795b8 --- /dev/null +++ b/resources/SFX/mixkit-big-bee-hard-flying-sound-42.wav.import @@ -0,0 +1,24 @@ +[remap] + +importer="wav" +type="AudioStreamWAV" +uid="uid://dpgl5huwc4yl8" +path="res://.godot/imported/mixkit-big-bee-hard-flying-sound-42.wav-772da984940bacc52c99d0787cc9adb8.sample" + +[deps] + +source_file="res://resources/SFX/mixkit-big-bee-hard-flying-sound-42.wav" +dest_files=["res://.godot/imported/mixkit-big-bee-hard-flying-sound-42.wav-772da984940bacc52c99d0787cc9adb8.sample"] + +[params] + +force/8_bit=false +force/mono=false +force/max_rate=false +force/max_rate_hz=44100 +edit/trim=false +edit/normalize=false +edit/loop_mode=0 +edit/loop_begin=0 +edit/loop_end=-1 +compress/mode=0 diff --git a/resources/SFX/mixkit-european-spring-forest-ambience-1219.wav b/resources/SFX/mixkit-european-spring-forest-ambience-1219.wav new file mode 100644 index 0000000..1395971 Binary files /dev/null and b/resources/SFX/mixkit-european-spring-forest-ambience-1219.wav differ diff --git a/resources/SFX/mixkit-european-spring-forest-ambience-1219.wav.import b/resources/SFX/mixkit-european-spring-forest-ambience-1219.wav.import new file mode 100644 index 0000000..42df3b5 --- /dev/null +++ b/resources/SFX/mixkit-european-spring-forest-ambience-1219.wav.import @@ -0,0 +1,24 @@ +[remap] + +importer="wav" +type="AudioStreamWAV" +uid="uid://dvsjpsh5dyixq" +path="res://.godot/imported/mixkit-european-spring-forest-ambience-1219.wav-d4f05387a508f164ac731bd7237091a8.sample" + +[deps] + +source_file="res://resources/SFX/mixkit-european-spring-forest-ambience-1219.wav" +dest_files=["res://.godot/imported/mixkit-european-spring-forest-ambience-1219.wav-d4f05387a508f164ac731bd7237091a8.sample"] + +[params] + +force/8_bit=false +force/mono=false +force/max_rate=false +force/max_rate_hz=44100 +edit/trim=false +edit/normalize=false +edit/loop_mode=2 +edit/loop_begin=0 +edit/loop_end=-1 +compress/mode=0 diff --git a/resources/SFX/peaks/mixkit-bee-buzz-1926.wav.reapeaks b/resources/SFX/peaks/mixkit-bee-buzz-1926.wav.reapeaks new file mode 100644 index 0000000..3206596 Binary files /dev/null and b/resources/SFX/peaks/mixkit-bee-buzz-1926.wav.reapeaks differ diff --git a/resources/cursors/arrow_e.png b/resources/cursors/arrow_e.png new file mode 100644 index 0000000..c366f48 Binary files /dev/null and b/resources/cursors/arrow_e.png differ diff --git a/resources/cursors/arrow_e.png.import b/resources/cursors/arrow_e.png.import new file mode 100644 index 0000000..0d238b0 --- /dev/null +++ b/resources/cursors/arrow_e.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bn1mvt0n0idwv" +path="res://.godot/imported/arrow_e.png-7b1be4e767721a9ed88ed338570ad7fc.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/cursors/arrow_e.png" +dest_files=["res://.godot/imported/arrow_e.png-7b1be4e767721a9ed88ed338570ad7fc.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/cursors/arrow_n.png b/resources/cursors/arrow_n.png new file mode 100644 index 0000000..7eb8795 Binary files /dev/null and b/resources/cursors/arrow_n.png differ diff --git a/resources/cursors/arrow_n.png.import b/resources/cursors/arrow_n.png.import new file mode 100644 index 0000000..badf111 --- /dev/null +++ b/resources/cursors/arrow_n.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://3oxvxr1gqqxq" +path="res://.godot/imported/arrow_n.png-fef8c72db9afa29d32e4024daa81dcab.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/cursors/arrow_n.png" +dest_files=["res://.godot/imported/arrow_n.png-fef8c72db9afa29d32e4024daa81dcab.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/cursors/arrow_ne.png b/resources/cursors/arrow_ne.png new file mode 100644 index 0000000..2936b8b Binary files /dev/null and b/resources/cursors/arrow_ne.png differ diff --git a/resources/cursors/arrow_ne.png.import b/resources/cursors/arrow_ne.png.import new file mode 100644 index 0000000..e921319 --- /dev/null +++ b/resources/cursors/arrow_ne.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b8fw6tnl30udj" +path="res://.godot/imported/arrow_ne.png-178cbd61845b6728a7cee6d8ce2cee65.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/cursors/arrow_ne.png" +dest_files=["res://.godot/imported/arrow_ne.png-178cbd61845b6728a7cee6d8ce2cee65.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/cursors/arrow_nw.png b/resources/cursors/arrow_nw.png new file mode 100644 index 0000000..439bddb Binary files /dev/null and b/resources/cursors/arrow_nw.png differ diff --git a/resources/cursors/arrow_nw.png.import b/resources/cursors/arrow_nw.png.import new file mode 100644 index 0000000..603e54a --- /dev/null +++ b/resources/cursors/arrow_nw.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dytk3baj31d1i" +path="res://.godot/imported/arrow_nw.png-fa4c1384472ccb0ed8e7dbd053d1370a.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/cursors/arrow_nw.png" +dest_files=["res://.godot/imported/arrow_nw.png-fa4c1384472ccb0ed8e7dbd053d1370a.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/cursors/arrow_s.png b/resources/cursors/arrow_s.png new file mode 100644 index 0000000..2623aa7 Binary files /dev/null and b/resources/cursors/arrow_s.png differ diff --git a/resources/cursors/arrow_s.png.import b/resources/cursors/arrow_s.png.import new file mode 100644 index 0000000..5b2b169 --- /dev/null +++ b/resources/cursors/arrow_s.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cs4d7bu221y0v" +path="res://.godot/imported/arrow_s.png-b3f8530096e88442ff816309033c3041.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/cursors/arrow_s.png" +dest_files=["res://.godot/imported/arrow_s.png-b3f8530096e88442ff816309033c3041.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/cursors/arrow_se.png b/resources/cursors/arrow_se.png new file mode 100644 index 0000000..6ac2aa8 Binary files /dev/null and b/resources/cursors/arrow_se.png differ diff --git a/resources/cursors/arrow_se.png.import b/resources/cursors/arrow_se.png.import new file mode 100644 index 0000000..a052f64 --- /dev/null +++ b/resources/cursors/arrow_se.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://c6ok1cpd8ostw" +path="res://.godot/imported/arrow_se.png-1039f2195e10040c4685d9c17feef67d.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/cursors/arrow_se.png" +dest_files=["res://.godot/imported/arrow_se.png-1039f2195e10040c4685d9c17feef67d.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/cursors/arrow_sw.png b/resources/cursors/arrow_sw.png new file mode 100644 index 0000000..306381f Binary files /dev/null and b/resources/cursors/arrow_sw.png differ diff --git a/resources/cursors/arrow_sw.png.import b/resources/cursors/arrow_sw.png.import new file mode 100644 index 0000000..52f9dd6 --- /dev/null +++ b/resources/cursors/arrow_sw.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bx4w2polamajx" +path="res://.godot/imported/arrow_sw.png-a1c39c74ea5ba886f65393b9116bf124.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/cursors/arrow_sw.png" +dest_files=["res://.godot/imported/arrow_sw.png-a1c39c74ea5ba886f65393b9116bf124.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/cursors/arrow_w.png b/resources/cursors/arrow_w.png new file mode 100644 index 0000000..2a43903 Binary files /dev/null and b/resources/cursors/arrow_w.png differ diff --git a/resources/cursors/arrow_w.png.import b/resources/cursors/arrow_w.png.import new file mode 100644 index 0000000..20c8c25 --- /dev/null +++ b/resources/cursors/arrow_w.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bpi0rv1uxno7y" +path="res://.godot/imported/arrow_w.png-7b56f9e9f96eb58f8919921a38416da8.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/cursors/arrow_w.png" +dest_files=["res://.godot/imported/arrow_w.png-7b56f9e9f96eb58f8919921a38416da8.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/cursors/bracket_a_horizontal.png b/resources/cursors/bracket_a_horizontal.png new file mode 100644 index 0000000..371f262 Binary files /dev/null and b/resources/cursors/bracket_a_horizontal.png differ diff --git a/resources/cursors/bracket_a_horizontal.png.import b/resources/cursors/bracket_a_horizontal.png.import new file mode 100644 index 0000000..43186c0 --- /dev/null +++ b/resources/cursors/bracket_a_horizontal.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://vda0xt2gxpkb" +path="res://.godot/imported/bracket_a_horizontal.png-d224bf4cf52fe5b551a8ad950aa55b97.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/cursors/bracket_a_horizontal.png" +dest_files=["res://.godot/imported/bracket_a_horizontal.png-d224bf4cf52fe5b551a8ad950aa55b97.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/cursors/bracket_a_vertical.png b/resources/cursors/bracket_a_vertical.png new file mode 100644 index 0000000..0c3d72b Binary files /dev/null and b/resources/cursors/bracket_a_vertical.png differ diff --git a/resources/cursors/bracket_a_vertical.png.import b/resources/cursors/bracket_a_vertical.png.import new file mode 100644 index 0000000..08ec64f --- /dev/null +++ b/resources/cursors/bracket_a_vertical.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://npevc1mcu6lb" +path="res://.godot/imported/bracket_a_vertical.png-506648ad4e87f7e225b6360392276da6.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/cursors/bracket_a_vertical.png" +dest_files=["res://.godot/imported/bracket_a_vertical.png-506648ad4e87f7e225b6360392276da6.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/cursors/bracket_b_horizontal.png b/resources/cursors/bracket_b_horizontal.png new file mode 100644 index 0000000..926958d Binary files /dev/null and b/resources/cursors/bracket_b_horizontal.png differ diff --git a/resources/cursors/bracket_b_horizontal.png.import b/resources/cursors/bracket_b_horizontal.png.import new file mode 100644 index 0000000..bee083a --- /dev/null +++ b/resources/cursors/bracket_b_horizontal.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cd221xc8y7jod" +path="res://.godot/imported/bracket_b_horizontal.png-23cc7ecdb0b70ce4e9ec82ff70a793a3.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/cursors/bracket_b_horizontal.png" +dest_files=["res://.godot/imported/bracket_b_horizontal.png-23cc7ecdb0b70ce4e9ec82ff70a793a3.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/cursors/bracket_b_vertical.png b/resources/cursors/bracket_b_vertical.png new file mode 100644 index 0000000..ac8b7e4 Binary files /dev/null and b/resources/cursors/bracket_b_vertical.png differ diff --git a/resources/cursors/bracket_b_vertical.png.import b/resources/cursors/bracket_b_vertical.png.import new file mode 100644 index 0000000..b16af2c --- /dev/null +++ b/resources/cursors/bracket_b_vertical.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bdnx1k5tearss" +path="res://.godot/imported/bracket_b_vertical.png-8250a0d0cef4ac46a31bf5137e127921.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/cursors/bracket_b_vertical.png" +dest_files=["res://.godot/imported/bracket_b_vertical.png-8250a0d0cef4ac46a31bf5137e127921.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/cursors/busy_circle.png b/resources/cursors/busy_circle.png new file mode 100644 index 0000000..d6deb44 Binary files /dev/null and b/resources/cursors/busy_circle.png differ diff --git a/resources/cursors/busy_circle.png.import b/resources/cursors/busy_circle.png.import new file mode 100644 index 0000000..4bc1db5 --- /dev/null +++ b/resources/cursors/busy_circle.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b5vgt4anlqie6" +path="res://.godot/imported/busy_circle.png-5d969602b11ea146b23e5683ee2cff46.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/cursors/busy_circle.png" +dest_files=["res://.godot/imported/busy_circle.png-5d969602b11ea146b23e5683ee2cff46.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/cursors/busy_circle_fade.png b/resources/cursors/busy_circle_fade.png new file mode 100644 index 0000000..43ead5e Binary files /dev/null and b/resources/cursors/busy_circle_fade.png differ diff --git a/resources/cursors/busy_circle_fade.png.import b/resources/cursors/busy_circle_fade.png.import new file mode 100644 index 0000000..7c5d149 --- /dev/null +++ b/resources/cursors/busy_circle_fade.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://sd1prgqhdyrm" +path="res://.godot/imported/busy_circle_fade.png-76b3abd9dc11ab2a26db3f0e77faa056.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/cursors/busy_circle_fade.png" +dest_files=["res://.godot/imported/busy_circle_fade.png-76b3abd9dc11ab2a26db3f0e77faa056.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/cursors/busy_hourglass.png b/resources/cursors/busy_hourglass.png new file mode 100644 index 0000000..f00f16a Binary files /dev/null and b/resources/cursors/busy_hourglass.png differ diff --git a/resources/cursors/busy_hourglass.png.import b/resources/cursors/busy_hourglass.png.import new file mode 100644 index 0000000..9546a8c --- /dev/null +++ b/resources/cursors/busy_hourglass.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://csrk7g7kw20l0" +path="res://.godot/imported/busy_hourglass.png-78c3a372600a212efdd05650dd79ae34.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/cursors/busy_hourglass.png" +dest_files=["res://.godot/imported/busy_hourglass.png-78c3a372600a212efdd05650dd79ae34.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/cursors/busy_hourglass_outline.png b/resources/cursors/busy_hourglass_outline.png new file mode 100644 index 0000000..b7d8497 Binary files /dev/null and b/resources/cursors/busy_hourglass_outline.png differ diff --git a/resources/cursors/busy_hourglass_outline.png.import b/resources/cursors/busy_hourglass_outline.png.import new file mode 100644 index 0000000..de56142 --- /dev/null +++ b/resources/cursors/busy_hourglass_outline.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dup5wsusvbm15" +path="res://.godot/imported/busy_hourglass_outline.png-0a08feb4d3abaebca3203b4c672c13bb.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/cursors/busy_hourglass_outline.png" +dest_files=["res://.godot/imported/busy_hourglass_outline.png-0a08feb4d3abaebca3203b4c672c13bb.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/cursors/busy_hourglass_outline_detail.png b/resources/cursors/busy_hourglass_outline_detail.png new file mode 100644 index 0000000..eb5c172 Binary files /dev/null and b/resources/cursors/busy_hourglass_outline_detail.png differ diff --git a/resources/cursors/busy_hourglass_outline_detail.png.import b/resources/cursors/busy_hourglass_outline_detail.png.import new file mode 100644 index 0000000..3445f9f --- /dev/null +++ b/resources/cursors/busy_hourglass_outline_detail.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dctt6df2vsxai" +path="res://.godot/imported/busy_hourglass_outline_detail.png-9dc2a8e6cd65ae1dd6b2229fa8bf173a.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/cursors/busy_hourglass_outline_detail.png" +dest_files=["res://.godot/imported/busy_hourglass_outline_detail.png-9dc2a8e6cd65ae1dd6b2229fa8bf173a.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/cursors/cross_large.png b/resources/cursors/cross_large.png new file mode 100644 index 0000000..72b014a Binary files /dev/null and b/resources/cursors/cross_large.png differ diff --git a/resources/cursors/cross_large.png.import b/resources/cursors/cross_large.png.import new file mode 100644 index 0000000..6f9734e --- /dev/null +++ b/resources/cursors/cross_large.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bvs8f2rtqch6" +path="res://.godot/imported/cross_large.png-807d4f14cdda2faa5fe727c784f24a2c.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/cursors/cross_large.png" +dest_files=["res://.godot/imported/cross_large.png-807d4f14cdda2faa5fe727c784f24a2c.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/cursors/cross_small.png b/resources/cursors/cross_small.png new file mode 100644 index 0000000..d92384a Binary files /dev/null and b/resources/cursors/cross_small.png differ diff --git a/resources/cursors/cross_small.png.import b/resources/cursors/cross_small.png.import new file mode 100644 index 0000000..ed7cf71 --- /dev/null +++ b/resources/cursors/cross_small.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://3ahfrgj14d68" +path="res://.godot/imported/cross_small.png-7244a69508933f28a0a7dc7b22e6dece.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/cursors/cross_small.png" +dest_files=["res://.godot/imported/cross_small.png-7244a69508933f28a0a7dc7b22e6dece.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/cursors/disabled.png b/resources/cursors/disabled.png new file mode 100644 index 0000000..397e9f2 Binary files /dev/null and b/resources/cursors/disabled.png differ diff --git a/resources/cursors/disabled.png.import b/resources/cursors/disabled.png.import new file mode 100644 index 0000000..8a313b3 --- /dev/null +++ b/resources/cursors/disabled.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://c80xh7jqpc56m" +path="res://.godot/imported/disabled.png-5a8a9b3118194bdace5d2e2b3bb08c8e.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/cursors/disabled.png" +dest_files=["res://.godot/imported/disabled.png-5a8a9b3118194bdace5d2e2b3bb08c8e.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/cursors/door.png b/resources/cursors/door.png new file mode 100644 index 0000000..d6d1bf8 Binary files /dev/null and b/resources/cursors/door.png differ diff --git a/resources/cursors/door.png.import b/resources/cursors/door.png.import new file mode 100644 index 0000000..a9f539c --- /dev/null +++ b/resources/cursors/door.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dumn252cq13tq" +path="res://.godot/imported/door.png-0267ae5bc8abfa2dcbba17dd1c74cfc6.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/cursors/door.png" +dest_files=["res://.godot/imported/door.png-0267ae5bc8abfa2dcbba17dd1c74cfc6.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/cursors/door_enter.png b/resources/cursors/door_enter.png new file mode 100644 index 0000000..2dbd2af Binary files /dev/null and b/resources/cursors/door_enter.png differ diff --git a/resources/cursors/door_enter.png.import b/resources/cursors/door_enter.png.import new file mode 100644 index 0000000..1d8a3b1 --- /dev/null +++ b/resources/cursors/door_enter.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dadowcnbi6x5b" +path="res://.godot/imported/door_enter.png-f88eed188cba5cbb9573954fab6e65b2.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/cursors/door_enter.png" +dest_files=["res://.godot/imported/door_enter.png-f88eed188cba5cbb9573954fab6e65b2.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/cursors/door_exit.png b/resources/cursors/door_exit.png new file mode 100644 index 0000000..dcaaf2a Binary files /dev/null and b/resources/cursors/door_exit.png differ diff --git a/resources/cursors/door_exit.png.import b/resources/cursors/door_exit.png.import new file mode 100644 index 0000000..77e2da2 --- /dev/null +++ b/resources/cursors/door_exit.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b54ate6oms65i" +path="res://.godot/imported/door_exit.png-cca609f2517aa4129756eaf6da1bab1b.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/cursors/door_exit.png" +dest_files=["res://.godot/imported/door_exit.png-cca609f2517aa4129756eaf6da1bab1b.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/cursors/hand_closed.png b/resources/cursors/hand_closed.png new file mode 100644 index 0000000..c5d066e Binary files /dev/null and b/resources/cursors/hand_closed.png differ diff --git a/resources/cursors/hand_closed.png.import b/resources/cursors/hand_closed.png.import new file mode 100644 index 0000000..d3a8570 --- /dev/null +++ b/resources/cursors/hand_closed.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dg4f8fcmfmhoo" +path="res://.godot/imported/hand_closed.png-e4129fc3684b9f3ea2610f80d0883029.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/cursors/hand_closed.png" +dest_files=["res://.godot/imported/hand_closed.png-e4129fc3684b9f3ea2610f80d0883029.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/cursors/hand_open.png b/resources/cursors/hand_open.png new file mode 100644 index 0000000..5d7a4b1 Binary files /dev/null and b/resources/cursors/hand_open.png differ diff --git a/resources/cursors/hand_open.png.import b/resources/cursors/hand_open.png.import new file mode 100644 index 0000000..505fed3 --- /dev/null +++ b/resources/cursors/hand_open.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bdhh5q4pdfh5c" +path="res://.godot/imported/hand_open.png-d31585c9931285e2132fc441a4081983.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/cursors/hand_open.png" +dest_files=["res://.godot/imported/hand_open.png-d31585c9931285e2132fc441a4081983.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/cursors/hand_point.png b/resources/cursors/hand_point.png new file mode 100644 index 0000000..1ce04ef Binary files /dev/null and b/resources/cursors/hand_point.png differ diff --git a/resources/cursors/hand_point.png.import b/resources/cursors/hand_point.png.import new file mode 100644 index 0000000..45aae12 --- /dev/null +++ b/resources/cursors/hand_point.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://3kqu3l0spiv1" +path="res://.godot/imported/hand_point.png-7b3f0bbd617fa41dbc116de59f1aa3a7.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/cursors/hand_point.png" +dest_files=["res://.godot/imported/hand_point.png-7b3f0bbd617fa41dbc116de59f1aa3a7.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/cursors/hand_small_closed.png b/resources/cursors/hand_small_closed.png new file mode 100644 index 0000000..f2ad12f Binary files /dev/null and b/resources/cursors/hand_small_closed.png differ diff --git a/resources/cursors/hand_small_closed.png.import b/resources/cursors/hand_small_closed.png.import new file mode 100644 index 0000000..5d32558 --- /dev/null +++ b/resources/cursors/hand_small_closed.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bqimsdp7plsi" +path="res://.godot/imported/hand_small_closed.png-310168820429ab6fe8303b44617d21c1.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/cursors/hand_small_closed.png" +dest_files=["res://.godot/imported/hand_small_closed.png-310168820429ab6fe8303b44617d21c1.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/cursors/hand_small_open.png b/resources/cursors/hand_small_open.png new file mode 100644 index 0000000..bfaa0c8 Binary files /dev/null and b/resources/cursors/hand_small_open.png differ diff --git a/resources/cursors/hand_small_open.png.import b/resources/cursors/hand_small_open.png.import new file mode 100644 index 0000000..e341e58 --- /dev/null +++ b/resources/cursors/hand_small_open.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bafucxbi4vq4j" +path="res://.godot/imported/hand_small_open.png-d2ec04f54faca278b0e1ea5a7c44f203.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/cursors/hand_small_open.png" +dest_files=["res://.godot/imported/hand_small_open.png-d2ec04f54faca278b0e1ea5a7c44f203.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/cursors/hand_small_point.png b/resources/cursors/hand_small_point.png new file mode 100644 index 0000000..7b493a9 Binary files /dev/null and b/resources/cursors/hand_small_point.png differ diff --git a/resources/cursors/hand_small_point.png.import b/resources/cursors/hand_small_point.png.import new file mode 100644 index 0000000..05a87b0 --- /dev/null +++ b/resources/cursors/hand_small_point.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cdi7do2amhiaj" +path="res://.godot/imported/hand_small_point.png-e38e5a90d242197727e89d56c197359d.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/cursors/hand_small_point.png" +dest_files=["res://.godot/imported/hand_small_point.png-e38e5a90d242197727e89d56c197359d.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/cursors/hand_thin_closed.png b/resources/cursors/hand_thin_closed.png new file mode 100644 index 0000000..52f25f0 Binary files /dev/null and b/resources/cursors/hand_thin_closed.png differ diff --git a/resources/cursors/hand_thin_closed.png.import b/resources/cursors/hand_thin_closed.png.import new file mode 100644 index 0000000..03b0b36 --- /dev/null +++ b/resources/cursors/hand_thin_closed.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dl0w5avsvknjo" +path="res://.godot/imported/hand_thin_closed.png-3c7e1e542389264d2492b7badc870f26.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/cursors/hand_thin_closed.png" +dest_files=["res://.godot/imported/hand_thin_closed.png-3c7e1e542389264d2492b7badc870f26.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/cursors/hand_thin_open.png b/resources/cursors/hand_thin_open.png new file mode 100644 index 0000000..f80d996 Binary files /dev/null and b/resources/cursors/hand_thin_open.png differ diff --git a/resources/cursors/hand_thin_open.png.import b/resources/cursors/hand_thin_open.png.import new file mode 100644 index 0000000..00b351a --- /dev/null +++ b/resources/cursors/hand_thin_open.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b024qrwjhstrj" +path="res://.godot/imported/hand_thin_open.png-11f769edef40355a29acfbf87326e566.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/cursors/hand_thin_open.png" +dest_files=["res://.godot/imported/hand_thin_open.png-11f769edef40355a29acfbf87326e566.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/cursors/hand_thin_point.png b/resources/cursors/hand_thin_point.png new file mode 100644 index 0000000..98866ec Binary files /dev/null and b/resources/cursors/hand_thin_point.png differ diff --git a/resources/cursors/hand_thin_point.png.import b/resources/cursors/hand_thin_point.png.import new file mode 100644 index 0000000..3ff2815 --- /dev/null +++ b/resources/cursors/hand_thin_point.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://ga3y017bjd60" +path="res://.godot/imported/hand_thin_point.png-1fc42597589487fde7ed20e6ee5ee558.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/cursors/hand_thin_point.png" +dest_files=["res://.godot/imported/hand_thin_point.png-1fc42597589487fde7ed20e6ee5ee558.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/cursors/hand_thin_small_closed.png b/resources/cursors/hand_thin_small_closed.png new file mode 100644 index 0000000..231d724 Binary files /dev/null and b/resources/cursors/hand_thin_small_closed.png differ diff --git a/resources/cursors/hand_thin_small_closed.png.import b/resources/cursors/hand_thin_small_closed.png.import new file mode 100644 index 0000000..4a01dce --- /dev/null +++ b/resources/cursors/hand_thin_small_closed.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bsu0pygek6g6n" +path="res://.godot/imported/hand_thin_small_closed.png-48a773b8bf955a4663a3a8d5b67f6758.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/cursors/hand_thin_small_closed.png" +dest_files=["res://.godot/imported/hand_thin_small_closed.png-48a773b8bf955a4663a3a8d5b67f6758.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/cursors/hand_thin_small_open.png b/resources/cursors/hand_thin_small_open.png new file mode 100644 index 0000000..c888582 Binary files /dev/null and b/resources/cursors/hand_thin_small_open.png differ diff --git a/resources/cursors/hand_thin_small_open.png.import b/resources/cursors/hand_thin_small_open.png.import new file mode 100644 index 0000000..945d635 --- /dev/null +++ b/resources/cursors/hand_thin_small_open.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dspe2ylagu1ku" +path="res://.godot/imported/hand_thin_small_open.png-4ddd66378f062ffe7ca1b2d4d7e6bb15.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/cursors/hand_thin_small_open.png" +dest_files=["res://.godot/imported/hand_thin_small_open.png-4ddd66378f062ffe7ca1b2d4d7e6bb15.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/cursors/hand_thin_small_point.png b/resources/cursors/hand_thin_small_point.png new file mode 100644 index 0000000..d70e5a5 Binary files /dev/null and b/resources/cursors/hand_thin_small_point.png differ diff --git a/resources/cursors/hand_thin_small_point.png.import b/resources/cursors/hand_thin_small_point.png.import new file mode 100644 index 0000000..7e0949b --- /dev/null +++ b/resources/cursors/hand_thin_small_point.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://besnmg6ibkp4" +path="res://.godot/imported/hand_thin_small_point.png-97c9422457a6ed3439a844e1d0532c7d.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/cursors/hand_thin_small_point.png" +dest_files=["res://.godot/imported/hand_thin_small_point.png-97c9422457a6ed3439a844e1d0532c7d.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/cursors/launch_drone.png b/resources/cursors/launch_drone.png new file mode 100644 index 0000000..27b681b Binary files /dev/null and b/resources/cursors/launch_drone.png differ diff --git a/resources/cursors/launch_drone.png.import b/resources/cursors/launch_drone.png.import new file mode 100644 index 0000000..f451bf9 --- /dev/null +++ b/resources/cursors/launch_drone.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bdvbld0afmw6v" +path="res://.godot/imported/launch_drone.png-aa2945541cae29c2447f4294f2ec091e.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/cursors/launch_drone.png" +dest_files=["res://.godot/imported/launch_drone.png-aa2945541cae29c2447f4294f2ec091e.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/cursors/line_cross.png b/resources/cursors/line_cross.png new file mode 100644 index 0000000..be2aaeb Binary files /dev/null and b/resources/cursors/line_cross.png differ diff --git a/resources/cursors/line_cross.png.import b/resources/cursors/line_cross.png.import new file mode 100644 index 0000000..39a3d98 --- /dev/null +++ b/resources/cursors/line_cross.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://clj6oyxs7jomg" +path="res://.godot/imported/line_cross.png-19d4b3ca23233ae613f2789576810375.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/cursors/line_cross.png" +dest_files=["res://.godot/imported/line_cross.png-19d4b3ca23233ae613f2789576810375.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/cursors/line_horizontal.png b/resources/cursors/line_horizontal.png new file mode 100644 index 0000000..f988f5c Binary files /dev/null and b/resources/cursors/line_horizontal.png differ diff --git a/resources/cursors/line_horizontal.png.import b/resources/cursors/line_horizontal.png.import new file mode 100644 index 0000000..28af651 --- /dev/null +++ b/resources/cursors/line_horizontal.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dukohfs3noop0" +path="res://.godot/imported/line_horizontal.png-821807d8779517aa04e50fa231dc89ab.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/cursors/line_horizontal.png" +dest_files=["res://.godot/imported/line_horizontal.png-821807d8779517aa04e50fa231dc89ab.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/cursors/line_vertical.png b/resources/cursors/line_vertical.png new file mode 100644 index 0000000..88d13fc Binary files /dev/null and b/resources/cursors/line_vertical.png differ diff --git a/resources/cursors/line_vertical.png.import b/resources/cursors/line_vertical.png.import new file mode 100644 index 0000000..dc70e72 --- /dev/null +++ b/resources/cursors/line_vertical.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dd3nh8cutcojg" +path="res://.godot/imported/line_vertical.png-71d8a68beef9ca298f62355614bfa165.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/cursors/line_vertical.png" +dest_files=["res://.godot/imported/line_vertical.png-71d8a68beef9ca298f62355614bfa165.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/cursors/look_a.png b/resources/cursors/look_a.png new file mode 100644 index 0000000..57e0d20 Binary files /dev/null and b/resources/cursors/look_a.png differ diff --git a/resources/cursors/look_a.png.import b/resources/cursors/look_a.png.import new file mode 100644 index 0000000..a238779 --- /dev/null +++ b/resources/cursors/look_a.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://c72ci4wfd81my" +path="res://.godot/imported/look_a.png-fd0540e0fd8bca6128a51dfed0175ce9.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/cursors/look_a.png" +dest_files=["res://.godot/imported/look_a.png-fd0540e0fd8bca6128a51dfed0175ce9.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/cursors/look_b.png b/resources/cursors/look_b.png new file mode 100644 index 0000000..5941ef3 Binary files /dev/null and b/resources/cursors/look_b.png differ diff --git a/resources/cursors/look_b.png.import b/resources/cursors/look_b.png.import new file mode 100644 index 0000000..19ebbc4 --- /dev/null +++ b/resources/cursors/look_b.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dkv2suhmfyao3" +path="res://.godot/imported/look_b.png-4bc819819da2b42c8210474fbf388f2d.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/cursors/look_b.png" +dest_files=["res://.godot/imported/look_b.png-4bc819819da2b42c8210474fbf388f2d.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/cursors/look_c.png b/resources/cursors/look_c.png new file mode 100644 index 0000000..5babd16 Binary files /dev/null and b/resources/cursors/look_c.png differ diff --git a/resources/cursors/look_c.png.import b/resources/cursors/look_c.png.import new file mode 100644 index 0000000..7b8dcda --- /dev/null +++ b/resources/cursors/look_c.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://ccsawp3uc2gdw" +path="res://.godot/imported/look_c.png-ffd87b26213eebc01aa9505bb4d2eac1.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/cursors/look_c.png" +dest_files=["res://.godot/imported/look_c.png-ffd87b26213eebc01aa9505bb4d2eac1.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/cursors/look_d.png b/resources/cursors/look_d.png new file mode 100644 index 0000000..348a981 Binary files /dev/null and b/resources/cursors/look_d.png differ diff --git a/resources/cursors/look_d.png.import b/resources/cursors/look_d.png.import new file mode 100644 index 0000000..0e1415b --- /dev/null +++ b/resources/cursors/look_d.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b8qopmualoa4f" +path="res://.godot/imported/look_d.png-61361848620ad7536fea335354f32613.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/cursors/look_d.png" +dest_files=["res://.godot/imported/look_d.png-61361848620ad7536fea335354f32613.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/cursors/message_dots_round.png b/resources/cursors/message_dots_round.png new file mode 100644 index 0000000..29cdf34 Binary files /dev/null and b/resources/cursors/message_dots_round.png differ diff --git a/resources/cursors/message_dots_round.png.import b/resources/cursors/message_dots_round.png.import new file mode 100644 index 0000000..46299f4 --- /dev/null +++ b/resources/cursors/message_dots_round.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bec8eetq0wfv4" +path="res://.godot/imported/message_dots_round.png-7d1963ede7c8e7adb29d0ddfce935e9c.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/cursors/message_dots_round.png" +dest_files=["res://.godot/imported/message_dots_round.png-7d1963ede7c8e7adb29d0ddfce935e9c.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/cursors/message_dots_square.png b/resources/cursors/message_dots_square.png new file mode 100644 index 0000000..d2967cf Binary files /dev/null and b/resources/cursors/message_dots_square.png differ diff --git a/resources/cursors/message_dots_square.png.import b/resources/cursors/message_dots_square.png.import new file mode 100644 index 0000000..85901a5 --- /dev/null +++ b/resources/cursors/message_dots_square.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dhot8guu0gq58" +path="res://.godot/imported/message_dots_square.png-f79e7777daa70c863f63d796f44b07eb.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/cursors/message_dots_square.png" +dest_files=["res://.godot/imported/message_dots_square.png-f79e7777daa70c863f63d796f44b07eb.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/cursors/message_round.png b/resources/cursors/message_round.png new file mode 100644 index 0000000..d71b99e Binary files /dev/null and b/resources/cursors/message_round.png differ diff --git a/resources/cursors/message_round.png.import b/resources/cursors/message_round.png.import new file mode 100644 index 0000000..589f19d --- /dev/null +++ b/resources/cursors/message_round.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://nw345li176lq" +path="res://.godot/imported/message_round.png-803e5980db5f7e413f36dbfcf6106d5f.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/cursors/message_round.png" +dest_files=["res://.godot/imported/message_round.png-803e5980db5f7e413f36dbfcf6106d5f.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/cursors/message_square.png b/resources/cursors/message_square.png new file mode 100644 index 0000000..04f07b3 Binary files /dev/null and b/resources/cursors/message_square.png differ diff --git a/resources/cursors/message_square.png.import b/resources/cursors/message_square.png.import new file mode 100644 index 0000000..387c228 --- /dev/null +++ b/resources/cursors/message_square.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b1d67yt25pe5c" +path="res://.godot/imported/message_square.png-d2f74a65def27fefbe019fff0eabbccb.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/cursors/message_square.png" +dest_files=["res://.godot/imported/message_square.png-d2f74a65def27fefbe019fff0eabbccb.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/cursors/navigation_e.png b/resources/cursors/navigation_e.png new file mode 100644 index 0000000..c1f8e12 Binary files /dev/null and b/resources/cursors/navigation_e.png differ diff --git a/resources/cursors/navigation_e.png.import b/resources/cursors/navigation_e.png.import new file mode 100644 index 0000000..3003676 --- /dev/null +++ b/resources/cursors/navigation_e.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://ckqqbmr3p2nv2" +path="res://.godot/imported/navigation_e.png-61d9dc71300e59fc4935c2b64122b078.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/cursors/navigation_e.png" +dest_files=["res://.godot/imported/navigation_e.png-61d9dc71300e59fc4935c2b64122b078.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/cursors/navigation_n.png b/resources/cursors/navigation_n.png new file mode 100644 index 0000000..0f4cb04 Binary files /dev/null and b/resources/cursors/navigation_n.png differ diff --git a/resources/cursors/navigation_n.png.import b/resources/cursors/navigation_n.png.import new file mode 100644 index 0000000..d2de18b --- /dev/null +++ b/resources/cursors/navigation_n.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dsve40hlm3x12" +path="res://.godot/imported/navigation_n.png-58886acbc694b67aaa393f9ee236578f.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/cursors/navigation_n.png" +dest_files=["res://.godot/imported/navigation_n.png-58886acbc694b67aaa393f9ee236578f.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/cursors/navigation_s.png b/resources/cursors/navigation_s.png new file mode 100644 index 0000000..8d5a0b4 Binary files /dev/null and b/resources/cursors/navigation_s.png differ diff --git a/resources/cursors/navigation_s.png.import b/resources/cursors/navigation_s.png.import new file mode 100644 index 0000000..5d5ae56 --- /dev/null +++ b/resources/cursors/navigation_s.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://c3tl5pihlrd8u" +path="res://.godot/imported/navigation_s.png-a198cf154a076421e9baeb0c454021a6.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/cursors/navigation_s.png" +dest_files=["res://.godot/imported/navigation_s.png-a198cf154a076421e9baeb0c454021a6.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/cursors/navigation_w.png b/resources/cursors/navigation_w.png new file mode 100644 index 0000000..7c9f06b Binary files /dev/null and b/resources/cursors/navigation_w.png differ diff --git a/resources/cursors/navigation_w.png.import b/resources/cursors/navigation_w.png.import new file mode 100644 index 0000000..7c10d69 --- /dev/null +++ b/resources/cursors/navigation_w.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bnuqgilc7hyro" +path="res://.godot/imported/navigation_w.png-fc422fc525fe62e1a4bd0a53b2a952f9.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/cursors/navigation_w.png" +dest_files=["res://.godot/imported/navigation_w.png-fc422fc525fe62e1a4bd0a53b2a952f9.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/cursors/pointer_a.png b/resources/cursors/pointer_a.png new file mode 100644 index 0000000..827b869 Binary files /dev/null and b/resources/cursors/pointer_a.png differ diff --git a/resources/cursors/pointer_a.png.import b/resources/cursors/pointer_a.png.import new file mode 100644 index 0000000..03c0031 --- /dev/null +++ b/resources/cursors/pointer_a.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://vtn2cjdfuaxw" +path="res://.godot/imported/pointer_a.png-784f281fc97940767aad226930866d42.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/cursors/pointer_a.png" +dest_files=["res://.godot/imported/pointer_a.png-784f281fc97940767aad226930866d42.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/cursors/pointer_b.png b/resources/cursors/pointer_b.png new file mode 100644 index 0000000..98184ee Binary files /dev/null and b/resources/cursors/pointer_b.png differ diff --git a/resources/cursors/pointer_b.png.import b/resources/cursors/pointer_b.png.import new file mode 100644 index 0000000..a2f44e2 --- /dev/null +++ b/resources/cursors/pointer_b.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://drdhjjmahuftu" +path="res://.godot/imported/pointer_b.png-d6bc76dd4fd3af6e641060e4d7d6ae7c.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/cursors/pointer_b.png" +dest_files=["res://.godot/imported/pointer_b.png-d6bc76dd4fd3af6e641060e4d7d6ae7c.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/cursors/pointer_c.png b/resources/cursors/pointer_c.png new file mode 100644 index 0000000..aee5205 Binary files /dev/null and b/resources/cursors/pointer_c.png differ diff --git a/resources/cursors/pointer_c.png.import b/resources/cursors/pointer_c.png.import new file mode 100644 index 0000000..b16f3a6 --- /dev/null +++ b/resources/cursors/pointer_c.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cpkxqrfnrlo0p" +path="res://.godot/imported/pointer_c.png-897f0cebb2833c2179de5c334c5f515e.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/cursors/pointer_c.png" +dest_files=["res://.godot/imported/pointer_c.png-897f0cebb2833c2179de5c334c5f515e.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/cursors/pointer_d.png b/resources/cursors/pointer_d.png new file mode 100644 index 0000000..9c89110 Binary files /dev/null and b/resources/cursors/pointer_d.png differ diff --git a/resources/cursors/pointer_d.png.import b/resources/cursors/pointer_d.png.import new file mode 100644 index 0000000..735f72d --- /dev/null +++ b/resources/cursors/pointer_d.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://1kjsxw2taisi" +path="res://.godot/imported/pointer_d.png-53eb0181b2922039f5de46baa59c5c8b.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/cursors/pointer_d.png" +dest_files=["res://.godot/imported/pointer_d.png-53eb0181b2922039f5de46baa59c5c8b.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/cursors/pointer_e.png b/resources/cursors/pointer_e.png new file mode 100644 index 0000000..7d3bbd9 Binary files /dev/null and b/resources/cursors/pointer_e.png differ diff --git a/resources/cursors/pointer_e.png.import b/resources/cursors/pointer_e.png.import new file mode 100644 index 0000000..04f54e5 --- /dev/null +++ b/resources/cursors/pointer_e.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://e30uen7rjsbb" +path="res://.godot/imported/pointer_e.png-f73987a80dc17519babe3b7bde459faa.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/cursors/pointer_e.png" +dest_files=["res://.godot/imported/pointer_e.png-f73987a80dc17519babe3b7bde459faa.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/cursors/pointer_f.png b/resources/cursors/pointer_f.png new file mode 100644 index 0000000..13831ee Binary files /dev/null and b/resources/cursors/pointer_f.png differ diff --git a/resources/cursors/pointer_f.png.import b/resources/cursors/pointer_f.png.import new file mode 100644 index 0000000..9dc7c1a --- /dev/null +++ b/resources/cursors/pointer_f.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dcns2igacooea" +path="res://.godot/imported/pointer_f.png-4b0fba5fc243cd92cf14044f6e25b5b1.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/cursors/pointer_f.png" +dest_files=["res://.godot/imported/pointer_f.png-4b0fba5fc243cd92cf14044f6e25b5b1.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/cursors/pointer_g.png b/resources/cursors/pointer_g.png new file mode 100644 index 0000000..09a492c Binary files /dev/null and b/resources/cursors/pointer_g.png differ diff --git a/resources/cursors/pointer_g.png.import b/resources/cursors/pointer_g.png.import new file mode 100644 index 0000000..7bdd52f --- /dev/null +++ b/resources/cursors/pointer_g.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b0jdx4o4u8gsw" +path="res://.godot/imported/pointer_g.png-94bfa3e5e58b6a95eb3ff0626619b90f.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/cursors/pointer_g.png" +dest_files=["res://.godot/imported/pointer_g.png-94bfa3e5e58b6a95eb3ff0626619b90f.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/cursors/pointer_h.png b/resources/cursors/pointer_h.png new file mode 100644 index 0000000..c036297 Binary files /dev/null and b/resources/cursors/pointer_h.png differ diff --git a/resources/cursors/pointer_h.png.import b/resources/cursors/pointer_h.png.import new file mode 100644 index 0000000..29b4b26 --- /dev/null +++ b/resources/cursors/pointer_h.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://do2tjj8xmeauq" +path="res://.godot/imported/pointer_h.png-9cfe3208bbf7c4360a2541d906e00d45.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/cursors/pointer_h.png" +dest_files=["res://.godot/imported/pointer_h.png-9cfe3208bbf7c4360a2541d906e00d45.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/cursors/pointer_i.png b/resources/cursors/pointer_i.png new file mode 100644 index 0000000..2d29f2c Binary files /dev/null and b/resources/cursors/pointer_i.png differ diff --git a/resources/cursors/pointer_i.png.import b/resources/cursors/pointer_i.png.import new file mode 100644 index 0000000..f693bba --- /dev/null +++ b/resources/cursors/pointer_i.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://burygc1xeofwv" +path="res://.godot/imported/pointer_i.png-6869b0c9eb1a90bf0b171d9823d6b057.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/cursors/pointer_i.png" +dest_files=["res://.godot/imported/pointer_i.png-6869b0c9eb1a90bf0b171d9823d6b057.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/cursors/pointer_j.png b/resources/cursors/pointer_j.png new file mode 100644 index 0000000..a280dbb Binary files /dev/null and b/resources/cursors/pointer_j.png differ diff --git a/resources/cursors/pointer_j.png.import b/resources/cursors/pointer_j.png.import new file mode 100644 index 0000000..d55f570 --- /dev/null +++ b/resources/cursors/pointer_j.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://o7byb53yvegr" +path="res://.godot/imported/pointer_j.png-2c6e512ecec0dd791331584a828cc9b2.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/cursors/pointer_j.png" +dest_files=["res://.godot/imported/pointer_j.png-2c6e512ecec0dd791331584a828cc9b2.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/cursors/pointer_k.png b/resources/cursors/pointer_k.png new file mode 100644 index 0000000..26a4240 Binary files /dev/null and b/resources/cursors/pointer_k.png differ diff --git a/resources/cursors/pointer_k.png.import b/resources/cursors/pointer_k.png.import new file mode 100644 index 0000000..e9a11d0 --- /dev/null +++ b/resources/cursors/pointer_k.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://ea1s3d4excy6" +path="res://.godot/imported/pointer_k.png-5281cf8e60637221ee75b311de5a7c4a.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/cursors/pointer_k.png" +dest_files=["res://.godot/imported/pointer_k.png-5281cf8e60637221ee75b311de5a7c4a.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/cursors/pointer_l.png b/resources/cursors/pointer_l.png new file mode 100644 index 0000000..5b1f00f Binary files /dev/null and b/resources/cursors/pointer_l.png differ diff --git a/resources/cursors/pointer_l.png.import b/resources/cursors/pointer_l.png.import new file mode 100644 index 0000000..ad0e207 --- /dev/null +++ b/resources/cursors/pointer_l.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://c6onkskpy07e4" +path="res://.godot/imported/pointer_l.png-65d4cc808551ddc305598f1bf8dd4bd8.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/cursors/pointer_l.png" +dest_files=["res://.godot/imported/pointer_l.png-65d4cc808551ddc305598f1bf8dd4bd8.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/cursors/pointer_scifi_a.png b/resources/cursors/pointer_scifi_a.png new file mode 100644 index 0000000..5c649cb Binary files /dev/null and b/resources/cursors/pointer_scifi_a.png differ diff --git a/resources/cursors/pointer_scifi_a.png.import b/resources/cursors/pointer_scifi_a.png.import new file mode 100644 index 0000000..08b6c31 --- /dev/null +++ b/resources/cursors/pointer_scifi_a.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://ptbyjkqid2pn" +path="res://.godot/imported/pointer_scifi_a.png-fa40a352130e600ea03d6273b02dbda7.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/cursors/pointer_scifi_a.png" +dest_files=["res://.godot/imported/pointer_scifi_a.png-fa40a352130e600ea03d6273b02dbda7.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/cursors/pointer_scifi_b.png b/resources/cursors/pointer_scifi_b.png new file mode 100644 index 0000000..5011064 Binary files /dev/null and b/resources/cursors/pointer_scifi_b.png differ diff --git a/resources/cursors/pointer_scifi_b.png.import b/resources/cursors/pointer_scifi_b.png.import new file mode 100644 index 0000000..104bdeb --- /dev/null +++ b/resources/cursors/pointer_scifi_b.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cffpvdmpnf4j2" +path="res://.godot/imported/pointer_scifi_b.png-a143a84bfa29a54236314bc37a9842d5.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/cursors/pointer_scifi_b.png" +dest_files=["res://.godot/imported/pointer_scifi_b.png-a143a84bfa29a54236314bc37a9842d5.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/cursors/pointer_toon_a.png b/resources/cursors/pointer_toon_a.png new file mode 100644 index 0000000..a405496 Binary files /dev/null and b/resources/cursors/pointer_toon_a.png differ diff --git a/resources/cursors/pointer_toon_a.png.import b/resources/cursors/pointer_toon_a.png.import new file mode 100644 index 0000000..cde5358 --- /dev/null +++ b/resources/cursors/pointer_toon_a.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://den8mf4sv7ns4" +path="res://.godot/imported/pointer_toon_a.png-a34b43e916e0791063dce99ada5136fe.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/cursors/pointer_toon_a.png" +dest_files=["res://.godot/imported/pointer_toon_a.png-a34b43e916e0791063dce99ada5136fe.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/cursors/pointer_toon_b.png b/resources/cursors/pointer_toon_b.png new file mode 100644 index 0000000..10ee98c Binary files /dev/null and b/resources/cursors/pointer_toon_b.png differ diff --git a/resources/cursors/pointer_toon_b.png.import b/resources/cursors/pointer_toon_b.png.import new file mode 100644 index 0000000..0e41f0b --- /dev/null +++ b/resources/cursors/pointer_toon_b.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://d130ciq48g54y" +path="res://.godot/imported/pointer_toon_b.png-7e47a0980a5650b0a71c54e0e7caeb00.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/cursors/pointer_toon_b.png" +dest_files=["res://.godot/imported/pointer_toon_b.png-7e47a0980a5650b0a71c54e0e7caeb00.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/cursors/resize_a_cross.png b/resources/cursors/resize_a_cross.png new file mode 100644 index 0000000..f1c694c Binary files /dev/null and b/resources/cursors/resize_a_cross.png differ diff --git a/resources/cursors/resize_a_cross.png.import b/resources/cursors/resize_a_cross.png.import new file mode 100644 index 0000000..f249865 --- /dev/null +++ b/resources/cursors/resize_a_cross.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://scgivn07wh5t" +path="res://.godot/imported/resize_a_cross.png-0f16bb5fec1e5d1e1bb104ab68211dcb.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/cursors/resize_a_cross.png" +dest_files=["res://.godot/imported/resize_a_cross.png-0f16bb5fec1e5d1e1bb104ab68211dcb.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/cursors/resize_a_cross_diagonal.png b/resources/cursors/resize_a_cross_diagonal.png new file mode 100644 index 0000000..c6e054a Binary files /dev/null and b/resources/cursors/resize_a_cross_diagonal.png differ diff --git a/resources/cursors/resize_a_cross_diagonal.png.import b/resources/cursors/resize_a_cross_diagonal.png.import new file mode 100644 index 0000000..138692e --- /dev/null +++ b/resources/cursors/resize_a_cross_diagonal.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://d4jhfe0oxsm3m" +path="res://.godot/imported/resize_a_cross_diagonal.png-13a11008d26ed9190faa663dffc26ad4.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/cursors/resize_a_cross_diagonal.png" +dest_files=["res://.godot/imported/resize_a_cross_diagonal.png-13a11008d26ed9190faa663dffc26ad4.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/cursors/resize_a_diagonal.png b/resources/cursors/resize_a_diagonal.png new file mode 100644 index 0000000..471c9ce Binary files /dev/null and b/resources/cursors/resize_a_diagonal.png differ diff --git a/resources/cursors/resize_a_diagonal.png.import b/resources/cursors/resize_a_diagonal.png.import new file mode 100644 index 0000000..5a0977d --- /dev/null +++ b/resources/cursors/resize_a_diagonal.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://hrp7ilfcm4bv" +path="res://.godot/imported/resize_a_diagonal.png-4f617bd71cd0d6e255e4366ae853936e.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/cursors/resize_a_diagonal.png" +dest_files=["res://.godot/imported/resize_a_diagonal.png-4f617bd71cd0d6e255e4366ae853936e.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/cursors/resize_a_diagonal_mirror.png b/resources/cursors/resize_a_diagonal_mirror.png new file mode 100644 index 0000000..dcd53f6 Binary files /dev/null and b/resources/cursors/resize_a_diagonal_mirror.png differ diff --git a/resources/cursors/resize_a_diagonal_mirror.png.import b/resources/cursors/resize_a_diagonal_mirror.png.import new file mode 100644 index 0000000..b70251d --- /dev/null +++ b/resources/cursors/resize_a_diagonal_mirror.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b16xa87gscec" +path="res://.godot/imported/resize_a_diagonal_mirror.png-51299fa36523e24afc59c89eff63d73e.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/cursors/resize_a_diagonal_mirror.png" +dest_files=["res://.godot/imported/resize_a_diagonal_mirror.png-51299fa36523e24afc59c89eff63d73e.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/cursors/resize_a_horizontal.png b/resources/cursors/resize_a_horizontal.png new file mode 100644 index 0000000..2e1cb9b Binary files /dev/null and b/resources/cursors/resize_a_horizontal.png differ diff --git a/resources/cursors/resize_a_horizontal.png.import b/resources/cursors/resize_a_horizontal.png.import new file mode 100644 index 0000000..e57e57f --- /dev/null +++ b/resources/cursors/resize_a_horizontal.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bx8n4f25x3tkb" +path="res://.godot/imported/resize_a_horizontal.png-f39bd8c24396346d8cc3f8797a213506.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/cursors/resize_a_horizontal.png" +dest_files=["res://.godot/imported/resize_a_horizontal.png-f39bd8c24396346d8cc3f8797a213506.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/cursors/resize_a_vertical.png b/resources/cursors/resize_a_vertical.png new file mode 100644 index 0000000..d0ad7ae Binary files /dev/null and b/resources/cursors/resize_a_vertical.png differ diff --git a/resources/cursors/resize_a_vertical.png.import b/resources/cursors/resize_a_vertical.png.import new file mode 100644 index 0000000..475d93b --- /dev/null +++ b/resources/cursors/resize_a_vertical.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://btrj4vqpbb8dt" +path="res://.godot/imported/resize_a_vertical.png-b3626075c660e31d0470a4b43e9192d3.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/cursors/resize_a_vertical.png" +dest_files=["res://.godot/imported/resize_a_vertical.png-b3626075c660e31d0470a4b43e9192d3.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/cursors/resize_b_cross.png b/resources/cursors/resize_b_cross.png new file mode 100644 index 0000000..0b3cff5 Binary files /dev/null and b/resources/cursors/resize_b_cross.png differ diff --git a/resources/cursors/resize_b_cross.png.import b/resources/cursors/resize_b_cross.png.import new file mode 100644 index 0000000..3d0d56a --- /dev/null +++ b/resources/cursors/resize_b_cross.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cveqv8u2kr06l" +path="res://.godot/imported/resize_b_cross.png-2b0595d0ee22ff7efd1a71a8291fd533.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/cursors/resize_b_cross.png" +dest_files=["res://.godot/imported/resize_b_cross.png-2b0595d0ee22ff7efd1a71a8291fd533.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/cursors/resize_b_cross_diagonal.png b/resources/cursors/resize_b_cross_diagonal.png new file mode 100644 index 0000000..39f117f Binary files /dev/null and b/resources/cursors/resize_b_cross_diagonal.png differ diff --git a/resources/cursors/resize_b_cross_diagonal.png.import b/resources/cursors/resize_b_cross_diagonal.png.import new file mode 100644 index 0000000..84bff5b --- /dev/null +++ b/resources/cursors/resize_b_cross_diagonal.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cwido7a5bvrpv" +path="res://.godot/imported/resize_b_cross_diagonal.png-04912ae24533ce5019ff3fd9f3b800a7.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/cursors/resize_b_cross_diagonal.png" +dest_files=["res://.godot/imported/resize_b_cross_diagonal.png-04912ae24533ce5019ff3fd9f3b800a7.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/cursors/resize_b_diagonal.png b/resources/cursors/resize_b_diagonal.png new file mode 100644 index 0000000..a7df905 Binary files /dev/null and b/resources/cursors/resize_b_diagonal.png differ diff --git a/resources/cursors/resize_b_diagonal.png.import b/resources/cursors/resize_b_diagonal.png.import new file mode 100644 index 0000000..79a4abd --- /dev/null +++ b/resources/cursors/resize_b_diagonal.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://7y4feb3sh44m" +path="res://.godot/imported/resize_b_diagonal.png-595eb10c3f98ab432f1d6b623dd137ef.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/cursors/resize_b_diagonal.png" +dest_files=["res://.godot/imported/resize_b_diagonal.png-595eb10c3f98ab432f1d6b623dd137ef.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/cursors/resize_b_diagonal_mirror.png b/resources/cursors/resize_b_diagonal_mirror.png new file mode 100644 index 0000000..e9e43ee Binary files /dev/null and b/resources/cursors/resize_b_diagonal_mirror.png differ diff --git a/resources/cursors/resize_b_diagonal_mirror.png.import b/resources/cursors/resize_b_diagonal_mirror.png.import new file mode 100644 index 0000000..eb36295 --- /dev/null +++ b/resources/cursors/resize_b_diagonal_mirror.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b0h1jpg3kumeb" +path="res://.godot/imported/resize_b_diagonal_mirror.png-c873fbedc0cffb9468c6c65b70b66c39.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/cursors/resize_b_diagonal_mirror.png" +dest_files=["res://.godot/imported/resize_b_diagonal_mirror.png-c873fbedc0cffb9468c6c65b70b66c39.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/cursors/resize_b_horizontal.png b/resources/cursors/resize_b_horizontal.png new file mode 100644 index 0000000..265f642 Binary files /dev/null and b/resources/cursors/resize_b_horizontal.png differ diff --git a/resources/cursors/resize_b_horizontal.png.import b/resources/cursors/resize_b_horizontal.png.import new file mode 100644 index 0000000..f19a6c5 --- /dev/null +++ b/resources/cursors/resize_b_horizontal.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cxkg31xbul6t6" +path="res://.godot/imported/resize_b_horizontal.png-5eed96e687c200c188424e5d631a615f.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/cursors/resize_b_horizontal.png" +dest_files=["res://.godot/imported/resize_b_horizontal.png-5eed96e687c200c188424e5d631a615f.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/cursors/resize_b_vertical.png b/resources/cursors/resize_b_vertical.png new file mode 100644 index 0000000..fb6f22e Binary files /dev/null and b/resources/cursors/resize_b_vertical.png differ diff --git a/resources/cursors/resize_b_vertical.png.import b/resources/cursors/resize_b_vertical.png.import new file mode 100644 index 0000000..e1a6fa2 --- /dev/null +++ b/resources/cursors/resize_b_vertical.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cpqo3ft2q8hn0" +path="res://.godot/imported/resize_b_vertical.png-c382db35d502032dd40cae9253e42c4c.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/cursors/resize_b_vertical.png" +dest_files=["res://.godot/imported/resize_b_vertical.png-c382db35d502032dd40cae9253e42c4c.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/cursors/resize_c_cross.png b/resources/cursors/resize_c_cross.png new file mode 100644 index 0000000..3da1da5 Binary files /dev/null and b/resources/cursors/resize_c_cross.png differ diff --git a/resources/cursors/resize_c_cross.png.import b/resources/cursors/resize_c_cross.png.import new file mode 100644 index 0000000..a31c063 --- /dev/null +++ b/resources/cursors/resize_c_cross.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bqruejs1gmntj" +path="res://.godot/imported/resize_c_cross.png-d3963718990affaa25840634f35c82b7.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/cursors/resize_c_cross.png" +dest_files=["res://.godot/imported/resize_c_cross.png-d3963718990affaa25840634f35c82b7.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/cursors/resize_c_cross_diagonal.png b/resources/cursors/resize_c_cross_diagonal.png new file mode 100644 index 0000000..6d85030 Binary files /dev/null and b/resources/cursors/resize_c_cross_diagonal.png differ diff --git a/resources/cursors/resize_c_cross_diagonal.png.import b/resources/cursors/resize_c_cross_diagonal.png.import new file mode 100644 index 0000000..6102d10 --- /dev/null +++ b/resources/cursors/resize_c_cross_diagonal.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cxoxn0bddwna1" +path="res://.godot/imported/resize_c_cross_diagonal.png-a2de795ea3f563319bf1b460542fe4a5.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/cursors/resize_c_cross_diagonal.png" +dest_files=["res://.godot/imported/resize_c_cross_diagonal.png-a2de795ea3f563319bf1b460542fe4a5.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/cursors/resize_c_diagonal.png b/resources/cursors/resize_c_diagonal.png new file mode 100644 index 0000000..d33b27a Binary files /dev/null and b/resources/cursors/resize_c_diagonal.png differ diff --git a/resources/cursors/resize_c_diagonal.png.import b/resources/cursors/resize_c_diagonal.png.import new file mode 100644 index 0000000..d38081b --- /dev/null +++ b/resources/cursors/resize_c_diagonal.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dgodf15w2gom7" +path="res://.godot/imported/resize_c_diagonal.png-e0ed5984f17b5d42d8073896aedbcbd8.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/cursors/resize_c_diagonal.png" +dest_files=["res://.godot/imported/resize_c_diagonal.png-e0ed5984f17b5d42d8073896aedbcbd8.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/cursors/resize_c_diagonal_mirror.png b/resources/cursors/resize_c_diagonal_mirror.png new file mode 100644 index 0000000..21a37e7 Binary files /dev/null and b/resources/cursors/resize_c_diagonal_mirror.png differ diff --git a/resources/cursors/resize_c_diagonal_mirror.png.import b/resources/cursors/resize_c_diagonal_mirror.png.import new file mode 100644 index 0000000..aa749a4 --- /dev/null +++ b/resources/cursors/resize_c_diagonal_mirror.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://fsf3uk8503hs" +path="res://.godot/imported/resize_c_diagonal_mirror.png-d96e7a949d35ab0e0f9dd96dfa562127.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/cursors/resize_c_diagonal_mirror.png" +dest_files=["res://.godot/imported/resize_c_diagonal_mirror.png-d96e7a949d35ab0e0f9dd96dfa562127.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/cursors/resize_c_horizontal.png b/resources/cursors/resize_c_horizontal.png new file mode 100644 index 0000000..7c4f3a0 Binary files /dev/null and b/resources/cursors/resize_c_horizontal.png differ diff --git a/resources/cursors/resize_c_horizontal.png.import b/resources/cursors/resize_c_horizontal.png.import new file mode 100644 index 0000000..a6bac93 --- /dev/null +++ b/resources/cursors/resize_c_horizontal.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bavj36t6och4i" +path="res://.godot/imported/resize_c_horizontal.png-449ad1f6254ccd13dea84c0642b6fa14.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/cursors/resize_c_horizontal.png" +dest_files=["res://.godot/imported/resize_c_horizontal.png-449ad1f6254ccd13dea84c0642b6fa14.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/cursors/resize_c_vertical.png b/resources/cursors/resize_c_vertical.png new file mode 100644 index 0000000..e89a22c Binary files /dev/null and b/resources/cursors/resize_c_vertical.png differ diff --git a/resources/cursors/resize_c_vertical.png.import b/resources/cursors/resize_c_vertical.png.import new file mode 100644 index 0000000..e690de3 --- /dev/null +++ b/resources/cursors/resize_c_vertical.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://ddkb01pete1e4" +path="res://.godot/imported/resize_c_vertical.png-32f0e2a57056a6b7c65d5787fa1778f4.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/cursors/resize_c_vertical.png" +dest_files=["res://.godot/imported/resize_c_vertical.png-32f0e2a57056a6b7c65d5787fa1778f4.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/cursors/resize_d_cross.png b/resources/cursors/resize_d_cross.png new file mode 100644 index 0000000..357b706 Binary files /dev/null and b/resources/cursors/resize_d_cross.png differ diff --git a/resources/cursors/resize_d_cross.png.import b/resources/cursors/resize_d_cross.png.import new file mode 100644 index 0000000..e8858e5 --- /dev/null +++ b/resources/cursors/resize_d_cross.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://c8p8gxfy3oe60" +path="res://.godot/imported/resize_d_cross.png-b02e0d95caab9a1b138f74799d340fae.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/cursors/resize_d_cross.png" +dest_files=["res://.godot/imported/resize_d_cross.png-b02e0d95caab9a1b138f74799d340fae.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/cursors/resize_d_cross_diagonal.png b/resources/cursors/resize_d_cross_diagonal.png new file mode 100644 index 0000000..3ea7411 Binary files /dev/null and b/resources/cursors/resize_d_cross_diagonal.png differ diff --git a/resources/cursors/resize_d_cross_diagonal.png.import b/resources/cursors/resize_d_cross_diagonal.png.import new file mode 100644 index 0000000..f44eb95 --- /dev/null +++ b/resources/cursors/resize_d_cross_diagonal.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://hp6cdj71m6q0" +path="res://.godot/imported/resize_d_cross_diagonal.png-45389f79e867e90e384985ece027a9e2.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/cursors/resize_d_cross_diagonal.png" +dest_files=["res://.godot/imported/resize_d_cross_diagonal.png-45389f79e867e90e384985ece027a9e2.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/cursors/resize_d_diagonal.png b/resources/cursors/resize_d_diagonal.png new file mode 100644 index 0000000..4aa1926 Binary files /dev/null and b/resources/cursors/resize_d_diagonal.png differ diff --git a/resources/cursors/resize_d_diagonal.png.import b/resources/cursors/resize_d_diagonal.png.import new file mode 100644 index 0000000..4a9a911 --- /dev/null +++ b/resources/cursors/resize_d_diagonal.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dnt20qlhy78mt" +path="res://.godot/imported/resize_d_diagonal.png-269b57ef6642174f4b8a5e98ad3d7790.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/cursors/resize_d_diagonal.png" +dest_files=["res://.godot/imported/resize_d_diagonal.png-269b57ef6642174f4b8a5e98ad3d7790.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/cursors/resize_d_diagonal_mirror.png b/resources/cursors/resize_d_diagonal_mirror.png new file mode 100644 index 0000000..2082af1 Binary files /dev/null and b/resources/cursors/resize_d_diagonal_mirror.png differ diff --git a/resources/cursors/resize_d_diagonal_mirror.png.import b/resources/cursors/resize_d_diagonal_mirror.png.import new file mode 100644 index 0000000..27b0637 --- /dev/null +++ b/resources/cursors/resize_d_diagonal_mirror.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bgsw3t4438dwr" +path="res://.godot/imported/resize_d_diagonal_mirror.png-6e794bdc9af9723bf3572a4e0324472e.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/cursors/resize_d_diagonal_mirror.png" +dest_files=["res://.godot/imported/resize_d_diagonal_mirror.png-6e794bdc9af9723bf3572a4e0324472e.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/cursors/resize_d_horizontal.png b/resources/cursors/resize_d_horizontal.png new file mode 100644 index 0000000..445d310 Binary files /dev/null and b/resources/cursors/resize_d_horizontal.png differ diff --git a/resources/cursors/resize_d_horizontal.png.import b/resources/cursors/resize_d_horizontal.png.import new file mode 100644 index 0000000..bd3a234 --- /dev/null +++ b/resources/cursors/resize_d_horizontal.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dmja40lkf4abk" +path="res://.godot/imported/resize_d_horizontal.png-604a15ec848b37e0930b57cc37fdc432.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/cursors/resize_d_horizontal.png" +dest_files=["res://.godot/imported/resize_d_horizontal.png-604a15ec848b37e0930b57cc37fdc432.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/cursors/resize_d_vertical.png b/resources/cursors/resize_d_vertical.png new file mode 100644 index 0000000..eecd254 Binary files /dev/null and b/resources/cursors/resize_d_vertical.png differ diff --git a/resources/cursors/resize_d_vertical.png.import b/resources/cursors/resize_d_vertical.png.import new file mode 100644 index 0000000..dab4afd --- /dev/null +++ b/resources/cursors/resize_d_vertical.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cl3w6w1piv8yi" +path="res://.godot/imported/resize_d_vertical.png-a9b5b36d9e9b31854948464ed61b6d66.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/cursors/resize_d_vertical.png" +dest_files=["res://.godot/imported/resize_d_vertical.png-a9b5b36d9e9b31854948464ed61b6d66.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/cursors/resize_e_cross.png b/resources/cursors/resize_e_cross.png new file mode 100644 index 0000000..37acef8 Binary files /dev/null and b/resources/cursors/resize_e_cross.png differ diff --git a/resources/cursors/resize_e_cross.png.import b/resources/cursors/resize_e_cross.png.import new file mode 100644 index 0000000..0f4d741 --- /dev/null +++ b/resources/cursors/resize_e_cross.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://c5g7tirtx47l4" +path="res://.godot/imported/resize_e_cross.png-28cc2a1d90d55c98ea8255bed5410121.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/cursors/resize_e_cross.png" +dest_files=["res://.godot/imported/resize_e_cross.png-28cc2a1d90d55c98ea8255bed5410121.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/cursors/resize_e_cross_diagonal.png b/resources/cursors/resize_e_cross_diagonal.png new file mode 100644 index 0000000..41775c1 Binary files /dev/null and b/resources/cursors/resize_e_cross_diagonal.png differ diff --git a/resources/cursors/resize_e_cross_diagonal.png.import b/resources/cursors/resize_e_cross_diagonal.png.import new file mode 100644 index 0000000..6e4d06a --- /dev/null +++ b/resources/cursors/resize_e_cross_diagonal.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bry0ig35t7n07" +path="res://.godot/imported/resize_e_cross_diagonal.png-27e5bfdb00203246d8b8bf7aa15608f0.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/cursors/resize_e_cross_diagonal.png" +dest_files=["res://.godot/imported/resize_e_cross_diagonal.png-27e5bfdb00203246d8b8bf7aa15608f0.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/cursors/resize_e_diagonal.png b/resources/cursors/resize_e_diagonal.png new file mode 100644 index 0000000..0d66ae5 Binary files /dev/null and b/resources/cursors/resize_e_diagonal.png differ diff --git a/resources/cursors/resize_e_diagonal.png.import b/resources/cursors/resize_e_diagonal.png.import new file mode 100644 index 0000000..7cecbb9 --- /dev/null +++ b/resources/cursors/resize_e_diagonal.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b1rxguvy0n8qq" +path="res://.godot/imported/resize_e_diagonal.png-10d174086194767584953b809b8f2148.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/cursors/resize_e_diagonal.png" +dest_files=["res://.godot/imported/resize_e_diagonal.png-10d174086194767584953b809b8f2148.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/cursors/resize_e_diagonal_mirror.png b/resources/cursors/resize_e_diagonal_mirror.png new file mode 100644 index 0000000..ea7d20d Binary files /dev/null and b/resources/cursors/resize_e_diagonal_mirror.png differ diff --git a/resources/cursors/resize_e_diagonal_mirror.png.import b/resources/cursors/resize_e_diagonal_mirror.png.import new file mode 100644 index 0000000..325378a --- /dev/null +++ b/resources/cursors/resize_e_diagonal_mirror.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://0bphkkr0djsd" +path="res://.godot/imported/resize_e_diagonal_mirror.png-c2915eed974db59cd48b6d673d40197e.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/cursors/resize_e_diagonal_mirror.png" +dest_files=["res://.godot/imported/resize_e_diagonal_mirror.png-c2915eed974db59cd48b6d673d40197e.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/cursors/resize_e_horizontal.png b/resources/cursors/resize_e_horizontal.png new file mode 100644 index 0000000..d9a9aed Binary files /dev/null and b/resources/cursors/resize_e_horizontal.png differ diff --git a/resources/cursors/resize_e_horizontal.png.import b/resources/cursors/resize_e_horizontal.png.import new file mode 100644 index 0000000..844a9c1 --- /dev/null +++ b/resources/cursors/resize_e_horizontal.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://drngpdfioqe1n" +path="res://.godot/imported/resize_e_horizontal.png-d870bc8dc0c6782e6246192a0eb3f12f.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/cursors/resize_e_horizontal.png" +dest_files=["res://.godot/imported/resize_e_horizontal.png-d870bc8dc0c6782e6246192a0eb3f12f.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/cursors/resize_e_vertical.png b/resources/cursors/resize_e_vertical.png new file mode 100644 index 0000000..04afa7e Binary files /dev/null and b/resources/cursors/resize_e_vertical.png differ diff --git a/resources/cursors/resize_e_vertical.png.import b/resources/cursors/resize_e_vertical.png.import new file mode 100644 index 0000000..0952810 --- /dev/null +++ b/resources/cursors/resize_e_vertical.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://d3fn4qgmbkeux" +path="res://.godot/imported/resize_e_vertical.png-69d373efe5483a3d9fd74b9a58ffb2f6.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/cursors/resize_e_vertical.png" +dest_files=["res://.godot/imported/resize_e_vertical.png-69d373efe5483a3d9fd74b9a58ffb2f6.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/cursors/resize_horizontal.png b/resources/cursors/resize_horizontal.png new file mode 100644 index 0000000..508999b Binary files /dev/null and b/resources/cursors/resize_horizontal.png differ diff --git a/resources/cursors/resize_horizontal.png.import b/resources/cursors/resize_horizontal.png.import new file mode 100644 index 0000000..9bb9eb6 --- /dev/null +++ b/resources/cursors/resize_horizontal.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bpc3sx7m4ddu5" +path="res://.godot/imported/resize_horizontal.png-12089aabacc6a88a4c9aee343f2db81b.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/cursors/resize_horizontal.png" +dest_files=["res://.godot/imported/resize_horizontal.png-12089aabacc6a88a4c9aee343f2db81b.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/cursors/resize_vertical.png b/resources/cursors/resize_vertical.png new file mode 100644 index 0000000..296ec81 Binary files /dev/null and b/resources/cursors/resize_vertical.png differ diff --git a/resources/cursors/resize_vertical.png.import b/resources/cursors/resize_vertical.png.import new file mode 100644 index 0000000..313f13f --- /dev/null +++ b/resources/cursors/resize_vertical.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://ddd363umticsc" +path="res://.godot/imported/resize_vertical.png-d6a957537ab7a89c0a34205ad1b62d8d.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/cursors/resize_vertical.png" +dest_files=["res://.godot/imported/resize_vertical.png-d6a957537ab7a89c0a34205ad1b62d8d.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/cursors/target_a.png b/resources/cursors/target_a.png new file mode 100644 index 0000000..a322986 Binary files /dev/null and b/resources/cursors/target_a.png differ diff --git a/resources/cursors/target_a.png.import b/resources/cursors/target_a.png.import new file mode 100644 index 0000000..af48d88 --- /dev/null +++ b/resources/cursors/target_a.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://d0ebnd0sd83tg" +path="res://.godot/imported/target_a.png-0e8d2c4f3367e18c106e39df875c9b8b.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/cursors/target_a.png" +dest_files=["res://.godot/imported/target_a.png-0e8d2c4f3367e18c106e39df875c9b8b.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/cursors/target_b.png b/resources/cursors/target_b.png new file mode 100644 index 0000000..67aa06d Binary files /dev/null and b/resources/cursors/target_b.png differ diff --git a/resources/cursors/target_b.png.import b/resources/cursors/target_b.png.import new file mode 100644 index 0000000..faf3da8 --- /dev/null +++ b/resources/cursors/target_b.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://d0t2bgqc74a8f" +path="res://.godot/imported/target_b.png-061b73fc9011146ffb925fe51af2fe42.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/cursors/target_b.png" +dest_files=["res://.godot/imported/target_b.png-061b73fc9011146ffb925fe51af2fe42.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/cursors/target_round_a.png b/resources/cursors/target_round_a.png new file mode 100644 index 0000000..658cb50 Binary files /dev/null and b/resources/cursors/target_round_a.png differ diff --git a/resources/cursors/target_round_a.png.import b/resources/cursors/target_round_a.png.import new file mode 100644 index 0000000..d18f914 --- /dev/null +++ b/resources/cursors/target_round_a.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://1u2nh2f67keh" +path="res://.godot/imported/target_round_a.png-ead6c69e756830bc79e764c786e9ac67.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/cursors/target_round_a.png" +dest_files=["res://.godot/imported/target_round_a.png-ead6c69e756830bc79e764c786e9ac67.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/cursors/target_round_b.png b/resources/cursors/target_round_b.png new file mode 100644 index 0000000..779e648 Binary files /dev/null and b/resources/cursors/target_round_b.png differ diff --git a/resources/cursors/target_round_b.png.import b/resources/cursors/target_round_b.png.import new file mode 100644 index 0000000..06c8388 --- /dev/null +++ b/resources/cursors/target_round_b.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://c6twmey77joqm" +path="res://.godot/imported/target_round_b.png-08e21ee1bdb7a1b088d9d38a6ea62bc7.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/cursors/target_round_b.png" +dest_files=["res://.godot/imported/target_round_b.png-08e21ee1bdb7a1b088d9d38a6ea62bc7.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/cursors/tool_axe.png b/resources/cursors/tool_axe.png new file mode 100644 index 0000000..0e03f38 Binary files /dev/null and b/resources/cursors/tool_axe.png differ diff --git a/resources/cursors/tool_axe.png.import b/resources/cursors/tool_axe.png.import new file mode 100644 index 0000000..1e42417 --- /dev/null +++ b/resources/cursors/tool_axe.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b8teisge2r6d" +path="res://.godot/imported/tool_axe.png-918dd6b8fd0640bc59280b82507afbe4.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/cursors/tool_axe.png" +dest_files=["res://.godot/imported/tool_axe.png-918dd6b8fd0640bc59280b82507afbe4.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/cursors/tool_hammer.png b/resources/cursors/tool_hammer.png new file mode 100644 index 0000000..3ff88a6 Binary files /dev/null and b/resources/cursors/tool_hammer.png differ diff --git a/resources/cursors/tool_hammer.png.import b/resources/cursors/tool_hammer.png.import new file mode 100644 index 0000000..eea124f --- /dev/null +++ b/resources/cursors/tool_hammer.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://ck1omlnv8d8v5" +path="res://.godot/imported/tool_hammer.png-46742e22532e262623cc264fbcd04792.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/cursors/tool_hammer.png" +dest_files=["res://.godot/imported/tool_hammer.png-46742e22532e262623cc264fbcd04792.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/cursors/tool_pickaxe.png b/resources/cursors/tool_pickaxe.png new file mode 100644 index 0000000..155d659 Binary files /dev/null and b/resources/cursors/tool_pickaxe.png differ diff --git a/resources/cursors/tool_pickaxe.png.import b/resources/cursors/tool_pickaxe.png.import new file mode 100644 index 0000000..a01f4df --- /dev/null +++ b/resources/cursors/tool_pickaxe.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dp5oh03ifigb7" +path="res://.godot/imported/tool_pickaxe.png-486850932b38ccb9548f23d642483e25.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/cursors/tool_pickaxe.png" +dest_files=["res://.godot/imported/tool_pickaxe.png-486850932b38ccb9548f23d642483e25.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/cursors/tool_shovel.png b/resources/cursors/tool_shovel.png new file mode 100644 index 0000000..592fae4 Binary files /dev/null and b/resources/cursors/tool_shovel.png differ diff --git a/resources/cursors/tool_shovel.png.import b/resources/cursors/tool_shovel.png.import new file mode 100644 index 0000000..5be00c4 --- /dev/null +++ b/resources/cursors/tool_shovel.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://co0xffu21vm3d" +path="res://.godot/imported/tool_shovel.png-4a58852bbe21cac53fe3adb7b493bf4e.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/cursors/tool_shovel.png" +dest_files=["res://.godot/imported/tool_shovel.png-4a58852bbe21cac53fe3adb7b493bf4e.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/cursors/tool_sword_a.png b/resources/cursors/tool_sword_a.png new file mode 100644 index 0000000..6cef0dd Binary files /dev/null and b/resources/cursors/tool_sword_a.png differ diff --git a/resources/cursors/tool_sword_a.png.import b/resources/cursors/tool_sword_a.png.import new file mode 100644 index 0000000..b31f2d1 --- /dev/null +++ b/resources/cursors/tool_sword_a.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://hi0gmcwxduid" +path="res://.godot/imported/tool_sword_a.png-78341df2da1643e2117629c923c767c1.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/cursors/tool_sword_a.png" +dest_files=["res://.godot/imported/tool_sword_a.png-78341df2da1643e2117629c923c767c1.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/cursors/tool_sword_b.png b/resources/cursors/tool_sword_b.png new file mode 100644 index 0000000..8a1b153 Binary files /dev/null and b/resources/cursors/tool_sword_b.png differ diff --git a/resources/cursors/tool_sword_b.png.import b/resources/cursors/tool_sword_b.png.import new file mode 100644 index 0000000..e3b8a92 --- /dev/null +++ b/resources/cursors/tool_sword_b.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bjuum8havs4kw" +path="res://.godot/imported/tool_sword_b.png-fecc0fe2a0b4185bb85166dd904754d5.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/cursors/tool_sword_b.png" +dest_files=["res://.godot/imported/tool_sword_b.png-fecc0fe2a0b4185bb85166dd904754d5.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/cursors/zoom.png b/resources/cursors/zoom.png new file mode 100644 index 0000000..e44bf3f Binary files /dev/null and b/resources/cursors/zoom.png differ diff --git a/resources/cursors/zoom.png.import b/resources/cursors/zoom.png.import new file mode 100644 index 0000000..2010e2d --- /dev/null +++ b/resources/cursors/zoom.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bm8v8gse1sfra" +path="res://.godot/imported/zoom.png-e01260422e8c0a8d48c375c2a4efb6f1.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/cursors/zoom.png" +dest_files=["res://.godot/imported/zoom.png-e01260422e8c0a8d48c375c2a4efb6f1.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/cursors/zoom_in.png b/resources/cursors/zoom_in.png new file mode 100644 index 0000000..a3c636e Binary files /dev/null and b/resources/cursors/zoom_in.png differ diff --git a/resources/cursors/zoom_in.png.import b/resources/cursors/zoom_in.png.import new file mode 100644 index 0000000..227afdd --- /dev/null +++ b/resources/cursors/zoom_in.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://ceeuxe3hwocvu" +path="res://.godot/imported/zoom_in.png-bcb3c37251d5067c73180359b5c6fe29.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/cursors/zoom_in.png" +dest_files=["res://.godot/imported/zoom_in.png-bcb3c37251d5067c73180359b5c6fe29.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/cursors/zoom_out.png b/resources/cursors/zoom_out.png new file mode 100644 index 0000000..f7deba0 Binary files /dev/null and b/resources/cursors/zoom_out.png differ diff --git a/resources/cursors/zoom_out.png.import b/resources/cursors/zoom_out.png.import new file mode 100644 index 0000000..5f2cd2b --- /dev/null +++ b/resources/cursors/zoom_out.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://ctjdpphw0as7" +path="res://.godot/imported/zoom_out.png-407260a484d261ef4ac137ef70bf1c97.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/cursors/zoom_out.png" +dest_files=["res://.godot/imported/zoom_out.png-407260a484d261ef4ac137ef70bf1c97.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/cursors/zoom_reset.png b/resources/cursors/zoom_reset.png new file mode 100644 index 0000000..5e1e72c Binary files /dev/null and b/resources/cursors/zoom_reset.png differ diff --git a/resources/cursors/zoom_reset.png.import b/resources/cursors/zoom_reset.png.import new file mode 100644 index 0000000..9aae3e9 --- /dev/null +++ b/resources/cursors/zoom_reset.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bfapwls5at0nf" +path="res://.godot/imported/zoom_reset.png-8266deb02173a145dc8e1a6eefd56de7.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/cursors/zoom_reset.png" +dest_files=["res://.godot/imported/zoom_reset.png-8266deb02173a145dc8e1a6eefd56de7.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/fonts/Kaph-Italic.ttf b/resources/fonts/Kaph-Italic.ttf new file mode 100644 index 0000000..d10a69c Binary files /dev/null and b/resources/fonts/Kaph-Italic.ttf differ diff --git a/resources/fonts/Kaph-Italic.ttf.import b/resources/fonts/Kaph-Italic.ttf.import new file mode 100644 index 0000000..fdb8c71 --- /dev/null +++ b/resources/fonts/Kaph-Italic.ttf.import @@ -0,0 +1,33 @@ +[remap] + +importer="font_data_dynamic" +type="FontFile" +uid="uid://dwdgp7kjweao7" +path="res://.godot/imported/Kaph-Italic.ttf-1ab006790939f5d710ad0b74d2c82e38.fontdata" + +[deps] + +source_file="res://resources/fonts/Kaph-Italic.ttf" +dest_files=["res://.godot/imported/Kaph-Italic.ttf-1ab006790939f5d710ad0b74d2c82e38.fontdata"] + +[params] + +Rendering=null +antialiasing=1 +generate_mipmaps=false +multichannel_signed_distance_field=false +msdf_pixel_range=8 +msdf_size=48 +allow_system_fallback=true +force_autohinter=false +hinting=1 +subpixel_positioning=1 +oversampling=0.0 +Fallbacks=null +fallbacks=[] +Compress=null +compress=true +preload=[] +language_support={} +script_support={} +opentype_features={} diff --git a/resources/fonts/Kaph-Regular.ttf b/resources/fonts/Kaph-Regular.ttf new file mode 100644 index 0000000..b84049c Binary files /dev/null and b/resources/fonts/Kaph-Regular.ttf differ diff --git a/resources/fonts/Kaph-Regular.ttf.import b/resources/fonts/Kaph-Regular.ttf.import new file mode 100644 index 0000000..cdb268a --- /dev/null +++ b/resources/fonts/Kaph-Regular.ttf.import @@ -0,0 +1,33 @@ +[remap] + +importer="font_data_dynamic" +type="FontFile" +uid="uid://beyoaacc7uhy1" +path="res://.godot/imported/Kaph-Regular.ttf-2e09e72cc59e741e8ff9885a176f06d5.fontdata" + +[deps] + +source_file="res://resources/fonts/Kaph-Regular.ttf" +dest_files=["res://.godot/imported/Kaph-Regular.ttf-2e09e72cc59e741e8ff9885a176f06d5.fontdata"] + +[params] + +Rendering=null +antialiasing=1 +generate_mipmaps=false +multichannel_signed_distance_field=false +msdf_pixel_range=8 +msdf_size=48 +allow_system_fallback=true +force_autohinter=false +hinting=1 +subpixel_positioning=1 +oversampling=0.0 +Fallbacks=null +fallbacks=[] +Compress=null +compress=true +preload=[] +language_support={} +script_support={} +opentype_features={} diff --git a/resources/icons/GameIcon.ico b/resources/icons/GameIcon.ico new file mode 100644 index 0000000..e19d616 Binary files /dev/null and b/resources/icons/GameIcon.ico differ diff --git a/resources/icons/fsm.png b/resources/icons/fsm.png new file mode 100644 index 0000000..262b2e3 Binary files /dev/null and b/resources/icons/fsm.png differ diff --git a/resources/icons/fsm.png.import b/resources/icons/fsm.png.import new file mode 100644 index 0000000..717ffdd --- /dev/null +++ b/resources/icons/fsm.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://ct5paeky0cexp" +path="res://.godot/imported/fsm.png-8987802cee881c94358eee3cb13f0556.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/icons/fsm.png" +dest_files=["res://.godot/imported/fsm.png-8987802cee881c94358eee3cb13f0556.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/icons/gameicon.png b/resources/icons/gameicon.png new file mode 100644 index 0000000..decf692 Binary files /dev/null and b/resources/icons/gameicon.png differ diff --git a/resources/icons/gameicon.png.import b/resources/icons/gameicon.png.import new file mode 100644 index 0000000..8978ffb --- /dev/null +++ b/resources/icons/gameicon.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://c12b76nv4y3kv" +path="res://.godot/imported/gameicon.png-493cd866ff935ca1233be4506c17d2c0.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/icons/gameicon.png" +dest_files=["res://.godot/imported/gameicon.png-493cd866ff935ca1233be4506c17d2c0.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/icons/icon.ico b/resources/icons/icon.ico new file mode 100644 index 0000000..81cdc57 Binary files /dev/null and b/resources/icons/icon.ico differ diff --git a/resources/images/highscores.png b/resources/images/highscores.png new file mode 100644 index 0000000..b9cae0a Binary files /dev/null and b/resources/images/highscores.png differ diff --git a/resources/images/highscores.png.import b/resources/images/highscores.png.import new file mode 100644 index 0000000..cd5abdd --- /dev/null +++ b/resources/images/highscores.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bhw76y620miuj" +path="res://.godot/imported/highscores.png-755bc25dea6a9b7068f83d8847686b1f.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/images/highscores.png" +dest_files=["res://.godot/imported/highscores.png-755bc25dea6a9b7068f83d8847686b1f.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/images/logo.png b/resources/images/logo.png new file mode 100644 index 0000000..f294c35 Binary files /dev/null and b/resources/images/logo.png differ diff --git a/resources/images/logo.png.import b/resources/images/logo.png.import new file mode 100644 index 0000000..c32a97c --- /dev/null +++ b/resources/images/logo.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://15wckxixnr8y" +path="res://.godot/imported/logo.png-201355904a3ce747a47ae274092ba1ff.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/images/logo.png" +dest_files=["res://.godot/imported/logo.png-201355904a3ce747a47ae274092ba1ff.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/music/bee_background.ogg b/resources/music/bee_background.ogg new file mode 100644 index 0000000..c3a92fe Binary files /dev/null and b/resources/music/bee_background.ogg differ diff --git a/resources/music/bee_background.ogg.import b/resources/music/bee_background.ogg.import new file mode 100644 index 0000000..579579a --- /dev/null +++ b/resources/music/bee_background.ogg.import @@ -0,0 +1,19 @@ +[remap] + +importer="oggvorbisstr" +type="AudioStreamOggVorbis" +uid="uid://bgcbd6xf0lyrr" +path="res://.godot/imported/bee_background.ogg-c81a6ccabee08e60954bf44a1ddc540e.oggvorbisstr" + +[deps] + +source_file="res://resources/music/bee_background.ogg" +dest_files=["res://.godot/imported/bee_background.ogg-c81a6ccabee08e60954bf44a1ddc540e.oggvorbisstr"] + +[params] + +loop=true +loop_offset=0 +bpm=0 +beat_count=0 +bar_beats=4 diff --git a/resources/music/source/Backups/bee_background-2024-05-06_131335.rpp-bak b/resources/music/source/Backups/bee_background-2024-05-06_131335.rpp-bak new file mode 100644 index 0000000..7ff4463 --- /dev/null +++ b/resources/music/source/Backups/bee_background-2024-05-06_131335.rpp-bak @@ -0,0 +1,2078 @@ + + RIPPLE 0 + GROUPOVERRIDE 0 0 0 + AUTOXFADE 1 + ENVATTACH 3 + POOLEDENVATTACH 0 + MIXERUIFLAGS 11 48 + ENVFADESZ10 40 + PEAKGAIN 1 + FEEDBACK 0 + PANLAW 1 + PROJOFFS 0 0 0 + MAXPROJLEN 0 0 + GRID 3199 8 1 8 1 0 0 0 + TIMEMODE 1 5 -1 30 0 0 -1 + VIDEO_CONFIG 0 0 256 + PANMODE 3 + PANLAWFLAGS 3 + CURSOR 125.5 + ZOOM 9.13579078940044 0 0 + VZOOMEX 7.87857771 0 + USE_REC_CFG 0 + RECMODE 1 + SMPTESYNC 0 30 100 40 1000 300 0 0 1 0 0 + LOOP 0 + LOOPGRAN 0 4 + RECORD_PATH "Media" "" + + + RENDER_FILE "" + RENDER_PATTERN "" + RENDER_FMT 0 2 0 + RENDER_1X 0 + RENDER_RANGE 1 0 0 18 1000 + RENDER_RESAMPLE 3 0 1 + RENDER_ADDTOPROJ 0 + RENDER_STEMS 0 + RENDER_DITHER 0 + TIMELOCKMODE 1 + TEMPOENVLOCKMODE 1 + ITEMMIX 1 + DEFPITCHMODE 589824 0 + TAKELANE 1 + SAMPLERATE 44100 0 0 + + LOCK 1 + + GLOBAL_AUTO -1 + TEMPO 120 4 4 + PLAYRATE 1 0 0.25 4 + SELECTION 28 33 + SELECTION2 28 33 + MASTERAUTOMODE 0 + MASTERTRACKHEIGHT 0 0 + MASTERPEAKCOL 16576 + MASTERMUTESOLO 0 + MASTERTRACKVIEW 0 0.6667 0.5 0.5 0 0 0 0 0 0 0 0 0 0 + MASTERHWOUT 0 0 1 0 0 0 0 -1 + MASTER_NCH 2 2 + MASTER_VOLUME 1 0 -1 -1 1 + MASTER_PANMODE 3 + MASTER_PANLAWFLAGS 3 + MASTER_FX 1 + MASTER_SEL 0 + + + + + + > + + > + + > + + > + + > + + > + + > + + > + + > + + > + + > + + > + + > + + > + + > + + > + + > + + > + + > + + > + + > + + > + + > + > + + + + > + + > + + > + + > + + > + + > + + > + + > + + > + + > + + > + + > + + > + + > + + > + + > + + > + + > + + > + + > + + > + + > + + > + + > + + > + > + + > + + > + + > + + > + + > + + > + + > + + > + + > + + > + + > + + > + + > + + > + + > + + > + > + + > + + > + + > + + > + + > + + > + + > + > + + > + + > + + > + + > + + > + + > + + > + + > + + > + + > + + > + + > + > +> diff --git a/resources/music/source/bee_background.rpp b/resources/music/source/bee_background.rpp new file mode 100644 index 0000000..f4857ee --- /dev/null +++ b/resources/music/source/bee_background.rpp @@ -0,0 +1,2077 @@ + + RIPPLE 0 + GROUPOVERRIDE 0 0 0 + AUTOXFADE 1 + ENVATTACH 3 + POOLEDENVATTACH 0 + MIXERUIFLAGS 11 48 + ENVFADESZ10 40 + PEAKGAIN 1 + FEEDBACK 0 + PANLAW 1 + PROJOFFS 0 0 0 + MAXPROJLEN 0 0 + GRID 3199 8 1 8 1 0 0 0 + TIMEMODE 1 5 -1 30 0 0 -1 + VIDEO_CONFIG 0 0 256 + PANMODE 3 + PANLAWFLAGS 3 + CURSOR 125.5 + ZOOM 9.13579078940044 0 0 + VZOOMEX 7.87857771 0 + USE_REC_CFG 0 + RECMODE 1 + SMPTESYNC 0 30 100 40 1000 300 0 0 1 0 0 + LOOP 0 + LOOPGRAN 0 4 + RECORD_PATH "Media" "" + + + RENDER_FILE "C:\Dev\Games\PollenNotIncluded\resources\music\bee_background.ogg" + RENDER_FMT 0 2 44100 + RENDER_1X 0 + RENDER_RANGE 1 0 0 18 1000 + RENDER_RESAMPLE 3 0 1 + RENDER_ADDTOPROJ 0 + RENDER_STEMS 0 + RENDER_DITHER 0 + TIMELOCKMODE 1 + TEMPOENVLOCKMODE 1 + ITEMMIX 1 + DEFPITCHMODE 589824 0 + TAKELANE 1 + SAMPLERATE 44100 0 0 + + LOCK 1 + + GLOBAL_AUTO -1 + TEMPO 120 4 4 + PLAYRATE 1 0 0.25 4 + SELECTION 28 33 + SELECTION2 28 33 + MASTERAUTOMODE 0 + MASTERTRACKHEIGHT 0 0 + MASTERPEAKCOL 16576 + MASTERMUTESOLO 0 + MASTERTRACKVIEW 0 0.6667 0.5 0.5 0 0 0 0 0 0 0 0 0 0 + MASTERHWOUT 0 0 1 0 0 0 0 -1 + MASTER_NCH 2 2 + MASTER_VOLUME 1 0 -1 -1 1 + MASTER_PANMODE 3 + MASTER_PANLAWFLAGS 3 + MASTER_FX 1 + MASTER_SEL 0 + + + + + + > + + > + + > + + > + + > + + > + + > + + > + + > + + > + + > + + > + + > + + > + + > + + > + + > + + > + + > + + > + + > + + > + + > + > + + + + > + + > + + > + + > + + > + + > + + > + + > + + > + + > + + > + + > + + > + + > + + > + + > + + > + + > + + > + + > + + > + + > + + > + + > + + > + > + + > + + > + + > + + > + + > + + > + + > + + > + + > + + > + + > + + > + + > + + > + + > + + > + > + + > + + > + + > + + > + + > + + > + + > + > + + > + + > + + > + + > + + > + + > + + > + + > + + > + + > + + > + + > + > +> diff --git a/resources/particles/Rotated/flame_05_rotated.png b/resources/particles/Rotated/flame_05_rotated.png new file mode 100644 index 0000000..1ec795c Binary files /dev/null and b/resources/particles/Rotated/flame_05_rotated.png differ diff --git a/resources/particles/Rotated/flame_05_rotated.png.import b/resources/particles/Rotated/flame_05_rotated.png.import new file mode 100644 index 0000000..c9f6b68 --- /dev/null +++ b/resources/particles/Rotated/flame_05_rotated.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dik2l518uvins" +path="res://.godot/imported/flame_05_rotated.png-2b450d31d563432dffaf0465ffaf4b71.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/particles/Rotated/flame_05_rotated.png" +dest_files=["res://.godot/imported/flame_05_rotated.png-2b450d31d563432dffaf0465ffaf4b71.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/particles/Rotated/flame_06_rotated.png b/resources/particles/Rotated/flame_06_rotated.png new file mode 100644 index 0000000..c904625 Binary files /dev/null and b/resources/particles/Rotated/flame_06_rotated.png differ diff --git a/resources/particles/Rotated/flame_06_rotated.png.import b/resources/particles/Rotated/flame_06_rotated.png.import new file mode 100644 index 0000000..8a3c647 --- /dev/null +++ b/resources/particles/Rotated/flame_06_rotated.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://c5k60nabgix6b" +path="res://.godot/imported/flame_06_rotated.png-9f20137893de97bc0cb5fbf772b084bf.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/particles/Rotated/flame_06_rotated.png" +dest_files=["res://.godot/imported/flame_06_rotated.png-9f20137893de97bc0cb5fbf772b084bf.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/particles/Rotated/muzzle_01_rotated.png b/resources/particles/Rotated/muzzle_01_rotated.png new file mode 100644 index 0000000..1d0722f Binary files /dev/null and b/resources/particles/Rotated/muzzle_01_rotated.png differ diff --git a/resources/particles/Rotated/muzzle_01_rotated.png.import b/resources/particles/Rotated/muzzle_01_rotated.png.import new file mode 100644 index 0000000..f1e71c2 --- /dev/null +++ b/resources/particles/Rotated/muzzle_01_rotated.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bmtxf2yuelqct" +path="res://.godot/imported/muzzle_01_rotated.png-5b78a999aa0364033f976a40851a2345.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/particles/Rotated/muzzle_01_rotated.png" +dest_files=["res://.godot/imported/muzzle_01_rotated.png-5b78a999aa0364033f976a40851a2345.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/particles/Rotated/muzzle_02_rotated.png b/resources/particles/Rotated/muzzle_02_rotated.png new file mode 100644 index 0000000..fb28219 Binary files /dev/null and b/resources/particles/Rotated/muzzle_02_rotated.png differ diff --git a/resources/particles/Rotated/muzzle_02_rotated.png.import b/resources/particles/Rotated/muzzle_02_rotated.png.import new file mode 100644 index 0000000..5539530 --- /dev/null +++ b/resources/particles/Rotated/muzzle_02_rotated.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cmx336qmnahmw" +path="res://.godot/imported/muzzle_02_rotated.png-789537603bd988122be88c3588adc165.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/particles/Rotated/muzzle_02_rotated.png" +dest_files=["res://.godot/imported/muzzle_02_rotated.png-789537603bd988122be88c3588adc165.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/particles/Rotated/muzzle_03_rotated.png b/resources/particles/Rotated/muzzle_03_rotated.png new file mode 100644 index 0000000..d4bc977 Binary files /dev/null and b/resources/particles/Rotated/muzzle_03_rotated.png differ diff --git a/resources/particles/Rotated/muzzle_03_rotated.png.import b/resources/particles/Rotated/muzzle_03_rotated.png.import new file mode 100644 index 0000000..df9adce --- /dev/null +++ b/resources/particles/Rotated/muzzle_03_rotated.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://3re6erx2kaq4" +path="res://.godot/imported/muzzle_03_rotated.png-f733bd6f3cb93319c1e104d8bf258ae9.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/particles/Rotated/muzzle_03_rotated.png" +dest_files=["res://.godot/imported/muzzle_03_rotated.png-f733bd6f3cb93319c1e104d8bf258ae9.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/particles/Rotated/muzzle_04_rotated.png b/resources/particles/Rotated/muzzle_04_rotated.png new file mode 100644 index 0000000..87c883a Binary files /dev/null and b/resources/particles/Rotated/muzzle_04_rotated.png differ diff --git a/resources/particles/Rotated/muzzle_04_rotated.png.import b/resources/particles/Rotated/muzzle_04_rotated.png.import new file mode 100644 index 0000000..d28783a --- /dev/null +++ b/resources/particles/Rotated/muzzle_04_rotated.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cmdbvvuv57d5k" +path="res://.godot/imported/muzzle_04_rotated.png-caea1140abdbcb6267b073b8fd708f17.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/particles/Rotated/muzzle_04_rotated.png" +dest_files=["res://.godot/imported/muzzle_04_rotated.png-caea1140abdbcb6267b073b8fd708f17.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/particles/Rotated/muzzle_05_rotated.png b/resources/particles/Rotated/muzzle_05_rotated.png new file mode 100644 index 0000000..ca08b40 Binary files /dev/null and b/resources/particles/Rotated/muzzle_05_rotated.png differ diff --git a/resources/particles/Rotated/muzzle_05_rotated.png.import b/resources/particles/Rotated/muzzle_05_rotated.png.import new file mode 100644 index 0000000..91b7991 --- /dev/null +++ b/resources/particles/Rotated/muzzle_05_rotated.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dp4rfc8oiawyt" +path="res://.godot/imported/muzzle_05_rotated.png-4b848ac31881bea17d964b4c7126a1a4.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/particles/Rotated/muzzle_05_rotated.png" +dest_files=["res://.godot/imported/muzzle_05_rotated.png-4b848ac31881bea17d964b4c7126a1a4.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/particles/Rotated/spark_05_rotated.png b/resources/particles/Rotated/spark_05_rotated.png new file mode 100644 index 0000000..f977732 Binary files /dev/null and b/resources/particles/Rotated/spark_05_rotated.png differ diff --git a/resources/particles/Rotated/spark_05_rotated.png.import b/resources/particles/Rotated/spark_05_rotated.png.import new file mode 100644 index 0000000..6f1ad94 --- /dev/null +++ b/resources/particles/Rotated/spark_05_rotated.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://besxsc6v774l5" +path="res://.godot/imported/spark_05_rotated.png-df14b4dc3c8ceb7955ed5db9b099a4d8.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/particles/Rotated/spark_05_rotated.png" +dest_files=["res://.godot/imported/spark_05_rotated.png-df14b4dc3c8ceb7955ed5db9b099a4d8.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/particles/Rotated/spark_06_rotated.png b/resources/particles/Rotated/spark_06_rotated.png new file mode 100644 index 0000000..c383759 Binary files /dev/null and b/resources/particles/Rotated/spark_06_rotated.png differ diff --git a/resources/particles/Rotated/spark_06_rotated.png.import b/resources/particles/Rotated/spark_06_rotated.png.import new file mode 100644 index 0000000..09e0a68 --- /dev/null +++ b/resources/particles/Rotated/spark_06_rotated.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dq74ch45m4ro0" +path="res://.godot/imported/spark_06_rotated.png-8b54c342da335fbcb34ffff7b91e11bc.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/particles/Rotated/spark_06_rotated.png" +dest_files=["res://.godot/imported/spark_06_rotated.png-8b54c342da335fbcb34ffff7b91e11bc.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/particles/Rotated/trace_01_rotated.png b/resources/particles/Rotated/trace_01_rotated.png new file mode 100644 index 0000000..90b6f11 Binary files /dev/null and b/resources/particles/Rotated/trace_01_rotated.png differ diff --git a/resources/particles/Rotated/trace_01_rotated.png.import b/resources/particles/Rotated/trace_01_rotated.png.import new file mode 100644 index 0000000..c74890d --- /dev/null +++ b/resources/particles/Rotated/trace_01_rotated.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bw4vlgqfcq5d0" +path="res://.godot/imported/trace_01_rotated.png-5f7142602eb08906a50fc94cb1e8951e.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/particles/Rotated/trace_01_rotated.png" +dest_files=["res://.godot/imported/trace_01_rotated.png-5f7142602eb08906a50fc94cb1e8951e.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/particles/Rotated/trace_02_rotated.png b/resources/particles/Rotated/trace_02_rotated.png new file mode 100644 index 0000000..faca937 Binary files /dev/null and b/resources/particles/Rotated/trace_02_rotated.png differ diff --git a/resources/particles/Rotated/trace_02_rotated.png.import b/resources/particles/Rotated/trace_02_rotated.png.import new file mode 100644 index 0000000..3ad2000 --- /dev/null +++ b/resources/particles/Rotated/trace_02_rotated.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cmrhd17m6nptn" +path="res://.godot/imported/trace_02_rotated.png-d3e2f1777f274e7fac349f2391397506.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/particles/Rotated/trace_02_rotated.png" +dest_files=["res://.godot/imported/trace_02_rotated.png-d3e2f1777f274e7fac349f2391397506.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/particles/Rotated/trace_03_rotated.png b/resources/particles/Rotated/trace_03_rotated.png new file mode 100644 index 0000000..2a5315a Binary files /dev/null and b/resources/particles/Rotated/trace_03_rotated.png differ diff --git a/resources/particles/Rotated/trace_03_rotated.png.import b/resources/particles/Rotated/trace_03_rotated.png.import new file mode 100644 index 0000000..f4f7234 --- /dev/null +++ b/resources/particles/Rotated/trace_03_rotated.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://csdf8f5kpl0e6" +path="res://.godot/imported/trace_03_rotated.png-aec26ab015229a0be67a6547b161de82.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/particles/Rotated/trace_03_rotated.png" +dest_files=["res://.godot/imported/trace_03_rotated.png-aec26ab015229a0be67a6547b161de82.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/particles/Rotated/trace_04_rotated.png b/resources/particles/Rotated/trace_04_rotated.png new file mode 100644 index 0000000..196d41a Binary files /dev/null and b/resources/particles/Rotated/trace_04_rotated.png differ diff --git a/resources/particles/Rotated/trace_04_rotated.png.import b/resources/particles/Rotated/trace_04_rotated.png.import new file mode 100644 index 0000000..07af74f --- /dev/null +++ b/resources/particles/Rotated/trace_04_rotated.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://ymv8mr857fuo" +path="res://.godot/imported/trace_04_rotated.png-93acf64251d155e3ad9b154ef5d97c42.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/particles/Rotated/trace_04_rotated.png" +dest_files=["res://.godot/imported/trace_04_rotated.png-93acf64251d155e3ad9b154ef5d97c42.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/particles/Rotated/trace_05_rotated.png b/resources/particles/Rotated/trace_05_rotated.png new file mode 100644 index 0000000..bbd1017 Binary files /dev/null and b/resources/particles/Rotated/trace_05_rotated.png differ diff --git a/resources/particles/Rotated/trace_05_rotated.png.import b/resources/particles/Rotated/trace_05_rotated.png.import new file mode 100644 index 0000000..000e636 --- /dev/null +++ b/resources/particles/Rotated/trace_05_rotated.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bjxcf6k1pqisw" +path="res://.godot/imported/trace_05_rotated.png-85edeaca4ee6d6e6e64e44329435f1f1.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/particles/Rotated/trace_05_rotated.png" +dest_files=["res://.godot/imported/trace_05_rotated.png-85edeaca4ee6d6e6e64e44329435f1f1.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/particles/Rotated/trace_06_rotated.png b/resources/particles/Rotated/trace_06_rotated.png new file mode 100644 index 0000000..046d244 Binary files /dev/null and b/resources/particles/Rotated/trace_06_rotated.png differ diff --git a/resources/particles/Rotated/trace_06_rotated.png.import b/resources/particles/Rotated/trace_06_rotated.png.import new file mode 100644 index 0000000..8f18ed3 --- /dev/null +++ b/resources/particles/Rotated/trace_06_rotated.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cv6f64wula7d8" +path="res://.godot/imported/trace_06_rotated.png-49db077cd9ae023597f6d958fc0ae25d.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/particles/Rotated/trace_06_rotated.png" +dest_files=["res://.godot/imported/trace_06_rotated.png-49db077cd9ae023597f6d958fc0ae25d.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/particles/Rotated/trace_07_rotated.png b/resources/particles/Rotated/trace_07_rotated.png new file mode 100644 index 0000000..312999d Binary files /dev/null and b/resources/particles/Rotated/trace_07_rotated.png differ diff --git a/resources/particles/Rotated/trace_07_rotated.png.import b/resources/particles/Rotated/trace_07_rotated.png.import new file mode 100644 index 0000000..22351ca --- /dev/null +++ b/resources/particles/Rotated/trace_07_rotated.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cmeiab1fgm88y" +path="res://.godot/imported/trace_07_rotated.png-3875db88b2f36d8c2d6c8ac9e79b3feb.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/particles/Rotated/trace_07_rotated.png" +dest_files=["res://.godot/imported/trace_07_rotated.png-3875db88b2f36d8c2d6c8ac9e79b3feb.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/particles/circle_01.png b/resources/particles/circle_01.png new file mode 100644 index 0000000..adabdd9 Binary files /dev/null and b/resources/particles/circle_01.png differ diff --git a/resources/particles/circle_01.png.import b/resources/particles/circle_01.png.import new file mode 100644 index 0000000..4ed59ce --- /dev/null +++ b/resources/particles/circle_01.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://hrclawongg7g" +path="res://.godot/imported/circle_01.png-4f2f43033970b129a841c702b093f7c1.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/particles/circle_01.png" +dest_files=["res://.godot/imported/circle_01.png-4f2f43033970b129a841c702b093f7c1.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/particles/circle_02.png b/resources/particles/circle_02.png new file mode 100644 index 0000000..a4c3140 Binary files /dev/null and b/resources/particles/circle_02.png differ diff --git a/resources/particles/circle_02.png.import b/resources/particles/circle_02.png.import new file mode 100644 index 0000000..25e8922 --- /dev/null +++ b/resources/particles/circle_02.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://nmb140hrssbi" +path="res://.godot/imported/circle_02.png-d412a5d2e8b4f137cb21363cfdc57da4.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/particles/circle_02.png" +dest_files=["res://.godot/imported/circle_02.png-d412a5d2e8b4f137cb21363cfdc57da4.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/particles/circle_03.png b/resources/particles/circle_03.png new file mode 100644 index 0000000..eb771ec Binary files /dev/null and b/resources/particles/circle_03.png differ diff --git a/resources/particles/circle_03.png.import b/resources/particles/circle_03.png.import new file mode 100644 index 0000000..ec06455 --- /dev/null +++ b/resources/particles/circle_03.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cqjnkq610r0f5" +path="res://.godot/imported/circle_03.png-fb37ce88933a664b331c6f7d7fa3a440.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/particles/circle_03.png" +dest_files=["res://.godot/imported/circle_03.png-fb37ce88933a664b331c6f7d7fa3a440.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/particles/circle_04.png b/resources/particles/circle_04.png new file mode 100644 index 0000000..3982b03 Binary files /dev/null and b/resources/particles/circle_04.png differ diff --git a/resources/particles/circle_04.png.import b/resources/particles/circle_04.png.import new file mode 100644 index 0000000..f8d9dc3 --- /dev/null +++ b/resources/particles/circle_04.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://yuv83o7hqlrp" +path="res://.godot/imported/circle_04.png-a721cd5e4562e2055caeb24fcdf97d51.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/particles/circle_04.png" +dest_files=["res://.godot/imported/circle_04.png-a721cd5e4562e2055caeb24fcdf97d51.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/particles/circle_05.png b/resources/particles/circle_05.png new file mode 100644 index 0000000..8de3f69 Binary files /dev/null and b/resources/particles/circle_05.png differ diff --git a/resources/particles/circle_05.png.import b/resources/particles/circle_05.png.import new file mode 100644 index 0000000..a204878 --- /dev/null +++ b/resources/particles/circle_05.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://c0ps3sphphdtq" +path="res://.godot/imported/circle_05.png-66d38eb317a5ca0bb3452c1f1e084aaf.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/particles/circle_05.png" +dest_files=["res://.godot/imported/circle_05.png-66d38eb317a5ca0bb3452c1f1e084aaf.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/particles/dirt_01.png b/resources/particles/dirt_01.png new file mode 100644 index 0000000..63f8fd5 Binary files /dev/null and b/resources/particles/dirt_01.png differ diff --git a/resources/particles/dirt_01.png.import b/resources/particles/dirt_01.png.import new file mode 100644 index 0000000..393d2a1 --- /dev/null +++ b/resources/particles/dirt_01.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://c2t05b42d05rh" +path="res://.godot/imported/dirt_01.png-7918771294799a4c7aadda9a415e09fd.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/particles/dirt_01.png" +dest_files=["res://.godot/imported/dirt_01.png-7918771294799a4c7aadda9a415e09fd.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/particles/dirt_02.png b/resources/particles/dirt_02.png new file mode 100644 index 0000000..165015d Binary files /dev/null and b/resources/particles/dirt_02.png differ diff --git a/resources/particles/dirt_02.png.import b/resources/particles/dirt_02.png.import new file mode 100644 index 0000000..b2c71ed --- /dev/null +++ b/resources/particles/dirt_02.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bngkgyyi4qvx6" +path="res://.godot/imported/dirt_02.png-c7db7a3edca49c5b26a2570e13fbd7dc.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/particles/dirt_02.png" +dest_files=["res://.godot/imported/dirt_02.png-c7db7a3edca49c5b26a2570e13fbd7dc.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/particles/dirt_03.png b/resources/particles/dirt_03.png new file mode 100644 index 0000000..27e3056 Binary files /dev/null and b/resources/particles/dirt_03.png differ diff --git a/resources/particles/dirt_03.png.import b/resources/particles/dirt_03.png.import new file mode 100644 index 0000000..8206612 --- /dev/null +++ b/resources/particles/dirt_03.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bxfthupxugacj" +path="res://.godot/imported/dirt_03.png-e8d84a4d40f760d1ac63b93fbfbd097a.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/particles/dirt_03.png" +dest_files=["res://.godot/imported/dirt_03.png-e8d84a4d40f760d1ac63b93fbfbd097a.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/particles/fire_01.png b/resources/particles/fire_01.png new file mode 100644 index 0000000..a83b6db Binary files /dev/null and b/resources/particles/fire_01.png differ diff --git a/resources/particles/fire_01.png.import b/resources/particles/fire_01.png.import new file mode 100644 index 0000000..4c3b1ac --- /dev/null +++ b/resources/particles/fire_01.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://d3tkm6gougmg5" +path="res://.godot/imported/fire_01.png-089e87564ec9e9ed367f95f9a5e86cb0.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/particles/fire_01.png" +dest_files=["res://.godot/imported/fire_01.png-089e87564ec9e9ed367f95f9a5e86cb0.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/particles/fire_02.png b/resources/particles/fire_02.png new file mode 100644 index 0000000..8db26fe Binary files /dev/null and b/resources/particles/fire_02.png differ diff --git a/resources/particles/fire_02.png.import b/resources/particles/fire_02.png.import new file mode 100644 index 0000000..788d02d --- /dev/null +++ b/resources/particles/fire_02.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dndxpbufjc73h" +path="res://.godot/imported/fire_02.png-0468e3249b3999bdd80660275f065e2d.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/particles/fire_02.png" +dest_files=["res://.godot/imported/fire_02.png-0468e3249b3999bdd80660275f065e2d.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/particles/flame_01.png b/resources/particles/flame_01.png new file mode 100644 index 0000000..6ad670b Binary files /dev/null and b/resources/particles/flame_01.png differ diff --git a/resources/particles/flame_01.png.import b/resources/particles/flame_01.png.import new file mode 100644 index 0000000..83dea84 --- /dev/null +++ b/resources/particles/flame_01.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dc62wp25ioiv4" +path="res://.godot/imported/flame_01.png-38f3b29ee7e18769199936c3e47dcab7.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/particles/flame_01.png" +dest_files=["res://.godot/imported/flame_01.png-38f3b29ee7e18769199936c3e47dcab7.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/particles/flame_02.png b/resources/particles/flame_02.png new file mode 100644 index 0000000..45046a9 Binary files /dev/null and b/resources/particles/flame_02.png differ diff --git a/resources/particles/flame_02.png.import b/resources/particles/flame_02.png.import new file mode 100644 index 0000000..e6d7a2d --- /dev/null +++ b/resources/particles/flame_02.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cxi1hhl1tiqxk" +path="res://.godot/imported/flame_02.png-f6367973d2579f98da68343457c31d82.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/particles/flame_02.png" +dest_files=["res://.godot/imported/flame_02.png-f6367973d2579f98da68343457c31d82.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/particles/flame_03.png b/resources/particles/flame_03.png new file mode 100644 index 0000000..e603027 Binary files /dev/null and b/resources/particles/flame_03.png differ diff --git a/resources/particles/flame_03.png.import b/resources/particles/flame_03.png.import new file mode 100644 index 0000000..cf7a097 --- /dev/null +++ b/resources/particles/flame_03.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cbc0pjnn5bfpw" +path="res://.godot/imported/flame_03.png-af5bc731a872a4a6b94a49f425d17fa0.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/particles/flame_03.png" +dest_files=["res://.godot/imported/flame_03.png-af5bc731a872a4a6b94a49f425d17fa0.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/particles/flame_04.png b/resources/particles/flame_04.png new file mode 100644 index 0000000..ac09937 Binary files /dev/null and b/resources/particles/flame_04.png differ diff --git a/resources/particles/flame_04.png.import b/resources/particles/flame_04.png.import new file mode 100644 index 0000000..b569edf --- /dev/null +++ b/resources/particles/flame_04.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://4tn384bsd4u" +path="res://.godot/imported/flame_04.png-9b7f7e951f26163bf04cf35e2e259828.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/particles/flame_04.png" +dest_files=["res://.godot/imported/flame_04.png-9b7f7e951f26163bf04cf35e2e259828.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/particles/flame_05.png b/resources/particles/flame_05.png new file mode 100644 index 0000000..e221498 Binary files /dev/null and b/resources/particles/flame_05.png differ diff --git a/resources/particles/flame_05.png.import b/resources/particles/flame_05.png.import new file mode 100644 index 0000000..6431b39 --- /dev/null +++ b/resources/particles/flame_05.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b8osgdlin5dtj" +path="res://.godot/imported/flame_05.png-ceae65ceb3a8872dcf9b72c7752d06cf.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/particles/flame_05.png" +dest_files=["res://.godot/imported/flame_05.png-ceae65ceb3a8872dcf9b72c7752d06cf.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/particles/flame_06.png b/resources/particles/flame_06.png new file mode 100644 index 0000000..f23303b Binary files /dev/null and b/resources/particles/flame_06.png differ diff --git a/resources/particles/flame_06.png.import b/resources/particles/flame_06.png.import new file mode 100644 index 0000000..f804c48 --- /dev/null +++ b/resources/particles/flame_06.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dj4rrqqn8td1x" +path="res://.godot/imported/flame_06.png-681a167fd8e14ff973127a5be2666507.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/particles/flame_06.png" +dest_files=["res://.godot/imported/flame_06.png-681a167fd8e14ff973127a5be2666507.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/particles/flare_01.png b/resources/particles/flare_01.png new file mode 100644 index 0000000..fb452a1 Binary files /dev/null and b/resources/particles/flare_01.png differ diff --git a/resources/particles/flare_01.png.import b/resources/particles/flare_01.png.import new file mode 100644 index 0000000..48b8542 --- /dev/null +++ b/resources/particles/flare_01.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cfh4p53jyxoqd" +path="res://.godot/imported/flare_01.png-7fa27b6f62b899a95280391be9422249.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/particles/flare_01.png" +dest_files=["res://.godot/imported/flare_01.png-7fa27b6f62b899a95280391be9422249.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/particles/light_01.png b/resources/particles/light_01.png new file mode 100644 index 0000000..71f8f0f Binary files /dev/null and b/resources/particles/light_01.png differ diff --git a/resources/particles/light_01.png.import b/resources/particles/light_01.png.import new file mode 100644 index 0000000..487593a --- /dev/null +++ b/resources/particles/light_01.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://d2w31408ak4hg" +path="res://.godot/imported/light_01.png-f13cb0a6c0df5f4d44f6a8dfb9956ce5.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/particles/light_01.png" +dest_files=["res://.godot/imported/light_01.png-f13cb0a6c0df5f4d44f6a8dfb9956ce5.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/particles/light_02.png b/resources/particles/light_02.png new file mode 100644 index 0000000..88b22c6 Binary files /dev/null and b/resources/particles/light_02.png differ diff --git a/resources/particles/light_02.png.import b/resources/particles/light_02.png.import new file mode 100644 index 0000000..d5c7317 --- /dev/null +++ b/resources/particles/light_02.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b7rsw3shrva2n" +path="res://.godot/imported/light_02.png-c7d98a10e5d894ae79d251c80583ed99.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/particles/light_02.png" +dest_files=["res://.godot/imported/light_02.png-c7d98a10e5d894ae79d251c80583ed99.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/particles/light_03.png b/resources/particles/light_03.png new file mode 100644 index 0000000..2ca26ca Binary files /dev/null and b/resources/particles/light_03.png differ diff --git a/resources/particles/light_03.png.import b/resources/particles/light_03.png.import new file mode 100644 index 0000000..5760116 --- /dev/null +++ b/resources/particles/light_03.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dn35q8nkyy8q2" +path="res://.godot/imported/light_03.png-17006afe219fce68be2fc25030d0678a.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/particles/light_03.png" +dest_files=["res://.godot/imported/light_03.png-17006afe219fce68be2fc25030d0678a.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/particles/magic_01.png b/resources/particles/magic_01.png new file mode 100644 index 0000000..3c69391 Binary files /dev/null and b/resources/particles/magic_01.png differ diff --git a/resources/particles/magic_01.png.import b/resources/particles/magic_01.png.import new file mode 100644 index 0000000..b6130e4 --- /dev/null +++ b/resources/particles/magic_01.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dap82i06dftyb" +path="res://.godot/imported/magic_01.png-6c422915c5cacd4552151f024767a4ba.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/particles/magic_01.png" +dest_files=["res://.godot/imported/magic_01.png-6c422915c5cacd4552151f024767a4ba.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/particles/magic_02.png b/resources/particles/magic_02.png new file mode 100644 index 0000000..a6edb7f Binary files /dev/null and b/resources/particles/magic_02.png differ diff --git a/resources/particles/magic_02.png.import b/resources/particles/magic_02.png.import new file mode 100644 index 0000000..3ebb8ce --- /dev/null +++ b/resources/particles/magic_02.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dq1slf32wysuv" +path="res://.godot/imported/magic_02.png-b88657ea9ef1a97243ec92e308581ead.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/particles/magic_02.png" +dest_files=["res://.godot/imported/magic_02.png-b88657ea9ef1a97243ec92e308581ead.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/particles/magic_03.png b/resources/particles/magic_03.png new file mode 100644 index 0000000..65f69d6 Binary files /dev/null and b/resources/particles/magic_03.png differ diff --git a/resources/particles/magic_03.png.import b/resources/particles/magic_03.png.import new file mode 100644 index 0000000..deeb6d0 --- /dev/null +++ b/resources/particles/magic_03.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dne585w1xxlvf" +path="res://.godot/imported/magic_03.png-abb0bda8514361d70c959619c31d55b7.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/particles/magic_03.png" +dest_files=["res://.godot/imported/magic_03.png-abb0bda8514361d70c959619c31d55b7.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/particles/magic_04.png b/resources/particles/magic_04.png new file mode 100644 index 0000000..3c5092c Binary files /dev/null and b/resources/particles/magic_04.png differ diff --git a/resources/particles/magic_04.png.import b/resources/particles/magic_04.png.import new file mode 100644 index 0000000..c63862b --- /dev/null +++ b/resources/particles/magic_04.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dvvqnxkgc4tb7" +path="res://.godot/imported/magic_04.png-cbaa231d2e72921d520db65ef4f2abf9.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/particles/magic_04.png" +dest_files=["res://.godot/imported/magic_04.png-cbaa231d2e72921d520db65ef4f2abf9.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/particles/magic_05.png b/resources/particles/magic_05.png new file mode 100644 index 0000000..a46b215 Binary files /dev/null and b/resources/particles/magic_05.png differ diff --git a/resources/particles/magic_05.png.import b/resources/particles/magic_05.png.import new file mode 100644 index 0000000..1cf0533 --- /dev/null +++ b/resources/particles/magic_05.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://s00aqdv1r4rb" +path="res://.godot/imported/magic_05.png-1c0b0c8800a58b70d294254bee81b5ad.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/particles/magic_05.png" +dest_files=["res://.godot/imported/magic_05.png-1c0b0c8800a58b70d294254bee81b5ad.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/particles/muzzle_01.png b/resources/particles/muzzle_01.png new file mode 100644 index 0000000..27a2f4c Binary files /dev/null and b/resources/particles/muzzle_01.png differ diff --git a/resources/particles/muzzle_01.png.import b/resources/particles/muzzle_01.png.import new file mode 100644 index 0000000..08e5dd2 --- /dev/null +++ b/resources/particles/muzzle_01.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bnlsef8odlxi8" +path="res://.godot/imported/muzzle_01.png-586281dc1580403e8983a9e10e2a0a3f.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/particles/muzzle_01.png" +dest_files=["res://.godot/imported/muzzle_01.png-586281dc1580403e8983a9e10e2a0a3f.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/particles/muzzle_02.png b/resources/particles/muzzle_02.png new file mode 100644 index 0000000..cfd2a7c Binary files /dev/null and b/resources/particles/muzzle_02.png differ diff --git a/resources/particles/muzzle_02.png.import b/resources/particles/muzzle_02.png.import new file mode 100644 index 0000000..e5ba341 --- /dev/null +++ b/resources/particles/muzzle_02.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dql0r4l0k45xp" +path="res://.godot/imported/muzzle_02.png-bbcb8580fd80fa3a5c7e32e1a87ab71f.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/particles/muzzle_02.png" +dest_files=["res://.godot/imported/muzzle_02.png-bbcb8580fd80fa3a5c7e32e1a87ab71f.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/particles/muzzle_03.png b/resources/particles/muzzle_03.png new file mode 100644 index 0000000..8ee4019 Binary files /dev/null and b/resources/particles/muzzle_03.png differ diff --git a/resources/particles/muzzle_03.png.import b/resources/particles/muzzle_03.png.import new file mode 100644 index 0000000..36840f6 --- /dev/null +++ b/resources/particles/muzzle_03.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cnl1ptiicgj6o" +path="res://.godot/imported/muzzle_03.png-29fdd94118b9794eddc3a6e9f0d23f82.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/particles/muzzle_03.png" +dest_files=["res://.godot/imported/muzzle_03.png-29fdd94118b9794eddc3a6e9f0d23f82.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/particles/muzzle_04.png b/resources/particles/muzzle_04.png new file mode 100644 index 0000000..ee4f0e7 Binary files /dev/null and b/resources/particles/muzzle_04.png differ diff --git a/resources/particles/muzzle_04.png.import b/resources/particles/muzzle_04.png.import new file mode 100644 index 0000000..58f45d6 --- /dev/null +++ b/resources/particles/muzzle_04.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bj546f3b3ygva" +path="res://.godot/imported/muzzle_04.png-bcc5c73e2a8d5d0132d12c1a18aab4b6.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/particles/muzzle_04.png" +dest_files=["res://.godot/imported/muzzle_04.png-bcc5c73e2a8d5d0132d12c1a18aab4b6.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/particles/muzzle_05.png b/resources/particles/muzzle_05.png new file mode 100644 index 0000000..93be2c7 Binary files /dev/null and b/resources/particles/muzzle_05.png differ diff --git a/resources/particles/muzzle_05.png.import b/resources/particles/muzzle_05.png.import new file mode 100644 index 0000000..1b598a4 --- /dev/null +++ b/resources/particles/muzzle_05.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://ddw1n34hqi6hd" +path="res://.godot/imported/muzzle_05.png-1737f74ee75f610381e966de6c5840fd.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/particles/muzzle_05.png" +dest_files=["res://.godot/imported/muzzle_05.png-1737f74ee75f610381e966de6c5840fd.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/particles/scorch_01.png b/resources/particles/scorch_01.png new file mode 100644 index 0000000..b6af791 Binary files /dev/null and b/resources/particles/scorch_01.png differ diff --git a/resources/particles/scorch_01.png.import b/resources/particles/scorch_01.png.import new file mode 100644 index 0000000..9a53ace --- /dev/null +++ b/resources/particles/scorch_01.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://5yt3fkbxbr58" +path="res://.godot/imported/scorch_01.png-3e65626136fd60337cba4ed932ea56a9.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/particles/scorch_01.png" +dest_files=["res://.godot/imported/scorch_01.png-3e65626136fd60337cba4ed932ea56a9.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/particles/scorch_02.png b/resources/particles/scorch_02.png new file mode 100644 index 0000000..942f4c2 Binary files /dev/null and b/resources/particles/scorch_02.png differ diff --git a/resources/particles/scorch_02.png.import b/resources/particles/scorch_02.png.import new file mode 100644 index 0000000..a4ab9dd --- /dev/null +++ b/resources/particles/scorch_02.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://v6qcvda2vv8j" +path="res://.godot/imported/scorch_02.png-411b68e9f23cead52457edf96aa00b02.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/particles/scorch_02.png" +dest_files=["res://.godot/imported/scorch_02.png-411b68e9f23cead52457edf96aa00b02.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/particles/scorch_03.png b/resources/particles/scorch_03.png new file mode 100644 index 0000000..48f13aa Binary files /dev/null and b/resources/particles/scorch_03.png differ diff --git a/resources/particles/scorch_03.png.import b/resources/particles/scorch_03.png.import new file mode 100644 index 0000000..b265034 --- /dev/null +++ b/resources/particles/scorch_03.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bd7afk5i62bf6" +path="res://.godot/imported/scorch_03.png-557c076d2ded31e7041ac27ab5a72ca4.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/particles/scorch_03.png" +dest_files=["res://.godot/imported/scorch_03.png-557c076d2ded31e7041ac27ab5a72ca4.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/particles/scratch_01.png b/resources/particles/scratch_01.png new file mode 100644 index 0000000..9f0854b Binary files /dev/null and b/resources/particles/scratch_01.png differ diff --git a/resources/particles/scratch_01.png.import b/resources/particles/scratch_01.png.import new file mode 100644 index 0000000..466fe65 --- /dev/null +++ b/resources/particles/scratch_01.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dlq62klds4pxe" +path="res://.godot/imported/scratch_01.png-f6aa8877e51521bc440c44e1ecb11a17.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/particles/scratch_01.png" +dest_files=["res://.godot/imported/scratch_01.png-f6aa8877e51521bc440c44e1ecb11a17.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/particles/slash_01.png b/resources/particles/slash_01.png new file mode 100644 index 0000000..c04fa2d Binary files /dev/null and b/resources/particles/slash_01.png differ diff --git a/resources/particles/slash_01.png.import b/resources/particles/slash_01.png.import new file mode 100644 index 0000000..b069f2c --- /dev/null +++ b/resources/particles/slash_01.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://qqmmt81d1s3w" +path="res://.godot/imported/slash_01.png-46bdc4468451e75261fc33f1140ed615.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/particles/slash_01.png" +dest_files=["res://.godot/imported/slash_01.png-46bdc4468451e75261fc33f1140ed615.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/particles/slash_02.png b/resources/particles/slash_02.png new file mode 100644 index 0000000..59ae0d4 Binary files /dev/null and b/resources/particles/slash_02.png differ diff --git a/resources/particles/slash_02.png.import b/resources/particles/slash_02.png.import new file mode 100644 index 0000000..cf2c647 --- /dev/null +++ b/resources/particles/slash_02.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://def3gu2yu6k7w" +path="res://.godot/imported/slash_02.png-aa11108d67248455710d09740beb192e.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/particles/slash_02.png" +dest_files=["res://.godot/imported/slash_02.png-aa11108d67248455710d09740beb192e.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/particles/slash_03.png b/resources/particles/slash_03.png new file mode 100644 index 0000000..9241004 Binary files /dev/null and b/resources/particles/slash_03.png differ diff --git a/resources/particles/slash_03.png.import b/resources/particles/slash_03.png.import new file mode 100644 index 0000000..c7abd8d --- /dev/null +++ b/resources/particles/slash_03.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b0ebfjk8tdr01" +path="res://.godot/imported/slash_03.png-f2e2ee897bdaf46ec3739766b1f651af.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/particles/slash_03.png" +dest_files=["res://.godot/imported/slash_03.png-f2e2ee897bdaf46ec3739766b1f651af.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/particles/slash_04.png b/resources/particles/slash_04.png new file mode 100644 index 0000000..ee05daa Binary files /dev/null and b/resources/particles/slash_04.png differ diff --git a/resources/particles/slash_04.png.import b/resources/particles/slash_04.png.import new file mode 100644 index 0000000..99a6c44 --- /dev/null +++ b/resources/particles/slash_04.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bqsm37yai1ymi" +path="res://.godot/imported/slash_04.png-b03acc47b86ca99e1060f1fa72ec9aa1.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/particles/slash_04.png" +dest_files=["res://.godot/imported/slash_04.png-b03acc47b86ca99e1060f1fa72ec9aa1.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/particles/smoke_01.png b/resources/particles/smoke_01.png new file mode 100644 index 0000000..1cd418e Binary files /dev/null and b/resources/particles/smoke_01.png differ diff --git a/resources/particles/smoke_01.png.import b/resources/particles/smoke_01.png.import new file mode 100644 index 0000000..b6293d7 --- /dev/null +++ b/resources/particles/smoke_01.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b2jr0mt5xymog" +path="res://.godot/imported/smoke_01.png-7ca6b8391fdb223c75460b165eb3d7e9.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/particles/smoke_01.png" +dest_files=["res://.godot/imported/smoke_01.png-7ca6b8391fdb223c75460b165eb3d7e9.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/particles/smoke_02.png b/resources/particles/smoke_02.png new file mode 100644 index 0000000..d866368 Binary files /dev/null and b/resources/particles/smoke_02.png differ diff --git a/resources/particles/smoke_02.png.import b/resources/particles/smoke_02.png.import new file mode 100644 index 0000000..4ff0c15 --- /dev/null +++ b/resources/particles/smoke_02.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://vt1kv1l5swop" +path="res://.godot/imported/smoke_02.png-f6cb7ddfff3096180447e5427c0e846f.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/particles/smoke_02.png" +dest_files=["res://.godot/imported/smoke_02.png-f6cb7ddfff3096180447e5427c0e846f.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/particles/smoke_03.png b/resources/particles/smoke_03.png new file mode 100644 index 0000000..909717a Binary files /dev/null and b/resources/particles/smoke_03.png differ diff --git a/resources/particles/smoke_03.png.import b/resources/particles/smoke_03.png.import new file mode 100644 index 0000000..434b019 --- /dev/null +++ b/resources/particles/smoke_03.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cdfemrfnwkkol" +path="res://.godot/imported/smoke_03.png-f995898695693a7e3879a620be90e61d.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/particles/smoke_03.png" +dest_files=["res://.godot/imported/smoke_03.png-f995898695693a7e3879a620be90e61d.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/particles/smoke_04.png b/resources/particles/smoke_04.png new file mode 100644 index 0000000..74a2695 Binary files /dev/null and b/resources/particles/smoke_04.png differ diff --git a/resources/particles/smoke_04.png.import b/resources/particles/smoke_04.png.import new file mode 100644 index 0000000..1f98cec --- /dev/null +++ b/resources/particles/smoke_04.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bfr82mokxi3cf" +path="res://.godot/imported/smoke_04.png-cb855e1f982b9d909a697f95ddf2b800.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/particles/smoke_04.png" +dest_files=["res://.godot/imported/smoke_04.png-cb855e1f982b9d909a697f95ddf2b800.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/particles/smoke_05.png b/resources/particles/smoke_05.png new file mode 100644 index 0000000..0ac46dc Binary files /dev/null and b/resources/particles/smoke_05.png differ diff --git a/resources/particles/smoke_05.png.import b/resources/particles/smoke_05.png.import new file mode 100644 index 0000000..41aadd1 --- /dev/null +++ b/resources/particles/smoke_05.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bgdkco3wakqx2" +path="res://.godot/imported/smoke_05.png-f2ae5d276cf3f2711ef909b979f92a82.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/particles/smoke_05.png" +dest_files=["res://.godot/imported/smoke_05.png-f2ae5d276cf3f2711ef909b979f92a82.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/particles/smoke_06.png b/resources/particles/smoke_06.png new file mode 100644 index 0000000..300c5fa Binary files /dev/null and b/resources/particles/smoke_06.png differ diff --git a/resources/particles/smoke_06.png.import b/resources/particles/smoke_06.png.import new file mode 100644 index 0000000..050a5c0 --- /dev/null +++ b/resources/particles/smoke_06.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cahxidyphb6a2" +path="res://.godot/imported/smoke_06.png-06ecdc774d9c151e74e05898dbbf0770.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/particles/smoke_06.png" +dest_files=["res://.godot/imported/smoke_06.png-06ecdc774d9c151e74e05898dbbf0770.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/particles/smoke_07.png b/resources/particles/smoke_07.png new file mode 100644 index 0000000..fb78c0f Binary files /dev/null and b/resources/particles/smoke_07.png differ diff --git a/resources/particles/smoke_07.png.import b/resources/particles/smoke_07.png.import new file mode 100644 index 0000000..b7587bc --- /dev/null +++ b/resources/particles/smoke_07.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://csecwup5tv1rk" +path="res://.godot/imported/smoke_07.png-114411be1c6610139685c2515cf176e9.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/particles/smoke_07.png" +dest_files=["res://.godot/imported/smoke_07.png-114411be1c6610139685c2515cf176e9.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/particles/smoke_08.png b/resources/particles/smoke_08.png new file mode 100644 index 0000000..feec49e Binary files /dev/null and b/resources/particles/smoke_08.png differ diff --git a/resources/particles/smoke_08.png.import b/resources/particles/smoke_08.png.import new file mode 100644 index 0000000..248449c --- /dev/null +++ b/resources/particles/smoke_08.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://c8fl5wtmh8hb7" +path="res://.godot/imported/smoke_08.png-0cd17d0e65d621069669ab9ed49cda60.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/particles/smoke_08.png" +dest_files=["res://.godot/imported/smoke_08.png-0cd17d0e65d621069669ab9ed49cda60.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/particles/smoke_09.png b/resources/particles/smoke_09.png new file mode 100644 index 0000000..21178df Binary files /dev/null and b/resources/particles/smoke_09.png differ diff --git a/resources/particles/smoke_09.png.import b/resources/particles/smoke_09.png.import new file mode 100644 index 0000000..03a8837 --- /dev/null +++ b/resources/particles/smoke_09.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://hr7vhpxx58ea" +path="res://.godot/imported/smoke_09.png-770b7213b443bc88e2fda156c141216b.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/particles/smoke_09.png" +dest_files=["res://.godot/imported/smoke_09.png-770b7213b443bc88e2fda156c141216b.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/particles/smoke_10.png b/resources/particles/smoke_10.png new file mode 100644 index 0000000..8f8effe Binary files /dev/null and b/resources/particles/smoke_10.png differ diff --git a/resources/particles/smoke_10.png.import b/resources/particles/smoke_10.png.import new file mode 100644 index 0000000..af533d1 --- /dev/null +++ b/resources/particles/smoke_10.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cu8e0et8lxs7o" +path="res://.godot/imported/smoke_10.png-e1af9d495a1836a9b50028a733539d66.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/particles/smoke_10.png" +dest_files=["res://.godot/imported/smoke_10.png-e1af9d495a1836a9b50028a733539d66.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/particles/spark_01.png b/resources/particles/spark_01.png new file mode 100644 index 0000000..4b51c09 Binary files /dev/null and b/resources/particles/spark_01.png differ diff --git a/resources/particles/spark_01.png.import b/resources/particles/spark_01.png.import new file mode 100644 index 0000000..aa877b8 --- /dev/null +++ b/resources/particles/spark_01.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bdr643iw7a7e3" +path="res://.godot/imported/spark_01.png-30b6d3b641606bdd2f3abc21b65b5d3a.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/particles/spark_01.png" +dest_files=["res://.godot/imported/spark_01.png-30b6d3b641606bdd2f3abc21b65b5d3a.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/particles/spark_02.png b/resources/particles/spark_02.png new file mode 100644 index 0000000..4116527 Binary files /dev/null and b/resources/particles/spark_02.png differ diff --git a/resources/particles/spark_02.png.import b/resources/particles/spark_02.png.import new file mode 100644 index 0000000..29c9177 --- /dev/null +++ b/resources/particles/spark_02.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cw54lkvuk1qjt" +path="res://.godot/imported/spark_02.png-f409deb1bc83d065cfd21581355491ea.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/particles/spark_02.png" +dest_files=["res://.godot/imported/spark_02.png-f409deb1bc83d065cfd21581355491ea.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/particles/spark_03.png b/resources/particles/spark_03.png new file mode 100644 index 0000000..6abfcb0 Binary files /dev/null and b/resources/particles/spark_03.png differ diff --git a/resources/particles/spark_03.png.import b/resources/particles/spark_03.png.import new file mode 100644 index 0000000..5e89375 --- /dev/null +++ b/resources/particles/spark_03.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cf7u5lt3ug7as" +path="res://.godot/imported/spark_03.png-54a521e9d499d5783ed98de8121b4c14.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/particles/spark_03.png" +dest_files=["res://.godot/imported/spark_03.png-54a521e9d499d5783ed98de8121b4c14.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/particles/spark_04.png b/resources/particles/spark_04.png new file mode 100644 index 0000000..98d0f0a Binary files /dev/null and b/resources/particles/spark_04.png differ diff --git a/resources/particles/spark_04.png.import b/resources/particles/spark_04.png.import new file mode 100644 index 0000000..a418c23 --- /dev/null +++ b/resources/particles/spark_04.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bi3k4vksp0tt0" +path="res://.godot/imported/spark_04.png-5644471b0bbd69c38acfd6b29899daef.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/particles/spark_04.png" +dest_files=["res://.godot/imported/spark_04.png-5644471b0bbd69c38acfd6b29899daef.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/particles/spark_05.png b/resources/particles/spark_05.png new file mode 100644 index 0000000..fae3ca7 Binary files /dev/null and b/resources/particles/spark_05.png differ diff --git a/resources/particles/spark_05.png.import b/resources/particles/spark_05.png.import new file mode 100644 index 0000000..fde7600 --- /dev/null +++ b/resources/particles/spark_05.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cbgdh4j33ivy0" +path="res://.godot/imported/spark_05.png-bdc9dd1afbac111fba71d78335c750af.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/particles/spark_05.png" +dest_files=["res://.godot/imported/spark_05.png-bdc9dd1afbac111fba71d78335c750af.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/particles/spark_06.png b/resources/particles/spark_06.png new file mode 100644 index 0000000..217d40a Binary files /dev/null and b/resources/particles/spark_06.png differ diff --git a/resources/particles/spark_06.png.import b/resources/particles/spark_06.png.import new file mode 100644 index 0000000..0e5c821 --- /dev/null +++ b/resources/particles/spark_06.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b8fkhkke0akki" +path="res://.godot/imported/spark_06.png-a8809089c082c4f7330f83a5570e3b49.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/particles/spark_06.png" +dest_files=["res://.godot/imported/spark_06.png-a8809089c082c4f7330f83a5570e3b49.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/particles/spark_07.png b/resources/particles/spark_07.png new file mode 100644 index 0000000..70fbfae Binary files /dev/null and b/resources/particles/spark_07.png differ diff --git a/resources/particles/spark_07.png.import b/resources/particles/spark_07.png.import new file mode 100644 index 0000000..bbcb8d4 --- /dev/null +++ b/resources/particles/spark_07.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dbbesfwpyay5b" +path="res://.godot/imported/spark_07.png-33a3c1ca8342294d43c4088161aeff0e.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/particles/spark_07.png" +dest_files=["res://.godot/imported/spark_07.png-33a3c1ca8342294d43c4088161aeff0e.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/particles/star_01.png b/resources/particles/star_01.png new file mode 100644 index 0000000..a012cf7 Binary files /dev/null and b/resources/particles/star_01.png differ diff --git a/resources/particles/star_01.png.import b/resources/particles/star_01.png.import new file mode 100644 index 0000000..66f1f98 --- /dev/null +++ b/resources/particles/star_01.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bl0vvsebpuo0g" +path="res://.godot/imported/star_01.png-83e5e4b835bd729bb3b5852f19cb2597.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/particles/star_01.png" +dest_files=["res://.godot/imported/star_01.png-83e5e4b835bd729bb3b5852f19cb2597.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/particles/star_02.png b/resources/particles/star_02.png new file mode 100644 index 0000000..aeb91fc Binary files /dev/null and b/resources/particles/star_02.png differ diff --git a/resources/particles/star_02.png.import b/resources/particles/star_02.png.import new file mode 100644 index 0000000..b343d1e --- /dev/null +++ b/resources/particles/star_02.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://c6tafh8u0smi5" +path="res://.godot/imported/star_02.png-8dd91deeed453ea30685a38db3e5b47f.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/particles/star_02.png" +dest_files=["res://.godot/imported/star_02.png-8dd91deeed453ea30685a38db3e5b47f.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/particles/star_03.png b/resources/particles/star_03.png new file mode 100644 index 0000000..f80a778 Binary files /dev/null and b/resources/particles/star_03.png differ diff --git a/resources/particles/star_03.png.import b/resources/particles/star_03.png.import new file mode 100644 index 0000000..2670856 --- /dev/null +++ b/resources/particles/star_03.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b7r4s5lfg23j4" +path="res://.godot/imported/star_03.png-ca496ebd92f2b8d26ad4705aac6f75e1.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/particles/star_03.png" +dest_files=["res://.godot/imported/star_03.png-ca496ebd92f2b8d26ad4705aac6f75e1.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/particles/star_04.png b/resources/particles/star_04.png new file mode 100644 index 0000000..5e241c6 Binary files /dev/null and b/resources/particles/star_04.png differ diff --git a/resources/particles/star_04.png.import b/resources/particles/star_04.png.import new file mode 100644 index 0000000..b3dda0c --- /dev/null +++ b/resources/particles/star_04.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dggjrwsvsvqdb" +path="res://.godot/imported/star_04.png-f4603e7bb6a2d810c01fb301fb3b71c7.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/particles/star_04.png" +dest_files=["res://.godot/imported/star_04.png-f4603e7bb6a2d810c01fb301fb3b71c7.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/particles/star_05.png b/resources/particles/star_05.png new file mode 100644 index 0000000..dfbd3b8 Binary files /dev/null and b/resources/particles/star_05.png differ diff --git a/resources/particles/star_05.png.import b/resources/particles/star_05.png.import new file mode 100644 index 0000000..69d2021 --- /dev/null +++ b/resources/particles/star_05.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cvfo1jwh54n2v" +path="res://.godot/imported/star_05.png-aedf54c5c809827e816d971214b559d3.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/particles/star_05.png" +dest_files=["res://.godot/imported/star_05.png-aedf54c5c809827e816d971214b559d3.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/particles/star_06.png b/resources/particles/star_06.png new file mode 100644 index 0000000..8ff3b13 Binary files /dev/null and b/resources/particles/star_06.png differ diff --git a/resources/particles/star_06.png.import b/resources/particles/star_06.png.import new file mode 100644 index 0000000..bd965f2 --- /dev/null +++ b/resources/particles/star_06.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://m6c8llu0yej3" +path="res://.godot/imported/star_06.png-e41ea8f37d19a6f55dc832d27ea64dfb.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/particles/star_06.png" +dest_files=["res://.godot/imported/star_06.png-e41ea8f37d19a6f55dc832d27ea64dfb.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/particles/star_07.png b/resources/particles/star_07.png new file mode 100644 index 0000000..bdcbc07 Binary files /dev/null and b/resources/particles/star_07.png differ diff --git a/resources/particles/star_07.png.import b/resources/particles/star_07.png.import new file mode 100644 index 0000000..8e53805 --- /dev/null +++ b/resources/particles/star_07.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://c6n7h1tnxi6s" +path="res://.godot/imported/star_07.png-f4001d10465cc012dbff58710a13c831.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/particles/star_07.png" +dest_files=["res://.godot/imported/star_07.png-f4001d10465cc012dbff58710a13c831.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/particles/star_08.png b/resources/particles/star_08.png new file mode 100644 index 0000000..5836541 Binary files /dev/null and b/resources/particles/star_08.png differ diff --git a/resources/particles/star_08.png.import b/resources/particles/star_08.png.import new file mode 100644 index 0000000..34b1195 --- /dev/null +++ b/resources/particles/star_08.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://c2w8e420gcbw8" +path="res://.godot/imported/star_08.png-bfd67955a94bca81b8e10b58c8a030aa.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/particles/star_08.png" +dest_files=["res://.godot/imported/star_08.png-bfd67955a94bca81b8e10b58c8a030aa.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/particles/star_09.png b/resources/particles/star_09.png new file mode 100644 index 0000000..35eab56 Binary files /dev/null and b/resources/particles/star_09.png differ diff --git a/resources/particles/star_09.png.import b/resources/particles/star_09.png.import new file mode 100644 index 0000000..ca63bb0 --- /dev/null +++ b/resources/particles/star_09.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b78hyngm6yo6w" +path="res://.godot/imported/star_09.png-201d0272bcf7feac1e6b77b67806ed17.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/particles/star_09.png" +dest_files=["res://.godot/imported/star_09.png-201d0272bcf7feac1e6b77b67806ed17.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/particles/symbol_01.png b/resources/particles/symbol_01.png new file mode 100644 index 0000000..7a38971 Binary files /dev/null and b/resources/particles/symbol_01.png differ diff --git a/resources/particles/symbol_01.png.import b/resources/particles/symbol_01.png.import new file mode 100644 index 0000000..cacad67 --- /dev/null +++ b/resources/particles/symbol_01.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cw7dlho3r0bgc" +path="res://.godot/imported/symbol_01.png-121a9d098fa92a8705b484a2ba9f6672.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/particles/symbol_01.png" +dest_files=["res://.godot/imported/symbol_01.png-121a9d098fa92a8705b484a2ba9f6672.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/particles/symbol_02.png b/resources/particles/symbol_02.png new file mode 100644 index 0000000..f8e6332 Binary files /dev/null and b/resources/particles/symbol_02.png differ diff --git a/resources/particles/symbol_02.png.import b/resources/particles/symbol_02.png.import new file mode 100644 index 0000000..169f1df --- /dev/null +++ b/resources/particles/symbol_02.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://duaxr3g15560c" +path="res://.godot/imported/symbol_02.png-5a2bddde4d60b8b9c081e478923f5c0b.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/particles/symbol_02.png" +dest_files=["res://.godot/imported/symbol_02.png-5a2bddde4d60b8b9c081e478923f5c0b.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/particles/trace_01.png b/resources/particles/trace_01.png new file mode 100644 index 0000000..d449411 Binary files /dev/null and b/resources/particles/trace_01.png differ diff --git a/resources/particles/trace_01.png.import b/resources/particles/trace_01.png.import new file mode 100644 index 0000000..e453ae8 --- /dev/null +++ b/resources/particles/trace_01.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://c34mv3ahtc6g1" +path="res://.godot/imported/trace_01.png-171cc9f78025eb1cd944608876d81090.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/particles/trace_01.png" +dest_files=["res://.godot/imported/trace_01.png-171cc9f78025eb1cd944608876d81090.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/particles/trace_02.png b/resources/particles/trace_02.png new file mode 100644 index 0000000..da7d549 Binary files /dev/null and b/resources/particles/trace_02.png differ diff --git a/resources/particles/trace_02.png.import b/resources/particles/trace_02.png.import new file mode 100644 index 0000000..1f00724 --- /dev/null +++ b/resources/particles/trace_02.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bugfcg54d0ey4" +path="res://.godot/imported/trace_02.png-41f539774b584e4920f6ce021dec437f.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/particles/trace_02.png" +dest_files=["res://.godot/imported/trace_02.png-41f539774b584e4920f6ce021dec437f.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/particles/trace_03.png b/resources/particles/trace_03.png new file mode 100644 index 0000000..0a8d0c7 Binary files /dev/null and b/resources/particles/trace_03.png differ diff --git a/resources/particles/trace_03.png.import b/resources/particles/trace_03.png.import new file mode 100644 index 0000000..463216f --- /dev/null +++ b/resources/particles/trace_03.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b0bvyvcclbrj7" +path="res://.godot/imported/trace_03.png-2599fc631077405e9444a4616e3245e6.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/particles/trace_03.png" +dest_files=["res://.godot/imported/trace_03.png-2599fc631077405e9444a4616e3245e6.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/particles/trace_04.png b/resources/particles/trace_04.png new file mode 100644 index 0000000..9ee137b Binary files /dev/null and b/resources/particles/trace_04.png differ diff --git a/resources/particles/trace_04.png.import b/resources/particles/trace_04.png.import new file mode 100644 index 0000000..d7dfcb4 --- /dev/null +++ b/resources/particles/trace_04.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://btx1o2dkrdi4p" +path="res://.godot/imported/trace_04.png-6267209c2aa6d265050d821d583f97c8.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/particles/trace_04.png" +dest_files=["res://.godot/imported/trace_04.png-6267209c2aa6d265050d821d583f97c8.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/particles/trace_05.png b/resources/particles/trace_05.png new file mode 100644 index 0000000..106b242 Binary files /dev/null and b/resources/particles/trace_05.png differ diff --git a/resources/particles/trace_05.png.import b/resources/particles/trace_05.png.import new file mode 100644 index 0000000..725f803 --- /dev/null +++ b/resources/particles/trace_05.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://yesqr52m85gp" +path="res://.godot/imported/trace_05.png-c7ee9e7f731fee4a128da69e51d3007a.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/particles/trace_05.png" +dest_files=["res://.godot/imported/trace_05.png-c7ee9e7f731fee4a128da69e51d3007a.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/particles/trace_06.png b/resources/particles/trace_06.png new file mode 100644 index 0000000..54125ee Binary files /dev/null and b/resources/particles/trace_06.png differ diff --git a/resources/particles/trace_06.png.import b/resources/particles/trace_06.png.import new file mode 100644 index 0000000..139a176 --- /dev/null +++ b/resources/particles/trace_06.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://6b2jdoacqtv1" +path="res://.godot/imported/trace_06.png-adae7894a9e161b8f60ab91b170fa750.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/particles/trace_06.png" +dest_files=["res://.godot/imported/trace_06.png-adae7894a9e161b8f60ab91b170fa750.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/particles/trace_07.png b/resources/particles/trace_07.png new file mode 100644 index 0000000..21469e9 Binary files /dev/null and b/resources/particles/trace_07.png differ diff --git a/resources/particles/trace_07.png.import b/resources/particles/trace_07.png.import new file mode 100644 index 0000000..b486d4a --- /dev/null +++ b/resources/particles/trace_07.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://xnmr8ogeill" +path="res://.godot/imported/trace_07.png-54a3a5f2c93d65da93b4d5b1681661f5.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/particles/trace_07.png" +dest_files=["res://.godot/imported/trace_07.png-54a3a5f2c93d65da93b4d5b1681661f5.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/particles/twirl_01.png b/resources/particles/twirl_01.png new file mode 100644 index 0000000..aac777e Binary files /dev/null and b/resources/particles/twirl_01.png differ diff --git a/resources/particles/twirl_01.png.import b/resources/particles/twirl_01.png.import new file mode 100644 index 0000000..35463d2 --- /dev/null +++ b/resources/particles/twirl_01.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dhf4dessaw5p5" +path="res://.godot/imported/twirl_01.png-a3ad60829936e64daa5b648b05301b31.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/particles/twirl_01.png" +dest_files=["res://.godot/imported/twirl_01.png-a3ad60829936e64daa5b648b05301b31.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/particles/twirl_02.png b/resources/particles/twirl_02.png new file mode 100644 index 0000000..0029942 Binary files /dev/null and b/resources/particles/twirl_02.png differ diff --git a/resources/particles/twirl_02.png.import b/resources/particles/twirl_02.png.import new file mode 100644 index 0000000..9744fe9 --- /dev/null +++ b/resources/particles/twirl_02.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dtilmblbacvxq" +path="res://.godot/imported/twirl_02.png-aa87e7106769426adac429fca77aab06.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/particles/twirl_02.png" +dest_files=["res://.godot/imported/twirl_02.png-aa87e7106769426adac429fca77aab06.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/particles/twirl_03.png b/resources/particles/twirl_03.png new file mode 100644 index 0000000..e73fe05 Binary files /dev/null and b/resources/particles/twirl_03.png differ diff --git a/resources/particles/twirl_03.png.import b/resources/particles/twirl_03.png.import new file mode 100644 index 0000000..5f7f4da --- /dev/null +++ b/resources/particles/twirl_03.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cx0uaffu0jiln" +path="res://.godot/imported/twirl_03.png-7d86451a523be896f9560c2da57a1a24.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/particles/twirl_03.png" +dest_files=["res://.godot/imported/twirl_03.png-7d86451a523be896f9560c2da57a1a24.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/particles/window_01.png b/resources/particles/window_01.png new file mode 100644 index 0000000..31d2a9f Binary files /dev/null and b/resources/particles/window_01.png differ diff --git a/resources/particles/window_01.png.import b/resources/particles/window_01.png.import new file mode 100644 index 0000000..22a37af --- /dev/null +++ b/resources/particles/window_01.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cbt6ulkpodshs" +path="res://.godot/imported/window_01.png-e397c02b26a4c777906b1cc2a169db41.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/particles/window_01.png" +dest_files=["res://.godot/imported/window_01.png-e397c02b26a4c777906b1cc2a169db41.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/particles/window_02.png b/resources/particles/window_02.png new file mode 100644 index 0000000..eb862b6 Binary files /dev/null and b/resources/particles/window_02.png differ diff --git a/resources/particles/window_02.png.import b/resources/particles/window_02.png.import new file mode 100644 index 0000000..ac155be --- /dev/null +++ b/resources/particles/window_02.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b4aabkj3ytaks" +path="res://.godot/imported/window_02.png-b54214b7c1b6325a4454bcdce5e011fe.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/particles/window_02.png" +dest_files=["res://.godot/imported/window_02.png-b54214b7c1b6325a4454bcdce5e011fe.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/particles/window_03.png b/resources/particles/window_03.png new file mode 100644 index 0000000..fca09d9 Binary files /dev/null and b/resources/particles/window_03.png differ diff --git a/resources/particles/window_03.png.import b/resources/particles/window_03.png.import new file mode 100644 index 0000000..dc35fb1 --- /dev/null +++ b/resources/particles/window_03.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://mouwcvc6cmom" +path="res://.godot/imported/window_03.png-58f92181a932911604871cd378e59dd1.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/particles/window_03.png" +dest_files=["res://.godot/imported/window_03.png-58f92181a932911604871cd378e59dd1.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/particles/window_04.png b/resources/particles/window_04.png new file mode 100644 index 0000000..5d72e79 Binary files /dev/null and b/resources/particles/window_04.png differ diff --git a/resources/particles/window_04.png.import b/resources/particles/window_04.png.import new file mode 100644 index 0000000..7382af6 --- /dev/null +++ b/resources/particles/window_04.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://nqdv4ak0wlnu" +path="res://.godot/imported/window_04.png-e2eec3da7fe9d764e526197650a36a25.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/particles/window_04.png" +dest_files=["res://.godot/imported/window_04.png-e2eec3da7fe9d764e526197650a36a25.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/textures/bee.png b/resources/textures/bee.png new file mode 100644 index 0000000..e4608bb Binary files /dev/null and b/resources/textures/bee.png differ diff --git a/resources/textures/bee.png.import b/resources/textures/bee.png.import new file mode 100644 index 0000000..bb87c50 --- /dev/null +++ b/resources/textures/bee.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bmy5d0vl0l2bj" +path="res://.godot/imported/bee.png-e6e2f710a80ac28411d91cb428bfbb46.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/textures/bee.png" +dest_files=["res://.godot/imported/bee.png-e6e2f710a80ac28411d91cb428bfbb46.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/textures/bee.png~ b/resources/textures/bee.png~ new file mode 100644 index 0000000..e731489 Binary files /dev/null and b/resources/textures/bee.png~ differ diff --git a/resources/textures/bee_body.png b/resources/textures/bee_body.png new file mode 100644 index 0000000..e9d1a12 Binary files /dev/null and b/resources/textures/bee_body.png differ diff --git a/resources/textures/bee_body.png.import b/resources/textures/bee_body.png.import new file mode 100644 index 0000000..1a1f1c6 --- /dev/null +++ b/resources/textures/bee_body.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://ch3qalaaky8ng" +path="res://.godot/imported/bee_body.png-a901a812be76582d296d2da284fea011.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/textures/bee_body.png" +dest_files=["res://.godot/imported/bee_body.png-a901a812be76582d296d2da284fea011.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/textures/bee_wings.png b/resources/textures/bee_wings.png new file mode 100644 index 0000000..627abbf Binary files /dev/null and b/resources/textures/bee_wings.png differ diff --git a/resources/textures/bee_wings.png.import b/resources/textures/bee_wings.png.import new file mode 100644 index 0000000..2da49a9 --- /dev/null +++ b/resources/textures/bee_wings.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bsskcrayofs8n" +path="res://.godot/imported/bee_wings.png-40259da7bb67a8bea5d5368d118220ff.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/textures/bee_wings.png" +dest_files=["res://.godot/imported/bee_wings.png-40259da7bb67a8bea5d5368d118220ff.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/textures/beehive.png b/resources/textures/beehive.png new file mode 100644 index 0000000..47a8d62 Binary files /dev/null and b/resources/textures/beehive.png differ diff --git a/resources/textures/beehive.png.import b/resources/textures/beehive.png.import new file mode 100644 index 0000000..c292a72 --- /dev/null +++ b/resources/textures/beehive.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dijxeckxe7trv" +path="res://.godot/imported/beehive.png-8ecfa2459317a3914bd7e9594c59edf9.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/textures/beehive.png" +dest_files=["res://.godot/imported/beehive.png-8ecfa2459317a3914bd7e9594c59edf9.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/textures/bush.png b/resources/textures/bush.png new file mode 100644 index 0000000..0d3e373 Binary files /dev/null and b/resources/textures/bush.png differ diff --git a/resources/textures/bush.png.import b/resources/textures/bush.png.import new file mode 100644 index 0000000..85ae6b7 --- /dev/null +++ b/resources/textures/bush.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b5b3klfw4466j" +path="res://.godot/imported/bush.png-1769d6d3fdc87e93792611f87f701704.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/textures/bush.png" +dest_files=["res://.godot/imported/bush.png-1769d6d3fdc87e93792611f87f701704.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/textures/collector_drone.png b/resources/textures/collector_drone.png new file mode 100644 index 0000000..558581d Binary files /dev/null and b/resources/textures/collector_drone.png differ diff --git a/resources/textures/collector_drone.png.import b/resources/textures/collector_drone.png.import new file mode 100644 index 0000000..2823ca8 --- /dev/null +++ b/resources/textures/collector_drone.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://btyc0yk5nbn2t" +path="res://.godot/imported/collector_drone.png-0d2a2ea31c213594ace33abea2231ec9.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/textures/collector_drone.png" +dest_files=["res://.godot/imported/collector_drone.png-0d2a2ea31c213594ace33abea2231ec9.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/textures/dancing_drone_body.png b/resources/textures/dancing_drone_body.png new file mode 100644 index 0000000..9b26003 Binary files /dev/null and b/resources/textures/dancing_drone_body.png differ diff --git a/resources/textures/dancing_drone_body.png.import b/resources/textures/dancing_drone_body.png.import new file mode 100644 index 0000000..02c99d6 --- /dev/null +++ b/resources/textures/dancing_drone_body.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://ck51br2sjtfbk" +path="res://.godot/imported/dancing_drone_body.png-cbe0df58b99bf62f834bb38061f4adb7.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/textures/dancing_drone_body.png" +dest_files=["res://.godot/imported/dancing_drone_body.png-cbe0df58b99bf62f834bb38061f4adb7.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/textures/dancing_drone_hat.png b/resources/textures/dancing_drone_hat.png new file mode 100644 index 0000000..c291728 Binary files /dev/null and b/resources/textures/dancing_drone_hat.png differ diff --git a/resources/textures/dancing_drone_hat.png.import b/resources/textures/dancing_drone_hat.png.import new file mode 100644 index 0000000..0bbef4f --- /dev/null +++ b/resources/textures/dancing_drone_hat.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bf3e8avdh3iwn" +path="res://.godot/imported/dancing_drone_hat.png-d52da8690e5240af098f5dd891c076ed.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/textures/dancing_drone_hat.png" +dest_files=["res://.godot/imported/dancing_drone_hat.png-d52da8690e5240af098f5dd891c076ed.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/textures/dancing_drone_leg_1.png b/resources/textures/dancing_drone_leg_1.png new file mode 100644 index 0000000..f3d353b Binary files /dev/null and b/resources/textures/dancing_drone_leg_1.png differ diff --git a/resources/textures/dancing_drone_leg_1.png.import b/resources/textures/dancing_drone_leg_1.png.import new file mode 100644 index 0000000..ea1b3a2 --- /dev/null +++ b/resources/textures/dancing_drone_leg_1.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://btwh1m8nvxxn3" +path="res://.godot/imported/dancing_drone_leg_1.png-d8bd1f4a3d1ac0573eb848e29fb068a8.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/textures/dancing_drone_leg_1.png" +dest_files=["res://.godot/imported/dancing_drone_leg_1.png-d8bd1f4a3d1ac0573eb848e29fb068a8.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/textures/dancing_drone_leg_2.png b/resources/textures/dancing_drone_leg_2.png new file mode 100644 index 0000000..c732c1b Binary files /dev/null and b/resources/textures/dancing_drone_leg_2.png differ diff --git a/resources/textures/dancing_drone_leg_2.png.import b/resources/textures/dancing_drone_leg_2.png.import new file mode 100644 index 0000000..be8818a --- /dev/null +++ b/resources/textures/dancing_drone_leg_2.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://0e8ksjsqrsg5" +path="res://.godot/imported/dancing_drone_leg_2.png-32bd9747545a3a356a1e19226f94104d.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/textures/dancing_drone_leg_2.png" +dest_files=["res://.godot/imported/dancing_drone_leg_2.png-32bd9747545a3a356a1e19226f94104d.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/textures/director_drone.png b/resources/textures/director_drone.png new file mode 100644 index 0000000..8adb4e8 Binary files /dev/null and b/resources/textures/director_drone.png differ diff --git a/resources/textures/director_drone.png.import b/resources/textures/director_drone.png.import new file mode 100644 index 0000000..bd4dbf0 --- /dev/null +++ b/resources/textures/director_drone.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dnhs5ymd6ybyd" +path="res://.godot/imported/director_drone.png-388fc649b1259a2149f17cf22a1a3382.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/textures/director_drone.png" +dest_files=["res://.godot/imported/director_drone.png-388fc649b1259a2149f17cf22a1a3382.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/textures/distractor_drone.png b/resources/textures/distractor_drone.png new file mode 100644 index 0000000..2df434b Binary files /dev/null and b/resources/textures/distractor_drone.png differ diff --git a/resources/textures/distractor_drone.png.import b/resources/textures/distractor_drone.png.import new file mode 100644 index 0000000..1c2fe58 --- /dev/null +++ b/resources/textures/distractor_drone.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cfufcbeeeg5oy" +path="res://.godot/imported/distractor_drone.png-d093338e00acad836fddc960a72d2544.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/textures/distractor_drone.png" +dest_files=["res://.godot/imported/distractor_drone.png-d093338e00acad836fddc960a72d2544.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/textures/dog_body.png b/resources/textures/dog_body.png new file mode 100644 index 0000000..0f3901f Binary files /dev/null and b/resources/textures/dog_body.png differ diff --git a/resources/textures/dog_body.png.import b/resources/textures/dog_body.png.import new file mode 100644 index 0000000..14f68bb --- /dev/null +++ b/resources/textures/dog_body.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cqs2lfakkpqib" +path="res://.godot/imported/dog_body.png-7f0c34de84d1923afb71c8aa6690a2ee.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/textures/dog_body.png" +dest_files=["res://.godot/imported/dog_body.png-7f0c34de84d1923afb71c8aa6690a2ee.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/textures/dog_head.png b/resources/textures/dog_head.png new file mode 100644 index 0000000..ae847e2 Binary files /dev/null and b/resources/textures/dog_head.png differ diff --git a/resources/textures/dog_head.png.import b/resources/textures/dog_head.png.import new file mode 100644 index 0000000..d611c38 --- /dev/null +++ b/resources/textures/dog_head.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b22isfr66b8y2" +path="res://.godot/imported/dog_head.png-41d56191ef16a77c9231e0281d046a50.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/textures/dog_head.png" +dest_files=["res://.godot/imported/dog_head.png-41d56191ef16a77c9231e0281d046a50.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/textures/dog_tail.png b/resources/textures/dog_tail.png new file mode 100644 index 0000000..e287fc1 Binary files /dev/null and b/resources/textures/dog_tail.png differ diff --git a/resources/textures/dog_tail.png.import b/resources/textures/dog_tail.png.import new file mode 100644 index 0000000..7f8e0ce --- /dev/null +++ b/resources/textures/dog_tail.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bwxbit5i2x2ti" +path="res://.godot/imported/dog_tail.png-e650e2e3f82fe30838198d1e84cae1fc.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/textures/dog_tail.png" +dest_files=["res://.godot/imported/dog_tail.png-e650e2e3f82fe30838198d1e84cae1fc.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/textures/flower_1.png b/resources/textures/flower_1.png new file mode 100644 index 0000000..b8bcfb9 Binary files /dev/null and b/resources/textures/flower_1.png differ diff --git a/resources/textures/flower_1.png.import b/resources/textures/flower_1.png.import new file mode 100644 index 0000000..9f56b8a --- /dev/null +++ b/resources/textures/flower_1.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dfsiavjapcxkk" +path="res://.godot/imported/flower_1.png-582f2b715e2e42844e5abb034b5f051d.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/textures/flower_1.png" +dest_files=["res://.godot/imported/flower_1.png-582f2b715e2e42844e5abb034b5f051d.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/textures/flower_2.png b/resources/textures/flower_2.png new file mode 100644 index 0000000..e062384 Binary files /dev/null and b/resources/textures/flower_2.png differ diff --git a/resources/textures/flower_2.png.import b/resources/textures/flower_2.png.import new file mode 100644 index 0000000..d7d753b --- /dev/null +++ b/resources/textures/flower_2.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://d3305m7gu47h2" +path="res://.godot/imported/flower_2.png-7322e57bc0d299ecc6a10e66bc696d92.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/textures/flower_2.png" +dest_files=["res://.godot/imported/flower_2.png-7322e57bc0d299ecc6a10e66bc696d92.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/textures/grass.png b/resources/textures/grass.png new file mode 100644 index 0000000..2fa2f99 Binary files /dev/null and b/resources/textures/grass.png differ diff --git a/resources/textures/grass.png.import b/resources/textures/grass.png.import new file mode 100644 index 0000000..557b3a4 --- /dev/null +++ b/resources/textures/grass.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dosamt1emh6o4" +path="res://.godot/imported/grass.png-094a35ba07bbcb73e591b9af9b936e57.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/textures/grass.png" +dest_files=["res://.godot/imported/grass.png-094a35ba07bbcb73e591b9af9b936e57.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/textures/grass.png~ b/resources/textures/grass.png~ new file mode 100644 index 0000000..7950353 Binary files /dev/null and b/resources/textures/grass.png~ differ diff --git a/resources/textures/gravestone.png b/resources/textures/gravestone.png new file mode 100644 index 0000000..4ca1488 Binary files /dev/null and b/resources/textures/gravestone.png differ diff --git a/resources/textures/gravestone.png.import b/resources/textures/gravestone.png.import new file mode 100644 index 0000000..0448489 --- /dev/null +++ b/resources/textures/gravestone.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cvjdxb2cybcow" +path="res://.godot/imported/gravestone.png-5703c884ce4a9f27ef2d69327f18af65.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/textures/gravestone.png" +dest_files=["res://.godot/imported/gravestone.png-5703c884ce4a9f27ef2d69327f18af65.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/textures/honeypot.png b/resources/textures/honeypot.png new file mode 100644 index 0000000..460fa0b Binary files /dev/null and b/resources/textures/honeypot.png differ diff --git a/resources/textures/honeypot.png.import b/resources/textures/honeypot.png.import new file mode 100644 index 0000000..55562ed --- /dev/null +++ b/resources/textures/honeypot.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cm4u74pa1mmwu" +path="res://.godot/imported/honeypot.png-b45f45f16128e6be852a0ded3c6fd106.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/textures/honeypot.png" +dest_files=["res://.godot/imported/honeypot.png-b45f45f16128e6be852a0ded3c6fd106.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/textures/honeypot.png~ b/resources/textures/honeypot.png~ new file mode 100644 index 0000000..755956f Binary files /dev/null and b/resources/textures/honeypot.png~ differ diff --git a/resources/textures/leafs.png b/resources/textures/leafs.png new file mode 100644 index 0000000..d1eaa1f Binary files /dev/null and b/resources/textures/leafs.png differ diff --git a/resources/textures/leafs.png.import b/resources/textures/leafs.png.import new file mode 100644 index 0000000..d573112 --- /dev/null +++ b/resources/textures/leafs.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cej11vpym3lju" +path="res://.godot/imported/leafs.png-ee6d2c74f553a979fe2f8a77ccb7c5b2.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/textures/leafs.png" +dest_files=["res://.godot/imported/leafs.png-ee6d2c74f553a979fe2f8a77ccb7c5b2.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/textures/mushroom.png b/resources/textures/mushroom.png new file mode 100644 index 0000000..97c087d Binary files /dev/null and b/resources/textures/mushroom.png differ diff --git a/resources/textures/mushroom.png.import b/resources/textures/mushroom.png.import new file mode 100644 index 0000000..425576b --- /dev/null +++ b/resources/textures/mushroom.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cc8rx803uskf2" +path="res://.godot/imported/mushroom.png-0b4688406047e6d6fcdc682373d38109.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/textures/mushroom.png" +dest_files=["res://.godot/imported/mushroom.png-0b4688406047e6d6fcdc682373d38109.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/textures/naked_tree.png b/resources/textures/naked_tree.png new file mode 100644 index 0000000..1d6f524 Binary files /dev/null and b/resources/textures/naked_tree.png differ diff --git a/resources/textures/naked_tree.png.import b/resources/textures/naked_tree.png.import new file mode 100644 index 0000000..92d3822 --- /dev/null +++ b/resources/textures/naked_tree.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bxhluci3gcrv5" +path="res://.godot/imported/naked_tree.png-c774715275ec1352ef487b405b1b417e.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/textures/naked_tree.png" +dest_files=["res://.godot/imported/naked_tree.png-c774715275ec1352ef487b405b1b417e.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/textures/pesticide.png b/resources/textures/pesticide.png new file mode 100644 index 0000000..91dff38 Binary files /dev/null and b/resources/textures/pesticide.png differ diff --git a/resources/textures/pesticide.png.import b/resources/textures/pesticide.png.import new file mode 100644 index 0000000..192c779 --- /dev/null +++ b/resources/textures/pesticide.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://d10d7frvofmrc" +path="res://.godot/imported/pesticide.png-1d3c2725fe34c268e48bf29983f3b501.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/textures/pesticide.png" +dest_files=["res://.godot/imported/pesticide.png-1d3c2725fe34c268e48bf29983f3b501.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/textures/snail.png b/resources/textures/snail.png new file mode 100644 index 0000000..75b47bd Binary files /dev/null and b/resources/textures/snail.png differ diff --git a/resources/textures/snail.png.import b/resources/textures/snail.png.import new file mode 100644 index 0000000..e0d511d --- /dev/null +++ b/resources/textures/snail.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dh8fo7865wgs" +path="res://.godot/imported/snail.png-a65122e1b7cfd4a8a9eca6e69237d332.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/textures/snail.png" +dest_files=["res://.godot/imported/snail.png-a65122e1b7cfd4a8a9eca6e69237d332.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/textures/snail_body.png b/resources/textures/snail_body.png new file mode 100644 index 0000000..ce1dffb Binary files /dev/null and b/resources/textures/snail_body.png differ diff --git a/resources/textures/snail_body.png.import b/resources/textures/snail_body.png.import new file mode 100644 index 0000000..5162f68 --- /dev/null +++ b/resources/textures/snail_body.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://d30yqtob6phcj" +path="res://.godot/imported/snail_body.png-1a9e30579365709f7ea061967bfa07c7.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/textures/snail_body.png" +dest_files=["res://.godot/imported/snail_body.png-1a9e30579365709f7ea061967bfa07c7.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/textures/snail_shell.png b/resources/textures/snail_shell.png new file mode 100644 index 0000000..ceedfa6 Binary files /dev/null and b/resources/textures/snail_shell.png differ diff --git a/resources/textures/snail_shell.png.import b/resources/textures/snail_shell.png.import new file mode 100644 index 0000000..6052301 --- /dev/null +++ b/resources/textures/snail_shell.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://5vt8eaihmut3" +path="res://.godot/imported/snail_shell.png-0ea323f3ee447ce81b64dbf0909411e8.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/textures/snail_shell.png" +dest_files=["res://.godot/imported/snail_shell.png-0ea323f3ee447ce81b64dbf0909411e8.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/textures/tree.png b/resources/textures/tree.png new file mode 100644 index 0000000..3197399 Binary files /dev/null and b/resources/textures/tree.png differ diff --git a/resources/textures/tree.png.import b/resources/textures/tree.png.import new file mode 100644 index 0000000..f4d78a9 --- /dev/null +++ b/resources/textures/tree.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cgwtb4gxypaj1" +path="res://.godot/imported/tree.png-9e8a6ddedb6608304c97c221e1285175.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/textures/tree.png" +dest_files=["res://.godot/imported/tree.png-9e8a6ddedb6608304c97c221e1285175.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/textures/veg.png b/resources/textures/veg.png new file mode 100644 index 0000000..dbca0b8 Binary files /dev/null and b/resources/textures/veg.png differ diff --git a/resources/textures/veg.png.import b/resources/textures/veg.png.import new file mode 100644 index 0000000..bcbd1d7 --- /dev/null +++ b/resources/textures/veg.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://s673b25l7g3k" +path="res://.godot/imported/veg.png-a7636d438f5912eb6776e33cbfb95392.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/textures/veg.png" +dest_files=["res://.godot/imported/veg.png-a7636d438f5912eb6776e33cbfb95392.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/textures/z.png b/resources/textures/z.png new file mode 100644 index 0000000..fca60d2 Binary files /dev/null and b/resources/textures/z.png differ diff --git a/resources/textures/z.png.import b/resources/textures/z.png.import new file mode 100644 index 0000000..3d6a509 --- /dev/null +++ b/resources/textures/z.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://coqnsy2doe00a" +path="res://.godot/imported/z.png-2480fe672c962580156c436c995706d3.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/textures/z.png" +dest_files=["res://.godot/imported/z.png-2480fe672c962580156c436c995706d3.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/theme/game_theme.tres b/resources/theme/game_theme.tres new file mode 100644 index 0000000..63a2b78 --- /dev/null +++ b/resources/theme/game_theme.tres @@ -0,0 +1,130 @@ +[gd_resource type="Theme" load_steps=10 format=3 uid="uid://cpkvret5gi66h"] + +[ext_resource type="FontFile" uid="uid://beyoaacc7uhy1" path="res://resources/fonts/Kaph-Regular.ttf" id="1_fwiur"] + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_lcmkq"] +content_margin_left = 20.0 +content_margin_top = 20.0 +content_margin_right = 20.0 +content_margin_bottom = 20.0 +bg_color = Color(0.996078, 0.85098, 0.498039, 0.776471) +border_width_left = 4 +border_width_top = 4 +border_width_right = 4 +border_width_bottom = 4 +border_color = Color(1, 0.878431, 0.545098, 1) +corner_radius_top_left = 10 +corner_radius_top_right = 10 +corner_radius_bottom_right = 10 +corner_radius_bottom_left = 10 + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_c0e0a"] +content_margin_left = 20.0 +content_margin_top = 20.0 +content_margin_right = 20.0 +content_margin_bottom = 20.0 +bg_color = Color(0.996078, 0.85098, 0.498039, 1) +border_width_left = 4 +border_width_top = 4 +border_width_right = 4 +border_width_bottom = 4 +border_color = Color(0.819608, 0.454902, 0.254902, 1) +corner_radius_top_left = 10 +corner_radius_top_right = 10 +corner_radius_bottom_right = 10 +corner_radius_bottom_left = 10 + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_g31a1"] +content_margin_left = 20.0 +content_margin_top = 20.0 +content_margin_right = 20.0 +content_margin_bottom = 20.0 +bg_color = Color(0.996078, 0.85098, 0.498039, 1) +border_width_left = 4 +border_width_top = 4 +border_width_right = 4 +border_width_bottom = 4 +border_color = Color(0.819608, 0.454902, 0.254902, 1) +corner_radius_top_left = 10 +corner_radius_top_right = 10 +corner_radius_bottom_right = 10 +corner_radius_bottom_left = 10 + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_1c0sa"] +bg_color = Color(0.996078, 0.85098, 0.498039, 0.784314) +border_width_left = 4 +border_width_top = 4 +border_width_right = 4 +border_width_bottom = 4 +border_color = Color(0.819608, 0.454902, 0.254902, 1) +corner_radius_top_left = 5 +corner_radius_top_right = 5 +corner_radius_bottom_right = 5 +corner_radius_bottom_left = 5 +shadow_color = Color(0, 0, 0, 0) + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_crayb"] +bg_color = Color(0.819608, 0.454902, 0.254902, 1) +border_color = Color(0.819608, 0.454902, 0.254902, 1) +shadow_color = Color(0, 0, 0, 0.258824) + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_0rei0"] +bg_color = Color(0.996078, 0.85098, 0.498039, 1) +border_width_left = 4 +border_width_top = 4 +border_width_right = 4 +border_width_bottom = 4 +border_color = Color(0.819608, 0.454902, 0.254902, 1) +corner_radius_bottom_left = 5 +shadow_color = Color(0, 0, 0, 0.258824) + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_vj6bi"] +content_margin_left = 2.0 +content_margin_top = 2.0 +content_margin_right = 2.0 +content_margin_bottom = 2.0 +bg_color = Color(0.819608, 0.454902, 0.254902, 1) +corner_radius_top_left = 6 +corner_radius_top_right = 6 +corner_radius_bottom_right = 6 +corner_radius_bottom_left = 6 +corner_detail = 6 + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_4h8x0"] +content_margin_left = 20.0 +content_margin_top = 20.0 +content_margin_right = 20.0 +content_margin_bottom = 20.0 +bg_color = Color(0.996078, 0.85098, 0.498039, 1) +border_width_left = 2 +border_width_top = 2 +border_width_right = 2 +border_width_bottom = 2 +border_color = Color(0.819608, 0.454902, 0.254902, 1) + +[resource] +default_font = ExtResource("1_fwiur") +default_font_size = 12 +Button/colors/font_color = Color(0.819608, 0.454902, 0.254902, 1) +Button/colors/font_hover_color = Color(0.819608, 0.454902, 0.254902, 1) +Button/colors/font_pressed_color = Color(1, 0.960784, 0.854902, 1) +Button/constants/h_separation = 5 +Button/font_sizes/font_size = 16 +Button/styles/hover = SubResource("StyleBoxFlat_lcmkq") +Button/styles/normal = SubResource("StyleBoxFlat_c0e0a") +Button/styles/pressed = SubResource("StyleBoxFlat_g31a1") +Fonts/fonts/large = ExtResource("1_fwiur") +Fonts/fonts/normal = ExtResource("1_fwiur") +Label/colors/font_color = Color(0.819608, 0.454902, 0.254902, 1) +Label/colors/font_shadow_color = Color(0.00392157, 0, 0, 0.45098) +Panel/styles/panel = SubResource("StyleBoxFlat_1c0sa") +PopupMenu/colors/font_color = Color(0.819608, 0.454902, 0.254902, 1) +PopupMenu/constants/h_separation = 6 +PopupMenu/constants/v_separation = 6 +PopupMenu/styles/hover = SubResource("StyleBoxFlat_crayb") +PopupMenu/styles/panel = SubResource("StyleBoxFlat_0rei0") +ProgressBar/styles/fill = SubResource("StyleBoxFlat_vj6bi") +TooltipLabel/colors/font_color = Color(0.819608, 0.454902, 0.254902, 1) +TooltipLabel/colors/font_shadow_color = Color(0, 0, 0, 0) +TooltipLabel/font_sizes/font_size = 18 +TooltipPanel/styles/panel = SubResource("StyleBoxFlat_4h8x0") diff --git a/scenes/decor/bush.tscn b/scenes/decor/bush.tscn new file mode 100644 index 0000000..0bcee8a --- /dev/null +++ b/scenes/decor/bush.tscn @@ -0,0 +1,13 @@ +[gd_scene load_steps=3 format=3 uid="uid://dwuc6byusf1r3"] + +[ext_resource type="Texture2D" uid="uid://b5b3klfw4466j" path="res://resources/textures/bush.png" id="1_howpo"] +[ext_resource type="PackedScene" uid="uid://6w1nq8lhq3tq" path="res://components/DropShadowComponent.tscn" id="2_nqte4"] + +[node name="Bush" type="Node2D"] +position = Vector2(227, 255) + +[node name="DisplaySprite" type="Sprite2D" parent="."] +texture = ExtResource("1_howpo") + +[node name="DropShadowComponent" parent="." node_paths=PackedStringArray("parent_sprite") instance=ExtResource("2_nqte4")] +parent_sprite = NodePath("../DisplaySprite") diff --git a/scenes/decor/flower_1.tscn b/scenes/decor/flower_1.tscn new file mode 100644 index 0000000..d781e25 --- /dev/null +++ b/scenes/decor/flower_1.tscn @@ -0,0 +1,14 @@ +[gd_scene load_steps=3 format=3 uid="uid://rnykx61eqxyk"] + +[ext_resource type="Texture2D" uid="uid://dfsiavjapcxkk" path="res://resources/textures/flower_1.png" id="1_jotb7"] +[ext_resource type="PackedScene" uid="uid://6w1nq8lhq3tq" path="res://components/DropShadowComponent.tscn" id="2_x4kpr"] + +[node name="Flower1" type="Node2D"] +position = Vector2(227, 255) + +[node name="DisplaySprite" type="Sprite2D" parent="."] +texture = ExtResource("1_jotb7") + +[node name="DropShadowComponent" parent="." node_paths=PackedStringArray("parent_sprite") instance=ExtResource("2_x4kpr")] +parent_sprite = NodePath("../DisplaySprite") +drop_shadow_distance = 5 diff --git a/scenes/decor/flower_2.tscn b/scenes/decor/flower_2.tscn new file mode 100644 index 0000000..a4ffe11 --- /dev/null +++ b/scenes/decor/flower_2.tscn @@ -0,0 +1,14 @@ +[gd_scene load_steps=3 format=3 uid="uid://b7quc1hxenh5p"] + +[ext_resource type="Texture2D" uid="uid://d3305m7gu47h2" path="res://resources/textures/flower_2.png" id="1_hk01u"] +[ext_resource type="PackedScene" uid="uid://6w1nq8lhq3tq" path="res://components/DropShadowComponent.tscn" id="2_co3t4"] + +[node name="Flower2" type="Node2D"] +position = Vector2(227, 255) + +[node name="DisplaySprite" type="Sprite2D" parent="."] +texture = ExtResource("1_hk01u") + +[node name="DropShadowComponent" parent="." node_paths=PackedStringArray("parent_sprite") instance=ExtResource("2_co3t4")] +parent_sprite = NodePath("../DisplaySprite") +drop_shadow_distance = 5 diff --git a/scenes/decor/mushroom.tscn b/scenes/decor/mushroom.tscn new file mode 100644 index 0000000..72c7ce6 --- /dev/null +++ b/scenes/decor/mushroom.tscn @@ -0,0 +1,13 @@ +[gd_scene load_steps=3 format=3 uid="uid://eiyribk1ijcu"] + +[ext_resource type="Texture2D" uid="uid://cc8rx803uskf2" path="res://resources/textures/mushroom.png" id="1_ewpvy"] +[ext_resource type="PackedScene" uid="uid://6w1nq8lhq3tq" path="res://components/DropShadowComponent.tscn" id="2_7ec4p"] + +[node name="Mushroom" type="Node2D"] +position = Vector2(227, 255) + +[node name="DisplaySprite" type="Sprite2D" parent="."] +texture = ExtResource("1_ewpvy") + +[node name="DropShadowComponent" parent="." node_paths=PackedStringArray("parent_sprite") instance=ExtResource("2_7ec4p")] +parent_sprite = NodePath("../DisplaySprite") diff --git a/scenes/decor/naked_tree.tscn b/scenes/decor/naked_tree.tscn new file mode 100644 index 0000000..90a06e7 --- /dev/null +++ b/scenes/decor/naked_tree.tscn @@ -0,0 +1,13 @@ +[gd_scene load_steps=3 format=3 uid="uid://dj51rgpihnhi"] + +[ext_resource type="Texture2D" uid="uid://bxhluci3gcrv5" path="res://resources/textures/naked_tree.png" id="1_yly2y"] +[ext_resource type="PackedScene" uid="uid://6w1nq8lhq3tq" path="res://components/DropShadowComponent.tscn" id="2_gntgd"] + +[node name="NakedTree" type="Node2D"] +position = Vector2(227, 255) + +[node name="DisplaySprite" type="Sprite2D" parent="."] +texture = ExtResource("1_yly2y") + +[node name="DropShadowComponent" parent="." node_paths=PackedStringArray("parent_sprite") instance=ExtResource("2_gntgd")] +parent_sprite = NodePath("../DisplaySprite") diff --git a/scenes/decor/tree.tscn b/scenes/decor/tree.tscn new file mode 100644 index 0000000..f3feb8d --- /dev/null +++ b/scenes/decor/tree.tscn @@ -0,0 +1,13 @@ +[gd_scene load_steps=3 format=3 uid="uid://d3mas42mbgec1"] + +[ext_resource type="Texture2D" uid="uid://cgwtb4gxypaj1" path="res://resources/textures/tree.png" id="1_awfty"] +[ext_resource type="PackedScene" uid="uid://6w1nq8lhq3tq" path="res://components/DropShadowComponent.tscn" id="2_450uc"] + +[node name="Tree" type="Node2D"] +position = Vector2(227, 255) + +[node name="DisplaySprite" type="Sprite2D" parent="."] +texture = ExtResource("1_awfty") + +[node name="DropShadowComponent" parent="." node_paths=PackedStringArray("parent_sprite") instance=ExtResource("2_450uc")] +parent_sprite = NodePath("../DisplaySprite") diff --git a/scenes/elements/background.tscn b/scenes/elements/background.tscn new file mode 100644 index 0000000..809fd38 --- /dev/null +++ b/scenes/elements/background.tscn @@ -0,0 +1,10 @@ +[gd_scene load_steps=2 format=3 uid="uid://d1uawawum16b0"] + +[ext_resource type="Texture2D" uid="uid://dosamt1emh6o4" path="res://resources/textures/grass.png" id="1_neh17"] + +[node name="Grass" type="Sprite2D"] +texture_repeat = 2 +position = Vector2(640, 360) +texture = ExtResource("1_neh17") +region_enabled = true +region_rect = Rect2(0, 0, 1280, 720) diff --git a/scenes/elements/bee_spawner.tscn b/scenes/elements/bee_spawner.tscn new file mode 100644 index 0000000..9295479 --- /dev/null +++ b/scenes/elements/bee_spawner.tscn @@ -0,0 +1,15 @@ +[gd_scene load_steps=4 format=3 uid="uid://ddf2mkkw1trkj"] + +[ext_resource type="Script" path="res://scenes/scripts/bee_spawner.gd" id="1_uaq7f"] +[ext_resource type="AudioStream" uid="uid://jdk681m35wt4" path="res://resources/SFX/bee.ogg" id="2_ghw8w"] +[ext_resource type="AudioStream" uid="uid://dpgl5huwc4yl8" path="res://resources/SFX/mixkit-big-bee-hard-flying-sound-42.wav" id="3_w50i8"] + +[node name="BeeSpawner" type="Node2D"] +script = ExtResource("1_uaq7f") + +[node name="BeeSound" type="AudioStreamPlayer" parent="."] +stream = ExtResource("2_ghw8w") + +[node name="BigBeeSound" type="AudioStreamPlayer" parent="."] +stream = ExtResource("3_w50i8") +volume_db = -10.138 diff --git a/scenes/elements/drone_manager.tscn b/scenes/elements/drone_manager.tscn new file mode 100644 index 0000000..e1cec7f --- /dev/null +++ b/scenes/elements/drone_manager.tscn @@ -0,0 +1,80 @@ +[gd_scene load_steps=4 format=3 uid="uid://ct3c16xm33r2a"] + +[ext_resource type="Script" path="res://scenes/scripts/drone_manager.gd" id="1_jkvsa"] +[ext_resource type="Theme" uid="uid://cpkvret5gi66h" path="res://resources/theme/game_theme.tres" id="2_l0re0"] +[ext_resource type="Script" path="res://scenes/scripts/drone_controls.gd" id="3_idi5h"] + +[node name="DroneManager" type="Node2D" groups=["dronemanager"]] +z_index = 50 +script = ExtResource("1_jkvsa") + +[node name="SpawnedDrones" type="Node2D" parent="."] + +[node name="Control" type="Control" parent="."] +top_level = true +layout_mode = 3 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +mouse_filter = 2 +metadata/_edit_use_anchors_ = true + +[node name="MarginContainer" type="MarginContainer" parent="Control"] +layout_mode = 1 +anchors_preset = 7 +anchor_left = 0.5 +anchor_top = 1.0 +anchor_right = 0.5 +anchor_bottom = 1.0 +offset_left = -155.5 +offset_top = -31.0 +offset_right = 155.5 +grow_horizontal = 2 +grow_vertical = 0 +theme = ExtResource("2_l0re0") +theme_override_constants/margin_left = 10 +theme_override_constants/margin_top = 10 +theme_override_constants/margin_right = 10 +theme_override_constants/margin_bottom = 10 + +[node name="DroneControls" type="HBoxContainer" parent="Control/MarginContainer"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_vertical = 10 +alignment = 1 +script = ExtResource("3_idi5h") + +[node name="SpawnDancer" type="Button" parent="Control/MarginContainer/DroneControls"] +unique_name_in_owner = true +layout_mode = 2 +text = "Dancer" + +[node name="SpawnCollector" type="Button" parent="Control/MarginContainer/DroneControls"] +unique_name_in_owner = true +layout_mode = 2 +text = "Collector" + +[node name="SpawnDirector" type="Button" parent="Control/MarginContainer/DroneControls"] +unique_name_in_owner = true +layout_mode = 2 +text = "Director" + +[node name="SpawnDistractor" type="Button" parent="Control/MarginContainer/DroneControls"] +unique_name_in_owner = true +layout_mode = 2 +text = "Distractor" + +[connection signal="mouse_entered" from="Control/MarginContainer/DroneControls/SpawnDancer" to="." method="_on_spawn_dancer_mouse_entered"] +[connection signal="mouse_exited" from="Control/MarginContainer/DroneControls/SpawnDancer" to="." method="_on_button_mouse_exited"] +[connection signal="pressed" from="Control/MarginContainer/DroneControls/SpawnDancer" to="." method="_on_spawn_dancer_pressed"] +[connection signal="mouse_entered" from="Control/MarginContainer/DroneControls/SpawnCollector" to="." method="_on_spawn_collector_mouse_entered"] +[connection signal="mouse_exited" from="Control/MarginContainer/DroneControls/SpawnCollector" to="." method="_on_button_mouse_exited"] +[connection signal="pressed" from="Control/MarginContainer/DroneControls/SpawnCollector" to="." method="_on_spawn_collector_pressed"] +[connection signal="mouse_entered" from="Control/MarginContainer/DroneControls/SpawnDirector" to="." method="_on_spawn_director_mouse_entered"] +[connection signal="mouse_exited" from="Control/MarginContainer/DroneControls/SpawnDirector" to="." method="_on_button_mouse_exited"] +[connection signal="pressed" from="Control/MarginContainer/DroneControls/SpawnDirector" to="." method="_on_spawn_director_pressed"] +[connection signal="mouse_entered" from="Control/MarginContainer/DroneControls/SpawnDistractor" to="." method="_on_spawn_distractor_mouse_entered"] +[connection signal="mouse_exited" from="Control/MarginContainer/DroneControls/SpawnDistractor" to="." method="_on_button_mouse_exited"] +[connection signal="pressed" from="Control/MarginContainer/DroneControls/SpawnDistractor" to="." method="_on_spawn_distractor_pressed"] diff --git a/scenes/high_scores.tscn b/scenes/high_scores.tscn new file mode 100644 index 0000000..259d35c --- /dev/null +++ b/scenes/high_scores.tscn @@ -0,0 +1,507 @@ +[gd_scene load_steps=22 format=3 uid="uid://8k8c321l2tqn"] + +[ext_resource type="Script" path="res://scenes/scripts/high_scores.gd" id="1_b6h24"] +[ext_resource type="PackedScene" uid="uid://dn6aa6f2f4g4i" path="res://components/RulesComponent.tscn" id="2_0nt60"] +[ext_resource type="Resource" uid="uid://dxkuoaiws5cc3" path="res://levels/rules/high_scores.tres" id="3_j02f5"] +[ext_resource type="PackedScene" uid="uid://d1uawawum16b0" path="res://scenes/elements/background.tscn" id="4_avnkq"] +[ext_resource type="PackedScene" uid="uid://dwuc6byusf1r3" path="res://scenes/decor/bush.tscn" id="5_0bo18"] +[ext_resource type="PackedScene" uid="uid://dj51rgpihnhi" path="res://scenes/decor/naked_tree.tscn" id="6_4e28x"] +[ext_resource type="PackedScene" uid="uid://d3mas42mbgec1" path="res://scenes/decor/tree.tscn" id="7_v0qqa"] +[ext_resource type="PackedScene" uid="uid://eiyribk1ijcu" path="res://scenes/decor/mushroom.tscn" id="8_fjao7"] +[ext_resource type="PackedScene" uid="uid://bme541qdw7nai" path="res://entities/Flowers.tscn" id="9_vqajv"] +[ext_resource type="Texture2D" uid="uid://cvjdxb2cybcow" path="res://resources/textures/gravestone.png" id="9_x7ooo"] +[ext_resource type="PackedScene" uid="uid://dyu4mucawjlu6" path="res://entities/Beehive.tscn" id="10_6aukt"] +[ext_resource type="PackedScene" uid="uid://ddf2mkkw1trkj" path="res://scenes/elements/bee_spawner.tscn" id="11_2vjev"] +[ext_resource type="PackedScene" uid="uid://b7eeptlk47ymd" path="res://ui/UiComponent.tscn" id="12_c13u3"] +[ext_resource type="PackedScene" uid="uid://ct3c16xm33r2a" path="res://scenes/elements/drone_manager.tscn" id="13_vehjd"] +[ext_resource type="PackedScene" uid="uid://cx7cunaspu08a" path="res://entities/DancerDrone.tscn" id="14_j78b6"] +[ext_resource type="PackedScene" uid="uid://dqdi1tpoid80c" path="res://entities/CollectorDrone.tscn" id="15_mjeko"] +[ext_resource type="PackedScene" uid="uid://cwutwy11pityw" path="res://ui/LevelCompleteComponent.tscn" id="16_kv4mb"] +[ext_resource type="Texture2D" uid="uid://bhw76y620miuj" path="res://resources/images/highscores.png" id="18_3tnes"] +[ext_resource type="Texture2D" uid="uid://cm4u74pa1mmwu" path="res://resources/textures/honeypot.png" id="19_au33w"] +[ext_resource type="Texture2D" uid="uid://dfsiavjapcxkk" path="res://resources/textures/flower_1.png" id="20_04eck"] +[ext_resource type="Texture2D" uid="uid://d3305m7gu47h2" path="res://resources/textures/flower_2.png" id="21_bmgsg"] + +[node name="HighScores" type="Node2D"] +script = ExtResource("1_b6h24") + +[node name="RulesComponent" parent="." instance=ExtResource("2_0nt60")] +unique_name_in_owner = true +game_rules = ExtResource("3_j02f5") + +[node name="Grass" parent="." instance=ExtResource("4_avnkq")] + +[node name="LevelDecor" type="Node" parent="."] + +[node name="BushGroup" type="Node2D" parent="LevelDecor"] +position = Vector2(37, -6) + +[node name="Bush" parent="LevelDecor/BushGroup" instance=ExtResource("5_0bo18")] +position = Vector2(1110, 28) +scale = Vector2(0.25, 0.25) + +[node name="Bush3" parent="LevelDecor/BushGroup" instance=ExtResource("5_0bo18")] +visible = false +position = Vector2(1272, 123) +scale = Vector2(0.25, 0.25) + +[node name="Bush2" parent="LevelDecor/BushGroup" instance=ExtResource("5_0bo18")] +position = Vector2(1214, 47) +rotation = 0.60912 +scale = Vector2(0.4, 0.4) + +[node name="BushGroup3" type="Node2D" parent="LevelDecor"] +position = Vector2(267, 589) +scale = Vector2(0.75, 0.75) + +[node name="Bush" parent="LevelDecor/BushGroup3" instance=ExtResource("5_0bo18")] +visible = false +position = Vector2(1110, 28) +scale = Vector2(0.25, 0.25) + +[node name="Bush3" parent="LevelDecor/BushGroup3" instance=ExtResource("5_0bo18")] +visible = false +position = Vector2(1272, 123) +scale = Vector2(0.25, 0.25) + +[node name="Bush2" parent="LevelDecor/BushGroup3" instance=ExtResource("5_0bo18")] +position = Vector2(1214, 47) +rotation = 0.60912 +scale = Vector2(0.4, 0.4) + +[node name="BushGroup2" type="Node2D" parent="LevelDecor"] +position = Vector2(-571, 1315) +rotation = 5.29882 + +[node name="Bush" parent="LevelDecor/BushGroup2" instance=ExtResource("5_0bo18")] +position = Vector2(1110, 28) +scale = Vector2(0.25, 0.25) + +[node name="Bush3" parent="LevelDecor/BushGroup2" instance=ExtResource("5_0bo18")] +visible = false +position = Vector2(1272, 123) +scale = Vector2(0.25, 0.25) + +[node name="Bush2" parent="LevelDecor/BushGroup2" instance=ExtResource("5_0bo18")] +position = Vector2(1214, 47) +rotation = 0.60912 +scale = Vector2(0.4, 0.4) + +[node name="NakedTree" parent="LevelDecor" instance=ExtResource("6_4e28x")] +position = Vector2(3, 244) +scale = Vector2(0.6, 0.6) + +[node name="Tree" parent="LevelDecor" instance=ExtResource("7_v0qqa")] +position = Vector2(135, 88) +scale = Vector2(0.6, 0.6) + +[node name="Tree2" parent="LevelDecor" instance=ExtResource("7_v0qqa")] +visible = false +position = Vector2(64, 473) +rotation = -0.42237 +scale = Vector2(0.4, 0.4) + +[node name="Mushrooms" type="Node2D" parent="LevelDecor"] +position = Vector2(-19, 253) + +[node name="Mushroom" parent="LevelDecor/Mushrooms" instance=ExtResource("8_fjao7")] +position = Vector2(232, 250) +scale = Vector2(0.5, 0.5) + +[node name="Mushroom2" parent="LevelDecor/Mushrooms" instance=ExtResource("8_fjao7")] +position = Vector2(252, 289) +rotation = 1.13446 +scale = Vector2(0.3, 0.3) + +[node name="Mushroom3" parent="LevelDecor/Mushrooms" instance=ExtResource("8_fjao7")] +position = Vector2(260, 225) +rotation = 1.13446 +scale = Vector2(0.3, 0.3) + +[node name="Gravestone" type="Sprite2D" parent="LevelDecor"] +position = Vector2(1069, 498) +scale = Vector2(0.5, 0.5) +texture = ExtResource("9_x7ooo") + +[node name="Shadow" type="Sprite2D" parent="LevelDecor/Gravestone"] +modulate = Color(0, 0, 0, 0.0784314) +show_behind_parent = true +position = Vector2(2, 98) +scale = Vector2(1, 0.4) +texture = ExtResource("9_x7ooo") + +[node name="Mushrooms2" type="Node2D" parent="LevelDecor"] +position = Vector2(1147, 1023) +rotation = 3.70359 + +[node name="Mushroom" parent="LevelDecor/Mushrooms2" instance=ExtResource("8_fjao7")] +position = Vector2(232, 250) +scale = Vector2(0.5, 0.5) + +[node name="Mushroom2" parent="LevelDecor/Mushrooms2" instance=ExtResource("8_fjao7")] +visible = false +position = Vector2(252, 289) +rotation = 1.13446 +scale = Vector2(0.3, 0.3) + +[node name="Mushroom3" parent="LevelDecor/Mushrooms2" instance=ExtResource("8_fjao7")] +position = Vector2(260, 225) +rotation = 1.13446 +scale = Vector2(0.3, 0.3) + +[node name="Flower1" type="Sprite2D" parent="LevelDecor"] +position = Vector2(608, 269) +scale = Vector2(0.4, 0.4) +texture = ExtResource("20_04eck") + +[node name="Flower2" type="Sprite2D" parent="LevelDecor"] +position = Vector2(640, 241) +scale = Vector2(0.4, 0.4) +texture = ExtResource("21_bmgsg") + +[node name="Flower3" type="Sprite2D" parent="LevelDecor"] +position = Vector2(676, 277) +scale = Vector2(0.5, 0.5) +texture = ExtResource("20_04eck") + +[node name="Flowers" parent="." instance=ExtResource("9_vqajv")] +unique_name_in_owner = true +position = Vector2(1115, 223) + +[node name="Beehive" parent="." groups=["beehive"] instance=ExtResource("10_6aukt")] +unique_name_in_owner = true +position = Vector2(281, 176) + +[node name="BeeSpawner" parent="." instance=ExtResource("11_2vjev")] +unique_name_in_owner = true + +[node name="UiComponent" parent="." instance=ExtResource("12_c13u3")] +unique_name_in_owner = true +visible = false +z_index = 20 +offset_right = 1280.0 +offset_bottom = 720.0 + +[node name="DroneManager" parent="." instance=ExtResource("13_vehjd")] +unique_name_in_owner = true + +[node name="DancerDrone" parent="DroneManager/SpawnedDrones" index="0" instance=ExtResource("14_j78b6")] +position = Vector2(316, 231) + +[node name="CollectorDrone" parent="DroneManager/SpawnedDrones" index="1" instance=ExtResource("15_mjeko")] +position = Vector2(1110, 202) + +[node name="Control" parent="DroneManager" index="1"] +visible = false + +[node name="LevelCompleteComponent" parent="." instance=ExtResource("16_kv4mb")] +visible = false +z_index = 999 +offset_right = 1280.0 +offset_bottom = 720.0 + +[node name="Highscores" type="Sprite2D" parent="."] +position = Vector2(693, 148) +scale = Vector2(0.5, 0.5) +texture = ExtResource("18_3tnes") + +[node name="HighScores" type="Control" parent="."] +z_index = 90 +layout_mode = 3 +anchors_preset = 0 +offset_right = 40.0 +offset_bottom = 40.0 + +[node name="CenterContainer" type="CenterContainer" parent="HighScores"] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +offset_left = -10.5 +offset_right = 1229.5 +offset_bottom = 680.0 +grow_horizontal = 2 +grow_vertical = 2 + +[node name="MarginContainer" type="MarginContainer" parent="HighScores/CenterContainer"] +layout_mode = 2 +theme_override_constants/margin_left = 20 +theme_override_constants/margin_top = 150 +theme_override_constants/margin_right = 20 +theme_override_constants/margin_bottom = 20 + +[node name="GridContainer" type="GridContainer" parent="HighScores/CenterContainer/MarginContainer"] +layout_mode = 2 +columns = 3 + +[node name="LevelScoreContainer1" type="Panel" parent="HighScores/CenterContainer/MarginContainer/GridContainer"] +custom_minimum_size = Vector2(200, 80) +layout_mode = 2 + +[node name="MarginContainer" type="MarginContainer" parent="HighScores/CenterContainer/MarginContainer/GridContainer/LevelScoreContainer1"] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_constants/margin_left = 20 +theme_override_constants/margin_top = 20 +theme_override_constants/margin_right = 20 +theme_override_constants/margin_bottom = 20 + +[node name="VBoxContainer" type="VBoxContainer" parent="HighScores/CenterContainer/MarginContainer/GridContainer/LevelScoreContainer1/MarginContainer"] +layout_mode = 2 + +[node name="LevelOneLabel" type="Label" parent="HighScores/CenterContainer/MarginContainer/GridContainer/LevelScoreContainer1/MarginContainer/VBoxContainer"] +layout_mode = 2 +theme_override_colors/font_shadow_color = Color(0, 0, 0, 0) +text = "Level One" +horizontal_alignment = 1 + +[node name="LevelOneScoreLabel" type="Label" parent="HighScores/CenterContainer/MarginContainer/GridContainer/LevelScoreContainer1/MarginContainer/VBoxContainer"] +unique_name_in_owner = true +layout_mode = 2 +theme_override_colors/font_shadow_color = Color(0, 0, 0, 0) +theme_override_font_sizes/font_size = 20 +text = "123121" +horizontal_alignment = 1 + +[node name="LevelScoreContainer2" type="Panel" parent="HighScores/CenterContainer/MarginContainer/GridContainer"] +custom_minimum_size = Vector2(200, 80) +layout_mode = 2 + +[node name="MarginContainer" type="MarginContainer" parent="HighScores/CenterContainer/MarginContainer/GridContainer/LevelScoreContainer2"] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_constants/margin_left = 20 +theme_override_constants/margin_top = 20 +theme_override_constants/margin_right = 20 +theme_override_constants/margin_bottom = 20 + +[node name="VBoxContainer" type="VBoxContainer" parent="HighScores/CenterContainer/MarginContainer/GridContainer/LevelScoreContainer2/MarginContainer"] +layout_mode = 2 + +[node name="LevelTwoLabel" type="Label" parent="HighScores/CenterContainer/MarginContainer/GridContainer/LevelScoreContainer2/MarginContainer/VBoxContainer"] +layout_mode = 2 +theme_override_colors/font_shadow_color = Color(0, 0, 0, 0) +text = "Level Two" +horizontal_alignment = 1 + +[node name="LevelTwoScoreLabel" type="Label" parent="HighScores/CenterContainer/MarginContainer/GridContainer/LevelScoreContainer2/MarginContainer/VBoxContainer"] +unique_name_in_owner = true +layout_mode = 2 +theme_override_colors/font_shadow_color = Color(0, 0, 0, 0) +theme_override_font_sizes/font_size = 20 +text = "123121" +horizontal_alignment = 1 + +[node name="LevelScoreContainer3" type="Panel" parent="HighScores/CenterContainer/MarginContainer/GridContainer"] +custom_minimum_size = Vector2(200, 80) +layout_mode = 2 + +[node name="MarginContainer" type="MarginContainer" parent="HighScores/CenterContainer/MarginContainer/GridContainer/LevelScoreContainer3"] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_constants/margin_left = 20 +theme_override_constants/margin_top = 20 +theme_override_constants/margin_right = 20 +theme_override_constants/margin_bottom = 20 + +[node name="VBoxContainer" type="VBoxContainer" parent="HighScores/CenterContainer/MarginContainer/GridContainer/LevelScoreContainer3/MarginContainer"] +layout_mode = 2 + +[node name="LevelThreeLabel" type="Label" parent="HighScores/CenterContainer/MarginContainer/GridContainer/LevelScoreContainer3/MarginContainer/VBoxContainer"] +layout_mode = 2 +theme_override_colors/font_shadow_color = Color(0, 0, 0, 0) +text = "Level Three" +horizontal_alignment = 1 + +[node name="LevelThreeScoreLabel" type="Label" parent="HighScores/CenterContainer/MarginContainer/GridContainer/LevelScoreContainer3/MarginContainer/VBoxContainer"] +unique_name_in_owner = true +layout_mode = 2 +theme_override_colors/font_shadow_color = Color(0, 0, 0, 0) +theme_override_font_sizes/font_size = 20 +text = "123121" +horizontal_alignment = 1 + +[node name="LevelScoreContainer4" type="Panel" parent="HighScores/CenterContainer/MarginContainer/GridContainer"] +custom_minimum_size = Vector2(200, 80) +layout_mode = 2 + +[node name="MarginContainer" type="MarginContainer" parent="HighScores/CenterContainer/MarginContainer/GridContainer/LevelScoreContainer4"] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_constants/margin_left = 20 +theme_override_constants/margin_top = 20 +theme_override_constants/margin_right = 20 +theme_override_constants/margin_bottom = 20 + +[node name="VBoxContainer" type="VBoxContainer" parent="HighScores/CenterContainer/MarginContainer/GridContainer/LevelScoreContainer4/MarginContainer"] +layout_mode = 2 + +[node name="LevelFourLabel" type="Label" parent="HighScores/CenterContainer/MarginContainer/GridContainer/LevelScoreContainer4/MarginContainer/VBoxContainer"] +layout_mode = 2 +theme_override_colors/font_shadow_color = Color(0, 0, 0, 0) +text = "Level Four" +horizontal_alignment = 1 + +[node name="LevelFourScoreLabel" type="Label" parent="HighScores/CenterContainer/MarginContainer/GridContainer/LevelScoreContainer4/MarginContainer/VBoxContainer"] +unique_name_in_owner = true +layout_mode = 2 +theme_override_colors/font_shadow_color = Color(0, 0, 0, 0) +theme_override_font_sizes/font_size = 20 +text = "123121" +horizontal_alignment = 1 + +[node name="LevelScoreContainer5" type="Panel" parent="HighScores/CenterContainer/MarginContainer/GridContainer"] +custom_minimum_size = Vector2(200, 80) +layout_mode = 2 + +[node name="MarginContainer" type="MarginContainer" parent="HighScores/CenterContainer/MarginContainer/GridContainer/LevelScoreContainer5"] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_constants/margin_left = 20 +theme_override_constants/margin_top = 20 +theme_override_constants/margin_right = 20 +theme_override_constants/margin_bottom = 20 + +[node name="VBoxContainer" type="VBoxContainer" parent="HighScores/CenterContainer/MarginContainer/GridContainer/LevelScoreContainer5/MarginContainer"] +layout_mode = 2 + +[node name="LevelFiveLabel" type="Label" parent="HighScores/CenterContainer/MarginContainer/GridContainer/LevelScoreContainer5/MarginContainer/VBoxContainer"] +layout_mode = 2 +theme_override_colors/font_shadow_color = Color(0, 0, 0, 0) +text = "Level Five" +horizontal_alignment = 1 + +[node name="LevelFiveScoreLabel" type="Label" parent="HighScores/CenterContainer/MarginContainer/GridContainer/LevelScoreContainer5/MarginContainer/VBoxContainer"] +unique_name_in_owner = true +layout_mode = 2 +theme_override_colors/font_shadow_color = Color(0, 0, 0, 0) +theme_override_font_sizes/font_size = 20 +text = "123121" +horizontal_alignment = 1 + +[node name="LevelScoreContainer6" type="Panel" parent="HighScores/CenterContainer/MarginContainer/GridContainer"] +custom_minimum_size = Vector2(200, 80) +layout_mode = 2 + +[node name="MarginContainer" type="MarginContainer" parent="HighScores/CenterContainer/MarginContainer/GridContainer/LevelScoreContainer6"] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_constants/margin_left = 20 +theme_override_constants/margin_top = 20 +theme_override_constants/margin_right = 20 +theme_override_constants/margin_bottom = 20 + +[node name="VBoxContainer" type="VBoxContainer" parent="HighScores/CenterContainer/MarginContainer/GridContainer/LevelScoreContainer6/MarginContainer"] +layout_mode = 2 + +[node name="LevelSixLabel" type="Label" parent="HighScores/CenterContainer/MarginContainer/GridContainer/LevelScoreContainer6/MarginContainer/VBoxContainer"] +layout_mode = 2 +theme_override_colors/font_shadow_color = Color(0, 0, 0, 0) +text = "Level Six" +horizontal_alignment = 1 + +[node name="LevelSixScoreLabel" type="Label" parent="HighScores/CenterContainer/MarginContainer/GridContainer/LevelScoreContainer6/MarginContainer/VBoxContainer"] +unique_name_in_owner = true +layout_mode = 2 +theme_override_colors/font_shadow_color = Color(0, 0, 0, 0) +theme_override_font_sizes/font_size = 20 +text = "123121" +horizontal_alignment = 1 + +[node name="Credits" type="Label" parent="HighScores"] +layout_mode = 0 +offset_top = 590.0 +offset_right = 1280.0 +offset_bottom = 695.0 +theme_override_colors/font_color = Color(1, 1, 1, 1) +text = "Design, art, code and music by Dan \"Ritual\" Baker - Ritual.sh / HappyLittleRobots on Itch.io + +With special thanks to: +My Wife & Kids, Lu, and the Week Sauce Discord server + +Kaph font by GBbot on Itch.io, mouse cursors by kenney.nl" +horizontal_alignment = 1 + +[node name="BeeDeathLabel" type="Label" parent="HighScores"] +unique_name_in_owner = true +layout_mode = 0 +offset_left = 1036.0 +offset_top = 450.0 +offset_right = 1126.0 +offset_bottom = 474.0 +rotation = 0.331613 +tooltip_text = "You Monster" +mouse_filter = 1 +theme_override_colors/font_color = Color(0.482353, 0.513726, 0.509804, 1) +theme_override_colors/font_shadow_color = Color(0.156863, 0.156863, 0.188235, 1) +theme_override_colors/font_outline_color = Color(0.372549, 0.372549, 0.431373, 1) +theme_override_constants/shadow_offset_x = -1 +theme_override_constants/shadow_offset_y = -1 +theme_override_constants/outline_size = 1 +theme_override_font_sizes/font_size = 20 +text = "999" +horizontal_alignment = 1 + +[node name="HoneyCountLabel" type="Label" parent="HighScores"] +unique_name_in_owner = true +custom_minimum_size = Vector2(60, 0) +layout_mode = 0 +offset_left = 98.0 +offset_top = 602.0 +offset_right = 158.0 +offset_bottom = 617.0 +rotation = -0.0349066 +tooltip_text = "Total honey collected" +mouse_filter = 1 +theme_override_colors/font_color = Color(0.988235, 0.772549, 0.223529, 1) +theme_override_colors/font_shadow_color = Color(0.0745098, 0.00392157, 0.00784314, 1) +text = "123 " +horizontal_alignment = 1 + +[node name="MainMenuButton" type="Button" parent="HighScores"] +unique_name_in_owner = true +layout_mode = 0 +offset_left = 15.0 +offset_top = 645.0 +offset_right = 215.0 +offset_bottom = 705.0 +text = "Main Menu" + +[node name="Honeypot" type="Sprite2D" parent="."] +position = Vector2(128, 572) +rotation = -0.0349066 +scale = Vector2(0.25, 0.25) +texture = ExtResource("19_au33w") + +[node name="Shadow" type="Sprite2D" parent="Honeypot"] +modulate = Color(0, 0, 0, 0.0784314) +show_behind_parent = true +position = Vector2(-1.86554, 168.037) +scale = Vector2(1, 0.3) +texture = ExtResource("19_au33w") + +[editable path="DroneManager"] diff --git a/scenes/main_menu.tscn b/scenes/main_menu.tscn new file mode 100644 index 0000000..ed871d3 --- /dev/null +++ b/scenes/main_menu.tscn @@ -0,0 +1,241 @@ +[gd_scene load_steps=20 format=3 uid="uid://cdk8rrve1fe3u"] + +[ext_resource type="Script" path="res://scenes/scripts/main_menu.gd" id="1_ges7y"] +[ext_resource type="Resource" uid="uid://bn4qhonifxne3" path="res://levels/rules/main_menu.tres" id="2_4iepj"] +[ext_resource type="PackedScene" uid="uid://dn6aa6f2f4g4i" path="res://components/RulesComponent.tscn" id="2_hanec"] +[ext_resource type="PackedScene" uid="uid://d1uawawum16b0" path="res://scenes/elements/background.tscn" id="4_nllu8"] +[ext_resource type="PackedScene" uid="uid://dwuc6byusf1r3" path="res://scenes/decor/bush.tscn" id="5_nchqc"] +[ext_resource type="PackedScene" uid="uid://dj51rgpihnhi" path="res://scenes/decor/naked_tree.tscn" id="6_8uihn"] +[ext_resource type="PackedScene" uid="uid://d3mas42mbgec1" path="res://scenes/decor/tree.tscn" id="7_7exa3"] +[ext_resource type="PackedScene" uid="uid://eiyribk1ijcu" path="res://scenes/decor/mushroom.tscn" id="8_6i1ud"] +[ext_resource type="PackedScene" uid="uid://bme541qdw7nai" path="res://entities/Flowers.tscn" id="9_4o4st"] +[ext_resource type="PackedScene" uid="uid://dyu4mucawjlu6" path="res://entities/Beehive.tscn" id="10_1lp5c"] +[ext_resource type="PackedScene" uid="uid://ddf2mkkw1trkj" path="res://scenes/elements/bee_spawner.tscn" id="11_4klp1"] +[ext_resource type="PackedScene" uid="uid://b7eeptlk47ymd" path="res://ui/UiComponent.tscn" id="12_nr5o6"] +[ext_resource type="PackedScene" uid="uid://ct3c16xm33r2a" path="res://scenes/elements/drone_manager.tscn" id="13_8vv1a"] +[ext_resource type="PackedScene" uid="uid://cx7cunaspu08a" path="res://entities/DancerDrone.tscn" id="13_fi5ph"] +[ext_resource type="PackedScene" uid="uid://dqdi1tpoid80c" path="res://entities/CollectorDrone.tscn" id="14_qpr88"] +[ext_resource type="PackedScene" uid="uid://cwutwy11pityw" path="res://ui/LevelCompleteComponent.tscn" id="14_swqxu"] +[ext_resource type="PackedScene" uid="uid://cfhoi2rqxa3up" path="res://entities/Dog.tscn" id="19_a6u8t"] +[ext_resource type="Texture2D" uid="uid://15wckxixnr8y" path="res://resources/images/logo.png" id="19_jw5rd"] +[ext_resource type="Texture2D" uid="uid://c3tl5pihlrd8u" path="res://resources/cursors/navigation_s.png" id="20_fw4ew"] + +[node name="MainMenu" type="Node2D"] +script = ExtResource("1_ges7y") + +[node name="RulesComponent" parent="." instance=ExtResource("2_hanec")] +unique_name_in_owner = true +game_rules = ExtResource("2_4iepj") + +[node name="Grass" parent="." instance=ExtResource("4_nllu8")] + +[node name="LevelDecor" type="Node" parent="."] + +[node name="BushGroup" type="Node2D" parent="LevelDecor"] +position = Vector2(37, -6) + +[node name="Bush" parent="LevelDecor/BushGroup" instance=ExtResource("5_nchqc")] +position = Vector2(1110, 28) +scale = Vector2(0.25, 0.25) + +[node name="Bush3" parent="LevelDecor/BushGroup" instance=ExtResource("5_nchqc")] +visible = false +position = Vector2(1272, 123) +scale = Vector2(0.25, 0.25) + +[node name="Bush2" parent="LevelDecor/BushGroup" instance=ExtResource("5_nchqc")] +position = Vector2(1214, 47) +rotation = 0.60912 +scale = Vector2(0.4, 0.4) + +[node name="BushGroup3" type="Node2D" parent="LevelDecor"] +position = Vector2(-745, 607) +scale = Vector2(0.75, 0.75) + +[node name="Bush" parent="LevelDecor/BushGroup3" instance=ExtResource("5_nchqc")] +visible = false +position = Vector2(1110, 28) +scale = Vector2(0.25, 0.25) + +[node name="Bush3" parent="LevelDecor/BushGroup3" instance=ExtResource("5_nchqc")] +visible = false +position = Vector2(1272, 123) +scale = Vector2(0.25, 0.25) + +[node name="Bush2" parent="LevelDecor/BushGroup3" instance=ExtResource("5_nchqc")] +position = Vector2(1214, 47) +rotation = 0.60912 +scale = Vector2(0.4, 0.4) + +[node name="BushGroup2" type="Node2D" parent="LevelDecor"] +position = Vector2(480, 1562) +rotation = 5.29882 + +[node name="Bush" parent="LevelDecor/BushGroup2" instance=ExtResource("5_nchqc")] +position = Vector2(1110, 28) +scale = Vector2(0.25, 0.25) + +[node name="Bush3" parent="LevelDecor/BushGroup2" instance=ExtResource("5_nchqc")] +visible = false +position = Vector2(1272, 123) +scale = Vector2(0.25, 0.25) + +[node name="Bush2" parent="LevelDecor/BushGroup2" instance=ExtResource("5_nchqc")] +position = Vector2(1214, 47) +rotation = 0.60912 +scale = Vector2(0.4, 0.4) + +[node name="NakedTree" parent="LevelDecor" instance=ExtResource("6_8uihn")] +position = Vector2(53, 336) +scale = Vector2(0.6, 0.6) + +[node name="Tree" parent="LevelDecor" instance=ExtResource("7_7exa3")] +position = Vector2(135, 88) +scale = Vector2(0.6, 0.6) + +[node name="Tree2" parent="LevelDecor" instance=ExtResource("7_7exa3")] +position = Vector2(64, 473) +rotation = -0.42237 +scale = Vector2(0.4, 0.4) + +[node name="Mushrooms" type="Node2D" parent="LevelDecor"] +position = Vector2(136, -200) + +[node name="Mushroom" parent="LevelDecor/Mushrooms" instance=ExtResource("8_6i1ud")] +position = Vector2(232, 250) +scale = Vector2(0.5, 0.5) + +[node name="Mushroom2" parent="LevelDecor/Mushrooms" instance=ExtResource("8_6i1ud")] +position = Vector2(252, 289) +rotation = 1.13446 +scale = Vector2(0.3, 0.3) + +[node name="Mushroom3" parent="LevelDecor/Mushrooms" instance=ExtResource("8_6i1ud")] +position = Vector2(260, 225) +rotation = 1.13446 +scale = Vector2(0.3, 0.3) + +[node name="Mushrooms2" type="Node2D" parent="LevelDecor"] +position = Vector2(1338, 813) +rotation = 2.81347 + +[node name="Mushroom" parent="LevelDecor/Mushrooms2" instance=ExtResource("8_6i1ud")] +position = Vector2(232, 250) +scale = Vector2(0.5, 0.5) + +[node name="Mushroom2" parent="LevelDecor/Mushrooms2" instance=ExtResource("8_6i1ud")] +position = Vector2(252, 289) +rotation = 1.13446 +scale = Vector2(0.3, 0.3) + +[node name="Mushroom3" parent="LevelDecor/Mushrooms2" instance=ExtResource("8_6i1ud")] +position = Vector2(260, 225) +rotation = 1.13446 +scale = Vector2(0.3, 0.3) + +[node name="Flowers" parent="." instance=ExtResource("9_4o4st")] +unique_name_in_owner = true +position = Vector2(1042, 458) + +[node name="Dog" parent="." instance=ExtResource("19_a6u8t")] +position = Vector2(1034, 177) +rotation = 1.03149 +distracted = true + +[node name="Beehive" parent="." groups=["beehive"] instance=ExtResource("10_1lp5c")] +unique_name_in_owner = true +position = Vector2(306, 459) + +[node name="BeeSpawner" parent="." instance=ExtResource("11_4klp1")] +unique_name_in_owner = true + +[node name="UiComponent" parent="." instance=ExtResource("12_nr5o6")] +unique_name_in_owner = true +visible = false +z_index = 20 +offset_right = 1280.0 +offset_bottom = 720.0 + +[node name="DroneManager" parent="." instance=ExtResource("13_8vv1a")] +unique_name_in_owner = true + +[node name="DancerDrone" parent="DroneManager/SpawnedDrones" index="0" instance=ExtResource("13_fi5ph")] +position = Vector2(345, 616) + +[node name="CollectorDrone" parent="DroneManager/SpawnedDrones" index="1" instance=ExtResource("14_qpr88")] +position = Vector2(1125, 398) + +[node name="Control" parent="DroneManager" index="1"] +visible = false + +[node name="LevelCompleteComponent" parent="." instance=ExtResource("14_swqxu")] +visible = false +z_index = 999 +offset_right = 1280.0 +offset_bottom = 720.0 + +[node name="Logo" type="Sprite2D" parent="."] +position = Vector2(640, 167) +texture = ExtResource("19_jw5rd") + +[node name="LevelSelect" type="Control" parent="."] +layout_mode = 3 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +offset_right = 1280.0 +offset_bottom = 720.0 +grow_horizontal = 2 +grow_vertical = 2 + +[node name="CenterContainer" type="CenterContainer" parent="LevelSelect"] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 + +[node name="MarginContainer" type="MarginContainer" parent="LevelSelect/CenterContainer"] +layout_mode = 2 +theme_override_constants/margin_top = 200 + +[node name="VBoxContainer" type="VBoxContainer" parent="LevelSelect/CenterContainer/MarginContainer"] +layout_mode = 2 + +[node name="MenuButton" type="MenuButton" parent="LevelSelect/CenterContainer/MarginContainer/VBoxContainer"] +unique_name_in_owner = true +custom_minimum_size = Vector2(400, 100) +layout_mode = 2 +theme_override_font_sizes/font_size = 20 +text = "Level Select" +icon = ExtResource("20_fw4ew") +flat = false +icon_alignment = 2 +item_count = 6 +popup/item_0/text = "Level One" +popup/item_0/id = 1 +popup/item_1/text = "Level Two" +popup/item_1/id = 2 +popup/item_2/text = "Level Three" +popup/item_2/id = 3 +popup/item_3/text = "Level Four" +popup/item_3/id = 4 +popup/item_4/text = "Level Five" +popup/item_4/id = 5 +popup/item_5/text = "Level Six" +popup/item_5/id = 6 + +[node name="HighScores" type="Button" parent="LevelSelect/CenterContainer/MarginContainer/VBoxContainer"] +unique_name_in_owner = true +custom_minimum_size = Vector2(0, 50) +layout_mode = 2 +text = "High Scores & Credits" + +[node name="ExitGame" type="Button" parent="LevelSelect/CenterContainer/MarginContainer/VBoxContainer"] +unique_name_in_owner = true +custom_minimum_size = Vector2(0, 50) +layout_mode = 2 +text = "Quit Game" + +[editable path="DroneManager"] diff --git a/scenes/scene_manager.tscn b/scenes/scene_manager.tscn new file mode 100644 index 0000000..c7f99ad --- /dev/null +++ b/scenes/scene_manager.tscn @@ -0,0 +1,26 @@ +[gd_scene load_steps=6 format=3 uid="uid://cbsqd08rb8f83"] + +[ext_resource type="PackedScene" uid="uid://cdk8rrve1fe3u" path="res://scenes/main_menu.tscn" id="1_phmcp"] +[ext_resource type="Script" path="res://scenes/scripts/scene_manager.gd" id="1_py1pt"] +[ext_resource type="PackedScene" uid="uid://bhy041v5u551a" path="res://scenes/transition_scene.tscn" id="2_jhpbi"] +[ext_resource type="AudioStream" uid="uid://bgcbd6xf0lyrr" path="res://resources/music/bee_background.ogg" id="4_px4qr"] +[ext_resource type="AudioStream" uid="uid://dvsjpsh5dyixq" path="res://resources/SFX/mixkit-european-spring-forest-ambience-1219.wav" id="5_r1xj0"] + +[node name="SceneManager" type="Node2D"] +script = ExtResource("1_py1pt") + +[node name="CurrentScene" type="Node" parent="."] + +[node name="MainMenu" parent="CurrentScene" instance=ExtResource("1_phmcp")] + +[node name="TransitionScene" parent="." instance=ExtResource("2_jhpbi")] + +[node name="BackgroundMusic" type="AudioStreamPlayer" parent="."] +process_mode = 3 +stream = ExtResource("4_px4qr") +volume_db = -18.0 +autoplay = true + +[node name="AtmosphericSounds" type="AudioStreamPlayer" parent="."] +stream = ExtResource("5_r1xj0") +autoplay = true diff --git a/scenes/scripts/bee_spawner.gd b/scenes/scripts/bee_spawner.gd new file mode 100644 index 0000000..50de788 --- /dev/null +++ b/scenes/scripts/bee_spawner.gd @@ -0,0 +1,38 @@ +extends Node2D +class_name BeeSpawner + +var bee : Resource = preload("res://entities/Bee.tscn") + +@onready var beehive : Beehive = get_node("../Beehive") +@onready var bee_sound : AudioStreamPlayer = get_node("BigBeeSound") +@onready var small_bee_sound : AudioStreamPlayer = get_node("BeeSound") + +var bee_count : int = 0 +var max_bees : int = 100 +var spawn_interval : float = 0.5 +var spawn_timer : float = 0.0 +var bee_sound_timer : float = 0.0 + +func spawn_bee() -> void: + var bee_instance : Bee = bee.instantiate() + add_child(bee_instance) + bee_instance.position = beehive.global_position + +func _process(delta : float) -> void: + spawn_timer += delta + + if spawn_timer > spawn_interval and bee_count < max_bees and beehive.dancer_in_range: + spawn_bee() + spawn_timer = 0.0 + bee_count += 1 + Log.pr("Bee count: " + str(bee_count)) + + if bee_count > 0 and small_bee_sound.playing == false: + small_bee_sound.play() + +func _physics_process(delta : float) -> void: + bee_sound_timer += delta + if bee_sound_timer > 1.0 and bee_count > 0: + bee_sound_timer = 0.0 + if randf() > 0.9 and bee_sound.playing == false: + bee_sound.play() diff --git a/scenes/scripts/dog.gd b/scenes/scripts/dog.gd new file mode 100644 index 0000000..f927cea --- /dev/null +++ b/scenes/scripts/dog.gd @@ -0,0 +1,64 @@ +extends Node2D +class_name Dog + +@onready var death_box : Area2D = $DeathBox +@onready var outline : Sprite2D = $AreaHighlight + +var acquired_target : Node2D = null +var target_timer : float = 0.0 +@export var distracted : bool = false +var distracted_by : Node2D = null + +func _ready() -> void: + death_box.connect("body_entered", Callable(self, "_on_body_entered")) + death_box.connect("body_exited", Callable(self, "_on_body_exited")) + +func _process(delta : float) -> void: + if acquired_target: + target_timer += delta + + # Look at the target + rotation = lerp_angle(rotation, rotation + get_angle_to(acquired_target.global_position), 0.5) + + if target_timer > 3.0: + # Kill the target! + acquired_target.die() + acquired_target = null + target_timer = 0.0 + return + + + if distracted_by: + # Look around + rotation = lerp_angle(rotation, rotation + get_angle_to(distracted_by.global_position), 0.5) + +func show_outline() -> void: + outline.visible = true + +func hide_outline() -> void: + outline.visible = false + + +func _on_body_entered(area : Node2D) -> void: + if area.is_in_group("bee") and distracted == false: + if !acquired_target: + Log.pr("Acquired target") + target_timer = 0.0 + acquired_target = area + + if area.is_in_group("distractor"): + Log.pr("Distracted") + acquired_target = null + distracted = true + distracted_by = area + +func _on_body_exited(area : Node2D) -> void: + if area == acquired_target: + Log.pr("Lost target") + acquired_target = null + target_timer = 0.0 + + if area.is_in_group("distractor"): + Log.pr("No longer distracted") + distracted = false + distracted_by = null diff --git a/scenes/scripts/drone_controls.gd b/scenes/scripts/drone_controls.gd new file mode 100644 index 0000000..ebe3c5a --- /dev/null +++ b/scenes/scripts/drone_controls.gd @@ -0,0 +1,23 @@ +extends HBoxContainer + +@onready var buttons : Array[Node] = get_children() + +func disable_buttons() -> void: + ## Disable all buttons + for button : Button in buttons: + button.disabled = true + + visible = false + +func enable_buttons() -> void: + ## Enable all buttons + for button : Button in buttons: + button.disabled = false + + visible = true + +func reset_button_focus() -> void: + ## Reset focus on all buttons + for button : Button in buttons: + button.release_focus() + \ No newline at end of file diff --git a/scenes/scripts/drone_manager.gd b/scenes/scripts/drone_manager.gd new file mode 100644 index 0000000..2b9c96f --- /dev/null +++ b/scenes/scripts/drone_manager.gd @@ -0,0 +1,191 @@ +extends Node2D +class_name DroneManager + +var spawning_drone : bool = false +var spawning_type : String = "" + +var director_drones : Array = [] # List of all director drones in the world + +@onready var rules : RulesComponent = get_parent().get_node("RulesComponent") as RulesComponent +@onready var beehive : Beehive = get_parent().get_node("Beehive") +@onready var flowers : Flowers = get_parent().get_node("Flowers") +@onready var dog : Dog = null +@onready var drone_controls : HBoxContainer = %DroneControls +@onready var ui_controls : UIComponent = get_parent().get_node("UiComponent") +@onready var spawned_drones_container : Node = get_node("SpawnedDrones") + +# Drones! +@onready var director_drone : Resource = preload("res://entities/DirectorDrone.tscn") +@onready var dancer_drone : Resource = preload("res://entities/DancerDrone.tscn") +@onready var distractor_drone : Resource = preload("res://entities/DistractorDrone.tscn") +@onready var collector_drone : Resource = preload("res://entities/CollectorDrone.tscn") + + +func _ready() -> void: + if !rules.game_rules.collector_enabled: + %SpawnCollector.visible = false + if !rules.game_rules.dancer_enabled: + %SpawnDancer.visible = false + if !rules.game_rules.director_enabled: + %SpawnDirector.visible = false + if !rules.game_rules.distractor_enabled: + %SpawnDistractor.visible = false + + # dog = get_parent().get_node("Dog") + if get_parent().has_node("Dog"): + dog = get_parent().get_node("Dog") + +## Function to detect right click event +func _input(event : InputEvent) -> void: + if spawning_drone: + if (event is InputEventMouseButton && event.button_index == MOUSE_BUTTON_RIGHT && event.pressed): + Log.pr("Cancelling placement of drone") + cancel_spawning() + if (event is InputEventMouseButton && event.button_index == MOUSE_BUTTON_LEFT && event.pressed): + spawn_drone(spawning_type) + cancel_spawning() + +func spawn_drone(drone_type : String) -> void: + Log.pr("This function will put a " + drone_type + " drone in the world") + + var new_drone : Node = null + # Create a new instance of the drone + if drone_type == "director": + new_drone = director_drone.instantiate() + # new_drone.visit_order = spawned_drones_container.get_child_count() + elif drone_type == "dancer": + new_drone = dancer_drone.instantiate() + # Hide the dancer button + %SpawnDancer.visible = false + GameState.game_start() # Start the game when the first dancer is placed + elif drone_type == "distractor": + new_drone = distractor_drone.instantiate() + elif drone_type == "collector": + new_drone = collector_drone.instantiate() + # Hide the collector button + %SpawnCollector.visible = false + else: + Log.pr("Unknown drone type: " + drone_type) + + spawned_drones_container.add_child(new_drone) + new_drone.position = get_viewport().get_mouse_position() + + if drone_type == "director": + # Set this drones visit order to the next in line + new_drone.visit_order = director_drones.size() + 1 + # Update the director drone list + update_director_drone_list() + + reset_node_highlights() + + GameState.add_drone() ## Increase drone count on the game state + +func place_drone(drone_type : String) -> void: + if !spawning_drone: + CursorMgr.place() + drone_controls.disable_buttons() + Log.pr("Placing " + drone_type + "...") + spawning_drone = true + GameState.placing_drone = true # This should probably be rolled into the above line + spawning_type = drone_type + +func cancel_spawning() -> void: + CursorMgr.reset_cursor() + drone_controls.reset_button_focus() + drone_controls.enable_buttons() + spawning_drone = false + GameState.placing_drone = false + spawning_type = "" + reset_node_highlights() + +func _on_spawn_director_pressed() -> void: + ui_controls.show_help_text("Help_Drone_Placement_Director") + place_drone("director") + +func _on_spawn_collector_pressed() -> void: + flowers.show_outline() + ui_controls.show_help_text("Help_Drone_Placement_Collector") + place_drone("collector") + +func _on_spawn_distractor_pressed() -> void: + if dog: + dog.show_outline() + place_drone("distractor") + +func _on_spawn_dancer_pressed() -> void: + beehive.show_outline() + ui_controls.show_help_text("Help_Drone_Placement_Dancer") + place_drone("dancer") + +func _on_spawn_director_mouse_entered() -> void: + reset_node_highlights() + ui_controls.show_help_text("Help_Drone_Placement_Director") + +func _on_spawn_collector_mouse_entered() -> void: + reset_node_highlights() + flowers.show_outline() + ui_controls.show_help_text("Help_Drone_Placement_Collector") + +func _on_spawn_distractor_mouse_entered() -> void: + reset_node_highlights() + if dog: + dog.show_outline() + ui_controls.show_help_text("Help_Drone_Placement_Distractor") + +func _on_spawn_dancer_mouse_entered() -> void: + reset_node_highlights() + beehive.show_outline() + ui_controls.show_help_text("Help_Drone_Placement_Dancer") + + +## Function to clear highlights when a button is mouse exited, if we arent spawning a drone +func _on_button_mouse_exited() -> void: + ## Update this to trigger something that hides help messages and resets highlights after a second or so + #if !spawning_drone: + # reset_node_highlights.call_deferred() + pass + +func update_director_drone_list() -> void: + director_drones.clear() + var x : int = 1 + for drone : Node in spawned_drones_container.get_children(): + if drone is DirectorDrone: + drone.visit_order = x + director_drones.append(drone) + x += 1 + + Log.pr(director_drones.size()) + +func get_director(drone_number : int) -> DirectorDrone: + for drone : Node in director_drones: + if drone.visit_order == drone_number: + return drone + return null + +func get_next_director(current_director_number : int) -> DirectorDrone: + for drone : Node in director_drones: + if drone.visit_order == current_director_number + 1: + return drone + return null + +func get_previous_director(current_director_number : int) -> DirectorDrone: + for drone : Node in director_drones: + if drone.visit_order == current_director_number - 1: + return drone + return null + +## For now this just returns the first collector drone it finds +## This will need to be updated to return the closest collector drone potentially? +func get_collector() -> CollectorDrone: + for drone : Node in spawned_drones_container.get_children(): + if drone is CollectorDrone: + return drone + return null + +func reset_node_highlights() -> void: + ui_controls.hide_help_text() + beehive.hide_outline() + flowers.hide_outline() + + if dog: + dog.hide_outline() \ No newline at end of file diff --git a/scenes/scripts/high_scores.gd b/scenes/scripts/high_scores.gd new file mode 100644 index 0000000..836dd34 --- /dev/null +++ b/scenes/scripts/high_scores.gd @@ -0,0 +1,19 @@ +extends Level +class_name HighScoresScreen + +func _ready() -> void: + update_game_state() + %BeeDeathLabel.text = Str.format_number(HighScoreMgr.loaded_data.total_bees_killed) + %HoneyCountLabel.text = Str.format_number(HighScoreMgr.loaded_data.total_honey_collected) + + %LevelOneScoreLabel.text = Str.format_number(HighScoreMgr.loaded_data.level_1_score) + %LevelTwoScoreLabel.text = Str.format_number(HighScoreMgr.loaded_data.level_2_score) + %LevelThreeScoreLabel.text = Str.format_number(HighScoreMgr.loaded_data.level_3_score) + %LevelFourScoreLabel.text = Str.format_number(HighScoreMgr.loaded_data.level_4_score) + %LevelFiveScoreLabel.text = Str.format_number(HighScoreMgr.loaded_data.level_5_score) + %LevelSixScoreLabel.text = Str.format_number(HighScoreMgr.loaded_data.level_6_score) + + %MainMenuButton.connect("pressed", Callable(self, "on_main_menu_button_pressed")) + +func on_main_menu_button_pressed() -> void: + SceneMgr.load_scene("MAINMENU") \ No newline at end of file diff --git a/scenes/scripts/main_menu.gd b/scenes/scripts/main_menu.gd new file mode 100644 index 0000000..14b88f1 --- /dev/null +++ b/scenes/scripts/main_menu.gd @@ -0,0 +1,47 @@ +extends Level +class_name MainMenu + +@onready var level_select : MenuButton = get_node("%MenuButton") +@onready var high_scores : Button = get_node("%HighScores") +@onready var exit_button : Button = get_node("%ExitGame") + +func _ready() -> void: + level_select.get_popup().id_pressed.connect(_on_item_menu_pressed) + high_scores.connect("pressed", Callable(self, "on_high_scores_pressed")) + exit_button.connect("pressed", Callable(self, "on_exit_pressed")) + update_game_state() + + +func _on_item_menu_pressed(id : int) -> void: + ## Load the appropriate level based on the selection that has been made + Log.pr(id) + + match id: + 1: + # Load level 1 + SceneMgr.load_scene("LEVEL1") + 2: + # Load level 2 + SceneMgr.load_scene("LEVEL2") + 3: + # Load level 3 + SceneMgr.load_scene("LEVEL3") + 4: + # Load level 4 + SceneMgr.load_scene("LEVEL4") + 5: + # Load level 5 + SceneMgr.load_scene("LEVEL5") + 6: + # Load level 6 + SceneMgr.load_scene("LEVEL6") + +func on_high_scores_pressed() -> void: + ## Load the high scores screen + Log.pr("High scores button pressed") + SceneMgr.load_scene("HIGHSCORES") + pass + +func on_exit_pressed() -> void: + # Quit the game + get_tree().quit() diff --git a/scenes/scripts/pesticide.gd b/scenes/scripts/pesticide.gd new file mode 100644 index 0000000..91cf9ce --- /dev/null +++ b/scenes/scripts/pesticide.gd @@ -0,0 +1,11 @@ +extends Polygon2D +class_name Pesticide + +@onready var death_box = $DeathBox + +func _ready(): + death_box.connect("body_entered", Callable(self, "_on_body_entered")) + +func _on_body_entered(area): + if area.is_in_group("bee"): + area.die() \ No newline at end of file diff --git a/scenes/scripts/scene_manager.gd b/scenes/scripts/scene_manager.gd new file mode 100644 index 0000000..5b5d36e --- /dev/null +++ b/scenes/scripts/scene_manager.gd @@ -0,0 +1,40 @@ +extends Node2D +class_name SceneManager + +const SCENES : Dictionary = { + "MAINMENU" : "res://scenes/main_menu.tscn", + "HIGHSCORES" : "res://scenes/high_scores.tscn", + "LEVEL1" : "res://levels/level_1.tscn", + "LEVEL2" : "res://levels/level_2.tscn", + "LEVEL3" : "res://levels/level_3.tscn", + "LEVEL4" : "res://levels/level_4.tscn", + "LEVEL5" : "res://levels/level_5.tscn", + "LEVEL6" : "res://levels/level_6.tscn", +} + +var loading_scene_res : Resource = null + +func _ready() -> void: + ## LOAD GAME DATA + HighScoreMgr.load() + HighScoreMgr.debug_output() + # HighScoreMgr.debug_save_high_score() + + + Log.pr("SceneManager is ready.") + SceneMgr.connect("change_scene", Callable(self, "_on_change_scene")) + $TransitionScene.connect("transitioned", Callable(self, "_on_transition_scene_transitioned")) + +func _on_change_scene(scene_name : String) -> void: + Log.pr("Going to load a scene.", scene_name) + if SCENES.has(scene_name): + GameState.reset() + loading_scene_res = load(SCENES[scene_name]) + Log.pr("Loading scene: ", loading_scene_res) + $TransitionScene.transition() + else: + loading_scene_res = null + +func _on_transition_scene_transitioned() -> void: + $CurrentScene.get_child(0).queue_free() + $CurrentScene.add_child(loading_scene_res.instantiate()) diff --git a/scenes/scripts/test_level.gd b/scenes/scripts/test_level.gd new file mode 100644 index 0000000..e251cf8 --- /dev/null +++ b/scenes/scripts/test_level.gd @@ -0,0 +1 @@ +extends Node2D diff --git a/scenes/scripts/transition_scene.gd b/scenes/scripts/transition_scene.gd new file mode 100644 index 0000000..3db3427 --- /dev/null +++ b/scenes/scripts/transition_scene.gd @@ -0,0 +1,19 @@ +extends CanvasLayer + +signal transitioned + +func _ready() -> void: + $AnimationPlayer.play("fade_to_normal") + +func transition() -> void: + $AnimationPlayer.play("fade_to_black") + Log.pr("Fading to black") + +func _on_animation_player_animation_finished(anim_name : StringName) -> void: + if anim_name == "fade_to_black": + Log.pr("Sending transitioned signal...") + emit_signal("transitioned") + $AnimationPlayer.play("fade_to_normal") + if anim_name == "fade_to_normal": + Log.pr("Faded to normal") + \ No newline at end of file diff --git a/scenes/test_level.tscn b/scenes/test_level.tscn index ae67a15..1f48069 100644 --- a/scenes/test_level.tscn +++ b/scenes/test_level.tscn @@ -1,3 +1,99 @@ -[gd_scene format=3 uid="uid://mk5n0hrwk4yi"] +[gd_scene load_steps=15 format=3 uid="uid://mk5n0hrwk4yi"] + +[ext_resource type="Script" path="res://scenes/scripts/test_level.gd" id="1_lgt1m"] +[ext_resource type="PackedScene" uid="uid://dyu4mucawjlu6" path="res://entities/Beehive.tscn" id="2_5ueyo"] +[ext_resource type="PackedScene" uid="uid://d1uawawum16b0" path="res://scenes/elements/background.tscn" id="2_w0b0n"] +[ext_resource type="Script" path="res://scenes/scripts/pesticide.gd" id="3_gg2a6"] +[ext_resource type="Texture2D" uid="uid://cgwtb4gxypaj1" path="res://resources/textures/tree.png" id="3_hwsnj"] +[ext_resource type="PackedScene" uid="uid://cfhoi2rqxa3up" path="res://entities/Dog.tscn" id="4_xlyy4"] +[ext_resource type="PackedScene" uid="uid://b7eeptlk47ymd" path="res://ui/UiComponent.tscn" id="6_xuemm"] +[ext_resource type="PackedScene" uid="uid://cwutwy11pityw" path="res://ui/LevelCompleteComponent.tscn" id="8_4k5cm"] +[ext_resource type="PackedScene" uid="uid://ddf2mkkw1trkj" path="res://scenes/elements/bee_spawner.tscn" id="8_admu4"] +[ext_resource type="PackedScene" uid="uid://ct3c16xm33r2a" path="res://scenes/elements/drone_manager.tscn" id="10_rmaj1"] +[ext_resource type="AudioStream" uid="uid://bgcbd6xf0lyrr" path="res://resources/music/bee_background.ogg" id="12_5cn5j"] +[ext_resource type="AudioStream" uid="uid://dvsjpsh5dyixq" path="res://resources/SFX/mixkit-european-spring-forest-ambience-1219.wav" id="13_nttuq"] + +[sub_resource type="CircleShape2D" id="CircleShape2D_usqp5"] +radius = 142.316 + +[sub_resource type="CircleShape2D" id="CircleShape2D_ewfly"] +radius = 252.15 [node name="TestLevel" type="Node2D"] +script = ExtResource("1_lgt1m") + +[node name="Background" parent="." instance=ExtResource("2_w0b0n")] + +[node name="Tree" type="Sprite2D" parent="."] +position = Vector2(1073, 529) +scale = Vector2(0.5, 0.5) +texture = ExtResource("3_hwsnj") + +[node name="Tree2" type="Sprite2D" parent="Tree"] +self_modulate = Color(0, 0, 0, 0.0784314) +show_behind_parent = true +position = Vector2(10, 10) +texture = ExtResource("3_hwsnj") + +[node name="Beehive" parent="." groups=["beehive"] instance=ExtResource("2_5ueyo")] +unique_name_in_owner = true +position = Vector2(163, 489) + +[node name="Flower" type="Polygon2D" parent="."] +position = Vector2(278, -97) +color = Color(0.301961, 0.607843, 0.901961, 1) +polygon = PackedVector2Array(752, 145, 875, 200, 893, 272, 866, 359, 781, 427, 715, 362, 659, 226) + +[node name="Area2D" type="Area2D" parent="Flower" groups=["flowers"]] +position = Vector2(777.707, 282) +collision_layer = 7 +collision_mask = 7 + +[node name="CollisionShape2D" type="CollisionShape2D" parent="Flower/Area2D"] +shape = SubResource("CircleShape2D_usqp5") + +[node name="Label" type="Label" parent="Flower"] +offset_left = 721.0 +offset_top = 243.0 +offset_right = 852.0 +offset_bottom = 266.0 +text = "Flower patch bro" + +[node name="Pesticide" type="Polygon2D" parent="."] +position = Vector2(561, 76) +color = Color(0.682353, 0.137255, 0.203922, 1) +polygon = PackedVector2Array(-201, -145, 111, -237, 250, -30, 185, 172, -80, 253, -259, 82) +script = ExtResource("3_gg2a6") + +[node name="DeathBox" type="Area2D" parent="Pesticide"] + +[node name="CollisionShape2D" type="CollisionShape2D" parent="Pesticide/DeathBox"] +shape = SubResource("CircleShape2D_ewfly") + +[node name="Dog" parent="." instance=ExtResource("4_xlyy4")] +position = Vector2(705, 491) + +[node name="BeeSpawner" parent="." instance=ExtResource("8_admu4")] + +[node name="UiComponent" parent="." instance=ExtResource("6_xuemm")] +offset_right = 1280.0 +offset_bottom = 720.0 + +[node name="DroneManager" parent="." instance=ExtResource("10_rmaj1")] +unique_name_in_owner = true + +[node name="LevelCompleteComponent" parent="." instance=ExtResource("8_4k5cm")] +unique_name_in_owner = true +visible = false +z_index = 999 +offset_right = 1280.0 +offset_bottom = 720.0 + +[node name="AudioStreamPlayer" type="AudioStreamPlayer" parent="."] +stream = ExtResource("12_5cn5j") +volume_db = -18.0 +autoplay = true + +[node name="AudioStreamPlayer2" type="AudioStreamPlayer" parent="."] +stream = ExtResource("13_nttuq") +autoplay = true diff --git a/scenes/transition_scene.tscn b/scenes/transition_scene.tscn new file mode 100644 index 0000000..b68cfe2 --- /dev/null +++ b/scenes/transition_scene.tscn @@ -0,0 +1,76 @@ +[gd_scene load_steps=6 format=3 uid="uid://bhy041v5u551a"] + +[ext_resource type="Script" path="res://scenes/scripts/transition_scene.gd" id="1_pt42a"] + +[sub_resource type="Animation" id="Animation_ehfi2"] +resource_name = "fade_to_black" +length = 0.5 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("ColorRect:color") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 0.5), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [Color(0, 0, 0, 0), Color(0, 0, 0, 1)] +} + +[sub_resource type="Animation" id="Animation_n8kpy"] +resource_name = "fade_to_normal" +length = 0.5 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("ColorRect:color") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 0.5), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [Color(0, 0, 0, 1), Color(0, 0, 0, 0)] +} + +[sub_resource type="Animation" id="Animation_skyqd"] +length = 0.001 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("ColorRect:color") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Color(0, 0, 0, 1)] +} + +[sub_resource type="AnimationLibrary" id="AnimationLibrary_lyb8n"] +_data = { +"RESET": SubResource("Animation_skyqd"), +"fade_to_black": SubResource("Animation_ehfi2"), +"fade_to_normal": SubResource("Animation_n8kpy") +} + +[node name="TransitionScene" type="CanvasLayer"] +script = ExtResource("1_pt42a") + +[node name="ColorRect" type="ColorRect" parent="."] +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +mouse_filter = 2 +color = Color(0, 0, 0, 1) + +[node name="AnimationPlayer" type="AnimationPlayer" parent="."] +libraries = { +"": SubResource("AnimationLibrary_lyb8n") +} + +[connection signal="animation_finished" from="AnimationPlayer" to="." method="_on_animation_player_animation_finished"] diff --git a/ui/GameOverComponent.tscn b/ui/GameOverComponent.tscn new file mode 100644 index 0000000..416a26b --- /dev/null +++ b/ui/GameOverComponent.tscn @@ -0,0 +1,71 @@ +[gd_scene load_steps=2 format=3 uid="uid://b5whit1dshr3"] + +[ext_resource type="Script" path="res://ui/scripts/game_over_component.gd" id="1_p4mrd"] + +[node name="GameOverComponent" 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_p4mrd") + +[node name="BackgroundOverlay" type="Panel" parent="."] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 + +[node name="MarginContainer" type="MarginContainer" parent="."] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_constants/margin_left = 10 +theme_override_constants/margin_top = 10 +theme_override_constants/margin_right = 10 +theme_override_constants/margin_bottom = 10 + +[node name="CenterContainer" type="CenterContainer" parent="MarginContainer"] +layout_mode = 2 + +[node name="VBoxContainer" type="VBoxContainer" parent="MarginContainer/CenterContainer"] +layout_mode = 2 + +[node name="NotCool" type="Label" parent="MarginContainer/CenterContainer/VBoxContainer"] +layout_mode = 2 +tooltip_text = "Valheim is a great game." +mouse_filter = 0 +theme_override_colors/font_color = Color(0.819608, 0.454902, 0.254902, 1) +theme_override_font_sizes/font_size = 30 +text = "Sucking at something is the +first step towards being +kinda good at something. + +Try again." + +[node name="MarginContainer" type="MarginContainer" parent="MarginContainer/CenterContainer/VBoxContainer"] +layout_mode = 2 +theme_override_constants/margin_left = 20 +theme_override_constants/margin_top = 20 +theme_override_constants/margin_right = 20 +theme_override_constants/margin_bottom = 20 + +[node name="VBoxContainer" type="VBoxContainer" parent="MarginContainer/CenterContainer/VBoxContainer/MarginContainer"] +layout_mode = 2 + +[node name="TryAgain" type="Button" parent="MarginContainer/CenterContainer/VBoxContainer/MarginContainer/VBoxContainer"] +unique_name_in_owner = true +visible = false +layout_mode = 2 +text = "Try Again" + +[node name="MainMenu" type="Button" parent="MarginContainer/CenterContainer/VBoxContainer/MarginContainer/VBoxContainer"] +unique_name_in_owner = true +layout_mode = 2 +text = "Main Menu" diff --git a/ui/LevelCompleteComponent.tscn b/ui/LevelCompleteComponent.tscn new file mode 100644 index 0000000..80d6046 --- /dev/null +++ b/ui/LevelCompleteComponent.tscn @@ -0,0 +1,86 @@ +[gd_scene load_steps=2 format=3 uid="uid://cwutwy11pityw"] + +[ext_resource type="Script" path="res://ui/scripts/level_complete_component.gd" id="1_qpygu"] + +[node name="LevelCompleteComponent" 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_qpygu") + +[node name="BackgroundOverlay" type="Panel" parent="."] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 + +[node name="MarginContainer" type="MarginContainer" parent="."] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_constants/margin_left = 10 +theme_override_constants/margin_top = 10 +theme_override_constants/margin_right = 10 +theme_override_constants/margin_bottom = 10 + +[node name="CenterContainer" type="CenterContainer" parent="MarginContainer"] +layout_mode = 2 + +[node name="VBoxContainer" type="VBoxContainer" parent="MarginContainer/CenterContainer"] +layout_mode = 2 + +[node name="HappyBees" type="Label" parent="MarginContainer/CenterContainer/VBoxContainer"] +layout_mode = 2 +tooltip_text = "Valheim is a great game." +mouse_filter = 0 +theme_override_colors/font_color = Color(0.819608, 0.454902, 0.254902, 1) +theme_override_font_sizes/font_size = 30 +text = "The Bees Are Happy!" + +[node name="TimeSpent" type="Label" parent="MarginContainer/CenterContainer/VBoxContainer"] +unique_name_in_owner = true +layout_mode = 2 +theme_override_font_sizes/font_size = 20 +text = "Time Spent: " + +[node name="DronesUsed" type="Label" parent="MarginContainer/CenterContainer/VBoxContainer"] +unique_name_in_owner = true +layout_mode = 2 +theme_override_font_sizes/font_size = 20 +text = "Drones Used:" + +[node name="TotalPoints" type="Label" parent="MarginContainer/CenterContainer/VBoxContainer"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 4 +theme_override_font_sizes/font_size = 24 +text = "Total Points: " + +[node name="MarginContainer" type="MarginContainer" parent="MarginContainer/CenterContainer/VBoxContainer"] +layout_mode = 2 +theme_override_constants/margin_left = 20 +theme_override_constants/margin_top = 20 +theme_override_constants/margin_right = 20 +theme_override_constants/margin_bottom = 20 + +[node name="VBoxContainer" type="VBoxContainer" parent="MarginContainer/CenterContainer/VBoxContainer/MarginContainer"] +layout_mode = 2 + +[node name="TryAgain" type="Button" parent="MarginContainer/CenterContainer/VBoxContainer/MarginContainer/VBoxContainer"] +unique_name_in_owner = true +visible = false +layout_mode = 2 +text = "Try Again" + +[node name="MainMenu" type="Button" parent="MarginContainer/CenterContainer/VBoxContainer/MarginContainer/VBoxContainer"] +unique_name_in_owner = true +layout_mode = 2 +text = "Main Menu" diff --git a/ui/UiComponent.tscn b/ui/UiComponent.tscn new file mode 100644 index 0000000..053efd0 --- /dev/null +++ b/ui/UiComponent.tscn @@ -0,0 +1,168 @@ +[gd_scene load_steps=3 format=3 uid="uid://b7eeptlk47ymd"] + +[ext_resource type="Script" path="res://ui/scripts/ui_component.gd" id="1_6lnte"] +[ext_resource type="Script" path="res://ui/scripts/pause_menu.gd" id="2_2qrdg"] + +[node name="UiComponent" 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_6lnte") + +[node name="PauseMenu" type="Control" parent="."] +unique_name_in_owner = true +process_mode = 2 +visible = false +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +mouse_filter = 1 +script = ExtResource("2_2qrdg") + +[node name="PauseMenuBG" type="Panel" parent="PauseMenu"] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 + +[node name="CenterContainer" type="CenterContainer" parent="PauseMenu"] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +offset_left = -10.0 +offset_top = -10.0 +offset_right = -10.0 +offset_bottom = -10.0 +grow_horizontal = 2 +grow_vertical = 2 + +[node name="VBoxContainer" type="VBoxContainer" parent="PauseMenu/CenterContainer"] +layout_mode = 2 + +[node name="ResumeButton" type="Button" parent="PauseMenu/CenterContainer/VBoxContainer"] +unique_name_in_owner = true +layout_mode = 2 +theme_override_font_sizes/font_size = 20 +text = "Resume" + +[node name="QuitButton" type="Button" parent="PauseMenu/CenterContainer/VBoxContainer"] +unique_name_in_owner = true +layout_mode = 2 +theme_override_font_sizes/font_size = 20 +text = "Quit" + +[node name="MarginContainer" type="MarginContainer" parent="."] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +mouse_filter = 2 +theme_override_constants/margin_left = 10 +theme_override_constants/margin_top = 10 +theme_override_constants/margin_right = 10 +theme_override_constants/margin_bottom = 10 + +[node name="NectarBar" type="ProgressBar" parent="MarginContainer"] +unique_name_in_owner = true +layout_mode = 2 + +[node name="MarginContainer" type="MarginContainer" parent="MarginContainer"] +layout_mode = 2 +mouse_filter = 2 +theme_override_constants/margin_left = 20 +theme_override_constants/margin_top = 30 +theme_override_constants/margin_right = 20 +theme_override_constants/margin_bottom = 20 + +[node name="VBoxContainer" type="VBoxContainer" parent="MarginContainer/MarginContainer"] +layout_mode = 2 +mouse_filter = 2 + +[node name="LevelTimer" type="Label" parent="MarginContainer/MarginContainer/VBoxContainer"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 4 +size_flags_vertical = 0 +theme_override_colors/font_color = Color(1, 1, 1, 1) +theme_override_font_sizes/font_size = 20 +text = "00:00:00" + +[node name="BeeCounter" type="Label" parent="MarginContainer/MarginContainer/VBoxContainer"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 4 +size_flags_vertical = 0 +theme_override_colors/font_color = Color(1, 1, 1, 1) +theme_override_font_sizes/font_size = 16 +text = "Bees: 10/10" + +[node name="HelpTextContainer" type="VBoxContainer" parent="MarginContainer/MarginContainer"] +unique_name_in_owner = true +layout_mode = 2 +mouse_filter = 2 + +[node name="Help_Drone_Placement_Cancel" type="Label" parent="MarginContainer/MarginContainer/HelpTextContainer"] +visible = false +layout_mode = 2 +theme_override_colors/font_color = Color(1, 1, 1, 1) +text = "Right click to cancel placing a drone" + +[node name="Help_Drone_Placement_Dancer" type="Label" parent="MarginContainer/MarginContainer/HelpTextContainer"] +visible = false +layout_mode = 2 +theme_override_colors/font_color = Color(1, 1, 1, 1) +text = "Place a dancing drone within range of +the hive to tempt bees out. Your time +starts when you place a dancer drone." + +[node name="Help_Drone_Placement_Collector" type="Label" parent="MarginContainer/MarginContainer/HelpTextContainer"] +visible = false +layout_mode = 2 +theme_override_colors/font_color = Color(1, 1, 1, 1) +text = "Place a collector drone within range +of a flower patch to tell the bees +where they need to go to gather pollen." + +[node name="Help_Drone_Placement_Director" type="Label" parent="MarginContainer/MarginContainer/HelpTextContainer"] +visible = false +layout_mode = 2 +theme_override_colors/font_color = Color(1, 1, 1, 1) +text = "Use the Director drones to guide bees +around obstacles. Bees fly in straight(ish) +lines between hive, directors, and collectors." + +[node name="Help_Drone_Placement_Distractor" type="Label" parent="MarginContainer/MarginContainer/HelpTextContainer"] +visible = false +layout_mode = 2 +theme_override_colors/font_color = Color(1, 1, 1, 1) +text = "Use a distractor drone to try and divert a +threats attention away from the bees." + +[node name="LevelText" type="Label" parent="MarginContainer"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 0 +size_flags_vertical = 8 +theme_override_colors/font_color = Color(1, 1, 1, 1) +text = "Level: 1" + +[node name="ParText" type="Label" parent="MarginContainer"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 8 +size_flags_vertical = 8 +tooltip_text = "Par is the number of drones it should take you to complete this level" +mouse_filter = 1 +theme_override_colors/font_color = Color(1, 1, 1, 1) +text = "Par: 2" diff --git a/ui/scripts/game_over_component.gd b/ui/scripts/game_over_component.gd new file mode 100644 index 0000000..9f0311b --- /dev/null +++ b/ui/scripts/game_over_component.gd @@ -0,0 +1,15 @@ +extends Control + +@onready var main_menu_button : Button = get_node("%MainMenu") + +func _ready() -> void: + visible = false + main_menu_button.connect("pressed", Callable(self, "on_main_menu_pressed")) + +func _process(_delta : float) -> void: + if GameState.game_over == true: + visible = true + +func on_main_menu_pressed() -> void: + GameState.reset() + SceneMgr.load_scene("MAINMENU") \ No newline at end of file diff --git a/ui/scripts/level_complete_component.gd b/ui/scripts/level_complete_component.gd new file mode 100644 index 0000000..a807a9c --- /dev/null +++ b/ui/scripts/level_complete_component.gd @@ -0,0 +1,26 @@ +extends Control + +@onready var time_label : Label = get_node("%TimeSpent") +@onready var drones_label : Label = get_node("%DronesUsed") +@onready var points_label : Label = get_node("%TotalPoints") + +@onready var main_menu_button : Button = get_node("%MainMenu") + +func _ready() -> void: + visible = false + + main_menu_button.connect("pressed", Callable(self, "on_main_menu_pressed")) + +func _process(_delta : float) -> void: + if GameState.level_complete == true: + update_points() + visible = true + +func update_points() -> void: + time_label.text = "Time Spent: " + Str.seconds_to_hms(GameState.level_timer) + drones_label.text = "Drones Used: " + str(GameState.drones_used) + points_label.text = "Total Points: " + Str.format_number(GameState.level_points) + +func on_main_menu_pressed() -> void: + GameState.reset() + SceneMgr.load_scene("MAINMENU") \ No newline at end of file diff --git a/ui/scripts/pause_menu.gd b/ui/scripts/pause_menu.gd new file mode 100644 index 0000000..dd741fd --- /dev/null +++ b/ui/scripts/pause_menu.gd @@ -0,0 +1,12 @@ +extends Control +class_name PauseMenu + +signal resume_game + +func _unhandled_input(event : InputEvent) -> void: + if event.is_action_pressed("ui_cancel"): + Log.pr("Pause Menu: ui_cancel pressed") + if get_tree().paused: + Log.pr("Sending unpause signal") + resume_game.emit() + diff --git a/ui/scripts/ui_component.gd b/ui/scripts/ui_component.gd new file mode 100644 index 0000000..547ee41 --- /dev/null +++ b/ui/scripts/ui_component.gd @@ -0,0 +1,87 @@ +extends Control +class_name UIComponent + +var update_interval : float = 1 +var last_update : float = 0 + +@onready var nectar_bar : ProgressBar = get_node("%NectarBar") +@onready var help_text_container : VBoxContainer = get_node("%HelpTextContainer") +@onready var help_text_items : Array[Node] = help_text_container.get_children() +@onready var level_text_label : Label = get_node("%LevelText") +@onready var level_timer_label : Label = get_node("%LevelTimer") +@onready var par_text_label : Label = get_node("%ParText") +@onready var bee_counter : Label = get_node("%BeeCounter") + + +var disable_pause : bool = false + +func _ready() -> void: + hide_help_text() + update_ui() + %PauseMenu.hide() + %PauseMenu.connect("resume_game", Callable(self, "unpause_game")) + + %QuitButton.connect("pressed", Callable(self, "quit_game")) + %ResumeButton.connect("pressed", Callable(self, "unpause_game")) + + bee_counter.hide() + +func _process(delta : float) -> void: + last_update += delta + + disable_pause = false # This is a mega hacky way to stop the game instantly repausing after unpausing + + if last_update > update_interval: + last_update = 0 + update_ui() + + if GameState.level_complete: + update_ui() + + level_timer_label.text = Str.seconds_to_hms(GameState.level_timer) + +func _unhandled_input(event : InputEvent) -> void: + if event.is_action_pressed("ui_cancel"): + Log.pr("UIComponent: ui_cancel pressed") + if get_tree().paused == false && disable_pause == false: + Log.pr("Game is not paused, so pausing it...") + pause_game() + +func update_ui() -> void: + nectar_bar.value = GameState.gathered_nectar + nectar_bar.max_value = GameState.required_nectar + + bee_counter.text = "Bees: " + str(GameState.bees_available - GameState.dead_bees) + "/" + str(GameState.bees_available) + bee_counter.show() + +func hide_help_text() -> void: + for item : Node in help_text_items: + item.hide() + +func show_help_text(label: String) -> void: + hide_help_text() + for item : Node in help_text_items: + if item.name == label: + item.show() + +func update_level_text(text: String) -> void: + level_text_label.text = text + +func update_par_text(text: String) -> void: + par_text_label.text = text + +func quit_game() -> void: + get_tree().paused = false + GameState.reset() + SceneMgr.load_scene("MAINMENU") + +func pause_game() -> void: + get_tree().paused = true + %PauseMenu.show() + +func unpause_game() -> void: + Log.pr("Pause Menu: Close button pressed") + disable_pause = true + %PauseMenu.hide() + get_tree().paused = false + diff --git a/utility/cursor_manager.gd b/utility/cursor_manager.gd new file mode 100644 index 0000000..e07edf5 --- /dev/null +++ b/utility/cursor_manager.gd @@ -0,0 +1,19 @@ +extends Node +class_name CursorManager + +@onready var default_cursor : Resource = preload("res://resources/cursors/pointer_a.png") +@onready var place_cursor : Resource = preload("res://resources/cursors/target_round_b.png") +@onready var edit_cursor : Resource = preload("res://resources/cursors/message_dots_round.png") +@onready var hand_cursor : Resource = preload("res://resources/cursors/hand_open.png") + +func reset_cursor() -> void: + Input.set_custom_mouse_cursor(default_cursor, Input.CURSOR_ARROW, Vector2(8, 8)) + +func place() -> void: + Input.set_custom_mouse_cursor(place_cursor, Input.CURSOR_ARROW, Vector2(32, 32)) + +func edit() -> void: + Input.set_custom_mouse_cursor(edit_cursor, Input.CURSOR_ARROW, Vector2(32, 32)) + +func hand() -> void: + Input.set_custom_mouse_cursor(hand_cursor, Input.CURSOR_ARROW, Vector2(8, 8)) \ No newline at end of file diff --git a/utility/game_state.gd b/utility/game_state.gd new file mode 100644 index 0000000..7338b61 --- /dev/null +++ b/utility/game_state.gd @@ -0,0 +1,121 @@ +class_name GameStateManager extends Node + +var placing_drone : bool = false + +var level_timer : float = 0.0 + +var level_number : int = 0 + +var level_started : bool = false +var level_complete : bool = false +var game_over : bool = false + +## Game Rules ############################################################## + +# Nectar levels - Depleted by snails, increased by bee nectar deposits +# This is capped out at 10... Seems like a good amount +# This has to be at least 1 at all times or the bees dont know wtf is going on +var flower_nectar_level_charge : int = 0 +var flower_nectar_level_charge_required : int = 10 +var max_flower_nectar_level : int = 10 +var flower_nectar_level : int = 10 : + get: + return flower_nectar_level + set(value): + if value > max_flower_nectar_level: + flower_nectar_level = 10 + elif value < 1: + flower_nectar_level = 1 + else: + flower_nectar_level = value + +# Snails +var spawn_snails : bool = false +var snail_spawn_interval : float = 10.0 + +var gathered_nectar : int = 0 : + get: + return gathered_nectar + set(value): + gathered_nectar = value + if gathered_nectar > required_nectar and !level_complete: + game_win() + +var required_nectar : int = 100 +var level_par : int = 2 +var drones_used : int = 0 +var bees_available : int = 0 +var dead_bees : int = 0 : + get: + return dead_bees + set(value): + dead_bees = value + if dead_bees >= bees_available and !game_over: + game_lose() + +var level_points : int = 0 : + get: + return required_nectar * 100 - round(level_timer) * 10 - drones_used * 100 + +var judge_level_par : int = 0 : + get: + ## Return an amount of points based on the difference between the number of drones_used and the level_par + ## Using more drones than the par is bad and should result in less points + var diff : int = drones_used - level_par + if diff > 0: + return -diff * 100 + else: + return 0 + +func _process(delta : float) -> void: + if level_started and !level_complete and !game_over: + level_timer += delta + +## For every 10 times the bees deposit nectar it will charge +# the nectar level of the flowers by 1 +func pollenate() -> void: + flower_nectar_level_charge += 1 + if flower_nectar_level_charge >= flower_nectar_level_charge_required: + flower_nectar_level += 1 + flower_nectar_level_charge = 0 + +func bee_died() -> void: + dead_bees += 1 + +# Add the nectar to the total gathered nectar +func add_nectar(nectar : int) -> void: + pollenate() + gathered_nectar += nectar + +func add_drone() -> void: + drones_used += 1 + +func remove_drone() -> void: + drones_used -= 1 + +func game_start() -> void: + level_started = true + +func game_win() -> void: + Log.pr("Game win") + level_complete = true + HighScoreMgr.add_honey(gathered_nectar) + HighScoreMgr.update_highscore(level_number, level_points) + HighScoreMgr.add_dead_bees(dead_bees) + HighScoreMgr.save() + +func game_lose() -> void: + Log.pr("Game lose") + game_over = true + HighScoreMgr.add_dead_bees(dead_bees) + HighScoreMgr.save() + +func reset() -> void: + level_timer = 0.0 + level_started = false + level_complete = false + gathered_nectar = 0 + drones_used = 0 + dead_bees = 0 + spawn_snails = false + flower_nectar_level = max_flower_nectar_level diff --git a/utility/global_scene_manager.gd b/utility/global_scene_manager.gd new file mode 100644 index 0000000..b2eeb9c --- /dev/null +++ b/utility/global_scene_manager.gd @@ -0,0 +1,7 @@ +class_name GlobalSceneManager extends Node + +signal change_scene(scene_name: String) + +func load_scene(scene_name: String) -> void: + Log.pr("Sending signal to change scene", scene_name) + emit_signal("change_scene", scene_name) \ No newline at end of file diff --git a/utility/high_scores.gd b/utility/high_scores.gd new file mode 100644 index 0000000..1549f86 --- /dev/null +++ b/utility/high_scores.gd @@ -0,0 +1,81 @@ +class_name HighScores extends Node + +@onready var loaded_data : SaveStateResource = SaveStateResource.new() + +func save() -> void: + var save_data : SaveStateResource = SaveStateResource.new() + + save_data.level_1_score = loaded_data.level_1_score + save_data.level_2_score = loaded_data.level_2_score + save_data.level_3_score = loaded_data.level_3_score + save_data.level_4_score = loaded_data.level_4_score + save_data.level_5_score = loaded_data.level_5_score + save_data.level_6_score = loaded_data.level_6_score + + save_data.total_bees_killed = loaded_data.total_bees_killed + save_data.total_honey_collected = loaded_data.total_honey_collected + + ResourceSaver.save(save_data, "user://savedata.tres") + +func load() -> void: + var save_data : SaveStateResource = load("user://savedata.tres") + + if save_data: + loaded_data.level_1_score = save_data.level_1_score + loaded_data.level_2_score = save_data.level_2_score + loaded_data.level_3_score = save_data.level_3_score + loaded_data.level_4_score = save_data.level_4_score + loaded_data.level_5_score = save_data.level_5_score + loaded_data.level_6_score = save_data.level_6_score + + loaded_data.total_bees_killed = save_data.total_bees_killed + loaded_data.total_honey_collected = save_data.total_honey_collected + +func add_honey(honey : int) -> void: + loaded_data.total_honey_collected += honey + +func add_dead_bees(dead : int) -> void: + loaded_data.total_bees_killed += dead + +func update_highscore(level : int, points : int) -> void: + var current_highscore : int = get_level_highscore(level) + + if points > current_highscore: + match level: + 1: + loaded_data.level_1_score = points + 2: + loaded_data.level_2_score = points + 3: + loaded_data.level_3_score = points + 4: + loaded_data.level_4_score = points + 5: + loaded_data.level_5_score = points + 6: + loaded_data.level_6_score = points + pass + +func debug_save_high_score() -> void: + loaded_data.level_1_score = 3000 + save() + +func debug_output() -> void: + Log.pr("High Scores", loaded_data.level_1_score) + +func get_level_highscore(level : int) -> int: + match level: + 1: + return loaded_data.level_1_score + 2: + return loaded_data.level_2_score + 3: + return loaded_data.level_3_score + 4: + return loaded_data.level_4_score + 5: + return loaded_data.level_5_score + 6: + return loaded_data.level_6_score + + return 0 \ No newline at end of file diff --git a/utility/save_state_resource.gd b/utility/save_state_resource.gd new file mode 100644 index 0000000..e8c6aa8 --- /dev/null +++ b/utility/save_state_resource.gd @@ -0,0 +1,11 @@ +class_name SaveStateResource extends Resource + +@export var level_1_score : int = 0 +@export var level_2_score : int = 0 +@export var level_3_score : int = 0 +@export var level_4_score : int = 0 +@export var level_5_score : int = 0 +@export var level_6_score : int = 0 + +@export var total_bees_killed : int = 0 +@export var total_honey_collected : int = 0 \ No newline at end of file diff --git a/utility/utility_strings.gd b/utility/utility_strings.gd new file mode 100644 index 0000000..5ea7311 --- /dev/null +++ b/utility/utility_strings.gd @@ -0,0 +1,37 @@ +class_name StringUtilities extends Node + +func seconds_to_hms(seconds: float) -> String: + var ms : float = fmod(seconds, 1) * 100 + var s : float = fmod(seconds, 60) + var m : float = fmod(seconds, 3600) / 60 + + var formatted : String = "%02d:%02d:%02d" % [m, s, ms] + + return formatted + +#### +## Formats the given number with commas every 3 digits. +#### +func format_number(number: int) -> String: + # Handle negative numbers by adding the "minus" sign in advance, as we discard it + # when looping over the number. + var formatted_number : String = "-" if sign(number) == -1 else "" + var index : int = 0 + var number_string : String = str(abs(number)) + + for digit : String in number_string: + formatted_number += digit + + var counter : int = number_string.length() - index + + # Don't add a comma at the end of the number, but add a comma every 3 digits + # (taking into account the number's length). + if counter >= 2 and counter % 3 == 1: + formatted_number += "," + + index += 1 + + return formatted_number + +func float_to_percentage(value: float) -> String: + return "%d%%" % int(value * 100) \ No newline at end of file