From 283e3cbb5ad9e3e36079c2afa6276fb0676d56da Mon Sep 17 00:00:00 2001 From: vaporvee Date: Wed, 15 Oct 2025 00:18:23 +0200 Subject: [PATCH] rendering fixes and menu --- project.godot | 16 ++- scenes/autoloads/event_manager.tscn | 15 +++ scenes/filter/pixelize.tscn | 22 ++++ scenes/levels/hood.tscn | 99 ++++++++--------- scenes/menus/main_menu.tscn | 35 ++++++ scenes/menus/profile_creator.tscn | 12 ++ scenes/player.tscn | 8 +- scripts/autoloads/event_manager.gd | 1 - scripts/autoloads/nodes/event_manager.gd | 6 + .../{ => nodes}/event_manager.gd.uid | 0 scripts/menus/main_menu.gd | 6 + scripts/menus/main_menu.gd.uid | 1 + scripts/menus/profile_creator.gd | 1 + scripts/menus/profile_creator.gd.uid | 1 + scripts/player.gd | 16 +-- scripts/resources/profile.gd | 6 + scripts/resources/profile.gd.uid | 1 + shaders/pixelate.gdshader | 51 +++++++++ shaders/pixelate.gdshader.uid | 1 + shaders/quantize.gdshaderinc | 104 ++++++++++++++++++ shaders/quantize.gdshaderinc.uid | 1 + 21 files changed, 338 insertions(+), 65 deletions(-) create mode 100644 scenes/autoloads/event_manager.tscn create mode 100644 scenes/filter/pixelize.tscn create mode 100644 scenes/menus/main_menu.tscn create mode 100644 scenes/menus/profile_creator.tscn delete mode 100644 scripts/autoloads/event_manager.gd create mode 100644 scripts/autoloads/nodes/event_manager.gd rename scripts/autoloads/{ => nodes}/event_manager.gd.uid (100%) create mode 100644 scripts/menus/main_menu.gd create mode 100644 scripts/menus/main_menu.gd.uid create mode 100644 scripts/menus/profile_creator.gd create mode 100644 scripts/menus/profile_creator.gd.uid create mode 100644 scripts/resources/profile.gd create mode 100644 scripts/resources/profile.gd.uid create mode 100644 shaders/pixelate.gdshader create mode 100644 shaders/pixelate.gdshader.uid create mode 100644 shaders/quantize.gdshaderinc create mode 100644 shaders/quantize.gdshaderinc.uid diff --git a/project.godot b/project.godot index f84c3fa..34b4194 100644 --- a/project.godot +++ b/project.godot @@ -11,7 +11,7 @@ config_version=5 [application] config/name="hood" -run/main_scene="uid://clnb1eshis30m" +run/main_scene="uid://dgq21ggr3br2g" run/print_header=false config/features=PackedStringArray("4.5", "Forward Plus") boot_splash/bg_color=Color(0, 0, 0, 1) @@ -24,13 +24,18 @@ config/icon="res://icon.svg" WindowManager="*res://scripts/autoloads/windowman.gd" DialogueManager="*res://addons/dialogue_manager/dialogue_manager.gd" -EventManager="*res://scripts/autoloads/event_manager.gd" Save="*res://scripts/autoloads/save.gd" +EventManager="*res://scenes/autoloads/event_manager.tscn" +Pixelize="*res://scenes/filter/pixelize.tscn" [display] -window/stretch/mode="canvas_items" -window/stretch/scale=3.5 +window/size/viewport_width=360 +window/size/viewport_height=200 +window/size/window_width_override=1152 +window/size/window_height_override=640 +window/stretch/mode="viewport" +window/stretch/scale_mode="integer" display_server/driver.linuxbsd="wayland" window/size/mode.release=4 @@ -92,6 +97,7 @@ escape={ [physics] +2d/run_on_separate_thread=true common/physics_interpolation=true [rendering] @@ -102,4 +108,6 @@ anti_aliasing/quality/msaa_2d=3 anti_aliasing/quality/screen_space_aa=2 anti_aliasing/quality/use_taa=true anti_aliasing/quality/use_debanding=true +2d/snap/snap_2d_transforms_to_pixel=true +2d/snap/snap_2d_vertices_to_pixel=true environment/defaults/default_clear_color.release=Color(0, 0, 0, 1) diff --git a/scenes/autoloads/event_manager.tscn b/scenes/autoloads/event_manager.tscn new file mode 100644 index 0000000..e2b5cf2 --- /dev/null +++ b/scenes/autoloads/event_manager.tscn @@ -0,0 +1,15 @@ +[gd_scene load_steps=2 format=3 uid="uid://cjbbslcx6vjjy"] + +[ext_resource type="Script" uid="uid://b08q3lqbuoolb" path="res://scripts/autoloads/nodes/event_manager.gd" id="1_xplee"] + +[node name="EventManager" type="CanvasLayer"] +script = ExtResource("1_xplee") + +[node name="ColorRect" type="ColorRect" parent="."] +self_modulate = Color(1, 1, 1, 0) +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +color = Color(0, 0, 0, 1) diff --git a/scenes/filter/pixelize.tscn b/scenes/filter/pixelize.tscn new file mode 100644 index 0000000..3f4d2c6 --- /dev/null +++ b/scenes/filter/pixelize.tscn @@ -0,0 +1,22 @@ +[gd_scene load_steps=3 format=3 uid="uid://dthcpgxk5b74y"] + +[ext_resource type="Shader" uid="uid://dgstw8crggyti" path="res://shaders/pixelate.gdshader" id="1_tt4dp"] + +[sub_resource type="ShaderMaterial" id="ShaderMaterial_83vy4"] +shader = ExtResource("1_tt4dp") +shader_parameter/texture_mode = 1 +shader_parameter/quantize_size = 1 +shader_parameter/snap_to_world = false +shader_parameter/limit_subpixels = true + +[node name="Pixelize" type="CanvasLayer"] + +[node name="ColorRect" type="ColorRect" parent="."] +material = SubResource("ShaderMaterial_83vy4") +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +mouse_filter = 1 +metadata/_edit_lock_ = true diff --git a/scenes/levels/hood.tscn b/scenes/levels/hood.tscn index a653af3..89a3745 100644 --- a/scenes/levels/hood.tscn +++ b/scenes/levels/hood.tscn @@ -8,69 +8,69 @@ texture = ExtResource("1_74em3") texture_region_size = Vector2i(32, 32) 0:0/0 = 0 0:0/0/terrain_set = 0 -0:0/0/terrain = 1 +0:0/0/terrain = 0 0:0/0/terrains_peering_bit/right_side = 0 0:0/0/terrains_peering_bit/bottom_right_corner = 0 -0:0/0/terrains_peering_bit/bottom_side = 1 +0:0/0/terrains_peering_bit/bottom_side = 0 0:0/0/terrains_peering_bit/bottom_left_corner = 1 -0:0/0/terrains_peering_bit/left_side = 1 +0:0/0/terrains_peering_bit/left_side = 0 0:0/0/terrains_peering_bit/top_left_corner = 0 0:0/0/terrains_peering_bit/top_side = 0 0:0/0/terrains_peering_bit/top_right_corner = 0 1:0/0 = 0 1:0/0/terrain_set = 0 -1:0/0/terrain = 1 +1:0/0/terrain = 0 1:0/0/terrains_peering_bit/right_side = 1 1:0/0/terrains_peering_bit/bottom_right_corner = 1 -1:0/0/terrains_peering_bit/bottom_side = 1 +1:0/0/terrains_peering_bit/bottom_side = 0 1:0/0/terrains_peering_bit/bottom_left_corner = 0 1:0/0/terrains_peering_bit/left_side = 0 1:0/0/terrains_peering_bit/top_left_corner = 0 -1:0/0/terrains_peering_bit/top_side = 1 +1:0/0/terrains_peering_bit/top_side = 0 1:0/0/terrains_peering_bit/top_right_corner = 1 2:0/0 = 0 2:0/0/terrain_set = 0 -2:0/0/terrain = 1 -2:0/0/terrains_peering_bit/right_side = 1 +2:0/0/terrain = 0 +2:0/0/terrains_peering_bit/right_side = 0 2:0/0/terrains_peering_bit/bottom_right_corner = 1 2:0/0/terrains_peering_bit/bottom_side = 1 2:0/0/terrains_peering_bit/bottom_left_corner = 1 2:0/0/terrains_peering_bit/left_side = 1 2:0/0/terrains_peering_bit/top_left_corner = 1 -2:0/0/terrains_peering_bit/top_side = 1 +2:0/0/terrains_peering_bit/top_side = 0 2:0/0/terrains_peering_bit/top_right_corner = 0 3:0/0 = 0 3:0/0/terrain_set = 0 -3:0/0/terrain = 1 -3:0/0/terrains_peering_bit/right_side = 1 +3:0/0/terrain = 0 +3:0/0/terrains_peering_bit/right_side = 0 3:0/0/terrains_peering_bit/bottom_right_corner = 1 3:0/0/terrains_peering_bit/bottom_side = 1 3:0/0/terrains_peering_bit/bottom_left_corner = 1 -3:0/0/terrains_peering_bit/left_side = 1 +3:0/0/terrains_peering_bit/left_side = 0 3:0/0/terrains_peering_bit/top_left_corner = 0 3:0/0/terrains_peering_bit/top_side = 0 3:0/0/terrains_peering_bit/top_right_corner = 0 0:1/0 = 0 0:1/0/terrain_set = 0 -0:1/0/terrain = 1 -0:1/0/terrains_peering_bit/right_side = 1 +0:1/0/terrain = 0 +0:1/0/terrains_peering_bit/right_side = 0 0:1/0/terrains_peering_bit/bottom_right_corner = 1 -0:1/0/terrains_peering_bit/bottom_side = 1 +0:1/0/terrains_peering_bit/bottom_side = 0 0:1/0/terrains_peering_bit/bottom_left_corner = 0 -0:1/0/terrains_peering_bit/left_side = 1 +0:1/0/terrains_peering_bit/left_side = 0 0:1/0/terrains_peering_bit/top_left_corner = 1 -0:1/0/terrains_peering_bit/top_side = 1 +0:1/0/terrains_peering_bit/top_side = 0 0:1/0/terrains_peering_bit/top_right_corner = 0 1:1/0 = 0 1:1/0/terrain_set = 0 -1:1/0/terrain = 1 +1:1/0/terrain = 0 1:1/0/terrains_peering_bit/right_side = 1 1:1/0/terrains_peering_bit/bottom_right_corner = 1 1:1/0/terrains_peering_bit/bottom_side = 1 1:1/0/terrains_peering_bit/bottom_left_corner = 1 -1:1/0/terrains_peering_bit/left_side = 1 +1:1/0/terrains_peering_bit/left_side = 0 1:1/0/terrains_peering_bit/top_left_corner = 0 -1:1/0/terrains_peering_bit/top_side = 1 +1:1/0/terrains_peering_bit/top_side = 0 1:1/0/terrains_peering_bit/top_right_corner = 1 2:1/0 = 0 2:1/0/terrain_set = 0 @@ -85,10 +85,10 @@ texture_region_size = Vector2i(32, 32) 2:1/0/terrains_peering_bit/top_right_corner = 1 3:1/0 = 0 3:1/0/terrain_set = 0 -3:1/0/terrain = 1 -3:1/0/terrains_peering_bit/right_side = 1 +3:1/0/terrain = 0 +3:1/0/terrains_peering_bit/right_side = 0 3:1/0/terrains_peering_bit/bottom_right_corner = 0 -3:1/0/terrains_peering_bit/bottom_side = 1 +3:1/0/terrains_peering_bit/bottom_side = 0 3:1/0/terrains_peering_bit/bottom_left_corner = 1 3:1/0/terrains_peering_bit/left_side = 1 3:1/0/terrains_peering_bit/top_left_corner = 1 @@ -96,47 +96,47 @@ texture_region_size = Vector2i(32, 32) 3:1/0/terrains_peering_bit/top_right_corner = 1 0:2/0 = 0 0:2/0/terrain_set = 0 -0:2/0/terrain = 1 -0:2/0/terrains_peering_bit/right_side = 1 +0:2/0/terrain = 0 +0:2/0/terrains_peering_bit/right_side = 0 0:2/0/terrains_peering_bit/bottom_right_corner = 0 0:2/0/terrains_peering_bit/bottom_side = 0 0:2/0/terrains_peering_bit/bottom_left_corner = 0 0:2/0/terrains_peering_bit/left_side = 0 0:2/0/terrains_peering_bit/top_left_corner = 0 -0:2/0/terrains_peering_bit/top_side = 1 +0:2/0/terrains_peering_bit/top_side = 0 0:2/0/terrains_peering_bit/top_right_corner = 1 1:2/0 = 0 1:2/0/terrain_set = 0 -1:2/0/terrain = 1 -1:2/0/terrains_peering_bit/right_side = 1 +1:2/0/terrain = 0 +1:2/0/terrains_peering_bit/right_side = 0 1:2/0/terrains_peering_bit/bottom_right_corner = 0 1:2/0/terrains_peering_bit/bottom_side = 0 1:2/0/terrains_peering_bit/bottom_left_corner = 0 -1:2/0/terrains_peering_bit/left_side = 1 +1:2/0/terrains_peering_bit/left_side = 0 1:2/0/terrains_peering_bit/top_left_corner = 1 1:2/0/terrains_peering_bit/top_side = 1 1:2/0/terrains_peering_bit/top_right_corner = 1 2:2/0 = 0 2:2/0/terrain_set = 0 -2:2/0/terrain = 1 +2:2/0/terrain = 0 2:2/0/terrains_peering_bit/right_side = 1 2:2/0/terrains_peering_bit/bottom_right_corner = 1 -2:2/0/terrains_peering_bit/bottom_side = 1 +2:2/0/terrains_peering_bit/bottom_side = 0 2:2/0/terrains_peering_bit/bottom_left_corner = 0 -2:2/0/terrains_peering_bit/left_side = 1 +2:2/0/terrains_peering_bit/left_side = 0 2:2/0/terrains_peering_bit/top_left_corner = 1 2:2/0/terrains_peering_bit/top_side = 1 2:2/0/terrains_peering_bit/top_right_corner = 1 3:2/0 = 0 3:2/0/terrain_set = 0 -3:2/0/terrain = 1 +3:2/0/terrain = 0 3:2/0/terrains_peering_bit/right_side = 0 3:2/0/terrains_peering_bit/bottom_right_corner = 0 -3:2/0/terrains_peering_bit/bottom_side = 1 +3:2/0/terrains_peering_bit/bottom_side = 0 3:2/0/terrains_peering_bit/bottom_left_corner = 1 3:2/0/terrains_peering_bit/left_side = 1 3:2/0/terrains_peering_bit/top_left_corner = 1 -3:2/0/terrains_peering_bit/top_side = 1 +3:2/0/terrains_peering_bit/top_side = 0 3:2/0/terrains_peering_bit/top_right_corner = 0 0:3/0 = 0 0:3/0/terrain_set = 0 @@ -151,10 +151,10 @@ texture_region_size = Vector2i(32, 32) 0:3/0/terrains_peering_bit/top_right_corner = 0 1:3/0 = 0 1:3/0/terrain_set = 0 -1:3/0/terrain = 1 -1:3/0/terrains_peering_bit/right_side = 1 +1:3/0/terrain = 0 +1:3/0/terrains_peering_bit/right_side = 0 1:3/0/terrains_peering_bit/bottom_right_corner = 1 -1:3/0/terrains_peering_bit/bottom_side = 1 +1:3/0/terrains_peering_bit/bottom_side = 0 1:3/0/terrains_peering_bit/bottom_left_corner = 0 1:3/0/terrains_peering_bit/left_side = 0 1:3/0/terrains_peering_bit/top_left_corner = 0 @@ -162,32 +162,32 @@ texture_region_size = Vector2i(32, 32) 1:3/0/terrains_peering_bit/top_right_corner = 0 2:3/0 = 0 2:3/0/terrain_set = 0 -2:3/0/terrain = 1 -2:3/0/terrains_peering_bit/right_side = 1 +2:3/0/terrain = 0 +2:3/0/terrains_peering_bit/right_side = 0 2:3/0/terrains_peering_bit/bottom_right_corner = 0 -2:3/0/terrains_peering_bit/bottom_side = 1 +2:3/0/terrains_peering_bit/bottom_side = 0 2:3/0/terrains_peering_bit/bottom_left_corner = 1 -2:3/0/terrains_peering_bit/left_side = 1 +2:3/0/terrains_peering_bit/left_side = 0 2:3/0/terrains_peering_bit/top_left_corner = 0 -2:3/0/terrains_peering_bit/top_side = 1 +2:3/0/terrains_peering_bit/top_side = 0 2:3/0/terrains_peering_bit/top_right_corner = 1 3:3/0 = 0 3:3/0/terrain_set = 0 -3:3/0/terrain = 1 +3:3/0/terrain = 0 3:3/0/terrains_peering_bit/right_side = 0 3:3/0/terrains_peering_bit/bottom_right_corner = 0 3:3/0/terrains_peering_bit/bottom_side = 0 3:3/0/terrains_peering_bit/bottom_left_corner = 0 -3:3/0/terrains_peering_bit/left_side = 1 +3:3/0/terrains_peering_bit/left_side = 0 3:3/0/terrains_peering_bit/top_left_corner = 1 -3:3/0/terrains_peering_bit/top_side = 1 +3:3/0/terrains_peering_bit/top_side = 0 3:3/0/terrains_peering_bit/top_right_corner = 0 [sub_resource type="TileSet" id="TileSet_ge1l5"] tile_size = Vector2i(32, 32) terrain_set_0/mode = 0 terrain_set_0/terrain_0/name = "Grass" -terrain_set_0/terrain_0/color = Color(0, 0.53558326, 0.2235117, 1) +terrain_set_0/terrain_0/color = Color(0, 0.5365651, 0.20230255, 1) terrain_set_0/terrain_1/name = "Dirt" terrain_set_0/terrain_1/color = Color(0.5, 0.34375, 0.25, 1) sources/2 = SubResource("TileSetAtlasSource_1r5ec") @@ -195,9 +195,10 @@ sources/2 = SubResource("TileSetAtlasSource_1r5ec") [node name="Hood" type="Node2D"] [node name="TileMapLayer" type="TileMapLayer" parent="."] -tile_map_data = PackedByteArray("AAAAAAAAAgAAAAMAAAAMAAgAAgAAAAMAAAAMAAcAAgAAAAMAAAAMAAYAAgAAAAMAAAAMAAUAAgABAAIAAAAMAAQAAgADAAAAAAAMAAMAAgAAAAMAAAAMAAIAAgAAAAMAAAAMAAEAAgAAAAMAAAAMAAAAAgAAAAMAAAALAAgAAgAAAAMAAAALAAcAAgAAAAMAAAALAAYAAgAAAAMAAAALAAUAAgABAAIAAAALAAQAAgADAAAAAAALAAMAAgAAAAMAAAALAAIAAgAAAAMAAAALAAEAAgAAAAMAAAALAAAAAgAAAAMAAAAKAAgAAgAAAAMAAAAKAAcAAgAAAAMAAAAKAAYAAgAAAAMAAAAKAAUAAgABAAIAAAAKAAQAAgADAAAAAAAKAAMAAgAAAAMAAAAKAAIAAgAAAAMAAAAKAAEAAgAAAAMAAAAKAAAAAgAAAAMAAAAJAAgAAgAAAAMAAAAJAAcAAgAAAAMAAAAJAAYAAgAAAAMAAAAJAAUAAgABAAIAAAAJAAQAAgADAAAAAAAJAAMAAgAAAAMAAAAJAAIAAgAAAAMAAAAJAAEAAgAAAAMAAAAJAAAAAgAAAAMAAAAIAAgAAgAAAAMAAAAIAAcAAgAAAAMAAAAIAAYAAgADAAMAAAAIAAUAAgADAAEAAAAIAAQAAgACAAAAAAAIAAMAAgADAAIAAAAIAAIAAgAAAAAAAAAIAAEAAgAAAAMAAAAIAAAAAgAAAAMAAAAHAAgAAgAAAAMAAAAHAAcAAgAAAAMAAAAHAAYAAgABAAIAAAAHAAUAAgABAAEAAAAHAAEAAgAAAAMAAAAHAAAAAgAAAAMAAAAGAAgAAgAAAAMAAAAGAAcAAgAAAAMAAAAGAAMAAgAAAAMAAAAGAAIAAgAAAAMAAAAGAAEAAgAAAAMAAAAGAAAAAgAAAAMAAAAFAAgAAgADAAMAAAAFAAcAAgADAAIAAAAFAAYAAgADAAEAAAAFAAUAAgADAAAAAAAFAAQAAgAAAAMAAAAFAAMAAgAAAAMAAAAFAAIAAgAAAAMAAAAFAAEAAgAAAAMAAAAFAAAAAgAAAAMAAAAEAAgAAgAAAAMAAAAEAAcAAgAAAAMAAAAEAAYAAgABAAIAAAAEAAUAAgACAAAAAAAEAAQAAgADAAIAAAAEAAMAAgADAAIAAAAEAAIAAgADAAIAAAAEAAEAAgADAAIAAAAEAAAAAgAAAAAAAAADAAgAAgAAAAMAAAADAAcAAgAAAAMAAAADAAYAAgAAAAIAAAADAAUAAgABAAAAAAADAAQAAgACAAIAAAADAAMAAgABAAAAAAADAAIAAgABAAAAAAADAAEAAgABAAAAAAADAAAAAgABAAMAAAACAAgAAgAAAAMAAAACAAcAAgAAAAMAAAACAAYAAgAAAAMAAAACAAUAAgAAAAMAAAACAAQAAgABAAIAAAACAAMAAgAAAAMAAAACAAIAAgAAAAMAAAACAAEAAgAAAAMAAAACAAAAAgAAAAMAAAABAAgAAgAAAAMAAAABAAcAAgAAAAMAAAABAAYAAgAAAAMAAAABAAUAAgAAAAMAAAABAAQAAgABAAIAAAABAAMAAgAAAAMAAAABAAIAAgAAAAMAAAABAAEAAgAAAAMAAAABAAAAAgAAAAMAAAAAAAgAAgAAAAMAAAAAAAcAAgAAAAMAAAAAAAYAAgAAAAMAAAAAAAUAAgAAAAMAAAAAAAQAAgAAAAIAAAAAAAMAAgAAAAMAAAAAAAIAAgAAAAMAAAAAAAEAAgAAAAMAAAAAAP//AgAAAAMAAAABAP//AgAAAAMAAAACAP//AgAAAAMAAAADAP//AgAAAAMAAAAEAP//AgAAAAMAAAAFAP//AgAAAAMAAAAGAP//AgAAAAMAAAAHAP//AgAAAAMAAAAIAP//AgAAAAMAAAAJAP//AgAAAAMAAAAKAP//AgAAAAMAAAALAP//AgAAAAMAAAAMAP//AgAAAAMAAAANAAIAAgAAAAMAAAANAAEAAgAAAAMAAAANAAAAAgAAAAMAAAANAP//AgAAAAMAAAANAAMAAgAAAAMAAAANAAQAAgAAAAAAAAANAAUAAgADAAMAAAANAAYAAgAAAAMAAAANAAcAAgAAAAMAAAANAAgAAgAAAAMAAAANAAkAAgAAAAMAAAAMAAkAAgAAAAMAAAALAAkAAgAAAAMAAAAKAAkAAgAAAAMAAAAJAAkAAgAAAAMAAAAIAAkAAgAAAAMAAAAHAAkAAgAAAAMAAAAGAAkAAgAAAAMAAAAFAAkAAgAAAAMAAAAEAAkAAgAAAAMAAAADAAkAAgAAAAMAAAACAAkAAgAAAAMAAAABAAkAAgAAAAMAAAAAAAkAAgAAAAMAAAD//wkAAgAAAAMAAAD//wgAAgAAAAMAAAD//wcAAgAAAAMAAAD//wYAAgAAAAMAAAD//wUAAgAAAAMAAAD//wQAAgAAAAMAAAD//wMAAgAAAAMAAAD//wIAAgAAAAMAAAD//wEAAgAAAAMAAAD//wAAAgAAAAMAAAD/////AgAAAAMAAAAHAAIAAgAAAAMAAAAHAAMAAgAAAAMAAAAHAAQAAgABAAMAAAAGAAQAAgAAAAMAAAAGAAUAAgADAAAAAAAGAAYAAgABAAIAAAA=") +tile_map_data = PackedByteArray("AAAQAAkAAgAAAAMAAAAQAAgAAgAAAAMAAAAQAAcAAgAAAAMAAAAQAAYAAgAAAAMAAAAQAAUAAgAAAAMAAAAQAAQAAgAAAAMAAAAQAAMAAgAAAAMAAAAQAAIAAgAAAAMAAAAQAAEAAgAAAAMAAAAQAAAAAgAAAAMAAAAQAP//AgAAAAMAAAAQAP7/AgAAAAMAAAAPAAkAAgAAAAMAAAAPAAgAAgAAAAMAAAAPAAcAAgAAAAMAAAAPAAYAAgADAAMAAAAPAAUAAgADAAIAAAAPAAQAAgAAAAAAAAAPAAMAAgAAAAMAAAAPAAIAAgAAAAMAAAAPAAEAAgAAAAMAAAAPAAAAAgAAAAMAAAAPAP//AgAAAAMAAAAPAP7/AgAAAAMAAAAOAAkAAgAAAAMAAAAOAAgAAgAAAAMAAAAOAAcAAgAAAAMAAAAOAAYAAgABAAIAAAAOAAUAAgACAAEAAAAOAAQAAgADAAAAAAAOAAMAAgAAAAMAAAAOAAIAAgAAAAMAAAAOAAEAAgAAAAMAAAAOAAAAAgAAAAMAAAAOAP//AgAAAAMAAAAOAP7/AgAAAAMAAAANAAkAAgAAAAMAAAANAAgAAgAAAAMAAAANAAcAAgAAAAMAAAANAAYAAgABAAIAAAANAAUAAgACAAEAAAANAAQAAgADAAAAAAANAAMAAgAAAAMAAAANAAIAAgAAAAMAAAANAAEAAgAAAAMAAAANAAAAAgAAAAMAAAANAP//AgAAAAMAAAANAP7/AgAAAAMAAAAMAAkAAgAAAAMAAAAMAAgAAgAAAAMAAAAMAAcAAgAAAAMAAAAMAAYAAgABAAIAAAAMAAUAAgACAAEAAAAMAAQAAgADAAAAAAAMAAMAAgAAAAMAAAAMAAIAAgAAAAMAAAAMAAEAAgAAAAMAAAAMAAAAAgAAAAMAAAAMAP//AgAAAAMAAAAMAP7/AgAAAAMAAAALAAkAAgAAAAMAAAALAAgAAgAAAAMAAAALAAcAAgAAAAMAAAALAAYAAgABAAIAAAALAAUAAgACAAEAAAALAAQAAgADAAAAAAALAAMAAgAAAAMAAAALAAIAAgAAAAMAAAALAAEAAgAAAAMAAAALAAAAAgAAAAMAAAALAP//AgAAAAMAAAALAP7/AgAAAAMAAAAKAAkAAgAAAAMAAAAKAAgAAgAAAAMAAAAKAAcAAgAAAAMAAAAKAAYAAgABAAIAAAAKAAUAAgACAAEAAAAKAAQAAgACAAAAAAAKAAMAAgADAAIAAAAKAAIAAgAAAAAAAAAKAAEAAgAAAAMAAAAKAAAAAgAAAAMAAAAKAP//AgAAAAMAAAAKAP7/AgAAAAMAAAAJAAkAAgAAAAMAAAAJAAgAAgAAAAMAAAAJAAcAAgAAAAMAAAAJAAYAAgABAAIAAAAJAAUAAgACAAEAAAAJAAQAAgACAAEAAAAJAAMAAgACAAEAAAAJAAIAAgADAAAAAAAJAAEAAgAAAAMAAAAJAAAAAgAAAAMAAAAJAP//AgAAAAMAAAAJAP7/AgAAAAMAAAAIAAkAAgAAAAMAAAAIAAgAAgAAAAMAAAAIAAcAAgAAAAMAAAAIAAYAAgABAAIAAAAIAAUAAgACAAEAAAAIAAQAAgABAAEAAAAIAAMAAgABAAAAAAAIAAIAAgABAAMAAAAIAAEAAgAAAAMAAAAIAAAAAgAAAAMAAAAIAP//AgAAAAMAAAAIAP7/AgAAAAMAAAAHAAkAAgAAAAMAAAAHAAgAAgAAAAMAAAAHAAcAAgAAAAMAAAAHAAYAAgABAAIAAAAHAAUAAgACAAEAAAAHAAQAAgADAAAAAAAHAAMAAgAAAAMAAAAHAAIAAgAAAAMAAAAHAAEAAgAAAAMAAAAHAAAAAgAAAAMAAAAHAP//AgAAAAMAAAAHAP7/AgAAAAMAAAAGAAkAAgAAAAMAAAAGAAgAAgAAAAMAAAAGAAcAAgAAAAMAAAAGAAYAAgABAAIAAAAGAAUAAgACAAEAAAAGAAQAAgADAAAAAAAGAAMAAgAAAAMAAAAGAAIAAgAAAAMAAAAGAAEAAgAAAAMAAAAGAAAAAgAAAAMAAAAGAP//AgAAAAMAAAAGAP7/AgAAAAMAAAAFAAkAAgAAAAMAAAAFAAgAAgAAAAMAAAAFAAcAAgAAAAMAAAAFAAYAAgABAAIAAAAFAAUAAgACAAEAAAAFAAQAAgADAAAAAAAFAAMAAgAAAAMAAAAFAAIAAgAAAAMAAAAFAAEAAgAAAAMAAAAFAAAAAgAAAAMAAAAFAP//AgAAAAMAAAAFAP7/AgAAAAMAAAAEAAkAAgAAAAMAAAAEAAgAAgAAAAMAAAAEAAcAAgAAAAMAAAAEAAYAAgABAAIAAAAEAAUAAgACAAEAAAAEAAQAAgACAAAAAAAEAAMAAgADAAIAAAAEAAIAAgADAAIAAAAEAAEAAgAAAAAAAAAEAAAAAgAAAAMAAAAEAP//AgAAAAMAAAAEAP7/AgAAAAMAAAADAAkAAgAAAAMAAAADAAgAAgAAAAMAAAADAAcAAgAAAAMAAAADAAYAAgABAAIAAAADAAUAAgACAAEAAAADAAQAAgACAAEAAAADAAMAAgACAAEAAAADAAIAAgACAAEAAAADAAEAAgADAAAAAAADAAAAAgAAAAMAAAADAP//AgAAAAMAAAADAP7/AgAAAAMAAAACAAkAAgAAAAMAAAACAAgAAgAAAAMAAAACAAcAAgAAAAMAAAACAAYAAgAAAAIAAAACAAUAAgABAAAAAAACAAQAAgACAAIAAAACAAMAAgACAAEAAAACAAIAAgABAAEAAAACAAEAAgABAAMAAAACAAAAAgAAAAMAAAACAP//AgAAAAMAAAACAP7/AgAAAAMAAAABAAkAAgAAAAMAAAABAAgAAgAAAAMAAAABAAcAAgAAAAMAAAABAAYAAgAAAAMAAAABAAUAAgAAAAMAAAABAAQAAgABAAIAAAABAAMAAgACAAEAAAABAAIAAgADAAAAAAABAAEAAgAAAAMAAAABAAAAAgAAAAMAAAABAP//AgAAAAMAAAABAP7/AgAAAAMAAAAAAAkAAgAAAAMAAAAAAAgAAgAAAAMAAAAAAAcAAgAAAAMAAAAAAAYAAgAAAAMAAAAAAAUAAgAAAAMAAAAAAAQAAgABAAIAAAAAAAMAAgACAAEAAAAAAAIAAgADAAAAAAAAAAEAAgAAAAMAAAAAAAAAAgAAAAMAAAAAAP//AgAAAAMAAAAAAP7/AgAAAAMAAAD//wkAAgAAAAMAAAD//wgAAgAAAAMAAAD//wcAAgAAAAMAAAD//wYAAgAAAAMAAAD//wUAAgAAAAMAAAD//wQAAgABAAIAAAD//wMAAgACAAEAAAD//wIAAgADAAAAAAD//wEAAgAAAAMAAAD//wAAAgAAAAMAAAD/////AgAAAAMAAAD///7/AgAAAAMAAAD+/wkAAgAAAAMAAAD+/wgAAgAAAAMAAAD+/wcAAgAAAAMAAAD+/wYAAgAAAAMAAAD+/wUAAgAAAAMAAAD+/wQAAgAAAAIAAAD+/wMAAgABAAAAAAD+/wIAAgABAAMAAAD+/wEAAgAAAAMAAAD+/wAAAgAAAAMAAAD+////AgAAAAMAAAD+//7/AgAAAAMAAAA=") tile_set = SubResource("TileSet_ge1l5") +metadata/_edit_lock_ = true [node name="Player" parent="." node_paths=PackedStringArray("tilemap") instance=ExtResource("1_ge1l5")] -position = Vector2(128, 76) +position = Vector2(110, 50) tilemap = NodePath("../TileMapLayer") diff --git a/scenes/menus/main_menu.tscn b/scenes/menus/main_menu.tscn new file mode 100644 index 0000000..4e0bdd6 --- /dev/null +++ b/scenes/menus/main_menu.tscn @@ -0,0 +1,35 @@ +[gd_scene load_steps=2 format=3 uid="uid://dgq21ggr3br2g"] + +[ext_resource type="Script" uid="uid://bfgqkpn60hhwj" path="res://scripts/menus/main_menu.gd" id="1_xqga4"] + +[node name="MainMenu" 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_xqga4") + +[node name="VBoxContainer" type="VBoxContainer" parent="."] +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -20.0 +offset_top = -20.0 +offset_right = 20.0 +offset_bottom = 20.0 +grow_horizontal = 2 +grow_vertical = 2 + +[node name="Button" type="Button" parent="VBoxContainer"] +layout_mode = 2 +theme_override_font_sizes/font_size = 8 +text = "Start" + +[node name="MenuSlot" type="CanvasLayer" parent="."] + +[connection signal="pressed" from="VBoxContainer/Button" to="." method="_on_start_button_pressed"] diff --git a/scenes/menus/profile_creator.tscn b/scenes/menus/profile_creator.tscn new file mode 100644 index 0000000..de61dbc --- /dev/null +++ b/scenes/menus/profile_creator.tscn @@ -0,0 +1,12 @@ +[gd_scene load_steps=2 format=3 uid="uid://cd657k2lc3gyc"] + +[ext_resource type="Script" uid="uid://cs1ylnivyrbc2" path="res://scripts/menus/profile_creator.gd" id="1_4xjd5"] + +[node name="ProfileCreator" 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_4xjd5") diff --git a/scenes/player.tscn b/scenes/player.tscn index 37260e3..d66141a 100644 --- a/scenes/player.tscn +++ b/scenes/player.tscn @@ -56,7 +56,7 @@ animations = [{ }], "loop": true, "name": &"down", -"speed": 5.0 +"speed": 6.5 }, { "frames": [{ "duration": 1.0, @@ -73,7 +73,7 @@ animations = [{ }], "loop": true, "name": &"side", -"speed": 5.0 +"speed": 6.0 }, { "frames": [{ "duration": 1.0, @@ -90,7 +90,7 @@ animations = [{ }], "loop": true, "name": &"up", -"speed": 5.0 +"speed": 6.5 }] [sub_resource type="CapsuleShape2D" id="CapsuleShape2D_3vyb7"] @@ -98,9 +98,11 @@ radius = 3.0 height = 14.0 [node name="Player" type="CharacterBody2D"] +motion_mode = 1 script = ExtResource("1_3vyb7") [node name="AnimatedSprite2D" type="AnimatedSprite2D" parent="."] +position = Vector2(-1, -1) sprite_frames = SubResource("SpriteFrames_qhqgy") animation = &"down" diff --git a/scripts/autoloads/event_manager.gd b/scripts/autoloads/event_manager.gd deleted file mode 100644 index 61510e1..0000000 --- a/scripts/autoloads/event_manager.gd +++ /dev/null @@ -1 +0,0 @@ -extends Node diff --git a/scripts/autoloads/nodes/event_manager.gd b/scripts/autoloads/nodes/event_manager.gd new file mode 100644 index 0000000..ae8f308 --- /dev/null +++ b/scripts/autoloads/nodes/event_manager.gd @@ -0,0 +1,6 @@ +extends Node + +var player_free: bool = true + +func transition() -> void: + pass diff --git a/scripts/autoloads/event_manager.gd.uid b/scripts/autoloads/nodes/event_manager.gd.uid similarity index 100% rename from scripts/autoloads/event_manager.gd.uid rename to scripts/autoloads/nodes/event_manager.gd.uid diff --git a/scripts/menus/main_menu.gd b/scripts/menus/main_menu.gd new file mode 100644 index 0000000..3ff1add --- /dev/null +++ b/scripts/menus/main_menu.gd @@ -0,0 +1,6 @@ +extends Control + + + +func _on_start_button_pressed() -> void: + pass # Replace with function body. diff --git a/scripts/menus/main_menu.gd.uid b/scripts/menus/main_menu.gd.uid new file mode 100644 index 0000000..eb449ff --- /dev/null +++ b/scripts/menus/main_menu.gd.uid @@ -0,0 +1 @@ +uid://bfgqkpn60hhwj diff --git a/scripts/menus/profile_creator.gd b/scripts/menus/profile_creator.gd new file mode 100644 index 0000000..e07a0bf --- /dev/null +++ b/scripts/menus/profile_creator.gd @@ -0,0 +1 @@ +extends Control diff --git a/scripts/menus/profile_creator.gd.uid b/scripts/menus/profile_creator.gd.uid new file mode 100644 index 0000000..e3a9dad --- /dev/null +++ b/scripts/menus/profile_creator.gd.uid @@ -0,0 +1 @@ +uid://cs1ylnivyrbc2 diff --git a/scripts/player.gd b/scripts/player.gd index 9a05664..4a93cc8 100644 --- a/scripts/player.gd +++ b/scripts/player.gd @@ -1,6 +1,6 @@ extends CharacterBody2D -const SPEED: int = 500 +const SPEED: int = 800 @onready var animated_sprite: AnimatedSprite2D = $AnimatedSprite2D @onready var cam: Camera2D = $Camera2D @@ -17,19 +17,20 @@ func _ready() -> void: cam.limit_right = used_tilemap_rect.end.x * tilesize cam.limit_bottom = used_tilemap_rect.end.y * tilesize - var x_margin: float = float(tilesize) / 4 - var y_margin: float = float(tilesize) / 2 + var margin: float = float(tilesize) / 4 position_limit_rect = Rect2( - Vector2(cam.limit_left + x_margin, cam.limit_top + y_margin), + Vector2(cam.limit_left + margin, cam.limit_top - margin), Vector2( - (cam.limit_right - x_margin) - (cam.limit_left + x_margin), - (cam.limit_bottom - y_margin) - (cam.limit_top + y_margin) + (cam.limit_right - margin) - (cam.limit_left + margin), + (cam.limit_bottom - margin / 2) - (cam.limit_top + margin / 2) ) ) func _physics_process(delta: float) -> void: - velocity = Input.get_vector("move_left","move_right","move_up","move_down").normalized() * delta * SPEED * 3 + if EventManager.player_free: + velocity = Input.get_vector("move_left","move_right","move_up","move_down").normalized() * delta * SPEED * 3 + move_and_slide() position = position.clamp(position_limit_rect.position, position_limit_rect.end) @@ -45,4 +46,3 @@ func _physics_process(delta: float) -> void: animated_sprite.animation = "down" else: animated_sprite.stop() - diff --git a/scripts/resources/profile.gd b/scripts/resources/profile.gd new file mode 100644 index 0000000..952a9d8 --- /dev/null +++ b/scripts/resources/profile.gd @@ -0,0 +1,6 @@ +class_name Profile +extends Resource + +@export var your_name: String = "Joel" +@export var villain_friend_name: String = "Josh" +@export var stupid_friend_name: String = "Kevin" diff --git a/scripts/resources/profile.gd.uid b/scripts/resources/profile.gd.uid new file mode 100644 index 0000000..38d09b2 --- /dev/null +++ b/scripts/resources/profile.gd.uid @@ -0,0 +1 @@ +uid://sx081r57538w diff --git a/shaders/pixelate.gdshader b/shaders/pixelate.gdshader new file mode 100644 index 0000000..b0884b6 --- /dev/null +++ b/shaders/pixelate.gdshader @@ -0,0 +1,51 @@ +shader_type canvas_item; + +/** +0 = Texture: For use with Sprite2Ds, TextureRects, and Meshes +1 = Screen: For use with ColorRect +*/ +uniform int texture_mode : hint_range(0,1) = 1; + +// This file relies on a quantize shader include file, listed further down. +// The paths must match your file's location. +#include "res://shaders/quantize.gdshaderinc" + +uniform sampler2D SCREEN_TEXTURE : hint_screen_texture, repeat_disable, filter_nearest; + +void vertex() { + float zoom = length(CANVAS_MATRIX[1].xyz); + v_quant_size = getQuantizeSize(zoom); + v_model_matrix = MODEL_MATRIX; + v_vertex = VERTEX; + + if (texture_mode == 0) { + v_alt_matrix = inverse(MODEL_MATRIX); + v_texture_data.xy = 1. / TEXTURE_PIXEL_SIZE; + // Is texture flipped + v_texture_data.zw = max(-sign((UV - 0.5) * VERTEX), 0.); + } else { + v_alt_matrix = SCREEN_MATRIX * CANVAS_MATRIX; + + if (snap_to_world) { + v_alt_matrix = inverse(v_alt_matrix); + } + + vec2 local_origin = (MODEL_MATRIX * vec4(0.0, 0.0, 0, 1)).xy; + vec2 clip = (v_alt_matrix * vec4(local_origin, 0,1)).xy; + vec2 screen_origin_uv = clip * 0.5 + 0.5; + vec2 screen_pixel_size = 1. / vec2(textureSize(SCREEN_TEXTURE, 0)); + vec2 q = screen_pixel_size * float(v_quant_size) * zoom; + v_texture_data.xy = screen_origin_uv; + v_texture_data.zw = q; + } +} + +void fragment() { + if (texture_mode == 0) { + vec4 uvResult = getQuantizeTextureUV(UV); + COLOR = texture(TEXTURE, uvResult.xy); + } else { + vec4 uvResult = getQuantizeScreenUV(SCREEN_UV); + COLOR = texture(SCREEN_TEXTURE, uvResult.xy); + } +} \ No newline at end of file diff --git a/shaders/pixelate.gdshader.uid b/shaders/pixelate.gdshader.uid new file mode 100644 index 0000000..130c8d1 --- /dev/null +++ b/shaders/pixelate.gdshader.uid @@ -0,0 +1 @@ +uid://dgstw8crggyti diff --git a/shaders/quantize.gdshaderinc b/shaders/quantize.gdshaderinc new file mode 100644 index 0000000..42caf40 --- /dev/null +++ b/shaders/quantize.gdshaderinc @@ -0,0 +1,104 @@ +group_uniforms Quantization; +/**Pixel resolution scale (0 is bypass)*/ +uniform int quantize_size : hint_range(0,100) = 1; +/**Pixels are snapped based on world coordinates vs local coordinates.*/ +uniform bool snap_to_world; +/**Auto-scales the quantize size when zoom is < 1, preventing subpixel artifacts*/ +uniform bool limit_subpixels = true; +group_uniforms; + +varying mat4 v_model_matrix; +varying mat4 v_alt_matrix; +varying vec2 v_vertex; +varying flat int v_quant_size; +varying flat vec4 v_texture_data; + +const float EPSILON = 0.0001; + +int getQuantizeSize(float in_zoom) { + int q_size = quantize_size; + + if (limit_subpixels && in_zoom < 1.) { + q_size = int(round(float(quantize_size) * (1. / in_zoom))); + } + + return q_size; +} + +vec2 _snap(vec2 in_uv, float in_q_size) { + return (floor(in_uv / in_q_size) + 0.5) * in_q_size; +} + +vec4 getQuantizeScreenUV(vec2 in_screen_uv) { + vec4 result; + + if (v_quant_size == 0) { + result.xy = in_screen_uv; + result.zw = (v_model_matrix * vec4(v_vertex, 0, 1)).xy; + return result; + } + + if (snap_to_world) { + vec2 uv = (v_model_matrix * vec4(v_vertex, 0, 1)).xy; + result.zw = uv + EPSILON; + uv = _snap(uv, float(v_quant_size)); + uv = (v_alt_matrix * vec4(uv, 0,1)).xy; + uv = uv * 0.5 + 0.5; + result.xy = uv; + return result; + } else { + vec2 origin_uv = v_texture_data.xy; + vec2 quant_pixel_size = v_texture_data.zw; + vec2 uv = in_screen_uv - origin_uv; + uv = (floor(uv / quant_pixel_size) + 0.5) * quant_pixel_size; + + uv = uv + origin_uv; + vec2 clipXY = uv * 2.0 - 1.; + vec2 world_pos = (v_alt_matrix * vec4(clipXY, 0.0, 1.0)).xy; + result.zw = world_pos + EPSILON; + result.xy = uv; + return result; + } +} + +vec4 getQuantizeTextureUV(vec2 in_uv) { + vec4 result; + vec2 texture_size = v_texture_data.xy; + vec2 flip = v_texture_data.zw; + + if (v_quant_size == 0) { + result.xy = in_uv; + result.zw = (v_model_matrix * vec4(in_uv * texture_size, 0, 1)).xy; + return result; + } + + vec2 offset; + float q = float(v_quant_size); + vec2 uv = in_uv; + uv = mix(uv, 1.0 - uv, flip); + + if (snap_to_world) { + vec2 inv_texture_size = 1. / texture_size; + offset = v_vertex * inv_texture_size; + offset = uv - offset; + uv -= offset; + + uv *= texture_size; + uv = (v_model_matrix * vec4(uv, 0, 1)).xy; + result.zw = uv; + uv = _snap(uv, q); + uv = (v_alt_matrix * vec4(uv, 0, 1)).xy; + uv *= inv_texture_size; + + uv = offset + uv; + } else { + uv *= texture_size; + result.zw = uv; + uv = _snap(uv, q); + uv /= texture_size; + } + + uv = mix(uv, 1.0 - uv, flip); + result.xy = uv + EPSILON; + return result; +} diff --git a/shaders/quantize.gdshaderinc.uid b/shaders/quantize.gdshaderinc.uid new file mode 100644 index 0000000..23bf5d2 --- /dev/null +++ b/shaders/quantize.gdshaderinc.uid @@ -0,0 +1 @@ +uid://dp4ue4i3i5iaf