diff --git a/Pot.tres b/Pot.tres new file mode 100644 index 0000000..f9915cf --- /dev/null +++ b/Pot.tres @@ -0,0 +1,45 @@ +[gd_resource type="VisualShader" load_steps=4 format=3 uid="uid://bwqye4r8hf2j8"] + +[sub_resource type="VisualShaderNodeInput" id="VisualShaderNodeInput_k82ey"] +input_name = "time" + +[sub_resource type="VisualShaderNodeTransformOp" id="VisualShaderNodeTransformOp_k82ey"] +operator = 4 + +[sub_resource type="VisualShaderNodeColorFunc" id="VisualShaderNodeColorFunc_vs1jt"] +output_port_for_preview = 0 +default_input_values = [0, Vector3(1, 0, 0)] +function = 4 + +[resource] +code = "shader_type spatial; +render_mode blend_mix, depth_draw_opaque, cull_back, diffuse_lambert, specular_schlick_ggx; + + + + +void fragment() { + vec3 n_out4p0; +// ColorFunc:4 + vec3 n_in4p0 = vec3(1.00000, 0.00000, 0.00000); + { + vec3 c = clamp(n_in4p0, vec3(0.0), vec3(1.0)); + const vec3 a = vec3(0.055f); + n_out4p0 = mix((vec3(1.0f) + a) * pow(c.rgb, vec3(1.0f / 2.4f)) - a, 12.92f * c.rgb, lessThan(c.rgb, vec3(0.0031308f))); + } + + +// Output:0 + ALBEDO = n_out4p0; + + +} +" +graph_offset = Vector2(-323.167, 182.894) +nodes/fragment/2/node = SubResource("VisualShaderNodeInput_k82ey") +nodes/fragment/2/position = Vector2(-140, 280) +nodes/fragment/3/node = SubResource("VisualShaderNodeTransformOp_k82ey") +nodes/fragment/3/position = Vector2(-200, 600) +nodes/fragment/4/node = SubResource("VisualShaderNodeColorFunc_vs1jt") +nodes/fragment/4/position = Vector2(-40, 400) +nodes/fragment/connections = PackedInt32Array(4, 0, 0, 0) diff --git a/Scenes/Prefabs/DoubleBeds.tscn b/Scenes/Prefabs/DoubleBeds.tscn index 98bab77..94a40b7 100644 --- a/Scenes/Prefabs/DoubleBeds.tscn +++ b/Scenes/Prefabs/DoubleBeds.tscn @@ -57,7 +57,7 @@ surface_material_override/1 = SubResource("ShaderMaterial_sp2kd") surface_material_override/2 = SubResource("ShaderMaterial_c1046") [node name="DoubleBeds" type="MeshInstance3D" parent="."] -transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, -1.83435, 0, 0) +transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, -1.83435, -0.42751, 0) mesh = ExtResource("2_8ssp7") surface_material_override/0 = SubResource("StandardMaterial3D_c1046") surface_material_override/1 = SubResource("StandardMaterial3D_k1k40") diff --git a/Scenes/Prefabs/Pot.tscn b/Scenes/Prefabs/Pot.tscn index e998f7b..3451bdf 100644 --- a/Scenes/Prefabs/Pot.tscn +++ b/Scenes/Prefabs/Pot.tscn @@ -25,8 +25,10 @@ normal_texture = ExtResource("6_r71lq") albedo_texture = ExtResource("7_e7ek7") [node name="Pot" type="Node3D"] +transform = Transform3D(0.5, 0, 0, 0, 0.5, 0, 0, 0, 0.5, 0, 0, 0) [node name="Pot" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -3.41814, 0) mesh = ExtResource("1_ps8qt") surface_material_override/0 = SubResource("StandardMaterial3D_dn6sd") surface_material_override/1 = SubResource("StandardMaterial3D_uhv8u") diff --git a/Scenes/Prefabs/cart.tscn b/Scenes/Prefabs/cart.tscn index 39f472d..5b42d86 100644 --- a/Scenes/Prefabs/cart.tscn +++ b/Scenes/Prefabs/cart.tscn @@ -21,7 +21,7 @@ size = Vector3(22.1814, 0.0957031, 5.72699) size = Vector3(22.2341, 4.23804, 0.494629) [sub_resource type="BoxShape3D" id="BoxShape3D_eosii"] -size = Vector3(5.40002, 4.29805, 2.28394) +size = Vector3(5.40002, 3.46348, 2.28394) [sub_resource type="BoxMesh" id="BoxMesh_eosii"] @@ -54,6 +54,7 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.352722, 1.07356, -0.102142 shape = SubResource("BoxShape3D_ru0md") [node name="StaticBody3D" type="StaticBody3D" parent="Cart-bottom/NavigationRegion3D"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.169229, 0) [node name="CollisionShape3D" type="CollisionShape3D" parent="Cart-bottom/NavigationRegion3D/StaticBody3D"] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.930367, -0.452148, 0.568024) @@ -107,7 +108,7 @@ buildTransparentPreivew = NodePath("BuildAreaModeView") metadata/is_building_area = true [node name="smallBuildingArea2" type="CollisionShape3D" parent="BuildingArea"] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -5.69414, 1.02766, -1.22106) +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -5.69414, 1.44495, -1.22106) shape = SubResource("BoxShape3D_eosii") metadata/is_building_area = true diff --git a/Scenes/Prefabs/main_game_ui.tscn b/Scenes/Prefabs/main_game_ui.tscn new file mode 100644 index 0000000..d9a58b1 --- /dev/null +++ b/Scenes/Prefabs/main_game_ui.tscn @@ -0,0 +1,73 @@ +[gd_scene load_steps=3 format=3 uid="uid://cyaesj3qjb5um"] + +[ext_resource type="Script" uid="uid://bqh6f4f4sc4ba" path="res://Scripts/ui/panel_build_select.gd" id="1_dew6i"] +[ext_resource type="Script" uid="uid://3bsllk6udire" path="res://Scripts/button_select_build.gd" id="1_yp16r"] + +[node name="MainGameUi" 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="Panel" parent="."] +layout_mode = 1 +anchors_preset = 5 +anchor_left = 0.5 +anchor_right = 0.5 +offset_left = -51.0 +offset_top = 20.0 +offset_right = 51.0 +offset_bottom = 60.0 +grow_horizontal = 2 + +[node name="TempLabel" type="Label" parent="Panel"] +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -26.0 +offset_top = -11.5 +offset_right = 26.0 +offset_bottom = 11.5 +grow_horizontal = 2 +grow_vertical = 2 +text = "-30.0 C" + +[node name="Panel2" type="Panel" parent="."] +layout_mode = 1 +anchors_preset = 12 +anchor_top = 1.0 +anchor_right = 1.0 +anchor_bottom = 1.0 +offset_top = -67.0 +grow_horizontal = 2 +grow_vertical = 0 +script = ExtResource("1_dew6i") + +[node name="HBoxContainer" type="HBoxContainer" parent="Panel2"] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 + +[node name="ButtonCreateBed" type="Button" parent="Panel2/HBoxContainer"] +custom_minimum_size = Vector2(100, 0) +layout_mode = 2 +text = "Bed" +script = ExtResource("1_yp16r") + +[node name="ButtonCreatePot" type="Button" parent="Panel2/HBoxContainer"] +custom_minimum_size = Vector2(100, 0) +layout_mode = 2 +text = "Pot" +script = ExtResource("1_yp16r") +id = 1 + +[connection signal="pressed" from="Panel2/HBoxContainer/ButtonCreateBed" to="Panel2/HBoxContainer/ButtonCreateBed" method="_on_pressed"] +[connection signal="pressed" from="Panel2/HBoxContainer/ButtonCreatePot" to="Panel2/HBoxContainer/ButtonCreatePot" method="_on_pressed"] diff --git a/Scenes/main.tscn b/Scenes/main.tscn index ac572b8..eeee3f9 100644 --- a/Scenes/main.tscn +++ b/Scenes/main.tscn @@ -1,7 +1,8 @@ -[gd_scene load_steps=12 format=3 uid="uid://bj7y7q2qkpnci"] +[gd_scene load_steps=13 format=3 uid="uid://bj7y7q2qkpnci"] [ext_resource type="ArrayMesh" uid="uid://622ethh2pdfa" path="res://Blends/road/road.obj" id="4_jjvhh"] [ext_resource type="PackedScene" uid="uid://dqrqq5vg8hek3" path="res://Scenes/Prefabs/Person.tscn" id="5_kry3j"] +[ext_resource type="PackedScene" uid="uid://cyaesj3qjb5um" path="res://Scenes/Prefabs/main_game_ui.tscn" id="6_6bp64"] [ext_resource type="PackedScene" uid="uid://dim2geqhn6d35" path="res://Scenes/Prefabs/cart.tscn" id="6_21xkr"] [ext_resource type="PackedScene" uid="uid://dy03tqug33fep" path="res://Blends/ground.blend" id="6_344ge"] [ext_resource type="Script" uid="uid://drrp1k2q71hq2" path="res://Scripts/camera_3d.gd" id="7_6bp64"] @@ -115,3 +116,14 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 180.354, 0.385, -59.426) [node name="Person" parent="." instance=ExtResource("5_kry3j")] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.335692, 3.32679, -60.6947) + +[node name="MainGameUi" parent="." instance=ExtResource("6_6bp64")] +offset_left = -1.0 +offset_top = 1.0 +offset_right = -1.0 +offset_bottom = 1.0 +focus_mode = 1 +mouse_filter = 2 + +[node name="Marker3D" type="Marker3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2.90278, -57.5436) diff --git a/Scripts/build_manager.gd b/Scripts/build_manager.gd new file mode 100644 index 0000000..421749a --- /dev/null +++ b/Scripts/build_manager.gd @@ -0,0 +1,22 @@ +extends Node + +@onready var DoubleBeds = preload("res://Scenes/Prefabs/DoubleBeds.tscn") +@onready var Pot = preload("res://Scenes/Prefabs/Pot.tscn") + +var selected_object_id: int + + +var global_y = 2.903 + + +func _ready() -> void: + print(DoubleBeds) + +func get_preview_object(): + var selected_object + match selected_object_id: + 0: + selected_object = DoubleBeds + 1: + selected_object = Pot + return selected_object diff --git a/Scripts/build_manager.gd.uid b/Scripts/build_manager.gd.uid new file mode 100644 index 0000000..3f892c0 --- /dev/null +++ b/Scripts/build_manager.gd.uid @@ -0,0 +1 @@ +uid://672n647s560w diff --git a/Scripts/building_area.gd b/Scripts/building_area.gd index 1054be2..180f140 100644 --- a/Scripts/building_area.gd +++ b/Scripts/building_area.gd @@ -31,8 +31,11 @@ func _mouse_exit() -> void: hide_preview() func show_preview(): - previewObject = beds.instantiate() + #previewObject = beds.instantiate() + previewObject = BuildManager.get_preview_object().instantiate() + areas[0].add_child(previewObject) + #previewObject.global_position.y = BuildManager.global_y buildTransparentPreivew.visible = false Global.preview_created.emit() diff --git a/Scripts/button_select_build.gd b/Scripts/button_select_build.gd new file mode 100644 index 0000000..5df024b --- /dev/null +++ b/Scripts/button_select_build.gd @@ -0,0 +1,10 @@ +extends Button + + +@export var id: int + + +func _on_pressed() -> void: + BuildManager.selected_object_id = id + print(BuildManager.selected_object_id) + diff --git a/Scripts/button_select_build.gd.uid b/Scripts/button_select_build.gd.uid new file mode 100644 index 0000000..73163a0 --- /dev/null +++ b/Scripts/button_select_build.gd.uid @@ -0,0 +1 @@ +uid://3bsllk6udire diff --git a/Scripts/ui/panel_build_select.gd b/Scripts/ui/panel_build_select.gd new file mode 100644 index 0000000..88584d8 --- /dev/null +++ b/Scripts/ui/panel_build_select.gd @@ -0,0 +1,15 @@ +extends Panel + + +func _ready() -> void: + self.visible = false + Global.enter_build_mode.connect(_on_enter_build_mode) + Global.exit_build_mode.connect(_on_exit_build_mode) + + +func _on_enter_build_mode(): + self.visible = true + + +func _on_exit_build_mode(): + self.visible = false diff --git a/Scripts/ui/panel_build_select.gd.uid b/Scripts/ui/panel_build_select.gd.uid new file mode 100644 index 0000000..96b6b73 --- /dev/null +++ b/Scripts/ui/panel_build_select.gd.uid @@ -0,0 +1 @@ +uid://bqh6f4f4sc4ba diff --git a/Shaders/fire.gdshader b/Shaders/fire.gdshader new file mode 100644 index 0000000..5502843 --- /dev/null +++ b/Shaders/fire.gdshader @@ -0,0 +1,43 @@ +shader_type spatial; +render_mode unshaded, cull_disabled; + +// uniforms: detail_strength, scroll_speed, fire_height, fire_shape, +// fire_thickness, fire_sharpness, intensity +// noise parameters: noise_octaves, noise_lacunarity, noise_gain, +// noise_amplitude, noise_frequency + +//float hash(vec2 p) { /* ... */ } +//float noise(vec2 x) { /* ... */ } +//float fbm(vec2 p) { /* ...mix octaves...*/ } + +void fragment() { + vec2 uv = UV; + vec2 muv = -uv; + muv.x = mod(muv.x, 1.0) - 0.5; + muv.y += 0.84; + + float scroll = scroll_speed * detail_strength * TIME; + float n = fbm(detail_strength * muv - vec2(0.0, scroll)); + + float fire_intensity = intensity - 16.0 * fire_sharpness * pow( + max(0.0, + length( + muv * vec2((1.0/fire_thickness) + muv.y * fire_shape, 1.0/fire_height) + ) - n * max(0.0, muv.y + 0.25) + ), 1.2 + ); + + float fi1 = clamp(n * fire_intensity * (1.5 - pow(uv.y, 14.0)), 0.0, 1.0); + + vec3 col = vec3( + 1.5 * fi1, + 1.5 * pow(fi1, 3.0), + pow(fi1, 6.0) + ); + + float alpha = fire_intensity * (1.0 - pow(uv.y, 3.0)); + vec4 final = vec4(mix(vec3(0.0), col, alpha), alpha); + + ALBEDO = final.rgb; + ALPHA = final.a; +} diff --git a/Shaders/fire.gdshader.uid b/Shaders/fire.gdshader.uid new file mode 100644 index 0000000..5f46e39 --- /dev/null +++ b/Shaders/fire.gdshader.uid @@ -0,0 +1 @@ +uid://by8d646frg4b5 diff --git a/project.godot b/project.godot index 9c11c4f..86762f9 100644 --- a/project.godot +++ b/project.godot @@ -18,6 +18,7 @@ config/icon="res://icon.svg" [autoload] Global="*res://Scripts/global_script.gd" +BuildManager="*res://Scripts/build_manager.gd" [editor_plugins]