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 @@
+
+
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 @@
+
+
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 @@
+
+
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 @@
+
+
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