Streamlined advisor window

- Streamlined advisor window messages through signals.
- Added TODO file
- Ignore /except directory
- News ticker based on the advisor code with text from SC3k with news from the game, with some exceptions.
- New SC3k-like interface.
- Added icons from Font Awesome.
This commit is contained in:
Tony Bark 2021-05-26 03:35:52 -04:00
parent e5505a3244
commit d1da70a099
38 changed files with 1738 additions and 413 deletions

View file

@ -1,10 +1,10 @@
extends AcceptDialog
export(String, FILE, "*.json") var dialogue_file
var dialogue_file
# "character" would be "name" but it's already used by the base class
export var character: String
export var rank: String
export(Texture) var avatar
var character
var rank
var avatar
var dialogue_keys = []
var dialogue_name = ""
@ -15,27 +15,37 @@ onready var rank_label = $Container/Advisor/RankLbl
onready var name_label = $Container/Advisor/NameLbl
onready var description_label = $Container/DescriptionLbl
func _start_dialogue(message):
_load_dialogue(dialogue_file)
func _start_dialogue(advisor, message):
if advisor == SimData.Advisors.CITY_PLANNER:
dialogue_file = "res://dialog/cityplanner.json"
_load_dialogue()
avatar_texture.texture = preload("res://sprites/avatars/zc.png")
name_label.text = "Zack Casey"
rank_label.text = "City Planner"
elif advisor == SimData.Advisors.FINANCIAL:
dialogue_file = "res://dialog/finacial.json"
_load_dialogue()
avatar_texture.texture = preload("res://sprites/avatars/kit.png")
name_label.text = "Kit Welsh"
rank_label.text = "Financial Advisor"
_index_dialogue()
description_label.text = dialogue_keys[message].text
window_title = dialogue_keys[message].name
show()
func _index_dialogue():
var dialogue = _load_dialogue(dialogue_file)
var dialogue = _load_dialogue()
dialogue_keys.clear()
for key in dialogue:
dialogue_keys.append(dialogue[key])
func _load_dialogue(file_path):
func _load_dialogue():
var file = File.new()
if file.file_exists(file_path):
file.open(file_path, file.READ)
if file.file_exists(dialogue_file):
file.open(dialogue_file, file.READ)
var dialogue = parse_json(file.get_as_text())
return dialogue
func _ready():
avatar_texture.texture = avatar
name_label.text = character
rank_label.text = rank
SimEvents.connect("advisor_message", self, "_start_dialogue")

View file

@ -1,13 +1,14 @@
extends Node
var city_name: String = "Furtropolis" # Hard-coded, for now
var mayor_name: String = "Defecto"
var year: int = 1980
var prev_quarter: int
var quarter: int = 1
var population: int = 0
var news_ticker: String
var budget: int = 20000
var expenses: int
var is_alert: bool = false
const currency: String = "§"
@ -29,7 +30,16 @@ var fire_tax: int
var police_tax: int
var power_tax: int
enum GameSpeed {SLOW, MEDIUM, FAST}
enum GameSpeed {
SLOW,
MEDIUM,
FAST
}
enum Advisors {
CITY_PLANNER,
FINANCIAL
}
func starting_budget(lev: int):

View file

@ -3,5 +3,8 @@ extends Node
signal has_power
signal budget
signal game_speed
signal city_planner(message)
signal financial_advisor(message)
signal advisor_message(advisor, message)
# News
signal send_alert(message)
signal resume_news

View file

@ -1,4 +0,0 @@
extends "res://scripts/advisor_window.gd"
func _ready():
SimEvents.connect("city_planner", self, "_start_dialogue")

View file

@ -2,9 +2,9 @@ extends HBoxContainer
onready var city_name = $CityNameLbl
onready var budget = $BudgetLbl
onready var year = $YearLbl
onready var year = $YearCtr/YearLbl
func _process(delta):
city_name.text = SimData.city_name
budget.text = SimData.currency + str(SimData.budget)
year.text = "Y" + str(SimData.year)
year.text = str(SimData.year)

View file

@ -1,4 +0,0 @@
extends "res://scripts/advisor_window.gd"
func _ready():
SimEvents.connect("financial_advisor", self, "_start_dialogue")

View file

@ -1,10 +1,20 @@
extends Node2D
onready var rotate_news = $RotateNews
onready var quarters = $Quarters
func _ready():
SimEvents.connect("resume_news", self, "_resume_rotation")
SimEvents.connect("send_alert", self, "_stop_news")
func _on_Quarters_timeout():
SimData.year += 1
SimData.prev_quarter = SimData.quarter
SimEvents.emit_signal("budget")
quarters.start()
SimEvents.emit_signal("budget")
func _stop_news():
rotate_news.stop()
func _resume_rotation():
rotate_news.start()

View file

@ -1,9 +1,15 @@
extends Panel
onready var city_name = $Container/CityNameEdit.text
onready var city_name = $Container/CityNameEdit
onready var mayor_name = $Container/MayorNameEdit
onready var budget = $Container/BudgetMenu
func _ready():
city_name.text = SimData.city_name
mayor_name.text = SimData.mayor_name
func _on_CreateBtn_pressed():
SimData.city_name = city_name
SimData.city_name = city_name.text
SimData.mayor_name = mayor_name.text
get_tree().change_scene("res://scenes/Game.tscn")

57
scripts/ticker.gd Normal file
View file

@ -0,0 +1,57 @@
extends ColorRect
onready var ticker_text = $TickerTxt
var news_file = ""
var rng = RandomNumberGenerator.new()
var news_keys = []
func _index_news():
var news = _load_news()
news_keys.clear()
for key in news:
news_keys.append(news[key])
func _load_news():
var file = File.new()
if file.file_exists(news_file):
file.open(news_file, file.READ)
var dialogue = parse_json(file.get_as_text())
return dialogue
func _ready():
SimEvents.connect("send_alert", self, "_start_alert")
SimEvents.connect("resume_news", self, "_resume_ticker")
_random_news("res://dialog/ticker.json")
func _process(delta):
if get_tree().paused:
ticker_text.text = "Simulation Paused"
func _start_alert(message):
SimData.is_alert = true
news_file = "res://dialog/ticker_alerts.json"
ticker_text.text = news_keys[message].text
func _random_news(file):
news_file = file
_load_news()
_index_news()
rng.randomize()
var max_mange = news_keys.size() - 1
var ticker_range = rng.randi_range(0, max_mange)
var news = news_keys[ticker_range].text
if "[city]" in news:
news = news.replace("[city]", SimData.city_name)
if "[mayor]" in news:
news = news.replace("[mayor]", SimData.mayor_name)
ticker_text.text = news
func _resume_ticker():
_random_news("res://dialog/ticker.json")
func _on_RotateNews_timeout():
_random_news("res://dialog/ticker.json")

View file

@ -3,9 +3,11 @@ extends Control
onready var debug_console = $Console
onready var tax_window = $TaxWindow
onready var advsior_meet_window = $AdvisorMeet
onready var tools_window = $ToolsWindow
# onready var news_ticker = $
func _ready():
SimEvents.emit_signal("city_planner", 0)
SimEvents.emit_signal("advisor_message", SimData.Advisors.CITY_PLANNER, 0)
func _process(delta):
if Input.is_action_pressed("ui_cheats"):
@ -16,3 +18,6 @@ func _on_TaxBtn_pressed():
func _on_AdvsiorBtn_pressed():
advsior_meet_window.show()
func _on_ToolsBtn_pressed():
tools_window.show()