.
This commit is contained in:
parent
1301335d31
commit
d43494753a
11 changed files with 3487 additions and 137 deletions
|
|
@ -6,6 +6,12 @@ class_name CurrencyMemberSprite
|
||||||
|
|
||||||
func _ready() -> void:
|
func _ready() -> void:
|
||||||
sync()
|
sync()
|
||||||
|
Economy.census.connect(census)
|
||||||
|
|
||||||
|
func census(p: Production, all):
|
||||||
|
if p.currency == currency:
|
||||||
|
p.amount += 1
|
||||||
|
all.append(self)
|
||||||
|
|
||||||
func sync():
|
func sync():
|
||||||
if allegiance != null:
|
if allegiance != null:
|
||||||
|
|
|
||||||
37
economy.gd
37
economy.gd
|
|
@ -8,7 +8,8 @@ signal log(s: String)
|
||||||
@export var currencies: Array[Production]
|
@export var currencies: Array[Production]
|
||||||
@export var members: Array
|
@export var members: Array
|
||||||
|
|
||||||
signal census(p: Production)
|
|
||||||
|
signal census(p: Production, all)
|
||||||
|
|
||||||
@onready var events: Array[Event] = load_events()
|
@onready var events: Array[Event] = load_events()
|
||||||
|
|
||||||
|
|
@ -20,20 +21,43 @@ func spawn_friendlies():
|
||||||
var p := Production.new()
|
var p := Production.new()
|
||||||
p.currency = currency
|
p.currency = currency
|
||||||
p.amount = 0
|
p.amount = 0
|
||||||
census.emit(p)
|
var all: Array[Node2D] = []
|
||||||
var delta := p.amount - get_currency_amount(currency)
|
census.emit(p, [])
|
||||||
|
var delta := get_currency_amount(currency) - p.amount
|
||||||
if delta > 0:
|
if delta > 0:
|
||||||
for i in range(delta):
|
for i in range(delta):
|
||||||
spawn_currency_avatar(currency)
|
spawn_currency_avatar(currency, true)
|
||||||
|
elif delta < 0:
|
||||||
|
all.shuffle()
|
||||||
|
for i in range(min(delta, all.size()-1)):
|
||||||
|
all[i].queue_free()
|
||||||
|
|
||||||
func spawn_currency_avatar(currency):
|
func spawn_baddies():
|
||||||
|
if GameState.spawns_good == null:
|
||||||
|
spawn_friendlies.call_deferred()
|
||||||
|
return
|
||||||
|
for currency in get_all_sentient_currencies():
|
||||||
|
var delta := get_currency_amount(currency)
|
||||||
|
for i in range(delta):
|
||||||
|
spawn_currency_avatar(currency, false)
|
||||||
|
|
||||||
|
func spawn_currency_avatar(currency, good: bool):
|
||||||
var troup := preload("res://Troup.tscn").instantiate()
|
var troup := preload("res://Troup.tscn").instantiate()
|
||||||
var spawn: Node2D = GameState.spawns_good.get_children().pick_random()
|
var spawns
|
||||||
|
if good:
|
||||||
|
spawns = GameState.spawns_good
|
||||||
|
else:
|
||||||
|
spawns = GameState.spawns_bad
|
||||||
|
var spawn: Node2D = spawns.get_children().pick_random()
|
||||||
troup.top_level = true
|
troup.top_level = true
|
||||||
troup.position = spawn.global_position
|
troup.position = spawn.global_position
|
||||||
var sprite: CurrencyMemberSprite = troup.sprite()
|
var sprite: CurrencyMemberSprite = troup.sprite()
|
||||||
sprite.currency = currency
|
sprite.currency = currency
|
||||||
|
if good:
|
||||||
sprite.allegiance = preload("res://allegiance/good.tres")
|
sprite.allegiance = preload("res://allegiance/good.tres")
|
||||||
|
else:
|
||||||
|
sprite.allegiance = preload("res://allegiance/bad.tres")
|
||||||
|
|
||||||
get_tree().root.add_child(troup)
|
get_tree().root.add_child(troup)
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -123,6 +147,7 @@ func simulate():
|
||||||
GameState.add_letter.emit(e.into_letter())
|
GameState.add_letter.emit(e.into_letter())
|
||||||
if randf() < 0.01:
|
if randf() < 0.01:
|
||||||
LetterGeneration.try_generate_offer()
|
LetterGeneration.try_generate_offer()
|
||||||
|
spawn_friendlies()
|
||||||
|
|
||||||
|
|
||||||
func get_all_currencies_in(dir: StringName):
|
func get_all_currencies_in(dir: StringName):
|
||||||
|
|
|
||||||
7
game.gd
Normal file
7
game.gd
Normal file
|
|
@ -0,0 +1,7 @@
|
||||||
|
extends Node2D
|
||||||
|
|
||||||
|
|
||||||
|
# Called when the node enters the scene tree for the first time.
|
||||||
|
func _ready() -> void:
|
||||||
|
Economy.spawn_baddies.call_deferred()
|
||||||
|
Economy.simulate.call_deferred()
|
||||||
1
game.gd.uid
Normal file
1
game.gd.uid
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
uid://cr1yh02xdul33
|
||||||
13
game.tscn
13
game.tscn
|
|
@ -1,23 +1,14 @@
|
||||||
[gd_scene format=3 uid="uid://dkui3dlb4vu1c"]
|
[gd_scene format=3 uid="uid://dkui3dlb4vu1c"]
|
||||||
|
|
||||||
[ext_resource type="PackedScene" uid="uid://bdk1r2u8clllr" path="res://map.tscn" id="1_e2o6t"]
|
[ext_resource type="PackedScene" uid="uid://bdk1r2u8clllr" path="res://map.tscn" id="1_e2o6t"]
|
||||||
|
[ext_resource type="Script" uid="uid://cr1yh02xdul33" path="res://game.gd" id="1_feb5d"]
|
||||||
[ext_resource type="PackedScene" uid="uid://d06w1wtct0mfs" path="res://test/test_economy.tscn" id="2_feb5d"]
|
[ext_resource type="PackedScene" uid="uid://d06w1wtct0mfs" path="res://test/test_economy.tscn" id="2_feb5d"]
|
||||||
[ext_resource type="PackedScene" uid="uid://coebykrbnhlif" path="res://currency/members/MemberSprite.tscn" id="3_7jktm"]
|
|
||||||
[ext_resource type="Resource" uid="uid://dn0c1pfq04obw" path="res://currency/sentient/farmer.tres" id="4_ryrav"]
|
|
||||||
[ext_resource type="Resource" uid="uid://b7lxfjhx4qhts" path="res://allegiance/good.tres" id="5_eow3j"]
|
|
||||||
|
|
||||||
[node name="Game" type="Node2D" unique_id=1791439508]
|
[node name="Game" type="Node2D" unique_id=1791439508]
|
||||||
|
script = ExtResource("1_feb5d")
|
||||||
|
|
||||||
[node name="map" parent="." unique_id=575553336 instance=ExtResource("1_e2o6t")]
|
[node name="map" parent="." unique_id=575553336 instance=ExtResource("1_e2o6t")]
|
||||||
|
|
||||||
[node name="CanvasLayer" type="CanvasLayer" parent="." unique_id=1213874033]
|
[node name="CanvasLayer" type="CanvasLayer" parent="." unique_id=1213874033]
|
||||||
|
|
||||||
[node name="TestEconomy" parent="CanvasLayer" unique_id=629898212 instance=ExtResource("2_feb5d")]
|
[node name="TestEconomy" parent="CanvasLayer" unique_id=629898212 instance=ExtResource("2_feb5d")]
|
||||||
|
|
||||||
[node name="MemberSprite" parent="." unique_id=283117283 instance=ExtResource("3_7jktm")]
|
|
||||||
offset_left = 294.0
|
|
||||||
offset_top = 1177.0
|
|
||||||
offset_right = 345.0
|
|
||||||
offset_bottom = 1219.0
|
|
||||||
currency = ExtResource("4_ryrav")
|
|
||||||
allegiance = ExtResource("5_eow3j")
|
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,7 @@ config_version=5
|
||||||
|
|
||||||
[application]
|
[application]
|
||||||
|
|
||||||
run/main_scene="uid://dkui3dlb4vu1c"
|
run/main_scene="uid://d1hx10534r452"
|
||||||
config/features=PackedStringArray("4.7")
|
config/features=PackedStringArray("4.7")
|
||||||
|
|
||||||
[autoload]
|
[autoload]
|
||||||
|
|
|
||||||
|
|
@ -4,8 +4,3 @@ extends Node2D
|
||||||
# Called when the node enters the scene tree for the first time.
|
# Called when the node enters the scene tree for the first time.
|
||||||
func _ready() -> void:
|
func _ready() -> void:
|
||||||
GameState.spawns_bad = self
|
GameState.spawns_bad = self
|
||||||
|
|
||||||
|
|
||||||
# Called every frame. 'delta' is the elapsed time since the previous frame.
|
|
||||||
func _process(delta: float) -> void:
|
|
||||||
pass
|
|
||||||
|
|
|
||||||
|
|
@ -4,8 +4,3 @@ extends Node2D
|
||||||
# Called when the node enters the scene tree for the first time.
|
# Called when the node enters the scene tree for the first time.
|
||||||
func _ready() -> void:
|
func _ready() -> void:
|
||||||
GameState.spawns_good = self
|
GameState.spawns_good = self
|
||||||
|
|
||||||
|
|
||||||
# Called every frame. 'delta' is the elapsed time since the previous frame.
|
|
||||||
func _process(delta: float) -> void:
|
|
||||||
pass
|
|
||||||
|
|
|
||||||
|
|
@ -3,8 +3,8 @@ extends Control
|
||||||
func _on_button_pressed() -> void:
|
func _on_button_pressed() -> void:
|
||||||
Dialogic.start(preload("res://test/timeline.dtl"))
|
Dialogic.start(preload("res://test/timeline.dtl"))
|
||||||
await Dialogic.timeline_ended
|
await Dialogic.timeline_ended
|
||||||
get_tree().change_scene_to_file("res://game.tscn")
|
get_tree().change_scene_to_file.call_deferred("res://game.tscn")
|
||||||
|
|
||||||
|
|
||||||
func _on_button_2_pressed() -> void:
|
func _on_button_2_pressed() -> void:
|
||||||
get_tree().change_scene_to_file("res://game.tscn")
|
get_tree().change_scene_to_file.call_deferred("res://game.tscn")
|
||||||
|
|
|
||||||
2
troup.gd
2
troup.gd
|
|
@ -9,7 +9,7 @@ const JUMP_VELOCITY = -400.0
|
||||||
func _ready() -> void:
|
func _ready() -> void:
|
||||||
|
|
||||||
UserContext. set_target_for . connect(set_target_for)
|
UserContext. set_target_for . connect(set_target_for)
|
||||||
enemTarget = %PlayerGates
|
#enemTarget = %PlayerGates
|
||||||
|
|
||||||
func set_target_for(who: CurrencyMemberSprite, t: Node2D):
|
func set_target_for(who: CurrencyMemberSprite, t: Node2D):
|
||||||
if %MemberSprite == who:
|
if %MemberSprite == who:
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue