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

onready var margin = $"/root/Title/CanvasLayer/UI/Lbar/L_VBox/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
12
	if Input.is_action_just_pressed("right_click"):
#		event.pressed=true
		if event is InputEventMouseButton and $"/root/Title/CanvasLayer/UI/Lbar/L_VBox/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
22
23
#				#если пункт меню - станция
				x = $"/root/Title/CanvasLayer/UI/Lbar/L_VBox/Objektoj/Window/canvas/MarginContainer/VBoxContainer/scroll/ItemList".get_local_mouse_position().x
				y = $"/root/Title/CanvasLayer/UI/Lbar/L_VBox/Objektoj/Window/canvas/MarginContainer/VBoxContainer/scroll/ItemList".get_local_mouse_position().y
magcourier's avatar
magcourier включено в состав коммита
24
				index_pos = $"/root/Title/CanvasLayer/UI/Lbar/L_VBox/Objektoj/Window/canvas/MarginContainer/VBoxContainer/scroll/ItemList".get_item_at_position(Vector2(x,y),true)
magcourier's avatar
magcourier включено в состав коммита
25
26
27
28
29
30
31
32
33
34
				$"/root/Title/CanvasLayer/UI/Lbar/L_VBox/Objektoj/Window/canvas/MarginContainer/VBoxContainer/scroll/ItemList".select(index_pos)
				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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
	if index == 2:
		# Разрегистрируем обработчик сигнала 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:
			uuid_tasko = $"../b_itinero/itinero".itineroj[0]['uuid_tasko']
		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
64
65
66
67
		# Если запрос не выполнен из-за какой-то ошибки
		# TODO: Такие ошибки наверное нужно как-то выводить пользователю?
		if error != OK:
			print('Error in GET (_on_eniri_kosmostacio_request_completed) Request.')
		Title.CloseWindow()
		Global.direktebla_objekto[Global.realeco-2]['kosmo'] = false
		# вызываем сцену станции
		get_tree().change_scene('res://blokoj/kosmostacioj/CapKosmostacio.tscn')
magcourier's avatar
magcourier включено в состав коммита
68

magcourier's avatar
magcourier включено в состав коммита
69
	else:
magcourier's avatar
magcourier включено в состав коммита
70
71
72
73
74
75
76
77
78
79
80
81
82
		# вычисляем точку в пространстве, придвинутую на 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 включено в состав коммита
83

magcourier's avatar
magcourier включено в состав коммита
84
85
		$"../b_itinero/itinero".add_itinero(
			'',
magcourier's avatar
magcourier включено в состав коммита
86
87
88
89
90
91
			Global.objektoj[index_pos]['uuid'],
			Global.objektoj[index_pos]['nomo']['enhavo'], #'nomo'
			celo.x,
			celo.y,
			celo.z,
			dist
magcourier's avatar
magcourier включено в состав коммита
92
93
94
95
96
		)
		$"../b_itinero/itinero".FillItemList()
		if index==0:
			$"../b_itinero/itinero".komenci_itinero()
	#	elif index==1:
magcourier's avatar
magcourier включено в состав коммита
97
98


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