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


magcourier's avatar
magcourier включено в состав коммита
4
#var itineroj = [] # маршруты
magcourier's avatar
magcourier включено в состав коммита
5
6
7
8
9
10
11
#uuid_tasko - uuid задачи, когда уже летим
#uuid - uuid цели полёта, если это объект 
#nomo - название объекта цели 
# координаты цели полёта
#			'koordinatoX':
#			'koordinatoY':
#			'koordinatoZ':
magcourier's avatar
magcourier включено в состав коммита
12
# расстояние до цели полёта - distance
magcourier's avatar
magcourier включено в состав коммита
13

magcourier's avatar
magcourier включено в состав коммита
14
15
16
17
func _ready():
	Global.fenestro_itinero = self


magcourier's avatar
magcourier включено в состав коммита
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
func _on_Close_button_pressed():
	$"canvas/MarginContainer".set_visible(false)


func _resize(event: InputEvent) -> void:
	if event is InputEventMouseMotion and Input.is_mouse_button_pressed(BUTTON_LEFT):
		$canvas/MarginContainer.rect_size += event.relative


func _drag(event: InputEvent) -> void:
	if event is InputEventMouseMotion and Input.is_mouse_button_pressed(BUTTON_LEFT):
		$canvas/MarginContainer.rect_position += event.relative


func FillItemList():
	$"canvas/MarginContainer/VBoxContainer/ItemList".clear()
	# Заполняет список найдеными продуктами
magcourier's avatar
magcourier включено в состав коммита
35
	for Item in Global.itineroj:
magcourier's avatar
magcourier включено в состав коммита
36
37
38
39
		get_node("canvas/MarginContainer/VBoxContainer/ItemList").add_item('('+String(int(Item['distance']))+') '+Item['nomo'], null, true)

#пересчет дистанции до объектов в списке
func distance_to(trans):
magcourier's avatar
magcourier включено в состав коммита
40
	for obj in Global.itineroj:
magcourier's avatar
magcourier включено в состав коммита
41
42
43
44
45
46
		obj['distance'] = trans.distance_to(Vector3(obj['koordinatoX'],
			obj['koordinatoY'],obj['koordinatoZ']))
	$'canvas/MarginContainer/VBoxContainer/ItemList'.clear()
#	$'canvas/MarginContainer/VBoxContainer/scroll/ItemList'.clear()
	FillItemList()

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

#отправляем корабль в полёт
func go_ship():
magcourier's avatar
magcourier включено в состав коммита
50
	if len(Global.itineroj)==0:
magcourier's avatar
magcourier включено в состав коммита
51
		return 404
magcourier's avatar
magcourier включено в состав коммита
52
53
54
55
	if Global.fenestro_kosmo:
		var position = Vector3(Global.itineroj[0]['koordinatoX'],Global.itineroj[0]['koordinatoY'],Global.itineroj[0]['koordinatoZ'])
		Global.fenestro_kosmo.get_node("ship").set_way_point(position,null)
		Global.fenestro_kosmo.get_node("way_point").set_way_point(position)
magcourier's avatar
magcourier включено в состав коммита
56

magcourier's avatar
magcourier включено в состав коммита
57
func komenci_itinero():
magcourier's avatar
magcourier включено в состав коммита
58
59
60
61
62
63
64
	if Global.fenestro_kosmo:
		Global.fenestro_kosmo.get_node("ship").vojkomenco()#начинаем движение
		# отправляем в полёт
		go_ship()
		#запускаем таймер
		Global.fenestro_kosmo.get_node("timer").start()
		$canvas/MarginContainer/VBoxContainer/HBoxContainer/kom_itinero.disabled=true
magcourier's avatar
magcourier включено в состав коммита
65
66


magcourier's avatar
magcourier включено в состав коммита
67
func _on_kom_itinero_pressed():
magcourier's avatar
magcourier включено в состав коммита
68
69
70
71
72
73
74
75
76
	if Global.fenestro_kosmo:
		#остановить текущие задачи
		# останавливаем таймер передачи данных на сервер
		Global.fenestro_kosmo.get_node("timer").stop()
		#отправка последних координат и закрытие задачи с проектом
		Global.fenestro_kosmo.get_node("ship").finofara_flugo()
		#создать проект
		#создать список задач на основе списка itineroj
		komenci_itinero()
