menuo.gd 5,8 КБ
Newer Older
magcourier's avatar
magcourier включено в состав коммита
1
2
extends Control

magcourier's avatar
magcourier включено в состав коммита
3
onready var margin = $"/root/Title/CanvasLayer/UI/Objektoj/Window/canvas/MarginContainer"
magcourier's avatar
magcourier включено в состав коммита
4
onready var ship = $"../ship"
magcourier's avatar
magcourier включено в состав коммита
5

magcourier's avatar
magcourier включено в состав коммита
6
7
var index_pos = 0

magcourier's avatar
magcourier включено в состав коммита
8
func _input(event: InputEvent) -> void:
magcourier's avatar
magcourier включено в состав коммита
9
	
magcourier's avatar
magcourier включено в состав коммита
10
11
	if Input.is_action_just_pressed("right_click"):
#		event.pressed=true
magcourier's avatar
magcourier включено в состав коммита
12
		if event is InputEventMouseButton and $"/root/Title/CanvasLayer/UI/Objektoj/Window/canvas/MarginContainer".visible:
magcourier's avatar
magcourier включено в состав коммита
13
14
			$canvas/PopupMenu.set_item_disabled(2,true)
#			$canvas/PopupMenu.mouse_filter=2
magcourier's avatar
magcourier включено в состав коммита
15
16
17
18
19
20
			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
magcourier's avatar
magcourier включено в состав коммита
21
#				#если пункт меню - станция
magcourier's avatar
magcourier включено в состав коммита
22
23
24
25
				x = $"/root/Title/CanvasLayer/UI/Objektoj/Window/canvas/MarginContainer/VBoxContainer/scroll/ItemList".get_local_mouse_position().x
				y = $"/root/Title/CanvasLayer/UI/Objektoj/Window/canvas/MarginContainer/VBoxContainer/scroll/ItemList".get_local_mouse_position().y
				index_pos = $"/root/Title/CanvasLayer/UI/Objektoj/Window/canvas/MarginContainer/VBoxContainer/scroll/ItemList".get_item_at_position(Vector2(x,y),true)
				$"/root/Title/CanvasLayer/UI/Objektoj/Window/canvas/MarginContainer/VBoxContainer/scroll/ItemList".select(index_pos)
magcourier's avatar
magcourier включено в состав коммита
26
27
28
29
30
31
32
33
34
				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)
magcourier's avatar
magcourier включено в состав коммита
35
				
magcourier's avatar
magcourier включено в состав коммита
36
37
38

# сдвиг по всем координатам по целеполаганию полёта к объекту
const translacio = 20
magcourier's avatar
magcourier включено в состав коммита
39
const translacio_stat = 300
magcourier's avatar
magcourier включено в состав коммита
40

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

magcourier's avatar
magcourier включено в состав коммита
43
func _on_PopupMenu_index_pressed(index):
magcourier's avatar
magcourier включено в состав коммита
44
	if index == 2: # если выбран вход в станцию
magcourier's avatar
magcourier включено в состав коммита
45
46
47
48
49
50
51
52
		# Разрегистрируем обработчик сигнала 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:
magcourier's avatar
magcourier включено в состав коммита
53
			uuid_tasko = Global.itineroj[0]['uuid_tasko']
magcourier's avatar
magcourier включено в состав коммита
54
55
56
57
58
		var error = Title.get_node("request").request(q.URL_DATA, 
			Global.backend_headers,
			true, 2, q.eniri_kosmostacio(
				$"../ship".projekto_uuid,
				uuid_tasko, 
magcourier's avatar
magcourier включено в состав коммита
59
				Global.objektoj[index_pos]['uuid']))
magcourier's avatar
magcourier включено в состав коммита
60
61
62
63
		# Если запрос не выполнен из-за какой-то ошибки
		# TODO: Такие ошибки наверное нужно как-то выводить пользователю?
		if error != OK:
			print('Error in GET (_on_eniri_kosmostacio_request_completed) Request.')
