1// ================== 2// PRODUCTION MENU 3// ================== 4window production 5{ 6 /** @todo Remove me */ 7 { } // empty properties to fix parsing problem with "image" token (behaviour or property?) 8 9 // ================== 10 // background 11 // ================== 12 13 image background 14 { 15 src "background/base_bg" 16 } 17 cmpBaseHeader baseHeader { 18 } 19 20 // ================== 21 // tab 22 // ================== 23 24 panel tab_background { 25 pos "24 96" 26 size "986 56" 27 background "ui/panel_tab" 28 } 29 30 /** 31 * @brief function to show/hide storage capacity info 32 * @todo show hangar capacity when aircraft is selected 33 */ 34 func prod_stores { 35 if ( *cvar:mn_itemtype ne "aircraft" ) { 36 *node:parent.infopanel.txt_prod_storage_caption@invis = false 37 *node:parent.infopanel.txt_prod_storage@invis = false 38 } else { 39 *node:parent.infopanel.txt_prod_storage_caption@invis = true 40 *node:parent.infopanel.txt_prod_storage@invis = true 41 } 42 } 43 44 tab market_navigation { 45 { 46 pos "47 106" 47 size "938 39" 48 cvar *cvar:mn_itemtype 49 onChange { 50 cmd "prod_type <cvar:mn_itemtype>;" 51 call *node:root.prod_stores 52 } 53 } 54 55 option primary { 56 label "_Primary" 57 value "primary" 58 } 59 option secondary { 60 label "_Secondary" 61 value "secondary" 62 } 63 option description { 64 label "_Heavy" 65 value "heavy" 66 } 67 option misc { 68 label "_Misc" 69 value "misc" 70 } 71 option armour { 72 label "_Armour" 73 value "armour" 74 } 75 option craftitem { 76 label "_Craft items" 77 value "craftitem" 78 } 79 option aircraft { 80 label "_Aircraft" 81 value "aircraft" 82 } 83 option dummy { 84 label "_Other" 85 value "dummy" 86 } 87 option disassembly { 88 label "_Disassembly" 89 value "disassembly" 90 } 91 } 92 93 // ================== 94 // lists 95 // ================== 96 97 rows lines { 98 pos "28 175" 99 size "530 568" 100 color1 "0 0.08 0 1" 101 color2 "0 0.16 0 1" 102 lineheight 50 103 } 104 105 panel scroll_bg { 106 pos "421 175" 107 size "31 568" 108 bgcolor "0 0 0 0.5" 109 } 110 111 panel verticalline { 112 pos "451 175" 113 size "4 565" 114 bgcolor "0.03 0.42 0.03 1" 115 } 116 117 panel itemlist { 118 pos "12 160" 119 size "553 597" 120 background "ui/panel_grey_green_large2" 121 } 122 123 // ================== 124 // info panel 125 // ================== 126 127 panel infopanel { 128 { 129 pos "580 160" 130 size "420 145" 131 background "ui/panel_grey_green_large" 132 } 133 134 // ================== 135 // workers 136 // ================== 137 138 string txt_prod_workers_caption 139 { 140 string "_Workers (ready/all):" 141 pos "30 25" 142 size "250 20" 143 font "f_small" 144 } 145 146 string txt_prod_workers 147 { 148 string *cvar:mn_production_workers 149 pos "295 25" 150 size "100 20" 151 contentalign ALIGN_UR 152 font "f_small" 153 } 154 155 // ================== 156 // workshop capacity 157 // ================== 158 159 string txt_prod_basecap_caption 160 { 161 string "_Workshop capacity:" 162 pos "30 50" 163 size "250 20" 164 font "f_small" 165 } 166 167 string txt_prod_basecap 168 { 169 string *cvar:mn_production_basecap 170 pos "295 50" 171 size "100 20" 172 contentalign ALIGN_UR 173 font "f_small" 174 } 175 176 // ================== 177 // storage capacity 178 // ================== 179 180 string txt_prod_storage_caption 181 { 182 string "_Storage capacity:" 183 pos "30 75" 184 size "250 20" 185 font "f_small" 186 } 187 188 string txt_prod_storage 189 { 190 string *cvar:mn_production_storage 191 pos "295 75" 192 size "100 20" 193 contentalign ALIGN_UR 194 font "f_small" 195 } 196 197 // ================== 198 // prod limit 199 // ================== 200 201 string txt_prod_limit_caption 202 { 203 string "_Production limit:" 204 pos "30 100" 205 size "250 20" 206 font "f_small" 207 } 208 209 string txt_prod_limit 210 { 211 string *cvar:mn_production_limit 212 pos "295 100" 213 size "100 20" 214 contentalign ALIGN_UR 215 font "f_small" 216 } 217 } 218 219 // ================== 220 // list 221 // ================== 222 223 textlist prodlist 224 { 225 dataid TEXT_PRODUCTION_LIST 226 color "0 .78 0 1" 227 rows "11" 228 lineheight "50" 229 pos "55 180" 230 size "250 550" 231 longlines LONGLINES_PRETTYCHOP 232 onClick { 233 *node:root.prodlist_amount@lineselected = <node:this@lineselected> 234 *node:root.prodlist_queued@lineselected = <node:this@lineselected> 235 cmd "prodlist_click <lineselected>;" 236 } 237 onRClick { 238 *node:root.prodlist_amount@lineselected = <node:this@lineselected> 239 *node:root.prodlist_queued@lineselected = <node:this@lineselected> 240 cmd "prodlist_rclick <lineselected>;" 241 } 242 onViewChange { 243 *node:root.prodlist_scroll@fullsize = <fullsize> 244 *node:root.prodlist_scroll@current = <viewpos> 245 *node:root.prodlist_scroll@viewsize = <viewsize> 246 *node:root.prodlist_amount@viewpos = <viewpos> 247 *node:root.prodlist_queued@viewpos = <viewpos> 248 } 249 } 250 251 textlist prodlist_amount 252 { 253 dataid TEXT_PRODUCTION_AMOUNT 254 color "0 .78 0 1" 255 contentalign ALIGN_CR 256 pos "310 180" 257 rows "11" 258 size "60 550" 259 lineheight "50" 260 onClick { 261 *node:root.prodlist@lineselected = <node:this@lineselected> 262 *node:root.prodlist_queued@lineselected = <node:this@lineselected> 263 cmd "prodlist_click <lineselected>;" 264 } 265 onRClick { 266 *node:root.prodlist@lineselected = <node:this@lineselected> 267 *node:root.prodlist_queued@lineselected = <node:this@lineselected> 268 cmd "prodlist_rclick <lineselected>;" 269 } 270 onViewChange { 271 *node:root.prodlist_scroll@fullsize = <fullsize> 272 *node:root.prodlist_scroll@current = <viewpos> 273 *node:root.prodlist_scroll@viewsize = <viewsize> 274 *node:root.prodlist@viewpos = <viewpos> 275 *node:root.prodlist_queued@viewpos = <viewpos> 276 } 277 } 278 279 textlist prodlist_queued 280 { 281 dataid TEXT_PRODUCTION_QUEUED 282 pos "465 180" 283 size "60 550" 284 color "0 .78 0 1" 285 lineheight "50" 286 rows "11" 287 onClick { 288 *node:root.prodlist@lineselected = <node:this@lineselected> 289 *node:root.prodlist_amount@lineselected = <node:this@lineselected> 290 cmd "prodlist_click <lineselected>;" 291 } 292 onRClick { 293 *node:root.prodlist@lineselected = <node:this@lineselected> 294 *node:root.prodlist_queued@lineselected = <node:this@lineselected> 295 cmd "prodlist_rclick <lineselected>;" 296 } 297 onViewChange { 298 *node:root.prodlist_scroll@fullsize = <fullsize> 299 *node:root.prodlist_scroll@current = <viewpos> 300 *node:root.prodlist_scroll@viewsize = <viewsize> 301 *node:root.prodlist_amount@viewpos = <viewpos> 302 *node:root.prodlist@viewpos = <viewpos> 303 } 304 } 305 306 vscrollbar prodlist_scroll { 307 image "ui/scrollbar_v_green" 308 pos "428 180" 309 height "556" 310 current 0 311 viewsize 30 312 fullsize 30 313 onChange { 314 *node:root.prodlist@viewpos = <current> 315 *node:root.prodlist_amount@viewpos = <current> 316 *node:root.prodlist_queued@viewpos = <current> 317 } 318 } 319 320 confunc prod_selectline { 321 *node:root.prodlist@lineselected = <1> 322 *node:root.prodlist_amount@lineselected = <1> 323 *node:root.prodlist_queued@lineselected = <1> 324 } 325 // ================== 326 // item 327 // ================== 328 329 panel itempanel { 330 { 331 pos "580 310" 332 size "420 447" 333 background "ui/panel_grey_green_large" 334 } 335 336 item itemmodel 337 { 338 src *cvar:mn_item 339 pos "17 17" 340 size "386 152" 341 angles "0 180 90" 342 omega "0 10 0" 343 autoscale true 344 } 345 346 } 347 348 // ================== 349 // info 350 // @todo move it into the item panel 351 // ================== 352 353 string prod_amount { 354 string *cvar:mn_production_amount 355 pos "650 480" 356 size "40 50" 357 color "0 .78 0 1" 358 font "f_small" 359 contentalign ALIGN_CR 360 } 361 362 string label_1 { 363 string "x1" 364 pos "680 480" 365 size "24 50" 366 color "0 .78 0 1" 367 font "f_small" 368 contentalign ALIGN_CR 369 } 370 371 string label_10 { 372 string "x10" 373 pos "810 480" 374 size "36 50" 375 color "0 .78 0 1" 376 font "f_small" 377 contentalign ALIGN_CR 378 } 379 380 spinner_horiz prod_change { 381 tooltip "_Change the production amount" 382 pos "710 480" 383 inverted true 384 min 1 385 current *cvar:mn_production_amount 386 max 1000 387 delta 1 388 onChange { cmd "prod_change <lastdiff>;" } 389 } 390 391 spinner_horiz prod_change_10 { 392 tooltip "_Change the production amount" 393 pos "850 480" 394 inverted true 395 min 1 396 current *cvar:mn_production_amount 397 max 1000 398 delta 10 399 onChange { cmd "prod_change <lastdiff>;" } 400 } 401 402 button prod_new 403 { 404 string "_Start this production" 405 background "ui/button_green_small" 406 pos "670 480" 407 size "250 50" 408 font "f_small" 409 color "0 .78 0 1" 410 onClick { cmd "prod_inc;" } 411 } 412 413 button prod_stop 414 { 415 tooltip "_Stop production" 416 icon "icons/bordered_cross" 417 pos "931 480" 418 size "50 50" 419 padding 17 420 onClick { cmd "prod_stop;" } 421 } 422 423 button prod_up 424 { 425 tooltip "_Increase priority" 426 icon "icons/arrow_top" 427 pos "615 400" 428 size "16 16" 429 padding "0" 430 onClick { cmd "prod_up;" } 431 onWheelUp { cmd "prod_up;" } 432 onWheelDown { cmd "prod_down;" } 433 } 434 435 button prod_down 436 { 437 tooltip "_Decrease priority" 438 icon "icons/arrow_bottom" 439 pos "615 420" 440 size "16 16" 441 padding 0 442 onClick { cmd "prod_down;" } 443 onWheelUp { cmd "prod_up;" } 444 onWheelDown { cmd "prod_down;" } 445 } 446 447 /** 448 * @brief nothing is selected 449 */ 450 confunc prod_nothingselected 451 { 452 *node:root.prod_stop@invis = true 453 *node:root.prod_down@invis = true 454 *node:root.prod_up@invis = true 455 *node:root.prod_change@invis = true 456 *node:root.prod_change_10@invis = true 457 *node:root.prod_new@invis = true 458 *node:root.prod_amount@invis = true 459 *node:root.label_1@invis = true 460 *node:root.label_10@invis = true 461 } 462 463 /** 464 * @brief an available production is selected 465 */ 466 confunc prod_availableselected 467 { 468 *node:root.prod_stop@invis = true 469 *node:root.prod_down@invis = true 470 *node:root.prod_up@invis = true 471 *node:root.prod_change@invis = true 472 *node:root.prod_change_10@invis = true 473 *node:root.prod_amount@invis = true 474 *node:root.prod_new@invis = false 475 *node:root.label_1@invis = true 476 *node:root.label_10@invis = true 477 } 478 479 /** 480 * @brief a production task is selected 481 */ 482 confunc prod_taskselected 483 { 484 *node:root.prod_stop@invis = false 485 *node:root.prod_down@invis = false 486 *node:root.prod_up@invis = false 487 *node:root.prod_change@invis = false 488 *node:root.prod_change_10@invis = false 489 *node:root.prod_amount@invis = false 490 *node:root.prod_new@invis = true 491 *node:root.label_1@invis = false 492 *node:root.label_10@invis = false 493 } 494 495 // ================== 496 // item description 497 // ================== 498 499 500 panel requirement { 501 { 502 pos "610 615" 503 size "346 120" 504 } 505 506 string label { 507 pos "5 5" 508 size "336 20" 509 font "f_verysmall" 510 string "_Requirements" 511 } 512 513 optiontree prodreq 514 { 515 cvar *cvar:ui_prreq 516 dataid OPTION_PRODUCTION_REQUIREMENTS 517 pos "5 26" 518 size "320 92" 519 font "f_verysmall" 520 color "0 .78 0 1" 521 selectcolor "0 .78 0 1" 522 onViewChange { 523 *node:parent.prodreq_scroll@fullsize = <fullsize> 524 *node:parent.prodreq_scroll@current = <viewpos> 525 *node:parent.prodreq_scroll@viewsize = <viewsize> 526 } 527 } 528 529 vscrollbar prodreq_scroll { 530 image "ui/scrollbar_v_green" 531 pos "326 26" 532 height "92" 533 current 0 534 viewsize 6 535 fullsize 6 536 hidewhenunused true 537 onChange { *node:parent.prodreq@viewpos = <current> } 538 } 539 } 540 541 panel proddesc { 542 { 543 pos "610 533" 544 size "346 80" 545 layout LAYOUT_BORDER 546 } 547 548 text description 549 { 550 dataid TEXT_PRODUCTION_INFO 551 align LAYOUTALIGN_MIDDLE 552 lineheight 20 553 tabwidth 260 554 rows 4 555 onChange 556 { 557 *node:root.proddesc.description_scroll@current = 0 558 *node:root.proddesc.description@viewpos = 0 559 } 560 onViewChange { 561 *node:root.proddesc.description_scroll@fullsize = <fullsize> 562 *node:root.proddesc.description_scroll@current = <viewpos> 563 *node:root.proddesc.description_scroll@viewsize = <viewsize> 564 } 565 } 566 567 vscrollbar description_scroll { 568 image "ui/scrollbar_v_green" 569 align LAYOUTALIGN_RIGHT 570 current 0 571 viewsize 4 572 fullsize 4 573 hidewhenunused true 574 onChange { *node:root.proddesc.description@viewpos = <current> } 575 } 576 } 577 578 confunc show_requirements { 579 *cvar:parm = <1> 580 581 if ( *cvar:parm > 0 ) { 582 *node:root.requirement@invis = false 583 *node:root.proddesc@height = 80 584 } else { 585 *node:root.requirement@invis = true 586 *node:root.proddesc@height = 200 587 } 588 delete *cvar:parm 589 } 590 591 // ================== 592 // init function 593 // ================== 594 595 confunc amountsetter { 596 *cvar:tmp = "<1>" 597 if ( *cvar:tmp eq "disable" ) { 598 *node:root.prod_change@disabled = true 599 *node:root.prod_change_10@disabled = true 600 } else { 601 *node:root.prod_change@disabled = false 602 *node:root.prod_change_10@disabled = false 603 } 604 delete *cvar:tmp 605 } 606 607 func onWindowOpened 608 { 609 cmd "prod_init; prod_type *cvar:mn_itemtype;" 610 call *node:root.prod_stores 611 *cvar:ui_prreq = "" 612 *cvar:mn_lastsubmenu = "production" 613 } 614 func onWindowClosed 615 { 616 delete *cvar:ui_prreq 617 // call base init function because the amount of workers, scientists and 618 // so on can also change the button state in the base view 619 cmd "base_init;" 620 } 621} 622