menuo.gd 13,9 КБ
Newer Older
Max Bondarev's avatar
Max Bondarev включено в состав коммита
1
2
3
extends Node


magcourier's avatar
magcourier включено в состав коммита
4
5
6
7
8
9
const QueryObject = preload("res://kerno/menuo/skriptoj/queries.gd")

# сигнал загрузки объектов
signal load_objekto()


Max Bondarev's avatar
Max Bondarev включено в состав коммита
10
var load_scene : String
magcourier's avatar
magcourier включено в состав коммита
11
12
var id_direktebla_query # под каким номером запроса отправили запрос на управляемый список
var id_direktebla_kosmo_query # под каким номером запроса отправили запрос на управляемый список в космосе
magcourier's avatar
magcourier включено в состав коммита
13
var id_objekto# id запроса на объекты
magcourier's avatar
magcourier включено в состав коммита
14
var id_ligilo = 0 # id запроса на   выход из станции/заход в станцию
magcourier's avatar
magcourier включено в состав коммита
15
16
17


func _ready():
magcourier's avatar
magcourier включено в состав коммита
18
19
20
21
22
23
24
25
	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)
		Global.logs = config.get_value("global", "logs", false)
	if Global.logs:
		print('запуск res://kerno/menuo/menuo.tscn')
magcourier's avatar
magcourier включено в состав коммита
26
# warning-ignore:return_value_discarded
magcourier's avatar
magcourier включено в состав коммита
27
	Net.connect("connection_failed", self, "_on_connection_failed")
magcourier's avatar
magcourier включено в состав коммита
28
# warning-ignore:return_value_discarded
magcourier's avatar
magcourier включено в состав коммита
29
	Net.connect("connection_succeeded", self, "_on_connection_success")
magcourier's avatar
magcourier включено в состав коммита
30
# warning-ignore:return_value_discarded
magcourier's avatar
magcourier включено в состав коммита
31
	Net.connect("server_disconnected", self, "_on_server_disconnect")
magcourier's avatar
magcourier включено в состав коммита
32
# warning-ignore:return_value_discarded
magcourier's avatar
magcourier включено в состав коммита
33
	Net.connect("input_data", self, "_on_data_start")
magcourier's avatar
magcourier включено в состав коммита
34
35
36
37


func go_realeco():
	if Global.realeco == 2:
magcourier's avatar
magcourier включено в состав коммита
38
		on_com()
magcourier's avatar
magcourier включено в состав коммита
39
	elif Global.realeco == 1:
magcourier's avatar
magcourier включено в состав коммита
40
		on_real()
magcourier's avatar
magcourier включено в состав коммита
41
	elif Global.realeco == 3:
magcourier's avatar
magcourier включено в состав коммита
42
		on_cap()
magcourier's avatar
magcourier включено в состав коммита
43
44
45
46
47


# Обработчик сигнала "connection_succeeded"
func _on_connection_success():
	var q = QueryObject.new()
magcourier's avatar
#125    
magcourier включено в состав коммита
48
	id_direktebla_query = Net.get_current_query_id()
magcourier's avatar
magcourier включено в состав коммита
49
	Net.send_json(q.get_direktebla_json(Net.statuso_laboranta, Net.tasko_tipo_objekto, id_direktebla_query))
magcourier's avatar
magcourier включено в состав коммита
50
51


magcourier's avatar
magcourier включено в состав коммита
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
# закрываем признаки загрузки данных
func fermo_signo(): # закрыть признак
	# если ещё загрузки не было, то и отключать нечего
	if not Global.loading:
		return
	Global.loading = false
	#отключаем перехват сигнала
	Net.disconnect("input_data", self, "_on_data")
	Net.data_server.clear()
# warning-ignore:return_value_discarded
	Net.connect("input_data", self, "_on_data_start")
	# снимаем признаки загрузки параллельных миров
	for obj in Global.direktebla_objekto:
		obj['kosmo'] = false


