diff --git a/Exports/Linux/2025-05-04(viewportscaling)/ProjektLuzid.apk b/Exports/Linux/2025-05-04(viewportscaling)/ProjektLuzid.apk new file mode 100644 index 0000000..9a474ee Binary files /dev/null and b/Exports/Linux/2025-05-04(viewportscaling)/ProjektLuzid.apk differ diff --git a/Exports/Linux/2025-05-04(viewportscaling)/ProjektLuzid.apk.idsig b/Exports/Linux/2025-05-04(viewportscaling)/ProjektLuzid.apk.idsig new file mode 100644 index 0000000..3bdc93e Binary files /dev/null and b/Exports/Linux/2025-05-04(viewportscaling)/ProjektLuzid.apk.idsig differ diff --git a/Exports/Linux/2025-05-04(viewportscaling)/ProjektLuzid.pck b/Exports/Linux/2025-05-04(viewportscaling)/ProjektLuzid.pck index a66eddf..4f6dc8e 100644 Binary files a/Exports/Linux/2025-05-04(viewportscaling)/ProjektLuzid.pck and b/Exports/Linux/2025-05-04(viewportscaling)/ProjektLuzid.pck differ diff --git a/Level_Core.gd b/Level_Core.gd new file mode 100644 index 0000000..67e954f --- /dev/null +++ b/Level_Core.gd @@ -0,0 +1 @@ +extends Node3D diff --git a/Level_Core.gd.uid b/Level_Core.gd.uid new file mode 100644 index 0000000..fe5577e --- /dev/null +++ b/Level_Core.gd.uid @@ -0,0 +1 @@ +uid://cypbow1nrmn5a diff --git a/Level_Core.tscn b/Level_Core.tscn index b8a2562..6a70e43 100644 --- a/Level_Core.tscn +++ b/Level_Core.tscn @@ -1,6 +1,6 @@ -[gd_scene load_steps=23 format=3 uid="uid://bn20cqfwvm2oe"] +[gd_scene load_steps=24 format=3 uid="uid://bn20cqfwvm2oe"] -[ext_resource type="Script" uid="uid://wr38f8q1w7yq" path="res://pause_menu.gd" id="1_fwt2i"] +[ext_resource type="Script" uid="uid://wr38f8q1w7yq" path="res://main.gd" id="1_fwt2i"] [ext_resource type="PackedScene" uid="uid://bs6yq6gy7k2sb" path="res://player.tscn" id="1_lsi31"] [ext_resource type="Shape3D" uid="uid://30um6cm5oj6q" path="res://wall_cwt.tres" id="2_7sds5"] [ext_resource type="FontFile" uid="uid://rswq6vrwr2nx" path="res://InstrumentSans-VariableFont_wdth,wght.ttf" id="2_fq2vn"] @@ -30,6 +30,10 @@ albedo_texture = ExtResource("2_gp22r") [sub_resource type="PlaneMesh" id="PlaneMesh_rv2mx"] size = Vector2(10, 10) +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_33ny2"] +transparency = 1 +albedo_color = Color(0.618889, 0.459095, 1, 1) + [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_o66vw"] albedo_texture = ExtResource("5_r3eyv") @@ -101,10 +105,11 @@ shape = ExtResource("3_n0qnv") transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 0.5, -27.5, 10, 12.5) mesh = SubResource("PlaneMesh_rv2mx") skeleton = NodePath("../MeshInstance3D") +surface_material_override/0 = SubResource("StandardMaterial3D_33ny2") -[node name="StaticBody3D" type="StaticBody3D" parent="MeshInstance3D14"] +[node name="StaticBody3D_S1" type="StaticBody3D" parent="MeshInstance3D14"] -[node name="CollisionShape3D" type="CollisionShape3D" parent="MeshInstance3D14/StaticBody3D"] +[node name="CollisionShape3D" type="CollisionShape3D" parent="MeshInstance3D14/StaticBody3D_S1"] shape = ExtResource("3_n0qnv") [node name="MeshInstance3D25" type="MeshInstance3D" parent="."] @@ -121,12 +126,19 @@ shape = ExtResource("3_n0qnv") transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 0.5, -27.5, 10, 7.5) mesh = SubResource("PlaneMesh_rv2mx") skeleton = NodePath("../MeshInstance3D") +surface_material_override/0 = SubResource("StandardMaterial3D_33ny2") -[node name="StaticBody3D" type="StaticBody3D" parent="MeshInstance3D24"] +[node name="StaticBody3D_S1" type="StaticBody3D" parent="MeshInstance3D24"] -[node name="CollisionShape3D" type="CollisionShape3D" parent="MeshInstance3D24/StaticBody3D"] +[node name="CollisionShape3D_S1" type="CollisionShape3D" parent="MeshInstance3D24/StaticBody3D_S1"] shape = ExtResource("3_n0qnv") +[node name="MeshInstance3D49" type="MeshInstance3D" parent="."] +transform = Transform3D(-3.49691e-08, -1, -1.31134e-08, 0, -4.37114e-08, 0.3, -0.8, 4.37114e-08, 5.73206e-16, -30.8179, 12, 10.0294) +mesh = SubResource("PlaneMesh_rv2mx") +skeleton = NodePath("../MeshInstance3D") +surface_material_override/0 = SubResource("StandardMaterial3D_33ny2") + [node name="MeshInstance3D26" type="MeshInstance3D" parent="."] transform = Transform3D(1, 0, 0, 0, 0.707107, 0.353553, 0, -0.707107, 0.353553, -12.5, 10, 12.5) mesh = SubResource("PlaneMesh_rv2mx") @@ -280,7 +292,7 @@ skeleton = NodePath("../MeshInstance3D") [node name="StaticBody3D" type="StaticBody3D" parent="MeshInstance3D48"] [node name="CollisionShape3D" type="CollisionShape3D" parent="MeshInstance3D48/StaticBody3D"] -shape = ExtResource("3_n0qnv") +shape = ExtResource("2_7sds5") [node name="MeshInstance3D6" type="MeshInstance3D" parent="."] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 10, 0, -10) @@ -493,6 +505,7 @@ mesh = SubResource("PlaneMesh_rv2mx") shape = ExtResource("3_n0qnv") [node name="Player" parent="." instance=ExtResource("1_lsi31")] +unique_name_in_owner = true transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2, 1.3736) top_level = true linear_damp = 3.0 @@ -553,7 +566,7 @@ transform = Transform3D(-4.37113e-08, 0, -1, 0, 1, 0, 0.999999, 0, -4.37115e-08, offset = Vector2(1, 0) modulate = Color(0.943031, 0.787658, 0.994854, 1) outline_modulate = Color(0.00803253, 9.36218e-06, 0.0382829, 1) -text = "In this sattion, you need to solve some mathematical +text = "In this station, you need to solve some mathematical equations (I know, boring) and get the answer right. If you end up answering even one wrong, you'll have to restart this entire station. this section also diff --git a/checkpoints.gd b/checkpoints.gd new file mode 100644 index 0000000..cd5f12d --- /dev/null +++ b/checkpoints.gd @@ -0,0 +1,6 @@ +extends Node + +var reachedCheckpoint = 0 + +func _ready() -> void: + print("owo"); diff --git a/checkpoints.gd.uid b/checkpoints.gd.uid new file mode 100644 index 0000000..abb50a3 --- /dev/null +++ b/checkpoints.gd.uid @@ -0,0 +1 @@ +uid://tfbssbkoeg6p diff --git a/export_presets.cfg b/export_presets.cfg index ea632e0..d8a343e 100644 --- a/export_presets.cfg +++ b/export_presets.cfg @@ -162,7 +162,7 @@ custom_features="" export_filter="all_resources" include_filter="" exclude_filter="" -export_path="" +export_path="Exports/Linux/2025-05-04(viewportscaling)/ProjektLuzid.apk" patches=PackedStringArray() encryption_include_filters="" encryption_exclude_filters="" @@ -182,10 +182,10 @@ gradle_build/compress_native_libraries=false gradle_build/export_format=0 gradle_build/min_sdk="" gradle_build/target_sdk="" -architectures/armeabi-v7a=false +architectures/armeabi-v7a=true architectures/arm64-v8a=true architectures/x86=false -architectures/x86_64=false +architectures/x86_64=true version/code=1 version/name="" package/unique_name="com.example.$genname" diff --git a/main game.tscn b/main game.tscn index e5c0e26..dc9d6f1 100644 --- a/main game.tscn +++ b/main game.tscn @@ -14,3 +14,18 @@ background_color = Color(0.6242, 0.697431, 1, 1) environment = SubResource("Environment_v4kxd") camera_attributes = SubResource("CameraAttributesPhysical_em7y1") compositor = SubResource("Compositor_dpk2q") + +[node name="Label3D" type="Label3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.409805, 0.488044, 0) +text = "This is a label" + +[node name="Label3D2" type="Label3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.208084, 0.488044, -0.544811) +text = "This is also a label, +just further away" + +[node name="Control" type="Control" parent="."] +layout_mode = 3 +anchors_preset = 0 +offset_right = 40.0 +offset_bottom = 40.0 diff --git a/main.gd b/main.gd new file mode 100644 index 0000000..2eaa48c --- /dev/null +++ b/main.gd @@ -0,0 +1,49 @@ +extends Node3D +@onready var pause_menu = $PauseMenu + +var paused = false +#var showpaused = false +var checkpoint = "checkpoint0" +var checkpoint0 = Vector3(0, 2, 1.374) +var checkpoint1 = Vector3(-27.5, 13, 12.5) +var checkpoint2 = Vector3(0, 22, 1.374) +var time_accum = 0.0 # Timer accumulator +@onready var player = get_node("Player") + + +func _ready() -> void: + var player = get_node("Player") +# while true: +# wait(5) +# print(player.checkpoint) + + +# DEBUG SECTION: Testing whether checkpoint value is accessible by printing it every 4 seconds +#func _process(delta: float) -> void: +# var player = get_node("Player") +# time_accum += delta +# if time_accum >= 4.0: +# print("Checkpoint:", player.checkpoint) +# time_accum = 0.0 + +func wait(seconds: float) -> void: + await get_tree().create_timer(seconds).timeout + +func _process(delta: float): + if Input.is_action_just_pressed("ui_cancel"): + Input.set_mouse_mode(Input.MOUSE_MODE_VISIBLE) + pauseMenu() + elif Input.is_action_just_pressed("proluz_ui_respawn"): + player.teleport_to_checkpoint + +func pauseMenu(): + if paused: + Input.set_mouse_mode(Input.MOUSE_MODE_CAPTURED) + pause_menu.hide() + Engine.time_scale = 1 + else: + pause_menu.show() + Engine.time_scale = 0.00001 +# Engine.time_scale = -1 + + paused = !paused diff --git a/pause_menu.gd.uid b/main.gd.uid similarity index 100% rename from pause_menu.gd.uid rename to main.gd.uid diff --git a/pause_menu.gd b/pause_menu.gd deleted file mode 100644 index e01f7bf..0000000 --- a/pause_menu.gd +++ /dev/null @@ -1,21 +0,0 @@ -extends Node3D -@onready var pause_menu = $PauseMenu - -var paused = false -#var showpaused = false - -func _process(delta): - if Input.is_action_just_pressed("ui_cancel"): - Input.set_mouse_mode(Input.MOUSE_MODE_VISIBLE) - pauseMenu() -func pauseMenu(): - if paused: - Input.set_mouse_mode(Input.MOUSE_MODE_CAPTURED) - pause_menu.hide() - Engine.time_scale = 1 - else: - pause_menu.show() - Engine.time_scale = 0.00001 -# Engine.time_scale = -1 - - paused = !paused diff --git a/player.gd b/player.gd index 6d45934..fccbb20 100644 --- a/player.gd +++ b/player.gd @@ -4,13 +4,61 @@ extends RigidBody3D var mouse_sensitivity := 0.001 var twist_input := 0.0 var pitch_input := 0.0 +#@onready var levelcore = get_node("/root/Level_Core/LevelCore") -@onready var twist_pivot := $TwistPivot -@onready var pitch_pivot := $TwistPivot/PitchPivot # Do not touch this part of the code +@onready var twist_pivot := $TwistPivot +@onready var pitch_pivot := $TwistPivot/PitchPivot +var levelcore: Node +var checkpoint: Vector3 func _ready() -> void: Input.set_mouse_mode(Input.MOUSE_MODE_CAPTURED) + while not get_node_or_null("/Level_Core/LevelCore"): + await get_tree().process_frame # Yield until the next frame + levelcore = get_node("/Level_Core/LevelCore") + checkpoint = levelcore.checkpoint + var player = get_node("/player/Player") + +# If touches object +var touched = false + +func teleport_to_checkpoint(): + if levelcore.has_variable(checkpoint): + var target_position = levelcore.checkpoint + global_transform.origin = target_position + print("teleport to ", target_position, " successful") + else: + print("checkpoint ", checkpoint, " does not exist") + +func _integrate_forces(state): + while not get_node_or_null("/root/Level_Core/LevelCore"): + await get_tree().process_frame + levelcore = get_node("/root/Level_Core/LevelCore") + print("levelcore set!") + for i in range(state.get_contact_count()): + var collider = state.get_contact_collider_object(i) + if collider is StaticBody3D and collider.name == "StaticBody3D_S1": + checkpoint = levelcore.checkpoint1 + print("chat we hit the checkpoint one") + +#func _integrate_forces(state): +# for i in range(state.get_contact_count()): +# var collider = state.get_contact_collider_object(i) +# print("Collided with: ", collider) +# print("Name: ", collider.name) +# if collider is StaticBody3D and collider.name == "StaticBody3D_S1": +# touched = true +# print(">>> MATCH! <<<") + +#func _integrate_forces(state): +# for i in range(state.get_contact_count()): +# var collider = state.get_contact_collider_object(i) +# print("Collision with: ", collider) +# if collider: +# print("Name: ", collider.name) + + func _process(delta: float) -> void: var input := Vector3.ZERO diff --git a/player.tscn b/player.tscn index 892cb0a..f49c9d2 100644 --- a/player.tscn +++ b/player.tscn @@ -9,6 +9,8 @@ points = PackedVector3Array(-0.125207, -0.532801, -0.480507, 0.0227831, 0.47607, [node name="Player" type="RigidBody3D"] lock_rotation = true +contact_monitor = true +max_contacts_reported = 4 script = ExtResource("1_4flbx") [node name="MeshInstance3D" type="MeshInstance3D" parent="."] diff --git a/project.godot b/project.godot index 4df7f27..367cadd 100644 --- a/project.godot +++ b/project.godot @@ -27,7 +27,6 @@ DiscordRPCLoader="*res://addons/discord-rpc-gd/nodes/discord_autoload.gd" window/size/viewport_width=1920 window/size/viewport_height=1080 window/stretch/mode="viewport" -window/stretch/aspect="ignore" [editor_plugins] @@ -65,6 +64,11 @@ proluz_ui_pause={ "events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":true,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194309,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null) ] } +proluz_ui_respawn={ +"deadzone": 0.2, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":true,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":82,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null) +] +} [rendering]