pickup item values are assigned through level editor and spawn correctly, now need to implement non random spawns

This commit is contained in:
Derek
2025-01-16 23:09:57 -06:00
parent 0a3bdd26d4
commit cafcf57ef1
7 changed files with 53 additions and 28 deletions

View File

@@ -702,7 +702,7 @@ audio_empty = NodePath("Audio/Empty")
audio_reload = NodePath("Audio/Reload") audio_reload = NodePath("Audio/Reload")
[node name="mac10" parent="." index="0"] [node name="mac10" parent="." index="0"]
transform = Transform3D(-1.08301e-06, -8.051e-08, -0.3, -0.0225093, 0.299154, 9.76167e-10, 0.299154, 0.0225093, -1.086e-06, -0.00876398, 0.0748287, -0.0557729) transform = Transform3D(-1.08301e-06, -8.05098e-08, -0.3, -0.0225093, 0.299154, 9.76371e-10, 0.299154, 0.0225093, -1.086e-06, -0.00876398, 0.0748287, -0.0557729)
cast_shadow = 0 cast_shadow = 0
lod_bias = 10.0 lod_bias = 10.0
mesh = SubResource("ArrayMesh_pcg38") mesh = SubResource("ArrayMesh_pcg38")

View File

@@ -9,7 +9,7 @@ custom_features=""
export_filter="all_resources" export_filter="all_resources"
include_filter="" include_filter=""
exclude_filter="" exclude_filter=""
export_path="../../OneDrive/Desktop/gametest.exe" export_path="../../Desktop/Latest Steam Deck Build/gametest.exe"
encryption_include_filters="" encryption_include_filters=""
encryption_exclude_filters="" encryption_exclude_filters=""
encrypt_pck=false encrypt_pck=false
@@ -21,7 +21,7 @@ script_export_mode=2
custom_template/debug="" custom_template/debug=""
custom_template/release="" custom_template/release=""
debug/export_console_wrapper=1 debug/export_console_wrapper=1
binary_format/embed_pck=true binary_format/embed_pck=false
texture_format/s3tc_bptc=true texture_format/s3tc_bptc=true
texture_format/etc2_astc=false texture_format/etc2_astc=false
binary_format/architecture="x86_64" binary_format/architecture="x86_64"

View File

@@ -11,7 +11,7 @@ config_version=5
[application] [application]
config/name="First Person Test" config/name="First Person Test"
run/main_scene="res://scenes/blockout_4.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"

View File

@@ -13,6 +13,7 @@ extends Node3D
@export var health_drop_enabled = true @export var health_drop_enabled = true
@export var money_drop_enabled = true @export var money_drop_enabled = true
@onready var item_pickup = preload("res://assets/item_pickup.tscn")
@onready var crown = preload("res://assets/crown.tscn") @onready var crown = preload("res://assets/crown.tscn")
var ammo_drop = [[load("res://assets/ammo_pickup.tscn")],["ammo"]] var ammo_drop = [[load("res://assets/ammo_pickup.tscn")],["ammo"]]
var stamina_drop = [[load("res://assets/stamina_pickup.tscn")],["stamina"]] var stamina_drop = [[load("res://assets/stamina_pickup.tscn")],["stamina"]]
@@ -185,13 +186,17 @@ func die():
player.health_indicator.color = Color(0.471, 0, 0, 0) player.health_indicator.color = Color(0.471, 0, 0, 0)
func pickup_spawn(): func pickup_spawn():
var item_type = pickups.pick_random() ##SET VARIABLES
var item_spawn = item_type[0][0].instantiate() var type = randi_range(0,3)
#var item_name = item_type[1][0] var ammo_type
item_spawn.rand_amt = randi_range(25,100) var value
return item_spawn
if type == 0:
ammo_type = randi_range(0,4)
value = randi_range(1,10)
return {"pickup_type" : type,"ammo_type" : ammo_type,"value" : value}
func save_quit(): func save_quit():
SaveLoad.save_game_data(level_name) SaveLoad.save_game_data(level_name)

View File