magcourier's avatar
magcourier включено в состав коммита
77
78


magcourier's avatar
magcourier включено в состав коммита
79
func add_itinero(uuid_tasko, uuid, nomo, koordX, koordY, koordZ, distance):
magcourier's avatar
magcourier включено в состав коммита
80
	Global.itineroj.append({
magcourier's avatar
magcourier включено в состав коммита
81
		'uuid_tasko':uuid_tasko,
magcourier's avatar
magcourier включено в состав коммита
82
83
84
85
86
		'uuid':uuid,
		'nomo':nomo,
		'koordinatoX':koordX,
		'koordinatoY':koordY,
		'koordinatoZ':koordZ,
magcourier's avatar
magcourier включено в состав коммита
87
		'distance':distance,
magcourier's avatar
magcourier включено в состав коммита
88
89
90
91
	})
	FillItemList()

func clear_itinero():
magcourier's avatar
magcourier включено в состав коммита
92
	Global.itineroj.clear()
magcourier's avatar
magcourier включено в состав коммита
93
94
95
	FillItemList()

func _on_itinero_fin_pressed():
magcourier's avatar
magcourier включено в состав коммита
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
	if Global.fenestro_kosmo:
		#если в полёте
		if $canvas/MarginContainer/VBoxContainer/HBoxContainer/kom_itinero.disabled:
			if $canvas/MarginContainer/VBoxContainer/HBoxContainer/itinero_fin.text=='Пауза':
				#останавливаем движение корабля
				$canvas/MarginContainer/VBoxContainer/HBoxContainer/itinero_fin.text='Далее'
				$canvas/MarginContainer/VBoxContainer/HBoxContainer/itinero_next.disabled=true
				Global.fenestro_kosmo.get_node("ship").clear_way_point()
				Global.fenestro_kosmo.get_node("way_point").set_active(false)
			else:
				$canvas/MarginContainer/VBoxContainer/HBoxContainer/itinero_fin.text='Пауза'
				#продолжаем движение корабля
				$canvas/MarginContainer/VBoxContainer/HBoxContainer/itinero_next.disabled=false
				go_ship()
				# itinero_clear
magcourier's avatar
magcourier включено в состав коммита
111
112

func _on_itinero_clear_pressed():
magcourier's avatar
magcourier включено в состав коммита
113
	if len(Global.itineroj)==0:
magcourier's avatar
magcourier включено в состав коммита
114
		return 404
magcourier's avatar
magcourier включено в состав коммита
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
	if Global.fenestro_kosmo:
		#закрыть все задачи и проект
		#удаляем все задачи далее первой
		Global.itineroj = [Global.itineroj[0],]
		#закрываем текущую задачу и проект автоматически закрывается
		Global.fenestro_kosmo.get_node("ship").clear_way_point()
		Global.fenestro_kosmo.get_node("way_point").set_active(false)
		Global.fenestro_kosmo.get_node("timer").stop()
		Global.fenestro_kosmo.get_node("ship").finofara_flugo()
#		itineroj.clear()
#		$canvas/MarginContainer/VBoxContainer/ItemList.clear()
		$canvas/MarginContainer/VBoxContainer/HBoxContainer/kom_itinero.disabled=false
		$canvas/MarginContainer/VBoxContainer/HBoxContainer/itinero_next.disabled=true
		$canvas/MarginContainer/VBoxContainer/HBoxContainer/itinero_fin.disabled=true
		$canvas/MarginContainer/VBoxContainer/HBoxContainer/itinero_clear.disabled=true
magcourier's avatar
magcourier включено в состав коммита
130
131
132
133


# пропустить текущую цель и лететь к следующей
func _on_itinero_next_pressed():
magcourier's avatar
magcourier включено в состав коммита
134
135
136
137
138
	if Global.fenestro_kosmo:
		Global.fenestro_kosmo.get_node("ship").clear_way_point()
		Global.fenestro_kosmo.get_node("way_point").set_active(false)
		Global.fenestro_kosmo.get_node("timer").stop()
		Global.fenestro_kosmo.get_node("ship").finofara_flugo()