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:
Tony Bark 2022-08-08 16:10:14 -04:00
parent f8a0f97767
commit 65cc08fab6
13 changed files with 309 additions and 417 deletions

View file

@ -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"]

View 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]

View file

@ -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:

View file

@ -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

View file

@ -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)

View file

@ -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()