Slightly rewrote the news ticker architecture

- The news ticker is now a stealth button that opens a window.
- News window now has brandings for FNN and Pawprint Press.
- Ticker now provides extra lore by me if is_caseyverse.txt is present.
- Moved the news ticker functions to the window source, for now.
- Added .gdignore
This commit is contained in:
Tony Bark 2022-08-08 03:53:39 -04:00
parent aed8b266b8
commit f8a0f97767
17 changed files with 670 additions and 157 deletions

View file

@ -0,0 +1,16 @@
extends Node
const caseyverse_path = "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

@ -11,7 +11,7 @@ signal advisor_message(advisor, message)
# News
signal send_alert(message)
signal resume_news
signal rotate_news
# Policies
signal clean_air_act

View file

@ -6,7 +6,7 @@ onready var turtle_btn = $Controls/Status/StatCtr/ButtonCtr/TurtleBtn
onready var cheeta_btn = $Controls/Status/StatCtr/ButtonCtr/CheetaBtn
func _ready():
SimEvents.connect("resume_news", self, "_resume_rotation")
SimEvents.connect("rotate_news", self, "_rotate_news")
SimEvents.connect("send_alert", self, "_stop_news")
func _stop_news():

View file

@ -1,116 +1,117 @@
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"
]
func _index_news():
var news = _load_json()
all_news.clear()
all_news = news["ticker"]
randomize()
all_news.shuffle()
func _process(delta):
var prev_json_Files = json_files
var city_life = [
"citylife.json",
"kittykibble.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.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("resume_news", self, "_resume_ticker")
_random_news(json_files)
func _start_alert(message):
if ticker_text.items.size() > 3:
ticker_text.clear()
SimData.on_alert = true
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.add_item(news_text)
func _resume_ticker():
_random_news(json_files)
func _on_RotateNews_timeout():
_random_news(json_files)
#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()
#
#func _process(delta):
# var prev_json_Files = json_files
#
# var city_life = [
# "citylife.json",
# "kittykibble.json",
# "international.json",
# "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.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):
# 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)
#
#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)

View file

@ -5,12 +5,166 @@ 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()
@ -20,3 +174,6 @@ func _on_AdvsiorBtn_pressed():
func _on_ToolsBtn_pressed():
tools_window.show()
func _on_NewsBtn_pressed():
ticker_window.show()