mirror of
https://github.com/tonytins/citylimits.git
synced 2025-03-22 07:22:20 +00:00
Basic AI
- If a power plant is present, the zone animates. Just like the original. - Your budget also goes through the roof This is just a proof-of-concept right now, and will likely crash your machine if you leave it on too long.
This commit is contained in:
parent
5fa863114a
commit
239fa63a0c
9 changed files with 236 additions and 177 deletions
|
@ -1,7 +1,10 @@
|
||||||
[gd_scene load_steps=5 format=2]
|
[gd_scene load_steps=8 format=2]
|
||||||
|
|
||||||
[ext_resource path="res://scripts/power_station.gd" type="Script" id=1]
|
[ext_resource path="res://scripts/simtactics/turn_on.gd" type="Script" id=1]
|
||||||
[ext_resource path="res://assets/coal.png" type="Texture" id=2]
|
[ext_resource path="res://assets/coal.png" type="Texture" id=2]
|
||||||
|
[ext_resource path="res://addons/beehave/nodes/composites/sequence.gd" type="Script" id=3]
|
||||||
|
[ext_resource path="res://scripts/simtactics/zone.gd" type="Script" id=4]
|
||||||
|
[ext_resource path="res://addons/beehave/nodes/beehave_root.gd" type="Script" id=6]
|
||||||
|
|
||||||
[sub_resource type="RectangleShape2D" id=1]
|
[sub_resource type="RectangleShape2D" id=1]
|
||||||
extents = Vector2( 32.2297, 31.8602 )
|
extents = Vector2( 32.2297, 31.8602 )
|
||||||
|
@ -26,9 +29,19 @@ tracks/0/keys = {
|
||||||
|
|
||||||
[node name="PowerStation" type="KinematicBody2D"]
|
[node name="PowerStation" type="KinematicBody2D"]
|
||||||
input_pickable = true
|
input_pickable = true
|
||||||
|
|
||||||
|
[node name="BeehaveRoot" type="Node" parent="."]
|
||||||
|
script = ExtResource( 6 )
|
||||||
|
|
||||||
|
[node name="SequenceComposite" type="Node" parent="BeehaveRoot"]
|
||||||
|
script = ExtResource( 3 )
|
||||||
|
|
||||||
|
[node name="TurnOn" type="Node" parent="BeehaveRoot/SequenceComposite"]
|
||||||
script = ExtResource( 1 )
|
script = ExtResource( 1 )
|
||||||
income = 0
|
|
||||||
expense = 250
|
[node name="ActionLeaf" type="Node" parent="BeehaveRoot/SequenceComposite"]
|
||||||
|
script = ExtResource( 4 )
|
||||||
|
zone_texture = "res://assets/res_houses.png"
|
||||||
|
|
||||||
[node name="Quarters" type="Timer" parent="."]
|
[node name="Quarters" type="Timer" parent="."]
|
||||||
wait_time = 10.0
|
wait_time = 10.0
|
||||||
|
@ -44,5 +57,3 @@ playback_speed = 5.0
|
||||||
anims/Animante = SubResource( 2 )
|
anims/Animante = SubResource( 2 )
|
||||||
|
|
||||||
[node name="RayCast2D" type="RayCast2D" parent="."]
|
[node name="RayCast2D" type="RayCast2D" parent="."]
|
||||||
|
|
||||||
[connection signal="timeout" from="Quarters" to="." method="_on_Quarters_timeout"]
|
|
||||||
|
|
|
@ -1,14 +1,17 @@
|
||||||
[gd_scene load_steps=5 format=2]
|
[gd_scene load_steps=9 format=2]
|
||||||
|
|
||||||
[ext_resource path="res://scripts/zone.gd" type="Script" id=1]
|
[ext_resource path="res://scripts/zone.gd" type="Script" id=1]
|
||||||
[ext_resource path="res://assets/res_zones.png" type="Texture" id=2]
|
[ext_resource path="res://assets/res_zones.png" type="Texture" id=2]
|
||||||
|
[ext_resource path="res://scripts/simtactics/has_power.gd" type="Script" id=4]
|
||||||
|
[ext_resource path="res://addons/beehave/nodes/beehave_root.gd" type="Script" id=5]
|
||||||
|
[ext_resource path="res://addons/beehave/nodes/composites/selector.gd" type="Script" id=7]
|
||||||
|
|
||||||
[sub_resource type="Animation" id=2]
|
[sub_resource type="Animation" id=2]
|
||||||
resource_name = "Animante"
|
resource_name = "Animante"
|
||||||
length = 5.0
|
length = 5.0
|
||||||
step = 1.0
|
step = 1.0
|
||||||
tracks/0/type = "value"
|
tracks/0/type = "value"
|
||||||
tracks/0/path = NodePath("../Sprite:frame")
|
tracks/0/path = NodePath("Sprite:frame")
|
||||||
tracks/0/interp = 1
|
tracks/0/interp = 1
|
||||||
tracks/0/loop_wrap = true
|
tracks/0/loop_wrap = true
|
||||||
tracks/0/imported = false
|
tracks/0/imported = false
|
||||||
|
@ -17,7 +20,22 @@ tracks/0/keys = {
|
||||||
"times": PoolRealArray( 0, 1, 2, 3, 4 ),
|
"times": PoolRealArray( 0, 1, 2, 3, 4 ),
|
||||||
"transitions": PoolRealArray( 1, 1, 1, 1, 1 ),
|
"transitions": PoolRealArray( 1, 1, 1, 1, 1 ),
|
||||||
"update": 1,
|
"update": 1,
|
||||||
"values": [ 1, 2, 3, 4, 6 ]
|
"values": [ 0, 1, 2, 3, 4 ]
|
||||||
|
}
|
||||||
|
|
||||||
|
[sub_resource type="Animation" id=4]
|
||||||
|
length = 0.001
|
||||||
|
tracks/0/type = "value"
|
||||||
|
tracks/0/path = NodePath("Sprite:frame")
|
||||||
|
tracks/0/interp = 1
|
||||||
|
tracks/0/loop_wrap = true
|
||||||
|
tracks/0/imported = false
|
||||||
|
tracks/0/enabled = true
|
||||||
|
tracks/0/keys = {
|
||||||
|
"times": PoolRealArray( 0 ),
|
||||||
|
"transitions": PoolRealArray( 1 ),
|
||||||
|
"update": 0,
|
||||||
|
"values": [ 1 ]
|
||||||
}
|
}
|
||||||
|
|
||||||
[sub_resource type="CircleShape2D" id=3]
|
[sub_resource type="CircleShape2D" id=3]
|
||||||
|
@ -26,15 +44,26 @@ radius = 34.955
|
||||||
[node name="Zone" type="Area2D"]
|
[node name="Zone" type="Area2D"]
|
||||||
script = ExtResource( 1 )
|
script = ExtResource( 1 )
|
||||||
|
|
||||||
[node name="Quarters" type="Timer" parent="."]
|
|
||||||
wait_time = 10.0
|
|
||||||
|
|
||||||
[node name="Sprite" type="Sprite" parent="."]
|
[node name="Sprite" type="Sprite" parent="."]
|
||||||
texture = ExtResource( 2 )
|
texture = ExtResource( 2 )
|
||||||
vframes = 19
|
vframes = 19
|
||||||
|
frame = 1
|
||||||
|
|
||||||
|
[node name="BeehaveRoot" type="Node" parent="."]
|
||||||
|
script = ExtResource( 5 )
|
||||||
|
|
||||||
|
[node name="SelectorComposite" type="Node" parent="BeehaveRoot"]
|
||||||
|
script = ExtResource( 7 )
|
||||||
|
|
||||||
|
[node name="HasPower" type="Node" parent="BeehaveRoot/SelectorComposite"]
|
||||||
|
script = ExtResource( 4 )
|
||||||
|
|
||||||
|
[node name="Quarters" type="Timer" parent="."]
|
||||||
|
wait_time = 10.0
|
||||||
|
|
||||||
[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
|
[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
|
||||||
anims/Animante = SubResource( 2 )
|
anims/Animante = SubResource( 2 )
|
||||||
|
anims/RESET = SubResource( 4 )
|
||||||
|
|
||||||
[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
|
[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
|
||||||
shape = SubResource( 3 )
|
shape = SubResource( 3 )
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
[gd_scene load_steps=45 format=2]
|
[gd_scene load_steps=50 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://addons/beehave/nodes/composites/selector.gd" type="Script" 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,16 +45,22 @@
|
||||||
[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]
|
[ext_resource path="res://scripts/ticker.gd" type="Script" id=45]
|
||||||
|
[ext_resource path="res://addons/beehave/nodes/beehave_root.gd" type="Script" id=46]
|
||||||
|
[ext_resource path="res://scenes/deparments/CoalPlant.tscn" type="PackedScene" id=47]
|
||||||
|
[ext_resource path="res://addons/beehave/nodes/beehave_node.gd" type="Script" id=48]
|
||||||
|
[ext_resource path="res://scenes/deparments/Zone.tscn" type="PackedScene" id=49]
|
||||||
|
|
||||||
[node name="Game" type="Node2D"]
|
[node name="Game" type="Node2D"]
|
||||||
script = ExtResource( 20 )
|
script = ExtResource( 20 )
|
||||||
|
|
||||||
[node name="DayCycle" type="Timer" parent="."]
|
[node name="BeehaveRoot" type="Node" parent="."]
|
||||||
wait_time = 12.0
|
script = ExtResource( 46 )
|
||||||
autostart = true
|
|
||||||
__meta__ = {
|
[node name="DayCycle" type="Node" parent="BeehaveRoot"]
|
||||||
"_editor_description_": "Calculation based on: https://gaming.stackexchange.com/questions/110529/real-world-time-in-a-simcity-day-on-various-speeds"
|
script = ExtResource( 2 )
|
||||||
}
|
|
||||||
|
[node name="BeehaveNode" type="Node" parent="BeehaveRoot/DayCycle"]
|
||||||
|
script = ExtResource( 48 )
|
||||||
|
|
||||||
[node name="MapOne" parent="." instance=ExtResource( 1 )]
|
[node name="MapOne" parent="." instance=ExtResource( 1 )]
|
||||||
|
|
||||||
|
@ -294,10 +301,6 @@ __meta__ = {
|
||||||
"_edit_use_anchors_": true
|
"_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"]
|
[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
|
||||||
|
@ -466,6 +469,8 @@ __meta__ = {
|
||||||
"_edit_use_anchors_": true
|
"_edit_use_anchors_": true
|
||||||
}
|
}
|
||||||
|
|
||||||
[connection signal="timeout" from="DayCycle" to="." method="_on_DayCycle_timeout"]
|
[node name="Zone" parent="." instance=ExtResource( 49 )]
|
||||||
[connection signal="timeout" from="Controls/Control Panel/Status/RotateNews" to="Controls/Control Panel" method="_on_RotateNews_timeout"]
|
position = Vector2( 650, 351 )
|
||||||
[connection signal="pressed" from="Controls/Control Panel/Status/NewsBtn" to="Controls/Control Panel" method="_on_NewsBtn_pressed"]
|
|
||||||
|
[node name="PowerStation" parent="." instance=ExtResource( 47 )]
|
||||||
|
position = Vector2( 758, 277 )
|
||||||
|
|
|
@ -1,12 +1,5 @@
|
||||||
extends Area2D
|
extends Area2D
|
||||||
|
|
||||||
signal grabbed
|
|
||||||
signal has_power
|
|
||||||
|
|
||||||
export var cost: int = 10000
|
|
||||||
export var income: int = 100
|
|
||||||
export var expense: int = 0
|
|
||||||
|
|
||||||
onready var zone = $Sprite
|
onready var zone = $Sprite
|
||||||
onready var quarters = $Quarters
|
onready var quarters = $Quarters
|
||||||
onready var animator = $AnimationPlayer
|
onready var animator = $AnimationPlayer
|
||||||
|
@ -15,48 +8,32 @@ var can_grab = false
|
||||||
var grabbed_offset = Vector2()
|
var grabbed_offset = Vector2()
|
||||||
|
|
||||||
func _ready():
|
func _ready():
|
||||||
SimEvents.connect("budget", self, "_get_budget")
|
zone.frame = 0
|
||||||
connect("grabbed", self, "_grab_zone")
|
|
||||||
|
#func _drag_drop(event):
|
||||||
|
# if event is InputEventMouseButton and can_grab:
|
||||||
|
# # Substract from the player's budget and disable grabbing
|
||||||
|
# if SimData.budget >= cost:
|
||||||
|
# SimData.budget -= cost
|
||||||
|
# can_grab = false
|
||||||
|
# grabbed_offset = position - get_global_mouse_position()
|
||||||
|
|
||||||
func _drag_drop(event):
|
#func _input(event):
|
||||||
if event is InputEventMouseButton and can_grab:
|
# _drag_drop(event)
|
||||||
# Substract from the player's budget and disable grabbing
|
|
||||||
if SimData.budget >= cost:
|
|
||||||
SimData.budget -= cost
|
|
||||||
can_grab = false
|
|
||||||
grabbed_offset = position - get_global_mouse_position()
|
|
||||||
|
|
||||||
func _input(event):
|
|
||||||
_drag_drop(event)
|
|
||||||
|
|
||||||
func _process(delta):
|
func _process(delta):
|
||||||
if can_grab:
|
if SimData.has_power == true:
|
||||||
position = get_global_mouse_position() + grabbed_offset
|
|
||||||
|
|
||||||
func _animante_sprite(animante: bool = true):
|
|
||||||
if zone.hframes > 1 or zone.vframes > 1 and animante:
|
|
||||||
animator.play("Animante")
|
animator.play("Animante")
|
||||||
else:
|
else:
|
||||||
animator.stop()
|
animator.stop()
|
||||||
|
# if can_grab:
|
||||||
|
# position = get_global_mouse_position() + grabbed_offset
|
||||||
|
|
||||||
|
#func _animante_sprite(animante: bool = true):
|
||||||
|
# if zone.hframes > 1 or zone.vframes > 1 and animante:
|
||||||
|
# animator.play("Animante")
|
||||||
|
# else:
|
||||||
|
# animator.stop()
|
||||||
|
|
||||||
func _grab_zone():
|
#func _grab_zone():
|
||||||
can_grab = true
|
# can_grab = true
|
||||||
|
|
||||||
func _get_budget():
|
|
||||||
if SimData.budget >= expense and SimData.has_power:
|
|
||||||
SimData.budget -= expense
|
|
||||||
SimData.expenses = expense
|
|
||||||
|
|
||||||
if SimData.has_power:
|
|
||||||
var total_income = SimData.res_tax * income
|
|
||||||
SimData.budget += total_income
|
|
||||||
SimData.res_income = total_income
|
|
||||||
|
|
||||||
func _on_Zone_body_entered(body: Node):
|
|
||||||
if SimData.has_power and can_grab == false:
|
|
||||||
quarters.start()
|
|
||||||
_animante_sprite()
|
|
||||||
|
|
||||||
func _on_Zone_body_exited(body: Node):
|
|
||||||
quarters.stop()
|
|
||||||
_animante_sprite(false)
|
|
||||||
|
|
|
@ -17,6 +17,9 @@ var current_power_cap: int
|
||||||
var prev_power_cap: int
|
var prev_power_cap: int
|
||||||
var has_power: bool
|
var has_power: bool
|
||||||
|
|
||||||
|
var res_tax: int = 5
|
||||||
|
var res_income: int
|
||||||
|
|
||||||
var ticker_files: Array = [
|
var ticker_files: Array = [
|
||||||
"adverts.json",
|
"adverts.json",
|
||||||
"sammy.json"
|
"sammy.json"
|
||||||
|
|
20
scripts/simtactics/has_power.gd
Normal file
20
scripts/simtactics/has_power.gd
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
extends ConditionLeaf
|
||||||
|
|
||||||
|
export var cost: int = 10000
|
||||||
|
export var income: int = 100
|
||||||
|
export var expense: int = 0
|
||||||
|
|
||||||
|
func tick(actor, blackboard):
|
||||||
|
if SimData.has_power:
|
||||||
|
if SimData.budget >= expense:
|
||||||
|
SimData.budget -= expense
|
||||||
|
SimData.expenses = expense
|
||||||
|
|
||||||
|
if SimData.has_power:
|
||||||
|
var total_income = SimData.res_tax * income
|
||||||
|
SimData.budget += total_income
|
||||||
|
SimData.res_income = total_income
|
||||||
|
|
||||||
|
return SUCCESS
|
||||||
|
|
||||||
|
return FAILURE
|
5
scripts/simtactics/turn_on.gd
Normal file
5
scripts/simtactics/turn_on.gd
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
extends ConditionLeaf
|
||||||
|
|
||||||
|
func tick(actor, blackboard):
|
||||||
|
SimData.has_power = true
|
||||||
|
return RUNNING
|
18
scripts/simtactics/zone.gd
Normal file
18
scripts/simtactics/zone.gd
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
extends ConditionLeaf
|
||||||
|
|
||||||
|
export var cost: int = 10000
|
||||||
|
export var income: int = 100
|
||||||
|
export var expense: int = 0
|
||||||
|
|
||||||
|
func tick(actor, blackboard):
|
||||||
|
if SimData.has_power:
|
||||||
|
if SimData.budget >= expense:
|
||||||
|
SimData.budget -= expense
|
||||||
|
SimData.expenses = expense
|
||||||
|
|
||||||
|
if SimData.has_power:
|
||||||
|
var total_income = SimData.res_tax * income
|
||||||
|
SimData.budget += total_income
|
||||||
|
SimData.res_income = total_income
|
||||||
|
|
||||||
|
return RUNNING
|
|
@ -1,42 +1,42 @@
|
||||||
extends Control
|
extends Control
|
||||||
|
|
||||||
const TICKER_PATH = "res://json/ticker/"
|
#const TICKER_PATH = "res://json/ticker/"
|
||||||
const FNN_LOGO = "res://assets/ticker/fnn.png"
|
#const FNN_LOGO = "res://assets/ticker/fnn.png"
|
||||||
const CONFIG_FILE = "config.json"
|
#const CONFIG_FILE = "config.json"
|
||||||
|
#
|
||||||
onready var ticker_text = $Status/NewsBtn
|
#onready var ticker_text = $Status/NewsBtn
|
||||||
onready var ticker_box = $Windows/NewsWindow/News
|
#onready var ticker_box = $Windows/NewsWindow/News
|
||||||
onready var ticker_window = $Windows/NewsWindow
|
#onready var ticker_window = $Windows/NewsWindow
|
||||||
|
#
|
||||||
var news_file: String = ""
|
#var news_file: String = ""
|
||||||
var rng = RandomNumberGenerator.new()
|
#var rng = RandomNumberGenerator.new()
|
||||||
var all_news: Array = []
|
#var all_news: Array = []
|
||||||
var speices: Array = [
|
#var speices: Array = [
|
||||||
"Cat",
|
# "Cat",
|
||||||
"Fennec",
|
# "Fennec",
|
||||||
"Fox"
|
# "Fox"
|
||||||
]
|
#]
|
||||||
|
#
|
||||||
var json_files: Array = []
|
#var json_files: Array = []
|
||||||
|
#
|
||||||
func _load_json():
|
#func _load_json():
|
||||||
var file = File.new()
|
# var file = File.new()
|
||||||
if file.file_exists(news_file):
|
# if file.file_exists(news_file):
|
||||||
file.open(news_file, file.READ)
|
# file.open(news_file, file.READ)
|
||||||
var result = parse_json(file.get_as_text())
|
# var result = parse_json(file.get_as_text())
|
||||||
return result
|
# return result
|
||||||
|
#
|
||||||
func _index_news():
|
#func _index_news():
|
||||||
var news = _load_json()
|
# var news = _load_json()
|
||||||
all_news.clear()
|
# all_news.clear()
|
||||||
all_news = news["ticker"]
|
# all_news = news["ticker"]
|
||||||
randomize()
|
# randomize()
|
||||||
all_news.shuffle()
|
# all_news.shuffle()
|
||||||
|
#
|
||||||
func _ready():
|
#func _ready():
|
||||||
ticker_window.window_title = JsonHelper.key_value(TICKER_PATH, CONFIG_FILE, "outlet")
|
# ticker_window.window_title = JsonHelper.key_value(TICKER_PATH, CONFIG_FILE, "outlet")
|
||||||
|
#
|
||||||
_randomize_news(json_files)
|
# _randomize_news(json_files)
|
||||||
|
|
||||||
#func _process(delta):
|
#func _process(delta):
|
||||||
# var prev_json_Files = json_files
|
# var prev_json_Files = json_files
|
||||||
|
@ -60,73 +60,64 @@ func _ready():
|
||||||
# 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 _start_alert(message):
|
#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
|
||||||
|
## news_file = str(TICKER_PATH + "ticker_alerts.json")
|
||||||
|
## ticker_text.add_item(all_news)
|
||||||
|
#
|
||||||
|
# pass
|
||||||
|
#
|
||||||
|
#func _randomize_news(files: Array):
|
||||||
|
# if all_news == null:
|
||||||
|
# json_files = JsonHelper.key_value(TICKER_PATH, CONFIG_FILE, "ticker_files")
|
||||||
|
#
|
||||||
|
# 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 "[competing_outlet]" in news_text:
|
||||||
|
# news_text = news_text.replace("[competing_outlet]", JsonHelper.key_value(TICKER_PATH, CONFIG_FILE, "competing_outlet"))
|
||||||
|
#
|
||||||
|
# if "[outlet]" in news_text:
|
||||||
|
# news_text = news_text.replace("[outlet]", JsonHelper.key_value(TICKER_PATH, CONFIG_FILE, "outlet"))
|
||||||
|
#
|
||||||
|
# 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)
|
||||||
|
#
|
||||||
|
# # Prevent stack overflaw
|
||||||
|
# if ticker_box.items.size() > 10:
|
||||||
|
# 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)
|
||||||
#
|
#
|
||||||
# SimData.on_alert = true
|
|
||||||
# news_file = str(TICKER_PATH + "ticker_alerts.json")
|
|
||||||
# ticker_text.add_item(all_news)
|
|
||||||
|
|
||||||
pass
|
|
||||||
|
|
||||||
func _randomize_news(files: Array):
|
|
||||||
if all_news == null:
|
|
||||||
json_files = JsonHelper.key_value(TICKER_PATH, CONFIG_FILE, "ticker_files")
|
|
||||||
|
|
||||||
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 "[competing_outlet]" in news_text:
|
|
||||||
news_text = news_text.replace("[competing_outlet]", JsonHelper.key_value(TICKER_PATH, CONFIG_FILE, "competing_outlet"))
|
|
||||||
|
|
||||||
if "[outlet]" in news_text:
|
|
||||||
news_text = news_text.replace("[outlet]", JsonHelper.key_value(TICKER_PATH, CONFIG_FILE, "outlet"))
|
|
||||||
|
|
||||||
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)
|
|
||||||
|
|
||||||
# Prevent stack overflaw
|
|
||||||
if ticker_box.items.size() > 10:
|
|
||||||
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)
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue