extends Node var load_scene : String func _on_Profilo_pressed(): get_tree().change_scene('res://blokoj/profilo/profilo.tscn') func _on_Resurso_Center_pressed(): $CanvasLayer/UI/Lbar/L_VBox/RCentro/Window.popup_centered() func _on_Objektoj_pressed(): $CanvasLayer/UI/Lbar/L_VBox/Objektoj/Window/canvas/MarginContainer.set_visible(true) func _on_Servilo_pressed(): get_tree().change_scene('res://blokoj/servilo/servilo.tscn') func set_visible(visible: bool): $CanvasLayer/UI.visible = visible func _on_Taskoj_pressed(): $CanvasLayer/UI/Lbar/L_VBox/Taskoj/Window/canvas/MarginContainer.set_visible(true) func CloseWindow(): $CanvasLayer/UI/Lbar/L_VBox/Taskoj/Window/canvas/MarginContainer.set_visible(false) $CanvasLayer/UI/Lbar/L_VBox/Objektoj/Window/canvas/MarginContainer.set_visible(false) func reloadWindow(): $CanvasLayer/UI/Lbar/L_VBox/Taskoj/Window._on_Taskoj_draw() $CanvasLayer/UI/Lbar/L_VBox/Objektoj/Window._on_Objekto_draw() func _on_cap_pressed(): if Global.loading: #здесь вызывать задержку надо var reload = false if Global.realeco!=3: Global.realeco = 3 reload = true # при переключении миров закрываем окна ресурсов, объектов, т.к. они расчитаны на конкретный мир CloseWindow() # если объекта не будет в космосе, то загружать станцию if Global.direktebla_objekto[Global.realeco-2]['kosmo']: get_tree().change_scene('res://blokoj/kosmo/scenoj/space.tscn') else: get_tree().change_scene('res://blokoj/kosmostacioj/CapKosmostacio.tscn') if reload: reloadWindow() else: print('Ещё не загружено') func _on_com_pressed(): if Global.loading: #здесь вызывать задержку надо var reload = false if Global.realeco!=2: Global.realeco = 2 reload = true # при переключении миров закрываем окна ресурсов, объектов, т.к. они расчитаны на конкретный мир CloseWindow() # если объекта не будет в космосе, то загружать станцию if Global.direktebla_objekto[Global.realeco-2]['kosmo']: get_tree().change_scene('res://blokoj/kosmo/scenoj/space.tscn') else: get_tree().change_scene('res://blokoj/kosmostacioj/CapKosmostacio.tscn') # get_tree().change_scene("res://blokoj/kosmostacioj/ComKosmostacio.tscn") if reload: reloadWindow() else: print('Ещё не загружено') func _on_real_pressed(): var reload = false if Global.realeco!=1: Global.realeco = 1 reload = true # при переключении миров закрываем окна ресурсов, объектов, т.к. они расчитаны на конкретный мир CloseWindow() get_tree().change_scene("res://blokoj/kosmostacioj/Kosmostacio.tscn") if reload: reloadWindow() const QueryObject = preload("res://kerno/menuo/skriptoj/queries.gd") func _on_request_request_completed(result, response_code, headers, body): var resp = body.get_string_from_utf8() var parsed_resp = parse_json(resp) # Если ответ от бэкэнда содержит данные if parsed_resp.has('data'): var i=0 for objekt in parsed_resp['data']['universoObjekto']['edges']: # Global.direktebla_objekto.append(objekt['node']) Global.direktebla_objekto[objekt['node']['realeco']['objId']-2]=objekt['node'] # Global.direktebla_objekto[i]['kosmo'] = false Global.direktebla_objekto[objekt['node']['realeco']['objId']-2]['kosmo'] = false i+=1 # теперь загружаем те объекты, которые из представленных находятся в космосе var q = QueryObject.new() # Разрегистрируем обработчик сигнала request_completed (вызывается # по завершении HTTPRequest) $request.disconnect('request_completed', self, '_on_request_request_completed') # Регистрируем новый обработчик (для обработки ответа на запрос по управляемым объектам) $request.connect('request_completed', self, 'get_direktebla_kosmo_request_complete') # Делаем запрос к бэкэнду для получения списка управляемых объектов. # Ответ будет обрабатываться в функции get_direktebla_request_complete var error = $request.request(q.URL_DATA, Global.backend_headers, true, 2, q.get_direktebla_kosmo_query()) # Если запрос не выполнен из-за какой-то ошибки # TODO: Такие ошибки наверное нужно как-то выводить пользователю? if error != OK: print('Error in GET (direktebla) Request.') func get_direktebla_kosmo_request_complete(result, response_code, headers, body): var resp = body.get_string_from_utf8() var parsed_resp = parse_json(resp) # Если ответ от бэкэнда содержит данные if parsed_resp.has('data'): var uuid = [] for pars in parsed_resp['data']['filteredUniversoObjekto']['edges']: uuid.append(pars['node']['uuid']) for objekt in Global.direktebla_objekto: if objekt.has('uuid'): if objekt['uuid'] in uuid: objekt['kosmo']=true Global.loading = true # Разрегистрируем обработчик сигнала request_completed (вызывается # по завершении HTTPRequest) $request.disconnect('request_completed', self, 'get_direktebla_kosmo_request_complete') func komenci_request_complete(result, response_code, headers, body): var resp = body.get_string_from_utf8() var parsed_resp = parse_json(resp) # Если ответ от бэкэнда содержит данные # if parsed_resp.has('data'): $request.disconnect('request_completed', self, 'komenci_request_complete') if $"/root".get_node_or_null('space'): $"/root".get_node('space').emit_signal("load_objektoj") # ответ на заход в станцию func _on_eniri_kosmostacio_request_completed(result, response_code, headers, body): var resp = body.get_string_from_utf8() var parsed_resp = parse_json(resp) # Если ответ от бэкэнда содержит данные if parsed_resp.has('data'): pass $request.disconnect('request_completed', self, '_on_eniri_kosmostacio_request_completed')