Initial commit

Half-baked state. Most of the UI is mostly done, but the integration
with Grist (or any other data provider) is still missing.
This commit is contained in:
Felix
2025-05-11 19:19:24 +02:00
commit 4b1796250c
106 changed files with 7092 additions and 0 deletions

57
global.gd Normal file
View File

@@ -0,0 +1,57 @@
extends Node
var data_provider = preload("res://providers/debug_data.gd").new()
var scale_provider = preload("res://providers/debug_scale.gd").new()
var article_infos: Dictionary[String, ArticleInfo] = {}
var cart: Array[CartEntry] = []
var current_entry: CartEntry = null
var cart_total_cents = 0
var scale_grams: int = 120
var tara_grams: int = 20
signal weights_updated
signal cart_updated
func _ready() -> void:
article_infos = data_provider.load_articles()
cart_updated.connect(_on_cart_updated)
current_entry = CartEntry.new(article_infos['default_0'])
update_weights()
func _on_product_selected(id):
current_entry = CartEntry.new(article_infos[id])
update_weights()
func _on_cart_updated():
# Make sure all cart entries have the correct list index
for i in range(len(cart)):
cart[i].cart_index = i
# Update the total
cart_total_cents = 0
for entry in Global.cart:
cart_total_cents += entry.price_cents
func update_weights():
current_entry.weight_grams = scale_grams - tara_grams
current_entry.price_cents = current_entry.weight_grams * current_entry.article_info.price_cents_per_gram
weights_updated.emit()
func set_scale(grams):
scale_grams = int(grams)
update_weights()
func set_tara(grams):
tara_grams = int(grams)
update_weights()
func confirm_entry():
cart.append(current_entry)
current_entry = CartEntry.new(current_entry.article_info)
update_weights()
cart_updated.emit()