parent
a325679c95
commit
16650b0107
@ -0,0 +1,141 @@
|
|||||||
|
extends Node2D
|
||||||
|
|
||||||
|
@onready var _http_request = $HTTPRequest
|
||||||
|
|
||||||
|
const Response = preload("res://scenes/util/Response.gd")
|
||||||
|
|
||||||
|
var user_name : String = "FooBar"
|
||||||
|
|
||||||
|
var _user_ulid : String = ""
|
||||||
|
var _dojo_ulid : String = ""
|
||||||
|
|
||||||
|
var _dojos: Dictionary = {}
|
||||||
|
var _users: Dictionary = {}
|
||||||
|
|
||||||
|
var _own_characters: Dictionary = {}
|
||||||
|
var _own_characters_array : Array = []
|
||||||
|
var _all_characters: Dictionary = {}
|
||||||
|
|
||||||
|
var _techniques: Dictionary = {}
|
||||||
|
var _techniques_array : Array = []
|
||||||
|
|
||||||
|
|
||||||
|
# Called when the node enters the scene tree for the first time.
|
||||||
|
func _ready():
|
||||||
|
_http_request.base_address = "http://localhost:8000/api"
|
||||||
|
_http_request.auth_token = "_sGFrChRV6ML0eWZC2qSUZzEGNLPbAhP4dwmnWhQ5bQ9xIi2pwHWQ1CzybFPDLeK8dTNx6GgWdR-Jcz-Z9_aC0hlY2h0fDIwMjQtMDYtMTNUMTk6MTU6MzkrMDA6MDA="
|
||||||
|
|
||||||
|
for argument in OS.get_cmdline_user_args():
|
||||||
|
print_debug("argument: %s" % argument)
|
||||||
|
var key_value = argument.split("=", true, 1)
|
||||||
|
if "--token" == key_value[0]:
|
||||||
|
_http_request.auth_token = key_value[1]
|
||||||
|
elif "--env" == key_value[0]:
|
||||||
|
if key_value[1] == "dev":
|
||||||
|
_http_request.base_address = "http://localhost:8000/api"
|
||||||
|
else:
|
||||||
|
_http_request.base_address = "https://dojo.animegame.eu/api"
|
||||||
|
|
||||||
|
var tmp = _http_request.auth_token.replace("-", "/").replace("_", "+")
|
||||||
|
|
||||||
|
# replace \-_ with /\+
|
||||||
|
var chunks = Marshalls.base64_to_raw(tmp)
|
||||||
|
user_name = chunks.slice(64).get_string_from_utf8().split('|')[0]
|
||||||
|
|
||||||
|
# Called every frame. 'delta' is the elapsed time since the previous frame.
|
||||||
|
func _process(_delta):
|
||||||
|
pass
|
||||||
|
|
||||||
|
func get_uri(type: String, entity: Variant) -> String:
|
||||||
|
return "api/%s/%s" % [type, entity if entity is String else entity["id"]]
|
||||||
|
|
||||||
|
func create_dojo(dojo_name : String) -> Response:
|
||||||
|
var body = JSON.stringify({"name": dojo_name})
|
||||||
|
return await _http_request.post_http_request("dojos", body)
|
||||||
|
|
||||||
|
func create_character(name: String, strength: int, constitution: int, agility: int, chi: int, techniques: Array) -> bool:
|
||||||
|
var technique_uris : Array[String] = []
|
||||||
|
|
||||||
|
for technique in techniques:
|
||||||
|
technique_uris.append(get_uri("techniques", technique))
|
||||||
|
|
||||||
|
var body = JSON.stringify({
|
||||||
|
"dojo": "/api/dojos/%s" % _dojo_ulid, # meh!
|
||||||
|
"name": name,
|
||||||
|
"strength": strength,
|
||||||
|
"constitution": constitution,
|
||||||
|
"agility": agility,
|
||||||
|
"chi": chi,
|
||||||
|
"techniques": technique_uris
|
||||||
|
})
|
||||||
|
var response: Response = await _http_request.post_http_request("characters", body)
|
||||||
|
return response.status == OK
|
||||||
|
|
||||||
|
func update_user_preferences(values: Dictionary) -> Response:
|
||||||
|
var body = JSON.stringify({"properties": values})
|
||||||
|
var user = await get_user()
|
||||||
|
return await _http_request.patch_http_request("users/%s" % user["id"], body)
|
||||||
|
|
||||||
|
func get_dojo() -> Dictionary:
|
||||||
|
if _dojo_ulid == "":
|
||||||
|
var result: Response = await _http_request.get_http_request_sync("dojo")
|
||||||
|
if result.status == OK:
|
||||||
|
_dojo_ulid = result.data["id"]
|
||||||
|
_dojos[_dojo_ulid] = result.data
|
||||||
|
else:
|
||||||
|
return {}
|
||||||
|
|
||||||
|
return _dojos[_dojo_ulid]
|
||||||
|
|
||||||
|
func get_dojo_by_id(id: String) -> Dictionary:
|
||||||
|
return await __get_entity_by_id(_dojos, "dojos", id)
|
||||||
|
|
||||||
|
func get_user() -> Dictionary:
|
||||||
|
if _user_ulid == "":
|
||||||
|
var result = await _http_request.get_http_request_sync("users/authName/%s" % user_name)
|
||||||
|
if result.status == OK:
|
||||||
|
_user_ulid = result.data["id"]
|
||||||
|
_users[_user_ulid] = result.data
|
||||||
|
else:
|
||||||
|
return {}
|
||||||
|
|
||||||
|
return _users[_user_ulid]
|
||||||
|
|
||||||
|
func get_user_by_id(id: String) -> Dictionary:
|
||||||
|
return await __get_entity_by_id(_users, "users", id)
|
||||||
|
|
||||||
|
func get_own_characters() -> Array:
|
||||||
|
return await __get_entity_list(_own_characters, _own_characters_array, "dojo/characters")
|
||||||
|
|
||||||
|
func get_techniques() -> Array:
|
||||||
|
return await __get_entity_list(_techniques, _techniques_array, "techniques")
|
||||||
|
|
||||||
|
func get_tournaments() -> Array:
|
||||||
|
return await _http_request.get_http_request_sync("tournaments")
|
||||||
|
|
||||||
|
func get_character_by_id(id: String) -> Dictionary:
|
||||||
|
if _own_characters.has(id):
|
||||||
|
return _own_characters[id]
|
||||||
|
|
||||||
|
return await __get_entity_by_id(_all_characters, "characters", id)
|
||||||
|
|
||||||
|
func __get_entity_by_id(entities: Dictionary, type: String, id: String) -> Dictionary:
|
||||||
|
if not entities.has(id):
|
||||||
|
var result: Response = await _http_request.get_http_request_sync("%s/%s" % [type, id])
|
||||||
|
if result.status == OK:
|
||||||
|
entities[id] = result.data
|
||||||
|
else:
|
||||||
|
return {}
|
||||||
|
return entities[id];
|
||||||
|
|
||||||
|
func __get_entity_list(entities: Dictionary, _entities_array: Array, type: String) -> Array:
|
||||||
|
if entities.is_empty():
|
||||||
|
var result: Response = await _http_request.get_http_request_sync(type)
|
||||||
|
if result.status == OK:
|
||||||
|
for entity in result.data:
|
||||||
|
entities[entity["id"]] = entity
|
||||||
|
_entities_array.append(entity)
|
||||||
|
else:
|
||||||
|
return []
|
||||||
|
|
||||||
|
return _entities_array
|
@ -1,12 +1,12 @@
|
|||||||
[gd_scene load_steps=3 format=3 uid="uid://3qgip1nsocyh"]
|
[gd_scene load_steps=3 format=3 uid="uid://3qgip1nsocyh"]
|
||||||
|
|
||||||
[ext_resource type="Script" path="res://scenes/Global/Global.gd" id="1_yoteo"]
|
[ext_resource type="Script" path="res://scenes/Global/API.gd" id="1_hqdog"]
|
||||||
[ext_resource type="Script" path="res://scenes/Global/APIRequest.gd" id="2_jxuea"]
|
[ext_resource type="Script" path="res://scenes/Global/APIRequest.gd" id="2_yhpn3"]
|
||||||
|
|
||||||
[node name="Global" type="Node2D"]
|
[node name="Global" type="Node2D"]
|
||||||
script = ExtResource("1_yoteo")
|
script = ExtResource("1_hqdog")
|
||||||
|
|
||||||
[node name="HTTPRequest" type="HTTPRequest" parent="."]
|
[node name="HTTPRequest" type="HTTPRequest" parent="."]
|
||||||
script = ExtResource("2_jxuea")
|
script = ExtResource("2_yhpn3")
|
||||||
|
|
||||||
[connection signal="request_completed" from="HTTPRequest" to="HTTPRequest" method="_on_request_completed"]
|
[connection signal="request_completed" from="HTTPRequest" to="HTTPRequest" method="_on_request_completed"]
|
@ -1,60 +0,0 @@
|
|||||||
extends Node2D
|
|
||||||
|
|
||||||
@onready var _http_request = $HTTPRequest
|
|
||||||
|
|
||||||
const Response = preload("../util/Response.gd")
|
|
||||||
|
|
||||||
var user_name : String = "FooBar"
|
|
||||||
var _dojo : Dictionary = {}
|
|
||||||
var _user: Dictionary = {}
|
|
||||||
|
|
||||||
|
|
||||||
# Called when the node enters the scene tree for the first time.
|
|
||||||
func _ready():
|
|
||||||
_http_request.base_address = "http://localhost:8000/api"
|
|
||||||
_http_request.auth_token = "_sGFrChRV6ML0eWZC2qSUZzEGNLPbAhP4dwmnWhQ5bQ9xIi2pwHWQ1CzybFPDLeK8dTNx6GgWdR-Jcz-Z9_aC0hlY2h0fDIwMjQtMDYtMTNUMTk6MTU6MzkrMDA6MDA="
|
|
||||||
|
|
||||||
for argument in OS.get_cmdline_user_args():
|
|
||||||
print_debug("argument: %s" % argument)
|
|
||||||
var key_value = argument.split("=", true, 1)
|
|
||||||
if "--token" == key_value[0]:
|
|
||||||
_http_request.auth_token = key_value[1]
|
|
||||||
elif "--env" == key_value[0]:
|
|
||||||
if key_value[1] == "dev":
|
|
||||||
_http_request.base_address = "http://localhost:8000/api"
|
|
||||||
else:
|
|
||||||
_http_request.base_address = "https://dojo.animegame.eu/api"
|
|
||||||
|
|
||||||
var tmp = _http_request.auth_token.replace("-", "/").replace("_", "+")
|
|
||||||
|
|
||||||
# replace \-_ with /\+
|
|
||||||
var chunks = Marshalls.base64_to_raw(tmp)
|
|
||||||
user_name = chunks.slice(64).get_string_from_utf8().split('|')[0]
|
|
||||||
|
|
||||||
# Called every frame. 'delta' is the elapsed time since the previous frame.
|
|
||||||
func _process(_delta):
|
|
||||||
pass
|
|
||||||
|
|
||||||
func create_dojo(dojo_name : String) -> Response:
|
|
||||||
var body = JSON.stringify({"name": dojo_name})
|
|
||||||
return await _http_request.post_http_request("dojos", body)
|
|
||||||
|
|
||||||
func update_user_preferences(values: Dictionary) -> Response:
|
|
||||||
var body = JSON.stringify({"properties": values})
|
|
||||||
var user = await get_user()
|
|
||||||
return await _http_request.patch_http_request("users/%s" % user["id"], body)
|
|
||||||
|
|
||||||
func get_dojo() -> Dictionary:
|
|
||||||
if _dojo.is_empty():
|
|
||||||
var result: Response = await _http_request.get_http_request_sync("dojo")
|
|
||||||
if result.status == OK:
|
|
||||||
_dojo = result.data
|
|
||||||
|
|
||||||
return _dojo
|
|
||||||
|
|
||||||
func get_user() -> Dictionary:
|
|
||||||
if _user.is_empty():
|
|
||||||
var result = await _http_request.get_http_request_sync("users/authName/%s" % user_name)
|
|
||||||
if result.status == OK:
|
|
||||||
_user = result.data
|
|
||||||
return _user
|
|
@ -1,4 +1,4 @@
|
|||||||
|
|
||||||
var status : Error
|
var status : Error
|
||||||
var code : HTTPClient.ResponseCode
|
var code : HTTPClient.ResponseCode
|
||||||
var data : Dictionary
|
var data : Variant
|
||||||
|
@ -0,0 +1,4 @@
|
|||||||
|
[background arg="res://assets/Background/Gymzaal.png" fade="0.0"]
|
||||||
|
join Master 0
|
||||||
|
Master: Dieses Menü ist leider noch eine Baustelle
|
||||||
|
jump main/
|
@ -0,0 +1,8 @@
|
|||||||
|
[background arg="res://assets/Background/Gymzaal.png" fade="0.0"]
|
||||||
|
join Master 0
|
||||||
|
Master: Was möchtest du machen?
|
||||||
|
- Charactere
|
||||||
|
jump characters/
|
||||||
|
- Turniere
|
||||||
|
jump tournaments/
|
||||||
|
[end_timeline]
|
@ -0,0 +1,4 @@
|
|||||||
|
[background arg="res://assets/Background/Gymzaal.png" fade="0.0"]
|
||||||
|
join Master 0
|
||||||
|
Master: Dieses Menü ist leider noch eine Baustelle
|
||||||
|
jump main/
|
Loading…
Reference in new issue