Added more timelines renamed Global to API
							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