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

Merge branch 'develop' into 'develop'

#118 внедрение серверной части

See merge request tehnokom/universo!174
владельцы 79e17bef cfc05b27
......@@ -7,3 +7,6 @@ export_presets.cfg
*.os
*.dblite
#настройки сервера и сам сервер
settings.cfg
Godot_v3.2.1-stable_linux_server.64
extends Control
onready var window = $"/root/Title/CanvasLayer/UI/Objektoj/Window"
onready var margin = $"/root/Title/CanvasLayer/UI/Objektoj/Window/VBox"
var camera #камера
......@@ -22,10 +23,13 @@ func _input(event: InputEvent) -> void:
# event.pressed=true
if event is InputEventMouseButton and $"/root/Title/CanvasLayer/UI/Objektoj/Window/VBox".visible:
$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):
var mrg = margin
if (margin.margin_top+window.rect_global_position.y<y) and \
(y<margin.margin_bottom+window.rect_global_position.y) and \
(margin.margin_left+window.rect_global_position.x<x) and \
(x<margin.margin_right+window.rect_global_position.x):
$canvas/PopupMenu.margin_left=x
$canvas/PopupMenu.margin_top=y
$canvas/PopupMenu.visible=true
......
......@@ -46,7 +46,14 @@ func _ready():
subscribtion_kubo()
# отправляем закрытие задачи выстрела
# тест на отправку сервером данных
if Global.server:
var celo = Transform(Basis.IDENTITY, Vector3(50000, 100,100))
Global.fenestro_itinero.okazigi_itinero(
'', '', celo.origin.x, celo.origin.y, celo.origin.z,
celo, -1, Net.kategorio_movado, true
)
# отправляем закрытие задачи выстрела
func _on_data():
var i_data_server = 0
......
extends Control
# Вызывается при открытии сцены
func _enter_tree():
# Прячем глобальную сцену с меню
Title.set_visible(false)
func _ready():
# счтываем файл настроек и проверяем - может запущен серверный клиент
# var config = ConfigFile.new()
# var err = config.load("user://settings.cfg")
# if err == OK:
# Global.server = config.get_value("global", "server", false)
var config = ConfigFile.new()
var err = config.load("res://settings.cfg")
if err == OK:
if Global.autoload:
var password = config.get_value("aliro", "password")
var login = config.get_value("aliro", "uzanto")
$Control/LoginButton.eniri_uzanto(login, password)
elif Global.server:
$Control/LoginButton.eniri_server()
# else:
# config.set_value('global','server',true)
# config.set_value('kosmo','kube',1)
......@@ -18,6 +21,12 @@ func _enter_tree():
# config.set_value('aliro','password','12345678')
# config.save("user://settings.cfg")
# Вызывается при открытии сцены
func _enter_tree():
# Прячем глобальную сцену с меню
Title.set_visible(false)
# Скрываем символы в поле для ввода пароля
$Control/your_password.set_secret(true)
......
......@@ -105,7 +105,6 @@ text = "Username"
align = 1
valign = 1
__meta__ = {
"_edit_lock_": true,
"_edit_use_anchors_": true
}
......
......@@ -108,9 +108,51 @@ func get_nickname_request_complete(result, response_code, headers, body):
# Вызывается при нажатии кнопки login
func _pressed():
var password = $"/root/auth_menu/Control/your_password".text
var login = $"/root/auth_menu/Control/your_login".text
if !Global.server:
pass
else:
var password = $"/root/auth_menu/Control/your_password".text
var login = $"/root/auth_menu/Control/your_login".text
eniri_uzanto(login, password)
# вошел пользователь
func eniri_uzanto(login, password):
# Создаём объект HTTP запроса
request = HTTPRequest.new()
# Создаём объект с данными для запросов.
# Данные для запросов и сами запросы храним в queries.gd
q = QueryObject.new()
# Добавляем объект запроса в сцену
add_child(request)
# Регистрируем обработчик сигнала request_completed, который придёт по завершении запроса
request.connect('request_completed', self, 'login_request_complete')
# Делаем запрос авторизации к бэкэнду
# Ответ будет обрабатываться в функции login_request_complete
var error = request.request(q.URL_AUTH, Global.backend_headers, true, 2, q.auth_query(login, password))
# Если запрос не выполнен из-за какой-то ожибки
# TODO: Такие ошибки наверное нужно как-то выводить пользователю?
if error != OK:
print('Error in Auth Request.')
# вошел сервер
func eniri_server():
print('Вошли как сервер')
var config = ConfigFile.new()
var err = config.load("res://settings.cfg")
if err != OK:
Global.server = false
return 1
var password = config.get_value("aliro_server", "password")
var login = config.get_value("aliro_server", "uzanto")
print('login=',login)
print('password=',password)
Global.kubo = config.get_value("kosmo", "kubo",1)
Global.realeco = config.get_value("kosmo", "realeco",2)
# Создаём объект HTTP запроса
request = HTTPRequest.new()
# Создаём объект с данными для запросов.
......
......@@ -22,6 +22,27 @@ func _ready():
Net.connect("server_disconnected", self, "_on_server_disconnect")
# warning-ignore:return_value_discarded
Net.connect("input_data", self, "_on_data_start")
var config = ConfigFile.new()
var err = config.load("res://settings.cfg")
if err == OK:
Global.server = config.get_value("global", "server", false)
Global.autoload = config.get_value("global", "autoload", false)
func go_realeco():
print('это сервер')
if Global.realeco == 2:
print('айда в коммир')
Global.realeco=1 # в функции идёт проверка на реальность - должна быть другая
_on_com_pressed()
elif Global.realeco == 1:
print('посидим в реальном мире')
Global.realeco=2
_on_real_pressed()
elif Global.realeco == 3:
print('капитализм нынче рулит')
Global.realeco=1
_on_cap_pressed()
# Обработчик сигнала "connection_succeeded"
......@@ -45,6 +66,7 @@ func _on_server_disconnect():
func _on_data_start():
var i = 0
for on_data in Net.data_server:
# ответ на запрос списка управляемый объектов
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']
......@@ -56,6 +78,7 @@ func _on_data_start():
Net.send_json(q.get_direktebla_kosmo_json(id_direktebla_kosmo_query))
#обработали запрос и удалили обработанную запись
Net.data_server.remove(i)
# список управляемый объектов в космосе
elif on_data['id'] == String(id_direktebla_kosmo_query):
if on_data['payload'].get('data'):
var uuid = []
......@@ -74,6 +97,8 @@ func _on_data_start():
Net.connect("input_data", self, "_on_data")
Global.objektoj.clear()
load_objektoj()
if Global.server or Global.autoload:
go_realeco()
i += 1
......
......@@ -2,9 +2,11 @@ extends Node
# признак, что работает Godot-сервер
# перенести в файл инициализации
var server = true
# берётся из файла инициализации
var server = false
# блок автозагрузки пользователя
var autoload = false
# Залогинен или нет
var status = false
......
......@@ -36,7 +36,6 @@ Net="*res://kerno/skriptoj/network.gd"
[display]
window/stretch/mode="2d"
window/stretch/aspect="keep_width"
[gui]
......
Поддерживает Markdown
0% или .
You are about to add 0 people to the discussion. Proceed with caution.
Сначала завершите редактирование этого сообщения!
Пожалуйста, зарегистрируйтесь или чтобы прокомментировать