Compare commits

...

3 commits

Author SHA1 Message Date
Tony Bark
5de5a0c315 [Broken] Removed news branding
- Ticker files are no longer baked into the game
- Removed secondary outlet
- News window uses outlet name from Json name
- Lowered maximum amount of news items
2022-08-08 18:29:56 -04:00
Tony Bark
40e68bb7e5 Renamed news_outlets_path to full_path 2022-08-08 16:12:17 -04:00
Tony Bark
65cc08fab6 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
2022-08-08 16:10:14 -04:00
15 changed files with 293 additions and 454 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

View file

@ -1,35 +0,0 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/fnn.png-5c63f68777d5a929666ef2d1f774ecb5.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/ticker/fnn.png"
dest_files=[ "res://.import/fnn.png-5c63f68777d5a929666ef2d1f774ecb5.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
process/normal_map_invert_y=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0

4
json/saves/defualt.json Normal file
View file

@ -0,0 +1,4 @@
{
"city": "Metropolis",
"mayor": "Defacto"
}

View file

@ -2,6 +2,22 @@
With the exception of certain policies, the majority of the lore in City Limits comes from the news ticker. During regular gameplay (when there isn't any disasters or financial problems), the news ticker provides fictional turn of events that happen in the city, such as the Kitty Kibble shortage from SimCity 3000. With the exception of certain policies, the majority of the lore in City Limits comes from the news ticker. During regular gameplay (when there isn't any disasters or financial problems), the news ticker provides fictional turn of events that happen in the city, such as the Kitty Kibble shortage from SimCity 3000.
## Extra Lore ## Configuration
Additionally, I've added my own turn of events with the ``extra_lore.json`` file. Internally, this is known as "Caseyverse" and has a global node of the same name. That node is designed so the game can function without it through the use of the ``if_caseyverse()`` function (which checks for that json file, at the moment) and any future related functions that deal with events. The news ticker is completely configurable. News can be added or removed from the game without having to touch the code. The configuration is stored in the `config.json` file.
```json
{
"outlet": "Pawprint Press",
"competing_outlet": "Citizen Telegram",
"ticker_files": [
"adverts.json",
"sammy.json",
"kittykibble.json",
"citylife.json",
"extra_lore.json"
]
}
```
The ``outlet`` is the city's news brand, the ``competing_outlet`` is part of the optional ``extra_lore.json`` file, and ```ticker_files``` is an array of filenames that contain the news itself.

View file

@ -1,8 +1,8 @@
{ {
"ticker": [ "ticker": [
"This Space For Rent.",
"[outlet]: Don't Blame Us If You're Not Paying Attention", "[outlet]: Don't Blame Us If You're Not Paying Attention",
"[outlet]: Information With As Few Words As Possible.", "[outlet]: Information With As Few Words As Possible.",
"This Space For Rent.",
"[outlet]: Properly Spelled Words From Beginning To End.", "[outlet]: Properly Spelled Words From Beginning To End.",
"[outlet]: Journalistic Integrity Without All The Advertising.", "[outlet]: Journalistic Integrity Without All The Advertising.",
"[outlet]: No Advertisements Since Before The Beginning." "[outlet]: No Advertisements Since Before The Beginning."

11
json/ticker/config.json Normal file
View file

@ -0,0 +1,11 @@
{
"outlet": "Pawprint Press",
"competing_outlet": "Citizen Telegram",
"ticker_files": [
"adverts.json",
"sammy.json",
"kittykibble.json",
"citylife.json",
"extra_lore.json"
]
}

View file

@ -1,11 +1,12 @@
{ {
"competing_outlet": "Citizen Telegram",
"ticker": [ "ticker": [
"Some cats look to [other_outlet] for answers behind Kitty Kibble shortage.", "Some cats look to [competing_outlet] for answers behind Kitty Kibble shortage.",
"Kit Welsh awarded for his medical breakthroughs in [city].", "Kit Welsh awarded for his medical breakthroughs in [city].",
"Ishard has frozen another one of Big Boston's numbers racket.", "Ishard has frozen another one of Big Boston's numbers racket.",
"Can Ishard solve the Kitty Kibble shortage?", "Can Ishard solve the Kitty Kibble shortage?",
"Who is Ishard? And where did he come from?", "Who is Ishard? And where did he come from?",
"Big Boston gets frozen in his tracks again thanks to Ishard." "Big Boston gets frozen in his tracks again thanks to Ishard.",
"[competing_outlet] suggests that Ishard is a fraud.",
"[competing_outlet] supports Kitty Kibble hoax theory, despite lack of evidence."
] ]
} }

View file

@ -22,8 +22,7 @@ SimData="*res://scripts/autoload/sim_data.gd"
SimEvents="*res://scripts/autoload/sim_events.gd" SimEvents="*res://scripts/autoload/sim_events.gd"
SimTime="*res://scripts/autoload/sim_time.gd" SimTime="*res://scripts/autoload/sim_time.gd"
ZoneData="*res://scripts/autoload/zone_data.gd" ZoneData="*res://scripts/autoload/zone_data.gd"
VRBridge="*res://scripts/autoload/vr_bridge.gd" JsonHelper="*res://scripts/autoload/jsonhelper.gd"
Caseyverse="*res://scripts/autoload/caseyverse.gd"
[display] [display]

View file

@ -1,7 +1,6 @@
[gd_scene load_steps=45 format=2] [gd_scene load_steps=45 format=2]
[ext_resource path="res://scenes/maps/MapOne.tscn" type="PackedScene" id=1] [ext_resource path="res://scenes/maps/MapOne.tscn" type="PackedScene" id=1]
[ext_resource path="res://assets/ticker/pawprint-logo.svg" type="Texture" id=2]
[ext_resource path="res://assets/symbols/fontawesome/population.svg" type="Texture" id=3] [ext_resource path="res://assets/symbols/fontawesome/population.svg" type="Texture" id=3]
[ext_resource path="res://scenes/windows/Advisor.tscn" type="PackedScene" id=4] [ext_resource path="res://scenes/windows/Advisor.tscn" type="PackedScene" id=4]
[ext_resource path="res://assets/ui/iccom.png" type="Texture" id=5] [ext_resource path="res://assets/ui/iccom.png" type="Texture" id=5]
@ -44,6 +43,7 @@
[ext_resource path="res://assets/symbols/fontawesome/city.svg" type="Texture" id=42] [ext_resource path="res://assets/symbols/fontawesome/city.svg" type="Texture" id=42]
[ext_resource path="res://assets/symbols/fontawesome/envelope.svg" type="Texture" id=43] [ext_resource path="res://assets/symbols/fontawesome/envelope.svg" type="Texture" id=43]
[ext_resource path="res://scenes/windows/Ordinance.tscn" type="PackedScene" id=44] [ext_resource path="res://scenes/windows/Ordinance.tscn" type="PackedScene" id=44]
[ext_resource path="res://scripts/ticker.gd" type="Script" id=45]
[node name="Game" type="Node2D"] [node name="Game" type="Node2D"]
script = ExtResource( 20 ) script = ExtResource( 20 )
@ -55,24 +55,25 @@ __meta__ = {
"_editor_description_": "Calculation based on: https://gaming.stackexchange.com/questions/110529/real-world-time-in-a-simcity-day-on-various-speeds" "_editor_description_": "Calculation based on: https://gaming.stackexchange.com/questions/110529/real-world-time-in-a-simcity-day-on-various-speeds"
} }
[node name="RotateNews" type="Timer" parent="."]
wait_time = 5.0
autostart = true
[node name="MapOne" parent="." instance=ExtResource( 1 )] [node name="MapOne" parent="." instance=ExtResource( 1 )]
[node name="Controls" type="CanvasLayer" parent="."] [node name="Controls" type="CanvasLayer" parent="."]
[node name="Windows" type="Control" parent="Controls"] [node name="Control Panel" type="Control" parent="Controls"]
anchor_right = 1.0 margin_right = 40.0
anchor_bottom = 1.0 margin_bottom = 40.0
script = ExtResource( 45 )
[node name="Windows" type="Control" parent="Controls/Control Panel"]
anchor_right = 25.65
anchor_bottom = 12.9
script = ExtResource( 37 ) script = ExtResource( 37 )
__meta__ = { __meta__ = {
"_edit_lock_": true, "_edit_lock_": true,
"_edit_use_anchors_": true "_edit_use_anchors_": true
} }
[node name="Console" parent="Controls/Windows" instance=ExtResource( 6 )] [node name="Console" parent="Controls/Control Panel/Windows" instance=ExtResource( 6 )]
anchor_left = 0.590492 anchor_left = 0.590492
anchor_top = 0.0604199 anchor_top = 0.0604199
anchor_right = 0.985023 anchor_right = 0.985023
@ -80,9 +81,9 @@ anchor_bottom = 0.312087
rect_min_size = Vector2( 400, 150 ) rect_min_size = Vector2( 400, 150 )
resizable = true resizable = true
[node name="CityPlanner" parent="Controls/Windows" instance=ExtResource( 4 )] [node name="CityPlanner" parent="Controls/Control Panel/Windows" instance=ExtResource( 4 )]
[node name="TaxWindow" parent="Controls/Windows" instance=ExtResource( 32 )] [node name="TaxWindow" parent="Controls/Control Panel/Windows" instance=ExtResource( 32 )]
visible = false visible = false
anchor_left = 0.297863 anchor_left = 0.297863
anchor_top = 0.409167 anchor_top = 0.409167
@ -90,7 +91,7 @@ anchor_right = 0.702137
anchor_bottom = 0.590833 anchor_bottom = 0.590833
margin_bottom = 3.05176e-05 margin_bottom = 3.05176e-05
[node name="AdvisorMeet" parent="Controls/Windows" instance=ExtResource( 21 )] [node name="AdvisorMeet" parent="Controls/Control Panel/Windows" instance=ExtResource( 21 )]
anchor_left = 0.5 anchor_left = 0.5
anchor_top = 0.5 anchor_top = 0.5
anchor_right = 0.5 anchor_right = 0.5
@ -100,7 +101,7 @@ margin_top = -138.5
margin_right = 234.609 margin_right = 234.609
margin_bottom = 138.5 margin_bottom = 138.5
[node name="ToolsWindow" type="WindowDialog" parent="Controls/Windows"] [node name="ToolsWindow" type="WindowDialog" parent="Controls/Control Panel/Windows"]
anchor_left = 0.402435 anchor_left = 0.402435
anchor_top = 0.315697 anchor_top = 0.315697
anchor_right = 0.60263 anchor_right = 0.60263
@ -110,53 +111,53 @@ __meta__ = {
"_edit_use_anchors_": true "_edit_use_anchors_": true
} }
[node name="CenterCtr" type="CenterContainer" parent="Controls/Windows/ToolsWindow"] [node name="CenterCtr" type="CenterContainer" parent="Controls/Control Panel/Windows/ToolsWindow"]
anchor_right = 1.0 anchor_right = 1.0
anchor_bottom = 1.0 anchor_bottom = 1.0
__meta__ = { __meta__ = {
"_edit_use_anchors_": false "_edit_use_anchors_": false
} }
[node name="VertCtr" type="VBoxContainer" parent="Controls/Windows/ToolsWindow/CenterCtr"] [node name="VertCtr" type="VBoxContainer" parent="Controls/Control Panel/Windows/ToolsWindow/CenterCtr"]
margin_left = 12.0 margin_left = 12.0
margin_top = 24.0 margin_top = 9.0
margin_right = 192.0 margin_right = 192.0
margin_bottom = 196.0 margin_bottom = 181.0
[node name="LargeCtr" type="HBoxContainer" parent="Controls/Windows/ToolsWindow/CenterCtr/VertCtr"] [node name="LargeCtr" type="HBoxContainer" parent="Controls/Control Panel/Windows/ToolsWindow/CenterCtr/VertCtr"]
margin_right = 180.0 margin_right = 180.0
margin_bottom = 42.0 margin_bottom = 42.0
__meta__ = { __meta__ = {
"_edit_use_anchors_": false "_edit_use_anchors_": false
} }
[node name="TextureButton" type="TextureButton" parent="Controls/Windows/ToolsWindow/CenterCtr/VertCtr/LargeCtr"] [node name="TextureButton" type="TextureButton" parent="Controls/Control Panel/Windows/ToolsWindow/CenterCtr/VertCtr/LargeCtr"]
margin_right = 42.0 margin_right = 42.0
margin_bottom = 42.0 margin_bottom = 42.0
texture_normal = ExtResource( 28 ) texture_normal = ExtResource( 28 )
[node name="TextureButton2" type="TextureButton" parent="Controls/Windows/ToolsWindow/CenterCtr/VertCtr/LargeCtr"] [node name="TextureButton2" type="TextureButton" parent="Controls/Control Panel/Windows/ToolsWindow/CenterCtr/VertCtr/LargeCtr"]
margin_left = 46.0 margin_left = 46.0
margin_right = 88.0 margin_right = 88.0
margin_bottom = 42.0 margin_bottom = 42.0
texture_normal = ExtResource( 26 ) texture_normal = ExtResource( 26 )
texture_pressed = ExtResource( 27 ) texture_pressed = ExtResource( 27 )
[node name="NuclearBtn" type="TextureButton" parent="Controls/Windows/ToolsWindow/CenterCtr/VertCtr/LargeCtr"] [node name="NuclearBtn" type="TextureButton" parent="Controls/Control Panel/Windows/ToolsWindow/CenterCtr/VertCtr/LargeCtr"]
margin_left = 92.0 margin_left = 92.0
margin_right = 134.0 margin_right = 134.0
margin_bottom = 42.0 margin_bottom = 42.0
texture_normal = ExtResource( 23 ) texture_normal = ExtResource( 23 )
texture_pressed = ExtResource( 25 ) texture_pressed = ExtResource( 25 )
[node name="CoalBtn" type="TextureButton" parent="Controls/Windows/ToolsWindow/CenterCtr/VertCtr/LargeCtr"] [node name="CoalBtn" type="TextureButton" parent="Controls/Control Panel/Windows/ToolsWindow/CenterCtr/VertCtr/LargeCtr"]
margin_left = 138.0 margin_left = 138.0
margin_right = 180.0 margin_right = 180.0
margin_bottom = 42.0 margin_bottom = 42.0
texture_normal = ExtResource( 19 ) texture_normal = ExtResource( 19 )
texture_pressed = ExtResource( 18 ) texture_pressed = ExtResource( 18 )
[node name="SmallCtr" type="HBoxContainer" parent="Controls/Windows/ToolsWindow/CenterCtr/VertCtr"] [node name="SmallCtr" type="HBoxContainer" parent="Controls/Control Panel/Windows/ToolsWindow/CenterCtr/VertCtr"]
margin_top = 46.0 margin_top = 46.0
margin_right = 180.0 margin_right = 180.0
margin_bottom = 80.0 margin_bottom = 80.0
@ -164,27 +165,27 @@ __meta__ = {
"_edit_use_anchors_": true "_edit_use_anchors_": true
} }
[node name="PoliceBtn" type="TextureButton" parent="Controls/Windows/ToolsWindow/CenterCtr/VertCtr/SmallCtr"] [node name="PoliceBtn" type="TextureButton" parent="Controls/Control Panel/Windows/ToolsWindow/CenterCtr/VertCtr/SmallCtr"]
margin_right = 34.0 margin_right = 34.0
margin_bottom = 34.0 margin_bottom = 34.0
texture_normal = ExtResource( 29 ) texture_normal = ExtResource( 29 )
texture_pressed = ExtResource( 16 ) texture_pressed = ExtResource( 16 )
[node name="FireBtn" type="TextureButton" parent="Controls/Windows/ToolsWindow/CenterCtr/VertCtr/SmallCtr"] [node name="FireBtn" type="TextureButton" parent="Controls/Control Panel/Windows/ToolsWindow/CenterCtr/VertCtr/SmallCtr"]
margin_left = 38.0 margin_left = 38.0
margin_right = 72.0 margin_right = 72.0
margin_bottom = 34.0 margin_bottom = 34.0
texture_normal = ExtResource( 33 ) texture_normal = ExtResource( 33 )
texture_pressed = ExtResource( 11 ) texture_pressed = ExtResource( 11 )
[node name="ParkBtn" type="TextureButton" parent="Controls/Windows/ToolsWindow/CenterCtr/VertCtr/SmallCtr"] [node name="ParkBtn" type="TextureButton" parent="Controls/Control Panel/Windows/ToolsWindow/CenterCtr/VertCtr/SmallCtr"]
margin_left = 76.0 margin_left = 76.0
margin_right = 110.0 margin_right = 110.0
margin_bottom = 34.0 margin_bottom = 34.0
texture_normal = ExtResource( 24 ) texture_normal = ExtResource( 24 )
texture_pressed = ExtResource( 22 ) texture_pressed = ExtResource( 22 )
[node name="ToolsCtr" type="HBoxContainer" parent="Controls/Windows/ToolsWindow/CenterCtr/VertCtr"] [node name="ToolsCtr" type="HBoxContainer" parent="Controls/Control Panel/Windows/ToolsWindow/CenterCtr/VertCtr"]
margin_top = 84.0 margin_top = 84.0
margin_right = 180.0 margin_right = 180.0
margin_bottom = 118.0 margin_bottom = 118.0
@ -192,13 +193,13 @@ __meta__ = {
"_edit_use_anchors_": true "_edit_use_anchors_": true
} }
[node name="InfoBtn" type="TextureButton" parent="Controls/Windows/ToolsWindow/CenterCtr/VertCtr/ToolsCtr"] [node name="InfoBtn" type="TextureButton" parent="Controls/Control Panel/Windows/ToolsWindow/CenterCtr/VertCtr/ToolsCtr"]
margin_right = 34.0 margin_right = 34.0
margin_bottom = 34.0 margin_bottom = 34.0
texture_normal = ExtResource( 15 ) texture_normal = ExtResource( 15 )
texture_pressed = ExtResource( 14 ) texture_pressed = ExtResource( 14 )
[node name="BulldozeBtn" type="TextureButton" parent="Controls/Windows/ToolsWindow/CenterCtr/VertCtr/ToolsCtr"] [node name="BulldozeBtn" type="TextureButton" parent="Controls/Control Panel/Windows/ToolsWindow/CenterCtr/VertCtr/ToolsCtr"]
margin_left = 38.0 margin_left = 38.0
margin_right = 72.0 margin_right = 72.0
margin_bottom = 34.0 margin_bottom = 34.0
@ -208,7 +209,7 @@ __meta__ = {
"_edit_use_anchors_": false "_edit_use_anchors_": false
} }
[node name="ZonesCtr" type="HBoxContainer" parent="Controls/Windows/ToolsWindow/CenterCtr/VertCtr"] [node name="ZonesCtr" type="HBoxContainer" parent="Controls/Control Panel/Windows/ToolsWindow/CenterCtr/VertCtr"]
margin_top = 122.0 margin_top = 122.0
margin_right = 180.0 margin_right = 180.0
margin_bottom = 172.0 margin_bottom = 172.0
@ -216,29 +217,33 @@ __meta__ = {
"_edit_use_anchors_": false "_edit_use_anchors_": false
} }
[node name="ResBtn" type="TextureButton" parent="Controls/Windows/ToolsWindow/CenterCtr/VertCtr/ZonesCtr"] [node name="ResBtn" type="TextureButton" parent="Controls/Control Panel/Windows/ToolsWindow/CenterCtr/VertCtr/ZonesCtr"]
margin_right = 34.0 margin_right = 34.0
margin_bottom = 50.0 margin_bottom = 50.0
texture_normal = ExtResource( 9 ) texture_normal = ExtResource( 9 )
texture_pressed = ExtResource( 10 ) texture_pressed = ExtResource( 10 )
[node name="ComBtn" type="TextureButton" parent="Controls/Windows/ToolsWindow/CenterCtr/VertCtr/ZonesCtr"] [node name="ComBtn" type="TextureButton" parent="Controls/Control Panel/Windows/ToolsWindow/CenterCtr/VertCtr/ZonesCtr"]
margin_left = 38.0 margin_left = 38.0
margin_right = 72.0 margin_right = 72.0
margin_bottom = 50.0 margin_bottom = 50.0
texture_normal = ExtResource( 5 ) texture_normal = ExtResource( 5 )
texture_pressed = ExtResource( 30 ) texture_pressed = ExtResource( 30 )
[node name="IndBtn" type="TextureButton" parent="Controls/Windows/ToolsWindow/CenterCtr/VertCtr/ZonesCtr"] [node name="IndBtn" type="TextureButton" parent="Controls/Control Panel/Windows/ToolsWindow/CenterCtr/VertCtr/ZonesCtr"]
margin_left = 76.0 margin_left = 76.0
margin_right = 110.0 margin_right = 110.0
margin_bottom = 50.0 margin_bottom = 50.0
texture_normal = ExtResource( 13 ) texture_normal = ExtResource( 13 )
texture_pressed = ExtResource( 12 ) texture_pressed = ExtResource( 12 )
[node name="Credits" parent="Controls/Windows" instance=ExtResource( 34 )] [node name="Credits" parent="Controls/Control Panel/Windows" instance=ExtResource( 34 )]
anchor_left = 0.393762
anchor_top = 0.292636
anchor_right = 0.605263
anchor_bottom = 0.78876
[node name="PauseIndicator" type="TextureRect" parent="Controls/Windows"] [node name="PauseIndicator" type="TextureRect" parent="Controls/Control Panel/Windows"]
visible = false visible = false
anchor_right = 1.0 anchor_right = 1.0
anchor_bottom = 1.0 anchor_bottom = 1.0
@ -249,9 +254,9 @@ __meta__ = {
"_edit_use_anchors_": false "_edit_use_anchors_": false
} }
[node name="Ordinance" parent="Controls/Windows" instance=ExtResource( 44 )] [node name="Ordinance" parent="Controls/Control Panel/Windows" instance=ExtResource( 44 )]
[node name="VRMode" type="Button" parent="Controls/Windows"] [node name="VRMode" type="Button" parent="Controls/Control Panel/Windows"]
visible = false visible = false
anchor_left = 0.919922 anchor_left = 0.919922
anchor_top = 0.0197812 anchor_top = 0.0197812
@ -262,15 +267,38 @@ __meta__ = {
"_edit_use_anchors_": true "_edit_use_anchors_": true
} }
[node name="Status" type="Panel" parent="Controls/Windows"] [node name="NewsWindow" type="WindowDialog" parent="Controls/Control Panel/Windows"]
anchor_top = 0.863333 anchor_left = 0.0877193
anchor_right = 1.0 anchor_top = 0.234496
anchor_bottom = 1.00833 anchor_right = 0.69883
anchor_bottom = 0.591085
window_title = "News"
__meta__ = { __meta__ = {
"_edit_use_anchors_": true "_edit_use_anchors_": true
} }
[node name="SettingsBtn" type="Button" parent="Controls/Windows/Status"] [node name="News" type="ItemList" parent="Controls/Control Panel/Windows/NewsWindow"]
anchor_left = 0.00797449
anchor_top = 0.0412844
anchor_right = 0.992026
anchor_bottom = 0.967889
__meta__ = {
"_edit_use_anchors_": true
}
[node name="Status" type="Panel" parent="Controls/Control Panel"]
anchor_top = 12.95
anchor_right = 25.65
anchor_bottom = 15.25
__meta__ = {
"_edit_use_anchors_": true
}
[node name="RotateNews" type="Timer" parent="Controls/Control Panel/Status"]
wait_time = 5.0
autostart = true
[node name="SettingsBtn" type="Button" parent="Controls/Control Panel/Status"]
anchor_left = 0.0115391 anchor_left = 0.0115391
anchor_top = 0.0555202 anchor_top = 0.0555202
anchor_right = 0.0525548 anchor_right = 0.0525548
@ -282,7 +310,7 @@ __meta__ = {
"_edit_use_anchors_": true "_edit_use_anchors_": true
} }
[node name="StatCtr" type="HBoxContainer" parent="Controls/Windows/Status"] [node name="StatCtr" type="HBoxContainer" parent="Controls/Control Panel/Status"]
anchor_left = 0.0566406 anchor_left = 0.0566406
anchor_top = 0.0750188 anchor_top = 0.0750188
anchor_right = 0.996094 anchor_right = 0.996094
@ -294,90 +322,90 @@ __meta__ = {
"_edit_use_anchors_": true "_edit_use_anchors_": true
} }
[node name="ButtonCtr" type="HBoxContainer" parent="Controls/Windows/Status/StatCtr"] [node name="ButtonCtr" type="HBoxContainer" parent="Controls/Control Panel/Status/StatCtr"]
margin_left = 233.0 margin_left = 233.0
margin_right = 515.0 margin_right = 515.0
margin_bottom = 38.0 margin_bottom = 40.0
custom_constants/separation = 10 custom_constants/separation = 10
alignment = 1 alignment = 1
__meta__ = { __meta__ = {
"_edit_use_anchors_": false "_edit_use_anchors_": false
} }
[node name="TaxBtn" type="Button" parent="Controls/Windows/Status/StatCtr/ButtonCtr"] [node name="TaxBtn" type="Button" parent="Controls/Control Panel/Status/StatCtr/ButtonCtr"]
margin_right = 42.0 margin_right = 42.0
margin_bottom = 38.0 margin_bottom = 40.0
hint_tooltip = "RCI" hint_tooltip = "RCI"
size_flags_horizontal = 4 size_flags_horizontal = 4
icon = ExtResource( 40 ) icon = ExtResource( 40 )
[node name="ToolsBtn" type="Button" parent="Controls/Windows/Status/StatCtr/ButtonCtr"] [node name="ToolsBtn" type="Button" parent="Controls/Control Panel/Status/StatCtr/ButtonCtr"]
margin_left = 52.0 margin_left = 52.0
margin_right = 94.0 margin_right = 94.0
margin_bottom = 38.0 margin_bottom = 40.0
hint_tooltip = "Tools" hint_tooltip = "Tools"
size_flags_horizontal = 4 size_flags_horizontal = 4
icon = ExtResource( 42 ) icon = ExtResource( 42 )
[node name="AdvsiorBtn" type="Button" parent="Controls/Windows/Status/StatCtr/ButtonCtr"] [node name="AdvsiorBtn" type="Button" parent="Controls/Control Panel/Status/StatCtr/ButtonCtr"]
margin_left = 104.0 margin_left = 104.0
margin_right = 146.0 margin_right = 146.0
margin_bottom = 38.0 margin_bottom = 40.0
hint_tooltip = "Meet" hint_tooltip = "Meet"
size_flags_horizontal = 4 size_flags_horizontal = 4
icon = ExtResource( 43 ) icon = ExtResource( 43 )
[node name="VSeparator" type="VSeparator" parent="Controls/Windows/Status/StatCtr/ButtonCtr"] [node name="VSeparator" type="VSeparator" parent="Controls/Control Panel/Status/StatCtr/ButtonCtr"]
margin_left = 156.0 margin_left = 156.0
margin_right = 160.0 margin_right = 160.0
margin_bottom = 38.0 margin_bottom = 40.0
[node name="TurtleBtn" type="Button" parent="Controls/Windows/Status/StatCtr/ButtonCtr"] [node name="TurtleBtn" type="Button" parent="Controls/Control Panel/Status/StatCtr/ButtonCtr"]
margin_left = 170.0 margin_left = 170.0
margin_right = 211.0 margin_right = 211.0
margin_bottom = 38.0 margin_bottom = 40.0
hint_tooltip = "Slow" hint_tooltip = "Slow"
toggle_mode = true toggle_mode = true
icon = ExtResource( 8 ) icon = ExtResource( 8 )
[node name="CheetaBtn" type="Button" parent="Controls/Windows/Status/StatCtr/ButtonCtr"] [node name="CheetaBtn" type="Button" parent="Controls/Control Panel/Status/StatCtr/ButtonCtr"]
margin_left = 221.0 margin_left = 221.0
margin_right = 268.0 margin_right = 268.0
margin_bottom = 38.0 margin_bottom = 40.0
hint_tooltip = "Fast" hint_tooltip = "Fast"
toggle_mode = true toggle_mode = true
icon = ExtResource( 7 ) icon = ExtResource( 7 )
[node name="VSeparator2" type="VSeparator" parent="Controls/Windows/Status/StatCtr/ButtonCtr"] [node name="VSeparator2" type="VSeparator" parent="Controls/Control Panel/Status/StatCtr/ButtonCtr"]
margin_left = 278.0 margin_left = 278.0
margin_right = 282.0 margin_right = 282.0
margin_bottom = 38.0 margin_bottom = 40.0
[node name="NameDate" type="VBoxContainer" parent="Controls/Windows/Status/StatCtr"] [node name="NameDate" type="VBoxContainer" parent="Controls/Control Panel/Status/StatCtr"]
margin_left = 565.0 margin_left = 565.0
margin_right = 653.0 margin_right = 653.0
margin_bottom = 38.0 margin_bottom = 40.0
alignment = 1 alignment = 1
[node name="CityNameLbl" type="Label" parent="Controls/Windows/Status/StatCtr/NameDate"] [node name="CityNameLbl" type="Label" parent="Controls/Control Panel/Status/StatCtr/NameDate"]
margin_top = 3.0 margin_top = 4.0
margin_right = 88.0 margin_right = 88.0
margin_bottom = 17.0 margin_bottom = 18.0
text = "City Name" text = "City Name"
align = 1 align = 1
[node name="YearCtr" type="HBoxContainer" parent="Controls/Windows/Status/StatCtr/NameDate"] [node name="YearCtr" type="HBoxContainer" parent="Controls/Control Panel/Status/StatCtr/NameDate"]
margin_top = 21.0 margin_top = 22.0
margin_right = 88.0 margin_right = 88.0
margin_bottom = 35.0 margin_bottom = 36.0
[node name="CalIcon" type="TextureRect" parent="Controls/Windows/Status/StatCtr/NameDate/YearCtr"] [node name="CalIcon" type="TextureRect" parent="Controls/Control Panel/Status/StatCtr/NameDate/YearCtr"]
margin_right = 10.0 margin_right = 10.0
margin_bottom = 14.0 margin_bottom = 14.0
texture = ExtResource( 36 ) texture = ExtResource( 36 )
stretch_mode = 4 stretch_mode = 4
[node name="CalendarLbl" type="Label" parent="Controls/Windows/Status/StatCtr/NameDate/YearCtr"] [node name="CalendarLbl" type="Label" parent="Controls/Control Panel/Status/StatCtr/NameDate/YearCtr"]
margin_left = 14.0 margin_left = 14.0
margin_right = 88.0 margin_right = 88.0
margin_bottom = 14.0 margin_bottom = 14.0
@ -386,103 +414,58 @@ __meta__ = {
"_edit_use_anchors_": false "_edit_use_anchors_": false
} }
[node name="PopBudget" type="VBoxContainer" parent="Controls/Windows/Status/StatCtr"] [node name="PopBudget" type="VBoxContainer" parent="Controls/Control Panel/Status/StatCtr"]
margin_left = 703.0 margin_left = 703.0
margin_right = 729.0 margin_right = 729.0
margin_bottom = 38.0 margin_bottom = 40.0
alignment = 1 alignment = 1
[node name="BudgetCtr" type="HBoxContainer" parent="Controls/Windows/Status/StatCtr/PopBudget"] [node name="BudgetCtr" type="HBoxContainer" parent="Controls/Control Panel/Status/StatCtr/PopBudget"]
margin_top = 3.0 margin_top = 4.0
margin_right = 26.0 margin_right = 26.0
margin_bottom = 17.0 margin_bottom = 18.0
[node name="CoinsIcon" type="TextureRect" parent="Controls/Windows/Status/StatCtr/PopBudget/BudgetCtr"] [node name="CoinsIcon" type="TextureRect" parent="Controls/Control Panel/Status/StatCtr/PopBudget/BudgetCtr"]
margin_right = 14.0 margin_right = 14.0
margin_bottom = 14.0 margin_bottom = 14.0
texture = ExtResource( 41 ) texture = ExtResource( 41 )
stretch_mode = 4 stretch_mode = 4
[node name="BudgetLbl" type="Label" parent="Controls/Windows/Status/StatCtr/PopBudget/BudgetCtr"] [node name="BudgetLbl" type="Label" parent="Controls/Control Panel/Status/StatCtr/PopBudget/BudgetCtr"]
margin_left = 18.0 margin_left = 18.0
margin_right = 26.0 margin_right = 26.0
margin_bottom = 14.0 margin_bottom = 14.0
text = "0" text = "0"
[node name="PopCtr" type="HBoxContainer" parent="Controls/Windows/Status/StatCtr/PopBudget"] [node name="PopCtr" type="HBoxContainer" parent="Controls/Control Panel/Status/StatCtr/PopBudget"]
margin_top = 21.0 margin_top = 22.0
margin_right = 26.0 margin_right = 26.0
margin_bottom = 35.0 margin_bottom = 36.0
[node name="PopIcon" type="TextureRect" parent="Controls/Windows/Status/StatCtr/PopBudget/PopCtr"] [node name="PopIcon" type="TextureRect" parent="Controls/Control Panel/Status/StatCtr/PopBudget/PopCtr"]
margin_right = 14.0 margin_right = 14.0
margin_bottom = 14.0 margin_bottom = 14.0
texture = ExtResource( 3 ) texture = ExtResource( 3 )
stretch_mode = 4 stretch_mode = 4
[node name="PopLbl" type="Label" parent="Controls/Windows/Status/StatCtr/PopBudget/PopCtr"] [node name="PopLbl" type="Label" parent="Controls/Control Panel/Status/StatCtr/PopBudget/PopCtr"]
margin_left = 18.0 margin_left = 18.0
margin_right = 26.0 margin_right = 26.0
margin_bottom = 14.0 margin_bottom = 14.0
text = "0" text = "0"
[node name="NewsBtn" type="Button" parent="Controls/Windows/Status"] [node name="NewsBtn" type="Button" parent="Controls/Control Panel/Status"]
anchor_left = 0.0078125 anchor_left = 0.0078125
anchor_top = 0.633158 anchor_top = 0.633158
anchor_right = 0.989258 anchor_right = 0.989258
anchor_bottom = 0.888972 anchor_bottom = 0.888972
text = "News" text = "News"
flat = true flat = true
align = 0
__meta__ = { __meta__ = {
"_edit_use_anchors_": true "_edit_use_anchors_": true
} }
[node name="NewsWindow" type="WindowDialog" parent="Controls/Windows"]
anchor_left = 0.0878906
anchor_top = 0.235
anchor_right = 0.699219
anchor_bottom = 0.578333
__meta__ = {
"_edit_use_anchors_": true
}
[node name="News" type="ItemList" parent="Controls/Windows/NewsWindow"]
anchor_left = 0.0111821
anchor_top = 0.23301
anchor_right = 0.988818
anchor_bottom = 0.961165
__meta__ = {
"_edit_use_anchors_": true
}
[node name="Brand" type="HSplitContainer" parent="Controls/Windows/NewsWindow"]
anchor_left = 0.0175719
anchor_top = 0.0242718
anchor_right = 0.982428
anchor_bottom = 0.23301
__meta__ = {
"_edit_use_anchors_": true
}
[node name="NewsBrand" type="TextureRect" parent="Controls/Windows/NewsWindow/Brand"]
margin_right = 288.0
margin_bottom = 43.0
texture = ExtResource( 2 )
[node name="NewsMotto" type="Label" parent="Controls/Windows/NewsWindow/Brand"]
margin_left = 300.0
margin_top = 14.0
margin_right = 604.0
margin_bottom = 28.0
align = 2
valign = 1
[connection signal="timeout" from="DayCycle" to="." method="_on_DayCycle_timeout"] [connection signal="timeout" from="DayCycle" to="." method="_on_DayCycle_timeout"]
[connection signal="timeout" from="RotateNews" to="Controls/Windows" method="_on_RotateNews_timeout"] [connection signal="timeout" from="Controls/Control Panel/Status/RotateNews" to="Controls/Control Panel" method="_on_RotateNews_timeout"]
[connection signal="pressed" from="Controls/Windows/VRMode" to="." method="_on_VRMode_pressed"] [connection signal="pressed" from="Controls/Control Panel/Status/NewsBtn" to="Controls/Control Panel" method="_on_NewsBtn_pressed"]
[connection signal="pressed" from="Controls/Windows/Status/StatCtr/ButtonCtr/TaxBtn" to="Controls/Windows" method="_on_TaxBtn_pressed"]
[connection signal="pressed" from="Controls/Windows/Status/StatCtr/ButtonCtr/ToolsBtn" to="Controls/Windows" method="_on_ToolsBtn_pressed"]
[connection signal="pressed" from="Controls/Windows/Status/StatCtr/ButtonCtr/AdvsiorBtn" to="Controls/Windows" method="_on_AdvsiorBtn_pressed"]
[connection signal="toggled" from="Controls/Windows/Status/StatCtr/ButtonCtr/TurtleBtn" to="." method="_on_TurtleBtn_toggled"]
[connection signal="toggled" from="Controls/Windows/Status/StatCtr/ButtonCtr/CheetaBtn" to="." method="_on_CheetaBtn_toggled"]
[connection signal="pressed" from="Controls/Windows/Status/NewsBtn" to="Controls/Windows" method="_on_NewsBtn_pressed"]

