Коммит 5039744a создал по автору magcourier's avatar magcourier
Просмотр файлов

Заход в станцию при менее 400

владелец 7f6ae75c
......@@ -19,7 +19,6 @@ layer = 50
margin_left = -1.0
margin_right = 209.0
margin_bottom = 66.0
mouse_filter = 2
items = [ "Двигаться к объекту", null, 0, false, false, 0, 0, null, "", false, "Добавить в маршрут", null, 0, false, false, 1, 0, null, "", false, "Войти в док", null, 0, false, true, 2, 0, null, "", false ]
hide_on_state_item_selection = true
__meta__ = {
......
......@@ -48,6 +48,7 @@ attenuation = 2.0
light_size = 1.0
[node name="Control" type="Control" parent="."]
visible = false
margin_right = 40.0
margin_bottom = 40.0
__meta__ = {
......
extends Control
onready var margin = $"/root/Title/CanvasLayer/UI/Lbar/L_VBox/Objektoj/Window/canvas/MarginContainer"
onready var ship = $"../ship"
func _input(event: InputEvent) -> void:
if Input.is_action_just_pressed("right_click"):
# event.pressed=true
if event is InputEventMouseButton and $"/root/Title/CanvasLayer/UI/Lbar/L_VBox/Objektoj/Window/canvas/MarginContainer".visible:
$canvas/PopupMenu.mouse_filter=2
$canvas/PopupMenu.set_item_disabled(2,true)
# $canvas/PopupMenu.mouse_filter=2
var x = $".".get_global_mouse_position().x
var y = $".".get_global_mouse_position().y
if (margin.margin_top<y) and (y<margin.margin_bottom) and (margin.margin_left<x) and (x<margin.margin_right):
$canvas/PopupMenu.margin_left=x
$canvas/PopupMenu.margin_top=y
$canvas/PopupMenu.visible=true
#если пункт меню - станция
# $"/root/Title/CanvasLayer/UI/Lbar/L_VBox/Objektoj/Window".ItemListContent[index_obj[0]]['koordinatoX']
# #если пункт меню - станция
x = $"/root/Title/CanvasLayer/UI/Lbar/L_VBox/Objektoj/Window/canvas/MarginContainer/VBoxContainer/scroll/ItemList".get_local_mouse_position().x
y = $"/root/Title/CanvasLayer/UI/Lbar/L_VBox/Objektoj/Window/canvas/MarginContainer/VBoxContainer/scroll/ItemList".get_local_mouse_position().y
var index_pos = $"/root/Title/CanvasLayer/UI/Lbar/L_VBox/Objektoj/Window/canvas/MarginContainer/VBoxContainer/scroll/ItemList".get_item_at_position(Vector2(x,y),true)
$"/root/Title/CanvasLayer/UI/Lbar/L_VBox/Objektoj/Window/canvas/MarginContainer/VBoxContainer/scroll/ItemList".select(index_pos)
if Global.objektoj[index_pos]['resurso']['objId'] == 1:#объект станция Espero
#проверяем как далеко от станции и если менее 20, то разрешаем войти
var dist = $"../ship".translation.distance_to(Vector3(
Global.objektoj[index_pos]['koordinatoX'],
Global.objektoj[index_pos]['koordinatoY'],
Global.objektoj[index_pos]['koordinatoZ']
))
if dist<400:
$canvas/PopupMenu.set_item_disabled(2,false)
#проверяем как далеко от станции и если менее 20, то разрешаем войти
# var dist = Vector3()
# сдвиг по всем координатам по целеполаганию полёта к объекту
const translacio = 20
const QueryObject = preload("res://kerno/menuo/skriptoj/queries.gd")
func _on_PopupMenu_index_pressed(index):
var index_obj = $"/root/Title/CanvasLayer/UI/Lbar/L_VBox/Objektoj/Window/canvas/MarginContainer/VBoxContainer/scroll/ItemList".get_selected_items()
print('==index_obj==',index_obj)
if len(index_obj)==0:# когда корабль летит, массив возвращается пустой
return
var koordX = Global.objektoj[index_obj[0]]['koordinatoX'] + translacio
var koordY = Global.objektoj[index_obj[0]]['koordinatoY'] + translacio
var koordZ = Global.objektoj[index_obj[0]]['koordinatoZ'] + translacio
$"../b_itinero/itinero".add_itinero(
'',
Global.objektoj[index_obj[0]]['uuid'],
Global.objektoj[index_obj[0]]['nomo']['enhavo'], #'nomo'
koordX,
koordY,
koordZ,
$"../ship".translation.distance_to(Vector3(koordX,koordY,koordZ))
)
$"../b_itinero/itinero".FillItemList()
if index==0:
# $"../".set_way_point(Vector3(koordX,koordY,koordZ),null)
$"../b_itinero/itinero".komenci_itinero()
# elif index==1:
var x = $"/root/Title/CanvasLayer/UI/Lbar/L_VBox/Objektoj/Window/canvas/MarginContainer/VBoxContainer/scroll/ItemList".get_local_mouse_position().x
var y = $"/root/Title/CanvasLayer/UI/Lbar/L_VBox/Objektoj/Window/canvas/MarginContainer/VBoxContainer/scroll/ItemList".get_local_mouse_position().y
var index_obj = $"/root/Title/CanvasLayer/UI/Lbar/L_VBox/Objektoj/Window/canvas/MarginContainer/VBoxContainer/scroll/ItemList".get_item_at_position(Vector2(x,y),true)
if index == 2:
# Разрегистрируем обработчик сигнала request_completed (вызывается
# по завершении HTTPRequest)
Title.get_node("request").connect('request_completed', Title, '_on_eniri_kosmostacio_request_completed')
var q = QueryObject.new()
# закрываем проект
# добавляем запись в связи, что находимся внутри
var uuid_tasko = ''
if $"../ship".projekto_uuid:
uuid_tasko = $"../b_itinero/itinero".itineroj[0]['uuid_tasko']
var error = Title.get_node("request").request(q.URL_DATA,
Global.backend_headers,
true, 2, q.eniri_kosmostacio(
$"../ship".projekto_uuid,
uuid_tasko,
Global.objektoj[index_obj]['uuid']))
# Если запрос не выполнен из-за какой-то ошибки
# TODO: Такие ошибки наверное нужно как-то выводить пользователю?
if error != OK:
print('Error in GET (_on_eniri_kosmostacio_request_completed) Request.')
Title.CloseWindow()
Global.direktebla_objekto[Global.realeco-2]['kosmo'] = false
# вызываем сцену станции
get_tree().change_scene('res://blokoj/kosmostacioj/CapKosmostacio.tscn')
else:
func _on_PopupMenu_draw():
$canvas/PopupMenu.mouse_filter=0 #для отключения игнорирования меню и его реакции на выбор пунктов
pass # Replace with function body.
var koordX = Global.objektoj[index_obj]['koordinatoX'] + translacio
var koordY = Global.objektoj[index_obj]['koordinatoY'] + translacio
var koordZ = Global.objektoj[index_obj]['koordinatoZ'] + translacio
$"../b_itinero/itinero".add_itinero(
'',
Global.objektoj[index_obj]['uuid'],
Global.objektoj[index_obj]['nomo']['enhavo'], #'nomo'
koordX,
koordY,
koordZ,
$"../ship".translation.distance_to(Vector3(koordX,koordY,koordZ))
)
$"../b_itinero/itinero".FillItemList()
if index==0:
# $"../".set_way_point(Vector3(koordX,koordY,koordZ),null)
$"../b_itinero/itinero".komenci_itinero()
# elif index==1:
func _on_PopupMenu_draw():
# $canvas/PopupMenu.mouse_filter=0 #для отключения игнорирования меню и его реакции на выбор пунктов
pass # Replace with function body.
......@@ -6,26 +6,6 @@ extends Object
const URL = "https://t34.tehnokom.su/api/v1.1/"
# Запрос к API
# func objecto_query(kuboId, statusoId, kategorioId, tipo_id):
# return JSON.print({ "query": "query ($kuboId:Float, $statusoId:Float, "+
# " $realecoId:Float, $kategorioId:Float, $tipoId:Float) " +
# "{ universoObjekto (realeco_Id:$realecoId, kubo_Id: $kuboId, koordinatoX_Gt:-5000000, "+
# " koordinatoY_Gt:-5000000, koordinatoZ_Gt:-5000000) { edges { node { uuid posedantoId "+
# " projekto (statuso_Id: $statusoId, tipo_Id: $tipoId){ "+
# " edges { node { uuid "+
# " tasko (kategorio_Id:$kategorioId){ edges {node { "+
# " uuid finKoordinatoX finKoordinatoY finKoordinatoZ statuso {objId} } } } } } } "+
# " inCosmo nomo { enhavo } priskribo { enhavo } "+
# " resurso { nomo { enhavo } priskribo { enhavo } "+
# " tipo { objId nomo { enhavo } } } "+
# " koordinatoX koordinatoY koordinatoZ "+
# " rotaciaX rotaciaY rotaciaZ } } } }",
# 'variables': {"kuboId":kuboId, "statusoId":statusoId,
# "kategorioId":kategorioId, "tipoId":tipo_id,
# "realecoId":Global.realeco} })
# задаём координаты и угол поворота объекту
func objecto_mutation(uuid, koordX, koordY, koordZ, rotaciaX, rotaciaY, rotaciaZ):
return JSON.print({ 'query': 'mutation ($uuid:UUID, $koordX:Float, $koordY:Float, $koordZ:Float,'+
......
......@@ -139,8 +139,9 @@ func create_ship(objecto):
return ship
ship.translation=Vector3(objecto['koordinatoX'],
objecto['koordinatoY'], objecto['koordinatoZ'])
ship.rotation=Vector3(objecto['rotaciaX'],
objecto['rotaciaY'], objecto['rotaciaZ'])
if objecto['rotaciaX']:
ship.rotation=Vector3(objecto['rotaciaX'],
objecto['rotaciaY'], objecto['rotaciaZ'])
ship.visible=true
ship.uuid=objecto['uuid']
ship.add_to_group('create')
......
......@@ -3,7 +3,6 @@ extends Spatial
const QueryObject = preload("res://kerno/menuo/skriptoj/queries.gd")
func _on_kosmo_pressed():
print('выход в космос')
var q = QueryObject.new()
# Делаем запрос к бэкэнду для получения списка управляемых объектов.
# Ответ будет обрабатываться в функции get_direktebla_request_complete
......@@ -19,6 +18,9 @@ func _on_kosmo_pressed():
Global.direktebla_objekto[Global.realeco-2]['ligiloLigilo']['edges'][0]['node']['posedanto']['koordinatoZ'] + 200
del_uuid = Global.direktebla_objekto[Global.realeco-2]['ligiloLigilo']['edges'][0]['node']['uuid']
kuboId = Global.direktebla_objekto[Global.realeco-2]['ligiloLigilo']['edges'][0]['node']['posedanto']['kubo']['objId']
Global.direktebla_objekto[Global.realeco-2]['rotaciaX'] = 0
Global.direktebla_objekto[Global.realeco-2]['rotaciaY'] = 0
Global.direktebla_objekto[Global.realeco-2]['rotaciaZ'] = 0
Global.direktebla_objekto[Global.realeco-2]['kosmo'] = true
# Разрегистрируем обработчик сигнала request_completed (вызывается
......
......@@ -133,4 +133,3 @@ auto_height = true
[connection signal="pressed" from="canvas/MarginContainer/VBoxContainer/Label/reload" to="." method="_on_reload_pressed"]
[connection signal="pressed" from="canvas/MarginContainer/VBoxContainer/Label/Close_button" to="." method="_on_Close_button_pressed"]
[connection signal="pressed" from="canvas/MarginContainer/VBoxContainer/Label/check" to="." method="_on_check_pressed"]
[connection signal="item_selected" from="canvas/MarginContainer/VBoxContainer/scroll/ItemList" to="." method="_on_ItemList_item_selected"]
......@@ -64,12 +64,6 @@ func _on_reload_pressed():
pass # Replace with function body.
func _on_ItemList_item_selected(index):
# print('выбран = ',index,' nomo=',ItemListContent[index]['nomo'],
# ', uuid=',ItemListContent[index]['uuid'])
pass # Replace with function body.
func _on_check_pressed():
_on_Objekto_draw()
pass # Replace with function body.
......
......@@ -58,56 +58,3 @@ func get_direktebla_query(statusoId, kategorioId, tipoId):
# print("=== get_direktebla_query = ",query)
return query
# === objekt ===
# {koordinatoX:1, koordinatoY:1, koordinatoZ:1, kosmo:False,
# ligilo:{edges:[
# {node:{ligilo:{ligilo:{edges:[...]},
# nomo:{enhavo:Vostok Двигатель}},
# tipo:{objId:1}}}, {node:{ligilo:{ligilo:{edges:[...]},
# nomo:{enhavo:Vostok Двигатель}}, tipo:{objId:1}}},
# {node:{ligilo:{ligilo:{edges:[
# {node:{konektiloLigilo:4, konektiloPosedanto:3,
# ligilo:{uuid:047b37d5-eb15-4548-8eb8-2de6913dd6a3}}},
# {node:{konektiloLigilo:3, konektiloPosedanto:4,
# ligilo:{uuid:a9f5962d-7b7b-4007-a8ae-c07d7a8c2e18}}}
# ]}, nomo:{enhavo:Vostok Грузовой Модуль}},
# tipo:{objId:1}}},
# {node:{ligilo:{ligilo:{edges:[
# {node:{konektiloLigilo:Null, konektiloPosedanto:Null,
# ligilo:{uuid:bc40a651-7415-4b5d-9e89-1f2a9d22cac5}}},
# {node:{konektiloLigilo:1, konektiloPosedanto:2,
# ligilo:{uuid:08d6d319-5d5f-462e-b1be-7532c881ed9c}}}
# ]},
# nomo:{enhavo:Vostok Модуль Кабины}},
# tipo:{objId:1}}}
# ]},
# nomo:{enhavo:Vostok Vasiliy},
# posedanto:{edges:[
# {node:{posedantoUzanto:{siriusoUzanto:{objId:6417}}}}
# ]}, posedantoObjekto:Null,
# priskribo:{enhavo:Базовый космический корабль},
# projekto:{edges:[]},
# realeco:{objId:2},
# resurso:{ligilo:{edges:[
# {node:{ligilo:{nomo:{enhavo:Vostok Модуль Кабины},
# objId:4, priskribo:{enhavo:Базовый модуль кабины кораблей Vostok},
# tipo:{nomo:{enhavo:Космический корабль}, objId:2}}}},
# {node:{ligilo:{nomo:{enhavo:Vostok Грузовой Модуль},
# objId:5, priskribo:{enhavo:Базовый грузовой модуль кораблей Vostok},
# tipo:{nomo:{enhavo:Космический корабль}, objId:2}}}},
# {node:{ligilo:{nomo:{enhavo:Vostok Двигатель},
# objId:6, priskribo:{enhavo:Базовый двигателей кораблей Vostok},
# tipo:{nomo:{enhavo:Космический корабль}, objId:2}}}},
# {node:{ligilo:{nomo:{enhavo:Vostok Двигатель},
# objId:6, priskribo:{enhavo:Базовый двигателей кораблей Vostok},
# tipo:{nomo:{enhavo:Космический корабль}, objId:2}}}}
# ]},
# nomo:{enhavo:Vostok U2},
# objId:3,
# priskribo:{enhavo:Базовый космический корабль},
# tipo:{nomo:{enhavo:Космический корабль}, objId:2}},
# rotaciaX:0, rotaciaY:0, rotaciaZ:0,
# uuid:1790592a-8f10-4ca1-a829-9dced5975504
# :1790592a-8f10-4ca1-a829-9dced5975504
......@@ -49,8 +49,6 @@ func _on_cap_pressed():
get_tree().change_scene('res://blokoj/kosmo/scenoj/space.tscn')
else:
get_tree().change_scene('res://blokoj/kosmostacioj/CapKosmostacio.tscn')
# for sc in $"/root".get_children():
# print(' - scena = = ',sc.name)
if reload:
reloadWindow()
else:
......@@ -103,9 +101,6 @@ func _on_request_request_completed(result, response_code, headers, body):
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
# print('==Global.direktebla_objekto[objekt[node][realeco[objId]]==',
# Global.direktebla_objekto[i])
# Global.direktebla_objekto[objekt['node']['realeco']['objId']-2])
i+=1
# теперь загружаем те объекты, которые из представленных находятся в космосе
var q = QueryObject.new()
......@@ -143,8 +138,8 @@ func get_direktebla_kosmo_request_complete(result, response_code, headers, body)
# по завершении HTTPRequest)
$request.disconnect('request_completed', self, 'get_direktebla_kosmo_request_complete')
func komenci_request_complete(result, response_code, headers, body):
print('сюда попали')
var resp = body.get_string_from_utf8()
var parsed_resp = parse_json(resp)
# Если ответ от бэкэнда содержит данные
......@@ -154,4 +149,14 @@ func komenci_request_complete(result, response_code, headers, body):
if $"/root".get_node_or_null('space'):
$"/root".get_node('space').emit_signal("load_objektoj")
print('сюда попали 2')
# ответ на заход в станцию
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')
......@@ -39,6 +39,35 @@ func go_objekt_kosmo_query(uuid, koordX, koordY, koordZ, rotaciaX, rotaciaY, rot
'variables': {"uuid":uuid, "koordX": koordX, "koordY": koordY, "koordZ": koordZ,
"rotaciaX": rotaciaX, "rotaciaY": rotaciaY, "rotaciaZ": rotaciaZ,
"kuboId":kuboId } })
print('==go_objekt_kosmo_query == ', query)
# print('==go_objekt_kosmo_query == ', query)
return query
# завершение задачи, проекта, запись в таблицу связей, что находимся внутри другого объекта
# station_uuid - в какой станции находимся
func eniri_kosmostacio(projekto_uuid, tasko_uuid, station_uuid):
var statusoId = 4
var tipoId = 3 #находится внутри
var param = ''
var mutateProjekto = ''
if projekto_uuid:
param = ', $tasko_uuid:UUID, $projekto_uuid:UUID, $statusoId:Int'
mutateProjekto = 'redaktuUniversoTaskoj (uuid: $tasko_uuid, statusoId:$statusoId) { status '
mutateProjekto = mutateProjekto + ' message universoTaskoj { uuid } } '
mutateProjekto = mutateProjekto + 'redaktuUniversoProjekto (uuid: $projekto_uuid, '
mutateProjekto = mutateProjekto + ' statusoId:$statusoId) { status '
mutateProjekto = mutateProjekto + ' message universoProjekto { uuid } } '
return JSON.print({ 'query': 'mutation ($posedantoUuid:String, $ligiloUuid:String, '+
' $tipoId:Int '+param+')'+
'{ '+
' redaktuUniversoObjektoLigiloj ( posedantoUuid:$posedantoUuid,' +
' ligiloUuid:$ligiloUuid, tipoId:$tipoId) { message status' +
' universoObjektojLigiloj{ uuid } }' +
mutateProjekto +
'}',
'variables': {"tasko_uuid":tasko_uuid, "statusoId": statusoId, "projekto_uuid":projekto_uuid,
"posedantoUuid":station_uuid,
"ligiloUuid":Global.direktebla_objekto[Global.realeco-2]['uuid'],
"tipoId":tipoId } })
Поддерживает Markdown
0% или .
You are about to add 0 people to the discussion. Proceed with caution.
Сначала завершите редактирование этого сообщения!
Пожалуйста, зарегистрируйтесь или чтобы прокомментировать