magcourier's avatar
magcourier включено в состав коммита
68
69
# Обработчик сигнала "connection_failed"
func _on_connection_failed():
magcourier's avatar
magcourier включено в состав коммита
70
71
72
	fermo_signo()
	if !Global.server:
		_on_real_pressed()
magcourier's avatar
magcourier включено в состав коммита
73
74
75
76
77
	pass


# Обработчик сигнала "server_disconnected"
func _on_server_disconnect():
magcourier's avatar
magcourier включено в состав коммита
78
79
80
	fermo_signo()
	if !Global.server:
		_on_real_pressed()
magcourier's avatar
magcourier включено в состав коммита
81
82
83
84
85
86
	pass

# обработчик сигнала прихода данных при старте программы
func _on_data_start():
	var i = 0
	for on_data in Net.data_server:
magcourier's avatar
magcourier включено в состав коммита
87
		# ответ на запрос списка управляемый объектов
magcourier's avatar
magcourier включено в состав коммита
88
89
		if on_data['id'] == String(id_direktebla_query):
			for objekt in on_data['payload']['data']['universoObjekto']['edges']:
magcourier's avatar
#52    
magcourier включено в состав коммита
90
				Global.direktebla_objekto[objekt['node']['realeco']['objId']-2]=objekt['node'].duplicate(true)
magcourier's avatar
magcourier включено в состав коммита
91
92
93
94
95
96
97
98
				Global.direktebla_objekto[objekt['node']['realeco']['objId']-2]['kosmo'] = false
			# теперь загружаем те объекты, которые из представленных находятся в космосе
			var q = QueryObject.new()
			id_direktebla_kosmo_query = Net.current_query_id
			Net.current_query_id += 1
			Net.send_json(q.get_direktebla_kosmo_json(id_direktebla_kosmo_query))
			#обработали запрос и удалили обработанную запись
			Net.data_server.remove(i)
magcourier's avatar
magcourier включено в состав коммита
99
		# список управляемый объектов в космосе