View file

@ -1,16 +1,10 @@
extends Node extends Node
const caseyverse_path = "res://json/ticker/extra_lore.json" 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" const is_caseyverse_path = "res://is_caseyverse.txt"
func is_caseyverse(): func is_caseyverse():
var file = File.new() var file = File.new()
if file.file_exists(is_caseyverse_path): if file.file_exists(is_caseyverse_path):
return true 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 full_path = str(json_path + json_file);
if file.file_exists(full_path):
file.open(full_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 extends Node
var city_name: String = "Furtropolis" # Hard-coded, for now const DEFAULT_CITY = "defualt.json"
var mayor_name: String = "Defecto" const SAVE_PATH = "res://json/saves/"
var city_name: String = ""
var mayor_name: String = ""
var population: int = 0 var population: int = 0
var budget: int = 20000 var budget: int = 20000
var expenses: int var expenses: int
@ -65,6 +68,13 @@ enum Ordinances {
TIRE_RECYCLE 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): #func starting_budget(lev = Level.EASY):
# match lev: # match lev:
# Level.EASY: # Level.EASY:

View file

@ -1,20 +1,13 @@
extends Node2D extends Node2D
onready var rotate_news = $RotateNews
onready var day_cycle = $DayCycle onready var day_cycle = $DayCycle
onready var turtle_btn = $Controls/Status/StatCtr/ButtonCtr/TurtleBtn #onready var turtle_btn = $Controls/Status/StatCtr/ButtonCtr/TurtleBtn
onready var cheeta_btn = $Controls/Status/StatCtr/ButtonCtr/CheetaBtn #onready var cheeta_btn = $Controls/Status/StatCtr/ButtonCtr/CheetaBtn
func _ready(): func _ready():
SimEvents.connect("rotate_news", self, "_rotate_news") SimEvents.connect("rotate_news", self, "_rotate_news")
SimEvents.connect("send_alert", self, "_stop_news") SimEvents.connect("send_alert", self, "_stop_news")
func _stop_news():
rotate_news.stop()
func _resume_rotation():
rotate_news.start()
func _on_DayCycle_timeout(): func _on_DayCycle_timeout():
# Increment the number days until it reaches 30 # Increment the number days until it reaches 30
@ -35,16 +28,12 @@ func _on_DayCycle_timeout():
if SimTime.prev_month == 12: if SimTime.prev_month == 12:
SimTime.new_year() SimTime.new_year()
func _on_TurtleBtn_toggled(button_pressed): #func _on_TurtleBtn_toggled(button_pressed):
if button_pressed: # if button_pressed:
day_cycle.wait_time = 12 # day_cycle.wait_time = 12
cheeta_btn.pressed = false # cheeta_btn.pressed = false
#
func _on_CheetaBtn_toggled(button_pressed): #func _on_CheetaBtn_toggled(button_pressed):
if button_pressed: # if button_pressed:
day_cycle.wait_time = 2 # day_cycle.wait_time = 2
turtle_btn.pressed = false # turtle_btn.pressed = false
func _on_VRMode_pressed():
# get_tree().change_scene("res://scenes/VR Game.tscn")
pass

View file

@ -1,31 +1,43 @@
#extends Panel extends Control
#
#const ticker_path = "res://json/ticker/" const TICKER_PATH = "res://json/ticker/"
# const FNN_LOGO = "res://assets/ticker/fnn.png"
#onready var ticker_text = $Ticker const CONFIG_FILE = "config.json"
#
#var news_file: String = "" onready var ticker_text = $Status/NewsBtn
#var rng = RandomNumberGenerator.new() onready var ticker_box = $Windows/NewsWindow/News
#var all_news = [] onready var ticker_window = $Windows/NewsWindow
#var speices = [
# "Cat", var news_file: String = ""
# "Fennec", var rng = RandomNumberGenerator.new()
# "Fox" var all_news: Array = []
#] var speices: Array = [
#var json_files = [ "Cat",
# "adverts.json", "Fennec",
# "sammy.json", "Fox"
# "kittykibble.json" ]
#]
# var json_files: Array = []
#func _index_news():
# var news = _load_json() func _load_json():
# all_news.clear() var file = File.new()
# all_news = news["ticker"] if file.file_exists(news_file):
# file.open(news_file, file.READ)
# randomize() var result = parse_json(file.get_as_text())
# all_news.shuffle() return result
#
func _index_news():
var news = _load_json()
all_news.clear()
all_news = news["ticker"]
randomize()
all_news.shuffle()
func _ready():
ticker_window.window_title = JsonHelper.key_value(TICKER_PATH, CONFIG_FILE, "outlet")
_randomize_news(json_files)
#func _process(delta): #func _process(delta):
# var prev_json_Files = json_files # var prev_json_Files = json_files
# #
@ -47,71 +59,74 @@
# prev_json_Files = json_files # prev_json_Files = json_files
# for files in city_life: # for files in city_life:
# json_files.append(files) # json_files.append(files)
#
#func _array_check(list1, list2): func _array_check(list1, list2):
# for item in list1: for item in list1:
# if item in list2: if item in list2:
# return true return true
#
# return false return false
#
#func _load_json(): func _start_alert(message):
# 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: # if ticker_text.items.size() > 1:
# ticker_text.clear() # ticker_text.clear()
# #
# SimData.on_alert = true # 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) # ticker_text.add_item(all_news)
#
#func _random_news(files: Array): pass
# for file in files:
# news_file = str(ticker_path + file) func _randomize_news(files: Array):
# _load_json() if all_news == null:
# _index_news() json_files = JsonHelper.key_value(TICKER_PATH, CONFIG_FILE, "ticker_files")
#
# rng.randomize() for file in files:
# randomize() news_file = str(TICKER_PATH + file)
# all_news.shuffle() _load_json()
# _index_news()
# var news_range = rng.randi_range(0, all_news.size() - 1)
# var news_text: String = all_news[news_range] rng.randomize()
# randomize()
# if SimData.city_name == "Furtropolis" or "Furville" and "[outlet]" in news_text: files.shuffle()
# # FNN = Furtropolis/Furry News Network
# news_text = news_text.replace("[outlet]", "FNN") var news_range = rng.randi_range(0, all_news.size() - 1)
# else: var news_text: String = all_news[news_range]
# news_text = news_text.replace("[outlet]", "Pawprint Press")
# if "[competing_outlet]" in news_text:
# if "[species]" in news_text: news_text = news_text.replace("[competing_outlet]", JsonHelper.key_value(TICKER_PATH, CONFIG_FILE, "competing_outlet"))
# speices.shuffle()
# var speices_range = rng.randi_range(speices.size() - 1) if "[outlet]" in news_text:
# news_text = news_text.replace("[species]", speices[speices_range]) news_text = news_text.replace("[outlet]", JsonHelper.key_value(TICKER_PATH, CONFIG_FILE, "outlet"))
#
# if "[city]" in news_text: if "[species]" in news_text:
# news_text = news_text.replace("[city]", SimData.city_name) speices.shuffle()
# var speices_range = rng.randi_range(speices.size() - 1)
# if "[mayor]" in news_text: news_text = news_text.replace("[species]", speices[speices_range])
# news_text = news_text.replace("[mayor]", SimData.mayor_name)
# if "[city]" in news_text:
# if ticker_text.items.size() > 3: news_text = news_text.replace("[city]", SimData.city_name)
# ticker_text.clear()
# if "[mayor]" in news_text:
# ticker_text.clear() news_text = news_text.replace("[mayor]", SimData.mayor_name)
# ticker_text.add_item(news_text)
# # Prevent stack overflaw
#func _on_RotateNews_timeout(): if ticker_box.items.size() > 10:
# _random_news(json_files) ticker_box.clear()
_randomize_news(json_files)
_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 advsior_meet_window = $AdvisorMeet
onready var tools_window = $ToolsWindow 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(): func _ready():
SimData.city_name = SimData.city_name.capitalize() SimData.city_name = SimData.city_name.capitalize()
SimData.mayor_name = SimData.mayor_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.emit_signal("advisor_message", SimData.Advisors.CITY_PLANNER, 0)
SimEvents.connect("send_alert", self, "_start_alert") SimEvents.connect("send_alert", self, "_start_alert")
SimEvents.connect("rotate_news", self, "_rotate_news") SimEvents.connect("rotate_news", self, "_rotate_news")
if Caseyverse.is_caseyverse():
json_files.append("extra_lore.json")
_randomize_news(json_files)
func _process(delta): func _process(delta):
if Input.is_action_pressed("ui_cheats"): if Input.is_action_pressed("ui_cheats"):
debug_console.show() 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()