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