Slightly rewrote the news ticker architecture

- The news ticker is now a stealth button that opens a window.
- News window now has brandings for FNN and Pawprint Press.
- Ticker now provides extra lore by me if is_caseyverse.txt is present.
- Moved the news ticker functions to the window source, for now.
- Added .gdignore
This commit is contained in:
Tony Bark 2022-08-08 03:53:39 -04:00
parent aed8b266b8
commit f8a0f97767
17 changed files with 670 additions and 157 deletions

2
.gdignore Normal file
View file

@ -0,0 +1,2 @@
**.md
screenshot.png

35
assets/fnn.png.import Normal file
View file

@ -0,0 +1,35 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/fnn.png-4b0621cc5794588bb47068090a8f4966.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/fnn.png"
dest_files=[ "res://.import/fnn.png-4b0621cc5794588bb47068090a8f4966.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

BIN
assets/ticker/fnn.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

View file

@ -0,0 +1,35 @@
[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

View file

@ -0,0 +1,165 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="76.225838mm"
height="10.530579mm"
viewBox="0 0 76.22584 10.530579"
version="1.1"
id="svg8"
inkscape:version="1.0.2 (e86c8708, 2021-01-15)"
sodipodi:docname="pawprint-logo.svg"
inkscape:export-filename="tpaw-black.png"
inkscape:export-xdpi="25.146"
inkscape:export-ydpi="25.146">
<defs
id="defs2" />
<sodipodi:namedview
id="base"
pagecolor="#000000"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:zoom="2.4881314"
inkscape:cx="58.047217"
inkscape:cy="38.038055"
inkscape:document-units="mm"
inkscape:current-layer="layer1"
showgrid="false"
showguides="true"
inkscape:pagecheckerboard="true"
inkscape:window-width="1920"
inkscape:window-height="987"
inkscape:window-x="0"
inkscape:window-y="23"
inkscape:window-maximized="0"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0"
inkscape:document-rotation="0" />
<metadata
id="metadata5">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-189.42537,318.35553)">
<g
id="g4705"
style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2.46132;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(0.11890803,-7.945104e-4,0.00668622,0.11984867,162.3449,-378.03018)">
<path
style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2.46132;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 592.49553,524.1496 c 0,7.61279 -4.71627,9.2516 -10.98875,11.23585 -6.59099,2.085 -15.47882,-5.24473 -15.47882,-12.85752 0,-7.6128 7.94255,-17.95418 14.53356,-17.95418 6.59097,0 11.93401,11.96306 11.93401,19.57585 z"
id="path3950"
inkscape:connector-curvature="0"
sodipodi:nodetypes="sssss" />
<path
style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2.46132;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 568.86377,547.48385 c 0,7.61279 -4.71626,9.25159 -10.98876,11.23584 -6.59099,2.08499 -15.4788,-5.24473 -15.4788,-12.85752 0,-7.61279 7.94254,-17.95418 14.53353,-17.95418 6.59098,0 11.93403,11.96307 11.93403,19.57586 z"
id="path3950-8"
inkscape:connector-curvature="0"
sodipodi:nodetypes="sssss" />
<path
style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2.46132;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 622.03523,521.53715 c 0,7.6128 -4.71628,9.25161 -10.98878,11.23584 -6.59098,2.085 -15.4788,-5.24472 -15.4788,-12.85751 0,-7.61279 7.94254,-17.95418 14.53354,-17.95418 6.59098,0 11.93404,11.96306 11.93404,19.57585 z"
id="path3950-8-8"
inkscape:connector-curvature="0"
sodipodi:nodetypes="sssss" />
<path
style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2.46132;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 642.59487,546.09385 c 0,7.61278 -4.71627,9.25159 -10.98877,11.23584 -6.59099,2.085 -15.4788,-5.24472 -15.4788,-12.85752 0,-7.61278 7.94254,-17.95417 14.53354,-17.95417 6.59097,0 11.93403,11.96306 11.93403,19.57585 z"
id="path3950-8-8-2"
inkscape:connector-curvature="0"
sodipodi:nodetypes="sssss" />
<path
style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2.46132;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 591.14675,538.99253 c -10.43858,0.10692 -12.43121,1.47616 -20.44817,17.72107 -9.86692,19.99352 9.60144,26.9789 19.14105,27.0626 l 6.08291,0.0134 c 9.53076,-0.0767 30.15822,-7.07228 20.28625,-27.07603 -8.01696,-16.24492 -10.23952,-17.61416 -20.6781,-17.72107 -1.63517,-0.0421 -2.96692,-0.031 -4.38394,0 z"
id="path3806"
inkscape:connector-curvature="0"
sodipodi:nodetypes="csccsccc" />
</g>
<g
id="g2049"
transform="matrix(0.67677022,0,0,0.68248465,63.734792,-101.58923)">
<path
d="m 189.34585,-309.79459 v 2.72025 q 0,0.79582 0.094,1.00563 0.10128,0.20257 0.34726,0.32556 0.25322,0.12299 0.91881,0.12299 v 0.26768 h -4.98472 v -0.26768 q 0.68007,0 0.91881,-0.12299 0.24598,-0.13023 0.34003,-0.3328 0.10129,-0.20257 0.10129,-0.99839 v -6.36655 q 0,-0.79582 -0.10129,-0.99839 -0.094,-0.20981 -0.34003,-0.3328 -0.24598,-0.12299 -0.91881,-0.12299 v -0.26768 h 4.27572 q 2.11254,0 3.03135,0.75241 0.91881,0.75241 0.91881,1.88102 0,0.95499 -0.59325,1.63505 -0.59325,0.68006 -1.63505,0.92604 -0.70177,0.17364 -2.37298,0.17364 z m 0,-4.80386 v 4.23955 q 0.23874,0.0145 0.36173,0.0145 0.88264,0 1.36013,-0.5209 0.47749,-0.52814 0.47749,-1.62781 0,-1.09245 -0.47749,-1.59888 -0.47749,-0.50643 -1.42524,-0.50643 z"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:14.8167px;line-height:1.25;font-family:'Times New Roman';-inkscape-font-specification:'Times New Roman, Bold';fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.264583"
id="path2001" />
<path
d="m 198.63522,-306.35087 q -1.23714,1.09244 -2.22106,1.09244 -0.57877,0 -0.96221,-0.3762 -0.38344,-0.38344 -0.38344,-0.95498 0,-0.77412 0.66559,-1.38907 0.66559,-0.62219 2.90112,-1.64952 v -0.68006 q 0,-0.76688 -0.0868,-0.96222 -0.0796,-0.20257 -0.31109,-0.34726 -0.23151,-0.15193 -0.5209,-0.15193 -0.47025,0 -0.77411,0.2098 -0.1881,0.13023 -0.1881,0.30386 0,0.15193 0.20257,0.37621 0.27492,0.31109 0.27492,0.60048 0,0.3545 -0.26769,0.60772 -0.26045,0.24598 -0.6873,0.24598 -0.45578,0 -0.76688,-0.27492 -0.30385,-0.27492 -0.30385,-0.64389 0,-0.5209 0.41237,-0.99116 0.41238,-0.47749 1.15032,-0.73071 0.73795,-0.25321 1.53376,-0.25321 0.96222,0 1.5193,0.41238 0.5643,0.40514 0.7307,0.88263 0.10129,0.30386 0.10129,1.3963 v 2.62621 q 0,0.46302 0.0362,0.58601 0.0362,0.11575 0.10852,0.17363 0.0724,0.0579 0.1664,0.0579 0.1881,0 0.38344,-0.26768 l 0.21704,0.17363 q -0.36173,0.53537 -0.75241,0.78135 -0.38344,0.23874 -0.8754,0.23874 -0.57878,0 -0.90434,-0.26768 -0.32556,-0.27492 -0.39791,-0.82476 z m 0,-0.52813 v -2.26447 q -0.8754,0.51367 -1.30225,1.09968 -0.28215,0.39067 -0.28215,0.78858 0,0.3328 0.23874,0.58601 0.18087,0.19534 0.50643,0.19534 0.36174,0 0.83923,-0.40514 z"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:14.8167px;line-height:1.25;font-family:'Times New Roman';-inkscape-font-specification:'Times New Roman, Bold';fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.264583"
id="path2003" />
<path
d="m 209.01704,-305.14991 -1.85209,-4.96301 -1.81591,4.96301 h -0.37621 l -1.80144,-4.90513 q -0.40515,-1.12139 -0.6873,-1.46142 -0.18087,-0.23151 -0.54984,-0.33279 v -0.26769 h 3.41479 v 0.26769 q -0.34727,0 -0.47749,0.10128 -0.13023,0.10129 -0.13023,0.23151 0,0.12299 0.23151,0.73794 l 0.99116,2.64068 0.95498,-2.64068 -0.0723,-0.17363 q -0.21705,-0.5426 -0.38344,-0.6873 -0.15917,-0.15193 -0.4992,-0.2098 v -0.26769 h 3.46543 v 0.26769 q -0.40515,0.0217 -0.51367,0.11575 -0.10852,0.0868 -0.10852,0.25322 0,0.15916 0.20981,0.70176 l 0.95498,2.64068 0.86817,-2.43087 q 0.1881,-0.5209 0.1881,-0.709 0,-0.28216 -0.13746,-0.41238 -0.13746,-0.13022 -0.53537,-0.15916 v -0.26769 h 2.00402 v 0.26769 q -0.3328,0.0434 -0.52814,0.23874 -0.19533,0.1881 -0.50643,1.08521 l -1.89549,5.37539 z"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:14.8167px;line-height:1.25;font-family:'Times New Roman';-inkscape-font-specification:'Times New Roman, Bold';fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.264583"
id="path2005" />
<path
d="m 215.63681,-306.03978 v 2.51769 q 0,0.52089 0.0796,0.709 0.0868,0.1881 0.26045,0.27492 0.17363,0.0868 0.68006,0.0868 v 0.26769 h -3.8561 v -0.26769 q 0.44855,-0.0145 0.66559,-0.25321 0.14469,-0.1664 0.14469,-0.86093 v -7.14067 q 0,-0.71624 -0.16639,-0.91157 -0.1664,-0.20257 -0.64389,-0.23151 v -0.26769 h 2.83601 v 0.88987 q 0.3545,-0.5209 0.72347,-0.75241 0.52813,-0.34003 1.15032,-0.34003 0.74517,0 1.35289,0.47026 0.61495,0.47025 0.93328,1.30225 0.31833,0.82475 0.31833,1.77974 0,1.02733 -0.3328,1.88102 -0.32556,0.84646 -0.95498,1.29502 -0.62219,0.44131 -1.38907,0.44131 -0.55707,0 -1.0418,-0.24598 -0.36174,-0.1881 -0.75964,-0.64389 z m 0,-0.7307 q 0.62218,0.88263 1.33118,0.88263 0.39068,0 0.64389,-0.41238 0.37621,-0.60771 0.37621,-2.31511 0,-1.7508 -0.41238,-2.39469 -0.27492,-0.42684 -0.73794,-0.42684 -0.73071,0 -1.20096,1.05626 z"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:14.8167px;line-height:1.25;font-family:'Times New Roman';-inkscape-font-specification:'Times New Roman, Bold';fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.264583"
id="path2007" />
<path
d="m 224.07249,-312.11694 v 1.53376 q 0.67282,-1.04903 1.17925,-1.38906 0.50643,-0.34727 0.97669,-0.34727 0.40515,0 0.64389,0.25321 0.24598,0.24599 0.24598,0.70177 0,0.48473 -0.23874,0.75241 -0.23152,0.26769 -0.56431,0.26769 -0.38344,0 -0.6656,-0.24598 -0.28215,-0.24598 -0.33279,-0.27492 -0.0724,-0.0434 -0.1664,-0.0434 -0.20981,0 -0.39791,0.15916 -0.29662,0.24598 -0.44855,0.70177 -0.23151,0.70177 -0.23151,1.54823 v 1.55546 l 0.007,0.40515 q 0,0.41238 0.0506,0.52813 0.0868,0.19534 0.25322,0.28939 0.17363,0.0868 0.57878,0.10852 v 0.26045 h -3.65354 v -0.26045 q 0.44132,-0.0362 0.59325,-0.23874 0.15916,-0.20981 0.15916,-1.09245 v -3.74034 q 0,-0.57878 -0.0579,-0.73795 -0.0724,-0.20257 -0.20981,-0.29662 -0.13746,-0.0941 -0.48473,-0.13022 v -0.26769 z"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:14.8167px;line-height:1.25;font-family:'Times New Roman';-inkscape-font-specification:'Times New Roman, Bold';fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.264583"
id="path2009" />
<path
d="m 229.46235,-315.39426 q 0.47026,0 0.79582,0.33279 0.32556,0.32556 0.32556,0.78859 0,0.46302 -0.3328,0.78858 -0.32556,0.32556 -0.78858,0.32556 -0.46302,0 -0.78858,-0.32556 -0.32557,-0.32556 -0.32557,-0.78858 0,-0.46303 0.32557,-0.78859 0.32556,-0.33279 0.78858,-0.33279 z m 1.01286,3.27732 v 5.36093 q 0,0.71623 0.1664,0.91881 0.1664,0.19533 0.65112,0.22427 v 0.26045 h -3.65353 v -0.26045 q 0.44855,-0.0145 0.66559,-0.26045 0.1447,-0.1664 0.1447,-0.88263 v -3.95016 q 0,-0.71624 -0.1664,-0.91157 -0.1664,-0.20257 -0.64389,-0.23151 v -0.26769 z"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:14.8167px;line-height:1.25;font-family:'Times New Roman';-inkscape-font-specification:'Times New Roman, Bold';fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.264583"
id="path2011" />
<path
d="m 234.70752,-312.11694 v 0.8754 q 0.5209,-0.56431 0.99839,-0.81752 0.47749,-0.26045 1.02733,-0.26045 0.65836,0 1.09244,0.36897 0.43409,0.36174 0.57878,0.90434 0.11576,0.41238 0.11576,1.5844 v 2.63344 q 0,0.78135 0.13746,0.97669 0.14469,0.1881 0.59324,0.23874 v 0.26045 h -3.42202 v -0.26045 q 0.38344,-0.0506 0.54984,-0.31833 0.11576,-0.18086 0.11576,-0.8971 v -3.00964 q 0,-0.83199 -0.0651,-1.04904 -0.0651,-0.21704 -0.22427,-0.33279 -0.15193,-0.12299 -0.34003,-0.12299 -0.62219,0 -1.15756,0.88987 v 3.62459 q 0,0.75965 0.13746,0.96222 0.1447,0.20257 0.52814,0.25321 v 0.26045 h -3.42203 v -0.26045 q 0.42685,-0.0434 0.60772,-0.27492 0.12299,-0.15916 0.12299,-0.94051 v -3.81993 q 0,-0.76688 -0.14469,-0.95498 -0.13746,-0.18811 -0.58602,-0.24598 v -0.26769 z"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:14.8167px;line-height:1.25;font-family:'Times New Roman';-inkscape-font-specification:'Times New Roman, Bold';fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.264583"
id="path2013" />
<path
d="m 242.87551,-314.59121 v 2.47427 h 1.60611 v 0.71624 h -1.60611 v 4.17443 q 0,0.58601 0.0507,0.75965 0.0579,0.16639 0.19533,0.27491 0.13746,0.10129 0.25322,0.10129 0.47026,0 0.88987,-0.71624 l 0.21704,0.15917 q -0.58601,1.38906 -1.90273,1.38906 -0.64389,0 -1.09244,-0.3545 -0.44132,-0.36173 -0.56431,-0.80305 -0.0724,-0.24598 -0.0724,-1.33119 v -3.65353 h -0.88263 v -0.25322 q 0.91157,-0.64389 1.54823,-1.35289 0.64389,-0.709 1.12138,-1.5844 z"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:14.8167px;line-height:1.25;font-family:'Times New Roman';-inkscape-font-specification:'Times New Roman, Bold';fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.264583"
id="path2015" />
</g>
<g
id="g2056"
transform="matrix(0.67677022,0,0,0.68248465,55.236042,-101.58923)">
<path
d="m 281.97916,-309.79459 v 2.72025 q 0,0.79582 0.0941,1.00563 0.10129,0.20257 0.34727,0.32556 0.25321,0.12299 0.91881,0.12299 v 0.26768 h -4.98472 v -0.26768 q 0.68006,0 0.91881,-0.12299 0.24598,-0.13023 0.34003,-0.3328 0.10129,-0.20257 0.10129,-0.99839 v -6.36655 q 0,-0.79582 -0.10129,-0.99839 -0.094,-0.20981 -0.34003,-0.3328 -0.24598,-0.12299 -0.91881,-0.12299 v -0.26768 h 4.27572 q 2.11253,0 3.03134,0.75241 0.91881,0.75241 0.91881,1.88102 0,0.95499 -0.59325,1.63505 -0.59324,0.68006 -1.63504,0.92604 -0.70177,0.17364 -2.37299,0.17364 z m 0,-4.80386 v 4.23955 q 0.23875,0.0145 0.36174,0.0145 0.88263,0 1.36012,-0.5209 0.4775,-0.52814 0.4775,-1.62781 0,-1.09245 -0.4775,-1.59888 -0.47749,-0.50643 -1.42524,-0.50643 z"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:14.8167px;line-height:1.25;font-family:'Times New Roman';-inkscape-font-specification:'Times New Roman, Bold';fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.264583"
id="path2017" />
<path
d="m 290.34249,-312.11694 v 1.53376 q 0.67283,-1.04903 1.17926,-1.38906 0.50643,-0.34727 0.97669,-0.34727 0.40514,0 0.64389,0.25321 0.24598,0.24599 0.24598,0.70177 0,0.48473 -0.23875,0.75241 -0.23151,0.26769 -0.56431,0.26769 -0.38344,0 -0.66559,-0.24598 -0.28216,-0.24598 -0.3328,-0.27492 -0.0724,-0.0434 -0.1664,-0.0434 -0.2098,0 -0.39791,0.15916 -0.29662,0.24598 -0.44855,0.70177 -0.23151,0.70177 -0.23151,1.54823 v 1.55546 l 0.007,0.40515 q 0,0.41238 0.0507,0.52813 0.0868,0.19534 0.25321,0.28939 0.17364,0.0868 0.57878,0.10852 v 0.26045 h -3.65353 v -0.26045 q 0.44132,-0.0362 0.59324,-0.23874 0.15917,-0.20981 0.15917,-1.09245 v -3.74034 q 0,-0.57878 -0.0579,-0.73795 -0.0724,-0.20257 -0.20981,-0.29662 -0.13746,-0.0941 -0.48472,-0.13022 v -0.26769 z"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:14.8167px;line-height:1.25;font-family:'Times New Roman';-inkscape-font-specification:'Times New Roman, Bold';fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.264583"
id="path2019" />
<path
d="m 299.57399,-308.97707 h -3.71141 q 0.0651,1.34566 0.71623,2.12701 0.4992,0.60048 1.20097,0.60048 0.43408,0 0.78858,-0.23875 0.3545,-0.24598 0.75965,-0.8754 l 0.24598,0.15916 q -0.54984,1.12139 -1.21544,1.59164 -0.66559,0.46302 -1.54099,0.46302 -1.50482,0 -2.27894,-1.15755 -0.62218,-0.93328 -0.62218,-2.31511 0,-1.69292 0.91157,-2.69131 0.91881,-1.00563 2.14871,-1.00563 1.02733,0 1.77974,0.84646 0.75965,0.83923 0.81753,2.49598 z m -1.77974,-0.48473 q 0,-1.16479 -0.13023,-1.59887 -0.12299,-0.43408 -0.39067,-0.65836 -0.15193,-0.13022 -0.40515,-0.13022 -0.3762,0 -0.61495,0.36897 -0.42685,0.64389 -0.42685,1.76527 v 0.25321 z"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:14.8167px;line-height:1.25;font-family:'Times New Roman';-inkscape-font-specification:'Times New Roman, Bold';fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.264583"
id="path2021" />
<path
d="m 304.68894,-312.30504 0.10852,2.30787 h -0.24598 q -0.44132,-1.02733 -0.91881,-1.40353 -0.47026,-0.37621 -0.94051,-0.37621 -0.29663,0 -0.50643,0.20258 -0.20981,0.19533 -0.20981,0.45578 0,0.19534 0.14469,0.37621 0.23151,0.29662 1.29502,1.02009 1.0635,0.71624 1.3963,1.22267 0.34003,0.4992 0.34003,1.12138 0,0.56431 -0.28215,1.10691 -0.28216,0.54261 -0.79582,0.832 -0.51367,0.28938 -1.13585,0.28938 -0.48473,0 -1.29502,-0.30385 -0.21704,-0.0796 -0.29662,-0.0796 -0.23875,0 -0.39791,0.36174 h -0.23875 l -0.11575,-2.43086 h 0.24598 q 0.32556,0.95498 0.88987,1.43247 0.57154,0.47749 1.07797,0.47749 0.34727,0 0.56431,-0.20981 0.22428,-0.21704 0.22428,-0.5209 0,-0.34726 -0.21705,-0.60048 -0.21704,-0.25321 -0.96945,-0.76688 -1.10691,-0.76688 -1.43247,-1.17202 -0.47749,-0.59325 -0.47749,-1.30949 0,-0.78134 0.53537,-1.41077 0.5426,-0.63665 1.56269,-0.63665 0.54984,0 1.06351,0.26768 0.19534,0.10852 0.31833,0.10852 0.13022,0 0.2098,-0.0506 0.0796,-0.0579 0.25322,-0.31109 z"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:14.8167px;line-height:1.25;font-family:'Times New Roman';-inkscape-font-specification:'Times New Roman, Bold';fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.264583"
id="path2023" />
<path
d="m 310.44776,-312.30504 0.10853,2.30787 h -0.24598 q -0.44132,-1.02733 -0.91881,-1.40353 -0.47026,-0.37621 -0.94052,-0.37621 -0.29662,0 -0.50643,0.20258 -0.2098,0.19533 -0.2098,0.45578 0,0.19534 0.14469,0.37621 0.23151,0.29662 1.29501,1.02009 1.06351,0.71624 1.3963,1.22267 0.34004,0.4992 0.34004,1.12138 0,0.56431 -0.28216,1.10691 -0.28215,0.54261 -0.79582,0.832 -0.51366,0.28938 -1.13585,0.28938 -0.48472,0 -1.29501,-0.30385 -0.21704,-0.0796 -0.29662,-0.0796 -0.23875,0 -0.39791,0.36174 h -0.23875 l -0.11576,-2.43086 h 0.24599 q 0.32556,0.95498 0.88987,1.43247 0.57154,0.47749 1.07797,0.47749 0.34726,0 0.56431,-0.20981 0.22427,-0.21704 0.22427,-0.5209 0,-0.34726 -0.21704,-0.60048 -0.21704,-0.25321 -0.96945,-0.76688 -1.10691,-0.76688 -1.43248,-1.17202 -0.47749,-0.59325 -0.47749,-1.30949 0,-0.78134 0.53537,-1.41077 0.54261,-0.63665 1.5627,-0.63665 0.54984,0 1.0635,0.26768 0.19534,0.10852 0.31833,0.10852 0.13023,0 0.20981,-0.0506 0.0796,-0.0579 0.25321,-0.31109 z"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:14.8167px;line-height:1.25;font-family:'Times New Roman';-inkscape-font-specification:'Times New Roman, Bold';fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.264583"
id="path2025" />
</g>
</g>
<g
inkscape:groupmode="layer"
id="layer2"
inkscape:label="Layer 2"
transform="translate(-189.42537,318.35553)" />
</svg>

After

Width:  |  Height:  |  Size: 19 KiB

View file

@ -0,0 +1,35 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/pawprint-logo.svg-f33569ddfdeabc9ffb0b78f564117520.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/ticker/pawprint-logo.svg"
dest_files=[ "res://.import/pawprint-logo.svg-f33569ddfdeabc9ffb0b78f564117520.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
assets/ticker_black.tres Normal file
View file

@ -0,0 +1,4 @@
[gd_resource type="StyleBoxFlat" format=2]
[resource]
bg_color = Color( 0, 0, 0, 1 )

0
is_caseyverse.txt Normal file
View file

7
json/ticker/README.md Normal file
View file

@ -0,0 +1,7 @@
# News Ticker
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
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.

View file

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

View file

@ -23,6 +23,7 @@ SimEvents="*res://scripts/autoload/sim_events.gd"
SimTime="*res://scripts/autoload/sim_time.gd"
ZoneData="*res://scripts/autoload/zone_data.gd"
VRBridge="*res://scripts/autoload/vr_bridge.gd"
Caseyverse="*res://scripts/autoload/caseyverse.gd"
[display]

View file

@ -1,7 +1,7 @@
[gd_scene load_steps=45 format=2]
[ext_resource path="res://scenes/maps/MapOne.tscn" type="PackedScene" id=1]
[ext_resource path="res://scripts/ticker.gd" type="Script" id=2]
[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://scenes/windows/Advisor.tscn" type="PackedScene" id=4]
[ext_resource path="res://assets/ui/iccom.png" type="Texture" id=5]
@ -56,7 +56,7 @@ __meta__ = {
}
[node name="RotateNews" type="Timer" parent="."]
wait_time = 6.0
wait_time = 5.0
autostart = true
[node name="MapOne" parent="." instance=ExtResource( 1 )]
@ -263,19 +263,18 @@ __meta__ = {
}
[node name="Status" type="Panel" parent="Controls/Windows"]
anchor_top = 0.908333
anchor_top = 0.863333
anchor_right = 1.0
anchor_bottom = 1.0
script = ExtResource( 2 )
anchor_bottom = 1.00833
__meta__ = {
"_edit_use_anchors_": true
}
[node name="SettingsBtn" type="Button" parent="Controls/Windows/Status"]
anchor_left = 0.0115391
anchor_top = 0.193259
anchor_top = 0.0555202
anchor_right = 0.0525548
anchor_bottom = 0.670871
anchor_bottom = 0.533132
hint_tooltip = "Meet"
size_flags_horizontal = 4
icon = ExtResource( 35 )
@ -285,9 +284,9 @@ __meta__ = {
[node name="StatCtr" type="HBoxContainer" parent="Controls/Windows/Status"]
anchor_left = 0.0566406
anchor_top = 0.208955
anchor_right = 0.601562
anchor_bottom = 0.746269
anchor_top = 0.0750188
anchor_right = 0.996094
anchor_bottom = 0.516879
custom_constants/separation = 50
alignment = 1
script = ExtResource( 38 )
@ -296,9 +295,9 @@ __meta__ = {
}
[node name="ButtonCtr" type="HBoxContainer" parent="Controls/Windows/Status/StatCtr"]
margin_left = 30.0
margin_right = 312.0
margin_bottom = 36.0
margin_left = 233.0
margin_right = 515.0
margin_bottom = 38.0
custom_constants/separation = 10
alignment = 1
__meta__ = {
@ -307,7 +306,7 @@ __meta__ = {
[node name="TaxBtn" type="Button" parent="Controls/Windows/Status/StatCtr/ButtonCtr"]
margin_right = 42.0
margin_bottom = 36.0
margin_bottom = 38.0
hint_tooltip = "RCI"
size_flags_horizontal = 4
icon = ExtResource( 40 )
@ -315,7 +314,7 @@ icon = ExtResource( 40 )
[node name="ToolsBtn" type="Button" parent="Controls/Windows/Status/StatCtr/ButtonCtr"]
margin_left = 52.0
margin_right = 94.0
margin_bottom = 36.0
margin_bottom = 38.0
hint_tooltip = "Tools"
size_flags_horizontal = 4
icon = ExtResource( 42 )
@ -323,7 +322,7 @@ icon = ExtResource( 42 )
[node name="AdvsiorBtn" type="Button" parent="Controls/Windows/Status/StatCtr/ButtonCtr"]
margin_left = 104.0
margin_right = 146.0
margin_bottom = 36.0
margin_bottom = 38.0
hint_tooltip = "Meet"
size_flags_horizontal = 4
icon = ExtResource( 43 )
@ -331,12 +330,12 @@ icon = ExtResource( 43 )
[node name="VSeparator" type="VSeparator" parent="Controls/Windows/Status/StatCtr/ButtonCtr"]
margin_left = 156.0
margin_right = 160.0
margin_bottom = 36.0
margin_bottom = 38.0
[node name="TurtleBtn" type="Button" parent="Controls/Windows/Status/StatCtr/ButtonCtr"]
margin_left = 170.0
margin_right = 211.0
margin_bottom = 36.0
margin_bottom = 38.0
hint_tooltip = "Slow"
toggle_mode = true
icon = ExtResource( 8 )
@ -344,7 +343,7 @@ icon = ExtResource( 8 )
[node name="CheetaBtn" type="Button" parent="Controls/Windows/Status/StatCtr/ButtonCtr"]
margin_left = 221.0
margin_right = 268.0
margin_bottom = 36.0
margin_bottom = 38.0
hint_tooltip = "Fast"
toggle_mode = true
icon = ExtResource( 7 )
@ -352,25 +351,25 @@ icon = ExtResource( 7 )
[node name="VSeparator2" type="VSeparator" parent="Controls/Windows/Status/StatCtr/ButtonCtr"]
margin_left = 278.0
margin_right = 282.0
margin_bottom = 36.0
margin_bottom = 38.0
[node name="NameDate" type="VBoxContainer" parent="Controls/Windows/Status/StatCtr"]
margin_left = 362.0
margin_right = 450.0
margin_bottom = 36.0
margin_left = 565.0
margin_right = 653.0
margin_bottom = 38.0
alignment = 1
[node name="CityNameLbl" type="Label" parent="Controls/Windows/Status/StatCtr/NameDate"]
margin_top = 2.0
margin_top = 3.0
margin_right = 88.0
margin_bottom = 16.0
margin_bottom = 17.0
text = "City Name"
align = 1
[node name="YearCtr" type="HBoxContainer" parent="Controls/Windows/Status/StatCtr/NameDate"]
margin_top = 20.0
margin_top = 21.0
margin_right = 88.0
margin_bottom = 34.0
margin_bottom = 35.0
[node name="CalIcon" type="TextureRect" parent="Controls/Windows/Status/StatCtr/NameDate/YearCtr"]
margin_right = 10.0
@ -388,15 +387,15 @@ __meta__ = {
}
[node name="PopBudget" type="VBoxContainer" parent="Controls/Windows/Status/StatCtr"]
margin_left = 500.0
margin_right = 526.0
margin_bottom = 36.0
margin_left = 703.0
margin_right = 729.0
margin_bottom = 38.0
alignment = 1
[node name="BudgetCtr" type="HBoxContainer" parent="Controls/Windows/Status/StatCtr/PopBudget"]
margin_top = 2.0
margin_top = 3.0
margin_right = 26.0
margin_bottom = 16.0
margin_bottom = 17.0
[node name="CoinsIcon" type="TextureRect" parent="Controls/Windows/Status/StatCtr/PopBudget/BudgetCtr"]
margin_right = 14.0
@ -411,9 +410,9 @@ margin_bottom = 14.0
text = "0"
[node name="PopCtr" type="HBoxContainer" parent="Controls/Windows/Status/StatCtr/PopBudget"]
margin_top = 20.0
margin_top = 21.0
margin_right = 26.0
margin_bottom = 34.0
margin_bottom = 35.0
[node name="PopIcon" type="TextureRect" parent="Controls/Windows/Status/StatCtr/PopBudget/PopCtr"]
margin_right = 14.0
@ -427,18 +426,63 @@ margin_right = 26.0
margin_bottom = 14.0
text = "0"
[node name="Ticker" type="ItemList" parent="Controls/Windows/Status"]
anchor_right = 1.0
anchor_bottom = 1.0
margin_left = 622.0
[node name="NewsBtn" type="Button" parent="Controls/Windows/Status"]
anchor_left = 0.0078125
anchor_top = 0.633158
anchor_right = 0.989258
anchor_bottom = 0.888972
text = "News"
flat = true
__meta__ = {
"_edit_use_anchors_": false
"_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="RotateNews" to="Controls/Windows" method="_on_RotateNews_timeout"]
[connection signal="pressed" from="Controls/Windows/VRMode" to="." method="_on_VRMode_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

@ -0,0 +1,16 @@
extends Node
const caseyverse_path = "res://json/ticker/extra_lore.json"
const is_caseyverse_path = "res://is_caseyverse.txt"
func is_caseyverse():
var file = File.new()
if file.file_exists(is_caseyverse_path):
return true
func competing_outlet():
var file = File.new()
if is_caseyverse():
file.open(caseyverse_path, File.READ)
var result = parse_json(file.get_as_text())
return result["competing_outlet"]

View file

@ -11,7 +11,7 @@ signal advisor_message(advisor, message)
# News
signal send_alert(message)
signal resume_news
signal rotate_news
# Policies
signal clean_air_act

View file

@ -6,7 +6,7 @@ onready var turtle_btn = $Controls/Status/StatCtr/ButtonCtr/TurtleBtn
onready var cheeta_btn = $Controls/Status/StatCtr/ButtonCtr/CheetaBtn
func _ready():
SimEvents.connect("resume_news", self, "_resume_rotation")
SimEvents.connect("rotate_news", self, "_rotate_news")
SimEvents.connect("send_alert", self, "_stop_news")
func _stop_news():

View file

@ -1,116 +1,117 @@
extends Panel
const ticker_path = "res://json/ticker/"
onready var ticker_text = $Ticker
var news_file: String = ""
var rng = RandomNumberGenerator.new()
var all_news = []
var speices = [
"Cat",
"Fennec",
"Fox"
]
var json_files = [
"adverts.json",
# "sammy.json"
]
func _index_news():
var news = _load_json()
all_news.clear()
all_news = news["ticker"]
randomize()
all_news.shuffle()
func _process(delta):
var prev_json_Files = json_files
var city_life = [
"citylife.json",
"kittykibble.json"
]
if _array_check(city_life, json_files):
match SimData.has_power:
true:
prev_json_Files = json_files
for files in city_life:
json_files.append(files)
false:
prev_json_Files = json_files
for files in city_life:
json_files.append(files)
func _array_check(list1, list2):
for item in list1:
if item in list2:
return true
return false
func _load_json():
var file = File.new()
if file.file_exists(news_file):
file.open(news_file, file.READ)
var result = parse_json(file.get_as_text())
return result
func _ready():
SimData.city_name = SimData.city_name.capitalize()
SimData.mayor_name = SimData.mayor_name.capitalize()
SimEvents.connect("send_alert", self, "_start_alert")
SimEvents.connect("resume_news", self, "_resume_ticker")
_random_news(json_files)
func _start_alert(message):
if ticker_text.items.size() > 3:
ticker_text.clear()
SimData.on_alert = true
news_file = str(ticker_path + "ticker_alerts.json")
ticker_text.add_item(all_news)
func _random_news(files: Array):
for file in files:
news_file = str(ticker_path + file)
_load_json()
_index_news()
rng.randomize()
randomize()
all_news.shuffle()
var news_range = rng.randi_range(0, all_news.size() - 1)
var news_text: String = all_news[news_range]
if SimData.city_name == "Furtropolis" or "Furville" and "[outlet]" in news_text:
# FNN = Furtropolis/Furry News Network
news_text = news_text.replace("[outlet]", "FNN")
else:
news_text = news_text.replace("[outlet]", "Pawprint Press")
if "[species]" in news_text:
speices.shuffle()
var speices_range = rng.randi_range(speices.size() - 1)
news_text = news_text.replace("[species]", speices[speices_range])
if "[city]" in news_text:
news_text = news_text.replace("[city]", SimData.city_name)
if "[mayor]" in news_text:
news_text = news_text.replace("[mayor]", SimData.mayor_name)
if ticker_text.items.size() > 3:
ticker_text.clear()
ticker_text.add_item(news_text)
func _resume_ticker():
_random_news(json_files)
func _on_RotateNews_timeout():
_random_news(json_files)
#extends Panel
#
#const ticker_path = "res://json/ticker/"
#
#onready var ticker_text = $Ticker
#
#var news_file: String = ""
#var rng = RandomNumberGenerator.new()
#var all_news = []
#var speices = [
# "Cat",
# "Fennec",
# "Fox"
#]
#var json_files = [
# "adverts.json",
# "sammy.json",
# "kittykibble.json"
#]
#
#func _index_news():
# var news = _load_json()
# all_news.clear()
# all_news = news["ticker"]
#
# randomize()
# all_news.shuffle()
#
#func _process(delta):
# var prev_json_Files = json_files
#
# var city_life = [
# "citylife.json",
# "kittykibble.json",
# "international.json",
# "citylife.json"
# ]
#
# if _array_check(city_life, json_files):
# match SimData.has_power:
# true:
# prev_json_Files = json_files
# for files in city_life:
# json_files.append(files)
#
# false:
# prev_json_Files = json_files
# for files in city_life:
# json_files.append(files)
#
#func _array_check(list1, list2):
# for item in list1:
# if item in list2:
# return true
#
# return false
#
#func _load_json():
# var file = File.new()
# if file.file_exists(news_file):
# file.open(news_file, file.READ)
# var result = parse_json(file.get_as_text())
# return result
#
#func _ready():
# SimData.city_name = SimData.city_name.capitalize()
# SimData.mayor_name = SimData.mayor_name.capitalize()
# SimEvents.connect("send_alert", self, "_start_alert")
# SimEvents.connect("rotate_news", self, "_rotate_news")
# _random_news(json_files)
#
#func _start_alert(message):
# if ticker_text.items.size() > 1:
# ticker_text.clear()
#
# SimData.on_alert = true
# news_file = str(ticker_path + "ticker_alerts.json")
# ticker_text.add_item(all_news)
#
#func _random_news(files: Array):
# for file in files:
# news_file = str(ticker_path + file)
# _load_json()
# _index_news()
#
# rng.randomize()
# randomize()
# all_news.shuffle()
#
# var news_range = rng.randi_range(0, all_news.size() - 1)
# var news_text: String = all_news[news_range]
#
# if SimData.city_name == "Furtropolis" or "Furville" and "[outlet]" in news_text:
# # FNN = Furtropolis/Furry News Network
# news_text = news_text.replace("[outlet]", "FNN")
# else:
# news_text = news_text.replace("[outlet]", "Pawprint Press")
#
# if "[species]" in news_text:
# speices.shuffle()
# var speices_range = rng.randi_range(speices.size() - 1)
# news_text = news_text.replace("[species]", speices[speices_range])
#
# if "[city]" in news_text:
# news_text = news_text.replace("[city]", SimData.city_name)
#
# if "[mayor]" in news_text:
# news_text = news_text.replace("[mayor]", SimData.mayor_name)
#
# if ticker_text.items.size() > 3:
# ticker_text.clear()
#
# ticker_text.clear()
# ticker_text.add_item(news_text)
#
#func _on_RotateNews_timeout():
# _random_news(json_files)

View file

@ -5,13 +5,167 @@ onready var tax_window = $TaxWindow
onready var advsior_meet_window = $AdvisorMeet
onready var tools_window = $ToolsWindow
const ticker_path = "res://json/ticker/"
const fnn_logo = "res://assets/ticker/fnn.png"
onready var ticker_text = $Status/NewsBtn
onready var ticker_box = $NewsWindow/News
onready var ticker_window = $NewsWindow
onready var news_brand = $NewsWindow/Brand/NewsBrand
onready var news_motto = $NewsWindow/Brand/NewsMotto
var other_outlet: String = ""
var news_file: String = ""
var rng = RandomNumberGenerator.new()
var all_news = []
var speices = [
"Cat",
"Fennec",
"Fox"
]
var json_files = [
"adverts.json",
"sammy.json",
"kittykibble.json",
"citylife.json"
]
func _competing_outlet():
var file = File.new()
var caseyverse_path = str(ticker_path + "caseyverse.json");
if file.file_exists(caseyverse_path):
file.open(caseyverse_path)
var result = parse_json(file.get_as_text())
result.clear()
return result["competing_outlet"]
func _load_json():
var file = File.new()
if file.file_exists(news_file):
file.open(news_file, file.READ)
var result = parse_json(file.get_as_text())
return result
func _index_news():
var news = _load_json()
all_news.clear()
all_news = news["ticker"]
randomize()
all_news.shuffle()
func _ready():
SimData.city_name = SimData.city_name.capitalize()
SimData.mayor_name = SimData.mayor_name.capitalize()
if SimData.city_name == "Furtropolis" and Caseyverse.is_caseyverse():
news_brand.texture = load(fnn_logo)
SimEvents.emit_signal("advisor_message", SimData.Advisors.CITY_PLANNER, 0)
SimEvents.connect("send_alert", self, "_start_alert")
SimEvents.connect("rotate_news", self, "_rotate_news")
if Caseyverse.is_caseyverse():
json_files.append("extra_lore.json")
_randomize_news(json_files)
func _process(delta):
if Input.is_action_pressed("ui_cheats"):
debug_console.show()
var prev_json_Files = json_files
# var city_life = [
# "citylife.json"
# ]
#
# if _array_check(city_life, json_files):
# match SimData.has_power:
# true:
# prev_json_Files = json_files
# for files in city_life:
# json_files.append(files)
#
# false:
# prev_json_Files = json_files
# for files in city_life:
# json_files.remove(files)
func _array_check(list1, list2):
for item in list1:
if item in list2:
return true
return false
func _start_alert(message):
# if ticker_text.items.size() > 1:
# ticker_text.clear()
#
# SimData.on_alert = true
# news_file = str(ticker_path + "ticker_alerts.json")
# ticker_text.add_item(all_news)
pass
func _randomize_news(files: Array):
for file in files:
news_file = str(ticker_path + file)
_load_json()
_index_news()
rng.randomize()
randomize()
files.shuffle()
var news_range = rng.randi_range(0, all_news.size() - 1)
var news_text: String = all_news[news_range]
if Caseyverse.is_caseyverse():
news_text = news_text.replace("[other_outlet]", Caseyverse.competing_outlet())
if SimData.city_name == "Furtropolis" or "Furville" and Caseyverse.is_caseyverse():
# FNN = Furtropolis/Furry News Network
news_text = news_text.replace("[outlet]", "FNN")
else:
news_text = news_text.replace("[outlet]", "Pawprint Press")
if "[species]" in news_text:
speices.shuffle()
var speices_range = rng.randi_range(speices.size() - 1)
news_text = news_text.replace("[species]", speices[speices_range])
if "[city]" in news_text:
news_text = news_text.replace("[city]", SimData.city_name)
if "[mayor]" in news_text:
news_text = news_text.replace("[mayor]", SimData.mayor_name)
if ticker_box.items.size() > 15:
ticker_box.clear()
# Prevent duplicates
var prev_news_text = ticker_text.text
if news_text == prev_news_text:
_randomize_news(json_files)
else:
json_files.shuffle()
_add_news(news_text)
func _add_news(news_item):
ticker_text.text = news_item
ticker_box.add_item(news_item)
func _on_RotateNews_timeout():
rng.randomize()
randomize()
all_news.shuffle()
json_files.shuffle()
_randomize_news(json_files)
func _on_TaxBtn_pressed():
tax_window.show()
@ -20,3 +174,6 @@ func _on_AdvsiorBtn_pressed():
func _on_ToolsBtn_pressed():
tools_window.show()
func _on_NewsBtn_pressed():
ticker_window.show()