diff --git a/README.md b/README.md
index bf8675a..08a559f 100644
--- a/README.md
+++ b/README.md
@@ -14,6 +14,7 @@ City Limits is a re-imagining of SimCity Classic that contains features and conc
- **Tony Bark** - _Initial work_ - [tonytins](https://github.com/tonytins)
- **Maxis** - _Assets_ - [SimHacker](https://github.com/SimHacker/)
+- **Font Awesome** - *Icons* - [FontAwesome.com](https://fontawesome.com/)
See also the list of [contributors](https://github.com/tonytins/citylimits/contributors) who participated in this project.
diff --git a/dialog/advisors/cityplanner.json b/dialog/advisors/cityplanner.json
new file mode 100644
index 0000000..79f00f8
--- /dev/null
+++ b/dialog/advisors/cityplanner.json
@@ -0,0 +1,6 @@
+{
+ "1": {
+ "name": "Roll up your sleeves, Mayor!",
+ "text": "Welcome to City Limits! I'm Cindy, and I'll be your city planner. I'll help you with zoning, land values, and handling connections to and from the city."
+ }
+}
\ No newline at end of file
diff --git a/dialog/finacial.json b/dialog/advisors/finacial.json
similarity index 100%
rename from dialog/finacial.json
rename to dialog/advisors/finacial.json
diff --git a/dialog/advisors/transport.json b/dialog/advisors/transport.json
new file mode 100644
index 0000000..e69de29
diff --git a/dialog/cityplanner.json b/dialog/cityplanner.json
deleted file mode 100644
index b581019..0000000
--- a/dialog/cityplanner.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "1": {
- "name": "Roll up your sleeves, Mayor!",
- "text": "Welcome to City Limits! I'm Zack, and I'll be your city planner. I'll help you with zoning, land values, and handling connections to and from the city."
- }
-}
\ No newline at end of file
diff --git a/dialog/ticker.json b/dialog/ticker/ticker.json
similarity index 66%
rename from dialog/ticker.json
rename to dialog/ticker/ticker.json
index 27644b3..0a5608f 100644
--- a/dialog/ticker.json
+++ b/dialog/ticker/ticker.json
@@ -66,7 +66,7 @@
"text": "Local Cop Found To Be Ticketing Only Lantern-Jawed Males."
},
"23": {
- "text": "Tree Stuck In Cat; Firefighters Baffled."
+ "text": "From The Desk Of Wise Guy Sammy: Better To Aim High And Miss Then To Aim Low And Hit."
},
"24": {
"text": "Weasel Rejected As [city]'s Crime-Fighting Mascot."
@@ -88,5 +88,41 @@
},
"30": {
"text": "[city] Baker Wins Pickled Crumpet Toss Three Years Running."
+ },
+ "31": {
+ "text": "Local Merchants Puzzled By Rumors Of Kitty Kibble Shortage; \"We Have Plenty,\" Say Most."
+ },
+ "32": {
+ "text": "Cats Concerned By Rumors Of Kitty Kibble Shortage; Owners In Panic."
+ },
+ "33": {
+ "text": "No Kitty Kibble Shortage Says Local Representative Of Kitty Kibble Association."
+ },
+ "34": {
+ "text": "Rumors Persist In Kitty Kibble Shortage; Unfounded Say Many."
+ },
+ "35": {
+ "text": "Is Kitty Kibble Shortage A Hoax? Cats Search For Truth."
+ },
+ "37": {
+ "text": "Cats Say Not Enough Being Done In Kitty Kibble Shortage."
+ },
+ "38": {
+ "text": "Rumors Persist In Kitty Kibble Shortage; Unfounded Say Many."
+ },
+ "39": {
+ "text": "Enough Kitty Kibble For Twenty Years, Experts Agree."
+ },
+ "40": {
+ "text": "From The Desk Of Wise Guy Sammy: One Word In This Ticker Is Mispelled."
+ },
+ "50": {
+ "text": "From The Desk Of Wise Guy Sammy: One Word In This Ticker Is Sdrawkcab (Backwards)."
+ },
+ "51": {
+ "text": "From The Desk Of Wise Guy Sammy: It Is Easier To Get Forgiveness Than Permission."
+ },
+ "52": {
+ "text": "From The Desk Of Wise Guy Sammy: You Can't Outwait A Bureaucracy."
}
}
\ No newline at end of file
diff --git a/dialog/ticker_alerts.json b/dialog/ticker/ticker_alerts.json
similarity index 100%
rename from dialog/ticker_alerts.json
rename to dialog/ticker/ticker_alerts.json
diff --git a/scenes/Meet.tscn b/scenes/Meet.tscn
index 85be63d..d7aa87b 100644
--- a/scenes/Meet.tscn
+++ b/scenes/Meet.tscn
@@ -1,7 +1,8 @@
-[gd_scene load_steps=3 format=2]
+[gd_scene load_steps=4 format=2]
-[ext_resource path="res://sprites/avatars/zc.png" type="Texture" id=1]
+[ext_resource path="res://sprites/avatars/cindy.png" type="Texture" id=1]
[ext_resource path="res://sprites/avatars/kit.png" type="Texture" id=2]
+[ext_resource path="res://sprites/avatars/zc.png" type="Texture" id=3]
[node name="AdvisorMeet" type="WindowDialog"]
anchor_left = 0.328125
@@ -37,6 +38,12 @@ margin_right = 304.0
margin_bottom = 100.0
texture_normal = ExtResource( 2 )
+[node name="TransportBtn" type="TextureButton" parent="Advsiors"]
+margin_left = 204.0
+margin_right = 304.0
+margin_bottom = 100.0
+texture_normal = ExtResource( 3 )
+
[node name="Tree" type="Tree" parent="."]
anchor_left = 0.0148515
anchor_top = 0.411552
diff --git a/scenes/game.tscn b/scenes/game.tscn
index 7c770f5..b210ef0 100644
--- a/scenes/game.tscn
+++ b/scenes/game.tscn
@@ -1,4 +1,4 @@
-[gd_scene load_steps=38 format=2]
+[gd_scene load_steps=40 format=2]
[ext_resource path="res://scenes/Map.tscn" type="PackedScene" id=1]
[ext_resource path="res://sprites/symbols/population.svg" type="Texture" id=2]
@@ -37,6 +37,8 @@
[ext_resource path="res://scripts/ticker.gd" type="Script" id=35]
[ext_resource path="res://sprites/symbols/building.svg" type="Texture" id=36]
[ext_resource path="res://scripts/windows.gd" type="Script" id=37]
+[ext_resource path="res://sprites/symbols/meet.svg" type="Texture" id=38]
+[ext_resource path="res://sprites/ui/pause.svg" type="Texture" id=39]
[node name="Game" type="Node2D"]
script = ExtResource( 20 )
@@ -54,12 +56,13 @@ autostart = true
[node name="Controls" type="CanvasLayer" parent="."]
[node name="Windows" type="Control" parent="Controls"]
-anchor_right = 0.938477
-anchor_bottom = 0.935
+anchor_right = 1.0
+anchor_bottom = 1.0
+margin_right = -81.0
+margin_bottom = -54.0
script = ExtResource( 37 )
__meta__ = {
-"_edit_lock_": true,
-"_edit_use_anchors_": true
+"_edit_use_anchors_": false
}
[node name="Console" parent="Controls/Windows" instance=ExtResource( 6 )]
@@ -107,10 +110,10 @@ __meta__ = {
}
[node name="VertCtr" type="VBoxContainer" parent="Controls/Windows/ToolsWindow/CenterCtr"]
-margin_left = 6.0
-margin_top = 17.0
-margin_right = 186.0
-margin_bottom = 189.0
+margin_left = 4.0
+margin_top = 14.0
+margin_right = 184.0
+margin_bottom = 186.0
[node name="LargeCtr" type="HBoxContainer" parent="Controls/Windows/ToolsWindow/CenterCtr/VertCtr"]
margin_right = 180.0
@@ -228,6 +231,17 @@ texture_pressed = ExtResource( 12 )
[node name="Credits" parent="Controls/Windows" instance=ExtResource( 34 )]
visible = false
+[node name="PauseIndicator" type="TextureRect" parent="Controls/Windows"]
+visible = false
+anchor_right = 1.0
+anchor_bottom = 1.0
+texture = ExtResource( 39 )
+stretch_mode = 1
+__meta__ = {
+"_edit_lock_": true,
+"_edit_use_anchors_": false
+}
+
[node name="Menu" type="Panel" parent="Controls"]
anchor_left = 0.919922
anchor_top = -0.02
@@ -239,7 +253,7 @@ __meta__ = {
}
[node name="ButtonCtr" type="VBoxContainer" parent="Controls/Menu"]
-anchor_top = 0.0305085
+anchor_top = 0.0491526
anchor_right = 1.0
anchor_bottom = 1.0
margin_right = 7.62939e-06
@@ -263,12 +277,12 @@ size_flags_horizontal = 4
icon = ExtResource( 36 )
[node name="AdvsiorBtn" type="Button" parent="Controls/Menu/ButtonCtr"]
-margin_left = 7.0
+margin_left = 10.0
margin_top = 125.0
-margin_right = 74.0
-margin_bottom = 145.0
+margin_right = 71.0
+margin_bottom = 171.0
size_flags_horizontal = 4
-text = "Advisors"
+icon = ExtResource( 38 )
[node name="Status" type="Panel" parent="Controls"]
anchor_top = 1.0
diff --git a/screenshot.png b/screenshot.png
index 79662f8..6da2127 100644
Binary files a/screenshot.png and b/screenshot.png differ
diff --git a/scripts/advisor_window.gd b/scripts/advisor_window.gd
index eadc87b..ae84775 100644
--- a/scripts/advisor_window.gd
+++ b/scripts/advisor_window.gd
@@ -17,17 +17,23 @@ onready var description_label = $Container/DescriptionLbl
func _start_dialogue(advisor, message):
if advisor == SimData.Advisors.CITY_PLANNER:
- dialogue_file = "res://dialog/cityplanner.json"
+ dialogue_file = "res://dialog/advisors/cityplanner.json"
_load_dialogue()
- avatar_texture.texture = preload("res://sprites/avatars/zc.png")
- name_label.text = "Zack Casey"
+ avatar_texture.texture = preload("res://sprites/avatars/cindy.png")
+ name_label.text = "Cindy Diamond"
rank_label.text = "City Planner"
elif advisor == SimData.Advisors.FINANCIAL:
- dialogue_file = "res://dialog/finacial.json"
+ dialogue_file = "res://dialog/advisors/finacial.json"
_load_dialogue()
avatar_texture.texture = preload("res://sprites/avatars/kit.png")
name_label.text = "Kit Welsh"
rank_label.text = "Financial Advisor"
+ elif advisor == SimData.Advisors.FINANCIAL:
+ dialogue_file = "res://dialog/advisors/transport.json"
+ _load_dialogue()
+ avatar_texture.texture = preload("res://sprites/avatars/zc.png")
+ name_label.text = "Zack Casey"
+ rank_label.text = "Transportation Advisor"
_index_dialogue()
description_label.text = dialogue_keys[message].text
diff --git a/scripts/command_handler.gd b/scripts/command_handler.gd
index b928c29..ea583e7 100644
--- a/scripts/command_handler.gd
+++ b/scripts/command_handler.gd
@@ -17,17 +17,7 @@ func _budget_print(value: int):
return "Budget increased to " + str(value)
func money(value):
- var motherlode = 50000
- var rosebud = 1000
- if value == "motherlode":
- SimData.budget += motherlode
- return _budget_print(motherlode)
-
- if value == "rosebud":
- SimData.budget += rosebud
- return _budget_print(rosebud)
-
- return ""
+ SimData.budget += int(value)
func whereyoufrom(value):
SimData.city_name = str(value)
diff --git a/scripts/ticker.gd b/scripts/ticker.gd
index 1c77100..01d9034 100644
--- a/scripts/ticker.gd
+++ b/scripts/ticker.gd
@@ -9,10 +9,12 @@ var news_keys = []
func _index_news():
var news = _load_news()
news_keys.clear()
+
for key in news:
news_keys.append(news[key])
- news_keys[rng.randi()%news_keys.size()] # Sbuffle Keys
+ randomize()
+ news_keys.shuffle()
func _load_news():
var file = File.new()
@@ -26,7 +28,7 @@ func _ready():
SimData.mayor_name = SimData.mayor_name.capitalize()
SimEvents.connect("send_alert", self, "_start_alert")
SimEvents.connect("resume_news", self, "_resume_ticker")
- _random_news("res://dialog/ticker.json")
+ _random_news("res://dialog/ticker/ticker.json")
func _process(delta):
if get_tree().paused:
@@ -34,19 +36,21 @@ func _process(delta):
func _start_alert(message):
SimData.is_alert = true
- news_file = "res://dialog/ticker_alerts.json"
+ news_file = "res://dialog/ticker/ticker_alerts.json"
ticker_text.text = news_keys[message].text
func _random_news(file):
news_file = file
+
+ rng.randomize()
_load_news()
_index_news()
- rng.randomize()
+
var max_mange = news_keys.size() - 1
var ticker_range = rng.randi_range(0, max_mange)
- var news = news_keys[ticker_range].text # Shuffle News
+ var news = news_keys[ticker_range].text
- if SimData.has_ctower or SimData.city_name == "Furtropolis" and "[outlet]" in news:
+ if SimData.has_ctower or SimData.city_name == "Furtropolis" or "Furville" and "[outlet]" in news:
# FNN = Furtropolis/Furry News Network
news = news.replace("[outlet]", "FNN")
elif "[outlet]" in news:
@@ -61,7 +65,7 @@ func _random_news(file):
ticker_text.text = news
func _resume_ticker():
- _random_news("res://dialog/ticker.json")
+ _random_news("res://dialog/ticker/ticker.json")
func _on_RotateNews_timeout():
- _random_news("res://dialog/ticker.json")
+ _random_news("res://dialog/ticker/ticker.json")
diff --git a/sprites/avatars/cindy.png b/sprites/avatars/cindy.png
new file mode 100644
index 0000000..99a24b5
Binary files /dev/null and b/sprites/avatars/cindy.png differ
diff --git a/sprites/avatars/cindy.png.import b/sprites/avatars/cindy.png.import
new file mode 100644
index 0000000..693f2be
--- /dev/null
+++ b/sprites/avatars/cindy.png.import
@@ -0,0 +1,34 @@
+[remap]
+
+importer="texture"
+type="StreamTexture"
+path="res://.import/cindy.png-9796569595eb0cae76e24ffc424e43d7.stex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://sprites/avatars/cindy.png"
+dest_files=[ "res://.import/cindy.png-9796569595eb0cae76e24ffc424e43d7.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
+stream=false
+size_limit=0
+detect_3d=true
+svg/scale=1.0
diff --git a/sprites/symbols/meet.svg b/sprites/symbols/meet.svg
new file mode 100644
index 0000000..40c8ef5
--- /dev/null
+++ b/sprites/symbols/meet.svg
@@ -0,0 +1,125 @@
+
+
diff --git a/sprites/symbols/meet.svg.import b/sprites/symbols/meet.svg.import
new file mode 100644
index 0000000..ce0e22b
--- /dev/null
+++ b/sprites/symbols/meet.svg.import
@@ -0,0 +1,34 @@
+[remap]
+
+importer="texture"
+type="StreamTexture"
+path="res://.import/meet.svg-01ad78e7fe219a3f705e2a6c758737df.stex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://sprites/symbols/meet.svg"
+dest_files=[ "res://.import/meet.svg-01ad78e7fe219a3f705e2a6c758737df.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
+stream=false
+size_limit=0
+detect_3d=true
+svg/scale=1.0
diff --git a/sprites/ui/pause.svg b/sprites/ui/pause.svg
new file mode 100644
index 0000000..10dda2f
--- /dev/null
+++ b/sprites/ui/pause.svg
@@ -0,0 +1,69 @@
+
+
diff --git a/sprites/ui/pause.svg.import b/sprites/ui/pause.svg.import
new file mode 100644
index 0000000..8b321eb
--- /dev/null
+++ b/sprites/ui/pause.svg.import
@@ -0,0 +1,34 @@
+[remap]
+
+importer="texture"
+type="StreamTexture"
+path="res://.import/pause.svg-57f433d5692457edf43461406cee36ab.stex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://sprites/ui/pause.svg"
+dest_files=[ "res://.import/pause.svg-57f433d5692457edf43461406cee36ab.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
+stream=false
+size_limit=0
+detect_3d=true
+svg/scale=1.0