RustHacker/time_system/clock.gd

99 lines
2.7 KiB
GDScript3
Raw Normal View History

2026-01-11 16:37:57 +11:00
extends Control
2026-01-17 12:56:17 +11:00
@export var days_left : int = 6
2026-01-11 16:37:57 +11:00
@export var time_left : int = 200
var starting_time : int = 200
@export var bar : TextureProgressBar
@export var timer_text : Label
@export var days_text : Label
2026-01-14 22:15:18 +11:00
@export var next_button : Button
2026-01-11 16:37:57 +11:00
2026-01-17 17:07:53 +11:00
signal new_day
@export var current_target_label : Label
@export var power_bar : TextureProgressBar
@export var next_target_label : Label
@export var levels : Array[HackLevel]
var ending_text : String
var power_vis : float = 0
2026-01-23 15:38:28 +11:00
@export var accumlate_labebl :Label
2026-01-11 16:37:57 +11:00
# Called when the node enters the scene tree for the first time.
func _ready() -> void:
pass # Replace with function body.
# Called every frame. 'delta' is the elapsed time since the previous frame.
func _process(delta: float) -> void:
bar.value = (starting_time-time_left)/float(starting_time)
timer_text.text = str(time_left)
days_text.text = str(days_left)
2026-01-14 22:15:18 +11:00
next_button.disabled = time_left > 10
2026-01-23 15:38:28 +11:00
if days_left <= 0:
2026-01-14 22:15:18 +11:00
next_button.text = "End Game"
else:
next_button.text = "Proceed to next day ->"
update_power()
if PlayerInventory.botnet_servers < power_vis:
power_vis = PlayerInventory.botnet_servers
else:
power_vis = clampf(power_vis + (delta * 5),0,PlayerInventory.botnet_servers)
2026-01-11 16:37:57 +11:00
func has_time(time : float) -> bool:
return time_left >= time
func use_time(time : float):
time_left -= time
func _on_next_day_pressed() -> void:
2026-01-23 15:38:28 +11:00
2026-01-14 22:15:18 +11:00
if days_left >= 1:
2026-01-23 15:38:28 +11:00
accumulate_botnet()
2026-01-14 22:15:18 +11:00
days_left -= 1
time_left = 200
2026-01-17 17:07:53 +11:00
new_day.emit()
2026-01-23 15:38:28 +11:00
elif days_left == 0:
accumulate_botnet()
days_left = -1
2026-01-14 22:15:18 +11:00
else:
get_tree().change_scene_to_file("res://scenes/ending.tscn")
PlayerInventory.hide()
Clock.hide()
2026-01-17 13:42:34 +11:00
Locations.hide()
2026-01-14 22:15:18 +11:00
pass
2026-01-23 15:38:28 +11:00
func accumulate_botnet():
for slot in PlayerInventory.inventory_panel.slots:
if slot.item:
PlayerInventory.botnet_servers += slot.item.botnet_power
func update_power():
2026-01-23 15:38:28 +11:00
var active_power : int = 0
for slot in PlayerInventory.inventory_panel.slots:
if slot.item:
active_power += slot.item.botnet_power
accumlate_labebl.text = "+" + str(active_power) + " next day"
var current_level : HackLevel
var next_level : HackLevel
for x in range(levels.size()):
if levels[x].power <= power_vis:
current_level = levels[x]
if x < levels.size()-1:
next_level = levels[x+1]
else:
next_level = current_level
power_bar.min_value = current_level.power
power_bar.max_value = next_level.power
power_bar.value = power_vis
power_bar.self_modulate = next_level.color
next_target_label.text = str(round((next_level.power-power_vis)*10)/10) + " to next target"
current_target_label.text = current_level.name
if power_vis >= next_level.power:
next_target_label.text = "Max Hacking Level"
ending_text = current_level.ending_text