Открыть боковую панель
Левадный Владимир Юрьевич
universo-godot
Коммиты
5039744a
Коммит
5039744a
создал
Май 04, 2020
по автору
magcourier
Просмотр файлов
Заход в станцию при менее 400
владелец
7f6ae75c
Изменения
11
Скрыть пробелы
Построчно
Рядом
blokoj/kosmo/scenoj/menuo.tscn
Просмотр файла @
5039744a
...
...
@@ -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__ = {
...
...
blokoj/kosmo/scenoj/star.tscn
Просмотр файла @
5039744a
...
...
@@ -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__ = {
...
...
blokoj/kosmo/skriptoj/menuo.gd
Просмотр файла @
5039744a
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.
blokoj/kosmo/skriptoj/queries.gd
Просмотр файла @
5039744a
...
...
@@ -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,'
+
...
...
blokoj/kosmo/skriptoj/space.gd
Просмотр файла @
5039744a
...
...
@@ -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'
)
...
...
blokoj/kosmostacioj/skriptoj/CapKosmostacio.gd
Просмотр файла @
5039744a
...
...
@@ -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 (вызывается
...
...
blokoj/objektoj/scenoj/objekto.tscn
Просмотр файла @
5039744a
...
...
@@ -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"]
blokoj/objektoj/skriptoj/objekto_menou.gd
Просмотр файла @
5039744a
...
...
@@ -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.
...
...
blokoj/rajtigo/skriptoj/queries.gd
Просмотр файла @
5039744a
...
...
@@ -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
kerno/menuo/menuo.gd
Просмотр файла @
5039744a
...
...
@@ -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'
)
kerno/menuo/skriptoj/queries.gd
Просмотр файла @
5039744a
...
...
@@ -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.
Сначала завершите редактирование этого сообщения!
Отмена
Пожалуйста,
зарегистрируйтесь
или
войдите
чтобы прокомментировать