mirror of
https://github.com/tonytins/citylimits
synced 2025-06-25 09:24:44 -04:00
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:
parent
e5505a3244
commit
d1da70a099
38 changed files with 1738 additions and 413 deletions
|
@ -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")
|
||||
|
|
|
@ -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):
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -1,4 +0,0 @@
|
|||
extends "res://scripts/advisor_window.gd"
|
||||
|
||||
func _ready():
|
||||
SimEvents.connect("city_planner", self, "_start_dialogue")
|
|
@ -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)
|
||||
|
|
|
@ -1,4 +0,0 @@
|
|||
extends "res://scripts/advisor_window.gd"
|
||||
|
||||
func _ready():
|
||||
SimEvents.connect("financial_advisor", self, "_start_dialogue")
|
|
@ -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()
|
||||
|
|
|
@ -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
57
scripts/ticker.gd
Normal 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")
|
|
@ -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()
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue