This commit is contained in:
akshay 2022-08-21 15:32:54 -04:00
commit 9f74ab447b
14 changed files with 122 additions and 9 deletions

17
scenes/circle_timer.tscn Normal file
View File

@ -0,0 +1,17 @@
[gd_scene load_steps=5 format=2]
[ext_resource path="res://assets/UI/Meter_Completion.png" type="Texture" id=1]
[ext_resource path="res://shaders/circle_timer.gdshader" type="Shader" id=2]
[ext_resource path="res://scripts/circle_timer.gd" type="Script" id=3]
[sub_resource type="ShaderMaterial" id=1]
resource_local_to_scene = true
shader = ExtResource( 2 )
shader_param/albedo = Color( 0, 1, 0.416667, 1 )
shader_param/percent = 0.0
[node name="circle_timer" type="Sprite3D"]
transform = Transform( 0.25, 0, 0, 0, 0.176777, 0.176777, 0, -0.176777, 0.176777, 0, 0, 0 )
material_override = SubResource( 1 )
texture = ExtResource( 1 )
script = ExtResource( 3 )

View File

@ -1,4 +1,4 @@
[gd_scene load_steps=7 format=2] [gd_scene load_steps=8 format=2]
[ext_resource path="res://scenes/item_holder.tscn" type="PackedScene" id=1] [ext_resource path="res://scenes/item_holder.tscn" type="PackedScene" id=1]
[ext_resource path="res://scripts/crafting_station/crafting_station.gd" type="Script" id=2] [ext_resource path="res://scripts/crafting_station/crafting_station.gd" type="Script" id=2]
@ -6,6 +6,7 @@
[ext_resource path="res://scenes/item_dump.tscn" type="PackedScene" id=4] [ext_resource path="res://scenes/item_dump.tscn" type="PackedScene" id=4]
[ext_resource path="res://scenes/status_light.tscn" type="PackedScene" id=5] [ext_resource path="res://scenes/status_light.tscn" type="PackedScene" id=5]
[ext_resource path="res://item_types/crystal.tres" type="Resource" id=6] [ext_resource path="res://item_types/crystal.tres" type="Resource" id=6]
[ext_resource path="res://scenes/circle_timer.tscn" type="PackedScene" id=7]
[node name="crafting_station" type="Spatial" groups=["damageable"]] [node name="crafting_station" type="Spatial" groups=["damageable"]]
script = ExtResource( 2 ) script = ExtResource( 2 )
@ -42,6 +43,9 @@ visible = false
modulate = Color( 0, 0, 0, 1 ) modulate = Color( 0, 0, 0, 1 )
text = "Progress: 20%" text = "Progress: 20%"
[node name="circle_timer" parent="." instance=ExtResource( 7 )]
transform = Transform( -1.49012e-08, -0.176777, 0.176777, 0, 0.176777, 0.176777, -0.25, 7.45058e-09, -7.45058e-09, 0.722693, 1.42808, 0.107395 )
[connection signal="coin_requirement_met" from="coin_machine" to="." method="_on_coin_machine_coin_requirement_met"] [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"] [connection signal="timeout" from="gen_timer" to="." method="_on_gen_timer_timeout"]
[connection signal="item_dump_completed" from="item_dump" to="." method="_on_item_dump_item_dump_completed"] [connection signal="item_dump_completed" from="item_dump" to="." method="_on_item_dump_item_dump_completed"]

View File

@ -1,4 +1,4 @@
[gd_scene load_steps=7 format=2] [gd_scene load_steps=8 format=2]
[ext_resource path="res://scenes/item_holder.tscn" type="PackedScene" id=1] [ext_resource path="res://scenes/item_holder.tscn" type="PackedScene" id=1]
[ext_resource path="res://scripts/hydroponics_station/hydroponics_station.gd" type="Script" id=2] [ext_resource path="res://scripts/hydroponics_station/hydroponics_station.gd" type="Script" id=2]
@ -6,6 +6,7 @@
[ext_resource path="res://scenes/status_light.tscn" type="PackedScene" id=4] [ext_resource path="res://scenes/status_light.tscn" type="PackedScene" id=4]
[ext_resource path="res://scenes/item_dump.tscn" type="PackedScene" id=5] [ext_resource path="res://scenes/item_dump.tscn" type="PackedScene" id=5]
[ext_resource path="res://item_types/ingot.tres" type="Resource" id=6] [ext_resource path="res://item_types/ingot.tres" type="Resource" id=6]
[ext_resource path="res://scenes/circle_timer.tscn" type="PackedScene" id=7]
[node name="hydroponics_station" type="Spatial"] [node name="hydroponics_station" type="Spatial"]
script = ExtResource( 2 ) script = ExtResource( 2 )
@ -35,6 +36,9 @@ omni_attenuation = 0.933034
unique_name_in_owner = true unique_name_in_owner = true
items_required = [ ExtResource( 6 ) ] items_required = [ ExtResource( 6 ) ]
[node name="circle_timer" parent="." instance=ExtResource( 7 )]
transform = Transform( 0.25, 0, 0, 0, 0.176777, 0.176777, 0, -0.176777, 0.176777, 0, 1.42433, 0.280864 )
[connection signal="coin_requirement_met" from="coin_machine" to="." method="_on_coin_machine_coin_requirement_met"] [connection signal="coin_requirement_met" from="coin_machine" to="." method="_on_coin_machine_coin_requirement_met"]
[connection signal="item_changed" from="item_holder" to="." method="_on_item_holder_item_changed"] [connection signal="item_changed" from="item_holder" to="." method="_on_item_holder_item_changed"]
[connection signal="timeout" from="grow_timer" to="." method="_on_grow_timer_timeout"] [connection signal="timeout" from="grow_timer" to="." method="_on_grow_timer_timeout"]

View File

@ -1,4 +1,4 @@
[gd_scene load_steps=8 format=2] [gd_scene load_steps=11 format=2]
[ext_resource path="res://scenes/coin_machine.tscn" type="PackedScene" id=1] [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://scenes/item_holder.tscn" type="PackedScene" id=2]
@ -7,6 +7,14 @@
[ext_resource path="res://scenes/status_light.tscn" type="PackedScene" id=5] [ext_resource path="res://scenes/status_light.tscn" type="PackedScene" id=5]
[ext_resource path="res://item_types/gem.tres" type="Resource" id=6] [ext_resource path="res://item_types/gem.tres" type="Resource" id=6]
[ext_resource path="res://item_types/ore.tres" type="Resource" id=7] [ext_resource path="res://item_types/ore.tres" type="Resource" id=7]
[ext_resource path="res://scenes/circle_timer.tscn" type="PackedScene" id=8]
[ext_resource path="res://shaders/circle_timer.gdshader" type="Shader" id=9]
[sub_resource type="ShaderMaterial" id=1]
resource_local_to_scene = true
shader = ExtResource( 9 )
shader_param/albedo = Color( 0, 1, 0.416667, 1 )
shader_param/percent = 0.0
[node name="item_generator" type="Spatial"] [node name="item_generator" type="Spatial"]
transform = Transform( 1, 0, 3.57628e-07, 0, 1, 0, -3.57628e-07, 0, 1, 0.330428, 0, -8.57503 ) transform = Transform( 1, 0, 3.57628e-07, 0, 1, 0, -3.57628e-07, 0, 1, 0.330428, 0, -8.57503 )
@ -47,6 +55,10 @@ visible = false
modulate = Color( 0, 0, 0, 1 ) modulate = Color( 0, 0, 0, 1 )
text = "Progress: 20%" text = "Progress: 20%"
[node name="circle_timer" parent="." instance=ExtResource( 8 )]
transform = Transform( 0.25, 0, 0, 0, 0.176777, 0.176777, 0, -0.176777, 0.176777, -1.49012e-07, 1.25146, 0.444146 )
material_override = SubResource( 1 )
[connection signal="coin_requirement_met" from="coin_machine" to="." method="_on_coin_machine_coin_requirement_met"] [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"] [connection signal="timeout" from="gen_timer" to="." method="_on_gen_timer_timeout"]
[connection signal="item_dump_completed" from="item_dump" to="." method="_on_item_dump_item_dump_completed"] [connection signal="item_dump_completed" from="item_dump" to="." method="_on_item_dump_item_dump_completed"]

View File

@ -417,11 +417,11 @@ transform = Transform( 0.502127, 2.91038e-11, 0.487718, 5.82077e-11, 0.7, -5.456
grow_time = 30.0 grow_time = 30.0
[node name="hydroponics_station3" parent="Hydroponics_Room" instance=ExtResource( 11 )] [node name="hydroponics_station3" parent="Hydroponics_Room" instance=ExtResource( 11 )]
transform = Transform( 0.502127, 3.7835e-10, 0.487718, 5.82077e-11, 0.700001, -1.04592e-10, -0.487718, 2.61934e-10, 0.502128, 1.79792, 0.00590622, -8.91695 ) transform = Transform( 0.487718, 2.91038e-10, -0.502128, -4.46562e-10, 0.700001, -2.32831e-10, 0.502127, 3.49246e-10, 0.487718, 1.79792, 0.00590622, -8.91695 )
grow_time = 30.0 grow_time = 30.0
[node name="hydroponics_station4" parent="Hydroponics_Room" instance=ExtResource( 11 )] [node name="hydroponics_station4" parent="Hydroponics_Room" instance=ExtResource( 11 )]
transform = Transform( 0.502127, 3.7835e-10, 0.487718, 5.82077e-11, 0.700001, -2.37378e-10, -0.487718, 3.7835e-10, 0.502128, 3.28563, 0.006777, -7.36006 ) transform = Transform( 0.487718, 3.7835e-10, -0.502128, -5.0477e-10, 0.700001, -2.32831e-10, 0.502127, 4.36557e-10, 0.487718, 3.28563, 0.006777, -7.36006 )
grow_time = 30.0 grow_time = 30.0
[node name="book" parent="Hydroponics_Room" instance=ExtResource( 23 )] [node name="book" parent="Hydroponics_Room" instance=ExtResource( 23 )]

View File

@ -1,4 +1,4 @@
[gd_scene load_steps=9 format=2] [gd_scene load_steps=12 format=2]
[ext_resource path="res://scenes/item_holder.tscn" type="PackedScene" id=1] [ext_resource path="res://scenes/item_holder.tscn" type="PackedScene" id=1]
[ext_resource path="res://scripts/oven/oven.gd" type="Script" id=2] [ext_resource path="res://scripts/oven/oven.gd" type="Script" id=2]
@ -7,10 +7,18 @@
[ext_resource path="res://scenes/status_light.tscn" type="PackedScene" id=5] [ext_resource path="res://scenes/status_light.tscn" type="PackedScene" id=5]
[ext_resource path="res://item_types/repair_kit.tres" type="Resource" id=6] [ext_resource path="res://item_types/repair_kit.tres" type="Resource" id=6]
[ext_resource path="res://item_types/ingot.tres" type="Resource" id=7] [ext_resource path="res://item_types/ingot.tres" type="Resource" id=7]
[ext_resource path="res://scenes/circle_timer.tscn" type="PackedScene" id=8]
[ext_resource path="res://shaders/circle_timer.gdshader" type="Shader" id=9]
[sub_resource type="BoxShape" id=4] [sub_resource type="BoxShape" id=4]
extents = Vector3( 0.648623, 1, 0.516904 ) extents = Vector3( 0.648623, 1, 0.516904 )
[sub_resource type="ShaderMaterial" id=5]
resource_local_to_scene = true
shader = ExtResource( 9 )
shader_param/albedo = Color( 0, 1, 0.416667, 1 )
shader_param/percent = 0.0
[node name="oven" type="Spatial" groups=["damageable"]] [node name="oven" type="Spatial" groups=["damageable"]]
script = ExtResource( 2 ) script = ExtResource( 2 )
@ -35,6 +43,10 @@ transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0.868397 )
[node name="cook_timer" type="Timer" parent="."] [node name="cook_timer" type="Timer" parent="."]
one_shot = true one_shot = true
[node name="circle_timer" parent="." instance=ExtResource( 8 )]
transform = Transform( 0.25, 0, 0, 0, 0.176777, 0.176777, 0, -0.176777, 0.176777, 0, 0.943779, 1.02976 )
material_override = SubResource( 5 )
[connection signal="coin_requirement_met" from="coin_machine" to="." method="_on_coin_machine_coin_requirement_met"] [connection signal="coin_requirement_met" from="coin_machine" to="." method="_on_coin_machine_coin_requirement_met"]
[connection signal="item_dump_completed" from="item_dump" to="." method="_on_item_dump_completed"] [connection signal="item_dump_completed" from="item_dump" to="." method="_on_item_dump_completed"]
[connection signal="item_changed" from="item_holder" to="." method="_on_item_holder_item_changed"] [connection signal="item_changed" from="item_holder" to="." method="_on_item_holder_item_changed"]

24
scripts/circle_timer.gd Normal file
View File

@ -0,0 +1,24 @@
extends Sprite3D
var timer: Timer
func _ready():
material_override
func set_timer(p_timer: Timer):
timer = p_timer
update()
func clear_timer():
timer = null
update()
func _process(delta):
update()
func update():
if timer != null:
visible = true
material_override.set_shader_param("percent", timer.time_left / timer.wait_time)
else:
visible = false

View File

@ -20,6 +20,7 @@ onready var gen_timer = $"%gen_timer"
onready var progress_text = $"%progress_text" onready var progress_text = $"%progress_text"
onready var item_dump = $"%item_dump" onready var item_dump = $"%item_dump"
onready var status_light = $"%status_light" onready var status_light = $"%status_light"
onready var circle_timer = $circle_timer
var item_slots = null var item_slots = null
var state = null var state = null

View File

@ -17,9 +17,11 @@ func enter_from(state):
ctx.gen_timer.start() ctx.gen_timer.start()
ctx.status_light.activate() ctx.status_light.activate()
ctx.progress_text.text = "Progress: 0%" ctx.progress_text.text = "Progress: 0%"
ctx.circle_timer.set_timer(ctx.gen_timer)
func exit_to(state): func exit_to(state):
ctx.gen_timer.stop() ctx.gen_timer.stop()
ctx.circle_timer.clear_timer()
func update(delta): func update(delta):
var time_left : float = ctx.gen_timer.time_left var time_left : float = ctx.gen_timer.time_left

View File

@ -16,9 +16,10 @@ func enter_from(state):
ctx.get_node("grow_timer").start() ctx.get_node("grow_timer").start()
ctx.status_light.activate() ctx.status_light.activate()
ctx.item_dump.enabled = false ctx.item_dump.enabled = false
ctx.get_node("circle_timer").set_timer(ctx.get_node("grow_timer"))
func exit_to(state): func exit_to(state):
pass ctx.get_node("circle_timer").clear_timer()
func on_coin_machine_coin_requirement_met(player): func on_coin_machine_coin_requirement_met(player):
assert(false, "coin machine should be disabled while growing") assert(false, "coin machine should be disabled while growing")

View File

@ -20,6 +20,7 @@ onready var gen_timer = $"%gen_timer"
onready var item_dump = $"%item_dump" onready var item_dump = $"%item_dump"
onready var status_light = $"%status_light" onready var status_light = $"%status_light"
onready var progress_text = $"%progress_text" onready var progress_text = $"%progress_text"
onready var circle_timer = $circle_timer
var state = null var state = null
var item_slots var item_slots

View File

@ -17,9 +17,10 @@ func enter_from(state):
ctx.status_light.activate() ctx.status_light.activate()
ctx.gen_timer.start() ctx.gen_timer.start()
ctx.emit_signal("gen_started") ctx.emit_signal("gen_started")
ctx.circle_timer.set_timer(ctx.gen_timer)
func exit_to(state): func exit_to(state):
pass ctx.circle_timer.clear_timer()
func update(delta): func update(delta):
var time_left : float = ctx.gen_timer.time_left var time_left : float = ctx.gen_timer.time_left

View File

@ -17,9 +17,10 @@ func enter_from(state):
ctx.get_node("cook_timer").start() ctx.get_node("cook_timer").start()
ctx.get_node("status_light").activate() ctx.get_node("status_light").activate()
ctx.get_node("circle_timer").set_timer(ctx.get_node("cook_timer"))
func exit_to(state): func exit_to(state):
pass ctx.get_node("circle_timer").clear_timer()
func on_coin_machine_coin_requirement_met(player): func on_coin_machine_coin_requirement_met(player):
assert(false, "coin machine should be disabled while growing") assert(false, "coin machine should be disabled while growing")

View File

@ -0,0 +1,33 @@
shader_type spatial;
render_mode unshaded;
uniform vec4 albedo : hint_color;
uniform float percent;
const float PI = 3.14159;
vec3 circle(vec2 p) {
float v = (1.0-smoothstep(0.49, 0.50, length(p))) * smoothstep(0.19, 0.2, length(p));
return vec3(v, v,v);
}
float atan2(in float y, in float x) {
bool s = (abs(x) > abs(y));
if (s) {
return PI/2.0 - atan(x,y);
} else {
return atan(y,x);
}
}
float wipe(vec2 pos, float p_percent) {
float angle = atan2(pos.y , pos.x);
float alpha = step(p_percent *PI * 2.25, angle + PI);
return alpha;
}
void fragment() {
vec2 base_uv = UV;
vec2 pos = UV - vec2(0.5, 0.5);
ALBEDO = circle(pos) * albedo.xyz;
ALPHA = circle(pos).x * wipe(pos, percent);
}