menuo.gd 12,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
15
16


func _ready():
magcourier's avatar
magcourier включено в состав коммита
17
# warning-ignore:return_value_discarded
magcourier's avatar
magcourier включено в состав коммита
18
	Net.connect("connection_failed", self, "_on_connection_failed")
magcourier's avatar
magcourier включено в состав коммита
19
# warning-ignore:return_value_discarded
magcourier's avatar
magcourier включено в состав коммита
20
	Net.connect("connection_succeeded", self, "_on_connection_success")
magcourier's avatar
magcourier включено в состав коммита
21
# warning-ignore:return_value_discarded
magcourier's avatar
magcourier включено в состав коммита
22
	Net.connect("server_disconnected", self, "_on_server_disconnect")
magcourier's avatar
magcourier включено в состав коммита
23
# warning-ignore:return_value_discarded
magcourier's avatar
magcourier включено в состав коммита
24
	Net.connect("input_data", self, "_on_data_start")
magcourier's avatar
magcourier включено в состав коммита
25
26
27
28
29
30
31
32
33
	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():
	if Global.realeco == 2:
magcourier's avatar
magcourier включено в состав коммита
34
#		print('айда в коммир')
magcourier's avatar
magcourier включено в состав коммита
35
36
37
		Global.realeco=1 # в функции идёт проверка на реальность - должна быть другая
		_on_com_pressed()
	elif Global.realeco == 1:
magcourier's avatar
magcourier включено в состав коммита
38
#		print('посидим в реальном мире')
magcourier's avatar
magcourier включено в состав коммита
39
40
41
		Global.realeco=2
		_on_real_pressed()
	elif Global.realeco == 3:
magcourier's avatar
magcourier включено в состав коммита
42
#		print('капитализм нынче рулит')
magcourier's avatar
magcourier включено в состав коммита
43
44
		Global.realeco=1
		_on_cap_pressed()
magcourier's avatar
magcourier включено в состав коммита
45
46
47
48
49
50
51


# Обработчик сигнала "connection_succeeded"
func _on_connection_success():
	var q = QueryObject.new()
	id_direktebla_query = Net.current_query_id
	Net.current_query_id += 1
magcourier's avatar
magcourier включено в состав коммита
52
	Net.send_json(q.get_direktebla_json(Net.statuso_laboranta, Net.tasko_tipo_objekto, id_direktebla_query))
magcourier's avatar
magcourier включено в состав коммита
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67


# Обработчик сигнала "connection_failed"
func _on_connection_failed():
	pass


# Обработчик сигнала "server_disconnected"
func _on_server_disconnect():
	pass

# обработчик сигнала прихода данных при старте программы
func _on_data_start():
	var i = 0
	for on_data in Net.data_server:
magcourier's avatar
magcourier включено в состав коммита
68
		# ответ на запрос списка управляемый объектов
