diff --git a/assets/resources/fence_fortified.png b/assets/resources/fence_fortified.png index 72a9fa5..6317057 100644 Binary files a/assets/resources/fence_fortified.png and b/assets/resources/fence_fortified.png differ diff --git a/assets/resources/fence_fortified.png.import b/assets/resources/fence_fortified.png.import index 08653b0..e4d7a41 100644 --- a/assets/resources/fence_fortified.png.import +++ b/assets/resources/fence_fortified.png.import @@ -2,7 +2,7 @@ importer="texture" type="CompressedTexture2D" -uid="uid://cx3x4l20q17xh" +uid="uid://d4cjmc3svg7ie" path="res://.godot/imported/fence_fortified.png-1ae65c603e478020bc26d4e987d66517.ctex" metadata={ "vram_texture": false diff --git a/assets/resources/fence_fortified.tscn b/assets/resources/fence_fortified.tscn index 8a55776..09000f6 100644 --- a/assets/resources/fence_fortified.tscn +++ b/assets/resources/fence_fortified.tscn @@ -3,6 +3,3 @@ [ext_resource type="PackedScene" uid="uid://cg5cy35mk8nba" path="res://assets/3rdparty/kenney/survival-kit/Models/fence-fortified.glb" id="1_bm7wh"] [node name="fence-fortified" instance=ExtResource("1_bm7wh")] - -[node name="fence-fortified" parent="." index="0"] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0.222241) diff --git a/assets/3rdparty/kenney/survival-kit/Previews/floor.png b/assets/resources/floor.png similarity index 100% rename from assets/3rdparty/kenney/survival-kit/Previews/floor.png rename to assets/resources/floor.png diff --git a/assets/3rdparty/kenney/survival-kit/Previews/floor.png.import b/assets/resources/floor.png.import similarity index 70% rename from assets/3rdparty/kenney/survival-kit/Previews/floor.png.import rename to assets/resources/floor.png.import index d462144..05b45df 100644 --- a/assets/3rdparty/kenney/survival-kit/Previews/floor.png.import +++ b/assets/resources/floor.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://cwplac1y0x13c" -path="res://.godot/imported/floor.png-7ce8f44de2a77036c73a390ab70d03ae.ctex" +path="res://.godot/imported/floor.png-b9879e04f7313063744ab2deb5053a27.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://assets/3rdparty/kenney/survival-kit/Previews/floor.png" -dest_files=["res://.godot/imported/floor.png-7ce8f44de2a77036c73a390ab70d03ae.ctex"] +source_file="res://assets/resources/floor.png" +dest_files=["res://.godot/imported/floor.png-b9879e04f7313063744ab2deb5053a27.ctex"] [params] diff --git a/assets/resources/floor.tscn b/assets/resources/floor.tscn new file mode 100644 index 0000000..4c11ac0 --- /dev/null +++ b/assets/resources/floor.tscn @@ -0,0 +1,5 @@ +[gd_scene load_steps=2 format=3 uid="uid://bfn60u0e11o8u"] + +[ext_resource type="PackedScene" uid="uid://putll6r03s1i" path="res://assets/3rdparty/kenney/survival-kit/Models/floor.glb" id="1_i3lij"] + +[node name="floor2" instance=ExtResource("1_i3lij")] diff --git a/data/items/fence_fortified.tres b/data/items/fence_fortified.tres index 5d97213..d5eca2a 100644 --- a/data/items/fence_fortified.tres +++ b/data/items/fence_fortified.tres @@ -1,12 +1,12 @@ [gd_resource type="Resource" script_class="Item" load_steps=4 format=3 uid="uid://c714vj3s6cnqg"] -[ext_resource type="Texture2D" uid="uid://cx3x4l20q17xh" path="res://assets/resources/fence_fortified.png" id="1_hyv8l"] +[ext_resource type="Texture2D" uid="uid://d4cjmc3svg7ie" path="res://assets/resources/fence_fortified.png" id="1_hyv8l"] [ext_resource type="Script" path="res://model/item.gd" id="1_u43c0"] [ext_resource type="PackedScene" uid="uid://dv60qx8nqw3vg" path="res://assets/resources/fence_fortified.tscn" id="2_8ttdv"] [resource] script = ExtResource("1_u43c0") -name = "" +name = "Fence Fortified" scene = ExtResource("2_8ttdv") icon = ExtResource("1_hyv8l") max_stack_size = 64 diff --git a/data/items/floor.tres b/data/items/floor.tres new file mode 100644 index 0000000..712779c --- /dev/null +++ b/data/items/floor.tres @@ -0,0 +1,12 @@ +[gd_resource type="Resource" script_class="Item" load_steps=4 format=3 uid="uid://cepy03xrewibs"] + +[ext_resource type="Texture2D" uid="uid://cwplac1y0x13c" path="res://assets/resources/floor.png" id="1_fe6dh"] +[ext_resource type="Script" path="res://model/item.gd" id="1_piayo"] +[ext_resource type="PackedScene" uid="uid://bfn60u0e11o8u" path="res://assets/resources/floor.tscn" id="2_1360y"] + +[resource] +script = ExtResource("1_piayo") +name = "Floor" +scene = ExtResource("2_1360y") +icon = ExtResource("1_fe6dh") +max_stack_size = 64 diff --git a/data/recipes/floor.tres b/data/recipes/floor.tres new file mode 100644 index 0000000..0882333 --- /dev/null +++ b/data/recipes/floor.tres @@ -0,0 +1,11 @@ +[gd_resource type="Resource" script_class="Recipe" load_steps=4 format=3 uid="uid://dbij72n3ia8te"] + +[ext_resource type="Script" path="res://model/recipe.gd" id="1_sqajm"] +[ext_resource type="Resource" uid="uid://dmjr6pmb17l2y" path="res://data/items/woodplanks.tres" id="1_y7d3a"] +[ext_resource type="Resource" uid="uid://cepy03xrewibs" path="res://data/items/floor.tres" id="2_m3y1r"] + +[resource] +script = ExtResource("1_sqajm") +name = "Floor" +ingredients = Array[Resource("res://model/item.gd")]([ExtResource("1_y7d3a"), ExtResource("1_y7d3a")]) +results = Array[Resource("res://model/item.gd")]([ExtResource("2_m3y1r")]) diff --git a/game_ui.gd b/game_ui.gd index d563ac4..6b3d682 100644 --- a/game_ui.gd +++ b/game_ui.gd @@ -42,6 +42,23 @@ func activate_game_scene(game_scene:Node3D) -> void: game_menu_ui.hide() +func _process(_delta): + if _player == null: + # TODO: make sure game ui is deactivated when no game running + return + + assert(_player != null and tool_container.get_child_count() >= _player.selected_tool_slot_index) + + for i in range(tool_container.get_child_count()): + var item_slot:ItemSlot = tool_container.get_child(i) as ItemSlot + + assert(item_slot != null) + + if i == _player.selected_tool_slot_index: + item_slot.highlighted = true + else: + item_slot.highlighted = false + func _on_message_timer_timeout(): %MessagesContainer.visible = false diff --git a/inventory.gd b/inventory.gd index 3fa0805..822d8f1 100644 --- a/inventory.gd +++ b/inventory.gd @@ -2,10 +2,18 @@ class_name Inventory var _content:Array[ItemStack] = [] const INVENTORY_SIZE:int = 36 +const INVENTORY_TOOL_START:int = 36 - 9 func _init() -> void: clear() +func get_free_tool_stack_index() -> int: + for i:int in range(INVENTORY_TOOL_START, _content.size()): + if _content[i].count == 0: + return i + + return -1 + func get_free_item_stack_index() -> int: for i:int in range(_content.size()): if _content[i].count == 0: @@ -25,7 +33,13 @@ func add_item(item:Item) -> bool: item_stack.count = item_stack.count + 1 return true - var item_stack_index:int = get_free_item_stack_index() + # First try to put it into the tool stacks... + var item_stack_index:int = get_free_tool_stack_index() + + # ... and if that failed try use the regular inventory. + if item_stack_index < 0: + item_stack_index = get_free_item_stack_index() + if item_stack_index >= 0: _content[item_stack_index].item = item _content[item_stack_index].count = 1 diff --git a/objects/player.gd b/objects/player.gd index f2552cd..d9dc132 100644 --- a/objects/player.gd +++ b/objects/player.gd @@ -12,6 +12,7 @@ const JUMP_VELOCITY = 2.5 # Get the gravity from the project settings to be synced with RigidBody nodes. var gravity = ProjectSettings.get_setting("physics/3d/default_gravity") var inventory:Inventory = Inventory.new() +var selected_tool_slot_index:int = 0 var look_direction:Vector3 = Vector3.BACK var look_direction_damper:SpringDamper = SpringDamper.new(Vector3.ZERO) @@ -68,6 +69,30 @@ func on_item_picked_up(item:Item): func get_actionable_global_transform() -> Vector3: return build_location.global_position + +func _handle_tool_slot_input_events(_event:InputEvent) -> bool: + var key_event:InputEventKey = _event as InputEventKey + + if key_event and key_event.is_released(): + if key_event.keycode >= KEY_1 and key_event.keycode <= KEY_9: + selected_tool_slot_index = key_event.keycode - KEY_1 + get_viewport().set_input_as_handled() + return true + + if _event.is_action_released("item_next"): + selected_tool_slot_index = (selected_tool_slot_index + 1) % (inventory.get_tool_item_stacks().size()) + get_viewport().set_input_as_handled() + return true + + if _event.is_action_released("item_prev"): + var tool_slot_size = inventory.get_tool_item_stacks().size() + selected_tool_slot_index = (selected_tool_slot_index + tool_slot_size - 1) % (tool_slot_size) + get_viewport().set_input_as_handled() + return true + + return false + + func _unhandled_input(_event: InputEvent) -> void: if Input.is_action_just_pressed("ui_accept"): var actionables = actionable_detector.get_overlapping_areas() @@ -83,4 +108,6 @@ func _unhandled_input(_event: InputEvent) -> void: get_viewport().set_input_as_handled() return - + + if _handle_tool_slot_input_events(_event): + return diff --git a/objects/player.tscn b/objects/player.tscn index 185dd41..554ddfb 100644 --- a/objects/player.tscn +++ b/objects/player.tscn @@ -48,8 +48,3 @@ shape = SubResource("SphereShape3D_wrkyq") [node name="BuildLocation" type="Node3D" parent="Geometry"] unique_name_in_owner = true transform = Transform3D(2.5, 0, 0, 0, 2.5, 0, 0, 0, 2.5, 0, 0, 2.4682) - -[node name="Camera3D" type="Camera3D" parent="."] -unique_name_in_owner = true -transform = Transform3D(1, 0, 0, 0, 0.639707, 0.768619, 0, -0.768619, 0.639707, 0, 2.23862, 1.4653) -current = true diff --git a/project.godot b/project.godot index 32868c4..d6efd38 100644 --- a/project.godot +++ b/project.godot @@ -31,6 +31,10 @@ project/assembly_name="UIAndInteractionTests" enabled=PackedStringArray("res://addons/dialogue_manager/plugin.cfg") +[gui] + +theme/custom="res://ui/ui_theme.tres" + [input] ui_accept={ @@ -123,9 +127,36 @@ toggle_inventory={ } interaction={ "deadzone": 0.5, -"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":32,"key_label":0,"unicode":32,"echo":false,"script":null) -, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"button_index":0,"pressure":0.0,"pressed":true,"script":null) +"events": [Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"button_index":0,"pressure":0.0,"pressed":true,"script":null) , Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"button_mask":0,"position":Vector2(0, 0),"global_position":Vector2(0, 0),"factor":1.0,"button_index":1,"canceled":false,"pressed":false,"double_click":false,"script":null) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":69,"key_label":0,"unicode":108,"echo":false,"script":null) +] +} +toggle_build_mode={ +"deadzone": 0.5, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194306,"key_label":0,"unicode":0,"echo":false,"script":null) +] +} +rotate_clockwise={ +"deadzone": 0.5, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":82,"key_label":0,"unicode":99,"echo":false,"script":null) +, Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"button_mask":0,"position":Vector2(0, 0),"global_position":Vector2(0, 0),"factor":1.0,"button_index":5,"canceled":false,"pressed":false,"double_click":false,"script":null) +] +} +rotate_counter_clockwise={ +"deadzone": 0.5, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":70,"key_label":0,"unicode":101,"echo":false,"script":null) +, Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"button_mask":0,"position":Vector2(0, 0),"global_position":Vector2(0, 0),"factor":1.0,"button_index":4,"canceled":false,"pressed":false,"double_click":false,"script":null) +] +} +item_next={ +"deadzone": 0.5, +"events": [Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"button_mask":0,"position":Vector2(0, 0),"global_position":Vector2(0, 0),"factor":1.0,"button_index":5,"canceled":false,"pressed":false,"double_click":false,"script":null) +] +} +item_prev={ +"deadzone": 0.5, +"events": [Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"button_mask":0,"position":Vector2(0, 0),"global_position":Vector2(0, 0),"factor":1.0,"button_index":4,"canceled":false,"pressed":false,"double_click":false,"script":null) ] } @@ -135,4 +166,5 @@ locale/translations_pot_files=PackedStringArray("res://dialogue/bridge_builder_m [layer_names] +3d_physics/layer_1="World" 3d_physics/layer_5="Actionables" diff --git a/root_ui.tscn b/root_ui.tscn index 70668cd..1586df4 100644 --- a/root_ui.tscn +++ b/root_ui.tscn @@ -1,15 +1,199 @@ -[gd_scene load_steps=11 format=3 uid="uid://c73t0nbuqp68e"] +[gd_scene load_steps=33 format=3 uid="uid://c73t0nbuqp68e"] [ext_resource type="Script" path="res://root_ui.gd" id="1_7fnkg"] [ext_resource type="PackedScene" uid="uid://bo788o53t4rbq" path="res://scenes/startup_scene.tscn" id="2_1untt"] [ext_resource type="PackedScene" uid="uid://cqie4cy0uy1t0" path="res://scenes/game.tscn" id="3_w1gpn"] -[ext_resource type="Theme" uid="uid://dmk7hc81l8gbw" path="res://ui/ui_theme.tres" id="4_el4q2"] +[ext_resource type="Texture2D" uid="uid://bnwqllx51sdg2" path="res://assets/3rdparty/kenney/ui-pack-rpg-expansion/PNG/buttonLong_grey.png" id="4_3iys8"] [ext_resource type="Script" path="res://game_ui.gd" id="5_jkbjp"] +[ext_resource type="StyleBox" uid="uid://bh2a2lhk5hwi1" path="res://ui/ui_theme_panel_style.tres" id="5_o771r"] +[ext_resource type="Texture2D" uid="uid://b4quo8qstm60p" path="res://assets/3rdparty/kenney/ui-pack-rpg-expansion/PNG/panelInset_blue.png" id="6_tso5a"] [ext_resource type="Script" path="res://ui/inventory_dialog.gd" id="6_y58iw"] +[ext_resource type="FontFile" uid="uid://cjxqdamvrjlij" path="res://assets/fonts/upheaval/upheavtt.ttf" id="7_mj4qa"] [ext_resource type="PackedScene" uid="uid://dp3fi0g53qrt2" path="res://ui/item_slot.tscn" id="7_pv315"] [ext_resource type="PackedScene" uid="uid://bwui4acukq4x6" path="res://ui/ItemGrid.tscn" id="8_anyub"] [ext_resource type="Script" path="res://ui/game_menu_ui.gd" id="9_g2mav"] [ext_resource type="Script" path="res://ui/item_grid.gd" id="10_5ufsm"] +[ext_resource type="Texture2D" uid="uid://57o4ow08ky5q" path="res://assets/3rdparty/kenney/ui-pack-rpg-expansion/PNG/buttonSquare_blue_pressed.png" id="10_rpger"] +[ext_resource type="Texture2D" uid="uid://beaqo323661rh" path="res://assets/3rdparty/kenney/ui-pack-rpg-expansion/PNG/panel_blue.png" id="11_jrvnp"] +[ext_resource type="Texture2D" uid="uid://bi6q381bmdonq" path="res://assets/3rdparty/kenney/ui-pack-rpg-expansion/PNG/buttonSquare_grey.png" id="12_033wf"] + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_1ume3"] +content_margin_left = 4.0 +content_margin_top = 4.0 +content_margin_right = 4.0 +content_margin_bottom = 4.0 +bg_color = Color(0.1, 0.1, 0.1, 0.3) +corner_radius_top_left = 3 +corner_radius_top_right = 3 +corner_radius_bottom_right = 3 +corner_radius_bottom_left = 3 +corner_detail = 5 + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_rm8a3"] +content_margin_left = 4.0 +content_margin_top = 4.0 +content_margin_right = 4.0 +content_margin_bottom = 4.0 +bg_color = Color(1, 1, 1, 0.75) +draw_center = false +border_width_left = 2 +border_width_top = 2 +border_width_right = 2 +border_width_bottom = 2 +corner_radius_top_left = 3 +corner_radius_top_right = 3 +corner_radius_bottom_right = 3 +corner_radius_bottom_left = 3 +corner_detail = 5 +expand_margin_left = 2.0 +expand_margin_top = 2.0 +expand_margin_right = 2.0 +expand_margin_bottom = 2.0 + +[sub_resource type="StyleBoxTexture" id="StyleBoxTexture_a84rd"] +texture = ExtResource("4_3iys8") +texture_margin_left = 8.0 +texture_margin_top = 8.0 +texture_margin_right = 8.0 +texture_margin_bottom = 8.0 +modulate_color = Color(0.621524, 0.621524, 0.621524, 1) + +[sub_resource type="StyleBoxTexture" id="StyleBoxTexture_votra"] +texture = ExtResource("4_3iys8") +texture_margin_left = 8.0 +texture_margin_top = 8.0 +texture_margin_right = 8.0 +texture_margin_bottom = 8.0 +axis_stretch_horizontal = 2 +axis_stretch_vertical = 2 +modulate_color = Color(0.509286, 0.509286, 0.509286, 1) + +[sub_resource type="StyleBoxTexture" id="StyleBoxTexture_bpyb5"] +texture = ExtResource("4_3iys8") +texture_margin_left = 8.0 +texture_margin_top = 8.0 +texture_margin_right = 8.0 +texture_margin_bottom = 8.0 +axis_stretch_horizontal = 2 +axis_stretch_vertical = 2 +modulate_color = Color(0.408329, 0.408329, 0.408329, 1) + +[sub_resource type="StyleBoxTexture" id="StyleBoxTexture_72pk6"] +texture = ExtResource("6_tso5a") +texture_margin_left = 8.0 +texture_margin_top = 8.0 +texture_margin_right = 8.0 +texture_margin_bottom = 8.0 +axis_stretch_horizontal = 2 +axis_stretch_vertical = 1 +modulate_color = Color(0.821789, 0.821789, 0.821789, 1) + +[sub_resource type="StyleBoxTexture" id="StyleBoxTexture_kl7i7"] +texture = ExtResource("6_tso5a") +texture_margin_left = 8.0 +texture_margin_top = 8.0 +texture_margin_right = 8.0 +texture_margin_bottom = 8.0 +axis_stretch_horizontal = 2 +axis_stretch_vertical = 2 +modulate_color = Color(0.821789, 0.821789, 0.821789, 1) + +[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_supoq"] + +[sub_resource type="StyleBoxTexture" id="StyleBoxTexture_72rto"] +texture = ExtResource("10_rpger") +texture_margin_left = 8.0 +texture_margin_top = 8.0 +texture_margin_right = 8.0 +texture_margin_bottom = 8.0 +axis_stretch_horizontal = 1 +axis_stretch_vertical = 1 +modulate_color = Color(1, 0.0666667, 0.156863, 1) + +[sub_resource type="StyleBoxTexture" id="StyleBoxTexture_th1h8"] +texture = ExtResource("12_033wf") +texture_margin_left = 8.0 +texture_margin_top = 8.0 +texture_margin_right = 8.0 +texture_margin_bottom = 8.0 +axis_stretch_horizontal = 1 +axis_stretch_vertical = 1 + +[sub_resource type="StyleBoxTexture" id="StyleBoxTexture_47eau"] +texture = ExtResource("10_rpger") +texture_margin_left = 8.0 +texture_margin_top = 8.0 +texture_margin_right = 8.0 +texture_margin_bottom = 8.0 +axis_stretch_horizontal = 2 +axis_stretch_vertical = 2 + +[sub_resource type="StyleBoxTexture" id="StyleBoxTexture_lnfi0"] +texture = ExtResource("11_jrvnp") +texture_margin_left = 8.0 +texture_margin_top = 8.0 +texture_margin_right = 8.0 +texture_margin_bottom = 8.0 + +[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_xw22e"] + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_tyjme"] + +[sub_resource type="StyleBoxTexture" id="StyleBoxTexture_22g74"] +texture = ExtResource("6_tso5a") +texture_margin_left = 8.0 +texture_margin_top = 8.0 +texture_margin_right = 8.0 +texture_margin_bottom = 8.0 +axis_stretch_horizontal = 2 +axis_stretch_vertical = 2 +modulate_color = Color(0.760784, 0.760784, 0.760784, 1) + +[sub_resource type="Theme" id="Theme_4dhdu"] +default_font = ExtResource("7_mj4qa") +default_font_size = 24 +Button/colors/font_color = Color(0.875, 0.875, 0.875, 1) +Button/colors/font_disabled_color = Color(0.875, 0.875, 0.875, 0.5) +Button/colors/font_focus_color = Color(0.95, 0.95, 0.95, 1) +Button/colors/font_hover_color = Color(0.95, 0.95, 0.95, 1) +Button/colors/font_hover_pressed_color = Color(1, 1, 1, 1) +Button/colors/font_outline_color = Color(1, 1, 1, 1) +Button/colors/font_pressed_color = Color(1, 1, 1, 1) +Button/colors/icon_disabled_color = Color(1, 1, 1, 0.4) +Button/colors/icon_focus_color = Color(1, 1, 1, 1) +Button/colors/icon_hover_color = Color(1, 1, 1, 1) +Button/colors/icon_hover_pressed_color = Color(1, 1, 1, 1) +Button/colors/icon_normal_color = Color(1, 1, 1, 1) +Button/colors/icon_pressed_color = Color(1, 1, 1, 1) +Button/constants/h_separation = 4 +Button/constants/icon_max_width = 0 +Button/constants/outline_size = 0 +Button/styles/disabled = SubResource("StyleBoxFlat_1ume3") +Button/styles/focus = SubResource("StyleBoxFlat_rm8a3") +Button/styles/hover = SubResource("StyleBoxTexture_a84rd") +Button/styles/normal = SubResource("StyleBoxTexture_votra") +Button/styles/panel = ExtResource("5_o771r") +Button/styles/pressed = SubResource("StyleBoxTexture_bpyb5") +Control/styles/normal = SubResource("StyleBoxTexture_72pk6") +ItemList/styles/normal = SubResource("StyleBoxTexture_kl7i7") +Label/colors/font_color = Color(1, 1, 1, 1) +Label/colors/font_outline_color = Color(1, 1, 1, 1) +Label/colors/font_shadow_color = Color(0.223103, 0.223103, 0.223103, 0.843137) +Label/constants/line_spacing = 3 +Label/constants/outline_size = 0 +Label/constants/shadow_offset_x = 1 +Label/constants/shadow_offset_y = 1 +Label/constants/shadow_outline_size = 1 +Label/fonts/font = ExtResource("7_mj4qa") +Label/styles/normal = SubResource("StyleBoxEmpty_supoq") +Label/styles/panel = SubResource("StyleBoxTexture_72rto") +MarginContainer/styles/normal = SubResource("StyleBoxTexture_th1h8") +Panel/styles/highlighted = SubResource("StyleBoxTexture_72rto") +Panel/styles/normal = SubResource("StyleBoxTexture_47eau") +Panel/styles/panel = SubResource("StyleBoxTexture_lnfi0") +PanelContainer/styles/panel = SubResource("StyleBoxEmpty_xw22e") +RedButton/styles/panel = SubResource("StyleBoxFlat_tyjme") +Tree/styles/panel = SubResource("StyleBoxTexture_22g74") [node name="RootUI" type="CanvasLayer"] unique_name_in_owner = true @@ -17,8 +201,9 @@ script = ExtResource("1_7fnkg") startup_scene = ExtResource("2_1untt") game_scene = ExtResource("3_w1gpn") -[node name="MainMenuUI" type="PanelContainer" parent="."] +[node name="MainMenuUI" type="Panel" parent="."] unique_name_in_owner = true +visible = false anchors_preset = 8 anchor_left = 0.5 anchor_top = 0.5 @@ -30,10 +215,14 @@ offset_right = 199.0 offset_bottom = 134.5 grow_horizontal = 2 grow_vertical = 2 -theme = ExtResource("4_el4q2") [node name="MarginContainer" type="MarginContainer" parent="MainMenuUI"] -layout_mode = 2 +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 = 60 theme_override_constants/margin_top = 60 theme_override_constants/margin_right = 60 @@ -87,7 +276,7 @@ theme_override_constants/margin_bottom = 8 layout_mode = 2 text = "Quit" -[node name="NewGameUI" type="PanelContainer" parent="."] +[node name="NewGameUI" type="Panel" parent="."] unique_name_in_owner = true visible = false anchors_preset = 8 @@ -101,10 +290,14 @@ offset_right = 291.0 offset_bottom = 144.0 grow_horizontal = 2 grow_vertical = 2 -theme = ExtResource("4_el4q2") [node name="MarginContainer" type="MarginContainer" parent="NewGameUI"] -layout_mode = 2 +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 = 60 theme_override_constants/margin_top = 60 theme_override_constants/margin_right = 60 @@ -176,7 +369,6 @@ text = "Start [node name="GameUI" type="Control" parent="."] unique_name_in_owner = true -visible = false layout_mode = 3 anchors_preset = 15 anchor_right = 1.0 @@ -186,7 +378,6 @@ grow_vertical = 2 size_flags_horizontal = 3 size_flags_vertical = 3 mouse_filter = 1 -theme = ExtResource("4_el4q2") script = ExtResource("5_jkbjp") [node name="MessagesContainer" type="MarginContainer" parent="GameUI"] @@ -278,7 +469,7 @@ text = "Recipes" unique_name_in_owner = true layout_mode = 2 size_flags_vertical = 3 -theme = ExtResource("4_el4q2") +theme = SubResource("Theme_4dhdu") item_count = 2 item_0/text = "Blab" item_1/text = "Bloobalb" @@ -384,7 +575,7 @@ layout_mode = 2 size_flags_horizontal = 4 size_flags_vertical = 4 -[node name="GameMenuUI" type="PanelContainer" parent="GameUI"] +[node name="GameMenuUI" type="Panel" parent="GameUI"] unique_name_in_owner = true visible = false layout_mode = 1 @@ -399,11 +590,16 @@ offset_right = 199.0 offset_bottom = 215.0 grow_horizontal = 2 grow_vertical = 2 -theme = ExtResource("4_el4q2") +theme = SubResource("Theme_4dhdu") script = ExtResource("9_g2mav") [node name="MarginContainer" type="MarginContainer" parent="GameUI/GameMenuUI"] -layout_mode = 2 +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 = 60 theme_override_constants/margin_top = 60 theme_override_constants/margin_right = 60 @@ -497,6 +693,15 @@ columns = 9 script = ExtResource("10_5ufsm") slot_scene = ExtResource("7_pv315") +[node name="ItemSlot" parent="GameUI/ToolSlots/PanelContainer/ToolContainer" instance=ExtResource("7_pv315")] +layout_mode = 2 + +[node name="ItemSlot2" parent="GameUI/ToolSlots/PanelContainer/ToolContainer" instance=ExtResource("7_pv315")] +layout_mode = 2 + +[node name="ItemSlot3" parent="GameUI/ToolSlots/PanelContainer/ToolContainer" instance=ExtResource("7_pv315")] +layout_mode = 2 + [node name="Scene" type="Node3D" parent="."] unique_name_in_owner = true diff --git a/scenes/game.gd b/scenes/game.gd new file mode 100644 index 0000000..93e7e5d --- /dev/null +++ b/scenes/game.gd @@ -0,0 +1,23 @@ +extends Node3D + +@onready var camera = %Camera +@onready var player = %Player + +@onready var build_system = %BuildSystem + +var _player_camera_offset:Vector3 = Vector3.ZERO + +# Called when the node enters the scene tree for the first time. +func _ready(): + _player_camera_offset = camera.global_position - player.global_position + Vector3.UP * 1 + + +# Called every frame. 'delta' is the elapsed time since the previous frame. +func _process(_delta): + if build_system.is_active: + player.process_mode = Node.PROCESS_MODE_DISABLED + else: + player.process_mode = Node.PROCESS_MODE_ALWAYS + + camera.global_position = player.global_position + _player_camera_offset + camera.look_at(player.global_position) diff --git a/scenes/game.tscn b/scenes/game.tscn index 60d6ded..633fee6 100644 --- a/scenes/game.tscn +++ b/scenes/game.tscn @@ -1,10 +1,11 @@ -[gd_scene load_steps=9 format=3 uid="uid://cqie4cy0uy1t0"] +[gd_scene load_steps=10 format=3 uid="uid://cqie4cy0uy1t0"] +[ext_resource type="Script" path="res://scenes/game.gd" id="1_kl6si"] [ext_resource type="PackedScene" uid="uid://ch0s3dxx3rpir" path="res://objects/player.tscn" id="2_rjgxk"] [ext_resource type="Script" path="res://systems/QuestSystem.gd" id="4_8oxap"] [ext_resource type="Script" path="res://systems/BuildSystem.gd" id="4_iqdys"] -[ext_resource type="Resource" uid="uid://c714vj3s6cnqg" path="res://data/items/fence_fortified.tres" id="5_ii2f8"] [ext_resource type="PackedScene" uid="uid://dmagdl5pi6jdj" path="res://world/level.tscn" id="6_svjo8"] +[ext_resource type="Resource" uid="uid://cepy03xrewibs" path="res://data/items/floor.tres" id="6_xdkny"] [sub_resource type="ProceduralSkyMaterial" id="ProceduralSkyMaterial_y65pc"] @@ -18,6 +19,7 @@ ambient_light_source = 3 ambient_light_color = Color(0.662452, 0.662452, 0.662452, 1) [node name="Game" type="Node3D"] +script = ExtResource("1_kl6si") [node name="WorldEnvironment" type="WorldEnvironment" parent="."] environment = SubResource("Environment_v85yo") @@ -31,17 +33,20 @@ shadow_enabled = true [node name="Player" parent="." instance=ExtResource("2_rjgxk")] unique_name_in_owner = true +[node name="Camera" type="Camera3D" parent="."] +unique_name_in_owner = true +transform = Transform3D(1, 0, 0, 0, 0.662829, 0.748771, 0, -0.748771, 0.662829, 0, 2.12698, 2.04901) + [node name="QuestSystem" type="Node" parent="."] script = ExtResource("4_8oxap") [node name="BuildSystem" type="Node" parent="."] +unique_name_in_owner = true script = ExtResource("4_iqdys") -build_item = ExtResource("5_ii2f8") +build_item = ExtResource("6_xdkny") [node name="BuildPreview" type="Node3D" parent="BuildSystem"] unique_name_in_owner = true [node name="BuiltStructures" type="Node" parent="BuildSystem"] unique_name_in_owner = true - -[editable path="Player"] diff --git a/systems/BuildSystem.gd b/systems/BuildSystem.gd index f625599..0af0226 100644 --- a/systems/BuildSystem.gd +++ b/systems/BuildSystem.gd @@ -1,12 +1,19 @@ class_name BuildSystem extends Node +const CAMERA_SPEED = 4.0 + @onready var build_preview = %BuildPreview @onready var player = %Player @onready var built_structures = %BuiltStructures +@onready var camera:Camera3D = %Camera + @export var build_item:Item = null +var camera_velocity:Vector3 = Vector3.ZERO +var is_active:bool = false + # Called when the node enters the scene tree for the first time. func _ready(): pass # Replace with function body. @@ -21,13 +28,46 @@ func update_build_preview_item() -> void: if build_preview.get_child_count() == 0 and build_item != null: build_preview.add_child(build_item.scene.instantiate()) -# Called every frame. 'delta' is the elapsed time since the previous frame. + +func move_build_camera(delta): + var input_dir = Input.get_vector("walk_left", "walk_right", "walk_forward", "walk_back") + var direction = (camera.basis * Vector3(input_dir.x, 0, input_dir.y)).normalized() + if direction: + camera_velocity.x = direction.x * CAMERA_SPEED + camera_velocity.z = direction.z * CAMERA_SPEED + else: + camera_velocity.x = move_toward(camera_velocity.x, 0, CAMERA_SPEED) + camera_velocity.z = move_toward(camera_velocity.z, 0, CAMERA_SPEED) + + camera_velocity.y = 0 + + camera.global_position = camera.global_position + camera_velocity * delta + + +func update_build_preview(): + var mouse_view_coords = get_viewport().get_mouse_position() # / get_viewport().get_visible_rect().size + var mouse_ray_origin = camera.project_ray_origin(mouse_view_coords) + var mouse_ray_normal = camera.project_ray_normal(mouse_view_coords) + + var world_space_state = camera.get_world_3d().direct_space_state + var ray_query:PhysicsRayQueryParameters3D = PhysicsRayQueryParameters3D.create(mouse_ray_origin, mouse_ray_origin + mouse_ray_normal * 100) + var ray_result:Dictionary = world_space_state.intersect_ray(ray_query) + + if not ray_result.is_empty() and Vector3.UP.dot(ray_result["normal"]) > 0.9: + var build_location:Vector3 = ray_result["position"] + build_location = Vector3(roundf(build_location.x * 4), build_location.y, roundf(build_location.z * 4)) * 0.25 + build_preview.global_position = build_location + + func _physics_process(_delta): + if not is_active: + return + update_build_preview_item() - var build_location:Vector3 = player.get_actionable_global_transform() - build_location = Vector3(roundf(build_location.x * 2), build_location.y, roundf(build_location.z * 2)) * 0.5 - build_preview.global_position = build_location + #move_build_camera(delta) + + update_build_preview() if build_item != null and Input.is_action_just_pressed("interaction"): var new_structure:Node3D = build_item.scene.instantiate() @@ -35,3 +75,21 @@ func _physics_process(_delta): built_structures.add_child(new_structure) get_viewport().set_input_as_handled() return + + +func _unhandled_input(_event: InputEvent) -> void: + if Input.is_action_just_pressed("toggle_build_mode"): + is_active = not is_active + get_viewport().set_input_as_handled() + return + + if not is_active: + build_preview.hide() + return + + build_preview.show() + + if Input.is_action_just_pressed("rotate_clockwise"): + build_preview.global_basis = build_preview.basis.rotated(Vector3.UP, deg_to_rad(45)) + if Input.is_action_just_pressed("rotate_counter_clockwise"): + build_preview.global_basis = build_preview.basis.rotated(Vector3.UP, -deg_to_rad(45)) diff --git a/ui/game_menu_ui.gd b/ui/game_menu_ui.gd index 8839776..2f637ae 100644 --- a/ui/game_menu_ui.gd +++ b/ui/game_menu_ui.gd @@ -1,4 +1,4 @@ -extends PanelContainer +extends Panel func _unhandled_key_input(event:InputEvent): var key_event:InputEventKey = event as InputEventKey diff --git a/ui/item_grid.gd b/ui/item_grid.gd index b9f6fd3..164be6f 100644 --- a/ui/item_grid.gd +++ b/ui/item_grid.gd @@ -16,7 +16,7 @@ func displayStacks(item_stacks:Array[ItemStack]): if item_stack != null: slot.display(item_stack) - + var item_count = rows * columns while get_child_count() < item_count: diff --git a/ui/item_slot.gd b/ui/item_slot.gd index 1123142..fd53ce3 100644 --- a/ui/item_slot.gd +++ b/ui/item_slot.gd @@ -1,17 +1,23 @@ class_name ItemSlot -extends PanelContainer +extends Panel enum { ALLOW_DRAG = 1, ALLOW_DROP = 2 } +@onready var highlight_panel = %HighlightPanel @onready var texture_rect:TextureRect = %TextureRect @onready var count_label = %CountLabel var drag_drop_flags:int = 0 var _item_stack:ItemStack = null +var highlighted:bool = false : set = _set_highlighted + +func _set_highlighted(new_state): + highlight_panel.visible = new_state + func set_drag_drop_flags(flags:int) -> void: drag_drop_flags = flags @@ -22,6 +28,8 @@ func _process(_delta)->void: if _item_stack == null: return + theme_type_variation = "PanelHighlighted" + if _item_stack.count == 0: texture_rect.texture = null update_quantity_text(0) diff --git a/ui/item_slot.tscn b/ui/item_slot.tscn index f3edd6a..3d793f0 100644 --- a/ui/item_slot.tscn +++ b/ui/item_slot.tscn @@ -1,18 +1,69 @@ -[gd_scene load_steps=2 format=3 uid="uid://dp3fi0g53qrt2"] +[gd_scene load_steps=4 format=3 uid="uid://dp3fi0g53qrt2"] [ext_resource type="Script" path="res://ui/item_slot.gd" id="1_7v5l8"] +[ext_resource type="Texture2D" uid="uid://16ro4vt2obea" path="res://assets/resources/tree_log.png" id="2_v3rb5"] -[node name="ItemSlot" type="PanelContainer"] +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_vadli"] +bg_color = Color(0.6, 0.6, 0.6, 0) +border_width_left = 4 +border_width_top = 4 +border_width_right = 4 +border_width_bottom = 4 +border_color = Color(1, 1, 1, 1) +corner_radius_top_left = 3 +corner_radius_top_right = 3 +corner_radius_bottom_right = 3 +corner_radius_bottom_left = 3 +expand_margin_left = 3.0 +expand_margin_top = 3.0 +expand_margin_right = 3.0 +expand_margin_bottom = 3.0 +anti_aliasing = false + +[node name="ItemSlot" type="Panel"] custom_minimum_size = Vector2(64, 64) script = ExtResource("1_7v5l8") +[node name="HighlightPanel" type="Panel" parent="."] +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 +theme_override_styles/panel = SubResource("StyleBoxFlat_vadli") + [node name="TextureRect" type="TextureRect" parent="."] unique_name_in_owner = true -layout_mode = 2 +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -32.0 +offset_top = -32.0 +offset_right = 32.0 +offset_bottom = 32.0 +grow_horizontal = 2 +grow_vertical = 2 +texture = ExtResource("2_v3rb5") expand_mode = 3 -[node name="CountLabel" type="Label" parent="."] +[node name="CountLabel" type="Label" parent="TextureRect"] unique_name_in_owner = true -layout_mode = 2 +layout_mode = 1 +anchors_preset = 3 +anchor_left = 1.0 +anchor_top = 1.0 +anchor_right = 1.0 +anchor_bottom = 1.0 +offset_left = -10.0 +offset_top = -23.0 +grow_horizontal = 0 +grow_vertical = 0 size_flags_horizontal = 8 size_flags_vertical = 8 +text = "4" diff --git a/ui/theme_preview.tscn b/ui/theme_preview.tscn new file mode 100644 index 0000000..ecb0dae --- /dev/null +++ b/ui/theme_preview.tscn @@ -0,0 +1,30 @@ +[gd_scene load_steps=3 format=3 uid="uid://viy2a4n6vl74"] + +[ext_resource type="PackedScene" uid="uid://bwui4acukq4x6" path="res://ui/ItemGrid.tscn" id="1_1xrix"] +[ext_resource type="PackedScene" uid="uid://dp3fi0g53qrt2" path="res://ui/item_slot.tscn" id="2_gy0b5"] + +[node name="ThemePreview" type="Control"] +layout_mode = 3 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 + +[node name="Panel" type="PanelContainer" parent="."] +layout_mode = 0 +offset_right = 40.0 +offset_bottom = 40.0 + +[node name="ItemGrid" parent="Panel" instance=ExtResource("1_1xrix")] +layout_mode = 2 + +[node name="ItemSlot2" parent="Panel/ItemGrid" instance=ExtResource("2_gy0b5")] +layout_mode = 2 +theme_type_variation = &"HighlightedPanel" + +[node name="ItemSlot3" parent="Panel/ItemGrid" instance=ExtResource("2_gy0b5")] +layout_mode = 2 + +[node name="ItemSlot4" parent="Panel/ItemGrid" instance=ExtResource("2_gy0b5")] +layout_mode = 2 diff --git a/ui/ui_theme.tres b/ui/ui_theme.tres index 0202215..39dde98 100644 --- a/ui/ui_theme.tres +++ b/ui/ui_theme.tres @@ -1,10 +1,44 @@ -[gd_resource type="Theme" load_steps=14 format=3 uid="uid://dmk7hc81l8gbw"] +[gd_resource type="Theme" load_steps=21 format=3 uid="uid://dmk7hc81l8gbw"] [ext_resource type="FontFile" uid="uid://cjxqdamvrjlij" path="res://assets/fonts/upheaval/upheavtt.ttf" id="1_7nu7u"] [ext_resource type="Texture2D" uid="uid://bnwqllx51sdg2" path="res://assets/3rdparty/kenney/ui-pack-rpg-expansion/PNG/buttonLong_grey.png" id="1_46x8x"] [ext_resource type="Texture2D" uid="uid://b4quo8qstm60p" path="res://assets/3rdparty/kenney/ui-pack-rpg-expansion/PNG/panelInset_blue.png" id="2_oiu0i"] -[ext_resource type="Texture2D" uid="uid://beaqo323661rh" path="res://assets/3rdparty/kenney/ui-pack-rpg-expansion/PNG/panel_blue.png" id="2_p2gq5"] [ext_resource type="StyleBox" uid="uid://bh2a2lhk5hwi1" path="res://ui/ui_theme_panel_style.tres" id="4_g0sjm"] +[ext_resource type="Texture2D" uid="uid://devo76y2eb4k5" path="res://assets/3rdparty/kenney/ui-pack-rpg-expansion/PNG/panel_beigeLight.png" id="5_h2fxn"] +[ext_resource type="Texture2D" uid="uid://beaqo323661rh" path="res://assets/3rdparty/kenney/ui-pack-rpg-expansion/PNG/panel_blue.png" id="8_caxsj"] + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_1ume3"] +content_margin_left = 4.0 +content_margin_top = 4.0 +content_margin_right = 4.0 +content_margin_bottom = 4.0 +bg_color = Color(0.1, 0.1, 0.1, 0.3) +corner_radius_top_left = 3 +corner_radius_top_right = 3 +corner_radius_bottom_right = 3 +corner_radius_bottom_left = 3 +corner_detail = 5 + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_rm8a3"] +content_margin_left = 4.0 +content_margin_top = 4.0 +content_margin_right = 4.0 +content_margin_bottom = 4.0 +bg_color = Color(1, 1, 1, 0.75) +draw_center = false +border_width_left = 2 +border_width_top = 2 +border_width_right = 2 +border_width_bottom = 2 +corner_radius_top_left = 3 +corner_radius_top_right = 3 +corner_radius_bottom_right = 3 +corner_radius_bottom_left = 3 +corner_detail = 5 +expand_margin_left = 2.0 +expand_margin_top = 2.0 +expand_margin_right = 2.0 +expand_margin_bottom = 2.0 [sub_resource type="StyleBoxTexture" id="StyleBoxTexture_a84rd"] texture = ExtResource("1_46x8x") @@ -44,6 +78,21 @@ axis_stretch_horizontal = 2 axis_stretch_vertical = 1 modulate_color = Color(0.821789, 0.821789, 0.821789, 1) +[sub_resource type="StyleBoxTexture" id="StyleBoxTexture_k8b76"] +texture = ExtResource("8_caxsj") +texture_margin_left = 8.0 +texture_margin_top = 8.0 +texture_margin_right = 8.0 +texture_margin_bottom = 8.0 +modulate_color = Color(1, 0, 0, 1) + +[sub_resource type="StyleBoxTexture" id="StyleBoxTexture_1pdgo"] +texture = ExtResource("5_h2fxn") +texture_margin_left = 8.0 +texture_margin_top = 8.0 +texture_margin_right = 8.0 +texture_margin_bottom = 8.0 + [sub_resource type="StyleBoxTexture" id="StyleBoxTexture_kl7i7"] texture = ExtResource("2_oiu0i") texture_margin_left = 8.0 @@ -56,8 +105,8 @@ modulate_color = Color(0.821789, 0.821789, 0.821789, 1) [sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_supoq"] -[sub_resource type="StyleBoxTexture" id="StyleBoxTexture_47eau"] -texture = ExtResource("2_p2gq5") +[sub_resource type="StyleBoxTexture" id="StyleBoxTexture_g78k6"] +texture = ExtResource("8_caxsj") texture_margin_left = 8.0 texture_margin_top = 8.0 texture_margin_right = 8.0 @@ -65,6 +114,10 @@ texture_margin_bottom = 8.0 axis_stretch_horizontal = 2 axis_stretch_vertical = 2 +[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_xw22e"] + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_tyjme"] + [sub_resource type="StyleBoxTexture" id="StyleBoxTexture_22g74"] texture = ExtResource("2_oiu0i") texture_margin_left = 8.0 @@ -78,10 +131,32 @@ modulate_color = Color(0.760784, 0.760784, 0.760784, 1) [resource] default_font = ExtResource("1_7nu7u") default_font_size = 24 +Button/colors/font_color = Color(0.875, 0.875, 0.875, 1) +Button/colors/font_disabled_color = Color(0.875, 0.875, 0.875, 0.5) +Button/colors/font_focus_color = Color(0.95, 0.95, 0.95, 1) +Button/colors/font_hover_color = Color(0.95, 0.95, 0.95, 1) +Button/colors/font_hover_pressed_color = Color(1, 1, 1, 1) +Button/colors/font_outline_color = Color(1, 1, 1, 1) +Button/colors/font_pressed_color = Color(1, 1, 1, 1) +Button/colors/icon_disabled_color = Color(1, 1, 1, 0.4) +Button/colors/icon_focus_color = Color(1, 1, 1, 1) +Button/colors/icon_hover_color = Color(1, 1, 1, 1) +Button/colors/icon_hover_pressed_color = Color(1, 1, 1, 1) +Button/colors/icon_normal_color = Color(1, 1, 1, 1) +Button/colors/icon_pressed_color = Color(1, 1, 1, 1) +Button/constants/h_separation = 4 +Button/constants/icon_max_width = 0 +Button/constants/outline_size = 0 +Button/styles/disabled = SubResource("StyleBoxFlat_1ume3") +Button/styles/focus = SubResource("StyleBoxFlat_rm8a3") Button/styles/hover = SubResource("StyleBoxTexture_a84rd") Button/styles/normal = SubResource("StyleBoxTexture_votra") +Button/styles/panel = ExtResource("4_g0sjm") Button/styles/pressed = SubResource("StyleBoxTexture_bpyb5") Control/styles/normal = SubResource("StyleBoxTexture_72pk6") +HighlightedPanel/base_type = &"Panel" +HighlightedPanel/styles/normal = SubResource("StyleBoxTexture_k8b76") +HighlightedPanel/styles/panel = SubResource("StyleBoxTexture_1pdgo") ItemList/styles/normal = SubResource("StyleBoxTexture_kl7i7") Label/colors/font_color = Color(1, 1, 1, 1) Label/colors/font_outline_color = Color(1, 1, 1, 1) @@ -93,8 +168,11 @@ Label/constants/shadow_offset_y = 1 Label/constants/shadow_outline_size = 1 Label/fonts/font = ExtResource("1_7nu7u") Label/styles/normal = SubResource("StyleBoxEmpty_supoq") -MarginContainer/styles/normal = ExtResource("4_g0sjm") -Panel/styles/normal = SubResource("StyleBoxTexture_47eau") -Panel/styles/panel = ExtResource("4_g0sjm") -PanelContainer/styles/panel = ExtResource("4_g0sjm") +Label/styles/panel = null +MarginContainer/styles/normal = null +Panel/styles/highlighted = null +Panel/styles/normal = null +Panel/styles/panel = SubResource("StyleBoxTexture_g78k6") +PanelContainer/styles/panel = SubResource("StyleBoxEmpty_xw22e") +RedButton/styles/panel = SubResource("StyleBoxFlat_tyjme") Tree/styles/panel = SubResource("StyleBoxTexture_22g74") diff --git a/ui/ui_theme_panel_style.tres b/ui/ui_theme_panel_style.tres index a25963b..d3b7549 100644 --- a/ui/ui_theme_panel_style.tres +++ b/ui/ui_theme_panel_style.tres @@ -1,9 +1,9 @@ [gd_resource type="StyleBoxTexture" load_steps=2 format=3 uid="uid://bh2a2lhk5hwi1"] -[ext_resource type="Texture2D" uid="uid://beaqo323661rh" path="res://assets/3rdparty/kenney/ui-pack-rpg-expansion/PNG/panel_blue.png" id="1_2n7cr"] +[ext_resource type="Texture2D" uid="uid://57o4ow08ky5q" path="res://assets/3rdparty/kenney/ui-pack-rpg-expansion/PNG/buttonSquare_blue_pressed.png" id="1_2u4x2"] [resource] -texture = ExtResource("1_2n7cr") +texture = ExtResource("1_2u4x2") texture_margin_left = 8.0 texture_margin_top = 8.0 texture_margin_right = 8.0 diff --git a/utils/SpringDamper.gd b/utils/SpringDamper.gd index a5cb720..3ec3982 100644 --- a/utils/SpringDamper.gd +++ b/utils/SpringDamper.gd @@ -33,7 +33,6 @@ func calc(x, xt, h:float): func calc_clamped_speed(x, xt, h:float, s_max:float): var x_old = x - var v_old = v var x_new = calc(x, xt, h) var vel_new = (x_new - x_old) / h diff --git a/world/level.tscn b/world/level.tscn index 41bdc78..623d3f3 100644 --- a/world/level.tscn +++ b/world/level.tscn @@ -33,7 +33,7 @@ cell_center_x = false cell_center_y = false cell_center_z = false data = { -"cells": PackedInt32Array(1, 65534, 655374, 1, 65531, 655374, 4, 65534, 655374, 4, 65531, 655374, 65534, 1, 655374, 1, 1, 655374, 4, 1, 655374, 7, 1, 655374, 7, 65534, 655374, 7, 65531, 655374, 7, 65528, 655374, 4, 65528, 13, 13, 1, 13, 13, 65534, 13, 13, 65531, 13, 13, 65528, 13, 65531, 65528, 1048590, 65531, 65531, 1048590, 65531, 65534, 1048590, 65531, 1, 1048590, 65531, 65525, 1048590, 65534, 65525, 1048590, 1, 65525, 1048590, 4, 65525, 1048590, 7, 65525, 1048590, 13, 65525, 13, 7, 65522, 1048590, 4, 65522, 1048590, 1, 65522, 1048590, 65534, 65522, 1048590, 65531, 65522, 1048590, 65531, 4, 1048590, 65534, 4, 1048590, 1, 4, 1048590, 4, 4, 1048590, 7, 4, 1048590, 65543, 65527, 9, 65541, 65527, 9, 131067, 65527, 9, 131066, 65529, 1441801, 131066, 4, 1441801, 131068, 5, 655369, 131071, 5, 655369, 65538, 5, 655369, 65541, 5, 655369, 65543, 5, 9, 65544, 4, 1441801, 65544, 1, 1441801, 15, 65521, 13, 15, 65522, 13, 15, 65523, 13, 15, 65524, 13, 15, 65525, 13, 15, 65526, 13, 16, 65527, 13, 16, 65528, 13, 15, 65528, 13, 15, 65529, 13, 15, 65530, 13, 65534, 65528, 13, 65534, 65529, 13, 65534, 65530, 13, 65534, 65531, 13, 65534, 65532, 13, 65534, 65533, 13, 65534, 65534, 13, 65534, 65535, 13, 65535, 65535, 13, 65535, 65534, 13, 65535, 65533, 13, 65535, 65532, 13, 65535, 65531, 13, 65535, 65530, 13, 65535, 65529, 13, 65535, 65528, 13, 65535, 65527, 13, 65534, 65527, 13, 65533, 65527, 13, 65533, 65526, 13, 65532, 65528, 13, 65533, 65528, 13, 0, 65528, 13, 0, 65527, 13, 1, 65527, 13, 1, 65528, 13, 2, 65528, 13, 3, 65528, 13, 5, 65528, 13, 12, 65521, 13, 12, 65522, 13, 12, 65523, 13, 12, 65524, 13, 12, 65525, 13, 12, 65526, 13, 12, 65527, 13, 12, 65528, 13, 12, 65529, 13, 12, 65530, 13, 12, 65531, 13, 12, 65532, 13, 12, 65533, 13, 12, 65534, 13, 12, 65535, 13, 12, 0, 13, 12, 1, 13, 12, 2, 13, 13, 65521, 13, 13, 65522, 13, 13, 65523, 13, 13, 65524, 13, 13, 65526, 13, 13, 65527, 13, 13, 65529, 13, 13, 65530, 13, 13, 65532, 13, 13, 65533, 13, 13, 65535, 13, 13, 0, 13, 13, 2, 13, 14, 65521, 13, 14, 65522, 13, 14, 65523, 13, 14, 65524, 13, 14, 65525, 13, 14, 65526, 13, 14, 65527, 13, 14, 65528, 13, 14, 65529, 13, 14, 65530, 13, 14, 65531, 13, 14, 65532, 13, 14, 65533, 13, 14, 65534, 13, 14, 65535, 13, 14, 0, 13, 14, 1, 13, 14, 2, 13, 15, 65527, 13, 15, 65531, 13, 15, 65532, 13, 15, 65533, 13, 15, 65534, 13, 15, 65535, 13, 15, 0, 13, 15, 1, 13, 15, 2, 13, 16, 65521, 13, 16, 65522, 13, 16, 65523, 13, 16, 65524, 13, 16, 65525, 13, 16, 65526, 13, 16, 65529, 13, 16, 65530, 13, 16, 65531, 13, 16, 65532, 13, 16, 65533, 13, 16, 65534, 13, 16, 65535, 13, 16, 0, 13, 16, 1, 13, 16, 2, 13, 17, 65521, 13, 17, 65522, 13, 17, 65523, 13, 17, 65524, 13, 17, 65525, 13, 17, 65526, 13, 17, 65527, 13, 17, 65528, 13, 17, 65529, 13, 17, 65530, 13, 17, 65531, 13, 17, 65532, 13, 17, 65533, 13, 17, 65534, 13, 17, 65535, 13, 17, 0, 13, 17, 1, 13, 17, 2, 13, 18, 65521, 13, 18, 65522, 13, 18, 65523, 13, 18, 65524, 13, 18, 65525, 13, 18, 65526, 13, 18, 65527, 13, 18, 65528, 13, 18, 65529, 13, 18, 65530, 13, 18, 65531, 13, 18, 65532, 13, 18, 65533, 13, 18, 65534, 13, 18, 65535, 13, 18, 0, 13, 18, 1, 13, 18, 2, 13, 19, 65521, 13, 19, 65522, 13, 19, 65523, 13, 19, 65524, 13, 19, 65525, 13, 19, 65526, 13, 19, 65527, 13, 19, 65528, 13, 19, 65529, 13, 19, 65530, 13, 19, 65531, 13, 19, 65532, 13, 19, 65533, 13, 19, 65534, 13, 19, 65535, 13, 19, 0, 13, 19, 1, 13, 19, 2, 13, 20, 65521, 13, 20, 65522, 13, 20, 65523, 13, 20, 65524, 13, 20, 65525, 13, 20, 65526, 13, 20, 65527, 13, 20, 65528, 13, 20, 65529, 13, 20, 65530, 13, 20, 65531, 13, 20, 65532, 13, 20, 65533, 13, 20, 65534, 13, 20, 65535, 13, 20, 0, 13, 20, 1, 13, 20, 2, 13, 21, 65521, 13, 21, 65522, 13, 21, 65523, 13, 21, 65524, 13, 21, 65525, 13, 21, 65526, 13, 21, 65527, 13, 21, 65528, 13, 21, 65529, 13, 21, 65530, 13, 21, 65531, 13, 21, 65532, 13, 21, 65533, 13, 21, 65534, 13, 21, 65535, 13, 21, 0, 13, 21, 1, 13, 21, 2, 13, 22, 65521, 13, 22, 65522, 13, 22, 65523, 13, 22, 65524, 13, 22, 65525, 13, 22, 65526, 13, 22, 65527, 13, 22, 65528, 13, 22, 65529, 13, 22, 65530, 13, 22, 65531, 13, 22, 65532, 13, 22, 65533, 13, 22, 65534, 13, 22, 65535, 13, 22, 0, 13, 22, 1, 13, 22, 2, 13, 23, 65521, 13, 23, 65522, 13, 23, 65523, 13, 23, 65524, 13, 23, 65525, 13, 23, 65526, 13, 23, 65527, 13, 23, 65528, 13, 23, 65529, 13, 23, 65530, 13, 23, 65531, 13, 23, 65532, 13, 23, 65533, 13, 23, 65534, 13, 23, 65535, 13, 23, 0, 13, 23, 1, 13, 23, 2, 13, 24, 65521, 13, 24, 65522, 13, 24, 65523, 13, 24, 65524, 13, 24, 65525, 13, 24, 65526, 13, 24, 65527, 13, 24, 65528, 13, 24, 65529, 13, 24, 65530, 13, 24, 65531, 13, 24, 65532, 13, 24, 65533, 13, 24, 65534, 13, 24, 65535, 13, 24, 0, 13, 24, 1, 13, 24, 2, 13, 25, 65521, 13, 25, 65522, 13, 25, 65523, 13, 25, 65524, 13, 25, 65525, 13, 25, 65526, 13, 25, 65527, 13, 25, 65528, 13, 25, 65529, 13, 25, 65530, 13, 25, 65531, 13, 25, 65532, 13, 25, 65533, 13, 25, 65534, 13, 25, 65535, 13, 25, 0, 13, 25, 1, 13, 25, 2, 13, 26, 65521, 13, 26, 65522, 13, 26, 65523, 13, 26, 65524, 13, 26, 65525, 13, 26, 65526, 13, 26, 65527, 13, 26, 65528, 13, 26, 65529, 13, 26, 65530, 13, 26, 65531, 13, 26, 65532, 13, 26, 65533, 13, 26, 65534, 13, 26, 65535, 13, 26, 0, 13, 26, 1, 13, 26, 2, 13, 27, 65521, 13, 27, 65522, 13, 27, 65523, 13, 27, 65524, 13, 27, 65525, 13, 27, 65526, 13, 27, 65527, 13, 27, 65528, 13, 27, 65529, 13, 27, 65530, 13, 27, 65531, 13, 27, 65532, 13, 27, 65533, 13, 27, 65534, 13, 27, 65535, 13, 27, 0, 13, 27, 1, 13, 27, 2, 13, 28, 65521, 13, 28, 65522, 13, 28, 65523, 13, 28, 65524, 13, 28, 65525, 13, 28, 65526, 13, 28, 65527, 13, 28, 65528, 13, 28, 65529, 13, 28, 65530, 13, 28, 65531, 13, 28, 65532, 13, 28, 65533, 13, 28, 65534, 13, 28, 65535, 13, 28, 0, 13, 28, 1, 13, 28, 2, 13, 29, 65521, 13, 29, 65522, 13, 29, 65523, 13, 29, 65524, 13, 29, 65525, 13, 29, 65526, 13, 29, 65527, 13, 29, 65528, 13, 29, 65529, 13, 29, 65530, 13, 29, 65531, 13, 29, 65532, 13, 29, 65533, 13, 29, 65534, 13, 29, 65535, 13, 29, 0, 13, 29, 1, 13, 29, 2, 13, 30, 65521, 13, 30, 65522, 13, 30, 65523, 13, 30, 65524, 13, 30, 65525, 13, 30, 65526, 13, 30, 65527, 13, 30, 65528, 13, 30, 65529, 13, 30, 65530, 13, 30, 65531, 13, 30, 65532, 13, 30, 65533, 13, 30, 65534, 13, 30, 65535, 13, 30, 0, 13, 30, 1, 13, 30, 2, 13, 31, 65521, 13, 31, 65522, 13, 31, 65523, 13, 31, 65524, 13, 31, 65525, 13, 31, 65526, 13, 31, 65527, 13, 31, 65528, 13, 31, 65529, 13, 31, 65530, 13, 31, 65531, 13, 31, 65532, 13, 31, 65533, 13, 31, 65534, 13, 31, 65535, 13, 31, 0, 13, 31, 1, 13, 31, 2, 13, 32, 65521, 13, 32, 65522, 13, 32, 65523, 13, 32, 65524, 13, 32, 65525, 13, 32, 65526, 13, 32, 65527, 13, 32, 65528, 13, 32, 65529, 13, 32, 65530, 13, 32, 65531, 13, 32, 65532, 13, 32, 65533, 13, 32, 65534, 13, 32, 65535, 13, 32, 0, 13, 32, 1, 13, 32, 2, 13, 3, 65517, 13, 0, 65517, 13, 65535, 65517, 13, 131067, 65532, 655377, 131066, 65532, 27, 131066, 65533, 27, 131067, 65533, 655377, 131066, 65534, 27, 131067, 65535, 655377, 131066, 0, 655377, 131067, 1, 655377, 131064, 65525, 27, 131063, 65525, 655377, 131063, 65526, 655377, 131064, 65526, 27, 131062, 65524, 655377, 65539, 65528, 655377, 65552, 65516, 27, 65550, 65517, 27, 65549, 65517, 27, 65547, 65517, 27, 65546, 65518, 27, 65545, 65518, 27, 65544, 65518, 27, 65543, 65517, 27, 65543, 65516, 27, 65544, 65516, 27, 65545, 65516, 27, 65547, 65516, 27, 65548, 65515, 27, 65548, 65516, 27, 65549, 65516, 27, 65550, 65516, 27, 65551, 65515, 27, 65552, 65515, 27, 65552, 65517, 27, 65551, 65517, 27, 65548, 65517, 27, 65546, 65517, 27, 65546, 65516, 27, 65545, 65515, 27, 65544, 65515, 27, 65543, 65515, 27, 65542, 65517, 27, 65542, 65518, 27, 65542, 65519, 27, 65543, 65519, 27, 65544, 65519, 27, 65545, 65520, 27, 65544, 65520, 27, 65543, 65520, 27, 65542, 65520, 27, 65541, 65520, 27, 65540, 65520, 27, 65539, 65519, 27, 65537, 65519, 27, 131070, 65519, 27, 131067, 65519, 27, 131066, 65519, 27, 131064, 65519, 27, 131065, 65519, 27, 131068, 65519, 27, 131069, 65519, 27, 65536, 65520, 27, 65538, 65520, 27, 65539, 65520, 27, 65537, 65520, 27, 131071, 65520, 27, 131070, 65520, 27, 131068, 65520, 27, 131067, 65520, 27, 131066, 65520, 27, 131065, 65520, 27, 131065, 65521, 27, 131064, 65521, 27, 131064, 65522, 27, 131064, 65523, 27, 131064, 65524, 27, 131065, 65526, 27, 65545, 65521, 27, 65546, 65522, 27, 65546, 65523, 27, 65546, 65524, 27, 65545, 65525, 27, 65545, 65526, 27, 65546, 65525, 27, 65546, 65526, 27, 65546, 65520, 27, 65546, 65521, 27, 65547, 65520, 27, 65547, 65519, 27, 65548, 65519, 27, 65550, 65519, 27, 65551, 65519, 27, 65552, 65519, 27, 65553, 65519, 27, 65554, 65519, 27, 65555, 65519, 27, 65553, 65520, 27, 65552, 65520, 27, 65549, 65519, 27, 65551, 65520, 27, 65550, 65520, 27, 65549, 65520, 27, 65548, 65520, 27, 65554, 65525, 27, 65554, 65526, 27, 65554, 65527, 27, 65554, 65528, 27, 65554, 65529, 27, 65555, 65529, 27, 65556, 65529, 27, 65556, 65528, 27, 65555, 65528, 27, 65553, 65527, 27, 131066, 65531, 27, 131066, 65530, 27, 131066, 65535, 27) +"cells": PackedInt32Array(1, 65534, 655374, 1, 65531, 655374, 4, 65534, 655374, 4, 65531, 655374, 65534, 1, 655374, 1, 1, 655374, 4, 1, 655374, 7, 1, 655374, 7, 65534, 655374, 7, 65531, 655374, 7, 65528, 655374, 4, 65528, 13, 13, 1, 13, 13, 65534, 13, 13, 65531, 13, 13, 65528, 13, 65531, 65528, 1048590, 65531, 65531, 1048590, 65531, 65534, 1048590, 65531, 1, 1048590, 65531, 65525, 1048590, 65534, 65525, 1048590, 1, 65525, 1048590, 4, 65525, 1048590, 7, 65525, 1048590, 13, 65525, 13, 7, 65522, 1048590, 4, 65522, 1048590, 1, 65522, 1048590, 65534, 65522, 1048590, 65531, 65522, 1048590, 65531, 4, 1048590, 65534, 4, 1048590, 1, 4, 1048590, 4, 4, 1048590, 7, 4, 1048590, 65543, 65527, 9, 65541, 65527, 9, 131067, 65527, 9, 131066, 65529, 1441801, 131066, 4, 1441801, 131068, 5, 655369, 131071, 5, 655369, 65538, 5, 655369, 65541, 5, 655369, 65543, 5, 9, 65544, 4, 1441801, 65544, 1, 1441801, 15, 65521, 13, 15, 65522, 13, 15, 65523, 13, 15, 65524, 13, 15, 65525, 13, 15, 65526, 13, 16, 65527, 13, 16, 65528, 13, 15, 65528, 13, 15, 65529, 13, 15, 65530, 13, 65534, 65528, 13, 65534, 65529, 13, 65534, 65530, 13, 65534, 65531, 13, 65534, 65532, 13, 65534, 65533, 13, 65534, 65534, 13, 65534, 65535, 13, 65535, 65535, 13, 65535, 65534, 13, 65535, 65533, 13, 65535, 65532, 13, 65535, 65531, 13, 65535, 65530, 13, 65535, 65529, 13, 65535, 65528, 13, 65535, 65527, 13, 65534, 65527, 13, 65533, 65527, 13, 65533, 65526, 13, 65532, 65528, 13, 65533, 65528, 13, 0, 65528, 13, 0, 65527, 13, 1, 65527, 13, 1, 65528, 13, 2, 65528, 13, 3, 65528, 13, 5, 65528, 13, 12, 65521, 13, 12, 65522, 13, 12, 65523, 13, 12, 65524, 13, 12, 65525, 13, 12, 65526, 13, 12, 65527, 13, 12, 65528, 13, 12, 65529, 13, 12, 65530, 13, 12, 65531, 13, 12, 65532, 13, 12, 65533, 13, 12, 65534, 13, 12, 65535, 13, 12, 0, 13, 12, 1, 13, 12, 2, 13, 13, 65521, 13, 13, 65522, 13, 13, 65523, 13, 13, 65524, 13, 13, 65526, 13, 13, 65527, 13, 13, 65529, 13, 13, 65530, 13, 13, 65532, 13, 13, 65533, 13, 13, 65535, 13, 13, 0, 13, 13, 2, 13, 14, 65521, 13, 14, 65522, 13, 14, 65523, 13, 14, 65524, 13, 14, 65525, 13, 14, 65526, 13, 14, 65527, 13, 14, 65528, 13, 14, 65529, 13, 14, 65530, 13, 14, 65531, 13, 14, 65532, 13, 14, 65533, 13, 14, 65534, 13, 14, 65535, 13, 14, 0, 13, 14, 1, 13, 14, 2, 13, 15, 65527, 13, 15, 65531, 13, 15, 65532, 13, 15, 65533, 13, 15, 65534, 13, 15, 65535, 13, 15, 0, 13, 15, 1, 13, 15, 2, 13, 16, 65521, 13, 16, 65522, 13, 16, 65523, 13, 16, 65524, 13, 16, 65525, 13, 16, 65526, 13, 16, 65529, 13, 16, 65530, 13, 16, 65531, 13, 16, 65532, 13, 16, 65533, 13, 16, 65534, 13, 16, 65535, 13, 16, 0, 13, 16, 1, 13, 16, 2, 13, 17, 65521, 13, 17, 65522, 13, 17, 65523, 13, 17, 65524, 13, 17, 65525, 13, 17, 65526, 13, 17, 65527, 13, 17, 65528, 13, 17, 65529, 13, 17, 65530, 13, 17, 65531, 13, 17, 65532, 13, 17, 65533, 13, 17, 65534, 13, 17, 65535, 13, 17, 0, 13, 17, 1, 13, 17, 2, 13, 18, 65521, 13, 18, 65522, 13, 18, 65523, 13, 18, 65524, 13, 18, 65525, 13, 18, 65526, 13, 18, 65527, 13, 18, 65528, 13, 18, 65529, 13, 18, 65530, 13, 18, 65531, 13, 18, 65532, 13, 18, 65533, 13, 18, 65534, 13, 18, 65535, 13, 18, 0, 13, 18, 1, 13, 18, 2, 13, 19, 65521, 13, 19, 65522, 13, 19, 65523, 13, 19, 65524, 13, 19, 65525, 13, 19, 65526, 13, 19, 65527, 13, 19, 65528, 13, 19, 65529, 13, 19, 65530, 13, 19, 65531, 13, 19, 65532, 13, 19, 65533, 13, 19, 65534, 13, 19, 65535, 13, 19, 0, 13, 19, 1, 13, 19, 2, 13, 20, 65521, 13, 20, 65522, 13, 20, 65523, 13, 20, 65524, 13, 20, 65525, 13, 20, 65526, 13, 20, 65527, 13, 20, 65528, 13, 20, 65529, 13, 20, 65530, 13, 20, 65531, 13, 20, 65532, 13, 20, 65533, 13, 20, 65534, 13, 20, 65535, 13, 20, 0, 13, 20, 1, 13, 20, 2, 13, 21, 65521, 13, 21, 65522, 13, 21, 65523, 13, 21, 65524, 13, 21, 65525, 13, 21, 65526, 13, 21, 65527, 13, 21, 65528, 13, 21, 65529, 13, 21, 65530, 13, 21, 65531, 13, 21, 65532, 13, 21, 65533, 13, 21, 65534, 13, 21, 65535, 13, 21, 0, 13, 21, 1, 13, 21, 2, 13, 22, 65521, 13, 22, 65522, 13, 22, 65523, 13, 22, 65524, 13, 22, 65525, 13, 22, 65526, 13, 22, 65527, 13, 22, 65528, 13, 22, 65529, 13, 22, 65530, 13, 22, 65531, 13, 22, 65532, 13, 22, 65533, 13, 22, 65534, 13, 22, 65535, 13, 22, 0, 13, 22, 1, 13, 22, 2, 13, 23, 65521, 13, 23, 65522, 13, 23, 65523, 13, 23, 65524, 13, 23, 65525, 13, 23, 65526, 13, 23, 65527, 13, 23, 65528, 13, 23, 65529, 13, 23, 65530, 13, 23, 65531, 13, 23, 65532, 13, 23, 65533, 13, 23, 65534, 13, 23, 65535, 13, 23, 0, 13, 23, 1, 13, 23, 2, 13, 24, 65521, 13, 24, 65522, 13, 24, 65523, 13, 24, 65524, 13, 24, 65525, 13, 24, 65526, 13, 24, 65527, 13, 24, 65528, 13, 24, 65529, 13, 24, 65530, 13, 24, 65531, 13, 24, 65532, 13, 24, 65533, 13, 24, 65534, 13, 24, 65535, 13, 24, 0, 13, 24, 1, 13, 24, 2, 13, 25, 65521, 13, 25, 65522, 13, 25, 65523, 13, 25, 65524, 13, 25, 65525, 13, 25, 65526, 13, 25, 65527, 13, 25, 65528, 13, 25, 65529, 13, 25, 65530, 13, 25, 65531, 13, 25, 65532, 13, 25, 65533, 13, 25, 65534, 13, 25, 65535, 13, 25, 0, 13, 25, 1, 13, 25, 2, 13, 26, 65521, 13, 26, 65522, 13, 26, 65523, 13, 26, 65524, 13, 26, 65525, 13, 26, 65526, 13, 26, 65527, 13, 26, 65528, 13, 26, 65529, 13, 26, 65530, 13, 26, 65531, 13, 26, 65532, 13, 26, 65533, 13, 26, 65534, 13, 26, 65535, 13, 26, 0, 13, 26, 1, 13, 26, 2, 13, 27, 65521, 13, 27, 65522, 13, 27, 65523, 13, 27, 65524, 13, 27, 65525, 13, 27, 65526, 13, 27, 65527, 13, 27, 65528, 13, 27, 65529, 13, 27, 65530, 13, 27, 65531, 13, 27, 65532, 13, 27, 65533, 13, 27, 65534, 13, 27, 65535, 13, 27, 0, 13, 27, 1, 13, 27, 2, 13, 28, 65521, 13, 28, 65522, 13, 28, 65523, 13, 28, 65524, 13, 28, 65525, 13, 28, 65526, 13, 28, 65527, 13, 28, 65528, 13, 28, 65529, 13, 28, 65530, 13, 28, 65531, 13, 28, 65532, 13, 28, 65533, 13, 28, 65534, 13, 28, 65535, 13, 28, 0, 13, 28, 1, 13, 28, 2, 13, 29, 65521, 13, 29, 65522, 13, 29, 65523, 13, 29, 65524, 13, 29, 65525, 13, 29, 65526, 13, 29, 65527, 13, 29, 65528, 13, 29, 65529, 13, 29, 65530, 13, 29, 65531, 13, 29, 65532, 13, 29, 65533, 13, 29, 65534, 13, 29, 65535, 13, 29, 0, 13, 29, 1, 13, 29, 2, 13, 30, 65521, 13, 30, 65522, 13, 30, 65523, 13, 30, 65524, 13, 30, 65525, 13, 30, 65526, 13, 30, 65527, 13, 30, 65528, 13, 30, 65529, 13, 30, 65530, 13, 30, 65531, 13, 30, 65532, 13, 30, 65533, 13, 30, 65534, 13, 30, 65535, 13, 30, 0, 13, 30, 1, 13, 30, 2, 13, 31, 65521, 13, 31, 65522, 13, 31, 65523, 13, 31, 65524, 13, 31, 65525, 13, 31, 65526, 13, 31, 65527, 13, 31, 65528, 13, 31, 65529, 13, 31, 65530, 13, 31, 65531, 13, 31, 65532, 13, 31, 65533, 13, 31, 65534, 13, 31, 65535, 13, 31, 0, 13, 31, 1, 13, 31, 2, 13, 32, 65521, 13, 32, 65522, 13, 32, 65523, 13, 32, 65524, 13, 32, 65525, 13, 32, 65526, 13, 32, 65527, 13, 32, 65528, 13, 32, 65529, 13, 32, 65530, 13, 32, 65531, 13, 32, 65532, 13, 32, 65533, 13, 32, 65534, 13, 32, 65535, 13, 32, 0, 13, 32, 1, 13, 32, 2, 13, 3, 65517, 13, 0, 65517, 13, 65535, 65517, 13, 131067, 65532, 655377, 131066, 65532, 27, 131066, 65533, 27, 131067, 65533, 655377, 131066, 65534, 27, 131067, 65535, 655377, 131066, 0, 655377, 131067, 1, 655377, 131064, 65525, 27, 131063, 65525, 655377, 131063, 65526, 655377, 131064, 65526, 27, 131062, 65524, 655377, 65539, 65528, 655377, 65552, 65516, 27, 65550, 65517, 27, 65549, 65517, 27, 65547, 65517, 27, 65546, 65518, 27, 65545, 65518, 27, 65544, 65518, 27, 65543, 65517, 27, 65543, 65516, 27, 65544, 65516, 27, 65545, 65516, 27, 65547, 65516, 27, 65548, 65515, 27, 65548, 65516, 27, 65549, 65516, 27, 65550, 65516, 27, 65551, 65515, 27, 65552, 65515, 27, 65552, 65517, 27, 65551, 65517, 27, 65548, 65517, 27, 65546, 65517, 27, 65546, 65516, 27, 65545, 65515, 27, 65544, 65515, 27, 65543, 65515, 27, 65542, 65517, 27, 65542, 65518, 27, 65542, 65519, 27, 65543, 65519, 27, 65544, 65519, 27, 65545, 65520, 27, 65544, 65520, 27, 65543, 65520, 27, 65542, 65520, 27, 65541, 65520, 27, 65540, 65520, 27, 65539, 65519, 27, 65537, 65519, 27, 131070, 65519, 27, 131067, 65519, 27, 131066, 65519, 27, 131064, 65519, 27, 131065, 65519, 27, 131068, 65519, 27, 131069, 65519, 27, 65536, 65520, 27, 65538, 65520, 27, 65539, 65520, 27, 65537, 65520, 27, 131071, 65520, 27, 131070, 65520, 27, 131068, 65520, 27, 131067, 65520, 27, 131066, 65520, 27, 131065, 65520, 27, 131065, 65521, 27, 131064, 65521, 27, 131064, 65522, 27, 131064, 65523, 27, 131064, 65524, 27, 131065, 65526, 27, 65545, 65521, 27, 65546, 65522, 27, 65546, 65523, 27, 65546, 65524, 27, 65545, 65525, 27, 65545, 65526, 27, 65546, 65525, 27, 65546, 65526, 27, 65546, 65520, 27, 65546, 65521, 27, 65547, 65520, 27, 65547, 65519, 27, 65548, 65519, 27, 65550, 65519, 27, 65551, 65519, 27, 65552, 65519, 27, 65553, 65519, 27, 65554, 65519, 27, 65555, 65519, 27, 65553, 65520, 27, 65552, 65520, 27, 65549, 65519, 27, 65551, 65520, 27, 65550, 65520, 27, 65549, 65520, 27, 65548, 65520, 27, 65554, 65525, 27, 65554, 65526, 27, 65554, 65527, 27, 65554, 65528, 27, 65554, 65529, 27, 65555, 65529, 27, 65556, 65529, 27, 65556, 65528, 27, 65555, 65528, 27, 65553, 65527, 27, 131066, 65531, 27, 131066, 65530, 27, 131066, 65535, 27, 65536, 65529, 17, 65537, 65531, 18) } metadata/_editor_floor_ = Vector3(0, 1, 0)