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