From ec79a57f96c492209c1594e01b4d8c8eca0844d7 Mon Sep 17 00:00:00 2001 From: Tony Bark <35226681+tonytins@users.noreply.github.com> Date: Mon, 31 May 2021 16:56:52 -0400 Subject: [PATCH] In-game news straight from my website This is new feature trying out JSON-RPC requests. --- .gitignore | 4 +- ...character_base.tscn => CharacterBase.tscn} | 0 scenes/NewsWin.tscn | 69 ++++++++ scenes/game.tscn | 49 ++++-- scripts/character_base.gd | 1 - scripts/news_window.gd | 19 ++ scripts/ui.gd | 17 +- sprites/pawprint-logo.svg | 165 ++++++++++++++++++ sprites/pawprint-logo.svg.import | 34 ++++ sprites/symbols/newspaper-disabled.svg | 62 +++++++ sprites/symbols/newspaper-disabled.svg.import | 34 ++++ sprites/symbols/newspaper.svg | 62 +++++++ sprites/symbols/newspaper.svg.import | 34 ++++ sprites/symbols/sync.svg | 61 +++++++ sprites/symbols/sync.svg.import | 34 ++++ 15 files changed, 628 insertions(+), 17 deletions(-) rename scenes/{character_base.tscn => CharacterBase.tscn} (100%) create mode 100644 scenes/NewsWin.tscn create mode 100644 scripts/news_window.gd create mode 100644 sprites/pawprint-logo.svg create mode 100644 sprites/pawprint-logo.svg.import create mode 100644 sprites/symbols/newspaper-disabled.svg create mode 100644 sprites/symbols/newspaper-disabled.svg.import create mode 100644 sprites/symbols/newspaper.svg create mode 100644 sprites/symbols/newspaper.svg.import create mode 100644 sprites/symbols/sync.svg create mode 100644 sprites/symbols/sync.svg.import diff --git a/.gitignore b/.gitignore index 0657785..e581f1a 100644 --- a/.gitignore +++ b/.gitignore @@ -149,4 +149,6 @@ $RECYCLE.BIN/ # Windows shortcuts *.lnk -# End of https://www.toptal.com/developers/gitignore/api/macos,linux,godot,backup,windows,dotnetcore,executable,monodevelop,visualstudiocode,web \ No newline at end of file +# End of https://www.toptal.com/developers/gitignore/api/macos,linux,godot,backup,windows,dotnetcore,executable,monodevelop,visualstudiocode,web + +/export \ No newline at end of file diff --git a/scenes/character_base.tscn b/scenes/CharacterBase.tscn similarity index 100% rename from scenes/character_base.tscn rename to scenes/CharacterBase.tscn diff --git a/scenes/NewsWin.tscn b/scenes/NewsWin.tscn new file mode 100644 index 0000000..40a4eb6 --- /dev/null +++ b/scenes/NewsWin.tscn @@ -0,0 +1,69 @@ +[gd_scene load_steps=4 format=2] + +[ext_resource path="res://sprites/symbols/sync.svg" type="Texture" id=1] +[ext_resource path="res://sprites/pawprint-logo.svg" type="Texture" id=2] +[ext_resource path="res://scripts/news_window.gd" type="Script" id=3] + +[node name="NewsWin" type="WindowDialog"] +visible = true +anchor_left = 0.15375 +anchor_top = 0.144 +anchor_right = 0.84625 +anchor_bottom = 0.856 +rect_min_size = Vector2( 540, 340 ) +window_title = "News" +script = ExtResource( 3 ) +__meta__ = { +"_edit_use_anchors_": true +} + +[node name="News" type="ItemList" parent="."] +anchor_top = 0.179775 +anchor_right = 1.0 +anchor_bottom = 1.0 +margin_top = -3.8147e-06 +max_text_lines = 5 +auto_height = true +same_column_width = true +icon_mode = 0 +__meta__ = { +"_edit_use_anchors_": true +} + +[node name="NewsBtns" type="HBoxContainer" parent="."] +anchor_top = 0.0280899 +anchor_right = 1.0 +anchor_bottom = 0.13764 +margin_top = 0.748672 +margin_bottom = 0.748837 +custom_constants/separation = 30 +alignment = 1 +__meta__ = { +"_edit_use_anchors_": true +} + +[node name="HTTPRequest" type="HTTPRequest" parent="NewsBtns"] + +[node name="Logo" type="TextureRect" parent="NewsBtns"] +margin_left = 79.0 +margin_right = 367.0 +margin_bottom = 39.0 +texture = ExtResource( 2 ) +stretch_mode = 4 +__meta__ = { +"_edit_use_anchors_": true +} + +[node name="VSeparator" type="VSeparator" parent="NewsBtns"] +margin_left = 397.0 +margin_right = 401.0 +margin_bottom = 39.0 + +[node name="SyncBtn" type="Button" parent="NewsBtns"] +margin_left = 431.0 +margin_right = 475.0 +margin_bottom = 39.0 +icon = ExtResource( 1 ) + +[connection signal="request_completed" from="NewsBtns/HTTPRequest" to="." method="_on_HTTPRequest_request_completed"] +[connection signal="pressed" from="NewsBtns/SyncBtn" to="." method="_on_SyncBtn_pressed"] diff --git a/scenes/game.tscn b/scenes/game.tscn index 519fbe6..1069077 100644 --- a/scenes/game.tscn +++ b/scenes/game.tscn @@ -1,6 +1,6 @@ -[gd_scene load_steps=15 format=2] +[gd_scene load_steps=18 format=2] -[ext_resource path="res://scenes/character_base.tscn" type="PackedScene" id=1] +[ext_resource path="res://scenes/CharacterBase.tscn" type="PackedScene" id=1] [ext_resource path="res://sprites/world/background.svg" type="Texture" id=2] [ext_resource path="res://sprites/symbols/trash.svg" type="Texture" id=3] [ext_resource path="res://scenes/wardrobe.tscn" type="PackedScene" id=4] @@ -14,6 +14,9 @@ [ext_resource path="res://sprites/symbols/spinner.svg" type="Texture" id=12] [ext_resource path="res://scripts/spinner.gd" type="Script" id=13] [ext_resource path="res://scripts/game.gd" type="Script" id=14] +[ext_resource path="res://sprites/symbols/newspaper.svg" type="Texture" id=15] +[ext_resource path="res://scenes/NewsWin.tscn" type="PackedScene" id=16] +[ext_resource path="res://sprites/symbols/newspaper-disabled.svg" type="Texture" id=17] [node name="game" type="Node2D"] script = ExtResource( 14 ) @@ -74,39 +77,55 @@ __meta__ = { wait_time = 2.0 [node name="CenterBtns" type="CenterContainer" parent="Controls/Container"] -anchor_left = 0.35875 -anchor_top = 0.792 -anchor_right = 0.99625 -anchor_bottom = 0.886 +anchor_left = 0.35125 +anchor_top = 0.78 +anchor_right = 0.9925 +anchor_bottom = 0.874 __meta__ = { "_edit_use_anchors_": true } [node name="ButtonCtr" type="HBoxContainer" parent="Controls/Container/CenterBtns"] -margin_left = 197.0 +margin_left = 157.0 margin_top = 7.0 -margin_right = 312.0 +margin_right = 356.0 margin_bottom = 39.0 custom_constants/separation = 20 +[node name="NewsBtn" type="TextureButton" parent="Controls/Container/CenterBtns/ButtonCtr"] +margin_right = 40.0 +margin_bottom = 32.0 +hint_tooltip = "News" +texture_normal = ExtResource( 15 ) +texture_disabled = ExtResource( 17 ) +__meta__ = { +"_edit_use_anchors_": true +} + +[node name="VSeparator" type="VSeparator" parent="Controls/Container/CenterBtns/ButtonCtr"] +margin_left = 60.0 +margin_right = 64.0 +margin_bottom = 32.0 + [node name="ExportBtn" type="TextureButton" parent="Controls/Container/CenterBtns/ButtonCtr"] -margin_right = 25.0 +margin_left = 84.0 +margin_right = 109.0 margin_bottom = 32.0 hint_tooltip = "Export" texture_normal = ExtResource( 7 ) texture_disabled = ExtResource( 10 ) [node name="ImportBtn" type="TextureButton" parent="Controls/Container/CenterBtns/ButtonCtr"] -margin_left = 45.0 -margin_right = 70.0 +margin_left = 129.0 +margin_right = 154.0 margin_bottom = 32.0 hint_tooltip = "Import" texture_normal = ExtResource( 9 ) texture_disabled = ExtResource( 11 ) [node name="ClearBtn" type="TextureButton" parent="Controls/Container/CenterBtns/ButtonCtr"] -margin_left = 90.0 -margin_right = 115.0 +margin_left = 174.0 +margin_right = 199.0 margin_bottom = 32.0 hint_tooltip = "Clear" texture_normal = ExtResource( 3 ) @@ -123,7 +142,11 @@ __meta__ = { "_edit_use_anchors_": true } +[node name="NewsWin" parent="Controls/Container" instance=ExtResource( 16 )] +visible = false + [connection signal="timeout" from="Controls/Container/Spinner/Timer" to="Controls/Container/Spinner" method="_on_Timer_timeout"] +[connection signal="pressed" from="Controls/Container/CenterBtns/ButtonCtr/NewsBtn" to="Controls/Container" method="_on_NewsBtn_pressed"] [connection signal="pressed" from="Controls/Container/CenterBtns/ButtonCtr/ExportBtn" to="characterBase" method="_on_SaveBtn_pressed"] [connection signal="pressed" from="Controls/Container/CenterBtns/ButtonCtr/ImportBtn" to="characterBase" method="_on_LoadBtn_pressed"] [connection signal="pressed" from="Controls/Container/CenterBtns/ButtonCtr/ClearBtn" to="characterBase" method="_on_clearBtn_pressed"] diff --git a/scripts/character_base.gd b/scripts/character_base.gd index 83bc355..261b40d 100644 --- a/scripts/character_base.gd +++ b/scripts/character_base.gd @@ -12,7 +12,6 @@ onready var base_bottom = preload("res://sprites/character/character_base_legs.s onready var export_win = $Controls/Container/ExportWin onready var import_win = $Controls/Container/ImportWin -onready var unsupported_win = $Controls/Container/NotSupportedWin onready var accessory = $Body/Accessory #onready var underwear = $Undies diff --git a/scripts/news_window.gd b/scripts/news_window.gd new file mode 100644 index 0000000..59acefc --- /dev/null +++ b/scripts/news_window.gd @@ -0,0 +1,19 @@ +extends WindowDialog + +const _NEWS_API = "https://static.tonybark.com/news/dressup.json" + +onready var news_list = $News +onready var http_request = $NewsBtns/HTTPRequest + +func _on_HTTPRequest_request_completed(result, response_code, headers, body): + var api_request = parse_json(body.get_string_from_utf8()) + + if api_request["feed"] != null: + var news_items = api_request["feed"] + + for news in news_items: + news_list.add_item(news) + +func _on_SyncBtn_pressed(): + news_list.clear() + http_request.request(_NEWS_API) diff --git a/scripts/ui.gd b/scripts/ui.gd index 9c6785a..e4f8b24 100644 --- a/scripts/ui.gd +++ b/scripts/ui.gd @@ -2,6 +2,8 @@ # See the LICENSE file in the project root for more information. extends Control +const _NEWS_API = "https://static.tonybark.com/news/dressup.json" + export var version: String = "1.0.0" onready var character = preload("res://resources/character.tres") @@ -11,12 +13,23 @@ onready var base_bottom = preload("res://sprites/character/character_base_legs.s onready var export_btn = $CenterBtns/ButtonCtr/ExportBtn onready var import_btn = $CenterBtns/ButtonCtr/ImportBtn +onready var news_win = $NewsWin +onready var news_btn = $CenterBtns/ButtonCtr/NewsBtn +onready var http_request = $NewsWin/NewsBtns/HTTPRequest func _ready(): var verLabel = $versionLbl verLabel.text = "v" + version GameData.version = version + var err = http_request.request(_NEWS_API) + + if err != OK: + news_btn.disabled = true + if OS.get_name() == "HTML5": - export_btn.disabled == true - import_btn.disabled == true + export_btn.disabled = true + import_btn.disabled = true + +func _on_NewsBtn_pressed(): + news_win.show() diff --git a/sprites/pawprint-logo.svg b/sprites/pawprint-logo.svg new file mode 100644 index 0000000..94024e5 --- /dev/null +++ b/sprites/pawprint-logo.svg @@ -0,0 +1,165 @@ + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/sprites/pawprint-logo.svg.import b/sprites/pawprint-logo.svg.import new file mode 100644 index 0000000..f95e8f6 --- /dev/null +++ b/sprites/pawprint-logo.svg.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/pawprint-logo.svg-01cd6ea8ad71ffb3d0348f6c08c67cda.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://sprites/pawprint-logo.svg" +dest_files=[ "res://.import/pawprint-logo.svg-01cd6ea8ad71ffb3d0348f6c08c67cda.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=false +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=false +svg/scale=1.0 diff --git a/sprites/symbols/newspaper-disabled.svg b/sprites/symbols/newspaper-disabled.svg new file mode 100644 index 0000000..3de04b2 --- /dev/null +++ b/sprites/symbols/newspaper-disabled.svg @@ -0,0 +1,62 @@ + + + + + + image/svg+xml + + + + + + + + + + diff --git a/sprites/symbols/newspaper-disabled.svg.import b/sprites/symbols/newspaper-disabled.svg.import new file mode 100644 index 0000000..034ac33 --- /dev/null +++ b/sprites/symbols/newspaper-disabled.svg.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/newspaper-disabled.svg-4f6a658b170751bc0f75fca2f40c3b06.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://sprites/symbols/newspaper-disabled.svg" +dest_files=[ "res://.import/newspaper-disabled.svg-4f6a658b170751bc0f75fca2f40c3b06.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=false +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=false +svg/scale=1.0 diff --git a/sprites/symbols/newspaper.svg b/sprites/symbols/newspaper.svg new file mode 100644 index 0000000..1b02423 --- /dev/null +++ b/sprites/symbols/newspaper.svg @@ -0,0 +1,62 @@ + + + + + + image/svg+xml + + + + + + + + + + diff --git a/sprites/symbols/newspaper.svg.import b/sprites/symbols/newspaper.svg.import new file mode 100644 index 0000000..deaefba --- /dev/null +++ b/sprites/symbols/newspaper.svg.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/newspaper.svg-c0c10dffd78099ba7b3807021c14924f.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://sprites/symbols/newspaper.svg" +dest_files=[ "res://.import/newspaper.svg-c0c10dffd78099ba7b3807021c14924f.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=false +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=false +svg/scale=1.0 diff --git a/sprites/symbols/sync.svg b/sprites/symbols/sync.svg new file mode 100644 index 0000000..8e70156 --- /dev/null +++ b/sprites/symbols/sync.svg @@ -0,0 +1,61 @@ + + + + + + image/svg+xml + + + + + + + + + + diff --git a/sprites/symbols/sync.svg.import b/sprites/symbols/sync.svg.import new file mode 100644 index 0000000..db33b3f --- /dev/null +++ b/sprites/symbols/sync.svg.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/sync.svg-f813d9cd893fe23342f18498df3c01d6.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://sprites/symbols/sync.svg" +dest_files=[ "res://.import/sync.svg-f813d9cd893fe23342f18498df3c01d6.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=false +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=false +svg/scale=1.0