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:
57
global.gd
Normal file
57
global.gd
Normal 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()
|
||||
Reference in New Issue
Block a user