@@ -10,6 +10,7 @@ extends Node3D
@onready var cannonparticles = $cannonparticles @onready var cannonparticles = $cannonparticles
@onready var cannon_dir = $RayCast3D @onready var cannon_dir = $RayCast3D
@onready var fire_audio = $Audio/FireAudio @onready var fire_audio = $Audio/FireAudio
@onready var level_control = get_tree().current_scene
var fire = true var fire = true
@@ -33,12 +34,11 @@ func _on_timer_timeout():
# Shoot that shit # Shoot that shit
var pickup_spawn = item_pickup.instantiate() var pickup_spawn = item_pickup.instantiate()
var item_stats = level_control.pickup_spawn()
##SET VARIABLES ##SET VARIABLES
var type = randi_range(0,3) pickup_spawn.pickup_type = item_stats["pickup_type"]
pickup_spawn.pickup_type = type pickup_spawn.ammo_type = item_stats["ammo_type"]
if type == 0: pickup_spawn.value = item_stats["value"]
pickup_spawn.ammo_type = randi_range(0,4)
pickup_spawn.value = randi_range(1,10)
pickup_spawn.position = cannon_dir.global_position pickup_spawn.position = cannon_dir.global_position
pickup_spawn.transform.basis = cannon_dir.global_transform.basis pickup_spawn.transform.basis = cannon_dir.global_transform.basis

View File

@@ -206,7 +206,15 @@ func quiet_remove():
func drop_loot(number_of_drops): func drop_loot(number_of_drops):
#pickup drop #pickup drop
while number_of_drops > 0: while number_of_drops > 0:
var rand_item = level_control.pickup_spawn()
var pickup_spawn = level_control.item_pickup.instantiate()
var item_stats = level_control.pickup_spawn()
##SET VARIABLES
pickup_spawn.pickup_type = item_stats["pickup_type"]
pickup_spawn.ammo_type = item_stats["ammo_type"]
pickup_spawn.value = item_stats["value"]
var lv_x = randf_range(-MAX_LV,MAX_LV) var lv_x = randf_range(-MAX_LV,MAX_LV)
var lv_y = randf_range(0,MAX_LV) var lv_y = randf_range(0,MAX_LV)
var lv_z = randf_range(-MAX_LV,MAX_LV) var lv_z = randf_range(-MAX_LV,MAX_LV)
@@ -215,12 +223,12 @@ func drop_loot(number_of_drops):
var av_z = randf_range(-MAX_AV,MAX_AV) var av_z = randf_range(-MAX_AV,MAX_AV)
# Random Item Drop # Random Item Drop
rand_item.position = self.global_position + Vector3(0,2,0) #added height to spawn location since origin is on the ground pickup_spawn.position = self.global_position + Vector3(0,2,0) #added height to spawn location since origin is on the ground
rand_item.transform.basis = self.global_transform.basis pickup_spawn.transform.basis = self.global_transform.basis
rand_item.linear_velocity += self.global_transform.basis * Vector3(lv_x,lv_y,lv_z) pickup_spawn.linear_velocity += self.global_transform.basis * Vector3(lv_x,lv_y,lv_z)
rand_item.angular_velocity += self.global_transform.basis * Vector3(av_x,av_y,av_z) pickup_spawn.angular_velocity += self.global_transform.basis * Vector3(av_x,av_y,av_z)
await get_tree().create_timer(.05).timeout await get_tree().create_timer(.05).timeout
get_tree().get_root().add_child(rand_item) get_tree().get_root().add_child(pickup_spawn)
number_of_drops -= 1 number_of_drops -= 1
if number_of_drops <= 0: if number_of_drops <= 0:

View File

@@ -6,18 +6,16 @@ extends Node3D
@onready var anim_player = $AnimationPlayer @onready var anim_player = $AnimationPlayer
@onready var vend_ray = $VendRay @onready var vend_ray = $VendRay
@onready var label_3d = $Label3D @onready var label_3d = $Label3D
@onready var level_control = get_tree().current_scene
var active = true var active = true
var level_control
# Called when the node enters the scene tree for the first time. # Called when the node enters the scene tree for the first time.
func _ready(): func _ready():
level_control = get_tree().current_scene if active == true:
label_3d.text = str(item_price)
else:
# Called every frame. 'delta' is the elapsed time since the previous frame. label_3d.text = "offline"
func _process(delta):
pass
func interact(): func interact():
if active == true: if active == true:
@@ -39,3 +37,17 @@ func vend():
active = false active = false
label_3d.text = "offline" label_3d.text = "offline"
get_parent().add_child(item_vend) get_parent().add_child(item_vend)
func save():
var save_dict = {
"filename" : get_scene_file_path(),
"parent" : get_parent().get_path(),
"pos_x" : position.x,
"pos_y" : position.y,
"pos_z" : position.z,
"rot_x" : rotation.x,
"rot_y" : rotation.y,
"rot_z" : rotation.z,
"active" : active
}
return save_dict