magcourier's avatar
magcourier включено в состав коммита
69
70
71
72
73
74
75
76
77
78
79
		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]['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 включено в состав коммита
80
		# список управляемый объектов в космосе
magcourier's avatar
magcourier включено в состав коммита
81
82
83
84
85
86
87
88
89
90
91
92
93
94
		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 включено в состав коммита
95
# warning-ignore:return_value_discarded
magcourier's avatar
magcourier включено в состав коммита
96
			Net.connect("input_data", self, "_on_data")
magcourier's avatar
magcourier включено в состав коммита
97
			Global.objektoj.clear()
magcourier's avatar
magcourier включено в состав коммита
98
			load_objektoj()
magcourier's avatar
magcourier включено в состав коммита
99
100
			if Global.server or Global.autoload:
				go_realeco()
magcourier's avatar
magcourier включено в состав коммита
101
102
103
104
105
106
107
		i += 1


# обработчик прихода постоянных данных
func _on_data():
	var i_data_server = 0
	for on_data in Net.data_server:
magcourier's avatar
magcourier включено в состав коммита
108
109
110
		if !on_data['payload']['data']:
			print('=== error ===',on_data)
		elif on_data['payload']['data'] and on_data['payload']['data'].get('filteredUniversoObjekto'):
magcourier's avatar
magcourier включено в состав коммита
111
			# загрузка объектов
magcourier's avatar
magcourier включено в состав коммита
112
113
114
115
116
117
118
119
120
121
122
123
			var i = 0
			for item in on_data['payload']['data']['filteredUniversoObjekto']['edges']:
				if item['node']['posedantoId'] == Global.id:
					# обновляем данные directable по своему кораблю
					var kosmo = Global.direktebla_objekto[Global.realeco-2]['kosmo']
					Global.direktebla_objekto[Global.realeco-2]=item['node']
					Global.direktebla_objekto[Global.realeco-2]['kosmo'] = kosmo
				else:# свой корабль не добавляем в список
					Global.objektoj.append(item['node'])
					Global.objektoj[i]['distance'] = 0
					i += 1
			Net.data_server.remove(i_data_server)
magcourier's avatar
magcourier включено в состав коммита
124
125
126
127
128
129
			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 включено в состав коммита
130
		i_data_server += 1
Max Bondarev's avatar
Max Bondarev включено в состав коммита
131
132
133


func _on_Profilo_pressed():
magcourier's avatar
magcourier включено в состав коммита
134
# warning-ignore:return_value_discarded
Max Bondarev's avatar
Max Bondarev включено в состав коммита
135
136
137
138
	get_tree().change_scene('res://blokoj/profilo/profilo.tscn')


func _on_Resurso_Center_pressed():
Artem Go's avatar
Artem Go включено в состав коммита
139
	$CanvasLayer/UI/RCentro/Window.popup_centered()
Max Bondarev's avatar
Max Bondarev включено в состав коммита
140
141


magcourier's avatar
magcourier включено в состав коммита
142
func _on_Objektoj_pressed():
Artem Go's avatar
Artem Go включено в состав коммита
143
	$CanvasLayer/UI/Objektoj/Window/VBox.set_visible(true)
Max Bondarev's avatar
Max Bondarev включено в состав коммита
144
145
146


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

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

magcourier's avatar
magcourier включено в состав коммита
153
func CloseWindow():
Artem Go's avatar
Artem Go включено в состав коммита
154
155
	$CanvasLayer/UI/Taskoj/Window/VBox.set_visible(false)
	$CanvasLayer/UI/Objektoj/Window/VBox.set_visible(false)
magcourier's avatar
magcourier включено в состав коммита
156
	$CanvasLayer/UI/b_itinero/itinero/canvas/MarginContainer.set_visible(false)
Artem Go's avatar
Artem Go включено в состав коммита
157
	$CanvasLayer/UI/interago/interago/VBox.set_visible(false)
Artem Go's avatar
Artem Go включено в состав коммита
158
159


magcourier's avatar
magcourier включено в состав коммита
160
func reloadWindow():
magcourier's avatar
magcourier включено в состав коммита
161
	$CanvasLayer/UI/Taskoj/Window._on_Window_draw()
magcourier's avatar
magcourier включено в состав коммита
162
#	$CanvasLayer/UI/Objektoj/Window._on_Objekto_draw()
magcourier's avatar
magcourier включено в состав коммита
163
	Global.objektoj.clear()
magcourier's avatar
magcourier включено в состав коммита
164
165
	load_objektoj()

Artem Go's avatar
Artem Go включено в состав коммита
166
	
Artem Go's avatar
Artem Go включено в состав коммита
167
func _on_cap_pressed():
magcourier's avatar
magcourier включено в состав коммита
168
169
170
	if Global.loading: #здесь вызывать задержку надо
		var reload = false
		if Global.realeco!=3:
magcourier's avatar
magcourier включено в состав коммита
171
172
173
174
175
176
177
178
			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)
Artem Go's avatar
Artem Go включено в состав коммита
179
180
181
			$CanvasLayer/UI/Lbar.color = Color(0, 0.407843, 0.407843, 0.862745)
			$CanvasLayer/UI/Lbar2.color = Color(0, 0.407843, 0.407843, 0.862745)
			$CanvasLayer/UI/Lbar3.color = Color(0, 0.407843, 0.407843, 0.862745)
magcourier's avatar
magcourier включено в состав коммита
182
183
184
			$CanvasLayer/UI/real/realLabel.set_visible(false)
			$CanvasLayer/UI/com/comLabel.set_visible(false)
			$CanvasLayer/UI/cap/capLabel.set_visible(true)
Artem Go's avatar
Artem Go включено в состав коммита
185
			$CanvasLayer/UI/romb.color = Color(0, 0.407843, 0.407843, 0.862745)
magcourier's avatar
magcourier включено в состав коммита
186
187
188
189
190
191
			Global.realeco = 3
			reload = true
			# при переключении миров закрываем окна ресурсов, объектов, т.к. они расчитаны на конкретный мир
			CloseWindow()
			# если объекта не будет в космосе, то загружать станцию
			if Global.direktebla_objekto[Global.realeco-2]['kosmo']:
magcourier's avatar
magcourier включено в состав коммита
192
# warning-ignore:return_value_discarded
magcourier's avatar
magcourier включено в состав коммита
193
194
				get_tree().change_scene('res://blokoj/kosmo/scenoj/space.tscn')
			else:
magcourier's avatar
magcourier включено в состав коммита
195
# warning-ignore:return_value_discarded
magcourier's avatar
magcourier включено в состав коммита
196
197
198
199
200
				get_tree().change_scene('res://blokoj/kosmostacioj/CapKosmostacio.tscn')
		if reload:
			reloadWindow()
	else:
		print('Ещё не загружено')
Artem Go's avatar
Artem Go включено в состав коммита
201
202
203


func _on_com_pressed():
magcourier's avatar
magcourier включено в состав коммита
204
205
206
	if Global.loading: #здесь вызывать задержку надо
		var reload = false
		if Global.realeco!=2:
magcourier's avatar
magcourier включено в состав коммита
207
208
209
210
211
212
213
214
			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)
Artem Go's avatar
Artem Go включено в состав коммита
215
216
217
			$CanvasLayer/UI/Lbar.color = Color(0.333333, 0, 0.066667, 0.862745)
			$CanvasLayer/UI/Lbar2.color = Color(0.333333, 0, 0.066667, 0.862745)
			$CanvasLayer/UI/Lbar3.color = Color(0.333333, 0, 0.066667, 0.862745)
magcourier's avatar
magcourier включено в состав коммита
218
219
220
			$CanvasLayer/UI/real/realLabel.set_visible(false)
			$CanvasLayer/UI/com/comLabel.set_visible(true)
			$CanvasLayer/UI/cap/capLabel.set_visible(false)
Artem Go's avatar
Artem Go включено в состав коммита
221
			$CanvasLayer/UI/romb.color = Color(0.333333, 0, 0.066667, 0.862745)
magcourier's avatar
magcourier включено в состав коммита
222
223
224
225
226
227
			Global.realeco = 2
			reload = true
			# при переключении миров закрываем окна ресурсов, объектов, т.к. они расчитаны на конкретный мир
			CloseWindow()
			# если объекта не будет в космосе, то загружать станцию
			if Global.direktebla_objekto[Global.realeco-2]['kosmo']:
magcourier's avatar
magcourier включено в состав коммита
228
# warning-ignore:return_value_discarded
magcourier's avatar
magcourier включено в состав коммита
229
230
				get_tree().change_scene('res://blokoj/kosmo/scenoj/space.tscn')
			else:
magcourier's avatar
magcourier включено в состав коммита
231
# warning-ignore:return_value_discarded
magcourier's avatar
magcourier включено в состав коммита
232
233
234
235
236
237
				get_tree().change_scene('res://blokoj/kosmostacioj/CapKosmostacio.tscn')
#				get_tree().change_scene("res://blokoj/kosmostacioj/ComKosmostacio.tscn")
		if reload:
			reloadWindow()
	else:
		print('Ещё не загружено')
Artem Go's avatar
Artem Go включено в состав коммита
238

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

Artem Go's avatar
Artem Go включено в состав коммита
240
func _on_real_pressed():
Artem Go's avatar
Artem Go включено в состав коммита
241
242
243
244
245
246
247
248
	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 включено в состав коммита
249
250
251
	$CanvasLayer/UI/Lbar.color = Color(0.4, 0.6, 1, 0.862745)
	$CanvasLayer/UI/Lbar2.color = Color(0.4, 0.6, 1, 0.862745)
	$CanvasLayer/UI/Lbar3.color = Color(0.4, 0.6, 1, 0.862745)
Artem Go's avatar
Artem Go включено в состав коммита
252
253
254
	$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 включено в состав коммита
255
	$CanvasLayer/UI/romb.color = Color(0.4, 0.6, 1, 0.862745)
Artem Go's avatar
Artem Go включено в состав коммита
256
	
magcourier's avatar
magcourier включено в состав коммита
257
	var reload = false
magcourier's avatar
magcourier включено в состав коммита
258
259
	if Global.realeco!=1:
		Global.realeco = 1
magcourier's avatar
magcourier включено в состав коммита
260
		reload = true
