mirror of
https://github.com/tonytins/citylimits
synced 2025-06-25 09:24:44 -04:00
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:
parent
aed8b266b8
commit
f8a0f97767
17 changed files with 670 additions and 157 deletions
16
scripts/autoload/caseyverse.gd
Normal file
16
scripts/autoload/caseyverse.gd
Normal 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"]
|
|
@ -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
|
||||
|
|
|
@ -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():
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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()
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue