1// ==================
2// TEAM MENU
3// ==================
4
5component cmpNamedTbar extends cmpDefNamedTbar {
6	{
7		size	"440 23"
8	}
9	image	bdr {
10		pos "165 2"
11	}
12	tbar		bar {
13		pos "167 2"
14	}
15	string	val {
16		pos "265 0"
17		size "150 20"
18	}
19}
20
21component cmpNamedBar extends panel {
22	{
23		size	"440 23"
24	}
25	image			bdr {
26		pos "165 2"
27		src "ui/bar_border"
28	}
29	bar		currbar {
30		pos "167 7"
31		size "255 6"
32		color		".5 .9 .5 1"
33		max 100
34	}
35	bar		initbar {
36		pos "167 7"
37		size "255 6"
38		color		"0 .8 0 1"
39		max 100
40	}
41	string	lbl {
42		pos "0 0"
43		size "180 20"
44		string ""
45	}
46	string	val {
47		pos "265 0"
48		size "150 20"
49		contentalign ALIGN_UR
50	}
51}
52
53/**
54 * @todo rename the menu according to the file
55 */
56window team extends iaircraft
57{
58	// ==================
59	// background
60	// ==================
61
62	panel actors_background {
63		pos		"18 443"
64		size	"329 321"
65		background	"ui/panel_grey_green_large"
66	}
67
68	panel tab_background {
69		pos		"24 386"
70		size	"986 56"
71		background	"ui/panel_tab"
72	}
73	// ==================
74	// aircraft
75	// ==================
76	model aircraft {
77		src			*cvar:mn_aircraft_model
78		pos			"478 106"
79		size		"529 261"
80		origin		"-45 25 0"
81		angles		"160 20 -120"
82		autoscale	true
83	}
84
85	string team_members {
86		string	"_Team Members:"
87		pos		"480 107"
88		size	"200 20"
89	}
90
91	string team_hired {
92		string		*cvar:mn_hired
93		pos			"619 107"
94		size		"62 20"
95		contentalign	ALIGN_UR
96	}
97
98	func listen_close_equipment {
99		cmd "aircraft_soldierlist_select <node:root.selected@integer>;"
100		cmd "ui_removelistener equipment@onWindowClosed <path:this>;"
101	}
102
103	button bt_equipsoldiers {
104		string "_Equip soldiers"
105		pos		"482 129"
106		size	"198 40"
107		background	"ui/button_blue"
108		color	"1 1 1 0.8"
109		selectcolor "1 1 1 1"
110
111		onClick	{
112			*cvar:cl_selected2 = <cvar:cl_selected>
113			cmd "ui_addlistener equipment@onWindowClosed <path:root>.listen_close_equipment;"
114			cmd "ui_push equipment;"
115		}
116	}
117	todo equip_soldiers_subtab {
118		pos "463 135"
119		string "It would be nice to create a mockup and prototype to equip soldiers with another aircraft tab - should be a very nice short cut"
120	}
121
122	// ==================
123	// names list
124	// ==================
125
126	data selected {
127	}
128
129	rows soldierlist_lines {
130		pos			"35 460"
131		size		"270 283"
132		color1		"0 0.08 0 1"
133		color2		"0 0.16 0 1"
134		lineheight	25
135	}
136	panel soldierlist {
137		pos			"35 460"
138		size		"270 283"
139		padding		6
140		layout		LAYOUT_TOP_DOWN_FLOW
141		wheelscrollable	true
142
143		onViewChange {
144			*node:parent.soldierlist_scroll@fullsize = <fullsize>
145			*node:parent.soldierlist_scroll@current = <viewpos>
146			*node:parent.soldierlist_scroll@viewsize = <viewsize>
147		}
148	}
149	vscrollbar soldierlist_scroll {
150		image		"ui/scrollbar_v_green"
151		pos			"310 462"
152		height		"283"
153		current		0
154		viewsize	8
155		fullsize	50
156
157		onChange {
158			*node:parent.soldierlist@viewpos = <current>
159		}
160	}
161
162	// ==================
163	// actor info
164	// ==================
165
166	panel actor_background {
167	{
168		pos		"358 443"
169		size	"663 321"
170		background	"ui/panel_grey_black"
171	}
172
173	panel actormodel_background {
174		{
175			pos		"12 12"
176			size	"179 296"
177			background	"ui/panel_green"
178		}
179
180		image	rank_img {
181			pos "8 8"
182			size "50 50"
183			src *cvar:mn_chrrank_img
184		}
185
186		model body
187		{
188			{
189				src		*cvar:mn_body
190				skin	*cvar:mn_body_skin
191				anim	"stand2"
192				angles	"0 70 90"
193				scale	"5.5 5.5 5.5"
194				pos		"6 6"
195				size	"168 283"
196				origin	"0 -35 0"
197			}
198
199			model head
200			{
201				src		*cvar:mn_head
202				skin	*cvar:mn_head_skin
203				tag		"tag_head"
204				scale	"1.0 1.0 1.0"
205			}
206
207			model right_rweapon
208			{
209				src		*cvar:mn_rweapon
210				tag		"tag_rweapon"
211			}
212
213			model right_lweapon
214			{
215				src		*cvar:mn_lweapon
216				tag		"tag_lweapon"
217			}
218		}
219
220		string	name { pos "8 247" size "165 20" string *cvar:mn_name }
221		string	rank_lbl { pos "8 267" size "165 20" string *cvar:mn_chrrank }
222	}
223
224	tab actor_stat {
225		{
226			pos		"209 11"
227			size	"438 39"
228			cvar	*cvar:mn_actor_stat
229			onChange {
230				cmd "select_actor_stat <cvar:mn_actor_stat>;"
231			}
232		}
233		option phys {
234			label	"_Physical stats"
235			value	"stats_phys"
236		}
237		option missions {
238			label	"_Missions info"
239			value	"stats_missions"
240		}
241	}
242
243	panel stats_phys {
244		{
245			pos			"208 44"
246			size		"440 264"
247			background	"ui/panel_green_tab"
248			layout		LAYOUT_TOP_DOWN_FLOW
249			padding		9
250		}
251		string padding {
252			size		"440 16"
253		}
254		cmpNamedBar pwr {
255			bar currbar { current *cvar:mn_vpwr }
256			bar initbar { current *cvar:mn_vpwri }
257			string lbl  { string "_Strength:" }
258			string val  { string *cvar:mn_tpwr }
259		}
260		cmpNamedBar spd {
261			bar currbar { current *cvar:mn_vspd }
262			bar initbar { current *cvar:mn_vspdi }
263			string lbl  { string "_Speed:" }
264			string val  { string *cvar:mn_tspd }
265		}
266		cmpNamedBar acc {
267			bar currbar { current *cvar:mn_vacc }
268			bar initbar { current *cvar:mn_vacci }
269			string lbl  { string "_Accuracy:" }
270			string val  { string *cvar:mn_tacc }
271		}
272		cmpNamedBar mnd {
273			bar currbar { current *cvar:mn_vmnd }
274			bar initbar { current *cvar:mn_vmndi }
275			string lbl  { string "_Mind:" }
276			string val  { string *cvar:mn_tmnd }
277		}
278		cmpNamedBar cls {
279			bar currbar { current *cvar:mn_vcls }
280			bar initbar { current *cvar:mn_vclsi }
281			string lbl  { string "_Close Combat:" }
282			string val  { string *cvar:mn_tcls }
283		}
284		cmpNamedBar ass {
285			bar currbar { current *cvar:mn_vass }
286			bar initbar { current *cvar:mn_vassi }
287			string lbl  { string "_Assault Weapons:" }
288			string val  { string *cvar:mn_tass }
289		}
290		cmpNamedBar snp {
291			bar currbar { current *cvar:mn_vsnp }
292			bar initbar { current *cvar:mn_vsnpi }
293			string lbl  { string "_Sniper Rifles:" }
294			string val  { string *cvar:mn_tsnp }
295		}
296		cmpNamedBar exp {
297			bar currbar { current *cvar:mn_vexp }
298			bar initbar { current *cvar:mn_vexpi }
299			string lbl  { string "_High-Explosives:" }
300			string val  { string *cvar:mn_texp }
301		}
302		cmpNamedTbar hp {
303			tbar bar   {
304				current *cvar:mn_vhp
305				max *cvar:mn_vhpmax
306				image "ui/bar_health"
307			}
308			string lbl { string "_Health:" }
309			string val { string *cvar:mn_thp }
310		}
311	}
312
313	panel stats_missions {
314	{
315		pos		"208 44"
316		size	"440 264"
317		background	"ui/panel_green_tab"
318		invis true
319	}
320
321	image	rank_img {
322		pos "195 30"
323		size "50 50"
324		src *cvar:mn_chrrank_img
325	}
326
327	string	rank_lbl { pos "10 85" size "420 20" string *cvar:mn_chrrank contentalign ALIGN_UC font "f_normal_bold" }
328
329	string	missions_lbl { pos "12 150" size "200 20" string "_Missions performed:" }
330	string	missions_val { pos "212 150" size "150 20" string *cvar:mn_chrmis contentalign ALIGN_UR }
331
332	string	kills_lbl { pos "12 170" size "200 20" string "_Enemies killed:" }
333	string	kills_val { pos "212 170" size "150 20" string *cvar:mn_chrkillalien contentalign ALIGN_UR }
334
335	string	civ_lbl { pos "12 190" size "200 20" string "_Civilians killed:" }
336	string	civ_val { pos "212 190" size "150 20" string *cvar:mn_chrkillcivilian contentalign ALIGN_UR }
337
338	string	team_lbl { pos "12 210" size "200 20" string "_Our team killed:" }
339	string	team_val { pos "212 210" size "150 20" string *cvar:mn_chrkillteam contentalign ALIGN_UR }
340
341	}
342
343	}
344
345	/** @todo Activate this again - used for UGVs */
346	// ==================
347	// additional stuff
348	// ==================
349	confunc toggle_show_heavybutton {
350		//*node:root.bt_switch_list@tooltip	= "_Assign tanks"
351		//*node:root.bt_switch_list@icon	= "icons/uvc"
352	}
353	confunc toggle_show_soldiersbutton {
354		//*node:root.bt_switch_list@tooltip	= "_Assign soldiers"
355		//*node:root.bt_switch_list@icon	= "icons/soldier"
356	}
357
358	/**
359	 * @note call when tab actor_stat changed.
360	 */
361	confunc select_actor_stat {
362		if ( <1> eq "stats_phys" ) {
363			*node:root.actor_background.stats_phys@invis = false
364			*node:root.actor_background.stats_missions@invis = true
365		}
366		elif ( <1> eq "stats_missions" ) {
367			*node:root.actor_background.stats_phys@invis = true
368			*node:root.actor_background.stats_missions@invis = false
369		}
370	}
371
372	/**
373	 * @note call when the aircraft status change
374	 */
375	confunc aircraft_status_change
376	{
377		if ( *cvar:mn_hired_count > 0 ) {
378			*node:root.bt_equipsoldiers@disabled = false
379			*node:root.bt_equipsoldiers@tooltip = "_Equip soldiers"
380		} else {
381			*node:root.bt_equipsoldiers@disabled = true
382			*node:root.bt_equipsoldiers@tooltip = "_No soldiers assigned"
383		}
384	}
385
386	/**
387	 * @note iaircraft interface
388	 */
389	confunc aircraft_change
390	{
391		cmd "ui_team_fill soldier;"
392		if ( *node:root.selected@integer >= 0 ) {
393			cmd "aircraft_soldierlist_select <node:root.selected@integer>;"
394		}
395		*node:root.aircraft_list@lineselected = <1>
396		// absent from base, go back to the main GUI
397		if ( *cvar:mn_aircraftinbase == 0 ) {
398			cmd "ui_pop;ui_push aircraft;"
399		}
400		cmd "aircraft_status_change;"
401	}
402
403	func onWindowOpened
404	{
405		*node:root.selected@integer = -1
406		call *node:root.reset_character_cvars
407		cmd "mn_select_aircraft <cvar:mn_aircraft_id>;"
408	}
409}
410