diff --git a/MainMenu.tscn b/MainMenu.tscn new file mode 100644 index 0000000..4b04204 --- /dev/null +++ b/MainMenu.tscn @@ -0,0 +1,47 @@ +[gd_scene load_steps=3 format=3 uid="uid://sa1d1rftyn87"] + +[ext_resource type="Script" path="res://scripts/main_menu.gd" id="1_haaol"] +[ext_resource type="FontFile" uid="uid://d2h2tjhxiv5wo" path="res://assets/fonts/White On Black.ttf" id="2_ac165"] + +[node name="MainMenu" type="Control" groups=["ui"]] +layout_mode = 3 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +script = ExtResource("1_haaol") + +[node name="MarginContainer" type="MarginContainer" parent="."] +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -277.018 +offset_top = -174.68 +offset_right = 277.018 +offset_bottom = 174.68 +grow_horizontal = 2 +grow_vertical = 2 + +[node name="VBoxContainer" type="VBoxContainer" parent="MarginContainer"] +layout_mode = 2 +size_flags_horizontal = 4 +size_flags_vertical = 4 + +[node name="Continue" type="Button" parent="MarginContainer/VBoxContainer"] +layout_mode = 2 +theme_override_fonts/font = ExtResource("2_ac165") +theme_override_font_sizes/font_size = 150 +text = "Continue" + +[node name="Exit" type="Button" parent="MarginContainer/VBoxContainer"] +layout_mode = 2 +theme_override_fonts/font = ExtResource("2_ac165") +theme_override_font_sizes/font_size = 150 +text = "exit" + +[connection signal="pressed" from="MarginContainer/VBoxContainer/Continue" to="." method="_on_continue_pressed"] +[connection signal="pressed" from="MarginContainer/VBoxContainer/Exit" to="." method="_on_exit_pressed"] diff --git a/continuelevel.tscn b/continuelevel.tscn new file mode 100644 index 0000000..1fedb00 --- /dev/null +++ b/continuelevel.tscn @@ -0,0 +1,6 @@ +[gd_scene load_steps=2 format=3 uid="uid://blbxu6joxyu1t"] + +[ext_resource type="Script" path="res://scripts/main_menu.gd" id="1_splou"] + +[node name="CONTINUELEVEL" type="Node3D" groups=["ui"]] +script = ExtResource("1_splou") diff --git a/project.godot b/project.godot index fe80607..fb70ba0 100644 --- a/project.godot +++ b/project.godot @@ -11,7 +11,7 @@ config_version=5 [application] config/name="First Person Test" -run/main_scene="res://scenes/HUBWORLD.tscn" +run/main_scene="res://scenes/asset_checker.tscn" config/features=PackedStringArray("4.3", "Forward Plus") config/icon="res://icon.svg" @@ -59,6 +59,7 @@ breakable="" leak="will leak if damaged" item_pickup="" hub_level="" +ui="" [input] diff --git a/scenes/HUBWORLD.tscn b/scenes/HUBWORLD.tscn index e21dc27..8960fbe 100644 --- a/scenes/HUBWORLD.tscn +++ b/scenes/HUBWORLD.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=16 format=3 uid="uid://jdwpc622vmok"] +[gd_scene load_steps=17 format=3 uid="uid://jdwpc622vmok"] [ext_resource type="Script" path="res://scripts/LevelManager.gd" id="1_1bnbi"] [ext_resource type="Resource" uid="uid://bxcxqt7rmfvdw" path="res://GameModes/hubworld.tres" id="2_62iy8"] @@ -6,12 +6,13 @@ [ext_resource type="PackedScene" uid="uid://drwae3loscbw7" path="res://assets/player.tscn" id="4_04o4y"] [ext_resource type="PackedScene" uid="uid://dgapcuvg0gtmm" path="res://assets/scene_changer.tscn" id="5_alya6"] [ext_resource type="PackedScene" uid="uid://bessq6hl7qsh8" path="res://assets/stats.tscn" id="6_mkn70"] +[ext_resource type="Resource" uid="uid://bs8yvpq65yh3w" path="res://GameModes/cookie_mode.tres" id="6_pf4wj"] [ext_resource type="Resource" uid="uid://dn3t7wcoumlm3" path="res://GameModes/standard.tres" id="6_t16kj"] [ext_resource type="PackedScene" uid="uid://bj1y0fbjtul4a" path="res://post_processing.tscn" id="7_2h1ea"] -[ext_resource type="Resource" uid="uid://llsqx2cby5in" path="res://GameModes/Arena of Money.tres" id="7_j0hxr"] [ext_resource type="PackedScene" uid="uid://bvjrsc86n2ak0" path="res://assets/deposit_money.tscn" id="8_n0nhe"] [ext_resource type="PackedScene" uid="uid://c6bpysq1tjhy4" path="res://vendingmahcine.tscn" id="9_nu6q5"] [ext_resource type="PackedScene" uid="uid://eujx0yilqqcp" path="res://assets/level_sign.tscn" id="11_p3sg0"] +[ext_resource type="PackedScene" uid="uid://bji3bukudxlhm" path="res://assets/health_dispenser.tscn" id="13_h5xga"] [sub_resource type="ProceduralSkyMaterial" id="ProceduralSkyMaterial_s7e4t"] sky_top_color = Color(0.623488, 0.812575, 0.900791, 1) @@ -148,19 +149,19 @@ transform = Transform3D(1, 0.000164476, 0.000583754, -0.000165075, 0.999999, 0.0 transform = Transform3D(22.6681, 0, 0, 0, 3.41912, 0, 0, 0, 6.68795, 16.4442, -57.3609, -5.67549) scene_path = "res://scenes/enemy_working_scene.tscn" scene_name = "Enemy Working Scene" -gamemode = ExtResource("6_t16kj") +level_gamemode = ExtResource("6_t16kj") [node name="Blockout2" parent="." instance=ExtResource("5_alya6")] transform = Transform3D(0.100323, 0, 16.2141, 0, 30.4856, 0, -22.8099, 0, 0.0713132, -17.949, -57.3609, -2.74808) scene_path = "res://assets/blockout_2.tscn" scene_name = "Blockout 2" -gamemode = ExtResource("6_t16kj") +level_gamemode = ExtResource("6_t16kj") [node name="Gulag of Money" parent="." instance=ExtResource("5_alya6")] transform = Transform3D(22.8101, 0, 0, 0, 30.4856, 0, 0, 0, 16.2143, -0.602371, -57.3609, 24.0114) scene_path = "res://scenes/Arena of Money.tscn" scene_name = "The Gulag" -gamemode = ExtResource("7_j0hxr") +level_gamemode = ExtResource("6_pf4wj") [node name="Stats" parent="." instance=ExtResource("6_mkn70")] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.212402, 1.9891, -6.02898) @@ -190,3 +191,6 @@ portal_node = NodePath("../Blockout2") [node name="Level Sign3" parent="." node_paths=PackedStringArray("portal_node") instance=ExtResource("11_p3sg0")] transform = Transform3D(-0.899916, 0, -0.436063, 0, 1, 0, 0.436063, 0, -0.899916, 2.88079, 1.19868, 10.7051) portal_node = NodePath("../Gulag of Money") + +[node name="HealthDispenser" parent="." instance=ExtResource("13_h5xga")] +transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, 7.99763, 1.77484, -1.41809) diff --git a/scenes/asset_checker.tscn b/scenes/asset_checker.tscn index 4f25811..4bbec20 100644 --- a/scenes/asset_checker.tscn +++ b/scenes/asset_checker.tscn @@ -1,7 +1,5 @@ -[gd_scene load_steps=54 format=4 uid="uid://f7e0v1r6ra6c"] +[gd_scene load_steps=50 format=4 uid="uid://f7e0v1r6ra6c"] -[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="Material" uid="uid://b6hhomp4kcjvb" path="res://assets/materials/prototype/tadaoando.tres" id="3_pecld"] [ext_resource type="PackedScene" uid="uid://c0uv33kbndbvy" path="res://assets/trashcan.tscn" id="4_2tu3b"] [ext_resource type="PackedScene" uid="uid://do6gt53xr2l23" path="res://assets/garbage_bin.tscn" id="5_ywaty"] @@ -11,11 +9,7 @@ [ext_resource type="PackedScene" uid="uid://bcmd7elfjhppe" path="res://assets/tree_1.tscn" id="9_ol3is"] [ext_resource type="PackedScene" uid="uid://by3n26uvps8tb" path="res://assets/water_tower.tscn" id="10_ey3w4"] [ext_resource type="PackedScene" uid="uid://ciw10g8q4td1y" path="res://assets/tv.tscn" id="11_w3jqu"] -[ext_resource type="PackedScene" uid="uid://brl0bsqjl5dg3" path="res://assets/mac_10.tscn" id="12_d3sh8"] -[ext_resource type="PackedScene" uid="uid://drwae3loscbw7" path="res://assets/player.tscn" id="13_smi87"] [ext_resource type="PackedScene" uid="uid://bww5k3t3yu7m0" path="res://assets/mug.tscn" id="14_vp24a"] -[ext_resource type="PackedScene" uid="uid://dqwkal3t4gf2p" path="res://blunderbus.tscn" id="16_xsk8x"] -[ext_resource type="PackedScene" uid="uid://2o2wcc5i1al4" path="res://assets/rocket_launcher.tscn" id="17_32jc8"] [ext_resource type="PackedScene" uid="uid://be3x56aehx4ks" path="res://assets/Models/spider.blend" id="18_axqdp"] [ext_resource type="PackedScene" uid="uid://cnfc8rtk6l1d8" path="res://assets/crate1.tscn" id="19_7tuy7"] [ext_resource type="Texture2D" uid="uid://cy4cwv7ppdclm" path="res://assets/Models/rat1.albedo.png" id="19_e5pct"] @@ -27,10 +21,8 @@ [ext_resource type="PackedScene" uid="uid://c7vrpfdh603kr" path="res://assets/bottle_1.tscn" id="25_fk5nr"] [ext_resource type="PackedScene" uid="uid://c6bpysq1tjhy4" path="res://vendingmahcine.tscn" id="26_rsia7"] [ext_resource type="PackedScene" uid="uid://8cwmkiwcoaji" path="res://terrain1.tscn" id="27_hlma7"] -[ext_resource type="PackedScene" uid="uid://dyu46bns8mesv" path="res://assets/mac10_pickup.tscn" id="28_x7033"] -[ext_resource type="PackedScene" uid="uid://cucqbjb8bcha5" path="res://assets/blunderbuss_pickup.tscn" id="29_kr1fy"] -[ext_resource type="PackedScene" uid="uid://clu76sc4uoswn" path="res://assets/rocketlauncher_pickup.tscn" id="30_msqcq"] [ext_resource type="PackedScene" uid="uid://dlhjacsike5a4" path="res://assets/oildrum1.tscn" id="31_jbe2q"] +[ext_resource type="PackedScene" uid="uid://sa1d1rftyn87" path="res://MainMenu.tscn" id="32_uxyoo"] [ext_resource type="PackedScene" uid="uid://df34olntmk0wl" path="res://assets/vent_1.tscn" id="32_x8mvi"] [ext_resource type="PackedScene" uid="uid://dt4t2a48204v1" path="res://assets/spikes_1.tscn" id="33_u3uct"] @@ -310,11 +302,46 @@ _surfaces = [{ blend_shape_mode = 0 shadow_mesh = SubResource("ArrayMesh_7g1e1") -[node name="AssetChecker" type="Node3D" node_paths=PackedStringArray("player")] -script = ExtResource("1_saj4q") -player = NodePath("Player") -start_health = 10 -gun_1 = ExtResource("2_ntm2q") +[sub_resource type="CameraAttributesPractical" id="CameraAttributesPractical_6pck7"] +dof_blur_far_enabled = true +dof_blur_far_distance = 31.17 +dof_blur_near_enabled = true + +[sub_resource type="Animation" id="Animation_slj52"] +resource_name = "Menu" +length = 40.0 +tracks/0/type = "position_3d" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Camera3D") +tracks/0/interp = 2 +tracks/0/loop_wrap = true +tracks/0/keys = PackedFloat32Array(0, 1, 4.83154, 1.76087, 7.17499, 19.9333, 1, -4.96827, 1.76087, 6.32403, 40, 1, 4.83154, 1.76087, 7.17499) +tracks/1/type = "rotation_3d" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("Camera3D") +tracks/1/interp = 2 +tracks/1/loop_wrap = true +tracks/1/keys = PackedFloat32Array(0, 1, 0, 0, 0, 1, 19.9, 1, 0, 0.254973, 0, 0.966948, 40, 1, 0, 0, 0, 1) + +[sub_resource type="Animation" id="Animation_6siip"] +length = 0.001 +tracks/0/type = "position_3d" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Camera3D") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = PackedFloat32Array(0, 1, 4.83154, 1.76087, 7.17499) + +[sub_resource type="AnimationLibrary" id="AnimationLibrary_ey8td"] +_data = { +"Menu": SubResource("Animation_slj52"), +"RESET": SubResource("Animation_6siip") +} + +[node name="AssetChecker" type="Node3D" groups=["ui"]] [node name="WorldEnvironment" type="WorldEnvironment" parent="."] environment = SubResource("Environment_tngkl") @@ -398,27 +425,12 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.55033, 0.0999999, -13.7541 [node name="TV" parent="." instance=ExtResource("11_w3jqu")] transform = Transform3D(2, 0, 0, 0, 2, 0, 0, 0, 2, -5.11621, 0.856588, 0.461154) -[node name="mac10" parent="." instance=ExtResource("12_d3sh8")] -transform = Transform3D(0.997808, 0, 0.0661694, 0, 1, 0, -0.0661694, 0, 0.997808, -18.2675, 1.58391, 3.54959) - -[node name="Player" parent="." instance=ExtResource("13_smi87")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3.59557, 1.21359, 6.06777) - [node name="Mug" parent="." instance=ExtResource("14_vp24a")] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -6.37968, 3.71927, 1.60889) -[node name="Blunderbus" parent="." instance=ExtResource("16_xsk8x")] -transform = Transform3D(0.999289, 0, -0.0376902, 0, 1, 0, 0.0376902, 0, 0.999289, -18.1798, 1.65336, 1.80161) - -[node name="RocketLauncher" parent="." instance=ExtResource("17_32jc8")] -transform = Transform3D(0.999637, 0, -0.0269447, 0, 1, 0, 0.0269447, 0, 0.999637, -18.1851, 1.33295, -1.82648) - [node name="spider" parent="." instance=ExtResource("18_axqdp")] transform = Transform3D(-0.976217, 0, -0.216797, 0, 1, 0, 0.216797, 0, -0.976217, -8.60265, 0, -0.445837) -[node name="revolver1" parent="." instance=ExtResource("2_ntm2q")] -transform = Transform3D(0.996452, 0, -0.0841648, 0, 1, 0, 0.0841648, 0, 0.996452, -18.2394, 1.58237, -3.43193) - [node name="Crate1" parent="." instance=ExtResource("19_7tuy7")] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 9, 2, 8) @@ -547,15 +559,6 @@ transform = Transform3D(0.0288986, 0, 0.999582, 0, 1, 0, -0.999582, 0, 0.0288986 [node name="Terrain" parent="." instance=ExtResource("27_hlma7")] transform = Transform3D(2, 0, 0, 0, 2, 0, 0, 0, 2, 1001.46, -70.327, 173.409) -[node name="mac10_pickup" parent="." instance=ExtResource("28_x7033")] -transform = Transform3D(0.735482, -0.677544, 0, 0.677544, 0.735482, 0, 0, 0, 1, 9.33994, 3.7532, 15.9239) - -[node name="blunderbuss_pickup" parent="." instance=ExtResource("29_kr1fy")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 39.0626, 0.909491, 22.5097) - -[node name="rocketlauncher1_pickup" parent="." instance=ExtResource("30_msqcq")] -transform = Transform3D(-0.136113, 0, 0.990693, 0, 1, 0, -0.990693, 0, -0.136113, 35.3662, 0.662383, 22.6891) - [node name="RigidBody3D" parent="." instance=ExtResource("31_jbe2q")] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -11.3714, 1.04444, -2.16718) @@ -585,3 +588,16 @@ transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, 23.119 [node name="Vent2" parent="." instance=ExtResource("32_x8mvi")] transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, -6.98721, 0.923517, 22.4057) + +[node name="Camera3D" type="Camera3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4.83154, 1.76087, 7.17499) +attributes = SubResource("CameraAttributesPractical_6pck7") +fov = 42.0 + +[node name="MainMenu" parent="Camera3D" instance=ExtResource("32_uxyoo")] + +[node name="AnimationPlayer" type="AnimationPlayer" parent="."] +libraries = { +"": SubResource("AnimationLibrary_ey8td") +} +autoplay = "Menu" diff --git a/scripts/LevelManager.gd b/scripts/LevelManager.gd index 1d79924..aa428d3 100644 --- a/scripts/LevelManager.gd +++ b/scripts/LevelManager.gd @@ -35,6 +35,12 @@ var engine_time_scale_cache : float = 1.0 # Called when the node enters the scene tree for the first time. func _ready(): level_name = self.get_name() + GameGlobals.current_level = str(self.scene_file_path) + + if GameGlobals.loading_gamemode != null: + gamemode = GameGlobals.loading_gamemode + GameGlobals.loading_gamemode = null + #connect to signals SignalBus.enemy_count_changed.connect(enemy_count) @@ -60,6 +66,8 @@ func _ready(): if crown_target: crown_target.add_child(crown_spawn) crown_spawn.position = Vector3(0,2,0) + if crown_target.is_in_group("enemy"): + crown_target.loot_amount = 10 #global randomize function randomize() @@ -208,19 +216,20 @@ func pickup_spawn(randomized): var i_weight match int(i): 0: - i_weight = 1.0 - clamp(float(GameGlobals.ammo_reserve[str(i)]) / float(expected_ammo["light"]),0,1) + i_weight = 1.0 - clamp(float(GameGlobals.ammo_reserve[str(i)]) / float(gamemode.expected_ammo["light"]),0,1) 1: - i_weight = 1.0 - clamp(float(GameGlobals.ammo_reserve[str(i)]) / float(expected_ammo["medium"]),0,1) + i_weight = 1.0 - clamp(float(GameGlobals.ammo_reserve[str(i)]) / float(gamemode.expected_ammo["medium"]),0,1) 2: - i_weight = 1.0 - clamp(float(GameGlobals.ammo_reserve[str(i)]) / float(expected_ammo["heavy"]),0,1) + i_weight = 1.0 - clamp(float(GameGlobals.ammo_reserve[str(i)]) / float(gamemode.expected_ammo["heavy"]),0,1) 3: - i_weight = 1.0 - clamp(float(GameGlobals.ammo_reserve[str(i)]) / float(expected_ammo["shotgun"]),0,1) + i_weight = 1.0 - clamp(float(GameGlobals.ammo_reserve[str(i)]) / float(gamemode.expected_ammo["shotgun"]),0,1) 4: - i_weight = 1.0 - clamp(float(GameGlobals.ammo_reserve[str(i)]) / float(expected_ammo["rocket"]),0,1) + i_weight = 1.0 - clamp(float(GameGlobals.ammo_reserve[str(i)]) / float(gamemode.expected_ammo["rocket"]),0,1) 5: i_weight = 0 if i_weight > ammo_weight: ammo_weight = i_weight + ammo_type_weight.erase(5) ammo_type_weight[i] = i_weight + drop_chance_minimum pickup_type = HelperFuncs.weighted_random({"0" : ammo_weight, "1" : stamina_weight,"2" : health_weight,"3" : money_weight}) @@ -244,5 +253,6 @@ func pickup_spawn(randomized): return {"pickup_type" : pickup_type,"ammo_type" : ammo_type,"value" : value} func save_quit(): + SignalBus.emit_signal("player_exiting_tree") SaveLoad.save_game_data(level_name) get_tree().quit() diff --git a/scripts/game_globals.gd b/scripts/game_globals.gd index d68c7d5..d1c5278 100644 --- a/scripts/game_globals.gd +++ b/scripts/game_globals.gd @@ -9,14 +9,24 @@ var held_guns = [] var current_gun_index var gun_ammo = {} var ammo_reserve = {} +var loading_gamemode +var current_level +var current_gamemode + +#Player Stats + func _ready() -> void: SignalBus.money_deposited.connect(deposit_money) func deposit_money(): - deposited_money = money + if money > deposited_money: + deposited_money = money if deposited_money > high_score: high_score = deposited_money +func _process(delta: float) -> void: + pass + #print("current level : ",get_tree().current_scene.scene_file_path) func money_penalty(): var level_control = get_tree().current_scene diff --git a/scripts/hud.gd b/scripts/hud.gd index 2063240..da3a890 100644 --- a/scripts/hud.gd +++ b/scripts/hud.gd @@ -111,12 +111,16 @@ func _process(delta: float) -> void: current_stam_bar.value = player.remaining_stamina if player.gun != null: - if GameGlobals.gun_ammo.has(player.gun.gun_name): + if GameGlobals.gun_ammo.has(player.gun.gun_name) and GameGlobals.gun_ammo[player.gun.gun_name] != null: ammo_current.text = str(GameGlobals.gun_ammo[player.gun.gun_name]).pad_zeros(2) lerp_color(ammo_current,RED_COLOR,FULL_WHITE,GameGlobals.gun_ammo[player.gun.gun_name],player.gun.max_ammo,.5) + else: + ammo_current.text = "-" if GameGlobals.ammo_reserve.has(str(player.gun.ammo_type)): ammo_reserve.text = str(GameGlobals.ammo_reserve[str(player.gun.ammo_type)]).pad_zeros(3) lerp_color(ammo_reserve,RED_COLOR,FULL_WHITE,GameGlobals.ammo_reserve[str(player.gun.ammo_type)],player.gun.max_ammo*2,.5) + else: + ammo_reserve.text = "-" else: fade_in_out(ammo_current,1,false,10,delta) fade_in_out(ammo_reserve,1,false,10,delta) diff --git a/scripts/level_sign.gd b/scripts/level_sign.gd index 1c1ba3a..2c22a14 100644 --- a/scripts/level_sign.gd +++ b/scripts/level_sign.gd @@ -9,7 +9,7 @@ extends Node3D # Called when the node enters the scene tree for the first time. func _ready() -> void: level_name.text = portal_node.scene_name - gamemode_label.text = portal_node.gamemode.gamemode_name + gamemode_label.text = portal_node.level_gamemode.gamemode_name # Called every frame. 'delta' is the elapsed time since the previous frame. diff --git a/scripts/main_menu.gd b/scripts/main_menu.gd new file mode 100644 index 0000000..ac13251 --- /dev/null +++ b/scripts/main_menu.gd @@ -0,0 +1,25 @@ +extends Node + +var last_scene + +# Called when the node enters the scene tree for the first time. +func _ready() -> void: + SaveLoad.load_persistent_data() + +func _on_continue_pressed() -> void: + var level + var load_to_gamemode + + if GameGlobals.current_level == null: + level = "res://scenes/HUBWORLD.tscn" + load_to_gamemode = "res://GameModes/hubworld.tres" + else: + level = GameGlobals.current_level + load_to_gamemode = GameGlobals.current_gamemode + + get_tree().change_scene_to_file(level) + GameGlobals.loading_gamemode = load(load_to_gamemode) + print("LEVEL : ",GameGlobals.current_level) + +func _on_exit_pressed() -> void: + get_tree().quit() diff --git a/scripts/player.gd b/scripts/player.gd index ff248f8..9858f69 100644 --- a/scripts/player.gd +++ b/scripts/player.gd @@ -667,14 +667,16 @@ func holster_gun(holster): func add_ammo(new_gun,gun_name,ammo_type,max_ammo,start_mags): if new_gun: - GameGlobals.gun_ammo[gun_name] = max_ammo - + if ammo_type != 5: #if ammo is not melee + GameGlobals.gun_ammo[gun_name] = max_ammo + else: + GameGlobals.gun_ammo[gun_name] = null if GameGlobals.ammo_reserve.has(str(ammo_type)): GameGlobals.ammo_reserve[str(ammo_type)] += start_mags * max_ammo else: #if melee weapon don't do max ammo calc if ammo_type == 5: - GameGlobals.ammo_reserve[str(ammo_type)] = 0 + pass #otherwise calculate starting ammo else: GameGlobals.ammo_reserve[str(ammo_type)] = start_mags * max_ammo diff --git a/scripts/save_load.gd b/scripts/save_load.gd index 22d6840..1603d83 100644 --- a/scripts/save_load.gd +++ b/scripts/save_load.gd @@ -35,7 +35,10 @@ func save_persistent_data(): print("LAST HIT PATH " + str(last_hit_path)) file.store_var(last_hit_path) file.store_var(player.velocity) + file.store_var(get_tree().current_scene.scene_file_path) + file.store_var(get_tree().current_scene.gamemode.resource_path) file.store_var(GameGlobals.money) + file.store_var(GameGlobals.deposited_money) file.store_var(GameGlobals.health) file.store_var(GameGlobals.high_score) file.store_var(player_deaths) @@ -52,24 +55,20 @@ func save_persistent_data(): func load_persistent_data(): var level_control = get_tree().current_scene - var player = level_control.player if FileAccess.file_exists(persistent_save_path): var file = FileAccess.open(persistent_save_path, FileAccess.READ) last_hit_path = file.get_var() - print("CROWN PARENT : " + str(last_hit_path)) player_velocity_cache = file.get_var() + GameGlobals.current_level = str(file.get_var()) + GameGlobals.current_gamemode = file.get_var() GameGlobals.money = set_nulls_zero(file.get_var()) - print("MONEY : ", GameGlobals.money) + GameGlobals.deposited_money = set_nulls_zero(file.get_var()) GameGlobals.health = file.get_var() - print("HEALTH : ", GameGlobals.health) GameGlobals.high_score = file.get_var() - print("HIGH SCORE : ",GameGlobals.high_score) player_deaths = set_nulls_zero(file.get_var()) - print("PLAYER DEATHS : " + str(player_deaths)) enemies_killed = set_nulls_zero(file.get_var()) - print("ENEMIES KILLED : " + str(enemies_killed)) shots_fired = set_nulls_zero(file.get_var()) - print("SHOTS FIRED ",shots_fired) + var held_guns_encoded = file.get_var() GameGlobals.held_guns = load_resource_path(held_guns_encoded) @@ -77,7 +76,8 @@ func load_persistent_data(): GameGlobals.ammo_reserve = file.get_var() GameGlobals.current_gun_index = file.get_var() if GameGlobals.current_gun_index != null: - get_tree().current_scene.gun_spawn(GameGlobals.current_gun_index) + if !get_tree().current_scene.is_in_group("ui"): + get_tree().current_scene.gun_spawn(GameGlobals.current_gun_index) data_cleared = file.get_var() file.close() diff --git a/scripts/scene_changer.gd b/scripts/scene_changer.gd index 82886fb..fdbede1 100644 --- a/scripts/scene_changer.gd +++ b/scripts/scene_changer.gd @@ -2,7 +2,7 @@ extends Area3D @export var scene_path : String @export var scene_name : String -@export var gamemode : gamemode +@export var level_gamemode : gamemode @export var scene_thumbnail : Texture2D var active = false @@ -19,7 +19,11 @@ func _process(delta: float) -> void: func _on_body_entered(body: Node3D) -> void: if active: + #Let the Bounds detector know player is exiting SignalBus.emit_signal("player_exiting_tree") + #Set incoming gamemode + GameGlobals.loading_gamemode = level_gamemode + #Save data if get_tree().current_scene.gamemode.load_save == true: SaveLoad.save_game_data(get_tree().current_scene.get_name()) SaveLoad.save_persistent_data() diff --git a/scripts/vendingmahcine.gd b/scripts/vendingmahcine.gd index 61c8638..4d466ba 100644 --- a/scripts/vendingmahcine.gd +++ b/scripts/vendingmahcine.gd @@ -45,10 +45,17 @@ func vend(): ##SET VARIABLES item_vend.pickup_type = pickup_type if level_control.player.gun != null: - item_vend.ammo_type = level_control.player.gun.ammo_type + if level_control.player.gun.ammo_type != 5: + item_vend.ammo_type = level_control.player.gun.ammo_type else: item_vend.ammo_type = item_stats["ammo_type"] - item_vend.value = pickup_amount + if pickup_type == 0: + if level_control.player.gun != null: + item_vend.value = level_control.player.gun.max_ammo + else: + item_vend.value = item_stats["value"] + else: + item_vend.value = pickup_amount print("ITEM : ",item_vend.pickup_type,item_vend.ammo_type,item_vend.value) else: item_vend = item.instantiate()