magcourier's avatar
magcourier включено в состав коммита
100
101
102
103
104
105
106
107
108
109
110
111
112
113
		elif on_data['id'] == String(id_direktebla_kosmo_query):
			if on_data['payload'].get('data'):
				var uuid = []
				for pars in on_data['payload']['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
			#обработали запрос и удалили обработанную запись
			Net.data_server.remove(i)
			#отключаем перехват сигнала
			Net.disconnect("input_data", self, "_on_data_start")
magcourier's avatar
magcourier включено в состав коммита
114
# warning-ignore:return_value_discarded
magcourier's avatar
magcourier включено в состав коммита
115
			Net.connect("input_data", self, "_on_data")
magcourier's avatar
magcourier включено в состав коммита
116
			Global.objektoj.clear()
magcourier's avatar
magcourier включено в состав коммита
117
			load_objektoj()
118
			#отображение и включение аудиоплеера
119
			if Global.status and Global.nickname:
120
121
122
				var gramofono = load("res://blokoj/gramofono/scenoj/gramofono.tscn")
				var gramofono_child = gramofono.instance()
				add_child(gramofono_child)
magcourier's avatar
magcourier включено в состав коммита
123
124
			print('загрузили данные')
			$CanvasLayer/UI/Taskoj/Window.mendo_informoj_projekto()
magcourier's avatar
magcourier включено в состав коммита
125
			if (Global.server or Global.autoload) and Global.realeco!=1:
magcourier's avatar
magcourier включено в состав коммита
126
				go_realeco()
magcourier's avatar
magcourier включено в состав коммита
127
128
129
130
131
132
133
		i += 1


# обработчик прихода постоянных данных
func _on_data():
	var i_data_server = 0
	for on_data in Net.data_server:
magcourier's avatar
magcourier включено в состав коммита
134
135
		if !on_data['payload']['data']:
			print('=== error ===',on_data)
magcourier's avatar
magcourier включено в состав коммита
136
137
138
139
140
141
142
		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'):
magcourier's avatar
magcourier включено в состав коммита
143
			# загрузка объектов
magcourier's avatar
magcourier включено в состав коммита
144
145
			var i = 0
			for item in on_data['payload']['data']['filteredUniversoObjekto']['edges']:
magcourier's avatar
#127    
magcourier включено в состав коммита
146
				if item['node']['uuid'] == Global.direktebla_objekto[Global.realeco-2]['uuid']:
magcourier's avatar
magcourier включено в состав коммита
147
					# обновляем данные directebla по своему кораблю
magcourier's avatar
magcourier включено в состав коммита
148
					var kosmo = Global.direktebla_objekto[Global.realeco-2]['kosmo']
magcourier's avatar
#52    
magcourier включено в состав коммита
149
					Global.direktebla_objekto[Global.realeco-2]=item['node'].duplicate(true)
magcourier's avatar
magcourier включено в состав коммита
150
151
					Global.direktebla_objekto[Global.realeco-2]['kosmo'] = kosmo
				else:# свой корабль не добавляем в список
magcourier's avatar
#52    
magcourier включено в состав коммита
152
					Global.objektoj.append(item['node'].duplicate(true))
magcourier's avatar
magcourier включено в состав коммита
153
154
155
					Global.objektoj[i]['distance'] = 0
					i += 1
			Net.data_server.remove(i_data_server)
magcourier's avatar
magcourier включено в состав коммита
156
157
158
159
160
161
			if on_data['payload']['data']['filteredUniversoObjekto']['pageInfo']['hasNextPage']:
				load_objektoj(on_data['payload']['data']['filteredUniversoObjekto']['pageInfo']['endCursor'])
			else:
				if $"/root".get_node_or_null('space'):# если загружен космос
					$"/root".get_node('space').emit_signal("load_objektoj")# загружаем объекты космоса
				emit_signal("load_objekto")
magcourier's avatar
magcourier включено в состав коммита
162
		i_data_server += 1
Max Bondarev's avatar
Max Bondarev включено в состав коммита
163
164
165


func _on_Profilo_pressed():
magcourier's avatar
magcourier включено в состав коммита
166
# warning-ignore:return_value_discarded
Artem Go's avatar
Artem Go включено в состав коммита
167
168
	$CanvasLayer/UI/Popup_profilo.popup()
	$CanvasLayer/UI/Popup_profilo/profilo1/VBox.set_visible(true)
Max Bondarev's avatar
Max Bondarev включено в состав коммита
169

magcourier's avatar
magcourier включено в состав коммита
170
func _on_Objektoj_pressed():
Artem Go's avatar
Artem Go включено в состав коммита
171
	$CanvasLayer/UI/Objektoj/Window/VBox.set_visible(true)
Max Bondarev's avatar
Max Bondarev включено в состав коммита
172
173
174


func set_visible(visible: bool):
Artem Go's avatar
Artem Go включено в состав коммита
175
176
	$CanvasLayer/UI.visible = visible
	
Max Bondarev's avatar
Max Bondarev включено в состав коммита
177
178

func _on_Taskoj_pressed():
Artem Go's avatar
Artem Go включено в состав коммита
179
	$CanvasLayer/UI/Taskoj/Window/VBox.set_visible(true)
Artem Go's avatar
Artem Go включено в состав коммита
180

magcourier's avatar
magcourier включено в состав коммита
181
func CloseWindow():
Artem Go's avatar
Artem Go включено в состав коммита
182
183
	$CanvasLayer/UI/Taskoj/Window/VBox.set_visible(false)
	$CanvasLayer/UI/Objektoj/Window/VBox.set_visible(false)
magcourier's avatar
magcourier включено в состав коммита
184
	$CanvasLayer/UI/b_itinero/itinero/canvas/MarginContainer.set_visible(false)
Artem Go's avatar
Artem Go включено в состав коммита
185
	$CanvasLayer/UI/interago/interago/VBox.set_visible(false)
Artem Go's avatar
Artem Go включено в состав коммита
186
187


magcourier's avatar
magcourier включено в состав коммита
188
func reloadWindow():
magcourier's avatar
magcourier включено в состав коммита
189
	$CanvasLayer/UI/Taskoj/Window.mendo_informoj_projekto()
magcourier's avatar
magcourier включено в состав коммита
190
	Global.objektoj.clear()
magcourier's avatar
magcourier включено в состав коммита
191
192
	load_objektoj()

magcourier's avatar
magcourier включено в состав коммита
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217

func on_cap():
	var mezo_cap = preload("res://kerno/menuo/resursoj/icons/tab4_3.png")
	$CanvasLayer/UI/mezo_regions.icon = mezo_cap
	$CanvasLayer/UI/real/real_cap_rect.set_visible(true)
	$CanvasLayer/UI/real/real_com_rect.set_visible(false)
	$CanvasLayer/UI/com/com_cap_rect.set_visible(true)
	$CanvasLayer/UI/com/com_real_rect.set_visible(false)
	$CanvasLayer/UI/cap/cap_com_rect.set_visible(false)
	$CanvasLayer/UI/cap/cap_real_rect.set_visible(false)
	$CanvasLayer/UI/Lbar.color = Color(0, 0.407843, 0.407843, 0.862745)
	$CanvasLayer/UI/Lbar3.self_modulate = Color(0, 0.407843, 0.407843, 0.862745)
	$CanvasLayer/UI/real/realLabel.set_visible(false)
	$CanvasLayer/UI/com/comLabel.set_visible(false)
	$CanvasLayer/UI/cap/capLabel.set_visible(true)
	$CanvasLayer/UI/romb.color = Color(0, 0.407843, 0.407843, 0.862745)
	# если объекта не будет в космосе, то загружать станцию
	if Global.direktebla_objekto[Global.realeco-2]['kosmo']:
# warning-ignore:return_value_discarded
		get_tree().change_scene('res://blokoj/kosmo/scenoj/space.tscn')
	else:
# warning-ignore:return_value_discarded
		get_tree().change_scene('res://blokoj/kosmostacioj/CapKosmostacio.tscn')


Artem Go's avatar
Artem Go включено в состав коммита
218
func _on_cap_pressed():
magcourier's avatar
magcourier включено в состав коммита
219
220
221
222
223
224
225
	if Global.loading: #здесь вызывать задержку надо
		var reload = false
		if Global.realeco!=3:
			Global.realeco = 3
			reload = true
			# при переключении миров закрываем окна ресурсов, объектов, т.к. они расчитаны на конкретный мир
			CloseWindow()
magcourier's avatar
magcourier включено в состав коммита
226
			on_cap()
magcourier's avatar
magcourier включено в состав коммита
227
228
229
230
		if reload:
			reloadWindow()
	else:
		print('Ещё не загружено')
Artem Go's avatar
Artem Go включено в состав коммита
231
232


magcourier's avatar
magcourier включено в состав коммита
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
func on_com():
	var mezo_com = preload("res://kerno/menuo/resursoj/icons/tab4_1.png")
	$CanvasLayer/UI/mezo_regions.icon = mezo_com
	$CanvasLayer/UI/real/real_cap_rect.set_visible(false)
	$CanvasLayer/UI/real/real_com_rect.set_visible(true)
	$CanvasLayer/UI/com/com_cap_rect.set_visible(false)
	$CanvasLayer/UI/com/com_real_rect.set_visible(false)
	$CanvasLayer/UI/cap/cap_com_rect.set_visible(true)
	$CanvasLayer/UI/cap/cap_real_rect.set_visible(false)
	$CanvasLayer/UI/Lbar.color = Color(0.333333, 0, 0.066667, 0.862745)
	$CanvasLayer/UI/Lbar3.self_modulate = Color(0.333333, 0, 0.066667, 0.862745)
	$CanvasLayer/UI/real/realLabel.set_visible(false)
	$CanvasLayer/UI/com/comLabel.set_visible(true)
	$CanvasLayer/UI/cap/capLabel.set_visible(false)
	$CanvasLayer/UI/romb.color = Color(0.333333, 0, 0.066667, 0.862745)
	# если объекта не будет в космосе, то загружать станцию
	if Global.direktebla_objekto[Global.realeco-2]['kosmo']:
# warning-ignore:return_value_discarded
		get_tree().change_scene('res://blokoj/kosmo/scenoj/space.tscn')
	else:
# warning-ignore:return_value_discarded
		get_tree().change_scene('res://blokoj/kosmostacioj/CapKosmostacio.tscn')
#		get_tree().change_scene("res://blokoj/kosmostacioj/ComKosmostacio.tscn")


Artem Go's avatar
Artem Go включено в состав коммита
258
func _on_com_pressed():
magcourier's avatar
magcourier включено в состав коммита
259
260
261
262
263
264
265
	if Global.loading: #здесь вызывать задержку надо
		var reload = false
		if Global.realeco!=2:
			Global.realeco = 2
			reload = true
			# при переключении миров закрываем окна ресурсов, объектов, т.к. они расчитаны на конкретный мир
			CloseWindow()
magcourier's avatar
magcourier включено в состав коммита
266
			on_com()
magcourier's avatar
magcourier включено в состав коммита
267
268
269
270
		if reload:
			reloadWindow()
	else:
		print('Ещё не загружено')
Artem Go's avatar
Artem Go включено в состав коммита
271

Max Bondarev's avatar
Max Bondarev включено в состав коммита
272

magcourier's avatar
magcourier включено в состав коммита
273
func on_real():
Artem Go's avatar
Artem Go включено в состав коммита
274
275
276
277
278
279
280
281
	var mezo_real = preload("res://kerno/menuo/resursoj/icons/tab4_2.png")
	$CanvasLayer/UI/mezo_regions.icon = mezo_real
	$CanvasLayer/UI/real/real_cap_rect.set_visible(false)
	$CanvasLayer/UI/real/real_com_rect.set_visible(false)
	$CanvasLayer/UI/com/com_cap_rect.set_visible(false)
	$CanvasLayer/UI/com/com_real_rect.set_visible(true)
	$CanvasLayer/UI/cap/cap_com_rect.set_visible(false)
	$CanvasLayer/UI/cap/cap_real_rect.set_visible(true)
Artem Go's avatar
Artem Go включено в состав коммита
282
	$CanvasLayer/UI/Lbar.color = Color(0.4, 0.6, 1, 0.862745)
Artem Go's avatar
Artem Go включено в состав коммита
283
	$CanvasLayer/UI/Lbar3.self_modulate = Color(0.4, 0.6, 1, 0.862745)
Artem Go's avatar
Artem Go включено в состав коммита
284
285
286
	$CanvasLayer/UI/real/realLabel.set_visible(true)
	$CanvasLayer/UI/com/comLabel.set_visible(false)
	$CanvasLayer/UI/cap/capLabel.set_visible(false)
Artem Go's avatar
Artem Go включено в состав коммита
287
	$CanvasLayer/UI/romb.color = Color(0.4, 0.6, 1, 0.862745)
magcourier's avatar
magcourier включено в состав коммита
288
289
290
	var err = get_tree().change_scene("res://blokoj/kosmostacioj/Kosmostacio.tscn")
	if err:
		print('ошибка смены сцены = ',err)
magcourier's avatar
magcourier включено в состав коммита
291
292
293


func _on_real_pressed():
magcourier's avatar
magcourier включено в состав коммита
294
	var reload = false
magcourier's avatar
magcourier включено в состав коммита
295
296
	if Global.realeco!=1:
		Global.realeco = 1
magcourier's avatar
magcourier включено в состав коммита
297
		reload = true
magcourier's avatar
magcourier включено в состав коммита
298
299
		# при переключении миров закрываем окна ресурсов, объектов, т.к. они расчитаны на конкретный мир
		CloseWindow()
magcourier's avatar
magcourier включено в состав коммита
300
		on_real()
magcourier's avatar
magcourier включено в состав коммита
301
# warning-ignore:return_value_discarded
magcourier's avatar
magcourier включено в состав коммита
302
303
	if reload:
		reloadWindow()
magcourier's avatar
magcourier включено в состав коммита
304
305


Artem Go's avatar
Artem Go включено в состав коммита
306
307
func _on_b_itinero_pressed():
	$CanvasLayer/UI/b_itinero/itinero/canvas/MarginContainer.set_visible(true)
Artem Go's avatar
Artem Go включено в состав коммита
308
309
310


func _on_ad_pressed():
Artem Go's avatar
Artem Go включено в состав коммита
311
	$CanvasLayer/UI/ad/ad_1/CanvasLayer/Margin.set_visible(true)
Artem Go's avatar
Artem Go включено в состав коммита
312
313
314


func _on_interago_pressed():
Artem Go's avatar
Artem Go включено в состав коммита
315
316
	if $CanvasLayer/UI/interago/interago/VBox.visible:
		$CanvasLayer/UI/interago/interago/VBox.set_visible(false)
magcourier's avatar
magcourier включено в состав коммита
317
318
	else:
		$CanvasLayer/UI/interago/interago.print_button()
Artem Go's avatar
Artem Go включено в состав коммита
319
		$CanvasLayer/UI/interago/interago/VBox.set_visible(true)
magcourier's avatar
magcourier включено в состав коммита
320

magcourier's avatar
magcourier включено в состав коммита
321

Artem Go's avatar
Artem Go включено в состав коммита
322
func _on_eliro_button_up():
Artem Go's avatar
Artem Go включено в состав коммита
323
	$CanvasLayer/UI/eliro/eliro.popup_centered()
magcourier's avatar
magcourier включено в состав коммита
324
325


Artem Go's avatar
Artem Go включено в состав коммита
326
327
328
func _input(event):
	if event is InputEvent and Input.is_key_pressed(KEY_ESCAPE):
		$CanvasLayer/UI/eliro/eliro.popup_centered()
magcourier's avatar
magcourier включено в состав коммита
329
330


magcourier's avatar
magcourier включено в состав коммита
331
# запрашиваем объекты
magcourier's avatar
magcourier включено в состав коммита
332
func load_objektoj(after=""):
magcourier's avatar
magcourier включено в состав коммита
333
	var q = QueryObject.new()
magcourier's avatar
magcourier включено в состав коммита
334
335
	id_objekto = Net.get_current_query_id()
#	зугрузка объектов партиями, количество в партии указано в константе запроса
magcourier's avatar
magcourier включено в состав коммита
336
	Net.send_json(q.get_objekto_json(Net.statuso_laboranta, Net.tasko_tipo_objekto, Global.kubo, id_objekto, after))
magcourier's avatar
magcourier включено в состав коммита
337

magcourier's avatar
magcourier включено в состав коммита
338

Artem Go's avatar
Artem Go включено в состав коммита
339
func _on_komerco_button_up():
Artem Go's avatar
Artem Go включено в состав коммита
340
341
342
	$CanvasLayer/UI/komerco/komerco/VBox.set_visible(true)


magcourier's avatar
magcourier включено в состав коммита
343
344
345
346
347
func _on_konservejo_pressed():
	if $CanvasLayer/UI/konservejo/konservejo/VBox.visible:
		$CanvasLayer/UI/konservejo/konservejo/VBox.set_visible(false)
	else:
		$CanvasLayer/UI/konservejo/konservejo/VBox.set_visible(true)
magcourier's avatar
magcourier включено в состав коммита
348
349


magcourier's avatar
#127    
magcourier включено в состав коммита
350
351
352
353
354
355
356


func _on_indicoj_pressed():
	if $CanvasLayer/UI/indicoj/indicoj/VBox.visible:
		$CanvasLayer/UI/indicoj/indicoj/VBox.set_visible(false)
	else:
		$CanvasLayer/UI/indicoj/indicoj/VBox.set_visible(true)
357
358
359
360
361
362
363
364


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)