This commit is contained in:
Tandy 2026-09-26 20:11:24 -06:00
commit 9cedfa01a8
16 changed files with 295 additions and 56 deletions

11
Behaviour/Charge!.gd Normal file
View file

@ -0,0 +1,11 @@
extends Node
# 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:
pass

1
Behaviour/Charge!.gd.uid Normal file
View file

@ -0,0 +1 @@
uid://wfmx6v6funrk

15
bribe_button.gd Normal file
View file

@ -0,0 +1,15 @@
extends Button
@export var bribe: Production
signal bribe_succees
func _ready() -> void:
sync()
func sync():
text = str(bribe.amount) + " of " + bribe.currency.name
func _on_pressed() -> void:
if Economy.do_bribing(bribe):
bribe_succees.emit()

1
bribe_button.gd.uid Normal file
View file

@ -0,0 +1 @@
uid://olr6663hny8n

BIN
currency/EHAP_map.png (Stored with Git LFS)

Binary file not shown.

View file

@ -1,40 +0,0 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://8lqq14trnf5u"
path="res://.godot/imported/EHAP_map.png-b1025cc065bdc97d744b65efd6468a03.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://currency/EHAP_map.png"
dest_files=["res://.godot/imported/EHAP_map.png-b1025cc065bdc97d744b65efd6468a03.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

View file

@ -17,6 +17,15 @@ func get_currency(c: Currency) -> Production:
currencies.append(p) currencies.append(p)
return p return p
func do_bribing(p: Production) -> bool:
produce(negate_production(p))
return true
func negate_production(p: Production) -> Production:
var pp := p.duplicate()
pp.amount = -pp.amount
return pp
func sync_currency(): func sync_currency():
var did_remove := true var did_remove := true
while did_remove: while did_remove:

9
gui/bribe_button.tscn Normal file
View file

@ -0,0 +1,9 @@
[gd_scene format=3 uid="uid://dqb4a1igddv71"]
[ext_resource type="Script" uid="uid://olr6663hny8n" path="res://bribe_button.gd" id="1_2abdb"]
[node name="BribeButton" type="Button" unique_id=1084248382]
text = "< num > of < currency >"
script = ExtResource("1_2abdb")
[connection signal="pressed" from="." to="." method="_on_pressed"]

View file

@ -4,8 +4,12 @@ var currency: Currency = null
func _ready() -> void: func _ready() -> void:
UserContext.currency_inspect.connect(currency_inspect) UserContext.currency_inspect.connect(currency_inspect)
UserContext.member_inspect.connect(member_inspect)
update() update()
func member_inspect(_m: CurrencyMemberSprite):
visible = false
func currency_inspect(c: Currency): func currency_inspect(c: Currency):
currency = c currency = c
update() update()
@ -19,10 +23,16 @@ func update():
%CurrencyDescription.text = currency.description %CurrencyDescription.text = currency.description
for child in %ProductionsList.get_children(): for child in %ProductionsList.get_children():
child.queue_free() child.queue_free()
%word.visible = currency.production.size() > 0
for production in currency.production: for production in currency.production:
var display := preload("res://gui/production_display.tscn").instantiate() var display := preload("res://gui/production_display.tscn").instantiate()
display.production = production display.production = production
%ProductionsList.add_child(display) %ProductionsList.add_child(display)
if currency.thumbnail != null:
%CurrrencyImage.visible = true
%CurrrencyImage.texture = currency.thumbnail
else:
%CurrrencyImage.visible = false
func _on_close_button_pressed() -> void: func _on_close_button_pressed() -> void:
visible = false visible = false

View file

@ -1,14 +1,7 @@
[gd_scene format=3 uid="uid://75htlmk51oo"] [gd_scene format=3 uid="uid://75htlmk51oo"]
[ext_resource type="Script" uid="uid://bkptc7j6c1r7p" path="res://gui/currency_inspector_panel.gd" id="1_tj5vo"] [ext_resource type="Script" uid="uid://bkptc7j6c1r7p" path="res://gui/currency_inspector_panel.gd" id="1_tj5vo"]
[ext_resource type="Texture2D" uid="uid://bplvus0ytk2f8" path="res://thumbnails/beer.png" id="2_p4bd1"]
[sub_resource type="Gradient" id="Gradient_jd7cj"]
[sub_resource type="GradientTexture2D" id="GradientTexture2D_y6nab"]
gradient = SubResource("Gradient_jd7cj")
[sub_resource type="CanvasTexture" id="CanvasTexture_4sc8i"]
diffuse_texture = SubResource("GradientTexture2D_y6nab")
[node name="CurrencyInspectorPanel" type="Control" unique_id=169191981] [node name="CurrencyInspectorPanel" type="Control" unique_id=169191981]
custom_minimum_size = Vector2(0, 100) custom_minimum_size = Vector2(0, 100)
@ -39,19 +32,27 @@ grow_horizontal = 2
unique_name_in_owner = true unique_name_in_owner = true
layout_mode = 2 layout_mode = 2
size_flags_horizontal = 0 size_flags_horizontal = 0
theme_override_font_sizes/font_size = 25
text = "< Selected Currency >" text = "< Selected Currency >"
[node name="CurrrencyImage" type="TextureRect" parent="VBoxContainer" unique_id=1066520786] [node name="CenterContainer" type="CenterContainer" parent="VBoxContainer" unique_id=1252469629]
unique_name_in_owner = true
layout_mode = 2 layout_mode = 2
texture = SubResource("CanvasTexture_4sc8i")
[node name="CurrrencyImage" type="TextureRect" parent="VBoxContainer/CenterContainer" unique_id=1066520786]
unique_name_in_owner = true
custom_minimum_size = Vector2(250, 250)
custom_maximum_size = Vector2(250, 250)
layout_mode = 2
texture = ExtResource("2_p4bd1")
[node name="CurrencyDescription" type="Label" parent="VBoxContainer" unique_id=543173020] [node name="CurrencyDescription" type="Label" parent="VBoxContainer" unique_id=543173020]
unique_name_in_owner = true unique_name_in_owner = true
layout_mode = 2 layout_mode = 2
text = "< Description of currency >" text = "< Description of currency >< Description of currency >< Description of currency >< Description of currency >< Description of currency >< Description of currency >< Description of currency >< Description of currency >< Description of currency >< Description of currency >< Description of currency >"
autowrap_mode = 3
[node name="word" type="Label" parent="VBoxContainer" unique_id=835011658] [node name="word" type="Label" parent="VBoxContainer" unique_id=835011658]
unique_name_in_owner = true
layout_mode = 2 layout_mode = 2
text = "Production:" text = "Production:"

138
map.tscn
View file

@ -3,6 +3,48 @@
[ext_resource type="Texture2D" uid="uid://bntb4uxiugjq3" path="res://Map/EHAP_map.png" id="1_c7s6e"] [ext_resource type="Texture2D" uid="uid://bntb4uxiugjq3" path="res://Map/EHAP_map.png" id="1_c7s6e"]
[ext_resource type="Script" uid="uid://ws5ruc64db3v" path="res://CameraMove.gd" id="2_wijl4"] [ext_resource type="Script" uid="uid://ws5ruc64db3v" path="res://CameraMove.gd" id="2_wijl4"]
[sub_resource type="RectangleShape2D" id="RectangleShape2D_bhunq"]
size = Vector2(184, 20)
[sub_resource type="RectangleShape2D" id="RectangleShape2D_wijl4"]
size = Vector2(184, 20)
[sub_resource type="RectangleShape2D" id="RectangleShape2D_e0an3"]
size = Vector2(397.13715, 20)
[sub_resource type="RectangleShape2D" id="RectangleShape2D_p5pve"]
size = Vector2(397.13715, 20)
[sub_resource type="RectangleShape2D" id="RectangleShape2D_urblq"]
size = Vector2(397.13715, 20)
[sub_resource type="RectangleShape2D" id="RectangleShape2D_iw27f"]
size = Vector2(397.13715, 20)
[sub_resource type="RectangleShape2D" id="RectangleShape2D_71pa8"]
size = Vector2(167.75, 20)
[sub_resource type="RectangleShape2D" id="RectangleShape2D_05x41"]
size = Vector2(167.75, 20)
[sub_resource type="RectangleShape2D" id="RectangleShape2D_gqbix"]
size = Vector2(171.75, 20)
[sub_resource type="RectangleShape2D" id="RectangleShape2D_oysan"]
size = Vector2(171.75, 20)
[sub_resource type="RectangleShape2D" id="RectangleShape2D_sb2pt"]
size = Vector2(397.79724, 20)
[sub_resource type="RectangleShape2D" id="RectangleShape2D_0t07s"]
size = Vector2(397.79724, 20)
[sub_resource type="RectangleShape2D" id="RectangleShape2D_6qsgm"]
size = Vector2(397.79724, 20)
[sub_resource type="RectangleShape2D" id="RectangleShape2D_ooc2g"]
size = Vector2(397.79724, 20)
[node name="Node2D" type="Node2D" unique_id=575553336] [node name="Node2D" type="Node2D" unique_id=575553336]
[node name="EhapMap" type="Sprite2D" parent="." unique_id=26962123] [node name="EhapMap" type="Sprite2D" parent="." unique_id=26962123]
@ -16,3 +58,99 @@ limit_top = -1648
limit_right = 1926 limit_right = 1926
limit_bottom = 1592 limit_bottom = 1592
script = ExtResource("2_wijl4") script = ExtResource("2_wijl4")
[node name="PlayerGates" type="Area2D" parent="." unique_id=1387700911]
[node name="CollisionShape2D" type="CollisionShape2D" parent="PlayerGates" unique_id=880212519]
position = Vector2(967, 1469)
shape = SubResource("RectangleShape2D_bhunq")
[node name="EnemyGates" type="Area2D" parent="." unique_id=92129502]
[node name="CollisionShape2D" type="CollisionShape2D" parent="EnemyGates" unique_id=993616373]
position = Vector2(966, -1524)
shape = SubResource("RectangleShape2D_wijl4")
[node name="Wall" type="StaticBody2D" parent="." unique_id=1533768688]
[node name="CollisionShape2D" type="CollisionShape2D" parent="Wall" unique_id=1071828556]
position = Vector2(674.7099, 1354.1438)
rotation = -0.18325958
shape = SubResource("RectangleShape2D_e0an3")
[node name="Wall7" type="StaticBody2D" parent="." unique_id=883382290]
[node name="CollisionShape2D" type="CollisionShape2D" parent="Wall7" unique_id=1479410070]
position = Vector2(670, -1412)
rotation = 0.18325958
shape = SubResource("RectangleShape2D_p5pve")
[node name="Wall6" type="StaticBody2D" parent="." unique_id=152552060]
[node name="CollisionShape2D" type="CollisionShape2D" parent="Wall6" unique_id=1066643737]
position = Vector2(318.00003, 1497.9999)
rotation = -0.5846853
shape = SubResource("RectangleShape2D_urblq")
[node name="Wall10" type="StaticBody2D" parent="." unique_id=1775364661]
[node name="CollisionShape2D" type="CollisionShape2D" parent="Wall10" unique_id=1168089764]
position = Vector2(317.00003, -1548.0001)
rotation = 0.5846853
shape = SubResource("RectangleShape2D_iw27f")
[node name="Wall2" type="StaticBody2D" parent="." unique_id=1892667741]
[node name="CollisionShape2D" type="CollisionShape2D" parent="Wall2" unique_id=843883753]
position = Vector2(1070, 1398.125)
rotation = -1.5707964
shape = SubResource("RectangleShape2D_71pa8")
[node name="Wall11" type="StaticBody2D" parent="." unique_id=546311748]
[node name="CollisionShape2D" type="CollisionShape2D" parent="Wall11" unique_id=1149475211]
position = Vector2(1070, -1447)
rotation = -1.5707964
shape = SubResource("RectangleShape2D_05x41")
[node name="Wall3" type="StaticBody2D" parent="." unique_id=341274285]
[node name="CollisionShape2D" type="CollisionShape2D" parent="Wall3" unique_id=2115335844]
position = Vector2(861, 1398)
rotation = -1.5707964
shape = SubResource("RectangleShape2D_gqbix")
[node name="Wall12" type="StaticBody2D" parent="." unique_id=1358255107]
[node name="CollisionShape2D" type="CollisionShape2D" parent="Wall12" unique_id=941209779]
position = Vector2(862, -1446)
rotation = -1.5707964
shape = SubResource("RectangleShape2D_oysan")
[node name="Wall4" type="StaticBody2D" parent="." unique_id=1945357597]
[node name="CollisionShape2D" type="CollisionShape2D" parent="Wall4" unique_id=435425623]
position = Vector2(1257.664, 1354.5021)
rotation = 0.18325958
shape = SubResource("RectangleShape2D_sb2pt")
[node name="Wall8" type="StaticBody2D" parent="." unique_id=814199825]
[node name="CollisionShape2D" type="CollisionShape2D" parent="Wall8" unique_id=1753491154]
position = Vector2(1257, -1412)
rotation = -0.18325958
shape = SubResource("RectangleShape2D_0t07s")
[node name="Wall5" type="StaticBody2D" parent="." unique_id=378750450]
[node name="CollisionShape2D" type="CollisionShape2D" parent="Wall5" unique_id=279094555]
position = Vector2(1611.9999, 1499)
rotation = 0.5846853
shape = SubResource("RectangleShape2D_6qsgm")
[node name="Wall9" type="StaticBody2D" parent="." unique_id=120309270]
[node name="CollisionShape2D" type="CollisionShape2D" parent="Wall9" unique_id=1840760444]
position = Vector2(1612.9999, -1555.9999)
rotation = -0.5846853
shape = SubResource("RectangleShape2D_ooc2g")

View file

@ -3,8 +3,52 @@ extends "res://gui/currency_inspector_panel.gd"
@export var member: CurrencyMemberSprite @export var member: CurrencyMemberSprite
func _ready() -> void: func _ready() -> void:
UserContext.currency_inspect.connect(currency_inspect)
UserContext.member_inspect.connect(member_inspect) UserContext.member_inspect.connect(member_inspect)
update()
func member_inspect(m: CurrencyMemberSprite): func member_inspect(m: CurrencyMemberSprite):
if member != null:
member.tree_exiting.disconnect(member_left)
member = m member = m
currency = m.currency currency = m.currency
m.tree_exiting.connect(member_left)
update()
func member_left():
member = null
visible = false
func clear_bribes():
for child in %BribesList.get_children():
child.queue_free()
func bribe_success():
member.allegiance = preload("res://allegiance/good.tres")
member.sync()
update()
func load_bribes():
for p in member.currency.wants:
var btn := preload("res://gui/bribe_button.tscn").instantiate()
btn.bribe = p
btn.bribe_succees.connect(bribe_success)
%BribesList.add_child(btn)
func currency_inspect(_c: Currency):
visible = false
func update():
super()
if member != null:
%Allegiance.text = member.allegiance.kingdom_name
%CurrencyMemberSprite.currency = member.currency
%CurrencyMemberSprite.allegiance = member.allegiance
%CurrencyMemberSprite.sync()
clear_bribes()
%Bribes.visible = false
if member.allegiance != preload("res://allegiance/good.tres"):
load_bribes()
%Bribes.visible = true

View file

@ -2,6 +2,40 @@
[ext_resource type="PackedScene" uid="uid://75htlmk51oo" path="res://gui/currency_inspector_panel.tscn" id="1_x0sea"] [ext_resource type="PackedScene" uid="uid://75htlmk51oo" path="res://gui/currency_inspector_panel.tscn" id="1_x0sea"]
[ext_resource type="Script" uid="uid://cjhnvflx56hjj" path="res://member_inspector_panel.gd" id="2_yfo1o"] [ext_resource type="Script" uid="uid://cjhnvflx56hjj" path="res://member_inspector_panel.gd" id="2_yfo1o"]
[ext_resource type="PackedScene" uid="uid://coebykrbnhlif" path="res://currency/members/MemberSprite.tscn" id="3_2bpjt"]
[node name="MemberInspectorPanel" unique_id=169191981 instance=ExtResource("1_x0sea")] [node name="MemberInspectorPanel" unique_id=169191981 instance=ExtResource("1_x0sea")]
script = ExtResource("2_yfo1o") script = ExtResource("2_yfo1o")
[node name="Label" type="Label" parent="VBoxContainer" parent_id_path=PackedInt32Array(362599487) index="5" unique_id=310762327]
layout_mode = 2
[node name="Label2" type="Label" parent="VBoxContainer" parent_id_path=PackedInt32Array(362599487) index="6" unique_id=1729672621]
layout_mode = 2
text = "Allegiance: "
[node name="Allegiance" type="Label" parent="VBoxContainer" parent_id_path=PackedInt32Array(362599487) index="7" unique_id=601264471]
unique_name_in_owner = true
layout_mode = 2
[node name="MarginContainer" type="MarginContainer" parent="VBoxContainer" parent_id_path=PackedInt32Array(362599487) index="8" unique_id=214625865]
layout_mode = 2
theme_override_constants/margin_left = 50
theme_override_constants/margin_top = 50
theme_override_constants/margin_right = 50
theme_override_constants/margin_bottom = 50
[node name="CurrencyMemberSprite" parent="VBoxContainer/MarginContainer" index="0" unique_id=283117283 instance=ExtResource("3_2bpjt")]
unique_name_in_owner = true
custom_minimum_size = Vector2(75, 75)
custom_maximum_size = Vector2(75, 75)
layout_mode = 2
[node name="Bribes" type="Label" parent="VBoxContainer" parent_id_path=PackedInt32Array(362599487) index="9" unique_id=807570934]
unique_name_in_owner = true
layout_mode = 2
text = "Bribe with"
[node name="BribesList" type="VBoxContainer" parent="VBoxContainer" parent_id_path=PackedInt32Array(362599487) index="10" unique_id=476203914]
unique_name_in_owner = true
layout_mode = 2

View file

@ -20,6 +20,7 @@ Economy="*uid://dnpioqaes87yb"
Random="*uid://cu3n7igqstbxi" Random="*uid://cu3n7igqstbxi"
UserContext="*uid://0a08ucta58lp" UserContext="*uid://0a08ucta58lp"
GameState="*uid://bohql2ihaumsa" GameState="*uid://bohql2ihaumsa"
LetterGeneration="*uid://d156m2y8b38qs"
[dialogic] [dialogic]
@ -133,3 +134,4 @@ dialogic_default_action={
[rendering] [rendering]
rendering_device/driver.windows="d3d12" rendering_device/driver.windows="d3d12"
renderer/rendering_method="gl_compatibility"

View file

@ -4,6 +4,7 @@
[ext_resource type="PackedScene" uid="uid://desvyn6e28oar" path="res://gui/production_chart.tscn" id="2_jd86c"] [ext_resource type="PackedScene" uid="uid://desvyn6e28oar" path="res://gui/production_chart.tscn" id="2_jd86c"]
[ext_resource type="PackedScene" uid="uid://dx3y20p75chkj" path="res://gui/production_ledger_scroll.tscn" id="3_n4oyp"] [ext_resource type="PackedScene" uid="uid://dx3y20p75chkj" path="res://gui/production_ledger_scroll.tscn" id="3_n4oyp"]
[ext_resource type="PackedScene" uid="uid://75htlmk51oo" path="res://gui/currency_inspector_panel.tscn" id="4_7ya5o"] [ext_resource type="PackedScene" uid="uid://75htlmk51oo" path="res://gui/currency_inspector_panel.tscn" id="4_7ya5o"]
[ext_resource type="PackedScene" uid="uid://dsmh4uua1avgp" path="res://member_inspector_panel.tscn" id="5_i7808"]
[ext_resource type="PackedScene" uid="uid://vanflt5jr7tx" path="res://gui/inbox_panel.tscn" id="5_n4oyp"] [ext_resource type="PackedScene" uid="uid://vanflt5jr7tx" path="res://gui/inbox_panel.tscn" id="5_n4oyp"]
[ext_resource type="PackedScene" uid="uid://coebykrbnhlif" path="res://currency/members/MemberSprite.tscn" id="6_vua3v"] [ext_resource type="PackedScene" uid="uid://coebykrbnhlif" path="res://currency/members/MemberSprite.tscn" id="6_vua3v"]
[ext_resource type="Resource" uid="uid://ihsvxienxbeu" path="res://currency/sentient/knight.tres" id="7_s0mui"] [ext_resource type="Resource" uid="uid://ihsvxienxbeu" path="res://currency/sentient/knight.tres" id="7_s0mui"]
@ -69,6 +70,11 @@ text = "OpenInbox"
[node name="CurrencyInspectorPanel" parent="." unique_id=169191981 instance=ExtResource("4_7ya5o")] [node name="CurrencyInspectorPanel" parent="." unique_id=169191981 instance=ExtResource("4_7ya5o")]
layout_mode = 1 layout_mode = 1
[node name="MemberInspectorPanel" parent="." unique_id=1641024074 instance=ExtResource("5_i7808")]
layout_mode = 1
offset_left = -189.0
offset_right = -189.0
[node name="InboxPanel" parent="." unique_id=534578339 instance=ExtResource("5_n4oyp")] [node name="InboxPanel" parent="." unique_id=534578339 instance=ExtResource("5_n4oyp")]
layout_mode = 1 layout_mode = 1

View file

@ -19,6 +19,7 @@ func select_focused_member():
return return
selected_member = candidate selected_member = candidate
selected_member_change.emit(selected_member) selected_member_change.emit(selected_member)
UserContext.member_inspect.emit(selected_member)
func focused_member() -> CurrencyMemberSprite: func focused_member() -> CurrencyMemberSprite:
if focused_members.size() == 0: if focused_members.size() == 0: