Added player save function to "persistent" tag, added UI elements
This commit is contained in:
7
DefaultTheme.tres
Normal file
7
DefaultTheme.tres
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
[gd_resource type="Theme" load_steps=2 format=3 uid="uid://clek42ofxr45f"]
|
||||||
|
|
||||||
|
[ext_resource type="FontFile" uid="uid://d2h2tjhxiv5wo" path="res://assets/fonts/White On Black.ttf" id="1_f2df7"]
|
||||||
|
|
||||||
|
[resource]
|
||||||
|
default_font = ExtResource("1_f2df7")
|
||||||
|
default_font_size = 100
|
||||||
BIN
assets/UI/0.5x/Stamina_v2@0.5x.png
Normal file
BIN
assets/UI/0.5x/Stamina_v2@0.5x.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 957 B |
34
assets/UI/0.5x/Stamina_v2@0.5x.png.import
Normal file
34
assets/UI/0.5x/Stamina_v2@0.5x.png.import
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://bwl5sqoq7acfv"
|
||||||
|
path="res://.godot/imported/Stamina_v2@0.5x.png-d545156377066e94b316708df44e6ee0.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://assets/UI/0.5x/Stamina_v2@0.5x.png"
|
||||||
|
dest_files=["res://.godot/imported/Stamina_v2@0.5x.png-d545156377066e94b316708df44e6ee0.ctex"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
compress/mode=0
|
||||||
|
compress/high_quality=false
|
||||||
|
compress/lossy_quality=0.7
|
||||||
|
compress/hdr_compression=1
|
||||||
|
compress/normal_map=0
|
||||||
|
compress/channel_pack=0
|
||||||
|
mipmaps/generate=false
|
||||||
|
mipmaps/limit=-1
|
||||||
|
roughness/mode=0
|
||||||
|
roughness/src_normal=""
|
||||||
|
process/fix_alpha_border=true
|
||||||
|
process/premult_alpha=false
|
||||||
|
process/normal_map_invert_y=false
|
||||||
|
process/hdr_as_srgb=false
|
||||||
|
process/hdr_clamp_exposure=false
|
||||||
|
process/size_limit=0
|
||||||
|
detect_3d/compress_to=1
|
||||||
BIN
assets/UI/1x/Stamina_v1.png
Normal file
BIN
assets/UI/1x/Stamina_v1.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.6 KiB |
34
assets/UI/1x/Stamina_v1.png.import
Normal file
34
assets/UI/1x/Stamina_v1.png.import
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://do1ilw47qvcgo"
|
||||||
|
path="res://.godot/imported/Stamina_v1.png-31dbe7d8bf1e45a3f157641f18d44e77.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://assets/UI/1x/Stamina_v1.png"
|
||||||
|
dest_files=["res://.godot/imported/Stamina_v1.png-31dbe7d8bf1e45a3f157641f18d44e77.ctex"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
compress/mode=0
|
||||||
|
compress/high_quality=false
|
||||||
|
compress/lossy_quality=0.7
|
||||||
|
compress/hdr_compression=1
|
||||||
|
compress/normal_map=0
|
||||||
|
compress/channel_pack=0
|
||||||
|
mipmaps/generate=false
|
||||||
|
mipmaps/limit=-1
|
||||||
|
roughness/mode=0
|
||||||
|
roughness/src_normal=""
|
||||||
|
process/fix_alpha_border=true
|
||||||
|
process/premult_alpha=false
|
||||||
|
process/normal_map_invert_y=false
|
||||||
|
process/hdr_as_srgb=false
|
||||||
|
process/hdr_clamp_exposure=false
|
||||||
|
process/size_limit=0
|
||||||
|
detect_3d/compress_to=1
|
||||||
BIN
assets/UI/1x/Stamina_v2.png
Normal file
BIN
assets/UI/1x/Stamina_v2.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.6 KiB |
34
assets/UI/1x/Stamina_v2.png.import
Normal file
34
assets/UI/1x/Stamina_v2.png.import
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://bm6nfjdtevn0l"
|
||||||
|
path="res://.godot/imported/Stamina_v2.png-2f749d052feec915fecfe561a379c225.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://assets/UI/1x/Stamina_v2.png"
|
||||||
|
dest_files=["res://.godot/imported/Stamina_v2.png-2f749d052feec915fecfe561a379c225.ctex"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
compress/mode=0
|
||||||
|
compress/high_quality=false
|
||||||
|
compress/lossy_quality=0.7
|
||||||
|
compress/hdr_compression=1
|
||||||
|
compress/normal_map=0
|
||||||
|
compress/channel_pack=0
|
||||||
|
mipmaps/generate=false
|
||||||
|
mipmaps/limit=-1
|
||||||
|
roughness/mode=0
|
||||||
|
roughness/src_normal=""
|
||||||
|
process/fix_alpha_border=true
|
||||||
|
process/premult_alpha=false
|
||||||
|
process/normal_map_invert_y=false
|
||||||
|
process/hdr_as_srgb=false
|
||||||
|
process/hdr_clamp_exposure=false
|
||||||
|
process/size_limit=0
|
||||||
|
detect_3d/compress_to=1
|
||||||
5526
assets/UI/Edit Files/staminawheel.ai
Normal file
5526
assets/UI/Edit Files/staminawheel.ai
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -37,6 +37,6 @@ shadow_mesh = SubResource("ArrayMesh_incmo")
|
|||||||
[node name="Grass1" type="Node3D"]
|
[node name="Grass1" type="Node3D"]
|
||||||
|
|
||||||
[node name="Plane" type="MeshInstance3D" parent="."]
|
[node name="Plane" type="MeshInstance3D" parent="."]
|
||||||
transform = Transform3D(-1, 0, 0, 0, 0, -1, 0, 1, 0, 0, 0, 0.303801)
|
transform = Transform3D(-1, 0, 0, 0, 4.37114e-08, -1, 0, 1, 4.37114e-08, 0, 0, 0.303801)
|
||||||
mesh = SubResource("ArrayMesh_8s5ol")
|
mesh = SubResource("ArrayMesh_8s5ol")
|
||||||
skeleton = NodePath("")
|
skeleton = NodePath("")
|
||||||
|
|||||||
@@ -1,13 +1,9 @@
|
|||||||
[gd_scene load_steps=33 format=3 uid="uid://drwae3loscbw7"]
|
[gd_scene load_steps=31 format=3 uid="uid://drwae3loscbw7"]
|
||||||
|
|
||||||
[ext_resource type="Script" path="res://scripts/player.gd" id="1_x7wms"]
|
[ext_resource type="Script" path="res://scripts/player.gd" id="1_x7wms"]
|
||||||
[ext_resource type="Script" path="res://scripts/recoil.gd" id="3_405jc"]
|
[ext_resource type="Script" path="res://scripts/recoil.gd" id="3_405jc"]
|
||||||
[ext_resource type="FontFile" uid="uid://d2h2tjhxiv5wo" path="res://assets/fonts/White On Black.ttf" id="3_mbuvp"]
|
|
||||||
[ext_resource type="Script" path="res://scripts/AmmoCounter.gd" id="4_8cy44"]
|
|
||||||
[ext_resource type="Texture2D" uid="uid://cknftvqq8rbrm" path="res://assets/Textures/Cookie_tutorial_texture_flashlight.png" id="4_x670l"]
|
[ext_resource type="Texture2D" uid="uid://cknftvqq8rbrm" path="res://assets/Textures/Cookie_tutorial_texture_flashlight.png" id="4_x670l"]
|
||||||
[ext_resource type="Texture2D" uid="uid://mcay8s80071h" path="res://assets/UI/Crosshair/SVG/Reticle 1_svg.svg" id="6_5m60e"]
|
[ext_resource type="PackedScene" uid="uid://br882tlh3cfwu" path="res://hud.tscn" id="5_yenaw"]
|
||||||
[ext_resource type="Script" path="res://scripts/StaminaCounter.gd" id="6_bgi8o"]
|
|
||||||
[ext_resource type="Script" path="res://scripts/UIScreenAdjust.gd" id="7_pnp4a"]
|
|
||||||
[ext_resource type="AudioStream" uid="uid://bki17g7j4kqn4" path="res://assets/Audio/PickupSound Mixdown 3.wav" id="8_dwqsx"]
|
[ext_resource type="AudioStream" uid="uid://bki17g7j4kqn4" path="res://assets/Audio/PickupSound Mixdown 3.wav" id="8_dwqsx"]
|
||||||
[ext_resource type="Script" path="res://scripts/bullet_ray.gd" id="10_ektr6"]
|
[ext_resource type="Script" path="res://scripts/bullet_ray.gd" id="10_ektr6"]
|
||||||
[ext_resource type="AudioStream" uid="uid://dyd272r7n2ecd" path="res://assets/Audio/footsteps-shoes-jump-land-beach-sand-SBA-300118001.wav" id="10_tn0pn"]
|
[ext_resource type="AudioStream" uid="uid://dyd272r7n2ecd" path="res://assets/Audio/footsteps-shoes-jump-land-beach-sand-SBA-300118001.wav" id="10_tn0pn"]
|
||||||
@@ -22,6 +18,8 @@
|
|||||||
[ext_resource type="AudioStream" uid="uid://n3e7s3xucsi1" path="res://assets/Audio/Foley Inventory and Interactions/Foley Inventory and Interactions/Drop Item/Drop Jewelery B.wav" id="20_rvr83"]
|
[ext_resource type="AudioStream" uid="uid://n3e7s3xucsi1" path="res://assets/Audio/Foley Inventory and Interactions/Foley Inventory and Interactions/Drop Item/Drop Jewelery B.wav" id="20_rvr83"]
|
||||||
[ext_resource type="AudioStream" uid="uid://ig4e5tgbh87m" path="res://assets/Audio/Player Character SFX/footsteps-tennis-shoes-walk-1.wav" id="21_fsjho"]
|
[ext_resource type="AudioStream" uid="uid://ig4e5tgbh87m" path="res://assets/Audio/Player Character SFX/footsteps-tennis-shoes-walk-1.wav" id="21_fsjho"]
|
||||||
[ext_resource type="AudioStream" uid="uid://c7bwilypn74lc" path="res://assets/Audio/Foley Sports/Hockey/Ball Hit Leg.wav" id="22_c88rq"]
|
[ext_resource type="AudioStream" uid="uid://c7bwilypn74lc" path="res://assets/Audio/Foley Sports/Hockey/Ball Hit Leg.wav" id="22_c88rq"]
|
||||||
|
[ext_resource type="AudioStream" uid="uid://cpargxdhuh8dg" path="res://assets/Audio/Foley Inventory and Interactions/Foley Inventory and Interactions/Drop Item/Drop Cloth D.wav" id="23_u78r2"]
|
||||||
|
[ext_resource type="AudioStream" uid="uid://krod4c6cb6xd" path="res://assets/Audio/Foley Inventory and Interactions/Foley Inventory and Interactions/Drop Item/Drop Cloth C.wav" id="24_2p12q"]
|
||||||
|
|
||||||
[sub_resource type="CanvasItemMaterial" id="CanvasItemMaterial_l5ga0"]
|
[sub_resource type="CanvasItemMaterial" id="CanvasItemMaterial_l5ga0"]
|
||||||
blend_mode = 1
|
blend_mode = 1
|
||||||
@@ -36,12 +34,6 @@ height = 2.03547
|
|||||||
radius = 0.509802
|
radius = 0.509802
|
||||||
height = 1.19106
|
height = 1.19106
|
||||||
|
|
||||||
[sub_resource type="LabelSettings" id="LabelSettings_n0odj"]
|
|
||||||
font = ExtResource("3_mbuvp")
|
|
||||||
font_size = 115
|
|
||||||
shadow_size = 16
|
|
||||||
shadow_color = Color(0, 0, 0, 1)
|
|
||||||
|
|
||||||
[sub_resource type="ShaderMaterial" id="ShaderMaterial_ubnx7"]
|
[sub_resource type="ShaderMaterial" id="ShaderMaterial_ubnx7"]
|
||||||
shader = ExtResource("14_v5svg")
|
shader = ExtResource("14_v5svg")
|
||||||
shader_parameter/overlay = true
|
shader_parameter/overlay = true
|
||||||
@@ -82,7 +74,13 @@ random_pitch = 1.1
|
|||||||
streams_count = 1
|
streams_count = 1
|
||||||
stream_0/stream = ExtResource("22_c88rq")
|
stream_0/stream = ExtResource("22_c88rq")
|
||||||
|
|
||||||
[node name="Player" type="CharacterBody3D" node_paths=PackedStringArray("weapon_holder") groups=["player"]]
|
[sub_resource type="AudioStreamRandomizer" id="AudioStreamRandomizer_xswn0"]
|
||||||
|
random_pitch = 2.0
|
||||||
|
streams_count = 2
|
||||||
|
stream_0/stream = ExtResource("23_u78r2")
|
||||||
|
stream_1/stream = ExtResource("24_2p12q")
|
||||||
|
|
||||||
|
[node name="Player" type="CharacterBody3D" node_paths=PackedStringArray("weapon_holder") groups=["persist", "player"]]
|
||||||
transform = Transform3D(1, 0.000164476, 0.000583754, -0.000165075, 0.999999, 0.00104027, -0.000583585, -0.00104036, 0.999999, 0, 1.11359, 0)
|
transform = Transform3D(1, 0.000164476, 0.000583754, -0.000165075, 0.999999, 0.00104027, -0.000583585, -0.00104036, 0.999999, 0, 1.11359, 0)
|
||||||
collision_layer = 6
|
collision_layer = 6
|
||||||
collision_mask = 11
|
collision_mask = 11
|
||||||
@@ -128,7 +126,7 @@ current = true
|
|||||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.0341401, -0.111267)
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.0341401, -0.111267)
|
||||||
|
|
||||||
[node name="WeaponSpawner" type="Node3D" parent="Head/Recoil/Camera3D/WeaponHolder"]
|
[node name="WeaponSpawner" type="Node3D" parent="Head/Recoil/Camera3D/WeaponHolder"]
|
||||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.269894, -0.199195, -0.580209)
|
transform = Transform3D(1, -2.5409e-11, -1.16415e-10, 3.69482e-12, 1, 0, 1.16415e-10, 2.32831e-10, 1, 0.269894, -0.199195, -0.580209)
|
||||||
|
|
||||||
[node name="Flashlight" type="SpotLight3D" parent="Head/Recoil/Camera3D/WeaponHolder"]
|
[node name="Flashlight" type="SpotLight3D" parent="Head/Recoil/Camera3D/WeaponHolder"]
|
||||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.183578, -0.664453)
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.183578, -0.664453)
|
||||||
@@ -145,28 +143,7 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.437954, -1)
|
|||||||
stream = ExtResource("14_pnsbm")
|
stream = ExtResource("14_pnsbm")
|
||||||
volume_db = 2.0
|
volume_db = 2.0
|
||||||
|
|
||||||
[node name="AmmoCounter" type="Label" parent="Head/Recoil/Camera3D" groups=["hud"]]
|
[node name="HUD" parent="Head/Recoil/Camera3D" instance=ExtResource("5_yenaw")]
|
||||||
offset_right = 3840.0
|
|
||||||
offset_bottom = 2160.0
|
|
||||||
size_flags_horizontal = 3
|
|
||||||
size_flags_vertical = 6
|
|
||||||
text = "Ammo: X"
|
|
||||||
label_settings = SubResource("LabelSettings_n0odj")
|
|
||||||
horizontal_alignment = 2
|
|
||||||
vertical_alignment = 2
|
|
||||||
script = ExtResource("4_8cy44")
|
|
||||||
padding_amount = 0.025
|
|
||||||
|
|
||||||
[node name="StaminaCounter" type="Label" parent="Head/Recoil/Camera3D" groups=["hud"]]
|
|
||||||
offset_right = 3440.0
|
|
||||||
offset_bottom = 1440.0
|
|
||||||
size_flags_horizontal = 3
|
|
||||||
size_flags_vertical = 6
|
|
||||||
text = "stamina: X"
|
|
||||||
label_settings = SubResource("LabelSettings_n0odj")
|
|
||||||
vertical_alignment = 2
|
|
||||||
script = ExtResource("6_bgi8o")
|
|
||||||
padding_amount = 0.025
|
|
||||||
|
|
||||||
[node name="GunRay" type="RayCast3D" parent="Head/Recoil/Camera3D" groups=["gun_ray"]]
|
[node name="GunRay" type="RayCast3D" parent="Head/Recoil/Camera3D" groups=["gun_ray"]]
|
||||||
transform = Transform3D(0.977933, 0, -0.208919, 0, 1, 7.45058e-09, 0.208919, 0, 0.977933, 0, -0.197421, -0.129669)
|
transform = Transform3D(0.977933, 0, -0.208919, 0, 1, 7.45058e-09, 0.208919, 0, 0.977933, 0, -0.197421, -0.129669)
|
||||||
@@ -176,21 +153,6 @@ hit_back_faces = false
|
|||||||
[node name="AudioListener3D" type="AudioListener3D" parent="Head/Recoil/Camera3D"]
|
[node name="AudioListener3D" type="AudioListener3D" parent="Head/Recoil/Camera3D"]
|
||||||
transform = Transform3D(1, 0, 0, 0, 0.992332, 0.123601, 0, -0.123601, 0.992332, 0, -0.921646, -0.000722691)
|
transform = Transform3D(1, 0, 0, 0, 0.992332, 0.123601, 0, -0.123601, 0.992332, 0, -0.921646, -0.000722691)
|
||||||
|
|
||||||
[node name="Crosshair" type="TextureRect" parent="Head/Recoil/Camera3D" groups=["hud"]]
|
|
||||||
anchors_preset = 8
|
|
||||||
anchor_left = 0.5
|
|
||||||
anchor_top = 0.5
|
|
||||||
anchor_right = 0.5
|
|
||||||
anchor_bottom = 0.5
|
|
||||||
offset_left = -20.0
|
|
||||||
offset_top = -20.0
|
|
||||||
offset_right = 20.0
|
|
||||||
offset_bottom = 20.0
|
|
||||||
grow_horizontal = 2
|
|
||||||
grow_vertical = 2
|
|
||||||
texture = ExtResource("6_5m60e")
|
|
||||||
script = ExtResource("7_pnp4a")
|
|
||||||
|
|
||||||
[node name="BulletRay" type="RayCast3D" parent="Head/Recoil/Camera3D"]
|
[node name="BulletRay" type="RayCast3D" parent="Head/Recoil/Camera3D"]
|
||||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -0.487738)
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -0.487738)
|
||||||
target_position = Vector3(0, 0, -200)
|
target_position = Vector3(0, 0, -200)
|
||||||
@@ -281,6 +243,9 @@ volume_db = 6.0
|
|||||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.42626, 0)
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.42626, 0)
|
||||||
stream = SubResource("AudioStreamRandomizer_u5cxn")
|
stream = SubResource("AudioStreamRandomizer_u5cxn")
|
||||||
|
|
||||||
|
[node name="Crouch" type="AudioStreamPlayer3D" parent="Audio"]
|
||||||
|
stream = SubResource("AudioStreamRandomizer_xswn0")
|
||||||
|
|
||||||
[connection signal="tree_entered" from="." to="." method="_on_tree_entered"]
|
[connection signal="tree_entered" from="." to="." method="_on_tree_entered"]
|
||||||
[connection signal="body_entered" from="pick_up_detection" to="." method="_on_pick_up_detection_body_entered"]
|
[connection signal="body_entered" from="pick_up_detection" to="." method="_on_pick_up_detection_body_entered"]
|
||||||
[connection signal="body_entered" from="pick_up_magnet" to="." method="_on_pick_up_magnet_body_entered"]
|
[connection signal="body_entered" from="pick_up_magnet" to="." method="_on_pick_up_magnet_body_entered"]
|
||||||
|
|||||||
118
hud.tscn
Normal file
118
hud.tscn
Normal file
@@ -0,0 +1,118 @@
|
|||||||
|
[gd_scene load_steps=9 format=3 uid="uid://br882tlh3cfwu"]
|
||||||
|
|
||||||
|
[ext_resource type="Script" path="res://scripts/hud.gd" id="1_7hukm"]
|
||||||
|
[ext_resource type="Theme" uid="uid://clek42ofxr45f" path="res://DefaultTheme.tres" id="1_22trs"]
|
||||||
|
[ext_resource type="Texture2D" uid="uid://bwl5sqoq7acfv" path="res://assets/UI/0.5x/Stamina_v2@0.5x.png" id="2_jj8dm"]
|
||||||
|
[ext_resource type="Texture2D" uid="uid://mcay8s80071h" path="res://assets/UI/Crosshair/SVG/Reticle 1_svg.svg" id="3_tmj0x"]
|
||||||
|
[ext_resource type="Script" path="res://scripts/UIScreenAdjust.gd" id="4_lbnof"]
|
||||||
|
|
||||||
|
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_2hn4h"]
|
||||||
|
bg_color = Color(0, 0, 0, 0.25098)
|
||||||
|
expand_margin_left = 2.0
|
||||||
|
expand_margin_top = 2.0
|
||||||
|
expand_margin_right = 2.0
|
||||||
|
expand_margin_bottom = 2.0
|
||||||
|
|
||||||
|
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_axtce"]
|
||||||
|
bg_color = Color(0.898526, 0, 0.204086, 1)
|
||||||
|
|
||||||
|
[sub_resource type="CanvasItemMaterial" id="CanvasItemMaterial_ytfhs"]
|
||||||
|
blend_mode = 1
|
||||||
|
|
||||||
|
[node name="HUD" type="Control"]
|
||||||
|
layout_mode = 3
|
||||||
|
anchors_preset = 15
|
||||||
|
anchor_right = 1.0
|
||||||
|
anchor_bottom = 1.0
|
||||||
|
grow_horizontal = 2
|
||||||
|
grow_vertical = 2
|
||||||
|
script = ExtResource("1_7hukm")
|
||||||
|
|
||||||
|
[node name="LeftMargin" type="MarginContainer" parent="."]
|
||||||
|
layout_mode = 1
|
||||||
|
anchors_preset = 2
|
||||||
|
anchor_top = 1.0
|
||||||
|
anchor_bottom = 1.0
|
||||||
|
offset_top = -40.0
|
||||||
|
offset_right = 200.0
|
||||||
|
grow_vertical = 0
|
||||||
|
theme_override_constants/margin_left = 50
|
||||||
|
theme_override_constants/margin_top = 50
|
||||||
|
theme_override_constants/margin_right = 50
|
||||||
|
theme_override_constants/margin_bottom = 50
|
||||||
|
|
||||||
|
[node name="HealthBar" type="ProgressBar" parent="LeftMargin"]
|
||||||
|
custom_minimum_size = Vector2(200, 25)
|
||||||
|
layout_mode = 2
|
||||||
|
theme = ExtResource("1_22trs")
|
||||||
|
theme_override_styles/background = SubResource("StyleBoxFlat_2hn4h")
|
||||||
|
theme_override_styles/fill = SubResource("StyleBoxFlat_axtce")
|
||||||
|
value = 30.45
|
||||||
|
show_percentage = false
|
||||||
|
|
||||||
|
[node name="StaminaBar" type="TextureProgressBar" parent="."]
|
||||||
|
material = SubResource("CanvasItemMaterial_ytfhs")
|
||||||
|
layout_mode = 1
|
||||||
|
anchors_preset = 8
|
||||||
|
anchor_left = 0.5
|
||||||
|
anchor_top = 0.5
|
||||||
|
anchor_right = 0.5
|
||||||
|
anchor_bottom = 0.5
|
||||||
|
offset_left = -24.5
|
||||||
|
offset_top = -24.5
|
||||||
|
offset_right = 24.5
|
||||||
|
offset_bottom = 24.5
|
||||||
|
grow_horizontal = 2
|
||||||
|
grow_vertical = 2
|
||||||
|
value = 100.0
|
||||||
|
fill_mode = 5
|
||||||
|
texture_progress = ExtResource("2_jj8dm")
|
||||||
|
|
||||||
|
[node name="Crosshair" type="TextureRect" parent="." groups=["hud"]]
|
||||||
|
layout_mode = 1
|
||||||
|
anchors_preset = 8
|
||||||
|
anchor_left = 0.5
|
||||||
|
anchor_top = 0.5
|
||||||
|
anchor_right = 0.5
|
||||||
|
anchor_bottom = 0.5
|
||||||
|
offset_left = -20.0
|
||||||
|
offset_top = -20.0
|
||||||
|
offset_right = 20.0
|
||||||
|
offset_bottom = 20.0
|
||||||
|
grow_horizontal = 2
|
||||||
|
grow_vertical = 2
|
||||||
|
texture = ExtResource("3_tmj0x")
|
||||||
|
script = ExtResource("4_lbnof")
|
||||||
|
|
||||||
|
[node name="MarginContainer" type="MarginContainer" parent="."]
|
||||||
|
layout_mode = 1
|
||||||
|
anchors_preset = 3
|
||||||
|
anchor_left = 1.0
|
||||||
|
anchor_top = 1.0
|
||||||
|
anchor_right = 1.0
|
||||||
|
anchor_bottom = 1.0
|
||||||
|
offset_left = -40.0
|
||||||
|
offset_top = -40.0
|
||||||
|
grow_horizontal = 0
|
||||||
|
grow_vertical = 0
|
||||||
|
theme = ExtResource("1_22trs")
|
||||||
|
theme_override_constants/margin_left = 50
|
||||||
|
theme_override_constants/margin_top = 50
|
||||||
|
theme_override_constants/margin_right = 50
|
||||||
|
theme_override_constants/margin_bottom = 50
|
||||||
|
|
||||||
|
[node name="VBoxContainer" type="VBoxContainer" parent="MarginContainer"]
|
||||||
|
layout_mode = 2
|
||||||
|
theme = ExtResource("1_22trs")
|
||||||
|
|
||||||
|
[node name="Gun Name" type="Label" parent="MarginContainer/VBoxContainer"]
|
||||||
|
layout_mode = 2
|
||||||
|
theme = ExtResource("1_22trs")
|
||||||
|
text = "Gun Name"
|
||||||
|
horizontal_alignment = 2
|
||||||
|
|
||||||
|
[node name="Ammo" type="Label" parent="MarginContainer/VBoxContainer"]
|
||||||
|
layout_mode = 2
|
||||||
|
theme = ExtResource("1_22trs")
|
||||||
|
text = "XX - XX"
|
||||||
|
horizontal_alignment = 1
|
||||||
@@ -11,7 +11,7 @@ config_version=5
|
|||||||
[application]
|
[application]
|
||||||
|
|
||||||
config/name="First Person Test"
|
config/name="First Person Test"
|
||||||
run/main_scene="res://scenes/asset_checker.tscn"
|
run/main_scene="res://assets/blockout_2.tscn"
|
||||||
config/features=PackedStringArray("4.3", "Forward Plus")
|
config/features=PackedStringArray("4.3", "Forward Plus")
|
||||||
config/icon="res://icon.svg"
|
config/icon="res://icon.svg"
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
[gd_scene load_steps=47 format=4 uid="uid://f7e0v1r6ra6c"]
|
[gd_scene load_steps=48 format=4 uid="uid://f7e0v1r6ra6c"]
|
||||||
|
|
||||||
[ext_resource type="Script" path="res://scripts/LevelManager.gd" id="1_saj4q"]
|
[ext_resource type="Script" path="res://scripts/LevelManager.gd" id="1_saj4q"]
|
||||||
[ext_resource type="PackedScene" uid="uid://b5eclfg0cmmal" path="res://assets/revolver_1.tscn" id="2_ntm2q"]
|
[ext_resource type="PackedScene" uid="uid://b5eclfg0cmmal" path="res://assets/revolver_1.tscn" id="2_ntm2q"]
|
||||||
@@ -44,6 +44,9 @@ glow_enabled = true
|
|||||||
adjustment_brightness = 1.1
|
adjustment_brightness = 1.1
|
||||||
adjustment_contrast = 1.1
|
adjustment_contrast = 1.1
|
||||||
|
|
||||||
|
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_mianr"]
|
||||||
|
albedo_color = Color(0.323355, 0.462817, 0.242752, 1)
|
||||||
|
|
||||||
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_o45vq"]
|
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_o45vq"]
|
||||||
resource_name = "rat1"
|
resource_name = "rat1"
|
||||||
cull_mode = 2
|
cull_mode = 2
|
||||||
@@ -302,7 +305,6 @@ shadow_mesh = SubResource("ArrayMesh_7g1e1")
|
|||||||
|
|
||||||
[node name="AssetChecker" type="Node3D" node_paths=PackedStringArray("player")]
|
[node name="AssetChecker" type="Node3D" node_paths=PackedStringArray("player")]
|
||||||
script = ExtResource("1_saj4q")
|
script = ExtResource("1_saj4q")
|
||||||
load_save = false
|
|
||||||
player = NodePath("Player")
|
player = NodePath("Player")
|
||||||
gun_1 = ExtResource("2_ntm2q")
|
gun_1 = ExtResource("2_ntm2q")
|
||||||
gun_2 = ExtResource("12_d3sh8")
|
gun_2 = ExtResource("12_d3sh8")
|
||||||
@@ -323,7 +325,7 @@ size = Vector3(67.0812, 9.96426, 50)
|
|||||||
|
|
||||||
[node name="CSGBox3D4" type="CSGBox3D" parent="."]
|
[node name="CSGBox3D4" type="CSGBox3D" parent="."]
|
||||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 26.9842, -0.514714, -14.2135)
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 26.9842, -0.514714, -14.2135)
|
||||||
material_override = ExtResource("3_pecld")
|
material_override = SubResource("StandardMaterial3D_mianr")
|
||||||
use_collision = true
|
use_collision = true
|
||||||
collision_layer = 257
|
collision_layer = 257
|
||||||
collision_mask = 257
|
collision_mask = 257
|
||||||
|
|||||||
@@ -18,4 +18,5 @@ func _ready():
|
|||||||
|
|
||||||
# Called every frame. 'delta' is the elapsed time since the previous frame.
|
# Called every frame. 'delta' is the elapsed time since the previous frame.
|
||||||
func _process(delta):
|
func _process(delta):
|
||||||
text = str(player.gun.gun_name) + "\n Ammo: " + str(level_control.ammo_current[level_control.current_gun_index]) +" " + str(level_control.ammo_reserve[level_control.current_gun_index])
|
pass
|
||||||
|
#text = str(player.gun.gun_name) + "\n Ammo: " + str(level_control.ammo_current[level_control.current_gun_index]) +" " + str(level_control.ammo_reserve[level_control.current_gun_index])
|
||||||
|
|||||||
@@ -183,7 +183,7 @@ func die():
|
|||||||
player.toggle_hud(true)
|
player.toggle_hud(true)
|
||||||
player.gun.visible = false
|
player.gun.visible = false
|
||||||
player.health_indicator.color = Color(0.471, 0, 0, 0)
|
player.health_indicator.color = Color(0.471, 0, 0, 0)
|
||||||
player.crosshair.visible = false
|
|
||||||
|
|
||||||
|
|
||||||
func pickup_spawn():
|
func pickup_spawn():
|
||||||
|
|||||||
@@ -18,4 +18,5 @@ func _ready():
|
|||||||
|
|
||||||
# Called every frame. 'delta' is the elapsed time since the previous frame.
|
# Called every frame. 'delta' is the elapsed time since the previous frame.
|
||||||
func _process(delta):
|
func _process(delta):
|
||||||
text = "health " + str(clamp(level_control.health,0,100))+ "\n$" + str(int(level_control.money)) + "\nStamina: " + str(int((player.remaining_stamina/player.MAX_STAMINA)*100)) + "%"
|
pass
|
||||||
|
#text = "health " + str(clamp(level_control.health,0,100))+ "\n$" + str(int(level_control.money)) + "\nStamina: " + str(int((player.remaining_stamina/player.MAX_STAMINA)*100)) + "%"
|
||||||
|
|||||||
@@ -10,6 +10,7 @@ var cycle_count
|
|||||||
@export var gun_name : String
|
@export var gun_name : String
|
||||||
@export_enum("Auto", "Single", "Burst") var fire_mode: int
|
@export_enum("Auto", "Single", "Burst") var fire_mode: int
|
||||||
@export var fov_zoom_amt = .98
|
@export var fov_zoom_amt = .98
|
||||||
|
@export var ads : bool = false
|
||||||
@export var recoil_amount : Vector3 = Vector3(.2,0,0)
|
@export var recoil_amount : Vector3 = Vector3(.2,0,0)
|
||||||
@export var spread : Vector3 = Vector3(1,1,1)
|
@export var spread : Vector3 = Vector3(1,1,1)
|
||||||
@export var kick_amount : float = 5
|
@export var kick_amount : float = 5
|
||||||
|
|||||||
@@ -39,9 +39,6 @@ func _ready():
|
|||||||
#set FOV
|
#set FOV
|
||||||
camera.fov = respawn_fov
|
camera.fov = respawn_fov
|
||||||
|
|
||||||
level_control.player.ammo_counter.visible = false
|
|
||||||
level_control.player.stamina_counter.visible = false
|
|
||||||
|
|
||||||
#start timer
|
#start timer
|
||||||
timer.start(.3)
|
timer.start(.3)
|
||||||
|
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ extends Node3D
|
|||||||
@export_enum("Auto", "Single", "Burst") var fire_mode: int
|
@export_enum("Auto", "Single", "Burst") var fire_mode: int
|
||||||
@export var hitscan_enabled : bool = false
|
@export var hitscan_enabled : bool = false
|
||||||
@export var fov_zoom_amt = .98
|
@export var fov_zoom_amt = .98
|
||||||
|
@export var ads : bool = false
|
||||||
@export var recoil_amount : Vector3 = Vector3(.2,.05,.05)
|
@export var recoil_amount : Vector3 = Vector3(.2,.05,.05)
|
||||||
@export var kick_amount : float = .1
|
@export var kick_amount : float = .1
|
||||||
@export var max_ammo = 15
|
@export var max_ammo = 15
|
||||||
|
|||||||
31
scripts/hud.gd
Normal file
31
scripts/hud.gd
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
extends Control
|
||||||
|
|
||||||
|
@onready var level_control = get_tree().current_scene
|
||||||
|
@onready var player = level_control.player
|
||||||
|
@onready var stamina_bar: TextureProgressBar = $StaminaBar
|
||||||
|
@onready var health_bar: ProgressBar = $LeftMargin/HealthBar
|
||||||
|
@onready var gun_name: Label = $"MarginContainer/VBoxContainer/Gun Name"
|
||||||
|
@onready var ammo: Label = $MarginContainer/VBoxContainer/Ammo
|
||||||
|
|
||||||
|
# Called when the node enters the scene tree for the first time.
|
||||||
|
func _ready() -> void:
|
||||||
|
health_bar.max_value = level_control.start_health
|
||||||
|
|
||||||
|
|
||||||
|
# Called every frame. 'delta' is the elapsed time since the previous frame.
|
||||||
|
func _process(delta: float) -> void:
|
||||||
|
player = level_control.player
|
||||||
|
if player != null:
|
||||||
|
health_bar.value = level_control.health
|
||||||
|
if player.remaining_stamina/player.MAX_STAMINA >= .99:
|
||||||
|
stamina_bar.visible = false
|
||||||
|
else:
|
||||||
|
stamina_bar.visible = true
|
||||||
|
stamina_bar.value = player.remaining_stamina
|
||||||
|
|
||||||
|
ammo.text = str(level_control.ammo_current[level_control.current_gun_index]) +" - " + str(level_control.ammo_reserve[level_control.current_gun_index])
|
||||||
|
|
||||||
|
if player.gun != null:
|
||||||
|
gun_name.text = player.gun.gun_name
|
||||||
|
else:
|
||||||
|
gun_name.visible = false
|
||||||
@@ -5,6 +5,7 @@ var start_rotation
|
|||||||
var random_spread_start
|
var random_spread_start
|
||||||
var cycle_count_start
|
var cycle_count_start
|
||||||
var cycle_count
|
var cycle_count
|
||||||
|
var ads = false
|
||||||
|
|
||||||
@export_group("Gun Feel")
|
@export_group("Gun Feel")
|
||||||
@export var gun_name : String
|
@export var gun_name : String
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ var reserve_ammo
|
|||||||
|
|
||||||
## SAVE DATA PATHS
|
## SAVE DATA PATHS
|
||||||
var persistent_save_path = "user://persistent_data.save"
|
var persistent_save_path = "user://persistent_data.save"
|
||||||
var game_save_path = "user://game_save_data.save"
|
var game_save_path = "user://gamesave.save"
|
||||||
|
|
||||||
func _ready() -> void:
|
func _ready() -> void:
|
||||||
if player_deaths == null:
|
if player_deaths == null:
|
||||||
@@ -76,8 +76,6 @@ func save_game_data():
|
|||||||
reserve_ammo = level_control.ammo_reserve
|
reserve_ammo = level_control.ammo_reserve
|
||||||
|
|
||||||
#SAVE DATA
|
#SAVE DATA
|
||||||
file.store_var(player_loc)
|
|
||||||
file.store_var(player_rot)
|
|
||||||
file.store_var(player_health)
|
file.store_var(player_health)
|
||||||
file.store_var(player_money)
|
file.store_var(player_money)
|
||||||
file.store_var(held_guns)
|
file.store_var(held_guns)
|
||||||
@@ -126,8 +124,6 @@ func load_save_game_data():
|
|||||||
|
|
||||||
#GET DATA
|
#GET DATA
|
||||||
if !data_cleared:
|
if !data_cleared:
|
||||||
player_loc = file.get_var()
|
|
||||||
player_rot = file.get_var()
|
|
||||||
player_health = file.get_var()
|
player_health = file.get_var()
|
||||||
player_money = file.get_var()
|
player_money = file.get_var()
|
||||||
var held_guns_encoded = file.get_var()
|
var held_guns_encoded = file.get_var()
|
||||||
@@ -137,7 +133,7 @@ func load_save_game_data():
|
|||||||
reserve_ammo = file.get_var()
|
reserve_ammo = file.get_var()
|
||||||
var current_nodes = get_tree().get_nodes_in_group("persist")
|
var current_nodes = get_tree().get_nodes_in_group("persist")
|
||||||
for i in current_nodes:
|
for i in current_nodes:
|
||||||
if i.get_class() == "CharacterBody3D":
|
if i.is_in_group("enemy"):
|
||||||
i.quiet_remove()
|
i.quiet_remove()
|
||||||
else:
|
else:
|
||||||
i.queue_free()
|
i.queue_free()
|
||||||
@@ -151,13 +147,17 @@ func load_save_game_data():
|
|||||||
continue
|
continue
|
||||||
var node_data = json.data
|
var node_data = json.data
|
||||||
var new_object = load(node_data["filename"]).instantiate()
|
var new_object = load(node_data["filename"]).instantiate()
|
||||||
print("NEW OBJECT : ",new_object)
|
|
||||||
get_node(node_data["parent"]).add_child(new_object)
|
get_node(node_data["parent"]).add_child(new_object)
|
||||||
|
|
||||||
|
|
||||||
|
#apply transform if available
|
||||||
if node_data["pos_x"] != null:
|
if node_data["pos_x"] != null:
|
||||||
new_object.position = Vector3(node_data["pos_x"],node_data["pos_y"],node_data["pos_z"])
|
new_object.position = Vector3(node_data["pos_x"],node_data["pos_y"],node_data["pos_z"])
|
||||||
if node_data["rot_x"] != null:
|
if node_data["rot_x"] != null:
|
||||||
new_object.rotation = Vector3(node_data["rot_x"],node_data["rot_y"],node_data["rot_z"])
|
new_object.rotation = Vector3(node_data["rot_x"],node_data["rot_y"],node_data["rot_z"])
|
||||||
print("NEW OBJECT PLACED AT ", new_object.position)
|
|
||||||
|
#apply other save data
|
||||||
for i in node_data.keys():
|
for i in node_data.keys():
|
||||||
if i == "filename" or i == "pos_x" or i == "pos_y" or i == "pos_z":
|
if i == "filename" or i == "pos_x" or i == "pos_y" or i == "pos_z":
|
||||||
continue
|
continue
|
||||||
@@ -165,14 +165,13 @@ func load_save_game_data():
|
|||||||
|
|
||||||
|
|
||||||
#APPLY DATA
|
#APPLY DATA
|
||||||
player.global_position = player_loc
|
|
||||||
player.global_rotation = player_rot
|
|
||||||
level_control.health = player_health
|
level_control.health = player_health
|
||||||
level_control.money = player_money
|
level_control.money = player_money
|
||||||
level_control.held_guns = held_guns
|
level_control.held_guns = held_guns
|
||||||
if player.gun:
|
if player.gun:
|
||||||
player.gun.queue_free()
|
player.gun.queue_free()
|
||||||
level_control.gun_spawn(current_gun)
|
if current_gun != null:
|
||||||
|
level_control.gun_spawn(current_gun)
|
||||||
level_control.ammo_current = current_ammo
|
level_control.ammo_current = current_ammo
|
||||||
level_control.ammo_reserve = reserve_ammo
|
level_control.ammo_reserve = reserve_ammo
|
||||||
|
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ extends Node3D
|
|||||||
@export var gun_name : String
|
@export var gun_name : String
|
||||||
@export_enum("Auto", "Single", "Burst") var fire_mode: int
|
@export_enum("Auto", "Single", "Burst") var fire_mode: int
|
||||||
@export var hitscan_enabled : bool = false
|
@export var hitscan_enabled : bool = false
|
||||||
|
@export var ads : bool = false
|
||||||
@export var fov_zoom_amt = .98
|
@export var fov_zoom_amt = .98
|
||||||
@export var recoil_amount : Vector3 = Vector3(.2,.05,.05)
|
@export var recoil_amount : Vector3 = Vector3(.2,.05,.05)
|
||||||
@export var kick_amount : float = .1
|
@export var kick_amount : float = .1
|
||||||
|
|||||||
Reference in New Issue
Block a user