Added generic item_generator scene. using it as the ore conveyor in dev_akshay for testing
This commit is contained in:
parent
11826ef9d5
commit
a5567a8132
@ -1,13 +1,12 @@
|
||||
[gd_scene load_steps=10 format=2]
|
||||
[gd_scene load_steps=9 format=2]
|
||||
|
||||
[ext_resource path="res://scenes/player.tscn" type="PackedScene" id=1]
|
||||
[ext_resource path="res://assets/moonbase_whitebox/Moonbase_Whitebox.tscn" type="PackedScene" id=2]
|
||||
[ext_resource path="res://scenes/power_station.tscn" type="PackedScene" id=3]
|
||||
[ext_resource path="res://scenes/crafting_machine.tscn" type="PackedScene" id=4]
|
||||
[ext_resource path="res://scenes/item_holder.tscn" type="PackedScene" id=5]
|
||||
[ext_resource path="res://scenes/item_generator.tscn" type="PackedScene" id=5]
|
||||
[ext_resource path="res://item_types/ore.tres" type="Resource" id=6]
|
||||
[ext_resource path="res://recipes/all_recipes.tres" type="Resource" id=7]
|
||||
[ext_resource path="res://item_types/raw_yam.tres" type="Resource" id=8]
|
||||
[ext_resource path="res://scripts/main_camera.gd" type="Script" id=9]
|
||||
|
||||
[node name="dev_akshay" type="Spatial"]
|
||||
@ -28,13 +27,9 @@ transform = Transform( 2, 0, 0, 0, 2, 0, 0, 0, 2, 0, 1, 0 )
|
||||
time_to_generate = 5.0
|
||||
|
||||
[node name="crafting_machine" parent="." instance=ExtResource( 4 )]
|
||||
transform = Transform( -4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, 0.974658, 0.0662553, -4.70336 )
|
||||
transform = Transform( -4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, 2.40238, 0.0662553, -5.76668 )
|
||||
recipes = ExtResource( 7 )
|
||||
|
||||
[node name="item_holder" parent="." instance=ExtResource( 5 )]
|
||||
transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -4.01389, 0, -8.61939 )
|
||||
start_with_item = ExtResource( 6 )
|
||||
|
||||
[node name="item_holder2" parent="." instance=ExtResource( 5 )]
|
||||
transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -1.14543, 0, -8.61939 )
|
||||
start_with_item = ExtResource( 8 )
|
||||
[node name="item_generator" parent="." instance=ExtResource( 5 )]
|
||||
transform = Transform( -4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, -6.07693, 0, 0.312646 )
|
||||
gen_item = ExtResource( 6 )
|
||||
|
35
scenes/item_generator.tscn
Normal file
35
scenes/item_generator.tscn
Normal file
@ -0,0 +1,35 @@
|
||||
[gd_scene load_steps=5 format=2]
|
||||
|
||||
[ext_resource path="res://scenes/coin_machine.tscn" type="PackedScene" id=1]
|
||||
[ext_resource path="res://scenes/item_holder.tscn" type="PackedScene" id=2]
|
||||
[ext_resource path="res://scripts/item_generator.gd" type="Script" id=3]
|
||||
|
||||
[sub_resource type="CylinderMesh" id=1]
|
||||
|
||||
[node name="item_generator" type="Spatial"]
|
||||
script = ExtResource( 3 )
|
||||
|
||||
[node name="MeshInstance" type="MeshInstance" parent="."]
|
||||
mesh = SubResource( 1 )
|
||||
|
||||
[node name="progress_text" type="Label3D" parent="MeshInstance"]
|
||||
unique_name_in_owner = true
|
||||
transform = Transform( 2, 0, 0, 0, 2, 0, 0, 0, 2, 0, 2.11515, 0 )
|
||||
modulate = Color( 0, 0, 0, 1 )
|
||||
text = "Progress: 20%"
|
||||
|
||||
[node name="item_slot_1" parent="." groups=["item_slots"] instance=ExtResource( 2 )]
|
||||
transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 2.5, 0, 0 )
|
||||
|
||||
[node name="item_slot_2" parent="." groups=["item_slots"] instance=ExtResource( 2 )]
|
||||
transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 5, 0, 0 )
|
||||
|
||||
[node name="coin_machine" parent="." instance=ExtResource( 1 )]
|
||||
unique_name_in_owner = true
|
||||
|
||||
[node name="gen_timer" type="Timer" parent="."]
|
||||
unique_name_in_owner = true
|
||||
one_shot = true
|
||||
|
||||
[connection signal="coin_requirement_met" from="coin_machine" to="." method="_on_coin_machine_coin_requirement_met"]
|
||||
[connection signal="timeout" from="gen_timer" to="." method="_on_gen_timer_timeout"]
|
@ -4,7 +4,6 @@
|
||||
[ext_resource path="res://scripts/item_holder.gd" type="Script" id=2]
|
||||
|
||||
[sub_resource type="SphereShape" id=4]
|
||||
radius = 1.4
|
||||
|
||||
[node name="item_holder" type="Area"]
|
||||
script = ExtResource( 2 )
|
||||
|
66
scripts/item_generator.gd
Normal file
66
scripts/item_generator.gd
Normal file
@ -0,0 +1,66 @@
|
||||
extends Spatial
|
||||
|
||||
export var gen_item : Resource
|
||||
export var gen_time : float = 5.0
|
||||
export var gen_count : int = 2
|
||||
|
||||
var item_slots
|
||||
|
||||
func _ready():
|
||||
assert(gen_item != null)
|
||||
item_slots = get_tree().get_nodes_in_group("item_slots")
|
||||
assert(item_slots != null)
|
||||
for item_slot in item_slots:
|
||||
item_slot.connect("item_changed", self, "_on_item_slot_item_changed")
|
||||
update_coin_machine_status()
|
||||
$"%gen_timer".one_shot = true
|
||||
$"%progress_text".visible = false
|
||||
|
||||
func update_progress_viz():
|
||||
if not $"%progress_text".visible:
|
||||
return
|
||||
var time_left : float = $"%gen_timer".time_left
|
||||
var time_passed : float = gen_time - time_left
|
||||
var percent_complete : float = (time_passed / gen_time) * 100.0
|
||||
$"%progress_text".text = "Progress: %.2f " % percent_complete
|
||||
|
||||
func _process(delta):
|
||||
update_progress_viz()
|
||||
|
||||
func is_generating() -> bool:
|
||||
return $"%gen_timer".time_left > 0
|
||||
|
||||
func start_generation():
|
||||
$"%progress_text".visible = true
|
||||
$"%gen_timer".start(gen_time)
|
||||
update_coin_machine_status()
|
||||
for item_slot in item_slots:
|
||||
item_slot.add_enabled = false
|
||||
|
||||
func _on_coin_machine_coin_requirement_met(player):
|
||||
assert(is_generator_ready())
|
||||
start_generation()
|
||||
|
||||
func is_generator_ready():
|
||||
for item_slot in item_slots:
|
||||
if item_slot.has_item():
|
||||
return false
|
||||
return not is_generating()
|
||||
|
||||
func update_coin_machine_status():
|
||||
$"%coin_machine".enabled = is_generator_ready()
|
||||
|
||||
#Note(asr): dynamically connect item_changed signal
|
||||
#on all nodes in the "item_slots" group. See _ready()
|
||||
func _on_item_slot_item_changed(item):
|
||||
update_coin_machine_status()
|
||||
|
||||
func _on_gen_timer_timeout():
|
||||
var count : int = 0
|
||||
for item_slot in item_slots:
|
||||
if count < gen_count:
|
||||
item_slot.spawn_item(gen_item)
|
||||
count += 1
|
||||
item_slot.add_enabled = true
|
||||
update_coin_machine_status()
|
||||
$"%progress_text".visible = false
|
Loading…
x
Reference in New Issue
Block a user