Compare commits

...

2 Commits

Author SHA1 Message Date
Martin Felis b9148e39f4 Added colliders to additional mesh library elements. 2024-09-14 12:46:04 +02:00
Martin Felis 10d44a8f7b Added tool slot selection, some progress on the BuildSystem. 2024-09-14 12:45:42 +02:00
29 changed files with 1724 additions and 632 deletions

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.5 KiB

After

Width:  |  Height:  |  Size: 2.1 KiB

View File

@ -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

View File

@ -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)

View File

Before

Width:  |  Height:  |  Size: 2.1 KiB

After

Width:  |  Height:  |  Size: 2.1 KiB

View File

@ -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]

View File

@ -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")]

View File

@ -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

12
data/items/floor.tres Normal file
View File

@ -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

11
data/recipes/floor.tres Normal file
View File

@ -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")])

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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"

View File

@ -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

23
scenes/game.gd Normal file
View File

@ -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)

View File

@ -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"]

View File

@ -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))

View File

@ -1,4 +1,4 @@
extends PanelContainer
extends Panel
func _unhandled_key_input(event:InputEvent):
var key_event:InputEventKey = event as InputEventKey

View File

@ -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:

View File

@ -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)

View File

@ -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"

30
ui/theme_preview.tscn Normal file
View File

@ -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

View File

@ -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")

View File

@ -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

View File

@ -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

File diff suppressed because one or more lines are too long