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 @@ + +image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 @@ + + + + + + + + image/svg+xml + + + + + + + + + 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