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://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://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/power_station.tscn" type="PackedScene" id=3]
|
||||||
[ext_resource path="res://scenes/crafting_machine.tscn" type="PackedScene" id=4]
|
[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://item_types/ore.tres" type="Resource" id=6]
|
||||||
[ext_resource path="res://recipes/all_recipes.tres" type="Resource" id=7]
|
[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]
|
[ext_resource path="res://scripts/main_camera.gd" type="Script" id=9]
|
||||||
|
|
||||||
[node name="dev_akshay" type="Spatial"]
|
[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
|
time_to_generate = 5.0
|
||||||
|
|
||||||
[node name="crafting_machine" parent="." instance=ExtResource( 4 )]
|
[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 )
|
recipes = ExtResource( 7 )
|
||||||
|
|
||||||
[node name="item_holder" parent="." instance=ExtResource( 5 )]
|
[node name="item_generator" parent="." instance=ExtResource( 5 )]
|
||||||
transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -4.01389, 0, -8.61939 )
|
transform = Transform( -4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, -6.07693, 0, 0.312646 )
|
||||||
start_with_item = ExtResource( 6 )
|
gen_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 )
|
|
||||||
|
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]
|
[ext_resource path="res://scripts/item_holder.gd" type="Script" id=2]
|
||||||
|
|
||||||
[sub_resource type="SphereShape" id=4]
|
[sub_resource type="SphereShape" id=4]
|
||||||
radius = 1.4
|
|
||||||
|
|
||||||
[node name="item_holder" type="Area"]
|
[node name="item_holder" type="Area"]
|
||||||
script = ExtResource( 2 )
|
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