magcourier's avatar
magcourier включено в состав коммита
261
262
		# при переключении миров закрываем окна ресурсов, объектов, т.к. они расчитаны на конкретный мир
		CloseWindow()
magcourier's avatar
magcourier включено в состав коммита
263
# warning-ignore:return_value_discarded
magcourier's avatar
magcourier включено в состав коммита
264
	get_tree().change_scene("res://blokoj/kosmostacioj/Kosmostacio.tscn")
magcourier's avatar
magcourier включено в состав коммита
265
266
	if reload:
		reloadWindow()
magcourier's avatar
magcourier включено в состав коммита
267
268


magcourier's avatar
magcourier включено в состав коммита
269
270
271
# warning-ignore:unused_argument
# warning-ignore:unused_argument
# warning-ignore:unused_argument
magcourier's avatar
magcourier включено в состав коммита
272
273
func komenci_request_complete(result, response_code, headers, body):
	var resp = body.get_string_from_utf8()
magcourier's avatar
magcourier включено в состав коммита
274
# warning-ignore:unused_variable
magcourier's avatar
magcourier включено в состав коммита
275
276
277
278
279
280
	var parsed_resp = parse_json(resp)

	$request.disconnect('request_completed', self, 'komenci_request_complete')

	if $"/root".get_node_or_null('space'):
		$"/root".get_node('space').emit_signal("load_objektoj")
magcourier's avatar
magcourier включено в состав коммита
281
282
283


# ответ на заход в станцию
magcourier's avatar
magcourier включено в состав коммита
284
285
286
# warning-ignore:unused_argument
# warning-ignore:unused_argument
# warning-ignore:unused_argument
magcourier's avatar
magcourier включено в состав коммита
287
288
func _on_eniri_kosmostacio_request_completed(result, response_code, headers, body):
	var resp = body.get_string_from_utf8()
magcourier's avatar
magcourier включено в состав коммита
289
# warning-ignore:unused_variable
magcourier's avatar
magcourier включено в состав коммита
290
291
292
	var parsed_resp = parse_json(resp)

	$request.disconnect('request_completed', self, '_on_eniri_kosmostacio_request_completed')
Artem Go's avatar
Artem Go включено в состав коммита
293
294
295
296
	
	
func _on_b_itinero_pressed():
	$CanvasLayer/UI/b_itinero/itinero/canvas/MarginContainer.set_visible(true)
Artem Go's avatar
Artem Go включено в состав коммита
297
298
299


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


func _on_interago_pressed():
Artem Go's avatar
Artem Go включено в состав коммита
304
305
	if $CanvasLayer/UI/interago/interago/VBox.visible:
		$CanvasLayer/UI/interago/interago/VBox.set_visible(false)
magcourier's avatar
magcourier включено в состав коммита
306
307
	else:
		$CanvasLayer/UI/interago/interago.print_button()
Artem Go's avatar
Artem Go включено в состав коммита
308
		$CanvasLayer/UI/interago/interago/VBox.set_visible(true)
magcourier's avatar
magcourier включено в состав коммита
309

Artem Go's avatar
Artem Go включено в состав коммита
310
func _on_eliro_button_up():
Artem Go's avatar
Artem Go включено в состав коммита
311
	$CanvasLayer/UI/eliro/eliro.popup_centered()
Artem Go's avatar
Artem Go включено в состав коммита
312
	
magcourier's avatar
magcourier включено в состав коммита
313
# запрашиваем объекты
magcourier's avatar
magcourier включено в состав коммита
314
func load_objektoj(after=""):
magcourier's avatar
magcourier включено в состав коммита
315
	var q = QueryObject.new()
magcourier's avatar
magcourier включено в состав коммита
316
317
	id_objekto = Net.get_current_query_id()
#	зугрузка объектов партиями, количество в партии указано в константе запроса
magcourier's avatar
magcourier включено в состав коммита
318
	Net.send_json(q.get_objekto_json(Net.statuso_laboranta, Net.tasko_tipo_objekto, Global.kubo, id_objekto, after))
magcourier's avatar
magcourier включено в состав коммита
319
320
#	$HTTPObjectoRequestFind.request(q.URL, Global.backend_headers, true, 2, q.objecto_query( 2, 3, 2, 1))

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

Artem Go's avatar
Artem Go включено в состав коммита
322
func _on_komerco_button_up():
Artem Go's avatar
Artem Go включено в состав коммита
323
324
325
326
	$CanvasLayer/UI/komerco/komerco/VBox.set_visible(true)



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