FabcatBot/library.gd
2025-11-12 17:14:47 +11:00

119 lines
3.5 KiB
GDScript

extends Node
var save_path : String = "user://librarySave.tres"
var save : LibrarySave
# nozzles here or in save maybe?
# Called when the node enters the scene tree for the first time.
func _ready() -> void:
load_data()
# Called every frame. 'delta' is the elapsed time since the previous frame.
func _process(delta: float) -> void:
pass
func load_data():
# check if save file exists
print("real? " + str(FileAccess.file_exists(save_path)))
if FileAccess.file_exists(save_path):
print("yes, loading...")
save = ResourceLoader.load(save_path) as LibrarySave
print(save)
#save = load(save_path) as GameSave
else:
print("nope, creating...")
save_new()
pass
print("Save Location: " + ProjectSettings.globalize_path(save_path))
func save_data():
ResourceSaver.save(save, save_path)
pass
func save_new():
#data = FileAccess.open(save_path, FileAccess.WRITE_READ)
save = LibrarySave.new()
var error = ResourceSaver.save(save, save_path)
print(error)
func list_printers() -> String:
var response : String = "Current Printers:"
for printer : Printer in save.printers:
response += "\n- " + printer.list_string()
return response
# displays a list of spools, will bold the name of the spool which matches the search if there are
# more than 25 spools, will enable pagination and display 25 of each page, set the page argement to
# display a specific page, will default to the first page
func list_spools(search : String = "", page : int = 0) -> String:
var response : String = ""
var unloaded_printers : int = 0
const per_page : int = 25
# count the number of displayed spools, when it reaches 25(per_page), STOP
var counted_spools : int = 0
# count the number of spools loaded into the printers, will be useful wheather its the first page or not
var loaded_spools : int = 0
for printer : Printer in save.printers:
loaded_spools += printer.spools.size()
if page == 0: # only display the printer spools on the first page
response = "Loaded Spools:"
counted_spools += loaded_spools
for printer : Printer in save.printers:
if printer.spools.size() > 0:
response += "\n- " + printer.list_string()
else:
unloaded_printers += 1
if unloaded_printers > 0:
response += "\n-# +" + str(unloaded_printers) + " unloaded printers"
response += "\n\nAvailable Spools: "
var found_search_match = false
var i : int = (page * per_page) # starts higher on pages other than 0
if page > 0:
i -= loaded_spools
while i < save.spools.size() and counted_spools < per_page:
# print spools
var bold : bool = false
if save.spools[i].name == search and not found_search_match:
bold = true
found_search_match = true
response += "\n- " + save.spools[i].list_string(bold)
counted_spools += 1
i += 1
return response
#for spool : Spool in save.spools:
#var bold : bool = false
#if spool.name == search and not found_search_match:
#bold = true
#found_search_match = true
#response += "\n- " + spool.list_string(bold)
#return response
func printer_choies() -> Array[Dictionary]:
var printer_names : Array[Dictionary] = []
for printer : Printer in save.printers:
printer_names.append(ApplicationCommand.choice(printer.name, printer.name))
return printer_names
func printer_choices_string() -> Array[String]:
var printer_names : Array[String] = []
for printer : Printer in save.printers:
printer_names.append(printer.name)
return printer_names
func spool_choices_string() -> Array[String]:
var spool_names : Array[String] = []
for spool : Spool in save.spools:
spool_names.append(spool.name)
return spool_names