diff --git a/currency/currency.gd b/currency/currency.gd index cfaa12a..df13ae3 100644 --- a/currency/currency.gd +++ b/currency/currency.gd @@ -4,3 +4,4 @@ class_name Currency @export var name: String @export var production: Array[Production] @export_multiline var description = "no description of currency" +@export var thumbnail: Texture2D diff --git a/economy.gd b/economy.gd index c9e1be7..5d648ec 100644 --- a/economy.gd +++ b/economy.gd @@ -49,6 +49,21 @@ func simulate(): pp.currency = p.currency pp.amount = c.amount * p.amount produce(pp) + + +func get_all_currencies_in(dir: StringName): + var reses := ResourceLoader.list_directory(dir) + var resources := [] + for res in reses: + if res.ends_with(".tres"): + resources.append(load(res)) + return resources + +func get_all_sentient_currencies() -> Array: + return get_all_currencies_in("res://currency/sentient") + +func get_all_inanimate_currencies() -> Array: + return get_all_currencies_in("res://currency/inanimate") func _ready() -> void: simulate() diff --git a/letter_generation.gd b/letter_generation.gd new file mode 100644 index 0000000..01fe38a --- /dev/null +++ b/letter_generation.gd @@ -0,0 +1,23 @@ +extends Node + + +var OFFERS = [preload("res://letters/ask_solo.tres"), preload("res://letters/counteroffer.tres"), preload("res://letters/life_expense.tres"), preload("res://letters/union_rep_ask.tres")] + +func generate_offer(): + var offer: Counteroffer = OFFERS.pick_random() + var currency: Production = Economy.currencies.pick_random() + var amount = max(randi_range(1, 10), currency.amount) + var request = Production.new() + request.currency = currency.currency + request.amount = amount + offer.request = request + + offer.subject_field = "Need " + currency.currency.name + + var source: Currency = Economy.get_all_sentient_currencies().pick_random() + #if source == null: + + + offer.source = source + + GameState.add_letter.emit(offer) diff --git a/letter_generation.gd.uid b/letter_generation.gd.uid new file mode 100644 index 0000000..437dfd6 --- /dev/null +++ b/letter_generation.gd.uid @@ -0,0 +1 @@ +uid://cwoun1b8wiugd diff --git a/letter_generation.tscn b/letter_generation.tscn new file mode 100644 index 0000000..92ce72f --- /dev/null +++ b/letter_generation.tscn @@ -0,0 +1,6 @@ +[gd_scene format=3 uid="uid://d156m2y8b38qs"] + +[ext_resource type="Script" uid="uid://cwoun1b8wiugd" path="res://letter_generation.gd" id="1_borkp"] + +[node name="LetterGeneration" type="Node" unique_id=1999579291] +script = ExtResource("1_borkp") diff --git a/letters/ask_solo.tres b/letters/ask_solo.tres new file mode 100644 index 0000000..275aaa3 --- /dev/null +++ b/letters/ask_solo.tres @@ -0,0 +1,9 @@ +[gd_resource type="Resource" script_class="Counteroffer" format=3 uid="uid://dgcbmua6pnmaq"] + +[ext_resource type="Script" uid="uid://c47ee6kd2x6oi" path="res://letters/counteroffer.gd" id="1_j2fip"] +[ext_resource type="Resource" uid="uid://bcl8oqdj8etpv" path="res://test/asking for currency solo.dtl" id="2_j2fip"] + +[resource] +script = ExtResource("1_j2fip") +timeline = ExtResource("2_j2fip") +metadata/_custom_type_script = "uid://cadv11m8ohoxe" diff --git a/letters/counteroffer.gd b/letters/counteroffer.gd index 45e9116..f2c2b2b 100644 --- a/letters/counteroffer.gd +++ b/letters/counteroffer.gd @@ -1,4 +1,5 @@ extends Letter +class_name Counteroffer @export var request: Production diff --git a/letters/life_expense.tres b/letters/life_expense.tres new file mode 100644 index 0000000..cc90b17 --- /dev/null +++ b/letters/life_expense.tres @@ -0,0 +1,9 @@ +[gd_resource type="Resource" script_class="Counteroffer" format=3 uid="uid://bmpmg4myddeva"] + +[ext_resource type="Script" uid="uid://c47ee6kd2x6oi" path="res://letters/counteroffer.gd" id="1_ugo5r"] +[ext_resource type="Resource" uid="uid://cle5jk1fytta7" path="res://test/union reps letters.dtl" id="2_mwc65"] + +[resource] +script = ExtResource("1_ugo5r") +timeline = ExtResource("2_mwc65") +metadata/_custom_type_script = "uid://cadv11m8ohoxe" diff --git a/letters/union_rep_ask.tres b/letters/union_rep_ask.tres new file mode 100644 index 0000000..d666092 --- /dev/null +++ b/letters/union_rep_ask.tres @@ -0,0 +1,9 @@ +[gd_resource type="Resource" script_class="Counteroffer" format=3 uid="uid://btosuw7pgeeeu"] + +[ext_resource type="Script" uid="uid://c47ee6kd2x6oi" path="res://letters/counteroffer.gd" id="1_habxl"] +[ext_resource type="Resource" uid="uid://bx6cdpadiu4c" path="res://test/random life expense letter.dtl" id="2_habxl"] + +[resource] +script = ExtResource("1_habxl") +timeline = ExtResource("2_habxl") +metadata/_custom_type_script = "uid://cadv11m8ohoxe" diff --git a/project.godot b/project.godot index b3e26e4..11b524c 100644 --- a/project.godot +++ b/project.godot @@ -20,6 +20,7 @@ Economy="*uid://dnpioqaes87yb" Random="*uid://cu3n7igqstbxi" UserContext="*uid://0a08ucta58lp" GameState="*uid://bohql2ihaumsa" +LetterGeneration="*uid://d156m2y8b38qs" [dialogic] diff --git a/test/asking for currency solo.dtl b/test/asking for currency solo.dtl index ccdcaee..0f77c6c 100644 --- a/test/asking for currency solo.dtl +++ b/test/asking for currency solo.dtl @@ -18,4 +18,4 @@ elif {RNG_1_4} == 3.0: else: "Me. Re quest -- current see\ {for_timeline_calls.requested_amount} this much of {for_timeline_calls.requested_currency}" - "\if not I kill my loyaly to you" \ No newline at end of file + "\if not I kill my loyalty to you" \ No newline at end of file diff --git a/test/test_economy.gd b/test/test_economy.gd index 702a81d..205f0a6 100644 --- a/test/test_economy.gd +++ b/test/test_economy.gd @@ -13,10 +13,4 @@ func _on_run_simulate_pressed() -> void: func _on_open_inbox_pressed() -> void: UserContext.open_inbox.emit() - var letter := preload("res://letters/counteroffer.tres").duplicate() - letter.request = Production.new() - letter.request.currency = preload("res://currency/inanimate/beer.tres") - letter.request.amount = 10 - letter.source = preload("res://currency/sentient/drunk.tres") - - GameState.add_letter.emit(letter) + LetterGeneration.generate_offer()