Коммит aad590a3 создал по автору Vladimir levadnij's avatar Vladimir levadnij
Просмотр файлов

Merge branch 'develop' into 'master'

#131 Формирование релиза проекта версии 0.9.0-alfo

See merge request tehnokom/universo!234
владельцы 083754d9 ecd75c42
......@@ -25,7 +25,7 @@ frame_1/delay_sec = 0.0
frame_2/texture = ExtResource( 6 )
frame_2/delay_sec = 0.0
[sub_resource type="GDScript" id=4]
[sub_resource type="GDScript" id=3]
script/source = "#disco
extends TextureButton
......@@ -36,7 +36,7 @@ func _on_disco_mouse_entered():
get_node(\"/root/Title/gramofono/regpanelo/fono/pauzo\").set_visible(true)
"
[sub_resource type="StyleBoxEmpty" id=3]
[sub_resource type="StyleBoxEmpty" id=4]
[node name="gramofono" type="AudioStreamPlayer"]
stream = ExtResource( 14 )
......@@ -75,7 +75,7 @@ margin_bottom = 27.0
rect_min_size = Vector2( 27, 27 )
mouse_default_cursor_shape = 2
texture_normal = SubResource( 2 )
script = SubResource( 4 )
script = SubResource( 3 )
__meta__ = {
"_edit_lock_": true,
"_edit_use_anchors_": false
......@@ -136,7 +136,7 @@ margin_left = 52.0
margin_top = -48.0
margin_right = 84.8
margin_bottom = -16.0
custom_styles/panel = SubResource( 3 )
custom_styles/panel = SubResource( 4 )
__meta__ = {
"_edit_lock_": true,
"_edit_use_anchors_": false
......
......@@ -6,7 +6,7 @@ extends TextureButton
func _on_pauzo_pressed():
get_node("/root/Title/gramofono/regpanelo/fono/pauzo").set_visible(false)
get_node("/root/Title/gramofono/regpanelo/fono/play").set_visible(true)
get_node("/root/Title/gramofono").stop()
get_node("/root/Title/gramofono").stream_paused = true
#если при наведении мышки клик не совершён и указатель выведен из
#области pauzo, скрывается pauzo и отображается disco
......
......@@ -6,4 +6,4 @@ extends TextureButton
func _on_play_pressed():
get_node("/root/Title/gramofono/regpanelo/fono/play").set_visible(false)
get_node("/root/Title/gramofono/regpanelo/fono/disco").set_visible(true)
get_node("/root/Title/gramofono").play()
get_node("/root/Title/gramofono").stream_paused = false
[gd_scene load_steps=7 format=2]
[ext_resource path="res://kerno/fenestroj/tipo_d1.tscn" type="PackedScene" id=1]
[ext_resource path="res://blokoj/items/scriptoj/items_menuo.gd" type="Script" id=2]
[ext_resource path="res://kerno/menuo/resursoj/icons/tab2a.png" type="Texture" id=3]
[ext_resource path="res://kerno/menuo/resursoj/icons/tab3a.png" type="Texture" id=4]
[ext_resource path="res://kerno/menuo/resursoj/icons/tab1a.png" type="Texture" id=5]
[ext_resource path="res://blokoj/items/items_tree.gd" type="Script" id=6]
[node name="items_menuo" instance=ExtResource( 1 )]
script = ExtResource( 2 )
[node name="VBox" parent="." index="0"]
margin_right = 400.0
margin_bottom = 400.0
[node name="HBox_top" parent="VBox" index="0"]
margin_right = 400.0
[node name="top_texture2" parent="VBox/HBox_top" index="1"]
margin_right = 400.0
[node name="HBox_buttons" parent="VBox/HBox_top/top_texture2" index="0"]
anchor_left = -3.22258e-12
anchor_right = 1.0
margin_right = 1.0
[node name="menuo_name" parent="VBox/HBox_top/top_texture2/HBox_buttons" index="0"]
margin_right = 356.0
text = "Имущество"
[node name="Button_fix" parent="VBox/HBox_top/top_texture2/HBox_buttons" index="1"]
visible = false
[node name="Button_" parent="VBox/HBox_top/top_texture2/HBox_buttons" index="2"]
visible = false
[node name="Button_full" parent="VBox/HBox_top/top_texture2/HBox_buttons" index="3"]
visible = false
[node name="Button_x" parent="VBox/HBox_top/top_texture2/HBox_buttons" index="4"]
margin_left = 360.0
margin_right = 379.0
[node name="body_texture" parent="VBox" index="1"]
margin_right = 400.0
margin_bottom = 378.0
[node name="HSplit" parent="VBox/body_texture" index="1"]
custom_constants/autohide = 0
[node name="VBoxContainer" type="VBoxContainer" parent="VBox/body_texture/HSplit" index="0"]
margin_right = 210.0
margin_bottom = 344.0
size_flags_horizontal = 3
[node name="HBoxContainer" type="HBoxContainer" parent="VBox/body_texture/HSplit/VBoxContainer" index="0"]
margin_right = 210.0
margin_bottom = 23.0
alignment = 2
[node name="Label" type="Label" parent="VBox/body_texture/HSplit/VBoxContainer/HBoxContainer" index="0"]
margin_top = 3.0
margin_right = 65.0
margin_bottom = 20.0
size_flags_horizontal = 9
text = "Фильтр:"
[node name="Button" type="Button" parent="VBox/body_texture/HSplit/VBoxContainer/HBoxContainer" index="1"]
margin_left = 69.0
margin_right = 99.0
margin_bottom = 23.0
rect_min_size = Vector2( 30, 0 )
icon = ExtResource( 5 )
flat = true
align = 2
expand_icon = true
__meta__ = {
"_edit_use_anchors_": false
}
[node name="Button2" type="Button" parent="VBox/body_texture/HSplit/VBoxContainer/HBoxContainer" index="2"]
margin_left = 103.0
margin_right = 133.0
margin_bottom = 23.0
rect_min_size = Vector2( 30, 0 )
icon = ExtResource( 3 )
flat = true
align = 2
expand_icon = true
__meta__ = {
"_edit_use_anchors_": false
}
[node name="Button3" type="Button" parent="VBox/body_texture/HSplit/VBoxContainer/HBoxContainer" index="3"]
margin_left = 137.0
margin_right = 167.0
margin_bottom = 23.0
rect_min_size = Vector2( 30, 0 )
icon = ExtResource( 4 )
flat = true
align = 2
expand_icon = true
__meta__ = {
"_edit_use_anchors_": false
}
[node name="Button4" type="Button" parent="VBox/body_texture/HSplit/VBoxContainer/HBoxContainer" index="4"]
margin_left = 171.0
margin_right = 210.0
margin_bottom = 23.0
size_flags_horizontal = 9
text = "Всё"
flat = true
align = 2
expand_icon = true
__meta__ = {
"_edit_use_anchors_": false
}
[node name="ItemList" type="ItemList" parent="VBox/body_texture/HSplit/VBoxContainer" index="1"]
visible = false
margin_top = 27.0
margin_right = 388.0
margin_bottom = 339.0
size_flags_horizontal = 3
size_flags_vertical = 3
items = [ "Элемент 0", ExtResource( 3 ), false, "Элемент 1", ExtResource( 4 ), false, "Элемент 2", ExtResource( 5 ), false, "Элемент 3", ExtResource( 3 ), false, "Элемент 4", null, false ]
allow_reselect = true
fixed_icon_size = Vector2( 15, 15 )
[node name="Tree" type="Tree" parent="VBox/body_texture/HSplit/VBoxContainer" index="2"]
margin_top = 27.0
margin_right = 210.0
margin_bottom = 344.0
size_flags_horizontal = 3
size_flags_vertical = 3
allow_reselect = true
allow_rmb_select = true
script = ExtResource( 6 )
[node name="ItemList2" type="ItemList" parent="VBox/body_texture/HSplit" index="1"]
margin_left = 222.0
margin_right = 388.0
margin_bottom = 344.0
size_flags_horizontal = 3
size_flags_vertical = 3
[node name="HBox_bottom" parent="VBox" index="2"]
margin_top = 378.0
margin_right = 400.0
margin_bottom = 400.0
[node name="bottom_texture1" parent="VBox/HBox_bottom" index="0"]
margin_right = 378.0
[node name="bottom_texture2" parent="VBox/HBox_bottom" index="1"]
margin_left = 378.0
margin_right = 400.0
extends Tree
func _ready():
var root = self.create_item()
root.set_text(0, 'Космические корабли')
var child1 = self.create_item(root)
child1.set_text(0, 'Грузовые космические корабли')
var subchild1 = self.create_item(child1)
subchild1.set_text(0, 'Типовые грузовые космические корабли')
extends "res://kerno/fenestroj/tipo_d1.gd"
func _ready():
pass
......@@ -79,13 +79,13 @@ func go_kosmostacioj():
if Global.fenestro_itinero.projekto_itineroj_uuid:
uuid_tasko = Global.fenestro_itinero.itineroj.front()['uuid_tasko']
var id = Net.get_current_query_id()
Net.net_id_clear.push_back(id)
# нужно получить в ответ uuid связи
Title.id_ligilo = Net.get_current_query_id()
# Делаем запрос к бэкэнду
Net.send_json(q.eniri_kosmostacio_ws(
Global.fenestro_itinero.projekto_itineroj_uuid,
uuid_tasko,
Global.objektoj[index_pos]['uuid'],id))
Global.objektoj[index_pos]['uuid'],Title.id_ligilo))
# добавляем в данные пользователя о станции для последующего выхода
if !Global.direktebla_objekto[Global.realeco-2].get('ligiloLigilo'):
......@@ -106,6 +106,7 @@ func go_kosmostacioj():
# выбрали позицию в меню
func _on_PopupMenu_index_pressed(index):
# warning-ignore:unused_variable
var ship = $"../".get_node("ship")
var objekto
# вычисляем объект в космосе
......
......@@ -43,7 +43,7 @@ func instalo_projekto_json(objektoUuid, kom_koordX, kom_koordY, kom_koordZ,
return query
# записываем список задач с их владельцами и текущие координаты объекту
# записываем список задач с их владельцами
func instalo_tasko_posedanto_koord(uuid, projekto_uuid, kom_koordX, kom_koordY, kom_koordZ, itineroj, id=0):
# создаём список задач, создаём владельца проекта, устанавливаем координаты объекту
var tipoId = 2
......@@ -88,9 +88,7 @@ func instalo_tasko_posedanto_koord(uuid, projekto_uuid, kom_koordX, kom_koordY,
'$komKoordinatoX:[Float], $komKoordinatoY:[Float], $komKoordinatoZ:[Float], $tipoPosedantoId:Int,' +
'$fin_koordX:[Float], $fin_koordY:[Float], $fin_koordZ:[Float], $pozicio:[Int], $statusoPosedantoId:Int,' +
'$objektoUuid:String, $realecoId:Int)'+
' { redaktuUniversoObjekto ( uuid: $uuid, koordinatoX: $koordX, koordinatoY: $koordY, '+
' koordinatoZ: $koordZ ) { status message universoObjektoj { uuid } } '+
'redaktuKreiUniversoTaskojPosedanto (projektoUuid: $projekto_uuid, tipoId:$tipoId, kategorio:$kategorio, nomo:$nomo, '+
' { redaktuKreiUniversoTaskojPosedanto (projektoUuid: $projekto_uuid, tipoId:$tipoId, kategorio:$kategorio, nomo:$nomo, '+
' priskribo:$priskribo, statusoId:$statusoId, pozicio:$pozicio, komKoordinatoX:$komKoordinatoX,'+
' komKoordinatoY:$komKoordinatoY, komKoordinatoZ:$komKoordinatoZ, finKoordinatoX:$fin_koordX,'+
' finKoordinatoY:$fin_koordY, finKoordinatoZ:$fin_koordZ, posedantoStatusoId:$statusoPosedantoId,'+
......@@ -128,9 +126,7 @@ func instalo_tasko_koord_json(uuid, projekto_uuid, kom_koordX, kom_koordY, kom_k
'$fin_koordX:Float, $fin_koordY:Float, $fin_koordZ:Float, $projektoUuid: String, '+
'$posedantoTipoId:Int, $posedantoStatusoId:Int, $objektoUuid:String, $UzantoId:Int'+
'$realecoId:Int)'+
'{ redaktuUniversoObjekto ( uuid: $uuid, koordinatoX: $koordX, koordinatoY: $koordY, '+
' koordinatoZ: $koordZ, realecoId:$realecoId ) { status message universoObjektoj { uuid } } '+
'redaktuUniversoTaskoj (projektoUuid: $projektoUuid, tipoId:$tipoId, kategorio:$kategorio, nomo:$nomo, '+
'{ redaktuUniversoTaskoj (projektoUuid: $projektoUuid, tipoId:$tipoId, kategorio:$kategorio, nomo:$nomo, '+
' priskribo:$priskribo, statusoId:$statusoId, publikigo:true, komKoordinatoX:$koordX,'+
' komKoordinatoY:$koordY, komKoordinatoZ:$koordZ, finKoordinatoX:$fin_koordX,'+
' finKoordinatoY:$fin_koordY, finKoordinatoZ:$fin_koordZ, posedantoTipoId:$posedantoTipoId, '+
......@@ -155,6 +151,8 @@ func instalo_tasko_koord_json(uuid, projekto_uuid, kom_koordX, kom_koordY, kom_k
return query
# подписка на действия в кубе
func kubo_json(id=0):
if !id:
......@@ -177,13 +175,17 @@ func kubo_json(id=0):
" stato{objId potenco integreco statoAntaua {integreco} "+
" statoSekva{integreco}}" +
" resurso{objId tipo{objId}}" +
" ligilo{edges{node{ "+
" ligiloLigilo{edges{node{ uuid "+
" tipo {objId} " +
" posedanto{ kubo {objId} koordinatoX koordinatoY " +
" koordinatoZ uuid nomo {enhavo} }}}}" +
" ligilo{edges{node{ uuid"+
" posedantoStokejo {uuid}" +
" konektiloPosedanto konektiloLigilo tipo{objId}"+
" ligilo{ uuid integreco volumenoInterna volumenoEkstera volumenoStokado nomo{enhavo} resurso{objId} "+
" stato{objId potenco statoAntaua {integreco} "+
" statoSekva{integreco}}" +
" ligilo{edges{node{" +
" ligilo{edges{node{ uuid " +
" posedantoStokejo {uuid}" +
" konektiloPosedanto konektiloLigilo tipo{objId} " +
" ligilo{ uuid integreco volumenoInterna volumenoEkstera volumenoStokado " +
......@@ -204,8 +206,10 @@ func kubo_json(id=0):
' posedanto{edges{node{ posedantoObjekto{uuid} }}}' +
' komKoordinatoZ finKoordinatoX finKoordinatoY '+
' finKoordinatoZ pozicio statuso{objId} kategorio { '+
' edges { node { objId } } }} } '+
'}',
' edges { node { objId } } }} '+
' mastro {uuid nomo{enhavo}}' +
' posedi {uuid nomo {enhavo}}' +
'} }',
'variables': {"kuboj": Global.kubo, "realeco": Global.realeco } }})
# if Global.logs:
# print('=== kubo_json =query= ',query)
......
......@@ -69,6 +69,7 @@ func _on_data():
sxangxi_tasko(on_data['payload']['data'])
elif on_data['payload']['data']['universoObjektoEventoj']['evento']=='kubo_objekto':
# изменение по объекту
# print('=== редактируем объект по подписке ===',on_data['payload']['data']['universoObjektoEventoj']['objekto']['uuid'])
sxangxi_objekto(on_data['payload']['data'])
Net.data_server.remove(i_data_server)
i_data_server += 1
......@@ -88,11 +89,21 @@ func sercxado_uuid(uuid, objekt):
return result
# поиск объекта по uuid
# поиск объекта, их частей и вложенных по uuid
func sercxo_objekto_uuid(uuid):
for ch in get_children():
if ch.is_in_group('create'):
if ch.uuid == uuid:
if (ch.uuid == uuid):
return ch
return null
# поиск объекта, их частей и вложенных по uuid
func sercxo_objektoj_uuid(uuid, uuid_mastro, uuid_posedi):
for ch in get_children():
if ch.is_in_group('create'):
if (ch.uuid == uuid_mastro) or (ch.uuid == uuid_posedi) or\
(ch.uuid == uuid):
return ch
return null
......@@ -135,16 +146,22 @@ func sxangxi_objekto(on_data):
# if Global.logs:
# print('===sxangxi_objekto==on_data=',on_data)
var uuid = on_data['universoObjektoEventoj']['objekto']['uuid']
var objekto = sercxo_objekto_uuid(uuid)
var uuid_mastro
var uuid_posedi
if on_data['universoObjektoEventoj']['mastro']:
uuid_mastro = on_data['universoObjektoEventoj']['mastro']['uuid']
if on_data['universoObjektoEventoj']['posedi']:
uuid_posedi = on_data['universoObjektoEventoj']['posedi']['uuid']
var objekto = sercxo_objektoj_uuid(uuid, uuid_mastro, uuid_posedi)
if objekto: # объект в космосе найден
# если объект, которым управляем
if Global.logs:
print('===objekto==',uuid)
sxangxi_instance(objekto, on_data['universoObjektoEventoj']['objekto'])
# передавать и два внешних
sxangxi_instance(objekto, on_data['universoObjektoEventoj'])
else: # ранее объекта не было - добавляем его
if Global.logs:
print('ранее объекта не было - добавляем его = ' ,on_data)
print('ранее объекта не было - добавляем его = ' )
analizo_item(on_data['universoObjektoEventoj']['objekto'])
......@@ -355,6 +372,8 @@ func krei_asteroido(asteroido,stato,tipo):
# функция анализа и добавления объекта в космос на основе пришедшей инфы с сервера
func analizo_item(item):
# if Global.logs:
# print('===analizo_item=',item)
if item['resurso']['objId'] == 1:#объект станция Espero
var state = espero.instance()
add_objekto(state,item)
......@@ -384,13 +403,87 @@ func analizo_item(item):
ast.add_to_group('asteroidoj')
# изменить данные по объекту
# поиск вложенного объекта
func sergxo_enmetajxo_objekto(objekto, item):
for obj in objekto['ligilo']['edges']:
if item['posedi']['uuid'] == obj['node']['ligilo']['uuid']:
return obj['node']['ligilo']
elif len(obj['node']['ligilo']['ligilo']['edges'])>0:
var result = sergxo_enmetajxo_objekto(obj['node']['ligilo'], item)
if result:
return result
return false
# изменяем вложенный объект
func sxangxi_enmetajxo_objekto(objekto, item):
#груз в связи. на 16.08.20 - руда в астероиде или на складе корабля
# ищем, есть ли такой объект в связи
var sxangxi_obj
# наличие в первом уровне, а ещё есть и второй уровень - внутри грузового модуля
# объект в котором ресурс, передаётся во втором параметре - posedi
# Находим объект, в котором ресурс
if item['posedi']['uuid'] == item['mastro']['uuid']:
# ресурс находится в гланом объекте
sxangxi_obj = objekto['objekto']
else:
# ресурс где-то во вложенном объекте, ищём в каком
sxangxi_obj = sergxo_enmetajxo_objekto(objekto['objekto'],item)
var trovigxo = false # наличие
for obj in sxangxi_obj['ligilo']['edges']:
#ищем ресурс в переменной
if obj['node']['ligilo']['uuid'] == item['objekto']['uuid']:
# вносим изменения по данному объекту
obj['node']['ligilo']['integreco'] = item['objekto']['integreco']
obj['node']['ligilo']['volumenoInterna'] = item['objekto']['volumenoInterna']
obj['node']['ligilo']['volumenoEkstera'] = item['objekto']['volumenoEkstera']
obj['node']['ligilo']['volumenoStokado'] = item['objekto']['volumenoStokado']
trovigxo = true
# ищем модуль
var modulo = null
for ch in objekto.get_children():
if ch.get('uuid'):
if (ch.uuid == item['posedi']['uuid']):
modulo = ch
if trovigxo:
# добавляем данныее
ch.sxangxi_objekto(item)
else:
ch.krei_objekto(item)
break
if !trovigxo:
# если нет такого объекта, то добавляем его
sxangxi_obj['ligilo']['edges'].push_back({
'node': {
'uuid': item['objekto']['ligiloLigilo']['edges'].front()['node']['uuid'],
'tipo': item['objekto']['ligiloLigilo']['edges'].front()['node']['tipo'].duplicate(true),
'ligilo': {
'uuid': item['objekto']['uuid'],
'integreco': item['objekto']['integreco'],
'nomo': {'enhavo': item['objekto']['nomo']['enhavo']},
'volumenoInterna': item['objekto']['volumenoInterna'],
'volumenoEkstera': item['objekto']['volumenoEkstera'],
'volumenoStokado': item['objekto']['volumenoStokado'],
'resurso': {'objId': item['objekto']['resurso']['objId']}
}
}
})
# изменить данные по объекту, который есть в космосе
func sxangxi_instance(objekto, item):
if not item['kubo']: # объект исчез из космоса
# если это внутри космического объекта
if item['mastro']:
sxangxi_enmetajxo_objekto(objekto, item)
if objekto == $ship: # если это управляемый корабль
# print('НАШ КОРАБЬ')
Title.get_node("CanvasLayer/UI/konservejo/konservejo").FillItemList()
return
if not item['objekto']['kubo']: # объект исчез из космоса
# удаляем из списка объектов в космосе
var i = 0
for obj in Global.objektoj:
if item['uuid'] == obj['uuid']:
if item['objekto']['uuid'] == obj['uuid']:
Global.objektoj.remove(i)
break
i += 1
......@@ -398,49 +491,52 @@ func sxangxi_instance(objekto, item):
objekto.queue_free()
return
# уточняем координаты
var distance_to = objekto.translation.distance_to(Vector3(item['koordinatoX'],
item['koordinatoY'], item['koordinatoZ']))
if Global.logs:
print('===translation.distance_to=',distance_to)
print('===sxipo =',objekto.translation,'=uuid=',objekto.uuid)
print('===ship =',$ship.translation,'=uuid=',$ship.uuid)
print('===server =',Vector3(item['koordinatoX'],
item['koordinatoY'], item['koordinatoZ']))
var distance_to = objekto.translation.distance_to(Vector3(item['objekto']['koordinatoX'],
item['objekto']['koordinatoY'], item['objekto']['koordinatoZ']))
# if Global.logs:
# print('===translation.distance_to=',distance_to)
# print('===sxipo =',objekto.translation,'=uuid=',objekto.uuid)
# print('===ship =',$ship.translation,'=uuid=',$ship.uuid)
# print('===server =',Vector3(item['objekto']['koordinatoX'],
# item['objekto']['koordinatoY'], item['objekto']['koordinatoZ']))
if distance_to > 2000:# не помогает на дистанции разница увеличивается
objekto.translation=Vector3(item['koordinatoX'],
item['koordinatoY'], item['koordinatoZ'])
objekto.rotation=Vector3(item['rotaciaX'],
item['rotaciaY'], item['rotaciaZ'])
objekto.integreco = item['integreco']
objekto.translation=Vector3(item['objekto']['koordinatoX'],
item['objekto']['koordinatoY'], item['objekto']['koordinatoZ'])
objekto.rotation=Vector3(item['objekto']['rotaciaX'],
item['objekto']['rotaciaY'], item['objekto']['rotaciaZ'])
# print('===item.inte=',item['objekto']['integreco'])
objekto.integreco = item['objekto']['integreco']
objekto.objekto['integreco'] = item['objekto']['integreco']
# print('===nomo=',objekto.o)
# if item['resurso']['objId'] == 1:#объект станция Espero
# var state = espero.instance()
# add_objekto(state,item)
# state.add_to_group('state')
if (item['resurso']['tipo']['objId'] == 2)and(item['koordinatoX']):# тип - корабль
if (item['objekto']['resurso']['tipo']['objId'] == 2)and(item['objekto']['koordinatoX']):# тип - корабль
# проверяем, нужно ли менять визауализацию объекта
if objekto == get_node('ship'): #это управляемый объект
print('попали в данные управляемого объекта')
# print(' ===item=',item)
return
else:
if objekto.objekto['stato']['objId'] == item['stato']['objId']:
if objekto.objekto['stato']['objId'] == item['objekto']['stato']['objId']:
# print('оставляем визуализацию как есть')
return
if item['stato']['objId']==5:# полностью разрушенный корабль
if item['objekto']['stato']['objId']==5:# полностью разрушенный корабль
# разрушаем все части корабля
for ch in objekto.get_children():
if ch is CollisionShape:
ch.queue_free()
# добавляем осколки
objekto.add_child(debris.instance())
objekto.objekto['stato']['objId'] = item['stato']['objId']
objekto.objekto['stato']['objId'] = item['objekto']['stato']['objId']
elif ((item['resurso']['objId'] == 7) or\
((item['resurso']['objId'] >= 20) and\
(item['resurso']['objId'] <= 28))) and\
(item['koordinatoX']):# тип - астероид
elif ((item['objekto']['resurso']['objId'] == 7) or\
((item['objekto']['resurso']['objId'] >= 20) and\
(item['objekto']['resurso']['objId'] <= 28))) and\
(item['objekto']['koordinatoX']):# тип - астероид
# проверить, нужно ли менять визауализацию объекта
if objekto.objekto['stato']['objId'] == item['stato']['objId']:
if objekto.objekto['stato']['objId'] == item['objekto']['stato']['objId']:
# print('оставляем визуализацию как есть')
return
# else:
......@@ -454,8 +550,8 @@ func sxangxi_instance(objekto, item):
break
old_ast.queue_free()
# подгружаем в зависимости от состояния модификации астероида грузим картинку
krei_asteroido(objekto,item['stato']['objId'],item['resurso']['objId'])
objekto.objekto['stato']['objId'] = item['stato']['objId']
krei_asteroido(objekto,item['objekto']['stato']['objId'],item['objekto']['resurso']['objId'])
objekto.objekto['stato']['objId'] = item['objekto']['stato']['objId']
func _on_space_load_objektoj():
......
......@@ -101,6 +101,7 @@ mesh = SubResource( 8 )
material/0 = ExtResource( 1 )
[node name="tubo" parent="laser" instance=ExtResource( 3 )]
transform = Transform( -0.999973, 0, 0.00733026, 0, 1, 0, -0.00733026, 0, -0.999973, 0, 0, 0 )
[node name="gun_body" type="MeshInstance" parent="."]
visible = false
......
......@@ -161,6 +161,9 @@ const QueryObject = preload("queries.gd")
# отправляем на сервер повреждение от выстрела
func integreco_shanghi(nombro):
if !nombro:
print('не указана мощность выстрела')
return
# print('===target.integreco-potenco=',target.integreco-potenco)
if Global.server:
var q = QueryObject.new()
......@@ -178,17 +181,30 @@ func integreco_shanghi(nombro):
))
return
# если не астероид
if target.objekto['resurso']['objId']!=7: # не простой астероид
if not((target.objekto['resurso']['objId']==7) or\
((target.objekto['resurso']['objId']>=20)and\
(target.objekto['resurso']['objId']<=28))): # не простой астероид
print('это не астероид')
return
# если астероид
# если есть руда в астероиде
# хватит-ли места на все руды на складе корабля?
print('===nombro=',nombro)
print('===target.objekto[integreco]=',target.objekto['integreco'])
print('===target.objekto[volumenoEkstera]=',target.objekto['volumenoEkstera'])
# print('===nombro=',nombro)
# print('===target.objekto[integreco]=',target.objekto['integreco'])
# print('===target.objekto[volumenoEkstera]=',target.objekto['volumenoEkstera'])
# вычисляем сколько можем добыть руды от выстрела
var volumeno = nombro / (target.objekto['integreco'] / target.objekto['volumenoEkstera'])
print('===volumeno=',volumeno)
# print('===volumeno=',volumeno)
# коэффициент потерь от лазера
var koef_weapon = 1.0
# добавить зависимость от типа добывающего лазера
# if
koef_weapon /= 2.0
# коэффициент потерь от добывающего дрона
var koef_dronej = 0.5
# итого добыча от выстрела
volumeno *= koef_dronej * koef_weapon
# print('===volumeno2=',volumeno)
# проверяем, хватит-ли места на все руды на складе корабля
# находим склад
var konservejo
......@@ -205,31 +221,31 @@ func integreco_shanghi(nombro):
for kolvo in konservejo.objekto_modulo['ligilo']['edges']:
if kolvo['node']['tipo']['objId']==3: # Находится внутри
volumeno_stokado += kolvo['node']['ligilo']['volumenoStokado']
print('===volumeno_stokado=',volumeno_stokado)
# print('===volumeno_stokado=',volumeno_stokado)
# свободное пространство в складе
var volumeno_blanko = konservejo.objekto_modulo['volumenoInterna'] \
- volumeno_stokado
print('===volumeno_blanko=',volumeno_blanko)
# print('===volumeno_blanko=',volumeno_blanko)
if volumeno_blanko <= 0:
# свободного места на складе нет - выходим
return
# коэффициент потерь при складировании
# случайное число от 0,15 до 0,25
var koef_stokado = 1 + rand_range(0.15, 0.25)
print('===koef_stokado=',koef_stokado)
# print('===koef_stokado=',koef_stokado)
var koeficiento_volumeno = 1 # коэффициент уменьшения добытого ресурса согласно места на складе с учётом потерь хранения
if volumeno_blanko < (volumeno*koef_stokado): # если на складе места меньше, чем мы можем добыть согласно мощности выстрела
# нужно уменьшить добычу всех руд на % разницы
koeficiento_volumeno = volumeno_blanko / (volumeno*koef_stokado)
print('===koeficiento_volumeno=',koeficiento_volumeno)
# print('===koeficiento_volumeno=',koeficiento_volumeno)
# сколько можем добыть согласно наличия руды в минерале, мощности добычи и места на борту
var volumeno_max = 0
if target.objekto['volumenoEkstera'] < volumeno*koeficiento_volumeno: # если руды меньше, чем мы можем добыть и взять на борт
volumeno_max = target.objekto['volumenoEkstera']
else:
volumeno_max = volumeno*koeficiento_volumeno
print('===volumeno_max=',volumeno_max)
# print('===volumeno_max=',volumeno_max)
# объёма астероида
var volumenoAstEkstera = target.objekto['volumenoEkstera']
var volumenoAstInterna = target.objekto['volumenoInterna']
......@@ -248,9 +264,9 @@ func integreco_shanghi(nombro):
volumenoAstEkstera -= volumeno_resurso_ekstera
volumenoAstInterna -= volumeno_resurso_intera
volumenoAstStokado -= (enteno['node']['ligilo']['volumenoStokado'] / target.objekto['volumenoStokado']) * volumeno_max
print('===volumeno_resurso_ekstera=', volumeno_resurso_ekstera,
' ==volumeno_resurso_intera=',volumeno_resurso_intera,
' ==volumeno_resurso_stokado=',volumeno_resurso_stokado)
# print('===volumeno_resurso_ekstera=', volumeno_resurso_ekstera,
# ' ==volumeno_resurso_intera=',volumeno_resurso_intera,
# ' ==volumeno_resurso_stokado=',volumeno_resurso_stokado)
# если ресурсов больше, чем места в трюме
# if enteno['node']['ligilo']['volumenoEkstera'] >= volumeno*koeficiento_volumeno:
# volumeno_resurso = volumeno*koeficiento_volumeno
......@@ -260,9 +276,9 @@ func integreco_shanghi(nombro):
var volumenoEkstera = enteno['node']['ligilo']['volumenoEkstera'] - volumeno_resurso_ekstera
var volumenoInterna = enteno['node']['ligilo']['volumenoInterna'] - volumeno_resurso_intera
var volumenoStokado = enteno['node']['ligilo']['volumenoStokado'] - volumeno_resurso_stokado
print('===volumenoEkstera=',volumenoEkstera,
' =volumenoInterna=',volumenoInterna,
' =volumenoStokado=',volumenoStokado)
# print('===volumenoEkstera=',volumenoEkstera,
# ' =volumenoInterna=',volumenoInterna,
# ' =volumenoStokado=',volumenoStokado)
Net.send_json(q.volumeno_shanghi(
enteno['node']['ligilo']['uuid'],
volumenoInterna,
......@@ -274,9 +290,9 @@ func integreco_shanghi(nombro):
# прибавляем ресурс на склад своего корабля
var posedantoId = Global.id
if Global.fenestro_kosmo.get_node('ship') != sxipo:
print('===posedantoId=',posedantoId)
# print('===posedantoId=',posedantoId)
posedantoId = sxipo.objekto['posedantoId']
print('===posedantoId 2=',posedantoId)
# print('===posedantoId 2=',posedantoId)
# проверяем, есть ли на складе такой ресурс
var uuid_resurso=""
var resurso = null
......@@ -284,6 +300,13 @@ func integreco_shanghi(nombro):
if (kolvo['node']['tipo']['objId']==3) and \
(kolvo['node']['ligilo']['resurso']['objId']==enteno['node']['ligilo']['resurso']['objId']): # Находится внутри и одинаковый ресурс
uuid_resurso = kolvo['node']['ligilo']['uuid']
# увеличиваем объекм ресурса на количество находящегося на складе
# print("===volumeno_resurso_intera=",volumeno_resurso_intera)
# print("===kolvo=",kolvo['node']['ligilo']['volumenoInterna'])
volumeno_resurso_intera += kolvo['node']['ligilo']['volumenoInterna']
volumeno_resurso_ekstera += kolvo['node']['ligilo']['volumenoEkstera']
volumeno_resurso_stokado += kolvo['node']['ligilo']['volumenoStokado']
# print("===volumeno_resurso_intera2=",volumeno_resurso_intera)
resurso = kolvo
if uuid_resurso: # ресурс найден
Net.send_json(q.volumeno_shanghi(
......
......@@ -6,3 +6,35 @@ var uuid = ""
var integreco = 100
var potenco
var objekto_modulo
# изменить данные в objekto_modulo
func sxangxi_objekto(item):
for obj in objekto_modulo['ligilo']['edges']:
#ищем ресурс в переменной
if obj['node']['ligilo']['uuid'] == item['objekto']['uuid']:
# вносим изменения по данному объекту
obj['node']['ligilo']['integreco'] = item['objekto']['integreco']
obj['node']['ligilo']['volumenoInterna'] = item['objekto']['volumenoInterna']
obj['node']['ligilo']['volumenoEkstera'] = item['objekto']['volumenoEkstera']
obj['node']['ligilo']['volumenoStokado'] = item['objekto']['volumenoStokado']
# добавляем ресурс в objekto_modulo
func krei_objekto(item):
# если нет такого объекта, то добавляем его
objekto_modulo['ligilo']['edges'].push_back({
'node': {
'uuid': item['objekto']['ligiloLigilo']['edges'].front()['node']['uuid'],
'tipo': item['objekto']['ligiloLigilo']['edges'].front()['node']['tipo'].duplicate(true),
'ligilo': {
'uuid': item['objekto']['uuid'],
'integreco': item['objekto']['integreco'],
'nomo': {'enhavo': item['objekto']['nomo']['enhavo']},
'volumenoInterna': item['objekto']['volumenoInterna'],
'volumenoEkstera': item['objekto']['volumenoEkstera'],
'volumenoStokado': item['objekto']['volumenoStokado'],
'resurso': {'objId': item['objekto']['resurso']['objId']}
}
}
})
......@@ -152,21 +152,20 @@ func create_sxipo(sxipo, objecto):
sxipo.add_child(engine)
elif modulo['node']['ligilo']['resurso']['objId'] == 16: #Малый Боевой Лазер
moduloj = laser2.instance()
moduloj.rotate_y(deg2rad(180))
moduloj.uuid = modulo['node']['ligilo']['uuid']
if laser_left:
moduloj.get_node("Turret").translation.x = -2.5
moduloj.get_node("Turret").translation.y = 2.0
moduloj.get_node("Turret").translation.z = -4.1
moduloj.get_node("Turret").translation.z = 4.1
moduloj.get_node("Platform").translation.x = -2.5
moduloj.get_node("Platform").translation.y = 2.0
moduloj.get_node("Platform").translation.z = -4.1
moduloj.get_node("Platform").translation.z = 4.1
moduloj.get_node("laser").translation.x = -2.5
moduloj.get_node("laser").translation.y = 2.0
moduloj.get_node("laser").translation.z = -4.1
moduloj.get_node("laser").translation.z = 4.1
moduloj.get_node("gun_body").translation.x = -2.5
moduloj.get_node("gun_body").translation.y = 4.7
moduloj.get_node("gun_body").translation.z = -4.6
moduloj.get_node("gun_body").translation.z = 4.6
# moduloj.get_node("laser/gun_stem").translation.y = 4.2
moduloj.get_node("laser/gun_stem").translation.z = -0.6
# moduloj.get_node("laser/beam/MeshInstance").translation.y = 4.2
......@@ -176,16 +175,16 @@ func create_sxipo(sxipo, objecto):
else:
moduloj.get_node("Turret").translation.x = 2.5
moduloj.get_node("Turret").translation.y = 2.0
moduloj.get_node("Turret").translation.z = -4.1
moduloj.get_node("Turret").translation.z = 4.1
moduloj.get_node("Platform").translation.x = 2.5
moduloj.get_node("Platform").translation.y = 2.0
moduloj.get_node("Platform").translation.z = -4.1
moduloj.get_node("Platform").translation.z = 4.1
moduloj.get_node("laser").translation.x = 2.5
moduloj.get_node("laser").translation.y = 2.0
moduloj.get_node("laser").translation.z = -4.1
moduloj.get_node("laser").translation.z = 4.1
moduloj.get_node("gun_body").translation.x = 2.5
moduloj.get_node("gun_body").translation.y = 4.7
moduloj.get_node("gun_body").translation.z = -4.6
moduloj.get_node("gun_body").translation.z = 4.6
# moduloj.get_node("laser/gun_stem").translation.y = 4.2
moduloj.get_node("laser/gun_stem").translation.z = -0.6
# moduloj.get_node("laser/beam/MeshInstance").translation.y = 4.2
......
......@@ -112,8 +112,8 @@ func pafo_json(uuidPafado, objektoUuid, kom_koordX, kom_koordY, kom_koordZ,
"objektoUuid":objektoUuid, "statusoPosedantoId":Net.statuso_posedanto,
"tipoPosedantoId":Net.tipo_posedanto, "realecoId":Global.realeco,
"projektoUuid":uuidPafado, "uuidCelo":uuidCelo } }})
if Global.logs:
print('===pafo_json===',query)
# if Global.logs:
# print('===pafo_json===',query)
return query
......
......@@ -349,6 +349,7 @@ func _on_timer_timeout():
var q = QueryObject.new()
if Global.logs:
print('===_on_timer_timeout =',pause_itinero,', uuid=',uuid)
print('===rotation=',rotation)
Net.send_json(q.objecto_mutation(uuid, translation.x,
translation.y, translation.z,
rotation.x, rotation.y, rotation.z
......
......@@ -71,7 +71,7 @@ func _on_kanonadi_pressed():
Net.send_json(Queries.finado_tasko(pafo_uuid.front(),Net.statuso_fermo))
else:
$kanonadi.pressed = false
sxipo.get_node("laser_gun").pafado = false
# sxipo.get_node("laser_gun").pafado = false
# устанавливаем цель
......
......@@ -31,8 +31,10 @@ func FillItemList():
_items.clear()
var i = 1
var volumeno = 0
print('===konservejo=',konservejo.uuid)
# enteno - содержа́ние (одной субстанции в другой)
for enteno in konservejo.objekto_modulo['ligilo']['edges']:
print('===enteno=',enteno['node']['ligilo']['nomo']['enhavo'])
if enteno['node']['tipo']['objId']==3: # Находится внутри
_items.add_item(String(i) + ') ' + String(enteno['node']['ligilo']['nomo']['enhavo']) +
', внутренний объём:' + String(enteno['node']['ligilo']['volumenoInterna']) +
......
......@@ -13,8 +13,15 @@ func set_objekto(objekt):
# выводим описание объекта
func FillItemList():
# if Global.logs:
# print('objekto=',objekto)
var _items = get_node("VBox/body_texture/ItemList")
_items.add_item('имя объекта ' + objekto['nomo']['enhavo'])
_items.add_item('uuid ' + objekto['uuid'])
if objekto['integreco']:
_items.add_item('целостность объекта ' + String(objekto['integreco']))
if objekto['posedantoId']:
_items.add_item('владелец объекта ID = ' + String(objekto['posedanto']['edges'].front()['node']['posedantoUzanto']['siriusoUzanto']['objId']))
_items.add_item('ник владельца = ' + objekto['posedanto']['edges'].front()['node']['posedantoUzanto']['retnomo'])
......@@ -51,6 +51,8 @@ func distance_to(trans):
func _on_ItemList_item_selected(index):
if not $"/root".get_node_or_null('space'):
return
var objekto
for child in Global.fenestro_kosmo.get_children():
if child.is_in_group('create'):
......
......@@ -11,6 +11,7 @@ var load_scene : String
var id_direktebla_query # под каким номером запроса отправили запрос на управляемый список
var id_direktebla_kosmo_query # под каким номером запроса отправили запрос на управляемый список в космосе
var id_objekto# id запроса на объекты
var id_ligilo = 0 # id запроса на выход из станции/заход в станцию
func _ready():
......@@ -86,7 +87,7 @@ func _on_data_start():
# ответ на запрос списка управляемый объектов
if on_data['id'] == String(id_direktebla_query):
for objekt in on_data['payload']['data']['universoObjekto']['edges']:
Global.direktebla_objekto[objekt['node']['realeco']['objId']-2]=objekt['node']
Global.direktebla_objekto[objekt['node']['realeco']['objId']-2]=objekt['node'].duplicate(true)
Global.direktebla_objekto[objekt['node']['realeco']['objId']-2]['kosmo'] = false
# теперь загружаем те объекты, которые из представленных находятся в космосе
var q = QueryObject.new()
......@@ -115,7 +116,7 @@ func _on_data_start():
Global.objektoj.clear()
load_objektoj()
#отображение и включение аудиоплеера
if Global.status:
if Global.status and Global.nickname:
var gramofono = load("res://blokoj/gramofono/scenoj/gramofono.tscn")
var gramofono_child = gramofono.instance()
add_child(gramofono_child)
......@@ -132,17 +133,23 @@ func _on_data():
for on_data in Net.data_server:
if !on_data['payload']['data']:
print('=== error ===',on_data)
elif on_data['payload']['data'] and on_data['payload']['data'].get('filteredUniversoObjekto'):
elif on_data['id'] == String(id_ligilo):
# вошли в станцию
Global.direktebla_objekto[Global.realeco-2]['ligiloLigilo']['edges'].front()['node']['uuid']=\
on_data['payload']['data']['redaktuUniversoObjektoLigiloj']['universoObjektojLigiloj']['uuid']
id_ligilo = 0
Net.data_server.remove(i_data_server)
elif on_data['payload']['data'].get('filteredUniversoObjekto'):
# загрузка объектов
var i = 0
for item in on_data['payload']['data']['filteredUniversoObjekto']['edges']:
if item['node']['uuid'] == Global.direktebla_objekto[Global.realeco-2]['uuid']:
# обновляем данные directebla по своему кораблю
var kosmo = Global.direktebla_objekto[Global.realeco-2]['kosmo']
Global.direktebla_objekto[Global.realeco-2]=item['node']
Global.direktebla_objekto[Global.realeco-2]=item['node'].duplicate(true)
Global.direktebla_objekto[Global.realeco-2]['kosmo'] = kosmo
else:# свой корабль не добавляем в список
Global.objektoj.append(item['node'])
Global.objektoj.append(item['node'].duplicate(true))
Global.objektoj[i]['distance'] = 0
i += 1
Net.data_server.remove(i_data_server)
......@@ -347,3 +354,11 @@ func _on_indicoj_pressed():
$CanvasLayer/UI/indicoj/indicoj/VBox.set_visible(false)
else:
$CanvasLayer/UI/indicoj/indicoj/VBox.set_visible(true)
func _on_items_pressed():
if $CanvasLayer/UI/items/items_menuo.visible:
$CanvasLayer/UI/items/items_menuo.set_visible(false)
else:
$CanvasLayer/UI/items/items_menuo.set_visible(true)
Поддерживает Markdown
0% или .
You are about to add 0 people to the discussion. Proceed with caution.
Сначала завершите редактирование этого сообщения!
Пожалуйста, зарегистрируйтесь или чтобы прокомментировать