mirror of
https://github.com/tonytins/citylimits
synced 2025-06-25 09:24:44 -04:00
Decoupling more hardcoded data
- Created a json helper to streamline decoupling of hardcoded data - Removed non-existent VR bridge reference - News ticker files are no longer hardcoded to the game. - Removed hardcoded city and mayor names using Json helper
This commit is contained in:
parent
f8a0f97767
commit
65cc08fab6
13 changed files with 309 additions and 417 deletions
|
@ -1,16 +1,10 @@
|
|||
extends Node
|
||||
|
||||
const caseyverse_path = "res://json/ticker/extra_lore.json"
|
||||
const news_outlets = "res://json/ticker/extra_lore.json"
|
||||
const is_caseyverse_path = "res://is_caseyverse.txt"
|
||||
|
||||
func is_caseyverse():
|
||||
var file = File.new()
|
||||
if file.file_exists(is_caseyverse_path):
|
||||
return true
|
||||
|
||||
func competing_outlet():
|
||||
var file = File.new()
|
||||
if is_caseyverse():
|
||||
file.open(caseyverse_path, File.READ)
|
||||
var result = parse_json(file.get_as_text())
|
||||
return result["competing_outlet"]
|
||||
|
|
11
scripts/autoload/jsonhelper.gd
Normal file
11
scripts/autoload/jsonhelper.gd
Normal file
|
@ -0,0 +1,11 @@
|
|||
extends Node
|
||||
|
||||
func key_value(json_path, json_file, key, is_dictionary = false):
|
||||
var file = File.new()
|
||||
var news_outlets_path = str(json_path + json_file);
|
||||
if file.file_exists(news_outlets_path):
|
||||
file.open(news_outlets_path, File.READ)
|
||||
var result = parse_json(file.get_as_text())
|
||||
if is_dictionary == true:
|
||||
result.clear()
|
||||
return result[key]
|
|
@ -1,7 +1,10 @@
|
|||
extends Node
|
||||
|
||||
var city_name: String = "Furtropolis" # Hard-coded, for now
|
||||
var mayor_name: String = "Defecto"
|
||||
const DEFAULT_CITY = "defualt.json"
|
||||
const SAVE_PATH = "res://json/saves/"
|
||||
|
||||
var city_name: String = ""
|
||||
var mayor_name: String = ""
|
||||
var population: int = 0
|
||||
var budget: int = 20000
|
||||
var expenses: int
|
||||
|
@ -65,6 +68,13 @@ enum Ordinances {
|
|||
TIRE_RECYCLE
|
||||
}
|
||||
|
||||
func _ready():
|
||||
if city_name == "":
|
||||
city_name = JsonHelper.key_value(SAVE_PATH, DEFAULT_CITY, "city")
|
||||
|
||||
if mayor_name == "":
|
||||
mayor_name = JsonHelper.key_value(SAVE_PATH, DEFAULT_CITY, "mayor")
|
||||
|
||||
#func starting_budget(lev = Level.EASY):
|
||||
# match lev:
|
||||
# Level.EASY:
|
||||
|
|
|
@ -1,20 +1,13 @@
|
|||
extends Node2D
|
||||
|
||||
onready var rotate_news = $RotateNews
|
||||
onready var day_cycle = $DayCycle
|
||||
onready var turtle_btn = $Controls/Status/StatCtr/ButtonCtr/TurtleBtn
|
||||
onready var cheeta_btn = $Controls/Status/StatCtr/ButtonCtr/CheetaBtn
|
||||
#onready var turtle_btn = $Controls/Status/StatCtr/ButtonCtr/TurtleBtn
|
||||
#onready var cheeta_btn = $Controls/Status/StatCtr/ButtonCtr/CheetaBtn
|
||||
|
||||
func _ready():
|
||||
SimEvents.connect("rotate_news", self, "_rotate_news")
|
||||
SimEvents.connect("send_alert", self, "_stop_news")
|
||||
|
||||
func _stop_news():
|
||||
rotate_news.stop()
|
||||
|
||||
func _resume_rotation():
|
||||
rotate_news.start()
|
||||
|
||||
func _on_DayCycle_timeout():
|
||||
|
||||
# Increment the number days until it reaches 30
|
||||
|
@ -35,16 +28,12 @@ func _on_DayCycle_timeout():
|
|||
if SimTime.prev_month == 12:
|
||||
SimTime.new_year()
|
||||
|
||||
func _on_TurtleBtn_toggled(button_pressed):
|
||||
if button_pressed:
|
||||
day_cycle.wait_time = 12
|
||||
cheeta_btn.pressed = false
|
||||
|
||||
func _on_CheetaBtn_toggled(button_pressed):
|
||||
if button_pressed:
|
||||
day_cycle.wait_time = 2
|
||||
turtle_btn.pressed = false
|
||||
|
||||
func _on_VRMode_pressed():
|
||||
# get_tree().change_scene("res://scenes/VR Game.tscn")
|
||||
pass
|
||||
#func _on_TurtleBtn_toggled(button_pressed):
|
||||
# if button_pressed:
|
||||
# day_cycle.wait_time = 12
|
||||
# cheeta_btn.pressed = false
|
||||
#
|
||||
#func _on_CheetaBtn_toggled(button_pressed):
|
||||
# if button_pressed:
|
||||
# day_cycle.wait_time = 2
|
||||
# turtle_btn.pressed = false
|
||||
|
|
|
@ -1,31 +1,52 @@
|
|||
#extends Panel
|
||||
#
|
||||
#const ticker_path = "res://json/ticker/"
|
||||
#
|
||||
#onready var ticker_text = $Ticker
|
||||
#
|
||||
#var news_file: String = ""
|
||||
#var rng = RandomNumberGenerator.new()
|
||||
#var all_news = []
|
||||
#var speices = [
|
||||
# "Cat",
|
||||
# "Fennec",
|
||||
# "Fox"
|
||||
#]
|
||||
#var json_files = [
|
||||
# "adverts.json",
|
||||
# "sammy.json",
|
||||
# "kittykibble.json"
|
||||
#]
|
||||
#
|
||||
#func _index_news():
|
||||
# var news = _load_json()
|
||||
# all_news.clear()
|
||||
# all_news = news["ticker"]
|
||||
#
|
||||
# randomize()
|
||||
# all_news.shuffle()
|
||||
#
|
||||
extends Control
|
||||
|
||||
const TICKER_PATH = "res://json/ticker/"
|
||||
const FNN_LOGO = "res://assets/ticker/fnn.png"
|
||||
const META_FILE = "meta.json"
|
||||
|
||||
onready var ticker_text = $Status/NewsBtn
|
||||
onready var ticker_box = $Windows/NewsWindow/News
|
||||
onready var ticker_window = $Windows/NewsWindow
|
||||
onready var news_brand = $Windows/NewsWindow/Brand/NewsBrand
|
||||
onready var news_motto = $Windows/NewsWindow/Brand/NewsMotto
|
||||
|
||||
var news_file: String = ""
|
||||
var rng = RandomNumberGenerator.new()
|
||||
var all_news: Array = []
|
||||
var speices: Array = [
|
||||
"Cat",
|
||||
"Fennec",
|
||||
"Fox"
|
||||
]
|
||||
|
||||
var json_files: Array = []
|
||||
|
||||
func _load_json():
|
||||
var file = File.new()
|
||||
if file.file_exists(news_file):
|
||||
file.open(news_file, file.READ)
|
||||
var result = parse_json(file.get_as_text())
|
||||
return result
|
||||
|
||||
func _index_news():
|
||||
var news = _load_json()
|
||||
all_news.clear()
|
||||
all_news = news["ticker"]
|
||||
randomize()
|
||||
all_news.shuffle()
|
||||
|
||||
func _init():
|
||||
json_files = JsonHelper.key_value(TICKER_PATH, META_FILE, "ticker_files")
|
||||
|
||||
func _ready():
|
||||
if SimData.city_name == "Furtropolis" or "Furville":
|
||||
news_brand.texture = load(FNN_LOGO)
|
||||
|
||||
if Caseyverse.is_caseyverse():
|
||||
json_files.append("extra_lore.json")
|
||||
|
||||
_randomize_news(json_files)
|
||||
|
||||
#func _process(delta):
|
||||
# var prev_json_Files = json_files
|
||||
#
|
||||
|
@ -47,71 +68,79 @@
|
|||
# prev_json_Files = json_files
|
||||
# for files in city_life:
|
||||
# json_files.append(files)
|
||||
#
|
||||
#func _array_check(list1, list2):
|
||||
# for item in list1:
|
||||
# if item in list2:
|
||||
# return true
|
||||
#
|
||||
# return false
|
||||
#
|
||||
#func _load_json():
|
||||
# var file = File.new()
|
||||
# if file.file_exists(news_file):
|
||||
# file.open(news_file, file.READ)
|
||||
# var result = parse_json(file.get_as_text())
|
||||
# return result
|
||||
#
|
||||
#func _ready():
|
||||
# SimData.city_name = SimData.city_name.capitalize()
|
||||
# SimData.mayor_name = SimData.mayor_name.capitalize()
|
||||
# SimEvents.connect("send_alert", self, "_start_alert")
|
||||
# SimEvents.connect("rotate_news", self, "_rotate_news")
|
||||
# _random_news(json_files)
|
||||
#
|
||||
#func _start_alert(message):
|
||||
|
||||
func _array_check(list1, list2):
|
||||
for item in list1:
|
||||
if item in list2:
|
||||
return true
|
||||
|
||||
return false
|
||||
|
||||
func _start_alert(message):
|
||||
# if ticker_text.items.size() > 1:
|
||||
# ticker_text.clear()
|
||||
#
|
||||
# SimData.on_alert = true
|
||||
# news_file = str(ticker_path + "ticker_alerts.json")
|
||||
# news_file = str(TICKER_PATH + "ticker_alerts.json")
|
||||
# ticker_text.add_item(all_news)
|
||||
#
|
||||
#func _random_news(files: Array):
|
||||
# for file in files:
|
||||
# news_file = str(ticker_path + file)
|
||||
# _load_json()
|
||||
# _index_news()
|
||||
#
|
||||
# rng.randomize()
|
||||
# randomize()
|
||||
# all_news.shuffle()
|
||||
#
|
||||
# var news_range = rng.randi_range(0, all_news.size() - 1)
|
||||
# var news_text: String = all_news[news_range]
|
||||
#
|
||||
# if SimData.city_name == "Furtropolis" or "Furville" and "[outlet]" in news_text:
|
||||
# # FNN = Furtropolis/Furry News Network
|
||||
# news_text = news_text.replace("[outlet]", "FNN")
|
||||
# else:
|
||||
# news_text = news_text.replace("[outlet]", "Pawprint Press")
|
||||
#
|
||||
# if "[species]" in news_text:
|
||||
# speices.shuffle()
|
||||
# var speices_range = rng.randi_range(speices.size() - 1)
|
||||
# news_text = news_text.replace("[species]", speices[speices_range])
|
||||
#
|
||||
# if "[city]" in news_text:
|
||||
# news_text = news_text.replace("[city]", SimData.city_name)
|
||||
#
|
||||
# if "[mayor]" in news_text:
|
||||
# news_text = news_text.replace("[mayor]", SimData.mayor_name)
|
||||
#
|
||||
# if ticker_text.items.size() > 3:
|
||||
# ticker_text.clear()
|
||||
#
|
||||
# ticker_text.clear()
|
||||
# ticker_text.add_item(news_text)
|
||||
#
|
||||
#func _on_RotateNews_timeout():
|
||||
# _random_news(json_files)
|
||||
|
||||
pass
|
||||
|
||||
func _randomize_news(files: Array):
|
||||
for file in files:
|
||||
news_file = str(TICKER_PATH + file)
|
||||
_load_json()
|
||||
_index_news()
|
||||
|
||||
rng.randomize()
|
||||
randomize()
|
||||
files.shuffle()
|
||||
|
||||
var news_range = rng.randi_range(0, all_news.size() - 1)
|
||||
var news_text: String = all_news[news_range]
|
||||
|
||||
if Caseyverse.is_caseyverse():
|
||||
news_text = news_text.replace("[competing_outlet]", JsonHelper.key_value(TICKER_PATH, META_FILE, "competing_outlet"))
|
||||
|
||||
# If city name Furtropolis or Furville use Pawprint Press
|
||||
if SimData.city_name != "Furtropolis" or "Furville":
|
||||
news_text = news_text.replace("[outlet]", JsonHelper.key_value(TICKER_PATH, META_FILE, "secondary_outlet"))
|
||||
else:
|
||||
# FNN = Furtropolis/Furry News Network
|
||||
news_text = news_text.replace("[outlet]", JsonHelper.key_value(TICKER_PATH, META_FILE, "primary_outlet"))
|
||||
|
||||
if "[species]" in news_text:
|
||||
speices.shuffle()
|
||||
var speices_range = rng.randi_range(speices.size() - 1)
|
||||
news_text = news_text.replace("[species]", speices[speices_range])
|
||||
|
||||
if "[city]" in news_text:
|
||||
news_text = news_text.replace("[city]", SimData.city_name)
|
||||
|
||||
if "[mayor]" in news_text:
|
||||
news_text = news_text.replace("[mayor]", SimData.mayor_name)
|
||||
|
||||
if ticker_box.items.size() > 15:
|
||||
ticker_box.clear()
|
||||
|
||||
# Prevent duplicates
|
||||
var prev_news_text = ticker_text.text
|
||||
if news_text == prev_news_text:
|
||||
_randomize_news(json_files)
|
||||
else:
|
||||
json_files.shuffle()
|
||||
_add_news(news_text)
|
||||
|
||||
func _add_news(news_item):
|
||||
ticker_text.text = news_item
|
||||
ticker_box.add_item(news_item)
|
||||
|
||||
func _on_NewsBtn_pressed():
|
||||
ticker_window.show()
|
||||
|
||||
func _on_RotateNews_timeout():
|
||||
rng.randomize()
|
||||
randomize()
|
||||
all_news.shuffle()
|
||||
json_files.shuffle()
|
||||
_randomize_news(json_files)
|
||||
|
|
|
@ -5,175 +5,16 @@ onready var tax_window = $TaxWindow
|
|||
onready var advsior_meet_window = $AdvisorMeet
|
||||
onready var tools_window = $ToolsWindow
|
||||
|
||||
const ticker_path = "res://json/ticker/"
|
||||
const fnn_logo = "res://assets/ticker/fnn.png"
|
||||
|
||||
onready var ticker_text = $Status/NewsBtn
|
||||
onready var ticker_box = $NewsWindow/News
|
||||
onready var ticker_window = $NewsWindow
|
||||
onready var news_brand = $NewsWindow/Brand/NewsBrand
|
||||
onready var news_motto = $NewsWindow/Brand/NewsMotto
|
||||
|
||||
var other_outlet: String = ""
|
||||
var news_file: String = ""
|
||||
var rng = RandomNumberGenerator.new()
|
||||
var all_news = []
|
||||
var speices = [
|
||||
"Cat",
|
||||
"Fennec",
|
||||
"Fox"
|
||||
]
|
||||
|
||||
var json_files = [
|
||||
"adverts.json",
|
||||
"sammy.json",
|
||||
"kittykibble.json",
|
||||
"citylife.json"
|
||||
]
|
||||
|
||||
func _competing_outlet():
|
||||
var file = File.new()
|
||||
var caseyverse_path = str(ticker_path + "caseyverse.json");
|
||||
if file.file_exists(caseyverse_path):
|
||||
file.open(caseyverse_path)
|
||||
var result = parse_json(file.get_as_text())
|
||||
result.clear()
|
||||
return result["competing_outlet"]
|
||||
|
||||
func _load_json():
|
||||
var file = File.new()
|
||||
if file.file_exists(news_file):
|
||||
file.open(news_file, file.READ)
|
||||
var result = parse_json(file.get_as_text())
|
||||
return result
|
||||
|
||||
func _index_news():
|
||||
var news = _load_json()
|
||||
all_news.clear()
|
||||
all_news = news["ticker"]
|
||||
randomize()
|
||||
all_news.shuffle()
|
||||
|
||||
func _ready():
|
||||
SimData.city_name = SimData.city_name.capitalize()
|
||||
SimData.mayor_name = SimData.mayor_name.capitalize()
|
||||
|
||||
if SimData.city_name == "Furtropolis" and Caseyverse.is_caseyverse():
|
||||
news_brand.texture = load(fnn_logo)
|
||||
|
||||
SimEvents.emit_signal("advisor_message", SimData.Advisors.CITY_PLANNER, 0)
|
||||
|
||||
SimEvents.connect("send_alert", self, "_start_alert")
|
||||
SimEvents.connect("rotate_news", self, "_rotate_news")
|
||||
|
||||
if Caseyverse.is_caseyverse():
|
||||
json_files.append("extra_lore.json")
|
||||
|
||||
_randomize_news(json_files)
|
||||
|
||||
func _process(delta):
|
||||
if Input.is_action_pressed("ui_cheats"):
|
||||
debug_console.show()
|
||||
|
||||
var prev_json_Files = json_files
|
||||
|
||||
# var city_life = [
|
||||
# "citylife.json"
|
||||
# ]
|
||||
#
|
||||
# if _array_check(city_life, json_files):
|
||||
# match SimData.has_power:
|
||||
# true:
|
||||
# prev_json_Files = json_files
|
||||
# for files in city_life:
|
||||
# json_files.append(files)
|
||||
#
|
||||
# false:
|
||||
# prev_json_Files = json_files
|
||||
# for files in city_life:
|
||||
# json_files.remove(files)
|
||||
|
||||
|
||||
func _array_check(list1, list2):
|
||||
for item in list1:
|
||||
if item in list2:
|
||||
return true
|
||||
|
||||
return false
|
||||
|
||||
func _start_alert(message):
|
||||
# if ticker_text.items.size() > 1:
|
||||
# ticker_text.clear()
|
||||
#
|
||||
# SimData.on_alert = true
|
||||
# news_file = str(ticker_path + "ticker_alerts.json")
|
||||
# ticker_text.add_item(all_news)
|
||||
|
||||
pass
|
||||
|
||||
func _randomize_news(files: Array):
|
||||
for file in files:
|
||||
news_file = str(ticker_path + file)
|
||||
_load_json()
|
||||
_index_news()
|
||||
|
||||
rng.randomize()
|
||||
randomize()
|
||||
files.shuffle()
|
||||
|
||||
var news_range = rng.randi_range(0, all_news.size() - 1)
|
||||
var news_text: String = all_news[news_range]
|
||||
|
||||
if Caseyverse.is_caseyverse():
|
||||
news_text = news_text.replace("[other_outlet]", Caseyverse.competing_outlet())
|
||||
|
||||
if SimData.city_name == "Furtropolis" or "Furville" and Caseyverse.is_caseyverse():
|
||||
# FNN = Furtropolis/Furry News Network
|
||||
news_text = news_text.replace("[outlet]", "FNN")
|
||||
else:
|
||||
news_text = news_text.replace("[outlet]", "Pawprint Press")
|
||||
|
||||
if "[species]" in news_text:
|
||||
speices.shuffle()
|
||||
var speices_range = rng.randi_range(speices.size() - 1)
|
||||
news_text = news_text.replace("[species]", speices[speices_range])
|
||||
|
||||
if "[city]" in news_text:
|
||||
news_text = news_text.replace("[city]", SimData.city_name)
|
||||
|
||||
if "[mayor]" in news_text:
|
||||
news_text = news_text.replace("[mayor]", SimData.mayor_name)
|
||||
|
||||
if ticker_box.items.size() > 15:
|
||||
ticker_box.clear()
|
||||
|
||||
# Prevent duplicates
|
||||
var prev_news_text = ticker_text.text
|
||||
if news_text == prev_news_text:
|
||||
_randomize_news(json_files)
|
||||
else:
|
||||
json_files.shuffle()
|
||||
_add_news(news_text)
|
||||
|
||||
func _add_news(news_item):
|
||||
ticker_text.text = news_item
|
||||
ticker_box.add_item(news_item)
|
||||
|
||||
func _on_RotateNews_timeout():
|
||||
rng.randomize()
|
||||
randomize()
|
||||
all_news.shuffle()
|
||||
json_files.shuffle()
|
||||
_randomize_news(json_files)
|
||||
|
||||
func _on_TaxBtn_pressed():
|
||||
tax_window.show()
|
||||
|
||||
func _on_AdvsiorBtn_pressed():
|
||||
advsior_meet_window.show()
|
||||
|
||||
func _on_ToolsBtn_pressed():
|
||||
tools_window.show()
|
||||
|
||||
func _on_NewsBtn_pressed():
|
||||
ticker_window.show()
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue