From 5ceaa0078504968524c0e82c0d8547215fb954ff Mon Sep 17 00:00:00 2001 From: derek Date: Wed, 11 Dec 2024 16:11:29 -0600 Subject: [PATCH] added weapon wheel and model texture creator --- .../GuiResizerTopLeft.svg | 1 + .../GuiResizerTopLeft.svg.import | 37 ++ .../GuiResizerTopRight.svg | 1 + .../GuiResizerTopRight.svg.import | 37 ++ addons/anthonyec.camera_preview/Pin.svg | 1 + .../anthonyec.camera_preview/Pin.svg.import | 37 ++ addons/anthonyec.camera_preview/plugin.cfg | 7 + addons/anthonyec.camera_preview/plugin.gd | 87 ++++ addons/anthonyec.camera_preview/preview.gd | 404 ++++++++++++++++++ addons/anthonyec.camera_preview/preview.tscn | 200 +++++++++ assets/Textures/ObjectTextures/Blunderbus.png | Bin 0 -> 31845 bytes .../ObjectTextures/Blunderbus.png.import | 34 ++ assets/Textures/ObjectTextures/Pistol.png | Bin 0 -> 5794 bytes .../Textures/ObjectTextures/Pistol.png.import | 34 ++ .../ObjectTextures/RocketLauncher.png | Bin 0 -> 44235 bytes .../ObjectTextures/RocketLauncher.png.import | 34 ++ assets/Textures/ObjectTextures/mac10.png | Bin 0 -> 32577 bytes .../Textures/ObjectTextures/mac10.png.import | 34 ++ assets/Textures/ObjectTextures/revolver1.png | Bin 0 -> 20879 bytes .../ObjectTextures/revolver1.png.import | 34 ++ assets/blockout_2.tscn | 1 + assets/mac_10.tscn | 4 +- assets/pistol1.tscn | 4 +- assets/player.tscn | 7 +- assets/revolver_1.tscn | 4 +- assets/rocket_launcher.tscn | 4 +- assets/spider2.tscn | 8 +- assets/texture_catcher.tscn | 87 ++++ assets/wea1AE4.tmp | 21 + assets/weaD540.tmp | 32 ++ assets/weapon_select.tscn | 21 + blunderbus.tscn | 4 +- gun_resource.tres | 7 + project.godot | 13 +- scripts/EnemyTarget.gd | 2 +- scripts/blunderbus.gd | 1 + scripts/gun.gd | 1 + scripts/player.gd | 29 +- scripts/revolver_1.gd | 1 + scripts/rocket_launcher.gd | 1 + scripts/signal_bus.gd | 1 + scripts/texture_catcher.gd | 22 + scripts/trackerGun.gd | 1 + scripts/weapon_pickup.gd | 1 + scripts/weapon_select.gd | 103 +++++ 45 files changed, 1337 insertions(+), 25 deletions(-) create mode 100644 addons/anthonyec.camera_preview/GuiResizerTopLeft.svg create mode 100644 addons/anthonyec.camera_preview/GuiResizerTopLeft.svg.import create mode 100644 addons/anthonyec.camera_preview/GuiResizerTopRight.svg create mode 100644 addons/anthonyec.camera_preview/GuiResizerTopRight.svg.import create mode 100644 addons/anthonyec.camera_preview/Pin.svg create mode 100644 addons/anthonyec.camera_preview/Pin.svg.import create mode 100644 addons/anthonyec.camera_preview/plugin.cfg create mode 100644 addons/anthonyec.camera_preview/plugin.gd create mode 100644 addons/anthonyec.camera_preview/preview.gd create mode 100644 addons/anthonyec.camera_preview/preview.tscn create mode 100644 assets/Textures/ObjectTextures/Blunderbus.png create mode 100644 assets/Textures/ObjectTextures/Blunderbus.png.import create mode 100644 assets/Textures/ObjectTextures/Pistol.png create mode 100644 assets/Textures/ObjectTextures/Pistol.png.import create mode 100644 assets/Textures/ObjectTextures/RocketLauncher.png create mode 100644 assets/Textures/ObjectTextures/RocketLauncher.png.import create mode 100644 assets/Textures/ObjectTextures/mac10.png create mode 100644 assets/Textures/ObjectTextures/mac10.png.import create mode 100644 assets/Textures/ObjectTextures/revolver1.png create mode 100644 assets/Textures/ObjectTextures/revolver1.png.import create mode 100644 assets/texture_catcher.tscn create mode 100644 assets/wea1AE4.tmp create mode 100644 assets/weaD540.tmp create mode 100644 assets/weapon_select.tscn create mode 100644 gun_resource.tres create mode 100644 scripts/texture_catcher.gd create mode 100644 scripts/weapon_select.gd diff --git a/addons/anthonyec.camera_preview/GuiResizerTopLeft.svg b/addons/anthonyec.camera_preview/GuiResizerTopLeft.svg new file mode 100644 index 0000000..fe4dbf5 --- /dev/null +++ b/addons/anthonyec.camera_preview/GuiResizerTopLeft.svg @@ -0,0 +1 @@ + diff --git a/addons/anthonyec.camera_preview/GuiResizerTopLeft.svg.import b/addons/anthonyec.camera_preview/GuiResizerTopLeft.svg.import new file mode 100644 index 0000000..9584d3b --- /dev/null +++ b/addons/anthonyec.camera_preview/GuiResizerTopLeft.svg.import @@ -0,0 +1,37 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://btc01wc11tiid" +path="res://.godot/imported/GuiResizerTopLeft.svg-eb563f557424c74239e878a1213a5bf4.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/anthonyec.camera_preview/GuiResizerTopLeft.svg" +dest_files=["res://.godot/imported/GuiResizerTopLeft.svg-eb563f557424c74239e878a1213a5bf4.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 +svg/scale=2.0 +editor/scale_with_editor_scale=false +editor/convert_colors_with_editor_theme=false diff --git a/addons/anthonyec.camera_preview/GuiResizerTopRight.svg b/addons/anthonyec.camera_preview/GuiResizerTopRight.svg new file mode 100644 index 0000000..dd00953 --- /dev/null +++ b/addons/anthonyec.camera_preview/GuiResizerTopRight.svg @@ -0,0 +1 @@ + diff --git a/addons/anthonyec.camera_preview/GuiResizerTopRight.svg.import b/addons/anthonyec.camera_preview/GuiResizerTopRight.svg.import new file mode 100644 index 0000000..4a1fa5d --- /dev/null +++ b/addons/anthonyec.camera_preview/GuiResizerTopRight.svg.import @@ -0,0 +1,37 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://04l05jxuyt7k" +path="res://.godot/imported/GuiResizerTopRight.svg-cc1dc8556d51357c5eb0b01d09d8f049.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/anthonyec.camera_preview/GuiResizerTopRight.svg" +dest_files=["res://.godot/imported/GuiResizerTopRight.svg-cc1dc8556d51357c5eb0b01d09d8f049.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 +svg/scale=2.0 +editor/scale_with_editor_scale=false +editor/convert_colors_with_editor_theme=false diff --git a/addons/anthonyec.camera_preview/Pin.svg b/addons/anthonyec.camera_preview/Pin.svg new file mode 100644 index 0000000..8e5935c --- /dev/null +++ b/addons/anthonyec.camera_preview/Pin.svg @@ -0,0 +1 @@ + diff --git a/addons/anthonyec.camera_preview/Pin.svg.import b/addons/anthonyec.camera_preview/Pin.svg.import new file mode 100644 index 0000000..27d274f --- /dev/null +++ b/addons/anthonyec.camera_preview/Pin.svg.import @@ -0,0 +1,37 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://do6d60od41vmg" +path="res://.godot/imported/Pin.svg-83b09f5c00a829c5d8b136bf5bae65bc.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/anthonyec.camera_preview/Pin.svg" +dest_files=["res://.godot/imported/Pin.svg-83b09f5c00a829c5d8b136bf5bae65bc.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 +svg/scale=2.0 +editor/scale_with_editor_scale=false +editor/convert_colors_with_editor_theme=false diff --git a/addons/anthonyec.camera_preview/plugin.cfg b/addons/anthonyec.camera_preview/plugin.cfg new file mode 100644 index 0000000..4ad0d4c --- /dev/null +++ b/addons/anthonyec.camera_preview/plugin.cfg @@ -0,0 +1,7 @@ +[plugin] + +name="Little Camera Preview" +description="Shows a picture-in-picture preview of the selected 2D or 3D camera" +author="Anthony Cossins" +version="1.3" +script="plugin.gd" diff --git a/addons/anthonyec.camera_preview/plugin.gd b/addons/anthonyec.camera_preview/plugin.gd new file mode 100644 index 0000000..4e74dd8 --- /dev/null +++ b/addons/anthonyec.camera_preview/plugin.gd @@ -0,0 +1,87 @@ +@tool +extends EditorPlugin + +const preview_scene = preload("res://addons/anthonyec.camera_preview/preview.tscn") + +var preview: CameraPreview +var current_main_screen_name: String + +func _enter_tree() -> void: + main_screen_changed.connect(_on_main_screen_changed) + EditorInterface.get_selection().selection_changed.connect(_on_editor_selection_changed) + + # Initialise preview panel and add to main screen. + preview = preview_scene.instantiate() as CameraPreview + preview.request_hide() + + var main_screen = EditorInterface.get_editor_main_screen() + main_screen.add_child(preview) + +func _exit_tree() -> void: + if preview: + preview.queue_free() + +func _ready() -> void: + # TODO: Currently there is no API to get the main screen name without + # listening to the `EditorPlugin.main_screen_changed` signal: + # https://github.com/godotengine/godot-proposals/issues/2081 + EditorInterface.set_main_screen_editor("Script") + EditorInterface.set_main_screen_editor("3D") + +func _on_main_screen_changed(screen_name: String) -> void: + current_main_screen_name = screen_name + + # TODO: Bit of a hack to prevent pinned staying between view changes on the same scene. + preview.unlink_camera() + _on_editor_selection_changed() + +func _on_editor_selection_changed() -> void: + if not is_main_screen_viewport(): + # This hides the preview "container" and not the preview itself, allowing + # any locked previews to remain visible once switching back to 3D tab. + preview.visible = false + return + + preview.visible = true + + var selected_nodes = EditorInterface.get_selection().get_selected_nodes() + + var selected_camera_3d: Camera3D = find_camera_3d_or_null(selected_nodes) + var selected_camera_2d: Camera2D = find_camera_2d_or_null(selected_nodes) + + if selected_camera_3d and current_main_screen_name == "3D": + preview.link_with_camera_3d(selected_camera_3d) + preview.request_show() + + elif selected_camera_2d and current_main_screen_name == "2D": + preview.link_with_camera_2d(selected_camera_2d) + preview.request_show() + + else: + preview.request_hide() + +func is_main_screen_viewport() -> bool: + return current_main_screen_name == "3D" or current_main_screen_name == "2D" + +func find_camera_3d_or_null(nodes: Array[Node]) -> Camera3D: + var camera: Camera3D + + for node in nodes: + if node is Camera3D: + camera = node as Camera3D + break + + return camera + +func find_camera_2d_or_null(nodes: Array[Node]) -> Camera2D: + var camera: Camera2D + + for node in nodes: + if node is Camera2D: + camera = node as Camera2D + break + + return camera + +func _on_selected_camera_3d_tree_exiting() -> void: + preview.unlink_camera() diff --git a/addons/anthonyec.camera_preview/preview.gd b/addons/anthonyec.camera_preview/preview.gd new file mode 100644 index 0000000..3c07d04 --- /dev/null +++ b/addons/anthonyec.camera_preview/preview.gd @@ -0,0 +1,404 @@ +@tool + +class_name CameraPreview +extends Control + +enum CameraType { + CAMERA_2D, + CAMERA_3D +} + +enum PinnedPosition { + LEFT, + RIGHT, +} + +enum InteractionState { + NONE, + RESIZE, + DRAG, + + # Animation is split into 2 seperate states so that the tween is only + # invoked once in the "start" state. + START_ANIMATE_INTO_PLACE, + ANIMATE_INTO_PLACE, +} + +const margin_3d: Vector2 = Vector2(10, 10) +const margin_2d: Vector2 = Vector2(20, 15) +const panel_margin: float = 2 +const min_panel_size: float = 250 + +@onready var panel: Panel = %Panel +@onready var placeholder: Panel = %Placeholder +@onready var preview_camera_3d: Camera3D = %Camera3D +@onready var preview_camera_2d: Camera2D = %Camera2D +@onready var sub_viewport: SubViewport = %SubViewport +@onready var sub_viewport_text_rect: TextureRect = %TextureRect +@onready var resize_left_handle: Button = %ResizeLeftHandle +@onready var resize_right_handle: Button = %ResizeRightHandle +@onready var lock_button: Button = %LockButton +@onready var gradient: TextureRect = %Gradient +@onready var viewport_margin_container: MarginContainer = %ViewportMarginContainer +@onready var overlay_margin_container: MarginContainer = %OverlayMarginContainer +@onready var overlay_container: Control = %OverlayContainer + +var camera_type: CameraType = CameraType.CAMERA_3D +var pinned_position: PinnedPosition = PinnedPosition.RIGHT +var viewport_ratio: float = 1 +var editor_scale: float = EditorInterface.get_editor_scale() +var is_locked: bool +var show_controls: bool +var selected_camera_3d: Camera3D +var selected_camera_2d: Camera2D + +var state: InteractionState = InteractionState.NONE +var initial_mouse_position: Vector2 +var initial_panel_size: Vector2 +var initial_panel_position: Vector2 + +func _ready() -> void: + # Set initial width. + panel.size.x = min_panel_size * editor_scale + + # Setting texture to viewport in code instead of directly in the editor + # because otherwise an error "Path to node is invalid: Panel/SubViewport" + # on first load. This is harmless but doesn't look great. + # + # This is a known issue: + # https://github.com/godotengine/godot/issues/27790#issuecomment-499740220 + sub_viewport_text_rect.texture = sub_viewport.get_texture() + + # From what I can tell there's something wrong with how an editor theme + # scales when used within a plugin. It seems to ignore the screen scale. + # For instance, a 30x30px button will appear tiny on a retina display. + # + # Someone else had the issue with no luck: + # https://forum.godotengine.org/t/how-to-scale-plugin-controls-to-look-the-same-in-4k-as-1080p/36151 + # + # And seems Dialogic also scales buttons manually: + # https://github.com/dialogic-godot/dialogic/blob/master/addons/dialogic/Editor/Common/sidebar.gd#L25C6-L38 + # + # Maybe I don't know the correct way to do it, so for now the workaround is + # to set the correct size in code using screen scale. + var button_size = Vector2(30, 30) * editor_scale + var margin_size: float = panel_margin * editor_scale + + resize_left_handle.size = button_size + resize_left_handle.pivot_offset = Vector2(0, 0) * editor_scale + + resize_right_handle.size = button_size + resize_right_handle.pivot_offset = Vector2(30, 30) * editor_scale + + lock_button.size = button_size + lock_button.pivot_offset = Vector2(0, 30) * editor_scale + + viewport_margin_container.add_theme_constant_override("margin_left", margin_size) + viewport_margin_container.add_theme_constant_override("margin_top", margin_size) + viewport_margin_container.add_theme_constant_override("margin_right", margin_size) + viewport_margin_container.add_theme_constant_override("margin_bottom", margin_size) + + overlay_margin_container.add_theme_constant_override("margin_left", margin_size) + overlay_margin_container.add_theme_constant_override("margin_top", margin_size) + overlay_margin_container.add_theme_constant_override("margin_right", margin_size) + overlay_margin_container.add_theme_constant_override("margin_bottom", margin_size) + + # Parent node overlay size is not available on first ready, need to wait a + # frame for it to be drawn. + await get_tree().process_frame + + # Anchors are set in code because setting them in the editor UI doesn't take + # editor scale into account. + resize_left_handle.position = Vector2(0, 0) + resize_right_handle.set_anchors_preset(Control.PRESET_TOP_LEFT) + + resize_right_handle.position = Vector2(overlay_container.size.x - button_size.x, 0) + resize_right_handle.set_anchors_preset(Control.PRESET_TOP_RIGHT) + + lock_button.position = Vector2(0, overlay_container.size.y - button_size.y) + lock_button.set_anchors_preset(Control.PRESET_BOTTOM_LEFT) + +func _process(_delta: float) -> void: + if not visible: return + + match state: + InteractionState.NONE: + panel.size = get_clamped_size(panel.size) + panel.position = get_pinned_position(pinned_position) + + InteractionState.RESIZE: + var delta_mouse_position = initial_mouse_position - get_global_mouse_position() + var resized_size = panel.size + + if pinned_position == PinnedPosition.LEFT: + resized_size = initial_panel_size - delta_mouse_position + + if pinned_position == PinnedPosition.RIGHT: + resized_size = initial_panel_size + delta_mouse_position + + panel.size = get_clamped_size(resized_size) + panel.position = get_pinned_position(pinned_position) + + InteractionState.DRAG: + placeholder.size = panel.size + + var global_mouse_position = get_global_mouse_position() + var offset = initial_mouse_position - initial_panel_position + + panel.global_position = global_mouse_position - offset + + if global_mouse_position.x < global_position.x + size.x / 2: + pinned_position = PinnedPosition.LEFT + else: + pinned_position = PinnedPosition.RIGHT + + placeholder.position = get_pinned_position(pinned_position) + + InteractionState.START_ANIMATE_INTO_PLACE: + var final_position: Vector2 = get_pinned_position(pinned_position) + var tween = get_tree().create_tween() + + tween.set_ease(Tween.EASE_OUT) + tween.set_trans(Tween.TRANS_CUBIC) + tween.tween_property(panel, "position", final_position, 0.3) + + tween.finished.connect(func(): + panel.position = final_position + state = InteractionState.NONE + ) + + state = InteractionState.ANIMATE_INTO_PLACE + + # I couldn't get `mouse_entered` and `mouse_exited` events to work + # nicely, so I use rect method instead. Plus using this method it's easy to + # grow the hit area size. + var panel_hover_rect = Rect2(panel.global_position, panel.size) + panel_hover_rect = panel_hover_rect.grow(40) + + var mouse_position = get_global_mouse_position() + + show_controls = state != InteractionState.NONE or panel_hover_rect.has_point(mouse_position) + + # UI visibility. + resize_left_handle.visible = show_controls and pinned_position == PinnedPosition.RIGHT + resize_right_handle.visible = show_controls and pinned_position == PinnedPosition.LEFT + lock_button.visible = show_controls or is_locked + placeholder.visible = state == InteractionState.DRAG or state == InteractionState.ANIMATE_INTO_PLACE + gradient.visible = show_controls + + # Sync camera settings. + if camera_type == CameraType.CAMERA_3D and selected_camera_3d: + sub_viewport.size = panel.size + + # Sync position and rotation without using a `RemoteTransform` node + # because if you save a camera as a scene, the remote transform node will + # be stored within the scene. Also it's harder to keep the remote + # transform `remote_path` up-to-date with scene changes, which causes + # many errors. + preview_camera_3d.global_position = selected_camera_3d.global_position + preview_camera_3d.global_rotation = selected_camera_3d.global_rotation + + preview_camera_3d.fov = selected_camera_3d.fov + preview_camera_3d.projection = selected_camera_3d.projection + preview_camera_3d.size = selected_camera_3d.size + preview_camera_3d.cull_mask = selected_camera_3d.cull_mask + preview_camera_3d.keep_aspect = selected_camera_3d.keep_aspect + preview_camera_3d.near = selected_camera_3d.near + preview_camera_3d.far = selected_camera_3d.far + preview_camera_3d.h_offset = selected_camera_3d.h_offset + preview_camera_3d.v_offset = selected_camera_3d.v_offset + preview_camera_3d.attributes = selected_camera_3d.attributes + preview_camera_3d.environment = selected_camera_3d.environment + + if camera_type == CameraType.CAMERA_2D and selected_camera_2d: + var project_window_size = get_project_window_size() + var ratio = project_window_size.x / panel.size.x + + # TODO: Is there a better way to fix this? + # The camera border is visible sometimes due to pixel rounding. + # Subtract 1px from right and bottom to hide this. + var hide_camera_border_fix = Vector2(1, 1) + + sub_viewport.size = panel.size + sub_viewport.size_2d_override = (panel.size - hide_camera_border_fix) * ratio + sub_viewport.size_2d_override_stretch = true + + preview_camera_2d.global_position = selected_camera_2d.global_position + preview_camera_2d.global_rotation = selected_camera_2d.global_rotation + + preview_camera_2d.offset = selected_camera_2d.offset + preview_camera_2d.zoom = selected_camera_2d.zoom + preview_camera_2d.ignore_rotation = selected_camera_2d.ignore_rotation + preview_camera_2d.anchor_mode = selected_camera_2d.anchor_mode + preview_camera_2d.limit_left = selected_camera_2d.limit_left + preview_camera_2d.limit_right = selected_camera_2d.limit_right + preview_camera_2d.limit_top = selected_camera_2d.limit_top + preview_camera_2d.limit_bottom = selected_camera_2d.limit_bottom + +func link_with_camera_3d(camera_3d: Camera3D) -> void: + # TODO: Camera may not be ready since this method is called in `_enter_tree` + # in the plugin because of a workaround for: + # https://github.com/godotengine/godot-proposals/issues/2081 + if not preview_camera_3d: + return request_hide() + + var is_different_camera = camera_3d != preview_camera_3d + + # TODO: A bit messy. + if is_different_camera: + if preview_camera_3d.tree_exiting.is_connected(unlink_camera): + preview_camera_3d.tree_exiting.disconnect(unlink_camera) + + if not camera_3d.tree_exiting.is_connected(unlink_camera): + camera_3d.tree_exiting.connect(unlink_camera) + + sub_viewport.disable_3d = false + sub_viewport.world_3d = camera_3d.get_world_3d() + + selected_camera_3d = camera_3d + camera_type = CameraType.CAMERA_3D + +func link_with_camera_2d(camera_2d: Camera2D) -> void: + if not preview_camera_2d: + return request_hide() + + var is_different_camera = camera_2d != preview_camera_2d + + # TODO: A bit messy. + if is_different_camera: + if preview_camera_2d.tree_exiting.is_connected(unlink_camera): + preview_camera_2d.tree_exiting.disconnect(unlink_camera) + + if not camera_2d.tree_exiting.is_connected(unlink_camera): + camera_2d.tree_exiting.connect(unlink_camera) + + sub_viewport.disable_3d = true + sub_viewport.world_2d = camera_2d.get_world_2d() + + selected_camera_2d = camera_2d + camera_type = CameraType.CAMERA_2D + +func unlink_camera() -> void: + if selected_camera_3d: + selected_camera_3d = null + + if selected_camera_2d: + selected_camera_2d = null + + is_locked = false + lock_button.button_pressed = false + +func request_hide() -> void: + if is_locked: return + visible = false + +func request_show() -> void: + visible = true + +func get_pinned_position(pinned_position: PinnedPosition) -> Vector2: + var margin: Vector2 = margin_3d * editor_scale + + if camera_type == CameraType.CAMERA_2D: + margin = margin_2d * editor_scale + + match pinned_position: + PinnedPosition.LEFT: + return Vector2.ZERO - Vector2(0, panel.size.y) - Vector2(-margin.x, margin.y) + PinnedPosition.RIGHT: + return size - panel.size - margin + _: + assert(false, "Unknown pinned position %s" % str(pinned_position)) + + return Vector2.ZERO + +func get_clamped_size(desired_size: Vector2) -> Vector2: + var viewport_ratio = get_project_window_ratio() + var editor_viewport_size = get_editor_viewport_size() + + var max_bounds = Vector2( + editor_viewport_size.x * 0.6, + editor_viewport_size.y * 0.8 + ) + + var clamped_size = desired_size + + # Apply aspect ratio. + clamped_size = Vector2(clamped_size.x, clamped_size.x * viewport_ratio) + + # Clamp the max size while respecting the aspect ratio. + if clamped_size.y >= max_bounds.y: + clamped_size.x = max_bounds.y / viewport_ratio + clamped_size.y = max_bounds.y + + if clamped_size.x >= max_bounds.x: + clamped_size.x = max_bounds.x + clamped_size.y = max_bounds.x * viewport_ratio + + # Clamp the min size based on if it's portrait or landscape. Portrait min + # size should be based on it's height. Landscape min size is based on it's + # width instead. Applying min width to a portrait size would make it too big. + var is_portrait = viewport_ratio > 1 + + if is_portrait and clamped_size.y <= min_panel_size * editor_scale: + clamped_size.x = min_panel_size / viewport_ratio + clamped_size.y = min_panel_size + clamped_size = clamped_size * editor_scale + + if not is_portrait and clamped_size.x <= min_panel_size * editor_scale: + clamped_size.x = min_panel_size + clamped_size.y = min_panel_size * viewport_ratio + clamped_size = clamped_size * editor_scale + + # Round down to avoid sub-pixel artifacts, mainly seen around the margins. + return clamped_size.floor() + +func get_project_window_size() -> Vector2: + var window_width = float(ProjectSettings.get_setting("display/window/size/viewport_width")) + var window_height = float(ProjectSettings.get_setting("display/window/size/viewport_height")) + + return Vector2(window_width, window_height) + +func get_project_window_ratio() -> float: + var project_window_size = get_project_window_size() + + return project_window_size.y / project_window_size.x + +func get_editor_viewport_size() -> Vector2: + var fallback_size = EditorInterface.get_editor_main_screen().size + + # There isn't an API for getting the viewport node. Instead it has to be + # found by checking the parent's parent of the subviewport and find + # the correct node based on name and class. + var editor_sub_viewport_3d = EditorInterface.get_editor_viewport_3d(0) + var editor_viewport_container = editor_sub_viewport_3d.get_parent().get_parent().get_parent() + + # Early return incase editor tree structure has changed. + if editor_viewport_container.get_class() != "Node3DEditorViewportContainer": + return fallback_size + + return editor_viewport_container.size + +func _on_resize_handle_button_down() -> void: + if state != InteractionState.NONE: return + + state = InteractionState.RESIZE + initial_mouse_position = get_global_mouse_position() + initial_panel_size = panel.size + +func _on_resize_handle_button_up() -> void: + state = InteractionState.NONE + +func _on_drag_handle_button_down() -> void: + if state != InteractionState.NONE: return + + state = InteractionState.DRAG + initial_mouse_position = get_global_mouse_position() + initial_panel_position = panel.global_position + +func _on_drag_handle_button_up() -> void: + if state != InteractionState.DRAG: return + + state = InteractionState.START_ANIMATE_INTO_PLACE + +func _on_lock_button_pressed() -> void: + is_locked = !is_locked diff --git a/addons/anthonyec.camera_preview/preview.tscn b/addons/anthonyec.camera_preview/preview.tscn new file mode 100644 index 0000000..77b3ced --- /dev/null +++ b/addons/anthonyec.camera_preview/preview.tscn @@ -0,0 +1,200 @@ +[gd_scene load_steps=8 format=3 uid="uid://xybmfvufjuv"] + +[ext_resource type="Script" path="res://addons/anthonyec.camera_preview/preview.gd" id="1_6b32r"] +[ext_resource type="Texture2D" uid="uid://do6d60od41vmg" path="res://addons/anthonyec.camera_preview/Pin.svg" id="2_p0pa8"] +[ext_resource type="Texture2D" uid="uid://btc01wc11tiid" path="res://addons/anthonyec.camera_preview/GuiResizerTopLeft.svg" id="2_t64ej"] +[ext_resource type="Texture2D" uid="uid://04l05jxuyt7k" path="res://addons/anthonyec.camera_preview/GuiResizerTopRight.svg" id="3_6yuab"] + +[sub_resource type="ViewportTexture" id="ViewportTexture_hchdq"] +viewport_path = NodePath("Panel/SubViewport") + +[sub_resource type="Gradient" id="Gradient_11p6r"] +offsets = PackedFloat32Array(0, 0.3, 0.6, 1) +colors = PackedColorArray(0, 0, 0, 0.235294, 0, 0, 0, 0.0784314, 0, 0, 0, 0.0784314, 0, 0, 0, 0.235294) + +[sub_resource type="GradientTexture2D" id="GradientTexture2D_4dkve"] +gradient = SubResource("Gradient_11p6r") +width = 256 +height = 256 +fill_to = Vector2(2.08165e-12, 1) + +[node name="Preview" type="Control"] +z_index = 999 +layout_mode = 3 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +script = ExtResource("1_6b32r") + +[node name="Placeholder" type="Panel" parent="."] +unique_name_in_owner = true +visible = false +modulate = Color(1, 1, 1, 0.705882) +layout_mode = 1 +anchors_preset = 3 +anchor_left = 1.0 +anchor_top = 1.0 +anchor_right = 1.0 +anchor_bottom = 1.0 +offset_left = -40.0 +offset_top = -40.0 +offset_right = 410.0 +offset_bottom = 410.0 +grow_horizontal = 0 +grow_vertical = 0 + +[node name="Panel" type="Panel" parent="."] +unique_name_in_owner = true +clip_contents = true +layout_mode = 1 +anchors_preset = 3 +anchor_left = 1.0 +anchor_top = 1.0 +anchor_right = 1.0 +anchor_bottom = 1.0 +offset_left = -520.0 +offset_top = -908.889 +offset_right = -20.0 +offset_bottom = -20.0 +grow_horizontal = 0 +grow_vertical = 0 +pivot_offset = Vector2(450, 300) + +[node name="SubViewport" type="SubViewport" parent="Panel"] +unique_name_in_owner = true +handle_input_locally = false +gui_disable_input = true +size_2d_override_stretch = true + +[node name="Camera3D" type="Camera3D" parent="Panel/SubViewport"] +unique_name_in_owner = true +current = true + +[node name="Camera2D" type="Camera2D" parent="Panel/SubViewport"] +unique_name_in_owner = true +ignore_rotation = false + +[node name="ViewportMarginContainer" type="MarginContainer" parent="Panel"] +unique_name_in_owner = true +clip_contents = true +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 = 4 +theme_override_constants/margin_top = 4 +theme_override_constants/margin_right = 4 +theme_override_constants/margin_bottom = 4 + +[node name="TextureRect" type="TextureRect" parent="Panel/ViewportMarginContainer"] +unique_name_in_owner = true +layout_mode = 2 +texture = SubResource("ViewportTexture_hchdq") +expand_mode = 1 + +[node name="Gradient" type="TextureRect" parent="Panel"] +unique_name_in_owner = true +visible = false +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +mouse_filter = 2 +texture = SubResource("GradientTexture2D_4dkve") + +[node name="OverlayMarginContainer" type="MarginContainer" parent="Panel"] +unique_name_in_owner = true +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 = 4 +theme_override_constants/margin_top = 4 +theme_override_constants/margin_right = 4 +theme_override_constants/margin_bottom = 4 + +[node name="OverlayContainer" type="Control" parent="Panel/OverlayMarginContainer"] +unique_name_in_owner = true +clip_contents = true +layout_mode = 2 +mouse_filter = 2 + +[node name="DragHandle" type="Button" parent="Panel/OverlayMarginContainer/OverlayContainer"] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +focus_mode = 0 +flat = true + +[node name="ResizeLeftHandle" type="Button" parent="Panel/OverlayMarginContainer/OverlayContainer"] +unique_name_in_owner = true +visible = false +layout_mode = 1 +offset_right = 60.0 +offset_bottom = 60.0 +size_flags_horizontal = 0 +size_flags_vertical = 0 +mouse_default_cursor_shape = 12 +icon = ExtResource("2_t64ej") +flat = true +icon_alignment = 1 +expand_icon = true + +[node name="ResizeRightHandle" type="Button" parent="Panel/OverlayMarginContainer/OverlayContainer"] +unique_name_in_owner = true +visible = false +layout_mode = 1 +anchors_preset = 1 +anchor_left = 1.0 +anchor_right = 1.0 +offset_left = -60.0 +offset_bottom = 60.0 +pivot_offset = Vector2(60, 60) +size_flags_horizontal = 8 +size_flags_vertical = 0 +mouse_default_cursor_shape = 11 +icon = ExtResource("3_6yuab") +flat = true +icon_alignment = 1 +expand_icon = true + +[node name="LockButton" type="Button" parent="Panel/OverlayMarginContainer/OverlayContainer"] +unique_name_in_owner = true +visible = false +layout_mode = 1 +anchors_preset = 2 +anchor_top = 1.0 +anchor_bottom = 1.0 +offset_top = -60.0 +offset_right = 60.0 +pivot_offset = Vector2(0, 60) +size_flags_horizontal = 0 +size_flags_vertical = 8 +tooltip_text = "Always Show Preview" +toggle_mode = true +icon = ExtResource("2_p0pa8") +flat = true +icon_alignment = 1 +expand_icon = true + +[connection signal="button_down" from="Panel/OverlayMarginContainer/OverlayContainer/DragHandle" to="." method="_on_drag_handle_button_down"] +[connection signal="button_up" from="Panel/OverlayMarginContainer/OverlayContainer/DragHandle" to="." method="_on_drag_handle_button_up"] +[connection signal="renamed" from="Panel/OverlayMarginContainer/OverlayContainer/DragHandle" to="." method="_on_drag_handle_renamed"] +[connection signal="button_down" from="Panel/OverlayMarginContainer/OverlayContainer/ResizeLeftHandle" to="." method="_on_resize_handle_button_down"] +[connection signal="button_up" from="Panel/OverlayMarginContainer/OverlayContainer/ResizeLeftHandle" to="." method="_on_resize_handle_button_up"] +[connection signal="button_down" from="Panel/OverlayMarginContainer/OverlayContainer/ResizeRightHandle" to="." method="_on_resize_handle_button_down"] +[connection signal="button_up" from="Panel/OverlayMarginContainer/OverlayContainer/ResizeRightHandle" to="." method="_on_resize_handle_button_up"] +[connection signal="pressed" from="Panel/OverlayMarginContainer/OverlayContainer/LockButton" to="." method="_on_lock_button_pressed"] diff --git a/assets/Textures/ObjectTextures/Blunderbus.png b/assets/Textures/ObjectTextures/Blunderbus.png new file mode 100644 index 0000000000000000000000000000000000000000..96f9371cbf5f8b51077deae3c072cca0e7cda2a1 GIT binary patch literal 31845 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 CN99ET literal 0 HcmV?d00001 diff --git a/assets/Textures/ObjectTextures/Pistol.png.import b/assets/Textures/ObjectTextures/Pistol.png.import new file mode 100644 index 0000000..765337d --- /dev/null +++ b/assets/Textures/ObjectTextures/Pistol.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://d2fic5txnwu3u" +path="res://.godot/imported/Pistol.png-088d61fee53cc956a8ad21cb8c0cb860.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/Textures/ObjectTextures/Pistol.png" +dest_files=["res://.godot/imported/Pistol.png-088d61fee53cc956a8ad21cb8c0cb860.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/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/assets/Textures/ObjectTextures/RocketLauncher.png b/assets/Textures/ObjectTextures/RocketLauncher.png new file mode 100644 index 0000000000000000000000000000000000000000..6c4ac5bb821f0385baf5b4b02502b5278b88e32e GIT binary patch literal 44235 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 C+lajY literal 0 HcmV?d00001 diff --git a/assets/Textures/ObjectTextures/mac10.png.import b/assets/Textures/ObjectTextures/mac10.png.import new file mode 100644 index 0000000..686101a --- /dev/null +++ b/assets/Textures/ObjectTextures/mac10.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://gx3iw54iemho" +path="res://.godot/imported/mac10.png-01420520bd1372fc6a82121c21a6d814.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/Textures/ObjectTextures/mac10.png" +dest_files=["res://.godot/imported/mac10.png-01420520bd1372fc6a82121c21a6d814.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/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/assets/Textures/ObjectTextures/revolver1.png b/assets/Textures/ObjectTextures/revolver1.png new file mode 100644 index 0000000000000000000000000000000000000000..b910e7d1d34340ea8307374804f99ef30923a4a1 GIT binary patch literal 20879 zcmeEuXIGP3)a?@jAyPx{)q?`kmEJ;8lp+YyJ4ll*y(V-N5Ij;uI?|;oy@d_}(hW#2 zB4B`k^p@P5_Z{~~+%axG6gcx;_995k3+D zPzd3195{1Hcz}HLHB^D>G4>q*;0B(kt2__P-dzg$uxo63_Y&KBE#kM3v3yJX4$WhL zMS+->C^CXV94Xfu@BKn%n1=aX(7~hj(RfJTA^%3q8m|J~(EA~l0UvcP>NwKp$AQc* z)ZwbM+K*_vU_B1llouIX17nE| zW`e8#|JVPw!2g>T_;!Uqzgg?YU-qxXhz8pRHX|5$c?%JV;mru7#v3GZ*l5V`EfXHY zL<*F-#YAwfCa;_guCL)P;^X5lnE{38M0ypp4WA35iGW{%8W^+dRcf3KfJ8S?K;z@L z^N26J@IdlERjxFu@H_WkNT}JfJ?5F5XQY)_^1s;3h!f%G=H(5R5d#9D4iZtcWNB4X zuaHMnnZpyUj8(1$MXDG(cvmopFs7L>CZ4#jZjmHT+fm>q@0-jy_%TQY?~`F29@KpO zcZ3BBqnVUu03+ix;jA+`0kvZ#-O9#6tjBF5hc?+?h{ojGfANXlQa)bivg0PW>JNEi)k(9*x-cC~t@+KeH2e4DpQJL{pt}Ejd|b6ZP3N4{xCXanmP7=xpcJJWLgN z#yKW$;oJRi$H(q)3POCoI=$x^Je`$a6nR87)|$47Bp9{>acqTqN-!GRTP=V((vPtQ z_4g!j0}*_?exmvCzVteJe1!}M+|jaP#r^~EsFOjht`cf=NTLp>c`fl(E0@9+h?|qO z!UPdJ*ni8@V|V7vcU=zCsU2IVH0}fe2LsZbG=LX|$s^{Bb1U123V?rRwr{X)8NeTx zDslkah87XGc!~fJ{JM%5J``xK9CeVRi+_q6BTPzV!{#qw8MgOh%@1|l>T3y&knTK8 zI^W$=N>CX0zKocDx5<(y&P)NR<*CNXWAhy-$cR*1MPk(5T`7(MT@*hAs#%fNZT;rq zx7c{=d+6{mUDWo@br>zpWLOU$l63XYN}C)v5cIBQ(W5dVx-V2o16L(m`8CC?P@M8j zW!K`^v{Y9FXZ{xkiL`E+C~b$K=MXj_rPK0cp7$(BnF-f|XFth`MGkYA!kn%h6N+Ox zb*=F`^^FtMRG|lf1JilktH}6xS_nXmjPA<{$LKIq59~Bnl*3>X^NjC9BOBetnfp=^ zhKA0nQ3~e%5I2h`?fzVlnG3U%-X95)TT3UyMzuY>#nwEzk!C(=-w?)j ziQfDbUHd)0Oi}*N$3_s+fxA|Qqc-dNY$F7qF9hf(n(w%C%xIQ!gSs@~6AqM`99NVN zsv}@Th>)d~9+EgDfN@vIfcKyFjRy~W1pwZ@)qLv!uba{u>M?l$sV~UkNDMG3>=8jo z)zy>X6aXjELh)t*{#jD#kpS1i8?r_h!cr7~$-oB!td@-3Sc@V$A*!CS7 za$==$(Q|h&uekbIx_B)N*1T^p8`IAK72xJEa9nfI4PlKU800-Y!65wSDURp*LvtX# zbmu=1DBPZP$fBo5)xq0nsrW2H<`dVpN~;dMDBni$ac%d&Bh~Jr{CtE<_G_KkqQ$!U z{Ag8swimB5CAX^s`r{3x`|m2>JfYZxNtx6a#E?^k%y4So(CZ>z3TYlMm%2fK&_AuZ zB-{`({cnLS+rs^$Aeu>K_t5v@K<@E)E`3p=08YeDBqo}g6Ls(vg+!dkA>f&5b23ig zC^zKr^Avs6Zy(G8mQ|jRV1(;uyq3F3QM52-CxE;7ra0wZOvKWxf3k6z9iQt2%D1~1 z+Y+9cz-}Pl|M=}hEF)nq>~$JqscJ8Hqi#X&FcW48Lmon6glb)+#h<-Tl?9O6PHml5 z`oqVppspC*wiNt+d_1S)D6pveU+_3cm+m0xvJ;~xd1>8C5~rUI<#8N!HMl*UV5gj; zl5nmcAb@MhvCk*H7v;P6XY&H!g-}>p0?7Ih8;{>Z$FClFMn18|M8&1cjs0aZjouGm zI(z9BrOM!J0WPM$^O9(TlAhktBfWaOmz^-xE^u0n*fTn}Rvn;AT?YW97rnrhP0STM z^AkORQAlJR>&7+txNc3>lpq7QRlt&;OH-s#a548`Ig?UaH^HpZATaXk8}oa|`pi+A z_9yp!;yzFYV!1k*^fgmABpe`@QH!4uzkk%tdA?isbgQH}SXL8AgZvqO&irD88zhJ( z{}sIDK?Hmjz*!a8u$et*d;(Hcu7yHBw8@_S>6oj}x|cDy=k3>-T$2kpbJikgk|Uusg8ODMwKe;2{`K{D42Vc?nZ*E zBrUwkf5YLcJ>;3P+`PeMVnB0V>oQ({*f(Cc31{6xhBku_sLKD8cP%FeDw_gl<(JbO z|DXp|J7KExv-oM_YhU)-lb0#0QP#Jhf(9Ts8Eb1WNPsUICIIFxjy~g5>RU%udvuY+ zS^O?jOLA{Z3Jd0Piw9pdE)6_R0)Vv7Vv}@k3+~#-#D-;rgJQN#5BnuCIQl(5Ix;GX zkyXlsVuqW9G|6@9OAL%i+7e-Knc23QPwprZI6$H&D3TdJcL9}N4z%B%ze66s>B=f3 z(wbt<@;ZK>8UmcXM{Zvbt0M9pwupvd zn6d-(1kt>|1mj|Kz#Wu~c^Ah{K;J6iOxJOKdc^>FiF8uHuy}PB=aLc;NiPPfZGR!L zgcL4}ozIXrSHjin-+CsVO&em{1sB7w_GFHpIoZ9HrP>C|*d?zbm5{^zb{(IWgBXx9 z3$tdu^ZgDrUgMWCtG9Tjc2S?XOi;qyyHF_7Va-;0VV{#42>&CgoR)qI*{qx>$7+CsDsG}b?&lC_8$YThM0%;_nlvdLff zh?pO=BDI%%%0X?upc>z74sv%5Jyd^E#7~TEX)qi^GrAOYd}EEa@6|994KNFnNN3?4zo!${D~dQ&@Y3 z7#lh(zZR)w{V6r_Ec_=@BR;J=v`K5VPeoPPWV@31Rszzd2~c@$k~m8OjS*ZwdnH~* z2$`m+g#oJurYsLSf?E^(CH0H;4sJgvAcK)nM5ey8A5Ll0(QlIMJ<1-%DCa;ONiEQT z?MQaP?|VOwT?MXncroOR5TJu{UVc8DmL+(IxiVl9A+8 z3m$A;g=PBu7OxKZQc}EMmt+`%QgE!TtKB4nKtw!e-T7~SWy_PX&pl2aIEp);Zk;N= zv^HZ?PT_zv2wH^w_yMGUMF3tRC2d#WU~9w;3UOl<6}`-jG8darCeP0T;q5`HJa%HM zYu^2?)$wiYjG#zrB}P06IS=ujmyzyG9HLD3z3H^cV1Q5*mE=x%8JUw4{~43vPdPG`k2%YRA--0%~M1b zD>e54ZT$vhD? zHSy{tTeY=^(+q2O486X!7l@7Lf3s#VuzcC(Nf}4Q+4HOZ7S#(D)ZU`dWPKVN-T zM&$k#%B^l8Rkys}G9I@7 zzfn|qdVg=Lel7jD2-Kmxp!`getE;2>EC8&9-w4s#syX8_xdmlBLRV`plaNy9r2`gT zda6|~s8jXC+v*zIYnM0j$zk=0SLZYUpW)&f_qq=Q?|$t0#l3J&bU%m_{wIEpgf4Sb zZ$Zva<$)3-pFieIq|YOk);kQ}teE?f=N&jftEy?4^%B)~)_$fqS9)eE?^c@l9p|R}Hq$1 zd+ZaWVkZW~TwW(_)v@WUR_7dFy==}-a96DVIG0ZgHK0Vo3iEBlT)If}9M3JYR#b&P z-&~afyh5a=w!2LbJM_Y>6%7Ae5n+T zY{?t!eg6v(o0Bv+VIvfnq#Aq*^$&5Ff;i z>_-=cNC;7|XY{++)NPB4)_WJ6s=oiOb78>~B)|&p+%x&BIq~(4FoN2ivN~8}k!X&R zwRh6%>^W||@ydXnKgL1;Ag;Y#h3e$zvi|32g5}|B-8qytZBN> zPwVzDtC7t=d4+PlWw@aD?bm?JV*B*_X~l3Nlk5*=BMvtMc5!h>hsXUMK`KvT(2YBi zf4)F0^(GV>%fD-)^BE2=6wm(M;^po#%^-^Y849s6jc@MY2#^iMpCJ&Jq&}FcrV^DE z(!5BCEso{0QmmSYkDG_59cnq*{?w#(^hG*Rgo+d#V}2ZL+P_SxSH3g-I7!Uak=fz) z=;&XG5eXCfLpBtSEfm3Xc{dS}Pu-QZa`}704;|98k&84}LXg+b1Y*nyC9X+Lmv!Dl z|F2=#jHaZ4Pjrx57}qOc%D)r0*CtF^Y3(0%a5;)Xxj!TCpcV5KI7>t38=K5g9xowV zI~ON9Aee5IjL3bftnhdCWMu2)t+!n#{Ma5W7jb~9Jf|_d+^cJc^Lb&yzm@iRKa|~S zypgJ(xmS)q{-{Z^K~euE59`l&zPi>CmqJu5_{@-j%n&a4x*`c2yz$W&U%e7RPpd!l z+-E{Kz!wy6RJZ-C<^0IFF%nKe_EvgOTqy3ttPj0u#J~gQooAOyf;K7~TkFqtt56^`7mczccT`a2|i*0bNfsf@q zaXAwWB>u~5sP-FF(RlGw-vmDgn-<)Hr{46Fa#J4IwcSXr88J};x5`i;zH-Q)Be6{d zMNalK^`S{<@A=%pz5Dn(5BSyVB+QLfizAw}3Bhf{clsB7@7K%Hqd0|b-ZSdj{%ka~!a4C0Pq37=!q5c{|Az0%#kT#V? zQfiv@w}}zVLQV&b4+}P)Mh`!~SB{8o&Yl!zk-_G-Yxhy#5IM_UYugd>Sq3DMwd*PT|m-IhHBe zUvhE(l6eMAo1b^8AM11}*ORU_tsF0OlfzvRvKg~_fv(SYTjwBksPhmi?AEore2+h%}c3}k=r%K~fDzhk8S%Z(%X zE7o}IEXy%D^E8IWzuG|_#c$U4=gZ?+60c(89=puKkefDSA(usEC_B5=&2-IEb1?Z5 zCSg_E> zJMhwOI^eI+pnpe_(1_lwB*BFDJ@x2G{QW}bH<}6w{uUdh+EFtO`7oU{x?g!6>eKwKa22A|FVVH7- zA@o?IsMw`1&<@Yejni->K*MGHGN=ZFU+U_#f;C%FPbemPd~eB0x>sPNkF#T`+O;A@ zZjMEUdrfd<&yMS+NQ}Wb((i|HDJWcPb`Z*?J0Bc4`qqyJa1xL3XYbQx7-L>9o$V8S z^0-mvUUjNIXK6-PL7)jfjIA{oQLt|g(=>J-$Q+w`H%>&P@#nVq&5DTQ<%t5r12P_? zNTf)9ZLOH&MVOAe9-{+=*cXb8ByqEao<=DWev&uz0Q=XvAuNHrN$icIzCB%MI^`y( zCd>cq7s-5Mj6Ru}i*r?-;=+KOz~(S&9Jgl~Rf(0s%M;oeAZKR^NYor&#fg7}7WKE) zdhP$3%Wmb>@1|&vE=an-b^Sid>e+JMj{TN4!V;0*+1Z{_J(6RNH-cE(WJ1sLEv6-* z&XEtkXW;c$UBP=jZ$aVDLg%Q1(TG?Py0s2#m%f>m?*~3L7cIWKU;U)^^Z`c7560A7V!CaB zV*1qQbBoK`;{wwo;m{k@yUzA_EgB}JJykg18MwrD&iU||vPZc(Zt|y79!I-1mA}gp zo){d`q(o&ixLbkP)`8h>UcMcC_gRbFGA+!kvujLx3%A=WU&suvFnz2=r-}WD#!^== zZB&Vp?4rNg6w|HqPHZdf`$oCraZBSNg(rBC`x7UU+j*3PFc;7Uo^o9=k2Jx{ME5_9 zx5}SbaayTy-R^W!23pr8jq@wkpS(>gPr*9gC$K`-n7iGHlb zwzL^26MM$#8K?*b3O(s@-Z}q_$z4^ZkWIFx`pyxsJUBJ zDo~QJu3;A>U}Q#Fqu?kCH_h1J2yndHs(EoDj6g5ck4~=OX7SC_D?cZ=<{Bmh*lNv% z;fT0ikEC?8E9f%nLbGdkV(lOxcq zs^o4IQrudvH>NiTY%()doEN&FLNHOoKGnhPjoHO%_IrcqSQIdb2MrW2+-ZsMvA zDAMYGZPy^<9X3H7ZmKbX7{$FBcq`N|aziyW=*oh8-dhW$Pt_A!F1qpsBc#g$7Kqxm zCJ_6UhxP$^xEuG{kUD1%yeRh0F1q~HIU zW#5H9W>gs(u{xFbW%_pGyLW19wD%nnz!FVhhhEk0+T5}k^Z;XoQw^GrFabR*ao*yO z%o_#NHRlBo~{ihaHyo;{%-8_@X24flQ~>i}4Vpm6~`?)$1tU zY=S|EfgO_#+!)A4^8SRi;M}`gCLdDp{Q-|4$7}*Bll_aDdC=XP|LpMd6e6o0eJ4x@Q!Gok$nvPM#l6QohaZhm z5cB{YtM%38?0VNPAhwrBoo7Nyxc!XTQ4K(>WlxrWTnthqxcKT#qVxy98C6}pC@r? z7#bfo)OKBLA<_M_%(J^qC9Jk*zsPJ3d)B3 zjj-r1qzNkRA(m|si!Bb5c4QA2K@lkxW?nBS^U8 z`2?wQbcu^iWw%e~k*r<}k*3W`ZkQLk`@{K1%CBp~K0A44E{PF7REFj%#1RS!cU2rs zDIScdyjBc3wHf!Kj;0r1O#$f!UekG9?v!qTxh?_71(0DG%2JI}u6dNZIk&hNEe;79 zn*0D+4#^H#ZV6miSROc&D7<=&cyLVVx7@NtVsi%K=o-%NREp2zr-Q+!v_p#nYt9tW z@?yDVo38|iFz#UOyumL%wiV>HBUQ+9(jE~%vYX;)j-Lr9#j&;b^`Leam%cyAT$yz8 z7{NhI3Pn#7^-I9-FIgy9(j&fq#w~rG_$cLfss)OD1A4^7e7&$mA(lSd&6;d|6?LEH zMHlWcJlYmcXdd3RS5!G*E`KKXu|=xR8i{7rDd33P{=ZrPHiL^LOxY`jrd+buU-%2s z2=1ZcYPOrVt6LN24Y@ko(=bhM-a%)HdH$C1KR4M;X%12l36hCH_i;Z_Eo>0R?W!RL z&h8gpso*yPc!F0u1Fx8{M_GScwsP4n<%yzUF16rvuvFilL}fpLMZWm$@#eO{ZS>yN zk8{At>Ci;U3Za428@bXF@|T(WQI&m@2v?3u;jEcOmgnv3`jOhUWKWT3+@wz|o#|`| z+We%msF6UF-qTPlfxs7F7(L!Bv&1q?8~WZ&Q2A3==YweL{cxNr~b{LbcX5c zUTfv-$XY@YX|0&l&YF>=F;P?}@WgD7Mt!H`&K7;ZwOXJx)vhs!G6vK$9Cp=4%xDe< zRW5g0eXcd4o>Vj{#W!?|CJ)K271NoXT(3PDz+z%a6f#O&rkLr@!Py{FQ7GFPAtNez$7D6Lq76`k8mueAJ__4aevJ+cd9il%kJI1Y0P>7VIq#@AkRI@h(PO_0Jx(urG3G;Duv zm!VugxmwKNgW4m-`DgSh;*>$U7nX7l;W{@yj;HzYjg7_ z>M5h&kQ&FpNZ0Q?7;<>ql5BnrL(b0}hC=8_Uoy;SlK;{k*s@I|WbdliZREqej?}EP zML41*jNfcQ8vt4i##BL-R=?>6y_$b}8F7X{enk{sMIgk~si%UHl|_>l@0njPy8gX+ zn$UJKxT0hBuSt#H_RlJlR~@nWSD989Z;T85C11VU*uLKWvma?ilTXc=Ib7>GuH-h} z#FNyQ7kZ#8w#>Y-zutPb)|L7ur2*&~ke=|@DQgd~b z5}CH>|EN6Angvp=EW`&pN z53+>hZhpv;h5Y2sEi5DZV3YDWkli~o!}~S-^8AojMo+UC9|I%6qq(n6)K-_bMK?nj zCe;$P0QD91rkh^(Ggt1Ao+f3U%Iy2xAqyMZQIS4SNq8?WoCq4lN z;MK35OXVupc9PrpyTz8ci!~Uy#ksR91j61=5+}1Nkg18QFQJi-UW!^Qu&PNWju1i1 z<^>x|(SU;96>F42BbZ7lzry}m0cYP>VwL-|7Z2s0wtS{6dl=Re6&1hTZTnou_utF! zE7#vAP9_4D*A%fqx*t#Q+auu*#tsVB3*-|FpluN?h@#`*dp3OZJqoL_3htNUgzk+pw!H;3K9!cB(pyxILW$7bdHstfemF6FqCqSa) zVSaJLh&S^fIOrp5+`epd)t<2SmH~gU*Y-#p_x;y=p>F!5KF01BTXXm7=)x800xu4GZ(ESNDE(?rk6WF9$0t-<1K9!P@ z%v%?MkN@RizN$w(*~)lZQFVhg@fce5a(cJb&pq2AVAj2z3YdQRMqzwogKRa*vrSx^|QD{vxe%nA_>-C51>8k60!*{G*nJZ(WF+zlPS|7;zr7dsAjjVKh- zOC>pddb)mJ8Uc}B@}={**{y0mjAeV)>N#sD6R?@7R4KyZUj zZ$+QV5ufJaYi!sO_Nv@NFGj3m1H99%3>k*MXmj8z?r@6kF8)>Ttp@5at${xStReT9 zG-N(E-{X!?c}hiJg-ju0vhw0l`fJRk@^0|XlUa)p$`w>RCov90lM@|&BOR_dI!a*) zOZluo0)RkOu61`;qN*IpTi#R!l3T9M?J{Qv3>oG=B_^)j2(;m2kZO|3*z==2=-0&= zM+3}EUIPZ!(J!sm2oPB&{FlspNsOPrgI81d&o6WG)W!ZH2Ebu>=J1q9^uE)S{$MVs zLc2e4#2JO8S@b_=OaP45cCKUE!Ib4z9WFz;f4Iun)}rgW2D@a90t ztL0~)mGwCye7rkQ3s{0u;mjJ3ukR>b%k4dbKZz;L#XrwJESp`gZo@_zG7cuQYaFaa zN1={HC~mR5E=5Lg0B9|P>_d0Lw9SG2jIwUB|94K$=fP`)G!{umEq$h0uJk*CnQcIOcO7nu`a?d$*qa_&) z4GP>Be7{&<(*(1`HAr+UK@dQBj90+UDt9EZXMNiyt@MZ<$QP${{6V2~KBFlc4ODGR zb>Bx}GKFCOv?enHu$<^f^0}H*d!fOhclOaVA1Cr*Bqbhi>R3PBqLk>f>%!EaIFrM# zKiOuhi1;wGUHxTq)hi>aN@{~#g3m+c;u^e_@y4iA!`;l??#i6*dPp~k+tSyVAj#yr zU|#rR5H^%`(clllJF$*j1PvzUB0aE5CFmOn`WJq?&-OIB0KIAv-&>z?d8X-|2REUd zoFR8Z#97~RN5f51hkRobL_1|HLJ#{Xh~sfI|LvfvjUkUcQc1^+EJ)@R!3F20a!JD#gpw!q3FVd5(O*-31y@&(Y^8bxPz6$Q`TR=Ly4*3plo7Vtc(@DQ%E%TBCN#b?6TfbPFX63Jz*cU62oX{Jl)w*ckC|G214j8k6ak>k+{UB{ zWffUnf2}w~uFo%!$s&6xKpuKI8)Ig5ioOgx*l~T|fB(;0c)F_UkcrPk4($gA@$EYCbm^+=jeD*-;6o+j*s* z%O@TBLSbmQHhizfLMg6)yp^|)LUsOG*A1Y4_69^q@2Z8|VcUiU;$Jlhm?s@32ef|SV9PwTx$^U!hdohLZp|ra6 ztX7fb_YTF#NR?(eS3t(9!x3z5W@i~Gb!DF3t$Ea(yigM^^BXy?ri+Ho7-ak)`PD;K zL>}msZPlZUSqBhzv}kk!Nfe^yo_J;P7)b zh4eKS{#^tx$tp#}EBB4RT+dkYO*_(M<0G!Y*qUv&gDFq?&RBd~V=E8w_0YZW7e8I` z#FP>Kw~PBa50%_J+zHk2KJIc!3|-{gaZKACvq=lgXe#6PUmYgF)RF(`lYa5WMZC@g z(Qp^57mz&`7UzcyC9o^wHk7Gcg~Bg}tsfPT2li=4A|Gq8k_)6)C4pC0#aNShEWyp%7q3D#@`4&?UdtZRO{jWYT0fTJK)6?YDR5c6N~tn+#zJR8_*<=HM%?w$WuOV zLPURahMs)D4k&71yO-kj2Rg&94vH60#P-@12TjW*DqLM-BPXe-Z3KV51jFo}1BKNW zg~m$`syG6R*u2}4(QTH14?4oDFU=6bg4qCLx1Yfva*(ZFhum{Ryw5Z2!r?H4oP_5e z33niEqtN(TaOEhT@dJok?iPnapk8*+@5}=EXEh6EvkcuA{Rmo#{Zi{t9IE4raMZ%j zH2P}GPSYSOj&J1|b#DoreT`v#u<38+Od#`9H zp6~om9psa$>f_{_Pj;r)kJWGemt*wNi1S=!Z7slZ zuwy{-5Sib9*h3iRw7a-PD669|1)^MUqEIPyw~|x5q^fV^nX=AjbSN=GiAf_cw5iM% zfy_pm2ci~-nN$g&)cvvMtzw2$BjzLx=C`qR0x4fzW>w)`xXEzsSULi;x#k5eu>0OE zkNErWyc`iEjzos_5}CY!XH&ykqch#tE?2G?VnOQUqlCoMN5!eYKPHE%oM3>E(aiQ= zMTNmYyh8U^obr66fYn~ap{>Pbq?WDaZfj}L8x3+N+3Wyj3ex7S14WrmKlZOxES(1} zqJ4u_#1wG1!F$}R>OuoPWBut}39233M7|{jMUl^GP1AYqN$j#&MhxD?3mhKmFfyzE>5E|{C`CdF1LD4s_&Lh} zA$rVkUMw_C)18!*iLBwg7W^0#1tapf>T#biE1d~5j-Dj}?;uzPf2^uijAaP=pBQMW zxKb9cuini0aIt|S`@5{^Ngz?6zX}>Zo}Z6U-|!Ws*AA?|mEVtdB1t82i(kTrUubla z>c6D;OSEkI;!Dq@OHw6s{wb#*F+a%dhp<$v>~rx)9woI2`|;|fa{tX%mXE=V?d;gN zu?J3FyX0}3I%tuqbR!qPe~_o`v-Wq;zezSrP zQ^1&xtEM|0jBWfKOq0QQZ{3bYeshk7vA;EsxqZag%G@(^9{>pxQ+=o4loVQ3LmqQ> zv+#R*Eg7Ol4D@q5-)C zt8>d?Ymzkd3yMxO*B;zLm7hWwe$ zA|i=?aNuML;UQ6n)qU_3$6#wP0a4+m13zz;J3`(u$)4^l#C>}a**;Xz@W?b(#%mQ& zI(Onqyi4xLsMZGpI>BoCh}6&q@vXtfCarqhT2G5Jx`@aP$1 zT_lR#MuEj%hS?535Y9d)0|@Xv`b6_rVQ^pof?K7=18CD1ri}_I&UJhfA<5`QFEkGw z%S+=8645}AR4iHl^3f_KcLICU;;HQ8;=0!|M=R1p?;6Yx>|_h5q37um8c;wL=?79J z{uNGDb02EFv4J{z<8>&CGj;@Rr}h!R-8;LR7pVQ;R&2|DEyD&Uh}KHiREPG^HB_)| zyJA8cn9MT2oG~K-0}$>92(z`{xO*}I2XDAS9-a?#SVtT}2%I;A&y8o248!dNBFA}wu~={|GQkl4r3-&r#Pg-YX?0&71=)!3HeEktBT)*&@1+t+eM3ekFSGcFW^|jMu=< z1TC`@OEg-{YQ1p}DO@A24^jnMyqF96;Y4WJUqMt`;7*5s)e=n3Y_bH9!1U-^SQnfG znzpt>=<0r9t+rJN6?ZrB;6dkniI5@g691Or|oh2f_r3QN+LAA?ys(P z&V5@Zl!f>WOg|FTl{Qg2gW!AR6RlEK)Q6SGS0=pwX{$dp`8b!`cIZ?^-%nGiXqNAm zPi`&WU;)L0H0%{$@x9Z!wV^m#Slaz=UWJ6zNmx^QQ0xKoV;fHv<&{R^({xsUZ^Vkx zfl}8($ys~+Q%gdS;{+K^UEBI$EZSv@B0BJrARY)+!bcF_`jbe_iaCV!llsP_CQ--T z8;pLRqZ-=um!R%mMBDhysV81a6-vmE1O(7+t(CKHE-m?|^)1(|Wc`$LSe67ZjV_o$ z>VY!pp-`D+Uq6b&pOPwt^q>$@Z_KL9^qjHt149yw;#*GnxAtFIzxJ0SRe>0Et;+iO zDFx!T5wR>2bQR9XYOo?#<@A1aL?q0}%Tp;y%S6$vyo&PauG;GJj8f(vm+Yb)-`Td~n z1m|%l_xLO6nZ2IHxX3Z;^tEm%Z^^X4@1u)9v(Z0xiH~1ra4WT>^~P*^hiB5yRZzT| zwX-Ri%aYBOH4|Bz^<%@b5WQM^_Px=zvfJN5Oqy!?&VIOz@8~Ldz*F1yE{-_1>opYO z)@_hnu@@6CdArMxaBT-HV%N6wI|~5DThC1k$TK(s7g~H!j#1(RRt@p{h6SI=w?(pAyQvjQBBHyt%^7~9Z3=xx399DJ zgE8BE@GBm@AX3T*Q#$fXvbATASL;=>2l)kH$-K}qwkUK6MJn8#qvQyp#xfXy0l(zp zu2i!JcfRU_b9+gtm$Kus?(zb4aw{ZE=C@pv=KJi!u-`K}kNJ3twRNK8mMBnc*C6hA zq_ec;gN$cVCK*jik=C;)&o8hB%ewM4jSMqopGl*2 z28(_EjKZt3v3B_rBUutSdTP$#CA7->#qw%SjV&S1a}f3m3J|&` z%OM2nZ#e`ius^L2pQX|JW&($DhlQ;)Gxzos4w1uwpma525J^PKSLVmB=li+y50%DN zzfv^#OxPV7HOQ=a{tGH)2&eHSX5Oe%O!{#%crRg|nVWc&pc@z{kYH5dhePXAyp}eC zn38W^`s}GXu%5ry5f_kv?})QzFZA)ONAn*^G!mt=z>wMlCGarKikWA% zSEvTz-(TPY3@?7EwxJ?@m8K_d!`FO#sk0r>o4BH_MBc>(&^7zibtKIyG@eXH1R0YJ;v#IUf{zIP{XaVEQr45=;y#=@A3!i#L++z3<^Nr z(|)p0Wr`v_k)zEKBBW6oWT2VNkLM{Wg&r8+H>=9Ozcz&$IhPY^Jn;?$kv`!v$fJ_` z4?16)pGWq>w?42$xz%yh{-pw!i~CTuJV!ot6JdB#!n2b(ieMH!K?`FEhO|+TD}!1h3C&7Dp6?BZk&Tf==W{=N?02g(x8MYXRHqRF zVr*Z3cnv$dk)_Mo{a+*S=ED^X^$4=t##-ER0LYh6u?TS!h#mF?h1mHY=T}+ya0kI0 zC)uJDz4!)zjEt6c<*fDd^o>aHbrZo;UKQJ@T5M#fcH!`QORkm0#+HMJD~PJCpwrFl z=@y0;|IkB=XgAY5wJF4DV)OzZhT0OV5xt(}eg--$PKt*WZ8Am`Jfu*4oLHd#K#&$Z zIh8_W*TTGgtSUNDK0TJ5DI21k(SYkT8DDnK$@Gtnua#aIem zR3|wb)6iz%T6*hpWCc--I*rwZk#!kukO9b|smbvrLsJ&A=P{aX@@*L>4TH&qBr|LA z$%!2iyJ)HN!{Xp0EHb^^0z{#-T`iB*pH&t&UOn|xbRL&`U=aW8YwJ{Hwc%h{N6C~2 zonN57ODWYnmNZApG!Hk5s(3dN>GJLi)j%bVx#$VUgQCiC{#%hx^s&`BHWfl;XO+Fv znn{{`5&z^UBEpx{p>zIj0Pr}tGUp&g%ej;5(hSwK0su7P|NSq(2vr<*ch^}d%T+1Q z`mdzU4`x(J{J+2MJh>C|FLPj^nQP7KiqH9oi$$l+ zpOT3TDE+aD&t-B(FDne1 z5-9=T$<%9kU6Z_Ek~D~-V@c}2)gc#tx~=4a3tXu0TVGrBH9ugv`C(Tm)?>-8mnH(JRT8ENcrhk)YUVG+In2hsavZ9-wVqrCUpnl0^jf@Duzh3Iw- zSU7$Eff(NT;V38N@}Svw!r{bn=O6wjaamUPT}3Z`BHglbGExRj7^D9FAm1Mk2=Gr!lgt{`Y+EasE$a0B(RJ4YH9{qw?64DO zGh98jKU?f<^z@uZ^UY7x^TCr@Vso#wonDkYo=s-J&F*AhMyH zgrE4**4|EPGhGJ)YSE=uxg+tbs~Km3@rJ3HX-~p?yNj)*{V6Ewv;`|GG`a9u$;vK; zOLtL$#yk657Q@y2vsUiIg71(*0-Hj{=(Pb~EQfVU2wI_4p^d7w^8w|n9gBr;OMZsX zm#PzgmX+I{YrJ1<*!^Nra$D!q!tznbKSVa4|NCVlQ#E{yM=zo*uX9MYn!0_l9!sd^BseKo}7w?PL7=PFm)7Kkd!SRD%&&qHNPutDXQG9 z)>x=KvYaYtrQrQi`;tpY(s1IP%Y?2j&fIcrV@J6xKp@#YVxd$2)z08=gC`{h)XIUG z_*vw4brx=9L-yB2%b$N+J;LR3ly+u!_xE15SX8`8^Y3}lo zj-#f4rBRmclh&=iTZ(5FX)2#Beny9d zx24X^lpICC)Z0_4kPy zLZy6pqhl)!dpL8arDYkve1-`{;MTEh!7VNAf>{Zoh|Q6Y#u?Sjf$b=KDMG4cL};kt z;{%gR#^$zH;cn$m)kHIW1C7R{M9Rx`Ub)^Ey>xMIU1=1ct`>q#! zZ9V$+bL7&k>yAAbu-S{a;;Q{oX4yjj>Q*UgmqD~`J7RA1_3Z;{_J>pFsKyTpX6_p2Ihf$-#YSUwJA4AX|pI{{xsHTYOJGUj2-wv z`Xd=TBk`m{yY1-zv}^YNOz&?T|B#!?k(Ee{?nENfJbKHcZhSrpZPT1TfN^Xvu?>dj~zwrI-y#Ijfab3^r@qS&e$Mv{~ z_eQ&lJTPIDTpBS2B_%YzdvHxu3N=t zSL(8fT=eXKPxKJa!(h>rMMR85Ln%GK{k&p5;6z-C)C5+v;Ei3Q+mb$FvNv;Pk3D>y~g$c5U-__T&%NBLmhbH zjmOSsvA-dAyC!@_)z*?D$G?UG1ca?aYGJ1wnbJGX7>2 z$Ug{sEMeH-RAyS-Pgd_r#?(B7%-~3qeZ!&Xtkif-N9xL@z!#+m^TnkWI<2B{!7KmH z>?1^A*fY!dGa6T_mcPnQ?sLkA;pofCehURTcimL=_^kp|=)H*ycvWCn+sQi&HL$8SWEg()4x3}4?T&=ct8?zyo&5FHTkYdV z1V>QM716>N{nMqE zow1tz8bU66^9?oLZ2JXuYhlMT-!jt8+N^xhD<4kq;&Wza*sU8e@5QR&X(g+Lq`r$7 z{>uw47&FmDJbt9S@`hvON^TIg!ntP7V^ge^nygb3AsskeG(s4*idZdH`>I|;mi}c^ zsNRu`1)2|;1AyM#V>`8a(d}-`90?gq@C2ot72<0N`6*B#O>X=e@mr4>dx*+>EO}Y$ zCp|?O%WoX(8*{cd$0~!A3G0dO1sm*@$(ALqacxwyCS<^V*2jS2tzj$qdOk0{Qje#= z8Y!wSfjPYq_*AVV>#<(xNP#hxxH(PL{5LS;R_5r-QX{=HU@Sqn(ywse@ej!(@nzqh z3oKuwk@L1z`WxLj<*A=GuB4yH?f+|HCW4Qs8vw_!D^v)RuWJ{^cdy2-t+E%R{uHYN zk%x<#7d7=|?e-7EpEl zyptz;la#@*ldZrgXubDsMB?a=)XXPxUdAU7sSz}EzE^XuN0fmcX~3KLJqWGJALG8> zdR4gmyvt2P9PsmZeL?0ooniSJ?c8l!+x@(~mJzidr8Xu-Wo7exst^jU7<60U;-GRq z{CbnHApwzZC;N$q=%6cmG#$$>K?|hY^em@Aqpq%Ez^GE6z0uY5`lQX?Yi!KOQ*JGc z92DO`BXV(=CDdDrO&Jb~OKig2=n<_e9U-zXSLs12N>OM&|D`cpr$iNKKBxi!Dkr=i zyv|YV{M5$B2GBqbp8lVHra(zjcV!9Mh}`tWlt7HDs$(KW@$-$VZ!UmqJF#Ak?P0HA zMpfXP%s>C~_ZPpf`@2XLXZBhdCgHymAFABn2(i7L6u2PK3xk`RKhI6hn6hSXr#6}&tIGLjQBc(rjCNS8|^QIeWztCZ@5XXzRTisORM2+Uiu@F zj;O}tr1_W6AG79#PP)cH?@e;;R!Zv$qkxEZ+}gV_2cnJ}Zm7UvK(o`(tn-?YF~;qx zWGD)0#V9hq=|*LEqvR83@cWho-pu_otCsBGAuUP?AOBt592kX*3}y)VI_+#G@V!{Q zR?@-Zt17qw5AiicpW2hbJ>Z!bh@flO4?ShDDh=S`*!=9Em5nnLXxAw-v=N#}2FpSh6H*LK>x2V+6Vtg#L|x89cQNZ%a|~_f ztl!J%aPyZ~nD8Ed?=QsPjds{^g`I0EKf?544v8rw=zt}&V&crQE}l1D#acvsxuZ+6 zH!pYAgS_lz?OvxvVJtrru+kMFN=|Fm8x2^;gA&a$|0FRsDsx;y65+;!MK3&IAii#V zZWTUM5s%bGy=9Qx($=8~9GWI6$k28VgT=_1>s*)?ISgamZ4RZGS7WxL$O1wX{-J@x zLFD{j@75jQQh)zd0W^3z{Q+Uf{_vy&mCVO;v~*#-u-o~IB&e~hkuFg?01`t1p78O5 zn9_;(s?&1f&HK7*0Mpcza;OAOJ0AceG}0}B5}1T8*yIILicR@|6r8IFIUb-fciuD6 zeqceFG2rHy&=V)%Ox5>3LwpeTn+J(3;w86(@!a)77hYu*GH5}}pfwo9n?oHvHr0XL zAstB8i43~!j-;Q=9%i@qH(GcON*qH=@$mtaMz#a;&bk<(rE^VA#D!W4C2TxHC_dB4 zvDku=_jY1pVvs(HYaPM(W)6$H!p0Q|4Ar&%DvX*31{J_JgbbD;y*a2rb~PmUZ@ z^DF8*?@5)ine+&>x_7I`L+!V;P?zsU2fw&lTrUpg%T1QvYU|TmejK0CC6Wi*sCn6? zCT69p<4FdnbUD`7&1gN?7_7g&Lt+JFomMZ~FwJt69(k^Z-9bgjLT0@y6CAD${JG_B=+nA}WIc>;c3*EqRbUtmkcB{|#?q=`Xk15KXwyYi9TPsuaCHQUj zW{3M;D=cr;FV6SY^PL(aMA^B!B&U4)Ig+*{iBXYBgWFq&HGO(iM8=wfEeXm^#t$~9 z&uwcLJRbGhy1i#qS?lxj5iOD}1`~|Y`E_LqvADD}pgHYrv?1CGQcZ#rHZ^76aWlDM z5c?>l@DSzIV6#}V;6$_Xxk;dTczca71`ewCsHU#x-4kjchQr|_vv%rPngqd!I-2TT z_TI`mJJV$N)^lpN`q)GDFyQhMT|P28{h{MGd+Xu86zBd1?Vcjg(^q+XUJHEn;Py;L z()RMR`|9DqIn?KNL4gc%vv504@I^-g`1k!w;Qv8jGId*yS@&gMV`= (gun_id + 1) and level_control.current_gun_index != gun_id: - gun.anim_player.play("swap_out") - level_control.gun_spawn(gun_id) - else: - level_control.gun_spawn(gun_id) + gun.anim_player.play("swap_out") + level_control.gun_spawn(gun_id) func enemy_hit(): var hitmarker_spawn = hitmarker.instantiate() diff --git a/scripts/revolver_1.gd b/scripts/revolver_1.gd index 7b04f8f..74455dd 100644 --- a/scripts/revolver_1.gd +++ b/scripts/revolver_1.gd @@ -8,6 +8,7 @@ var cycle_count @export_group("Gun Feel") @export var gun_name : String +@export var gun_icon : Texture2D @export_enum("Auto", "Single", "Burst") var fire_mode: int @export var fov_zoom_amt = .98 @export var ads : bool = false diff --git a/scripts/rocket_launcher.gd b/scripts/rocket_launcher.gd index b748cdd..73cad5b 100644 --- a/scripts/rocket_launcher.gd +++ b/scripts/rocket_launcher.gd @@ -9,6 +9,7 @@ var ads = false @export_group("Gun Feel") @export var gun_name : String +@export var gun_icon : Texture2D @export_enum("Auto", "Single", "Burst") var fire_mode: int @export var fov_zoom_amt = .98 @export var recoil_amount : Vector3 = Vector3(.2,0,0) diff --git a/scripts/signal_bus.gd b/scripts/signal_bus.gd index e9de7dd..1cf2de1 100644 --- a/scripts/signal_bus.gd +++ b/scripts/signal_bus.gd @@ -8,3 +8,4 @@ signal king_killed() signal enemy_count_changed() signal game_loaded() signal player_hit() +signal weapon_list_changed() diff --git a/scripts/texture_catcher.gd b/scripts/texture_catcher.gd new file mode 100644 index 0000000..b5bf03a --- /dev/null +++ b/scripts/texture_catcher.gd @@ -0,0 +1,22 @@ +@tool +extends Node3D + +@onready var sub_viewport: SubViewport = $CAPTURE/SubViewport +@onready var snapshot_model: Node3D = $CAPTURE/SubViewport/snapshotModel + +@export var take_snapshot : bool = false + +# Called when the node enters the scene tree for the first time. +func _ready() -> void: + pass # Replace with function body. + + +# Called every frame. 'delta' is the elapsed time since the previous frame. +func _process(delta: float) -> void: + if take_snapshot: + var snapshot_name = snapshot_model.get_child(0).get_name() + await get_tree().create_timer(.5).timeout + var img = sub_viewport.get_viewport().get_texture().get_image() + var image_path = "assets/Textures/ObjectTextures/%s.png" % snapshot_name + img.save_png(image_path) + take_snapshot = false diff --git a/scripts/trackerGun.gd b/scripts/trackerGun.gd index f1e6581..04d6376 100644 --- a/scripts/trackerGun.gd +++ b/scripts/trackerGun.gd @@ -3,6 +3,7 @@ extends Node3D @export_group("Gun Feel") @export var gun_name : String +@export var gun_icon : Texture2D @export_enum("Auto", "Single", "Burst") var fire_mode: int @export var hitscan_enabled : bool = false @export var ads : bool = false diff --git a/scripts/weapon_pickup.gd b/scripts/weapon_pickup.gd index 1ebc78d..93ab988 100644 --- a/scripts/weapon_pickup.gd +++ b/scripts/weapon_pickup.gd @@ -32,6 +32,7 @@ func picked_up(): if level_control.player.gun != null: level_control.player.gun.anim_player.play("swap_out") level_control.gun_spawn(weapon_id) + SignalBus.emit_signal("weapon_list_changed") queue_free() func save(): diff --git a/scripts/weapon_select.gd b/scripts/weapon_select.gd new file mode 100644 index 0000000..42ff4d3 --- /dev/null +++ b/scripts/weapon_select.gd @@ -0,0 +1,103 @@ +#@tool +extends Control + +@export var outer_radius : int = 256 +@export var inner_radius : int = 256 +@export var line_width : int = 4 + +var options = [] + +@onready var level_control = get_tree().current_scene + +const bkg_color : Color = Color(1, 1, 1, .5) +const line_color : Color = Color(1,1,1) +const select_color = Color(1, 1, 1, .5) +const IMAGE_SIZE = Vector2(512,512) + + +var selection + +func close(): + hide() + return selection + +# Called when the node enters the scene tree for the first time. +func _ready() -> void: + update_weapon_list() + SignalBus.weapon_list_changed.connect(update_weapon_list) + + +# Called every frame. 'delta' is the elapsed time since the previous frame. +func _process(delta: float) -> void: + + var mouse_pos = get_local_mouse_position() + var mouse_radius = mouse_pos.length() + + if mouse_radius < inner_radius: + selection = null + else: + var mouse_rads = fposmod(mouse_pos.angle() * -1, TAU) + selection = ceil((mouse_rads / TAU) * (len(options)+1)) + + + + queue_redraw() + +func _draw(): + var offset = IMAGE_SIZE/ -2 + + if selection == null: + draw_circle(Vector2.ZERO,inner_radius,select_color) + + + draw_circle(Vector2.ZERO, outer_radius, bkg_color) + draw_arc(Vector2.ZERO,inner_radius,0, TAU, 128,line_color,line_width,true) + + if len(options) >= 1: + + # draw separator lines + for i in range(len(options)): + var rads = TAU * i / (len(options)) + var point = Vector2.from_angle(rads) + draw_line( + point * inner_radius, + point * outer_radius, + line_color, + line_width, + true + ) + + for i in range(0,len(options)): + var start_rads = (TAU * (i-1)) / (len(options)) + var end_rads = (TAU * i) / (len(options)) + var mid_rads = (start_rads + end_rads)/2.0 * -1 + var radius_mid = (inner_radius + outer_radius) / 2 + + var draw_pos = radius_mid * Vector2.from_angle(mid_rads) + offset + + var object = options[i].instantiate() + var texture = object.gun_icon + + if selection == i: + var points_per_arc = 32 + var points_inner = PackedVector2Array() + var points_outer = PackedVector2Array() + + for j in range(points_per_arc + 1): + var angle = start_rads + j * (end_rads - start_rads) / points_per_arc + points_inner.append(inner_radius * Vector2.from_angle(TAU-angle)) + points_outer.append(outer_radius * Vector2.from_angle(TAU-angle)) + + points_outer.reverse() + draw_polygon( + points_inner + points_outer, + PackedColorArray([select_color]) + ) + + draw_texture( + texture, + Vector2(draw_pos) + ) + +func update_weapon_list(): + options = level_control.held_guns