magcourier's avatar
magcourier включено в состав коммита
64
65
66
67
68
69
70
71
		# добавляем в данные пользователя о станции для последующего выхода
		Global.direktebla_objekto[Global.realeco-2]['ligiloLigilo']['edges'].append({
			'node': {'posedanto': {'koordinatoX' : Global.objektoj[index_pos]['koordinatoX'],
			'koordinatoY' : Global.objektoj[index_pos]['koordinatoY'],
			'koordinatoZ' : Global.objektoj[index_pos]['koordinatoZ']},
			'kubo': {'objId' : Global.objektoj[index_pos]['kubo']['objId']},
			},
			'uuid' : Global.objektoj[index_pos]['uuid']})
magcourier's avatar
magcourier включено в состав коммита
72
73
74
75
		Title.CloseWindow()
		Global.direktebla_objekto[Global.realeco-2]['kosmo'] = false
		# вызываем сцену станции
		get_tree().change_scene('res://blokoj/kosmostacioj/CapKosmostacio.tscn')
magcourier's avatar
magcourier включено в состав коммита
76
77
78
79
80
81
82
83
	elif index == 3: # если выбрана стрельба по объекту
		# вычисляем объект в космосе
		# проходим по всем созданным объектам в космосе и находим нужный по uuid
		for child in $"../".get_children():
			if child.is_in_group('create'):
				if child.uuid == Global.objektoj[index_pos]['uuid']:
#					for ch in $"../ship/CollisionShape".get_children():
#						print('==',ch.name)
magcourier's avatar
magcourier включено в состав коммита
84
85
#					$"../ship/CollisionShape/laser_gun".set_target(child.get_global_transform())
					$"../ship/laser_gun".set_target(child)
magcourier's avatar
magcourier включено в состав коммита
86
	else: # если выбрано движение к цели или добавление в маршрут
magcourier's avatar
magcourier включено в состав коммита
87
88
89
90
91
92
93
94
95
96
97
98
99
		# вычисляем точку в пространстве, придвинутую на translacio ближе
		# если станция, то дистанция больше
		var celo = Vector3(Global.objektoj[index_pos]['koordinatoX'],
			Global.objektoj[index_pos]['koordinatoY'],
			Global.objektoj[index_pos]['koordinatoZ'])
		
		var dist = 0
		if Global.objektoj[index_pos]['resurso']['objId']==1:
			dist = $"../ship".translation.distance_to(celo) - translacio_stat
		else:
			dist = $"../ship".translation.distance_to(celo) - translacio
		var speed = celo - $"../ship".translation
		celo = $"../ship".translation + speed.normalized() * dist
magcourier's avatar
magcourier включено в состав коммита
100

magcourier's avatar
magcourier включено в состав коммита
101
		Global.fenestro_itinero.add_itinero(
magcourier's avatar
magcourier включено в состав коммита
102
			'',
magcourier's avatar
magcourier включено в состав коммита
103
104
105
106
107
108
			Global.objektoj[index_pos]['uuid'],
			Global.objektoj[index_pos]['nomo']['enhavo'], #'nomo'
			celo.x,
			celo.y,
			celo.z,
			dist
magcourier's avatar
magcourier включено в состав коммита
109
		)
magcourier's avatar
magcourier включено в состав коммита
110
		Global.fenestro_itinero.FillItemList()
magcourier's avatar
magcourier включено в состав коммита
111
		if index==0:
magcourier's avatar
magcourier включено в состав коммита
112
			Global.fenestro_itinero.komenci_itinero()
magcourier's avatar
magcourier включено в состав коммита
113
	#	elif index==1:
magcourier's avatar
magcourier включено в состав коммита
114
115


magcourier's avatar
magcourier включено в состав коммита
116
117
118
func _on_PopupMenu_draw():
#	$canvas/PopupMenu.mouse_filter=0 #для отключения игнорирования меню и его реакции на выбор пунктов
	pass # Replace with function body.
magcourier's avatar
magcourier включено в состав коммита
119