From f2f1e273ddc5d8c642c51e816d461ba79bc23816 Mon Sep 17 00:00:00 2001 From: Scott Brooks Date: Tue, 8 Jan 2002 05:45:06 +0000 Subject: [PATCH] Initial revision --- ta_ui/addfilter.menu | 323 + ta_ui/botselection.menu | 306 + ta_ui/cdkey.menu | 312 + ta_ui/chip.menu | 39 + ta_ui/cinematic.menu | 16 + ta_ui/cinematicmenu.menu | 308 + ta_ui/compile.bat | 2 + ta_ui/connect.menu | 15 + ta_ui/controls.menu | 1417 + ta_ui/controls2.menu | 911 + ta_ui/createfavorite.menu | 199 + ta_ui/createserver.menu | 1315 + ta_ui/credit.menu | 459 + ta_ui/default.menu | 255 + ta_ui/demo.menu | 266 + ta_ui/demo_quit.menu | 252 + ta_ui/endofgame.menu | 1331 + ta_ui/endofgame2.menu | 1034 + ta_ui/error.menu | 318 + ta_ui/fight.menu | 770 + ta_ui/findplayer.menu | 514 + ta_ui/help.menu | 660 + ta_ui/help2.menu | 721 + ta_ui/hud.menu | 803 + ta_ui/hud.txt | 7 + ta_ui/hud2.txt | 7 + ta_ui/hud_old.menu | 1091 + ta_ui/ingame.menu | 382 + ta_ui/ingame.txt | 16 + ta_ui/ingame_about.menu | 400 + ta_ui/ingame_addbot.menu | 162 + ta_ui/ingame_callvote.menu | 491 + ta_ui/ingame_callvote2.menu | 192 + ta_ui/ingame_controls.menu | 1412 + ta_ui/ingame_join.menu | 144 + ta_ui/ingame_leave.menu | 344 + ta_ui/ingame_options.menu | 469 + ta_ui/ingame_orders.menu | 481 + ta_ui/ingame_orders2.menu | 199 + ta_ui/ingame_player.menu | 259 + ta_ui/ingame_scoreffa.menu | 452 + ta_ui/ingame_serverinfo.menu | 63 + ta_ui/ingame_system.menu | 619 + ta_ui/ingame_vote.menu | 141 + ta_ui/ingame_vote2.menu | 71 + ta_ui/joinserver.menu | 1259 + ta_ui/keycodes.h | 143 + ta_ui/main.menu | 559 + ta_ui/main2.menu | 686 + ta_ui/menudef.h | 287 + ta_ui/menus.txt | 37 + ta_ui/min_hud.menu | 674 + ta_ui/mod.menu | 303 + ta_ui/mssccprj.scc | 5 + ta_ui/newleague.menu | 67 + ta_ui/options.menu | 351 + ta_ui/ordershelp.menu | 1020 + ta_ui/password.menu | 147 + ta_ui/player.menu | 612 + ta_ui/powerup.menu | 768 + ta_ui/powerup2.menu | 694 + ta_ui/quake3.menu | 222 + ta_ui/quit.menu | 163 + ta_ui/quitcredit.menu | 258 + ta_ui/rankings.menu | 93 + ta_ui/resetscore.menu | 223 + ta_ui/score.menu | 452 + ta_ui/score_results.menu | 417 + ta_ui/serverinfo.menu | 396 + ta_ui/serverinfo_old.menu | 340 + ta_ui/setup.menu | 513 + ta_ui/skirmish.menu | 1655 + ta_ui/small.menu | 796 + ta_ui/system.menu | 676 + ta_ui/team.menu | 306 + ta_ui/teamscore.menu | 512 + ta_ui/testhud.menu | 1052 + ta_ui/ui.bat | 29 + ta_ui/ui.def | 3 + ta_ui/ui.dsp | 641 + ta_ui/ui.dsw | 29 + ta_ui/ui.ncb | Bin 0 -> 189438 bytes ta_ui/ui.opt | Bin 0 -> 55808 bytes ta_ui/ui.plg | 43 + ta_ui/ui.q3asm | 12 + ta_ui/ui.vcproj | 481 + ta_ui/ui/addfilter.menu | 323 + ta_ui/ui/botselection.menu | 306 + ta_ui/ui/cdkey.menu | 312 + ta_ui/ui/chip.menu | 39 + ta_ui/ui/cinematic.menu | 16 + ta_ui/ui/cinematicmenu.menu | 308 + ta_ui/ui/connect.menu | 15 + ta_ui/ui/controls.menu | 1417 + ta_ui/ui/controls2.menu | 911 + ta_ui/ui/createfavorite.menu | 199 + ta_ui/ui/createserver.menu | 1315 + ta_ui/ui/credit.menu | 459 + ta_ui/ui/default.menu | 255 + ta_ui/ui/demo.menu | 266 + ta_ui/ui/demo_quit.menu | 252 + ta_ui/ui/endofgame.menu | 1331 + ta_ui/ui/endofgame2.menu | 1034 + ta_ui/ui/error.menu | 318 + ta_ui/ui/fight.menu | 770 + ta_ui/ui/findplayer.menu | 514 + ta_ui/ui/help.menu | 660 + ta_ui/ui/help2.menu | 721 + ta_ui/ui/hud.menu | 803 + ta_ui/ui/hud.txt | 7 + ta_ui/ui/hud2.txt | 7 + ta_ui/ui/hud_old.menu | 1091 + ta_ui/ui/ingame.menu | 382 + ta_ui/ui/ingame.txt | 16 + ta_ui/ui/ingame_about.menu | 400 + ta_ui/ui/ingame_addbot.menu | 162 + ta_ui/ui/ingame_callvote.menu | 491 + ta_ui/ui/ingame_callvote2.menu | 192 + ta_ui/ui/ingame_controls.menu | 1412 + ta_ui/ui/ingame_join.menu | 144 + ta_ui/ui/ingame_leave.menu | 344 + ta_ui/ui/ingame_options.menu | 469 + ta_ui/ui/ingame_orders.menu | 481 + ta_ui/ui/ingame_orders2.menu | 199 + ta_ui/ui/ingame_player.menu | 259 + ta_ui/ui/ingame_scoreffa.menu | 452 + ta_ui/ui/ingame_serverinfo.menu | 63 + ta_ui/ui/ingame_system.menu | 619 + ta_ui/ui/ingame_vote.menu | 141 + ta_ui/ui/ingame_vote2.menu | 71 + ta_ui/ui/joinserver.menu | 1259 + ta_ui/ui/main.menu | 559 + ta_ui/ui/main2.menu | 686 + ta_ui/ui/menudef.h | 287 + ta_ui/ui/menus.txt | 37 + ta_ui/ui/min_hud.menu | 674 + ta_ui/ui/mod.menu | 303 + ta_ui/ui/newleague.menu | 67 + ta_ui/ui/options.menu | 351 + ta_ui/ui/ordershelp.menu | 1020 + ta_ui/ui/password.menu | 147 + ta_ui/ui/player.menu | 612 + ta_ui/ui/powerup.menu | 768 + ta_ui/ui/powerup2.menu | 694 + ta_ui/ui/quake3.menu | 222 + ta_ui/ui/quit.menu | 163 + ta_ui/ui/quitcredit.menu | 258 + ta_ui/ui/rankings.menu | 93 + ta_ui/ui/resetscore.menu | 223 + ta_ui/ui/score.menu | 452 + ta_ui/ui/score_results.menu | 417 + ta_ui/ui/serverinfo.menu | 396 + ta_ui/ui/serverinfo_old.menu | 340 + ta_ui/ui/setup.menu | 513 + ta_ui/ui/skirmish.menu | 1655 + ta_ui/ui/small.menu | 796 + ta_ui/ui/system.menu | 676 + ta_ui/ui/team.menu | 306 + ta_ui/ui/teamscore.menu | 512 + ta_ui/ui/testhud.menu | 1052 + ta_ui/ui/vid_restart.menu | 194 + ta_ui/ui/vssver.scc | Bin 0 -> 1232 bytes ta_ui/ui___Win32_vector/bg_misc.obj | Bin 0 -> 48122 bytes ta_ui/ui___Win32_vector/q_math.obj | Bin 0 -> 22643 bytes ta_ui/ui___Win32_vector/q_shared.obj | Bin 0 -> 21235 bytes ta_ui/ui___Win32_vector/ui.pch | Bin 0 -> 166896 bytes ta_ui/ui___Win32_vector/ui_atoms.obj | Bin 0 -> 23856 bytes ta_ui/ui___Win32_vector/ui_gameinfo.obj | Bin 0 -> 11675 bytes ta_ui/ui___Win32_vector/ui_main.obj | Bin 0 -> 219584 bytes ta_ui/ui___Win32_vector/ui_players.obj | Bin 0 -> 28901 bytes ta_ui/ui___Win32_vector/ui_shared.obj | Bin 0 -> 144380 bytes ta_ui/ui___Win32_vector/ui_syscalls.obj | Bin 0 -> 23054 bytes ta_ui/ui___Win32_vector/ui_util.obj | Bin 0 -> 210 bytes ta_ui/ui___Win32_vector/uix86.exp | Bin 0 -> 646 bytes ta_ui/ui___Win32_vector/uix86.lib | Bin 0 -> 2060 bytes ta_ui/ui___Win32_vector/uix86.map | 2278 + ta_ui/ui___Win32_vector/vc60.idb | Bin 0 -> 41983 bytes ta_ui/ui_atoms.c | 500 + ta_ui/ui_gameinfo.c | 304 + ta_ui/ui_local.h | 1113 + ta_ui/ui_main.c | 5929 +++ ta_ui/ui_players.c | 1365 + ta_ui/ui_public.h | 167 + ta_ui/ui_shared.c | 5747 +++ ta_ui/ui_shared.h | 429 + ta_ui/ui_syscalls.asm | 100 + ta_ui/ui_syscalls.c | 372 + ta_ui/ui_util.c | 8 + ta_ui/vid_restart.menu | 194 + ta_ui/vm/bg_lib.asm | 5890 +++ ta_ui/vm/bg_misc.asm | 9876 +++++ ta_ui/vm/q_math.asm | 9605 ++++ ta_ui/vm/q_shared.asm | 7907 ++++ ta_ui/vm/ui_atoms.asm | 5086 +++ ta_ui/vm/ui_gameinfo.asm | 2952 ++ ta_ui/vm/ui_main.asm | 50892 ++++++++++++++++++++++ ta_ui/vm/ui_players.asm | 9817 +++++ ta_ui/vm/ui_shared.asm | 42810 ++++++++++++++++++ ta_ui/vm/ui_util.asm | 0 ta_ui/vssver.scc | Bin 0 -> 320 bytes 200 files changed, 235891 insertions(+) create mode 100644 ta_ui/addfilter.menu create mode 100644 ta_ui/botselection.menu create mode 100644 ta_ui/cdkey.menu create mode 100644 ta_ui/chip.menu create mode 100644 ta_ui/cinematic.menu create mode 100644 ta_ui/cinematicmenu.menu create mode 100755 ta_ui/compile.bat create mode 100644 ta_ui/connect.menu create mode 100644 ta_ui/controls.menu create mode 100644 ta_ui/controls2.menu create mode 100644 ta_ui/createfavorite.menu create mode 100644 ta_ui/createserver.menu create mode 100644 ta_ui/credit.menu create mode 100644 ta_ui/default.menu create mode 100644 ta_ui/demo.menu create mode 100644 ta_ui/demo_quit.menu create mode 100644 ta_ui/endofgame.menu create mode 100644 ta_ui/endofgame2.menu create mode 100644 ta_ui/error.menu create mode 100644 ta_ui/fight.menu create mode 100644 ta_ui/findplayer.menu create mode 100644 ta_ui/help.menu create mode 100644 ta_ui/help2.menu create mode 100644 ta_ui/hud.menu create mode 100644 ta_ui/hud.txt create mode 100644 ta_ui/hud2.txt create mode 100644 ta_ui/hud_old.menu create mode 100644 ta_ui/ingame.menu create mode 100644 ta_ui/ingame.txt create mode 100644 ta_ui/ingame_about.menu create mode 100644 ta_ui/ingame_addbot.menu create mode 100644 ta_ui/ingame_callvote.menu create mode 100644 ta_ui/ingame_callvote2.menu create mode 100644 ta_ui/ingame_controls.menu create mode 100644 ta_ui/ingame_join.menu create mode 100644 ta_ui/ingame_leave.menu create mode 100644 ta_ui/ingame_options.menu create mode 100644 ta_ui/ingame_orders.menu create mode 100644 ta_ui/ingame_orders2.menu create mode 100644 ta_ui/ingame_player.menu create mode 100644 ta_ui/ingame_scoreffa.menu create mode 100644 ta_ui/ingame_serverinfo.menu create mode 100644 ta_ui/ingame_system.menu create mode 100644 ta_ui/ingame_vote.menu create mode 100644 ta_ui/ingame_vote2.menu create mode 100644 ta_ui/joinserver.menu create mode 100644 ta_ui/keycodes.h create mode 100644 ta_ui/main.menu create mode 100644 ta_ui/main2.menu create mode 100644 ta_ui/menudef.h create mode 100644 ta_ui/menus.txt create mode 100644 ta_ui/min_hud.menu create mode 100644 ta_ui/mod.menu create mode 100644 ta_ui/mssccprj.scc create mode 100644 ta_ui/newleague.menu create mode 100644 ta_ui/options.menu create mode 100644 ta_ui/ordershelp.menu create mode 100644 ta_ui/password.menu create mode 100644 ta_ui/player.menu create mode 100644 ta_ui/powerup.menu create mode 100644 ta_ui/powerup2.menu create mode 100644 ta_ui/quake3.menu create mode 100644 ta_ui/quit.menu create mode 100644 ta_ui/quitcredit.menu create mode 100644 ta_ui/rankings.menu create mode 100644 ta_ui/resetscore.menu create mode 100644 ta_ui/score.menu create mode 100644 ta_ui/score_results.menu create mode 100644 ta_ui/serverinfo.menu create mode 100644 ta_ui/serverinfo_old.menu create mode 100644 ta_ui/setup.menu create mode 100644 ta_ui/skirmish.menu create mode 100644 ta_ui/small.menu create mode 100644 ta_ui/system.menu create mode 100644 ta_ui/team.menu create mode 100644 ta_ui/teamscore.menu create mode 100644 ta_ui/testhud.menu create mode 100755 ta_ui/ui.bat create mode 100644 ta_ui/ui.def create mode 100644 ta_ui/ui.dsp create mode 100644 ta_ui/ui.dsw create mode 100644 ta_ui/ui.ncb create mode 100644 ta_ui/ui.opt create mode 100644 ta_ui/ui.plg create mode 100644 ta_ui/ui.q3asm create mode 100644 ta_ui/ui.vcproj create mode 100644 ta_ui/ui/addfilter.menu create mode 100644 ta_ui/ui/botselection.menu create mode 100644 ta_ui/ui/cdkey.menu create mode 100644 ta_ui/ui/chip.menu create mode 100644 ta_ui/ui/cinematic.menu create mode 100644 ta_ui/ui/cinematicmenu.menu create mode 100644 ta_ui/ui/connect.menu create mode 100644 ta_ui/ui/controls.menu create mode 100644 ta_ui/ui/controls2.menu create mode 100644 ta_ui/ui/createfavorite.menu create mode 100644 ta_ui/ui/createserver.menu create mode 100644 ta_ui/ui/credit.menu create mode 100644 ta_ui/ui/default.menu create mode 100644 ta_ui/ui/demo.menu create mode 100644 ta_ui/ui/demo_quit.menu create mode 100644 ta_ui/ui/endofgame.menu create mode 100644 ta_ui/ui/endofgame2.menu create mode 100644 ta_ui/ui/error.menu create mode 100644 ta_ui/ui/fight.menu create mode 100644 ta_ui/ui/findplayer.menu create mode 100644 ta_ui/ui/help.menu create mode 100644 ta_ui/ui/help2.menu create mode 100644 ta_ui/ui/hud.menu create mode 100644 ta_ui/ui/hud.txt create mode 100644 ta_ui/ui/hud2.txt create mode 100644 ta_ui/ui/hud_old.menu create mode 100644 ta_ui/ui/ingame.menu create mode 100644 ta_ui/ui/ingame.txt create mode 100644 ta_ui/ui/ingame_about.menu create mode 100644 ta_ui/ui/ingame_addbot.menu create mode 100644 ta_ui/ui/ingame_callvote.menu create mode 100644 ta_ui/ui/ingame_callvote2.menu create mode 100644 ta_ui/ui/ingame_controls.menu create mode 100644 ta_ui/ui/ingame_join.menu create mode 100644 ta_ui/ui/ingame_leave.menu create mode 100644 ta_ui/ui/ingame_options.menu create mode 100644 ta_ui/ui/ingame_orders.menu create mode 100644 ta_ui/ui/ingame_orders2.menu create mode 100644 ta_ui/ui/ingame_player.menu create mode 100644 ta_ui/ui/ingame_scoreffa.menu create mode 100644 ta_ui/ui/ingame_serverinfo.menu create mode 100644 ta_ui/ui/ingame_system.menu create mode 100644 ta_ui/ui/ingame_vote.menu create mode 100644 ta_ui/ui/ingame_vote2.menu create mode 100644 ta_ui/ui/joinserver.menu create mode 100644 ta_ui/ui/main.menu create mode 100644 ta_ui/ui/main2.menu create mode 100644 ta_ui/ui/menudef.h create mode 100644 ta_ui/ui/menus.txt create mode 100644 ta_ui/ui/min_hud.menu create mode 100644 ta_ui/ui/mod.menu create mode 100644 ta_ui/ui/newleague.menu create mode 100644 ta_ui/ui/options.menu create mode 100644 ta_ui/ui/ordershelp.menu create mode 100644 ta_ui/ui/password.menu create mode 100644 ta_ui/ui/player.menu create mode 100644 ta_ui/ui/powerup.menu create mode 100644 ta_ui/ui/powerup2.menu create mode 100644 ta_ui/ui/quake3.menu create mode 100644 ta_ui/ui/quit.menu create mode 100644 ta_ui/ui/quitcredit.menu create mode 100644 ta_ui/ui/rankings.menu create mode 100644 ta_ui/ui/resetscore.menu create mode 100644 ta_ui/ui/score.menu create mode 100644 ta_ui/ui/score_results.menu create mode 100644 ta_ui/ui/serverinfo.menu create mode 100644 ta_ui/ui/serverinfo_old.menu create mode 100644 ta_ui/ui/setup.menu create mode 100644 ta_ui/ui/skirmish.menu create mode 100644 ta_ui/ui/small.menu create mode 100644 ta_ui/ui/system.menu create mode 100644 ta_ui/ui/team.menu create mode 100644 ta_ui/ui/teamscore.menu create mode 100644 ta_ui/ui/testhud.menu create mode 100644 ta_ui/ui/vid_restart.menu create mode 100644 ta_ui/ui/vssver.scc create mode 100644 ta_ui/ui___Win32_vector/bg_misc.obj create mode 100644 ta_ui/ui___Win32_vector/q_math.obj create mode 100644 ta_ui/ui___Win32_vector/q_shared.obj create mode 100644 ta_ui/ui___Win32_vector/ui.pch create mode 100644 ta_ui/ui___Win32_vector/ui_atoms.obj create mode 100644 ta_ui/ui___Win32_vector/ui_gameinfo.obj create mode 100644 ta_ui/ui___Win32_vector/ui_main.obj create mode 100644 ta_ui/ui___Win32_vector/ui_players.obj create mode 100644 ta_ui/ui___Win32_vector/ui_shared.obj create mode 100644 ta_ui/ui___Win32_vector/ui_syscalls.obj create mode 100644 ta_ui/ui___Win32_vector/ui_util.obj create mode 100644 ta_ui/ui___Win32_vector/uix86.exp create mode 100644 ta_ui/ui___Win32_vector/uix86.lib create mode 100644 ta_ui/ui___Win32_vector/uix86.map create mode 100644 ta_ui/ui___Win32_vector/vc60.idb create mode 100644 ta_ui/ui_atoms.c create mode 100644 ta_ui/ui_gameinfo.c create mode 100644 ta_ui/ui_local.h create mode 100644 ta_ui/ui_main.c create mode 100644 ta_ui/ui_players.c create mode 100644 ta_ui/ui_public.h create mode 100644 ta_ui/ui_shared.c create mode 100644 ta_ui/ui_shared.h create mode 100644 ta_ui/ui_syscalls.asm create mode 100644 ta_ui/ui_syscalls.c create mode 100644 ta_ui/ui_util.c create mode 100644 ta_ui/vid_restart.menu create mode 100644 ta_ui/vm/bg_lib.asm create mode 100644 ta_ui/vm/bg_misc.asm create mode 100644 ta_ui/vm/q_math.asm create mode 100644 ta_ui/vm/q_shared.asm create mode 100644 ta_ui/vm/ui_atoms.asm create mode 100644 ta_ui/vm/ui_gameinfo.asm create mode 100644 ta_ui/vm/ui_main.asm create mode 100644 ta_ui/vm/ui_players.asm create mode 100644 ta_ui/vm/ui_shared.asm create mode 100644 ta_ui/vm/ui_util.asm create mode 100644 ta_ui/vssver.scc diff --git a/ta_ui/addfilter.menu b/ta_ui/addfilter.menu new file mode 100644 index 00000000..6a0210dc --- /dev/null +++ b/ta_ui/addfilter.menu @@ -0,0 +1,323 @@ +#include "ui/menudef.h" + +{ +\\ ADD FILTER POPUP MENU \\ + +menuDef { + name "addfilter_popmenu" + visible 0 + fullscreen 0 + rect 190 200 256 256 + outOfBoundsClick + focusColor 1 .75 0 1 + style 1 + border 1 + onopen { hide grpFilter ; show add } + +itemDef { + name window + rect 0 0 256 256 + style 1 + border 1 + bordercolor .5 .5 .5 1 + backcolor 0 0 .5 1 + visible 1 + decoration + } + +itemDef { + name window + rect 0 220 256 1 + style 1 + border 1 + bordercolor .5 .5 .5 1 + backcolor 0 0 .5 1 + visible 1 + decoration + } + + +// BUTTONS // + +itemDef { + name filter_add + text "Add" + type 1 + textscale .25 + group grpFilterbutton + style WINDOW_STYLE_SHADER + background "ui/assets/button_red.tga" + rect 10 5 75 20 + textalign 1 + textalignx 37 + textaligny 16 + forecolor 1 1 1 1 + visible 1 + action { hide grpFilter ; show add } + } + +itemDef { + name filter_edit + text "Edit" + type 1 + textscale .25 + group grpFilterbutton + style WINDOW_STYLE_SHADER + background "ui/assets/button_red.tga" + rect 90 5 75 20 + textalign 1 + textalignx 37 + textaligny 16 + forecolor 1 1 1 1 + visible 1 + action { hide grpFilter ; show edit } + } + +itemDef { + name filter_delete + text "Delete" + type 1 + textscale .25 + group grpFilterbutton + style WINDOW_STYLE_SHADER + background "ui/assets/button_red.tga" + rect 170 5 75 20 + textalign 1 + textalignx 37 + textaligny 16 + forecolor 1 1 1 1 + visible 1 + action { hide grpFilter ; show delete } + } + + + + + // ADD FILTER // + + +itemDef { + name add + group grpFilter + text "Description:" + style 0 + textscale .25 + type ITEM_TYPE_EDITFIELD + rect 20 30 110 20 + textalign 0 + textalignx 0 + textaligny 16 + forecolor 1 1 1 1 + visible 0 + } +itemDef { + name add + group grpFilter + text "Filter Name:" + style 0 + textscale .25 + type ITEM_TYPE_EDITFIELD + rect 20 50 110 20 + textalign 0 + textalignx 0 + textaligny 16 + forecolor 1 1 1 1 + visible 0 + } + +itemDef { + name add + group grpFilter + rect 20 80 216 105 + style WINDOW_STYLE_FILLED + type ITEM_TYPE_LISTBOX + elementwidth 120 + elementheight 15 + textscale .25 + elementtype LISTBOX_TEXT + feeder FEEDER_PLAYER_LIST + border 1 + bordercolor .5 .5 .5 1 + forecolor 1 1 1 1 + backcolor 0 0 .5 .25 + outlinecolor .1 .1 .7 .5 + visible 0 + mouseEnter { fadein message_arena ; setitemcolor add bordercolor .7 0 0 1 } + mouseExit { fadeout message_arena ; setitemcolor add bordercolor .5 .5 .5 1 } + } + +itemDef { + name add + text "Add" + group grpFilter + type 1 + textscale .25 + style WINDOW_STYLE_SHADER + background "ui/assets/button_red.tga" + rect 103 190 50 20 + textalign 1 + textalignx 25 + textaligny 15 + forecolor 1 1 1 1 + visible 0 + action { } + } + + + + + +// EDIT // + + +itemDef { + name edit + group grpFilter + text "Description:" + style 0 + textscale .25 + type ITEM_TYPE_EDITFIELD + rect 20 30 110 20 + textalign 0 + textalignx 0 + textaligny 16 + forecolor 1 1 1 1 + visible 0 + } +itemDef { + name edit + group grpFilter + text "Filter Name:" + style 0 + textscale .25 + type ITEM_TYPE_EDITFIELD + rect 20 50 110 20 + textalign 0 + textalignx 0 + textaligny 16 + forecolor 1 1 1 1 + visible 0 + } + +itemDef { + name edit + group grpFilter + rect 20 80 216 105 + style WINDOW_STYLE_FILLED + type ITEM_TYPE_LISTBOX + elementwidth 120 + elementheight 15 + textscale .25 + elementtype LISTBOX_TEXT + feeder FEEDER_PLAYER_LIST + border 1 + bordercolor .5 .5 .5 1 + forecolor 1 1 1 1 + backcolor 0 0 .5 .25 + outlinecolor .1 .1 .7 .5 + visible 0 + mouseEnter { fadein message_arena ; setitemcolor edit bordercolor .7 0 0 1 } + mouseExit { fadeout message_arena ; setitemcolor edit bordercolor .5 .5 .5 1 } + } + +itemDef { + name edit + text "Accept" + group grpFilter + type 1 + textscale .25 + style WINDOW_STYLE_SHADER + background "ui/assets/button_red.tga" + rect 103 190 50 20 + textalign 1 + textalignx 25 + textaligny 15 + forecolor 1 1 1 1 + visible 0 + action { } + } + + + +// DELETE // + +itemDef { + name delete + group grpFilter + text "Filter Name:" + textscale .25 + rect 20 30 110 20 + textalign 0 + textalignx 0 + textaligny 16 + forecolor 1 1 1 1 + visible 0 + action { } + } +itemDef { + name delete + group grpFilter + rect 20 80 216 105 + style WINDOW_STYLE_FILLED + type ITEM_TYPE_LISTBOX + elementwidth 120 + elementheight 15 + textscale .25 + elementtype LISTBOX_TEXT + feeder FEEDER_PLAYER_LIST + border 1 + bordercolor .5 .5 .5 1 + forecolor 1 1 1 1 + backcolor 0 0 .5 .25 + outlinecolor .1 .1 .7 .5 + visible 0 + mouseEnter { fadein message_arena ; setitemcolor delete bordercolor .7 0 0 1 } + mouseExit { fadeout message_arena ; setitemcolor delete bordercolor .5 .5 .5 1 } + } + +itemDef { + name delete + text "Delete" + group grpFilter + type 1 + textscale .25 + style WINDOW_STYLE_SHADER + background "ui/assets/button_red.tga" + rect 103 190 50 20 + textalign 1 + textalignx 25 + textaligny 15 + forecolor 1 1 1 1 + visible 0 + action { } + } + + + + + +// OK // + +itemDef { + name type + text "Exit" + textscale .25 + type 1 + group grpFilterbutton + style WINDOW_STYLE_SHADER + background "ui/assets/button_red.tga" + rect 103 230 50 20 + textalign 1 + textalignx 25 + textaligny 15 + forecolor 1 1 1 1 + visible 1 + action { close addfilter_popmenu ; close joinserver ; open joinserver } +} + + +} + + + +} diff --git a/ta_ui/botselection.menu b/ta_ui/botselection.menu new file mode 100644 index 00000000..653f63ee --- /dev/null +++ b/ta_ui/botselection.menu @@ -0,0 +1,306 @@ +#include "ui/menudef.h" + +// botselection menu +{ + menuDef { + name "BotSelection" + fullScreen MENU_FALSE + visible MENU_FALSE + rect 5 200 80 132 + style WINDOW_STYLE_FILLED + backcolor 0 0 0.8 .25 + border WINDOW_BORDER_FULL + bordersize 1 + bordercolor .5 .5 1 1 + + itemDef { + name "Possess" + text "Possess" + textaligny 10 + textalign ITEM_ALIGN_LEFT + rect 5 5 75 10 + visible 1 + textscale 0.22 + mouseEnter { hide highlight ; show pbar } + + } + itemDef { + name "pbar" + group "highlight" + style WINDOW_STYLE_FILLED + rect 0 5 79 13 + visible 0 + backcolor 0.8 0.8 0.8 0.3 + decoration + } + itemDef { + name "Follow" + text "Follow" + textaligny 10 + textalign ITEM_ALIGN_Left + rect 5 17 75 10 + visible 1 + textscale 0.22 + mouseEnter { hide highlight ; show fbar } + } + itemDef { + name "fbar" + group "highlight" + style WINDOW_STYLE_FILLED + rect 0 17 79 13 + visible 0 + backcolor 0.8 0.8 0.8 0.3 + decoration + } + itemDef { + name "Go To" + text "Go To" + textaligny 10 + textalign ITEM_ALIGN_Left + rect 5 29 75 10 + visible 1 + textscale 0.22 + mouseEnter { hide highlight ; show gbar } + } + itemDef { + name "gbar" + group "highlight" + style WINDOW_STYLE_FILLED + rect 0 29 79 13 + visible 0 + backcolor 0.8 0.8 0.8 0.3 + decoration + } + itemDef { + name "Get" + text "Get" + textaligny 10 + textalign ITEM_ALIGN_Left + rect 5 41 75 10 + visible 1 + textscale 0.22 + mouseEnter { hide highlight ; show g2bar } + action { open getMenu } + } + itemDef { + name "g2bar" + group "highlight" + style WINDOW_STYLE_FILLED + rect 0 41 79 13 + visible 0 + backcolor 0.8 0.8 0.8 0.3 + decoration + } + itemDef { + name "Patrol From" + text "Patrol From" + textaligny 10 + textalign ITEM_ALIGN_Left + rect 5 53 75 10 + visible 1 + textscale 0.22 + mouseEnter { hide highlight ; show p2bar } + } + itemDef { + name "p2bar" + group "highlight" + style WINDOW_STYLE_FILLED + rect 0 53 79 13 + visible 0 + backcolor 0.8 0.8 0.8 0.3 + decoration + } + itemDef { + name "Patrol To" + text "Patrol To" + textaligny 10 + textalign ITEM_ALIGN_Left + rect 5 65 75 10 + visible 1 + textscale 0.22 + mouseEnter { hide highlight ; show p3bar } + } + itemDef { + name "p3bar" + group "highlight" + style WINDOW_STYLE_FILLED + rect 0 65 79 13 + visible 0 + backcolor 0.8 0.8 0.8 0.3 + decoration + } + itemDef { + name "Camp Near" + text "Camp Near" + textaligny 10 + textalign ITEM_ALIGN_Left + rect 5 77 75 10 + visible 1 + textscale 0.22 + mouseEnter { hide highlight ; show cbar } + } + itemDef { + name "cbar" + group "highlight" + style WINDOW_STYLE_FILLED + rect 0 75 79 13 + visible 0 + backcolor 0.8 0.8 0.8 0.3 + decoration + } + itemDef { + name "Defend" + text "Defend" + textaligny 10 + textalign ITEM_ALIGN_Left + rect 5 89 75 10 + visible 1 + textscale 0.22 + mouseEnter { hide highlight ; show dbar } + } + itemDef { + name "dbar" + group "highlight" + style WINDOW_STYLE_FILLED + rect 0 89 79 13 + visible 0 + backcolor 0.8 0.8 0.8 0.3 + decoration + } + itemDef { + name "Attack" + text "Attack" + textaligny 10 + textalign ITEM_ALIGN_Left + rect 5 101 75 10 + visible 1 + textscale 0.22 + mouseEnter { hide highlight ; show abar } + } + itemDef { + name "abar" + group "highlight" + style WINDOW_STYLE_FILLED + rect 0 101 79 13 + visible 0 + backcolor 0.8 0.8 0.8 0.3 + decoration + } + itemDef { + name "Drop Command" + text "Drop Command" + textaligny 10 + textalign ITEM_ALIGN_Left + rect 5 113 75 10 + visible 1 + textscale 0.22 + mouseEnter { hide highlight ; show dcbar } + } + itemDef { + name "dcbar" + group "highlight" + style WINDOW_STYLE_FILLED + rect 0 113 79 13 + visible 0 + backcolor 0.8 0.8 0.8 0.3 + decoration + } + } + + menuDef { + name "getMenu" + fullScreen MENU_FALSE + visible MENU_FALSE + rect 86 238 85 35 + style WINDOW_STYLE_FILLED + backcolor 0 0 0.8 .25 + border WINDOW_BORDER_FULL + bordersize 1 + bordercolor .5 .5 1 1 + + itemDef { + name "Enemy Flag" + text "Enemy Flag" + textaligny 10 + textalign ITEM_ALIGN_LEFT + rect 5 3 80 10 + visible 1 + textscale 0.22 + mouseEnter { hide highlight2 ; show efbar } + action { close getMenu ; close teamMenu ; orders get flag } + + } + itemDef { + name "efbar" + group "highlight2" + style WINDOW_STYLE_FILLED + rect 0 3 84 13 + visible 0 + backcolor 0.8 0.8 0.8 0.3 + decoration + } + itemDef { + name "Rocket Launcher" + text "Rocket Launcher" + textaligny 10 + textalign ITEM_ALIGN_LEFT + rect 5 17 80 10 + visible 1 + textscale 0.22 + mouseEnter { hide highlight2 ; show rlbar } + action { close getMenu ; close teamMenu ; orders get rocketlauncher } + + } + itemDef { + name "rlbar" + group "highlight2" + style WINDOW_STYLE_FILLED + rect 0 17 84 13 + visible 0 + backcolor 0.8 0.8 0.8 0.3 + decoration + } + } + + menuDef { + name "voiceMenu" + fullScreen MENU_FALSE + visible MENU_FALSE + rect 5 25 40 40 + style WINDOW_STYLE_SHADER + background "console" + //backcolor 0 0 0.5 0.5 + border WINDOW_BORDER_FULL + bordersize 1 + bordercolor .5 .5 .5 1 + + itemDef { + name "b" + rect 2 2 33 33 + visible 1 + decoration + ownerdraw CG_SELECTEDPLAYER_HEAD + } + + } + + menuDef { + name "voteMenu" + fullScreen MENU_FALSE + visible MENU_FALSE + rect 5 25 40 40 + style WINDOW_STYLE_SHADER + background "textures/base_wall/comp3" + backcolor 0 0 0.5 0.5 + border WINDOW_BORDER_FULL + bordersize 1 + bordercolor 0 1 0 1 + + } + + + + +} + + diff --git a/ta_ui/cdkey.menu b/ta_ui/cdkey.menu new file mode 100644 index 00000000..acd64917 --- /dev/null +++ b/ta_ui/cdkey.menu @@ -0,0 +1,312 @@ +#include "ui/menudef.h" + +{ +\\ SETUP MENU \\ + +menuDef { + name "cdkey_menu" + visible 0 + fullscreen 0 + rect 186 0 443 426 + focusColor 1 .75 0 1 + style 1 + border 1 + onClose { + uiScript verifyCDKey + } + onOpen { + setitemcolor fadebox backcolor 0 0 0 1 ; + fadeout fadebox ; + hide grpfinish ; + uiScript getCDKey + } + onEsc { close cdkey_menu ; close setup_menu ; open main } + + +itemDef { + name window + group grpSystembutton + rect 0 2 443 426 + style WINDOW_STYLE_FILLED + border 1 + bordercolor .5 .5 .5 .5 + forecolor 1 1 1 1 + backcolor 0 0 0 .25 + visible 1 + decoration + } + + +/* +// DEMO ONLY OPTION // + + itemDef { + name demo_only + group grpcdkey + rect 0 145 454 30 + text"This Option is Not Available in Demo." + textalign 1 + textstyle 1 + textscale .333 + textalignx 217 + textaligny 23 + forecolor 1 1 1 1 + visible 1 + decoration + } +*/ + + + + + + itemDef { + name data + group grpcdkey + rect 0 145 454 30 + text"Enter your encryption code in the field below." + textalign 1 + textscale .333 + textalignx 217 + textaligny 23 + forecolor 1 1 1 1 + visible 1 + decoration + } + + + + itemDef { + name datafield + group grpcdkey + style 0 + text "Code:" + maxchars 4 + rect 60 192 50 30 + textalign ITEM_ALIGN_LEFT + textalignx 0 + textaligny 23 + textscale .333 + decoration + backcolor 1 0 0 .25 + forecolor 1 1 1 1 + visible 1 + } + + + itemDef { + name datafield + group grpcdkey + type ITEM_TYPE_EDITFIELD + style 1 + text "" + cvar "cdkey1" + maxchars 4 + rect 107 192 50 30 + textalign ITEM_ALIGN_LEFT + textalignx 0 + textaligny 23 + textscale .333 + border 1 + bordercolor .5 .5 .5 1 + backcolor 1 0 0 .25 + forecolor 1 1 1 1 + visible 1 + mouseenter { setcolor bordercolor 1 .75 0 1 } + mouseexit { setcolor bordercolor .5 .5 .5 1 } + } +itemDef { + name datafield + group grpcdkey + type ITEM_TYPE_EDITFIELD + style 1 + text "" + cvar "cdkey2" + maxchars 4 + rect 162 192 50 30 + textalign ITEM_ALIGN_LEFT + textalignx 0 + textaligny 23 + textscale .333 + border 1 + bordercolor .5 .5 .5 1 + backcolor 1 0 0 .25 + forecolor 1 1 1 1 + visible 1 + mouseenter { setcolor bordercolor 1 .75 0 1 } + mouseexit { setcolor bordercolor .5 .5 .5 1 } + + } + itemDef { + name datafield + group grpcdkey + type ITEM_TYPE_EDITFIELD + style 1 + text "" + cvar "cdkey3" + maxchars 4 + rect 217 192 50 30 + textalign ITEM_ALIGN_LEFT + textalignx 0 + textaligny 23 + textscale .333 + border 1 + bordercolor .5 .5 .5 1 + backcolor 1 0 0 .25 + forecolor 1 1 1 1 + visible 1 + mouseenter { setcolor bordercolor 1 .75 0 1 } + mouseexit { setcolor bordercolor .5 .5 .5 1 } + + } + itemDef { + name datafield + group grpcdkey + type ITEM_TYPE_EDITFIELD + style 1 + text"" + cvar "cdkey4" + maxchars 4 + rect 272 192 50 30 + textalign ITEM_ALIGN_LEFT + textalignx 0 + textaligny 23 + textscale .333 + border 1 + bordercolor .5 .5 .5 1 + backcolor 1 0 0 .25 + forecolor 1 1 1 1 + visible 1 + mouseenter { setcolor bordercolor 1 .75 0 1 } + mouseexit { setcolor bordercolor .5 .5 .5 1 } + } + itemDef { + name datafield + group grpcdkey + style 0 + text "-" + maxchars 2 + rect 327 192 60 30 + textalign ITEM_ALIGN_LEFT + textalignx 0 + textaligny 23 + textscale .333 + backcolor 0 0 0 0 + decoration + forecolor 1 1 1 1 + visible 1 + } + itemDef { + name datafield + group grpcdkey + type ITEM_TYPE_EDITFIELD + style 1 + text "" + cvar "cdkeychecksum" + maxchars 2 + rect 335 192 40 30 + textalign ITEM_ALIGN_LEFT + textalignx 0 + textaligny 23 + textscale .333 + border 1 + bordercolor .5 .5 .5 1 + forecolor 1 1 1 1 + backcolor 1 0 0 .25 + visible 1 + mouseenter { setcolor bordercolor 1 .75 0 1 } + mouseexit { setcolor bordercolor .5 .5 .5 1 } + } +itemDef { + name accept + text "Verify" + type 1 + group grpcdkey + textscale .3 + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + rect 161 247 100 26 + textalign 1 + textalignx 50 + textaligny 20 + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + visible 1 + action { + play "sound/misc/nomenu.wav" ; + uiScript verifyCDKey ; + show finish_message + } + mouseEnter { setitemcolor accept backcolor .1 .37 .1 1 } + mouseExit { setitemcolor accept backcolor .37 .1 .1 1 } + } + + itemDef { + name accept + group grpcdkey + style WINDOW_STYLE_SHADER + background "ui/assets/framebutton.tga" + rect 161 247 100 26 + visible 1 + decoration + } + + itemDef { + name accept + group grpcdkey + style WINDOW_STYLE_SHADER + background "ui/assets/leftbutton.tga" + rect 149 247 13 26 + visible 1 + decoration + } + + itemDef { + name accept + group grpcdkey + style WINDOW_STYLE_SHADER + background "ui/assets/rightbutton.tga" + rect 260 247 13 26 + visible 1 + decoration + } + + + itemDef { + name finish_message + group grpfinish + style 0 + type ITEM_TYPE_EDITFIELD + text "" + cvar ui_cdkeyvalid + rect 0 290 443 20 + textalign ITEM_ALIGN_CENTER + textalignx 221 + textaligny 20 + textscale .333 + forecolor 1 1 1 1 + visible 1 + decoration + } + + +itemDef { + name fadebox + style WINDOW_STYLE_FILLED + background "ui/assets/fadebox.tga" + forecolor 0 0 0 1 + backcolor 0 0 0 1 + rect 0 0 640 480 + visible 1 + decoration + } + + + + +} +} + + + + diff --git a/ta_ui/chip.menu b/ta_ui/chip.menu new file mode 100644 index 00000000..e8f76477 --- /dev/null +++ b/ta_ui/chip.menu @@ -0,0 +1,39 @@ +#include "ui/menudef.h" + + itemDef { + name "f" + rect 5 7 24 24 + visible 1 + bordercolor 1 1 1 .75 + decoration + style 3 + background "ui/assets/bluechip.tga" + } + + + itemDef { + name "f" + rect 5 7 24 24 + visible 1 + decoration + ownerdraw CG_BLUE_FLAGSTATUS + } + + itemDef { + name "f" + rect 67 7 24 24 + visible 1 + bordercolor 1 1 1 .75 + decoration + style 3 + background "ui/assets/redchip.tga" + } + + itemDef { + name "f" + rect 67 7 24 24 + visible 1 + decoration + ownerdraw CG_RED_FLAGSTATUS + } + diff --git a/ta_ui/cinematic.menu b/ta_ui/cinematic.menu new file mode 100644 index 00000000..9a5247a8 --- /dev/null +++ b/ta_ui/cinematic.menu @@ -0,0 +1,16 @@ +#include "ui/menudef.h" + +{ +\\ Cinematic \\ + + menuDef { + name "cinematic" + visible 0 + fullscreen 1 + rect 0 0 640 480 + focusColor 1 .67 0 1 + style 1 + border 1 + onopen { exec "cinematic idlogo.RoQ" ; open credit } +} +} \ No newline at end of file diff --git a/ta_ui/cinematicmenu.menu b/ta_ui/cinematicmenu.menu new file mode 100644 index 00000000..f34c1afb --- /dev/null +++ b/ta_ui/cinematicmenu.menu @@ -0,0 +1,308 @@ +#include "ui/menudef.h" + +{ +\\ CINEMATIC \\ + + menuDef { + name "cinematicMenu" + visible 0 + fullscreen 1 + rect 0 0 640 480 + background "menuback_a" + focusColor 1 .67 0 1 + style 1 + border 1 + onEsc { close cinematicMenu ; open main } + onOpen { setitemcolor fadebox backcolor 0 0 0 1 ; + play "sound/misc/kcswish.wav" ; + playlooped "music/fla_mp03.wav" ; + fadeout fadebox ; + transition mappreview 0 0 640 480 54 144 256 192 20 10 ; + uiScript loadMovies ; + hide lightning ; + hide accept_alt ; + show accept ; + hide back_alt ; + show back ; + hide grpmessage } + + + + +itemDef { + name menuback_e + style WINDOW_STYLE_SHADER + rect 0 163 640 155 + background "menuback_e" + visible 1 + decoration + } + + + +itemDef { + name menuback_b + style WINDOW_STYLE_SHADER + rect 0 163 640 155 + visible 1 + background "menuback_b" + bordercolor 0.5 0.5 0.5 .7 + decoration + } + +itemDef { + name windowscreen + rect 0 0 640 240 + style 3 + background levelshotdetail + forecolor 0 0 0 0 + visible 1 + decoration + } +itemDef { + name windowscreen + rect 0 240 640 240 + style 3 + background levelshotdetail + forecolor 0 0 0 0 + visible 1 + decoration + } + + + +// LEVEL SELECTION BAR // + + + itemDef { + name levelbar + text "TEAM ARENA CINEMATICS" + textstyle 6 + style 2 + rect 0 16 640 40 + textscale 0.416 + textalign 1 // center + textalignx 320 // x alignment point for text + // use it to offset left/right text from the edge + // or to center the text on a different point + textaligny 27 + style 2 + border 4 + bordercolor 0.5 0.5 0.5 0.5 + bordersize 2 + backcolor 0 0 .75 0.5 + visible 1 + decoration + } + + + + + + +itemDef { + name cinematiclist + rect 330 144 256 192 + type ITEM_TYPE_LISTBOX + style WINDOW_STYLE_FILLED + elementwidth 120 + elementheight 20 + textscale .25 + elementtype LISTBOX_TEXT + feeder FEEDER_CINEMATICS + doubleclick { uiScript playMovie } + textalign 3 + textaligny 14 + border 1 + bordercolor .5 .5 .5 .5 + forecolor 1 1 1 1 + backcolor 0 0 .1 1 + outlinecolor .1 .1 .7 .5 + visible 1 + mouseEnter { fadein message_cinematic ; setitemcolor cinematiclist bordercolor .7 0 0 1 } + mouseExit { fadeout message_cinematic ; setitemcolor cinematiclist bordercolor .5 .5 .5 .5 } + } + + + +// BACK BAR // + + + itemDef { + name gotobar + style 2 + rect 0 430 640 30 + textscale 0.4 + textalign 0 // center + textalignx 60 // x alignment point for text + // use it to offset left/right text from the edge + // or to center the text on a different point + textaligny 21 + style 2 + border 4 + bordercolor 0.5 0.5 0.5 0.5 + bordersize 2 + backcolor 0 0 .75 0.5 + visible 1 + mouseEnter { setcolor backcolor .75 0 0 .5 } + mouseExit { setcolor backcolor 0 0 .75 .5 } + decoration + } + + + + itemDef { + name back + style 3 + background "ui/assets/backarrow.tga" + rect 16 424 50 50 + visible 1 + action { close cinematicMenu ; open main } + mouseEnter { hide back ; show back_alt ; fadein message_back } + } + +itemDef { + name back_alt + style WINDOW_STYLE_SHADER + background "ui/assets/backarrow_alt.tga" + rect 14 422 54 54 + backcolor 0 0 0 0 + forecolor 1 1 1 1 + visible 0 + type ITEM_TYPE_BUTTON + mouseExit { hide back_alt ; show back ; fadeout message_back } + action { close cinematicMenu ; open main } + } + +itemDef { + name accept + style 3 + rect 574 424 50 50 + background "ui/assets/forwardarrow.tga" + backcolor 0 0 0 0 + forecolor 1 1 1 1 + visible 1 + mouseEnter { playlooped "sound/misc/loop_electricity_05.wav" ; show lightning ; hide accept ; show accept_alt ; fadein message_accept } + action { close cinematicMenu ; uiScript playMovie } + } + +itemDef { + name accept_alt + style 3 + rect 572 422 54 54 + background "ui/assets/forwardarrow_alt.tga" + backcolor 0 0 0 0 + forecolor 1 1 1 1 + visible 0 + type ITEM_TYPE_BUTTON + action { close cinematicMenu ; uiScript playMovie } + mouseExit { hide lightning ; hide accept_alt ; show accept ; fadeout message_accept ; playlooped "music/fla_mp03.wav" } + } +itemDef { + name lightning + style 3 + background lightningkc + rect 46 385 174 128 + visible 0 + decoration + } +itemDef { + name lightning + style 3 + background lightningkc + rect 417 385 174 128 + visible 0 + decoration + } + + +// MESSAGES // + +itemDef { + name message_back + group grpmessage + style 0 + rect 320 430 128 30 + textstyle 1 + textalign 1 + textalignx 0 + textaligny 25 + textscale .416 + text "Exit to Main Menu" + forecolor 1 1 1 1 + decoration + visible 0 + } + +itemDef { + name message_cinematic + group grpmessage + style 0 + rect 320 430 128 30 + textalign 1 + textstyle 1 + textalignx 0 + textaligny 25 + textscale .416 + text "Select Cinematic to Play" + forecolor 1 1 1 1 + decoration + visible 0 + } +itemDef { + name message_accept + group grpmessage + style 0 + rect 320 430 128 30 + textalign 1 + textstyle 1 + textalignx 0 + textaligny 25 + textscale .416 + text "Select to Play Fullscreen" + forecolor 1 1 1 1 + decoration + visible 0 + } + +itemDef { + name mappreview + ownerdraw UI_PREVIEWCINEMATIC + rect 54 144 256 192 + backcolor 1 1 1 .25 + border 1 + bordersize 1 + bordercolor .5 .5 .5 1 + decoration + visible 1 + } + + +itemDef { + name fadebox + style WINDOW_STYLE_FILLED + background "ui/assets/fadebox.tga" + forecolor 0 0 0 1 + backcolor 0 0 0 1 + rect 0 0 640 480 + visible 1 + decoration + } + + + + + +} + + + + + + + + +} + +} +} \ No newline at end of file diff --git a/ta_ui/compile.bat b/ta_ui/compile.bat new file mode 100755 index 00000000..6af1ffda --- /dev/null +++ b/ta_ui/compile.bat @@ -0,0 +1,2 @@ +lcc -S -Wf-target=bytecode -Wf-g -I..\..\cgame -I..\..\game -I..\..\ta_ui %1 + diff --git a/ta_ui/connect.menu b/ta_ui/connect.menu new file mode 100644 index 00000000..d4a3d211 --- /dev/null +++ b/ta_ui/connect.menu @@ -0,0 +1,15 @@ +#include "ui/menudef.h" + + +{ + +menuDef { + name "Connect" + background "ui/assets/backscreen" + rect 0 0 640 480 + fullScreen MENU_FALSE + visible MENU_FALSE + style WINDOW_STYLE_SHADER + } + +} \ No newline at end of file diff --git a/ta_ui/controls.menu b/ta_ui/controls.menu new file mode 100644 index 00000000..07b2ba3f --- /dev/null +++ b/ta_ui/controls.menu @@ -0,0 +1,1417 @@ +#include "ui/menudef.h" + +{ +\\ SETUP MENU \\ + +menuDef { + name "control_menu" + visible 0 + fullscreen 0 + rect 186 0 443 426 + focusColor 1 .75 0 1 + style 1 + border 1 + onClose { + uiScript saveControls + } + onOpen { setitemcolor fadebox backcolor 0 0 0 1 ; + fadeout fadebox ; + hide grpControls ; + show look ; + uiScript loadControls } + onEsc { close control_menu ; close setup_menu ; open main } + + +itemDef { + name controls_shader + group grpControls + style WINDOW_STYLE_SHADER + rect 0 45 640 60 + visible 0 + background "ui/assets/controls_shader1" + decoration + } + +itemDef { + name window + group grpControlbutton + rect 0 2 443 426 + style WINDOW_STYLE_FILLED + border 1 + bordercolor .5 .5 .5 .5 + forecolor 1 1 1 1 + backcolor 0 0 0 .25 + visible 1 + decoration + } + +itemDef { + name keyBindStatus + rect 0 15 640 30 + ownerdraw UI_KEYBINDSTATUS + text " " + forecolor 1 .75 0 1 + textscale .25 + textalignx 221 + textalign 1 + textaligny 20 + visible 0 + decoration + } + + +itemDef { + name ctr_look + text "Look" + type 1 + textscale .3 + group grpControlbutton + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + rect 17 395 45 26 + textalign 1 + textalignx 22 + textaligny 20 + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + visible 1 + action { play "sound/misc/kcaction.wav" ; + hide grpControls ; show look } + mouseEnter { show message_look ; setitemcolor ctr_look backcolor .1 .37 .1 1 } + mouseExit { hide message_look ; setitemcolor ctr_look backcolor .37 .1 .1 1 } + } +itemDef { + name ctr_look + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/framebutton.tga" + rect 17 395 45 26 + visible 1 + decoration + } + +itemDef { + name ctr_look + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/leftbutton.tga" + rect 5 395 13 26 + visible 1 + decoration + } + +itemDef { + name ctr_look + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/rightbutton.tga" + rect 61 395 13 26 + visible 1 + decoration + } + itemDef { + name look + group grpControls + type ITEM_TYPE_BIND + text "Lookup:" + cvar "+lookup" + rect 99 50 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 17 + textscale .333 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + + itemDef { + name look + group grpControls + type ITEM_TYPE_BIND + text "Look Down:" + cvar "+lookdown" + rect 99 80 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 17 + textscale .333 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + + itemDef { + name look + group grpControls + type ITEM_TYPE_BIND + text "Mouse Look:" + cvar "+mlook" + rect 99 110 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 17 + textscale .333 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + + itemDef { + name look + group grpControls + type ITEM_TYPE_BIND + text "Centerview:" + cvar "centerview" + rect 99 140 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 17 + textscale .333 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + + itemDef { + name look + group grpControls + type ITEM_TYPE_BIND + text "ZoomView:" + cvar "+zoom" + rect 99 170 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 17 + textscale .333 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + + itemDef { + name look + group grpControls + type ITEM_TYPE_YESNO + text "Free Look:" + cvar "cl_freelook" + rect 99 200 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 17 + textscale .333 + forecolor 1 1 1 1 + visible 0 + mouseenter { show yesno_message } + mouseexit { hide yesno_message } + } + +itemDef { + name ctr_move + text "Move" + type 1 + textscale .3 + group grpControlbutton + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + rect 90 395 45 26 + textalign 1 + textalignx 22 + textaligny 20 + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + visible 1 + action { play "sound/misc/kcaction.wav" ; + hide grpControls ; show move } + mouseEnter { show message_move ; setitemcolor ctr_move backcolor .1 .37 .1 1 } + mouseExit { hide message_move ; setitemcolor ctr_move backcolor .37 .1 .1 1 } + } +itemDef { + name ctr_move + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/framebutton.tga" + rect 90 395 45 26 + visible 1 + decoration + } + +itemDef { + name ctr_move + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/leftbutton.tga" + rect 78 395 13 26 + visible 1 + decoration + } + +itemDef { + name ctr_move + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/rightbutton.tga" + rect 134 395 13 26 + visible 1 + decoration + } + + + itemDef { + name move + group grpControls + type ITEM_TYPE_YESNO + text "Always Run:" + cvar "cl_run" + rect 99 50 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .333 + forecolor 1 1 1 1 + visible 0 + mouseenter { show yesno_message } + mouseexit { hide yesno_message } + } + itemDef { + name move + group grpControls + type ITEM_TYPE_BIND + text "Run / Walk:" + cvar "+speed" + rect 99 75 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .333 + forecolor 1 1 1 1 + visible 0 + } + + itemDef { + name move + group grpControls + type ITEM_TYPE_BIND + text "Forward:" + cvar "+forward" + rect 99 100 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .333 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + + itemDef { + name move + group grpControls + type ITEM_TYPE_BIND + text "Backpedal:" + cvar "+back" + rect 99 125 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .333 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + + itemDef { + name move + group grpControls + type ITEM_TYPE_BIND + text "Move Left:" + cvar "+moveleft" + rect 99 150 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .333 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + + itemDef { + name move + group grpControls + type ITEM_TYPE_BIND + text "Move Right:" + cvar "+moveright" + rect 99 175 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .333 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + + itemDef { + name move + group grpControls + type ITEM_TYPE_BIND + text "Jump:" + cvar "+moveup" + rect 99 200 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .333 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + + itemDef { + name move + group grpControls + type ITEM_TYPE_BIND + text "Crouch:" + cvar "+movedown" + rect 99 225 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .333 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + + itemDef { + name move + group grpControls + type ITEM_TYPE_BIND + text "Turn Left:" + cvar "+left" + rect 99 250 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .333 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + + itemDef { + name move + group grpControls + type ITEM_TYPE_BIND + text "Turn Right:" + cvar "+right" + rect 99 275 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .333 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + + itemDef { + name move + group grpControls + type ITEM_TYPE_BIND + text "Strafe:" + cvar "+strafe" + rect 99 300 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .333 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + + + +itemDef { + name ctr_shoot + text "Shoot" + type 1 + textscale .3 + group grpControlbutton + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + rect 163 395 45 26 + textalign 1 + textalignx 22 + textaligny 20 + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + visible 1 + action { play "sound/misc/kcaction.wav" ; + hide grpControls ; show shoot } + mouseEnter { show message_shoot ; setitemcolor ctr_shoot backcolor .1 .37 .1 1 } + mouseExit { hide message_shoot ; setitemcolor ctr_shoot backcolor .37 .1 .1 1 } + } + +itemDef { + name ctr_shoot + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/framebutton.tga" + rect 163 395 45 26 + visible 1 + decoration + } + +itemDef { + name ctr_shoot + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/leftbutton.tga" + rect 151 395 13 26 + visible 1 + decoration + } + +itemDef { + name ctr_shoot + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/rightbutton.tga" + rect 207 395 13 26 + visible 1 + decoration + } + + + itemDef { + name shoot + group grpControls + type ITEM_TYPE_BIND + text "Attack:" + cvar "+attack" + rect 99 50 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .3 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + + itemDef { + name shoot + group grpControls + type ITEM_TYPE_BIND + text "Previous Weapon:" + cvar "weapprev" + rect 99 70 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .3 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + + itemDef { + name shoot + group grpControls + type ITEM_TYPE_BIND + text "Next Weapon:" + cvar "weapnext" + rect 99 90 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .3 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + + itemDef { + name shoot + group grpControls + type ITEM_TYPE_YESNO + text "Autoswitch:" + cvar "cg_autoswitch" + rect 99 110 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .3 + forecolor 1 1 1 1 + visible 0 + mouseenter { show yesno_message } + mouseexit { hide yesno_message } + } + + itemDef { + name shoot + group grpControls + type ITEM_TYPE_BIND + text "Gauntlet:" + cvar "weapon 1" + rect 99 130 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .3 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + + itemDef { + name shoot + group grpControls + type ITEM_TYPE_BIND + text "Machinegun:" + cvar "weapon 2" + rect 99 150 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .3 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + + itemDef { + name shoot + group grpControls + type ITEM_TYPE_BIND + text "Shotgun:" + cvar "weapon 3" + rect 99 170 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .3 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + + itemDef { + name shoot + group grpControls + type ITEM_TYPE_BIND + text "Grenade Launcher:" + cvar "weapon 4" + rect 99 190 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .3 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + + itemDef { + name shoot + group grpControls + type ITEM_TYPE_BIND + text "Rocket Launcher:" + cvar "weapon 5" + rect 99 210 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .3 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + + itemDef { + name shoot + group grpControls + type ITEM_TYPE_BIND + text "Lightning Gun:" + cvar "weapon 6" + rect 99 230 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .3 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + + itemDef { + name shoot + group grpControls + type ITEM_TYPE_BIND + text "Railgun:" + cvar "Weapon 7" + rect 99 250 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .3 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + itemDef { + name shoot + group grpControls + type ITEM_TYPE_BIND + text "Plasma Gun:" + cvar "weapon 8" + rect 99 270 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .3 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + itemDef { + name shoot + group grpControls + type ITEM_TYPE_BIND + text "BFG:" + cvar "weapon 9" + rect 99 290 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .3 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + itemDef { + name shoot + group grpControls + type ITEM_TYPE_BIND + text "Nail Gun:" + cvar "weapon 11" + rect 99 310 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .3 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + itemDef { + name shoot + group grpControls + type ITEM_TYPE_BIND + text "Proximity Mine:" + cvar "weapon 12" + rect 99 330 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .3 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + itemDef { + name shoot + group grpControls + type ITEM_TYPE_BIND + text "Chain Gun:" + cvar "weapon 13" + rect 99 350 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .3 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + +itemDef { + name ctr_miscellaneous + text "Misc" + type 1 + textscale .3 + group grpControlbutton + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + rect 236 395 45 26 + textalign 1 + textalignx 22 + textaligny 20 + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + visible 1 + action { play "sound/misc/kcaction.wav" ; + hide grpControls ; show misc } + mouseEnter { show message_misc ; setitemcolor ctr_miscellaneous backcolor .1 .37 .1 1 } + mouseExit { hide message_misc ; setitemcolor ctr_miscellaneous backcolor .37 .1 .1 1 } + } + +itemDef { + name ctr_miscellaneous + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/framebutton.tga" + rect 236 395 45 26 + visible 1 + decoration + } + +itemDef { + name ctr_miscellaneous + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/leftbutton.tga" + rect 224 395 13 26 + visible 1 + decoration + } + +itemDef { + name ctr_miscellaneous + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/rightbutton.tga" + rect 280 395 13 26 + visible 1 + decoration + } + + itemDef { + name misc + group grpControls + type ITEM_TYPE_BIND + text "Show Scores:" + cvar "+scores" + rect 99 50 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .333 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + itemDef { + name misc + group grpControls + type ITEM_TYPE_BIND + text "Scroll Scores Up:" + cvar "scoresUp" + rect 99 80 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .333 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + itemDef { + name misc + group grpControls + type ITEM_TYPE_BIND + text "Scroll Scores Down:" + cvar "scoresDown" + rect 99 110 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .333 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + + itemDef { + name misc + group grpControls + type ITEM_TYPE_BIND + text "Use Item:" + cvar "+button2" + rect 99 140 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .333 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + + + itemDef { + name misc + group grpControls + type ITEM_TYPE_SLIDER + text "Sensitivity:" + cvarfloat "sensitivity" 5 1 30 + rect 99 170 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .333 + forecolor 1 1 1 1 + visible 0 + mouseenter { show slider_message } + mouseexit { hide slider_message } + } + + itemDef { + name misc + group grpControls + type ITEM_TYPE_YESNO + text "Invert Mouse:" + cvar "ui_mousePitch" + rect 99 200 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .333 + forecolor 1 1 1 1 + visible 0 + action { uiScript update ui_mousePitch } + mouseenter { show yesno_message } + mouseexit { hide yesno_message } + } + + itemDef { + name misc + group grpControls + type ITEM_TYPE_YESNO + text "Smooth Mouse:" + cvar "m_filter" + rect 99 230 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .333 + forecolor 1 1 1 1 + visible 0 + mouseenter { show yesno_message } + mouseexit { hide yesno_message } + } + + + +itemDef { + name ctr_orders + text "Orders" + type 1 + textscale .3 + group grpControlbutton + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + rect 309 395 47 26 + textalign 1 + textalignx 23 + textaligny 20 + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + visible 1 + action { play "sound/misc/kcaction.wav" ; + hide grpControls ; show orders} + mouseEnter { show message_misc ; setitemcolor ctr_orders backcolor .1 .37 .1 1 } + mouseExit { hide message_misc ; setitemcolor ctr_orders backcolor .37 .1 .1 1 } + } + +itemDef { + name ctr_orders + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/framebutton.tga" + rect 309 395 47 26 + visible 1 + decoration + } + +itemDef { + name ctr_orders + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/leftbutton.tga" + rect 297 395 13 26 + visible 1 + decoration + } + +itemDef { + name ctr_orders + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/rightbutton.tga" + rect 355 395 13 26 + visible 1 + decoration + } + + itemDef { + name orders + group grpControls + type ITEM_TYPE_BIND + text "Next Team Member:" + cvar "nextTeamMember" + rect 99 50 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .333 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + itemDef { + name orders + group grpControls + type ITEM_TYPE_BIND + text "Next Team Order:" + cvar "nextOrder" + rect 99 75 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .333 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + itemDef { + name orders + group grpControls + type ITEM_TYPE_BIND + text "Confirm Order:" + cvar "confirmOrder" + rect 99 100 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .333 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + + itemDef { + name orders + group grpControls + type ITEM_TYPE_BIND + text "Deny Order:" + cvar "denyOrder" + rect 99 125 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .333 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + + + itemDef { + name orders + group grpControls + type ITEM_TYPE_BIND + text "Offense:" + cvar "taskOffense" + rect 99 150 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .333 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + + itemDef { + name orders + group grpControls + type ITEM_TYPE_BIND + text "Defense:" + cvar "taskDefense" + rect 99 175 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .333 + forecolor 1 1 1 1 + visible 0 + } + + itemDef { + name orders + group grpControls + type ITEM_TYPE_BIND + text "Patrol:" + cvar "taskPatrol" + rect 99 200 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .333 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + itemDef { + name orders + group grpControls + type ITEM_TYPE_BIND + text "Camp:" + cvar "taskCamp" + rect 99 225 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .333 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + itemDef { + name orders + group grpControls + type ITEM_TYPE_BIND + text "Follow:" + cvar "taskFollow" + rect 99 250 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .333 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + itemDef { + name orders + group grpControls + type ITEM_TYPE_BIND + text "Retrieve:" + cvar "taskRetrieve" + rect 99 275 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .333 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + itemDef { + name orders + group grpControls + type ITEM_TYPE_BIND + text "Escort:" + cvar "taskEscort" + rect 99 300 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .333 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + + itemDef { + name orders + group grpControls + type ITEM_TYPE_BIND + text "I Have the Flag!:" + cvar "taskOwnFlag" + rect 99 325 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .333 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + itemDef { + name orders + group grpControls + type ITEM_TYPE_BIND + text "Target Suicide" + cvar "taskSuicide" + rect 99 350 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .333 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + + +itemDef { + name ctr_chat + text "Chat" + type 1 + textscale .3 + group grpControlbutton + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + rect 382 395 45 26 + textalign 1 + textalignx 23 + textaligny 20 + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + visible 1 + action { play "sound/misc/kcaction.wav" ; + hide grpControls ; show chat} + mouseEnter { show message_misc ; setitemcolor ctr_chat backcolor .1 .37 .1 1 } + mouseExit { hide message_misc ; setitemcolor ctr_chat backcolor .37 .1 .1 1 } + } + +itemDef { + name ctr_chat + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/framebutton.tga" + rect 382 395 45 26 + visible 1 + decoration + } + +itemDef { + name ctr_chat + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/leftbutton.tga" + rect 370 395 13 26 + visible 1 + decoration + } +itemDef { + name ctr_chat + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/rightbutton.tga" + rect 426 395 13 26 + visible 1 + decoration + } + +itemDef { + name chat + group grpControls + type ITEM_TYPE_BIND + text "Gesture:" + cvar "+button3" + rect 99 50 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .333 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + + itemDef { + name chat + group grpControls + type ITEM_TYPE_BIND + text "Chat:" + cvar "messagemode" + rect 99 75 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .333 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + + itemDef { + name chat + group grpControls + type ITEM_TYPE_BIND + text "Team Chat:" + cvar "messagemode2" + rect 99 100 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .333 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + + itemDef { + name chat + group grpControls + type ITEM_TYPE_BIND + text "Target Chat:" + cvar "messagemode3" + rect 99 125 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .333 + forecolor 1 1 1 1 + visible 0 + } + + + itemDef { + name chat + group grpControls + type ITEM_TYPE_BIND + text "Attack Chat:" + cvar "messagemode4" + rect 99 150 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .333 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + + itemDef { + name chat + group grpControls + type ITEM_TYPE_BIND + text "Voice Taunt:" + cvar "tauntTaunt" + rect 99 175 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .333 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + + + +// TOOLS MESSAGE // + +itemDef { + name yesno_message + rect 0 15 640 30 + text "Select the Item to Toggle to Yes or No" + forecolor 1 .75 0 1 + textscale .25 + textalignx 221 + textalign 1 + textaligny 20 + visible 0 + decoration + } +itemDef { + name slider_message + rect 0 15 640 30 + text "Drag the Slider to Increase and Decrease" + forecolor 1 .75 0 1 + textscale .25 + textalignx 221 + textalign 1 + textaligny 20 + visible 0 + decoration + } + +itemDef { + name fadebox + style WINDOW_STYLE_FILLED + background "ui/assets/fadebox.tga" + forecolor 0 0 0 1 + backcolor 0 0 0 1 + rect 0 0 640 480 + visible 1 + decoration + } + + + + + + + + + + + + + +} + +} + +} diff --git a/ta_ui/controls2.menu b/ta_ui/controls2.menu new file mode 100644 index 00000000..317a7a0f --- /dev/null +++ b/ta_ui/controls2.menu @@ -0,0 +1,911 @@ +#include "ui/menudef.h" + +{ +\\ SETUP MENU \\ + +menuDef { + name "control_menu" + visible 0 + fullscreen 0 + rect 186 0 443 426 + focusColor 1 .75 0 1 + style 1 + border 1 + onopen { hide grpControls ; show look } + + +itemDef { + name controls_shader + group grpControls + style WINDOW_STYLE_SHADER + rect 0 45 640 60 + visible 0 + background "ui/assets/controls_shader1" + decoration + } + +itemDef { + name window + group grpControlbutton + rect 0 2 443 426 + style WINDOW_STYLE_FILLED + border 1 + bordercolor .5 .5 .5 .5 + forecolor 1 1 1 1 + backcolor 0 0 0 .25 + visible 1 + decoration + } + +itemDef { + name keyBindStatus + rect 0 15 640 30 + ownerdraw UI_KEYBINDSTATUS + text " " + forecolor 1 .75 0 1 + textscale .25 + textalignx 100 + textalign 1 + textaligny 20 + visible 1 + decoration + } + +itemDef { + name ctr_look + text "Look" + type 1 + textscale .3 + group grpControlbutton + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + rect 37 395 45 26 + textalign 1 + textalignx 22 + textaligny 20 + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + visible 1 + action { hide grpControls ; show look } + mouseEnter { show message_look ; setitemcolor ctr_look backcolor .1 .37 .1 1 } + mouseExit { hide message_look ; setitemcolor ctr_look backcolor .37 .1 .1 1 } + } +itemDef { + name ctr_look + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/framebutton.tga" + rect 37 395 45 26 + visible 1 + decoration + } + +itemDef { + name ctr_look + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/leftbutton.tga" + rect 25 395 13 26 + visible 1 + decoration + } + +itemDef { + name ctr_look + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/rightbutton.tga" + rect 81 395 13 26 + visible 1 + decoration + } + + itemDef { + name look + group grpControls + type ITEM_TYPE_BIND + text "Look Down:" + cvar "+lookdown" + //rect 99 140 256 20 + rect 99 135 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 17 + textscale .3 + forecolor 1 1 1 1 + visible 0 + } + + itemDef { + name look + group grpControls + type ITEM_TYPE_BIND + text "Mouse Look:" + cvar "+mlook" + rect 99 160 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 17 + textscale .3 + forecolor 1 1 1 1 + visible 0 + } + + itemDef { + name look + group grpControls + type ITEM_TYPE_BIND + text "Centerview:" + cvar "centerview" + rect 99 185 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 17 + textscale .3 + forecolor 1 1 1 1 + visible 0 + } + + itemDef { + name look + group grpControls + type ITEM_TYPE_BIND + text "ZoomView:" + cvar "+zoom" + rect 99 210 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 17 + textscale .3 + forecolor 1 1 1 1 + visible 0 + } + + itemDef { + name look + group grpControls + type ITEM_TYPE_YESNO + text "Free Look:" + cvar "cl_freelook" + rect 99 235 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 17 + textscale .3 + forecolor 1 1 1 1 + visible 0 + } + +itemDef { + name ctr_move + text "Move" + type 1 + textscale .3 + group grpControlbutton + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + rect 116 395 45 26 + textalign 1 + textalignx 22 + textaligny 20 + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + visible 1 + action { hide grpControls ; show move } + mouseEnter { show message_move ; setitemcolor ctr_move backcolor .1 .37 .1 1 } + mouseExit { hide message_move ; setitemcolor ctr_move backcolor .37 .1 .1 1 } + } +itemDef { + name ctr_move + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/framebutton.tga" + rect 116 395 45 26 + visible 1 + decoration + } + +itemDef { + name ctr_move + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/leftbutton.tga" + rect 104 395 13 26 + visible 1 + decoration + } + +itemDef { + name ctr_move + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/rightbutton.tga" + rect 160 395 13 26 + visible 1 + decoration + } + + +itemDef { + name move + group grpControls + type ITEM_TYPE_YESNO + text "Always Run:" + cvar "+speed" + rect 99 50 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .3 + forecolor 1 1 1 1 + visible 0 + } + + itemDef { + name move + group grpControls + type ITEM_TYPE_BIND + text "Forward:" + cvar "+forward" + rect 99 75 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .3 + forecolor 1 1 1 1 + visible 0 + } + + itemDef { + name move + group grpControls + type ITEM_TYPE_BIND + text "Backpedal:" + cvar "+back" + rect 99 100 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .3 + forecolor 1 1 1 1 + visible 0 + } + + itemDef { + name move + group grpControls + type ITEM_TYPE_BIND + text "Move Left:" + cvar "+moveleft" + rect 99 125 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .3 + forecolor 1 1 1 1 + visible 0 + } + + itemDef { + name move + group grpControls + type ITEM_TYPE_BIND + text "Move Right:" + cvar "+moveright" + rect 99 150 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .3 + forecolor 1 1 1 1 + visible 0 + } + + itemDef { + name move + group grpControls + type ITEM_TYPE_BIND + text "Jump:" + cvar "+moveup" + rect 99 175 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .3 + forecolor 1 1 1 1 + visible 0 + } + + itemDef { + name move + group grpControls + type ITEM_TYPE_BIND + text "Crouch:" + cvar "+movedown" + rect 99 200 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .3 + forecolor 1 1 1 1 + visible 0 + } + + itemDef { + name move + group grpControls + type ITEM_TYPE_BIND + text "Turn Left:" + cvar "+left" + rect 99 225 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .3 + forecolor 1 1 1 1 + visible 0 + } + + itemDef { + name move + group grpControls + type ITEM_TYPE_BIND + text "Turn Right:" + cvar "+right" + rect 99 250 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .3 + forecolor 1 1 1 1 + visible 0 + } + + itemDef { + name move + group grpControls + type ITEM_TYPE_BIND + text "Strafe:" + cvar "+strafe" + rect 99 275 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .3 + forecolor 1 1 1 1 + visible 0 + } + + + +itemDef { + name ctr_shoot + text "Shoot" + type 1 + textscale .3 + group grpControlbutton + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + rect 197 395 45 26 + textalign 1 + textalignx 22 + textaligny 20 + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + visible 1 + action { hide grpControls ; show shoot } + mouseEnter { show message_shoot ; setitemcolor ctr_shoot backcolor .1 .37 .1 1 } + mouseExit { hide message_shoot ; setitemcolor ctr_shoot backcolor .37 .1 .1 1 } + } + +itemDef { + name ctr_shoot + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/framebutton.tga" + rect 197 395 45 26 + visible 1 + decoration + } + +itemDef { + name ctr_shoot + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/leftbutton.tga" + rect 185 395 13 26 + visible 1 + decoration + } + +itemDef { + name ctr_shoot + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/rightbutton.tga" + rect 241 395 13 26 + visible 1 + decoration + } + + + itemDef { + name shoot + group grpControls + type ITEM_TYPE_BIND + text "Attack:" + cvar "+attack" + rect 99 50 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .3 + forecolor 1 1 1 1 + visible 0 + } + + itemDef { + name shoot + group grpControls + type ITEM_TYPE_BIND + text "Previous Weapon:" + cvar "weapprev" + rect 99 70 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .3 + forecolor 1 1 1 1 + visible 0 + } + + itemDef { + name shoot + group grpControls + type ITEM_TYPE_BIND + text "Next Weapon:" + cvar "weapnext" + rect 99 90 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .3 + forecolor 1 1 1 1 + visible 0 + } + + itemDef { + name shoot + group grpControls + type ITEM_TYPE_YESNO + text "Autoswitch:" + cvar "cg_autoswitch" + rect 99 110 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .3 + forecolor 1 1 1 1 + visible 0 + } + + itemDef { + name shoot + group grpControls + type ITEM_TYPE_BIND + text "Gauntlet:" + cvar "weapon 1" + rect 99 130 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .3 + forecolor 1 1 1 1 + visible 0 + } + + itemDef { + name shoot + group grpControls + type ITEM_TYPE_BIND + text "Machinegun:" + cvar "weapon 2" + rect 99 150 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .3 + forecolor 1 1 1 1 + visible 0 + } + + itemDef { + name shoot + group grpControls + type ITEM_TYPE_BIND + text "Shotgun:" + cvar "weapon 3" + rect 99 170 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .3 + forecolor 1 1 1 1 + visible 0 + } + + itemDef { + name shoot + group grpControls + type ITEM_TYPE_BIND + text "Grenade Launcher:" + cvar "weapon 4" + rect 99 190 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .3 + forecolor 1 1 1 1 + visible 0 + } + + itemDef { + name shoot + group grpControls + type ITEM_TYPE_BIND + text "Rocket Launcher:" + cvar "weapon 5" + rect 99 210 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .3 + forecolor 1 1 1 1 + visible 0 + } + + itemDef { + name shoot + group grpControls + type ITEM_TYPE_BIND + text "Lightning Gun:" + cvar "weapon 6" + rect 99 230 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .3 + forecolor 1 1 1 1 + visible 0 + } + + itemDef { + name shoot + group grpControls + type ITEM_TYPE_BIND + text "Railgun:" + cvar "Weapon 7" + rect 99 250 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .3 + forecolor 1 1 1 1 + visible 0 + } + itemDef { + name shoot + group grpControls + type ITEM_TYPE_BIND + text "Plasma Gun:" + cvar "weapon 8" + rect 99 270 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .3 + forecolor 1 1 1 1 + visible 0 + } + itemDef { + name shoot + group grpControls + type ITEM_TYPE_BIND + text "BFG:" + cvar "weapon 9" + rect 99 290 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .3 + forecolor 1 1 1 1 + visible 0 + } + itemDef { + name shoot + group grpControls + type ITEM_TYPE_BIND + text "Nail Gun:" + cvar "weapon 11" + rect 99 310 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .3 + forecolor 1 1 1 1 + visible 0 + } + itemDef { + name shoot + group grpControls + type ITEM_TYPE_BIND + text "Proximity Mine:" + cvar "weapon 12" + rect 99 330 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .3 + forecolor 1 1 1 1 + visible 0 + } + itemDef { + name shoot + group grpControls + type ITEM_TYPE_BIND + text "Chain Gun:" + cvar "weapon 13" + rect 99 350 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .3 + forecolor 1 1 1 1 + visible 0 + } + +itemDef { + name ctr_miscellaneous + text "Miscellaneous" + type 1 + textscale .3 + group grpControlbutton + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + rect 282 395 140 26 + textalign 1 + textalignx 70 + textaligny 20 + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + visible 1 + action { hide grpControls ; show misc } + mouseEnter { show message_misc ; setitemcolor ctr_miscellaneous backcolor .1 .37 .1 1 } + mouseExit { hide message_misc ; setitemcolor ctr_miscellaneous backcolor .37 .1 .1 1 } + } + +itemDef { + name ctr_miscellaneous + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/framebutton.tga" + rect 282 395 140 26 + visible 1 + decoration + } + +itemDef { + name ctr_miscellaneous + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/leftbutton.tga" + rect 270 395 13 26 + visible 1 + decoration + } + +itemDef { + name ctr_miscellaneous + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/rightbutton.tga" + rect 421 395 13 26 + visible 1 + decoration + } + + itemDef { + name misc + group grpControls + type ITEM_TYPE_BIND + text "Show Scores:" + cvar "+scores" + rect 99 50 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .3 + forecolor 1 1 1 1 + visible 0 + } + + itemDef { + name misc + group grpControls + type ITEM_TYPE_BIND + text "Use Item:" + cvar "+button2" + rect 99 75 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .3 + forecolor 1 1 1 1 + visible 0 + } + + itemDef { + name misc + group grpControls + type ITEM_TYPE_BIND + text "Gesture:" + cvar "+button3" + rect 99 100 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .3 + forecolor 1 1 1 1 + visible 0 + } + + itemDef { + name misc + group grpControls + type ITEM_TYPE_BIND + text "Chat:" + cvar "messagemode" + rect 99 125 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .3 + forecolor 1 1 1 1 + visible 0 + } + + itemDef { + name misc + group grpControls + type ITEM_TYPE_BIND + text "Team Chat:" + cvar "messagemode2" + rect 99 150 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .3 + forecolor 1 1 1 1 + visible 0 + } + + itemDef { + name misc + group grpControls + type ITEM_TYPE_BIND + text "Target Chat:" + cvar "messagemode3" + rect 99 175 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .3 + forecolor 1 1 1 1 + visible 0 + } + + itemDef { + name misc + group grpControls + type ITEM_TYPE_BIND + text "Attack Chat:" + cvar "messagemode4" + rect 99 200 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .3 + forecolor 1 1 1 1 + visible 0 + } + + itemDef { + name misc + group grpControls + type ITEM_TYPE_SLIDER + text "Senstivity:" + cvarfloat "sensitivity" 5 1 30 + rect 99 225 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .3 + forecolor 1 1 1 1 + visible 0 + } + + itemDef { + name misc + group grpControls + type ITEM_TYPE_YESNO + text "Invert Mouse:" + cvar "ui_mousePitch" + rect 99 250 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .3 + forecolor 1 1 1 1 + visible 0 + action { uiScript update mousePitch } + } + + itemDef { + name misc + group grpControls + type ITEM_TYPE_YESNO + text "Smooth Mouse:" + cvar "m_filter" + rect 99 275 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .3 + forecolor 1 1 1 1 + visible 0 + } + itemDef { + name misc + group grpControls + type ITEM_TYPE_BIND + text "Next Team Member:" + cvar "nextTeamMember" + rect 99 300 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .3 + forecolor 1 1 1 1 + visible 0 + } + itemDef { + name misc + group grpControls + type ITEM_TYPE_BIND + text "Next Team Order:" + cvar "nextOrder" + rect 99 325 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .3 + forecolor 1 1 1 1 + visible 0 + } + + + + + + + + + +} + +} + +} diff --git a/ta_ui/createfavorite.menu b/ta_ui/createfavorite.menu new file mode 100644 index 00000000..f0f324af --- /dev/null +++ b/ta_ui/createfavorite.menu @@ -0,0 +1,199 @@ +#include "ui/menudef.h" + +{ +\\ CREATE FAVORITE POPUP MENU \\ + +menuDef { + name "createfavorite_popmenu" + visible 0 + fullscreen 0 + rect 204 122 235 235 + focusColor 1 .75 0 1 + style 1 + border 1 + popup + onESC { close createfavorite_popmenu ; open joinserver } + + + +itemDef { + name window + rect 0 0 235 235 + style 3 + background "ui/assets/mainpop.tga" + visible 1 + decoration + } +itemDef { + name window + rect 47 47 144 144 + style 3 + background "centerconsole2" + visible 1 + decoration + } + + + + + + // ENTER NAME AND ADDRESS // + +itemDef { + name name + text "Name" + style 0 + decoration + textscale .3 + rect 1 62 110 20 + textalign 1 + textalignx 117 + textaligny 16 + forecolor 0 0 0 1 + visible 1 + + } +itemDef { + name name + text "Name" + style 0 + decoration + textscale .3 + rect 0 61 110 20 + textalign 1 + textalignx 117 + textaligny 16 + forecolor 1 1 1 1 + visible 1 + } +itemDef { + name nameEntry + style 1 + maxchars 15 + text ":" + textscale .25 + TYPE 4 + cvar "ui_favoriteName" + rect 60 81 120 20 + textalign 0 + textalignx 0 + textaligny 16 + forecolor 1 1 1 1 + backcolor 0 0 0 .5 + visible 1 + mouseenter { setitemcolor nameentry backcolor 0 0 0 .75 } + mouseexit { setitemcolor nameentry backcolor 0 0 0 .5 } + } + + + + + +itemDef { + name address + text "IP Address" + style 0 + decoration + textscale .3 + rect 1 112 110 20 + textalign 1 + textalignx 117 + textaligny 16 + forecolor 0 0 0 1 + visible 1 + + } +itemDef { + name address + text "IP Address" + style 0 + decoration + textscale .3 + rect 0 111 110 20 + textalign 1 + textalignx 117 + textaligny 16 + forecolor 1 1 1 1 + visible 1 + } +itemDef { + name addressEntry + style 1 + maxchars 20 + maxPaintChars 12 + text ":" + textscale .25 + TYPE 4 + maxchars 21 + cvar "ui_favoriteAddress" + rect 60 131 120 20 + textalign 0 + textalignx 0 + textaligny 16 + forecolor 1 1 1 1 + backcolor 0 0 0 .25 + visible 1 + mouseenter { setitemcolor addressEntry backcolor 0 0 0 .75 } + mouseexit { setitemcolor addressEntry backcolor 0 0 0 .25 } + } + + + + +itemDef { + name yes + text "Ok" + type 1 + textscale .25 + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + rect 103 158 30 26 + textalign 1 + textalignx 15 + textaligny 20 + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + visible 1 + action { play "sound/misc/nomenu.wav" ; + uiScript CreateFavorite ; + close createfavorite_popmenu ; + open joinserver } + mouseEnter { setitemcolor yes backcolor .1 .37 .1 1 } + mouseExit { setitemcolor yes backcolor .37 .1 .1 1 } + } + + itemDef { + name yes + style WINDOW_STYLE_SHADER + background "ui/assets/framebutton.tga" + rect 103 158 30 26 + visible 1 + decoration + } + + itemDef { + name yes + style WINDOW_STYLE_SHADER + background "ui/assets/leftbutton.tga" + rect 97 158 7 26 + visible 1 + decoration + } + + itemDef { + name yes + style WINDOW_STYLE_SHADER + background "ui/assets/rightbutton.tga" + rect 132 158 7 26 + visible 1 + decoration + } + + + + + + +} +} +} \ No newline at end of file diff --git a/ta_ui/createserver.menu b/ta_ui/createserver.menu new file mode 100644 index 00000000..68f1d3de --- /dev/null +++ b/ta_ui/createserver.menu @@ -0,0 +1,1315 @@ +#include "ui/menudef.h" + +{ +\\ Server Creation \\ + + menuDef { + name "createserver" + visible 0 + fullscreen 1 + rect 0 0 640 480 + background "menuback_a" + outOfBoundsClick + focusColor 1 .75 0 1 + style 1 + border 1 + onEsc { close createserver ; open main } + onOpen { setitemcolor fadebox backcolor 0 0 0 1 ; + playlooped "music/fla_mp03.wav" ; + fadeout fadebox ; + transition mappreview 7 127 190 1 7 57 190 141 20 10 ; + uiScript loadArenas ; + hide lightning ; + hide accept_alt ; + show accept ; + hide back_alt ; + show back ; + hide grpmessage } + + +itemDef { + name window + rect 2 50 200 370 + style WINDOW_STYLE_FILLED + border 1 + bordercolor 1 1 1 .25 + forecolor 1 1 1 1 + backcolor 0 0 0 .25 + visible 1 + decoration +} + +itemDef { + name window + rect 204 50 227 98 + style WINDOW_STYLE_FILLED + border 1 + bordercolor 1 1 1 .25 + forecolor 1 1 1 1 + backcolor 0 0 0 .25 + visible 1 + decoration +} + + +itemDef { + name window + rect 204 150 227 270 + style WINDOW_STYLE_FILLED + border 1 + bordercolor 1 1 1 .25 + forecolor 1 1 1 1 + backcolor 0 0 0 .25 + visible 1 + decoration +} + +itemDef { + name window + rect 433 50 200 183 + style WINDOW_STYLE_FILLED + border 1 + bordercolor 1 1 1 .25 + forecolor 1 1 1 1 + backcolor 0 0 0 .25 + visible 1 + cvarTest "ui_actualNetGameType" + hideCvar { "0" ; "1" ; "2" } + decoration +} + +itemDef { + name window + rect 433 235 200 185 + style WINDOW_STYLE_FILLED + border 1 + bordercolor 1 1 1 .25 + forecolor 1 1 1 1 + backcolor 0 0 0 .25 + visible 1 + cvarTest "ui_actualNetGameType" + hideCvar { "0" ; "1" ; "2" } + decoration +} +itemDef { + name window + rect 433 50 200 370 + style WINDOW_STYLE_FILLED + border 1 + bordercolor 1 1 1 .25 + forecolor 1 1 1 1 + backcolor 0 0 0 .25 + visible 1 + cvarTest "ui_actualNetGameType" + showCvar { "0" ; "1" ; "2" } + decoration +} + + + +// top bar // + itemDef { + name topbar + style 2 + rect 0 5 640 40 + style 2 + border 4 + bordercolor 0.5 0.5 0.5 0.5 + bordersize 2 + backcolor 0 0 .75 .5 + visible 1 + decoration + mouseEnter { setcolor backcolor .75 0 0 .5 } + mouseExit { setcolor backcolor 0 0 .75 .5 } + } + + +// GLOBAL SETTINGS + + + +itemDef { + name gametypefield + style 0 + ownerdraw UI_NETGAMETYPE + text "Type:" + textstyle 6 + rect 0 10 320 31 + textalign ITEM_ALIGN_LEFT + textalignx 20 + textaligny 26 + textscale .416 + forecolor 1 1 1 1 + visible 1 + action { play "sound/misc/kcaction.wav" } + mouseEnter { fadein message_gametype } + mouseExit { fadeout message_gametype } + } + +itemDef { + name gametypefield + style 0 + ownerdraw UI_SKILL + textstyle 6 + text "Skill:" + rect 320 10 320 31 + textalign ITEM_ALIGN_LEFT + textalignx 90 + textaligny 26 + textscale .416 + forecolor 1 1 1 1 + visible 1 + action { play "sound/misc/kcaction.wav" } + mouseEnter { fadein message_skill } + mouseExit { fadeout message_skill } + } + + +// map selection + +itemDef { + name mappreview + style 0 + ownerdraw UI_STARTMAPCINEMATIC + rect 7 57 190 141 + border 1 + bordercolor .5 .5 .5 .5 + visible 1 + } + +itemDef { + name mappreview + style WINDOW_STYLE_FILLED + rect 6 56 192 143 + border 1 + bordercolor .5 .5 .5 .5 + visible 1 + } + + itemDef { + name maplist + rect 6 205 192 211 + type ITEM_TYPE_LISTBOX + style WINDOW_STYLE_FILLED + elementwidth 120 + elementheight 20 + textscale .25 + elementtype LISTBOX_TEXT + feeder FEEDER_ALLMAPS + textstyle 6 + textalign 3 + textaligny 14 + border 1 + bordercolor .5 .5 .5 .5 + forecolor 1 1 1 1 + backcolor 0 0 .5 .25 + outlinecolor .1 .1 .7 .5 + visible 1 + columns 1 2 190 25 + mouseEnter { fadein message_arena ; setitemcolor maplist bordercolor .7 0 0 1 } + mouseExit { fadeout message_arena ; setitemcolor maplist bordercolor .5 .5 .5 .5 } + } + +// SETTINGS // + + + +// NORMAL // + + itemDef { + name normal + group grpsettings + type ITEM_TYPE_NUMERICFIELD + text "Capture Limit:" + cvar "capturelimit" + ownerdrawflag UI_SHOW_NETANYTEAMGAME + rect 260 60 128 12 + textalign ITEM_ALIGN_RIGHT + textalignx 65 + textaligny 12 + maxchars 4 + textscale .25 + forecolor 1 1 1 1 + visible 1 + } + itemDef { + name normal + group grpsettings + type ITEM_TYPE_NUMERICFIELD + text "Frag Limit:" + cvar "fraglimit" + ownerdrawflag UI_SHOW_NETANYNONTEAMGAME + rect 260 60 128 12 + textalign ITEM_ALIGN_RIGHT + textalignx 65 + maxchars 4 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 1 + } + + itemDef { + name normal + group grpsettings + type ITEM_TYPE_NUMERICFIELD + text "Time Limit:" + cvar "timelimit" + rect 260 77 128 12 + textalign ITEM_ALIGN_RIGHT + textalignx 65 + maxchars 4 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 1 + } + + + itemDef { + name normal + group grpsettings + type ITEM_TYPE_YESNO + text "Friendly Fire:" + cvar "g_friendlyfire" + rect 260 94 128 12 + textalign ITEM_ALIGN_RIGHT + textalignx 65 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 1 + } + + itemDef { + name normal + group grpsettings + type ITEM_TYPE_YESNO + text "Pure Server:" + cvar "sv_pure" + rect 260 111 128 12 + textalign ITEM_ALIGN_RIGHT + textalignx 65 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 1 + } + + itemDef { + name normal + group grpsettings + type ITEM_TYPE_MULTI + text "Dedicated:" + // syntax for this is cvar name followed by a semicolan separated list of choices first choice equals 0 + // dedicated is a special cvar in that as soon as it is set, the game goes to console only so the ui catches this one specifically + cvar "ui_dedicated" + cvarFloatList { "No" 0 "LAN" 1 "Internet" 2 } + rect 260 128 128 12 + textalign ITEM_ALIGN_RIGHT + textalignx 65 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 1 + } + + +// EXPERT // + + itemDef { + name expert + group grpsettings + type ITEM_TYPE_EDITFIELD + text "Host Name:" + cvar "sv_hostname" + maxChars 32 + maxPaintChars 10 + rect 260 160 128 12 + textalign ITEM_ALIGN_RIGHT + textalignx 65 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 1 + } + + + + itemDef { + name expert + group grpsettings + type ITEM_TYPE_YESNO + text "Auto Download:" + cvar "sv_allowdownload" + rect 260 175 128 12 + textalign ITEM_ALIGN_RIGHT + textalignx 65 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 1 + } + + itemDef { + name expert + group grpsettings + type ITEM_TYPE_YESNO + text "Enable Voting:" + cvar "g_allowvote" + rect 260 190 128 12 + textalign ITEM_ALIGN_RIGHT + textalignx 65 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 1 + } + + + + itemDef { + name expert + group grpsettings + type ITEM_TYPE_NUMERICFIELD + text "Maximum Players:" + cvar "sv_maxclients" + rect 260 205 128 12 + textalign ITEM_ALIGN_RIGHT + textalignx 65 + maxchars 4 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 1 + } + + + + itemDef { + name expert + group grpsettings + type ITEM_TYPE_NUMERICFIELD + text "Minimum Ping:" + cvar "sv_minping" + rect 260 220 128 12 + textalign ITEM_ALIGN_RIGHT + textalignx 65 + maxchars 4 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 1 + } + + itemDef { + name expert + group grpsettings + type ITEM_TYPE_NUMERICFIELD + text "Maximum Ping:" + cvar "sv_maxping" + rect 260 235 128 12 + textalign ITEM_ALIGN_RIGHT + textalignx 65 + textaligny 12 + maxchars 4 + textscale .25 + forecolor 1 1 1 1 + visible 1 + } + + itemDef { + name expert + group grpsettings + type ITEM_TYPE_YESNO + text "Force Join:" + cvar "g_teamautojoin" + rect 260 250 128 12 + textalign ITEM_ALIGN_RIGHT + textalignx 65 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 1 + } + + itemDef { + name expert + group grpsettings + type ITEM_TYPE_YESNO + text "Even Teams:" + cvar "g_teamforcebalance" + rect 260 265 128 12 + textalign ITEM_ALIGN_RIGHT + textalignx 65 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 1 + } + + itemDef { + name expert + group grpsettings + type ITEM_TYPE_YESNO + text "Do Warmup:" + cvar "g_dowarmup" + rect 260 280 128 12 + textalign ITEM_ALIGN_RIGHT + textalignx 65 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 1 + } + + itemDef { + name expert + group grpsettings + type ITEM_TYPE_NUMERICFIELD + text "Warmup time:" + cvar "g_warmup" + rect 260 295 128 12 + textalign ITEM_ALIGN_RIGHT + textalignx 65 + textaligny 12 + textscale .25 + maxchars 4 + forecolor 1 1 1 1 + visible 1 + } + + itemDef { + name expert + group grpsettings + type ITEM_TYPE_YESNO + text "Synchronous Client:" + cvar "g_synchronousclients" + rect 260 310 128 12 + textalign ITEM_ALIGN_RIGHT + textalignx 65 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 1 + } + + itemDef { + name expert + group grpsettings + type ITEM_TYPE_NUMERICFIELD + text "Max Rate:" + cvar "sv_maxrate" + rect 260 325 128 12 + textalign ITEM_ALIGN_RIGHT + textalignx 65 + maxchars 4 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 1 + } + + itemDef { + name expert + group grpsettings + type ITEM_TYPE_NUMERICFIELD + text "Zombie Time:" + cvar "sv_zombietime" + rect 260 340 128 12 + maxchars 4 + textalign ITEM_ALIGN_RIGHT + textalignx 65 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 1 + } + + itemDef { + name expert + group grpsettings + type ITEM_TYPE_NUMERICFIELD + text "Reconnect Limit:" + cvar "sv_reconnectlimit" + maxchars 4 + rect 260 355 128 12 + textalign ITEM_ALIGN_RIGHT + textalignx 65 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 1 + } + itemDef { + name expert + group grpsettings + type ITEM_TYPE_YESNO + text "Require Password:" + cvar "g_needpassword" + rect 260 370 128 12 + textalign ITEM_ALIGN_RIGHT + textalignx 65 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 1 + } + + itemDef { + name expert + group grpsettings + type 4 + text "Password:" + cvar "g_password" + rect 260 385 128 12 + maxchars 10 + maxPaintChars 10 + textalign ITEM_ALIGN_RIGHT + textalignx 65 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 1 + } + + + +// BOT LIST FOR TEAM GAMES + +itemDef { + name gametypefield + style 0 + ownerdraw UI_BLUETEAMNAME + rect 450 70 128 28 + textalign ITEM_ALIGN_LEFT + textalignx 0 + textaligny 26 + textscale .333 + forecolor 0 0 1 1 + border 0 + bordercolor 0 0 0 0 + visible 1 + cvarTest "ui_actualNetGameType" + hideCvar { "0" ; "1" ; "2" } + action { play "sound/misc/nomenu.wav" } + mouseEnter { fadein message_clan } + mouseExit { fadeout message_clan } + } + + + +itemDef { + name gametypefield + style 0 + ownerdraw UI_BLUETEAM1 + rect 450 100 128 20 + text "1." + textalign ITEM_ALIGN_LEFT + textalignx 0 + textaligny 18 + textscale .333 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 1 + cvarTest "ui_actualNetGameType" + hideCvar { "0" ; "1" ; "2" } + action { play "sound/misc/nomenu.wav" } + mouseEnter { fadein message_slot } + mouseExit { fadeout message_slot } + } + +itemDef { + name gametypefield + style 0 + ownerdraw UI_BLUETEAM2 + rect 450 122 128 20 + textalign ITEM_ALIGN_LEFT + textalignx 0 + textaligny 18 + text "2." + textscale .333 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 1 + cvarTest "ui_actualNetGameType" + hideCvar { "0" ; "1" ; "2" } + action { play "sound/misc/nomenu.wav" } + mouseEnter { fadein message_slot } + mouseExit { fadeout message_slot } + } + +itemDef { + name gametypefield + style 0 + text "3." + ownerdraw UI_BLUETEAM3 + rect 450 144 128 20 + textalign ITEM_ALIGN_LEFT + textalignx 0 + textaligny 18 + textscale .333 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 1 + cvarTest "ui_actualNetGameType" + hideCvar { "0" ; "1" ; "2" } + action { play "sound/misc/nomenu.wav" } + mouseEnter { fadein message_slot } + mouseExit { fadeout message_slot } + } + +itemDef { + name gametypefield + style 0 + text "4." + ownerdraw UI_BLUETEAM4 + rect 450 166 128 20 + textalign ITEM_ALIGN_LEFT + textalignx 0 + textaligny 18 + textscale .333 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 1 + cvarTest "ui_actualNetGameType" + hideCvar { "0" ; "1" ; "2" } + action { play "sound/misc/nomenu.wav" } + mouseEnter { fadein message_slot } + mouseExit { fadeout message_slot } + } + +itemDef { + name gametypefield + style 0 + text "5." + ownerdraw UI_BLUETEAM5 + rect 450 188 128 20 + textalign ITEM_ALIGN_LEFT + textalignx 0 + textaligny 18 + textscale .333 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 1 + cvarTest "ui_actualNetGameType" + hideCvar { "0" ; "1" ; "2" } + action { play "sound/misc/nomenu.wav" } + mouseEnter { fadein message_slot } + mouseExit { fadeout message_slot } + } + + + + +itemDef { + name gametypefield + style 0 + ownerdraw UI_REDTEAMNAME + rect 450 250 128 28 + textalign ITEM_ALIGN_LEFT + textalignx 0 + textaligny 26 + textscale .333 + forecolor 1 0 0 1 + border 0 + bordercolor 0 0 0 0 + visible 1 + cvarTest "ui_actualNetGameType" + hideCvar { "0" ; "1" ; "2" } + action { play "sound/misc/nomenu.wav" } + mouseEnter { fadein message_clan } + mouseExit { fadeout message_clan } + } + + +itemDef { + name gametypefield + style 0 + ownerdraw UI_REDTEAM1 + text "1." + rect 450 280 128 20 + textalign ITEM_ALIGN_LEFT + textalignx 0 + textaligny 18 + textscale .333 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 1 + cvarTest "ui_actualNetGameType" + hideCvar { "0" ; "1" ; "2" } + action { play "sound/misc/nomenu.wav" } + mouseEnter { fadein message_slot } + mouseExit { fadeout message_slot } + } + +itemDef { + name gametypefield + style 0 + text "2." + ownerdraw UI_REDTEAM2 + rect 450 302 128 20 + textalign ITEM_ALIGN_LEFT + textalignx 0 + textaligny 18 + textscale .333 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 1 + cvarTest "ui_actualNetGameType" + hideCvar { "0" ; "1" ; "2" } + action { play "sound/misc/nomenu.wav" } + mouseEnter { fadein message_slot } + mouseExit { fadeout message_slot } + } + +itemDef { + name gametypefield + style 0 + text "3." + ownerdraw UI_REDTEAM3 + rect 450 324 128 20 + textalign ITEM_ALIGN_LEFT + textalignx 0 + textaligny 18 + textscale .333 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 1 + cvarTest "ui_actualNetGameType" + hideCvar { "0" ; "1" ; "2" } + action { play "sound/misc/nomenu.wav" } + mouseEnter { fadein message_slot } + mouseExit { fadeout message_slot } + } + +itemDef { + name gametypefield + style 0 + text "4." + ownerdraw UI_REDTEAM4 + rect 450 346 128 20 + textalign ITEM_ALIGN_LEFT + textalignx 0 + textaligny 18 + textscale .333 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 1 + cvarTest "ui_actualNetGameType" + hideCvar { "0" ; "1" ; "2" } + action { play "sound/misc/nomenu.wav" } + mouseEnter { fadein message_slot } + mouseExit { fadeout message_slot } + } + +itemDef { + name gametypefield + style 0 + text "5." + ownerdraw UI_REDTEAM5 + rect 450 368 128 20 + textalign ITEM_ALIGN_LEFT + textalignx 0 + textaligny 18 + textscale .333 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 1 + cvarTest "ui_actualNetGameType" + hideCvar { "0" ; "1" ; "2" } + action { play "sound/misc/nomenu.wav" } + mouseEnter { fadein message_slot } + mouseExit { fadeout message_slot } + } + +// BOT LIST FOR NONTEAMGAMES + + +itemDef { + name gametypefield + style 0 + text "1." + ownerdraw UI_BLUETEAM1 + rect 450 100 128 20 + textalign ITEM_ALIGN_LEFT + textalignx 0 + textaligny 18 + textscale .333 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 1 + cvarTest "ui_actualNetGameType" + showCvar { "0" ; "1" ; "2" } + action { play "sound/misc/nomenu.wav" } + mouseEnter { fadein message_slot } + mouseExit { fadeout message_slot } + } + +itemDef { + name gametypefield + style 0 + text "2." + ownerdraw UI_REDTEAM1 + rect 450 125 128 20 + textalign ITEM_ALIGN_LEFT + textalignx 0 + textaligny 18 + textscale .333 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 1 + cvarTest "ui_actualNetGameType" + showCvar { "0" ; "1" ; "2" } + action { play "sound/misc/nomenu.wav" } + mouseEnter { fadein message_slot } + mouseExit { fadeout message_slot } + } + +itemDef { + name gametypefield + style 0 + text "3." + ownerdraw UI_BLUETEAM2 + rect 450 150 128 20 + textalign ITEM_ALIGN_LEFT + textalignx 0 + textaligny 18 + textscale .333 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 1 + cvarTest "ui_actualNetGameType" + showCvar { "0" ; "1" ; "2" } + action { play "sound/misc/nomenu.wav" } + mouseEnter { fadein message_slot } + mouseExit { fadeout message_slot } + } + +itemDef { + name gametypefield + style 0 + text "4." + ownerdraw UI_REDTEAM2 + rect 450 175 128 20 + textalign ITEM_ALIGN_LEFT + textalignx 0 + textaligny 18 + textscale .333 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 1 + cvarTest "ui_actualNetGameType" + showCvar { "0" ; "1" ; "2" } + action { play "sound/misc/nomenu.wav" } + mouseEnter { fadein message_slot } + mouseExit { fadeout message_slot } + } + +itemDef { + name gametypefield + style 0 + text "5." + ownerdraw UI_BLUETEAM3 + rect 450 200 128 20 + textalign ITEM_ALIGN_LEFT + textalignx 0 + textaligny 18 + textscale .333 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 1 + cvarTest "ui_actualNetGameType" + showCvar { "0" ; "1" ; "2" } + action { play "sound/misc/nomenu.wav" } + mouseEnter { fadein message_slot } + mouseExit { fadeout message_slot } + } + + + + + + + +itemDef { + name gametypefield + style 0 + text "6." + ownerdraw UI_REDTEAM3 + rect 450 225 128 20 + textalign ITEM_ALIGN_LEFT + textalignx 0 + textaligny 18 + textscale .333 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 1 + cvarTest "ui_actualNetGameType" + showCvar { "0" ; "1" ; "2" } + action { play "sound/misc/nomenu.wav" } + mouseEnter { fadein message_slot } + mouseExit { fadeout message_slot } + } + +itemDef { + name gametypefield + style 0 + text "7." + ownerdraw UI_BLUETEAM4 + rect 450 250 128 20 + textalign ITEM_ALIGN_LEFT + textalignx 0 + textaligny 18 + textscale .333 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 1 + cvarTest "ui_actualNetGameType" + showCvar { "0" ; "1" ; "2" } + action { play "sound/misc/nomenu.wav" } + mouseEnter { fadein message_slot } + mouseExit { fadeout message_slot } + } + +itemDef { + name gametypefield + style 0 + text "8." + ownerdraw UI_REDTEAM4 + rect 450 275 128 20 + textalign ITEM_ALIGN_LEFT + textalignx 0 + textaligny 18 + textscale .333 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 1 + cvarTest "ui_actualNetGameType" + showCvar { "0" ; "1" ; "2" } + action { play "sound/misc/nomenu.wav" } + mouseEnter { fadein message_slot } + mouseExit { fadeout message_slot } + } + +itemDef { + name gametypefield + style 0 + text "9." + ownerdraw UI_BLUETEAM5 + rect 450 300 128 20 + textalign ITEM_ALIGN_LEFT + textalignx 0 + textaligny 18 + textscale .333 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 1 + cvarTest "ui_actualNetGameType" + showCvar { "0" ; "1" ; "2" } + action { play "sound/misc/nomenu.wav" } + mouseEnter { fadein message_slot } + mouseExit { fadeout message_slot } + } + +itemDef { + name gametypefield + style 0 + text "10." + ownerdraw UI_REDTEAM5 + rect 443 325 128 20 + textalign ITEM_ALIGN_LEFT + textalignx 0 + textaligny 18 + textscale .333 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 1 + cvarTest "ui_actualNetGameType" + showCvar { "0" ; "1" ; "2" } + action { play "sound/misc/nomenu.wav" } + mouseEnter { fadein message_slot } + mouseExit { fadeout message_slot } + } + + + +// BACK BAR // + + + itemDef { + name gotobar + style 2 + rect 0 430 640 30 + textscale 0.4 + textalign 0 // center + textalignx 60 // x alignment point for text + // use it to offset left/right text from the edge + // or to center the text on a different point + textaligny 21 + style 2 + border 4 + bordercolor 0.5 0.5 0.5 0.75 + bordersize 2 + backcolor 0 0 .75 0.5 + visible 1 + mouseEnter { setcolor backcolor .75 0 0 .5 } + mouseExit { setcolor backcolor 0 0 .75 .5 } + decoration + } + + itemDef { + name back + style 3 + background "ui/assets/backarrow.tga" + rect 16 424 50 50 + visible 1 + action { close createserver ; open main } + mouseEnter { hide back ; show back_alt ; fadein message_back } + } + +itemDef { + name back_alt + style WINDOW_STYLE_SHADER + background "ui/assets/backarrow_alt.tga" + rect 14 422 54 54 + backcolor 0 0 0 0 + forecolor 1 1 1 1 + visible 0 + type ITEM_TYPE_BUTTON + mouseExit { hide back_alt ; show back ; fadeout message_back } + action { close createserver ; open main } + } + + + + itemDef { + name accept + style 3 + rect 574 424 50 50 + background "ui/assets/forwardarrow.tga" + backcolor 0 0 0 0 + forecolor 1 1 1 1 + visible 1 + mouseEnter { playlooped "sound/misc/loop_electricity_05.wav" ; show lightning ; hide accept ; show accept_alt ; fadein message_accept } + action { close fight ; uiScript StartServer } +/* + // demo_only + cvarTest "ui_actualNetGameType" + hideCvar { "0" ; "1" } +*/ + } + + itemDef { + name accept_alt + style 3 + rect 572 422 54 54 + background "ui/assets/forwardarrow_alt.tga" + backcolor 0 0 0 0 + forecolor 1 1 1 1 + visible 0 + type ITEM_TYPE_BUTTON + action { close fight ; uiScript StartServer } + mouseExit { hide lightning ; hide accept_alt ; show accept ; fadeout message_accept ; playlooped "music/fla_mp03.wav" } +/* + // demo_only + cvarTest "ui_actualNetGameType" + hideCvar { "0" ; "1" } +*/ + } +itemDef { + name lightning + style 3 + background lightningkc + rect 46 385 236 128 + visible 0 + decoration + } +itemDef { + name lightning + style 3 + background lightningkc + rect 355 385 236 128 + visible 0 + decoration + } + + + +// MESSAGES // + +itemDef { + name message_back + group grpmessage + style 0 + rect 320 430 128 30 + textalign 1 + textstyle 1 + textalignx 0 + textaligny 25 + textscale .416 + text "Exit to Main Menu" + forecolor 1 1 1 1 + decoration + visible 0 + } + +itemDef { + name message_accept + group grpmessage + style 0 + rect 320 430 128 30 + textalign 1 + textalignx 0 + textstyle 1 + textaligny 25 + textscale .416 + text "Start Server" + forecolor 1 1 1 1 + decoration + visible 0 + } + +itemDef { + name message_gametype + group grpmessage + style 0 + rect 320 430 128 30 + textalign 1 + textstyle 1 + textalignx 0 + textaligny 25 + textscale .416 + text "Set GameType" + forecolor 1 1 1 1 + decoration + visible 0 + } + +itemDef { + name message_skill + group grpmessage + style 0 + rect 320 430 128 30 + textalign 1 + textstyle 1 + textalignx 0 + textaligny 25 + textscale .416 + text "Set Skill Level" + forecolor 1 1 1 1 + decoration + visible 0 + } +itemDef { + name message_arena + group grpmessage + style 0 + rect 320 430 128 30 + textalign 1 + textstyle 1 + textalignx 0 + textaligny 25 + textscale .416 + text "Choose Your Arena" + forecolor 1 1 1 1 + decoration + visible 0 + } +itemDef { + name message_clan + group grpmessage + style 0 + rect 320 430 128 30 + textalign 1 + textstyle 1 + textalignx 0 + textaligny 25 + textscale .416 + text "Click to toggle through clan list" + forecolor 1 1 1 1 + decoration + visible 0 + } +itemDef { + name message_slot + group grpmessage + style 0 + rect 320 430 128 30 + textalign 1 + textstyle 1 + textalignx 0 + textaligny 25 + textscale .416 + text "Click to toggle botnames, human, or closed slots" + forecolor 1 1 1 1 + decoration + visible 0 + } +itemDef { + name message_normal + group grpmessage + style 0 + rect 320 430 128 30 + textalign 1 + textstyle 1 + textalignx 0 + textaligny 25 + textscale .416 + text "Select to Modify Normal Server Settings" + forecolor 1 1 1 1 + decoration + visible 0 + } +itemDef { + name message_expert + group grpmessage + style 0 + rect 320 430 128 30 + textalign 1 + textstyle 1 + textalignx 0 + textaligny 25 + textscale .416 + text "Select to Modify Expert Server Settings" + forecolor 1 1 1 1 + decoration + visible 0 + } + +itemDef { + name fadebox + style WINDOW_STYLE_FILLED + background "ui/assets/fadebox.tga" + forecolor 0 0 0 1 + backcolor 0 0 0 1 + rect 0 0 640 480 + visible 1 + decoration + } + + +} +} + +} diff --git a/ta_ui/credit.menu b/ta_ui/credit.menu new file mode 100644 index 00000000..120e2d95 --- /dev/null +++ b/ta_ui/credit.menu @@ -0,0 +1,459 @@ +#include "ui/menudef.h" + +{ +\\ CREDIT \\ + + menuDef { + name "credit" + visible 0 + fullscreen 1 + rect 0 0 640 480 + background "menuback_a" + focusColor 1 .67 0 1 + style 1 + border 1 + soundloop "" + onEsc { close credit ; open menu } + onOpen { setitemcolor fadebox backcolor 0 0 0 1 ; + fadeout fadebox ; + show grpidcredit ; + hide grpoutcredit ; + transition programming 0 0 640 30 0 80 640 30 20 10 ; + transition artist 0 0 640 30 0 110 640 30 20 10 ; + transition levelDesign 0 0 640 30 0 140 640 30 20 10 ; + transition gameDesign 0 0 640 30 0 170 640 30 20 10 ; + transition ceo 0 0 640 30 0 200 640 30 20 10 ; + transition bizdev 0 0 640 30 0 230 640 30 20 10 ; + transition idMom 0 0 640 30 0 260 640 30 20 10 ; + transition devAssist 0 0 640 30 0 290 640 30 20 10 ; + transition progAssist 0 0 640 30 0 340 640 30 20 10 ; + hide back_alt ; + show back ; + hide grpmessage } + + + + +// LEVEL SELECTION BAR // + + +itemDef { + name mappreview + style 5 + cinematic "idlogo.roq" + rect 0 0 640 480 + backcolor 1 1 1 .25 + border 1 + bordersize 1 + bordercolor .5 .5 .5 1 + decoration + visible 1 + } + + +itemDef { + name idcredit + group grpidcredit + rect 0 50 620 20 + style 1 + textalign 1 + textalignx 320 + textaligny 10 + textstyle 6 + textscale .4 + text "id Software is:" + forecolor 1 1 1 1 + decoration + visible 0 + } + + +itemDef { + name programming + group grpidcredit + style 0 + rect 0 80 640 30 + textalign 1 + textstyle 6 + textalignx 320 + textaligny 10 + textscale .333 + text "PROGRAMMING: John Carmack, Robert Duffy, Jim Dose'" + forecolor 1 1 1 1 + decoration + visible 0 + } + +itemDef { + name artist + group grpidcredit + style 0 + rect 0 110 640 30 + textstyle 6 + textalign 1 + textalignx 320 + textaligny 10 + textscale .333 + text "ART: Adrian Carmack, Kevin Cloud, Kenneth Scott, Seneca Menard, Fred Nilsson " + forecolor 1 1 1 1 + decoration + visible 0 + } + + +itemDef { + name levelDesign + group grpidcredit + style 0 + rect 0 140 640 30 + textalign 1 + textalignx 320 + textstyle 6 + textaligny 10 + textscale .333 + text "LEVEL DESIGN: Tim Willits, Christian Antkow, Paul Jaquays" + forecolor 1 1 1 1 + decoration + visible 0 + } + +itemDef { + name gameDesign + group grpidcredit + style 0 + rect 0 170 640 30 + textalign 1 + textalignx 320 + textstyle 6 + textaligny 10 + textscale .333 + text "GAME DESIGN: Graeme Devine" + forecolor 1 1 1 1 + decoration + visible 0 + } + +itemDef { + name ceo + group grpidcredit + style 0 + rect 0 200 640 30 + textstyle 6 + textalign 1 + textalignx 320 + textaligny 10 + textscale .333 + text "CEO: Todd Hollenshead" + forecolor 1 1 1 1 + decoration + visible 0 + } + +itemDef { + name bizDev + group grpidcredit + style 0 + rect 0 230 640 30 + textalign 1 + textalignx 320 + textstyle 6 + textaligny 10 + textscale .333 + text "BUSINESS DEVELOPMENT: Marty Stratton" + forecolor 1 1 1 1 + decoration + visible 0 + } + +itemDef { + name idMom + group grpidcredit + style 0 + rect 0 260 640 30 + textalign 1 + textalignx 320 + textstyle 6 + textaligny 10 + textscale .333 + text "OFFICE MANAGER AND ID MOM: Donna Jackson" + forecolor 1 1 1 1 + decoration + visible 0 + } + +itemDef { + name devAssist + group grpidcredit + style 0 + rect 0 290 640 30 + textalign 1 + textalignx 320 + textstyle 6 + textaligny 10 + textscale .333 + text "DEVELOPMENT ASSISTANCE: Eric Webb" + forecolor 1 1 1 1 + decoration + visible 0 + } + +itemDef { + name progAssist + group grpidcredit + style 0 + rect 0 340 640 30 + textalign 1 + textalignx 320 + textstyle 6 + textaligny 10 + textscale .333 + text "BOT AI & PROGRAMMING ASSISTANCE: Jan Paul van Waveren" + forecolor 1 1 1 1 + decoration + visible 0 + } + + +itemDef { + name outcreditbttn + group grpidcredit + rect 255 400 130 26 + type 1 + text "Additional Credit" + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + textalign 1 + textscale .25 + textalignx 65 + textaligny 20 + visible 0 + backcolor .37 .1 .1 1 + forecolor 1 1 1 1 + action { play "sound/misc/kcaction.wav" ; + hide grpidcredit ; + show grpoutcredit } + mouseEnter { setitemcolor outcreditbttn backcolor .1 .37 .1 1 } + mouseExit { setitemcolor outcreditbttn backcolor .37 .1 .1 1 } + } +itemDef { + name idcreditbttn + group grpidcredit + style WINDOW_STYLE_SHADER + background "ui/assets/framebutton.tga" + rect 255 400 130 26 + visible 0 + decoration + } + +itemDef { + name idcreditbttn + group grpidcredit + style WINDOW_STYLE_SHADER + background "ui/assets/leftbutton.tga" + rect 243 400 13 26 + visible 0 + decoration + } + +itemDef { + name idcreditbttn + group grpidcredit + style WINDOW_STYLE_SHADER + background "ui/assets/rightbutton.tga" + rect 384 400 13 26 + visible 0 + decoration + } + +// OUTSIDE CREDIT // + +itemDef { + name outcredit + group grpoutcredit + rect 0 50 620 20 + style 1 + textalign 1 + textalignx 320 + textaligny 10 + textstyle 6 + textscale .4 + text "Additional Assistance" + forecolor 1 1 1 1 + decoration + visible 0 + } + +itemDef { + name outcredit + group grpoutcredit + style 1 + rect 75 100 620 15 + textalign 0 + textstyle 3 + textalignx 5 + textaligny 10 + textscale .25 + wrapped + text"Additional Map Work by Ka'ai Cluney\r" + "Additional Progamming by John Cash\r" + "Character Models and Animation by Paul Steed\r" + "Additional Model Work by Beau Anderson\r" + "Motion Capture by Pyros Pictures, House of Moves, and LocoMotion Studios\r\r\r" + "Sound Design by Soundelux Showorks\r" + "Music by Sonic Mayhem (www.sonicmayhem.com)\r" + "Music by Front Line Assembly\r\r\r" + "Manual by William W. Connors\r" + "Manual & Package Design by Focus2\r" + "Portions of Team Arena based in part on the work of the Independent JPEG Group\r" + "Font rendering performed by FreeType ( www.freetype.org )" + forecolor 1 1 1 1 + decoration + visible 0 + } +itemDef { + name idcreditbttn + group grpoutcredit + type 1 + rect 260 400 120 26 + text "id Credit" + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + textalign 1 + textscale .25 + textalignx 60 + textaligny 20 + visible 0 + backcolor .37 .1 .1 1 + forecolor 1 1 1 1 + action { play "sound/misc/kcaction.wav" ; + hide grpoutcredit ; + show grpidcredit } + mouseEnter { setitemcolor idcreditbttn backcolor .1 .37 .1 1 } + mouseExit { setitemcolor idcreditbttn backcolor .37 .1 .1 1 } + } +itemDef { + name outcredit + group grpoutcredit + style WINDOW_STYLE_SHADER + background "ui/assets/framebutton.tga" + rect 260 400 120 26 + visible 0 + decoration + } + +itemDef { + name outcredit + group grpoutcredit + style WINDOW_STYLE_SHADER + background "ui/assets/leftbutton.tga" + rect 248 400 13 26 + visible 0 + decoration + } + +itemDef { + name outcredit + group grpoutcredit + style WINDOW_STYLE_SHADER + background "ui/assets/rightbutton.tga" + rect 379 400 13 26 + visible 0 + decoration + } + + + + + + +// BACK BAR // + + + itemDef { + name gotobar + style 2 + rect 0 430 640 30 + textscale 0.4 + textalign 0 // center + textalignx 60 // x alignment point for text + // use it to offset left/right text from the edge + // or to center the text on a different point + textaligny 21 + style 2 + border 4 + bordercolor 0.5 0.5 0.5 0.5 + bordersize 2 + backcolor 0 0 .75 0.5 + visible 1 + mouseEnter { setcolor backcolor .75 0 0 .5 } + mouseExit { setcolor backcolor 0 0 .75 .5 } + decoration + } + + itemDef { + name back + style 3 + background "ui/assets/backarrow.tga" + rect 16 424 50 50 + visible 1 + action { close credit ; open main } + mouseEnter { hide back ; show back_alt ; show message_back } + } + +itemDef { + name back_alt + style WINDOW_STYLE_SHADER + background "ui/assets/backarrow_alt.tga" + rect 14 422 54 54 + backcolor 0 0 0 0 + forecolor 1 1 1 1 + visible 0 + type ITEM_TYPE_BUTTON + mouseExit { hide back_alt ; show back ; hide message_back } + action { close credit ; open main } + } + + + +// MESSAGES // + +itemDef { + name message_back + group grpmessage + style 0 + rect 320 430 128 30 + textstyle 1 + textalign 1 + textalignx 0 + textaligny 25 + textscale .416 + text "Exit to Main Menu" + forecolor 1 1 1 1 + decoration + visible 0 + } + + +itemDef { + name fadebox + style WINDOW_STYLE_FILLED + background "ui/assets/fadebox.tga" + forecolor 0 0 0 1 + backcolor 0 0 0 1 + rect 0 0 640 480 + visible 1 + decoration + } + + + + + + +} + + +} + +} +} \ No newline at end of file diff --git a/ta_ui/default.menu b/ta_ui/default.menu new file mode 100644 index 00000000..c8edfe58 --- /dev/null +++ b/ta_ui/default.menu @@ -0,0 +1,255 @@ +#include "ui/menudef.h" + +{ +\\ DEFAULT MENU \\ + +menuDef { + name "default_menu" + visible 0 + fullscreen 0 + rect 186 0 443 426 + focusColor 1 .75 0 1 + style 1 + border 1 + onOpen { setitemcolor fadebox backcolor 0 0 0 1 ; + fadeout fadebox ; + show grpdefault ; + hide grpfinish } + onEsc { close default_menu ; close setup_menu ; open main } + + + + +itemDef { + name window + group grpControlbutton + rect 0 2 443 426 + style WINDOW_STYLE_FILLED + border 1 + bordercolor .5 .5 .5 .5 + forecolor 1 1 1 1 + backcolor 0 0 0 .25 + visible 1 + decoration +} + + + + + itemDef { + name default + group grpdefault + style 0 + text "This will set your Controls," + rect 0 140 443 20 + textalign ITEM_ALIGN_CENTER + textalignx 221 + textaligny 20 + textscale .333 + forecolor 1 1 1 1 + visible 1 + decoration + } + itemDef { + name default + group grpdefault + style 0 + text "Graphics and game Options" + rect 0 160 443 20 + textalign ITEM_ALIGN_CENTER + textalignx 221 + textaligny 20 + textscale .333 + forecolor 1 1 1 1 + visible 1 + decoration + } + itemDef { + name default + group grpdefault + style 0 + text "to their original defaults." + rect 0 180 443 20 + textalign ITEM_ALIGN_CENTER + textalignx 221 + textaligny 20 + textscale .333 + forecolor 1 1 1 1 + visible 1 + decoration + } + itemDef { + name default + group grpdefault + style 0 + text "Are you sure?" + rect 0 220 443 20 + textalign ITEM_ALIGN_CENTER + textalignx 221 + textaligny 20 + textscale .333 + forecolor 1 1 1 1 + visible 1 + decoration + } + + + + +itemDef { + name yes + text "YES" + group grpdefault + type 1 + textscale .3 + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + rect 135 250 70 26 + textalign 1 + textalignx 35 + textaligny 20 + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + visible 1 + action { play "sound/misc/nomenu.wav" ; + hide grpdefault ; + show grpfinish ; + uiScript resetDefaults } + mouseEnter { setitemcolor yes backcolor .1 .37 .1 1 } + mouseExit { setitemcolor yes backcolor .37 .1 .1 1 } + } + + itemDef { + name yes + group grpdefault + style WINDOW_STYLE_SHADER + background "ui/assets/framebutton.tga" + rect 135 250 70 26 + visible 1 + decoration + } + + itemDef { + name yes + group grpdefault + style WINDOW_STYLE_SHADER + background "ui/assets/leftbutton.tga" + rect 123 250 13 26 + visible 1 + decoration + } + + itemDef { + name yes + group grpdefault + style WINDOW_STYLE_SHADER + background "ui/assets/rightbutton.tga" + rect 204 250 13 26 + visible 1 + decoration + } + +itemDef { + name no + text "No" + group grpdefault + type 1 + textscale .3 + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + rect 235 250 70 26 + textalign 1 + textalignx 35 + textaligny 20 + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + visible 1 + action { play "sound/misc/nomenu.wav" ; + close default_menu ; open control_menu } + mouseEnter { setitemcolor no backcolor .1 .37 .1 1 } + mouseExit { setitemcolor no backcolor .37 .1 .1 1 } + } + + itemDef { + name no + group grpdefault + style WINDOW_STYLE_SHADER + background "ui/assets/framebutton.tga" + rect 235 250 70 26 + visible 1 + decoration + } + + itemDef { + name no + group grpdefault + style WINDOW_STYLE_SHADER + background "ui/assets/leftbutton.tga" + rect 223 250 13 26 + visible 1 + decoration + } + + itemDef { + name no + group grpdefault + style WINDOW_STYLE_SHADER + background "ui/assets/rightbutton.tga" + rect 304 250 13 26 + visible 1 + decoration + } + +itemDef { + name finish_message + group grpfinish + style 0 + text "Your settings are now set" + rect 0 160 443 20 + textalign ITEM_ALIGN_CENTER + textalignx 221 + textaligny 20 + textscale .333 + forecolor 1 1 1 1 + visible 0 + decoration + } + itemDef { + name finish_message + group grpfinish + style 0 + text "to their original default values." + rect 0 180 443 20 + textalign ITEM_ALIGN_CENTER + textalignx 221 + textaligny 20 + textscale .333 + forecolor 1 1 1 1 + visible 0 + decoration + } + + +itemDef { + name fadebox + style WINDOW_STYLE_FILLED + background "ui/assets/fadebox.tga" + forecolor 0 0 0 1 + backcolor 0 0 0 1 + rect 0 0 640 480 + visible 1 + decoration + } + + + + + + + + + + + + +} diff --git a/ta_ui/demo.menu b/ta_ui/demo.menu new file mode 100644 index 00000000..656f8a8c --- /dev/null +++ b/ta_ui/demo.menu @@ -0,0 +1,266 @@ +#include "ui/menudef.h" + +{ +\\ Fight \\ + + menuDef { + name "demo" + visible 0 + fullscreen 1 + rect 0 0 640 480 + background "menuback_a" + focusColor 1 .67 0 1 + style 1 + border 1 + onOpen { setitemcolor fadebox backcolor 0 0 0 1 ; + playlooped "music/fla_mp03.wav" ; + fadeout fadebox ; uiScript LoadDemos ; + hide lightning ; + hide accept_alt ; + show accept ; + hide back_alt ; + show back ; + hide grpmessage } + onEsc { close demo ; open main } + + + + + + + +// LEVEL SELECTION BAR // + + + itemDef { + name levelbar + style 2 + text "TEAM ARENA DEMOS" + rect 0 16 640 40 + textstyle 6 + textscale 0.416 + textalign 1 // center + textalignx 320 // x alignment point for text + // use it to offset left/right text from the edge + // or to center the text on a different point + textaligny 27 + forecolor 1 1 1 1 + style 2 + border 4 + bordercolor 0.5 0.5 0.5 0.5 + bordersize 2 + backcolor 0 0 .75 0.5 + visible 1 + decoration + } + + itemDef { + name teamarenaimage + style 3 + background "ui/assets/teamarenaimage.tga" + rect 0 80 220 115 + visible 1 + } + + +itemDef { + name mappreview + style 5 + cinematic "mpintro.roq" + rect 20 195 200 150 + backcolor 1 1 1 .25 + border 1 + bordersize 1 + bordercolor .5 .5 .5 1 + decoration + visible 1 + } + + +itemDef { + name demolist + rect 240 100 360 300 + type ITEM_TYPE_LISTBOX + style WINDOW_STYLE_FILLED + elementwidth 120 + elementheight 20 + textscale .25 + elementtype LISTBOX_TEXT + feeder FEEDER_DEMOS + textalign 3 + textaligny 14 + border 1 + bordercolor .5 .5 .5 .5 + forecolor 1 1 1 1 + backcolor 0 0 .5 .25 + outlinecolor .1 .1 .7 .5 + visible 1 + mouseEnter { fadein message_demos ; setitemcolor demolist bordercolor .7 0 0 1 } + mouseExit { fadeout message_demos ; setitemcolor demolist bordercolor .5 .5 .5 .5 } + } + + + + +// BACK BAR // + + + itemDef { + name gotobar + style 2 + rect 0 430 640 30 + textscale 0.4 + textalign 0 // center + textalignx 60 // x alignment point for text + // use it to offset left/right text from the edge + // or to center the text on a different point + textaligny 21 + style 2 + border 4 + bordercolor 0.5 0.5 0.5 0.5 + bordersize 2 + backcolor 0 0 .75 0.5 + visible 1 + mouseEnter { setcolor backcolor .75 0 0 .5 } + mouseExit { setcolor backcolor 0 0 .75 .5 } + decoration + } + + itemDef { + name back + style 3 + background "ui/assets/backarrow.tga" + rect 16 424 50 50 + visible 1 + action { close demo ; open main } + mouseEnter { hide back ; show back_alt ; fadein message_back } + } + +itemDef { + name back_alt + style WINDOW_STYLE_SHADER + background "ui/assets/backarrow_alt.tga" + rect 14 422 54 54 + backcolor 0 0 0 0 + forecolor 1 1 1 1 + visible 0 + type ITEM_TYPE_BUTTON + mouseExit { hide back_alt ; show back ; fadeout message_back } + action { close demo ; open main } + } + + + + +itemDef { + name accept + style 3 + rect 574 424 50 50 + background "ui/assets/forwardarrow.tga" + backcolor 0 0 0 0 + forecolor 1 1 1 1 + visible 1 + mouseEnter { show lightning ; hide accept ; show accept_alt ; show message_accept ; playlooped "sound/misc/loop_electricity_05.wav" } + action { close demo } + } + +itemDef { + name accept_alt + style 3 + rect 572 422 54 54 + background "ui/assets/forwardarrow_alt.tga" + backcolor 0 0 0 0 + forecolor 1 1 1 1 + visible 0 + type ITEM_TYPE_BUTTON + action { close demo ; uiScript RunDemo } + mouseExit { hide lightning ; hide accept_alt ; show accept ; hide message_accept ; playlooped "music/fla_mp03.wav" } + } + + itemDef { + name lightning + style 3 + background lightningkc + rect 44 385 246 128 + visible 0 + decoration + } +itemDef { + name lightning + style 3 + background lightningkc + rect 345 385 246 128 + visible 0 + decoration + } + + +// MESSAGES // + +itemDef { + name message_back + group grpmessage + style 0 + rect 320 430 128 30 + textstyle 1 + textalign 1 + textalignx 0 + textaligny 25 + textscale .4 + text "Exit to Main Menu" + forecolor 1 1 1 1 + decoration + visible 0 + } + +itemDef { + name message_accept + group grpmessage + style 0 + rect 320 430 128 30 + textalign 1 + textstyle 1 + textalignx 0 + textaligny 25 + textscale .4 + text "View Demo" + forecolor 1 1 1 1 + decoration + visible 0 + } +itemDef { + name message_demos + group grpmessage + style 0 + rect 320 430 128 30 + textalign 1 + textstyle 1 + textalignx 0 + textaligny 25 + textscale .4 + text "Select Recorded Game To View" + forecolor 1 1 1 1 + decoration + visible 0 + } + +itemDef { + name fadebox + style WINDOW_STYLE_FILLED + background "ui/assets/fadebox.tga" + forecolor 0 0 0 1 + backcolor 0 0 0 1 + rect 0 0 640 480 + visible 1 + decoration + } + + + +} + + +} + +} +} \ No newline at end of file diff --git a/ta_ui/demo_quit.menu b/ta_ui/demo_quit.menu new file mode 100644 index 00000000..d9298f32 --- /dev/null +++ b/ta_ui/demo_quit.menu @@ -0,0 +1,252 @@ +#include "ui/menudef.h" + +{ +\\ DEMO QUIT \\ + + menuDef { + name "demo_quit" + visible 0 + fullscreen 1 + rect 0 0 640 480 + background "menuback_a" + focusColor 1 .67 0 1 + style 1 + border 1 + onEsc { uiScript "quit" } + onOpen { setitemcolor fadebox backcolor 0 0 0 1 ; + fadeout fadebox } + + +itemDef { + name actionback + style WINDOW_STYLE_EMPTY + rect 0 0 640 480 + type 1 + visible 1 + action { play "sound/misc/nomenu.wav" ; + uiScript "quit" } + } + + +// LEVEL SELECTION BAR // + +itemDef { + name teamarenaart + group grpidcredit + style WINDOW_STYLE_SHADER + background "ui/assets/teamarenaimage2.tga" + rect 64 0 512 150 + visible 1 + decoration + } + + + + + +itemDef { + name demo + group grpidcredit + style 0 + rect 0 160 640 30 + textalign 1 + textalignx 320 + textaligny 10 + textscale .5 + text "" + forecolor 1 1 1 1 + decoration + visible 1 + } + +itemDef { + name artist + group grpidcredit + style 0 + rect 0 190 640 30 + textalign 1 + textalignx 320 + textaligny 10 + textscale .333 + text "Thanks for playing the Quake III: Team Arena DEMO." + forecolor 1 1 1 1 + decoration + visible 1 + } + + +itemDef { + name levelDesign + group grpidcredit + style 0 + rect 0 220 640 30 + textalign 1 + textalignx 320 + textaligny 10 + textscale .333 + text "For more information about Team Arena" + forecolor 1 1 1 1 + decoration + visible 1 + } + +itemDef { + name gameDesign + group grpidcredit + style 0 + rect 0 250 640 30 + textalign 1 + textalignx 320 + textaligny 10 + textscale .333 + text "check out the official Quake III website at" + forecolor 1 1 1 1 + decoration + visible 1 + } + +itemDef { + name ceo + group grpidcredit + style 0 + rect 0 280 640 30 + textalign 1 + textalignx 320 + textaligny 10 + textscale .333 + text "www.quake3world.com." + forecolor 1 1 1 1 + decoration + visible 1 + } + +itemDef { + name bizDev + group grpidcredit + style 0 + rect 0 310 640 30 + textalign 1 + textalignx 320 + textaligny 10 + textscale .35 + text "" + forecolor 1 1 1 1 + decoration + visible 1 + } + +itemDef { + name idMom + group grpidcredit + style 0 + rect 0 340 640 30 + textalign 1 + textalignx 320 + textaligny 10 + textscale .333 + text "Christmas 2000." + forecolor 1 1 1 1 + decoration + visible 1 + } + +itemDef { + name devAssist + group grpidcredit + style 0 + rect 0 380 640 30 + textalign 1 + textalignx 320 + textaligny 10 + textscale .333 + text "Full Version of Quake III is Required." + forecolor 1 1 1 1 + decoration + visible 1 + } + + +itemDef { + name exitbttn + group grpidcredit + rect 255 420 130 26 + type 1 + text "Click to Exit" + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + textalign 1 + textscale .25 + textalignx 65 + textaligny 20 + visible 1 + decoration + backcolor .37 .1 .1 1 + forecolor 1 1 1 1 + action { play "sound/misc/nomenu.wav" } + mouseEnter { setitemcolor exitbttn backcolor .1 .37 .1 1 } + mouseExit { setitemcolor exitbttn backcolor .37 .1 .1 1 } + } +itemDef { + name exitbttn + group grpidcredit + style WINDOW_STYLE_SHADER + background "ui/assets/framebutton.tga" + rect 255 420 130 26 + visible 1 + decoration + } + +itemDef { + name exitbttn + group grpidcredit + style WINDOW_STYLE_SHADER + background "ui/assets/leftbutton.tga" + rect 243 420 13 26 + visible 1 + decoration + } + +itemDef { + name exitbttn + group grpidcredit + style WINDOW_STYLE_SHADER + background "ui/assets/rightbutton.tga" + rect 384 420 13 26 + visible 1 + decoration + } + +itemDef { + name copyright + text "Quake III: Team Arena Copyright 2000 Id Software, Inc. All rights reserved" + style 0 + textscale .25 + rect 0 440 640 40 + textalign 1 + textaligny 32 + textalignx 320 + forecolor .75 0 0 .75 + visible 1 + decoration + } + + +itemDef { + name fadebox + style WINDOW_STYLE_FILLED + background "ui/assets/fadebox.tga" + forecolor 0 0 0 1 + backcolor 0 0 0 1 + rect 0 0 640 480 + visible 1 + decoration + } + + + + + +} + +} +} \ No newline at end of file diff --git a/ta_ui/endofgame.menu b/ta_ui/endofgame.menu new file mode 100644 index 00000000..201140fe --- /dev/null +++ b/ta_ui/endofgame.menu @@ -0,0 +1,1331 @@ +#include "ui/menudef.h" + +{ +\\ END OF GAME \\ + +menuDef { + name "endOfGame" + visible 0 + fullscreen 1 + rect 0 0 640 480 + backcolor 0 0 0 1 + background "menuback_a" + fadeClamp 1.0 // sets the fadeup alpha + fadeCycle 1 // how often fade happens in milliseconds + fadeAmount 0.05 + focusColor 1 .75 0 1 + onClose { uiScript updateSPMenu } + onESC { close endOfGame ; open skirmish } + onOpen { close ingame ; + play "sound/misc/kcswish.wav" ; + playlooped "music/win.wav" ; + setitemcolor fadebox backcolor 0 0 0 1 ; + transition mappreview 0 0 640 480 120 111 400 300 20 10 ; + transition playerlogo 250 160 160 160 110 30 80 80 20 10 ; + transition opposinglogo 250 160 160 160 450 30 80 80 20 10 ; + fadeout fadebox } + + + + + + +itemDef { + name window + rect 0 0 640 480 + style 1 + backcolor 0 0 0 0 + forecolor 0 0 0 0 + visible 1 + decoration + } +itemDef { + name menuback_e + style WINDOW_STYLE_SHADER + rect 0 163 640 155 + background "menuback_e" + visible 1 + decoration + } + + + +itemDef { + name menuback_b + style WINDOW_STYLE_SHADER + rect 0 163 640 155 + visible 1 + background "menuback_b" + bordercolor 0.5 0.5 0.5 .7 + decoration + } + +itemDef { + name mappreview + ownerdraw UI_MAPCINEMATIC + rect 120 111 400 300 + backcolor 1 1 1 1 + border 1 + bordercolor .5 .5 .5 1 + bordersize 1 + decoration + visible 1 + } + + + +itemDef { + name windowscreen + rect 0 0 640 240 + style 3 + background levelshotdetail + forecolor 0 0 0 0 + visible 1 + decoration + } +itemDef { + name windowscreen + rect 0 240 640 240 + style 3 + background levelshotdetail + forecolor 0 0 0 0 + visible 1 + decoration + } + + +itemDef { + name gametypebar + style 2 + rect 0 50 640 40 + textscale 0.4 + textalign 0 // center + textalignx 60 // x alignment point for text + // use it to offset left/right text from the edge + // or to center the text on a different point + textaligny 21 + style 2 + border 4 + bordercolor 0.5 0.5 0.5 0.5 + bordersize 2 + backcolor 0 0 .75 0.5 + visible 1 + decoration + } + + itemDef { + name opposingteamfield + text "GAME STATS" + rect 0 70 128 12 + textstyle 6 + textalign ITEM_ALIGN_CENTER + textalignx 320 + textaligny 12 + textscale .416 + forecolor 1 1 1 1 + decoration + visible 1 + } + + + + +itemDef { + name playerlogo + ownerdraw UI_PLAYERLOGO_METAL + rect 110 30 80 80 + visible 1 + forecolor 1 .7 .7 1 + decoration + } + +itemDef { + name opposinglogo + ownerdraw UI_OPPONENTLOGO_METAL + rect 450 30 80 80 + visible 1 + forecolor .7 .7 1 1 + decoration + } + + + + + + + + + + +// AWARDS TEAM GAME // + + +itemdef { + name medal_assist_team_shadow + rect 187 362 30 30 + style WINDOW_STYLE_SHADER + background "ui/assets/medal_assist.tga" + ownerdrawflag UI_SHOW_ANYTEAMGAME + forecolor 0 0 0 .5 + visible 1 + decoration + } + + +itemdef { + name medal_assist_team + rect 185 360 30 30 + type ITEM_TYPE_EDITFIELD + style WINDOW_STYLE_SHADER + background "ui/assets/medal_assist.tga" + cvar "ui_scoreAssists2" + ownerdrawflag UI_SHOW_ANYTEAMGAME + textscale .22 + textalign 1 + text "" + textalignx 15 + textaligny 40 + visible 1 + decoration + border 1 + bordersize 1 + bordercolor 1 1 1 0 + mouseenter { show message_assist } + mouseexit { hide message_assist } + } +itemdef { + name medal_accuracy_team_shadow + style WINDOW_STYLE_SHADER + rect 227 362 30 30 + forecolor 0 0 0 .5 + background "ui/assets/medal_accuracy.tga" + ownerdrawflag UI_SHOW_ANYTEAMGAME + visible 1 + decoration + } + +itemdef { + name medal_accuracy_team + style WINDOW_STYLE_SHADER + cvar "ui_scoreAccuracy2" + rect 225 360 30 30 + background "ui/assets/medal_accuracy.tga" + ownerdrawflag UI_SHOW_ANYTEAMGAME + visible 1 + decoration + type ITEM_TYPE_EDITFIELD + textalign 1 + text "" + textalignx 15 + textaligny 40 + border 1 + bordersize 1 + bordercolor 1 1 1 0 + textscale .22 + mouseenter { show message_accuracy } + mouseexit { hide message_accuracy } + } +itemdef { + name medal_excellent_team_shadow + style WINDOW_STYLE_SHADER + rect 267 362 30 30 + forecolor 0 0 0 .5 + background "ui/assets/medal_excellent.tga" + ownerdrawflag UI_SHOW_ANYTEAMGAME + visible 1 + decoration + } + +itemdef { + name medal_excellent_team + style WINDOW_STYLE_SHADER + cvar "ui_scoreExcellents2" + rect 265 360 30 30 + background "ui/assets/medal_excellent.tga" + ownerdrawflag UI_SHOW_ANYTEAMGAME + visible 1 + decoration + type ITEM_TYPE_EDITFIELD + textalign 1 + text "" + textalignx 15 + textaligny 40 + border 1 + bordersize 1 + bordercolor 1 1 1 0 + textscale .22 + mouseenter { show message_excellent } + mouseexit { hide message_excellent } + } + + + +itemdef { + name medal_gauntlet_team_shadow + style WINDOW_STYLE_SHADER + rect 307 362 30 30 + forecolor 0 0 0 .5 + background "ui/assets/medal_gauntlet.tga" + ownerdrawflag UI_SHOW_ANYTEAMGAME + visible 1 + decoration + } + +itemdef { + name medal_gauntlet_team + style WINDOW_STYLE_SHADER + cvar "ui_scoreGauntlets2" + rect 305 360 30 30 + background "ui/assets/medal_gauntlet.tga" + ownerdrawflag UI_SHOW_ANYTEAMGAME + visible 1 + decoration + type ITEM_TYPE_EDITFIELD + textalign 1 + text "" + textalignx 15 + textaligny 40 + border 1 + bordersize 1 + bordercolor 1 1 1 0 + textscale .22 + mouseenter { show message_gauntlet } + mouseexit { hide message_gauntlet } + } + + +itemdef { + name medal_impressive_team_shadow + style WINDOW_STYLE_SHADER + rect 347 362 30 30 + forecolor 0 0 0 .5 + background "ui/assets/medal_impressive.tga" + ownerdrawflag UI_SHOW_ANYTEAMGAME + visible 1 + decoration + } + + +itemdef { + name medal_impressive_team + style WINDOW_STYLE_SHADER + cvar "ui_scoreImpressives2" + rect 345 360 30 30 + background "ui/assets/medal_impressive.tga" + ownerdrawflag UI_SHOW_ANYTEAMGAME + visible 1 + decoration + type ITEM_TYPE_EDITFIELD + textalign 1 + text "" + textalignx 15 + textaligny 40 + border 1 + bordersize 1 + bordercolor 1 1 1 0 + textscale .22 + mouseenter { show message_impressive } + mouseexit { hide message_impressive } + } + + + +itemdef { + name medal_defend_team_shadow + style WINDOW_STYLE_SHADER + rect 387 362 30 30 + forecolor 0 0 0 .5 + background "ui/assets/medal_defend.tga" + ownerdrawflag UI_SHOW_ANYTEAMGAME + visible 1 + decoration + } + + +itemdef { + name medal_defend_team + style WINDOW_STYLE_SHADER + cvar "ui_scoreDefends2" + rect 385 360 30 30 + background "ui/assets/medal_defend.tga" + ownerdrawflag UI_SHOW_ANYTEAMGAME + visible 1 + decoration + type ITEM_TYPE_EDITFIELD + textalign 1 + text "" + textalignx 15 + textaligny 40 + border 1 + bordersize 1 + bordercolor 1 1 1 0 + textscale .22 + mouseenter { show message_defend } + mouseexit { hide message_defend } + } + + +itemdef { + name medal_capture_team_shadow + style WINDOW_STYLE_SHADER + rect 427 362 30 30 + forecolor 0 0 0 .5 + background "ui/assets/medal_capture.tga" + ownerdrawflag UI_SHOW_ANYTEAMGAME + visible 1 + decoration + } + + + +itemdef { + name medal_capture_team + style WINDOW_STYLE_SHADER + cvar "ui_scoreCaptures2" + rect 425 360 30 30 + background "ui/assets/medal_capture.tga" + ownerdrawflag UI_SHOW_ANYTEAMGAME + visible 1 + decoration + type ITEM_TYPE_EDITFIELD + textalign 1 + text "" + textalignx 15 + textaligny 40 + border 1 + bordersize 1 + bordercolor 1 1 1 0 + textscale .22 + mouseenter { show message_capture } + mouseexit { hide message_capture } + } + + + + + +// AWARDS NONTEAM GAME // + +itemdef { + name medal_perfect_nonteam_shadow + rect 232 362 30 30 + forecolor 0 0 0 .5 + style WINDOW_STYLE_SHADER + background "ui/assets/medal_perfect.tga" + ownerdrawflag UI_SHOW_ANYNONTEAMGAME + visible 1 + decoration + } + + + +itemdef { + name medal_perfect_nonteam + rect 230 360 30 30 + type ITEM_TYPE_EDITFIELD + style WINDOW_STYLE_SHADER + background "ui/assets/medal_perfect.tga" + cvar "ui_scorePerfect2" + ownerdrawflag UI_SHOW_ANYNONTEAMGAME + textscale .22 + textalign 1 + text "" + textalignx 15 + textaligny 40 + visible 1 + decoration + border 1 + bordersize 1 + bordercolor 1 1 1 0 + mouseenter { show message_perfect } + mouseexit { hide message_perfect } + } + +itemdef { + name medal_accuracy_nonteam_shadow + style WINDOW_STYLE_SHADER + rect 272 362 30 30 + forecolor 0 0 0 .5 + background "ui/assets/medal_accuracy.tga" + ownerdrawflag UI_SHOW_ANYNONTEAMGAME + visible 1 + decoration + } + +itemdef { + name medal_accuracy_nonteam + style WINDOW_STYLE_SHADER + cvar "ui_scoreAccuracy2" + rect 270 360 30 30 + background "ui/assets/medal_accuracy.tga" + ownerdrawflag UI_SHOW_ANYNONTEAMGAME + visible 1 + decoration + type ITEM_TYPE_EDITFIELD + textalign 1 + text "" + textalignx 15 + textaligny 40 + textscale .22 + border 1 + bordersize 1 + bordercolor 1 1 1 0 + mouseenter { show message_accuracy } + mouseexit { hide message_accuracy } + } + + +itemdef { + name medal_excellent_nonteam_shadow + style WINDOW_STYLE_SHADER + rect 312 362 30 30 + forecolor 0 0 0 .5 + background "ui/assets/medal_excellent.tga" + ownerdrawflag UI_SHOW_ANYNONTEAMGAME + visible 1 + decoration + } + + + +itemdef { + name medal_excellent_nonteam + style WINDOW_STYLE_SHADER + cvar "ui_scoreExcellents2" + rect 310 360 30 30 + background "ui/assets/medal_excellent.tga" + ownerdrawflag UI_SHOW_ANYNONTEAMGAME + visible 1 + decoration + type ITEM_TYPE_EDITFIELD + textalign 1 + text "" + textalignx 15 + textaligny 40 + textscale .22 + border 1 + bordersize 1 + bordercolor 1 1 1 0 + mouseenter { show message_excellent } + mouseexit { hide message_excellent } + } + +itemdef { + name medal_gauntlet_nonteam_shadow + style WINDOW_STYLE_SHADER + rect 352 362 30 30 + forecolor 0 0 0 .5 + background "ui/assets/medal_gauntlet.tga" + ownerdrawflag UI_SHOW_ANYNONTEAMGAME + visible 1 + decoration + } + + +itemdef { + name medal_gauntlet_nonteam + style WINDOW_STYLE_SHADER + cvar "ui_scoreGauntlets2" + rect 350 360 30 30 + background "ui/assets/medal_gauntlet.tga" + ownerdrawflag UI_SHOW_ANYNONTEAMGAME + visible 1 + decoration + type ITEM_TYPE_EDITFIELD + textalign 1 + text "" + textalignx 15 + textaligny 40 + textscale .22 + border 1 + bordersize 1 + bordercolor 1 1 1 0 + mouseenter { show message_gauntlet } + mouseexit { hide message_gauntlet } + } + + + +itemdef { + name medal_impressive_nonteam_shadow + style WINDOW_STYLE_SHADER + rect 392 362 30 30 + forecolor 0 0 0 .5 + background "ui/assets/medal_impressive.tga" + ownerdrawflag UI_SHOW_ANYNONTEAMGAME + visible 1 + decoration + } + + +itemdef { + name medal_impressive_nonteam + style WINDOW_STYLE_SHADER + cvar "ui_scoreImpressives2" + rect 390 360 30 30 + background "ui/assets/medal_impressive.tga" + ownerdrawflag UI_SHOW_ANYNONTEAMGAME + visible 1 + decoration + type ITEM_TYPE_EDITFIELD + textalign 1 + text "" + textalignx 15 + textaligny 40 + textscale .22 + border 1 + bordersize 1 + bordercolor 1 1 1 0 + mouseenter { show message_impressive } + mouseexit { hide message_impressive } + } + + + +// SOUND BUTTON // + + +itemdef { + name medal_assist_window + rect 183 358 34 34 + style WINDOW_STYLE_SHADER + background "ui/assets/medal_assist.tga" + ownerdrawflag UI_SHOW_ANYTEAMGAME + type 1 + border 1 + bordercolor .5 .5 .5 0 + forecolor 1 1 1 0 + backcolor 1 1 1 0 + visible 1 + mouseenter { setitemcolor medal_assist_team forecolor 0 0 0 0 ; setcolor forecolor 1 1 1 1 } + mouseexit { setitemcolor medal_assist_team forecolor 1 1 1 1 ; setcolor forecolor 1 1 1 0 } + action { exec "play sound/feedback/voc_menu_assist.wav" } + } + +itemdef { + name medal_accuracy_window + rect 223 358 34 34 + style WINDOW_STYLE_SHADER + background "ui/assets/medal_accuracy.tga" + ownerdrawflag UI_SHOW_ANYTEAMGAME + type 1 + border 1 + bordercolor .5 .5 .5 0 + forecolor 1 1 1 0 + backcolor 1 1 1 0 + visible 1 + mouseenter { setitemcolor medal_accuracy_team forecolor 0 0 0 0 ; setcolor forecolor 1 1 1 1 } + mouseexit { setitemcolor medal_accuracy_team forecolor 1 1 1 1 ; setcolor forecolor 1 1 1 0 } + action { exec "play sound/feedback/voc_menu_accuracy.wav" } + } +itemdef { + name medal_excellent_window + rect 263 358 34 34 + type 1 + style WINDOW_STYLE_SHADER + background "ui/assets/medal_excellent.tga" + ownerdrawflag UI_SHOW_ANYTEAMGAME + border 1 + bordercolor .5 .5 .5 0 + forecolor 1 1 1 0 + backcolor 1 1 1 0 + visible 1 + mouseenter { setitemcolor medal_excellent_team forecolor 0 0 0 0 ; setcolor forecolor 1 1 1 1 } + mouseexit { setitemcolor medal_excellent_team forecolor 1 1 1 1 ; setcolor forecolor 1 1 1 0 } + action { exec "play sound/feedback/voc_menu_excellent.wav" } + } +itemdef { + name medal_gauntlet_window + rect 303 358 34 34 + type 1 + style WINDOW_STYLE_SHADER + background "ui/assets/medal_gauntlet.tga" + ownerdrawflag UI_SHOW_ANYTEAMGAME + border 1 + bordercolor .5 .5 .5 0 + forecolor 1 1 1 0 + backcolor 1 1 1 0 + visible 1 + mouseenter { setitemcolor medal_gauntlet_team forecolor 0 0 0 0 ; setcolor forecolor 1 1 1 1 } + mouseexit { setitemcolor medal_gauntlet_team forecolor 1 1 1 1 ; setcolor forecolor 1 1 1 0 } + action { exec "play sound/feedback/voc_menu_gauntlet.wav" } + } +itemdef { + name medal_impressive_window + rect 343 358 34 34 + type 1 + style WINDOW_STYLE_SHADER + background "ui/assets/medal_impressive.tga" + ownerdrawflag UI_SHOW_ANYTEAMGAME + border 1 + bordercolor .5 .5 .5 0 + forecolor 1 1 1 0 + backcolor 1 1 1 0 + visible 1 + mouseenter { setitemcolor medal_impressive_team forecolor 0 0 0 0 ; setcolor forecolor 1 1 1 1 } + mouseexit { setitemcolor medal_impressive_team forecolor 1 1 1 1 ; setcolor forecolor 1 1 1 0 } + action { exec "play sound/feedback/voc_menu_impressive.wav" } + } +itemdef { + name medal_defend_window + rect 383 358 34 34 + type 1 + style WINDOW_STYLE_SHADER + background "ui/assets/medal_defend.tga" + ownerdrawflag UI_SHOW_ANYTEAMGAME + border 1 + bordercolor .5 .5 .5 0 + forecolor 1 1 1 0 + backcolor 1 1 1 0 + visible 1 + mouseenter { setitemcolor medal_defend_team forecolor 0 0 0 0 ; setcolor forecolor 1 1 1 1 } + mouseexit { setitemcolor medal_defend_team forecolor 1 1 1 1 ; setcolor forecolor 1 1 1 0 } + action { exec "play sound/feedback/voc_menu_defense.wav" } + } +itemdef { + name medal_capture_window + rect 423 358 34 34 + type 1 + style WINDOW_STYLE_SHADER + background "ui/assets/medal_capture.tga" + ownerdrawflag UI_SHOW_ANYTEAMGAME + border 1 + bordercolor .5 .5 .5 0 + forecolor 1 1 1 0 + backcolor 1 1 1 0 + visible 1 + mouseenter { setitemcolor medal_capture_team forecolor 0 0 0 0 ; setcolor forecolor 1 1 1 1 } + mouseexit { setitemcolor medal_capture_team forecolor 1 1 1 1 ; setcolor forecolor 1 1 1 0 } + action { exec "play sound/feedback/voc_menu_captures.wav" } + } + + + + + + + + +itemdef { + name medal_perfect_window + rect 228 358 34 34 + type 1 + style WINDOW_STYLE_SHADER + background "ui/assets/medal_perfect.tga" + ownerdrawflag UI_SHOW_ANYNONTEAMGAME + border 1 + bordercolor .5 .5 .5 0 + forecolor 1 1 1 0 + backcolor 1 1 1 0 + visible 1 + mouseenter { setitemcolor medal_perfect_nonteam forecolor 0 0 0 0 ; setcolor forecolor 1 1 1 1 } + mouseexit { setitemcolor medal_perfect_nonteam forecolor 1 1 1 1 ; setcolor forecolor 1 1 1 0 } + action { exec "play sound/feedback/perfect.wav" } + } + +itemdef { + name medal_accuracy_window + rect 268 358 34 34 + type 1 + style WINDOW_STYLE_SHADER + background "ui/assets/medal_accuracy.tga" + ownerdrawflag UI_SHOW_ANYNONTEAMGAME + border 1 + bordercolor .5 .5 .5 0 + forecolor 1 1 1 0 + backcolor 1 1 1 0 + visible 1 + mouseenter { setitemcolor medal_accuracy_nonteam forecolor 0 0 0 0 ; setcolor forecolor 1 1 1 1 } + mouseexit { setitemcolor medal_accuracy_nonteam forecolor 1 1 1 1 ; setcolor forecolor 1 1 1 0 } + action { exec "play sound/feedback/voc_menu_accuracy.wav" } + } + + + +itemdef { + name medal_excellent_window + rect 308 358 34 34 + type 1 + ownerdrawflag UI_SHOW_ANYNONTEAMGAME + style WINDOW_STYLE_SHADER + background "ui/assets/medal_excellent.tga" + border 1 + bordercolor .5 .5 .5 0 + forecolor 1 1 1 0 + backcolor 1 1 1 0 + visible 1 + mouseenter { setitemcolor medal_excellent_nonteam forecolor 0 0 0 0 ; setcolor forecolor 1 1 1 1 } + mouseexit { setitemcolor medal_excellent_nonteam forecolor 1 1 1 1 ; setcolor forecolor 1 1 1 0 } + action { exec "play sound/feedback/voc_menu_excellent.wav" } + } + + +itemdef { + name medal_gauntlet_window + rect 348 358 34 34 + type 1 + style WINDOW_STYLE_SHADER + background "ui/assets/medal_gauntlet.tga" + ownerdrawflag UI_SHOW_ANYNONTEAMGAME + border 1 + bordercolor .5 .5 .5 0 + forecolor 1 1 1 0 + backcolor 1 1 1 0 + visible 1 + mouseenter { setitemcolor medal_gauntlet_nonteam forecolor 0 0 0 0 ; setcolor forecolor 1 1 1 1 } + mouseexit { setitemcolor medal_gauntlet_nonteam forecolor 1 1 1 1 ; setcolor forecolor 1 1 1 0 } + action { exec "play sound/feedback/voc_menu_gauntlet.wav" } + } + + +itemdef { + name medal_impressive_window + rect 388 358 34 34 + type 1 + style WINDOW_STYLE_SHADER + background "ui/assets/medal_impressive.tga" + ownerdrawflag UI_SHOW_ANYNONTEAMGAME + border 1 + bordercolor .5 .5 .5 0 + forecolor 1 1 1 0 + backcolor 1 1 1 0 + visible 1 + mouseenter { setitemcolor medal_impressive_nonteam forecolor 0 0 0 0 ; setcolor forecolor 1 1 1 1 } + mouseexit { setitemcolor medal_impressive_nonteam forecolor 1 1 1 1 ; setcolor forecolor 1 1 1 0 } + action { exec "play sound/feedback/voc_menu_impressive.wav" } + } + + + + + +// SCORE // + + + // MAP SETTINGS // + + + + itemDef { + name mapname + type 4 + text "Map:" + cvar "ui_scoremap" + rect 0 140 128 12 + textstyle 3 + textalign ITEM_ALIGN_RIGHT + textalignx 320 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + decoration + visible 1 + } + + + + itemDef { + name normal + group grpsettings + type ITEM_TYPE_NUMERICFIELD + text "Frag limit:" + cvar "ui_fraglimit" + textstyle 3 + ownerdrawflag UI_SHOW_ANYNONTEAMGAME + rect 0 155 128 12 + textalign ITEM_ALIGN_RIGHT + textalignx 320 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 1 + decoration + } + + itemDef { + name normal + group grpsettings + type ITEM_TYPE_NUMERICFIELD + text "Capture limit:" + cvar "ui_capturelimit" + ownerdrawflag UI_SHOW_ANYTEAMGAME + rect 0 155 128 12 + textstyle 3 + textalign ITEM_ALIGN_RIGHT + textalignx 320 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 1 + decoration + } + + itemDef { + name normal + group grpsettings + ownerdraw UI_MAP_TIMETOBEAT + text "Time to Beat:" + rect 0 170 128 12 + textstyle 3 + textalign ITEM_ALIGN_RIGHT + textalignx 320 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 1 + decoration + } + itemDef { + name normal + group grpsettings + type ITEM_TYPE_NUMERICFIELD + text "Skill Multiplier:" + cvar "g_spSkill" + rect 0 185 128 12 + textstyle 3 + textalign ITEM_ALIGN_RIGHT + textalignx 320 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 1 + decoration + } +itemDef { + name recordDemo + type ITEM_TYPE_YESNO + text "Record Game:" + cvar "ui_recordSPDemo" + rect 0 200 640 12 + textalign ITEM_ALIGN_RIGHT + textalignx 320 + textstyle 3 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + forecolor 1 1 1 1 + visible 1 + action { } + } + + + + + + itemDef { + name normal + group grpsettings + type ITEM_TYPE_NUMERICFIELD + text "Game Score:" + cvar "ui_scoreTeam2" + rect 0 225 128 12 + textstyle 3 + textalign ITEM_ALIGN_RIGHT + textalignx 320 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 1 + decoration + } + itemDef { + name normal + group grpsettings + type ITEM_TYPE_NUMERICFIELD + text "Completion Time:" + cvar "ui_scoreTime2" + rect 0 240 128 12 + textstyle 3 + textalign ITEM_ALIGN_RIGHT + textalignx 320 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 1 + decoration + } + + itemDef { + name normal + group grpsettings + type ITEM_TYPE_NUMERICFIELD + text "Base Score:" + cvar "ui_scoreBase2" + rect 0 265 128 12 + textstyle 3 + textalign ITEM_ALIGN_RIGHT + textalignx 320 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 1 + decoration + mouseenter { } + mouseexit { } + } + + itemDef { + name normal + group grpsettings + type ITEM_TYPE_NUMERICFIELD + text "Time Bonus:" + cvar "ui_scoreTimeBonus2" + rect 0 280 128 12 + textstyle 3 + textalign ITEM_ALIGN_RIGHT + textalignx 320 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 1 + decoration + mouseenter { } + mouseexit { } + } +itemDef { + name normal + group grpsettings + type ITEM_TYPE_NUMERICFIELD + text "Shutout Bonus:" + cvar "ui_scoreShutoutBonus2" + rect 0 295 128 12 + textalign ITEM_ALIGN_RIGHT + textalignx 320 + textaligny 12 + textstyle 3 + textscale .25 + forecolor 1 1 1 1 + visible 1 + decoration + mouseenter { } + mouseexit { } + } +itemDef { + name normal + group grpsettings + type ITEM_TYPE_NUMERICFIELD + text "Skill Bonus:" + cvar "ui_scoreSkillBonus2" + rect 0 310 128 12 + textalign ITEM_ALIGN_RIGHT + textalignx 320 + textaligny 12 + textscale .25 + textstyle 3 + forecolor 1 1 1 1 + visible 1 + decoration + mouseenter { } + mouseexit { } + } +itemDef { + name normal + group grpsettings + type ITEM_TYPE_NUMERICFIELD + text "Total Score:" + cvar "ui_scoreScore2" + rect 0 325 128 12 + textalign ITEM_ALIGN_RIGHT + textalignx 320 + textaligny 12 + textscale .25 + textstyle 3 + forecolor 1 1 1 1 + visible 1 + decoration + mouseenter { } + mouseexit { } + } + + + + + +itemDef { + name level_info + group grplevelinfo2 + textstyle ITEM_TEXTSTYLE_BLINK + textscale .333 + text "New High Score" + textstyle 3 + rect 0 345 320 20 + ownerdrawflag UI_SHOW_NEWHIGHSCORE + textalign 1 + textalignx 320 // x alignment point for text + // use it to offset left/right text from the edge + // or to center the text on a different point + textaligny 12 + backcolor 0 0 0 0 + forecolor 1 0 0 1 + decoration + visible 1 + } + + +// BUTTON // + + +itemDef { + name replay + text "Replay" + type 1 + textscale .25 + group grpControlbutton + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + rect 178 430 45 26 + textalign 1 + textalignx 23 + textaligny 19 + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + visible 1 + action { play "sound/misc/nomenu.wav" ; + close endofgame ; + close skirmish ; + uiScript skirmishStart } + mouseEnter { setitemcolor replay backcolor .1 .37 .1 1 } + mouseExit { setitemcolor replay backcolor .37 .1 .1 1 } + } +itemDef { + name replay + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/framebutton.tga" + rect 178 430 45 26 + visible 1 + forecolor 1 1 1 1 + decoration + } + +itemDef { + name replay + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/leftbutton.tga" + rect 166 430 13 26 + visible 1 + forecolor 1 1 1 1 + decoration + } + +itemDef { + name replay + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/rightbutton.tga" + rect 221 430 13 26 + visible 1 + forecolor 1 1 1 1 + decoration + } +itemDef { + name demo + text "Demo" + type 1 + textscale .25 + group grpControlbutton + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + rect 257 430 45 26 + textalign 1 + textalignx 23 + textaligny 19 + forecolor .5 .5 .5 1 + backcolor .37 .1 .1 1 + decoration + visible 1 + } + +itemDef { + name demo + text "Demo" + type 1 + textscale .25 + group grpControlbutton + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + rect 257 430 45 26 + textalign 1 + textalignx 23 + textaligny 19 + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + visible 1 + ownerdrawflag UI_SHOW_DEMOAVAILABLE + action { play "sound/misc/nomenu.wav" ; + close endofgame ; + uiScript RunSPDemo } + mouseEnter { setitemcolor demo backcolor .1 .37 .1 1 } + mouseExit { setitemcolor demo backcolor .37 .1 .1 1 } + } +itemDef { + name demo + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/framebutton.tga" + rect 257 430 45 26 + visible 1 + forecolor 1 1 1 1 + decoration + } + +itemDef { + name demo + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/leftbutton.tga" + rect 245 430 13 26 + visible 1 + forecolor 1 1 1 1 + decoration + } + +itemDef { + name demo + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/rightbutton.tga" + rect 301 430 13 26 + forecolor 1 1 1 1 + visible 1 + decoration + } + + +itemDef { + name main + text "Menu" + type 1 + textscale .25 + group grpControlbutton + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + rect 338 430 45 26 + textalign 1 + textalignx 23 + textaligny 19 + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + visible 1 + action { play "sound/misc/nomenu.wav" ; + close endofgame ; + open skirmish } + mouseEnter { setitemcolor main backcolor .1 .37 .1 1 } + mouseExit { setitemcolor main backcolor .37 .1 .1 1 } + } + +itemDef { + name main + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/framebutton.tga" + rect 338 430 45 26 + visible 1 + forecolor 1 1 1 1 + decoration + } + +itemDef { + name main + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/leftbutton.tga" + rect 326 430 13 26 + forecolor 1 1 1 1 + visible 1 + decoration + } + +itemDef { + name main + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/rightbutton.tga" + rect 382 430 13 26 + forecolor 1 1 1 1 + visible 1 + decoration + } + +itemDef { + name next + text "Next" + type 1 + textscale .25 + group grpControlbutton + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + rect 419 430 45 26 + textalign 1 + textalignx 23 + textaligny 19 + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + visible 1 + action { play "sound/misc/nomenu.wav" ; + uiScript nextSkirmish ; + close endofgame } + mouseEnter { setitemcolor next backcolor .1 .37 .1 1 } + mouseExit { setitemcolor next backcolor .37 .1 .1 1 } + } + +itemDef { + name next + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/framebutton.tga" + rect 419 430 45 26 + visible 1 + forecolor 1 1 1 1 + decoration + } + +itemDef { + name next + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/leftbutton.tga" + rect 407 430 13 26 + forecolor 1 1 1 1 + visible 1 + decoration + } + +itemDef { + name next + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/rightbutton.tga" + rect 463 430 13 26 + forecolor 1 1 1 1 + visible 1 + decoration + } + +itemDef { + name fadebox + style WINDOW_STYLE_FILLED + background "ui/assets/fadebox.tga" + forecolor 0 0 0 1 + backcolor 0 0 0 .5 + rect 0 0 640 480 + visible 1 + decoration + } + + + + + +} + + +} + + diff --git a/ta_ui/endofgame2.menu b/ta_ui/endofgame2.menu new file mode 100644 index 00000000..56be6591 --- /dev/null +++ b/ta_ui/endofgame2.menu @@ -0,0 +1,1034 @@ +#include "ui/menudef.h" + +{ +\\ END OF GAME \\ + +menuDef { + name "endOfGame" + visible 0 + fullscreen 0 + rect 158 80 320 340 + focusColor 1 .75 0 1 + style 1 + border 1 + popup + onClose { uiScript updateSPMenu } + onESC { close endOfGame ; open skirmish } + exec "play music/win.wav" + +itemDef { + name window + rect 10 15 320 340 + style 1 + backcolor 0 0 0 .25 + forecolor 0 0 0 1 + visible 1 + decoration + } +itemDef { + name window + rect 10 15 310 330 + style 1 + backcolor 0 0 0 .5 + forecolor 0 0 0 1 + visible 1 + decoration + } + + + + +itemDef { + name window + rect 10 15 300 320 + style 1 + backcolor 0 0 0 1 + forecolor 0 0 0 1 + visible 1 + decoration + } + +// FRAME // + + +itemDef { + name window + rect 0 10 64 64 + style 3 + background "ui/assets/ingameleftcorner.tga" + visible 1 + decoration + } +itemDef { + name window + rect 64 10 64 8 + style 3 + background "ui/assets/ingametop.tga" + visible 1 + decoration + } +itemDef { + name window + rect 184 10 96 8 + style 3 + background "ui/assets/ingametop.tga" + visible 1 + decoration + } +itemDef { + name window + rect 256 10 64 64 + style 3 + background "ui/assets/ingamerightcorner.tga" + visible 1 + decoration + } +itemDef { + name window + rect 128 10 64 8 + style 3 + background "ui/assets/ingametop.tga" + visible 1 + decoration + } +itemDef { + name window + rect 0 274 64 64 + style 3 + background "ui/assets/ingameleftcornerb.tga" + visible 1 + decoration + } +itemDef { + name window + rect 256 274 64 64 + style 3 + background "ui/assets/ingamerightcornerb.tga" + visible 1 + decoration + } + +itemDef { + name window + rect 0 64 16 64 + style 3 + background "ui/assets/ingameleft.tga" + visible 1 + decoration + } + + +itemDef { + name window + rect 0 128 16 64 + style 3 + background "ui/assets/ingameleft.tga" + visible 1 + decoration + } + +itemDef { + name window + rect 0 192 16 96 + style 3 + background "ui/assets/ingameleft.tga" + visible 1 + decoration + } + +itemDef { + name window + rect 304 64 16 64 + style 3 + background "ui/assets/ingameright.tga" + visible 1 + decoration + } + + +itemDef { + name window + rect 304 128 16 64 + style 3 + background "ui/assets/ingameright.tga" + visible 1 + decoration + } + +itemDef { + name window + rect 304 192 16 96 + style 3 + background "ui/assets/ingameright.tga" + visible 1 + decoration + } + + + +itemDef { + name window + rect 64 330 64 8 + style 3 + background "ui/assets/ingamebottom.tga" + visible 1 + decoration + } +itemDef { + name window + rect 128 330 98 8 + style 3 + background "ui/assets/ingamebottom.tga" + visible 1 + decoration + } +itemDef { + name window + rect 172 330 98 8 + style 3 + background "ui/assets/ingamebottom.tga" + visible 1 + decoration + } + + + itemDef { + name teamarenaimage + style 3 + background "ui/assets/teamarenaimage.tga" + rect 70 20 180 90 + visible 1 + } + +itemDef { + name window + rect 20 81 280 40 + style 1 + backcolor 0 0 0 1 + forecolor 0 0 0 1 + visible 1 + decoration + } + + + +itemDef { + name playerlogo + ownerdraw UI_PLAYERLOGO_METAL + rect 20 25 60 60 + visible 1 + forecolor 1 .7 .7 1 + decoration + } + +itemDef { + name opposinglogo + ownerdraw UI_OPPONENTLOGO_METAL + rect 240 25 60 60 + visible 1 + forecolor .7 .7 1 1 + decoration +} + + + + + + + +// AWARDS TEAM GAME // + +itemdef { + name medal_assist_team + rect 25 250 30 30 + type ITEM_TYPE_EDITFIELD + style WINDOW_STYLE_SHADER + background "ui/assets/medal_assist.tga" + cvar "ui_scoreAssists" + ownerdrawflag UI_SHOW_ANYTEAMGAME + textscale .22 + textalign 1 + text "" + textalignx 15 + textaligny 40 + visible 1 + decoration + border 1 + bordersize 1 + bordercolor 1 1 1 0 + + } + + + +itemdef { + name medal_accuracy_team + style WINDOW_STYLE_SHADER + cvar "ui_scoreAccuracy" + rect 65 250 30 30 + background "ui/assets/medal_accuracy.tga" + ownerdrawflag UI_SHOW_ANYTEAMGAME + visible 1 + decoration + type ITEM_TYPE_EDITFIELD + textalign 1 + text "" + textalignx 15 + textaligny 40 + border 1 + bordersize 1 + bordercolor 1 1 1 0 + textscale .22 + } + + +itemdef { + name medal_excellent_team + style WINDOW_STYLE_SHADER + cvar "ui_scoreExcellents" + rect 105 250 30 30 + background "ui/assets/medal_excellent.tga" + ownerdrawflag UI_SHOW_ANYTEAMGAME + visible 1 + decoration + type ITEM_TYPE_EDITFIELD + textalign 1 + text "" + textalignx 15 + textaligny 40 + border 1 + bordersize 1 + bordercolor 1 1 1 0 + textscale .22 + } + + +itemdef { + name medal_gauntlet_team + style WINDOW_STYLE_SHADER + cvar "ui_scoreGauntlets" + rect 145 250 30 30 + background "ui/assets/medal_gauntlet.tga" + ownerdrawflag UI_SHOW_ANYTEAMGAME + visible 1 + decoration + type ITEM_TYPE_EDITFIELD + textalign 1 + text "" + textalignx 15 + textaligny 40 + border 1 + bordersize 1 + bordercolor 1 1 1 0 + textscale .22 + } + + +itemdef { + name medal_impressive_team + style WINDOW_STYLE_SHADER + cvar "ui_scoreImpressives" + rect 185 250 30 30 + background "ui/assets/medal_impressive.tga" + ownerdrawflag UI_SHOW_ANYTEAMGAME + visible 1 + decoration + type ITEM_TYPE_EDITFIELD + textalign 1 + text "" + textalignx 15 + textaligny 40 + border 1 + bordersize 1 + bordercolor 1 1 1 0 + textscale .22 + } + +itemdef { + name medal_defend_team + style WINDOW_STYLE_SHADER + cvar "ui_scoreDefends" + rect 225 250 30 30 + background "ui/assets/medal_defend.tga" + ownerdrawflag UI_SHOW_ANYTEAMGAME + visible 1 + decoration + type ITEM_TYPE_EDITFIELD + textalign 1 + text "" + textalignx 15 + textaligny 40 + border 1 + bordersize 1 + bordercolor 1 1 1 0 + textscale .22 + } + +itemdef { + name medal_capture_team + style WINDOW_STYLE_SHADER + cvar "ui_scoreCaptures" + rect 265 250 30 30 + background "ui/assets/medal_capture.tga" + ownerdrawflag UI_SHOW_ANYTEAMGAME + visible 1 + decoration + type ITEM_TYPE_EDITFIELD + textalign 1 + text "" + textalignx 15 + textaligny 40 + border 1 + bordersize 1 + bordercolor 1 1 1 0 + textscale .22 + } + + + + + +// AWARDS NONTEAM GAME // + + +itemdef { + name medal_perfect_nonteam + rect 60 250 30 30 + type ITEM_TYPE_EDITFIELD + style WINDOW_STYLE_SHADER + background "ui/assets/medal_perfect.tga" + cvar "ui_scorePerfect" + ownerdrawflag UI_SHOW_ANYNONTEAMGAME + textscale .22 + textalign 1 + text "" + textalignx 15 + textaligny 40 + visible 1 + decoration + border 1 + bordersize 1 + } + +itemdef { + name medal_accuracy_nonteam + style WINDOW_STYLE_SHADER + cvar "ui_scoreAccuracy" + rect 100 250 30 30 + background "ui/assets/medal_accuracy.tga" + ownerdrawflag UI_SHOW_ANYNONTEAMGAME + visible 1 + decoration + type ITEM_TYPE_EDITFIELD + textalign 1 + text "" + textalignx 15 + textaligny 40 + textscale .22 + border 1 + bordersize 1 + bordercolor 1 1 1 0 + } + + +itemdef { + name medal_excellent_nonteam + style WINDOW_STYLE_SHADER + cvar "ui_scoreExcellents" + rect 140 250 30 30 + background "ui/assets/medal_excellent.tga" + ownerdrawflag UI_SHOW_ANYNONTEAMGAME + visible 1 + decoration + type ITEM_TYPE_EDITFIELD + textalign 1 + text "" + textalignx 15 + textaligny 40 + textscale .22 + border 1 + bordersize 1 + bordercolor 1 1 1 0 + } + + + + +itemdef { + name medal_gauntlet_nonteam + style WINDOW_STYLE_SHADER + cvar "ui_scoreGauntlets" + rect 180 250 30 30 + background "ui/assets/medal_gauntlet.tga" + ownerdrawflag UI_SHOW_ANYNONTEAMGAME + visible 1 + decoration + type ITEM_TYPE_EDITFIELD + textalign 1 + text "" + textalignx 15 + textaligny 40 + textscale .22 + border 1 + bordersize 1 + bordercolor 1 1 1 0 + } + + +itemdef { + name medal_impressive_nonteam + style WINDOW_STYLE_SHADER + cvar "ui_scoreImpressives" + rect 220 250 30 30 + background "ui/assets/medal_impressive.tga" + ownerdrawflag UI_SHOW_ANYNONTEAMGAME + visible 1 + decoration + type ITEM_TYPE_EDITFIELD + textalign 1 + text "" + textalignx 15 + textaligny 40 + textscale .22 + border 1 + bordersize 1 + bordercolor 1 1 1 0 + } + + +// SOUND BUTTON // + + +itemdef { + name medal_assist_window + rect 23 248 34 34 + style WINDOW_STYLE_SHADER + background "ui/assets/medal_assist.tga" + ownerdrawflag UI_SHOW_ANYTEAMGAME + type 1 + border 1 + bordercolor .5 .5 .5 0 + forecolor 1 1 1 0 + backcolor 1 1 1 0 + visible 1 + mouseenter { setitemcolor medal_assist_team forecolor 0 0 0 0 ; setcolor forecolor 1 1 1 1 } + mouseexit { setitemcolor medal_assist_team forecolor 1 1 1 1 ; setcolor forecolor 1 1 1 0 } + action { exec "play sound/feedback/assist.wav" } + } + +itemdef { + name medal_accuracy_window + rect 63 248 34 34 + style WINDOW_STYLE_SHADER + background "ui/assets/medal_accuracy.tga" + ownerdrawflag UI_SHOW_ANYTEAMGAME + type 1 + border 1 + bordercolor .5 .5 .5 0 + forecolor 1 1 1 0 + backcolor 1 1 1 0 + visible 1 + mouseenter { setitemcolor medal_accuracy_team forecolor 0 0 0 0 ; setcolor forecolor 1 1 1 1 } + mouseexit { setitemcolor medal_accuracy_team forecolor 1 1 1 1 ; setcolor forecolor 1 1 1 0 } + action { exec "play sound/feedback/accuracy.wav" } + } +itemdef { + name medal_excellent_window + rect 103 248 34 34 + type 1 + style WINDOW_STYLE_SHADER + background "ui/assets/medal_excellent.tga" + ownerdrawflag UI_SHOW_ANYTEAMGAME + border 1 + bordercolor .5 .5 .5 0 + forecolor 1 1 1 0 + backcolor 1 1 1 0 + visible 1 + mouseenter { setitemcolor medal_excellent_team forecolor 0 0 0 0 ; setcolor forecolor 1 1 1 1 } + mouseexit { setitemcolor medal_excellent_team forecolor 1 1 1 1 ; setcolor forecolor 1 1 1 0 } + action { exec "play sound/feedback/excellent.wav" } + } +itemdef { + name medal_gauntlet_window + rect 143 248 34 34 + type 1 + style WINDOW_STYLE_SHADER + background "ui/assets/medal_gauntlet.tga" + ownerdrawflag UI_SHOW_ANYTEAMGAME + border 1 + bordercolor .5 .5 .5 0 + forecolor 1 1 1 0 + backcolor 1 1 1 0 + visible 1 + mouseenter { setitemcolor medal_gauntlet_team forecolor 0 0 0 0 ; setcolor forecolor 1 1 1 1 } + mouseexit { setitemcolor medal_gauntlet_team forecolor 1 1 1 1 ; setcolor forecolor 1 1 1 0 } + action { exec "play sound/feedback/gauntlet.wav" } + } +itemdef { + name medal_impressive_window + rect 183 248 34 34 + type 1 + style WINDOW_STYLE_SHADER + background "ui/assets/medal_impressive.tga" + ownerdrawflag UI_SHOW_ANYTEAMGAME + border 1 + bordercolor .5 .5 .5 0 + forecolor 1 1 1 0 + backcolor 1 1 1 0 + visible 1 + mouseenter { setitemcolor medal_impressive_team forecolor 0 0 0 0 ; setcolor forecolor 1 1 1 1 } + mouseexit { setitemcolor medal_impressive_team forecolor 1 1 1 1 ; setcolor forecolor 1 1 1 0 } + action { exec "play sound/feedback/impressive.wav" } + } +itemdef { + name medal_defend_window + rect 223 248 34 34 + type 1 + style WINDOW_STYLE_SHADER + background "ui/assets/medal_defend.tga" + ownerdrawflag UI_SHOW_ANYTEAMGAME + border 1 + bordercolor .5 .5 .5 0 + forecolor 1 1 1 0 + backcolor 1 1 1 0 + visible 1 + mouseenter { setitemcolor medal_defend_team forecolor 0 0 0 0 ; setcolor forecolor 1 1 1 1 } + mouseexit { setitemcolor medal_defend_team forecolor 1 1 1 1 ; setcolor forecolor 1 1 1 0 } + action { exec "play sound/feedback/defense.wav" } + } +itemdef { + name medal_capture_window + rect 263 248 34 34 + type 1 + style WINDOW_STYLE_SHADER + background "ui/assets/medal_capture.tga" + ownerdrawflag UI_SHOW_ANYTEAMGAME + border 1 + bordercolor .5 .5 .5 0 + forecolor 1 1 1 0 + backcolor 1 1 1 0 + visible 1 + mouseenter { setitemcolor medal_capture_team forecolor 0 0 0 0 ; setcolor forecolor 1 1 1 1 } + mouseexit { setitemcolor medal_capture_team forecolor 1 1 1 1 ; setcolor forecolor 1 1 1 0 } + action { exec "play sound/feedback/voc_captures.wav" } + } + + + + + + + +itemdef { + name medal_perfect_window + rect 58 248 34 34 + type 1 + style WINDOW_STYLE_SHADER + background "ui/assets/medal_perfect.tga" + ownerdrawflag UI_SHOW_ANYNONTEAMGAME + border 1 + bordercolor .5 .5 .5 0 + forecolor 1 1 1 0 + backcolor 1 1 1 0 + visible 1 + mouseenter { setitemcolor medal_perfect_nonteam forecolor 0 0 0 0 ; setcolor forecolor 1 1 1 1 } + mouseexit { setitemcolor medal_perfect_nonteam forecolor 1 1 1 1 ; setcolor forecolor 1 1 1 0 } + action { exec "play sound/feedback/perfect.wav" } + } + +itemdef { + name medal_accuracy_window + rect 98 248 34 34 + type 1 + style WINDOW_STYLE_SHADER + background "ui/assets/medal_accuracy.tga" + ownerdrawflag UI_SHOW_ANYNONTEAMGAME + border 1 + bordercolor .5 .5 .5 0 + forecolor 1 1 1 0 + backcolor 1 1 1 0 + visible 1 + mouseenter { setitemcolor medal_accuracy_nonteam forecolor 0 0 0 0 ; setcolor forecolor 1 1 1 1 } + mouseexit { setitemcolor medal_accuracy_nonteam forecolor 1 1 1 1 ; setcolor forecolor 1 1 1 0 } + action { exec "play sound/feedback/accuracy.wav" } + } + + + +itemdef { + name medal_excellent_window + rect 138 248 34 34 + type 1 + ownerdrawflag UI_SHOW_ANYNONTEAMGAME + style WINDOW_STYLE_SHADER + background "ui/assets/medal_excellent.tga" + border 1 + bordercolor .5 .5 .5 0 + forecolor 1 1 1 0 + backcolor 1 1 1 0 + visible 1 + mouseenter { setitemcolor medal_excellent_nonteam forecolor 0 0 0 0 ; setcolor forecolor 1 1 1 1 } + mouseexit { setitemcolor medal_excellent_nonteam forecolor 1 1 1 1 ; setcolor forecolor 1 1 1 0 } + action { exec "play sound/feedback/excellent.wav" } + } + + +itemdef { + name medal_gauntlet_window + rect 178 248 34 34 + type 1 + style WINDOW_STYLE_SHADER + background "ui/assets/medal_gauntlet.tga" + ownerdrawflag UI_SHOW_ANYNONTEAMGAME + border 1 + bordercolor .5 .5 .5 0 + forecolor 1 1 1 0 + backcolor 1 1 1 0 + visible 1 + mouseenter { setitemcolor medal_gauntlet_nonteam forecolor 0 0 0 0 ; setcolor forecolor 1 1 1 1 } + mouseexit { setitemcolor medal_gauntlet_nonteam forecolor 1 1 1 1 ; setcolor forecolor 1 1 1 0 } + action { exec "play sound/feedback/gauntlet.wav" } + } + + +itemdef { + name medal_impressive_window + rect 218 248 34 34 + type 1 + style WINDOW_STYLE_SHADER + background "ui/assets/medal_impressive.tga" + ownerdrawflag UI_SHOW_ANYNONTEAMGAME + border 1 + bordercolor .5 .5 .5 0 + forecolor 1 1 1 0 + backcolor 1 1 1 0 + visible 1 + mouseenter { setitemcolor medal_impressive_nonteam forecolor 0 0 0 0 ; setcolor forecolor 1 1 1 1 } + mouseexit { setitemcolor medal_impressive_nonteam forecolor 1 1 1 1 ; setcolor forecolor 1 1 1 0 } + action { exec "play sound/feedback/impressive.wav" } + } + + + + +// SCORE // + + + itemDef { + name normal + group grpsettings + type ITEM_TYPE_NUMERICFIELD + text "Game Score:" + cvar "ui_scoreTeam" + rect 160 95 128 12 + textalign ITEM_ALIGN_RIGHT + textalignx 0 + textaligny 12 + textscale .3 + forecolor 1 1 1 1 + visible 1 + decoration + } + itemDef { + name normal + group grpsettings + type ITEM_TYPE_NUMERICFIELD + text "Completion Time:" + cvar "ui_scoreTime" + rect 160 115 128 12 + textalign ITEM_ALIGN_RIGHT + textalignx 0 + textaligny 12 + textscale .3 + forecolor 1 1 1 1 + visible 1 + decoration + } + + itemDef { + name normal + group grpsettings + type ITEM_TYPE_NUMERICFIELD + text "Base Score:" + cvar "ui_scoreBase" + rect 160 135 128 12 + textalign ITEM_ALIGN_RIGHT + textalignx 0 + textaligny 12 + textscale .3 + forecolor 1 1 1 1 + visible 1 + decoration + mouseenter { } + mouseexit { } + } + + itemDef { + name normal + group grpsettings + type ITEM_TYPE_NUMERICFIELD + text "Time Bonus:" + cvar "ui_scoreTimeBonus" + rect 160 155 128 12 + textalign ITEM_ALIGN_RIGHT + textalignx 0 + textaligny 12 + textscale .3 + forecolor 1 1 1 1 + visible 1 + decoration + mouseenter { } + mouseexit { } + } +itemDef { + name normal + group grpsettings + type ITEM_TYPE_NUMERICFIELD + text "Shutout Bonus:" + cvar "ui_scoreShutoutBonus" + rect 160 175 128 12 + textalign ITEM_ALIGN_RIGHT + textalignx 0 + textaligny 12 + textscale .3 + forecolor 1 1 1 1 + visible 1 + decoration + mouseenter { } + mouseexit { } + } +itemDef { + name normal + group grpsettings + type ITEM_TYPE_NUMERICFIELD + text "Skill Bonus:" + cvar "ui_scoreSkillBonus" + rect 160 195 128 12 + textalign ITEM_ALIGN_RIGHT + textalignx 0 + textaligny 12 + textscale .3 + forecolor 1 1 1 1 + visible 1 + decoration + mouseenter { } + mouseexit { } + } + +itemDef { + name normal + group grpsettings + type ITEM_TYPE_NUMERICFIELD + text "Total Score:" + cvar "ui_scoreScore" + rect 160 215 128 12 + textalign ITEM_ALIGN_RIGHT + textalignx 0 + textaligny 12 + textscale .3 + forecolor 1 1 1 1 + visible 1 + decoration + mouseenter { } + mouseexit { } + } + +itemDef { + name level_info + group grplevelinfo2 + textstyle ITEM_TEXTSTYLE_BLINK + textscale .3 + text "New High Score" + rect 0 235 320 20 + ownerdrawflag UI_SHOW_NEWHIGHSCORE + textalign 1 + textalignx 160 // x alignment point for text + // use it to offset left/right text from the edge + // or to center the text on a different point + textaligny 12 + backcolor 0 0 0 0 + forecolor 1 0 0 1 + decoration + visible 1 + } + + +// BUTTON // + + +itemDef { + name replay + text "Replay" + type 1 + textscale .25 + group grpControlbutton + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + rect 57 305 45 26 + textalign 1 + textalignx 22 + textaligny 20 + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + visible 1 + action { close endofgame ; close skirmish ; uiScript skirmishStart } + mouseEnter { setitemcolor replay backcolor .1 .37 .1 1 } + mouseExit { setitemcolor replay backcolor .37 .1 .1 1 } + } +itemDef { + name replay + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/framebutton.tga" + rect 57 305 45 26 + visible 1 + forecolor .5 .5 .5 1 + decoration + } + +itemDef { + name replay + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/leftbutton.tga" + rect 45 305 13 26 + visible 1 + forecolor .5 .5 .5 1 + decoration + } + +itemDef { + name replay + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/rightbutton.tga" + rect 101 305 13 26 + visible 1 + forecolor .5 .5 .5 1 + decoration + } + + +itemDef { + name demo + text "Demo" + type 1 + textscale .25 + group grpControlbutton + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + rect 136 305 45 26 + textalign 1 + textalignx 22 + textaligny 20 + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + visible 1 + ownerdrawflag UI_SHOW_DEMOAVAILABLE + action { close endofgame ; uiScript RunSPDemo } + mouseEnter { setitemcolor demo backcolor .1 .37 .1 1 } + mouseExit { setitemcolor demo backcolor .37 .1 .1 1 } + } +itemDef { + name demo + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/framebutton.tga" + rect 136 305 45 26 + visible 1 + forecolor .5 .5 .5 1 + ownerdrawflag UI_SHOW_DEMOAVAILABLE + decoration + } + +itemDef { + name demo + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/leftbutton.tga" + rect 124 305 13 26 + visible 1 + forecolor .5 .5 .5 1 + ownerdrawflag UI_SHOW_DEMOAVAILABLE + decoration + } + +itemDef { + name demo + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/rightbutton.tga" + rect 180 305 13 26 + forecolor .5 .5 .5 1 + visible 1 + ownerdrawflag UI_SHOW_DEMOAVAILABLE + decoration + } + + +itemDef { + name main + text "Esc" + type 1 + textscale .25 + group grpControlbutton + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + rect 217 305 45 26 + textalign 1 + textalignx 22 + textaligny 20 + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + visible 1 + action { close endofgame ; open skirmish } + mouseEnter { setitemcolor main backcolor .1 .37 .1 1 } + mouseExit { setitemcolor main backcolor .37 .1 .1 1 } + } + +itemDef { + name main + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/framebutton.tga" + rect 217 305 45 26 + visible 1 + forecolor .5 .5 .5 1 + decoration + } + +itemDef { + name main + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/leftbutton.tga" + rect 205 305 13 26 + forecolor .5 .5 .5 1 + visible 1 + decoration + } + +itemDef { + name main + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/rightbutton.tga" + rect 261 305 13 26 + forecolor .5 .5 .5 1 + visible 1 + decoration + } + + + + + +} + + +} + + diff --git a/ta_ui/error.menu b/ta_ui/error.menu new file mode 100644 index 00000000..ed987e8d --- /dev/null +++ b/ta_ui/error.menu @@ -0,0 +1,318 @@ +#include "ui/menudef.h" + +{ +\\ END OF GAME \\ + +menuDef { + name "error_popmenu" + visible 0 + fullscreen 0 + rect 158 80 320 320 + focusColor 1 .75 0 1 + style 1 + border 1 + popup + onClose { uiScript clearError } + onOpen { } + onESC { close error_popmenu ; open main } + + + +itemDef { + name window + rect 10 15 300 320 + style 1 + backcolor .8 .66 .15 1 + forecolor 0 0 0 1 + visible 1 + decoration + } + +itemDef { + name window + rect 10 15 300 320 + style 3 + background "warning" + forecolor 0 0 0 1 + visible 1 + decoration + } +itemDef { + name window + rect 10 15 300 10 + style 1 + backcolor 0 0 0 .25 + forecolor 0 0 0 1 + visible 1 + decoration + } + + +itemDef { + name window + rect 30 35 250 270 + style 1 + backcolor .5 .41 .09 1 + forecolor 0 0 0 1 + border 1 + bordercolor 0 0 0 1 + bordersize 5 + visible 1 + decoration + } + +// FRAME // + + +itemDef { + name window + rect 0 10 64 64 + style 3 + background "ui/assets/ingameleftcorner.tga" + visible 1 + decoration + } +itemDef { + name window + rect 64 10 64 8 + style 3 + background "ui/assets/ingametop.tga" + visible 1 + decoration + } +itemDef { + name window + rect 184 10 96 8 + style 3 + background "ui/assets/ingametop.tga" + visible 1 + decoration + } +itemDef { + name window + rect 256 10 64 64 + style 3 + background "ui/assets/ingamerightcorner.tga" + visible 1 + decoration + } +itemDef { + name window + rect 128 10 64 8 + style 3 + background "ui/assets/ingametop.tga" + visible 1 + decoration + } +itemDef { + name window + rect 0 274 64 64 + style 3 + background "ui/assets/ingameleftcornerb.tga" + visible 1 + decoration + } +itemDef { + name window + rect 256 274 64 64 + style 3 + background "ui/assets/ingamerightcornerb.tga" + visible 1 + decoration + } + +itemDef { + name window + rect 0 64 16 64 + style 3 + background "ui/assets/ingameleft.tga" + visible 1 + decoration + } + + +itemDef { + name window + rect 0 128 16 64 + style 3 + background "ui/assets/ingameleft.tga" + visible 1 + decoration + } + +itemDef { + name window + rect 0 192 16 96 + style 3 + background "ui/assets/ingameleft.tga" + visible 1 + decoration + } + +itemDef { + name window + rect 304 64 16 64 + style 3 + background "ui/assets/ingameright.tga" + visible 1 + decoration + } + + +itemDef { + name window + rect 304 128 16 64 + style 3 + background "ui/assets/ingameright.tga" + visible 1 + decoration + } + +itemDef { + name window + rect 304 192 16 96 + style 3 + background "ui/assets/ingameright.tga" + visible 1 + decoration + } + + + +itemDef { + name window + rect 64 330 64 8 + style 3 + background "ui/assets/ingamebottom.tga" + visible 1 + decoration + } +itemDef { + name window + rect 128 330 98 8 + style 3 + background "ui/assets/ingamebottom.tga" + visible 1 + decoration + } +itemDef { + name window + rect 172 330 98 8 + style 3 + background "ui/assets/ingamebottom.tga" + visible 1 + decoration + } + + + + + itemDef { + name errorinfo + rect 0 50 320 20 + text "Error:" + textalign 1 + textstyle 6 + textscale .333 + textalignx 160 + textaligny 23 + forecolor 1 1 1 1 + visible 1 + decoration + } + + itemDef { + name errorinfo + rect 60 80 200 270 + type ITEM_TYPE_TEXT + style 1 + textstyle 3 + autowrapped + cvar "com_errorMessage" + textalign ITEM_ALIGN_CENTER + textalignx 100 + textaligny 23 + textscale .25 + forecolor 1 1 1 1 + visible 1 + decoration + } + + + + + + + + + +// BUTTON // + + +itemDef { + name exit + text "Exit" + type 1 + textscale .25 + group grpControlbutton + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + rect 138 295 45 26 + textalign 1 + textalignx 22 + textaligny 20 + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + visible 1 + action { play "sound/misc/nomenu.wav" ; + close error_popmenu ; + open main } + mouseEnter { setitemcolor exit backcolor .1 .37 .1 1 } + mouseExit { setitemcolor exit backcolor .37 .1 .1 1 } + } +itemDef { + name exit + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/framebutton.tga" + rect 138 295 45 26 + visible 1 + forecolor 1 1 1 1 + decoration + } + +itemDef { + name exit + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/leftbutton.tga" + rect 126 295 13 26 + visible 1 + forecolor 1 1 1 1 + decoration + } + +itemDef { + name exit + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/rightbutton.tga" + rect 182 295 13 26 + visible 1 + forecolor 1 1 1 1 + decoration + } + + + + + + + +} + + +} + + diff --git a/ta_ui/fight.menu b/ta_ui/fight.menu new file mode 100644 index 00000000..9851818b --- /dev/null +++ b/ta_ui/fight.menu @@ -0,0 +1,770 @@ +#include "ui/menudef.h" + +{ +\\ Fight \\ + + menuDef { + name "fight" + visible 0 + fullscreen 1 + rect 0 0 640 480 + background uibackground4 + focusColor 1 .67 0 1 + style 1 + border 1 + + itemDef { + name fight + style WINDOW_STYLE_SHADER + rect 0 45 512 128 + visible 1 + background "fight" + decoration + } + + + itemDef { + name leftgrad + style WINDOW_STYLE_SHADER + background "ui/assets/halfgradleft.tga" + rect 64 249 256 102 + forecolor .75 0 0 0.5 + visible 1 + decoration + } + +itemDef { + name rightgrad + style WINDOW_STYLE_SHADER + background "ui/assets/halfgradright.tga" + rect 320 249 256 102 + forecolor 0 0 .75 0.5 + visible 1 + decoration + } + + + itemDef { + name leftvertgrad + style WINDOW_STYLE_SHADER + background "ui/assets/verticalgradient.tga" + rect 16 249 128 102 + forecolor .75 0 0 0.5 + visible 1 + decoration + } + + itemDef { + name rightvertgrad + style WINDOW_STYLE_SHADER + background "ui/assets/verticalgradient.tga" + rect 496 249 128 102 + forecolor 0 0 .75 0.5 + textscale 0.4 + visible 1 + decoration + } + + + + + + + + +// LEVEL SELECTION BAR // + + +// GAMETYPE BAR // + + +itemDef { + name gametypebar + style 2 + rect 0 5 640 40 + textscale 0.4 + textalign 0 // center + textalignx 60 // x alignment point for text + // use it to offset left/right text from the edge + // or to center the text on a different point + textaligny 21 + style 2 + border 4 + bordercolor 0.5 0.5 0.5 0.5 + bordersize 2 + backcolor 0 0 .75 0.5 + visible 1 + mouseEnter { setcolor backcolor .75 0 0 .5 } + mouseExit { setcolor backcolor 0 0 .75 .5 } + decoration +} + + +itemDef { + name gametypefield + style 0 + name tier + ownerdraw UI_TIER + rect 0 10 320 31 + textalign ITEM_ALIGN_LEFT + textalignx 20 + textaligny 26 + textscale .4 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 1 + mouseEnter { fadein message_tier } + mouseExit { fadeout message_tier } + } + +itemDef { + name gametypefield + style 0 + ownerdraw UI_SKILL + text "Skill:" + rect 320 10 320 31 + textalign ITEM_ALIGN_LEFT + textalignx 90 + textaligny 26 + textscale .4 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 1 + mouseEnter { fadein message_skill } + mouseExit { fadeout message_skill } + } + + +// TEAM LOGO // + + +itemDef { + name playerlogo + ownerdraw UI_PLAYERLOGO_METAL + rect 28 250 100 100 + visible 1 + forecolor 1 .7 .7 1 + decoration + } + +itemDef { + name opposinglogo + ownerdraw UI_OPPONENTLOGO_METAL + rect 488 250 100 100 + visible 1 + forecolor .7 .7 1 1 + decoration +} + +// MAP INFO // + +itemDef { + name window + rect 14 247 612 105 + style WINDOW_STYLE_FILLED + border 1 + bordercolor .5 .5 .5 .5 + forecolor 1 1 1 1 + backcolor 0 0 0 .25 + visible 1 + decoration +} + +itemDef { + name location + text "VS" + textscale 1 + rect 192 325 256 30 + textalign 1 // center + textalignx 128 // x alignment point for text + // use it to offset left/right text from the edge + // or to center the text on a different point + textaligny 21 + backcolor 0 0 0 0 + forecolor 1 1 1 .5 + decoration + visible 1 + } + + +itemDef { + name level_info + group grplevelinfo2 + ownerdraw UI_TIER_MAPNAME + textscale .35 + rect 14 220 222 20 + textalign 0 + textalignx 3 // x alignment point for text + // use it to offset left/right text from the edge + // or to center the text on a different point + textaligny 18 + backcolor 0 0 0 0 + forecolor 1 1 1 1 + decoration + visible 1 + } + +itemDef { + name level_info + group grplevelinfo2 + ownerdraw UI_TIER_GAMETYPE + textscale .35 + rect 236 220 122 20 + textalign 0 + textalignx 3 // x alignment point for text + // use it to offset left/right text from the edge + // or to center the text on a different point + textaligny 18 + backcolor 0 0 0 0 + forecolor 1 1 1 1 + decoration + visible 1 + } + +itemDef { + name level_info + group grplevelinfo2 + type ITEM_TYPE_NUMERICFIELD + text "Captures " + cvar "capturelimit" + rect 358 220 122 20 + textalign 0 + textalignx 3 + textaligny 18 + textscale .35 + forecolor 1 1 1 1 + visible 1 + decoration + } + + itemDef { + name level_info + group grplevelinfo2 + type ITEM_TYPE_NUMERICFIELD + text "Time " + cvar "timelimit" + rect 480 220 72 20 + textalign 0 + textalignx 3 + textaligny 18 + textscale .35 + forecolor 1 1 1 1 + visible 1 + decoration + } + + itemDef { + name level_info + group grplevelinfo2 + type ITEM_TYPE_NUMERICFIELD + text "Frags " + cvar "fraglimit" + rect 552 220 72 20 + textalign 0 + textalignx 3 + textaligny 18 + textscale .35 + forecolor 1 1 1 1 + visible 1 + decoration + } + + +// TEAM NAME // + +itemDef { + name playerteamname + ownerdraw UI_PLAYERLOGO_NAME + rect 128 295 128 64 + decoration + visible 1 +} + +itemDef { + name opposingteamname + ownerdraw UI_OPPONENTLOGO_NAME + rect 388 295 128 64 + backcolor 0 0 0 0 + forecolor 1 1 1 1 + decoration + visible 1 +} + + + + + + + +// PLAYER STATS // + +itemDef { + name window + rect 14 354 612 34 + style WINDOW_STYLE_FILLED + border 1 + bordercolor .5 .5 .5 .5 + forecolor 1 1 1 1 + backcolor 0 0 0 .25 + visible 1 + decoration +} + +itemDef { + name name + type ITEM_TYPE_EDITFIELD + style 0 + text "Name:" + cvar "name" + textscale .35 + style 0 + rect 0 363 128 30 + textalign 1 // center + textalignx 64 // x alignment point for text + // use it to offset left/right text from the edge + // or to center the text on a different point + textaligny 17 + backcolor 0 0 0 0 + forecolor 1 1 1 1 + decoration + visible 1 + } + + + + +itemDef { + name score + text "Score:" + textscale .35 + style 0 + rect 246 363 128 30 + textalign 3 // center + textalignx 16 // x alignment point for text + // use it to offset left/right text from the edge + // or to center the text on a different point + textaligny 17 + backcolor 0 0 0 0 + forecolor 1 1 1 1 + decoration + visible 1 + } + + +itemDef { + name wins + text "Wins:" + textscale .35 + style 0 + rect 404 363 128 30 + textalign 1 // center + textalignx 64 // x alignment point for text + // use it to offset left/right text from the edge + // or to center the text on a different point + textaligny 17 + backcolor 0 0 0 0 + forecolor 1 1 1 1 + decoration + visible 1 + } + + +// AWARDS // + + +itemDef { + name window + rect 14 390 612 38 + style WINDOW_STYLE_FILLED + border 1 + bordercolor .5 .5 .5 .5 + forecolor 1 1 1 1 + backcolor 0 0 0 .25 + visible 1 + decoration +} + +itemdef { + name medal_accuracy + style WINDOW_STYLE_SHADER + rect 48 394 32 32 + background "ui/assets/medal_accuracy.tga" + forecolor 1 1 1 .25 + visible 1 + decoration +} + +itemdef { + name medal_assist + style WINDOW_STYLE_SHADER + rect 112 394 32 32 + background "ui/assets/medal_assist.tga" + forecolor 1 1 1 .25 + visible 1 + decoration + +} + +itemdef { + name medal_accuracy + style WINDOW_STYLE_SHADER + rect 176 394 32 32 + background "ui/assets/medal_accuracy.tga" + forecolor 1 1 1 .25 + visible 1 + decoration + +} + +itemdef { + name medal_defend + style WINDOW_STYLE_SHADER + rect 240 394 32 32 + background "ui/assets/medal_defend.tga" + forecolor 1 1 1 .25 + visible 1 + decoration + +} + +itemdef { + name medal_excellent + style WINDOW_STYLE_SHADER + rect 304 394 32 32 + background "ui/assets/medal_excellent.tga" + forecolor 1 1 1 .25 + visible 1 + decoration + +} + +itemdef { + name medal_frags + style WINDOW_STYLE_SHADER + rect 368 394 32 32 + background "ui/assets/medal_frags.tga" + forecolor 1 1 1 .25 + visible 1 + decoration + +} + +itemdef { + name medal_gauntlet + style WINDOW_STYLE_SHADER + rect 432 394 32 32 + background "ui/assets/medal_gauntlet.tga" + forecolor 1 1 1 .25 + visible 1 + decoration + +} + +itemdef { + name medal_impressive + style WINDOW_STYLE_SHADER + rect 496 394 32 32 + background "ui/assets/medal_impressive.tga" + forecolor 1 1 1 .25 + visible 1 + decoration + +} + +itemdef { + name medal_victory + style WINDOW_STYLE_SHADER + rect 560 394 32 32 + background "ui/assets/medal_victory.tga" + forecolor 1 1 1 .25 + visible 1 + decoration +} + + + + +// SCREEN SHOT // + +itemDef { + name mapwindow + rect 14 52 612 158 + style WINDOW_STYLE_FILLED + border 1 + bordercolor .5 .5 .5 .5 + forecolor 1 1 1 1 + backcolor 0 0 0 .25 + visible 1 + decoration + mouseenter { setitemcolor mapwindow bordercolor .7 0 0 1 ; fadein message_arena } + mouseexit { setitemcolor mapwindow bordercolor .5 .5 .5 .5 ; fadeout message_arena } +} + +itemdef { + name screen1 + rect 19 57 198 148 + ownerdraw UI_TIERMAP1 + visible 1 + mouseenter { setitemcolor borderscreen1 backcolor .25 .25 .25 .25 } + mouseexit { setitemcolor borderscreen1 backcolor 0 0 0 0 } + action { setcvar ui_currentMap 0 ; setitemcolor grpborderscreen bordercolor .5 .5 .5 1 ; setitemcolor borderscreen1 bordercolor 1 0 0 1 } +} + + +itemdef { + name screen2 + rect 221 57 198 148 + ownerdraw UI_TIERMAP2 + visible 1 + mouseenter { setitemcolor borderscreen2 backcolor .25 .25 .25 .25 } + mouseexit { setitemcolor borderscreen2 backcolor 0 0 0 0 } + action { setcvar ui_currentMap 1 ; setitemcolor grpborderscreen bordercolor .5 .5 .5 1 ; setitemcolor borderscreen2 bordercolor 1 0 0 1 } +} + + +itemdef { + name screen3 + ownerdraw UI_TIERMAP3 + rect 423 57 198 148 + visible 1 + mouseenter { setitemcolor borderscreen3 backcolor .25 .25 .25 .25 } + mouseexit { setitemcolor borderscreen3 backcolor 0 0 0 0 } + action { setcvar ui_currentMap 2 ; setitemcolor grpborderscreen bordercolor .5 .5 .5 1 ; setitemcolor borderscreen3 bordercolor 1 0 0 1 } +} + +itemdef { + name borderscreen1 + group grpborderscreen + rect 18 56 200 150 + style WINDOW_STYLE_FILLED + border 1 + backcolor 0 0 0 0 + bordercolor .5 .5 .5 1 + decoration + visible 1 +} + +itemdef { + name borderscreen2 + group grpborderscreen + rect 220 56 200 150 + style WINDOW_STYLE_FILLED + decoration + border 1 + backcolor 0 0 0 0 + bordercolor .5 .5 .5 1 + visible 1 + +} + + +itemdef { + name borderscreen3 + group grpborderscreen + style WINDOW_STYLE_FILLED + border 1 + bordercolor .5 .5 .5 1 + backcolor 0 0 0 0 + decoration + rect 422 56 200 150 + visible 1 +} + + + + + + + + + + + + + +// BACK BAR // + + + itemDef { + name gotobar + style 2 + rect 0 430 640 30 + textscale 0.4 + textalign 0 // center + textalignx 60 // x alignment point for text + // use it to offset left/right text from the edge + // or to center the text on a different point + textaligny 21 + style 2 + border 4 + bordercolor 0.5 0.5 0.5 0.5 + bordersize 2 + backcolor 0 0 .75 0.5 + visible 1 + mouseEnter { setcolor backcolor .75 0 0 .5 } + mouseExit { setcolor backcolor 0 0 .75 .5 } + decoration + } + + itemDef { + name back + style 3 + background "ui/assets/backarrow.tga" + rect 16 424 50 50 + visible 1 + action { close fight ; open main } + mouseEnter { hide back ; show back_alt ; fadein message_back } + } + +itemDef { + name back_alt + style WINDOW_STYLE_SHADER + background "ui/assets/backarrow_alt.tga" + rect 16 424 50 50 + backcolor 0 0 0 0 + forecolor 1 1 1 1 + visible 0 + type ITEM_TYPE_BUTTON + mouseExit { hide back_alt ; show back ; fadeout message_back } + action { close fight ; open main } + } + + + + +itemDef { + name accept + style 3 + rect 574 424 50 50 + background "ui/assets/forwardarrow.tga" + backcolor 0 0 0 0 + forecolor 1 1 1 1 + visible 1 + mouseEnter { show lightning ; hide accept ; show accept_alt ; fadein message_accept } + action { close fight ; uiScript SinglePlayerStart } + } + +itemDef { + name accept_alt + style 3 + rect 574 424 50 50 + background "ui/assets/forwardarrow_alt.tga" + backcolor 0 0 0 0 + forecolor 1 1 1 1 + visible 0 + type ITEM_TYPE_BUTTON + action { close fight ; uiScript SinglePlayerStart } + mouseExit { hide lightning ; hide accept_alt ; show accept ; fadeout message_accept } + } + + itemDef { + name lightning + style 3 + background lightningkc + rect 46 385 246 128 + visible 0 + decoration + } +itemDef { + name lightning + style 3 + background lightningkc + rect 345 385 246 128 + visible 0 + decoration + } + +// MESSAGES // + +itemDef { + name message_back + style 0 + rect 320 430 128 30 + textstyle 1 + textalign 1 + textalignx 0 + textaligny 25 + textscale .4 + text "Exit to Main Menu" + forecolor 1 1 1 1 + decoration + visible 0 + } + +itemDef { + name message_accept + style 0 + rect 320 430 128 30 + textalign 1 + textstyle 1 + textalignx 0 + textaligny 25 + textscale .4 + text "Enter Arena" + forecolor 1 1 1 1 + decoration + visible 0 + } + +itemDef { + name message_tier + style 0 + rect 320 430 128 30 + textalign 1 + textstyle 1 + textalignx 0 + textaligny 25 + textscale .4 + text "Choose Tier" + forecolor 1 1 1 1 + decoration + visible 0 + } + +itemDef { + name message_skill + style 0 + rect 320 430 128 30 + textstyle 1 + textalign 1 + textalignx 0 + textaligny 25 + textscale .4 + text "Set Skill Level" + forecolor 1 1 1 1 + decoration + visible 0 + } + +itemDef { + name message_arena + style 0 + rect 320 430 128 30 + textstyle 1 + textalign 1 + textalignx 0 + textaligny 25 + textscale .4 + text "Choose Your Arena" + forecolor 1 1 1 1 + decoration + visible 0 + } + + + +} + + + + + + + + +} + +} +} \ No newline at end of file diff --git a/ta_ui/findplayer.menu b/ta_ui/findplayer.menu new file mode 100644 index 00000000..1eaf7354 --- /dev/null +++ b/ta_ui/findplayer.menu @@ -0,0 +1,514 @@ +#include "ui/menudef.h" + +{ +\\ Server Information Popup Menu \\ + +menuDef { + name "findplayer_popmenu" + visible 0 + fullscreen 0 + rect 158 80 320 340 + focusColor 1 .75 0 1 + style 1 + border 1 + popup + onClose { } + onOpen { uiScript FindPlayer ; setfocus namefield } + onESC { close findplayer_popmenu ; open joinserver } + +itemDef { + name window + rect 10 15 310 330 + style 1 + backcolor 0 0 0 .5 + forecolor 0 0 0 1 + visible 1 + decoration + } +itemDef { + name window + rect 10 15 320 340 + style 1 + backcolor 0 0 0 .25 + forecolor 0 0 0 1 + visible 1 + decoration + } + + + +itemDef { + name window + rect 10 15 300 320 + style 1 + backcolor .1 .1 .37 1 + forecolor 0 0 0 1 + visible 1 + decoration + } + + + +itemDef { + name window + rect 10 15 300 10 + style 1 + backcolor 0 0 0 .25 + forecolor 0 0 0 1 + visible 1 + decoration + } + + +// FRAME // + + +itemDef { + name window + rect 0 10 64 64 + style 3 + background "ui/assets/ingameleftcorner.tga" + visible 1 + decoration + } +itemDef { + name window + rect 64 10 64 8 + style 3 + background "ui/assets/ingametop.tga" + visible 1 + decoration + } +itemDef { + name window + rect 184 10 96 8 + style 3 + background "ui/assets/ingametop.tga" + visible 1 + decoration + } +itemDef { + name window + rect 256 10 64 64 + style 3 + background "ui/assets/ingamerightcorner.tga" + visible 1 + decoration + } +itemDef { + name window + rect 128 10 64 8 + style 3 + background "ui/assets/ingametop.tga" + visible 1 + decoration + } +itemDef { + name window + rect 0 274 64 64 + style 3 + background "ui/assets/ingameleftcornerb.tga" + visible 1 + decoration + } +itemDef { + name window + rect 256 274 64 64 + style 3 + background "ui/assets/ingamerightcornerb.tga" + visible 1 + decoration + } + +itemDef { + name window + rect 0 64 16 64 + style 3 + background "ui/assets/ingameleft.tga" + visible 1 + decoration + } + + +itemDef { + name window + rect 0 128 16 64 + style 3 + background "ui/assets/ingameleft.tga" + visible 1 + decoration + } + +itemDef { + name window + rect 0 192 16 96 + style 3 + background "ui/assets/ingameleft.tga" + visible 1 + decoration + } + +itemDef { + name window + rect 304 64 16 64 + style 3 + background "ui/assets/ingameright.tga" + visible 1 + decoration + } + + +itemDef { + name window + rect 304 128 16 64 + style 3 + background "ui/assets/ingameright.tga" + visible 1 + decoration + } + +itemDef { + name window + rect 304 192 16 96 + style 3 + background "ui/assets/ingameright.tga" + visible 1 + decoration + } + + + +itemDef { + name window + rect 64 330 64 8 + style 3 + background "ui/assets/ingamebottom.tga" + visible 1 + decoration + } +itemDef { + name window + rect 128 330 98 8 + style 3 + background "ui/assets/ingamebottom.tga" + visible 1 + decoration + } +itemDef { + name window + rect 172 330 98 8 + style 3 + background "ui/assets/ingamebottom.tga" + visible 1 + decoration + } + + + + itemDef { + name findplayer + rect 0 20 320 20 + text "Find a Friend" + textalign 1 + textstyle 3 + textscale .333 + textalignx 155 + textaligny 23 + forecolor 1 1 1 1 + visible 1 + decoration + } +itemDef { + name window + rect 61 53 239 20 + style 1 + backcolor 0 0 0 .5 + forecolor 0 0 0 1 + visible 1 + decoration + } + + +itemDef { + name namefield + group "playersettinggroup" + type ITEM_TYPE_EDITFIELD + style 0 + text "Name:" + cvar "ui_findplayer" + maxChars 20 + rect 20 48 215 32 + textalign ITEM_ALIGN_LEFT + textalignx 0 + textaligny 21 + textscale .3 + outlinecolor 1 .5 .5 .5 + backcolor 0 0 0 0 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + action { ui_script FindPlayer } + visible 1 + } + + + itemDef { + name serverNameList //LIST OF SERVER NAMES// + rect 20 75 280 80 + type ITEM_TYPE_LISTBOX + style WINDOW_STYLE_FILLED + elementwidth 120 + elementheight 16 + textscale .225 + backcolor 0 0 0 1 + outlinecolor .1 .1 .7 .5 + border 1 + bordersize 1 + bordercolor .5 .5 .5 1 + elementtype LISTBOX_TEXT + feeder FEEDER_FINDPLAYER + visible 1 + mouseenter { setitemcolor serverNamewindow bordercolor .7 0 0 1 } + mouseexit { setitemcolor serverNamewindow bordercolor .5 .5 .5 1 } + } + + itemDef { + name serverNamewindow + rect 20 75 264 80 + style 1 + backcolor 0 0 0 0 + forecolor 0 0 0 0 + border 1 + bordersize 1 + bordercolor .5 .5 .5 1 + visible 1 + decoration + } + + itemDef { + name serverInfoList //LIST OF SERVER STATUS INFORMATION// + rect 20 175 280 110 + type ITEM_TYPE_LISTBOX + style WINDOW_STYLE_FILLED + elementwidth 120 + elementheight 16 + textscale .225 + backcolor 0 0 0 1 + border 1 + bordersize 1 + bordercolor .5 .5 .5 1 + elementtype LISTBOX_TEXT + feeder FEEDER_SERVERSTATUS + notselectable + visible 1 + columns 4 2 40 20 + 40 40 10 + 90 40 10 + 135 40 20 + mouseenter { setitemcolor serverInfowindow bordercolor .7 0 0 1 } + mouseexit { setitemcolor serverInfowindow bordercolor .5 .5 .5 1 } + + } + + itemDef { + name serverInfowindow + rect 20 175 264 110 + style 1 + backcolor 0 0 0 0 + forecolor 0 0 0 0 + border 1 + bordersize 1 + bordercolor .5 .5 .5 1 + visible 1 + decoration + } + + + + + + + + + + +// BUTTON // + + +itemDef { + name exit + text "Exit" + type 1 + textscale .25 + group grpControlbutton + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + rect 38 295 45 26 + textalign 1 + textalignx 22 + textaligny 20 + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + visible 1 + action {play "sound/misc/nomenu.wav" ; + close findplayer_popmenu ; + open joinserver } + mouseEnter { setitemcolor exit backcolor .1 .37 .1 1 } + mouseExit { setitemcolor exit backcolor .37 .1 .1 1 } + } +itemDef { + name exit + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/framebutton.tga" + rect 38 295 45 26 + visible 1 + forecolor 1 1 1 1 + decoration + } + +itemDef { + name exit + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/leftbutton.tga" + rect 26 295 13 26 + visible 1 + forecolor 1 1 1 1 + decoration + } + +itemDef { + name exit + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/rightbutton.tga" + rect 82 295 13 26 + visible 1 + forecolor 1 1 1 1 + decoration + } + +itemDef { + name search + text "Search" + type 1 + textscale .25 + group grpControlbutton + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + rect 131 295 60 26 + textalign 1 + textalignx 30 + textaligny 20 + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + visible 1 + action { play "sound/misc/nomenu.wav" ; + ui_script FindPlayer } + mouseEnter { setitemcolor search backcolor .1 .37 .1 1 } + mouseExit { setitemcolor search backcolor .37 .1 .1 1 } + } +itemDef { + name search + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/framebutton.tga" + rect 131 295 60 26 + visible 1 + forecolor 1 1 1 1 + decoration + } + +itemDef { + name search + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/leftbutton.tga" + rect 119 295 13 26 + visible 1 + forecolor 1 1 1 1 + decoration + } + +itemDef { + name search + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/rightbutton.tga" + rect 190 295 13 26 + visible 1 + forecolor 1 1 1 1 + decoration + } + + + + +itemDef { + name join + text "Join" + type 1 + textscale .25 + group grpControlbutton + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + rect 238 295 45 26 + textalign 1 + textalignx 22 + textaligny 20 + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + visible 1 + action { ui_script FoundPlayerJoinServer } + mouseEnter { setitemcolor join backcolor .1 .37 .1 1 } + mouseExit { setitemcolor join backcolor .37 .1 .1 1 } + } +itemDef { + name join + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/framebutton.tga" + rect 238 295 45 26 + visible 1 + forecolor 1 1 1 1 + decoration + } + +itemDef { + name join + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/leftbutton.tga" + rect 226 295 13 26 + visible 1 + forecolor 1 1 1 1 + decoration + } + +itemDef { + name join + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/rightbutton.tga" + rect 282 295 13 26 + visible 1 + forecolor 1 1 1 1 + decoration + } + + + + + + + +} + + +} + + diff --git a/ta_ui/help.menu b/ta_ui/help.menu new file mode 100644 index 00000000..1b450382 --- /dev/null +++ b/ta_ui/help.menu @@ -0,0 +1,660 @@ +#include "ui/menudef.h" + +{ +\\ Help\\ + + menuDef { + name "help_menu" + visible 0 + fullscreen 1 + rect 0 0 640 480 + background "menuback_a" + focusColor 1 .75 0 1 + style 1 + border 1 + onEsc { close help_menu ; close powerup_menu ; close ordersHelp_menu ; open main } + onOpen { setitemcolor fadebox backcolor 0 0 0 1 ; + playlooped "music/fla_mp03.wav" ; + fadeout fadebox ; + hide grphelptext ; + show grpbttn ; + show ctf ; + hide back_alt ; + show back ; + hide grpmessage } + + + +// BAR // + + +itemDef { + name gametypebar + style 2 + rect 0 16 640 40 + textscale 0.4 + textalign 0 // center + textalignx 60 // x alignment point for text + // use it to offset left/right text from the edge + // or to center the text on a different point + textaligny 21 + style 2 + border 4 + bordercolor 0.5 0.5 0.5 0.5 + bordersize 2 + backcolor 0 0 .75 0.5 + visible 1 + mouseEnter { setcolor backcolor .75 0 0 .5 ; fadein message_help } + mouseExit { setcolor backcolor 0 0 .75 .5 ; fadeout message_help } + decoration + } + + +itemDef { + name bar + style 0 + text "Gametypes" + type 1 + rect 0 16 213 40 + textstyle 6 + textalign 1 + textalignx 106 + textaligny 31 + textscale .35 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 1 + action { play "sound/misc/kcaction.wav" ; + hide grphelptext ; + show grpbttn ; + close powerup_menu ; + close ordersHelp_menu ; + show ctf } + } +itemDef { + name bar + style 0 + type 1 + text "Power-Ups" + rect 213 16 213 40 + textstyle 6 + textalign 1 + textalignx 106 + textaligny 31 + textscale .35 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 1 + action { play "sound/misc/kcaction.wav" ; + hide grphelptext ; + hide grpbttn ; + close powerup_menu ; + close ordersHelp_menu ; + open powerup_menu } + } +itemDef { + name bar + style 0 + text "Orders" + textstyle 6 + type 1 + rect 426 16 213 40 + textalign 1 + textalignx 106 + textaligny 31 + textscale .35 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 1 + action { play "sound/misc/kcaction.wav" ; + hide grphelptext ; + hide grpbttn ; + close powerup_menu ; + close ordersHelp_menu ; + open ordersHelp_menu } + } + +// GAMETYPES BUTTONS // + +itemDef { + name ctfbttn + group grpbttn + type 1 + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + text "Capture the Flag" + rect 23 97 120 26 + textalign 1 + textalignx 60 + textaligny 20 + textscale .30 + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + visible 0 + action { hide grphelptext ; show ctf ; play "sound/misc/kcaction.wav" } + mouseEnter { setitemcolor ctfbttn backcolor .1 .37 .1 1 } + mouseExit { setitemcolor ctfbttn backcolor .37 .1 .1 1 } + } + +itemDef { + name ctfbttn + group grpbttn + style WINDOW_STYLE_SHADER + background "ui/assets/framebutton.tga" + rect 23 97 120 26 + visible 1 + decoration + } + +itemDef { + name ctfbttn + group grpbttn + style WINDOW_STYLE_SHADER + background "ui/assets/leftbutton.tga" + rect 11 97 13 26 + visible 1 + decoration + } + +itemDef { + name ctfbttn + group grpbttn + style WINDOW_STYLE_SHADER + background "ui/assets/rightbutton.tga" + rect 142 97 13 26 + visible 1 + decoration + } + +itemDef { + name oneflagbttn + group grpbttn + type 1 + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + text "One Flag" + rect 183 97 120 26 + textalign 1 + textalignx 60 + textaligny 20 + textscale .3 + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + visible 0 + action { hide grphelptext ; show oneflag ; play "sound/misc/kcaction.wav" } + mouseEnter { setitemcolor oneflagbttn backcolor .1 .37 .1 1 } + mouseExit { setitemcolor oneflagbttn backcolor .37 .1 .1 1 } + } + +itemDef { + name oneflagbttn + group grpbttn + style WINDOW_STYLE_SHADER + background "ui/assets/framebutton.tga" + rect 183 97 120 26 + visible 1 + decoration + } + +itemDef { + name oneflagbttn + group grpbttn + style WINDOW_STYLE_SHADER + background "ui/assets/leftbutton.tga" + rect 171 97 13 26 + visible 1 + decoration + } + +itemDef { + name oneflagbttn + group grpbttn + style WINDOW_STYLE_SHADER + background "ui/assets/rightbutton.tga" + rect 302 97 13 26 + visible 1 + decoration + } + +itemDef { + name overloadbttn + group grpbttn + type 1 + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + text "Overload" + rect 343 97 120 26 + textalign 1 + textalignx 60 + textaligny 20 + textscale .3 + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + visible 0 + action { hide grphelptext ; show overload ; play "sound/misc/kcaction.wav" } + mouseEnter { setitemcolor overloadbttn backcolor .1 .37 .1 1 } + mouseExit { setitemcolor overloadbttn backcolor .37 .1 .1 1 } + } + +itemDef { + name overloadbttn + group grpbttn + style WINDOW_STYLE_SHADER + background "ui/assets/framebutton.tga" + rect 343 97 120 26 + visible 1 + decoration + } + +itemDef { + name overloadbttn + group grpbttn + style WINDOW_STYLE_SHADER + background "ui/assets/leftbutton.tga" + rect 331 97 13 26 + visible 1 + decoration + } + +itemDef { + name overloadbttn + group grpbttn + style WINDOW_STYLE_SHADER + background "ui/assets/rightbutton.tga" + rect 462 97 13 26 + visible 1 + decoration + } + + +itemDef { + name harvesterbttn + type 1 + group grpbttn + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + text "Harvester" + rect 503 97 120 26 + textalign 1 + textalignx 60 + textaligny 20 + textscale .3 + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + visible 0 + action { hide grphelptext ; show harvester ; play "sound/misc/kcaction.wav"} + mouseEnter { setitemcolor harvesterbttn backcolor .1 .37 .1 1 } + mouseExit { setitemcolor harvesterbttn backcolor .37 .1 .1 1 } + } + +itemDef { + name harvesterbttn + group grpbttn + style WINDOW_STYLE_SHADER + background "ui/assets/framebutton.tga" + rect 503 97 120 26 + visible 1 + decoration + } + +itemDef { + name harvesterbttn + group grpbttn + style WINDOW_STYLE_SHADER + background "ui/assets/leftbutton.tga" + rect 491 97 13 26 + visible 1 + decoration + } + +itemDef { + name harvesterbttn + group grpbttn + style WINDOW_STYLE_SHADER + background "ui/assets/rightbutton.tga" + rect 622 97 13 26 + visible 1 + decoration + } + + + +// HELP TEXT // + +// CTF // + + +itemDef { + name ctf + group grphelptext + style 0 + text "Capture the Flag" + rect 280 154 500 20 + textalign 0 + textalignx 0 + textaligny 17 + textscale .3 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 0 + decoration + } +itemDef { + name ctf + group grphelptext + style 0 + wrapped + rect 280 184 500 20 + text "To score a team point (often called a capture), the team \r" + "must invade the opposing team's base, run through (grab) \r" + "the other team's flag, and carry it back to their own flag.\r" + "For the capture to take place, the team's own flag must still \r" + "be in the base. The flag carrier drops the flag when he or \r" + "she is fragged. If the flag is not over void or death fog,\r" + "it stays in play. A player picks up a dropped flag when he \r" + "or she runs through it. This returns the player's own flag \r" + "to base. If the player runs through the opposing team's flag,\r" + "the player picks it up and runs with it." + textalign 0 + textalignx 0 + textaligny 17 + textscale .25 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 0 + decoration + } + +itemDef { + name ctf + group grphelptext + style 5 + cinematic "ctf.RoQ" + rect 10 154 256 192 + border 1 + bordercolor .5 .5 .5 1 + visible 0 + decoration + } + + + +// ONE FLAG CTF // + +itemDef { + name oneflag + group grphelptext + style 0 + text "One Flag Capture the Flag" + rect 280 154 500 20 + textalign 0 + textalignx 0 + textaligny 17 + textscale .3 + forecolor 1 1 1 1 + border 0 + decoration + bordercolor 0 0 0 0 + visible 0 + } +itemDef { + name oneflag + group grphelptext + style 0 + wrapped + text "The team must run through or grab the white flag at the \r" + "center of the arena and carry it to the opposing team's \r" + "flag. A team point, called a capture, is scored each time \r" + "a player successfully carries the flag to the opposing base. \r" + "The flag carrier drops the flag when he or she is fragged. \r" + "If the flag is not over a void or death fog, it stays in play \r" + "and may be picked up by a player from either team. A flag \r" + "dropped over a void or death fog returns to the center of \r" + "the arena." + rect 280 184 500 20 + textalign 0 + textalignx 0 + textaligny 17 + textscale .25 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 0 + decoration + } +itemDef { + name oneflag + group grphelptext + style 5 + cinematic "oneflag.RoQ" + rect 10 154 256 192 + border 1 + bordercolor .5 .5 .5 11 + visible 0 + decoration + } + + +// OVERLOAD // + +itemDef { + name overload + group grphelptext + style 0 + text "Overload" + rect 280 154 500 20 + textalign 0 + textalignx 0 + textaligny 17 + textscale .3 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + decoration + visible 0 + } +itemDef { + name overload + group grphelptext + style 0 + wrapped + text "To score a team point, the players must invade \r" + "their opponent's base and attack the skull portion of \r" + "the goal obelisk until it explodes. It slowly turns red \r" + "as the attacker chews through its 2500 points of damage. \r" + "The skull constantly regenerates at a rate of 15 hit \r" + "points a second." + rect 280 184 500 20 + textalign 0 + textalignx 0 + textaligny 17 + textscale .25 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 0 + decoration + } +itemDef { + name overload + group grphelptext + style 5 + cinematic "overload.RoQ" + rect 10 154 256 192 + border 1 + bordercolor .5 .5 .5 1 + visible 0 + decoration + } + + +// HARVESTER // +itemDef { + name harvester + group grphelptext + style 0 + text "Harvester" + rect 280 154 500 20 + textalign 0 + textalignx 0 + textaligny 17 + textscale .3 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 0 + decoration + } +itemDef { + name harvester + group grphelptext + style 0 + wrapped + text "To score team points, the team must frag opposing team \r" + "members. Each time a player on either team is fragged, a \r" + "crystal skull of their team color pops out of the skull \r" + "generator in the center of the arena. Players harvest skulls \r" + "of the opposing team's color by running through them. Skulls \r" + "of their own team's color are removed from play in the same \r" + "manner. Players must carry the skulls to the goal, a skull \r" + "receptacle in the opposing team's base. When a player is \r" + "fragged, any carried skulls are lost." + rect 280 184 500 20 + textalign 0 + textalignx 0 + textaligny 17 + textscale .25 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 0 + decoration + } +itemDef { + name harvester + group grphelptext + style 5 + cinematic "harvester.RoQ" + rect 10 154 256 192 + border 1 + bordercolor .5 .5 .5 1 + visible 0 + decoration + } + + + + +// BACK BAR // + + + itemDef { + name gotobar + style 2 + rect 0 430 640 30 + textscale 0.4 + textalign 0 // center + textalignx 60 // x alignment point for text + // use it to offset left/right text from the edge + // or to center the text on a different point + textaligny 21 + style 2 + border 4 + bordercolor 0.5 0.5 0.5 0.5 + bordersize 2 + backcolor 0 0 .75 0.5 + visible 1 + mouseEnter { setcolor backcolor .75 0 0 .5 } + mouseExit { setcolor backcolor 0 0 .75 .5 } + decoration + } + + itemDef { + name back + style 3 + background "ui/assets/backarrow.tga" + rect 16 424 50 50 + visible 1 + action { close help_menu ; open main } + mouseEnter { hide back ; show back_alt ; fadein message_back } + } + +itemDef { + name back_alt + style WINDOW_STYLE_SHADER + background "ui/assets/backarrow_alt.tga" + rect 14 422 54 54 + backcolor 0 0 0 0 + forecolor 1 1 1 1 + visible 0 + type ITEM_TYPE_BUTTON + mouseExit { hide back_alt ; show back ; fadeout message_back } + action { close help_menu ; + close powerup_menu ; + close ordersHelp_menu ; + //play "sound/misc/tim_pump.wav" ; + open main } + } + + +// MESSAGES // + +itemDef { + name message_back + group grpmessage + style 0 + rect 320 430 128 30 + textstyle 1 + textalign 1 + textalignx 0 + textaligny 25 + textscale .416 + text "Exit to Main Menu" + forecolor 1 1 1 1 + decoration + visible 0 + } + +itemDef { + name message_help + group grpmessage + style 0 + rect 320 430 128 30 + textalign 1 + textstyle 1 + textalignx 0 + textaligny 25 + textscale .416 + text "Select for Description" + forecolor 1 1 1 1 + decoration + visible 0 + } + +itemDef { + name fadebox + style WINDOW_STYLE_FILLED + background "ui/assets/fadebox.tga" + forecolor 0 0 0 1 + backcolor 0 0 0 1 + rect 0 0 640 480 + visible 1 + decoration + } + + + + +} + + + +} + + + diff --git a/ta_ui/help2.menu b/ta_ui/help2.menu new file mode 100644 index 00000000..5f0e3b12 --- /dev/null +++ b/ta_ui/help2.menu @@ -0,0 +1,721 @@ +#include "ui/menudef.h" + +{ +\\ Help\\ + + menuDef { + name "help_menu" + visible 0 + fullscreen 1 + rect 0 0 640 480 + background "menuback_a" + focusColor 1 .75 0 1 + outOfBoundsClick + style 1 + border 1 + onopen { hide grphelptext ; show help } + + + +// GAMETYPE BAR // + + +itemDef { + name gametypebar + style 2 + rect 0 16 640 40 + textscale 0.4 + textalign 0 // center + textalignx 60 // x alignment point for text + // use it to offset left/right text from the edge + // or to center the text on a different point + textaligny 21 + style 2 + border 4 + bordercolor 0.5 0.5 0.5 0.5 + bordersize 2 + backcolor 0 0 .75 0.5 + visible 1 + mouseEnter { setcolor backcolor .75 0 0 .5 ; fadein message_help } + mouseExit { setcolor backcolor 0 0 .75 .5 ; fadeout message_help } + decoration + } + +itemDef { + name bar + style 0 + text "CTF" + rect 0 16 106 40 + textalign 1 + textalignx 53 + textaligny 31 + textscale .3 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 1 + action { hide grphelptext ; show ctf } + } + +itemDef { + name bar + style 0 + text "One Flag" + rect 106 16 128 40 + textalign 1 + textalignx 53 + textaligny 31 + textscale .3 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 1 + action { hide grphelptext ; show onectf } + } +itemDef { + name bar + style 0 + text "Overload" + rect 212 16 106 40 + textalign 1 + textalignx 50 + textaligny 31 + textscale .3 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 1 + action { hide grphelptext ; show overload } + } +itemDef { + name bar + style 0 + text "Harvester" + rect 318 16 106 40 + textalign 1 + textalignx 50 + textaligny 31 + textscale .3 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 1 + action { hide grphelptext ; show harvester } + } +itemDef { + name bar + style 0 + text "Power-Ups" + rect 424 16 106 40 + textalign 1 + textalignx 50 + textaligny 31 + textscale .3 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 1 + action { hide grphelptext ; open powerup_menu } + } +itemDef { + name bar + style 0 + text "Orders" + rect 530 16 106 40 + textalign 1 + textalignx 50 + textaligny 31 + textscale .3 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 1 + action { hide grphelptext ; open ordersHelp_menu } + } + + +// HELP TEXT // + +// CTF // +itemDef { + name help + group grphelptext + style 0 + wrapped + text " For game rules, select one of the \r" + " game types from the above menu bar, \r" + " or select Power-ups for information \r" + " about team power-ups and \r" + " new useable items." + rect 160 140 600 40 + textalign 0 + textalignx 0 + textaligny 31 + textscale .3 + forecolor 1 .67 0 1 + border 0 + bordercolor 0 0 0 0 + visible 0 + decoration + } + +itemDef { + name ctf + group grphelptext + style 0 + text "Capture the Flag" + rect 280 94 500 20 + textalign 0 + textalignx 0 + textaligny 31 + textscale .25 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 0 + decoration + } +itemDef { + name ctf + group grphelptext + style 0 + wrapped + rect 280 124 500 20 + text "To score a team point (often called a capture), the team must invade the \r" + "opposing team's base, run through (grab) the other team's flag, and carry \r" + "it back to their own flag. For the capture to take place, the team's own \r" + "flag must still be in the base. The flag carrier drops the flag when he or \r" + "she is fragged. If the flag is not over void or death fog, it stays in play. \r" + "A player picks up a dropped flag when he or she runs through it. \r" + "This returns the player's own flag to base. If the player runs through \r" + "the opposing team's flag, the player picks it up and runs with it." + textalign 0 + textalignx 0 + textaligny 17 + textscale .25 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 0 + decoration + } + +itemDef { + name ctf + group grphelptext + style 3 + background "ui/assets/helpscreens/ctf/team_base.tga" + rect 80 270 128 128 + border 1 + bordercolor .5 .5 .5 1 + visible 0 + decoration + } +itemDef { + name ctf + group grphelptext + style 0 + text "Team Base" + rect 80 405 128 30 + textalign 1 + textalignx 64 + textaligny 17 + textscale .3 + forecolor 1 1 1 1 + visible 0 + decoration + } +itemDef { + name ctf + group grphelptext + style 3 + background "ui/assets/helpscreens/ctf/flag_carrier.tga" + rect 248 270 128 128 + border 1 + bordercolor .5 .5 .5 1 + visible 0 + decoration + } +itemDef { + name ctf + group grphelptext + style 0 + text "Flag Carrier" + rect 248 405 128 30 + textalign 1 + textalignx 64 + textaligny 17 + textscale .3 + forecolor 1 1 1 1 + visible 0 + decoration + } +itemDef { + name ctf + group grphelptext + style 3 + background "ui/assets/helpscreens/ctf/scoring_with_flag.tga" + rect 416 270 128 128 + border 1 + bordercolor .5 .5 .5 1 + visible 0 + decoration + } +itemDef { + name ctf + group grphelptext + style 0 + text "Scoring with the Flag" + rect 416 405 128 30 + textalign 1 + textalignx 64 + textaligny 17 + textscale .3 + forecolor 1 1 1 1 + visible 0 + decoration + } + + +// ONE FLAG CTF // + +itemDef { + name onectf + group grphelptext + style 0 + text "One Flag Capture the Flag" + rect 70 64 500 40 + textalign 0 + textalignx 0 + textaligny 31 + textscale .25 + forecolor 1 1 1 1 + border 0 + decoration + bordercolor 0 0 0 0 + visible 0 + } +itemDef { + name onectf + group grphelptext + style 0 + wrapped + text "The team must run through (grab) the white flag at the center of the \r" + "arena and carry it to the opposing team's flag. A team point, called a \r" + "capture, is scored each time a player successfully carries the flag \r" + "to the opposing base. The flag carrier drops the flag when he or she \r" + "is fragged. If the flag is not over a void or death fog, it stays in play \r" + "and may be picked up by a player from either team. A flag dropped \r" + "over a void or death fog returns to the center of the arena." + rect 70 104 500 20 + textalign 0 + textalignx 0 + textaligny 17 + textscale .25 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 0 + decoration + } +itemDef { + name onectf + group grphelptext + style 3 + background "ui/assets/helpscreens/oneflag/white_flag.tga" + rect 80 270 128 128 + border 1 + bordercolor .5 .5 .5 11 + visible 0 + decoration + } +itemDef { + name onectf + group grphelptext + style 0 + text "White Flag" + rect 80 405 128 30 + textalign 1 + textalignx 64 + textaligny 17 + textscale .3 + forecolor 1 1 1 1 + visible 0 + decoration + } +itemDef { + name onectf + group grphelptext + style 3 + background "ui/assets/helpscreens/oneflag/flag_carrier.tga" + rect 248 270 128 128 + border 1 + bordercolor .5 .5 .5 1 + visible 0 + decoration + } +itemDef { + name onectf + group grphelptext + style 0 + text "Flag Carrier" + rect 248 405 128 30 + textalign 1 + textalignx 64 + textaligny 17 + textscale .3 + forecolor 1 1 1 1 + visible 0 + decoration + } +itemDef { + name onectf + group grphelptext + style 3 + background "ui/assets/helpscreens/oneflag/scoring_with_flag.tga" + rect 416 270 128 128 + border 1 + bordercolor .5 .5 .5 1 + visible 0 + decoration + } +itemDef { + name onectf + group grphelptext + style 0 + text "Scoring with the Flag" + rect 416 405 128 30 + textalign 1 + textalignx 64 + textaligny 17 + textscale .3 + forecolor 1 1 1 1 + visible 0 + decoration + } + + + +// OVERLOAD // + +itemDef { + name overload + group grphelptext + style 0 + text "Overload" + rect 70 64 500 40 + textalign 0 + textalignx 0 + textaligny 31 + textscale .25 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + decoration + visible 0 + } +itemDef { + name overload + group grphelptext + style 0 + wrapped + text "To score a team point, the players must invade their opponent's base \r" + "and attack the skull portion of the goal obelisk until it explodes. \r" + "As the skull takes damage, it slowly turns bright red. The skull \r" + "constantly regenerates and slowly heals itself." + rect 70 104 500 20 + textalign 0 + textalignx 0 + textaligny 17 + textscale .25 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 0 + decoration + } +itemDef { + name overload + group grphelptext + style 3 + background "ui/assets/helpscreens/overload/obelisk.tga" + rect 80 270 128 128 + border 1 + bordercolor .5 .5 .5 1 + visible 0 + decoration + } +itemDef { + name overload + group grphelptext + style 0 + text "Obelisk" + rect 80 405 128 30 + textalign 1 + textalignx 64 + textaligny 17 + textscale .3 + forecolor 1 1 1 1 + visible 0 + decoration + } +itemDef { + name overload + group grphelptext + style 3 + background "ui/assets/helpscreens/overload/damaged_obelisk.tga" + rect 248 270 128 128 + border 1 + bordercolor .5 .5 .5 1 + visible 0 + decoration + } +itemDef { + name overload + group grphelptext + style 0 + text "Damaged Obelisk" + rect 248 405 128 30 + textalign 1 + textalignx 64 + textaligny 17 + textscale .3 + forecolor 1 1 1 1 + visible 0 + decoration + } +itemDef { + name overload + group grphelptext + style 3 + background "ui/assets/helpscreens/overload/exploded_obelisk_1.tga" + rect 416 270 128 128 + border 1 + bordercolor .5 .5 .5 1 + visible 0 + decoration + } +itemDef { + name overload + group grphelptext + style 0 + text "Exploded Obelisk" + rect 416 405 128 30 + textalign 1 + textalignx 64 + textaligny 17 + textscale .3 + forecolor 1 1 1 1 + visible 0 + decoration + } + +// HARVESTER // +itemDef { + name harvester + group grphelptext + style 0 + text "Harvester" + rect 70 64 500 40 + textalign 0 + textalignx 0 + textaligny 31 + textscale .25 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 0 + decoration + } +itemDef { + name harvester + group grphelptext + style 0 + wrapped + text "To score team points, the team must frag opposing team members. \r" + "Each time a player on either team is fragged, a crystal skull of their \r" + "team color pops out of the skull generator in the center of the arena. \r" + "Players harvest skulls of the opposing team's color by running \r" + "through them. Skulls of their own team's color are removed from play \r" + "in the same manner. Players must carry the skulls to the goal, \r" + "a skull receptacle in the opposing team's base. When a player is \r" + "fragged, any carried skulls are lost." + rect 70 104 500 20 + textalign 0 + textalignx 0 + textaligny 17 + textscale .25 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 0 + decoration + } +itemDef { + name harvester + group grphelptext + style 3 + background "ui/assets/helpscreens/harvester/skull_and_obelisk.tga" + rect 80 270 128 128 + border 1 + bordercolor .5 .5 .5 1 + visible 0 + decoration + } +itemDef { + name harvester + group grphelptext + style 0 + text "Skull Generator" + rect 80 405 128 30 + textalign 1 + textalignx 64 + textaligny 17 + textscale .3 + forecolor 1 1 1 1 + visible 0 + decoration + } +itemDef { + name harvester + group grphelptext + style 3 + background "ui/assets/helpscreens/harvester/carrying_skulls.tga" + rect 248 270 128 128 + border 1 + bordercolor .5 .5 .5 1 + visible 0 + decoration + } +itemDef { + name harvester + group grphelptext + style 0 + text "Carrying Skulls" + rect 248 405 128 30 + textalign 1 + textalignx 64 + textaligny 17 + textscale .3 + forecolor 1 1 1 1 + visible 0 + decoration + } +itemDef { + name harvester + group grphelptext + style 3 + background "ui/assets/helpscreens/harvester/scoring.tga" + rect 416 270 128 128 + border 1 + bordercolor .5 .5 .5 1 + visible 0 + decoration + } +itemDef { + name harvester + group grphelptext + style 0 + text "Scoring with the Skulls" + rect 416 405 128 30 + textalign 1 + textalignx 64 + textaligny 17 + textscale .3 + forecolor 1 1 1 1 + visible 0 + decoration + } + + + +// BACK BAR // + + + itemDef { + name gotobar + style 2 + rect 0 430 640 30 + textscale 0.4 + textalign 0 // center + textalignx 60 // x alignment point for text + // use it to offset left/right text from the edge + // or to center the text on a different point + textaligny 21 + style 2 + border 4 + bordercolor 0.5 0.5 0.5 0.5 + bordersize 2 + backcolor 0 0 .75 0.5 + visible 1 + mouseEnter { setcolor backcolor .75 0 0 .5 } + mouseExit { setcolor backcolor 0 0 .75 .5 } + decoration + } + + itemDef { + name back + style 3 + background "ui/assets/backarrow.tga" + rect 16 424 50 50 + visible 1 + action { close help_menu ; open main } + mouseEnter { hide back ; show back_alt ; fadein message_back } + } + +itemDef { + name back_alt + style WINDOW_STYLE_SHADER + background "ui/assets/backarrow_alt.tga" + rect 16 424 50 50 + backcolor 0 0 0 0 + forecolor 1 1 1 1 + visible 0 + type ITEM_TYPE_BUTTON + mouseExit { hide back_alt ; show back ; fadeout message_back } + action { close help_menu ; open main } + } + + +// MESSAGES // + +itemDef { + name message_back + style 0 + rect 320 430 128 30 + textstyle 1 + textalign 1 + textalignx 0 + textaligny 25 + textscale .4 + text "Exit to Main Menu" + forecolor 1 1 1 1 + decoration + visible 0 + } + +itemDef { + name message_help + style 0 + rect 320 430 128 30 + textalign 1 + textstyle 1 + textalignx 0 + textaligny 25 + textscale .4 + text "Select for Description" + forecolor 1 1 1 1 + decoration + visible 0 + } + + + +} + + + +} + + + diff --git a/ta_ui/hud.menu b/ta_ui/hud.menu new file mode 100644 index 00000000..55ab4f90 --- /dev/null +++ b/ta_ui/hud.menu @@ -0,0 +1,803 @@ +#include "ui/menudef.h" + +// team menu +// +// defines from ui_shared.h + +{ + assetGlobalDef { + cursor "ui/assets/3_cursor2" // cursor + gradientBar "ui/assets/gradientbar2.tga" // gradient bar + fadeClamp 1.0 // sets the fadeup alpha + fadeCycle 1 // how often fade happens in milliseconds + fadeAmount 0.1 // amount to adjust alpha per cycle + + shadowX 5 // x amount for shadow offset + shadowY 5 // y amount for shadow offset + shadowColor 0.1 0.1 0.1 0.25 // shadow color + + font "fonts/font" 16 // font + smallFont "fonts/smallfont" 12 // font + bigFont "fonts/bigfont" 20 // font + + + } + + +// POWERUP AREA // + +menuDef { + name "powerup area" + fullScreen MENU_FALSE + visible MENU_TRUE + rect 570 220 50 100 + + itemDef { + name "powerupArea" + rect 0 0 40 40 + visible 1 + decoration + ownerdraw CG_AREA_POWERUP + special 4 // spacing + align HUD_VERTICAL + } + + +} + + + +// SELECTED PLAYER // + +menuDef { + name "SelectedPlayer" + fullScreen MENU_FALSE + visible 1 + rect 2 363 180 64 + ownerdrawflag CG_SHOW_ANYTEAMGAME + + + itemDef { + name "b" + rect 2 4 170 57 + style 4 + visible 1 + } + + itemDef { + name "b" + rect 2 4 172 60 + visible 1 + textscale .17 + textaligny 10 + textalignx 0 + forecolor 1 1 1 1 + ownerdrawflag CG_SHOW_TEAMINFO + ownerdraw CG_TEAMINFO + } + + itemDef { + name "b" + rect 4 3 32 32 + visible 1 + ownerdrawflag CG_SHOW_NOTEAMINFO + ownerdraw CG_SELECTEDPLAYER_HEAD + } + + +itemDef { + name "b" + rect 75 35 22 11 + visible 1 + style 1 + textscale .25 + decoration + addColorRange -999 25 1 0 0 1 + addColorRange 26 100 1 .75 0 1 + addColorRange 101 999 1 1 1 1 + ownerdrawflag CG_SHOW_NOTEAMINFO + ownerdraw CG_SELECTEDPLAYER_HEALTH + } + + itemDef { + name "b" + rect 50 48 22 11 + visible 1 + style 3 + decoration + background "ui/assets/statusbar/selectedarmor.tga" + addColorRange -999 25 1 0 0 1 + addColorRange 26 100 1 .75 0 1 + addColorRange 101 999 1 1 1 1 + ownerdrawflag CG_SHOW_NOTEAMINFO + ownerdraw CG_SELECTEDPLAYER_ARMOR + } + + itemDef { + name "b" + rect 75 48 22 11 + visible 1 + textstyle 3 + style 1 + textscale .25 + decoration + addColorRange -999 25 1 0 0 1 + addColorRange 26 100 1 .75 0 1 + addColorRange 101 999 1 1 1 1 + ownerdrawflag CG_SHOW_NOTEAMINFO + ownerdraw CG_SELECTEDPLAYER_ARMOR + } + + + itemDef { + name "b" + rect 35 3 35 15 + textscale 0.25 + textstyle 3 + forecolor 1 1 1 1 + visible 1 + decoration + ownerdrawflag CG_SHOW_NOTEAMINFO + ownerdraw CG_SELECTEDPLAYER_NAME + } + + + + itemDef { + name "b" + rect 35 15 45 15 + textstyle 3 + textscale 0.25 + forecolor 1 1 1 1 + visible 1 + decoration + ownerdrawflag CG_SHOW_NOTEAMINFO + ownerdraw CG_SELECTEDPLAYER_LOCATION + } + + itemDef { + name "b" + rect 7 40 16 16 + visible 1 + decoration + ownerdrawflag CG_SHOW_NOTEAMINFO + ownerdraw CG_SELECTEDPLAYER_STATUS + } + + itemDef { + name "b" + rect 30 40 16 16 + visible 1 + decoration + ownerdrawflag CG_SHOW_NOTEAMINFO + ownerdraw CG_SELECTEDPLAYER_POWERUP + } + + itemDef { + name "b" + rect 100 33 24 24 + visible 1 + decoration + ownerdrawflag CG_SHOW_NOTEAMINFO + ownerdraw CG_SELECTEDPLAYER_WEAPON + } + + itemDef { + name "statusscreen" + visible 1 + style 3 + background "menuscreen2" + rect 2 4 170 57 + } + +itemDef { + name "sback" + rect 0 0 256 64 + visible 1 + style 3 + decoration + background "ui/assets/selectedstatus.tga" + } + + } + + + +// PLAYER STATUS // + +menuDef { + name "playerStatus" + fullScreen MENU_FALSE + visible MENU_TRUE + rect 0 416 128 64 + + itemDef { + name "playerStatusRect" + style 4 + rect 12 13 116 48 + visible 1 + } + itemDef { + name "playerRect" + rect 12 13 116 48 + style 3 + background hudalert_good + visible 1 + ownerdrawflag CG_SHOW_IF_PLAYER_HAS_FLAG + } + + itemDef { + name "playeritem" + rect 27 25 22 22 + visible 1 + decoration + ownerdraw CG_PLAYER_ITEM + } + + itemDef { + name "CTFPOWERUP" + rect 54 25 22 22 + visible 1 + decoration + ownerdraw CG_CTF_POWERUP + } + + itemDef { + name "flag" + rect 85 15 40 40 + visible 1 + decoration + ownerdraw CG_PLAYER_HASFLAG + } + + itemDef { + name "skulls" + rect 72 10 48 34 + visible 1 + decoration + textaligny 12 + textalignx 0 + textscale 0.333 + textstyle 3 + ownerdraw CG_HARVESTER_SKULLS + } + + itemDef { + name "statusscreen" + visible 1 + style 3 + background "menuscreen2" + rect 12 13 116 48 + } + } + + +// AMMO // + +menuDef { + name "Ammo" + fullScreen MENU_FALSE + visible MENU_TRUE + rect 128 416 128 64 + + + itemDef { + name "ammoRect" + visible 1 + style 4 + rect 3 13 122 48 + } + + itemDef { + name "a" + rect 85 25 30 30 + visible 1 + decoration + ownerdraw CG_PLAYER_AMMO_ICON2D + } + + + itemDef { + name "a" + rect 10 43 63 12 + visible 1 + textstyle 3 + decoration + textscale .75 + forecolor 1 1 1 1 + ownerdraw CG_PLAYER_AMMO_VALUE + addColorRange -999 5 1 0 0 1 + addColorRange 6 999 1 .75 0 1 + } + + itemDef { + name "statusscreen" + visible 1 + style 3 + background "menuscreen2" + rect 3 13 122 48 + } + } + + + + + + +// PLAYER // + +menuDef { + name "Player" + fullScreen MENU_FALSE + visible MENU_TRUE + rect 256 416 128 64 + + + itemDef { + name "playerRect" + rect 0 2 128 60 + style 4 + visible 1 + } + + itemDef { + name "playerRect" + rect 0 2 128 60 + style 3 + background hudalert + visible 1 + ownerdrawflag CG_SHOW_HEALTHCRITICAL + } + + + itemDef { + name "healthok" + rect 12 42 63 12 + visible 1 + decoration + textstyle 3 + forecolor 1 1 1 1 + textscale .75 + ownerdraw CG_PLAYER_HEALTH + addColorRange -999 25 1 0 0 1 + addColorRange 26 100 1 .75 0 1 + addColorRange 101 999 1 1 1 1 + } + + itemDef { + name "statusscreen" + visible 1 + style 3 + background "menuscreen2" + rect 0 2 128 60 + } + + itemDef { + name "b" + rect 70 10 45 45 + visible 1 + decoration + ownerdraw CG_PLAYER_HEAD + } + } + + + + + + + +// ARMOR // + +menuDef { + name "Armor" + fullScreen MENU_FALSE + visible MENU_TRUE + rect 384 416 128 64 + + + itemDef { + name "armorRect" + rect 0 13 125 48 + visible 1 + style 4 + } + + itemDef { + name "armor" + rect 10 7 30 30 + visible 1 + decoration + ownerdraw CG_PLAYER_ARMOR_ICON2D + } + + + itemDef { + name "armor2" + rect 55 43 63 12 + visible 1 + decoration + textstyle 3 + textscale .75 + ownerdraw CG_PLAYER_ARMOR_VALUE + addColorRange -999 25 .67 0 0 1 + addColorRange 26 100 1 .75 0 1 + addColorRange 101 999 .75 .75 .75 1 + } + + itemDef { + name "statusscreen" + visible 1 + style 3 + background "menuscreen2" + rect 0 13 125 48 + } + } + + +// PLAYERSCORE // + +menuDef { + name "PlayerScore" + fullScreen MENU_FALSE + visible MENU_TRUE + rect 512 416 128 64 + ownerdrawflag CG_SHOW_ANYTEAMGAME + + + itemDef { + name "playerScoreRect" + visible 1 + rect 0 13 126 48 + style 4 + } + + itemDef { + name "playerRect" + rect 0 13 63 48 + style 3 + background hudalert_blue + visible 1 + ownerdrawflag CG_SHOW_BLUE_TEAM_HAS_REDFLAG + } + +itemDef { + name "playerRect" + rect 63 13 63 48 + style 3 + background hudalert_red + visible 1 + ownerdrawflag CG_SHOW_RED_TEAM_HAS_BLUEFLAG + } + + + itemDef { + name "f" + rect 30 22 16 16 + visible 1 + bordercolor 1 1 1 .75 + decoration + style 3 + background "ui/assets/bluechip.tga" + } +itemDef { + name "f" + rect 30 22 16 16 + visible 1 + bordercolor 1 1 1 .75 + decoration + style 3 + ownerdrawflag CG_SHOW_HARVESTER + background "icons/skull_blue.tga" + } + + itemDef { + name "blueflag" + rect 30 22 16 16 + visible 1 + decoration + ownerdrawflag CG_SHOW_CTF + ownerdraw CG_BLUE_FLAGSTATUS + } + + +itemDef { + name "oneflagstatus" + rect 30 40 16 16 + visible 1 + decoration + ownerdraw CG_ONEFLAG_STATUS + } + + + itemDef { + name "r" + rect 35 21 30 15 + textstyle 3 + visible 1 + decoration + forecolor .25 .25 1 1 + textscale 0.25 + ownerdraw CG_BLUE_SCORE + } + + itemDef { + name "f" + rect 77 22 16 16 + visible 1 + bordercolor 1 1 1 1 + decoration + style 3 + background "ui/assets/redchip.tga" + } + + itemDef { + name "f" + rect 77 22 16 16 + visible 1 + bordercolor 1 1 1 1 + decoration + style 3 + ownerdrawflag CG_SHOW_HARVESTER + background "icons/skull_red.tga" + } + + itemDef { + name "f" + rect 77 22 16 16 + visible 1 + decoration + ownerdrawflag CG_SHOW_CTF + ownerdraw CG_RED_FLAGSTATUS + } + + itemDef { + name "r" + rect 87 21 30 15 + textstyle 3 + visible 1 + decoration + forecolor 1 0 0 1 + textscale 0.25 + ownerdraw CG_RED_SCORE + } + + itemDef { + name "statusscreen" + visible 1 + style 3 + background "menuscreen2" + rect 0 13 126 48 + } + + itemDef { + name "playerScore" + type 4 + rect 8 36 40 12 + visible 1 + textstyle 3 + decoration + forecolor 1 1 1 1 + textscale .25 + ownerdraw CG_CAPFRAGLIMIT + } + + + + itemDef { + name "playerScore" + style 0 + rect 60 43 65 12 + visible 1 + textstyle 3 + decoration + forecolor 1 1 1 1 + textscale .25 + ownerdraw CG_PLAYER_SCORE + } + } + + +// PLAYERSCORE // + +menuDef { + name "PlayerScore" + fullScreen MENU_FALSE + visible MENU_TRUE + rect 512 416 128 64 + ownerdrawflag CG_SHOW_ANYNONTEAMGAME + + itemDef { + name "playerScoreRect" + visible 1 + rect 0 13 126 48 + style 4 + } + + itemDef { + name "statusscreen" + visible 1 + style 3 + background "menuscreen2" + rect 0 13 126 48 + } + + itemDef { + name "playerScore" + rect 8 32 40 12 + visible 1 + textstyle 3 + decoration + forecolor 1 1 1 1 + textscale .25 + text "FragLimit:" + ownerdraw CG_CAPFRAGLIMIT + } + itemDef { + name "playerScore" + style 0 + rect 10 45 65 12 + visible 1 + textstyle 3 + text "1st:" + ownerdraw CG_1STPLACE + decoration + forecolor .25 .25 1 1 + textscale .25 + } + itemDef { + name "playerScore" + style 0 + rect 70 45 65 12 + visible 1 + textstyle 3 + text "2nd:" + ownerdraw CG_2NDPLACE + decoration + forecolor 1 0 0 1 + textscale .25 + } + + + itemDef { + name "playerScore" + style 0 + rect 10 58 40 0 + visible 1 + textstyle 3 + text "Score:" + decoration + forecolor 1 1 1 1 + textscale .25 + ownerdraw CG_PLAYER_SCORE + } + } + + +// LOCATION // + +menuDef { + name "location" + fullScreen MENU_FALSE + visible MENU_TRUE + rect 463 395 256 32 + ownerdrawflag CG_SHOW_ANYTEAMGAME + + + itemDef { + name "locationRect" + visible MENU_TRUE + rect 2 6 170 26 + style 4 + } +itemDef { + name "playerStatus" + rect 16 10 16 16 + visible 1 + decoration + ownerdraw CG_PLAYER_STATUS + } + + itemDef { + name "playerlocation" + rect 37 7 16 16 + visible 1 + textstyle 3 + decoration + textscale .25 + ownerdraw CG_PLAYER_LOCATION + } +itemDef { + name "lback" + rect 0 0 256 32 + visible 1 + style 3 + decoration + background "ui/assets/locationstatus.tga" + } + } + + + +// STATUSBAR // + +menuDef { + name "statusbar" + fullScreen 0 + visible 1 + rect 0 416 640 64 + + +itemDef { + name "statusbar" + rect 0 0 640 64 + style 3 + background "ui/assets/statusbar_full.tga" + visible 1 + decoration + forecolor 1 1 1 1 + backcolor 1 1 1 1 + } + } + + + + + + + menuDef { + name "voiceMenu" + fullScreen MENU_FALSE + visible MENU_FALSE + rect 5 5 100 100 + + + itemDef { + name "voiceMenuRect" + style 4 + rect 2 2 50 50 + visible 1 + } + + itemDef { + name "b" + rect 2 2 50 50 + visible 1 + decoration + ownerdraw CG_VOICE_HEAD + } + + itemDef { + name "b" + rect 2 2 50 50 + style WINDOW_STYLE_SHADER + background "menuscreen2" + visible 1 + decoration + } + + itemDef { + name "voiceWindow" + visible 1 + style 3 + background "ui/assets/voice_window.tga" + rect 0 0 54 54 + } + + + itemDef { + name "b" + rect 2 55 50 12 + visible 1 + decoration + textscale .25 + textalign 0 + textalignx 0 + textaligny 12 + ownerdraw CG_VOICE_NAME + } + + + } + + diff --git a/ta_ui/hud.txt b/ta_ui/hud.txt new file mode 100644 index 00000000..ab99a101 --- /dev/null +++ b/ta_ui/hud.txt @@ -0,0 +1,7 @@ +// hud menu defs +// +{ + loadMenu { "ui/hud.menu" } + loadMenu { "ui/score.menu" } + loadMenu { "ui/teamscore.menu" } +} diff --git a/ta_ui/hud2.txt b/ta_ui/hud2.txt new file mode 100644 index 00000000..c0a2da4b --- /dev/null +++ b/ta_ui/hud2.txt @@ -0,0 +1,7 @@ +// hud menu defs +// +{ + loadMenu { "ui/min_hud.menu" } + loadMenu { "ui/score.menu" } + loadMenu { "ui/teamscore.menu" } +} diff --git a/ta_ui/hud_old.menu b/ta_ui/hud_old.menu new file mode 100644 index 00000000..a753be07 --- /dev/null +++ b/ta_ui/hud_old.menu @@ -0,0 +1,1091 @@ +#include "ui/menudef.h" + +// team menu +// +// defines from ui_shared.h + +{ + assetGlobalDef { + font "fonts/impact.ttf" // font + cursor "menu/art/3_cursor2" // cursor + gradientBar "ui/assets/gradientbar2.tga" // gradient bar + fadeClamp 1.0 // sets the fadeup alpha + fadeCycle 1 // how often fade happens in milliseconds + fadeAmount 0.1 // amount to adjust alpha per cycle + + shadowX 5 // x amount for shadow offset + shadowY 5 // y amount for shadow offset + shadowColor 0.1 0.1 0.1 0.25 // shadow color + + hudShader "ui/assets/hudbar.tga" // + + } + + +// POWERUP AREA // + +menuDef { + name "powerup area" + fullScreen MENU_FALSE + visible MENU_TRUE + rect 570 220 50 100 + + ownerdrawflag CG_SHOW_CTF + itemDef { + name "powerupArea" + rect 0 0 40 40 + visible 1 + decoration + ownerdraw CG_AREA_POWERUP + special 4 // spacing + align HUD_VERTICAL + } + + +} + + + +// SELECTED PLAYER // + +menuDef { + name "SelectedPlayer" + fullScreen MENU_FALSE + visible MENU_TRUE + rect 2 340 128 75 + + + + itemDef { + name "b" + rect 0 0 125 75 + style 4 + visible 1 + bordercolor 0 0 0 0 + backcolor 0 0 0 0 + mouseEnter { setcolor bordercolor 1 1 1 .5 ; setteamcolor ; show altSelectedPlayerRect } + mouseExit { setcolor backcolor 0 0 0 0 ; setcolor bordercolor 0 0 0 0 ; hide altSelectedPlayerRect } + action { open teamMenu } + } + + + + itemDef { + name "altSelectedPlayerRect" + rect 0 0 125 75 + style 4 + border 1 + bordersize 1 + visible 0 + bordercolor 1 1 1 1 + backcolor 0 0 0 0 + } + + + itemDef { + name "b" + rect 2 3 32 32 + visible 1 + action { open teamMenu } + ownerdraw CG_SELECTEDPLAYER_HEAD + } + + itemDef { + name "b" + rect 65 5 22 11 + visible 1 + style 3 + decoration + background "ui/assets/statusbar/selectedhealth.tga" + addColorRange -999 25 1 0 0 1 + addColorRange 26 100 1 .75 0 1 + addColorRange 101 999 1 1 1 1 + ownerdraw CG_SELECTEDPLAYER_HEALTH + } + + itemDef { + name "b" + rect 65 18 22 11 + visible 1 + style 3 + decoration + background "ui/assets/statusbar/selectedarmor.tga" + addColorRange -999 25 1 0 0 1 + addColorRange 26 100 .3 .65 0 1 + addColorRange 101 999 1 1 1 1 + ownerdraw CG_SELECTEDPLAYER_ARMOR + } + + + + itemDef { + name "b" + rect 5 40 35 15 + textscale 0.25 + forecolor 1 1 1 1 + visible 1 + decoration + ownerdraw CG_SELECTEDPLAYER_NAME + } + + itemDef { + name "b" + rect 5 52 45 15 + textscale 0.25 + forecolor 1 1 1 1 + visible 1 + decoration + ownerdraw CG_SELECTEDPLAYER_LOCATION + } + + itemDef { + name "b" + rect 38 5 16 16 + visible 1 + decoration + ownerdraw CG_SELECTEDPLAYER_STATUS + } + + itemDef { + name "b" + rect 93 5 24 24 + visible 1 + decoration + ownerdraw CG_SELECTEDPLAYER_WEAPON + } + + itemDef { + name "b" + rect 38 22 16 16 + visible 1 + decoration + ownerdraw CG_SELECTEDPLAYER_POWERUP + } + +} + + + +// PLAYER STATUS // + +menuDef { + name "playerStatus" + fullScreen MENU_FALSE + visible MENU_TRUE + rect 0 416 128 64 + + itemDef { + name "playerStatusRect" + rect 12 13 112 48 + visible 1 + style 4 + //background "ui/assets/hudback.tga" + border 1 + bordersize 1 + mouseEnter { show playerStatusRectAlt } + mouseExit { hide playerStatusRectAlt } + +} + + itemDef { + name "playerStatusRectAlt" + rect 12 13 112 48 + visible 0 + style 1 + border 1 + bordersize 1 + bordercolor 1 1 1 1 + backcolor 0 0 0 .0 +} + + itemDef { + name "playeritem" + rect 27 19 24 24 + visible 1 + decoration + ownerdraw CG_PLAYER_ITEM + } + + itemDef { + name "CTFPOWERUP" + rect 55 19 24 24 + visible 1 + decoration + ownerdraw CG_CTF_POWERUP + + + } + + itemDef { + name "flag" + rect 85 15 40 40 + visible 1 + decoration + ownerdraw CG_PLAYER_HASFLAG + } + + itemDef { + name "skulls" + rect 75 8 45 40 + visible 1 + decoration + textscale 0.5 + ownerdraw CG_HARVESTER_SKULLS + } + + + + itemDef { + name "statusscreen" + visible 1 + style 3 + background "menuscreen2" + rect 12 13 112 48 + border 1 + bordersize 1 + bordercolor 1 1 1 1 + backcolor 0 0 0 0 + } + + +itemDef { + name "sback" + rect 0 0 128 64 + visible 1 + decoration + style 3 + background "ui/assets/statusbar1.tga" + } + + } + + + + + +// AMMO // + +menuDef { + name "Ammo" + fullScreen MENU_FALSE + visible MENU_TRUE + rect 129 416 128 64 + + + itemDef { + name "ammoRect" + visible 1 + style 4 + //background "ui/assets/hudback.tga" + rect 2 13 122 48 + border 1 + bordersize 1 + mouseEnter { show ammoRectAlt } + mouseExit { hide ammoRectAlt } + } + + itemDef { + name "ammoRectAlt" + visible 0 + style 1 + rect 2 13 122 48 + border 1 + bordersize 1 + bordercolor 1 1 1 1 + backcolor 0 0 0 0 + } + + + itemDef { + name "a" + rect 85 22 32 32 + visible 1 + decoration + ownerdraw CG_PLAYER_AMMO_ICON + } + + itemDef { + name "a" + rect 10 40 63 12 + visible 1 + decoration + textscale .75 + forecolor 1 1 1 1 + ownerdraw CG_PLAYER_AMMO_VALUE + addColorRange -999 5 1 0 0 1 + addColorRange 6 999 .3 .65 0 1 + } + + itemDef { + name "statusscreen" + visible 1 + style 3 + background "menuscreen2" + rect 2 13 122 48 + border 1 + bordersize 1 + bordercolor 1 1 1 1 + backcolor 0 0 0 0 + } + +itemDef { + name "sback" + rect 0 0 128 64 + visible 1 + decoration + style 3 + background "ui/assets/statusbar2.tga" + } + +} + + + + + + +// PLAYER // + +menuDef { + name "Player" + fullScreen MENU_FALSE + visible MENU_TRUE + rect 257 416 128 64 + + + itemDef { + name "playerRect" + rect 2 2 122 60 + style 4 + //background "ui/assets/hudback.tga" + visible 1 + border 1 + bordersize 1 + mouseEnter { show playerRectAlt } + mouseExit { hide playerRectAlt } + } + + itemDef { + name "playerRectAlt" + rect 2 2 122 60 + style 1 + visible 0 + border 1 + bordersize 1 + bordercolor 1 1 1 1 + backcolor 0 0 0 0 + } + + + itemDef { + name "b" + rect 10 40 63 12 + visible 1 + decoration + forecolor 1 1 1 1 + textscale .75 + ownerdraw CG_PLAYER_HEALTH + ownerdrawflag CG_SHOW_HEALTHOK + addColorRange -999 25 1 0 0 1 + addColorRange 26 100 .3 .65 0 1 + addColorRange 101 999 1 1 1 1 + } + + itemDef { + name "b" + rect 10 40 63 12 + visible 1 + decoration + forecolor 1 0 0 1 + textscale .75 + textstyle ITEM_TEXTSTYLE_BLINK + ownerdraw CG_PLAYER_HEALTH + ownerdrawflag CG_SHOW_HEALTHCRITICAL + } + + + itemDef { + name "b" + rect 75 10 50 50 + visible 1 + decoration + ownerdraw CG_PLAYER_HEAD + } + + itemDef { + name "statusscreen" + visible 1 + style 3 + background "menuscreen2" + rect 2 13 122 48 + border 1 + bordersize 1 + bordercolor 1 1 1 1 + backcolor 0 0 0 0 + } + + +itemDef { + name "sback" + rect 0 0 128 64 + visible 1 + decoration + style 3 + background "ui/assets/statusbar3.tga" + } + } + + + + +// ARMOR // + +menuDef { + name "Armor" + fullScreen MENU_FALSE + visible MENU_TRUE + rect 385 416 128 64 + + + itemDef { + name "armorRect" + rect 2 13 122 48 + visible 1 + style 4 + //background "ui/assets/hudback.tga" + border 1 + bordersize 1 + mouseEnter { show armorRectAlt } + mouseExit { hide armorRectAlt } + } + + itemDef { + name "armorRectAlt" + rect 2 13 122 48 + visible 0 + style 1 + border 1 + bordersize 1 + bordercolor 1 1 1 1 + backcolor 0 0 0 0 + } + + itemDef { + name "armor" + rect 75 -4 40 40 + visible 1 + decoration + ownerdraw CG_PLAYER_ARMOR_ICON2D + } + + itemDef { + name "armor2" + rect 10 40 63 12 + visible 1 + decoration + textscale .75 + ownerdraw CG_PLAYER_ARMOR_VALUE + addColorRange -999 25 .67 0 0 1 + addColorRange 26 100 .3 .65 0 1 + addColorRange 101 999 .75 .75 .75 1 + } + + itemDef { + name "statusscreen" + visible 1 + style 3 + background "menuscreen2" + rect 2 13 122 48 + border 1 + bordersize 1 + bordercolor 1 1 1 1 + backcolor 0 0 0 0 + } + + +itemDef { + name "sback" + rect 0 0 128 64 + visible 1 + decoration + style 3 + background "ui/assets/statusbar4.tga" + } + } + + +// LOCATION // + +menuDef { + name "location" + fullScreen MENU_FALSE + visible MENU_TRUE + rect 513 380 128 22 + + + + itemDef { + name "locationRect" + visible MENU_TRUE + rect 0 0 128 22 + style 4 + } + + + itemDef { + name "playerlocation" + rect 10 2 16 16 + visible 1 + decoration + textscale .25 + ownerdraw CG_PLAYER_LOCATION + } +} + + + +// FLAGSTATUS // + +menuDef { + name "FlagStatus" + fullScreen MENU_FALSE + visible MENU_TRUE + rect 513 405 128 22 + + + + itemDef { + name "flagStatusRect" + visible MENU_TRUE + rect 0 0 128 22 + style 4 + //border 1 + //bordersize 1 + bordercolor 0 0 0 0 + backcolor 0 0 0 0 + mouseEnter { setcolor bordercolor 1 1 1 1 } + mouseExit { setcolor bordercolor 0 0 0 0 } + } + + itemDef { + name "f" + rect 30 4 16 16 + visible 1 + bordercolor 1 1 1 .75 + decoration + style 3 + background "ui/assets/bluechip.tga" + } + + itemDef { + name "f" + rect 4 4 16 16 + visible 1 + decoration + ownerdraw CG_ONEFLAG_STATUS + } + + itemDef { + name "f" + rect 30 4 16 16 + visible 1 + decoration + ownerdraw CG_BLUE_FLAGSTATUS + } + + + itemDef { + name "r" + rect 40 3 30 15 + visible 1 + decoration + forecolor 1 1 1 1 + textscale 0.25 + ownerdraw CG_BLUE_SCORE + } + + itemDef { + name "f" + rect 72 4 16 16 + visible 1 + bordercolor 1 1 1 1 + decoration + style 3 + background "ui/assets/redchip.tga" + } + + itemDef { + name "f" + rect 72 4 16 16 + visible 1 + decoration + ownerdraw CG_RED_FLAGSTATUS + } + + itemDef { + name "r" + rect 87 3 30 15 + visible 1 + decoration + forecolor 1 1 1 1 + textscale 0.25 + ownerdraw CG_RED_SCORE + } + +} + + +// GAMETYPE // + +menuDef { + name "GameType" + fullScreen MENU_FALSE + visible MENU_TRUE + rect 513 354 128 22 + + + itemDef { + name "gameTypeRect" + visible 1 + rect 0 0 125 22 + style 4 + //background "ui/assets/hudback.tga" + visible 1 + decoration + mouseEnter { show gameTypeRectAlt } + mouseExit { hide gameTypeRectAlt } + } + + itemDef { + name "gameTypeRectAlt" + visible 0 + rect 0 0 125 22 + style 1 + border 1 + bordersize 1 + bordercolor 1 1 1 1 + backcolor 0 0 0 0 + } + + itemDef { + name "gameTypeName" + visible 1 + rect 5 2 125 16 + textscale .25 + ownerdraw CG_GAME_TYPE + style 1 + } + + +} + +// PLAYERSCORE // + +menuDef { + name "PlayerScore" + fullScreen MENU_FALSE + visible MENU_TRUE + rect 513 416 128 64 + + + itemDef { + name "playerScoreRect" + visible 1 + rect 2 13 110 48 + style 4 + border 1 + bordersize 1 + mouseEnter { show playerScoreRectAlt } + mouseExit { hide playerScoreRectAlt } + + } + + itemDef { + name "playerScoreRectAlt" + visible 0 + rect 2 13 110 48 + style 1 + border 1 + bordersize 1 + bordercolor 1 1 1 1 + backcolor 0 0 0 0 + } + + + itemDef { + name "playerStatus" + rect 10 30 16 16 + visible 1 + decoration + ownerdraw CG_PLAYER_STATUS + } + + itemDef { + name "playerScore" + rect 10 32 125 12 + visible 1 + decoration + forecolor .3 .65 0 1 + textscale .35 + ownerdraw CG_PLAYER_SCORE + } + + itemDef { + name "statusscreen" + visible 1 + style 3 + background "menuscreen2" + rect 2 13 110 48 + border 1 + bordersize 1 + bordercolor 1 1 1 1 + backcolor 0 0 0 0 + } + + +itemDef { + name "sback" + rect 0 0 128 64 + visible 1 + decoration + style 3 + background "ui/assets/statusbar5.tga" + } + + } +} + +// SCORESTATUS // + +menuDef { + name "ScoreStatus" + fullScreen MENU_FALSE + visible MENU_TRUE + rect 513 428 125 50 + style 4 + //background "ui/assets/hudback.tga" + border 1 + bordersize 1 + bordercolor .5 .5 1 1 + backcolor 0 0 1 .25 + + +itemDef { + name "r" + rect 5 5 30 15 + visible 1 + decoration + forecolor 1 1 1 1 + textscale 0.25 + ownerdraw CG_BLUE_SCORE + } + +itemDef { + name "r" + rect 42 5 30 15 + visible 1 + decoration + forecolor 0 0 1 1 + textscale 0.25 + ownerdraw CG_BLUE_NAME + } + + +itemDef { + name "r" + rect 5 25 30 15 + visible 1 + decoration + forecolor 1 1 1 1 + textscale 0.25 + ownerdraw CG_RED_SCORE + } + + itemDef { + name "r" + rect 42 25 30 15 + visible 1 + decoration + forecolor 1 0 0 1 + textscale 0.25 + ownerdraw CG_RED_NAME + } + } + + + +} + +// Close off other menu options // + +// CROSSHAIR STATUS BAR // + +menuDef { + name "crosshairStatus" + fullScreen MENU_FALSE + visible MENU_TRUE + rect 256 176 128 128 + style 0 + +itemDef { + name "crosshairHealth" + rect 0 0 128 64 + visible 1 + decoration + forecolor 0 0 0 0 + style 3 + ownerdraw CG_PLAYER_HEALTH_VALUE + background "ui/assets/crosshair_health.tga" + addColorRange -999 25 1 0 0 .5 + addColorRange 26 100 1 .75 0 .25 + addColorRange 101 999 1 1 1 .1 + } + + +itemDef { + name "crosshairAmmo" + rect 0 64 64 64 + visible 1 + decoration + style 3 + forecolor 0 0 0 0 + ownerdraw CG_PLAYER_AMMO_VALUE + background "ui/assets/crosshair_ammo.tga" + addColorRange -999 5 1 0 0 .5 + addColorRange 6 999 1 .75 0 .25 + } + +itemDef { + name "crosshairArmor" + rect 64 64 64 64 + visible 1 + decoration + style 3 + forecolor 1 1 1 .25 + forecolor 0 0 0 0 + ownerdraw CG_PLAYER_ARMOR_VALUE + background "ui/assets/crosshair_armor.tga" + addColorRange -999 25 1 0 0 .5 + addColorRange 26 100 1 .75 0 .25 + addColorRange 101 999 1 1 1 .1 + } +} + + + + + + +// MINI_STATUS // + +menuDef { + name "miniPlayerStatus" + fullScreen MENU_FALSE + visible MENU_TRUE + style 0 + rect 1 10 125 30 + style 1 + border 1 + bordersize 1 + bordercolor .5 .5 1 1 + backcolor 0 0 1 .25 + +itemDef { + name "miniAmmoValue" + rect 5 5 25 15 + visible 1 + decoration + textscale .33 + forecolor 1 1 1 1 + ownerdraw CG_PLAYER_AMMO_VALUE + addColorRange -999 5 1 0 0 1 + addColorRange 6 999 1 .75 0 1 + } + + +itemDef { + name "miniHealthValue" + rect 45 5 25 15 + visible 1 + decoration + forecolor 1 1 1 1 + textscale .33 + ownerdraw CG_PLAYER_HEALTH + addColorRange -999 25 1 0 0 1 + addColorRange 26 100 1 .75 0 1 + addColorRange 101 999 1 1 1 1 + } + +itemDef { + name "MiniArmorValue" + rect 90 5 25 15 + visible 1 + decoration + textscale .33 + ownerdraw CG_PLAYER_ARMOR_VALUE + addColorRange -999 25 1 0 0 1 + addColorRange 26 100 1 .75 0 1 + addColorRange 101 999 1 1 1 1 + } +} + +// MINI_CTF_STATUS // + +menuDef { + name "miniCTFStatus" + fullScreen MENU_FALSE + visible MENU_TRUE + style 0 + rect 129 10 125 30 + style 1 + border 1 + bordersize 1 + bordercolor .5 .5 1 1 + backcolor 0 0 1 .25 + +itemDef { + name "miniFlagBlue" + rect 5 5 16 16 + visible 1 + decoration + ownerdraw CG_BLUE_FLAGSTATUS + } + +itemDef { + name "miniBlueScore" + rect 10 5 30 15 + visible 1 + decoration + forecolor 1 1 1 1 + textscale 0.33 + ownerdraw CG_BLUE_SCORE + } + +itemDef { + name "miniFlagRed" + rect 65 5 16 16 + visible 1 + decoration + ownerdraw CG_RED_FLAGSTATUS + } + +itemDef { + name "miniRedScore" + rect 70 5 30 15 + visible 1 + decoration + forecolor 1 1 1 1 + textscale 0.33 + ownerdraw CG_RED_SCORE + } + +} + + +// MINI_SCORE // + +menuDef { + name "miniScore" + fullScreen MENU_FALSE + visible MENU_TRUE + style 0 + rect 257 10 125 30 + style 1 + border 1 + bordersize 1 + bordercolor .5 .5 1 1 + backcolor 0 0 1 .25 + + +itemDef { + name "b" + rect 5 5 16 16 + visible 1 + decoration + ownerdraw CG_SELECTEDPLAYER_STATUS + } + +itemDef { + name "b" + rect 30 5 30 15 + visible 1 + decoration + forecolor 1 1 1 1 + textscale .33 + ownerdraw CG_PLAYER_SCORE + } + +} + + + +// MINI_LOCATION // + + +menuDef { + name "miniLocation" + fullScreen MENU_FALSE + visible MENU_TRUE + style 0 + rect 385 10 125 30 + style 1 + border 1 + bordersize 1 + bordercolor .5 .5 1 1 + backcolor 0 0 1 .25 + + +itemDef { + name "b" + rect 5 5 30 15 + visible 1 + decoration + textscale .33 + ownerdraw CG_PLAYER_LOCATION + } + } + + + +// MINI_ITEM // + + +menuDef { + name "miniItem" + fullScreen MENU_FALSE + visible MENU_TRUE + style 0 + rect 513 10 125 30 + style 1 + border 1 + bordersize 1 + bordercolor .5 .5 1 1 + backcolor 0 0 1 .25 + + +itemDef { + name "b" + rect 5 5 30 30 + visible 1 + decoration + ownerdraw CG_PLAYER_ITEM + } + + +itemDef { + name "b" + rect 5 50 30 30 + visible 1 + decoration + ownerdraw CG_CTF_POWERUP + } + + + } + + + } + + +} + diff --git a/ta_ui/ingame.menu b/ta_ui/ingame.menu new file mode 100644 index 00000000..8814d223 --- /dev/null +++ b/ta_ui/ingame.menu @@ -0,0 +1,382 @@ +#include "ui/menudef.h" +{ + + assetGlobalDef { + font "fonts/font" 16 // font + smallFont "fonts/smallfont" 12 // font + bigFont "fonts/bigfont" 20 // font + cursor "ui/assets/3_cursor3" // cursor + gradientBar "ui/assets/gradientbar2.tga" // gradient bar + itemFocusSound "sound/misc/menu2.wav" // sound for item getting focus (via keyboard or mouse ) + + fadeClamp 1.0 // sets the fadeup alpha + fadeCycle 1 // how often fade happens in milliseconds + fadeAmount 0.1 // amount to adjust alpha per cycle + + shadowColor 0.1 0.1 0.1 0.25 // shadow color + } + + +\\ INGAME MENU \\ + + menuDef { + name "ingame" + visible 0 + fullScreen 0 + outOfBoundsClick // this closes the window if it gets a click out of the rectangle + rect 0 0 640 480 + focusColor 1 .75 0 1 + disableColor .5 .5 .5 1 + +itemDef { + name "ingameRect" + visible 1 + rect 0 0 620 26 + style 0 + border 1 + bordercolor .5 .5 .5 1 + forecolor 1 1 1 1 + backcolor 0 0 .75 .5 + visible 1 + decoration + } +itemdef + { + name about + text "About" + rect 5 0 53 30 + type 1 + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + textalign 1 + textalignx 27 + textaligny 22 + textscale .25 + forecolor 1 1 1 1 + backcolor .0 .17 .0 1 + visible 1 + action { open ingame_about } + mouseEnter { setitemcolor about backcolor .1 .37 .1 1 } + mouseExit { setitemcolor about backcolor .0 .17 .0 1 } + } +itemdef + { + name aboutframe + style 3 + rect 0 0 58 32 + background "ui/assets/ingameframea.tga" + visible 1 + decoration + } + + itemDef { + name join + text "Join" + type 1 + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + cvarTest "ui_singleplayeractive" + disableCvar { "1" } + rect 58 0 58 30 + textalign 1 + textalignx 29 + textaligny 22 + textscale .25 + forecolor 1 1 1 1 + backcolor 0 .17 0 1 + visible 1 + action { open ingame_join } + mouseEnter { setitemcolor join backcolor .1 .37 .1 1 } + mouseExit { setitemcolor join backcolor 0 .17 0 1 } + } + +itemdef + { + name joinframe + style 3 + rect 58 0 58 32 + background "ui/assets/ingameframe.tga" + visible 1 + decoration + } + + + itemDef { + name orders + text "Orders" + type 1 + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + rect 116 0 58 30 + textalign 1 + textalignx 29 + textaligny 22 + textscale .25 + cvarTest "g_gametype" + disableCvar { "0" ; "1" ; "2" ; "3" ; "8" } + visible 1 + forecolor 1 1 1 1 + backcolor 0 .17 0 1 + action { open ingame_orders } + mouseEnter { setitemcolor orders backcolor .1 .37 .1 1 } + mouseExit { setitemcolor orders backcolor 0 .17 0 1 } + } + +itemdef + { + name ordersframe + style 3 + rect 116 0 58 32 + background "ui/assets/ingameframe.tga" + visible 1 + decoration + } + + itemDef { + name addBot + text "Add Bot" + type 1 + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + rect 174 0 58 30 + textalign 1 + textalignx 29 + textaligny 22 + textscale .25 + cvarTest "ui_singleplayeractive" + disableCvar { "1" } + + forecolor 1 1 1 1 + backcolor 0 .17 0 1 + visible 1 + action { open ingame_addbot } + mouseEnter { setitemcolor addBot backcolor .1 .37 .1 1 } + mouseExit { setitemcolor addBot backcolor 0 .17 0 1 } + } +itemdef + { + name addBotframe + style 3 + rect 174 0 58 32 + background "ui/assets/ingameframe.tga" + visible 1 + decoration + } + +itemDef { + name player + text "Player" + type 1 + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + rect 232 0 58 30 + textalign 1 + textalignx 29 + textaligny 22 + textscale .25 + forecolor 1 1 1 1 + backcolor 0 .17 0 1 + visible 1 + action { open ingame_player } + mouseEnter { setitemcolor player backcolor .1 .37 .1 1 } + mouseExit { setitemcolor player backcolor 0 .17 0 1 } + } +itemdef + { + name playerframe + style 3 + rect 232 0 58 32 + textalign 1 + background "ui/assets/ingameframe.tga" + visible 1 + decoration + } + +itemDef { + name controls + text "Controls" + type 1 + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + rect 290 0 58 30 + textalign 1 + textalignx 29 + textaligny 22 + textscale .25 + forecolor 1 1 1 1 + backcolor 0 .17 0 1 + visible 1 + action { open ingame_controls } + mouseEnter { setitemcolor controls backcolor .1 .37 .1 1 } + mouseExit { setitemcolor controls backcolor 0 .17 0 1 } + } + +itemdef + { + name controlsframe + style 3 + rect 290 0 58 32 + textalign 1 + background "ui/assets/ingameframe.tga" + visible 1 + decoration + } + +itemDef { + name options + text "Options" + type 1 + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + rect 348 0 58 30 + textalign 1 + textalignx 29 + textaligny 22 + textscale .25 + forecolor 1 1 1 1 + backcolor 0 .17 0 1 + visible 1 + action { open ingame_options } + mouseEnter { setitemcolor options backcolor .1 .37 .1 1 } + mouseExit { setitemcolor options backcolor 0 .17 0 1 } + } + +itemdef + { + name optionsframe + style 3 + rect 348 0 58 32 + textalign 1 + background "ui/assets/ingameframe.tga" + visible 1 + decoration + } + +itemDef { + name system + text "System" + type 1 + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + rect 406 0 58 30 + textalign 1 + textalignx 29 + textaligny 22 + textscale .25 + forecolor 1 1 1 1 + backcolor 0 .17 0 1 + visible 1 + action { open ingame_system } + mouseEnter { setitemcolor system backcolor .1 .37 .1 1 } + mouseExit { setitemcolor system backcolor 0 .17 0 1 } + } + +itemdef + { + name systemframe + style 3 + rect 406 0 58 32 + textalign 1 + background "ui/assets/ingameframe.tga" + visible 1 + decoration + } + +itemDef { + name vote + text "Vote" + type 1 + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + cvarTest "ui_singleplayeractive" + disableCvar { "1" } + + rect 464 0 58 30 + textalign 1 + textalignx 29 + textaligny 22 + textscale .25 + forecolor 1 1 1 1 + backcolor 0 .17 0 1 + visible 1 + action { open ingame_vote } + mouseEnter { setitemcolor vote backcolor .1 .37 .1 1 } + mouseExit { setitemcolor vote backcolor 0 .17 0 1 } + } +itemdef + { + name voteframe + style 3 + rect 464 0 58 32 + textalign 1 + background "ui/assets/ingameframe.tga" + visible 1 + decoration + } + +itemDef { + name callvote + text "CallVote" + type 1 + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + cvarTest "ui_singleplayeractive" + disableCvar { "1" } + + rect 522 0 58 30 + textalign 1 + textalignx 29 + textaligny 22 + textscale .25 + forecolor 1 1 1 1 + backcolor 0 .17 0 1 + visible 1 + action { open ingame_callvote } + mouseEnter { setitemcolor callvote backcolor .1 .37 .1 1 } + mouseExit { setitemcolor callvote backcolor 0 .17 0 1 } + } +itemdef + { + name callvoteframe + style 3 + rect 522 0 58 32 + textalign 1 + background "ui/assets/ingameframe.tga" + visible 1 + decoration + } +itemDef { + name leave + text "Exit" + type 1 + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + rect 580 0 58 30 + textalign 1 + textalignx 29 + textaligny 22 + textscale .25 + forecolor 1 1 1 1 + backcolor 0 .17 0 1 + visible 1 + action { open ingame_leave } + mouseEnter { setitemcolor leave backcolor .1 .37 .1 1 } + mouseExit { setitemcolor leave backcolor 0 .17 0 1 } + } + +itemdef + { + name leave + style 3 + rect 580 0 58 32 + textalign 1 + background "ui/assets/ingameframe.tga" + visible 1 + decoration + } + + + +} + +} \ No newline at end of file diff --git a/ta_ui/ingame.txt b/ta_ui/ingame.txt new file mode 100644 index 00000000..fb523ba7 --- /dev/null +++ b/ta_ui/ingame.txt @@ -0,0 +1,16 @@ +// menu defs +// +{ + loadMenu { "ui/ingame.menu" } + loadMenu { "ui/ingame_vote.menu" } + loadMenu { "ui/ingame_about.menu" } + loadMenu { "ui/ingame_controls.menu" } + loadMenu { "ui/ingame_join.menu" } + loadMenu { "ui/ingame_options.menu" } + loadMenu { "ui/ingame_system.menu" } + loadMenu { "ui/ingame_leave.menu" } + loadMenu { "ui/ingame_player.menu" } + loadMenu { "ui/ingame_addbot.menu" } + loadMenu { "ui/ingame_callvote.menu" } + loadMenu { "ui/ingame_orders.menu" } +} diff --git a/ta_ui/ingame_about.menu b/ta_ui/ingame_about.menu new file mode 100644 index 00000000..fb3d348c --- /dev/null +++ b/ta_ui/ingame_about.menu @@ -0,0 +1,400 @@ +#include "ui/menudef.h" + +{ +\\ INGAME ABOUT BOX \\ + +menuDef { + name "ingame_about" + visible 0 + fullscreen 0 + outOfBoundsClick // this closes the window if it gets a click out of the rectangle + rect 0 30 256 295 + focusColor 1 .75 0 1 + style 1 + border 1 + +itemDef { + name window + rect 10 15 256 280 + style 1 + backcolor 0 .1 0 1 + visible 1 + decoration + } + + + +// FRAME // + + + +itemDef { + name window + rect 0 10 16 128 + style 3 + background "ui/assets/ingameleft.tga" + visible 1 + decoration + } + +itemDef { + name window + rect 3 0 65 16 + style 3 + background "ui/assets/ingameconnection.tga" + visible 1 + decoration + } +itemDef { + name window + rect 67 10 64 8 + style 3 + background "ui/assets/ingametop.tga" + visible 1 + decoration + } +itemDef { + name window + rect 131 10 96 8 + style 3 + background "ui/assets/ingametop.tga" + visible 1 + decoration + } + + +itemDef { + name window + rect 0 138 16 64 + style 3 + background "ui/assets/ingameleft.tga" + visible 1 + decoration + } + +itemDef { + name window + rect 0 202 16 64 + style 3 + background "ui/assets/ingameleft.tga" + visible 1 + decoration + } + +itemDef { + name window + rect 0 233 64 64 + style 3 + background "ui/assets/ingameleftcornerb.tga" + visible 1 + decoration + } + +itemDef { + name window + rect 212 10 64 64 + style 3 + background "ui/assets/ingamerightcorner.tga" + visible 1 + decoration + } + +itemDef { + name window + rect 212 233 64 64 + style 3 + background "ui/assets/ingamerightcornerb.tga" + visible 1 + decoration + } + +itemDef { + name window + rect 64 289 66 8 + style 3 + background "ui/assets/ingamebottom.tga" + visible 1 + decoration + } +itemDef { + name window + rect 128 289 96 8 + style 3 + background "ui/assets/ingamebottom.tga" + visible 1 + decoration + } +itemDef { + name window + rect 260 74 16 64 + style 3 + background "ui/assets/ingameright.tga" + visible 1 + decoration + } +itemDef { + name window + rect 260 138 16 64 + style 3 + background "ui/assets/ingameright.tga" + visible 1 + decoration + } +itemDef { + name window + rect 260 202 16 64 + style 3 + background "ui/assets/ingameright.tga" + visible 1 + decoration + } + +itemDef { + name about + rect 0 25 256 20 + name gametypefield + type 4 + style 0 + text "Map Name:" + cvar mapname + maxPaintChars 12 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 1 + decoration + } + + + +itemDef { + name about + rect 0 40 256 20 + style 0 + //type 4 + textalign ITEM_ALIGN_RIGHT + text "GameType:" + type ITEM_TYPE_MULTI + cvar "G_GAMETYPE" + cvarFloatList { "Free For All" 0 "Tournament" 1 "Free For All" 2 "Team Deathmatch" 3 "Capture the Flag" 4 "One Flag CTF" 5 "Overload" 6 "Harvester" 7 "Team Tournament" 8 } + + textalignx 128 + textaligny 12 + textscale .25 + backcolor 0 0 .75 .25 + visible 1 + decoration + } +itemDef { + name about + rect 0 70 256 20 + type 4 + style 0 + text "Capture Limit:" + cvarTest "G_GAMETYPE" + hideCvar { "0" ; "1" ; "2" ; "3" } + maxPaintChars 12 + cvar capturelimit + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 1 + decoration + } +itemDef { + name about + rect 0 70 256 20 + type 4 + style 0 + text "Frag Limit:" + cvarTest "G_GAMETYPE" + showCvar { "0" ; "1" ; "2" ; "3" } + maxPaintChars 12 + cvar fraglimit + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 1 + decoration + } +itemDef { + name about + rect 0 85 256 20 + type 4 + style 0 + text "Time Limit:" + maxPaintChars 12 + cvar timelimit + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 1 + decoration + } + + +itemDef { + name about + rect 20 100 256 20 + type 4 + style 0 + text "Red Team:" + maxPaintChars 12 + cvar g_redTeam + textalign ITEM_ALIGN_RIGHT + textalignx 108 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 1 + decoration + } +itemDef { + name about + rect 20 115 256 20 + type 4 + style 0 + text "Blue Team:" + maxPaintChars 12 + cvar g_blueTeam + textalign ITEM_ALIGN_RIGHT + textalignx 108 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 1 + decoration + } + +itemDef { + name about + rect 0 140 256 20 + type 4 + style 0 + text "Protocol:" + cvar protocol + maxPaintChars 12 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 1 + decoration + } + +itemDef { + name about + rect 0 155 256 20 + type 4 + style 0 + text "Max Clients:" + cvar sv_maxclients + maxPaintChars 12 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 1 + decoration + } + +itemDef { + name about + rect 0 170 256 20 + type 4 + style 0 + text "Host Name:" + cvar sv_hostname + maxPaintChars 12 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 1 + decoration + } + +itemDef { + name about + rect 0 205 256 20 + type 11 + style 0 + text "Password Required:" + cvar g_needpass + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 1 + decoration + } + +itemDef { + name about + rect 0 220 256 20 + type 11 + style 0 + text "DM Flags:" + cvar g_dmflags + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 1 + decoration + } +itemDef { + name about + rect 0 235 256 20 + type 11 + style 0 + text "Bot/Min Players:" + cvar bot_minplayers + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 1 + decoration + } + + +itemDef { + name about + rect 0 265 256 20 + type 4 + style 0 + text "Version:" + cvar version + maxPaintChars 32 + textalign ITEM_ALIGN_LEFT + textalignx 128 + textaligny 12 + textalign 1 + textscale .25 + forecolor 1 1 1 1 + visible 1 + decoration + } + + + + +} + + +} diff --git a/ta_ui/ingame_addbot.menu b/ta_ui/ingame_addbot.menu new file mode 100644 index 00000000..0a0aa530 --- /dev/null +++ b/ta_ui/ingame_addbot.menu @@ -0,0 +1,162 @@ +#include "ui/menudef.h" + +{ +\\ ADDBOT MENU \\ + +menuDef { + name "ingame_addbot" + visible 0 + fullscreen 0 + outOfBoundsClick // this closes the window if it gets a click out of the rectangle + rect 106 30 192 123 + disableColor .5 .5 .5 1 + focusColor 1 .75 0 1 + style 1 + border 1 + +itemDef { + name window + rect 10 15 172 108 + style 1 + backcolor 0 .1 0 1 + visible 1 + decoration + } + + + + + +itemDef { + name window + rect 0 10 64 64 + style 3 + background "ui/assets/ingameleftcorner.tga" + visible 1 + decoration + } + +itemDef { + name window + rect 64 0 65 16 + style 3 + background "ui/assets/ingameconnection.tga" + visible 1 + decoration + } +itemDef { + name window + rect 129 10 64 64 + style 3 + background "ui/assets/ingamerightcorner.tga" + visible 1 + decoration + } + +itemDef { + name window + rect 0 64 64 64 + style 3 + background "ui/assets/ingameleftcornerb.tga" + visible 1 + decoration + } +itemDef { + name window + rect 129 64 64 64 + style 3 + background "ui/assets/ingamerightcornerb.tga" + visible 1 + decoration + } +itemDef { + name window + rect 64 120 66 8 + style 3 + background "ui/assets/ingamebottom.tga" + visible 1 + decoration + } + + + +itemDef { + name gametypefield + style 0 + text "Name:" + ownerdraw UI_BOTNAME + rect 0 20 128 20 + textalign ITEM_ALIGN_RIGHT + textalignx 86 + textaligny 18 + textscale .25 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 1 + } + +itemDef { + name gametypefield + style 0 + text "Team:" + ownerdraw UI_REDBLUE + rect 0 40 128 20 + textalign ITEM_ALIGN_RIGHT + textalignx 86 + textaligny 18 + textscale .25 + cvarTest "g_gametype" + disableCvar { "0" ; "1" } + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 1 + } + +itemDef { + name gametypefield + style 0 + text "Skill:" + ownerdraw UI_BOTSKILL + rect 0 60 128 20 + textalign ITEM_ALIGN_RIGHT + textalignx 86 + textaligny 18 + textscale .25 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 1 + } + + +itemDef { + name ok + text "Add Bot" + type 1 + textscale .25 + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + rect 65 95 50 20 + textalign 1 + textalignx 25 + textaligny 15 + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + visible 1 + action { uiScript addBot ; uiScript closeingame } + mouseEnter { setitemcolor ok backcolor .1 .37 .1 1 } + mouseExit { setitemcolor ok backcolor .37 .1 .1 1 } + } + + + + + + + +} + + +} diff --git a/ta_ui/ingame_callvote.menu b/ta_ui/ingame_callvote.menu new file mode 100644 index 00000000..0c417d77 --- /dev/null +++ b/ta_ui/ingame_callvote.menu @@ -0,0 +1,491 @@ +#include "ui/menudef.h" + +{ +\\ CALL VOTE MENU \\ + +menuDef { + name "ingame_callvote" + visible 0 + fullscreen 0 + rect 347 30 290 190 + outOfBoundsClick // this closes the window if it gets a click out of the rectangle + focusColor 1 .75 0 1 + style 1 + border 1 + onopen { hide grpcallVote ; show misc ; uiScript loadArenas } + +itemDef { + name window + rect 10 15 270 175 + style 1 + backcolor 0 .1 0 1 + visible 1 + decoration + } + +// FRAME // + + +itemDef { + name window + rect 0 10 64 64 + style 3 + background "ui/assets/ingameleftcorner.tga" + visible 1 + decoration + } +itemDef { + name window + rect 64 10 64 8 + style 3 + background "ui/assets/ingametop.tga" + visible 1 + decoration + } +itemDef { + name window + rect 128 10 64 8 + style 3 + background "ui/assets/ingametop.tga" + visible 1 + decoration + } +itemDef { + name window + rect 226 10 64 64 + style 3 + background "ui/assets/ingamerightcorner.tga" + visible 1 + decoration + } +itemDef { + name window + rect 168 0 64 16 + style 3 + background "ui/assets/ingameconnection.tga" + visible 1 + decoration + } +itemDef { + name window + rect 0 128 64 64 + style 3 + background "ui/assets/ingameleftcornerb.tga" + visible 1 + decoration + } +itemDef { + name window + rect 226 128 64 64 + style 3 + background "ui/assets/ingamerightcornerb.tga" + visible 1 + decoration + } + +itemDef { + name window + rect 0 64 16 64 + style 3 + background "ui/assets/ingameleft.tga" + visible 1 + decoration + } + +itemDef { + name window + rect 274 64 16 64 + style 3 + background "ui/assets/ingameright.tga" + visible 1 + decoration + } + + + +itemDef { + name window + rect 64 184 64 8 + style 3 + background "ui/assets/ingamebottom.tga" + visible 1 + decoration + } +itemDef { + name window + rect 128 184 98 8 + style 3 + background "ui/assets/ingamebottom.tga" + visible 1 + decoration + } + + + +// BUTTONS // +itemDef { + name ctr_misc + text "Misc" + textscale .25 + group grpbutton + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + rect 20 25 45 20 + type 1 + textalign 1 + textalignx 22 + textaligny 16 + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + visible 1 + action { hide grpCallVote ; show misc } + mouseEnter { setitemcolor ctr_misc backcolor .1 .37 .1 1 } + mouseExit { setitemcolor ctr_misc backcolor .37 .1 .1 1 } + } +itemDef { + name ctr_gametype + text "Type" + textscale .25 + group grpbutton + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + rect 71 25 45 20 + type 1 + textalign 1 + textalignx 22 + textaligny 16 + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + visible 1 + action { hide grpCallVote ; show type } + mouseEnter { setitemcolor ctr_gametype backcolor .1 .37 .1 1 } + mouseExit { setitemcolor ctr_gametype backcolor .37 .1 .1 1 } + } +itemDef { + name ctr_kickplayer + text "Kick" + textscale .25 + group grpbutton + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + rect 122 25 45 20 + type 1 + textalign 1 + textalignx 22 + textaligny 16 + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + visible 1 + action { hide grpCallVote ; show kick } + mouseEnter { setitemcolor ctr_kickplayer backcolor .1 .37 .1 1 } + mouseExit { setitemcolor ctr_kickplayer backcolor .37 .1 .1 1 } + } +itemDef { + name ctr_changemap + text "Map" + textscale .25 + group grpbutton + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + rect 173 25 45 20 + type 1 + textalign 1 + textalignx 22 + textaligny 16 + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + visible 1 + action { hide grpCallVote ; show map } + mouseEnter { setitemcolor ctr_changemap backcolor .1 .37 .1 1 } + mouseExit { setitemcolor ctr_changemap backcolor .37 .1 .1 1 } + } +itemDef { + name ctr_changeleader + text "Leader" + textscale .25 + group grpbutton + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + rect 225 25 45 20 + type 1 + textalign 1 + textalignx 22 + textaligny 16 + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + visible 1 + action { hide grpCallVote ; show leader } + mouseEnter { setitemcolor ctr_changeleader backcolor .1 .37 .1 1 } + mouseExit { setitemcolor ctr_changeleader backcolor .37 .1 .1 1 } + } + + +// MISC // + +itemDef { + name misc + text "Restart Map" + group grpCallVote + textscale .25 + rect 0 70 290 20 + type 1 + textalign 1 + textalignx 145 + textaligny 16 + forecolor 1 1 1 1 + visible 0 + action { exec "cmd callvote map_restart" ; uiScript closeingame } + } + + +itemDef { + name misc + group grpCallVote + text "Next Map" + textscale .25 + rect 0 90 290 20 + type 1 + textalign 1 + textalignx 145 + textaligny 16 + forecolor 1 1 1 1 + visible 0 + action { exec "cmd callvote nextmap" ; uiScript closeingame } + } +itemDef { + name misc + group grpCallVote + text "Do Warmup" + textscale .25 + rect 0 110 290 20 + type 1 + textalign 1 + textalignx 145 + textaligny 16 + forecolor 1 1 1 1 + visible 0 + action { exec "cmd callvote g_doWarmup 1" ; uiScript closeingame } + } + + + +// Game Type // + +itemDef { + name type + group grpCallVote + text "Gametype:" + style 0 + textscale .25 + ownerdraw UI_NETGAMETYPE + rect 60 90 110 20 + textalign 0 + textalignx 0 + textaligny 16 + forecolor 1 1 1 1 + visible 0 + } +itemDef { + name type + text "OK" + type 1 + textscale .25 + group grpCallVote + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + rect 123 160 50 20 + textalign 1 + textalignx 25 + textaligny 15 + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + visible 0 + action { uiScript voteGame ; uiScript closeingame } + mouseEnter { setcolor backcolor .1 .37 .1 1 } + mouseExit { setcolor backcolor .37 .1 .1 1 } + } + + +// KICK PLAYER // + +itemDef { + name kick + group grpCallVote + text "Kick Player:" + textscale .25 + rect 20 50 110 20 + textalign 0 + textalignx 0 + textaligny 16 + forecolor 1 1 1 1 + visible 0 + decoration + action { } + } +itemDef { + name kick + group grpCallVote + rect 20 70 250 85 + style WINDOW_STYLE_FILLED + type ITEM_TYPE_LISTBOX + elementwidth 120 + elementheight 15 + textscale .25 + elementtype LISTBOX_TEXT + feeder FEEDER_PLAYER_LIST + border 1 + bordercolor .5 .5 .5 .5 + forecolor 1 1 1 1 + backcolor 0 0 .5 .25 + outlinecolor .1 .1 .7 .5 + visible 0 + mouseEnter { fadein message_arena ; setitemcolor kick bordercolor .7 0 0 1 } + mouseExit { fadeout message_arena ; setitemcolor kick bordercolor .5 .5 .5 1 } + } + +itemDef { + name kick + text "OK" + type 1 + textscale .25 + group grpCallVote + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + rect 123 160 50 20 + textalign 1 + textalignx 25 + textaligny 15 + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + visible 0 + action { uiScript voteKick ; uiScript closeingame } + mouseEnter { setcolor backcolor .1 .37 .1 1 } + mouseExit { setcolor backcolor .37 .1 .1 1 } + } + +// NEW MAP // + +itemDef { + name map + group grpCallVote + text "New Map:" + ownerdraw UI_ALLMAPS_SELECTION + textscale .25 + rect 20 50 110 20 + textalign 0 + textalignx 0 + textaligny 16 + forecolor 1 1 1 1 + decoration + visible 0 + action { } + } +itemDef { + name map + group grpCallVote + rect 20 70 250 85 + type ITEM_TYPE_LISTBOX + style WINDOW_STYLE_FILLED + elementwidth 120 + elementheight 15 + textscale .25 + elementtype LISTBOX_TEXT + feeder FEEDER_ALLMAPS + border 1 + bordercolor .5 .5 .5 .5 + forecolor 1 1 1 1 + backcolor 0 0 .5 .25 + outlinecolor .1 .1 .7 .5 + visible 0 + mouseEnter { fadein message_arena ; setitemcolor map bordercolor .7 0 0 1 } + mouseExit { fadeout message_arena ; setitemcolor map bordercolor .5 .5 .5 .5 } + } + + +itemDef { + name map + text "OK" + type 1 + textscale .25 + group grpCallVote + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + rect 123 160 50 20 + textalign 1 + textalignx 25 + textaligny 15 + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + visible 0 + action { uiScript voteMap ; uiScript closeingame } + mouseEnter { setcolor backcolor .1 .37 .1 1 } + mouseExit { setcolor backcolor .37 .1 .1 1 } + } + +// CHANGE LEADER // + +itemDef { + name leader + group grpCallVote + text "New Leader:" + textscale .25 + rect 20 50 110 20 + textalign 0 + textalignx 0 + textaligny 16 + forecolor 1 1 1 1 + visible 0 + decoration + action { } + } +itemDef { + name leader + group grpCallVote + rect 20 70 250 85 + style WINDOW_STYLE_FILLED + type ITEM_TYPE_LISTBOX + elementwidth 120 + elementheight 15 + textscale .25 + elementtype LISTBOX_TEXT + feeder FEEDER_TEAM_LIST + border 1 + bordercolor .5 .5 .5 .5 + forecolor 1 1 1 1 + backcolor 0 0 .5 .25 + outlinecolor .1 .1 .7 .5 + visible 0 + mouseEnter { fadein message_arena ; setitemcolor leader bordercolor .7 0 0 1 } + mouseExit { fadeout message_arena ; setitemcolor leader bordercolor .5 .5 .5 1 } + } + +itemDef { + name leader + text "OK" + type 1 + textscale .25 + group grpCallVote + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + rect 123 160 50 20 + textalign 1 + textalignx 25 + textaligny 15 + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + visible 0 + action { uiScript voteLeader ; uiScript closeingame } + mouseEnter { setcolor backcolor .1 .37 .1 1 } + mouseExit { setcolor backcolor .37 .1 .1 1 } + } + + + + + + + +} + + +} diff --git a/ta_ui/ingame_callvote2.menu b/ta_ui/ingame_callvote2.menu new file mode 100644 index 00000000..2726de99 --- /dev/null +++ b/ta_ui/ingame_callvote2.menu @@ -0,0 +1,192 @@ +#include "ui/menudef.h" + +{ +\\ CALL VOTE MENU \\ + +menuDef { + name "ingame_callvote" + visible 0 + fullscreen 0 + rect 374 30 255 350 + outOfBoundsClick // this closes the window if it gets a click out of the rectangle + focusColor 1 .75 0 1 + style 1 + border 1 + + onOpen { uiScript loadArenas } + + +itemDef { + name window + rect 0 0 255 350 + style 1 + border 1 + bordercolor .5 .5 .5 1 + backcolor 0 0 .75 .25 + visible 1 + decoration + } + + + + +itemDef { + name maprestart + text "Map Restart:" + type 11 + textscale .25 + cvar "map_restart" + rect 20 10 110 20 + textalign 0 + textalignx 0 + textaligny 16 + forecolor 1 1 1 1 + visible 1 + } + + +itemDef { + name maprestart + text "Next Map:" + type 11 + textscale .25 + cvar "nextmap" + rect 20 30 110 20 + textalign 0 + textalignx 0 + textaligny 16 + forecolor 1 1 1 1 + visible 1 + action { } + } +itemDef { + name maprestart + text "Do Warmup:" + type 11 + textscale .25 + rect 20 50 110 20 + textalign 0 + textalignx 0 + textaligny 16 + forecolor 1 1 1 1 + visible 1 + action { } + } + +itemDef { + name gametype + text "Gametype:" + style 0 + textscale .25 + ownerdraw UI_NETGAMETYPE + rect 20 70 110 20 + textalign 0 + textalignx 0 + textaligny 16 + forecolor 1 1 1 1 + visible 1 + } + +itemDef { + name window + rect 0 92 255 120 + style 0 + border 1 + bordercolor .5 .5 .5 1 + visible 1 + decoration + } + +itemDef { + name maprestart + text "Kick Player:" + textscale .25 + rect 20 95 110 20 + //ownerdraw UI_ALLMAPS_SELECTION + textalign 0 + textalignx 0 + textaligny 16 + forecolor 1 1 1 1 + visible 1 + action { } + } +itemDef { + name playerlist + rect 20 115 225 85 + style WINDOW_STYLE_FILLED + type ITEM_TYPE_LISTBOX + elementwidth 120 + elementheight 15 + textscale .25 + elementtype LISTBOX_TEXT + border 1 + bordercolor .5 .5 .5 .5 + forecolor 1 1 1 1 + backcolor 0 0 .5 .25 + outlinecolor .1 .1 .7 .5 + visible 1 + mouseEnter { fadein message_arena ; setitemcolor playerlist bordercolor .7 0 0 1 } + mouseExit { fadeout message_arena ; setitemcolor playerlist bordercolor .5 .5 .5 1 } + } + +itemDef { + name maprestart + text "New Map:" + ownerdraw UI_ALLMAPS_SELECTION + textscale .25 + rect 20 215 110 20 + textalign 0 + textalignx 0 + textaligny 16 + forecolor 1 1 1 1 + visible 1 + action { } + } +itemDef { + name maplist + rect 20 235 225 85 + type ITEM_TYPE_LISTBOX + style WINDOW_STYLE_FILLED + elementwidth 120 + elementheight 15 + textscale .25 + elementtype LISTBOX_TEXT + feeder FEEDER_MAPS + border 1 + bordercolor .5 .5 .5 .5 + forecolor 1 1 1 1 + backcolor 0 0 .5 .25 + outlinecolor .1 .1 .7 .5 + visible 1 + mouseEnter { fadein message_arena ; setitemcolor maplist bordercolor .7 0 0 1 } + mouseExit { fadeout message_arena ; setitemcolor maplist bordercolor .5 .5 .5 .5 } + } + + + +itemDef { + name ok + text "OK" + textscale .25 + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/button_red.tga" + rect 103 325 50 20 + textalign 1 + textalignx 25 + textaligny 15 + forecolor 1 1 1 1 + visible 1 + action { close ingame_callvote ; close ingame ; open ingame } + } + + + + + + + +} + + +} diff --git a/ta_ui/ingame_controls.menu b/ta_ui/ingame_controls.menu new file mode 100644 index 00000000..52c02edb --- /dev/null +++ b/ta_ui/ingame_controls.menu @@ -0,0 +1,1412 @@ +#include "ui/menudef.h" + +{ +\\ SETUP MENU \\ + +menuDef { + name "ingame_controls" + visible 0 + fullscreen 0 + outOfBoundsClick // this closes the window if it gets a click out of the rectangle + rect 131 30 375 335 + focusColor 1 .75 0 1 + style 1 + border 1 + onClose { + uiScript saveControls + } + onopen { hide grpControls ; show look ; uiScript loadControls } + +itemDef { + name window + rect 10 15 355 320 + style 1 + backcolor 0 .1 0 1 + visible 1 + decoration + } + + + +// FRAME // + + +itemDef { + name window + rect 0 10 64 64 + style 3 + background "ui/assets/ingameleftcorner.tga" + visible 1 + decoration + } +itemDef { + name window + rect 64 10 96 8 + style 3 + background "ui/assets/ingametop.tga" + visible 1 + decoration + } +itemDef { + name window + rect 219 10 96 8 + style 3 + background "ui/assets/ingametop.tga" + visible 1 + decoration + } +itemDef { + name window + rect 311 10 64 64 + style 3 + background "ui/assets/ingamerightcorner.tga" + visible 1 + decoration + } +itemDef { + name window + rect 155 0 64 16 + style 3 + background "ui/assets/ingameconnection.tga" + visible 1 + decoration + } +itemDef { + name window + rect 0 274 64 64 + style 3 + background "ui/assets/ingameleftcornerb.tga" + visible 1 + decoration + } +itemDef { + name window + rect 311 274 64 64 + style 3 + background "ui/assets/ingamerightcornerb.tga" + visible 1 + decoration + } + +itemDef { + name window + rect 0 64 16 64 + style 3 + background "ui/assets/ingameleft.tga" + visible 1 + decoration + } + + +itemDef { + name window + rect 0 128 16 64 + style 3 + background "ui/assets/ingameleft.tga" + visible 1 + decoration + } + +itemDef { + name window + rect 0 192 16 96 + style 3 + background "ui/assets/ingameleft.tga" + visible 1 + decoration + } + +itemDef { + name window + rect 359 64 16 64 + style 3 + background "ui/assets/ingameright.tga" + visible 1 + decoration + } + + +itemDef { + name window + rect 359 128 16 64 + style 3 + background "ui/assets/ingameright.tga" + visible 1 + decoration + } + +itemDef { + name window + rect 359 192 16 96 + style 3 + background "ui/assets/ingameright.tga" + visible 1 + decoration + } + + + +itemDef { + name window + rect 64 330 96 8 + style 3 + background "ui/assets/ingamebottom.tga" + visible 1 + decoration + } +itemDef { + name window + rect 160 330 64 8 + style 3 + background "ui/assets/ingamebottom.tga" + visible 1 + decoration + } +itemDef { + name window + rect 224 330 87 8 + style 3 + background "ui/assets/ingamebottom.tga" + visible 1 + decoration + } + + + + + + + + + + + + + + + + + +itemDef { + name keyBindStatus + rect 0 55 300 15 + ownerdraw UI_KEYBINDSTATUS + text " " + forecolor 1 .75 0 1 + textscale .20 + textalignx 187 + textalign 1 + textaligny 10 + visible 0 + decoration + } + + +itemDef { + name ctr_look + text "Look" + type 1 + textscale .25 + group grpControlbutton + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + rect 25 25 50 20 + textalign 1 + textalignx 25 + textaligny 16 + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + visible 1 + action { hide grpControls ; show look } + mouseEnter { setitemcolor ctr_look backcolor .1 .37 .1 1 } + mouseExit { setitemcolor ctr_look backcolor .37 .1 .1 1 } + } + + itemDef { + name look + group grpControls + type ITEM_TYPE_BIND + text "Lookup:" + cvar "+lookup" + rect 0 85 320 15 + textalign ITEM_ALIGN_RIGHT + textalignx 187 + maxPaintChars 20 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + + itemDef { + name look + group grpControls + type ITEM_TYPE_BIND + text "Look Down:" + cvar "+lookdown" + rect 0 100 320 12 + textalign ITEM_ALIGN_RIGHT + textalignx 187 + maxPaintChars 20 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + + itemDef { + name look + group grpControls + type ITEM_TYPE_BIND + text "Mouse Look:" + cvar "+mlook" + rect 0 115 320 15 + textalign ITEM_ALIGN_RIGHT + textalignx 187 + maxPaintChars 20 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + + itemDef { + name look + group grpControls + type ITEM_TYPE_BIND + text "Centerview:" + cvar "centerview" + rect 0 130 320 15 + textalign ITEM_ALIGN_RIGHT + textalignx 187 + maxPaintChars 20 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + + itemDef { + name look + group grpControls + type ITEM_TYPE_BIND + text "ZoomView:" + cvar "+zoom" + rect 0 145 320 15 + textalign ITEM_ALIGN_RIGHT + textalignx 187 + maxPaintChars 20 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + + itemDef { + name look + group grpControls + type ITEM_TYPE_YESNO + text "Free Look:" + cvar "cl_freelook" + rect 0 160 320 15 + textalign ITEM_ALIGN_RIGHT + textalignx 187 + maxPaintChars 20 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 0 + mouseenter { show yesno_message } + mouseexit { hide yesno_message } + } + + +itemDef { + name ctr_move + text "Move" + type 1 + textscale .25 + group grpControlbutton + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + rect 80 25 50 20 + textalign 1 + textalignx 25 + textaligny 16 + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + visible 1 + action { hide grpControls ; show move } + mouseEnter { setitemcolor ctr_move backcolor .1 .37 .1 1 } + mouseExit { setitemcolor ctr_move backcolor .37 .1 .1 1 } + } + + + itemDef { + name move + group grpControls + type ITEM_TYPE_YESNO + text "Always Run:" + cvar "cl_run" + rect 0 85 320 15 + textalign ITEM_ALIGN_RIGHT + textalignx 187 + maxPaintChars 20 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 0 + mouseenter { show yesno_message } + mouseexit { hide yesno_message } + } + itemDef { + name move + group grpControls + type ITEM_TYPE_BIND + text "Run / Walk:" + cvar "+speed" + rect 0 100 320 15 + textalign ITEM_ALIGN_RIGHT + textalignx 187 + maxPaintChars 20 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 0 + } + + itemDef { + name move + group grpControls + type ITEM_TYPE_BIND + text "Forward:" + cvar "+forward" + rect 0 115 320 15 + textalign ITEM_ALIGN_RIGHT + textalignx 187 + maxPaintChars 20 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + + itemDef { + name move + group grpControls + type ITEM_TYPE_BIND + text "Backpedal:" + cvar "+back" + rect 0 130 320 15 + textalign ITEM_ALIGN_RIGHT + textalignx 187 + maxPaintChars 20 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + + itemDef { + name move + group grpControls + type ITEM_TYPE_BIND + text "Move Left:" + cvar "+moveleft" + rect 0 145 320 15 + textalign ITEM_ALIGN_RIGHT + textalignx 187 + maxPaintChars 20 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + + itemDef { + name move + group grpControls + type ITEM_TYPE_BIND + text "Move Right:" + cvar "+moveright" + rect 0 160 320 15 + textalign ITEM_ALIGN_RIGHT + textalignx 187 + maxPaintChars 20 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + + itemDef { + name move + group grpControls + type ITEM_TYPE_BIND + text "Jump:" + cvar "+moveup" + rect 0 175 320 15 + textalign ITEM_ALIGN_RIGHT + textalignx 187 + maxPaintChars 20 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + + itemDef { + name move + group grpControls + type ITEM_TYPE_BIND + text "Crouch:" + cvar "+movedown" + rect 0 190 320 15 + textalign ITEM_ALIGN_RIGHT + textalignx 187 + maxPaintChars 20 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + + itemDef { + name move + group grpControls + type ITEM_TYPE_BIND + text "Turn Left:" + cvar "+left" + rect 0 205 320 15 + textalign ITEM_ALIGN_RIGHT + textalignx 187 + maxPaintChars 20 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + + itemDef { + name move + group grpControls + type ITEM_TYPE_BIND + text "Turn Right:" + cvar "+right" + rect 0 220 320 15 + textalign ITEM_ALIGN_RIGHT + textalignx 187 + maxPaintChars 20 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + + itemDef { + name move + group grpControls + type ITEM_TYPE_BIND + text "Strafe:" + cvar "+strafe" + rect 0 235 320 15 + textalign ITEM_ALIGN_RIGHT + textalignx 187 + maxPaintChars 20 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + + +itemDef { + name ctr_shoot + text "Shoot" + type 1 + textscale .25 + group grpControlbutton + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + rect 135 25 50 20 + textalign 1 + textalignx 25 + textaligny 16 + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + visible 1 + action { hide grpControls ; show shoot } + mouseEnter { setitemcolor ctr_shoot backcolor .1 .37 .1 1 } + mouseExit { setitemcolor ctr_shoot backcolor .37 .1 .1 1 } + } + itemDef { + name shoot + group grpControls + type ITEM_TYPE_BIND + text "Attack:" + cvar "+attack" + rect 0 75 320 15 + textalign ITEM_ALIGN_RIGHT + textalignx 187 + maxPaintChars 20 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + + itemDef { + name shoot + group grpControls + type ITEM_TYPE_BIND + text "Previous Weapon:" + cvar "weapprev" + rect 0 90 320 15 + textalign ITEM_ALIGN_RIGHT + textalignx 187 + maxPaintChars 20 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + + itemDef { + name shoot + group grpControls + type ITEM_TYPE_BIND + text "Next Weapon:" + cvar "weapnext" + rect 0 105 320 15 + textalign ITEM_ALIGN_RIGHT + textalignx 187 + maxPaintChars 20 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + + itemDef { + name shoot + group grpControls + type ITEM_TYPE_YESNO + text "Autoswitch:" + cvar "cg_autoswitch" + rect 0 120 320 15 + textalign ITEM_ALIGN_RIGHT + textalignx 187 + maxPaintChars 20 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 0 + mouseenter { show yesno_message } + mouseexit { hide yesno_message } + } + + itemDef { + name shoot + group grpControls + type ITEM_TYPE_BIND + text "Gauntlet:" + cvar "weapon 1" + rect 0 135 320 15 + textalign ITEM_ALIGN_RIGHT + textalignx 187 + maxPaintChars 20 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + + itemDef { + name shoot + group grpControls + type ITEM_TYPE_BIND + text "Machinegun:" + cvar "weapon 2" + rect 0 150 320 15 + textalign ITEM_ALIGN_RIGHT + textalignx 187 + maxPaintChars 20 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + + itemDef { + name shoot + group grpControls + type ITEM_TYPE_BIND + text "Shotgun:" + cvar "weapon 3" + rect 0 165 320 15 + textalign ITEM_ALIGN_RIGHT + textalignx 187 + maxPaintChars 20 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + + itemDef { + name shoot + group grpControls + type ITEM_TYPE_BIND + text "Grenade Launcher:" + cvar "weapon 4" + rect 0 180 320 15 + textalign ITEM_ALIGN_RIGHT + textalignx 187 + maxPaintChars 20 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + + itemDef { + name shoot + group grpControls + type ITEM_TYPE_BIND + text "Rocket Launcher:" + cvar "weapon 5" + rect 0 195 320 15 + textalign ITEM_ALIGN_RIGHT + textalignx 187 + maxPaintChars 20 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + + itemDef { + name shoot + group grpControls + type ITEM_TYPE_BIND + text "Lightning Gun:" + cvar "weapon 6" + rect 0 210 320 15 + textalign ITEM_ALIGN_RIGHT + textalignx 187 + maxPaintChars 20 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + + itemDef { + name shoot + group grpControls + type ITEM_TYPE_BIND + text "Railgun:" + cvar "Weapon 7" + rect 0 225 320 15 + textalign ITEM_ALIGN_RIGHT + textalignx 187 + maxPaintChars 20 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + itemDef { + name shoot + group grpControls + type ITEM_TYPE_BIND + text "Plasma Gun:" + cvar "weapon 8" + rect 0 240 320 15 + textalign ITEM_ALIGN_RIGHT + textalignx 187 + maxPaintChars 20 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + itemDef { + name shoot + group grpControls + type ITEM_TYPE_BIND + text "BFG:" + cvar "weapon 9" + rect 0 255 320 15 + textalign ITEM_ALIGN_RIGHT + textalignx 187 + maxPaintChars 20 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + + itemDef { + name shoot + group grpControls + type ITEM_TYPE_BIND + text "Nail Gun:" + cvar "weapon 11" + rect 0 270 320 15 + textalign ITEM_ALIGN_RIGHT + textalignx 187 + maxPaintChars 20 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + + itemDef { + name shoot + group grpControls + type ITEM_TYPE_BIND + text "Proximity Mine:" + cvar "weapon 12" + rect 0 285 320 15 + textalign ITEM_ALIGN_RIGHT + textalignx 187 + maxPaintChars 20 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + + itemDef { + name shoot + group grpControls + type ITEM_TYPE_BIND + text "Chain Gun:" + cvar "weapon 13" + rect 0 300 320 15 + textalign ITEM_ALIGN_RIGHT + textalignx 187 + maxPaintChars 20 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + + +itemDef { + name ctr_miscellaneous + text "Misc" + type 1 + textscale .25 + group grpControlbutton + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + rect 190 25 50 20 + textalign 1 + textalignx 25 + textaligny 16 + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + visible 1 + action { hide grpControls ; show misc } + mouseEnter { setitemcolor ctr_miscellaneous backcolor .1 .37 .1 1 } + mouseExit { setitemcolor ctr_miscellaneous backcolor .37 .1 .1 1 } + } + + itemDef { + name misc + group grpControls + type ITEM_TYPE_BIND + text "Show Scores:" + cvar "+scores" + rect 0 75 320 15 + textalign ITEM_ALIGN_RIGHT + textalignx 187 + maxPaintChars 20 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + itemDef { + name misc + group grpControls + type ITEM_TYPE_BIND + text "Scroll Scores Up:" + cvar "scoresUp" + rect 0 90 320 15 + textalign ITEM_ALIGN_RIGHT + textalignx 187 + maxPaintChars 20 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + itemDef { + name misc + group grpControls + type ITEM_TYPE_BIND + text "Scroll Scores Down:" + cvar "scoresDown" + rect 0 105 320 15 + textalign ITEM_ALIGN_RIGHT + textalignx 187 + maxPaintChars 20 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + + itemDef { + name misc + group grpControls + type ITEM_TYPE_BIND + text "Use Item:" + cvar "+button2" + rect 0 120 320 15 + textalign ITEM_ALIGN_RIGHT + textalignx 187 + maxPaintChars 20 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + + + itemDef { + name misc + group grpControls + type ITEM_TYPE_SLIDER + text "Sensitivity:" + cvarfloat "sensitivity" 5 1 30 + rect 0 135 320 15 + textalign ITEM_ALIGN_RIGHT + textalignx 187 + maxPaintChars 20 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 0 + mouseenter { show slider_message } + mouseexit { hide slider_message } + } + + itemDef { + name misc + group grpControls + type ITEM_TYPE_YESNO + text "Invert Mouse:" + cvar "ui_mousePitch" + rect 0 150 320 15 + textalign ITEM_ALIGN_RIGHT + textalignx 187 + maxPaintChars 20 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 0 + action { uiScript update ui_mousePitch } + mouseenter { show yesno_message } + mouseexit { hide yesno_message } + } + + itemDef { + name misc + group grpControls + type ITEM_TYPE_YESNO + text "Smooth Mouse:" + cvar "m_filter" + rect 0 165 320 15 + textalign ITEM_ALIGN_RIGHT + textalignx 187 + maxPaintChars 20 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 0 + mouseenter { show yesno_message } + mouseexit { hide yesno_message } + } + + + +itemDef { + name ctr_orders + text "Orders" + type 1 + textscale .25 + group grpControlbutton + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + rect 245 25 50 20 + textalign 1 + textalignx 25 + textaligny 16 + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + visible 1 + action { hide grpControls ; show orders } + mouseEnter { setitemcolor ctr_orders backcolor .1 .37 .1 1 } + mouseExit { setitemcolor ctr_orders backcolor .37 .1 .1 1 } + } + + + + itemDef { + name orders + group grpControls + type ITEM_TYPE_BIND + text "Next Team Member:" + cvar "nextTeamMember" + rect 0 85 320 15 + textalign ITEM_ALIGN_RIGHT + textalignx 187 + maxPaintChars 20 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + itemDef { + name orders + group grpControls + type ITEM_TYPE_BIND + text "Next Team Order:" + cvar "nextOrder" + rect 0 100 320 15 + textalign ITEM_ALIGN_RIGHT + textalignx 187 + maxPaintChars 20 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + itemDef { + name orders + group grpControls + type ITEM_TYPE_BIND + text "Confirm Order:" + cvar "confirmOrder" + rect 0 115 320 15 + textalign ITEM_ALIGN_RIGHT + textalignx 187 + maxPaintChars 20 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + + itemDef { + name orders + group grpControls + type ITEM_TYPE_BIND + text "Deny Order:" + cvar "denyOrder" + rect 0 130 320 15 + textalign ITEM_ALIGN_RIGHT + textalignx 187 + maxPaintChars 20 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + + + itemDef { + name orders + group grpControls + type ITEM_TYPE_BIND + text "Offense:" + cvar "taskOffense" + rect 0 145 320 15 + textalign ITEM_ALIGN_RIGHT + textalignx 187 + maxPaintChars 20 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + + itemDef { + name orders + group grpControls + type ITEM_TYPE_BIND + text "Defense:" + cvar "taskDefense" + rect 0 160 320 15 + textalign ITEM_ALIGN_RIGHT + textalignx 187 + maxPaintChars 20 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 0 + } + + itemDef { + name orders + group grpControls + type ITEM_TYPE_BIND + text "Patrol:" + cvar "taskPatrol" + rect 0 175 320 15 + textalign ITEM_ALIGN_RIGHT + textalignx 187 + maxPaintChars 20 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + itemDef { + name orders + group grpControls + type ITEM_TYPE_BIND + text "Camp:" + cvar "taskCamp" + rect 0 190 320 15 + textalign ITEM_ALIGN_RIGHT + textalignx 187 + maxPaintChars 20 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + itemDef { + name orders + group grpControls + type ITEM_TYPE_BIND + text "Follow:" + cvar "taskFollow" + rect 0 205 320 15 + textalign ITEM_ALIGN_RIGHT + textalignx 187 + maxPaintChars 20 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + itemDef { + name orders + group grpControls + type ITEM_TYPE_BIND + text "Retrieve:" + cvar "taskRetrieve" + rect 0 220 320 15 + textalign ITEM_ALIGN_RIGHT + textalignx 187 + maxPaintChars 20 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + + itemDef { + name orders + group grpControls + type ITEM_TYPE_BIND + text "Escort:" + cvar "taskEscort" + rect 0 235 320 15 + textalign ITEM_ALIGN_RIGHT + textalignx 187 + textaligny 12 + maxPaintChars 20 + textscale .25 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + + itemDef { + name orders + group grpControls + type ITEM_TYPE_BIND + text "I Have the Flag!" + cvar "taskOwnFlag" + rect 0 250 320 15 + textalign ITEM_ALIGN_RIGHT + textalignx 187 + maxPaintChars 20 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + itemDef { + name orders + group grpControls + type ITEM_TYPE_BIND + text "Target Suicide" + cvar "taskSuicide" + rect 0 265 320 15 + textalign ITEM_ALIGN_RIGHT + textalignx 187 + maxPaintChars 20 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + +itemDef { + name ctr_chat + text "Chat" + type 1 + textscale .25 + group grpControlbutton + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + rect 300 25 50 20 + textalign 1 + textalignx 25 + textaligny 16 + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + visible 1 + action { hide grpControls ; show chat } + mouseEnter { setitemcolor ctr_chat backcolor .1 .37 .1 1 } + mouseExit { setitemcolor ctr_chat backcolor .37 .1 .1 1 } + } + itemDef { + name chat + group grpControls + type ITEM_TYPE_BIND + text "Gesture:" + cvar "+button3" + rect 0 75 320 15 + textalign ITEM_ALIGN_RIGHT + textalignx 187 + maxPaintChars 20 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + + itemDef { + name chat + group grpControls + type ITEM_TYPE_BIND + text "Chat:" + cvar "messagemode" + rect 0 90 320 15 + textalign ITEM_ALIGN_RIGHT + textalignx 187 + maxPaintChars 20 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + + itemDef { + name chat + group grpControls + type ITEM_TYPE_BIND + text "Team Chat:" + cvar "messagemode2" + rect 0 105 320 15 + textalign ITEM_ALIGN_RIGHT + textalignx 187 + maxPaintChars 20 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + + itemDef { + name chat + group grpControls + type ITEM_TYPE_BIND + text "Target Chat:" + cvar "messagemode3" + rect 0 120 320 15 + textalign ITEM_ALIGN_RIGHT + textalignx 187 + maxPaintChars 20 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 0 + } + + itemDef { + name chat + group grpControls + type ITEM_TYPE_BIND + text "Attack Chat:" + cvar "messagemode4" + rect 0 135 320 15 + textalign ITEM_ALIGN_RIGHT + textalignx 187 + maxPaintChars 20 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + +itemDef { + name chat + group grpControls + type ITEM_TYPE_BIND + text "Voice Taunt:" + cvar "tauntTaunt" + rect 0 150 320 15 + textalign ITEM_ALIGN_RIGHT + textalignx 187 + maxPaintChars 20 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + +itemDef { + name yesno_message + rect 0 55 300 15 + text "Select the Item to Toggle to Yes or No" + forecolor 1 .75 0 1 + textscale .20 + textalignx 187 + textalign 1 + textaligny 10 + visible 0 + decoration + } + +itemDef { + name slider_message + rect 0 55 300 15 + text "Drag the Slider to Increase and Decrease" + forecolor 1 .75 0 1 + textscale .20 + textalignx 187 + textalign 1 + textaligny 10 + visible 0 + decoration + } + + + + + +} + + +} diff --git a/ta_ui/ingame_join.menu b/ta_ui/ingame_join.menu new file mode 100644 index 00000000..3f0dd09a --- /dev/null +++ b/ta_ui/ingame_join.menu @@ -0,0 +1,144 @@ +#include "ui/menudef.h" + + +{ +\\ INGAME_JOIN MENU \\ + + menuDef { + name "ingame_join" + visible 1 + fullScreen 0 + outOfBoundsClick // this closes the window if it gets a click out of the rectangle + rect 23 30 128 128 + focusColor 1 .75 0 1 + + +itemDef { + name team + style WINDOW_STYLE_FILLED + rect 10 15 108 113 + + forecolor 1 1 1 1 + backcolor 0 .1 0 1 + visible 1 + decoration + } + + + + + +// FRAME // + + +itemDef { + name window + rect 0 10 64 64 + style 3 + background "ui/assets/ingameleftcorner.tga" + visible 1 + decoration + } +itemDef { + name window + rect 64 10 64 64 + style 3 + background "ui/assets/ingamerightcorner.tga" + visible 1 + decoration + } +itemDef { + name window + rect 30 0 65 16 + style 3 + background "ui/assets/ingameconnection.tga" + visible 1 + decoration + } +itemDef { + name window + rect 0 64 64 64 + style 3 + background "ui/assets/ingameleftcornerb.tga" + visible 1 + decoration + } +itemDef { + name window + rect 64 64 64 64 + style 3 + background "ui/assets/ingamerightcornerb.tga" + visible 1 + decoration + } + + + + + +itemDef { + name team + text "Team RED" + type 1 + style 2 + rect 0 20 128 20 + textalign 1 + textalignx 64 + textaligny 18 + textscale .25 + forecolor 1 1 1 1 + visible 1 + action { exec "cmd team red" ; uiScript closeingame } + } + + itemDef { + name team + text "Team BLUE" + type 1 + style 2 + rect 0 40 128 20 + textalign 1 + textalignx 64 + textaligny 18 + textscale .25 + forecolor 1 1 1 1 + visible 1 + action { exec "cmd team blue" ; uiScript closeingame } + } + + + itemDef { + name team + text "Auto TEAM" + type 1 + style 2 + rect 0 60 128 20 + textalign 1 + textalignx 64 + textaligny 18 + textscale .25 + forecolor 1 1 1 1 + visible 1 + action { exec "cmd team free" ; uiScript closeingame } + } + + + itemDef { + name team + text "Spectate" + type 1 + style 2 + rect 0 80 128 20 + textalign 1 + textalignx 64 + textaligny 18 + textscale .25 + forecolor 1 1 1 1 + visible 1 + action { exec "cmd team s" ; uiScript closeingame } + } + + +} + +} \ No newline at end of file diff --git a/ta_ui/ingame_leave.menu b/ta_ui/ingame_leave.menu new file mode 100644 index 00000000..70f82971 --- /dev/null +++ b/ta_ui/ingame_leave.menu @@ -0,0 +1,344 @@ +#include "ui/menudef.h" + + +{ +\\ INGAME_LEAVE MENU \\ + + menuDef { + name "ingame_leave" + visible 1 + fullScreen 0 + outOfBoundsClick // this closes the window if it gets a click out of the rectangle + rect 511 30 128 125 + focusColor 1 .75 0 1 + onOpen { show grpMenu ; hide grpConfirm } + + + +itemDef { + name leave + style WINDOW_STYLE_FILLED + rect 10 15 108 110 + backcolor 0 .1 0 1 + visible 1 + decoration + } + + +// FRAME // + + +itemDef { + name window + rect 0 10 64 64 + style 3 + background "ui/assets/ingameleftcorner.tga" + visible 1 + decoration + } + +itemDef { + name window + rect 112 10 16 64 + style 3 + background "ui/assets/ingameright.tga" + visible 1 + decoration + } +itemDef { + name window + rect 64 0 63 16 + style 3 + background "ui/assets/ingameconnection.tga" + visible 1 + decoration + } + +itemDef { + name window + rect 0 64 64 64 + style 3 + background "ui/assets/ingameleftcornerb.tga" + visible 1 + decoration + } +itemDef { + name window + rect 64 64 64 64 + style 3 + background "ui/assets/ingamerightcornerb.tga" + visible 1 + decoration + } + + + +itemDef { + name leave + text "Main Menu" + group grpMenu + style 2 + rect 0 30 128 20 + type 1 + textalign 1 + textalignx 64 + textaligny 18 + textscale .25 + forecolor 1 1 1 1 + visible 1 + action { hide grpMenu ; show leaveConfirm } + } + + itemDef { + name leave + group grpMenu + text "Restart" + style 2 + type 1 + rect 0 50 128 20 + textalign 1 + textalignx 65 + textaligny 18 + textscale .25 + forecolor 1 1 1 1 + visible 1 + action { hide grpMenu ; show restartConfirm } + } + + itemDef { + name leave + group grpMenu + type 1 + text "Quit" + style 2 + rect 0 70 128 20 + textalign 1 + textalignx 64 + textaligny 18 + textscale .25 + forecolor 1 1 1 1 + visible 1 + action { hide grpMenu ; show quitConfirm } + } + + +// CONFIRMS // + + +itemDef { + name leaveConfirm + text "Exit to" + group grpConfirm + style 2 + rect 0 33 128 20 + textalign 1 + textalignx 64 + textaligny 18 + textscale .25 + decoration + forecolor 1 1 1 1 + visible 1 + } +itemDef { + name leaveConfirm + text "Main Menu?" + group grpConfirm + style 2 + rect 0 50 128 20 + textalign 1 + textalignx 64 + textaligny 18 + textscale .25 + decoration + forecolor 1 1 1 1 + visible 1 + } + + +itemDef { + name leaveConfirm + text "Yes" + group grpConfirm + type 1 + textscale .25 + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + rect 18 80 40 20 + textalign 1 + textalignx 20 + textaligny 15 + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + visible 1 + action { uiScript leave } + mouseEnter { setitemcolor ok backcolor .1 .37 .1 1 } + mouseExit { setitemcolor ok backcolor .37 .1 .1 1 } + } + +itemDef { + name leaveConfirm + text "No" + group grpConfirm + type 1 + textscale .25 + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + rect 70 80 40 20 + textalign 1 + textalignx 20 + textaligny 15 + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + visible 1 + action { hide grpConfirm ; show grpMenu } + mouseEnter { setitemcolor ok backcolor .1 .37 .1 1 } + mouseExit { setitemcolor ok backcolor .37 .1 .1 1 } + } + + +itemDef { + name restartConfirm + text "Want to" + group grpConfirm + style 2 + rect 0 33 128 20 + textalign 1 + textalignx 64 + textaligny 18 + textscale .25 + decoration + forecolor 1 1 1 1 + visible 1 + } +itemDef { + name restartConfirm + text "Restart Map?" + group grpConfirm + style 2 + rect 0 50 128 20 + textalign 1 + textalignx 64 + textaligny 18 + textscale .25 + decoration + forecolor 1 1 1 1 + visible 1 + } + + + +itemDef { + name restartConfirm + text "Yes" + group grpConfirm + type 1 + textscale .25 + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + rect 18 80 40 20 + textalign 1 + textalignx 20 + textaligny 15 + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + visible 1 + action { exec "map_restart" ; close ingame_leave ; close ingame } + mouseEnter { setitemcolor ok backcolor .1 .37 .1 1 } + mouseExit { setitemcolor ok backcolor .37 .1 .1 1 } + } + +itemDef { + name restartConfirm + text "No" + group grpConfirm + type 1 + textscale .25 + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + rect 70 80 40 20 + textalign 1 + textalignx 20 + textaligny 15 + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + visible 1 + action { hide grpConfirm ; show grpMenu } + mouseEnter { setitemcolor ok backcolor .1 .37 .1 1 } + mouseExit { setitemcolor ok backcolor .37 .1 .1 1 } + } + +itemDef { + name quitConfirm + text "Want to" + group grpConfirm + style 2 + rect 0 33 128 20 + textalign 1 + textalignx 64 + textaligny 18 + textscale .25 + forecolor 1 1 1 1 + decoration + visible 1 + } +itemDef { + name quitConfirm + text "Quit Game?" + group grpConfirm + style 2 + rect 0 50 128 20 + textalign 1 + textalignx 64 + textaligny 18 + textscale .25 + forecolor 1 1 1 1 + decoration + visible 1 + } + + +itemDef { + name quitConfirm + text "Yes" + group grpConfirm + type 1 + textscale .25 + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + rect 18 80 40 20 + textalign 1 + textalignx 20 + textaligny 15 + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + visible 1 + action { uiScript quit } + mouseEnter { setitemcolor ok backcolor .1 .37 .1 1 } + mouseExit { setitemcolor ok backcolor .37 .1 .1 1 } + } + +itemDef { + name quitConfirm + text "No" + group grpConfirm + type 1 + textscale .25 + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + rect 70 80 40 20 + textalign 1 + textalignx 20 + textaligny 15 + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + visible 1 + action { hide grpConfirm ; show grpMenu } + mouseEnter { setitemcolor ok backcolor .1 .37 .1 1 } + mouseExit { setitemcolor ok backcolor .37 .1 .1 1 } + } + + + +} + +} \ No newline at end of file diff --git a/ta_ui/ingame_options.menu b/ta_ui/ingame_options.menu new file mode 100644 index 00000000..b369e3b5 --- /dev/null +++ b/ta_ui/ingame_options.menu @@ -0,0 +1,469 @@ +#include "ui/menudef.h" + +{ +\\ SETUP MENU \\ + +menuDef { + name "ingame_options" + visible 0 + fullscreen 0 + outOfBoundsClick // this closes the window if it gets a click out of the rectangle + rect 265 30 210 375 + focusColor 1 .75 0 1 + style 1 + border 1 + disableColor .5 .5 .5 0 + +itemDef { + name window + rect 10 15 200 360 + style 1 + backcolor 0 .1 0 1 + visible 1 + decoration + } + +// FRAME // + + +itemDef { + name window + rect 0 10 64 64 + style 3 + background "ui/assets/ingameleftcorner.tga" + visible 1 + decoration + } +itemDef { + name window + rect 64 10 32 8 + style 3 + background "ui/assets/ingametop.tga" + visible 1 + decoration + } +itemDef { + name window + rect 144 10 32 8 + style 3 + background "ui/assets/ingametop.tga" + visible 1 + decoration + } + +itemDef { + name window + rect 157 10 64 64 + style 3 + background "ui/assets/ingamerightcorner.tga" + visible 1 + decoration + } +itemDef { + name window + rect 74 0 73 16 + style 3 + background "ui/assets/ingameconnection.tga" + visible 1 + decoration + } +itemDef { + name window + rect 0 314 64 64 + style 3 + background "ui/assets/ingameleftcornerb.tga" + visible 1 + decoration + } +itemDef { + name window + rect 157 314 64 64 + style 3 + background "ui/assets/ingamerightcornerb.tga" + visible 1 + decoration + } + +itemDef { + name window + rect 0 64 16 84 + style 3 + background "ui/assets/ingameleft.tga" + visible 1 + decoration + } + + +itemDef { + name window + rect 0 148 16 84 + style 3 + background "ui/assets/ingameleft.tga" + visible 1 + decoration + } + +itemDef { + name window + rect 0 232 16 84 + style 3 + background "ui/assets/ingameleft.tga" + visible 1 + decoration + } + +itemDef { + name window + rect 205 64 16 84 + style 3 + background "ui/assets/ingameright.tga" + visible 1 + decoration + } + + +itemDef { + name window + rect 205 148 16 84 + style 3 + background "ui/assets/ingameright.tga" + visible 1 + decoration + } +itemDef { + name window + rect 205 232 16 84 + style 3 + background "ui/assets/ingameright.tga" + visible 1 + decoration + } + + +itemDef { + name window + rect 64 370 64 8 + style 3 + background "ui/assets/ingamebottom.tga" + visible 1 + decoration + } +itemDef { + name window + rect 128 370 64 8 + style 3 + background "ui/assets/ingamebottom.tga" + visible 1 + decoration + } + + + +itemDef { + name options + group grpOptions + type ITEM_TYPE_YESNO + text "Simple Items:" + cvar "cg_simpleItems" + rect 0 20 200 20 + textalign ITEM_ALIGN_RIGHT + textalignx 143 + textaligny 17 + textscale .25 + forecolor 1 1 1 1 + visible 1 + } + + itemDef { + name options + group grpOptions + type ITEM_TYPE_YESNO + text "Marks On Walls:" + cvar "cg_marks" + rect 0 37 200 20 + textalign ITEM_ALIGN_RIGHT + textalignx 143 + textaligny 17 + textscale .25 + forecolor 1 1 1 1 + visible 1 + } + itemDef { + name options + group grpOptions + type ITEM_TYPE_YESNO + text "Show Floating Scores:" + cvar "cg_scorePlums" + rect 0 54 200 20 + textalign ITEM_ALIGN_RIGHT + textalignx 143 + textaligny 17 + textscale .25 + forecolor 1 1 1 1 + visible 1 + } + + itemDef { + name options + group grpOptions + type ITEM_TYPE_MULTI + text "Ejecting Brass:" + cvar "cg_brassTime" + cvarFloatList { "High" 2500 "Med" 1250 "Off" 0 } + rect 0 71 200 20 + textalign ITEM_ALIGN_RIGHT + textalignx 143 + textaligny 17 + textscale .25 + forecolor 1 1 1 1 + visible 1 + } + + itemDef { + name options + group grpOptions + type ITEM_TYPE_YESNO + text "Dynamic Lights:" + cvar "r_dynamiclight" + rect 0 88 200 20 + textalign ITEM_ALIGN_RIGHT + textalignx 143 + textaligny 17 + textscale .25 + forecolor 1 1 1 1 + visible 1 + } + + itemDef { + name options + group grpOptions + type ITEM_TYPE_YESNO + text "Identify Target:" + cvar "cg_drawCrosshairNames" + rect 0 105 200 20 + textalign ITEM_ALIGN_RIGHT + textalignx 143 + textaligny 17 + textscale .25 + forecolor 1 1 1 1 + visible 1 + } + + itemDef { + name options + group grpOptions + type ITEM_TYPE_YESNO + text "Draw Gun:" + cvar "cg_drawGun" + rect 0 122 200 20 + textalign ITEM_ALIGN_RIGHT + textalignx 143 + textaligny 17 + textscale .25 + forecolor 1 1 1 1 + visible 1 + } + + itemDef { + name options + group grpOptions + type ITEM_TYPE_YESNO + text "Low Quality Sky:" + cvar "r_fastsky" + rect 0 139 200 20 + textalign ITEM_ALIGN_RIGHT + textalignx 143 + textaligny 17 + textscale .25 + forecolor 1 1 1 1 + visible 1 + } + + itemDef { + name options + group grpOptions + type ITEM_TYPE_YESNO + text "Sync Every Frame:" + cvar "weapon 5" + rect 0 156 200 20 + textalign ITEM_ALIGN_RIGHT + textalignx 143 + textaligny 17 + textscale .25 + forecolor 1 1 1 1 + visible 1 + } + + itemDef { + name options + group grpOptions + type ITEM_TYPE_YESNO + text "Force Player Models:" + cvar "cg_forceModel" + rect 0 173 200 20 + textalign ITEM_ALIGN_RIGHT + textalignx 143 + textaligny 17 + textscale .25 + forecolor 1 1 1 1 + visible 1 + } + + itemDef { + name options + group grpOptions + type ITEM_TYPE_YESNO + text "Draw Team Overlay:" + cvar "cg_drawTeamOverlay" + rect 0 190 200 20 + textalign ITEM_ALIGN_RIGHT + textalignx 143 + textaligny 17 + textscale .25 + forecolor 1 1 1 1 + visible 1 + } + itemDef { + name options + group grpOptions + type ITEM_TYPE_YESNO + text "Auto Download:" + cvar "cl_allowDownload" + rect 0 207 200 20 + textalign ITEM_ALIGN_RIGHT + textalignx 143 + textaligny 17 + textscale .25 + forecolor 1 1 1 1 + visible 1 + } + itemDef { + name options + group grpOptions + type ITEM_TYPE_YESNO + text "Show Time:" + cvar "cg_drawTimer" + rect 0 224 200 20 + textalign ITEM_ALIGN_RIGHT + textalignx 143 + textaligny 17 + textscale .25 + forecolor 1 1 1 1 + visible 1 + } +itemDef { + name options + group grpOptions + type ITEM_TYPE_YESNO + text "Voices Off:" + cvar "cg_NoVoiceChats" + rect 0 241 200 20 + textalign ITEM_ALIGN_RIGHT + textalignx 143 + textaligny 17 + textscale .25 + forecolor 1 1 1 1 + visible 1 + } +itemDef { + name options + group grpOptions + type ITEM_TYPE_YESNO + text "Taunts Off:" + cvar "cg_noTaunt" + rect 0 258 200 20 + textalign ITEM_ALIGN_RIGHT + textalignx 143 + textaligny 17 + textscale .25 + forecolor 1 1 1 1 + visible 1 + } +itemDef { + name options + group grpOptions + type ITEM_TYPE_YESNO + text "Voice Text Off:" + cvar "cg_noVoiceText" + rect 0 275 200 20 + textalign ITEM_ALIGN_RIGHT + textalignx 143 + textaligny 17 + textscale .25 + forecolor 1 1 1 1 + visible 1 + } + +itemDef { + name options + group grpOptions + type ITEM_TYPE_YESNO + text "Team Chats Only:" + cvar "cg_teamChatsOnly" + rect 0 292 200 20 + textalign ITEM_ALIGN_RIGHT + textalignx 143 + textaligny 17 + textscale .25 + forecolor 1 1 1 1 + visible 1 + } + +itemDef { + name options + group grpOptions + type ITEM_TYPE_MULTI + text "Statusbar:" + cvar "cg_hudfiles" + cvarStrList { Normal "ui/hud.txt" Small "ui/hud2.txt" } + rect 0 309 200 20 + textalign ITEM_ALIGN_RIGHT + textalignx 143 + textaligny 17 + textscale .25 + forecolor 1 1 1 1 + visible 1 + action { exec "loadhud" } + } + +itemDef { + name options + group grpOptions + type ITEM_TYPE_YESNO + text "In Game Videos:" + cvar "r_inGameVideo" + rect 0 326 200 20 + textalign ITEM_ALIGN_RIGHT + textalignx 143 + textaligny 17 + textscale .25 + forecolor 1 1 1 1 + visible 1 + } + + +itemDef { + name options + group grpOptions + text "Crosshair:" + ownerdraw UI_CROSSHAIR + rect 143 343 20 17 + textalign ITEM_ALIGN_RIGHT + textalignx 0 + textaligny 17 + textscale .25 + forecolor 1 1 1 1 + visible 1 + } + + + + + + + + +} + + +} diff --git a/ta_ui/ingame_orders.menu b/ta_ui/ingame_orders.menu new file mode 100644 index 00000000..d5b2c389 --- /dev/null +++ b/ta_ui/ingame_orders.menu @@ -0,0 +1,481 @@ +#include "ui/menudef.h" + +{ +\\ SETUP MENU \\ + +menuDef { + name "ingame_orders" + visible 0 + fullscreen 0 + rect 45 30 200 240 + outOfBoundsClick // this closes the window if it gets a click out of the rectangle + focusColor 1 .75 0 1 + style 1 + border 1 + disableColor .5 .5 .5 1 + onopen { hide grpicon ; show attack } + +itemDef { + name window + rect 10 15 180 225 + style 1 + backcolor 0 .1 0 1 + visible 1 + decoration + } + + +// FRAME // + + +itemDef { + name window + rect 0 10 64 64 + style 3 + background "ui/assets/ingameleftcorner.tga" + visible 1 + decoration + } +itemDef { + name window + rect 136 10 64 64 + style 3 + background "ui/assets/ingamerightcorner.tga" + visible 1 + decoration + } +itemDef { + name window + rect 64 0 72 16 + style 3 + background "ui/assets/ingameconnection.tga" + visible 1 + decoration + } +itemDef { + name window + rect 0 177 64 64 + style 3 + background "ui/assets/ingameleftcornerb.tga" + visible 1 + decoration + } +itemDef { + name window + rect 136 177 64 64 + style 3 + background "ui/assets/ingamerightcornerb.tga" + visible 1 + decoration + } +itemDef { + name window + rect 0 64 16 64 + style 3 + background "ui/assets/ingameleft.tga" + visible 1 + decoration + } +itemDef { + name window + rect 0 128 16 64 + style 3 + background "ui/assets/ingameleft.tga" + visible 1 + decoration + } + +itemDef { + name window + rect 184 64 16 64 + style 3 + background "ui/assets/ingameright.tga" + visible 1 + decoration + } +itemDef { + name window + rect 184 128 16 64 + style 3 + background "ui/assets/ingameright.tga" + visible 1 + decoration + } +itemDef { + name window + rect 64 233 96 8 + style 3 + background "ui/assets/ingamebottom.tga" + visible 1 + decoration + } + + + +itemDef { + name orders + group grporders + text "Name:" + style 0 + ownerdraw UI_SELECTEDPLAYER + // As cycle through playerlist selected player in HUD cycles // + rect 10 20 200 20 + textalign 0 + textalignx 10 + textaligny 17 + textscale .25 + forecolor 1 1 1 1 + visible 1 + } + +// COMMAND ICONS // + + itemDef { + name attack + group grpicon + style 3 + rect 84 45 32 32 + background "ui/assets/statusbar/assault.tga" + visible 0 + } + itemDef { + name defend + group grpicon + style 3 + rect 84 45 32 32 + background "ui/assets/statusbar/defend.tga" + visible 0 + } + itemDef { + name patrol + group grpicon + style 3 + rect 84 45 32 32 + background "ui/assets/statusbar/patrol.tga" + visible 0 + } + itemDef { + name follow + group grpicon + style 3 + rect 84 45 32 32 + background "ui/assets/statusbar/follow.tga" + visible 0 + } + itemDef { + name camp + group grpicon + style 3 + rect 84 45 32 32 + background "ui/assets/statusbar/camp.tga" + visible 0 + } + itemDef { + name leader + group grpicon + style 3 + rect 84 45 32 32 + background "ui/assets/statusbar/team_leader.tga" + visible 0 + } +itemDef { + name retrieve + group grpicon + style 3 + rect 84 45 32 32 + background "ui/assets/statusbar/retrieve.tga" + visible 0 + } +itemDef { + name escort + group grpicon + style 3 + rect 84 45 32 32 + background "ui/assets/statusbar/escort.tga" + visible 0 + } + + + + + +// GIVE ORDERS TO OTHERS // + + + + itemDef { + name orders + group grporders + text "Attack Enemy Base" + rect 0 80 200 20 + type 1 + textalign 1 + textalignx 100 + textaligny 17 + textscale .25 + forecolor 1 1 1 1 + visible 1 + mouseenter { hide grpicon ; show attack } + action { + uiScript voiceOrders "cmd vtell %d offense; +button7; wait; -button7" + uiScript voiceOrdersTeam "cmd vsay_team offense; +button7; wait; -button7" + } + ownerdrawflag UI_SHOW_LEADER + } + + itemDef { + name orders + group grporders + type 1 + text "Defend Our Base" + rect 0 100 200 20 + textalign 1 + textalignx 100 + textaligny 17 + textscale .25 + forecolor 1 1 1 1 + visible 1 + mouseenter { hide grpicon ; show defend } + action { + uiScript voiceOrders "cmd vtell %d defend; +button8; wait; -button8" + uiScript voiceOrdersTeam "cmd vsay_team defend; +button8; wait; -button8" + } + ownerdrawflag UI_SHOW_LEADER + } + + itemDef { + name orders + group grporders + type 1 + text "Patrol" + rect 0 120 200 20 + textalign 1 + textalignx 100 + textaligny 17 + textscale .25 + forecolor 1 1 1 1 + visible 1 + mouseenter { hide grpicon ; show patrol } + action { + uiScript voiceOrders "cmd vtell %d patrol; +button9; wait; -button9" + uiScript voiceOrdersTeam "cmd vsay_team patrol; +button9; wait; -button9" + } + ownerdrawflag UI_SHOW_LEADER + } + + itemDef { + name orders + group grporders + type 1 + text "Follow Me" + rect 0 140 200 20 + textalign 1 + textalignx 100 + textaligny 17 + textscale .25 + forecolor 1 1 1 1 + visible 1 + mouseenter { hide grpicon ; show follow } + action { + uiScript voiceOrders "cmd vtell %d followme; +button10; wait; -button10" + uiScript voiceOrdersTeam "cmd vsay_team followme; +button10; wait; -button10" + } + ownerdrawflag UI_SHOW_LEADER + } + itemDef { + name orders + group grporders + text "Camp Here" + type 1 + rect 0 160 200 20 + textalign 1 + textalignx 100 + textaligny 17 + textscale .25 + forecolor 1 1 1 1 + visible 1 + mouseenter { hide grpicon ; show camp } + action { + uiScript voiceOrders "cmd vtell %d camp" + uiScript voiceOrdersTeam "cmd vsay_team camp" + } + ownerdrawflag UI_SHOW_LEADER + } + itemDef { + name orders + group grporders + type 1 + text "Escort the Carrier" + rect 0 180 200 20 + textalign 1 + textalignx 100 + textaligny 17 + textscale .25 + forecolor 1 1 1 1 + visible 1 + cvarTest "g_gametype" + hideCvar { "6" ; "7" } + mouseenter { hide grpicon ; show escort } + action { + uiScript voiceOrders "cmd vtell %d followflagcarrier" + uiScript voiceOrdersTeam "cmd vsay_team followflagcarrier" + } + ownerdrawflag UI_SHOW_LEADER + } + itemDef { + name orders + group grporders + type 1 + text "Retrieve Our Flag" + rect 0 200 200 20 + textalign 1 + textalignx 100 + textaligny 17 + textscale .25 + forecolor 1 1 1 1 + visible 1 + cvarTest "g_gametype" + hideCvar { "5" ; "6" ; "7" } + mouseenter { hide grpicon ; show retrieve } + action { + uiScript voiceOrders "cmd vtell %d returnflag" + uiScript voiceOrdersTeam "cmd vsay_team returnflag" + } + ownerdrawflag UI_SHOW_LEADER + } + + +// CHANGE YOUR STATUS // + + + + itemDef { + name orders + group grporders + text "I'M ATTACKING" + rect 0 80 200 20 + textalign 1 + textalignx 100 + type 1 + textaligny 17 + textscale .25 + forecolor 1 1 1 1 + visible 1 + mouseenter { hide grpicon ; show attack } + action { exec "teamtask 1 ; cmd vsay_team onoffense" ; uiScript closeingame } + ownerdrawflag UI_SHOW_NOTLEADER + } + + itemDef { + name orders + group grporders + text "I'M DEFENDING" + type 1 + rect 0 100 200 20 + textalign 1 + textalignx 100 + textaligny 17 + textscale .25 + forecolor 1 1 1 1 + visible 1 + mouseenter { hide grpicon ; show defend } + action { exec "teamtask 2 ; cmd vsay_team ondefense" ; uiScript closeingame } + ownerdrawflag UI_SHOW_NOTLEADER + } + + itemDef { + name orders + group grporders + type 1 + text "I'M PATROLLING" + rect 0 120 200 20 + textalign 1 + textalignx 100 + textaligny 17 + textscale .25 + forecolor 1 1 1 1 + visible 1 + mouseenter { hide grpicon ; show patrol } + action { exec "teamtask 3 ; cmd vsay_team onpatrol" ; uiScript closeingame } + ownerdrawflag UI_SHOW_NOTLEADER + } + + itemDef { + name orders + group grporders + text "I'M FOLLOWING" + type 1 + rect 0 140 200 20 + textalign 1 + textalignx 100 + textaligny 17 + textscale .25 + forecolor 1 1 1 1 + visible 1 + mouseenter { hide grpicon ; show follow } + action { exec "teamtask 4 ; cmd vsay_team onfollow" ; uiScript closeingame } + ownerdrawflag UI_SHOW_NOTLEADER + } + itemDef { + name orders + group grporders + text "I'M CAMPING" + rect 0 160 200 20 + type 1 + textalign 1 + textalignx 100 + textaligny 17 + textscale .25 + forecolor 1 1 1 1 + visible 1 + mouseenter { hide grpicon ; show camp } + action { exec "teamtask 7 ; cmd vsay_team oncamp" ; uiScript closeingame } + ownerdrawflag UI_SHOW_NOTLEADER + } + itemDef { + name orders + group grporders + text "I'M ESCORTING" + type 1 + rect 0 180 200 20 + textalign 1 + textalignx 100 + textaligny 17 + textscale .25 + forecolor 1 1 1 1 + cvarTest "g_gametype" + hideCvar { "6" ; "7" } + visible 1 + mouseenter { hide grpicon ; show retrieve } + action { exec "teamtask 6 ; cmd vsay_team onfollowcarrier" ; uiScript closeingame } + ownerdrawflag UI_SHOW_NOTLEADER + } + itemDef { + name orders + group grporders + text "I'M RETRIEVING" + type 1 + rect 0 200 200 20 + textalign 1 + textalignx 100 + textaligny 17 + textscale .25 + forecolor 1 1 1 1 + visible 1 + cvarTest "g_gametype" + hideCvar { "5" ; "6" ; "7" } + mouseenter { hide grpicon ; show escort } + action { exec "teamtask 5 ; cmd vsay_team onreturnflag" ; uiScript closeingame } + ownerdrawflag UI_SHOW_NOTLEADER + } + + + + + + + +} + + +} diff --git a/ta_ui/ingame_orders2.menu b/ta_ui/ingame_orders2.menu new file mode 100644 index 00000000..82bcfc68 --- /dev/null +++ b/ta_ui/ingame_orders2.menu @@ -0,0 +1,199 @@ +#include "ui/menudef.h" + +{ +\\ SETUP MENU \\ + +menuDef { + name "ingame_orders" + visible 0 + fullscreen 0 + rect 45 30 200 240 + outOfBoundsClick // this closes the window if it gets a click out of the rectangle + focusColor 1 .75 0 1 + style 1 + border 1 + +itemDef { + name window + rect 0 0 200 240 + style 1 + border 1 + bordercolor .5 .5 .5 1 + backcolor 0 0 .75 .25 + visible 1 + decoration + } + + +itemDef { + name orders + group grporders + type ITEM_TYPE_YESNO + text "Name:" + cvar "+weapprev" + rect 0 5 200 20 + textalign ITEM_ALIGN_RIGHT + textalignx 80 + textaligny 17 + textscale .25 + forecolor 1 1 1 1 + visible 1 + } + + itemDef { + name orders + group grporders + type ITEM_TYPE_YESNO + text "Follow:" + cvar "weapnext" + rect 0 25 200 20 + textalign ITEM_ALIGN_RIGHT + textalignx 80 + textaligny 17 + textscale .25 + forecolor 1 1 1 1 + visible 1 + } + + itemDef { + name orders + group grporders + type ITEM_TYPE_YESNO + text "Go To:" + cvar "cg_autoswitch" + rect 0 45 200 20 + textalign ITEM_ALIGN_RIGHT + textalignx 80 + textaligny 17 + textscale .25 + forecolor 1 1 1 1 + visible 1 + } + + itemDef { + name orders + group grporders + type ITEM_TYPE_YESNO + text "Get:" + cvar "weapon 1" + rect 0 65 200 20 + textalign ITEM_ALIGN_RIGHT + textalignx 80 + textaligny 17 + textscale .25 + forecolor 1 1 1 1 + visible 1 + } + + itemDef { + name orders + group grporders + type ITEM_TYPE_YESNO + text "Patrol From:" + cvar "weapon 2" + rect 0 85 200 20 + textalign ITEM_ALIGN_RIGHT + textalignx 80 + textaligny 17 + textscale .25 + forecolor 1 1 1 1 + visible 1 + } + + itemDef { + name orders + group grporders + type ITEM_TYPE_YESNO + text "Patrol To:" + cvar "weapon 3" + rect 0 105 200 20 + textalign ITEM_ALIGN_RIGHT + textalignx 80 + textaligny 17 + textscale .25 + forecolor 1 1 1 1 + visible 1 + } + + itemDef { + name orders + group grporders + type ITEM_TYPE_YESNO + text "Camp Near:" + cvar "weapon 4" + rect 0 125 200 20 + textalign ITEM_ALIGN_RIGHT + textalignx 80 + textaligny 17 + textscale .25 + forecolor 1 1 1 1 + visible 1 + } + + itemDef { + name orders + group grporders + type ITEM_TYPE_YESNO + text "Defend:" + cvar "weapon 5" + rect 0 145 200 20 + textalign ITEM_ALIGN_RIGHT + textalignx 80 + textaligny 17 + textscale .25 + forecolor 1 1 1 1 + visible 1 + } + + itemDef { + name orders + group grporders + type ITEM_TYPE_YESNO + text "Attack:" + cvar "weapon 6" + rect 0 165 200 20 + textalign ITEM_ALIGN_RIGHT + textalignx 80 + textaligny 17 + textscale .25 + forecolor 1 1 1 1 + visible 1 + } + + itemDef { + name orders + group grporders + type ITEM_TYPE_YESNO + text "Leader:" + cvar "Weapon 7" + rect 0 185 200 20 + textalign ITEM_ALIGN_RIGHT + textalignx 80 + textaligny 17 + textscale .25 + forecolor 1 1 1 1 + visible 1 + } + + +itemDef { + name ok + text "OK" + textscale .25 + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/button_red.tga" + rect 75 215 50 20 + textalign 1 + textalignx 25 + textaligny 15 + forecolor 1 1 1 1 + visible 1 + action { close ingame_orders ; close ingame ; open ingame } + } + + +} + + +} diff --git a/ta_ui/ingame_player.menu b/ta_ui/ingame_player.menu new file mode 100644 index 00000000..874d22a0 --- /dev/null +++ b/ta_ui/ingame_player.menu @@ -0,0 +1,259 @@ +#include "ui/menudef.h" + +{ +\\ SETUP MENU \\ + +menuDef { + name "ingame_player" + visible 0 + fullscreen 0 + outOfBoundsClick // this closes the window if it gets a click out of the rectangle + rect 125 30 290 170 + focusColor 1 .75 0 1 + style 1 + border 1 + onOpen { uiScript update "ui_GetName" } + onClose { uiScript update "ui_SetName" } + + +itemDef { + name window + rect 10 15 270 155 + style 1 + backcolor 0 .1 0 1 + visible 1 + decoration + } + + +// FRAME // + + +itemDef { + name window + rect 0 10 64 64 + style 3 + background "ui/assets/ingameleftcorner.tga" + visible 1 + decoration + } +itemDef { + name window + rect 64 10 64 8 + style 3 + background "ui/assets/ingametop.tga" + visible 1 + decoration + } +itemDef { + name window + rect 168 10 64 8 + style 3 + background "ui/assets/ingametop.tga" + visible 1 + decoration + } +itemDef { + name window + rect 226 10 64 64 + style 3 + background "ui/assets/ingamerightcorner.tga" + visible 1 + decoration + } +itemDef { + name window + rect 104 0 64 16 + style 3 + background "ui/assets/ingameconnection.tga" + visible 1 + decoration + } +itemDef { + name window + rect 0 108 64 64 + style 3 + background "ui/assets/ingameleftcornerb.tga" + visible 1 + decoration + } +itemDef { + name window + rect 226 108 64 64 + style 3 + background "ui/assets/ingamerightcornerb.tga" + visible 1 + decoration + } + +itemDef { + name window + rect 0 64 16 64 + style 3 + background "ui/assets/ingameleft.tga" + visible 1 + decoration + } + +itemDef { + name window + rect 274 64 16 64 + style 3 + background "ui/assets/ingameright.tga" + visible 1 + decoration + } + + + +itemDef { + name window + rect 64 164 64 8 + style 3 + background "ui/assets/ingamebottom.tga" + visible 1 + decoration + } +itemDef { + name window + rect 128 164 98 8 + style 3 + background "ui/assets/ingamebottom.tga" + visible 1 + decoration + } + + + +itemDef { + name namefield + group "playersettinggroup" + type ITEM_TYPE_EDITFIELD + style 0 + text "Name:" + cvar "ui_Name" + maxchars 26 + rect 20 25 256 20 + textalign ITEM_ALIGN_LEFT + textalignx 10 + textaligny 18 + textscale .25 + outlinecolor 1 .5 .5 .5 + backcolor 0 0 0 0 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 1 +} + +itemDef { + name handicapfield + group "playersettinggroup" + style 0 + text "Handicap:" + ownerdraw UI_HANDICAP + rect 20 45 256 20 + textalign ITEM_ALIGN_LEFT + textalignx 10 + textaligny 18 + textscale .25 + outlinecolor 1 .5 .5 .5 + backcolor 0 0 0 0 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 1 + } + +itemDef { + name effectentry + group "playersettinggroup" + text "Effect:" + type 1 + style 0 + rect 20 65 256 20 + textalign ITEM_ALIGN_LEFT + textalignx 10 + textaligny 18 + textscale .25 + outlinecolor 1 .5 .5 .5 + backcolor 0 0 0 0 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 1 + decoration + mouseEnterText { setitemcolor effectentry forecolor 1 .75 0 1 ; setfocus effectfield ; show message_effect } + mouseExitText { setitemcolor playersettinggroup forecolor 1 1 1 1 ; hide message_effect } + } + +itemDef { + name effectfield + group "playersettinggroup" + style 0 + ownerdraw UI_EFFECTS + rect 20 65 256 20 + textalign ITEM_ALIGN_LEFT + textalignx 50 + textaligny 25 + outlinecolor 1 .5 .5 .5 + backcolor 0 0 0 0 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 1 + } + +itemDef { + name headlist + rect 15 100 260 50 + type ITEM_TYPE_LISTBOX + style WINDOW_STYLE_FILLED + elementwidth 32 + elementheight 32 + elementtype LISTBOX_IMAGE + feeder FEEDER_HEADS + horizontalscroll + backcolor 0 0 0 1 + border 1 + bordercolor .5 .5 .5 1 + forecolor 1 1 1 1 + visible 1 + cvarTest "g_gametype" + showCvar { "3" ; "4" ; "5" ; "6" ; "7" ; "8" } + mouseenter { setitemcolor headlist bordercolor 1 0 0 1 } + mouseexit { setitemcolor headlist bordercolor .5 .5 .5 1 } + } + +itemDef { + name headlist + rect 15 100 260 50 + type ITEM_TYPE_LISTBOX + style WINDOW_STYLE_FILLED + elementwidth 32 + elementheight 32 + elementtype LISTBOX_IMAGE + feeder FEEDER_Q3HEADS + horizontalscroll + backcolor 0 0 0 1 + border 1 + bordercolor .5 .5 .5 1 + forecolor 1 1 1 1 + visible 1 + cvarTest "g_gametype" + showCvar { "0" ; "1" } + mouseenter { setitemcolor headlist bordercolor 1 0 0 1 } + mouseexit { setitemcolor headlist bordercolor .5 .5 .5 1 } + } + + + + + + + + +} + + +} diff --git a/ta_ui/ingame_scoreffa.menu b/ta_ui/ingame_scoreffa.menu new file mode 100644 index 00000000..c0b13fa2 --- /dev/null +++ b/ta_ui/ingame_scoreffa.menu @@ -0,0 +1,452 @@ +#include "ui/menudef.h" + +{ +\\ score_menu \\ + + menuDef { + name "teamscore_menu" + visible 0 + fullscreen 1 + rect 0 0 640 480 + background uibackground4 + focusColor 1 .75 0 1 + style 1 + border 1 + +itemDef { + name leftteambar + rect 14 102 306 35 + style WINDOW_STYLE_FILLED + border 1 + bordercolor .5 .5 .5 1 + forecolor 1 1 1 1 + backcolor 1 0 0 1 + visible 1 + decoration +} + +itemDef { + name rightteambar + rect 320 102 306 35 + style WINDOW_STYLE_FILLED + border 1 + bordercolor .5 .5 .5 1 + forecolor 1 1 1 1 + backcolor 0 0 1 1 + visible 1 + decoration +} + +itemDef { + name leftteamheadings + text "Status Name Score Time Ping" + textscale .25 + style 0 + rect 25 102 128 30 + textalign 0 + textalignx 0 // x alignment point for text + // use it to offset left/right text from the edge + // or to center the text on a different point + textaligny 23 + backcolor 0 0 0 0 + forecolor 1 .75 0 1 + decoration + visible 1 + } + + +itemDef { + name leftgrad + style WINDOW_STYLE_SHADER + background "ui/assets/halfgradleft.tga" + rect 14 140 306 222 + forecolor .75 0 0 0.5 + visible 1 + decoration +} + +itemDef { + name leftgrad + rect 16 142 302 218 + orecolor .75 .75 .75 .75 + visible 1 + type ITEM_TYPE_LISTBOX + elementwidth 135 + elementheight 20 + textscale .25 + elementtype LISTBOX_TEXT + feeder FEEDER_REDTEAM_LIST + columns 5 2 20 20 60 75 75 165 20 20 205 20 20 235 20 20 +} + + + +itemDef { + name rightgrad + style WINDOW_STYLE_SHADER + background "ui/assets/halfgradright.tga" + rect 320 140 296 222 + forecolor 0 0 .75 0.5 + visible 1 + type ITEM_TYPE_LISTBOX + elementwidth 135 + elementheight 20 + textscale .28 + elementtype LISTBOX_TEXT + feeder FEEDER_BLUETEAM_LIST + columns 5 2 20 20 60 75 75 165 20 20 205 20 20 235 20 20 +} + +itemDef { + name rightteamheadings + text "Status Name Score Time Ping" + textscale .25 + style 0 + rect 336 102 128 30 + textalign 0 + textalignx 0 // x alignment point for text + // use it to offset left/right text from the edge + // or to center the text on a different point + textaligny 23 + backcolor 0 0 0 0 + forecolor 1 .75 0 1 + decoration + visible 1 + } + + + + + + + +itemDef { + name window + rect 14 141 612 221 + style WINDOW_STYLE_EMPTY + border 1 + bordercolor .5 .5 .5 .75 + forecolor 1 1 1 1 + backcolor 0 0 0 .25 + visible 1 + decoration +} + + + + + + +// GAMETYPE BAR // + + +itemDef { + name gametypebar + style 2 + rect 0 16 640 35 + textscale 0.4 + textalign 0 // center + textalignx 60 // x alignment point for text + // use it to offset left/right text from the edge + // or to center the text on a different point + textaligny 21 + style 2 + border 4 + bordercolor 1 1 1 1 + bordersize 1 + backcolor 0 0 .75 0.5 + visible 1 + decoration +} + + +itemDef { + name score + text " " + ownerdraw CG_GAME_STATUS + textscale .5 + style 0 + rect 320 16 210 25 + textalignx 0 + textaligny 21 + textalign 1 + backcolor 0 0 0 0 + forecolor 1 1 1 1 + visible 1 + decoration +} + + +itemDef { + name score + text "" + ownerdraw CG_KILLER + textscale .4 + style 0 + rect 320 40 210 40 + textalignx 0 + textaligny 24 + textalign 1 + backcolor 0 0 0 0 + forecolor 1 1 1 1 + visible 1 + decoration +} + + + + +// PLAYER STATS // + +itemDef { + name window + rect 14 364 612 24 + style WINDOW_STYLE_FILLED + border 1 + bordercolor .5 .5 .5 .5 + forecolor 0 0 0 0 + backcolor 0 0 0 .25 + //outlinecolor 1 1 1 .5 + visible 1 + decoration +} + +itemDef { + name name + text "Name:" + textscale .35 + style 0 + rect 0 363 128 30 + textalign 1 // center + textalignx 64 // x alignment point for text + // use it to offset left/right text from the edge + // or to center the text on a different point + textaligny 21 + backcolor 0 0 0 0 + forecolor 1 .75 0 1 + decoration + visible 1 + } + + +itemDef { + name score + text "Score:" + textscale .35 + style 0 + rect 246 363 128 30 + textalign 3 // center + textalignx 16 // x alignment point for text + // use it to offset left/right text from the edge + // or to center the text on a different point + textaligny 21 + backcolor 0 0 0 0 + forecolor 1 .75 0 1 + decoration + visible 1 + } + + +itemDef { + name wins + text "Wins:" + textscale .35 + style 0 + rect 404 363 128 30 + textalign 1 // center + textalignx 64 // x alignment point for text + // use it to offset left/right text from the edge + // or to center the text on a different point + textaligny 21 + backcolor 0 0 0 0 + forecolor 1 .75 0 1 + decoration + visible 1 + } + + + +// AWARDS // + + +itemDef { + name window + rect 14 390 612 38 + style WINDOW_STYLE_FILLED + border 1 + bordercolor .5 .5 .5 .5 + forecolor 1 1 1 1 + backcolor 0 0 0 .25 + visible 1 + decoration +} + +itemdef { + name medal_accuracy + style WINDOW_STYLE_SHADER + rect 48 394 32 32 + background "ui/assets/medal_accuracy.tga" + forecolor 1 1 1 .25 + visible 1 + decoration +} + +itemdef { + name medal_assist + style WINDOW_STYLE_SHADER + rect 112 394 32 32 + background "ui/assets/medal_assist.tga" + forecolor 1 1 1 .25 + visible 1 + decoration + +} + +itemdef { + name medal_accuracy + style WINDOW_STYLE_SHADER + rect 176 394 32 32 + background "ui/assets/medal_accuracy.tga" + forecolor 1 1 1 .25 + visible 1 + decoration + +} + +itemdef { + name medal_defend + style WINDOW_STYLE_SHADER + rect 240 394 32 32 + background "ui/assets/medal_defend.tga" + forecolor 1 1 1 .25 + visible 1 + decoration + +} + +itemdef { + name medal_excellent + style WINDOW_STYLE_SHADER + rect 304 394 32 32 + background "ui/assets/medal_excellent.tga" + forecolor 1 1 1 .25 + visible 1 + decoration + +} + +itemdef { + name medal_frags + style WINDOW_STYLE_SHADER + rect 368 394 32 32 + background "ui/assets/medal_frags.tga" + forecolor 1 1 1 .25 + visible 1 + decoration + +} + +itemdef { + name medal_gauntlet + style WINDOW_STYLE_SHADER + rect 432 394 32 32 + background "ui/assets/medal_gauntlet.tga" + forecolor 1 1 1 .25 + visible 1 + decoration + +} + +itemdef { + name medal_impressive + style WINDOW_STYLE_SHADER + rect 496 394 32 32 + background "ui/assets/medal_impressive.tga" + forecolor 1 1 1 .25 + visible 1 + decoration + +} + +itemdef { + name medal_victory + style WINDOW_STYLE_SHADER + rect 560 394 32 32 + background "ui/assets/medal_victory.tga" + forecolor 1 1 1 .25 + visible 1 + decoration +} + + + +// TEAM LOGO // + + +itemDef { + name playerlogo + ownerdraw UI_PLAYERLOGO + rect 71 157 180 180 + visible 1 + forecolor .5 0 0 .5 + decoration + } + +itemDef { + ownerdraw UI_OPPONENTLOGO + name opposinglogo + rect 397 157 180 180 + visible 1 + forecolor 0 0 .5 .5 + decoration +} + +itemDef { + name playerlogo + ownerdraw UI_PLAYERLOGO_METAL + rect 14 6 96 96 + visible 1 + forecolor 1 .7 .7 1 + decoration + } + +itemDef { + name opposinglogo + ownerdraw UI_OPPONENTLOGO_METAL + rect 530 6 96 96 + visible 1 + forecolor .7 .7 1 1 + decoration +} + + + + +// TEAM NAME // + +itemDef { + name playerteamname + ownerdraw UI_PLAYERLOGO_NAME + rect 120 54 120 60 + decoration + visible 1 +} + +itemDef { + name opposingteamname + ownerdraw UI_OPPONENTLOGO_NAME + rect 392 54 120 60 + backcolor 0 0 0 0 + forecolor 1 1 1 1 + decoration + visible 1 +} + + + + + +} + + +} diff --git a/ta_ui/ingame_serverinfo.menu b/ta_ui/ingame_serverinfo.menu new file mode 100644 index 00000000..ad3847c6 --- /dev/null +++ b/ta_ui/ingame_serverinfo.menu @@ -0,0 +1,63 @@ +#include "ui/menudef.h" + +{ +\\ SERVER INFO MENU \\ + +menuDef { + name "ingame_serverinfo" + visible 0 + fullscreen 0 + outOfBoundsClick // this closes the window if it gets a click out of the rectangle + rect 352 30 256 300 + focusColor 1 .75 0 1 + style 1 + border 1 + +itemDef { + name window + rect 0 0 256 300 + style 1 + border 1 + bordercolor .5 .5 .5 1 + backcolor 0 0 .75 .25 + visible 1 + decoration + } + + +itemDef { + name serverinfo + group serverinfo + rect 0 100 256 256 + text "Server Information" + textalign 1 + textscale .25 + textalignx 128 + textaligny 17 + forecolor 1 1 1 1 + visible 1 + decoration + } +itemDef { + name ok + text "OK" + textscale .25 + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/button_red.tga" + rect 103 275 50 20 + textalign 1 + textalignx 25 + textaligny 15 + forecolor 1 1 1 1 + visible 1 + action { close ingame_serverinfo ; close ingame ; open ingame } + } + + + + +} + + +} diff --git a/ta_ui/ingame_system.menu b/ta_ui/ingame_system.menu new file mode 100644 index 00000000..f6bf86fa --- /dev/null +++ b/ta_ui/ingame_system.menu @@ -0,0 +1,619 @@ +#include "ui/menudef.h" + +{ +\\ SYSTEM MENU \\ + +menuDef { + name "ingame_system" + visible 0 + fullscreen 0 + outOfBoundsClick // this closes the window if it gets a click out of the rectangle + rect 298 30 276 325 + focusColor 1 .75 0 1 + style 1 + border 1 + onopen { hide grpsystem ; show graphics } + +itemDef { + name window + rect 10 15 256 310 + style 1 + backcolor 0 .1 0 1 + visible 1 + decoration + } + +// FRAME // + + +itemDef { + name window + rect 0 10 64 64 + style 3 + background "ui/assets/ingameleftcorner.tga" + visible 1 + decoration + } + +itemDef { + name window + rect 64 10 64 8 + style 3 + background "ui/assets/ingametop.tga" + visible 1 + decoration + } + +itemDef { + name window + rect 167 10 64 8 + style 3 + background "ui/assets/ingametop.tga" + visible 1 + decoration + } + +itemDef { + name window + rect 213 10 64 64 + style 3 + background "ui/assets/ingamerightcorner.tga" + visible 1 + decoration + } +itemDef { + name window + rect 103 0 64 16 + style 3 + background "ui/assets/ingameconnection.tga" + visible 1 + decoration + } +itemDef { + name window + rect 0 264 64 64 + style 3 + background "ui/assets/ingameleftcornerb.tga" + visible 1 + decoration + } +itemDef { + name window + rect 213 264 64 64 + style 3 + background "ui/assets/ingamerightcornerb.tga" + visible 1 + decoration + } + +itemDef { + name window + rect 0 64 16 64 + style 3 + background "ui/assets/ingameleft.tga" + visible 1 + decoration + } + + +itemDef { + name window + rect 0 128 16 64 + style 3 + background "ui/assets/ingameleft.tga" + visible 1 + decoration + } + +itemDef { + name window + rect 0 192 16 74 + style 3 + background "ui/assets/ingameleft.tga" + visible 1 + decoration + } + +itemDef { + name window + rect 261 64 16 64 + style 3 + background "ui/assets/ingameright.tga" + visible 1 + decoration + } + + +itemDef { + name window + rect 261 128 16 64 + style 3 + background "ui/assets/ingameright.tga" + visible 1 + decoration + } +itemDef { + name window + rect 261 192 16 74 + style 3 + background "ui/assets/ingameright.tga" + visible 1 + decoration + } + +itemDef { + name window + rect 64 320 74 8 + style 3 + background "ui/assets/ingamebottom.tga" + visible 1 + decoration + } +itemDef { + name window + rect 138 320 74 8 + style 3 + background "ui/assets/ingamebottom.tga" + visible 1 + decoration + } + +itemDef { + name ctr_graphics + text "Graphics" + type 1 + textscale .25 + group grpControlbutton + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + rect 30 25 65 20 + textalign 1 + textalignx 32 + textaligny 16 + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + visible 1 + action { hide grpSystem ; show graphics } + mouseEnter { setitemcolor ctr_graphics backcolor .1 .37 .1 1 } + mouseExit { setitemcolor ctr_graphics backcolor .37 .1 .1 1 } + } + + itemDef { + name graphics + group grpSystem + type ITEM_TYPE_MULTI + text "Quality:" + cvar "ui_glCustom" + cvarFloatList { "High Quality" 0 "Normal" 1 "Fast" 2 "Fastest" 3 "Custom" 4 } + rect 0 50 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 133 + textaligny 17 + textscale .25 + forecolor 1 1 1 1 + visible 0 + action { uiScript update "ui_glCustom" } + } + + itemDef { + name graphics + group grpSystem + type ITEM_TYPE_EDITFIELD + text "GL Driver:" + cvar "r_gldriver" + //cvarFloatList { } + rect 0 70 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 133 + textaligny 17 + textscale .25 + forecolor 1 1 1 1 + visible 0 + decoration + } + + itemDef { + name graphics + group grpSystem + type ITEM_TYPE_YESNO + text "GL Extensions:" + cvar "r_allowExtensions" + rect 0 90 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 133 + textaligny 17 + textscale .25 + forecolor 1 1 1 1 + visible 0 + action { uiScript glCustom } + } + + itemDef { + name graphics + group grpSystem + type ITEM_TYPE_MULTI + text "Video Mode:" + cvar "r_mode" + cvarFloatList { "320x240" 0 "400x300" 1 "512x384" 2 "640x480" 3 "800x600" 4 "960x720" 5 "1024x768" 6 "1152x864" 7 "1280x1024" 8 "1600x1200" 9 "2048x1536" 10 "856x480 wide screen" 11 } + rect 0 110 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 133 + textaligny 17 + textscale .25 + forecolor 1 1 1 1 + visible 0 + action { uiScript glCustom } + } + + itemDef { + name graphics + group grpSystem + type ITEM_TYPE_MULTI + text "Color Depth:" + cvar "r_colorbits" + cvarFloatList { "Default" 0 "16 bit" 16 "32 bit" 32 } + rect 0 130 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 133 + textaligny 17 + textscale .25 + forecolor 1 1 1 1 + visible 0 + action { uiScript glCustom ; uiScript update "r_colorbits" } + } + + itemDef { + name graphics + group grpSystem + type ITEM_TYPE_YESNO + text "Fullscreen:" + cvar "r_fullscreen" + rect 0 150 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 133 + textaligny 17 + textscale .25 + forecolor 1 1 1 1 + visible 0 + action { uiScript glCustom } + } + + itemDef { + name graphics + group grpSystem + type ITEM_TYPE_MULTI + text "Lighting:" + cvar "r_vertexlight" + cvarFloatList { "Light Map (high)" 0 "Vertex (low)" 1 } + rect 0 170 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 133 + textaligny 17 + textscale .25 + forecolor 1 1 1 1 + visible 0 + action { uiScript glCustom } + } + + itemDef { + name graphics + group grpSystem + type ITEM_TYPE_MULTI + text "Geometric Detail:" + cvar "r_lodbias" + cvarFloatList { "High" 0 "Medium" 1 "Low" 2 } + rect 0 190 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 133 + textaligny 17 + textscale .25 + forecolor 1 1 1 1 + visible 0 + action { uiScript glCustom ; uiScript update "r_lodbias" } + } + + itemDef { + name graphics + group grpSystem + type ITEM_TYPE_MULTI + text "Texture Detail:" + cvar "r_picmip" + cvarFloatList { "Low" 2 "Normal" 1 "High" 0 } + rect 0 210 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 133 + textaligny 17 + textscale .25 + forecolor 1 1 1 1 + visible 0 + action { uiScript glCustom } + } + + itemDef { + name graphics + group grpSystem + type ITEM_TYPE_MULTI + text "Texture Quality:" + cvar "r_texturebits" + cvarFloatList { "Default" 0 "16 bit" 16 "32 bit" 32 } + rect 0 230 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 133 + textaligny 17 + textscale .25 + forecolor 1 1 1 1 + visible 0 + } + + itemDef { + name graphics + group grpSystem + type ITEM_TYPE_MULTI + text "Texture Filter:" + cvar "r_texturemode" + cvarStrList { "Bilinear", "GL_LINEAR_MIPMAP_NEAREST", "Trilinear", "GL_LINEAR_MIPMAP_LINEAR" } + rect 0 250 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 133 + textaligny 17 + textscale .25 + forecolor 1 1 1 1 + visible 0 + action { uiScript glCustom } + } + + itemDef { + name graphics + group grpSystem + type ITEM_TYPE_YESNO + text "Compress Textures:" + cvar "r_ext_compressed_textures " + rect 0 270 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 133 + textaligny 17 + textscale .25 + forecolor 1 1 1 1 + visible 0 + action { uiScript glCustom } + } + + +//here + +itemDef { + name ctr_driver + text "Driver Info" + type 1 + textscale .25 + group grpControlbutton + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + rect 105 25 65 20 + textalign 1 + textalignx 32 + textaligny 16 + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + visible 1 + action { hide grpSystem ; show driver } + mouseEnter { setitemcolor ctr_driver backcolor .1 .37 .1 1 } + mouseExit { setitemcolor ctr_driver backcolor .37 .1 .1 1 } + } + + + + itemDef { + name driver + group grpSystem + rect 15 55 230 230 + ownerdraw UI_GLINFO + textalign 1 + textscale .15 + textalignx 0 + textaligny 17 + forecolor 1 1 1 1 + visible 0 + decoration + } + +itemDef { + name ctr_other + text "Other" + type 1 + textscale .25 + group grpControlbutton + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + rect 180 25 65 20 + textalign 1 + textalignx 32 + textaligny 16 + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + visible 1 + action { hide grpSystem ; show other } + mouseEnter { setitemcolor ctr_other backcolor .1 .37 .1 1 } + mouseExit { setitemcolor ctr_other backcolor .37 .1 .1 1 } + } + + +itemDef { + name other + group grpSystem + style 1 + text "Display" + rect 0 45 128 20 + textalign ITEM_ALIGN_CENTER + textalignx 128 + textaligny 17 + textscale .25 + forecolor 1 1 1 1 + visible 0 + decoration + } + + itemDef { + name other + group grpSystem + type ITEM_TYPE_SLIDER + text "Brightness:" + cvarfloat "r_gamma" 1 .5 2 + rect 0 65 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 17 + textscale .25 + forecolor 1 1 1 1 + visible 0 + } + + itemDef { + name other + group grpSystem + type ITEM_TYPE_SLIDER + text "Screen Size:" + cvarfloat "cg_viewsize" 100 30 100 + //cvarFloatList { } + rect 0 85 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 17 + textscale .25 + forecolor 1 1 1 1 + visible 0 + } + +itemDef { + name other + group grpSystem + style 1 + text "Sound" + rect 0 125 128 20 + textalign ITEM_ALIGN_CENTER + textalignx 128 + textaligny 17 + textscale .25 + forecolor 1 1 1 1 + visible 0 + decoration + } + + itemDef { + name other + group grpSystem + type ITEM_TYPE_SLIDER + text "Effects Volume:" + cvarfloat "s_volume" 0.7 0 1 + rect 0 145 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 17 + textscale .25 + forecolor 1 1 1 1 + visible 0 + } + + itemDef { + name other + group grpSystem + type ITEM_TYPE_SLIDER + text "Music Volume:" + cvarfloat "s_musicvolume" 0.25 0 1 + rect 0 165 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 17 + textscale .25 + forecolor 1 1 1 1 + visible 0 + } + + itemDef { + name other + group grpSystem + type ITEM_TYPE_MULTI + text "Sound Quality:" + cvar "s_khz" + cvarFloatList { "22 khz (high)" 22 "11 khz (low)" 11 } + rect 0 185 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 17 + textscale .25 + forecolor 1 1 1 1 + visible 0 + } + + itemDef { + name other + group grpSystem + type ITEM_TYPE_YESNO + text "Doppler Sound:" + cvar "s_doppler" + rect 0 205 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 17 + textscale .25 + forecolor 1 1 1 1 + visible 0 + } + + +itemDef { + name other + group grpSystem + style 1 + text "Network" + rect 0 245 128 20 + textalign ITEM_ALIGN_CENTER + textalignx 128 + textaligny 17 + textscale .25 + forecolor 1 1 1 1 + visible 0 + decoration + } + + itemDef { + name other + group grpSystem + type ITEM_TYPE_MULTI + text "Net Data Rate:" + cvar "rate" + cvarFloatList { "<=28.8k" 2500 "33.6k" 3000 "56k" 4000 "ISDN" 5000 "LAN/CABLE/xDSl" 25000 } + rect 0 265 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 17 + textscale .25 + forecolor 1 1 1 1 + visible 0 + } + +itemDef { + name graphics + text "Apply" + type 1 + textscale .25 + group grpsystem + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + rect 101 295 75 20 + textalign 1 + textalignx 37 + textaligny 15 + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + visible 0 + action { exec "vid_restart" } + mouseEnter { setcolor backcolor .1 .37 .1 1 } + mouseExit { setcolor backcolor .37 .1 .1 1 } + } + + +} + + +} diff --git a/ta_ui/ingame_vote.menu b/ta_ui/ingame_vote.menu new file mode 100644 index 00000000..b48b4b47 --- /dev/null +++ b/ta_ui/ingame_vote.menu @@ -0,0 +1,141 @@ +#include "ui/menudef.h" + +{ +\\ SERVER INFO MENU \\ + +menuDef { + name "ingame_vote" + visible 0 + fullscreen 0 + outOfBoundsClick // this closes the window if it gets a click out of the rectangle + rect 430 30 128 125 + focusColor 1 .75 0 1 + style 1 + border 1 + + itemDef { + name window + rect 10 15 108 110 + style 1 + backcolor 0 .1 0 1 + visible 1 + decoration + } + + + + +// FRAME // + + +itemDef { + name window + rect 0 10 64 64 + style 3 + background "ui/assets/ingameleftcorner.tga" + visible 1 + decoration + } +itemDef { + name window + rect 64 10 64 64 + style 3 + background "ui/assets/ingamerightcorner.tga" + visible 1 + decoration + } +itemDef { + name window + rect 30 0 65 16 + style 3 + background "ui/assets/ingameconnection.tga" + visible 1 + decoration + } +itemDef { + name window + rect 0 64 64 64 + style 3 + background "ui/assets/ingameleftcornerb.tga" + visible 1 + decoration + } +itemDef { + name window + rect 64 64 64 64 + style 3 + background "ui/assets/ingamerightcornerb.tga" + visible 1 + decoration + } + + + + itemDef { + name yes + text "Yes" + type 1 + textscale .25 + rect 0 30 128 20 + textalign 1 + textalignx 64 + textaligny 10 + forecolor 1 1 1 1 + visible 1 + action { exec "vote yes" ; uiScript closeingame } + } + + itemDef { + name no + text "No" + type 1 + textscale .25 + rect 0 50 128 20 + textalign 1 + textalignx 64 + textaligny 10 + forecolor 1 1 1 1 + visible 1 + action { exec "vote no" ; uiScript closeingame } + } +itemDef { + name yes + text "TeamYes" + type 1 + ownerdrawflag UI_SHOW_ANYTEAMGAME + textscale .25 + rect 0 70 128 20 + textalign 1 + textalignx 64 + textaligny 10 + forecolor 1 1 1 1 + visible 1 + action { exec "teamvote yes" ; uiScript closeingame } + } + + itemDef { + name no + text "TeamNo" + type 1 + ownerdrawflag UI_SHOW_ANYTEAMGAME + textscale .25 + rect 0 90 128 20 + textalign 1 + textalignx 64 + textaligny 10 + forecolor 1 1 1 1 + visible 1 + action { exec "teamvote no" ; uiScript closeingame } + } + + +} + + + + + +} + + +} diff --git a/ta_ui/ingame_vote2.menu b/ta_ui/ingame_vote2.menu new file mode 100644 index 00000000..b0840d14 --- /dev/null +++ b/ta_ui/ingame_vote2.menu @@ -0,0 +1,71 @@ +#include "ui/menudef.h" + +{ +\\ SERVER INFO MENU \\ + +menuDef { + name "ingame_vote" + visible 0 + fullscreen 0 + outOfBoundsClick // this closes the window if it gets a click out of the rectangle + rect 387 30 210 64 + focusColor 1 .75 0 1 + style 1 + border 1 + +itemDef { + name window + rect 0 0 210 64 + style 1 + border 1 + bordercolor .5 .5 .5 1 + backcolor 0 0 .75 .25 + visible 1 + decoration + } + + +itemDef { + name yes + text "Vote Yes" + type 1 + textscale .25 + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/button_red.tga" + rect 20 20 75 20 + textalign 1 + textalignx 37 + textaligny 16 + forecolor 1 1 1 1 + visible 1 + action { exec "cmd vote yes" ; close ingame_vote } + } + + +itemDef { + name no + text "Vote No" + type 1 + textscale .25 + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/button_red.tga" + rect 115 20 75 20 + textalign 1 + textalignx 37 + textaligny 16 + forecolor 1 1 1 1 + visible 1 + action { exec "cmd vote no" ; close ingame_vote } + } +} + + + + + +} + + +} diff --git a/ta_ui/joinserver.menu b/ta_ui/joinserver.menu new file mode 100644 index 00000000..8686ee8c --- /dev/null +++ b/ta_ui/joinserver.menu @@ -0,0 +1,1259 @@ +#include "ui/menudef.h" + +{ +\\ Server Join \\ + + menuDef { + name "joinserver" + visible 0 + fullscreen 1 + rect 0 0 640 480 + background "menuback_a" + focusColor 1 .75 0 1 + outOfBoundsClick + style 1 + border 1 + onOpen { setitemcolor fadebox backcolor 0 0 0 1 ; + playlooped "music/fla_mp03.wav" ; + fadeout fadebox ; + uiScript UpdateFilter ; + hide lightning ; + hide accept_alt ; + show accept ; + hide back_alt ; + show back ; + hide grpmessage } + onEsc { uiScript closeJoin } + + +// top bar // + + + itemDef { + name sourcebar + style 2 + rect 0 20 640 40 + style 2 + border 4 + bordercolor 0.5 0.5 0.5 0.5 + bordersize 2 + backcolor 0 0 .75 0.5 + visible 1 + mouseEnter { setcolor backcolor .75 0 0 .5 } + mouseExit { setcolor backcolor 0 0 .75 .5 } + decoration + } + +// DATE AND MESSAGE OF THE DAY // + +itemDef { + name datewindow + rect 10 365 265 25 + style WINDOW_STYLE_FILLED + border 1 + bordercolor .5 .5 .5 1 + backcolor 0 0 0 .15 + visible 1 + } +itemDef { + name messagewindow + rect 275 365 355 25 + style WINDOW_STYLE_FILLED + border 1 + bordercolor .5 .5 .5 1 + backcolor 0 0 0 .15 + visible 1 + } + +itemDef { + name refreshdate + ownerdraw UI_SERVERREFRESHDATE + textscale .22 + rect 10 365 265 25 + textalign 0 + textalignx 10 + textaligny 20 + forecolor 1 1 1 1 + visible 1 + decoration + } +itemDef { + name messageoftheday + ownerdraw UI_SERVERMOTD + textscale .3 + rect 280 365 345 25 + forecolor 1 1 1 1 + visible 1 + decoration + } + + + +// map selection + + +itemDef { + name gametypefield + style 0 + ownerdraw UI_NETSOURCE + rect 10 20 134 40 + textstyle 6 + textalign ITEM_ALIGN_LEFT + textalignx 2 + textaligny 30 + textscale .32 + forecolor 1 1 1 1 + visible 1 + action { play "sound/misc/kcaction.wav" } + mouseEnter { show message_source } + mouseExit { hide message_source } + } + +itemDef { + name gametypefield + style 0 + textstyle 6 + ownerdraw UI_NETFILTER + rect 149 20 181 40 + textalign ITEM_ALIGN_LEFT + textalignx 2 + textaligny 30 + textscale .32 + forecolor 1 1 1 1 + visible 1 + action { play "sound/misc/kcaction.wav" } + mouseEnter { show message_gamefilter } + mouseExit { hide message_gamefilter } + } + +itemDef { + name gametypefield + style 0 + textstyle 6 + text "Type:" + ownerdraw UI_JOINGAMETYPE + rect 330 20 160 40 + textalign ITEM_ALIGN_LEFT + textalignx 2 + textaligny 30 + textscale .32 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 1 + action { play "sound/misc/kcaction.wav" } + mouseEnter { show message_typefilter } + mouseExit { hide message_typefilter } + } + +itemDef { + name mappreview + style 0 + ownerdraw UI_NETMAPCINEMATIC + rect 505 5 128 96 + border 1 + bordercolor 0 .5 0 .5 + visible 1 + } + +itemDef { + name mappreview + style WINDOW_STYLE_FILLED + rect 505 5 128 96 + border 1 + bordercolor .5 .5 .5 .5 + visible 1 + } + + + +itemDef { + name horizontoalseparators + rect 10 132 604 20 + style WINDOW_STYLE_FILLED + border 0 + backcolor 0 0 .5 .25 + visible 1 + decoration + } + +itemDef { + name horizontoalseparators + rect 10 172 604 20 + style WINDOW_STYLE_FILLED + border 0 + backcolor 0 0 .5 .25 + visible 1 + decoration + } +itemDef { + name horizontoalseparators + rect 10 212 604 20 + style WINDOW_STYLE_FILLED + border 0 + backcolor 0 0 .5 .25 + visible 1 + decoration + } +itemDef { + name horizontoalseparators + rect 10 252 604 20 + style WINDOW_STYLE_FILLED + border 0 + backcolor 0 0 .5 .25 + visible 1 + decoration + } +itemDef { + name horizontoalseparators + rect 10 292 604 20 + style WINDOW_STYLE_FILLED + border 0 + backcolor 0 0 .5 .25 + visible 1 + decoration + } +itemDef { + name horizontoalseparators + rect 10 332 604 20 + style WINDOW_STYLE_FILLED + border 0 + backcolor 0 0 .5 .25 + visible 1 + decoration + } + +// COLUMNS // + + + +itemDef { + name serverColumn + group grpColumn + rect 10 128 265 235 + style WINDOW_STYLE_FILLED + border 1 + backcolor 0 0 0 0 + bordersize 1 + bordercolor .5 .5 .5 1 + visible 1 + decoration + } +itemDef { + name mapColumn + group grpColumn + rect 275 128 125 235 + style WINDOW_STYLE_FILLED + border 1 + backcolor 0 0 0 0 + bordersize 1 + bordercolor .5 .5 .5 1 + visible 1 + decoration + } +itemDef { + name playerColumn + group grpColumn + rect 400 128 60 235 + style WINDOW_STYLE_FILLED + border 1 + backcolor 0 0 0 0 + bordersize 1 + bordercolor .5 .5 .5 1 + visible 1 + decoration + } +itemDef { + name typeColumn + group grpColumn + rect 460 128 100 235 + style WINDOW_STYLE_FILLED + border 1 + backcolor 0 0 0 0 + bordersize 1 + bordercolor .5 .5 .5 1 + visible 1 + decoration + } +itemDef { + name pingColumn + group grpColumn + rect 560 128 52 235 + style WINDOW_STYLE_FILLED + border 1 + backcolor 0 0 0 0 + bordersize 1 + bordercolor .5 .5 .5 1 + visible 1 + decoration + } + + + + itemDef { + name serverlist + rect 10 128 620 235 + type ITEM_TYPE_LISTBOX + style WINDOW_STYLE_FILLED + elementwidth 120 + elementheight 20 + textscale .25 + elementtype LISTBOX_TEXT + feeder FEEDER_SERVERS + border 1 + bordercolor .5 .5 .5 1 + forecolor 1 1 1 1 + backcolor 0 0 .7 .25 + outlinecolor 0 1 0 .25 + visible 1 + columns 5 2 40 40 275 40 20 400 5 10 460 20 10 560 20 20 + mouseenter { setitemcolor serverlist bordercolor .7 0 0 1 } + mouseexit { setitemcolor serverlist bordercolor .5 .5 .5 .5 } + doubleClick { uiScript JoinServer } + } + + + + + +// SORT TABS // + + + itemDef { + name server + group grpTabs + text "Server Name" + type ITEM_TYPE_BUTTON + textscale .25 + style WINDOW_STYLE_FILLED + background "ui/assets/sorttab.tga" + rect 10 103 110 26 + textalign 1 + textalignx 59 // center + textaligny 21 + forecolor 1 1 1 1 + backcolor .1 .1 .37 1 + visible 1 + action { play "sound/misc/nomenu.wav" ; + uiScript ServerSort 0 ; + setitemcolor grpTabs backcolor .1 .1 .37 1 ; + setitemcolor server backcolor .1 .37 .1 1 ; + setitemcolor grpColumn backcolor 0 0 0 0 ; + setitemcolor serverColumn backcolor 0 1 0 .25 } + mouseEnter { show message_sort ; setitemcolor serverColumn bordercolor 1 0 0 1 } + mouseExit { hide message_sort ; setitemcolor serverColumn bordercolor .5 .5 .5 1 } + } + + + + itemDef { + name map + group grpTabs + type ITEM_TYPE_BUTTON + text "Map Name" + textscale .25 + style WINDOW_STYLE_FILLED + background "ui/assets/sorttab.tga" + rect 275 103 100 26 + textalign 1 + textalignx 50 // center + textaligny 21 + backcolor .1 .1 .37 1 + forecolor 1 1 1 1 + visible 1 + action { play "sound/misc/nomenu.wav" ; + uiScript ServerSort 1 ; + setitemcolor grpTabs backcolor .1 .1 .37 1 ; + setitemcolor map backcolor .1 .37 .1 1 ; + setitemcolor grpColumn backcolor 0 0 0 0 ; + setitemcolor mapColumn backcolor 0 1 0 .25 } + mouseEnter { show message_sort ; setitemcolor mapColumn bordercolor 1 0 0 1 } + mouseExit { hide message_sort ; setitemcolor mapColumn bordercolor .5 .5 .5 1 } + } + + + + itemDef { + name Players + group grpTabs + text "#Plyrs" + type ITEM_TYPE_BUTTON + textscale .25 + style WINDOW_STYLE_FILLED + background "ui/assets/sorttab.tga" + rect 400 103 50 26 + textalign 1 + textalignx 25 // center + textaligny 21 + forecolor 1 1 1 1 + backcolor .1 .1 .37 1 + visible 1 + action { play "sound/misc/nomenu.wav" ; + uiScript ServerSort 2 ; + setitemcolor grpTabs backcolor .1 .1 .37 1 ; + setitemcolor Players backcolor .1 .37 .1 1 ; + setitemcolor grpColumn backcolor 0 0 0 0 ; + setitemcolor playerColumn backcolor 0 1 0 .25 } + mouseEnter { show message_sort ; setitemcolor playerColumn bordercolor 1 0 0 1 } + mouseExit { hide message_sort ; setitemcolor playerColumn bordercolor .5 .5 .5 1 } + } + + +itemDef { + name Type + group grpTabs + text "Type" + textscale .25 + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_FILLED + background "ui/assets/sorttab.tga" + rect 460 103 60 26 + textalign 1 + textalignx 30 // center + textaligny 21 + backcolor .1 .1 .37 1 + forecolor 1 1 1 1 + visible 1 + action { play "sound/misc/nomenu.wav" ; + uiScript ServerSort 3 ; + setitemcolor grpTabs backcolor .1 .1 .37 1 ; + setitemcolor Type backcolor .1 .37 .1 1 ; + setitemcolor grpColumn backcolor 0 0 0 0 ; + setitemcolor typeColumn backcolor 0 1 0 .25 } + mouseEnter { show message_sort ; setitemcolor typeColumn bordercolor 1 0 0 1 } + mouseExit { hide message_sort ; setitemcolor typeColumn bordercolor .5 .5 .5 1 } + } + + +itemDef { + name Ping + group grpTabs + text "Ping" + type ITEM_TYPE_BUTTON + textscale .25 + style WINDOW_STYLE_FILLED + background "ui/assets/sorttab.tga" + rect 560 103 52 26 + textalign 1 + textalignx 26 // center + textaligny 21 + backcolor .1 .1 .37 1 + forecolor 1 1 1 1 + visible 1 + action { play "sound/misc/nomenu.wav" ; + uiScript ServerSort 4 ; + setitemcolor grpTabs backcolor .1 .1 .37 1 ; + setitemcolor Ping backcolor .1 .37 .1 1 ; + setitemcolor grpColumn backcolor 0 0 0 0 ; + setitemcolor pingColumn backcolor 0 1 0 .25 } + mouseEnter { show message_sort ; setitemcolor pingColumn bordercolor 1 0 0 1 } + mouseExit { hide message_sort ; setitemcolor pingColumn bordercolor .5 .5 .5 1 } + } + + + + + +// BUTTONS // + +itemDef { + name refreshSource + text "Get New List" + type ITEM_TYPE_BUTTON + textscale .3 + style WINDOW_STYLE_FILLED + //background "ui/assets/button_red.tga" + background "ui/assets/button_back.tga" + rect 16 67 105 26 + textalign 1 + textalignx 52 // center + textaligny 20 + backcolor .37 .1 .1 1 + forecolor 1 1 1 1 + visible 1 + mouseEnter { show message_refreshSOurce ; setitemcolor refreshSource backcolor .1 .37 .1 1 } + mouseExit { hide message_refreshSource ; setitemcolor refreshSource backcolor .37 .1 .1 1 } + action { play "sound/misc/nomenu.wav" ; + uiScript RefreshServers } + } + + + +itemDef { + name refreshSource + style WINDOW_STYLE_SHADER + background "ui/assets/framebutton.tga" + rect 16 67 105 26 + visible 1 + decoration + } + +itemDef { + name refreshSource + style WINDOW_STYLE_SHADER + background "ui/assets/leftbutton.tga" + rect 4 67 13 26 + visible 1 + decoration + } +itemDef { + name refreshSource + style WINDOW_STYLE_SHADER + background "ui/assets/rightbutton.tga" + rect 120 67 13 26 + visible 1 + decoration + } + + + + +itemDef { + name refreshFilter + text "Refresh List" + textscale .3 + style WINDOW_STYLE_FILLED + type ITEM_TYPE_BUTTON + background "ui/assets/button_back.tga" + rect 149 67 94 26 + textalign 1 + textalignx 46 // center + textaligny 20 + backcolor .37 .1 .1 1 + forecolor 1 1 1 1 + visible 1 + mouseEnter { show message_refreshFilter ; setitemcolor refreshFilter backcolor .1 .37 .1 1 } + mouseExit { hide message_refreshFilter ; setitemcolor refreshFilter backcolor .37 .1 .1 1 } + action { play "sound/misc/nomenu.wav" ; + uiScript RefreshFilter } + } + + + +itemDef { + name refreshFilter + style WINDOW_STYLE_SHADER + background "ui/assets/framebutton.tga" + rect 149 67 94 26 + visible 1 + decoration + } + + +itemDef { + name refreshFilter + style WINDOW_STYLE_SHADER + background "ui/assets/leftbutton.tga" + rect 137 67 13 26 + visible 1 + decoration + } + +itemDef { + name refreshFilter + style WINDOW_STYLE_SHADER + background "ui/assets/rightbutton.tga" + rect 242 67 13 26 + visible 1 + decoration + } + + + + + + + + + +itemDef { + name password + text "Password" + type ITEM_TYPE_BUTTON + textscale .3 + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + rect 20 395 92 26 + textalign 1 + textalignx 46 // center + textaligny 20 + backcolor .37 .1 .1 1 + forecolor 1 1 1 1 + visible 1 + action { play "sound/misc/kcaction.wav" ; + open password_popmenu } + mouseEnter { show message_password ; setitemcolor password backcolor .1 .37 .1 1 } + mouseExit { hide message_password ; setitemcolor password backcolor .37 .1 .1 1 } + } + +itemDef { + name password + style WINDOW_STYLE_SHADER + background "ui/assets/framebutton.tga" + rect 20 395 92 26 + visible 1 + decoration + } + +itemDef { + name password + style WINDOW_STYLE_SHADER + background "ui/assets/leftbutton.tga" + rect 14 395 7 26 + visible 1 + decoration + } + +itemDef { + name password + style WINDOW_STYLE_SHADER + background "ui/assets/rightbutton.tga" + rect 111 395 7 26 + visible 1 + decoration + } + + +itemDef { + name createFavorite + text "New Favorite" + type ITEM_TYPE_BUTTON + textscale .3 + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + rect 148 395 92 26 + textalign 1 + textalignx 46 // center + textaligny 20 + backcolor .37 .1 .1 1 + forecolor 1 1 1 1 + visible 1 + action { play "sound/misc/kcaction.wav" ; + open createfavorite_popmenu } + mouseEnter { show message_createFavorite ; setitemcolor createFavorite backcolor .1 .37 .1 1 } + mouseExit { hide message_createFavorite ; setitemcolor createFavorite backcolor .37 .1 .1 1 } + } +itemDef { + name createFavorite + style WINDOW_STYLE_SHADER + background "ui/assets/framebutton.tga" + rect 148 395 92 26 + visible 1 + decoration + } + +itemDef { + name createFavorite + style WINDOW_STYLE_SHADER + background "ui/assets/leftbutton.tga" + rect 142 395 7 26 + visible 1 + decoration + } + +itemDef { + name createFavorite + style WINDOW_STYLE_SHADER + background "ui/assets/rightbutton.tga" + rect 239 395 7 26 + visible 1 + decoration + } + + + + + +itemDef { + name addFavorite + text "Add Favorite" + type ITEM_TYPE_BUTTON + textscale .3 + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + ownerdrawFlag UI_SHOW_NOTFAVORITESERVERS + rect 276 395 92 26 + textalign 1 + textalignx 46 // center + textaligny 20 + backcolor .37 .1 .1 1 + forecolor 1 1 1 1 + visible 1 + action { play "sound/misc/nomenu.wav" ; + uiScript addFavorite } + mouseEnter { show message_addFavorite ; setitemcolor addFavorite backcolor .1 .37 .1 1 } + mouseExit { hide message_addFavorite ; setitemcolor addFavorite backcolor .37 .1 .1 1 } + } + + +itemDef { + name addFavorite + style WINDOW_STYLE_SHADER + background "ui/assets/framebutton.tga" + rect 276 395 92 26 + visible 1 + decoration + } + +itemDef { + name addFavorite + style WINDOW_STYLE_SHADER + background "ui/assets/leftbutton.tga" + rect 270 395 7 26 + visible 1 + decoration + } + +itemDef { + name addFavorite + style WINDOW_STYLE_SHADER + background "ui/assets/rightbutton.tga" + rect 367 395 7 26 + visible 1 + decoration + } + + +itemDef { + name delfavorite + text "Del. Favorite" + type ITEM_TYPE_BUTTON + textscale .3 + style WINDOW_STYLE_FILLED + ownerdrawFlag UI_SHOW_FAVORITESERVERS + background "ui/assets/button_back.tga" + rect 276 395 92 26 + textalign 1 + textalignx 46 // center + textaligny 20 + backcolor .37 .1 .1 1 + forecolor 1 1 1 1 + visible 1 + action { play "sound/misc/nomenu.wav" ; + uiScript DeleteFavorite ; uiScript UpdateFilter } + mouseEnter { show message_delFavorite ; setitemcolor delfavorite backcolor .1 .37 .1 1 } + mouseExit { hide message_delFavorite ; setitemcolor delfavorite backcolor .37 .1 .1 1 } + } +itemDef { + name delfavorite + style WINDOW_STYLE_SHADER + ownerdrawFlag UI_SHOW_FAVORITESERVERS + background "ui/assets/framebutton.tga" + rect 276 395 92 26 + visible 1 + decoration + } + +itemDef { + name delfavorite + style WINDOW_STYLE_SHADER + ownerdrawFlag UI_SHOW_FAVORITESERVERS + background "ui/assets/leftbutton.tga" + rect 270 395 7 26 + visible 1 + decoration + } + +itemDef { + name delfavorite + style WINDOW_STYLE_SHADER + ownerdrawFlag UI_SHOW_FAVORITESERVERS + background "ui/assets/rightbutton.tga" + rect 367 395 7 26 + visible 1 + decoration + } + + + + + +itemDef { + name serverinfo + text "Server Info" + type ITEM_TYPE_BUTTON + textscale .3 + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + rect 404 395 92 26 + textalign 1 + textalignx 46 // center + textaligny 20 + backcolor .37 .1 .1 1 + forecolor 1 1 1 1 + visible 1 + action { play "sound/misc/kcaction.wav" ; + open serverinfo_popmenu } + mouseEnter { show message_serverinfo ; setitemcolor serverinfo backcolor .1 .37 .1 1 } + mouseExit { hide message_serverinfo ; setitemcolor serverinfo backcolor .37 .1 .1 1 } + } +itemDef { + name serverinfo + style WINDOW_STYLE_SHADER + background "ui/assets/framebutton.tga" + rect 404 395 92 26 + visible 1 + decoration + } + +itemDef { + name serverinfo + style WINDOW_STYLE_SHADER + background "ui/assets/leftbutton.tga" + rect 398 395 7 26 + visible 1 + decoration + } + +itemDef { + name serverinfo + style WINDOW_STYLE_SHADER + background "ui/assets/rightbutton.tga" + rect 495 395 7 26 + visible 1 + decoration + } + +itemDef { + name findplayer + text "Find Friend" + type ITEM_TYPE_BUTTON + textscale .3 + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + rect 532 395 92 26 + textalign 1 + textalignx 46 // center + textaligny 20 + backcolor .37 .1 .1 1 + forecolor 1 1 1 1 + visible 1 + action { play "sound/misc/kcaction.wav" ; + open findplayer_popmenu } + mouseEnter { show message_findplayer ; setitemcolor findplayer backcolor .1 .37 .1 1 } + mouseExit { hide message_findplayer ; setitemcolor findplayer backcolor .37 .1 .1 1 } + } +itemDef { + name serverinfo + style WINDOW_STYLE_SHADER + background "ui/assets/framebutton.tga" + rect 532 395 92 26 + visible 1 + decoration + } + +itemDef { + name serverinfo + style WINDOW_STYLE_SHADER + background "ui/assets/leftbutton.tga" + rect 526 395 7 26 + visible 1 + decoration + } + +itemDef { + name serverinfo + style WINDOW_STYLE_SHADER + background "ui/assets/rightbutton.tga" + rect 623 395 7 26 + visible 1 + decoration + } + + + + + + + + +// VIEW OPTIONS // + +itemDef { + name viewEmpty + type ITEM_TYPE_YESNO + text "View Empty:" + + cvar "ui_browserShowEmpty" + textscale .25 + rect 262 71 125 20 + textalign 0 + textalignx 0 + textaligny 17 + forecolor 1 1 1 1 + visible 1 + action { play "sound/misc/nomenu.wav" ; + uiScript RefreshFilter } + mouseEnter { show message_viewEmpty } + mouseExit { hide message_viewEmpty } + } +itemDef { + name viewEmpty + type 11 + text "View Full:" + cvar "ui_browserShowFull" + textscale .25 + rect 387 71 125 20 + textalign 0 + textalignx 0 + textaligny 17 + forecolor 1 1 1 1 + visible 1 + action { uiScript RefreshFilter ; + play "sound/misc/nomenu.wav" } + mouseEnter { show message_viewFull } + mouseExit { hide message_viewFull } + } + + + + + +// BACK BAR // + + + itemDef { + name gotobar + style 2 + rect 0 430 640 30 + textscale 0.4 + textalign 0 // center + textalignx 60 // x alignment point for text + // use it to offset left/right text from the edge + // or to center the text on a different point + textaligny 21 + style 2 + border 4 + bordercolor 0.5 0.5 0.5 0.5 + bordersize 2 + backcolor 0 0 .75 0.5 + visible 1 + mouseEnter { setcolor backcolor .75 0 0 .5 } + mouseExit { setcolor backcolor 0 0 .75 .5 } + decoration + } + + itemDef { + name back + style 3 + background "ui/assets/backarrow.tga" + rect 16 424 50 50 + visible 1 + action { close joinserver ; open main } + mouseEnter { hide back ; show back_alt ; show message_back } + } + +itemDef { + name back_alt + style WINDOW_STYLE_SHADER + background "ui/assets/backarrow_alt.tga" + rect 14 422 54 54 + backcolor 0 0 0 0 + forecolor 1 1 1 1 + visible 0 + type ITEM_TYPE_BUTTON + mouseExit { hide back_alt ; show back ; hide message_back } + action { close joinserver ; open main } + } + + + + + itemDef { + name accept + style 3 + rect 574 424 50 50 + background "ui/assets/forwardarrow.tga" + backcolor 0 0 0 0 + forecolor 1 1 1 1 + visible 1 + mouseEnter { show lightning ; hide accept ; show accept_alt ; show message_accept ; playlooped "sound/misc/loop_electricity_05.wav" } + action { uiScript JoinServer } + } + + itemDef { + name accept_alt + style WINDOW_STYLE_SHADER + rect 572 422 54 54 + background "ui/assets/forwardarrow_alt.tga" + backcolor 0 0 0 0 + type ITEM_TYPE_BUTTON + forecolor 1 1 1 1 + visible 0 + type ITEM_TYPE_BUTTON + mouseExit { hide lightning ; hide accept_alt ; show accept ; hide message_accept ; playlooped "music/fla_mp03.wav" } + action { uiScript JoinServer } + + } + + itemDef { + name lightning + style 3 + background lightningkc + rect 46 385 246 128 + visible 0 + decoration + } +itemDef { + name lightning + style 3 + background lightningkc + rect 345 385 246 128 + visible 0 + decoration + } + + + +// MESSAGES // + +itemDef { + name message_back + group grpmessage + style 0 + rect 320 430 128 30 + textalign 1 + textstyle 1 + textalignx 0 + textaligny 25 + textscale .416 + text "Exit to Main Menu" + forecolor 1 1 1 1 + decoration + visible 0 + } + +itemDef { + name message_accept + group grpmessage + style 0 + rect 320 430 128 30 + textalign 1 + textalignx 0 + textstyle 1 + textaligny 25 + textscale .416 + text "Join Arena" + forecolor 1 1 1 1 + decoration + visible 0 + } +itemDef { + name message_source + group grpmessage + style 0 + rect 320 430 128 30 + textalign 1 + textstyle 1 + textalignx 0 + textaligny 25 + textscale .416 + text "Set Source" + forecolor 1 1 1 1 + decoration + visible 0 + } + +itemDef { + name message_gamefilter + group grpmessage + style 0 + rect 320 430 128 30 + textalign 1 + textstyle 1 + textalignx 0 + textaligny 25 + textscale .416 + text "Set to Filter for Specific Game Mods" + forecolor 1 1 1 1 + decoration + visible 0 + } +itemDef { + name message_typefilter + group grpmessage + style 0 + rect 320 430 128 30 + textalign 1 + textstyle 1 + textalignx 0 + textaligny 25 + textscale .416 + text "Set to Filter for Specific Game Types" + forecolor 1 1 1 1 + decoration + visible 0 + } + +itemDef { + name message_sort + group grpmessage + style 0 + rect 320 430 128 30 + textalign 1 + textstyle 1 + textalignx 0 + textaligny 25 + textscale .416 + text "Sort Column" + forecolor 1 1 1 1 + decoration + visible 0 + } +itemDef { + name message_refreshSource + group grpmessage + style 0 + rect 320 430 128 30 + textalign 1 + textstyle 1 + textalignx 0 + textaligny 25 + textscale .416 + text "Get Updated Server List from Current Source" + forecolor 1 1 1 1 + decoration + visible 0 + } +itemDef { + name message_refreshFilter + group grpmessage + style 0 + rect 320 430 128 30 + textalign 1 + textstyle 1 + textalignx 0 + textaligny 25 + textscale .416 + text "Refresh All Currently Filtered Servers" + forecolor 1 1 1 1 + decoration + visible 0 + } +itemDef { + name message_addFavorite + group grpmessage + style 0 + rect 320 430 128 30 + textalign 1 + textstyle 1 + textalignx 0 + textaligny 25 + textscale .416 + text "Add Selected Server to Favorites" + forecolor 1 1 1 1 + decoration + visible 0 + } +itemDef { + name message_delFavorite + group grpmessage + style 0 + rect 320 430 128 30 + textalign 1 + textstyle 1 + textalignx 0 + textaligny 25 + textscale .416 + text "Delete Selected Server from Favorites" + forecolor 1 1 1 1 + decoration + visible 0 + } +itemDef { + name message_createFavorite + group grpmessage + style 0 + rect 320 430 128 30 + textalign 1 + textstyle 1 + textalignx 0 + textaligny 25 + textscale .416 + text "Enter IP Address of Favorite Server" + forecolor 1 1 1 1 + decoration + visible 0 + } +itemDef { + name message_addfilter + group grpmessage + style 0 + rect 320 430 128 30 + textalign 1 + textstyle 1 + textalignx 0 + textaligny 25 + textscale .416 + text "Enter Four Letter Filter and Description" + forecolor 1 1 1 1 + decoration + visible 0 + } +itemDef { + name message_password + group grpmessage + style 0 + rect 320 430 128 30 + textalign 1 + textstyle 1 + textalignx 0 + textaligny 25 + textscale .416 + text "Enter Password for Protected Servers" + forecolor 1 1 1 1 + decoration + visible 0 + } +itemDef { + name message_serverinfo + group grpmessage + style 0 + rect 320 430 128 30 + textalign 1 + textstyle 1 + textalignx 0 + textaligny 25 + textscale .416 + text "Display Server Information" + forecolor 1 1 1 1 + decoration + visible 0 + } +itemDef { + name message_findplayer + group grpmessage + style 0 + rect 320 430 128 30 + textalign 1 + textstyle 1 + textalignx 0 + textaligny 25 + textscale .416 + text "Search Current Server List for Friends" + forecolor 1 1 1 1 + decoration + visible 0 + } + + +itemDef { + name fadebox + style WINDOW_STYLE_FILLED + background "ui/assets/fadebox.tga" + forecolor 0 0 0 1 + backcolor 0 0 0 1 + rect 0 0 640 480 + visible 1 + decoration + } + + + + +} + + +} + + diff --git a/ta_ui/keycodes.h b/ta_ui/keycodes.h new file mode 100644 index 00000000..7a2a695b --- /dev/null +++ b/ta_ui/keycodes.h @@ -0,0 +1,143 @@ +// Copyright (C) 1999-2000 Id Software, Inc. +// +#ifndef __KEYCODES_H__ +#define __KEYCODES_H__ + +// +// these are the key numbers that should be passed to KeyEvent +// + +// normal keys should be passed as lowercased ascii + +typedef enum { + K_TAB = 9, + K_ENTER = 13, + K_ESCAPE = 27, + K_SPACE = 32, + + K_BACKSPACE = 127, + + K_COMMAND = 128, + K_CAPSLOCK, + K_POWER, + K_PAUSE, + + K_UPARROW, + K_DOWNARROW, + K_LEFTARROW, + K_RIGHTARROW, + + K_ALT, + K_CTRL, + K_SHIFT, + K_INS, + K_DEL, + K_PGDN, + K_PGUP, + K_HOME, + K_END, + + K_F1, + K_F2, + K_F3, + K_F4, + K_F5, + K_F6, + K_F7, + K_F8, + K_F9, + K_F10, + K_F11, + K_F12, + K_F13, + K_F14, + K_F15, + + K_KP_HOME, + K_KP_UPARROW, + K_KP_PGUP, + K_KP_LEFTARROW, + K_KP_5, + K_KP_RIGHTARROW, + K_KP_END, + K_KP_DOWNARROW, + K_KP_PGDN, + K_KP_ENTER, + K_KP_INS, + K_KP_DEL, + K_KP_SLASH, + K_KP_MINUS, + K_KP_PLUS, + K_KP_NUMLOCK, + K_KP_STAR, + K_KP_EQUALS, + + K_MOUSE1, + K_MOUSE2, + K_MOUSE3, + K_MOUSE4, + K_MOUSE5, + + K_MWHEELDOWN, + K_MWHEELUP, + + K_JOY1, + K_JOY2, + K_JOY3, + K_JOY4, + K_JOY5, + K_JOY6, + K_JOY7, + K_JOY8, + K_JOY9, + K_JOY10, + K_JOY11, + K_JOY12, + K_JOY13, + K_JOY14, + K_JOY15, + K_JOY16, + K_JOY17, + K_JOY18, + K_JOY19, + K_JOY20, + K_JOY21, + K_JOY22, + K_JOY23, + K_JOY24, + K_JOY25, + K_JOY26, + K_JOY27, + K_JOY28, + K_JOY29, + K_JOY30, + K_JOY31, + K_JOY32, + + K_AUX1, + K_AUX2, + K_AUX3, + K_AUX4, + K_AUX5, + K_AUX6, + K_AUX7, + K_AUX8, + K_AUX9, + K_AUX10, + K_AUX11, + K_AUX12, + K_AUX13, + K_AUX14, + K_AUX15, + K_AUX16, + + K_LAST_KEY // this had better be <256! +} keyNum_t; + + +// The menu code needs to get both key and char events, but +// to avoid duplicating the paths, the char events are just +// distinguished by or'ing in K_CHAR_FLAG (ugly) +#define K_CHAR_FLAG 1024 + +#endif diff --git a/ta_ui/main.menu b/ta_ui/main.menu new file mode 100644 index 00000000..a47bf9e7 --- /dev/null +++ b/ta_ui/main.menu @@ -0,0 +1,559 @@ +#include "ui/menudef.h" + +{ + assetGlobalDef { + font "fonts/font" 16 // font + smallFont "fonts/smallfont" 12 // font + bigFont "fonts/bigfont" 20 // font + cursor "gfx/rq3_ta_hud/3_cursor2" // cursor + gradientBar "gfx/rq3_ta_hud/gradientbar.tga" // gradient bar + itemFocusSound "sound/misc/menu2.wav" // sound for item getting focus (via keyboard or mouse ) + + fadeClamp 1.0 // sets the fadeup alpha + fadeCycle 1 // how often fade happens in milliseconds + fadeAmount 0.1 // amount to adjust alpha per cycle + + shadowColor 0.1 0.1 0.1 0.25 // shadow color + } + + + + + +menuDef { + name "main" + background "menuback_a" // Spinning Circle Background + fullScreen MENU_TRUE + rect 0 0 640 480 // Size and position of the menu + visible MENU_TRUE // Visible on open + focusColor 1 .75 0 1 // Menu focus color for text and items + + + onOpen { + setitemcolor fadebox backcolor 0 0 0 1 ; + playlooped "music/sonic1.wav" ; + fadeout fadebox ; + transition cinematic 390 198 250 1 390 163 250 155 20 12 ; + transition menuback_d 0 198 250 1 0 163 255 155 20 12 ; + transition menuback_b 0 198 640 1 0 163 640 155 20 12 ; + transition teamArenaBar 80 55 520 1 80 40 520 30 20 10 ; + transition singlebar 0 95 640 1 0 80 640 30 20 10 ; + transition optionbar 0 375 640 1 0 360 640 30 20 10 ; + transition quitbar 0 419 640 1 0 404 640 30 20 10 ; + play "sound/misc/tim_pump.wav" ; + uiScript stopRefresh ; + } + + onESC { open quit_popmenu } + + + +itemDef { + name modelselection //Precache player model + ownerdraw UI_PLAYERMODEL //Ownerdraw for player models + rect 0 0 0 0 + style 1 + decoration + visible 1 + } + + +itemDef { + name menuback_e // Flashing and rotating light + style WINDOW_STYLE_SHADER + rect 0 163 640 155 + background "menuback_e" + visible 1 + decoration + } + + + +itemDef { + name menuback_b // Transparent Blue Effect + style WINDOW_STYLE_SHADER + rect 0 163 640 155 + visible 1 + background "menuback_b" + bordercolor 0.5 0.5 0.5 .7 + decoration + } + + + + + +//itemDef { +// name cinematic +// style 5 // Style for cinematic +// cinematic "mpintro.roq" +// rect 390 163 250 155 +// backcolor 1 1 1 .25 +// decoration +// visible 1 +// } + + + + +itemDef { + name menuback_d // Team arena text + style WINDOW_STYLE_SHADER + rect 0 163 255 155 + background "menuback_d" + visible 1 + decoration + } + +itemDef { + name windowscreen // Vertical Line Image + rect 0 0 640 240 + style 3 + background levelshotdetail + forecolor 0 0 0 0 + visible 1 + decoration + } +itemDef { + name windowscreen // Vertical Line Image + rect 0 240 640 240 + style 3 + background levelshotdetail + forecolor 0 0 0 0 + visible 1 + decoration + } + + +itemDef { + name menuback_c // Center medal image + style WINDOW_STYLE_SHADER + rect 205 123 235 235 + background "menuback_c" + visible 1 + decoration + } + + + + + + + + +// GAMETYPE // + +itemDef { + name teamArenaBar + style 2 + rect 80 40 520 30 + backcolor 0 0 .75 .25 + border 4 + bordercolor 0.5 0.5 0.5 1 + bordersize 1 + visible 1 + mouseEnter { hide gametype ; show teamarena ; setcolor backcolor .75 0 0 .25 } + mouseExit { show gametype ; hide teamarena ; setcolor backcolor 0 0 .75 .25 } + decoration + } + + + +itemDef { + name gametype + type 1 + text "TEAM ARENA" + style 0 + textstyle 6 + rect 0 40 640 30 + forecolor 1 1 1 1 + textalignx 320 + textaligny 24 + textalign 1 + textscale .416 + visible 1 + } + + + + + +itemDef { + name teamarena + type 1 + text "Quake3" + style 0 + textstyle 6 + rect 120 40 80 30 + textscale .333 + textalign 1 + textalignx 40 + textaligny 22 + backcolor 0 0 0 0 + forecolor 1 1 1 1 + visible 0 + action { play "sound/misc/kcaction.wav" ; + open quake3_popmenu } +} + +itemDef { + name teamarena + text "Rules" + type 1 + style 0 + textstyle 6 + rect 200 40 80 30 + textscale .333 + textalignx 40 + textaligny 22 + textalign 1 + backcolor 0 0 0 0 + forecolor 1 1 1 1 + visible 0 + action { play "sound/misc/kcaction.wav" ; + close main ; + open help_menu } + } + +itemDef { + name teamarena + text "Credits" + type 1 + textstyle 6 + textscale .333 + style 0 + rect 280 40 80 30 + textalignx 40 + textaligny 22 + textalign 1 + backcolor 0 0 0 0 + forecolor 1 1 1 1 + visible 0 + action { play "sound/misc/kcaction.wav" ; + close main ; + open credit } + } + + +itemDef { + name teamarena + text "Mods" + type 1 + style 0 + textstyle 6 + textscale .333 + rect 360 40 80 30 + textalignx 40 + textaligny 22 + textalign 1 + backcolor 0 0 0 0 + forecolor 1 1 1 1 + visible 0 + action { play "sound/misc/kcaction.wav" ; + close main ; + open mod } + } +itemDef { + name teamarena + text "Cinematics" + type 1 + style 0 + textstyle 6 + textscale .333 + rect 440 40 80 30 + textalignx 40 + textaligny 22 + textalign 1 + backcolor 0 0 0 0 + forecolor 1 1 1 1 + visible 0 + action { play "sound/misc/kcaction.wav" ; + close main ; + open cinematicMenu } + } + + + + + + +// SINGLEPLAYER // + +itemDef { + name singlebar + style 2 + rect 0 80 640 30 + backcolor 0 0 .75 .25 + border 4 + bordercolor 0.5 0.5 0.5 1 + bordersize 1 + visible 1 + mouseEnter { setcolor backcolor .75 0 0 .25 ; hide play ; show playselection } + mouseExit { setcolor backcolor 0 0 .75 .25 ; show play ; hide playselection } + decoration + } + + +itemDef { + name play + text "PLAY" + type 1 + style 0 + textstyle 6 + rect 0 80 640 30 + textalign 1 + textscale .416 + textalignx 320 + textaligny 24 + forecolor 1 1 1 1 + visible 1 + } + + +itemDef { + name playselection + text "SinglePlayer" + type 1 + textstyle 6 + rect 170 80 100 30 + textalignx 50 + textaligny 22 + textscale .333 + textalign 1 + forecolor 1 1 1 1 + visible 0 + action { play "sound/misc/kcaction.wav" ; + close main ; + open Skirmish } + } + + +itemDef { + name playselection + text "MultiPlayer" + type 1 + style 0 + textstyle 6 + rect 270 80 100 30 + textalign 1 // center + textalignx 50 + textaligny 22 + textscale .333 + forecolor 1 1 1 1 + visible 0 + action { play "sound/misc/kcaction.wav" ; + close main ; + open joinserver } + } + + + +itemDef { + name playselection + text "StartServer" + type 1 + style 0 + textstyle 6 + rect 370 80 100 30 + textalign 1 // center + textalignx 50 + textaligny 22 + textscale .333 + forecolor 1 1 1 1 + visible 0 + action { play "sound/misc/kcaction.wav" ; + close main ; + open createserver } + } + + + +// OPTIONS // +itemDef { + name optionbar + style 2 + rect 0 360 640 30 + backcolor 0 0 1 .25 + border 4 + bordercolor 0.5 0.5 0.5 1 + bordersize 1 + visible 1 + mouseEnter { setcolor backcolor .75 0 0 .25 ; hide options ; show optionselection } + mouseExit { setcolor backcolor 0 0 .75 .25 ; show options ; hide optionselection } + decoration + } + + +itemDef { + name options + text "OPTIONS" + style 0 + type 1 + textstyle 6 + rect 0 360 640 30 + textalignx 320 + textaligny 24 + textscale .416 + textalign 1 + forecolor 1 1 1 1 + visible 1 + } + +itemDef { + name optionselection + text "Player" + style 0 + type 1 + textstyle 6 + rect 170 360 100 30 + textalignx 50 + textaligny 22 + textscale .333 + textalign 1 + forecolor 1 1 1 1 + visible 0 + action { play "sound/misc/kcaction.wav" ; + close main ; + open player_menu } + } + + +itemDef { + name optionselection + text "Setup" + type 1 + style 0 + textstyle 6 + rect 270 360 100 30 + textalignx 50 + textaligny 22 + textscale .333 + textalign 1 + forecolor 1 1 1 1 + visible 0 + action { play "sound/misc/kcaction.wav" ; + close main ; + open setup_menu ; + open control_menu } + } + +itemDef { + name optionselection + text "Demos" + type 1 + style 0 + textstyle 6 + rect 370 360 100 30 + textalignx 50 + textaligny 22 + textscale .333 + textalign 1 + forecolor 1 1 1 1 + visible 0 + action { play "sound/misc/kcaction.wav" ; + close main ; + open demo } + } + + + +// QUIT // + +itemDef { + name quitbar + style 2 + rect 0 404 640 30 + backcolor 0 0 1 .25 + border 4 + bordercolor 0.5 0.5 0.5 1 + bordersize 1 + visible 1 + decoration + } + + + +itemDef { + name quit + text "QUIT" + style 0 + type 1 + textstyle 6 + rect 0 404 640 30 + textalignx 320 + textaligny 24 + textscale .416 + textalign 1 + forecolor 1 1 1 1 + visible 1 + action { play "sound/misc/kcaction.wav" ; + open quit_popmenu } + mouseEnter { setitemcolor quitbar backcolor .75 0 0 .25 } + mouseExit { setitemcolor quitbar backcolor 0 0 .75 .25 } + } + +/* + +// DEMO ONLY OPTION // + +itemDef { + name copyright + // demo_only + text "Demo Version Only. Content Warning: Contains Depictions of Violence." + style 0 + textscale .25 + rect 0 425 640 40 + textalign 1 + textaligny 32 + textalignx 320 + forecolor 1 .75 0 1 + visible 1 + decoration + } +*/ + + + +itemDef { + name copyright + text "Quake III: Team Arena Copyright 2000 Id Software, Inc. All rights reserved" + style 0 + textscale .25 + rect 0 440 640 40 + textalign 1 + textaligny 32 + textalignx 320 + forecolor .75 0 0 .75 + visible 1 + decoration + } + +itemDef { + name fadebox // Box for fading in menus + style WINDOW_STYLE_FILLED + background "ui/assets/fadebox.tga" + forecolor 0 0 0 1 + backcolor 0 0 0 1 + rect 0 0 640 480 + visible 1 + decoration + } + + + + + + + + +} +} +} + + } + + + + } + +} \ No newline at end of file diff --git a/ta_ui/main2.menu b/ta_ui/main2.menu new file mode 100644 index 00000000..53662bc4 --- /dev/null +++ b/ta_ui/main2.menu @@ -0,0 +1,686 @@ +#include "ui/menudef.h" + +{ + assetGlobalDef { + font "fonts/impact.ttf" 16 // font + smallFont "fonts/impact.ttf" 12 // font + bigFont "fonts/impact.ttf" 20 // font + cursor "menu/art/3_cursor3" // cursor + gradientBar "ui/assets/gradientbar2.tga" // gradient bar + //menuEnterSound "sound/misc/menu1.wav" // sound for menu loading + //menuExitSound "sound/misc/menu3.wav" // sound for menu exiting + itemFocusSound "sound/misc/menu2.wav" // sound for item getting focus (via keyboard or mouse ) + //menuBuzzSound "sound/misc/menu4.wav" // sound for menu buzzing + + fadeClamp 1.0 // sets the fadeup alpha + fadeCycle 1 // how often fade happens in milliseconds + fadeAmount 0.1 // amount to adjust alpha per cycle + + //shadowX 5 // x amount for shadow offset + //shadowY 5 // y amount for shadow offset + shadowColor 0.1 0.1 0.1 0.25 // shadow color + } + + + + + +menuDef { + name "main" + background "menuback_a" + fullScreen MENU_TRUE + rect 0 0 640 480 + visible MENU_TRUE + focusColor 1 .75 0 1 + soundLoop "music/fla_mp03.wav" + onESC { open quit_popmenu } + + + + + +itemDef { + name menuback_e + style WINDOW_STYLE_SHADER + rect 0 163 640 155 + background "menuback_e" + visible 1 + decoration + } + + + +itemDef { + name menuback_b + style WINDOW_STYLE_SHADER + rect 0 163 640 155 + visible 1 + background "menuback_b" + bordercolor 0.5 0.5 0.5 .7 + decoration + } + + + + + +itemDef { + name cinematic + style 5 + cinematic "mpintro.roq" + rect 390 163 250 155 + backcolor 1 1 1 .25 + decoration + visible 1 + } + + + + +itemDef { + name menuback_d + style WINDOW_STYLE_SHADER + rect 0 163 255 155 + background "menuback_d" + visible 1 + decoration + } + + +itemDef { + name menuback_c + style WINDOW_STYLE_SHADER + rect 205 123 235 235 + background "menuback_c" + visible 1 + decoration + } + +itemDef { + name selection + style WINDOW_STYLE_SHADER + rect 205 123 235 235 + background "ui/assets/mainpop.tga" + forecolor 1 1 1 .75 + visible 0 + decoration + } + +itemDef { + name selection + rect 252 170 144 144 + style 3 + background "centerconsole2" + visible 0 + decoration + } + + + + + + + +// GAMETYPE // + +itemDef { + name gametypebar + style 2 + rect 80 40 520 30 + backcolor 0 0 .75 .25 + border 4 + bordercolor 0.5 0.5 0.5 1 + bordersize 1 + visible 1 + mouseEnter { hide gametype ; show teamarena ; setcolor backcolor .75 0 0 .25 ; show selection } + mouseExit { show gametype ; hide teamarena ; setcolor backcolor 0 0 .75 .25 ; hide selection ; hide grpMessage } + decoration + } + + + +itemDef { + name gametype + type 1 + text "TEAM ARENA" + style 0 + textstyle 6 + rect 0 40 640 30 + forecolor 1 1 1 1 + textalignx 320 + textaligny 23 + textalign 1 + textscale .416 + visible 1 + } + +itemDef { + name teamarena + type 1 + text "Quake3" + style 0 + textstyle 6 + rect 200 40 60 30 + textscale .333 + textalign 1 + textalignx 30 + textaligny 22 + backcolor 0 0 0 0 + forecolor 1 1 1 1 + visible 0 + mouseenter { fadein message_quake } + mouseexit { fadeout message_quake } + action { open quake3_popmenu } +} + +itemDef { + name teamarena + text "Rules" + type 1 + style 0 + textstyle 6 + rect 260 40 60 30 + textscale .333 + textalignx 30 + textaligny 22 + textalign 1 + backcolor 0 0 0 0 + forecolor 1 1 1 1 + visible 0 + mouseenter { fadein message_help } + mouseexit { fadeout message_help } + action { close main ; open help_menu } + } + +itemDef { + name teamarena + text "Credits" + type 1 + textstyle 6 + textscale .333 + style 0 + rect 320 40 60 30 + textalignx 30 + textaligny 22 + textalign 1 + backcolor 0 0 0 0 + forecolor 1 1 1 1 + visible 0 + mouseenter { fadein message_credits } + mouseexit { fadeout message_credits } + action { close main ; open credit } + } + + +itemDef { + name teamarena + text "Mods" + type 1 + style 0 + textstyle 6 + textscale .333 + rect 380 40 60 30 + textalignx 30 + textaligny 22 + textalign 1 + backcolor 0 0 0 0 + forecolor 1 1 1 1 + visible 0 + mouseenter { fadein message_mods } + mouseexit { fadeout message_mods } + action { close main ; open mod } + } + + + + + + +// SINGLEPLAYER // + +itemDef { + name singlebar + style 2 + rect 0 80 640 30 + backcolor 0 0 .75 .25 + border 4 + bordercolor 0.5 0.5 0.5 1 + bordersize 1 + visible 1 + mouseEnter { setcolor backcolor .75 0 0 .25 ; hide play ; show playselection ; show selection } + mouseExit { setcolor backcolor 0 0 .75 .25 ; show play ; hide playselection ; hide selection ; hide grpMessage } + decoration + } + + +itemDef { + name play + text "PLAY" + type 1 + style 0 + textstyle 6 + rect 0 80 640 30 + textalign 1 + textscale .416 + textalignx 320 + textaligny 23 + forecolor 1 1 1 1 + visible 1 + } + + +itemDef { + name playselection + text "SinglePlayer" + type 1 + textstyle 6 + rect 170 80 100 30 + textalignx 50 + textaligny 22 + textscale .333 + textalign 1 + forecolor 1 1 1 1 + visible 0 + mouseenter { fadein message_singleplayer } + mouseexit { fadeout message_singleplayer } + action { close main ; open Skirmish } + } + + +itemDef { + name playselection + text "MultiPlayer" + type 1 + style 0 + textstyle 6 + rect 270 80 100 30 + textalign 1 // center + textalignx 50 + textaligny 22 + textscale .333 + forecolor 1 1 1 1 + visible 0 + mouseenter { fadein message_multiplayer } + mouseexit { fadeout message_multiplayer } + action { close main ; open joinserver } + } + + + +itemDef { + name playselection + text "StartServer" + type 1 + style 0 + textstyle 6 + rect 370 80 100 30 + textalign 1 // center + textalignx 50 + textaligny 22 + textscale .333 + forecolor 1 1 1 1 + visible 0 + mouseenter { fadein message_startserver } + mouseexit { fadeout message_startserver } + action { close main ; open createserver } + } + + + +// OPTIONS // +itemDef { + name optionbar + style 2 + rect 0 360 640 30 + backcolor 0 0 1 .25 + border 4 + bordercolor 0.5 0.5 0.5 1 + bordersize 1 + visible 1 + mouseEnter { setcolor backcolor .75 0 0 .25 ; hide options ; show optionselection ; show selection } + mouseExit { setcolor backcolor 0 0 .75 .25 ; show options ; hide optionselection ; hide selection ; hide grpMessage } + decoration + } + + +itemDef { + name options + text "OPTIONS" + style 0 + type 1 + textstyle 6 + rect 0 360 640 30 + textalignx 320 + textaligny 23 + textscale .416 + textalign 1 + forecolor 1 1 1 1 + visible 1 + mouseenter { fadein message_options } + mouseexit { fadeout message_options } + } + +itemDef { + name optionselection + text "Player" + style 0 + type 1 + textstyle 6 + rect 170 360 100 30 + textalignx 50 + textaligny 22 + textscale .333 + textalign 1 + forecolor 1 1 1 1 + visible 0 + mouseenter { fadein message_player } + mouseexit { fadeout message_player } + action { close main ; open player_menu } + } + + +itemDef { + name optionselection + text "Setup" + type 1 + style 0 + textstyle 6 + rect 270 360 100 30 + textalignx 50 + textaligny 22 + textscale .333 + textalign 1 + forecolor 1 1 1 1 + visible 0 + mouseenter { fadein message_setup } + mouseexit { fadeout message_setup } + action { close main ; open setup_menu ; open control_menu } + } + +itemDef { + name optionselection + text "Demos" + type 1 + style 0 + textstyle 6 + rect 370 360 100 30 + textalignx 50 + textaligny 22 + textscale .333 + textalign 1 + forecolor 1 1 1 1 + visible 0 + mouseenter { fadein message_demos } + mouseexit { fadeout message_demos } + action { close main ; open demo } + } + +// QUIT // + +itemDef { + name quitbar + style 2 + rect 0 404 640 30 + backcolor 0 0 1 .25 + border 4 + bordercolor 0.5 0.5 0.5 1 + bordersize 1 + visible 1 + decoration + } + + + +itemDef { + name quit + text "QUIT" + style 0 + type 1 + textstyle 6 + rect 0 404 640 30 + textalignx 320 + textaligny 23 + textscale .416 + textalign 1 + forecolor 1 1 1 1 + visible 1 + action { open quit_popmenu } + mouseEnter { setitemcolor quitbar backcolor .75 0 0 .25 ; show selection ; show message_quit } + mouseExit { setitemcolor quitbar backcolor 0 0 .75 .25 ; hide selection ; fadeout message_quit ; hide grpMessage } + } + + + +itemDef { + name copyright + text "Quake III Copyright 2000 id software, inc. All rights reserved" + style 0 + textscale .25 + rect 0 440 640 40 + textalign 1 + textaligny 32 + textalignx 320 + forecolor .75 0 0 .75 + visible 1 + decoration + } + +// MESSAGES // + +itemDef { + name message_quake + group grpMessage + style 0 + rect 265 210 235 20 + textalign 0 + textstyle 1 + textalignx 0 + textaligny 25 + wrapped + textscale .333 + text "Play the Original \r" + "Quake III Game." + forecolor 1 1 1 1 + decoration + visible 0 + } +itemDef { + name message_help + group grpMessage + style 0 + rect 261 195 235 20 + textalign 0 + textstyle 1 + textalignx 0 + textaligny 25 + wrapped + textscale .333 + text " Rules for \r" + "New Gametytpes,\r" + " Powerups, and\r" + " Team Orders." + forecolor 1 1 1 1 + decoration + visible 0 + } +itemDef { + name message_credits + group grpMessage + style 0 + rect 272 220 235 20 + textalign 0 + textstyle 1 + textalignx 0 + textaligny 25 + wrapped + textscale .333 + text " About Us." + forecolor 1 1 1 1 + decoration + visible 0 + } + +itemDef { + name message_mods + group grpMessage + style 0 + rect 256 210 235 20 + textalign 0 + textstyle 1 + textalignx 0 + textaligny 25 + wrapped + textscale .333 + text " Modifications of\r" + "Quake III by other \r" + " Developers." + forecolor 1 1 1 1 + decoration + visible 0 + } +itemDef { + name message_singleplayer + group grpMessage + style 0 + rect 260 205 235 20 + textalign 0 + textstyle 1 + textalignx 0 + textaligny 25 + wrapped + textscale .333 + text " Challenge Your\r" + "Skills Against the\r" + " Computer." + forecolor 1 1 1 1 + decoration + visible 0 + } +itemDef { + name message_multiplayer + group grpMessage + style 0 + rect 265 205 235 20 + textalign 0 + textstyle 1 + textalignx 0 + textaligny 25 + wrapped + textscale .333 + text "Join other Team \r" + "Arena Games on\r" + " LAN or Internet." + forecolor 1 1 1 1 + decoration + visible 0 + } +itemDef { + name message_startserver + group grpMessage + style 0 + rect 272 205 235 20 + textalign 0 + textstyle 1 + textalignx 0 + textaligny 25 + wrapped + textscale .333 + text " Start a Game\r" + " Server for\r" + "Others to Join." + forecolor 1 1 1 1 + decoration + visible 0 + } +itemDef { + name message_player + group grpMessage + style 0 + rect 275 205 235 20 + textalign 0 + textstyle 1 + textalignx 0 + textaligny 25 + wrapped + textscale .333 + text " Select Your\r" + "Player Model\r" + " and Clan." + forecolor 1 1 1 1 + decoration + visible 0 + } +itemDef { + name message_setup + group grpMessage + style 0 + rect 257 205 235 20 + textalign 0 + textstyle 1 + textalignx 0 + textaligny 25 + wrapped + textscale .333 + text " Set Controls,\r" + "Game Options, and \r" + " System Settings." + forecolor 1 1 1 1 + decoration + visible 0 + } +itemDef { + name message_demos + group grpMessage + style 0 + rect 258 210 235 20 + textalign 0 + textstyle 1 + textalignx 0 + textaligny 25 + wrapped + textscale .333 + text " View Recorded\r" + "Team Arena Game." + forecolor 1 1 1 1 + decoration + visible 0 + } +itemDef { + name message_quit + group grpMessage + style 0 + rect 258 225 235 20 + textalign 0 + textstyle 1 + textalignx 0 + textaligny 25 + wrapped + textscale .333 + text " Get to Work!" + forecolor 1 1 1 1 + decoration + visible 0 + } + + + + + + } + +} + + + + +} +} +} + + } + + + + } + +} \ No newline at end of file diff --git a/ta_ui/menudef.h b/ta_ui/menudef.h new file mode 100644 index 00000000..ef235672 --- /dev/null +++ b/ta_ui/menudef.h @@ -0,0 +1,287 @@ + +#define ITEM_TYPE_TEXT 0 // simple text +#define ITEM_TYPE_BUTTON 1 // button, basically text with a border +#define ITEM_TYPE_RADIOBUTTON 2 // toggle button, may be grouped +#define ITEM_TYPE_CHECKBOX 3 // check box +#define ITEM_TYPE_EDITFIELD 4 // editable text, associated with a cvar +#define ITEM_TYPE_COMBO 5 // drop down list +#define ITEM_TYPE_LISTBOX 6 // scrollable list +#define ITEM_TYPE_MODEL 7 // model +#define ITEM_TYPE_OWNERDRAW 8 // owner draw, name specs what it is +#define ITEM_TYPE_NUMERICFIELD 9 // editable text, associated with a cvar +#define ITEM_TYPE_SLIDER 10 // mouse speed, volume, etc. +#define ITEM_TYPE_YESNO 11 // yes no cvar setting +#define ITEM_TYPE_MULTI 12 // multiple list setting, enumerated +#define ITEM_TYPE_BIND 13 // multiple list setting, enumerated + +#define ITEM_ALIGN_LEFT 0 // left alignment +#define ITEM_ALIGN_CENTER 1 // center alignment +#define ITEM_ALIGN_RIGHT 2 // right alignment + +#define ITEM_TEXTSTYLE_NORMAL 0 // normal text +#define ITEM_TEXTSTYLE_BLINK 1 // fast blinking +#define ITEM_TEXTSTYLE_PULSE 2 // slow pulsing +#define ITEM_TEXTSTYLE_SHADOWED 3 // drop shadow ( need a color for this ) +#define ITEM_TEXTSTYLE_OUTLINED 4 // drop shadow ( need a color for this ) +#define ITEM_TEXTSTYLE_OUTLINESHADOWED 5 // drop shadow ( need a color for this ) +#define ITEM_TEXTSTYLE_SHADOWEDMORE 6 // drop shadow ( need a color for this ) + +#define WINDOW_BORDER_NONE 0 // no border +#define WINDOW_BORDER_FULL 1 // full border based on border color ( single pixel ) +#define WINDOW_BORDER_HORZ 2 // horizontal borders only +#define WINDOW_BORDER_VERT 3 // vertical borders only +#define WINDOW_BORDER_KCGRADIENT 4 // horizontal border using the gradient bars + +#define WINDOW_STYLE_EMPTY 0 // no background +#define WINDOW_STYLE_FILLED 1 // filled with background color +#define WINDOW_STYLE_GRADIENT 2 // gradient bar based on background color +#define WINDOW_STYLE_SHADER 3 // gradient bar based on background color +#define WINDOW_STYLE_TEAMCOLOR 4 // team color +#define WINDOW_STYLE_CINEMATIC 5 // cinematic + +#define MENU_TRUE 1 // uh.. true +#define MENU_FALSE 0 // and false + +#define HUD_VERTICAL 0x00 +#define HUD_HORIZONTAL 0x01 + +// list box element types +#define LISTBOX_TEXT 0x00 +#define LISTBOX_IMAGE 0x01 + +// list feeders +#define FEEDER_HEADS 0x00 // model heads +#define FEEDER_MAPS 0x01 // text maps based on game type +#define FEEDER_SERVERS 0x02 // servers +#define FEEDER_CLANS 0x03 // clan names +#define FEEDER_ALLMAPS 0x04 // all maps available, in graphic format +#define FEEDER_REDTEAM_LIST 0x05 // red team members +#define FEEDER_BLUETEAM_LIST 0x06 // blue team members +#define FEEDER_PLAYER_LIST 0x07 // players +#define FEEDER_TEAM_LIST 0x08 // team members for team voting +#define FEEDER_MODS 0x09 // team members for team voting +#define FEEDER_DEMOS 0x0a // team members for team voting +#define FEEDER_SCOREBOARD 0x0b // team members for team voting +#define FEEDER_Q3HEADS 0x0c // model heads +#define FEEDER_SERVERSTATUS 0x0d // server status +#define FEEDER_FINDPLAYER 0x0e // find player +#define FEEDER_CINEMATICS 0x0f // cinematics + +// display flags +#define CG_SHOW_BLUE_TEAM_HAS_REDFLAG 0x00000001 +#define CG_SHOW_RED_TEAM_HAS_BLUEFLAG 0x00000002 +#define CG_SHOW_ANYTEAMGAME 0x00000004 +#define CG_SHOW_HARVESTER 0x00000008 +#define CG_SHOW_ONEFLAG 0x00000010 +#define CG_SHOW_CTF 0x00000020 +#define CG_SHOW_OBELISK 0x00000040 +#define CG_SHOW_HEALTHCRITICAL 0x00000080 +#define CG_SHOW_SINGLEPLAYER 0x00000100 +#define CG_SHOW_TOURNAMENT 0x00000200 +#define CG_SHOW_DURINGINCOMINGVOICE 0x00000400 +#define CG_SHOW_IF_PLAYER_HAS_FLAG 0x00000800 +#define CG_SHOW_LANPLAYONLY 0x00001000 +#define CG_SHOW_MINED 0x00002000 +#define CG_SHOW_HEALTHOK 0x00004000 +#define CG_SHOW_TEAMINFO 0x00008000 +#define CG_SHOW_NOTEAMINFO 0x00010000 +#define CG_SHOW_OTHERTEAMHASFLAG 0x00020000 +#define CG_SHOW_YOURTEAMHASENEMYFLAG 0x00040000 +#define CG_SHOW_ANYNONTEAMGAME 0x00080000 +#define CG_SHOW_2DONLY 0x10000000 + + +#define UI_SHOW_LEADER 0x00000001 +#define UI_SHOW_NOTLEADER 0x00000002 +#define UI_SHOW_FAVORITESERVERS 0x00000004 +#define UI_SHOW_ANYNONTEAMGAME 0x00000008 +#define UI_SHOW_ANYTEAMGAME 0x00000010 +#define UI_SHOW_NEWHIGHSCORE 0x00000020 +#define UI_SHOW_DEMOAVAILABLE 0x00000040 +#define UI_SHOW_NEWBESTTIME 0x00000080 +#define UI_SHOW_FFA 0x00000100 +#define UI_SHOW_NOTFFA 0x00000200 +#define UI_SHOW_NETANYNONTEAMGAME 0x00000400 +#define UI_SHOW_NETANYTEAMGAME 0x00000800 +#define UI_SHOW_NOTFAVORITESERVERS 0x00001000 + + + + +// owner draw types +// ideally these should be done outside of this file but +// this makes it much easier for the macro expansion to +// convert them for the designers ( from the .menu files ) +#define CG_OWNERDRAW_BASE 1 +#define CG_PLAYER_ARMOR_ICON 1 +#define CG_PLAYER_ARMOR_VALUE 2 +#define CG_PLAYER_HEAD 3 +#define CG_PLAYER_HEALTH 4 +#define CG_PLAYER_AMMO_ICON 5 +#define CG_PLAYER_AMMO_VALUE 6 +#define CG_SELECTEDPLAYER_HEAD 7 +#define CG_SELECTEDPLAYER_NAME 8 +#define CG_SELECTEDPLAYER_LOCATION 9 +#define CG_SELECTEDPLAYER_STATUS 10 +#define CG_SELECTEDPLAYER_WEAPON 11 +#define CG_SELECTEDPLAYER_POWERUP 12 + +#define CG_FLAGCARRIER_HEAD 13 +#define CG_FLAGCARRIER_NAME 14 +#define CG_FLAGCARRIER_LOCATION 15 +#define CG_FLAGCARRIER_STATUS 16 +#define CG_FLAGCARRIER_WEAPON 17 +#define CG_FLAGCARRIER_POWERUP 18 + +#define CG_PLAYER_ITEM 19 +#define CG_PLAYER_SCORE 20 + +#define CG_BLUE_FLAGHEAD 21 +#define CG_BLUE_FLAGSTATUS 22 +#define CG_BLUE_FLAGNAME 23 +#define CG_RED_FLAGHEAD 24 +#define CG_RED_FLAGSTATUS 25 +#define CG_RED_FLAGNAME 26 + +#define CG_BLUE_SCORE 27 +#define CG_RED_SCORE 28 +#define CG_RED_NAME 29 +#define CG_BLUE_NAME 30 +#define CG_HARVESTER_SKULLS 31 // only shows in harvester +#define CG_ONEFLAG_STATUS 32 // only shows in one flag +#define CG_PLAYER_LOCATION 33 +#define CG_TEAM_COLOR 34 +#define CG_CTF_POWERUP 35 + +#define CG_AREA_POWERUP 36 +#define CG_AREA_LAGOMETER 37 // painted with old system +#define CG_PLAYER_HASFLAG 38 +#define CG_GAME_TYPE 39 // not done + +#define CG_SELECTEDPLAYER_ARMOR 40 +#define CG_SELECTEDPLAYER_HEALTH 41 +#define CG_PLAYER_STATUS 42 +#define CG_FRAGGED_MSG 43 // painted with old system +#define CG_PROXMINED_MSG 44 // painted with old system +#define CG_AREA_FPSINFO 45 // painted with old system +#define CG_AREA_SYSTEMCHAT 46 // painted with old system +#define CG_AREA_TEAMCHAT 47 // painted with old system +#define CG_AREA_CHAT 48 // painted with old system +#define CG_GAME_STATUS 49 +#define CG_KILLER 50 +#define CG_PLAYER_ARMOR_ICON2D 51 +#define CG_PLAYER_AMMO_ICON2D 52 +#define CG_ACCURACY 53 +#define CG_ASSISTS 54 +#define CG_DEFEND 55 +#define CG_EXCELLENT 56 +#define CG_IMPRESSIVE 57 +#define CG_PERFECT 58 +#define CG_GAUNTLET 59 +#define CG_SPECTATORS 60 +#define CG_TEAMINFO 61 +#define CG_VOICE_HEAD 62 +#define CG_VOICE_NAME 63 +#define CG_PLAYER_HASFLAG2D 64 +#define CG_HARVESTER_SKULLS2D 65 // only shows in harvester +#define CG_CAPFRAGLIMIT 66 +#define CG_1STPLACE 67 +#define CG_2NDPLACE 68 +#define CG_CAPTURES 69 + + + + +#define UI_OWNERDRAW_BASE 200 +#define UI_HANDICAP 200 +#define UI_EFFECTS 201 +#define UI_PLAYERMODEL 202 +#define UI_CLANNAME 203 +#define UI_CLANLOGO 204 +#define UI_GAMETYPE 205 +#define UI_MAPPREVIEW 206 +#define UI_SKILL 207 +#define UI_BLUETEAMNAME 208 +#define UI_REDTEAMNAME 209 +#define UI_BLUETEAM1 210 +#define UI_BLUETEAM2 211 +#define UI_BLUETEAM3 212 +#define UI_BLUETEAM4 213 +#define UI_BLUETEAM5 214 +#define UI_REDTEAM1 215 +#define UI_REDTEAM2 216 +#define UI_REDTEAM3 217 +#define UI_REDTEAM4 218 +#define UI_REDTEAM5 219 +#define UI_NETSOURCE 220 +#define UI_NETMAPPREVIEW 221 +#define UI_NETFILTER 222 +#define UI_TIER 223 +#define UI_OPPONENTMODEL 224 +#define UI_TIERMAP1 225 +#define UI_TIERMAP2 226 +#define UI_TIERMAP3 227 +#define UI_PLAYERLOGO 228 +#define UI_OPPONENTLOGO 229 +#define UI_PLAYERLOGO_METAL 230 +#define UI_OPPONENTLOGO_METAL 231 +#define UI_PLAYERLOGO_NAME 232 +#define UI_OPPONENTLOGO_NAME 233 +#define UI_TIER_MAPNAME 234 +#define UI_TIER_GAMETYPE 235 +#define UI_ALLMAPS_SELECTION 236 +#define UI_OPPONENT_NAME 237 +#define UI_VOTE_KICK 238 +#define UI_BOTNAME 239 +#define UI_BOTSKILL 240 +#define UI_REDBLUE 241 +#define UI_CROSSHAIR 242 +#define UI_SELECTEDPLAYER 243 +#define UI_MAPCINEMATIC 244 +#define UI_NETGAMETYPE 245 +#define UI_NETMAPCINEMATIC 246 +#define UI_SERVERREFRESHDATE 247 +#define UI_SERVERMOTD 248 +#define UI_GLINFO 249 +#define UI_KEYBINDSTATUS 250 +#define UI_CLANCINEMATIC 251 +#define UI_MAP_TIMETOBEAT 252 +#define UI_JOINGAMETYPE 253 +#define UI_PREVIEWCINEMATIC 254 +#define UI_STARTMAPCINEMATIC 255 +#define UI_MAPS_SELECTION 256 + +#define VOICECHAT_GETFLAG "getflag" // command someone to get the flag +#define VOICECHAT_OFFENSE "offense" // command someone to go on offense +#define VOICECHAT_DEFEND "defend" // command someone to go on defense +#define VOICECHAT_DEFENDFLAG "defendflag" // command someone to defend the flag +#define VOICECHAT_PATROL "patrol" // command someone to go on patrol (roam) +#define VOICECHAT_CAMP "camp" // command someone to camp (we don't have sounds for this one) +#define VOICECHAT_FOLLOWME "followme" // command someone to follow you +#define VOICECHAT_RETURNFLAG "returnflag" // command someone to return our flag +#define VOICECHAT_FOLLOWFLAGCARRIER "followflagcarrier" // command someone to follow the flag carrier +#define VOICECHAT_YES "yes" // yes, affirmative, etc. +#define VOICECHAT_NO "no" // no, negative, etc. +#define VOICECHAT_ONGETFLAG "ongetflag" // I'm getting the flag +#define VOICECHAT_ONOFFENSE "onoffense" // I'm on offense +#define VOICECHAT_ONDEFENSE "ondefense" // I'm on defense +#define VOICECHAT_ONPATROL "onpatrol" // I'm on patrol (roaming) +#define VOICECHAT_ONCAMPING "oncamp" // I'm camping somewhere +#define VOICECHAT_ONFOLLOW "onfollow" // I'm following +#define VOICECHAT_ONFOLLOWCARRIER "onfollowcarrier" // I'm following the flag carrier +#define VOICECHAT_ONRETURNFLAG "onreturnflag" // I'm returning our flag +#define VOICECHAT_INPOSITION "inposition" // I'm in position +#define VOICECHAT_IHAVEFLAG "ihaveflag" // I have the flag +#define VOICECHAT_BASEATTACK "baseattack" // the base is under attack +#define VOICECHAT_ENEMYHASFLAG "enemyhasflag" // the enemy has our flag (CTF) +#define VOICECHAT_STARTLEADER "startleader" // I'm the leader +#define VOICECHAT_STOPLEADER "stopleader" // I resign leadership +#define VOICECHAT_TRASH "trash" // lots of trash talk +#define VOICECHAT_WHOISLEADER "whoisleader" // who is the team leader +#define VOICECHAT_WANTONDEFENSE "wantondefense" // I want to be on defense +#define VOICECHAT_WANTONOFFENSE "wantonoffense" // I want to be on offense +#define VOICECHAT_KILLINSULT "kill_insult" // I just killed you +#define VOICECHAT_TAUNT "taunt" // I want to taunt you +#define VOICECHAT_DEATHINSULT "death_insult" // you just killed me +#define VOICECHAT_KILLGAUNTLET "kill_gauntlet" // I just killed you with the gauntlet +#define VOICECHAT_PRAISE "praise" // you did something good diff --git a/ta_ui/menus.txt b/ta_ui/menus.txt new file mode 100644 index 00000000..5568ab0a --- /dev/null +++ b/ta_ui/menus.txt @@ -0,0 +1,37 @@ +// menu defs +// +{ + loadMenu { "ui/main.menu" } + loadMenu { "ui/joinserver.menu" } + loadMenu { "ui/player.menu" } + loadMenu { "ui/setup.menu" } + loadMenu { "ui/fight.menu" } + loadMenu { "ui/skirmish.menu" } + loadMenu { "ui/createserver.menu" } + loadMenu { "ui/controls.menu" } + loadMenu { "ui/cdkey.menu" } + loadMenu { "ui/system.menu" } + loadMenu { "ui/options.menu" } + loadMenu { "ui/help.menu" } + loadMenu { "ui/ordershelp.menu" } + loadMenu { "ui/mod.menu" } + loadMenu { "ui/demo.menu" } + loadMenu { "ui/cinematicmenu.menu" } + loadMenu { "ui/credit.menu" } + loadMenu { "ui/demo_quit.menu" } + loadMenu { "ui/connect.menu" } + loadMenu { "ui/powerup.menu" } + loadMenu { "ui/password.menu" } + loadMenu { "ui/quake3.menu" } + loadMenu { "ui/quit.menu" } + loadMenu { "ui/vid_restart.menu" } + loadMenu { "ui/default.menu" } + loadMenu { "ui/addfilter.menu" } + loadMenu { "ui/error.menu" } + loadMenu { "ui/serverinfo.menu" } + loadMenu { "ui/findplayer.menu" } + loadMenu { "ui/endofgame.menu" } + loadMenu { "ui/quitcredit.menu" } + loadMenu { "ui/resetscore.menu" } + loadMenu { "ui/createfavorite.menu" } +} diff --git a/ta_ui/min_hud.menu b/ta_ui/min_hud.menu new file mode 100644 index 00000000..fff2702b --- /dev/null +++ b/ta_ui/min_hud.menu @@ -0,0 +1,674 @@ +#include "ui/menudef.h" + +// team menu +// +// defines from ui_shared.h + +{ + assetGlobalDef { + cursor "ui/assets/3_cursor2" // cursor + gradientBar "ui/assets/gradientbar2.tga" // gradient bar + fadeClamp 1.0 // sets the fadeup alpha + fadeCycle 1 // how often fade happens in milliseconds + fadeAmount 0.1 // amount to adjust alpha per cycle + + shadowX 5 // x amount for shadow offset + shadowY 5 // y amount for shadow offset + shadowColor 0.1 0.1 0.1 0.25 // shadow color + + font "fonts/impact.ttf" 16 // font + smallFont "fonts/impact.ttf" 12 // font + bigFont "fonts/impact.ttf" 20 // font + + + } + + + + + + +// SELECTED PLAYER // + +menuDef { + name "SelectedPlayer" + fullScreen MENU_FALSE + visible 1 + rect 0 390 222 64 + ownerdrawflag CG_SHOW_ANYTEAMGAME + + + itemDef { + name "b" + rect 0 0 222 64 + style 4 + border 1 + bordersize 1 + bordercolor .5 .5 .5 1 + visible 1 + ownerdrawflag CG_SHOW_TEAMINFO + } + itemDef { + name "b" + rect 0 40 222 24 + style 4 + border 1 + bordersize 1 + bordercolor .5 .5 .5 1 + visible 1 + ownerdrawflag CG_SHOW_NOTEAMINFO + } + + + itemDef { + name "b" + rect 0 4 221 64 + visible 1 + textscale .2 + textaligny 10 + textalignx 0 + forecolor 1 1 1 1 + ownerdrawflag CG_SHOW_TEAMINFO + ownerdraw CG_TEAMINFO + } + + + itemDef { + name "b" + rect 2 41 20 20 + visible 1 + ownerdrawflag CG_SHOW_NOTEAMINFO + ownerdraw CG_SELECTEDPLAYER_HEAD + } +itemDef { + name "b" + rect 21 44 16 16 + visible 1 + decoration + ownerdrawflag CG_SHOW_NOTEAMINFO + ownerdraw CG_SELECTEDPLAYER_STATUS + } + + + itemDef { + name "b" + rect 41 43 35 15 + textscale 0.2125 + textstyle 3 + forecolor 1 1 1 1 + visible 1 + decoration + ownerdrawflag CG_SHOW_NOTEAMINFO + ownerdraw CG_SELECTEDPLAYER_NAME + } + +/* +itemDef { + name "b" + rect 90 43 45 15 + textscale 0.2125 + textstyle 3 + forecolor 1 1 1 1 + visible 1 + decoration + ownerdrawflag CG_SHOW_NOTEAMINFO + ownerdraw CG_SELECTEDPLAYER_LOCATION + } + +*/ + + + } + + +// PLAYER STATUS // + +menuDef { + name "playerStatus" + fullScreen MENU_FALSE + visible MENU_TRUE + rect 142 455 80 24 + + itemDef { + name "playerRect" + rect 1 1 78 22 + style 3 + background hudalert_good + visible 1 + ownerdrawflag CG_SHOW_IF_PLAYER_HAS_FLAG + } + + itemDef { + name "playerStatusRect" + style 4 + rect 0 0 80 24 + border 1 + bordersize 1 + bordercolor .5 .5 .5 1 + visible 1 + } + + + itemDef { + name "playeritem" + rect 5 4 16 16 + visible 1 + decoration + ownerdraw CG_PLAYER_ITEM + } + + itemDef { + name "CTFPOWERUP" + rect 25 4 16 16 + visible 1 + decoration + ownerdraw CG_CTF_POWERUP + } + + itemDef { + name "flag" + rect 45 4 16 16 + visible 1 + decoration + ownerdraw CG_PLAYER_HASFLAG2D + ownerdrawflag CG_SHOW_IF_PLAYER_HAS_FLAG + + } + + itemDef { + name "skulls" + rect 39 -14 40 32 + textaligny 4 + textalignx 0 + visible 1 + textscale .25 + decoration + textstyle 3 + ownerdraw CG_HARVESTER_SKULLS2D + } + + } + +// POWERUP AREA // + +menuDef { + name "powerup area" + fullScreen MENU_FALSE + visible MENU_TRUE + rect 0 455 141 24 + + +itemDef { + name "powerRect" + visible 1 + style 4 + rect 0 0 35 24 + } +itemDef { + name "powerRect" + visible 1 + style 4 + rect 70 0 35 24 + } + +itemDef { + name "powerRect" + visible 1 + style 4 + border 1 + bordersize 1 + bordercolor .5 .5 .5 1 + rect 0 0 141 24 + } + + + + itemDef { + name "powerupArea" + rect 2 3 18 18 + textscale .25 + visible 1 + decoration + ownerdraw CG_AREA_POWERUP + special 18 // spacing + align HUD_HORIZONTAL + } + + +} + + + +// AMMO // + +menuDef { + name "Ammo" + fullScreen MENU_FALSE + visible MENU_TRUE + rect 223 455 64 24 + + + itemDef { + name "ammoRect" + visible 1 + style 4 + border 1 + bordersize 1 + bordercolor .5 .5 .5 1 + rect 0 0 64 24 + } + + + itemDef { + name "a" + rect 30 1 24 19 + visible 1 + textstyle 3 + decoration + textscale .333 + forecolor 1 1 1 1 + ownerdraw CG_PLAYER_AMMO_VALUE + addColorRange -999 5 1 0 0 1 + addColorRange 6 999 1 .75 0 1 + } + + itemDef { + name "a" + rect 5 2 20 20 + visible 1 + decoration + ownerdraw CG_PLAYER_AMMO_ICON2D + } + + } + + + + + + +// PLAYER // + +menuDef { + name "Player" + fullScreen MENU_FALSE + visible MENU_TRUE + rect 288 455 64 24 + + itemDef { + name "playerRect" + rect 1 1 62 23 + style 3 + background hudalert + visible 1 + ownerdrawflag CG_SHOW_HEALTHCRITICAL + } + + itemDef { + name "playerRect" + rect 0 0 64 24 + style 4 + visible 1 + border 1 + bordersize 1 + bordercolor .5 .5 .5 1 + } + + + itemDef { + name "healthok" + rect 30 1 24 19 + visible 1 + textstyle 3 + decoration + forecolor 1 1 1 1 + textscale .333 + ownerdraw CG_PLAYER_HEALTH + addColorRange -999 25 1 0 0 1 + addColorRange 26 100 1 .75 0 1 + addColorRange 101 999 1 1 1 1 + } + + itemDef { + name "b" + rect 2 1 22 22 + visible 1 + decoration + ownerdraw CG_PLAYER_HEAD + } + } + + + + + + + +// ARMOR // + +menuDef { + name "Armor" + fullScreen MENU_FALSE + visible MENU_TRUE + rect 353 455 64 24 + + + itemDef { + name "armorRect" + rect 0 0 64 24 + visible 1 + style 4 + border 1 + bordersize 1 + bordercolor .5 .5 .5 1 + } + + itemDef { + name "armor" + rect 5 -8 20 20 + visible 1 + decoration + ownerdraw CG_PLAYER_ARMOR_ICON2D + } + + itemDef { + name "armor2" + textstyle 3 + rect 30 1 24 19 + visible 1 + decoration + textscale .333 + ownerdraw CG_PLAYER_ARMOR_VALUE + addColorRange -999 25 .67 0 0 1 + addColorRange 26 100 1 .75 0 1 + addColorRange 101 999 .75 .75 .75 1 + } + } + + + + + + +// TEAMSCORE // + +menuDef { + name "teamScore" + fullScreen MENU_FALSE + visible MENU_TRUE + rect 418 455 150 24 + ownerdrawflag CG_SHOW_ANYTEAMGAME + + itemDef { + name "teamRect" + rect 53 1 47 22 + style 3 + background hudalert_blue + visible 1 + ownerdrawflag CG_SHOW_BLUE_TEAM_HAS_REDFLAG + } + +itemDef { + name "teamRect" + rect 100 1 50 22 + style 3 + background hudalert_red + visible 1 + ownerdrawflag CG_SHOW_RED_TEAM_HAS_BLUEFLAG + } + + itemDef { + name "teamScoreRect" + visible 1 + rect 0 0 150 24 + border 1 + bordersize 1 + bordercolor .5 .5 .5 1 + style 4 + } + + itemDef { + name "f" + rect 55 5 16 16 + visible 1 + bordercolor 1 1 1 .75 + decoration + style 3 + background "ui/assets/bluechip.tga" + } +itemDef { + name "f" + rect 55 5 16 16 + visible 1 + bordercolor 1 1 1 .75 + decoration + style 3 + ownerdrawflag CG_SHOW_HARVESTER + background "icons/skull_blue.tga" + } + + itemDef { + name "blueflag" + rect 55 5 16 16 + visible 1 + decoration + ownerdrawflag CG_SHOW_CTF + ownerdraw CG_BLUE_FLAGSTATUS + } +itemDef { + name "playerScore" + rect 5 18 40 12 + visible 1 + textstyle 3 + decoration + forecolor 1 1 1 1 + textscale .25 + text "" + ownerdraw CG_CAPFRAGLIMIT + } + +itemDef { + name "oneflagstatus" + rect 34 5 16 16 + visible 1 + decoration + ownerdraw CG_ONEFLAG_STATUS + } + + itemDef { + name "r" + rect 71 6 18 12 + textstyle 3 + visible 1 + decoration + forecolor .25 .25 1 1 + textscale 0.25 + ownerdraw CG_BLUE_SCORE + } + + itemDef { + name "f" + rect 110 5 16 16 + visible 1 + bordercolor 1 1 1 1 + decoration + style 3 + background "ui/assets/redchip.tga" + } + + itemDef { + name "f" + rect 110 5 16 16 + visible 1 + bordercolor 1 1 1 1 + decoration + style 3 + ownerdrawflag CG_SHOW_HARVESTER + background "icons/skull_red.tga" + } + + itemDef { + name "f" + rect 110 5 16 16 + visible 1 + decoration + ownerdrawflag CG_SHOW_CTF + ownerdraw CG_RED_FLAGSTATUS + } + + + itemDef { + name "r" + rect 126 6 18 12 + textstyle 3 + visible 1 + decoration + forecolor 1 0 0 1 + textscale 0.25 + ownerdraw CG_RED_SCORE + } + } + +// TEAMSCORE // + +menuDef { + name "teamScore" + fullScreen MENU_FALSE + visible MENU_TRUE + rect 418 455 150 24 + ownerdrawflag CG_SHOW_ANYNONTEAMGAME + + + itemDef { + name "teamScoreRect" + visible 1 + rect 0 0 150 24 + border 1 + bordersize 1 + bordercolor .5 .5 .5 1 + style 4 + } + + + itemDef { + name "playerScore" + rect 8 18 40 0 + visible 1 + textstyle 3 + decoration + forecolor 1 1 1 1 + textscale .25 + text "" + ownerdraw CG_CAPFRAGLIMIT + } + + + + + itemDef { + name "r" + rect 40 18 18 12 + textstyle 3 + text "1st:" + visible 1 + decoration + forecolor .25 .25 1 1 + textscale 0.25 + ownerdraw CG_1STPLACE + } + + + itemDef { + name "r" + rect 105 18 18 12 + textstyle 3 + text "2nd:" + visible 1 + decoration + forecolor 1 0 0 1 + textscale 0.25 + ownerdraw CG_2NDPLACE + } + } + +// PLAYERSCORE // + +menuDef { + name "playerScore" + fullScreen MENU_FALSE + visible MENU_TRUE + rect 569 455 70 24 + + itemDef { + name "playerScoreRect" + visible 1 + rect 0 0 70 24 + border 1 + bordersize 1 + bordercolor .5 .5 .5 1 + style 4 + } + + + itemDef { + name "playerScore" + rect 4 6 75 12 + textstyle 3 + visible 1 + decoration + forecolor 1 1 1 1 + textscale .25 + ownerdraw CG_PLAYER_SCORE + } + +} + + + + + + + + + menuDef { + name "voiceMenu" + fullScreen MENU_FALSE + visible MENU_FALSE + rect 5 5 100 100 + + + itemDef { + name "voiceMenuRect" + style 4 + rect 2 2 50 50 + border 1 + bordersize 1 + bordercolor .5 .5 .5 1 + visible 1 + } + + itemDef { + name "b" + rect 2 2 50 50 + visible 1 + decoration + ownerdraw CG_VOICE_HEAD + } + + + itemDef { + name "b" + rect 2 55 50 12 + visible 1 + decoration + textscale .25 + textalign 0 + textalignx 0 + textaligny 12 + ownerdraw CG_VOICE_NAME + } + + + } + + diff --git a/ta_ui/mod.menu b/ta_ui/mod.menu new file mode 100644 index 00000000..cb2363e8 --- /dev/null +++ b/ta_ui/mod.menu @@ -0,0 +1,303 @@ +#include "ui/menudef.h" + +{ +\\ MOD \\ + + menuDef { + name "mod" + visible 0 + fullscreen 1 + rect 0 0 640 480 + background "menuback_a" + focusColor 1 .67 0 1 + style 1 + border 1 + onEsc { close mod ; open main } + onOpen { setitemcolor fadebox backcolor 0 0 0 1 ; + playlooped "music/fla_mp03.wav" ; + fadeout fadebox ; + uiScript loadMods ; + hide lightning ; + hide accept_alt ; + show accept ; + hide back_alt ; + show back ; + hide grpmessage } + + + + + + + +// LEVEL SELECTION BAR // + + + itemDef { + name levelbar + text "TEAM ARENA MODS" + textstyle 6 + style 2 + rect 0 16 640 40 + textscale 0.416 + textalign 1 // center + textalignx 320 // x alignment point for text + // use it to offset left/right text from the edge + // or to center the text on a different point + textaligny 27 + style 2 + border 4 + bordercolor 0.5 0.5 0.5 0.5 + bordersize 2 + backcolor 0 0 .75 0.5 + visible 1 + decoration + } + + itemDef { + name teamarenaimage + style 3 + background "ui/assets/teamarenaimage.tga" + rect 0 80 220 115 + visible 1 + } + + +itemDef { + name mappreview + style 5 + cinematic "mpintro.roq" + rect 20 195 200 150 + backcolor 1 1 1 .25 + border 1 + bordersize 1 + bordercolor .5 .5 .5 1 + decoration + visible 1 + } +/* + +// DEMO ONLY // +itemDef { + name demo_only + style 0 + rect 240 250 360 20 + textstyle 1 + textalign 1 + textalignx 180 + textaligny 25 + textscale .333 + text "This Option is Not Available in Demo." + forecolor 1 1 1 1 + decoration + visible 1 + } + +*/ + + + +itemDef { + name modlist + rect 240 100 360 300 + type ITEM_TYPE_LISTBOX + style WINDOW_STYLE_FILLED + elementwidth 120 + elementheight 20 + textscale .25 + elementtype LISTBOX_TEXT + feeder FEEDER_MODS + textalign 3 + textaligny 14 + border 1 + bordercolor .5 .5 .5 .5 + forecolor 1 1 1 1 + backcolor 0 0 .5 .25 + outlinecolor .1 .1 .7 .5 + visible 1 + doubleClick { uiScript RunMod } + mouseEnter { fadein message_mod ; setitemcolor modlist bordercolor .7 0 0 1 } + mouseExit { fadeout message_mod ; setitemcolor modlist bordercolor .5 .5 .5 .5 } + } + + + + +// BACK BAR // + + + itemDef { + name gotobar + style 2 + rect 0 430 640 30 + textscale 0.4 + textalign 0 // center + textalignx 60 // x alignment point for text + // use it to offset left/right text from the edge + // or to center the text on a different point + textaligny 21 + style 2 + border 4 + bordercolor 0.5 0.5 0.5 0.5 + bordersize 2 + backcolor 0 0 .75 0.5 + visible 1 + mouseEnter { setcolor backcolor .75 0 0 .5 } + mouseExit { setcolor backcolor 0 0 .75 .5 } + decoration + } + + + + itemDef { + name back + style 3 + background "ui/assets/backarrow.tga" + rect 16 424 50 50 + visible 1 + action { close mod ; open main } + mouseEnter { hide back ; show back_alt ; fadein message_back } + } + +itemDef { + name back_alt + style WINDOW_STYLE_SHADER + background "ui/assets/backarrow_alt.tga" + rect 14 422 54 54 + backcolor 0 0 0 0 + forecolor 1 1 1 1 + visible 0 + type ITEM_TYPE_BUTTON + mouseExit { hide back_alt ; show back ; fadeout message_back } + action { close mod ; open main } + } + + + + + +itemDef { + name accept + style 3 + rect 574 424 50 50 + background "ui/assets/forwardarrow.tga" + backcolor 0 0 0 0 + forecolor 1 1 1 1 + visible 1 + mouseEnter { show lightning ; hide accept ; show accept_alt ; show message_accept ; playlooped "sound/misc/loop_electricity_05.wav" } + action { close mod ; uiScript RunMod } + } + +itemDef { + name accept_alt + style 3 + rect 572 422 54 54 + background "ui/assets/forwardarrow_alt.tga" + backcolor 0 0 0 0 + forecolor 1 1 1 1 + visible 0 + type ITEM_TYPE_BUTTON + action { close mod ; uiScript RunMod } + mouseExit { hide lightning ; hide accept_alt ; show accept ; hide message_accept ; playlooped "music/fla_mp03.wav" } + } + + + itemDef { + name lightning + style 3 + background lightningkc + rect 46 385 250 128 + visible 0 + decoration + } +itemDef { + name lightning + style 3 + background lightningkc + rect 341 385 250 128 + visible 0 + decoration + } + + + +// MESSAGES // + +itemDef { + name message_back + group grpmessage + style 0 + rect 320 430 128 30 + textstyle 1 + textalign 1 + textalignx 0 + textaligny 25 + textscale .416 + text "Exit to Main Menu" + forecolor 1 1 1 1 + decoration + visible 0 + } + +itemDef { + name message_accept + group grpmessage + style 0 + rect 320 430 128 30 + textalign 1 + textstyle 1 + textalignx 0 + textaligny 25 + textscale .416 + text "Play Mod" + forecolor 1 1 1 1 + decoration + visible 0 + } +itemDef { + name message_mod + group grpmessage + style 0 + rect 320 430 128 30 + textalign 1 + textstyle 1 + textalignx 0 + textaligny 25 + textscale .416 + text "Select Mod Name to Play" + forecolor 1 1 1 1 + decoration + visible 0 + } + + +itemDef { + name fadebox + style WINDOW_STYLE_FILLED + background "ui/assets/fadebox.tga" + forecolor 0 0 0 1 + backcolor 0 0 0 1 + rect 0 0 640 480 + visible 1 + decoration + } + + + + + + + +} + + + + + + + + +} + +} +} \ No newline at end of file diff --git a/ta_ui/mssccprj.scc b/ta_ui/mssccprj.scc new file mode 100644 index 00000000..c367192b --- /dev/null +++ b/ta_ui/mssccprj.scc @@ -0,0 +1,5 @@ +SCC = This is a Source Code Control file + +[ui.dsp] +SCC_Aux_Path = "\\Purgatory\Purgatory\idSourceControl" +SCC_Project_Name = "$/MissionPack/code/ui", RLGAAAAA diff --git a/ta_ui/newleague.menu b/ta_ui/newleague.menu new file mode 100644 index 00000000..23cf2645 --- /dev/null +++ b/ta_ui/newleague.menu @@ -0,0 +1,67 @@ +#include "ui/menudef.h" + +{ +\\ NEW LEAGUE POPUP MENU \\ + +menuDef { + name "newleague_popmenu" + visible 0 + fullscreen 0 + rect 190 200 255 75 + outOfBoundsClick // this closes the window if it gets a click out of the rectangle + focusColor 1 .75 0 1 + style 1 + border 1 + +itemDef { + name window + rect 0 0 255 75 + style 1 + border 1 + bordercolor .5 .5 .5 1 + backcolor 0 0 .5 1 + visible 1 + decoration + } + + + // ENTER NEW LEAGUE NAME // + + +itemDef { + name newleague + group grpsettings + text "Name:" + style 0 + textscale .3 + ITEM_TYPE_EDITFIELD + rect 20 20 110 20 + textalign 0 + textalignx 0 + textaligny 16 + forecolor 1 1 1 1 + visible 1 + } + +itemDef { + name type + text "OK" + textscale .25 + group grpsettings + style WINDOW_STYLE_SHADER + background "ui/assets/button_red.tga" + rect 103 50 50 20 + textalign 1 + textalignx 25 + textaligny 15 + forecolor 1 1 1 1 + visible 1 + action { close newLeague_popmenu ; close createserver ; open createserver } +} + + +} + + + +} diff --git a/ta_ui/options.menu b/ta_ui/options.menu new file mode 100644 index 00000000..47e9a7fd --- /dev/null +++ b/ta_ui/options.menu @@ -0,0 +1,351 @@ +#include "ui/menudef.h" + +{ +\\ SETUP MENU \\ + +menuDef { + name "options_menu" + visible 0 + fullscreen 0 + rect 186 0 443 426 + focusColor 1 .75 0 1 + style 1 + border 1 + onOpen { setitemcolor fadebox backcolor 0 0 0 1 ; + fadeout fadebox } + onEsc { close options_menu ; close setup_menu ; open main } + + + + +itemDef { + name window + group grpControlbutton + rect 0 2 443 426 + style WINDOW_STYLE_FILLED + border 1 + bordercolor .5 .5 .5 .5 + forecolor 1 1 1 1 + backcolor 0 0 0 .25 + visible 1 + decoration +} + + + + + + + itemDef { + name options + group grpOptions + type ITEM_TYPE_YESNO + text "Simple Items:" + cvar "cg_simpleItems" + rect 99 15 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .3 + forecolor 1 1 1 1 + visible 1 + } + + itemDef { + name options + group grpOptions + type ITEM_TYPE_YESNO + text "Marks On Walls:" + cvar "cg_marks" + rect 99 35 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .3 + forecolor 1 1 1 1 + visible 1 + } + + itemDef { + name options + group grpOptions + type ITEM_TYPE_YESNO + text "Show Floating Scores:" + cvar "cg_scorePlums" + rect 99 55 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .3 + forecolor 1 1 1 1 + visible 1 + } + + itemDef { + name options + group grpOptions + text "Ejecting Brass:" + type ITEM_TYPE_MULTI + cvar "cg_brassTime" + cvarFloatList { "High" 2500 "Med" 1250 "Off" 0 } + rect 99 75 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .3 + forecolor 1 1 1 1 + visible 1 + } + + itemDef { + name options + group grpOptions + type ITEM_TYPE_YESNO + text "Dynamic Lights:" + cvar "r_dynamiclight" + rect 99 95 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .3 + forecolor 1 1 1 1 + visible 1 + } + + itemDef { + name options + group grpOptions + type ITEM_TYPE_YESNO + text "Identify Target:" + cvar "cg_drawCrosshairNames" + rect 99 115 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .3 + forecolor 1 1 1 1 + visible 1 + } + + itemDef { + name options + group grpOptions + type ITEM_TYPE_YESNO + text "Draw Gun:" + cvar "cg_drawGun" + rect 99 135 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .3 + forecolor 1 1 1 1 + visible 1 + } + + itemDef { + name options + group grpOptions + type ITEM_TYPE_YESNO + text "Low Quality Sky:" + cvar "r_fastsky" + rect 99 155 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .3 + forecolor 1 1 1 1 + visible 1 + } + + itemDef { + name options + group grpOptions + type ITEM_TYPE_YESNO + text "Sync Every Frame:" + cvar "weapon 5" + rect 99 175 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .3 + forecolor 1 1 1 1 + visible 1 + } + + itemDef { + name options + group grpOptions + type ITEM_TYPE_YESNO + text "Force Player Models:" + cvar "cg_forceModel" + rect 99 195 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .3 + forecolor 1 1 1 1 + visible 1 + } + + itemDef { + name options + group grpOptions + type ITEM_TYPE_YESNO + text "Draw Team Overlay:" + cvar "cg_drawTeamOverlay" + rect 99 215 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .3 + forecolor 1 1 1 1 + visible 1 + } + itemDef { + name options + group grpOptions + type ITEM_TYPE_YESNO + text "Auto Download:" + cvar "cl_allowDownload" + rect 99 235 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .3 + forecolor 1 1 1 1 + visible 1 + } + itemDef { + name options + group grpOptions + type ITEM_TYPE_YESNO + text "Show Time:" + cvar "cg_drawTimer" + rect 99 255 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .3 + forecolor 1 1 1 1 + visible 1 + } + itemDef { + name options + group grpOptions + type ITEM_TYPE_YESNO + text "Voices Off:" + cvar "cg_NoVoiceChats" + rect 99 275 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .3 + forecolor 1 1 1 1 + visible 1 + } + itemDef { + name options + group grpOptions + type ITEM_TYPE_YESNO + text "Taunts Off:" + cvar "cg_noTaunt" + rect 99 295 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .3 + forecolor 1 1 1 1 + visible 1 + } + itemDef { + name options + group grpOptions + type ITEM_TYPE_YESNO + text "Voice Text Off:" + cvar "cg_noVoiceText" + rect 99 315 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .3 + forecolor 1 1 1 1 + visible 1 + } + itemDef { + name options + group grpOptions + type ITEM_TYPE_YESNO + text "Team Chats Only:" + cvar "cg_teamChatsOnly" + rect 99 335 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .3 + forecolor 1 1 1 1 + visible 1 + } + + itemDef { + name options + group grpOptions + type ITEM_TYPE_YESNO + text "In Game Video:" + cvar "r_inGameVideo" + rect 99 355 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .3 + forecolor 1 1 1 1 + visible 1 + } + +itemDef { + name options + group grpOptions + type ITEM_TYPE_MULTI + text "Statusbar:" + cvar "cg_hudfiles" + cvarStrList { Normal "ui/hud.txt" Small "ui/hud2.txt" } + rect 99 375 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .3 + forecolor 1 1 1 1 + visible 1 + } + +itemDef { + name options + group grpOptions + text "Crosshair:" + rect 227 395 20 20 + ownerdraw UI_CROSSHAIR + textalign ITEM_ALIGN_RIGHT + textalignx 0 + textaligny 20 + textscale .3 + forecolor 1 1 1 1 + visible 1 + } + + +itemDef { + name fadebox + style WINDOW_STYLE_FILLED + background "ui/assets/fadebox.tga" + forecolor 0 0 0 1 + backcolor 0 0 0 1 + rect 0 0 640 480 + visible 1 + decoration + } + + + + + + +} diff --git a/ta_ui/ordershelp.menu b/ta_ui/ordershelp.menu new file mode 100644 index 00000000..1cc93172 --- /dev/null +++ b/ta_ui/ordershelp.menu @@ -0,0 +1,1020 @@ +#include "ui/menudef.h" + +{ +\\ ordersHelp \\ + + menuDef { + name "ordersHelp_menu" + visible 0 + fullscreen 0 + rect 0 90 640 340 + focusColor 1 .67 0 1 + border 1 + style 1 + soundLoop "music/fla_mp03.wav" + onEsc { close help_menu ; close powerup_menu ; close ordersHelp_menu ; open main } + onOpen { setitemcolor fadebox backcolor 0 0 0 1 ; + fadeout fadebox ; + hide grphelptext ; + show helptext ; + hide grpIconAlt ; + hide grpVoiceHead } + + + +// ORDERS ICONS // + + +itemDef { + name helpIcon + style WINDOW_STYLE_SHADER + rect 37 2 32 32 + visible 1 + background "ui/assets/help.tga" + decoration + } + +itemDef { + name attackIcon + style WINDOW_STYLE_SHADER + rect 113 2 32 32 + visible 1 + background "ui/assets/assault.tga" + decoration + } + +itemDef { + name campIcon + style WINDOW_STYLE_SHADER + rect 189 2 32 32 + visible 1 + background "ui/assets/camp.tga" + decoration + } + + +itemDef { + name defendIcon + style WINDOW_STYLE_SHADER + rect 265 2 32 32 + visible 1 + background "ui/assets/defend.tga" + decoration + } + + +itemDef { + name followIcon + style WINDOW_STYLE_SHADER + rect 341 2 32 32 + visible 1 + background "ui/assets/follow.tga" + decoration + } + + +itemDef { + name patrolIcon + style WINDOW_STYLE_SHADER + rect 415 2 32 32 + visible 1 + background "ui/assets/patrol.tga" + decoration + } + +itemDef { + name retrieveIcon + style WINDOW_STYLE_SHADER + rect 489 2 32 32 + visible 1 + background "ui/assets/retrieve.tga" + decoration + } + +itemDef { + name escortIcon + style WINDOW_STYLE_SHADER + rect 563 2 32 32 + visible 1 + background "ui/assets/escort.tga" + decoration + } + + + +// ORDERS ICONS ALT // + + +itemDef { + name helpIconAlt + group grpIconAlt + style WINDOW_STYLE_SHADER + rect 35 0 34 34 + visible 1 + background "ui/assets/help.tga" + decoration + } + +itemDef { + name attackIconAlt + group grpIconAlt + style WINDOW_STYLE_SHADER + rect 111 0 34 34 + visible 1 + background "ui/assets/assault.tga" + decoration + } + +itemDef { + name campIconAlt + group grpIconAlt + style WINDOW_STYLE_SHADER + rect 187 0 34 34 + visible 1 + background "ui/assets/camp.tga" + decoration + } + + +itemDef { + name defendIconAlt + group grpIconAlt + style WINDOW_STYLE_SHADER + rect 263 0 34 34 + visible 1 + background "ui/assets/defend.tga" + decoration + } + + +itemDef { + name followIconAlt + group grpIconAlt + style WINDOW_STYLE_SHADER + rect 339 0 34 34 + visible 1 + background "ui/assets/follow.tga" + decoration + } + + +itemDef { + name patrolIconAlt + group grpIconAlt + style WINDOW_STYLE_SHADER + rect 413 0 34 34 + visible 1 + background "ui/assets/patrol.tga" + decoration + } + +itemDef { + name retrieveIconAlt + group grpIconAlt + style WINDOW_STYLE_SHADER + rect 487 0 34 34 + visible 1 + background "ui/assets/retrieve.tga" + decoration + } + +itemDef { + name escortIconAlt + group grpIconAlt + style WINDOW_STYLE_SHADER + rect 561 0 34 34 + visible 1 + background "ui/assets/escort.tga" + decoration + } + + + +// Leader // + + + + +itemDef { + name Help + rect 28 37 50 26 + type 1 + text "Help" + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + textalign 1 + textscale .25 + textalignx 25 + textaligny 20 + visible 1 + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + action { hide grphelptext ; show helptext ; play "sound/misc/kcaction.wav" } + mouseEnter { setitemcolor help backcolor .1 .37 .1 1 ; hide helpIcon ; show helpIconAlt ; hide grpVoiceHead } + mouseExit { setitemcolor help backcolor .37 .1 .1 1 ; hide helpIconAlt ; show helpIcon } + } +itemDef { + name help + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/framebutton.tga" + rect 28 37 50 26 + visible 1 + decoration + } + +itemDef { + name help + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/leftbutton.tga" + rect 22 37 7 26 + visible 1 + decoration + } + +itemDef { + name help + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/rightbutton.tga" + rect 77 37 7 26 + visible 1 + decoration + } + + + + +// Attack // + + + +itemDef { + name attack + style 0 + rect 104 37 50 26 + text "Attack" + style WINDOW_STYLE_FILLED + type 1 + background "ui/assets/button_back.tga" + textalign 1 + textscale .25 + textalignx 25 + textaligny 20 + visible 1 + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + action { hide grphelptext ; show attacktext ; exec "play sound/voices/male1/or_03.wav" ; show grpVoiceHead } + mouseEnter { setitemcolor attack backcolor .1 .37 .1 1 ; hide attackIcon ; show attackIconAlt ; hide grpVoiceHead } + mouseExit { setitemcolor attack backcolor .37 .1 .1 1 ; hide attackIconAlt ; show attackIcon } + } +itemDef { + name attack + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/framebutton.tga" + rect 104 37 50 26 + visible 1 + decoration + } + +itemDef { + name attack + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/leftbutton.tga" + rect 98 37 7 26 + visible 1 + decoration + } + +itemDef { + name attack + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/rightbutton.tga" + rect 153 37 7 26 + visible 1 + decoration + } + + + +// CAMP // + + + +itemDef { + name camp + style 0 + rect 180 37 50 26 + type 1 + text "Camp" + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + textalign 1 + textscale .25 + textalignx 25 + textaligny 20 + visible 1 + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + action { hide grphelptext ; show camptext ; exec "play sound/voices/male1/voc_01.wav" ; show grpVoiceHead } + mouseEnter { setitemcolor camp backcolor .1 .37 .1 1 ; hide campIcon ; show campIconAlt ; hide grpVoiceHead } + mouseExit { setitemcolor camp backcolor .37 .1 .1 1 ; hide campIconAlt ; show campIcon } + } +itemDef { + name camp + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/framebutton.tga" + rect 180 37 50 26 + visible 1 + decoration + } + +itemDef { + name camp + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/leftbutton.tga" + rect 174 37 7 26 + visible 1 + decoration + } + +itemDef { + name camp + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/rightbutton.tga" + rect 229 37 7 26 + visible 1 + decoration + } + + + +// DEFEND // + + + +itemDef { + name defend + style 0 + rect 256 37 50 26 + type 1 + text "Defend" + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + textalign 1 + textscale .25 + textalignx 25 + textaligny 20 + visible 1 + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + action { hide grphelptext ; show defendtext ; exec "play sound/voices/male1/or_05.wav" ; show grpVoiceHead } + mouseEnter { setitemcolor defend backcolor .1 .37 .1 1 ; hide defendIcon ; show defendIconAlt ; hide grpVoiceHead } + mouseExit { setitemcolor defend backcolor .37 .1 .1 1 ; hide defendIconAlt ; show defendIcon } + } +itemDef { + name defend + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/framebutton.tga" + rect 256 37 50 26 + visible 1 + decoration + } + +itemDef { + name defend + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/leftbutton.tga" + rect 250 37 7 26 + visible 1 + decoration + } + +itemDef { + name defend + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/rightbutton.tga" + rect 305 37 7 26 + visible 1 + decoration + } + + + +// FOLLOW // + + + +itemDef { + name follow + type 1 + rect 332 37 50 26 + text "Follow" + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + textalign 1 + textscale .25 + textalignx 25 + textaligny 20 + visible 1 + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + action { hide grphelptext ; show followtext ; exec "play sound/voices/male1/or_11.wav" ; show grpVoiceHead } + mouseEnter { setitemcolor follow backcolor .1 .37 .1 1 ; hide followIcon ; show followIconAlt ; hide grpVoiceHead } + mouseExit { setitemcolor follow backcolor .37 .1 .1 1 ; hide followIconAlt ; show followIcon } + } + +itemDef { + name follow + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/framebutton.tga" + rect 332 37 50 26 + visible 1 + decoration + } + +itemDef { + name follow + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/leftbutton.tga" + rect 326 37 7 26 + visible 1 + decoration + } + +itemDef { + name follow + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/rightbutton.tga" + rect 381 37 7 26 + visible 1 + decoration + } + + + + +// PATROL // + + +itemDef { + name patrol + rect 406 37 50 26 + type 1 + text "Patrol" + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + textalign 1 + textscale .25 + textalignx 25 + textaligny 20 + visible 1 + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + action { hide grphelptext ; show patroltext ; exec "play sound/voices/male1/or_10.wav" ; show grpVoiceHead } + mouseEnter { setitemcolor patrol backcolor .1 .37 .1 1 ; hide patrolIcon ; show patrolIconAlt ; hide grpVoiceHead } + mouseExit { setitemcolor patrol backcolor .37 .1 .1 1 ; hide patrolIconAlt ; show patrolIcon } + } +itemDef { + name patrol + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/framebutton.tga" + rect 406 37 50 26 + visible 1 + decoration + } + +itemDef { + name patrol + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/leftbutton.tga" + rect 400 37 7 26 + visible 1 + decoration + } + +itemDef { + name patrol + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/rightbutton.tga" + rect 455 37 7 26 + visible 1 + decoration + } + + + +// RETRIEVE // + + + +itemDef { + name retrieve + rect 480 37 50 26 + type 1 + text "Retrieve" + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + textalign 1 + textscale .25 + textalignx 25 + textaligny 20 + visible 1 + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + action { hide grphelptext ; show retrievetext ; exec "play sound/voices/male1/voc_05.wav" ; show grpVoiceHead } + mouseEnter { setitemcolor retrieve backcolor .1 .37 .1 1 ; hide retrieveIcon ; show retrieveIconAlt ; hide grpVoiceHead } + mouseExit { setitemcolor retrieve backcolor .37 .1 .1 1 ; hide retrieveIconAlt ; show retrieveIcon } + } +itemDef { + name retrieve + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/framebutton.tga" + rect 480 37 50 26 + visible 1 + decoration + } + +itemDef { + name retrieve + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/leftbutton.tga" + rect 474 37 7 26 + visible 1 + decoration + } + +itemDef { + name retrieve + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/rightbutton.tga" + rect 529 37 7 26 + visible 1 + decoration + } + +// ESCORT // + + + +itemDef { + name escort + rect 554 37 50 26 + type 1 + text "Escort" + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + textalign 1 + textscale .25 + textalignx 25 + textaligny 20 + visible 1 + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + action { hide grphelptext ; show escorttext ; exec "play sound/voices/male1/voc_11.wav" ; show grpVoiceHead } + mouseEnter { setitemcolor escort backcolor .1 .37 .1 1 ; hide escortIcon ; show escortIconAlt ; hide grpVoiceHead } + mouseExit { setitemcolor escort backcolor .37 .1 .1 1 ; hide escortIconAlt ; show escortIcon } + } +itemDef { + name escort + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/framebutton.tga" + rect 554 37 50 26 + visible 1 + decoration + } + +itemDef { + name escort + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/leftbutton.tga" + rect 548 37 7 26 + visible 1 + decoration + } + +itemDef { + name escort + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/rightbutton.tga" + rect 603 37 7 26 + visible 1 + decoration + } + +// VOICE HEAD // + + + + + itemDef { + name "b" + group grpVoiceHead + rect 40 102 50 50 + visible 1 + style WINDOW_STYLE_SHADER + background "ui/assets/head5.tga" + decoration + } + + itemDef { + name "b" + group grpVoiceHead + rect 40 102 50 50 + style WINDOW_STYLE_SHADER + background "menuscreen2" + visible 1 + decoration + } + + itemDef { + name "voiceWindow" + group grpVoiceHead + visible 1 + style 3 + background "ui/assets/voice_window.tga" + rect 38 100 54 54 + } + + + + +// TEXT MESSAGES // + + +// LEADER // + +itemDef { + name helptext + group grphelptext + style 0 + wrapped + text "Help" + rect 140 94 500 20 + textalign 0 + textalignx 0 + textaligny 17 + textscale .3 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 0 + decoration + } + +itemDef { + name helptext + group grphelptext + style 0 + wrapped + text "Only Leaders can give orders to someone else on the team. \r" + "Any player can change their own status. Orders are given through \r" + "the ingame Orders menu or the HUD system using the Next Team Member \r" + "and Next Orders commands. If you receive an order, you can either \r" + "Confirm or Deny that order. You must have keys bound to those two \r" + "commands. If you confirm the order, your status will automatically \r" + "update to reflect your new status." + rect 140 124 500 20 + textalign 0 + textalignx 0 + textaligny 17 + textscale .25 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 0 + decoration + } + + +// Attack // + +itemDef { + name attacktext + group grphelptext + style 0 + wrapped + text "Attack" + rect 140 94 500 20 + textalign 0 + textalignx 0 + textaligny 17 + textscale .3 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 0 + decoration + } + +itemDef { + name attacktext + group grphelptext + style 0 + wrapped + text "Command your team member to assault the enemy and the enemy Base.\r" + "In Capture the Flag and One Flag CTF, it orders the team member to get the \r" + "opposing team's flag (CTF), or the white flag (One Flag CTF)." + rect 140 124 500 20 + textalign 0 + textalignx 0 + textaligny 17 + textscale .25 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 0 + decoration + } + + + + +// CAMP // + + +itemDef { + name camptext + group grphelptext + style 0 + wrapped + text "Camp" + rect 140 94 500 20 + textalign 0 + textalignx 0 + textaligny 17 + textscale .3 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 0 + decoration + } + +itemDef { + name camptext + group grphelptext + style 0 + wrapped + text "Command your team member to stay at YOUR current location." + rect 140 124 500 20 + textalign 0 + textalignx 0 + textaligny 17 + textscale .25 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 0 + decoration + } + + +// Defend // + +itemDef { + name defendtext + group grphelptext + style 0 + wrapped + text "Defend" + rect 140 94 500 20 + textalign 0 + textalignx 0 + textaligny 17 + textscale .3 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 0 + decoration + } + +itemDef { + name defendtext + group grphelptext + style 0 + wrapped + text "Command your team member to guard your team's Base." + rect 140 124 500 20 + textalign 0 + textalignx 0 + textaligny 17 + textscale .25 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 0 + decoration + } + + +// Follow // + + +itemDef { + name followtext + group grphelptext + style 0 + wrapped + text "Follow" + rect 140 94 500 20 + textalign 0 + textalignx 0 + textaligny 17 + textscale .3 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 0 + decoration + } +itemDef { + name followtext + group grphelptext + style 0 + wrapped + text "Command your team member to follow you." + rect 140 124 500 20 + textalign 0 + textalignx 0 + textaligny 17 + textscale .25 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 0 + decoration + } + + + +// Patrol // + +itemDef { + name patroltext + group grphelptext + style 0 + wrapped + text "Patrol" + rect 140 94 500 20 + textalign 0 + textalignx 0 + textaligny 17 + textscale .3 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 0 + decoration + } + +itemDef { + name patroltext + group grphelptext + style 0 + wrapped + text "Command your team member to patrol between Bases and \r" + "determine their own actions based upon the situation. \r" + "Basically, this command frees the team member \r" + "to act independently of your orders." + rect 140 124 500 20 + textalign 0 + textalignx 0 + textaligny 17 + textscale .25 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 0 + decoration + } + +// Retrieve // + +itemDef { + name retrievetext + group grphelptext + style 0 + wrapped + text "Retrieve" + rect 140 94 500 20 + textalign 0 + textalignx 0 + textaligny 17 + textscale .3 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 0 + decoration + } + +itemDef { + name retrievetext + group grphelptext + style 0 + wrapped + text "If your flag is taken from the base in Capture the Flag, this orders \r" + "your team member to find the stolen flag and return it. In One Flag CTF, \r" + "it orders the team member to take the white flag from the opposition. \r" + "This status can only occur in Capture the Flag or One Flag CTF matches." + rect 140 124 500 20 + textalign 0 + textalignx 0 + textaligny 17 + textscale .25 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 0 + decoration + } + + +// ESCORT // + +itemDef { + name escorttext + group grphelptext + style 0 + wrapped + text "Escort" + rect 140 94 500 20 + textalign 0 + textalignx 0 + textaligny 17 + textscale .3 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 0 + decoration + } + +itemDef { + name escorttext + group grphelptext + style 0 + wrapped + text "This will command your team member to escort the flag \r" + "carrier to the enemy Base. This command can only be given \r" + "Capture the Flag and One Flag CTF matches." + rect 140 124 500 20 + textalign 0 + textalignx 0 + textaligny 17 + textscale .25 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 0 + decoration + } + +itemDef { + name fadebox + style WINDOW_STYLE_FILLED + background "ui/assets/fadebox.tga" + forecolor 0 0 0 1 + backcolor 0 0 0 1 + rect 0 0 640 480 + visible 1 + decoration + } + + + + + + + + + + +} + +} +} \ No newline at end of file diff --git a/ta_ui/password.menu b/ta_ui/password.menu new file mode 100644 index 00000000..3f52bbb9 --- /dev/null +++ b/ta_ui/password.menu @@ -0,0 +1,147 @@ +#include "ui/menudef.h" + +{ +\\ PASSWORD POPUP MENU \\ + +menuDef { + name "password_popmenu" + visible 0 + fullscreen 0 + rect 204 122 235 235 + focusColor 1 .75 0 1 + style 1 + border 1 + popup + onESC { close password_popmenu ; open joinserver } + + + +itemDef { + name window + rect 0 0 235 235 + style 3 + background "ui/assets/mainpop.tga" + visible 1 + decoration + } +itemDef { + name window + rect 47 47 144 144 + style 3 + background "centerconsole2" + visible 1 + decoration + } + + + + + + // PASSWORD // + +itemDef { + name password + text "Password" + style 0 + decoration + textscale .3 + rect 1 87 110 20 + textalign 1 + textalignx 117 + textaligny 16 + forecolor 0 0 0 1 + visible 1 + + } +itemDef { + name password + text "Password" + style 0 + decoration + textscale .3 + rect 0 86 110 20 + textalign 1 + textalignx 117 + textaligny 16 + forecolor 1 1 1 1 + visible 1 + } +itemDef { + name passwordEntry + style 1 + text ":" + maxchars 15 + textscale .25 + TYPE 4 + cvar "password" + rect 50 106 130 20 + textalign 0 + textalignx 0 + textaligny 16 + forecolor 1 1 1 1 + backcolor 0 0 0 .5 + visible 1 + mouseenter { setitemcolor passwordEntry backcolor 0 0 0 .75 } + mouseexit { setitemcolor passwordEntry backcolor 0 0 0 .5 } + } + + + +itemDef { + name yes + text "Ok" + type 1 + textscale .25 + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + rect 103 140 30 26 + textalign 1 + textalignx 15 + textaligny 20 + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + visible 1 + action { play "sound/misc/nomenu.wav" ; + close password_popmenu ; open joinserver } + mouseEnter { setitemcolor yes backcolor .1 .37 .1 1 } + mouseExit { setitemcolor yes backcolor .37 .1 .1 1 } + } + + itemDef { + name yes + style WINDOW_STYLE_SHADER + background "ui/assets/framebutton.tga" + rect 103 140 30 26 + visible 1 + decoration + } + + itemDef { + name yes + style WINDOW_STYLE_SHADER + background "ui/assets/leftbutton.tga" + rect 97 140 7 26 + visible 1 + decoration + } + + itemDef { + name yes + style WINDOW_STYLE_SHADER + background "ui/assets/rightbutton.tga" + rect 132 140 7 26 + visible 1 + decoration + } + + + + + + + +} + + + +} diff --git a/ta_ui/player.menu b/ta_ui/player.menu new file mode 100644 index 00000000..790da8a0 --- /dev/null +++ b/ta_ui/player.menu @@ -0,0 +1,612 @@ +#include "ui/menudef.h" + +{ +\\ PLATER SELECTION MENU \\ + +menuDef { + name "player_menu" + visible 0 + fullscreen 1 + rect 0 0 640 480 + background "menuback_a" + style 1 + focusColor 1 .75 0 1 + + onOpen { play "sound/misc/kcswish.wav" ; + playlooped "music/fla_mp03.wav" ; + setitemcolor fadebox backcolor 0 0 0 1 ; + fadeout fadebox ; + uiScript update "ui_GetName" ; + transition menuback_g 0 0 640 480 195 120 255 202 20 10 ; + transition clancinematic 107 82 426 316 238 153 170 133 20 10 ; + hide back_alt ; + show back ; + hide grpmessage } + onClose { uiScript update "ui_SetName" } + onEsc { close player_menu ; open main } + + + + + + +itemDef { + name gametypebar + style 2 + rect 0 5 640 40 + textscale 0.4 + textalign 0 // center + textalignx 60 // x alignment point for text + // use it to offset left/right text from the edge + // or to center the text on a different point + textaligny 21 + style 2 + border 4 + bordercolor 0.5 0.5 0.5 0.5 + bordersize 2 + backcolor 0 0 .75 .5 + visible 1 + decoration + mouseEnter { setcolor backcolor .75 0 0 .5 } + mouseExit { setcolor backcolor 0 0 .75 .5 } +} + + +itemDef { + name arenatype + type ITEM_TYPE_MULTI + cvar "ui_q3model" + cvarFloatList { "Team Arena" 0 "Quake III" 1 } + text "Model Type:" + textstyle 6 + rect 0 10 320 31 + textalign ITEM_ALIGN_LEFT + textalignx 20 + textaligny 26 + textscale .35 + forecolor 1 1 1 1 + visible 1 + mouseEnter { show message_type } + mouseExit { hide message_type } + action { play "sound/misc/kcaction.wav" } + } + +itemDef { + name quakeimage + style WINDOW_STYLE_SHADER + group grpquaketype + cvarTest "ui_q3model" + showCVar { "1" } + background "ui/assets/playerpatriot.tga" + rect 60 24 128 256 + forecolor .25 .25 .25 1 + decoration + } + +itemDef { + name quakeimage + group grpquaketype + cvarTest "ui_q3model" + showCVar { "1" } + style WINDOW_STYLE_SHADER + background "ui/assets/playerpi.tga" + rect 100 24 128 256 + visible 1 + decoration + } +itemDef { + name quakeimage + group grpquaketype + cvarTest "ui_q3model" + showCVar { "1" } + style WINDOW_STYLE_SHADER + background "ui/assets/playerklesk.tga" + rect 440 24 128 256 + forecolor .5 .5 .5 1 + visible 1 + decoration + } + + +itemDef { + name quakeimage + group grpquaketype + cvarTest "ui_q3model" + showCVar { "1" } + style WINDOW_STYLE_SHADER + background "ui/assets/playerbiker.tga" + rect 384 24 128 256 + visible 1 + decoration + } + + + +itemDef { + name clanlogo1 + style WINDOW_STYLE_SHADER + group grparenatype + cvarTest "ui_q3model" + showCVar { "0" } + background "ui/assets/pagans.tga" + rect 0 150 128 128 + forecolor .5 .5 .5 .25 + visible 1 + decoration + } + +itemDef { + name clanlogo1 + group grparenatype + cvarTest "ui_q3model" + showCVar { "0" } + style WINDOW_STYLE_SHADER + background "ui/assets/crusaders.tga" + rect 128 150 128 128 + forecolor .5 .5 .5 .25 + visible 1 + decoration + } + + +itemDef { + name clanlogo1 + group grparenatype + cvarTest "ui_q3model" + showCVar { "0" } + style WINDOW_STYLE_SHADER + background "ui/assets/stroggs.tga" + rect 384 150 128 128 + forecolor .5 .5 .5 .25 + visible 1 + decoration + } + + +itemDef { + name clanlogo1 + group grparenatype + cvarTest "ui_q3model" + showCVar { "0" } + style WINDOW_STYLE_SHADER + background "ui/assets/intruders.tga" + rect 512 150 128 128 + forecolor .5 .5 .5 .25 + visible 1 + decoration + } + +itemDef { + name window + style WINDOW_STYLE_FILLED + rect 238 153 170 133 + forecolor 0 0 0 1 + backcolor 0 0 0 1 + visible 1 + decoration + } + + + +itemDef { + name playerbar + style 2 + rect 0 130 640 170 + backcolor 0 0 .75 0 + forecolor 1 1 1 1 + border 4 + bordercolor 0.5 0.5 0.5 .75 + bordersize 2 + visible 1 + decoration + } + +itemDef { + name window + rect 10 50 620 60 + style WINDOW_STYLE_EMPTY + border 1 + bordercolor .5 .5 .5 .5 + forecolor 1 1 1 1 + backcolor 0 0 0 0 + visible 1 + decoration + } + +itemDef { + name window + rect 10 112 205 216 + style WINDOW_STYLE_EMPTY + border 1 + bordercolor .5 .5 .5 .5 + forecolor 1 1 1 1 + backcolor 0 0 0 0 + visible 1 + decoration + } +itemDef { + name window + rect 217 112 205 216 + style WINDOW_STYLE_EMPTY + border 1 + bordercolor .5 .5 .5 .5 + forecolor 1 1 1 1 + backcolor 0 0 0 0 + visible 1 + decoration + } + +itemDef { + name window + rect 424 112 206 216 + style WINDOW_STYLE_EMPTY + border 1 + bordercolor .5 .5 .5 .5 + forecolor 1 1 1 1 + backcolor 0 0 0 0 + visible 1 + decoration + } + +itemDef { + name modelselection + ownerdraw UI_PLAYERMODEL + rect 424 80 260 260 + style 1 + decoration + visible 1 + } + +itemDef { + name namefield + group "playersettinggroup" + type ITEM_TYPE_EDITFIELD + style 0 + text "Name:" + cvar "ui_Name" + textstyle 6 + maxChars 32 + rect 0 70 215 32 + textalign ITEM_ALIGN_LEFT + textalignx 20 + textaligny 21 + textscale .333 + outlinecolor 1 .5 .5 .5 + backcolor 0 0 0 0 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 1 + mouseEnter { show message_name } + mouseExit { hide message_name } + } + +itemDef { + name handicapfield + group "playersettinggroup" + style 0 + text "Handicap:" + ownerdraw UI_HANDICAP + textstyle 6 + rect 0 175 215 32 + textalign ITEM_ALIGN_LEFT + textalignx 20 + textaligny 21 + textscale .333 + outlinecolor 1 .5 .5 .5 + backcolor 0 0 0 0 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 1 + mouseEnter { show message_handicap } + mouseExit { hide message_handicap } + } + +itemDef { + name effectfield + group "playersettinggroup" + style 0 + text "Effect:" + ownerdraw UI_EFFECTS + rect 0 205 215 32 + textstyle 6 + textalign ITEM_ALIGN_LEFT + textalignx 20 + textaligny 21 + textscale .333 + outlinecolor 1 .5 .5 .5 + backcolor 0 0 0 0 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 1 + mouseEnter { show message_effect } + mouseExit { hide message_effect } + } + +itemDef { + name clanfield + group grparenatype + ownerdraw UI_CLANNAME + text "Clan:" + textstyle 6 + rect 20 235 215 31 + textalign ITEM_ALIGN_LEFT + textalignx 0 + textaligny 21 + textscale .333 + forecolor 1 1 1 1 + cvarTest "ui_q3model" + showCVar { "0" } + visible 1 + action { play "sound/misc/nomenu.wav" } + mouseEnter { show message_clan } + mouseExit { hide message_clan } + } + + + + +itemDef { + name headlist + rect 10 330 620 80 + group grparenatype + cvarTest "ui_q3model" + hideCvar { "1" } + type ITEM_TYPE_LISTBOX + style WINDOW_STYLE_FILLED + elementwidth 61.75 + elementheight 61.75 + elementtype LISTBOX_IMAGE + feeder FEEDER_HEADS + horizontalscroll + border 1 + bordersize 1 + backcolor 0 0 0 .25 + bordercolor .5 .5 .5 .5 + forecolor 1 1 1 1 + visible 1 + mouseenter { setitemcolor headlist bordercolor .7 0 0 1 ; show message_model } + mouseexit { setitemcolor headlist bordercolor .5 .5 .5 .5 ; hide message_model } + } +itemDef { + name headlist + rect 10 330 620 80 + group grpquaketype + cvarTest "ui_q3model" + showCVar { "1" } + type ITEM_TYPE_LISTBOX + style WINDOW_STYLE_FILLED + elementwidth 61.75 + elementheight 61.75 + elementtype LISTBOX_IMAGE + feeder FEEDER_Q3HEADS + horizontalscroll + border 1 + bordersize 1 + backcolor 0 0 0 .25 + bordercolor .5 .5 .5 .5 + forecolor 1 1 1 1 + visible 1 + mouseenter { setitemcolor headlist bordercolor .7 0 0 1 ; show message_model } + mouseexit { setitemcolor headlist bordercolor .5 .5 .5 .5 ; hide message_model} + } + + + +// BACK BAR // + +itemDef { + name gotobar + style 2 + rect 0 430 640 30 + textscale 0.4 + textalign 0 // center + textalignx 60 // x alignment point for text + // use it to offset left/right text from the edge + // or to center the text on a different point + textaligny 21 + style 2 + border 4 + bordercolor 0.5 0.5 0.5 0.5 + bordersize 2 + backcolor 0 0 .75 0.5 + visible 1 + mouseEnter { setcolor backcolor .75 0 0 .5 } + mouseExit { setcolor backcolor 0 0 .75 .5 } + decoration + } + +itemDef { + name back + style 3 + background "ui/assets/backarrow.tga" + rect 16 424 50 50 + visible 1 + action { close player_menu ; open main } + mouseEnter { hide back ; show back_alt ; show message_back } + } + +itemDef { + name back_alt + style WINDOW_STYLE_SHADER + background "ui/assets/backarrow_alt.tga" + rect 14 422 54 54 + backcolor 0 0 0 0 + forecolor 1 1 1 1 + visible 0 + type ITEM_TYPE_BUTTON + mouseExit { hide back_alt ; show back ; hide message_back } + action { close player_menu ; open main } + } + +// MESSAGES // +itemDef { + name message_back + group grpmessage + style 0 + rect 320 430 128 30 + textstyle 1 + textalign 1 + textalignx 0 + textaligny 25 + textscale .416 + text "Return to Main Menu" + forecolor 1 1 1 1 + decoration + visible 0 + } + +itemDef { + name message_name + group grpmessage + style 0 + rect 320 430 128 30 + textalign 1 + textstyle 1 + textalignx 0 + textaligny 25 + textscale .416 + text "Enter Player Name" + forecolor 1 1 1 1 + decoration + visible 0 + } + +itemDef { + name message_handicap + group grpmessage + style 0 + rect 320 430 128 30 + textalign 1 + textstyle 1 + textalignx 0 + textaligny 25 + textscale .416 + text "Click to Change Handicap" + forecolor 1 1 1 1 + decoration + visible 0 + } + +itemDef { + name message_effect + group grpmessage + style 0 + rect 320 430 128 30 + textalign 1 + textstyle 1 + textalignx 0 + textaligny 25 + textscale .416 + text "Select Bar to Change Effect Color" + forecolor 1 1 1 1 + decoration + visible 0 + } + +itemDef { + name message_clan + group grpmessage + style 0 + rect 320 430 128 30 + textalign 1 + textstyle 1 + textalignx 0 + textaligny 25 + textscale .416 + text "Click to Cycle Clan Selection" + forecolor 1 1 1 1 + decoration + visible 0 + } +itemDef { + name message_type + group grpmessage + style 0 + rect 320 430 128 30 + textalign 1 + textstyle 1 + textalignx 0 + textaligny 25 + textscale .416 + text "Click to View Team Arena or Quake III Models" + forecolor 1 1 1 1 + decoration + visible 0 + } + +itemDef { + name message_model + group grpmessage + style 0 + rect 320 430 128 30 + textalign 1 + textstyle 1 + textalignx 0 + textaligny 25 + textscale .416 + text "Click to Change Player Model" + forecolor 1 1 1 1 + decoration + visible 0 + } + +itemDef { + name clancinematic + rect 238 157 170 133 + group grparenatype + cvarTest "ui_q3model" + showCVar { "0" } + ownerdraw UI_CLANCINEMATIC + visible 1 + decoration + } +itemDef { + name clancinematic + group grpquaketype + cvarTest "ui_q3model" + showCVar { "1" } + style 3 + background "ui/assets/q3imagepage.tga" + rect 238 157 170 133 + visible 1 + decoration + } + +itemDef { + name clancinematic + style 3 + background "menuscreen" + rect 238 153 170 133 + visible 1 + decoration + } + +itemDef { + name menuback_g + style WINDOW_STYLE_SHADER + rect 195 120 255 202 + background "menuback_g" + visible 1 + decoration + } + +itemDef { + name fadebox + style WINDOW_STYLE_FILLED + background "ui/assets/fadebox.tga" + forecolor 0 0 0 1 + backcolor 0 0 0 1 + rect 0 0 640 480 + visible 1 + decoration + } + + +} + + +} + diff --git a/ta_ui/powerup.menu b/ta_ui/powerup.menu new file mode 100644 index 00000000..4ac699e2 --- /dev/null +++ b/ta_ui/powerup.menu @@ -0,0 +1,768 @@ +#include "ui/menudef.h" + +{ +\\ powerup \\ + + menuDef { + name "powerup_menu" + visible 0 + fullscreen 0 + rect 0 90 640 340 + focusColor 1 .67 0 1 + border 1 + style 1 + onEsc { close help_menu ; close powerup_menu ; close ordersHelp_menu ; open main } + onOpen { setitemcolor fadebox backcolor 0 0 0 1 ; + fadeout fadebox ; + hide grphelptext ; + show scouttext ; + hide grpiconalt } + +// SCOUT // + +itemDef { + name scoutIcon + group grpScout + style WINDOW_STYLE_SHADER + rect 32 2 32 32 + visible 1 + type ITEM_TYPE_BUTTON + background "icons/scout.tga" + } +itemDef { + name scoutIconAlt + group grpIconAlt + style WINDOW_STYLE_SHADER + rect 30 0 34 34 + visible 1 + type ITEM_TYPE_BUTTON + background "icons/scout.tga" + } +itemDef { + name scout + group grpScout + rect 15 37 70 26 + text "Scout" + type 1 + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + textalign 1 + textscale .3 + textalignx 35 + textaligny 20 + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + visible 1 + action { hide grphelptext ; show scouttext ; exec "play sound/items/cl_scout.wav" } + mouseEnter { setitemcolor scout backcolor .1 .37 .1 1 ; hide scoutIcon ; show scoutIconAlt } + mouseExit { setitemcolor scout backcolor .37 .1 .1 1 ; hide scoutIconAlt ; show scoutIcon } + } +itemDef { + name scout + group grpScout + style WINDOW_STYLE_SHADER + background "ui/assets/framebutton.tga" + rect 15 37 70 26 + visible 1 + decoration + } + +itemDef { + name scout + group grpScout + style WINDOW_STYLE_SHADER + background "ui/assets/leftbutton.tga" + rect 8 37 8 26 + visible 1 + decoration + } + +itemDef { + name scout + group grpScout + style WINDOW_STYLE_SHADER + background "ui/assets/rightbutton.tga" + rect 84 37 8 26 + visible 1 + decoration + } + +// GUARD // + +itemDef { + name guardIcon + style WINDOW_STYLE_SHADER + rect 128 2 32 32 + visible 1 + background "icons/guard.tga" + decoration + } +itemDef { + name guardIconAlt + group grpIconAlt + style WINDOW_STYLE_SHADER + rect 126 0 34 34 + visible 1 + background "icons/guard.tga" + decoration + } +itemDef { + name guard + rect 111 37 70 26 + type 1 + text "Guard" + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + textalign 1 + textscale .3 + textalignx 35 + textaligny 20 + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + visible 1 + action { hide grphelptext ; show guardtext ; exec "play sound/items/cl_guard.wav" } + mouseEnter { setitemcolor guard backcolor .1 .37 .1 1 ; hide guardIcon ; show guardIconAlt } + mouseExit { setitemcolor guard backcolor .37 .1 .1 1 ; hide guardIconAlt ; show guardIcon } + } + +itemDef { + name guard + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/framebutton.tga" + rect 111 37 70 26 + visible 1 + decoration + } + +itemDef { + name guard + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/leftbutton.tga" + rect 104 37 8 26 + visible 1 + decoration + } + +itemDef { + name guard + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/rightbutton.tga" + rect 180 37 8 26 + visible 1 + decoration + } + +// DOUBLER // + +itemDef { + name doublerIcon + style WINDOW_STYLE_SHADER + rect 222 2 32 32 + visible 1 + background "icons/doubler.tga" + decoration + } +itemDef { + name doublerIconAlt + group grpIconAlt + style WINDOW_STYLE_SHADER + rect 220 0 34 34 + visible 1 + background "icons/doubler.tga" + decoration + } +itemDef { + name doubler + rect 207 37 70 26 + type 1 + text "Doubler" + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + textalign 1 + textscale .3 + textalignx 35 + textaligny 20 + visible 1 + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + action { hide grphelptext ; show doublertext ; exec "play sound/items/cl_doubler.wav" } + mouseEnter { setitemcolor doubler backcolor .1 .37 .1 1 ; hide doublerIcon ; show doublerIconAlt } + mouseExit { setitemcolor doubler backcolor .37 .1 .1 1 ; hide doublerIconAlt ; show doublerIcon } + } +itemDef { + name doubler + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/framebutton.tga" + rect 207 37 70 26 + visible 1 + decoration + } + +itemDef { + name doubler + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/leftbutton.tga" + rect 200 37 8 26 + visible 1 + decoration + } + +itemDef { + name doubler + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/rightbutton.tga" + rect 276 37 8 26 + visible 1 + decoration + } + +// AMMO_REGEN // + +itemDef { + name ammo_regenIcon + style WINDOW_STYLE_SHADER + rect 331 2 32 32 + visible 1 + background "icons/ammo_regen.tga" + decoration + } +itemDef { + name ammo_regenIconAlt + group grpIconAlt + style WINDOW_STYLE_SHADER + rect 329 0 34 34 + visible 1 + background "icons/ammo_regen.tga" + decoration + } +itemDef { + name ammo_regen + rect 302 37 87 26 + type 1 + text "Ammo-Regen" + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + textalign 1 + textscale .3 + textalignx 43 + textaligny 20 + visible 1 + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + action { hide grphelptext ; show ammo_regentext ; exec "play sound/items/cl_ammoregen.wav" } + mouseEnter { setitemcolor ammo_regen backcolor .1 .37 .1 1 ; hide ammo_regenIcon ; show ammo_regenIconAlt } + mouseExit { setitemcolor ammo_regen backcolor .37 .1 .1 1 ; hide ammo_regenIconAlt ; show ammo_regenIcon } + } +itemDef { + name ammo_regen + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/framebutton.tga" + rect 302 37 87 26 + visible 1 + decoration + } + +itemDef { + name ammo_regen + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/leftbutton.tga" + rect 295 37 8 26 + visible 1 + decoration + } + +itemDef { + name ammo_regen + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/rightbutton.tga" + rect 388 37 8 26 + visible 1 + decoration + } + +// KAMIKAZE // + +itemDef { + name kamikazeIcon + style WINDOW_STYLE_SHADER + rect 439 2 32 32 + visible 1 + background "icons/kamikaze.tga" + decoration + } +itemDef { + name kamikazeIconAlt + group grpIconAlt + style WINDOW_STYLE_SHADER + rect 437 0 34 34 + visible 1 + background "icons/kamikaze.tga" + decoration + } +itemDef { + name kamikaze + rect 415 37 87 26 + type 1 + text "Kamikaze" + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + textalign 1 + textscale .3 + textalignx 43 + textaligny 20 + visible 1 + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + action { hide grphelptext ; show kamikazetext ; exec "play sound/items/kamikaze_full.wav" } + mouseEnter { setitemcolor kamikaze backcolor .1 .37 .1 1 ; hide kamikazeIcon ; show kamikazeIconAlt } + mouseExit { setitemcolor kamikaze backcolor .37 .1 .1 1 ; hide kamikazeIconAlt ; show kamikazeIcon } + } +itemDef { + name kamikaze + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/framebutton.tga" + rect 415 37 87 26 + visible 1 + decoration + } + +itemDef { + name kamikaze + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/leftbutton.tga" + rect 408 37 8 26 + visible 1 + decoration + } + +itemDef { + name kamikaze + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/rightbutton.tga" + rect 501 37 8 26 + visible 1 + decoration + } + + +// INVULNERABILITY // + +itemDef { + name invulnerabilityIcon + style WINDOW_STYLE_SHADER + rect 561 2 32 32 + visible 1 + background "icons/invulnerability.tga" + decoration + } +itemDef { + name invulnerabilityIconAlt + group grpIconAlt + style WINDOW_STYLE_SHADER + rect 559 0 34 34 + visible 1 + background "icons/invulnerability.tga" + decoration + } +itemDef { + name invulnerability + rect 526 37 102 26 + type 1 + text "Invulnerability" + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + textalign 1 + textscale .29 + textalignx 49 + textaligny 20 + visible 1 + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + action { hide grphelptext ; show invulnerabilitytext ; exec "play sound/items/invul_activate.wav" } + mouseEnter { setitemcolor invulnerability backcolor .1 .37 .1 1 ; hide invulnerabilityIcon ; show invulnerabilityIconAlt } + mouseExit { setitemcolor invulnerability backcolor .37 .1 .1 1 ; hide invulnerabilityIconAlt ; show invulnerabilityIcon } + } +itemDef { + name invulnerability + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/framebutton.tga" + rect 526 37 102 26 + visible 1 + decoration + } + +itemDef { + name invulnerability + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/leftbutton.tga" + rect 519 37 8 26 + visible 1 + decoration + } + +itemDef { + name invulnerability + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/rightbutton.tga" + rect 626 37 8 26 + visible 1 + decoration + } + +// SCOUT // +itemDef { + name scouttext + group grphelptext + style 0 + wrapped + text "Scout : Team Power-Up" + rect 280 94 500 20 + textalign 0 + textalignx 0 + textaligny 17 + textscale .3 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 0 + decoration + } +itemDef { + name scouttext + group grphelptext + style 0 + wrapped + text "The Scout power-up drastically increases the player's rate \r" + "of movement and attack. It also prevents the player from \r" + "wearing any armor and discards any armor points that the \r" + "player may already have. As with the other persistent team \r" + "power-ups, the player keeps the Scout until he or she \r" + "is fragged. " + rect 280 124 500 20 + textalign 0 + textalignx 0 + textaligny 17 + textscale .25 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 0 + decoration + } +itemDef { + name scouttext + group grphelptext + style 5 + cinematic "scout.RoQ" + rect 10 94 256 192 + border 1 + bordercolor .5 .5 .5 1 + visible 0 + decoration + } + +// Guard // +itemDef { + name guardtext + group grphelptext + style 0 + wrapped + text "Guard : Team Power-Up" + rect 280 94 500 20 + textalign 0 + textalignx 0 + textaligny 17 + textscale .3 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 0 + decoration + } +itemDef { + name guardtext + group grphelptext + style 0 + wrapped + text "The Guard power-up gives the player an instant health \r" + "and armor boost up to 200 points. The player's health \r" + "points will regenerate to keep them at 200 points. The \r" + "player may replenish lost armor points back up to 200 \r" + "points. As with the other persistent team power-ups, \r" + "the player keeps the Guard until he or she is fragged." + rect 280 124 500 20 + textalign 0 + textalignx 0 + textaligny 17 + textscale .25 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 0 + decoration + } + +itemDef { + name guardtext + group grphelptext + style WINDOW_STYLE_CINEMATIC + cinematic "guard.RoQ" + rect 10 94 256 192 + border 1 + bordercolor .5 .5 .5 1 + visible 0 + decoration + } + + + +// Doubler // +itemDef { + name doublertext + group grphelptext + style 0 + wrapped + text "Doubler : Team Power-Up" + rect 280 94 500 20 + textalign 0 + textalignx 0 + textaligny 17 + textscale .3 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 0 + decoration + } +itemDef { + name doublertext + group grphelptext + style 0 + wrapped + text "The Doubler power-up doubles the amount of damage done \r" + "by each hit the player scores. The doubling effect is also \r" + "modified further by the damage boosting effects of the Quad \r" + "Damage. As with the other persistent team power-ups, the \r" + "player keeps the Doubler until he or she is fragged." + rect 280 124 500 20 + textalign 0 + textalignx 0 + textaligny 17 + textscale .25 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 0 + decoration + } +itemDef { + name doublertext + group grphelptext + style 5 + cinematic "doubler.RoQ" + rect 10 94 256 192 + border 1 + bordercolor .5 .5 .5 1 + visible 0 + decoration + } + +// Ammo-Regen // +itemDef { + name ammo_regentext + group grphelptext + style 0 + wrapped + text "Ammo-Regen : Team Power-Up" + rect 280 94 500 20 + textalign 0 + textalignx 0 + textaligny 17 + textscale .3 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 0 + decoration + } +itemDef { + name ammo_regentext + group grphelptext + style 0 + wrapped + text "The Ammo-Regen power-up slowly replenishes the \r" + "ammunition used by each weapon in the player's \r" + "possession up to a full basic load (the amount that \r" + "comes with the weapon). The player can shoot faster \r" + "than the ammo can regenerate. The Ammo-Regen also \r" + "significantly increases the player's rate of fire for \r" + "all attack types. As with the other persistent team \r" + "power-ups, the player keeps the Ammo-Regen until he or \r" + "she is fragged." + rect 280 124 500 20 + textalign 0 + textalignx 0 + textaligny 17 + textscale .25 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 0 + decoration + } +itemDef { + name ammo_regentext + group grphelptext + style 5 + cinematic "ammo_regen.RoQ" + rect 10 94 256 192 + border 1 + bordercolor .5 .5 .5 1 + visible 0 + decoration + } + +// Kamikaze // +itemDef { + name kamikazetext + group grphelptext + style 0 + wrapped + text "Kamikaze : Useable Item" + rect 280 94 500 20 + textalign 0 + textalignx 0 + textaligny 17 + textscale .3 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 0 + decoration + } +itemDef { + name kamikazetext + group grphelptext + style 0 + wrapped + text "When carried by a player, the Kamikaze appears as \r" + "skulls swirling about the body. Pressing the Use Item \r" + "key activates the bomb, fragging the player and severely \r" + "punishing all others within the range of the explosion. \r" + "The blast's powerful shockwave shakes the entire arena." + rect 280 124 500 20 + textalign 0 + textalignx 0 + textaligny 17 + textscale .25 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 0 + decoration + } +itemDef { + name kamikazetext + group grphelptext + style 5 + cinematic "kamikaze.RoQ" + rect 10 94 256 192 + border 1 + bordercolor .5 .5 .5 1 + visible 0 + decoration + } + + +// Invulnerability // +itemDef { + name invulnerabilitytext + group grphelptext + style 0 + wrapped + text "Invulnerability : Useable Item" + rect 280 94 500 20 + textalign 0 + textalignx 0 + textaligny 17 + textscale .3 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 0 + decoration + } +itemDef { + name invulnerabilitytext + group grphelptext + style 0 + wrapped + text "When activated, the Invulnerability power-up freezes the \r" + "player in place and surrounds him or her with a mostly \r" + "impenetrable, crackling shield of magenta energy. Mostly \r" + "impenetrable, because the player can fire out and prox \r" + "mines can be lobbed in." + rect 280 124 500 20 + textalign 0 + textalignx 0 + textaligny 17 + textscale .25 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 0 + decoration + } +itemDef { + name invulnerabilitytext + group grphelptext + style 5 + cinematic "invulnerability.RoQ" + rect 10 94 256 192 + border 1 + bordercolor .5 .5 .5 1 + visible 0 + decoration + } + +itemDef { + name fadebox + style WINDOW_STYLE_FILLED + background "ui/assets/fadebox.tga" + forecolor 0 0 0 1 + backcolor 0 0 0 1 + rect 0 0 640 480 + visible 1 + decoration + } + + + + + + + + + + + + +} + +} +} \ No newline at end of file diff --git a/ta_ui/powerup2.menu b/ta_ui/powerup2.menu new file mode 100644 index 00000000..5e22b044 --- /dev/null +++ b/ta_ui/powerup2.menu @@ -0,0 +1,694 @@ +#include "ui/menudef.h" + +{ +\\ powerup \\ + + menuDef { + name "powerup_menu" + visible 0 + fullscreen 0 + rect 0 90 640 340 + focusColor 1 .67 0 1 + border 1 + outOfBoundsClick + style 1 + onopen { hide grphelptext ; show scouttext } + +// SCOUT // + +itemDef { + name scout + style WINDOW_STYLE_SHADER + rect 32 0 32 32 + visible 1 + type ITEM_TYPE_BUTTON + background "icons/scout.tga" + } +itemDef { + name scout + rect 15 37 70 26 + text "Scout" + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + textalign 1 + textscale .3 + textalignx 35 + textaligny 20 + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + visible 1 + action { hide grphelptext ; show scouttext } + mouseEnter { setitemcolor scout backcolor .1 .37 .1 1 } + mouseExit { setitemcolor scout backcolor .37 .1 .1 1 } + } +itemDef { + name scout + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/framebutton.tga" + rect 15 37 70 26 + visible 1 + decoration + } + +itemDef { + name scout + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/leftbutton.tga" + rect 8 37 8 26 + visible 1 + decoration + } + +itemDef { + name scout + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/rightbutton.tga" + rect 84 37 8 26 + visible 1 + decoration + } + +// GUARD // + +itemDef { + name guard + style WINDOW_STYLE_SHADER + rect 128 0 32 32 + visible 1 + background "icons/guard.tga" + decoration + } +itemDef { + name guard + style 0 + rect 111 37 70 26 + text "Guard" + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + textalign 1 + textscale .3 + textalignx 35 + textaligny 20 + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + visible 1 + action { hide grphelptext ; show guardtext } + mouseEnter { setitemcolor guard backcolor .1 .37 .1 1 } + mouseExit { setitemcolor guard backcolor .37 .1 .1 1 } + } + +itemDef { + name guard + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/framebutton.tga" + rect 111 37 70 26 + visible 1 + decoration + } + +itemDef { + name guard + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/leftbutton.tga" + rect 104 37 8 26 + visible 1 + decoration + } + +itemDef { + name guard + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/rightbutton.tga" + rect 180 37 8 26 + visible 1 + decoration + } + +// DOUBLER // + +itemDef { + name doubler + style WINDOW_STYLE_SHADER + rect 222 0 32 32 + visible 1 + background "icons/doubler.tga" + decoration + } +itemDef { + name doubler + style 0 + rect 207 37 70 26 + text "Doubler" + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + textalign 1 + textscale .3 + textalignx 35 + textaligny 20 + visible 1 + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + action { hide grphelptext ; show doublertext } + mouseEnter { setitemcolor doubler backcolor .1 .37 .1 1 } + mouseExit { setitemcolor doubler backcolor .37 .1 .1 1 } + } +itemDef { + name doubler + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/framebutton.tga" + rect 207 37 70 26 + visible 1 + decoration + } + +itemDef { + name doubler + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/leftbutton.tga" + rect 200 37 8 26 + visible 1 + decoration + } + +itemDef { + name doubler + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/rightbutton.tga" + rect 276 37 8 26 + visible 1 + decoration + } + +// AMMO_REGEN // + +itemDef { + name ammo_regen + style WINDOW_STYLE_SHADER + rect 331 0 32 32 + visible 1 + background "icons/ammo_regen.tga" + decoration + } +itemDef { + name ammo_regen + style 0 + rect 302 37 87 26 + text "Ammo-Regen" + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + textalign 1 + textscale .3 + textalignx 43 + textaligny 20 + visible 1 + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + action { hide grphelptext ; show ammo_regentext } + mouseEnter { setitemcolor ammo_regen backcolor .1 .37 .1 1 } + mouseExit { setitemcolor ammo_regen backcolor .37 .1 .1 1 } + } +itemDef { + name ammo_regen + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/framebutton.tga" + rect 302 37 87 26 + visible 1 + decoration + } + +itemDef { + name ammo_regen + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/leftbutton.tga" + rect 295 37 8 26 + visible 1 + decoration + } + +itemDef { + name ammo_regen + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/rightbutton.tga" + rect 388 37 8 26 + visible 1 + decoration + } + +// KAMIKAZE // + +itemDef { + name kamikaze + style WINDOW_STYLE_SHADER + rect 439 0 32 32 + visible 1 + background "icons/kamikaze.tga" + decoration + } +itemDef { + name kamikaze + style 0 + rect 415 37 87 26 + text "Kamikaze" + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + textalign 1 + textscale .3 + textalignx 43 + textaligny 20 + visible 1 + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + action { hide grphelptext ; show kamikazetext } + mouseEnter { setitemcolor kamikaze backcolor .1 .37 .1 1 } + mouseExit { setitemcolor kamikaze backcolor .37 .1 .1 1 } + } +itemDef { + name kamikaze + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/framebutton.tga" + rect 415 37 87 26 + visible 1 + decoration + } + +itemDef { + name kamikaze + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/leftbutton.tga" + rect 408 37 8 26 + visible 1 + decoration + } + +itemDef { + name kamikaze + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/rightbutton.tga" + rect 501 37 8 26 + visible 1 + decoration + } + + +// INVULNERABILITY // + +itemDef { + name invulnerability + style WINDOW_STYLE_SHADER + rect 561 0 32 32 + visible 1 + background "icons/invulnerability.tga" + decoration + } +itemDef { + name invulnerability + style 0 + rect 526 37 102 26 + text "Invulnerability" + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + textalign 1 + textscale .3 + textalignx 47 + textaligny 20 + visible 1 + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + action { hide grphelptext ; show invulnerabilitytext } + mouseEnter { setitemcolor invulnerability backcolor .1 .37 .1 1 } + mouseExit { setitemcolor invulnerability backcolor .37 .1 .1 1 } + } +itemDef { + name invulnerability + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/framebutton.tga" + rect 526 37 102 26 + visible 1 + decoration + } + +itemDef { + name invulnerability + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/leftbutton.tga" + rect 519 37 8 26 + visible 1 + decoration + } + +itemDef { + name invulnerability + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/rightbutton.tga" + rect 626 37 8 26 + visible 1 + decoration + } + +// SCOUT // +itemDef { + name scouttext + group grphelptext + style 0 + wrapped + text "Scout : Team Power-Up" + rect 180 94 500 20 + textalign 0 + textalignx 0 + textaligny 17 + textscale .3 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 0 + decoration + } +itemDef { + name scouttext + group grphelptext + style 0 + wrapped + text "The Scout power-up drastically increases the player's rate \r" + "of movement and attack. It also prevents the player from \r" + "wearing any armor and discards any armor points that the \r" + "player may already have. As with the other persistent team \r" + "power-ups, the player keeps the Scout until he or she \r" + "is fragged. " + rect 180 124 500 20 + textalign 0 + textalignx 0 + textaligny 17 + textscale .3 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 0 + decoration + } +itemDef { + name scouttext + group grphelptext + style 3 + background "ui/assets/helpscreens/powerups/scout.tga" + rect 30 94 128 96 + border 1 + bordercolor .5 .5 .5 1 + visible 0 + decoration + } + +// Guard // +itemDef { + name guardtext + group grphelptext + style 0 + wrapped + text "Guard : Team Power-Up" + rect 180 94 500 20 + textalign 0 + textalignx 0 + textaligny 17 + textscale .3 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 0 + decoration + } +itemDef { + name guardtext + group grphelptext + style 0 + wrapped + text "The Guard power-up gives the player an instant health \r" + "and armor boost up to 200 points. The player's health \r" + "points will regenerate to keep them at 200 points. The \r" + "player may replenish lost armor points back up to 200 \r" + "points. As with the other persistent team power-ups, \r" + "the player keeps the Guard until he or she is fragged." + rect 180 124 500 20 + textalign 0 + textalignx 0 + textaligny 17 + textscale .3 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 0 + decoration + } +itemDef { + name guardtext + group grphelptext + style 3 + background "ui/assets/helpscreens/powerups/guard.tga" + rect 30 94 128 96 + border 1 + bordercolor .5 .5 .5 1 + visible 0 + decoration + } + + + +// Doubler // +itemDef { + name doublertext + group grphelptext + style 0 + wrapped + text "Doubler : Team Power-Up" + rect 180 94 500 20 + textalign 0 + textalignx 0 + textaligny 17 + textscale .3 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 0 + decoration + } +itemDef { + name doublertext + group grphelptext + style 0 + wrapped + text "The Doubler power-up doubles the amount of damage done \r" + "by each hit the player scores. The doubling effect is also \r" + "modified further by the damage boosting effects of the Quad \r" + "Damage. As with the other persistent team power-ups, the \r" + "player keeps the Doubler until he or she is fragged." + rect 180 124 500 20 + textalign 0 + textalignx 0 + textaligny 17 + textscale .3 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 0 + decoration + } +itemDef { + name doublertext + group grphelptext + style 3 + background "ui/assets/helpscreens/powerups/doubler.tga" + rect 30 94 128 96 + border 1 + bordercolor .5 .5 .5 1 + visible 0 + decoration + } + +// Ammo-Regen // +itemDef { + name ammo_regentext + group grphelptext + style 0 + wrapped + text "Ammo-Regen : Team Power-Up" + rect 180 94 500 20 + textalign 0 + textalignx 0 + textaligny 17 + textscale .3 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 0 + decoration + } +itemDef { + name ammo_regentext + group grphelptext + style 0 + wrapped + text "The Ammo-Regen power-up slowly replenishes the ammunition \r" + "used by each weapon in the player's possession up to a full \r" + "basic load (the amount that comes with the weapon). The player \r" + "can shoot faster than the ammo can regenerate. The Ammo-Regen \r" + "also significantly increases the player's rate of fire for all \r" + "attack types. As with the other persistent team power-ups, the\r" + " playerkeeps the Ammo-Regen until he or she is fragged." + rect 180 124 500 20 + textalign 0 + textalignx 0 + textaligny 17 + textscale .3 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 0 + decoration + } +itemDef { + name ammo_regentext + group grphelptext + style 3 + background "ui/assets/helpscreens/powerups/ammo.tga" + rect 30 94 128 96 + border 1 + bordercolor .5 .5 .5 1 + visible 0 + decoration + } + +// Kamikaze // +itemDef { + name kamikazetext + group grphelptext + style 0 + wrapped + text "Kamikaze : Useable Item" + rect 180 94 500 20 + textalign 0 + textalignx 0 + textaligny 17 + textscale .3 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 0 + decoration + } +itemDef { + name kamikazetext + group grphelptext + style 0 + wrapped + text "When carried by a player, the Kamikaze appears as \r" + "skulls swirling about the body. Pressing the Use Item \r" + "key activates the bomb, fragging the player and severely \r" + "punishing all others within the range of the explosion. \r" + "The blast's powerful shockwave shakes the entire arena." + rect 180 124 500 20 + textalign 0 + textalignx 0 + textaligny 17 + textscale .3 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 0 + decoration + } +itemDef { + name kamikazetext + group grphelptext + style 3 + background "ui/assets/helpscreens/powerups/kamikaze.tga" + rect 30 94 128 96 + border 1 + bordercolor .5 .5 .5 1 + visible 0 + decoration + } + + +// Invulnerability // +itemDef { + name invulnerabilitytext + group grphelptext + style 0 + wrapped + text "Invulnerability : Useable Item" + rect 180 94 500 20 + textalign 0 + textalignx 0 + textaligny 17 + textscale .3 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 0 + decoration + } +itemDef { + name invulnerabilitytext + group grphelptext + style 0 + wrapped + text "When activated, the Invulnerability power-up freezes the \r" + "player in place and surrounds him or her with a mostly \r" + "impenetrable, crackling shield of magenta energy. Mostly \r" + "impenetrable, because the player can fire out and prox \r" + "mines can be lobbed in." + rect 180 124 500 20 + textalign 0 + textalignx 0 + textaligny 17 + textscale .3 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 0 + decoration + } +itemDef { + name invulnerabilitytext + group grphelptext + style 3 + background "ui/assets/helpscreens/powerups/invulnerable.tga" + rect 30 94 128 96 + border 1 + bordercolor .5 .5 .5 1 + visible 0 + decoration + } + + + + + + + + + + + + + +} + +} +} \ No newline at end of file diff --git a/ta_ui/quake3.menu b/ta_ui/quake3.menu new file mode 100644 index 00000000..1ca3fa6a --- /dev/null +++ b/ta_ui/quake3.menu @@ -0,0 +1,222 @@ +#include "ui/menudef.h" + +{ +\\ QUAKE3 POPUP MENU \\ + +menuDef { + name "quake3_popmenu" + visible 0 + fullscreen 0 + rect 204 122 235 235 + focusColor 1 .75 0 1 + style 1 + border 1 + popup + onESC { close quake3_popmenu ; open main } + + + +itemDef { + name window + rect 0 0 235 235 + style 3 + background "ui/assets/mainpop.tga" + visible 1 + decoration + } +itemDef { + name window + rect 47 47 144 144 + style 3 + background "centerconsole2" + visible 1 + decoration + } + +/* +// DEMO ONLY OPTION // + +itemDef { + name demo_only + text "Not Available." + style 0 + textscale .3 + textstyle 3 + rect 1 90 110 20 + textalign 1 + textalignx 117 + textaligny 16 + decoration + forecolor 1 1 1 1 + visible 1 + } + +itemDef { + name demo_only + text "in DEMO." + style 0 + textscale .3 + textstyle 3 + rect 1 110 110 20 + textalign 1 + textalignx 117 + textaligny 16 + decoration + forecolor 1 1 1 1 + visible 1 + } + +itemDef { + name demo_only + text "Press ESC key." + style 0 + textscale .3 + textstyle 3 + rect 0 135 110 20 + textalign 1 + textalignx 117 + textaligny 16 + decoration + forecolor 1 1 1 1 + visible 1 + } + +*/ + + // Quake 3 // + +itemDef { + name confirm + text "Launch Quake3?" + style 0 + textscale .3 + rect 1 91 110 20 + textalign 1 + textalignx 117 + textaligny 16 + decoration + forecolor 0 0 0 1 + visible 1 + } + +itemDef { + name confirm + text "Launch Quake3?" + style 0 + textscale .3 + rect 0 90 110 20 + textalign 1 + textalignx 117 + textaligny 16 + decoration + forecolor 1 1 1 1 + visible 1 + } + +itemDef { + name yes + text "YES" + type 1 + textscale .25 + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + rect 75 120 30 26 + textalign 1 + textalignx 15 + textaligny 20 + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + visible 1 + action { play "sound/misc/nomenu.wav" ; + uiScript "Quake3" } + mouseEnter { setitemcolor yes backcolor .1 .37 .1 1 } + mouseExit { setitemcolor yes backcolor .37 .1 .1 1 } + } + + itemDef { + name yes + style WINDOW_STYLE_SHADER + background "ui/assets/framebutton.tga" + rect 75 120 30 26 + visible 1 + decoration + } + + itemDef { + name yes + style WINDOW_STYLE_SHADER + background "ui/assets/leftbutton.tga" + rect 69 120 7 26 + visible 1 + decoration + } + + itemDef { + name yes + style WINDOW_STYLE_SHADER + background "ui/assets/rightbutton.tga" + rect 104 120 7 26 + visible 1 + decoration + } + + + + + +itemDef { + name no + text "NO" + type 1 + textscale .25 + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + rect 128 120 30 26 + textalign 1 + textalignx 15 + textaligny 20 + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + visible 1 + action { play "sound/misc/nomenu.wav" ; + close quake3_popmenu ; open main } + mouseEnter { setitemcolor no backcolor .1 .37 .1 1 } + mouseExit { setitemcolor no backcolor .37 .1 .1 1 } + } + itemDef { + name no + style WINDOW_STYLE_SHADER + background "ui/assets/framebutton.tga" + rect 128 120 30 26 + visible 1 + decoration + } + + itemDef { + name no + style WINDOW_STYLE_SHADER + background "ui/assets/leftbutton.tga" + rect 122 120 7 26 + visible 1 + decoration + } + + itemDef { + name no + style WINDOW_STYLE_SHADER + background "ui/assets/rightbutton.tga" + rect 157 120 7 26 + visible 1 + decoration + } + + + +} + + +} + + + +} diff --git a/ta_ui/quit.menu b/ta_ui/quit.menu new file mode 100644 index 00000000..2d7f21fb --- /dev/null +++ b/ta_ui/quit.menu @@ -0,0 +1,163 @@ +#include "ui/menudef.h" + +{ +\\ QUIT POPUP MENU \\ + +menuDef { + name "quit_popmenu" + visible 0 + fullscreen 0 + //rect 217 200 210 85 + rect 204 122 235 235 + focusColor 1 .75 0 1 + style 1 + border 1 + popup + onESC { close quit_popmenu ; open main } + + + +itemDef { + name window + rect 0 0 235 235 + style 3 + background "ui/assets/mainpop.tga" + visible 1 + decoration + } +itemDef { + name window + rect 47 47 144 144 + style 3 + background "centerconsole2" + visible 1 + decoration + } + + + + + + // QUIT // + +itemDef { + name confirm + text "Quit Team Arena?" + style 0 + textscale .3 + textstyle 3 + rect 0 90 110 20 + textalign 1 + textalignx 117 + textaligny 16 + decoration + forecolor 1 1 1 1 + visible 1 + } + + +itemDef { + name yes + text "YES" + type 1 + textscale .25 + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + rect 75 120 30 26 + textalign 1 + textalignx 15 + textaligny 20 + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + visible 1 + action { play "sound/misc/nomenu.wav"; + close main ; + close quit_popmenu ; + open quitCredit } + mouseEnter { setitemcolor yes backcolor .1 .37 .1 1 } + mouseExit { setitemcolor yes backcolor .37 .1 .1 1 } + } + + itemDef { + name yes + style WINDOW_STYLE_SHADER + background "ui/assets/framebutton.tga" + rect 75 120 30 26 + visible 1 + decoration + } + + itemDef { + name yes + style WINDOW_STYLE_SHADER + background "ui/assets/leftbutton.tga" + rect 69 120 7 26 + visible 1 + decoration + } + + itemDef { + name yes + style WINDOW_STYLE_SHADER + background "ui/assets/rightbutton.tga" + rect 104 120 7 26 + visible 1 + decoration + } + + + + + +itemDef { + name no + text "NO" + type 1 + textscale .25 + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + rect 128 120 30 26 + textalign 1 + textalignx 15 + textaligny 20 + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + visible 1 + action { play "sound/misc/nomenu.wav" ; + close quit_popmenu ; open main } + mouseEnter { setitemcolor no backcolor .1 .37 .1 1 } + mouseExit { setitemcolor no backcolor .37 .1 .1 1 } + } + itemDef { + name no + style WINDOW_STYLE_SHADER + background "ui/assets/framebutton.tga" + rect 128 120 30 26 + visible 1 + decoration + } + + itemDef { + name no + style WINDOW_STYLE_SHADER + background "ui/assets/leftbutton.tga" + rect 122 120 7 26 + visible 1 + decoration + } + + itemDef { + name no + style WINDOW_STYLE_SHADER + background "ui/assets/rightbutton.tga" + rect 157 120 7 26 + visible 1 + decoration + } + +} + + +} + + diff --git a/ta_ui/quitcredit.menu b/ta_ui/quitcredit.menu new file mode 100644 index 00000000..7f83df1a --- /dev/null +++ b/ta_ui/quitcredit.menu @@ -0,0 +1,258 @@ +#include "ui/menudef.h" + +{ +\\ QUIT CREDIT \\ + + menuDef { + name "quitCredit" + visible 0 + fullscreen 1 + rect 0 0 640 480 + background "menuback_a" + focusColor 1 .67 0 1 + style 1 + border 1 + onEsc { uiScript "quit" } + onOpen { setitemcolor fadebox backcolor 0 0 0 1 ; + fadeout fadebox ; + show grpidcredit } + + + + + +itemDef { + name demo_only + style WINDOW_STYLE_EMPTY + rect 0 0 640 480 + type 1 + visible 1 + action { play "sound/misc/nomenu.wav" ; + close quitCredit ; + uiScript "quit" } + } + + + +// LEVEL SELECTION BAR // + +itemDef { + name teamarenaart + group grpidcredit + style WINDOW_STYLE_SHADER + background "ui/assets/teamarenaimage2.tga" + rect 64 0 512 150 + visible 0 + decoration + } + + + + + +itemDef { + name programming + group grpidcredit + style 0 + rect 0 160 640 30 + textalign 1 + textalignx 320 + textaligny 10 + textscale .35 + text "PROGRAMMING: John Carmack, Robert Duffy, Jim Dose'" + forecolor 1 1 1 1 + decoration + visible 0 + } + +itemDef { + name artist + group grpidcredit + style 0 + rect 0 190 640 30 + textalign 1 + textalignx 320 + textaligny 10 + textscale .35 + text "ART: Adrian Carmack, Kevin Cloud, Kenneth Scott, Seneca Menard, Fred Nilsson " + forecolor 1 1 1 1 + decoration + visible 0 + } + + +itemDef { + name levelDesign + group grpidcredit + style 0 + rect 0 220 640 30 + textalign 1 + textalignx 320 + textaligny 10 + textscale .35 + text "LEVEL DESIGN: Tim Willits, Christian Antkow, Paul Jaquays" + forecolor 1 1 1 1 + decoration + visible 0 + } + +itemDef { + name gameDesign + group grpidcredit + style 0 + rect 0 250 640 30 + textalign 1 + textalignx 320 + textaligny 10 + textscale .35 + text "GAME DESIGN: Graeme Devine" + forecolor 1 1 1 1 + decoration + visible 0 + } + +itemDef { + name ceo + group grpidcredit + style 0 + rect 0 280 640 30 + textalign 1 + textalignx 320 + textaligny 10 + textscale .35 + text "CEO: Todd Hollenshead" + forecolor 1 1 1 1 + decoration + visible 0 + } + +itemDef { + name bizDev + group grpidcredit + style 0 + rect 0 310 640 30 + textalign 1 + textalignx 320 + textaligny 10 + textscale .35 + text "BUSINESS DEVELOPMENT: Marty Stratton" + forecolor 1 1 1 1 + decoration + visible 0 + } + +itemDef { + name idMom + group grpidcredit + style 0 + rect 0 340 640 30 + textalign 1 + textalignx 320 + textaligny 10 + textscale .35 + text "OFFICE MANAGER AND ID MOM: Donna Jackson" + forecolor 1 1 1 1 + decoration + visible 0 + } + +itemDef { + name devAssist + group grpidcredit + style 0 + rect 0 370 640 30 + textalign 1 + textalignx 320 + textaligny 10 + textscale .35 + text "DEVELOPMENT ASSISTANCE: Eric Webb" + forecolor 1 1 1 1 + decoration + visible 0 + } + + +itemDef { + name exitbttn + group grpidcredit + rect 255 420 130 26 + type 1 + text "Click to Exit" + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + textalign 1 + textscale .25 + textalignx 65 + textaligny 20 + visible 0 + decoration + backcolor .37 .1 .1 1 + forecolor 1 1 1 1 + action { play "sound/misc/nomenu.wav" } + mouseEnter { setitemcolor exitbttn backcolor .1 .37 .1 1 } + mouseExit { setitemcolor exitbttn backcolor .37 .1 .1 1 } + } +itemDef { + name exitbttn + group grpidcredit + style WINDOW_STYLE_SHADER + background "ui/assets/framebutton.tga" + rect 255 420 130 26 + visible 0 + decoration + } + +itemDef { + name exitbttn + group grpidcredit + style WINDOW_STYLE_SHADER + background "ui/assets/leftbutton.tga" + rect 243 420 13 26 + visible 0 + decoration + } + +itemDef { + name exitbttn + group grpidcredit + style WINDOW_STYLE_SHADER + background "ui/assets/rightbutton.tga" + rect 384 420 13 26 + visible 0 + decoration + } + +itemDef { + name copyright + text "Quake III: Team Arena Copyright 2000 Id Software, Inc. All rights reserved" + style 0 + textscale .25 + rect 0 440 640 40 + textalign 1 + textaligny 32 + textalignx 320 + forecolor .75 0 0 .75 + visible 1 + decoration + } + + +itemDef { + name fadebox + style WINDOW_STYLE_FILLED + background "ui/assets/fadebox.tga" + forecolor 0 0 0 1 + backcolor 0 0 0 1 + rect 0 0 640 480 + visible 1 + decoration + } + + + + + +} + +} +} \ No newline at end of file diff --git a/ta_ui/rankings.menu b/ta_ui/rankings.menu new file mode 100644 index 00000000..ff91cf41 --- /dev/null +++ b/ta_ui/rankings.menu @@ -0,0 +1,93 @@ +#include "ui/menudef.h" + +{ +\\ RANKINGS MENU \\ + +menuDef { + name "rankings_menu" + visible 0 + fullscreen 0 + rect 186 0 443 426 + focusColor 1 .75 0 1 + style 1 + border 1 + + + +itemDef { + name window + group grpControlbutton + rect 0 2 443 426 + style WINDOW_STYLE_FILLED + border 1 + bordercolor .5 .5 .5 .5 + forecolor 1 1 1 1 + backcolor 0 0 0 .25 + visible 1 + decoration +} + + + + + + + itemDef { + name rankings + group grprankings + type 4 + text "Name:" + rect 99 80 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .3 + forecolor 1 1 1 1 + visible 1 + } + + itemDef { + name rankings + group rankings + type 4 + text "Password:" + rect 99 110 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .3 + forecolor 1 1 1 1 + visible 1 + } + + itemDef { + name options + group grpOptions + type 4 + text "Verify Password:" + rect 99 140 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .3 + forecolor 1 1 1 1 + visible 1 + } + + itemDef { + name options + group grpOptions + type 4 + text "Email (Optional):" + rect 99 170 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .3 + forecolor 1 1 1 1 + visible 1 + } + + + +} diff --git a/ta_ui/resetscore.menu b/ta_ui/resetscore.menu new file mode 100644 index 00000000..e936c50c --- /dev/null +++ b/ta_ui/resetscore.menu @@ -0,0 +1,223 @@ +#include "ui/menudef.h" + +{ +\\ RESET SCORE MENU \\ + +menuDef { + name "resetscore_menu" + visible 0 + fullscreen 0 + rect 186 0 443 426 + focusColor 1 .75 0 1 + style 1 + border 1 + onOpen { setitemcolor fadebox backcolor 0 0 0 1 ; + fadeout fadebox ; + show grpdefault ; + hide grpfinish } + onEsc { close resetscore_menu ; close setup_menu ; open main } + + + +itemDef { + name window + group grpControlbutton + rect 0 2 443 426 + style WINDOW_STYLE_FILLED + border 1 + bordercolor .5 .5 .5 .5 + forecolor 1 1 1 1 + backcolor 0 0 0 .25 + visible 1 + decoration +} + + + + + itemDef { + name default + group grpdefault + style 0 + text "This will set all of your map scores" + rect 0 140 443 20 + textalign ITEM_ALIGN_CENTER + textalignx 221 + textaligny 20 + textscale .333 + forecolor 1 1 1 1 + visible 1 + decoration + } + itemDef { + name default + group grpdefault + style 0 + text "and completion times to zero." + rect 0 160 443 20 + textalign ITEM_ALIGN_CENTER + textalignx 221 + textaligny 20 + textscale .333 + forecolor 1 1 1 1 + visible 1 + decoration + } + + itemDef { + name default + group grpdefault + style 0 + text "Are you sure?" + rect 0 220 443 20 + textalign ITEM_ALIGN_CENTER + textalignx 221 + textaligny 20 + textscale .333 + forecolor 1 1 1 1 + visible 1 + decoration + } + +itemDef { + name yes + text "YES" + group grpdefault + type 1 + textscale .3 + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + rect 135 250 70 26 + textalign 1 + textalignx 35 + textaligny 20 + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + visible 1 + action { play "sound/misc/nomenu.wav" ; + uiScript resetScores ; + show grpfinish ; + hide grpdefault } + mouseEnter { setitemcolor yes backcolor .1 .37 .1 1 } + mouseExit { setitemcolor yes backcolor .37 .1 .1 1 } + } + + itemDef { + name yes + group grpdefault + style WINDOW_STYLE_SHADER + background "ui/assets/framebutton.tga" + rect 135 250 70 26 + visible 1 + decoration + } + + itemDef { + name yes + group grpdefault + style WINDOW_STYLE_SHADER + background "ui/assets/leftbutton.tga" + rect 123 250 13 26 + visible 1 + decoration + } + + itemDef { + name yes + group grpdefault + style WINDOW_STYLE_SHADER + background "ui/assets/rightbutton.tga" + rect 204 250 13 26 + visible 1 + decoration + } + +itemDef { + name no + text "No" + group grpdefault + type 1 + textscale .3 + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + rect 235 250 70 26 + textalign 1 + textalignx 35 + textaligny 20 + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + visible 1 + action { play "sound/misc/nomenu.wav" ; + close resetscore_menu ; open control_menu } + mouseEnter { setitemcolor no backcolor .1 .37 .1 1 } + mouseExit { setitemcolor no backcolor .37 .1 .1 1 } + } + + itemDef { + name no + group grpdefault + style WINDOW_STYLE_SHADER + background "ui/assets/framebutton.tga" + rect 235 250 70 26 + visible 1 + decoration + } + + itemDef { + name no + group grpdefault + style WINDOW_STYLE_SHADER + background "ui/assets/leftbutton.tga" + rect 223 250 13 26 + visible 1 + decoration + } + + itemDef { + name no + group grpdefault + style WINDOW_STYLE_SHADER + background "ui/assets/rightbutton.tga" + rect 304 250 13 26 + visible 1 + decoration + } + + + + + + + + itemDef { + name finish_message + group grpfinish + style 0 + text "Your values are now set to zero." + rect 0 160 443 20 + textalign ITEM_ALIGN_CENTER + textalignx 221 + textaligny 20 + textscale .333 + forecolor 1 1 1 1 + visible 0 + decoration + } + +itemDef { + name fadebox + style WINDOW_STYLE_FILLED + background "ui/assets/fadebox.tga" + forecolor 0 0 0 1 + backcolor 0 0 0 1 + rect 0 0 640 480 + visible 1 + decoration + } + + + + + + +} diff --git a/ta_ui/score.menu b/ta_ui/score.menu new file mode 100644 index 00000000..5ddd3485 --- /dev/null +++ b/ta_ui/score.menu @@ -0,0 +1,452 @@ +#include "ui/menudef.h" + +{ +\\ score_menu \\ + + menuDef { + name "score_menu" + visible 0 + fullscreen 0 + rect 0 0 640 480 + focusColor 1 .75 0 1 + style 0 + border 1 + + + + + +itemDef { + name scorebar + rect 14 28 610 35 + style WINDOW_STYLE_FILLED + border 1 + bordercolor .5 .5 .5 1 + backcolor 0 0 0 .5 + visible 1 + decoration + } + + + +itemDef { + name score + text " " + ownerdraw CG_GAME_STATUS + textscale .4 + style 0 + rect 0 20 640 35 + textalignx 320 + textaligny 0 + textalign 1 + backcolor 0 0 0 0 + forecolor 1 1 1 1 + visible 1 + decoration + } + + +itemDef { + name score + ownerdraw CG_KILLER + textscale .4 + style 0 + rect 0 2 640 25 + textalignx 320 + textaligny 0 + textalign 1 + backcolor 0 0 0 0 + forecolor 1 1 1 1 + visible 1 + decoration + } + + + + + + +// TEAM BARS // + +itemDef { + name teambar + rect 14 65 610 25 + style WINDOW_STYLE_FILLED + border 1 + bordercolor .5 .5 .5 1 + forecolor 1 1 1 1 + backcolor 0 0 0 .5 + visible 1 + decoration + } + + +// PLAYER LIST BORDER // + + + +itemDef { + name window + rect 14 89 610 291 + style WINDOW_STYLE_FILLED + border 1 + bordercolor .5 .5 .5 1 + backcolor 0 0 0 .5 + visible 1 + decoration + } + + + +itemDef { + name window + rect 605 90 1 290 + style WINDOW_STYLE_FILLED + border 1 + bordercolor .5 .5 .5 1 + visible 1 + decoration + } + + + +// TEAM HEADINGS // + +itemDef { + name teamheadings + text "Skill" + textscale .35 + style 0 + rect 25 65 30 30 + textalign 0 + textalignx 0 // x alignment point for text + // use it to offset left/right text from the edge + // or to center the text on a different point + textaligny 22 + backcolor 0 0 0 0 + forecolor 1 .75 0 1 + decoration + visible 1 + } + +itemDef { + name columnWindow + rect 14 65 61 315 + style WINDOW_STYLE_FILLED + border 1 + bordercolor .5 .5 .5 1 + visible 1 + decoration + } + +itemDef { + name teamheadings + text "Status" + textscale .35 + style 0 + rect 85 65 64 30 + textalign 0 + textalignx 0 // x alignment point for text + // use it to offset left/right text from the edge + // or to center the text on a different point + textaligny 22 + backcolor 0 0 0 0 + forecolor 1 .75 0 1 + decoration + visible 1 + } + +itemDef { + name columnWindow + rect 75 65 89 315 + style WINDOW_STYLE_FILLED + border 1 + bordercolor .5 .5 .5 1 + visible 1 + decoration + } + +itemDef { + name teamheadings + text "Name" + textscale .35 + style 0 + rect 170 65 64 30 + textalign 0 + textalignx 0 // x alignment point for text + // use it to offset left/right text from the edge + // or to center the text on a different point + textaligny 22 + backcolor 0 0 0 0 + forecolor 1 .75 0 1 + decoration + visible 1 + } + +itemDef { + name columnWindow + rect 164 65 216 315 + style WINDOW_STYLE_FILLED + border 1 + bordercolor .5 .5 .5 1 + visible 1 + decoration + } + +itemDef { + name teamheadings + text "Score" + textscale .35 + style 0 + rect 385 65 64 30 + textalign 0 + textalignx 0 // x alignment point for text + // use it to offset left/right text from the edge + // or to center the text on a different point + textaligny 22 + backcolor 0 0 0 0 + forecolor 1 .75 0 1 + decoration + visible 1 + } + +itemDef { + name columnWindow + rect 380 65 105 315 + style WINDOW_STYLE_FILLED + border 1 + bordercolor .5 .5 .5 1 + visible 1 + decoration + } + +itemDef { + name teamheadings + text "Time" + textscale .35 + style 0 + rect 490 65 64 30 + textalign 0 + textalignx 0 // x alignment point for text + // use it to offset left/right text from the edge + // or to center the text on a different point + textaligny 22 + backcolor 0 0 0 0 + forecolor 1 .75 0 1 + decoration + visible 1 + } + +itemDef { + name columnWindow + rect 485 65 70 315 + style WINDOW_STYLE_FILLED + border 1 + bordercolor .5 .5 .5 1 + visible 1 + decoration + } + +itemDef { + name teamheadings + text "Ping" + textscale .35 + style 0 + rect 560 65 64 30 + textalign 0 + textalignx 0 // x alignment point for text + // use it to offset left/right text from the edge + // or to center the text on a different point + textaligny 22 + backcolor 0 0 0 0 + forecolor 1 .75 0 1 + decoration + visible 1 + } + +itemDef { + name columnWindow + rect 555 65 70 315 + style WINDOW_STYLE_FILLED + border 1 + bordercolor .5 .5 .5 1 + visible 1 + decoration + } + + + + + +// LIST // + +itemDef { + name playerlist + rect 14 90 610 290 + forecolor .75 .75 .75 1 + visible 1 + type ITEM_TYPE_LISTBOX + elementwidth 592 + elementheight 20 + textscale .25 + elementtype LISTBOX_TEXT + feeder FEEDER_SCOREBOARD + notselectable + columns 7 5 20 20 5 20 20 65 50 50 150 100 40 365 20 20 463 20 20 532 20 20 + } + + + +// PLAYER INFO // + + +itemDef { + name window + rect 14 384 612 65 + style WINDOW_STYLE_FILLED + border 1 + bordercolor .5 .5 .5 1 + backcolor 0 0 0 .5 + visible 1 + decoration + } +itemDef { + name window + rect 250 384 1 65 + style WINDOW_STYLE_FILLED + border 1 + bordercolor .5 .5 .5 1 + visible 1 + decoration + } + +itemDef { + name gametype + ownerdraw CG_GAME_TYPE + text "" + textalign 0 + textscale .25 + rect 30 382 50 17 + forecolor 1 1 1 1 + textaligny 10 + textalignx 0 + decoration + visible 1 + } + + +itemdef { + name playerscore + type 4 + text "Fraglimit:" + rect 30 405 40 10 + textalignx 0 + textaligny 10 + visible 1 + textalign 0 + forecolor 1 1 1 1 + textscale .25 + cvar "fraglimit" + decoration + } + + + +itemdef { + name playerscore + text "Score:" + rect 30 420 40 10 + textalignx 0 + textaligny 10 + visible 1 + textalign 0 + forecolor 1 1 1 1 + textscale .25 + ownerdraw CG_PLAYER_SCORE + decoration + } + + +itemdef { + name playername + text "Use Score Scroll Keys" + rect 30 435 256 20 + forecolor 1 .75 0 1 + textalignx 0 + textaligny 10 + visible 1 + textalign 0 + decoration + textscale 0.25 + } + + +// AWARDS // + + +itemdef { + name medal_accuracy + ownerdraw CG_ACCURACY + rect 276 388 32 32 + background "ui/assets/medal_accuracy.tga" + forecolor 1 1 1 .5 + visible 1 + decoration + textscale 0.25 + } + + +itemdef { + name medal_excellent + ownerdraw CG_EXCELLENT + rect 376 388 32 32 + background "ui/assets/medal_excellent.tga" + forecolor 1 1 1 .5 + visible 1 + decoration + textscale 0.25 + } + +itemdef { + name medal_gauntlet + ownerdraw CG_GAUNTLET + rect 476 388 32 32 + background "ui/assets/medal_gauntlet.tga" + forecolor 1 1 1 .5 + visible 1 + decoration + textscale 0.25 + } + +itemdef { + name medal_impressive + ownerdraw CG_IMPRESSIVE + rect 576 388 32 32 + background "ui/assets/medal_impressive.tga" + forecolor 1 1 1 .5 + visible 1 + decoration + textscale 0.25 + } + + + + + + + + + + + + + + + + + + +} + + +} diff --git a/ta_ui/score_results.menu b/ta_ui/score_results.menu new file mode 100644 index 00000000..434b255a --- /dev/null +++ b/ta_ui/score_results.menu @@ -0,0 +1,417 @@ +#include "ui/menudef.h" + +{ +\\ score_menu \\ + + menuDef { + name "score_results" + visible 0 + fullscreen 0 + rect 0 0 640 480 + focusColor 1 .75 0 1 + style 0 + border 1 + + +// TEAM BARS // + +itemDef { + name leftteambar + rect 14 112 307 25 + style WINDOW_STYLE_FILLED + border 1 + bordercolor 1 1 1 1 + forecolor 1 1 1 1 + backcolor 1 0 0 1 + visible 1 + decoration +} + +itemDef { + name rightteambar + rect 320 112 306 25 + style WINDOW_STYLE_FILLED + border 1 + bordercolor 1 1 1 1 + forecolor 1 1 1 1 + backcolor 0 0 1 1 + visible 1 + decoration +} + +// TEAM HEADINGS // + +itemDef { + name leftteamheadings + text "Status Name Score Time Ping" + textscale .25 + style 0 + rect 25 112 128 30 + textalign 0 + textalignx 0 // x alignment point for text + // use it to offset left/right text from the edge + // or to center the text on a different point + textaligny 18 + backcolor 0 0 0 0 + forecolor 1 .75 0 1 + decoration + visible 1 + } +itemDef { + name rightteamheadings + text "Status Name Score Time Ping" + textscale .25 + style 0 + rect 336 112 128 30 + textalign 0 + textalignx 0 // x alignment point for text + // use it to offset left/right text from the edge + // or to center the text on a different point + textaligny 18 + backcolor 0 0 0 0 + forecolor 1 .75 0 1 + decoration + visible 1 + } + + + + +// GRADIENT BACKGROUNDS // + + +itemDef { + name window + rect 320 142 1 220 + style WINDOW_STYLE_FILLED + border 1 + bordercolor .5 .5 .5 1 + forecolor 1 1 1 1 + backcolor 0 0 0 1 + visible 1 + decoration +} +itemDef { + name window + rect 300 142 1 220 + style WINDOW_STYLE_FILLED + border 1 + bordercolor .5 .5 .5 1 + visible 1 + decoration +} +itemDef { + name window + rect 606 142 1 220 + style WINDOW_STYLE_FILLED + border 1 + bordercolor .5 .5 .5 1 + visible 1 + decoration +} +itemDef { + name leftgrad + style WINDOW_STYLE_SHADER + background "ui/assets/halfgradleft.tga" + rect 14 142 306 222 + forecolor .75 0 0 0.5 + visible 1 + decoration + } +itemDef { + name rightgrad + style WINDOW_STYLE_SHADER + background "ui/assets/halfgradleft.tga" + rect 320 142 306 222 + forecolor 0 0 .75 0.5 + visible 1 + decoration + } +itemDef { + name playerlogo + style 3 + background "ui/assets/stroggs.tga" + rect 71 157 180 180 + visible 1 + forecolor .5 0 0 .5 + decoration + } + +itemDef { + name opponentlogo + style 3 + background "ui/assets/pagans.tga" + rect 397 157 180 180 + visible 1 + forecolor 0 0 .5 .5 + decoration +} + + + + +// LIST // + +itemDef { + name leftlist + rect 14 142 306 222 + forecolor .75 .75 .75 1 + visible 1 + type ITEM_TYPE_LISTBOX + elementwidth 135 + elementheight 20 + textscale .25 + elementtype LISTBOX_TEXT + feeder FEEDER_REDTEAM_LIST + columns 6 2 12 18 20 78 75 183 20 221 20 251 20 +} + + + +itemDef { + name rightlist + rect 320 142 306 222 + forecolor .75 .75 .75 1 + visible 1 + type ITEM_TYPE_LISTBOX + elementwidth 135 + elementheight 20 + textscale .25 + elementtype LISTBOX_TEXT + feeder FEEDER_BLUETEAM_LIST + columns 6 2 12 18 20 78 75 183 20 221 20 251 20 +} + + + + +// PLAYER LIST BORDER // + + + +itemDef { + name window + rect 14 141 612 221 + style WINDOW_STYLE_EMPTY + border 1 + bordercolor .5 .5 .5 1 + forecolor 1 1 1 1 + backcolor 0 0 0 .25 + visible 1 + decoration +} + + + + + + +// GAMETYPE BAR // + + +itemDef { + name gametypebar + style 2 + rect 0 50 640 35 + // use it to offset left/right text from the edge + // or to center the text on a different point + style 2 + border 4 + bordercolor 1 1 1 1 + bordersize 1 + backcolor 0 0 .75 0.5 + visible 1 + decoration +} + + +itemDef { + name score + text " " + ownerdraw CG_GAME_STATUS + textscale .4 + style 0 + rect 0 42 640 35 + textalignx 320 + textaligny 0 + textalign 1 + backcolor 0 0 0 0 + forecolor 1 1 1 1 + visible 1 + decoration +} + + +itemDef { + name score + ownerdraw CG_KILLER + textscale .4 + style 0 + rect 0 10 640 35 + textalignx 320 + textaligny 0 + textalign 1 + backcolor 0 0 0 0 + forecolor 1 1 1 1 + visible 1 + decoration +} + + + + +// spectators // + +itemDef { + name window + text "Spectating:" + textaligny 20 + rect 14 414 82 24 + style WINDOW_STYLE_FILLED + border 0 + bordercolor .5 .5 .5 1 + forecolor 1 1 1 .7 + backcolor .30 .30 .30 .25 + textscale .33 + visible 1 + decoration +} + +itemDef { + name window + rect 96 414 530 24 + style WINDOW_STYLE_FILLED + border 0 + bordercolor .5 .5 .5 1 + forecolor 1 1 1 .7 + backcolor .30 .30 .30 .25 + textscale .33 + visible 1 + ownerdraw CG_SPECTATORS + decoration +} + + + + +// AWARDS // + + +itemDef { + name window + rect 14 364 612 48 + style WINDOW_STYLE_FILLED + border 1 + bordercolor .5 .5 .5 1 + forecolor 1 1 1 1 + backcolor .30 .30 .30 .15 + visible 1 + decoration +} + +itemdef { + name medal_accuracy + ownerdraw CG_ACCURACY + rect 56 368 32 32 + background "ui/assets/medal_accuracy.tga" + forecolor 1 1 1 .25 + visible 1 + decoration + textscale 0.25 +} + +itemdef { + name medal_assist + ownerdraw CG_ASSISTS + rect 156 368 32 32 + background "ui/assets/medal_assist.tga" + forecolor 1 1 1 .25 + visible 1 + decoration + textscale 0.25 + +} + +itemdef { + name medal_defend + ownerdraw CG_DEFEND + rect 256 368 32 32 + background "ui/assets/medal_defend.tga" + forecolor 1 1 1 .25 + visible 1 + decoration + textscale 0.25 +} + +itemdef { + name medal_excellent + ownerdraw CG_EXCELLENT + rect 356 368 32 32 + background "ui/assets/medal_excellent.tga" + forecolor 1 1 1 .25 + visible 1 + decoration + textscale 0.25 + +} + +itemdef { + name medal_gauntlet + ownerdraw CG_GAUNTLET + rect 456 368 32 32 + background "ui/assets/medal_gauntlet.tga" + forecolor 1 1 1 .25 + visible 1 + decoration + textscale 0.25 + +} + +itemdef { + name medal_impressive + ownerdraw CG_IMPRESSIVE + rect 556 368 32 32 + background "ui/assets/medal_impressive.tga" + forecolor 1 1 1 .25 + visible 1 + decoration + textscale 0.25 + +} + + + + + +// TEAM NAME // + +itemDef { + name redteamname + ownerdraw CG_RED_NAME + textalign 1 + textscale .4 + rect 14 84 306 25 + forecolor 1 0 0 1 + decoration + visible 1 +} + +itemDef { + name blueteamname + ownerdraw CG_BLUE_NAME + textalign 1 + textscale .4 + rect 320 84 306 25 + forecolor 0 0 1 1 + decoration + visible 1 +} + + + + + +} + + +} diff --git a/ta_ui/serverinfo.menu b/ta_ui/serverinfo.menu new file mode 100644 index 00000000..24f9006b --- /dev/null +++ b/ta_ui/serverinfo.menu @@ -0,0 +1,396 @@ +#include "ui/menudef.h" + +{ +\\ Server Information Popup Menu \\ + +menuDef { + name "serverinfo_popmenu" + visible 0 + fullscreen 0 + rect 158 80 320 340 + focusColor 1 .75 0 1 + style 1 + border 1 + popup + onClose { } + onOpen { uiScript ServerStatus } + onESC { close serverinfo_popmenu ; open joinserver } + + itemDef { + name window + rect 10 15 310 330 + style 1 + backcolor 0 0 0 .5 + forecolor 0 0 0 1 + visible 1 + decoration + } + + itemDef { + name window + rect 10 15 320 340 + style 1 + backcolor 0 0 0 .25 + forecolor 0 0 0 1 + visible 1 + decoration + } + + itemDef { + name window + rect 10 15 300 320 + style 1 + backcolor .1 .1 .37 1 + forecolor 0 0 0 1 + visible 1 + decoration + } + + + itemDef { + name window + rect 10 15 300 10 + style 1 + backcolor 0 0 0 .25 + forecolor 0 0 0 1 + visible 1 + decoration + } + + itemDef { + name serverinfo + rect 0 20 320 20 + text "Server Information" + textstyle 3 + textalign 1 + textscale .333 + textalignx 160 + textaligny 20 + forecolor 1 1 1 1 + visible 1 + decoration + } + + + + + +// FRAME // + + + itemDef { + name window + rect 0 10 64 64 + style 3 + background "ui/assets/ingameleftcorner.tga" + visible 1 + decoration + } + + itemDef { + name window + rect 64 10 64 8 + style 3 + background "ui/assets/ingametop.tga" + visible 1 + decoration + } + + itemDef { + name window + rect 184 10 96 8 + style 3 + background "ui/assets/ingametop.tga" + visible 1 + decoration + } + itemDef { + name window + rect 256 10 64 64 + style 3 + background "ui/assets/ingamerightcorner.tga" + visible 1 + decoration + } + + itemDef { + name window + rect 128 10 64 8 + style 3 + background "ui/assets/ingametop.tga" + visible 1 + decoration + } + + itemDef { + name window + rect 0 274 64 64 + style 3 + background "ui/assets/ingameleftcornerb.tga" + visible 1 + decoration + } + + itemDef { + name window + rect 256 274 64 64 + style 3 + background "ui/assets/ingamerightcornerb.tga" + visible 1 + decoration + } + + itemDef { + name window + rect 0 64 16 64 + style 3 + background "ui/assets/ingameleft.tga" + visible 1 + decoration + } + + + itemDef { + name window + rect 0 128 16 64 + style 3 + background "ui/assets/ingameleft.tga" + visible 1 + decoration + } + + itemDef { + name window + rect 0 192 16 96 + style 3 + background "ui/assets/ingameleft.tga" + visible 1 + decoration + } + + itemDef { + name window + rect 304 64 16 64 + style 3 + background "ui/assets/ingameright.tga" + visible 1 + decoration + } + + + itemDef { + name window + rect 304 128 16 64 + style 3 + background "ui/assets/ingameright.tga" + visible 1 + decoration + } + + itemDef { + name window + rect 304 192 16 96 + style 3 + background "ui/assets/ingameright.tga" + visible 1 + decoration + } + + + + itemDef { + name window + rect 64 330 64 8 + style 3 + background "ui/assets/ingamebottom.tga" + visible 1 + decoration + } + + itemDef { + name window + rect 128 330 98 8 + style 3 + background "ui/assets/ingamebottom.tga" + visible 1 + decoration + } + + itemDef { + name window + rect 172 330 98 8 + style 3 + background "ui/assets/ingamebottom.tga" + visible 1 + decoration + } + + + + + + itemDef { + name serverinfo + rect 20 55 280 230 + type ITEM_TYPE_LISTBOX + style WINDOW_STYLE_FILLED + elementwidth 120 + elementheight 16 + textscale .225 + backcolor 0 0 0 1 + border 1 + bordersize 1 + bordercolor .5 .5 .5 1 + elementtype LISTBOX_TEXT + feeder FEEDER_SERVERSTATUS + notselectable + visible 1 + columns 4 2 40 20 + 40 40 10 + 90 40 10 + 135 40 20 + } + + itemDef { + name window + rect 20 55 264 230 + style 1 + backcolor 0 0 0 0 + forecolor 0 0 0 0 + border 1 + bordersize 1 + bordercolor .5 .5 .5 1 + visible 1 + decoration + } + + + + + + + + + + +// BUTTON // + + itemDef { + name exit + text "Exit" + type 1 + textscale .23 + group grpControlbutton + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + rect 95 295 45 26 + textalign 1 + textalignx 23 + textaligny 20 + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + visible 1 + action { play "sound/misc/nomenu.wav" ; + close serverinfo_popmenu ; + open joinserver } + mouseEnter { setitemcolor exit backcolor .1 .37 .1 1 } + mouseExit { setitemcolor exit backcolor .37 .1 .1 1 } + } + + itemDef { + name exit + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/framebutton.tga" + rect 95 295 45 26 + visible 1 + forecolor 1 1 1 1 + decoration + } + + itemDef { + name exit + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/leftbutton.tga" + rect 83 295 13 26 + visible 1 + forecolor 1 1 1 1 + decoration + } + + itemDef { + name exit + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/rightbutton.tga" + rect 139 295 13 26 + visible 1 + forecolor 1 1 1 1 + decoration + } + + + itemDef { + name refresh + text "Refresh" + type 1 + textscale .23 + group grpControlbutton + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + rect 180 295 45 26 + textalign 1 + textalignx 23 + textaligny 20 + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + visible 1 + action { uiScript ServerStatus } + mouseEnter { setitemcolor refresh backcolor .1 .37 .1 1 } + mouseExit { setitemcolor refresh backcolor .37 .1 .1 1 } + } + + itemDef { + name refresh + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/framebutton.tga" + rect 180 295 45 26 + visible 1 + forecolor 1 1 1 1 + decoration + } + + itemDef { + name refresh + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/leftbutton.tga" + rect 168 295 13 26 + visible 1 + forecolor 1 1 1 1 + decoration + } + + itemDef { + name refresh + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/rightbutton.tga" + rect 224 295 13 26 + visible 1 + forecolor 1 1 1 1 + decoration + } + + + +} + + +} + + diff --git a/ta_ui/serverinfo_old.menu b/ta_ui/serverinfo_old.menu new file mode 100644 index 00000000..2104b525 --- /dev/null +++ b/ta_ui/serverinfo_old.menu @@ -0,0 +1,340 @@ +#include "ui/menudef.h" + +{ +\\ Server Information Popup Menu \\ + +menuDef { + name "serverinfo_popmenu" + visible 0 + fullscreen 0 + rect 158 80 320 340 + focusColor 1 .75 0 1 + style 1 + border 1 + popup + onClose { } + onOpen { uiScript ServerStatus } + onESC { close serverinfo_popmenu ; open joinserver } + +itemDef { + name window + rect 10 15 310 330 + style 1 + backcolor 0 0 0 .5 + forecolor 0 0 0 1 + visible 1 + decoration + } +itemDef { + name window + rect 10 15 320 340 + style 1 + backcolor 0 0 0 .25 + forecolor 0 0 0 1 + visible 1 + decoration + } + + + +itemDef { + name window + rect 10 15 300 320 + style 1 + backcolor .1 .1 .37 1 + forecolor 0 0 0 1 + visible 1 + decoration + } + + + +itemDef { + name window + rect 10 15 300 10 + style 1 + backcolor 0 0 0 .25 + forecolor 0 0 0 1 + visible 1 + decoration + } + + itemDef { + name serverinfo + rect 0 20 320 20 + text "Server Information" + textstyle 3 + textalign 1 + textscale .333 + textalignx 160 + textaligny 20 + forecolor 1 1 1 1 + visible 1 + decoration + } + + + + + +// FRAME // + + +itemDef { + name window + rect 0 10 64 64 + style 3 + background "ui/assets/ingameleftcorner.tga" + visible 1 + decoration + } +itemDef { + name window + rect 64 10 64 8 + style 3 + background "ui/assets/ingametop.tga" + visible 1 + decoration + } +itemDef { + name window + rect 184 10 96 8 + style 3 + background "ui/assets/ingametop.tga" + visible 1 + decoration + } +itemDef { + name window + rect 256 10 64 64 + style 3 + background "ui/assets/ingamerightcorner.tga" + visible 1 + decoration + } +itemDef { + name window + rect 128 10 64 8 + style 3 + background "ui/assets/ingametop.tga" + visible 1 + decoration + } +itemDef { + name window + rect 0 274 64 64 + style 3 + background "ui/assets/ingameleftcornerb.tga" + visible 1 + decoration + } +itemDef { + name window + rect 256 274 64 64 + style 3 + background "ui/assets/ingamerightcornerb.tga" + visible 1 + decoration + } + +itemDef { + name window + rect 0 64 16 64 + style 3 + background "ui/assets/ingameleft.tga" + visible 1 + decoration + } + + +itemDef { + name window + rect 0 128 16 64 + style 3 + background "ui/assets/ingameleft.tga" + visible 1 + decoration + } + +itemDef { + name window + rect 0 192 16 96 + style 3 + background "ui/assets/ingameleft.tga" + visible 1 + decoration + } + +itemDef { + name window + rect 304 64 16 64 + style 3 + background "ui/assets/ingameright.tga" + visible 1 + decoration + } + + +itemDef { + name window + rect 304 128 16 64 + style 3 + background "ui/assets/ingameright.tga" + visible 1 + decoration + } + +itemDef { + name window + rect 304 192 16 96 + style 3 + background "ui/assets/ingameright.tga" + visible 1 + decoration + } + + + +itemDef { + name window + rect 64 330 64 8 + style 3 + background "ui/assets/ingamebottom.tga" + visible 1 + decoration + } +itemDef { + name window + rect 128 330 98 8 + style 3 + background "ui/assets/ingamebottom.tga" + visible 1 + decoration + } +itemDef { + name window + rect 172 330 98 8 + style 3 + background "ui/assets/ingamebottom.tga" + visible 1 + decoration + } + + + + + + itemDef { + name serverinfo + rect 20 55 280 230 + type ITEM_TYPE_LISTBOX + style WINDOW_STYLE_FILLED + elementwidth 120 + elementheight 16 + textscale .225 + backcolor 0 0 0 1 + border 1 + bordersize 1 + bordercolor .5 .5 .5 1 + elementtype LISTBOX_TEXT + feeder FEEDER_SERVERSTATUS + notselectable + visible 1 + columns 4 2 40 20 + 40 40 10 + 90 40 10 + 135 40 20 + } + + itemDef { + name window + rect 20 55 264 230 + style 1 + backcolor 0 0 0 0 + forecolor 0 0 0 0 + border 1 + bordersize 1 + bordercolor .5 .5 .5 1 + visible 1 + decoration + } + + + + + + + + + + +// BUTTON // + + +itemDef { + name exit + text "Exit" + type 1 + textscale .25 + group grpControlbutton + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + rect 138 295 45 26 + textalign 1 + textalignx 23 + textaligny 20 + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + visible 1 + action { play "sound/misc/nomenu.wav" ; + close serverinfo_popmenu ; + open joinserver } + mouseEnter { setitemcolor exit backcolor .1 .37 .1 1 } + mouseExit { setitemcolor exit backcolor .37 .1 .1 1 } + } +itemDef { + name exit + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/framebutton.tga" + rect 138 295 45 26 + visible 1 + forecolor 1 1 1 1 + decoration + } + +itemDef { + name exit + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/leftbutton.tga" + rect 126 295 13 26 + visible 1 + forecolor 1 1 1 1 + decoration + } + +itemDef { + name exit + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/rightbutton.tga" + rect 182 295 13 26 + visible 1 + forecolor 1 1 1 1 + decoration + } + + + + + + + +} + + +} + + diff --git a/ta_ui/setup.menu b/ta_ui/setup.menu new file mode 100644 index 00000000..1fdd9ec8 --- /dev/null +++ b/ta_ui/setup.menu @@ -0,0 +1,513 @@ +#include "ui/menudef.h" + +{ +\\ SETUP MENU \\ + +menuDef { + name "setup_menu" + visible 0 + fullscreen 1 + rect 186 0 454 480 + background "menuback_a" + focusColor 1 .75 0 1 + style 1 + border 1 + onOpen { setitemcolor fadebox backcolor 0 0 0 1 ; + playlooped "music/fla_mp03.wav" ; + fadeout fadebox ; + hide back_alt ; + show back ; + hide grpmessage } + onEsc { close setup_menu ; open main } + + + + +itemDef { + name solid_box + style 1 + rect 4 2 178 426 + border 1 + bordersize 1 + bordercolor .5 .5 .5 .5 + backcolor 0 0 .75 .25 + visible 1 + decoration + mouseEnter { setcolor backcolor .75 0 0 .5 } + mouseExit { setcolor backcolor 0 0 .75 .25 } + } + + + + + +// Control // + + + + +itemDef { + name controls + text "Controls" + textscale .5 + style 0 + type 1 + textstyle 6 + rect 0 75 200 40 + textalign 3 + textalignx 20 + textaligny 32 + backcolor 0 0 0 0 + forecolor 1 1 1 1 + visible 1 + action { play "sound/misc/kcaction.wav" ; + close control_menu ; + close system_menu ; + close options_menu ; + close cdkey_menu ; + close default_menu ; + close resetscore_menu ; + open control_menu } + mouseenter { show message_controls } + mouseexit { hide message_controls } + } + + + + + + +// System // + +itemDef { + name system + text "System" + style 0 + type 1 + textstyle 6 + textscale .5 + rect 0 125 200 40 + textalign 3 // center + textalignx 20 // x alignment point for text + // use it to offset left/right text from the edge + // or to center the text on a different point + textaligny 32 + backcolor 0 0 0 0 + forecolor 1 1 1 1 + visible 1 + action { play "sound/misc/kcaction.wav" ; + close control_menu ; + close system_menu ; + close options_menu ; + close cdkey_menu ; + close default_menu ; + close resetscore_menu ; + open system_menu } + mouseenter { show message_system } + mouseexit { hide message_system } + } + + + +// Game Options // + +itemDef { + name gameoptions + text "Game Options" + style 0 + type 1 + textstyle 6 + textscale .5 + rect 0 175 200 40 + textalign 3 // center + textalignx 20 // x alignment point for text + // use it to offset left/right text from the edge + // or to center the text on a different point + textaligny 32 + backcolor 0 0 0 0 + forecolor 1 1 1 1 + visible 1 + action { play "sound/misc/kcaction.wav" ; + close control_menu ; + close system_menu ; + close options_menu ; + close cdkey_menu ; + close default_menu ; + close resetscore_menu ; + open options_menu } + mouseenter { show message_gameoptions } + mouseexit { hide message_gameoptions } + } + + + + +// CD Key // + +itemDef { + name cdkey + text "Enter CD Key" + style 0 + type 1 + textscale .5 + textstyle 6 + rect 0 225 200 40 + textalign 3 // center + textalignx 20 // x alignment point for text + // use it to offset left/right text from the edge + // or to center the text on a different point + textaligny 32 + forecolor 1 1 1 1 + visible 1 + mouseenter { show message_cdkey } + mouseexit { hide message_cdkey } + action { play "sound/misc/kcaction.wav" ; + close control_menu ; + close system_menu ; + close options_menu ; + close cdkey_menu ; + close default_menu ; + close resetscore_menu ; + open cdkey_menu } + } + + + +// Reset Defaults // + +itemDef { + name defaults + text "Defaults" + style 0 + type 1 + textstyle 6 + textscale .5 + rect 0 275 200 40 + textalign 3 // center + textalignx 20 // x alignment point for text + // use it to offset left/right text from the edge + // or to center the text on a different point + textaligny 32 + forecolor 1 1 1 1 + visible 1 + mouseenter { show message_default } + mouseexit { hide message_default } + action { play "sound/misc/kcaction.wav" ; + close control_menu ; + close system_menu ; + close options_menu ; + close cdkey_menu ; + close default_menu ; + close resetscore_menu ; + open default_menu } + } + +// Reset Score // + + +itemDef { + name scores + text "Clear Scores" + style 0 + type 1 + textstyle 6 + textscale .5 + rect 0 325 200 40 + textalign 3 // center + textalignx 20 // x alignment point for text + // use it to offset left/right text from the edge + // or to center the text on a different point + textaligny 32 + forecolor 1 1 1 1 + visible 1 + mouseenter { show message_scores } + mouseexit { hide message_scores } + action { play "sound/misc/kcaction.wav" ; + close control_menu ; + close system_menu ; + close options_menu ; + close cdkey_menu ; + close default_menu ; + close resetscore_menu ; + open resetscore_menu } + } + + + +// BACK BAR // + + +itemDef { + name gotobar + style 2 + rect 0 430 640 30 + textscale 0.4 + textalign 0 // center + textalignx 60 // x alignment point for text + // use it to offset left/right text from the edge + // or to center the text on a different point + textaligny 21 + style 2 + border 4 + bordercolor 0.5 0.5 0.5 0.5 + bordersize 2 + backcolor 0 0 .75 0.5 + visible 1 + mouseEnter { setcolor backcolor .75 0 0 .5 } + mouseExit { setcolor backcolor 0 0 .75 .5 } + decoration + } + + itemDef { + name back + style 3 + background "ui/assets/backarrow.tga" + rect 16 424 50 50 + visible 1 + action { close setup_menu ; open main } + mouseEnter { hide back ; show back_alt ; show message_back } + } + +itemDef { + name back_alt + style WINDOW_STYLE_SHADER + background "ui/assets/backarrow_alt.tga" + rect 14 422 54 54 + backcolor 0 0 0 0 + forecolor 1 1 1 1 + visible 0 + type ITEM_TYPE_BUTTON + action { hide grpControls ; + close control_menu ; + close setup_menu ; + close system_menu ; + close options_menu ; + close cdkey_menu ; + close default_menu ; + close resetscore_menu ; + open main } + mouseExit { hide back_alt ; show back ; hide message_back } + } + + +// MESSAGES // + +itemDef { + name message_back + group grpmessage + style 0 + rect 320 430 128 30 + textstyle 1 + textalign 1 + textalignx 0 + textaligny 25 + textscale .4 + text "Exit to Main Menu" + forecolor 1 1 1 1 + decoration + visible 0 + } + +itemDef { + name message_accept + group grpmessage + style 0 + rect 320 430 128 30 + textalign 1 + textstyle 1 + textalignx 0 + textaligny 25 + textscale .4 + text "Refresh Video" + forecolor 1 1 1 1 + decoration + visible 0 + } + +itemDef { + name message_controls + group grpmessage + style 0 + rect 320 430 128 30 + textalign 1 + textstyle 1 + textalignx 0 + textaligny 25 + textscale .4 + text "Select to Edit Game Controls" + forecolor 1 1 1 1 + decoration + visible 0 + } + +itemDef { + name message_nowork + group grpmessage + style 0 + rect 320 430 128 30 + textalign 1 + textstyle 1 + textalignx 0 + textaligny 25 + textscale .4 + text "Selection Isn't Implemented" + forecolor 1 1 1 1 + decoration + visible 0 + } + +itemDef { + name message_look + group grpmessage + style 0 + rect 320 430 128 30 + textalign 1 + textstyle 1 + textalignx 0 + textaligny 25 + textscale .4 + text "Select to Edit View Controls" + forecolor 1 1 1 1 + decoration + visible 0 + } + +itemDef { + name message_move + group grpmessage + style 0 + rect 320 430 128 30 + textalign 1 + textstyle 1 + textalignx 0 + textaligny 25 + textscale .4 + text "Select to Edit Movement Controls" + forecolor 1 1 1 1 + decoration + visible 0 + } + +itemDef { + name message_shoot + group grpmessage + style 0 + rect 320 430 128 30 + textalign 1 + textstyle 1 + textalignx 0 + textaligny 25 + textscale .4 + text "Select to Edit Firing and Weapon Selection" + forecolor 1 1 1 1 + decoration + visible 0 + } +itemDef { + name message_misc + group grpmessage + style 0 + rect 320 430 128 30 + textalign 1 + textstyle 1 + textalignx 0 + textaligny 25 + textscale .4 + text "Select to Edit Chat and Mouse Functions" + forecolor 1 1 1 1 + decoration + visible 0 + } +itemDef { + name message_system + group grpmessage + style 0 + rect 320 430 128 30 + textalign 1 + textstyle 1 + textalignx 0 + textaligny 25 + textscale .4 + text "Edit System Settings" + forecolor 1 1 1 1 + decoration + visible 0 + } +itemDef { + name message_gameoptions + group grpmessage + style 0 + rect 320 430 128 30 + textalign 1 + textstyle 1 + textalignx 0 + textaligny 25 + textscale .4 + text "Edit Game Options" + forecolor 1 1 1 1 + decoration + visible 0 + } +itemDef { + name message_cdkey + group grpmessage + style 0 + rect 320 430 128 30 + textalign 1 + textstyle 1 + textalignx 0 + textaligny 25 + textscale .4 + text "Enter Encryption Key" + forecolor 1 1 1 1 + decoration + visible 0 + } +itemDef { + name message_default + group grpmessage + style 0 + rect 320 430 128 30 + textalign 1 + textstyle 1 + textalignx 0 + textaligny 25 + textscale .4 + text "Reset to Default Settings" + forecolor 1 1 1 1 + decoration + visible 0 + } +itemDef { + name message_scores + group grpmessage + style 0 + rect 320 430 128 30 + textalign 1 + textstyle 1 + textalignx 0 + textaligny 25 + textscale .4 + text "Clear High Scores to Zero" + forecolor 1 1 1 1 + decoration + visible 0 + } + + +itemDef { + name fadebox + style WINDOW_STYLE_FILLED + background "ui/assets/fadebox.tga" + forecolor 0 0 0 1 + backcolor 0 0 0 1 + rect 0 0 640 480 + visible 1 + decoration + } + + +} + + +} diff --git a/ta_ui/skirmish.menu b/ta_ui/skirmish.menu new file mode 100644 index 00000000..bc723012 --- /dev/null +++ b/ta_ui/skirmish.menu @@ -0,0 +1,1655 @@ +#include "ui/menudef.h" + +{ +\\ skirmish\\ + + menuDef { + name "skirmish" + visible 0 + fullscreen 1 + rect 0 0 640 480 + background "menuback_a" + focusColor 1 .75 0 1 + style 1 + fadeClamp 1.0 + fadeCycle 1 // how often fade happens in milliseconds + fadeAmount 0.1 + onEsc { close skirmish ; open main } + onOpen { + setitemcolor fadebox backcolor 0 0 0 1 ; + playlooped "music/fla_mp03.wav" ; + fadeout fadebox ; + uiScript loadGameInfo ; + uiScript updateSPMenu ; + hide lightning ; + hide accept_alt ; + show accept ; + hide back_alt ; + show back ; + hide grpmessage } + + + + + + + + + + + + + +// GAMETYPE BAR // + + + +itemDef { + name gametypebar + style 2 + rect 0 5 640 40 + textscale 0.4 + textalign 0 // center + textalignx 60 // x alignment point for text + // use it to offset left/right text from the edge + // or to center the text on a different point + textaligny 21 + style 2 + border 4 + bordercolor 0.5 0.5 0.5 0.5 + bordersize 2 + backcolor 0 0 .75 0.5 + visible 1 + mouseEnter { setcolor backcolor .75 0 0 .5 } + mouseExit { setcolor backcolor 0 0 .75 .5 } + decoration + } + + + +itemDef { + name gametypefield + style 0 + ownerdraw UI_GAMETYPE + textstyle 6 + text "Type:" + rect 0 10 213 31 + textalign ITEM_ALIGN_LEFT + textalignx 20 + textaligny 26 + textscale .35 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 1 + action { play "sound/misc/kcaction.wav" } + mouseEnter { fadein message_type } + mouseExit { fadeout message_type } + } + + itemDef { + name opposingteamfield + text "Opponent: " + ownerdraw UI_OPPONENT_NAME + textstyle 6 + rect 213 10 213 31 + textalign ITEM_ALIGN_LEFT + textalignx 20 + textaligny 26 + textscale .35 + forecolor 1 1 1 1 + visible 1 + cvarTest "ui_gametype" + hideCvar { "1" } + action { play "sound/misc/kcaction.wav" } + mouseenter { show message_opponent } + mouseexit { hide message_opponent } + } + + +itemDef { + name gametypefield + style 0 + ownerdraw UI_SKILL + textstyle 6 + text "Skill:" + rect 426 10 213 31 + textalign ITEM_ALIGN_LEFT + textalignx 20 + textaligny 26 + textscale .35 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 1 + action { play "sound/misc/kcaction.wav" } + mouseEnter { fadein message_skill } + mouseExit { fadeout message_skill } + } + +// DECORATIVE // + + +itemDef { + name mappreview + ownerdraw UI_MAPCINEMATIC + rect 320 170 320 192 + backcolor 1 1 1 .25 + decoration + visible 1 + } + +itemDef { + name mappscreen + style 3 + background "menuscreen" + rect 320 170 320 192 + visible 1 + decoration + } + + + + +itemDef { + name window + rect 0 170 640 192 + style WINDOW_STYLE_EMPTY + border 1 + bordercolor .5 .5 .5 .5 + forecolor 1 1 1 1 + backcolor 0 0 0 .25 + visible 1 + decoration + } + +// MAP INFORMATION BARS // + +itemDef { + name mapinfo + style WINDOW_STYLE_SHADER + rect 0 172 20 82 + background "ui/assets/mapinfo.tga" + forecolor .5 .5 .5 .5 + visible 1 + decoration + } + +itemDef { + name score + style WINDOW_STYLE_SHADER + rect 0 260 20 100 + background "ui/assets/score.tga" + forecolor .5 .5 .5 .5 + visible 1 + decoration + } + +itemDef { + name window + rect 0 255 320 5 + style WINDOW_STYLE_EMPTY + border 1 + bordercolor .5 .5 .5 .5 + forecolor 1 1 1 1 + backcolor 0 0 0 .25 + visible 1 + decoration + } + +// CENTER IMAGE AND INFORMATION // + +itemDef { + name menuback_e + style WINDOW_STYLE_SHADER + rect 254 194 140 140 + background "centerconsole" + visible 1 + decoration + } + +itemDef { + name opposinglogo + ownerdraw UI_OPPONENTLOGO_METAL + rect 264 200 120 120 + cvarTest "ui_gametype" + hideCvar { "1" } + visible 1 + forecolor .7 .7 1 .25 + decoration + } + +itemDef { + name mappscreen + style 3 + background menuscreen + rect 254 194 140 140 + visible 1 + decoration + } + +itemDef { + name menuback_e + group grpCenter + style WINDOW_STYLE_SHADER + rect 254 194 140 140 + background "centerconsole" + visible 1 + decoration + } + +itemDef { + name opposinglogo + ownerdraw UI_OPPONENTLOGO_METAL + cvarTest "ui_gametype" + hideCvar { "1" } + rect 264 200 120 120 + visible 1 + forecolor .7 .7 1 .25 + decoration + } + +itemDef { + name mappscreen + group grpCenter + style 3 + background menuscreen + rect 254 194 140 140 + visible 1 + decoration + } + +itemDef { + name level_info + group grplevelinfo2 + textscale .35 + text "Best Score" + rect 258 250 128 20 + textalign 1 + textalignx 64 // x alignment point for text + // use it to offset left/right text from the edge + // or to center the text on a different point + textaligny 12 + backcolor 0 0 0 0 + forecolor 1 1 1 1 + decoration + visible 1 + } + +// CENTER INFORMATION FOR NEW HIGH SCORE // + + +itemDef { + name backwindow + style WINDOW_STYLE_FILLED + rect 254 194 140 140 + ownerdrawflag UI_SHOW_NEWHIGHSCORE + backcolor 0 0 0 1 + forecolor 0 0 0 1 + visible 1 + decoration + } + +itemDef { + name menuback_e + style WINDOW_STYLE_SHADER + ownerdrawflag UI_SHOW_NEWHIGHSCORE + rect 254 194 140 140 + background "centerconsole" + visible 1 + decoration + } + +itemDef { + name playerlogo + ownerdraw UI_PLAYERLOGO_METAL + cvarTest "ui_gametype" + hideCvar { "1" } + rect 264 200 120 120 + ownerdrawflag UI_SHOW_NEWHIGHSCORE + visible 1 + forecolor .7 .7 1 .25 + decoration + } + +itemDef { + name mappscreen + style 3 + background menuscreen + ownerdrawflag UI_SHOW_NEWHIGHSCORE + rect 254 190 140 150 + visible 1 + decoration + } + +itemDef { + name level_info + group grplevelinfo2 + textstyle ITEM_TEXTSTYLE_BLINK + textscale .35 + text "New High Score" + rect 258 248 128 20 + ownerdrawflag UI_SHOW_NEWHIGHSCORE + textalign 1 + textalignx 64 // x alignment point for text + // use it to offset left/right text from the edge + // or to center the text on a different point + textaligny 12 + backcolor 0 0 0 0 + forecolor 1 0 0 1 + decoration + visible 1 + } + +itemDef { + name menuback_g + style WINDOW_STYLE_SHADER + rect 215 160 215 212 + background "menuback_g" + visible 1 + decoration + } + + +// SCORE INFORMATION // + + +itemDef { + name level_info + group grplevelinfo2 + textscale .3 + text "" + type ITEM_TYPE_EDITFIELD + cvar "ui_scoreScore" + rect 258 265 128 20 + textalign 1 + textalignx 64 // x alignment point for text + // use it to offset left/right text from the edge + // or to center the text on a different point + textaligny 12 + backcolor 0 0 0 0 + forecolor 1 1 1 1 + decoration + visible 1 + } + + + +// AWARDS TEAM GAME // + +itemdef { + name medal_assist_team + rect 185 380 30 30 + type ITEM_TYPE_EDITFIELD + style WINDOW_STYLE_SHADER + background "ui/assets/medal_assist.tga" + cvar "ui_scoreAssists" + ownerdrawflag UI_SHOW_ANYTEAMGAME + textscale .22 + textalign 1 + text "" + textalignx 15 + textaligny 40 + visible 1 + decoration + border 1 + bordersize 1 + bordercolor 1 1 1 0 + mouseenter { show message_assist } + mouseexit { hide message_assist } + } + + +itemdef { + name medal_accuracy_team + style WINDOW_STYLE_SHADER + cvar "ui_scoreAccuracy" + rect 225 380 30 30 + background "ui/assets/medal_accuracy.tga" + ownerdrawflag UI_SHOW_ANYTEAMGAME + visible 1 + decoration + type ITEM_TYPE_EDITFIELD + textalign 1 + text "" + textalignx 15 + textaligny 40 + border 1 + bordersize 1 + bordercolor 1 1 1 0 + textscale .22 + mouseenter { show message_accuracy } + mouseexit { hide message_accuracy } + } + + +itemdef { + name medal_excellent_team + style WINDOW_STYLE_SHADER + cvar "ui_scoreExcellents" + rect 265 380 30 30 + background "ui/assets/medal_excellent.tga" + ownerdrawflag UI_SHOW_ANYTEAMGAME + visible 1 + decoration + type ITEM_TYPE_EDITFIELD + textalign 1 + text "" + textalignx 15 + textaligny 40 + border 1 + bordersize 1 + bordercolor 1 1 1 0 + textscale .22 + mouseenter { show message_excellent } + mouseexit { hide message_excellent } + } + + +itemdef { + name medal_gauntlet_team + style WINDOW_STYLE_SHADER + cvar "ui_scoreGauntlets" + rect 305 380 30 30 + background "ui/assets/medal_gauntlet.tga" + ownerdrawflag UI_SHOW_ANYTEAMGAME + visible 1 + decoration + type ITEM_TYPE_EDITFIELD + textalign 1 + text "" + textalignx 15 + textaligny 40 + border 1 + bordersize 1 + bordercolor 1 1 1 0 + textscale .22 + mouseenter { show message_gauntlet } + mouseexit { hide message_gauntlet } + } + + +itemdef { + name medal_impressive_team + style WINDOW_STYLE_SHADER + cvar "ui_scoreImpressives" + rect 345 380 30 30 + background "ui/assets/medal_impressive.tga" + ownerdrawflag UI_SHOW_ANYTEAMGAME + visible 1 + decoration + type ITEM_TYPE_EDITFIELD + textalign 1 + text "" + textalignx 15 + textaligny 40 + border 1 + bordersize 1 + bordercolor 1 1 1 0 + textscale .22 + mouseenter { show message_impressive } + mouseexit { hide message_impressive } + } + +itemdef { + name medal_defend_team + style WINDOW_STYLE_SHADER + cvar "ui_scoreDefends" + rect 385 380 30 30 + background "ui/assets/medal_defend.tga" + ownerdrawflag UI_SHOW_ANYTEAMGAME + visible 1 + decoration + type ITEM_TYPE_EDITFIELD + textalign 1 + text "" + textalignx 15 + textaligny 40 + border 1 + bordersize 1 + bordercolor 1 1 1 0 + textscale .22 + mouseenter { show message_defend } + mouseexit { hide message_defend } + } + +itemdef { + name medal_capture_team + style WINDOW_STYLE_SHADER + cvar "ui_scoreCaptures" + rect 425 380 30 30 + background "ui/assets/medal_capture.tga" + ownerdrawflag UI_SHOW_ANYTEAMGAME + visible 1 + decoration + type ITEM_TYPE_EDITFIELD + textalign 1 + text "" + textalignx 15 + textaligny 40 + border 1 + bordersize 1 + bordercolor 1 1 1 0 + textscale .22 + mouseenter { show message_capture } + mouseexit { hide message_capture } + } + + + + + +// AWARDS NONTEAM GAME // + + +itemdef { + name medal_perfect_nonteam + rect 230 380 30 30 + type ITEM_TYPE_EDITFIELD + style WINDOW_STYLE_SHADER + background "ui/assets/medal_perfect.tga" + cvar "ui_scorePerfect" + ownerdrawflag UI_SHOW_ANYNONTEAMGAME + textscale .22 + textalign 1 + text "" + textalignx 15 + textaligny 40 + visible 1 + decoration + border 1 + bordersize 1 + bordercolor 1 1 1 0 + mouseenter { show message_perfect } + mouseexit { hide message_perfect } + } + +itemdef { + name medal_accuracy_nonteam + style WINDOW_STYLE_SHADER + cvar "ui_scoreAccuracy" + rect 270 380 30 30 + background "ui/assets/medal_accuracy.tga" + ownerdrawflag UI_SHOW_ANYNONTEAMGAME + visible 1 + decoration + type ITEM_TYPE_EDITFIELD + textalign 1 + text "" + textalignx 15 + textaligny 40 + textscale .22 + border 1 + bordersize 1 + bordercolor 1 1 1 0 + mouseenter { show message_accuracy } + mouseexit { hide message_accuracy } + } + + +itemdef { + name medal_excellent_nonteam + style WINDOW_STYLE_SHADER + cvar "ui_scoreExcellents" + rect 310 380 30 30 + background "ui/assets/medal_excellent.tga" + ownerdrawflag UI_SHOW_ANYNONTEAMGAME + visible 1 + decoration + type ITEM_TYPE_EDITFIELD + textalign 1 + text "" + textalignx 15 + textaligny 40 + textscale .22 + border 1 + bordersize 1 + bordercolor 1 1 1 0 + mouseenter { show message_excellent } + mouseexit { hide message_excellent } + } + + + + +itemdef { + name medal_gauntlet_nonteam + style WINDOW_STYLE_SHADER + cvar "ui_scoreGauntlets" + rect 350 380 30 30 + background "ui/assets/medal_gauntlet.tga" + ownerdrawflag UI_SHOW_ANYNONTEAMGAME + visible 1 + decoration + type ITEM_TYPE_EDITFIELD + textalign 1 + text "" + textalignx 15 + textaligny 40 + textscale .22 + border 1 + bordersize 1 + bordercolor 1 1 1 0 + mouseenter { show message_gauntlet } + mouseexit { hide message_gauntlet } + } + + +itemdef { + name medal_impressive_nonteam + style WINDOW_STYLE_SHADER + cvar "ui_scoreImpressives" + rect 390 380 30 30 + background "ui/assets/medal_impressive.tga" + ownerdrawflag UI_SHOW_ANYNONTEAMGAME + visible 1 + decoration + type ITEM_TYPE_EDITFIELD + textalign 1 + text "" + textalignx 15 + textaligny 40 + textscale .22 + border 1 + bordersize 1 + bordercolor 1 1 1 0 + mouseenter { show message_impressive } + mouseexit { hide message_impressive } + } + + + +// SOUND BUTTON // + + +itemdef { + name medal_assist_window + rect 183 378 34 34 + style WINDOW_STYLE_SHADER + background "ui/assets/medal_assist.tga" + ownerdrawflag UI_SHOW_ANYTEAMGAME + type 1 + border 1 + bordercolor .5 .5 .5 0 + forecolor 1 1 1 0 + backcolor 1 1 1 0 + visible 1 + mouseenter { setitemcolor medal_assist_team forecolor 0 0 0 0 ; setcolor forecolor 1 1 1 1 } + mouseexit { setitemcolor medal_assist_team forecolor 1 1 1 1 ; setcolor forecolor 1 1 1 0 } + action { exec "play sound/feedback/voc_menu_assist.wav" } + } + +itemdef { + name medal_accuracy_window + rect 223 378 34 34 + style WINDOW_STYLE_SHADER + background "ui/assets/medal_accuracy.tga" + ownerdrawflag UI_SHOW_ANYTEAMGAME + type 1 + border 1 + bordercolor .5 .5 .5 0 + forecolor 1 1 1 0 + backcolor 1 1 1 0 + visible 1 + mouseenter { setitemcolor medal_accuracy_team forecolor 0 0 0 0 ; setcolor forecolor 1 1 1 1 } + mouseexit { setitemcolor medal_accuracy_team forecolor 1 1 1 1 ; setcolor forecolor 1 1 1 0 } + action { exec "play sound/feedback/voc_menu_accuracy.wav" } + } +itemdef { + name medal_excellent_window + rect 263 378 34 34 + type 1 + style WINDOW_STYLE_SHADER + background "ui/assets/medal_excellent.tga" + ownerdrawflag UI_SHOW_ANYTEAMGAME + border 1 + bordercolor .5 .5 .5 0 + forecolor 1 1 1 0 + backcolor 1 1 1 0 + visible 1 + mouseenter { setitemcolor medal_excellent_team forecolor 0 0 0 0 ; setcolor forecolor 1 1 1 1 } + mouseexit { setitemcolor medal_excellent_team forecolor 1 1 1 1 ; setcolor forecolor 1 1 1 0 } + action { exec "play sound/feedback/voc_menu_excellent.wav" } + } +itemdef { + name medal_gauntlet_window + rect 303 378 34 34 + type 1 + style WINDOW_STYLE_SHADER + background "ui/assets/medal_gauntlet.tga" + ownerdrawflag UI_SHOW_ANYTEAMGAME + border 1 + bordercolor .5 .5 .5 0 + forecolor 1 1 1 0 + backcolor 1 1 1 0 + visible 1 + mouseenter { setitemcolor medal_gauntlet_team forecolor 0 0 0 0 ; setcolor forecolor 1 1 1 1 } + mouseexit { setitemcolor medal_gauntlet_team forecolor 1 1 1 1 ; setcolor forecolor 1 1 1 0 } + action { exec "play sound/feedback/voc_menu_gauntlet.wav" } + } +itemdef { + name medal_impressive_window + rect 343 378 34 34 + type 1 + style WINDOW_STYLE_SHADER + background "ui/assets/medal_impressive.tga" + ownerdrawflag UI_SHOW_ANYTEAMGAME + border 1 + bordercolor .5 .5 .5 0 + forecolor 1 1 1 0 + backcolor 1 1 1 0 + visible 1 + mouseenter { setitemcolor medal_impressive_team forecolor 0 0 0 0 ; setcolor forecolor 1 1 1 1 } + mouseexit { setitemcolor medal_impressive_team forecolor 1 1 1 1 ; setcolor forecolor 1 1 1 0 } + action { exec "play sound/feedback/voc_menu_impressive.wav" } + } +itemdef { + name medal_defend_window + rect 383 378 34 34 + type 1 + style WINDOW_STYLE_SHADER + background "ui/assets/medal_defend.tga" + ownerdrawflag UI_SHOW_ANYTEAMGAME + border 1 + bordercolor .5 .5 .5 0 + forecolor 1 1 1 0 + backcolor 1 1 1 0 + visible 1 + mouseenter { setitemcolor medal_defend_team forecolor 0 0 0 0 ; setcolor forecolor 1 1 1 1 } + mouseexit { setitemcolor medal_defend_team forecolor 1 1 1 1 ; setcolor forecolor 1 1 1 0 } + action { exec "play sound/feedback/voc_menu_defense.wav" } + } +itemdef { + name medal_capture_window + rect 423 378 34 34 + type 1 + style WINDOW_STYLE_SHADER + background "ui/assets/medal_capture.tga" + ownerdrawflag UI_SHOW_ANYTEAMGAME + border 1 + bordercolor .5 .5 .5 0 + forecolor 1 1 1 0 + backcolor 1 1 1 0 + visible 1 + mouseenter { setitemcolor medal_capture_team forecolor 0 0 0 0 ; setcolor forecolor 1 1 1 1 } + mouseexit { setitemcolor medal_capture_team forecolor 1 1 1 1 ; setcolor forecolor 1 1 1 0 } + action { exec "play sound/feedback/voc_menu_captures.wav" } + } + + + + + + + + +itemdef { + name medal_perfect_window + rect 228 378 34 34 + type 1 + style WINDOW_STYLE_SHADER + background "ui/assets/medal_perfect.tga" + ownerdrawflag UI_SHOW_ANYNONTEAMGAME + border 1 + bordercolor .5 .5 .5 0 + forecolor 1 1 1 0 + backcolor 1 1 1 0 + visible 1 + mouseenter { setitemcolor medal_perfect_nonteam forecolor 0 0 0 0 ; setcolor forecolor 1 1 1 1 } + mouseexit { setitemcolor medal_perfect_nonteam forecolor 1 1 1 1 ; setcolor forecolor 1 1 1 0 } + action { exec "play sound/feedback/perfect.wav" } + } + +itemdef { + name medal_accuracy_window + rect 268 378 34 34 + type 1 + style WINDOW_STYLE_SHADER + background "ui/assets/medal_accuracy.tga" + ownerdrawflag UI_SHOW_ANYNONTEAMGAME + border 1 + bordercolor .5 .5 .5 0 + forecolor 1 1 1 0 + backcolor 1 1 1 0 + visible 1 + mouseenter { setitemcolor medal_accuracy_nonteam forecolor 0 0 0 0 ; setcolor forecolor 1 1 1 1 } + mouseexit { setitemcolor medal_accuracy_nonteam forecolor 1 1 1 1 ; setcolor forecolor 1 1 1 0 } + action { exec "play sound/feedback/voc_menu_accuracy.wav" } + } + + + +itemdef { + name medal_excellent_window + rect 308 378 34 34 + type 1 + ownerdrawflag UI_SHOW_ANYNONTEAMGAME + style WINDOW_STYLE_SHADER + background "ui/assets/medal_excellent.tga" + border 1 + bordercolor .5 .5 .5 0 + forecolor 1 1 1 0 + backcolor 1 1 1 0 + visible 1 + mouseenter { setitemcolor medal_excellent_nonteam forecolor 0 0 0 0 ; setcolor forecolor 1 1 1 1 } + mouseexit { setitemcolor medal_excellent_nonteam forecolor 1 1 1 1 ; setcolor forecolor 1 1 1 0 } + action { exec "play sound/feedback/voc_menu_excellent.wav" } + } + + +itemdef { + name medal_gauntlet_window + rect 348 378 34 34 + type 1 + style WINDOW_STYLE_SHADER + background "ui/assets/medal_gauntlet.tga" + ownerdrawflag UI_SHOW_ANYNONTEAMGAME + border 1 + bordercolor .5 .5 .5 0 + forecolor 1 1 1 0 + backcolor 1 1 1 0 + visible 1 + mouseenter { setitemcolor medal_gauntlet_nonteam forecolor 0 0 0 0 ; setcolor forecolor 1 1 1 1 } + mouseexit { setitemcolor medal_gauntlet_nonteam forecolor 1 1 1 1 ; setcolor forecolor 1 1 1 0 } + action { exec "play sound/feedback/voc_menu_gauntlet.wav" } + } + + +itemdef { + name medal_impressive_window + rect 388 378 34 34 + type 1 + style WINDOW_STYLE_SHADER + background "ui/assets/medal_impressive.tga" + ownerdrawflag UI_SHOW_ANYNONTEAMGAME + border 1 + bordercolor .5 .5 .5 0 + forecolor 1 1 1 0 + backcolor 1 1 1 0 + visible 1 + mouseenter { setitemcolor medal_impressive_nonteam forecolor 0 0 0 0 ; setcolor forecolor 1 1 1 1 } + mouseexit { setitemcolor medal_impressive_nonteam forecolor 1 1 1 1 ; setcolor forecolor 1 1 1 0 } + action { exec "play sound/feedback/voc_menu_impressive.wav" } + } + + + + +// MAP SETTINGS // + + itemDef { + name opposingteamfield + text "Map:" + ownerdraw UI_MAPS_SELECTION + rect 120 185 128 12 + textalign ITEM_ALIGN_RIGHT + textalignx 0 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + decoration + visible 1 + } + + + + itemDef { + name normal + group grpsettings + type ITEM_TYPE_NUMERICFIELD + text "Frag limit:" + cvar "ui_fraglimit" + ownerdrawflag UI_SHOW_ANYNONTEAMGAME + rect 120 200 128 12 + textalign ITEM_ALIGN_RIGHT + textalignx 0 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 1 + decoration + } + + itemDef { + name normal + group grpsettings + type ITEM_TYPE_NUMERICFIELD + text "Capture limit:" + cvar "ui_capturelimit" + ownerdrawflag UI_SHOW_ANYTEAMGAME + rect 120 200 128 12 + textalign ITEM_ALIGN_RIGHT + textalignx 0 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 1 + decoration + } + + itemDef { + name normal + group grpsettings + ownerdraw UI_MAP_TIMETOBEAT + text "Time to Beat:" + rect 120 215 128 12 + textalign ITEM_ALIGN_RIGHT + textalignx 0 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 1 + decoration + } + itemDef { + name normal + group grpsettings + type ITEM_TYPE_NUMERICFIELD + text "Skill Multiplier:" + cvar "g_spSkill" + rect 120 230 128 12 + textalign ITEM_ALIGN_RIGHT + textalignx 0 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 1 + decoration + } + + itemDef { + name normal + group grpsettings + type ITEM_TYPE_NUMERICFIELD + text "Game Score:" + cvar "ui_scoreTeam" + rect 120 265 128 12 + textalign ITEM_ALIGN_RIGHT + textalignx 0 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 1 + decoration + } + itemDef { + name normal + group grpsettings + type ITEM_TYPE_NUMERICFIELD + text "Completion Time:" + cvar "ui_scoreTime" + rect 120 278 128 12 + textalign ITEM_ALIGN_RIGHT + textalignx 0 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 1 + decoration + } + + itemDef { + name normal + group grpsettings + type ITEM_TYPE_NUMERICFIELD + text "Base Score:" + cvar "ui_scoreBase" + rect 120 291 128 12 + textalign ITEM_ALIGN_RIGHT + textalignx 0 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 1 + decoration + mouseenter { } + mouseexit { } + } + + itemDef { + name normal + group grpsettings + type ITEM_TYPE_NUMERICFIELD + text "Time Bonus:" + cvar "ui_scoreTimeBonus" + rect 120 304 128 12 + textalign ITEM_ALIGN_RIGHT + textalignx 0 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 1 + decoration + mouseenter { } + mouseexit { } + } +itemDef { + name normal + group grpsettings + type ITEM_TYPE_NUMERICFIELD + text "Shutout Bonus:" + cvar "ui_scoreShutoutBonus" + rect 120 317 128 12 + textalign ITEM_ALIGN_RIGHT + textalignx 0 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 1 + decoration + mouseenter { } + mouseexit { } + } +itemDef { + name normal + group grpsettings + type ITEM_TYPE_NUMERICFIELD + text "Skill Bonus:" + cvar "ui_scoreSkillBonus" + rect 120 330 128 12 + textalign ITEM_ALIGN_RIGHT + textalignx 0 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 1 + decoration + mouseenter { } + mouseexit { } + } +itemDef { + name normal + group grpsettings + type ITEM_TYPE_NUMERICFIELD + text "Total Score:" + cvar "ui_scoreScore" + rect 120 343 128 12 + textalign ITEM_ALIGN_RIGHT + textalignx 0 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 1 + decoration + mouseenter { } + mouseexit { } + } + +itemDef { + name recordDemo + type ITEM_TYPE_YESNO + text "Record Game:" + cvar "ui_recordSPDemo" + rect 120 380 64 30 + textalign ITEM_ALIGN_RIGHT + textalignx 0 + textaligny 22 + textscale .333 + forecolor 1 1 1 1 + forecolor 1 1 1 1 + visible 1 + action { play "sound/misc/nomenu.wav" } + mouseEnter { show message_recordDemo } + mouseExit { hide message_recordDemo} + } + + + + + + +// LEVEL SELECTION // + + + +itemDef { + name maplist + rect 119 60 403 91 + type ITEM_TYPE_LISTBOX + style WINDOW_STYLE_FILLED + elementwidth 100 + elementheight 75 + elementtype LISTBOX_IMAGE + feeder FEEDER_MAPS + horizontalscroll + border 1 + bordercolor .5 .5 .5 .5 + forecolor 1 1 1 1 + visible 1 + mouseenter { setitemcolor maplist bordercolor .7 0 0 1 ; show message_arena } + mouseexit { setitemcolor maplist bordercolor .5 .5 .5 .5 ; hide message_arena } +/* + // demo_only + cvarTest "ui_gametype" + hideCvar { "1" } +*/ + } + +/* + +// DEMO ONLY OPTION // + +itemDef { + name demo_only + text "Opponent: " + text "Tournament Maps are Not Available in Demo." + textstyle 3 + rect 119 60 403 91 + textalign ITEM_ALIGN_CENTER + textalignx 200 + textaligny 26 + textscale .35 + forecolor 1 1 1 1 + visible 1 + decoration + cvarTest "ui_gametype" + showCvar { "1" } + } +*/ + + + + +// TEAM LOGOS // + +itemDef { + name playerlogo + ownerdraw UI_PLAYERLOGO_METAL + cvarTest "ui_gametype" + hideCvar { "1" } + rect 30 60 80 80 + visible 1 + forecolor 1 .7 .7 1 + decoration + } + +itemDef { + name modelselection + ownerdraw UI_PLAYERMODEL + cvarTest "ui_gametype" + showCvar { "1" } + rect 10 40 140 140 + style 1 + decoration + visible 1 + } + +itemDef { + name opposinglogo + ownerdraw UI_OPPONENTLOGO_METAL + cvarTest "ui_gametype" + hideCvar { "1" } + rect 530 60 80 80 + visible 1 + forecolor .7 .7 1 1 + decoration + } +itemDef { + name modelselection + ownerdraw UI_OPPONENTMODEL + cvarTest "ui_gametype" + showCvar { "1" } + rect 510 40 140 140 + style 1 + decoration + visible 1 + } + +itemDef { + name playDemobttn + group grpbttn + type 1 + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + text "No Demo" + rect 500 385 100 26 + textalign 1 + textalignx 50 + textaligny 20 + textscale .25 + decoration + forecolor .5 .5 .5 1 + backcolor .17 .05 .05 1 + visible 1 + } + + +itemDef { + name playDemobttn + group grpbttn + type 1 + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + text "View Last Game" + rect 500 385 100 26 + textalign 1 + textalignx 50 + textaligny 20 + textscale .25 + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + visible 1 + ownerdrawflag UI_SHOW_DEMOAVAILABLE + action { play "sound/misc/kcaction.wav" ; + hide grphelptext ; uiScript RunSPDemo } + mouseEnter { setitemcolor playDemobttn backcolor .1 .37 .1 1 ; show demo_message } + mouseExit { setitemcolor playDemobttn backcolor .37 .1 .1 1 ; hide demo_message } + } + +itemDef { + name playDemo + group grpbttn + style WINDOW_STYLE_SHADER + background "ui/assets/framebutton.tga" + rect 500 385 100 26 + visible 1 + decoration + } + +itemDef { + name playDemo + group grpbttn + style WINDOW_STYLE_SHADER + background "ui/assets/leftbutton.tga" + rect 488 385 13 26 + visible 1 + decoration + } + +itemDef { + name playDemo + group grpbttn + style WINDOW_STYLE_SHADER + background "ui/assets/rightbutton.tga" + rect 599 385 13 26 + visible 1 + decoration + } + + + + + + + + +// BACK BAR // + + + itemDef { + name gotobar + style 2 + rect 0 430 640 30 + textscale 0.4 + textalign 0 // center + textalignx 60 // x alignment point for text + // use it to offset left/right text from the edge + // or to center the text on a different point + textaligny 21 + style 2 + border 4 + bordercolor 0.5 0.5 0.5 0.5 + bordersize 2 + backcolor 0 0 .75 0.5 + visible 1 + mouseEnter { setcolor backcolor .75 0 0 .5 } + mouseExit { setcolor backcolor 0 0 .75 .5 } + decoration + } + + itemDef { + name back + style 3 + background "ui/assets/backarrow.tga" + rect 16 424 50 50 + visible 1 + action { close skirmish ; open main } + mouseEnter { hide back ; show back_alt ; fadein message_back } + } + +itemDef { + name back_alt + style WINDOW_STYLE_SHADER + background "ui/assets/backarrow_alt.tga" + rect 14 422 54 54 + backcolor 0 0 0 0 + forecolor 1 1 1 1 + visible 0 + type ITEM_TYPE_BUTTON + mouseExit { hide back_alt ; show back ; fadeout message_back } + action { close skirmish ; open main } + } + +itemDef { + name accept + style 3 + rect 574 424 50 50 + background "ui/assets/forwardarrow.tga" + backcolor 0 0 0 0 + forecolor 1 1 1 1 + visible 1 + mouseEnter { show lightning ; hide accept ; show accept_alt ; fadein message_accept ; playlooped "sound/misc/loop_electricity_05.wav" } + action { uiScript skirmishStart } +/* + // demo_only + cvarTest "ui_gametype" + hideCvar { "1" } +*/ + } + +itemDef { + name accept_alt + style 3 + rect 572 422 54 54 + background "ui/assets/forwardarrow_alt.tga" + backcolor 0 0 0 0 + forecolor 1 1 1 1 + visible 0 + type ITEM_TYPE_BUTTON + action { uiScript skirmishStart } + mouseExit { hide lightning ; hide accept_alt ; show accept ; fadeout message_accept ; playlooped "music/fla_mp03.wav" } +/* + // demo_only + cvarTest "ui_gametype" + hideCvar { "1" } +*/ + } + + + itemDef { + name lightning + style 3 + background lightningkc + rect 46 385 236 128 + visible 0 + decoration + } +itemDef { + name lightning + style 3 + background lightningkc + rect 355 385 236 128 + visible 0 + decoration + } + + + +// MESSAGES // + +itemDef { + name message_back + group grpmessage + style 0 + rect 320 430 128 30 + textstyle 1 + textalign 1 + textalignx 0 + textaligny 25 + textscale .416 + text "Exit to Main Menu" + forecolor 1 1 1 1 + decoration + visible 0 + } + +itemDef { + name message_accept + group grpmessage + style 0 + rect 320 430 128 30 + textalign 1 + textstyle 1 + textalignx 0 + textaligny 25 + textscale .416 + text "Enter Arena" + forecolor 1 1 1 1 + decoration + visible 0 + } + +itemDef { + name message_type + group grpmessage + style 0 + rect 320 430 128 30 + textalign 1 + textstyle 1 + textalignx 0 + textaligny 25 + textscale .416 + text "Select Gametype" + forecolor 1 1 1 1 + decoration + visible 0 + } + +itemDef { + name message_skill + group grpmessage + style 0 + rect 320 430 128 30 + textstyle 1 + textalign 1 + textalignx 0 + textaligny 25 + textscale .416 + text "Set Skill Level" + forecolor 1 1 1 1 + decoration + visible 0 + } + +itemDef { + name message_arena + group grpmessage + style 0 + rect 320 430 128 30 + textstyle 1 + textalign 1 + textalignx 0 + textaligny 25 + textscale .416 + text "Choose Your Arena" + forecolor 1 1 1 1 + decoration + visible 0 + } + +itemDef { + name message_assist + group grpmessage + style 0 + rect 320 430 128 30 + textstyle 1 + textalign 1 + textalignx 0 + textaligny 25 + textscale .416 + text "Assist" + forecolor 1 1 1 1 + decoration + visible 0 + } +itemDef { + name message_perfect + group grpmessage + style 0 + rect 320 430 128 30 + textstyle 1 + textalign 1 + textalignx 0 + textaligny 25 + textscale .416 + text "Perfect" + forecolor 1 1 1 1 + decoration + visible 0 + } +itemDef { + name message_accuracy + group grpmessage + style 0 + rect 320 430 128 30 + textstyle 1 + textalign 1 + textalignx 0 + textaligny 25 + textscale .416 + text "Accuracy" + forecolor 1 1 1 1 + decoration + visible 0 + } +itemDef { + name message_defend + group grpmessage + style 0 + rect 320 430 128 30 + textstyle 1 + textalign 1 + textalignx 0 + textaligny 25 + textscale .416 + text "Defense" + forecolor 1 1 1 1 + decoration + visible 0 + } +itemDef { + name message_excellent + group grpmessage + style 0 + rect 320 430 128 30 + textstyle 1 + textalign 1 + textalignx 0 + textaligny 25 + textscale .416 + text "Excellent" + forecolor 1 1 1 1 + decoration + visible 0 + } +itemDef { + name message_gauntlet + group grpmessage + style 0 + rect 320 430 128 30 + textstyle 1 + textalign 1 + textalignx 0 + textaligny 25 + textscale .416 + text "Gauntlet" + forecolor 1 1 1 1 + decoration + visible 0 + } +itemDef { + name message_impressive + group grpmessage + style 0 + rect 320 430 128 30 + textstyle 1 + textalign 1 + textalignx 0 + textaligny 25 + textscale .416 + text "Impressive" + forecolor 1 1 1 1 + decoration + visible 0 + } +itemDef { + name message_capture + group grpmessage + style 0 + rect 320 430 128 30 + textstyle 1 + textalign 1 + textalignx 0 + textaligny 25 + textscale .416 + text "Captures" + forecolor 1 1 1 1 + decoration + visible 0 + } +itemDef { + name message_opponent + group grpmessage + style 0 + rect 320 430 128 30 + textstyle 1 + textalign 1 + textalignx 0 + textaligny 25 + textscale .416 + text "Cycle through Opponent Clans" + forecolor 1 1 1 1 + decoration + visible 0 + } +itemDef { + name message_recordDemo + group grpmessage + style 0 + rect 320 430 128 30 + textstyle 1 + textalign 1 + textalignx 0 + textaligny 25 + textscale .416 + text "Record Next Game" + forecolor 1 1 1 1 + decoration + visible 0 + } + +itemDef { + name demo_message + group grpmessage + style 0 + rect 320 430 128 30 + textstyle 1 + textalign 1 + textalignx 0 + textaligny 25 + textscale .416 + text "View Last Recorded Game for this Map" + forecolor 1 1 1 1 + decoration + visible 0 + } + + + + + + +itemDef { + name fadebox + style WINDOW_STYLE_FILLED + background "ui/assets/fadebox.tga" + forecolor 0 0 0 1 + backcolor 0 0 0 1 + rect 0 0 640 480 + visible 1 + decoration + } + + + + +} + +} + + + + + + + diff --git a/ta_ui/small.menu b/ta_ui/small.menu new file mode 100644 index 00000000..3fd88263 --- /dev/null +++ b/ta_ui/small.menu @@ -0,0 +1,796 @@ +#include "ui/menudef.h" + +// team menu +// +// defines from ui_shared.h +/* +#define ITEM_TYPE_TEXT 0 // simple text +#define ITEM_TYPE_BUTTON 1 // button, basically text with a border +#define ITEM_TYPE_RADIOBUTTON 2 // toggle button, may be grouped +#define ITEM_TYPE_CHECKBOX 3 // check box +#define ITEM_TYPE_TEXTFIELD 4 // editable text, associated with a cvar +#define ITEM_TYPE_COMBO 5 // drop down list +#define ITEM_TYPE_LISTBOX 6 // scrollable list +#define ITEM_TYPE_MODEL 7 // model +#define ITEM_TYPE_OWNERDRAW 8 // owner draw, name specs what it is + +#define ITEM_ALIGN_LEFT 0 // left alignment +#define ITEM_ALIGN_CENTER 1 // center alignment +#define ITEM_ALIGN_RIGHT 2 // right alignment + +#define ITEM_TEXTSTYLE_NORMAL 0 // normal text +#define ITEM_TEXTSTYLE_BLINK 1 // fast blinking +#define ITEM_TEXTSTYLE_PULSE 2 // slow pulsing +#define ITEM_TEXTSTYLE_SHADOWED 3 // drop shadow ( need a color for this ) +#define ITEM_TEXTSTYLE_OUTLINED 4 // drop shadow ( need a color for this ) +#define ITEM_TEXTSTYLE_OUTLINEDSHADOWED 5 // drop shadow ( need a color for this ) + +#define WINDOW_BORDER_NONE 0 // no border +#define WINDOW_BORDER_FULL 1 // full border based on border color ( single pixel ) +#define WINDOW_BORDER_HORZ 2 // horizontal borders only +#define WINDOW_BORDER_VERT 3 // vertical borders only +#define WINDOW_BORDER_KCGRADIENT 4 // horizontal border using the gradient bars + +#define WINDOW_STYLE_EMPTY 0 // no background +#define WINDOW_STYLE_FILLED 1 // filled with background color +#define WINDOW_STYLE_GRADIENT 2 // gradient bar based on background color +#define WINDOW_STYLE_SHADER 3 // gradient bar based on background color + +#define MENU_TRUE 1 // uh.. true +#define MENU_FALSE 0 // and false + +#define WINDOW_MOUSEOVER 0x00000001 // mouse is over it, non exclusive +#define WINDOW_HASFOCUS 0x00000002 // has cursor focus, exclusive +#define WINDOW_VISIBLE 0x00000004 // is visible +#define WINDOW_GREY 0x00000008 // is visible but grey ( non-active ) +#define WINDOW_DECORATION 0x00000010 // for decoration only, no mouse, keyboard, etc.. +#define WINDOW_FADINGOUT 0x00000020 // fading out, non-active +#define WINDOW_FADINGIN 0x00000040 // fading in +#define WINDOW_MOUSEOVERTEXT 0x00000080 // mouse is over it, non exclusive +#define WINDOW_INTRANSITION 0x00000100 // window is in transition +#define WINDOW_FORECOLORSET 0x00000200 // forecolor was explicitly set ( used to color alpha images or not ) + +// cg owner draw types +// ideally these should be done outside of this file but +// this makes it much easier for the macro expansion to +// convert them for the designers ( from the .menu files ) +// cg owner draw types +// ideally these should be done outside of this file but +// this makes it much easier for the macro expansion to +// convert them for the designers ( from the .menu files ) + +#define CG_PLAYER_ARMOR_ICON 1 +#define CG_PLAYER_ARMOR_VALUE 2 +#define CG_PLAYER_HEAD 3 +#define CG_PLAYER_HEALTH 4 +#define CG_PLAYER_AMMO_ICON 5 +#define CG_PLAYER_AMMO_VALUE 6 + +#define CG_SELECTEDPLAYER_HEAD 7 +#define CG_SELECTEDPLAYER_NAME 8 +#define CG_SELECTEDPLAYER_LOCATION 9 +#define CG_SELECTEDPLAYER_STATUS 10 +#define CG_SELECTEDPLAYER_WEAPON 11 +#define CG_SELECTEDPLAYER_POWERUP 12 + +#define CG_FLAGCARRIER_HEAD 13 +#define CG_FLAGCARRIER_NAME 14 +#define CG_FLAGCARRIER_LOCATION 15 +#define CG_FLAGCARRIER_STATUS 16 +#define CG_FLAGCARRIER_WEAPON 17 +#define CG_FLAGCARRIER_POWERUP 18 + +#define CG_PLAYER_ITEM 19 +#define CG_PLAYER_SCORE 20 + +#define CG_BLUE_FLAGHEAD 21 +#define CG_BLUE_FLAGSTATUS 22 +#define CG_BLUE_FLAGNAME 23 +#define CG_RED_FLAGHEAD 24 +#define CG_RED_FLAGSTATUS 25 +#define CG_RED_FLAGNAME 26 + +#define CG_BLUE_SCORE 27 +#define CG_RED_SCORE 28 +#define CG_RED_NAME 29 +#define CG_BLUE_NAME 30 +#define CG_HARVESTER_SKULLS 31 +#define CG_ONEFLAG_STATUS 32 +#define CG_PLAYER_LOCATION 33 +#define CG_TEAM_COLOR 34 +#define CG_CTF_POWERUP 35 + +#define CG_AREA_POWERUP 36 +#define CG_AREA_LAGOMETER 37 + +#define CG_PLAYER_HASFLAG 38 +#define CG_TEAM_COLOR 39 + + +// display flags +#define CG_SHOW_BLUE_TEAM_HAS_REDFLAG 0x00000001 +#define CG_SHOW_RED_TEAM_HAS_BLUEFLAG 0x00000002 +#define CG_SHOW_ANYTEAMGAME 0x00000004 +#define CG_SHOW_HARVESTER 0x00000008 +#define CG_SHOW_ONEFLAG 0x00000010 +#define CG_SHOW_CTF 0x00000020 +#define CG_SHOW_OBELISK 0x00000040 +#define CG_SHOW_HEALTHCRITICAL 0x00000080 +#define CG_SHOW_SINGLEPLAYER 0x00000100 +#define CG_SHOW_TOURNAMENT 0x00000200 +#define CG_SHOW_DURINGINCOMINGVOICE 0x00000400 +#define CG_SHOW_IF_PLAYER_HAS_FLAG 0x00000800 +#define CG_SHOW_LANPLAYONLY 0x00001000 +#define CG_SHOW_2DONLY 0x10000000 + + + +*/ + + +{ + assetGlobalDef { + font "fonts/impact.ttf" // font + cursor "menu/art/3_cursor2" // cursor + gradientBar "ui/assets/gradientbar2.tga" // gradient bar + fadeClamp 1.0 // sets the fadeup alpha + fadeCycle 1 // how often fade happens in milliseconds + fadeAmount 0.1 // amount to adjust alpha per cycle + + shadowX 5 // x amount for shadow offset + shadowY 5 // y amount for shadow offset + shadowColor 0.1 0.1 0.1 0.25 // shadow color + + hudShader "ui/assets/hudbar.tga" // + + } + + + +// POWERUP AREA // + +menuDef { + name "powerup area" + fullScreen MENU_FALSE + visible MENU_TRUE + rect 570 220 50 100 + + itemDef { + name "powerupArea" + rect 0 0 40 40 + visible 1 + decoration + ownerdraw CG_AREA_POWERUP + special 4 + align HUD_VERTICAL + } + +} + + + +// MINI_SELECTPLAYER // + + +menuDef { + name "miniSelectPlayer" + fullScreen MENU_FALSE + visible MENU_TRUE + rect 3 447 155 30 + + itemDef { + name "miniSelectPlayerRect" + fullScreen MENU_FALSE + visible 1 + rect 0 0 155 30 + style 4 + border 1 + bordersize 1 + bordercolor 0 0 0 0 + backcolor 0 0 0 0 + mouseEnter { show miniSelectPlayerRectAlt } + mouseExit { hide miniSelectPlayerRectAlt } + } + + itemDef { + name "miniSelectPlayerRectAlt" + fullScreen MENU_FALSE + visible 0 + rect 0 0 155 30 + style 1 + border 1 + bordersize 1 + bordercolor 1 1 1 1 + backcolor 0 0 0 0 + } + + itemDef { + name "b" + rect 3 4 25 25 + visible 1 + ownerdraw CG_SELECTEDPLAYER_HEAD + action { open altteamMenu } + } + + itemDef { + name "b" + rect 33 7 20 20 + visible 1 + decoration + ownerdraw CG_SELECTEDPLAYER_STATUS + } + + itemDef { + name "b" + rect 65 4 20 10 + visible 1 + style 3 + decoration + background "ui/assets/statusbar/selectedhealth.tga" + addColorRange -999 25 1 0 0 1 + addColorRange 26 100 1 .75 0 1 + addColorRange 101 999 1 1 1 1 + ownerdraw CG_SELECTEDPLAYER_HEALTH + } + + itemDef { + name "b" + rect 65 17 20 10 + visible 1 + style 3 + decoration + background "ui/assets/statusbar/selectedarmor.tga" + addColorRange -999 25 1 0 0 1 + addColorRange 26 100 1 .75 0 1 + addColorRange 101 999 1 1 1 1 + ownerdraw CG_SELECTEDPLAYER_ARMOR + } + + + itemDef { + name "b" + rect 90 7 20 20 + visible 1 + decoration + ownerdraw CG_SELECTEDPLAYER_WEAPON + } + + itemDef { + name "b" + rect 125 7 20 20 + visible 1 + decoration + ownerdraw CG_SELECTEDPLAYER_POWERUP + } +} + + + + +// MINI_STATUS // + +menuDef { + name "miniPlayerStatus" + fullScreen MENU_FALSE + visible MENU_TRUE + rect 162 447 155 30 + + + itemDef { + name "miniPlayerStatusRect" + fullScreen MENU_FALSE + visible 1 + rect 0 0 155 30 + style 4 + border 1 + bordersize 1 + bordercolor 0 0 0 0 + backcolor 0 0 0 0 + mouseEnter { show miniPlayerStatusRectAlt } + mouseExit { hide miniPlayerStatusRectAlt } + } + + itemDef { + name "miniPlayerStatusRectAlt" + fullScreen MENU_FALSE + visible 0 + rect 0 0 155 30 + style 1 + border 1 + bordersize 1 + bordercolor 1 1 1 1 + backcolor 0 0 0 0 + } + + itemDef { + name "miniAmmoValue" + rect 10 7 25 15 + visible 1 + decoration + textscale .33 + forecolor 1 1 1 1 + ownerdraw CG_PLAYER_AMMO_VALUE + addColorRange -999 5 1 0 0 1 + addColorRange 6 999 1 .75 0 1 + } + + +itemDef { + name "miniHealthValue" + rect 60 7 25 15 + visible 1 + decoration + forecolor 1 1 1 1 + textscale .33 + ownerdraw CG_PLAYER_HEALTH + addColorRange -999 25 1 0 0 1 + addColorRange 26 100 1 .75 0 1 + addColorRange 101 999 1 1 1 1 + } + +itemDef { + name "MiniArmorValue" + rect 110 7 25 15 + visible 1 + decoration + textscale .33 + ownerdraw CG_PLAYER_ARMOR_VALUE + addColorRange -999 25 1 0 0 1 + addColorRange 26 100 1 .75 0 1 + addColorRange 101 999 1 1 1 1 + } +} + + + + +// MINI_ITEMS // + +menuDef { + name "miniItems" + fullScreen MENU_FALSE + visible MENU_TRUE + style 4 + rect 321 447 155 30 + + itemDef { + name "miniItemRect" + fullScreen MENU_FALSE + visible 1 + rect 0 0 155 30 + style 4 + border 1 + bordersize 1 + bordercolor 0 0 0 0 + backcolor 0 0 0 0 + mouseEnter { show miniItemRectAlt } + mouseExit { hide miniItemRectAlt } + } + + itemDef { + name "miniITemRectAlt" + fullScreen MENU_FALSE + visible 0 + rect 0 0 155 30 + style 1 + border 1 + bordersize 1 + bordercolor 1 1 1 1 + backcolor 0 0 0 0 + } + + itemDef { + name "b" + rect 5 6 20 20 + visible 1 + decoration + ownerdraw CG_PLAYER_STATUS + } + + itemDef { + name "b" + rect 45 6 20 20 + visible 1 + decoration + ownerdraw CG_PLAYER_ITEM + } + + + itemDef { + name "b" + rect 80 6 20 20 + visible 1 + decoration + ownerdraw CG_CTF_POWERUP + } + + itemDef { + name "flag" + rect 120 4 25 25 + visible 1 + decoration + ownerdraw CG_PLAYER_HASFLAG + } + + + +} + +// MINI_CTF_STATUS // + +menuDef { + name "miniCTFStatus" + fullScreen MENU_FALSE + visible MENU_TRUE + style 4 + rect 480 447 155 30 + + itemDef { + name "miniCTFStatusRect" + fullScreen MENU_FALSE + visible 1 + rect 0 0 155 30 + style 4 + border 1 + bordersize 1 + bordercolor 0 0 0 0 + backcolor 0 0 0 0 + mouseEnter { show miniCTFStatusRectAlt } + mouseExit { hide miniCTFStatusRectAlt } + } + + itemDef { + name "miniCTFStatusRectAlt" + fullScreen MENU_FALSE + visible 0 + rect 0 0 155 30 + style 1 + border 1 + bordersize 1 + bordercolor 1 1 1 1 + backcolor 0 0 0 0 + } + + +itemDef { + name "f" + rect 8 6 20 20 + visible 1 + bordercolor 1 1 1 .75 + decoration + style 3 + background "ui/assets/bluechip.tga" + } + +itemDef { + name "miniFlagBlue" + rect 8 6 20 20 + visible 1 + decoration + ownerdraw CG_BLUE_FLAGSTATUS + } + +itemDef { + name "miniBlueScore" + rect 25 7 30 15 + visible 1 + decoration + forecolor 1 1 1 1 + textscale 0.33 + ownerdraw CG_BLUE_SCORE + } + +itemDef { + name "f" + rect 85 6 20 20 + visible 1 + bordercolor 1 1 1 .75 + decoration + style 3 + background "ui/assets/redchip.tga" + } + +itemDef { + name "miniFlagRed" + rect 85 6 20 20 + visible 1 + decoration + ownerdraw CG_RED_FLAGSTATUS + } + +itemDef { + name "miniRedScore" + rect 100 7 30 15 + visible 1 + decoration + forecolor 1 1 1 1 + textscale 0.33 + ownerdraw CG_RED_SCORE + } + +} + +{ + menuDef { + name "altTeamMenu" + fullScreen MENU_FALSE + visible MENU_FALSE + rect 5 300 80 132 + style WINDOW_STYLE_FILLED + backcolor 0 0 0.8 .25 + border WINDOW_BORDER_FULL + bordersize 1 + bordercolor .5 .5 1 1 + + itemDef { + name "Possess" + text "Possess" + textaligny 10 + textalign ITEM_ALIGN_LEFT + rect 5 5 75 10 + visible 1 + textscale 0.22 + mouseEnter { hide highlight ; show pbar } + } + + itemDef { + name "pbar" + group "highlight" + style WINDOW_STYLE_FILLED + rect 0 5 79 13 + visible 0 + backcolor 0.8 0.8 0.8 0.3 + decoration + } + + itemDef { + name "Follow" + text "Follow" + textaligny 10 + textalign ITEM_ALIGN_Left + rect 5 17 75 10 + visible 1 + textscale 0.22 + mouseEnter { hide highlight ; show fbar } + } + + itemDef { + name "fbar" + group "highlight" + style WINDOW_STYLE_FILLED + rect 0 17 79 13 + visible 0 + backcolor 0.8 0.8 0.8 0.3 + decoration + } + + itemDef { + name "Go To" + text "Go To" + textaligny 10 + textalign ITEM_ALIGN_Left + rect 5 29 75 10 + visible 1 + textscale 0.22 + mouseEnter { hide highlight ; show gbar } + } + + itemDef { + name "gbar" + group "highlight" + style WINDOW_STYLE_FILLED + rect 0 29 79 13 + visible 0 + backcolor 0.8 0.8 0.8 0.3 + decoration + } + + itemDef { + name "Get" + text "Get" + textaligny 10 + textalign ITEM_ALIGN_Left + rect 5 41 75 10 + visible 1 + textscale 0.22 + mouseEnter { hide highlight ; show g2bar } + action { open altGetMenu } + } + + itemDef { + name "g2bar" + group "highlight" + style WINDOW_STYLE_FILLED + rect 0 41 79 13 + visible 0 + backcolor 0.8 0.8 0.8 0.3 + decoration + } + + itemDef { + name "Patrol From" + text "Patrol From" + textaligny 10 + textalign ITEM_ALIGN_Left + rect 5 53 75 10 + visible 1 + textscale 0.22 + mouseEnter { hide highlight ; show p2bar } + } + + itemDef { + name "p2bar" + group "highlight" + style WINDOW_STYLE_FILLED + rect 0 53 79 13 + visible 0 + backcolor 0.8 0.8 0.8 0.3 + decoration + } + + itemDef { + name "Patrol To" + text "Patrol To" + textaligny 10 + textalign ITEM_ALIGN_Left + rect 5 65 75 10 + visible 1 + textscale 0.22 + mouseEnter { hide highlight ; show p3bar } + } + + itemDef { + name "p3bar" + group "highlight" + style WINDOW_STYLE_FILLED + rect 0 65 79 13 + visible 0 + backcolor 0.8 0.8 0.8 0.3 + decoration + } + + itemDef { + name "Camp Near" + text "Camp Near" + textaligny 10 + textalign ITEM_ALIGN_Left + rect 5 77 75 10 + visible 1 + textscale 0.22 + mouseEnter { hide highlight ; show cbar } + } + + itemDef { + name "cbar" + group "highlight" + style WINDOW_STYLE_FILLED + rect 0 75 79 13 + visible 0 + backcolor 0.8 0.8 0.8 0.3 + decoration + } + + itemDef { + name "Defend" + text "Defend" + textaligny 10 + textalign ITEM_ALIGN_Left + rect 5 89 75 10 + visible 1 + textscale 0.22 + mouseEnter { hide highlight ; show dbar } + } + + itemDef { + name "dbar" + group "highlight" + style WINDOW_STYLE_FILLED + rect 0 89 79 13 + visible 0 + backcolor 0.8 0.8 0.8 0.3 + decoration + } + + itemDef { + name "Attack" + text "Attack" + textaligny 10 + textalign ITEM_ALIGN_Left + rect 5 101 75 10 + visible 1 + textscale 0.22 + mouseEnter { hide highlight ; show abar } + } + + itemDef { + name "abar" + group "highlight" + style WINDOW_STYLE_FILLED + rect 0 101 79 13 + visible 0 + backcolor 0.8 0.8 0.8 0.3 + decoration + } + + itemDef { + name "Drop Command" + text "Drop Command" + textaligny 10 + textalign ITEM_ALIGN_Left + rect 5 113 75 10 + visible 1 + textscale 0.22 + mouseEnter { hide highlight ; show dcbar } + } + + itemDef { + name "dcbar" + group "highlight" + style WINDOW_STYLE_FILLED + rect 0 113 79 13 + visible 0 + backcolor 0.8 0.8 0.8 0.3 + decoration + } + } + + +menuDef { + name "altGetMenu" + fullScreen MENU_FALSE + visible MENU_FALSE + rect 86 338 85 35 + style WINDOW_STYLE_FILLED + backcolor 0 0 0.8 .25 + border WINDOW_BORDER_FULL + bordersize 1 + bordercolor .5 .5 1 1 + + itemDef { + name "Enemy Flag" + text "Enemy Flag" + textaligny 10 + textalign ITEM_ALIGN_LEFT + rect 5 3 80 10 + visible 1 + textscale 0.22 + mouseEnter { hide highlight2 ; show efbar } + action { close altGetMenu ; close altTeamMenu ; orders get flag } + + } + itemDef { + name "efbar" + group "highlight2" + style WINDOW_STYLE_FILLED + rect 0 3 84 13 + visible 0 + backcolor 0.8 0.8 0.8 0.3 + decoration + } + + itemDef { + name "Rocket Launcher" + text "Rocket Launcher" + textaligny 10 + textalign ITEM_ALIGN_LEFT + rect 5 17 80 10 + visible 1 + textscale 0.22 + mouseEnter { hide highlight2 ; show rlbar } + action { close altGetMenu ; close altTeamMenu ; orders get rocketlauncher } + + } + itemDef { + name "rlbar" + group "highlight2" + style WINDOW_STYLE_FILLED + rect 0 17 84 13 + visible 0 + backcolor 0.8 0.8 0.8 0.3 + decoration + } + + } + +} + diff --git a/ta_ui/system.menu b/ta_ui/system.menu new file mode 100644 index 00000000..25f17f5d --- /dev/null +++ b/ta_ui/system.menu @@ -0,0 +1,676 @@ +#include "ui/menudef.h" + +{ +\\ SETUP MENU \\ + +menuDef { + name "system_menu" + visible 0 + fullscreen 0 + rect 186 0 443 426 + focusColor 1 .75 0 1 + style 1 + border 1 + onOpen { setitemcolor fadebox backcolor 0 0 0 1 ; fadeout fadebox ; hide grpSystem ; show graphics } + onEsc { close system_menu ; close setup_menu ; open main } + + +itemDef { + name window + group grpSystembutton + rect 0 2 443 426 + style WINDOW_STYLE_FILLED + border 1 + bordercolor .5 .5 .5 .5 + forecolor 1 1 1 1 + backcolor 0 0 0 .25 + visible 1 + decoration +} + + + + +// System // + +itemDef { + name ctr_graphics + text "Graphics" + type 1 + textscale .3 + group grpSystembutton + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + rect 56 395 100 26 + textalign 1 + textalignx 50 + textaligny 20 + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + visible 1 + action { play "sound/misc/kcaction.wav" ; + hide grpSystem ; show graphics } + mouseEnter { show message_graphics ; setitemcolor ctr_graphics backcolor .1 .37 .1 1 } + mouseExit { hide message_graphics ; setitemcolor ctr_graphics backcolor .37 .1 .1 1 } + } + +itemDef { + name ctr_graphics + style WINDOW_STYLE_SHADER + background "ui/assets/framebutton.tga" + rect 56 395 100 26 + visible 1 + decoration + } + +itemDef { + name ctr_graphics + style WINDOW_STYLE_SHADER + background "ui/assets/leftbutton.tga" + rect 44 395 13 26 + visible 1 + decoration + } + +itemDef { + name ctr_graphics + style WINDOW_STYLE_SHADER + background "ui/assets/rightbutton.tga" + rect 155 395 13 26 + visible 1 + decoration + } + + + itemDef { + name graphics + group grpSystem + text "Quality:" + type ITEM_TYPE_MULTI + cvar "ui_glCustom" + cvarFloatList { "High Quality" 0 "Normal" 1 "Fast" 2 "Fastest" 3 "Custom" 4 } + rect 99 42 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .333 + forecolor 1 1 1 1 + visible 0 + action { uiScript update "ui_glCustom" } + } + + itemDef { + name graphics + group grpSystem + type ITEM_TYPE_EDITFIELD + text "GL Driver:" + cvar "r_gldriver" + rect 99 67 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .333 + forecolor 1 1 1 1 + visible 0 + decoration + } + + itemDef { + name graphics + group grpSystem + type ITEM_TYPE_YESNO + text "GL Extensions:" + cvar "r_allowExtensions" + rect 99 92 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .333 + forecolor 1 1 1 1 + visible 0 + action { uiScript glCustom } + } + + itemDef { + name graphics + group grpSystem + type ITEM_TYPE_MULTI + text "Video Mode:" + cvar "r_mode" + cvarFloatList { "320*240" 0 "400*300" 1 "512*384" 2 "640*480" 3 "800*600" 4 "960*720" 5 "1024*768" 6 "1152*864" 7 "1280*1024" 8 "1600*1200" 9 "2048*1536" 10 "856*480 Wide Screen" 11 } + rect 99 117 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .333 + forecolor 1 1 1 1 + visible 0 + action { uiScript glCustom } + } + + itemDef { + name graphics + group grpSystem + type ITEM_TYPE_MULTI + text "Color Depth:" + cvar "r_colorbits" + cvarFloatList { "Desktop Default" 0 "16-bit" 16 "32-bit" 32 } + rect 99 142 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .333 + forecolor 1 1 1 1 + visible 0 + action { uiScript glCustom ; uiScript update "r_colorbits" } + } + + itemDef { + name graphics + group grpSystem + type ITEM_TYPE_YESNO + text "Fullscreen:" + cvar "r_fullscreen" + rect 99 167 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .333 + forecolor 1 1 1 1 + visible 0 + action { uiScript glCustom } + } + + itemDef { + name graphics + group grpSystem + type ITEM_TYPE_MULTI + text "Lighting:" + cvar "r_vertexlight" + cvarFloatList { "Light Map (high)" 0 "Vertex (low)" 1 } + rect 99 192 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .333 + forecolor 1 1 1 1 + visible 0 + action { uiScript glCustom } + } + + itemDef { + name graphics + group grpSystem + type ITEM_TYPE_MULTI + text "Geometric Detail:" + cvar "r_lodbias" + cvarFloatList { "High" 0 "Medium" 1 "Low" 2 } + rect 99 217 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .333 + forecolor 1 1 1 1 + visible 0 + action { uiScript glCustom ; uiScript update "r_lodbias" } + } + + itemDef { + name graphics + group grpSystem + type ITEM_TYPE_MULTI + text "Texture Detail:" + cvar "r_picmip" + cvarFloatList { "Low" 2 "Normal" 1 "High" 0 } + rect 99 242 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .333 + forecolor 1 1 1 1 + visible 0 + action { uiScript glCustom } + } + + itemDef { + name graphics + group grpSystem + type ITEM_TYPE_MULTI + text "Texture Quality:" + cvar "r_texturebits" + cvarFloatList { "Default" 0 "16 bit" 16 "32 bit" 32 } + rect 99 269 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .333 + forecolor 1 1 1 1 + visible 0 + } + + itemDef { + name graphics + group grpSystem + type ITEM_TYPE_MULTI + text "Texture Filter:" + cvar "r_texturemode" + cvarStrList { "Bilinear", "GL_LINEAR_MIPMAP_NEAREST", "Trilinear", "GL_LINEAR_MIPMAP_LINEAR" } + rect 99 294 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .333 + forecolor 1 1 1 1 + visible 0 + action { uiScript glCustom } + } + itemDef { + name graphics + group grpSystem + type ITEM_TYPE_YESNO + text "Compress Textures:" + cvar "r_ext_compressed_textures" + rect 99 319 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .333 + forecolor 1 1 1 1 + visible 0 + action { uiScript glCustom } + } + +itemDef { + name graphics + text "Apply" + type 1 + group grpSystem + textscale .3 + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + rect 181 357 100 26 + textalign 1 + textalignx 50 + textaligny 20 + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + visible 1 + action { play "sound/misc/kcaction.wav" ; + open vid_restart_popmenu } + mouseEnter { setitemcolor graphics backcolor .1 .37 .1 1 } + mouseExit { setitemcolor graphics backcolor .37 .1 .1 1 } + } + + itemDef { + name graphics + group grpSystem + style WINDOW_STYLE_SHADER + background "ui/assets/framebutton.tga" + rect 181 357 100 26 + visible 1 + decoration + } + + itemDef { + name graphics + group grpSystem + style WINDOW_STYLE_SHADER + background "ui/assets/leftbutton.tga" + rect 169 357 13 26 + visible 1 + decoration + } + + itemDef { + name graphics + group grpSystem + style WINDOW_STYLE_SHADER + background "ui/assets/rightbutton.tga" + rect 280 357 13 26 + visible 1 + decoration + } + + + + + +itemDef { + name ctr_driver + text "Driver Info" + type 1 + textscale .3 + group grpSystembutton + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + rect 181 395 100 26 + textalign 1 + textalignx 50 + textaligny 20 + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + visible 1 + action { play "sound/misc/kcaction.wav" ; + hide grpSystem ; show driver } + mouseEnter { show message_driver ; setitemcolor ctr_driver backcolor .1 .37 .1 1 } + mouseExit { hide message_driver ; setitemcolor ctr_driver backcolor .37 .1 .1 1 } + } + +itemDef { + name ctr_driver + style WINDOW_STYLE_SHADER + background "ui/assets/framebutton.tga" + rect 181 395 100 26 + visible 1 + decoration + } + +itemDef { + name ctr_driver + style WINDOW_STYLE_SHADER + background "ui/assets/leftbutton.tga" + rect 169 395 13 26 + visible 1 + decoration + } + +itemDef { + name ctr_driver + style WINDOW_STYLE_SHADER + background "ui/assets/rightbutton.tga" + rect 280 395 13 26 + visible 1 + decoration + } + + itemDef { + name driver + group grpSystem + rect 0 32 454 256 + text "Driver Information" + textalign 1 + textscale .333 + textalignx 227 + textaligny 23 + forecolor 1 1 1 1 + visible 0 + decoration + } + + itemDef { + name driver + group grpSystem + rect 10 70 400 300 + ownerdraw UI_GLINFO + textalign 0 + textalignx 0 + textaligny 23 + textscale .25 + forecolor 1 1 1 1 + visible 0 + decoration + style 1 + + } + + + +itemDef { + name ctr_other + text "Other" + type 1 + textscale .3 + group grpSystembutton + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + rect 306 395 100 26 + textalign 1 + textalignx 50 + textaligny 20 + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + visible 1 + action { play "sound/misc/kcaction.wav" ; + hide grpSystem ; show other } + mouseEnter { show message_other ; setitemcolor ctr_other backcolor .1 .37 .1 1 } + mouseExit { hide message_other ; setitemcolor ctr_other backcolor .37 .1 .1 1} + } + +itemDef { + name ctr_other + style WINDOW_STYLE_SHADER + background "ui/assets/framebutton.tga" + rect 306 395 100 26 + visible 1 + decoration + } + +itemDef { + name ctr_other + style WINDOW_STYLE_SHADER + background "ui/assets/leftbutton.tga" + rect 294 395 13 26 + visible 1 + decoration + } + +itemDef { + name ctr_other + style WINDOW_STYLE_SHADER + background "ui/assets/rightbutton.tga" + rect 405 395 13 26 + visible 1 + decoration + } + +itemDef { + name other + group grpSystem + rect 2 4 439 125 + style WINDOW_STYLE_FILLED + border 1 + bordercolor .5 .5 .5 .5 + forecolor 1 1 1 1 + backcolor 0 0 0 .25 + visible 0 + decoration +} + +itemDef { + name other + group grpSystem + rect 2 131 439 150 + style WINDOW_STYLE_FILLED + border 1 + bordercolor .5 .5 .5 .5 + forecolor 1 1 1 1 + backcolor 0 0 0 .25 + visible 0 + decoration +} +itemDef { + name other + group grpSystem + rect 2 283 439 100 + style WINDOW_STYLE_FILLED + border 1 + bordercolor .5 .5 .5 .5 + forecolor 1 1 1 1 + backcolor 0 0 0 .25 + visible 0 + decoration +} +itemDef { + name other + group grpSystem + style 1 + text "Display" + rect 163 8 128 20 + textalign ITEM_ALIGN_CENTER + textalignx 64 + textaligny 20 + textscale .3 + forecolor .4 .4 .65 1 + visible 0 + decoration + } + + itemDef { + name other + group grpSystem + type ITEM_TYPE_SLIDER + text "Brightness:" + cvarfloat "r_gamma" 1 0.5 2 + rect 99 52 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .333 + forecolor 1 1 1 1 + visible 0 + } + + itemDef { + name other + group grpSystem + type ITEM_TYPE_SLIDER + text "Screen Size:" + cvarfloat "cg_viewsize" 100 30 100 + rect 99 79 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .333 + forecolor 1 1 1 1 + visible 0 + } + +itemDef { + name other + group grpSystem + style 1 + text "Sound" + rect 163 135 128 20 + textalign ITEM_ALIGN_CENTER + textalignx 64 + textaligny 20 + textscale .333 + forecolor .4 .4 .65 1 + visible 0 + decoration + } + + itemDef { + name other + group grpSystem + type ITEM_TYPE_SLIDER + text "Effects Volume:" + cvarfloat "s_volume" 0.7 0 1 + rect 99 160 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .333 + forecolor 1 1 1 1 + visible 0 + } + + itemDef { + name other + group grpSystem + type ITEM_TYPE_SLIDER + text "Music Volume:" + cvarfloat "s_musicvolume" 0.25 0 1 + rect 99 187 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .333 + forecolor 1 1 1 1 + visible 0 + } + + itemDef { + name other + group grpSystem + type ITEM_TYPE_MULTI + text "Sound Quality:" + cvar "s_khz" + cvarFloatList { "22 khz (high)" 22 "11 khz (low)" 11 } + rect 99 214 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .333 + forecolor 1 1 1 1 + visible 0 + } + + itemDef { + name other + group grpSystem + type ITEM_TYPE_YESNO + text "Doppler Sound:" + cvar "s_doppler" + rect 99 241 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .333 + forecolor 1 1 1 1 + visible 0 + } + + + +itemDef { + name other + group grpSystem + style 1 + text "Network" + rect 163 285 128 20 + textalign 1 + textalignx 64 + textaligny 20 + textscale .333 + forecolor .4 .4 .65 1 + visible 0 + decoration + } + + itemDef { + name other + group grpSystem + type ITEM_TYPE_MULTI + text "Net Data Rate:" + cvar "rate" + cvarFloatList { "<=28.8k" 2500 "33.6k" 3000 "56k" 4000 "ISDN" 5000 "LAN/CABLE/xDSl" 25000 } + rect 99 327 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .333 + forecolor 1 1 1 1 + visible 0 + action { uiScript update ui_setRate } + } + + +itemDef { + name fadebox + style WINDOW_STYLE_FILLED + background "ui/assets/fadebox.tga" + forecolor 0 0 0 1 + backcolor 0 0 0 1 + rect 0 0 640 480 + visible 1 + decoration + } + + + + +} + + +} diff --git a/ta_ui/team.menu b/ta_ui/team.menu new file mode 100644 index 00000000..72e569e1 --- /dev/null +++ b/ta_ui/team.menu @@ -0,0 +1,306 @@ +#include "ui/menudef.h" + +// botselection menu +{ + menuDef { + name "teamMenu" + fullScreen MENU_FALSE + visible MENU_FALSE + rect 5 200 80 132 + style WINDOW_STYLE_FILLED + backcolor 0 0 0.8 .25 + border WINDOW_BORDER_FULL + bordersize 1 + bordercolor .5 .5 1 1 + + itemDef { + name Possess + text "Possess" + textaligny 10 + textalign 0 + rect 5 5 75 10 + visible 1 + textscale 0.22 + mouseEnter { hide highlight ; show pbar } + + } + itemDef { + name "pbar" + group "highlight" + style WINDOW_STYLE_FILLED + rect 0 5 79 13 + visible 0 + backcolor 0.8 0.8 0.8 0.3 + decoration + } + itemDef { + name Follow + text "Follow" + textaligny 10 + textalign 0 + rect 5 17 75 10 + visible 1 + textscale 0.22 + mouseEnter { hide highlight ; show fbar } + } + itemDef { + name "fbar" + group "highlight" + style WINDOW_STYLE_FILLED + rect 0 17 79 13 + visible 0 + backcolor 0.8 0.8 0.8 0.3 + decoration + } + itemDef { + name "Go To" + text "Go To" + textaligny 10 + textalign 0 + rect 5 29 75 10 + visible 1 + textscale 0.22 + mouseEnter { hide highlight ; show gbar } + } + itemDef { + name "gbar" + group "highlight" + style WINDOW_STYLE_FILLED + rect 0 29 79 13 + visible 0 + backcolor 0.8 0.8 0.8 0.3 + decoration + } + itemDef { + name "Get" + text "Get" + textaligny 10 + textalign 0 + rect 5 41 75 10 + visible 1 + textscale 0.22 + mouseEnter { hide highlight ; show g2bar } + action { open getMenu } + } + itemDef { + name "g2bar" + group "highlight" + style WINDOW_STYLE_FILLED + rect 0 41 79 13 + visible 0 + backcolor 0.8 0.8 0.8 0.3 + decoration + } + itemDef { + name "Patrol From" + text "Patrol From" + textaligny 10 + textalign 0 + rect 5 53 75 10 + visible 1 + textscale 0.22 + mouseEnter { hide highlight ; show p2bar } + } + itemDef { + name "p2bar" + group "highlight" + style WINDOW_STYLE_FILLED + rect 0 53 79 13 + visible 0 + backcolor 0.8 0.8 0.8 0.3 + decoration + } + itemDef { + name "Patrol To" + text "Patrol To" + textaligny 10 + textalign 0 + rect 5 65 75 10 + visible 1 + textscale 0.22 + mouseEnter { hide highlight ; show p3bar } + } + itemDef { + name "p3bar" + group "highlight" + style WINDOW_STYLE_FILLED + rect 0 65 79 13 + visible 0 + backcolor 0.8 0.8 0.8 0.3 + decoration + } + itemDef { + name "Camp Near" + text "Camp Near" + textaligny 10 + textalign 0 + rect 5 77 75 10 + visible 1 + textscale 0.22 + mouseEnter { hide highlight ; show cbar } + } + itemDef { + name "cbar" + group "highlight" + style WINDOW_STYLE_FILLED + rect 0 75 79 13 + visible 0 + backcolor 0.8 0.8 0.8 0.3 + decoration + } + itemDef { + name "Defend" + text "Defend" + textaligny 10 + textalign 0 + rect 5 89 75 10 + visible 1 + textscale 0.22 + mouseEnter { hide highlight ; show dbar } + } + itemDef { + name "dbar" + group "highlight" + style WINDOW_STYLE_FILLED + rect 0 89 79 13 + visible 0 + backcolor 0.8 0.8 0.8 0.3 + decoration + } + itemDef { + name "Attack" + text "Attack" + textaligny 10 + textalign 0 + rect 5 101 75 10 + visible 1 + textscale 0.22 + mouseEnter { hide highlight ; show abar } + } + itemDef { + name "abar" + group "highlight" + style WINDOW_STYLE_FILLED + rect 0 101 79 13 + visible 0 + backcolor 0.8 0.8 0.8 0.3 + decoration + } + itemDef { + name "Drop Command" + text "Drop Command" + textaligny 10 + textalign 0 + rect 5 113 75 10 + visible 1 + textscale 0.22 + mouseEnter { hide highlight ; show dcbar } + } + itemDef { + name "dcbar" + group "highlight" + style WINDOW_STYLE_FILLED + rect 0 113 79 13 + visible 0 + backcolor 0.8 0.8 0.8 0.3 + decoration + } + } + + menuDef { + name "getMenu" + fullScreen MENU_FALSE + visible MENU_FALSE + rect 86 238 85 35 + style WINDOW_STYLE_FILLED + backcolor 0 0 0.8 .25 + border WINDOW_BORDER_FULL + bordersize 1 + bordercolor .5 .5 1 1 + + itemDef { + name "Enemy Flag" + text "Enemy Flag" + textaligny 10 + textalign 0 + rect 5 3 80 10 + visible 1 + textscale 0.22 + mouseEnter { hide highlight2 ; show efbar } + action { close getMenu ; close teamMenu ; orders get flag } + + } + itemDef { + name "efbar" + group "highlight2" + style WINDOW_STYLE_FILLED + rect 0 3 84 13 + visible 0 + backcolor 0.8 0.8 0.8 0.3 + decoration + } + itemDef { + name "Rocket Launcher" + text "Rocket Launcher" + textaligny 10 + textalign 0 + rect 5 17 80 10 + visible 1 + textscale 0.22 + mouseEnter { hide highlight2 ; show rlbar } + action { close getMenu ; close teamMenu ; orders get rocketlauncher } + + } + itemDef { + name "rlbar" + group "highlight2" + style WINDOW_STYLE_FILLED + rect 0 17 84 13 + visible 0 + backcolor 0.8 0.8 0.8 0.3 + decoration + } + } + + menuDef { + name "voiceMenu" + fullScreen MENU_FALSE + visible MENU_FALSE + rect 5 25 40 40 + style WINDOW_STYLE_SHADER + background "console" + //backcolor 0 0 0.5 0.5 + border WINDOW_BORDER_FULL + bordersize 1 + bordercolor .5 .5 .5 1 + + itemDef { + name "b" + rect 2 2 33 33 + visible 1 + decoration + ownerdraw CG_SELECTEDPLAYER_HEAD + } + + } + + menuDef { + name "voteMenu" + fullScreen MENU_FALSE + visible MENU_FALSE + rect 5 25 40 40 + style WINDOW_STYLE_SHADER + background "textures/base_wall/comp3" + backcolor 0 0 0.5 0.5 + border WINDOW_BORDER_FULL + bordersize 1 + bordercolor 0 1 0 1 + + } + + + + +} + + diff --git a/ta_ui/teamscore.menu b/ta_ui/teamscore.menu new file mode 100644 index 00000000..daf18409 --- /dev/null +++ b/ta_ui/teamscore.menu @@ -0,0 +1,512 @@ +#include "ui/menudef.h" + +{ +\\ score_menu \\ + + menuDef { + name "teamscore_menu" + visible 0 + fullscreen 0 + rect 0 0 640 480 + focusColor 1 .75 0 1 + style 0 + border 1 + + +// GAMETYPE BAR // + + +itemDef { + name gameStatusWindow + style 4 + rect 14 40 612 35 + border 1 + bordercolor 1 1 1 1 + visible 1 + decoration + } + + + + +itemDef { + name score + ownerdraw CG_KILLER + textscale .4 + style 0 + rect 0 40 640 27 + textalignx 0 + textaligny 27 + textalign 1 + backcolor 0 0 0 0 + forecolor 1 1 1 1 + visible 1 + decoration + } + + + +// TEAM NAME // + +itemDef { + name teamNameWindow + rect 14 78 612 30 + style WINDOW_STYLE_FILLED + border 1 + bordercolor .5 .5 .5 1 + forecolor 1 1 1 1 + backcolor 0 0 0 .5 + visible 1 + decoration + } +itemDef { + name score + text " " + ownerdraw CG_GAME_STATUS + textscale .3 + style 0 + rect 0 78 640 23 + textalignx 320 + textaligny 0 + textalign 1 + backcolor 0 0 0 0 + forecolor 1 1 1 1 + visible 1 + decoration + } + + +itemDef { + name redteamname + ownerdraw CG_RED_NAME + textalign 0 + textscale .3 + rect 20 78 306 23 + forecolor 1 0 0 1 + decoration + visible 1 + } + +itemDef { + name blueteamname + ownerdraw CG_BLUE_NAME + text " " + textalign 2 + textscale .3 + rect 600 78 0 23 + forecolor 0 0 1 1 + decoration + visible 1 + } + + +// TEAM BARS // + +itemDef { + name leftteambar + rect 14 112 307 25 + style WINDOW_STYLE_FILLED + border 1 + bordercolor 1 1 1 1 + forecolor 1 1 1 1 + backcolor 1 0 0 1 + visible 1 + decoration + } + +itemDef { + name rightteambar + rect 320 112 306 25 + style WINDOW_STYLE_FILLED + border 1 + bordercolor 1 1 1 1 + forecolor 1 1 1 1 + backcolor 0 0 1 1 + visible 1 + decoration + } + +// TEAM HEADINGS // + +itemDef { + name leftteamheadings + text "Status Name Score Time Ping" + textscale .25 + style 0 + rect 25 112 128 30 + textalign 0 + textalignx 0 // x alignment point for text + // use it to offset left/right text from the edge + // or to center the text on a different point + textaligny 18 + backcolor 0 0 0 0 + forecolor 1 .75 0 1 + decoration + visible 1 + } +itemDef { + name rightteamheadings + text "Status Name Score Time Ping" + textscale .25 + style 0 + rect 331 112 128 30 + textalign 0 + textalignx 0 // x alignment point for text + // use it to offset left/right text from the edge + // or to center the text on a different point + textaligny 18 + backcolor 0 0 0 0 + forecolor 1 .75 0 1 + decoration + visible 1 + } + + + + +// GRADIENT BACKGROUNDS // + + +itemDef { + name window + rect 320 142 1 220 + style WINDOW_STYLE_FILLED + border 1 + bordercolor .5 .5 .5 1 + forecolor 1 1 1 1 + backcolor 0 0 0 1 + visible 1 + decoration + } + +itemDef { + name window + rect 300 142 1 220 + style WINDOW_STYLE_FILLED + border 1 + bordercolor .5 .5 .5 1 + visible 1 + decoration + } + +itemDef { + name window + rect 606 142 1 220 + style WINDOW_STYLE_FILLED + border 1 + bordercolor .5 .5 .5 1 + visible 1 + decoration + } +itemDef { + name redlogo + style WINDOW_STYLE_SHADER + background "textures/ctf2/redteam01.tga" + rect 110 189 128 128 + forecolor .75 0 0 0.5 + visible 1 + decoration + } +itemDef { + name bluelogo + style WINDOW_STYLE_SHADER + background "textures/ctf2/blueteam01" + rect 416 189 128 128 + forecolor 0 0 .75 0.5 + visible 1 + decoration + } + +itemDef { + name leftgrad + style WINDOW_STYLE_SHADER + background "ui/assets/halfgradleft.tga" + rect 14 142 306 222 + forecolor .75 0 0 0.5 + visible 1 + decoration + } + +itemDef { + name rightgrad + style WINDOW_STYLE_SHADER + background "ui/assets/halfgradright.tga" + rect 320 142 306 222 + forecolor 0 0 .75 0.5 + visible 1 + decoration + } + + +// LIST // + +itemDef { + name leftlist + rect 14 142 306 222 + forecolor .75 .75 .75 1 + visible 1 + type ITEM_TYPE_LISTBOX + elementwidth 135 + elementheight 20 + textscale .25 + elementtype LISTBOX_TEXT + feeder FEEDER_REDTEAM_LIST + notselectable + columns 7 2 12 12 18 12 12 34 20 20 78 75 16 183 20 20 221 20 20 251 10 10 + } + + + +itemDef { + name rightlist + rect 320 142 306 222 + forecolor 1 1 1 1 + visible 1 + type ITEM_TYPE_LISTBOX + elementwidth 135 + elementheight 20 + textscale .25 + elementtype LISTBOX_TEXT + feeder FEEDER_BLUETEAM_LIST + notselectable + columns 7 2 12 12 18 12 12 34 20 20 78 75 16 183 20 20 221 20 20 251 10 10 + } + + + + +// PLAYER LIST BORDER // + + + +itemDef { + name window + rect 14 141 612 221 + style WINDOW_STYLE_EMPTY + border 1 + bordercolor .5 .5 .5 1 + forecolor 1 1 1 1 + backcolor 0 0 0 .5 + visible 1 + decoration + } + + + + + + + + + +// spectators // + + +itemDef { + name window + rect 14 414 612 24 + style WINDOW_STYLE_FILLED + border 1 + bordercolor .5 .5 .5 1 + forecolor 1 1 1 .7 + backcolor 0 0 0 .5 + textscale .33 + visible 1 + decoration + } + +itemDef { + name window + text "Spectating:" + textaligny 20 + rect 19 414 82 24 + style WINDOW_STYLE_FILLED + forecolor 1 1 1 1 + textscale .33 + textalignx 3 + visible 1 + decoration + } + +itemDef { + name window + rect 100 414 520 24 + style WINDOW_STYLE_FILLED + forecolor 1 1 1 1 + textscale .33 + visible 1 + ownerdraw CG_SPECTATORS + decoration + } + + + + + +// AWARDS // + + +itemDef { + name window + rect 14 364 612 48 + style WINDOW_STYLE_FILLED + border 1 + bordercolor .5 .5 .5 1 + forecolor 1 1 1 1 + backcolor 0 0 0 .5 + visible 1 + decoration + } + +itemdef { + name medal_accuracy + ownerdraw CG_ACCURACY + rect 43 368 32 32 + background "ui/assets/medal_accuracy.tga" + forecolor 1 1 1 .5 + visible 1 + decoration + textscale 0.25 + } + +itemdef { + name medal_assist + ownerdraw CG_ASSISTS + rect 130 368 32 32 + background "ui/assets/medal_assist.tga" + forecolor 1 1 1 .5 + visible 1 + decoration + textscale 0.25 + } + +itemdef { + name medal_defend + ownerdraw CG_DEFEND + rect 227 368 32 32 + background "ui/assets/medal_defend.tga" + forecolor 1 1 1 .5 + visible 1 + decoration + textscale 0.25 + } + +itemdef { + name medal_excellent + ownerdraw CG_EXCELLENT + rect 314 368 32 32 + background "ui/assets/medal_excellent.tga" + forecolor 1 1 1 .5 + visible 1 + decoration + textscale 0.25 + } + +itemdef { + name medal_gauntlet + ownerdraw CG_GAUNTLET + rect 391 368 32 32 + background "ui/assets/medal_gauntlet.tga" + forecolor 1 1 1 .5 + visible 1 + decoration + textscale 0.25 + } + +itemdef { + name medal_impressive + ownerdraw CG_IMPRESSIVE + rect 478 368 32 32 + background "ui/assets/medal_impressive.tga" + forecolor 1 1 1 .5 + visible 1 + decoration + textscale 0.25 + } + +itemdef { + name medal_capture_team + ownerdraw CG_CAPTURES + rect 565 368 32 32 + background "ui/assets/medal_capture.tga" + forecolor 1 1 1 .5 + visible 1 + decoration + textscale 0.25 + } + +// GAMETYPE // + +itemDef { + name window + rect 14 440 612 24 + style WINDOW_STYLE_FILLED + border 1 + bordercolor .5 .5 .5 1 + forecolor 1 1 1 .7 + backcolor 0 0 0 .5 + visible 1 + decoration + } + +itemDef { + name window + rect 220 440 200 24 + style WINDOW_STYLE_EMPTY + border 1 + bordercolor .5 .5 .5 1 + visible 1 + decoration + } + +itemDef { + name gametype + ownerdraw CG_GAME_TYPE + textalign 0 + textscale .3 + rect 18 440 50 20 + forecolor 1 1 1 1 + textaligny 0 + textalignx 0 + decoration + visible 1 + } + +itemdef { + name playername + text "Use Score Scroll Keys" + rect 225 440 256 24 + forecolor 1 .75 0 1 + textalignx 10 + textaligny 20 + visible 1 + textalign 0 + decoration + textscale 0.333 + } + + +itemdef { + name playerscore + text "Score:" + rect 430 440 40 21 + textalignx 0 + textaligny 21 + visible 1 + textalign 0 + forecolor 1 1 1 1 + textscale .3 + ownerdraw CG_PLAYER_SCORE + decoration + } + + + + + + + +} + + +} diff --git a/ta_ui/testhud.menu b/ta_ui/testhud.menu new file mode 100644 index 00000000..8a6e10cb --- /dev/null +++ b/ta_ui/testhud.menu @@ -0,0 +1,1052 @@ +#include "ui/menudef.h" + +// team menu +// +// defines from ui_shared.h + +{ + assetGlobalDef { + font "fonts/impact.ttf" // font + cursor "menu/art/3_cursor2" // cursor + gradientBar "ui/assets/gradientbar2.tga" // gradient bar + fadeClamp 1.0 // sets the fadeup alpha + fadeCycle 1 // how often fade happens in milliseconds + fadeAmount 0.1 // amount to adjust alpha per cycle + + shadowX 5 // x amount for shadow offset + shadowY 5 // y amount for shadow offset + shadowColor 0.1 0.1 0.1 0.25 // shadow color + + //hudShader "ui/assets/hudbar.tga" // + + } + + +// POWERUP AREA // + +menuDef { + name "powerup area" + fullScreen MENU_FALSE + visible MENU_TRUE + rect 570 220 50 100 + + itemDef { + name "powerupArea" + rect 0 0 40 40 + visible 1 + decoration + ownerdraw CG_AREA_POWERUP + special 4 // spacing + align HUD_VERTICAL + } + + +} + + + +// SELECTED PLAYER // + +menuDef { + name "SelectedPlayer" + fullScreen MENU_FALSE + visible 1 + rect 2 363 180 64 + + + itemDef { + name "b" + rect 3 4 162 57 + style 4 + visible 1 + bordercolor 0 0 0 0 + backcolor 0 0 0 0 + mouseEnter { setcolor bordercolor 1 1 1 .5 ; setteamcolor ; show altSelectedPlayerRect } + mouseExit { setcolor backcolor 0 0 0 0 ; setcolor bordercolor 0 0 0 0 ; hide altSelectedPlayerRect } + action { open teamMenu } + } + + + + itemDef { + name "altSelectedPlayerRect" + rect 3 4 162 57 + style 4 + border 1 + bordersize 1 + visible 0 + bordercolor 1 1 1 1 + backcolor 0 0 0 0 + } + + + itemDef { + name "b" + rect 4 3 32 32 + visible 1 + action { open teamMenu } + ownerdraw CG_SELECTEDPLAYER_HEAD + } + + itemDef { + name "b" + rect 50 35 22 11 + visible 1 + style 3 + decoration + background "ui/assets/statusbar/selectedhealth.tga" + addColorRange -999 25 1 0 0 1 + addColorRange 26 100 1 .75 0 1 + addColorRange 101 999 1 1 1 1 + ownerdraw CG_SELECTEDPLAYER_HEALTH + } + + itemDef { + name "b" + rect 50 48 22 11 + visible 1 + style 3 + decoration + background "ui/assets/statusbar/selectedarmor.tga" + addColorRange -999 25 1 0 0 1 + addColorRange 26 100 .3 .65 0 1 + addColorRange 101 999 1 1 1 1 + ownerdraw CG_SELECTEDPLAYER_ARMOR + } + + itemDef { + name "b" + rect 75 48 22 11 + visible 1 + style 1 + textscale .25 + decoration + addColorRange -999 25 1 0 0 1 + addColorRange 26 100 .3 .65 0 1 + addColorRange 101 999 1 1 1 1 + ownerdraw CG_SELECTEDPLAYER_ARMOR + } +itemDef { + name "b" + rect 75 35 22 11 + visible 1 + style 1 + textscale .25 + decoration + addColorRange -999 25 1 0 0 1 + addColorRange 26 100 1 .75 0 1 + addColorRange 101 999 1 1 1 1 + ownerdraw CG_SELECTEDPLAYER_HEALTH + } + + + + itemDef { + name "b" + rect 35 3 35 15 + textscale 0.25 + forecolor 1 1 1 1 + visible 1 + decoration + ownerdraw CG_SELECTEDPLAYER_NAME + } + + itemDef { + name "b" + rect 35 15 45 15 + textscale 0.25 + forecolor 1 1 1 1 + visible 1 + decoration + ownerdraw CG_SELECTEDPLAYER_LOCATION + } + + itemDef { + name "b" + rect 7 40 16 16 + visible 1 + decoration + ownerdraw CG_SELECTEDPLAYER_STATUS + } + + itemDef { + name "b" + rect 30 40 16 16 + visible 1 + decoration + ownerdraw CG_SELECTEDPLAYER_POWERUP + } + + itemDef { + name "b" + rect 100 33 24 24 + visible 1 + decoration + ownerdraw CG_SELECTEDPLAYER_WEAPON + } +itemDef { + name "sback" + rect 0 0 180 64 + visible 1 + style 3 + forecolor 1 1 1 .25 + decoration + background "ui/assets/statusbar6b.tga" + } + + +} + + + +// PLAYER STATUS // + +menuDef { + name "playerStatus" + fullScreen MENU_FALSE + visible MENU_TRUE + rect 0 416 128 64 + + itemDef { + name "playerStatusRect" + rect 12 13 112 48 + visible 1 + style 4 + //background "ui/assets/hudback.tga" + border 1 + bordersize 1 + mouseEnter { show playerStatusRectAlt } + mouseExit { hide playerStatusRectAlt } + +} + + itemDef { + name "playerStatusRectAlt" + rect 12 13 112 48 + visible 0 + style 1 + border 1 + bordersize 1 + bordercolor 1 1 1 1 + backcolor 0 0 0 .0 +} + + itemDef { + name "playeritem" + rect 27 23 24 24 + visible 1 + decoration + ownerdraw CG_PLAYER_ITEM + } + + itemDef { + name "CTFPOWERUP" + rect 55 23 24 24 + visible 1 + decoration + ownerdraw CG_CTF_POWERUP + + + } + + itemDef { + name "flag" + rect 85 15 40 40 + visible 1 + decoration + ownerdraw CG_PLAYER_HASFLAG + } + + itemDef { + name "skulls" + rect 75 8 45 40 + visible 1 + decoration + textscale 0.5 + ownerdraw CG_HARVESTER_SKULLS + } + + + + itemDef { + name "statusscreen" + visible 1 + style 3 + background "menuscreen2" + rect 12 13 112 48 + border 1 + bordersize 1 + bordercolor 1 1 1 1 + backcolor 0 0 0 0 + } + + +itemDef { + name "sback" + rect 0 0 128 64 + visible 1 + decoration + style 3 + background "ui/assets/statusbar1b.tga" + } + + } + + + + + +// AMMO // + +menuDef { + name "Ammo" + fullScreen MENU_FALSE + visible MENU_TRUE + rect 129 416 128 64 + + + itemDef { + name "ammoRect" + visible 1 + style 4 + rect 2 13 122 48 + border 1 + bordersize 1 + mouseEnter { show ammoRectAlt } + mouseExit { hide ammoRectAlt } + } + + itemDef { + name "ammoRectAlt" + visible 0 + style 1 + rect 2 13 122 48 + border 1 + bordersize 1 + bordercolor 1 1 1 1 + backcolor 0 0 0 0 + } + + + itemDef { + name "a" + rect 85 25 30 30 + visible 1 + decoration + ownerdraw CG_PLAYER_AMMO_ICON2D + } + + itemDef { + name "a" + rect 10 43 63 12 + visible 1 + decoration + textscale .75 + forecolor 1 1 1 1 + ownerdraw CG_PLAYER_AMMO_VALUE + addColorRange -999 5 1 0 0 1 + addColorRange 6 999 .3 .75 0 .75 + } + + itemDef { + name "statusscreen" + visible 1 + style 3 + background "menuscreen2" + rect 2 13 122 48 + border 1 + bordersize 1 + bordercolor 1 1 1 1 + backcolor 0 0 0 0 + } + +itemDef { + name "sback" + rect 0 0 128 64 + visible 1 + decoration + style 3 + background "ui/assets/statusbar2b.tga" + } + +} + + + + + + +// PLAYER // + +menuDef { + name "Player" + fullScreen MENU_FALSE + visible MENU_TRUE + rect 257 416 128 64 + + + itemDef { + name "playerRect" + rect 2 2 122 60 + style 4 + visible 1 + border 1 + bordersize 1 + mouseEnter { show playerRectAlt } + mouseExit { hide playerRectAlt } + } + + itemDef { + name "playerRectAlt" + rect 2 2 122 60 + style 1 + visible 0 + border 1 + bordersize 1 + bordercolor 1 1 1 1 + backcolor 0 0 0 0 + } + + + itemDef { + name "b" + rect 12 42 63 12 + visible 1 + decoration + forecolor 1 1 1 1 + textscale .8 + ownerdraw CG_PLAYER_HEALTH + addColorRange -999 25 1 0 0 1 + addColorRange 26 100 .3 .75 0 .75 + addColorRange 101 999 1 1 1 .75 + } + + itemDef { + name "statusscreen" + visible 1 + style 3 + background "menuscreen2" + rect 2 2 122 60 + border 1 + bordersize 1 + bordercolor 1 1 1 1 + backcolor 0 0 0 0 + } + + +itemDef { + name "sback" + rect 0 0 128 64 + visible 1 + decoration + style 3 + background "ui/assets/statusbar3b.tga" + } + + itemDef { + name "b" + rect 70 10 45 45 + visible 1 + decoration + ownerdraw CG_PLAYER_HEAD + } + } + + + + + + + +// ARMOR // + +menuDef { + name "Armor" + fullScreen MENU_FALSE + visible MENU_TRUE + rect 385 416 128 64 + + + itemDef { + name "armorRect" + rect 2 13 122 48 + visible 1 + style 4 + border 1 + bordersize 1 + mouseEnter { show armorRectAlt } + mouseExit { hide armorRectAlt } + } + + itemDef { + name "armorRectAlt" + rect 2 13 122 48 + visible 0 + style 1 + border 1 + bordersize 1 + bordercolor 1 1 1 1 + backcolor 0 0 0 0 + } + + itemDef { + name "armor" + rect 10 7 30 30 + visible 1 + decoration + ownerdraw CG_PLAYER_ARMOR_ICON2D + } + + itemDef { + name "armor2" + rect 55 43 63 12 + visible 1 + decoration + textscale .75 + ownerdraw CG_PLAYER_ARMOR_VALUE + addColorRange -999 25 .67 0 0 1 + addColorRange 26 100 .3 .75 0 .75 + addColorRange 101 999 .75 .75 .75 .75 + } + + itemDef { + name "statusscreen" + visible 1 + style 3 + background "menuscreen2" + rect 2 13 122 48 + border 1 + bordersize 1 + bordercolor 1 1 1 1 + backcolor 0 0 0 0 + } + + +itemDef { + name "sback" + rect 0 0 128 64 + visible 1 + decoration + style 3 + background "ui/assets/statusbar4b.tga" + } + } + + + + + + + +// LOCATION // + +menuDef { + name "location" + fullScreen MENU_FALSE + visible MENU_TRUE + rect 513 405 128 22 + + + itemDef { + name "locationRect" + visible MENU_TRUE + rect 0 0 128 22 + style 4 + } + + + itemDef { + name "playerlocation" + rect 10 2 16 16 + visible 1 + decoration + textscale .25 + ownerdraw CG_PLAYER_LOCATION + } +} + +// PLAYERSCORE // + +menuDef { + name "PlayerScore" + fullScreen MENU_FALSE + visible MENU_TRUE + rect 513 416 128 64 + + + itemDef { + name "playerScoreRect" + visible 1 + rect 2 13 124 48 + style 4 + border 1 + bordersize 1 + mouseEnter { show playerScoreRectAlt } + mouseExit { hide playerScoreRectAlt } + + } + + itemDef { + name "playerScoreRectAlt" + visible 0 + rect 2 13 124 48 + style 1 + border 1 + bordersize 1 + bordercolor 1 1 1 1 + backcolor 0 0 0 0 + } + + + itemDef { + name "playerStatus" + rect 10 42 16 16 + visible 1 + decoration + ownerdraw CG_PLAYER_STATUS + } + + itemDef { + name "playerScore" + rect 0 44 125 12 + visible 1 + decoration + forecolor 1 1 1 1 + textscale .30 + ownerdraw CG_PLAYER_SCORE + } + + itemDef { + name "f" + rect 10 22 16 16 + visible 1 + bordercolor 1 1 1 .75 + decoration + style 3 + background "ui/assets/bluechip.tga" + } + + itemDef { + name "f" + rect 10 22 16 16 + visible 1 + decoration + ownerdraw CG_BLUE_FLAGSTATUS + } +itemDef { + name "r" + rect 16 22 30 15 + visible 1 + decoration + forecolor 0 0 0 1 + textscale 0.25 + ownerdraw CG_BLUE_SCORE + } + + itemDef { + name "r" + rect 15 21 30 15 + visible 1 + decoration + forecolor 1 1 1 1 + textscale 0.25 + ownerdraw CG_BLUE_SCORE + } + + itemDef { + name "f" + rect 72 22 16 16 + visible 1 + bordercolor 1 1 1 1 + decoration + style 3 + background "ui/assets/redchip.tga" + } + + itemDef { + name "f" + rect 72 22 16 16 + visible 1 + decoration + ownerdraw CG_RED_FLAGSTATUS + } +itemDef { + name "r" + rect 83 22 30 15 + visible 1 + decoration + forecolor 0 0 0 1 + textscale 0.25 + ownerdraw CG_RED_SCORE + } + + itemDef { + name "r" + rect 82 21 30 15 + visible 1 + decoration + forecolor 1 1 1 1 + textscale 0.25 + ownerdraw CG_RED_SCORE + } + + + itemDef { + name "statusscreen" + visible 1 + style 3 + background "menuscreen2" + rect 2 13 124 48 + border 1 + bordersize 1 + bordercolor 1 1 1 1 + backcolor 0 0 0 0 + } + + +itemDef { + name "sback" + rect 0 0 128 64 + visible 1 + decoration + style 3 + background "ui/assets/statusbar5b.tga" + } + + } +} + +// SCORESTATUS // + +menuDef { + name "ScoreStatus" + fullScreen MENU_FALSE + visible MENU_TRUE + rect 513 428 125 50 + style 4 + //background "ui/assets/hudback.tga" + border 1 + bordersize 1 + bordercolor .5 .5 1 1 + backcolor 0 0 1 .25 + + +itemDef { + name "r" + rect 5 5 30 15 + visible 1 + decoration + forecolor 1 1 1 1 + textscale 0.25 + ownerdraw CG_BLUE_SCORE + } + +itemDef { + name "r" + rect 42 5 30 15 + visible 1 + decoration + forecolor 0 0 1 1 + textscale 0.25 + ownerdraw CG_BLUE_NAME + } + + +itemDef { + name "r" + rect 5 25 30 15 + visible 1 + decoration + forecolor 1 1 1 1 + textscale 0.25 + ownerdraw CG_RED_SCORE + } + + itemDef { + name "r" + rect 42 25 30 15 + visible 1 + decoration + forecolor 1 0 0 1 + textscale 0.25 + ownerdraw CG_RED_NAME + } + } + + + +} + +// Close off other menu options // + +// CROSSHAIR STATUS BAR // + +menuDef { + name "crosshairStatus" + fullScreen MENU_FALSE + visible MENU_TRUE + rect 256 176 128 128 + style 0 + +itemDef { + name "crosshairHealth" + rect 0 0 128 64 + visible 1 + decoration + forecolor 0 0 0 0 + style 3 + ownerdraw CG_PLAYER_HEALTH_VALUE + background "ui/assets/crosshair_health.tga" + addColorRange -999 25 1 0 0 .5 + addColorRange 26 100 1 .75 0 .25 + addColorRange 101 999 1 1 1 .1 + } + + +itemDef { + name "crosshairAmmo" + rect 0 64 64 64 + visible 1 + decoration + style 3 + forecolor 0 0 0 0 + ownerdraw CG_PLAYER_AMMO_VALUE + background "ui/assets/crosshair_ammo.tga" + addColorRange -999 5 1 0 0 .5 + addColorRange 6 999 1 .75 0 .25 + } + +itemDef { + name "crosshairArmor" + rect 64 64 64 64 + visible 1 + decoration + style 3 + forecolor 1 1 1 .25 + forecolor 0 0 0 0 + ownerdraw CG_PLAYER_ARMOR_VALUE + background "ui/assets/crosshair_armor.tga" + addColorRange -999 25 1 0 0 .5 + addColorRange 26 100 1 .75 0 .25 + addColorRange 101 999 1 1 1 .1 + } +} + + + + + + +// MINI_STATUS // + +menuDef { + name "miniPlayerStatus" + fullScreen MENU_FALSE + visible MENU_TRUE + style 0 + rect 1 10 125 30 + style 1 + border 1 + bordersize 1 + bordercolor .5 .5 1 1 + backcolor 0 0 1 .25 + +itemDef { + name "miniAmmoValue" + rect 5 5 25 15 + visible 1 + decoration + textscale .33 + forecolor 1 1 1 1 + ownerdraw CG_PLAYER_AMMO_VALUE + addColorRange -999 5 1 0 0 1 + addColorRange 6 999 1 .75 0 1 + } + + +itemDef { + name "miniHealthValue" + rect 45 5 25 15 + visible 1 + decoration + forecolor 1 1 1 1 + textscale .33 + ownerdraw CG_PLAYER_HEALTH + addColorRange -999 25 1 0 0 1 + addColorRange 26 100 1 .75 0 1 + addColorRange 101 999 1 1 1 1 + } + +itemDef { + name "MiniArmorValue" + rect 90 5 25 15 + visible 1 + decoration + textscale .33 + ownerdraw CG_PLAYER_ARMOR_VALUE + addColorRange -999 25 1 0 0 1 + addColorRange 26 100 1 .75 0 1 + addColorRange 101 999 1 1 1 1 + } +} + +// MINI_CTF_STATUS // + +menuDef { + name "miniCTFStatus" + fullScreen MENU_FALSE + visible MENU_TRUE + style 0 + rect 129 10 125 30 + style 1 + border 1 + bordersize 1 + bordercolor .5 .5 1 1 + backcolor 0 0 1 .25 + +itemDef { + name "miniFlagBlue" + rect 5 5 16 16 + visible 1 + decoration + ownerdraw CG_BLUE_FLAGSTATUS + } + +itemDef { + name "miniBlueScore" + rect 10 5 30 15 + visible 1 + decoration + forecolor 1 1 1 1 + textscale 0.33 + ownerdraw CG_BLUE_SCORE + } + +itemDef { + name "miniFlagRed" + rect 65 5 16 16 + visible 1 + decoration + ownerdraw CG_RED_FLAGSTATUS + } + +itemDef { + name "miniRedScore" + rect 70 5 30 15 + visible 1 + decoration + forecolor 1 1 1 1 + textscale 0.33 + ownerdraw CG_RED_SCORE + } + +} + + +// MINI_SCORE // + +menuDef { + name "miniScore" + fullScreen MENU_FALSE + visible MENU_TRUE + style 0 + rect 257 10 125 30 + style 1 + border 1 + bordersize 1 + bordercolor .5 .5 1 1 + backcolor 0 0 1 .25 + + +itemDef { + name "b" + rect 5 5 16 16 + visible 1 + decoration + ownerdraw CG_SELECTEDPLAYER_STATUS + } + +itemDef { + name "b" + rect 30 5 30 15 + visible 1 + decoration + forecolor 1 1 1 1 + textscale .33 + ownerdraw CG_PLAYER_SCORE + } + +} + + + +// MINI_LOCATION // + + +menuDef { + name "miniLocation" + fullScreen MENU_FALSE + visible MENU_TRUE + style 0 + rect 385 10 125 30 + style 1 + border 1 + bordersize 1 + bordercolor .5 .5 1 1 + backcolor 0 0 1 .25 + + +itemDef { + name "b" + rect 5 5 30 15 + visible 1 + decoration + textscale .33 + ownerdraw CG_PLAYER_LOCATION + } + } + + + +// MINI_ITEM // + + +menuDef { + name "miniItem" + fullScreen MENU_FALSE + visible MENU_TRUE + style 0 + rect 513 10 125 30 + style 1 + border 1 + bordersize 1 + bordercolor .5 .5 1 1 + backcolor 0 0 1 .25 + + +itemDef { + name "b" + rect 5 5 30 30 + visible 1 + decoration + ownerdraw CG_PLAYER_ITEM + } + + +itemDef { + name "b" + rect 5 50 30 30 + visible 1 + decoration + ownerdraw CG_CTF_POWERUP + } + + + } + + + } + + +} + diff --git a/ta_ui/ui.bat b/ta_ui/ui.bat new file mode 100755 index 00000000..7a979cdc --- /dev/null +++ b/ta_ui/ui.bat @@ -0,0 +1,29 @@ +mkdir vm +cd vm + +set cc=lcc -DQ3_VM -S -Wf-target=bytecode -Wf-g -I..\..\cgame -I..\..\game -I..\..\ui %1 + +%cc% ../ui_main.c +@if errorlevel 1 goto quit +%cc% ../../game/bg_misc.c +@if errorlevel 1 goto quit +%cc% ../../game/bg_lib.c +@if errorlevel 1 goto quit +%cc% ../../game/q_math.c +@if errorlevel 1 goto quit +%cc% ../../game/q_shared.c +@if errorlevel 1 goto quit +%cc% ../ui_atoms.c +@if errorlevel 1 goto quit +%cc% ../ui_players.c +@if errorlevel 1 goto quit +%cc% ../ui_util.c +@if errorlevel 1 goto quit +%cc% ../ui_shared.c +@if errorlevel 1 goto quit +%cc% ../ui_gameinfo.c +@if errorlevel 1 goto quit + +q3asm -f ../ui +:quit +cd .. diff --git a/ta_ui/ui.def b/ta_ui/ui.def new file mode 100644 index 00000000..2ee748e7 --- /dev/null +++ b/ta_ui/ui.def @@ -0,0 +1,3 @@ +EXPORTS + vmMain + dllEntry diff --git a/ta_ui/ui.dsp b/ta_ui/ui.dsp new file mode 100644 index 00000000..8a8d8cce --- /dev/null +++ b/ta_ui/ui.dsp @@ -0,0 +1,641 @@ +# Microsoft Developer Studio Project File - Name="ui" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 6.00 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102 + +CFG=ui - Win32 Debug TA +!MESSAGE This is not a valid makefile. To build this project using NMAKE, +!MESSAGE use the Export Makefile command and run +!MESSAGE +!MESSAGE NMAKE /f "ui.mak". +!MESSAGE +!MESSAGE You can specify a configuration when running NMAKE +!MESSAGE by defining the macro CFG on the command line. For example: +!MESSAGE +!MESSAGE NMAKE /f "ui.mak" CFG="ui - Win32 Debug TA" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "ui - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library") +!MESSAGE "ui - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library") +!MESSAGE "ui - Win32 Release TA" (based on "Win32 (x86) Dynamic-Link Library") +!MESSAGE "ui - Win32 Debug TA" (based on "Win32 (x86) Dynamic-Link Library") +!MESSAGE "ui - Win32 vector" (based on "Win32 (x86) Dynamic-Link Library") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName ""$/MissionPack/code/ui", AOBAAAAA" +# PROP Scc_LocalPath "." +CPP=vectorcl +MTL=midl.exe +RSC=rc.exe + +!IF "$(CFG)" == "ui - Win32 Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "Release" +# PROP BASE Intermediate_Dir "Release" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "Release" +# PROP Intermediate_Dir "Release" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "UI_EXPORTS" /YX /FD /c +# ADD CPP /nologo /G6 /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "UI_EXPORTS" /YX /FD /c +# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32 +# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 +# ADD BASE RSC /l 0x409 /d "NDEBUG" +# ADD RSC /l 0x409 /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386 +# ADD LINK32 /nologo /base:"0x40000000" /dll /map /machine:I386 /out:"../Release/uix86_new.dll" + +!ELSEIF "$(CFG)" == "ui - Win32 Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "ui___Win32_Debug" +# PROP BASE Intermediate_Dir "ui___Win32_Debug" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "Debug" +# PROP Intermediate_Dir "Debug" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "UI_EXPORTS" /YX /FD /GZ /c +# ADD CPP /nologo /G5 /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "UI_EXPORTS" /FR /YX /FD /GZ /c +# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32 +# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32 +# ADD BASE RSC /l 0x409 /d "_DEBUG" +# ADD RSC /l 0x409 /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept +# ADD LINK32 /nologo /base:"0x40000000" /dll /pdb:"../Debug/ui.pdb" /map /debug /machine:I386 /out:"../Debug/uix86_new.dll" /pdbtype:sept +# SUBTRACT LINK32 /pdb:none + +!ELSEIF "$(CFG)" == "ui - Win32 Release TA" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "ui___Win32_Release_TA" +# PROP BASE Intermediate_Dir "ui___Win32_Release_TA" +# PROP BASE Ignore_Export_Lib 0 +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "Release_TA" +# PROP Intermediate_Dir "Release_TA" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /G6 /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "UI_EXPORTS" /YX /FD /c +# ADD CPP /nologo /G6 /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "UI_EXPORTS" /YX /FD /c +# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32 +# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 +# ADD BASE RSC /l 0x409 /d "NDEBUG" +# ADD RSC /l 0x409 /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 /nologo /base:"0x40000000" /dll /map /machine:I386 /out:"../Release/uix86.dll" +# ADD LINK32 /nologo /base:"0x40000000" /dll /map /machine:I386 /out:"../Release_TA/uix86.dll" + +!ELSEIF "$(CFG)" == "ui - Win32 Debug TA" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "ui___Win32_Debug_TA" +# PROP BASE Intermediate_Dir "ui___Win32_Debug_TA" +# PROP BASE Ignore_Export_Lib 0 +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "Debug_TA" +# PROP Intermediate_Dir "Debug_TA" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /G5 /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "UI_EXPORTS" /FR /YX /FD /GZ /c +# ADD CPP /nologo /G5 /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "UI_EXPORTS" /D "MISSIONPACK" /FR /YX /FD /GZ /c +# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32 +# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32 +# ADD BASE RSC /l 0x409 /d "_DEBUG" +# ADD RSC /l 0x409 /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 /nologo /base:"0x40000000" /dll /pdb:"../Debug/ui.pdb" /map /debug /machine:I386 /out:"../Debug/uix86_new.dll" /pdbtype:sept +# SUBTRACT BASE LINK32 /pdb:none +# ADD LINK32 /nologo /base:"0x40000000" /dll /pdb:"../Debug/ui.pdb" /map /debug /machine:I386 /out:"../Debug_TA/uix86.dll" /pdbtype:sept +# SUBTRACT LINK32 /pdb:none + +!ELSEIF "$(CFG)" == "ui - Win32 vector" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "ui___Win32_vector" +# PROP BASE Intermediate_Dir "ui___Win32_vector" +# PROP BASE Ignore_Export_Lib 0 +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "ui___Win32_vector" +# PROP Intermediate_Dir "ui___Win32_vector" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /G6 /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "UI_EXPORTS" /YX /FD /c +# ADD CPP /nologo /G6 /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "UI_EXPORTS" /YX /FD /c +# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32 +# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 +# ADD BASE RSC /l 0x409 /d "NDEBUG" +# ADD RSC /l 0x409 /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 /nologo /base:"0x40000000" /dll /map /machine:I386 /out:"../Release_TA/uix86.dll" +# ADD LINK32 /nologo /base:"0x40000000" /dll /map /machine:I386 /out:"../Release_TA/uix86.dll" + +!ENDIF + +# Begin Target + +# Name "ui - Win32 Release" +# Name "ui - Win32 Debug" +# Name "ui - Win32 Release TA" +# Name "ui - Win32 Debug TA" +# Name "ui - Win32 vector" +# Begin Group "Source Files" + +# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" +# Begin Source File + +SOURCE=..\game\bg_lib.c + +!IF "$(CFG)" == "ui - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "ui - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "ui - Win32 Release TA" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "ui - Win32 Debug TA" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "ui - Win32 vector" + +# PROP BASE Exclude_From_Build 1 +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\game\bg_misc.c + +!IF "$(CFG)" == "ui - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "ui - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "ui - Win32 Release TA" + +!ELSEIF "$(CFG)" == "ui - Win32 Debug TA" + +!ELSEIF "$(CFG)" == "ui - Win32 vector" + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\game\q_math.c + +!IF "$(CFG)" == "ui - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "ui - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "ui - Win32 Release TA" + +!ELSEIF "$(CFG)" == "ui - Win32 Debug TA" + +!ELSEIF "$(CFG)" == "ui - Win32 vector" + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\game\q_shared.c + +!IF "$(CFG)" == "ui - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "ui - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "ui - Win32 Release TA" + +!ELSEIF "$(CFG)" == "ui - Win32 Debug TA" + +!ELSEIF "$(CFG)" == "ui - Win32 vector" + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\ui.def + +!IF "$(CFG)" == "ui - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "ui - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "ui - Win32 Release TA" + +!ELSEIF "$(CFG)" == "ui - Win32 Debug TA" + +!ELSEIF "$(CFG)" == "ui - Win32 vector" + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\ui_atoms.c + +!IF "$(CFG)" == "ui - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "ui - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "ui - Win32 Release TA" + +!ELSEIF "$(CFG)" == "ui - Win32 Debug TA" + +!ELSEIF "$(CFG)" == "ui - Win32 vector" + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\ui_gameinfo.c + +!IF "$(CFG)" == "ui - Win32 Release" + +!ELSEIF "$(CFG)" == "ui - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "ui - Win32 Release TA" + +!ELSEIF "$(CFG)" == "ui - Win32 Debug TA" + +!ELSEIF "$(CFG)" == "ui - Win32 vector" + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\ui_main.c + +!IF "$(CFG)" == "ui - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "ui - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "ui - Win32 Release TA" + +!ELSEIF "$(CFG)" == "ui - Win32 Debug TA" + +!ELSEIF "$(CFG)" == "ui - Win32 vector" + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\ui_players.c + +!IF "$(CFG)" == "ui - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "ui - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "ui - Win32 Release TA" + +!ELSEIF "$(CFG)" == "ui - Win32 Debug TA" + +!ELSEIF "$(CFG)" == "ui - Win32 vector" + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\ui_shared.c + +!IF "$(CFG)" == "ui - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "ui - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "ui - Win32 Release TA" + +!ELSEIF "$(CFG)" == "ui - Win32 Debug TA" + +!ELSEIF "$(CFG)" == "ui - Win32 vector" + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\ui_syscalls.c + +!IF "$(CFG)" == "ui - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "ui - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "ui - Win32 Release TA" + +!ELSEIF "$(CFG)" == "ui - Win32 Debug TA" + +!ELSEIF "$(CFG)" == "ui - Win32 vector" + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\ui_util.c + +!IF "$(CFG)" == "ui - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "ui - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "ui - Win32 Release TA" + +!ELSEIF "$(CFG)" == "ui - Win32 Debug TA" + +!ELSEIF "$(CFG)" == "ui - Win32 vector" + +!ENDIF + +# End Source File +# End Group +# Begin Group "Header Files" + +# PROP Default_Filter "h;hpp;hxx;hm;inl" +# Begin Source File + +SOURCE=..\game\bg_public.h + +!IF "$(CFG)" == "ui - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "ui - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "ui - Win32 Release TA" + +!ELSEIF "$(CFG)" == "ui - Win32 Debug TA" + +!ELSEIF "$(CFG)" == "ui - Win32 vector" + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\keycodes.h + +!IF "$(CFG)" == "ui - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "ui - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "ui - Win32 Release TA" + +!ELSEIF "$(CFG)" == "ui - Win32 Debug TA" + +!ELSEIF "$(CFG)" == "ui - Win32 vector" + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\..\ui\menudef.h + +!IF "$(CFG)" == "ui - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "ui - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "ui - Win32 Release TA" + +!ELSEIF "$(CFG)" == "ui - Win32 Debug TA" + +!ELSEIF "$(CFG)" == "ui - Win32 vector" + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\game\q_shared.h + +!IF "$(CFG)" == "ui - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "ui - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "ui - Win32 Release TA" + +!ELSEIF "$(CFG)" == "ui - Win32 Debug TA" + +!ELSEIF "$(CFG)" == "ui - Win32 vector" + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\game\surfaceflags.h + +!IF "$(CFG)" == "ui - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "ui - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "ui - Win32 Release TA" + +!ELSEIF "$(CFG)" == "ui - Win32 Debug TA" + +!ELSEIF "$(CFG)" == "ui - Win32 vector" + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\cgame\tr_types.h + +!IF "$(CFG)" == "ui - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "ui - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "ui - Win32 Release TA" + +!ELSEIF "$(CFG)" == "ui - Win32 Debug TA" + +!ELSEIF "$(CFG)" == "ui - Win32 vector" + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\ui_local.h + +!IF "$(CFG)" == "ui - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "ui - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "ui - Win32 Release TA" + +!ELSEIF "$(CFG)" == "ui - Win32 Debug TA" + +!ELSEIF "$(CFG)" == "ui - Win32 vector" + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\ui_public.h + +!IF "$(CFG)" == "ui - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "ui - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "ui - Win32 Release TA" + +!ELSEIF "$(CFG)" == "ui - Win32 Debug TA" + +!ELSEIF "$(CFG)" == "ui - Win32 vector" + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\ui_shared.h + +!IF "$(CFG)" == "ui - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "ui - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "ui - Win32 Release TA" + +!ELSEIF "$(CFG)" == "ui - Win32 Debug TA" + +!ELSEIF "$(CFG)" == "ui - Win32 vector" + +!ENDIF + +# End Source File +# End Group +# Begin Group "Resource Files" + +# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" +# End Group +# End Target +# End Project diff --git a/ta_ui/ui.dsw b/ta_ui/ui.dsw new file mode 100644 index 00000000..2a2a0975 --- /dev/null +++ b/ta_ui/ui.dsw @@ -0,0 +1,29 @@ +Microsoft Developer Studio Workspace File, Format Version 6.00 +# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! + +############################################################################### + +Project: "ui"=.\ui.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ +}}} + +############################################################################### + +Global: + +Package=<5> +{{{ +}}} + +Package=<3> +{{{ +}}} + +############################################################################### + diff --git a/ta_ui/ui.ncb b/ta_ui/ui.ncb new file mode 100644 index 0000000000000000000000000000000000000000..f1cd44fe08458995b9c539ceec2b51fb74a8e185 GIT binary patch literal 189438 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�$;uSQqw3OOwtEI(KTVjbeU<{QvY>G&gBu5GfP}mDJp_3Hib<{W@R!csDPxc(SYcWQ7BEeZBg=EVJUuaEaI4vFk|?= zXn}?X%?u44MpJfFB1>Y1B(@>g8p6O{5m8Qh;|U3c!;9*5`d*ID^#Qz~_iA#)yyWBu zYok`pL-S7ikjZ=J1n>O_&3yMPw?9NB2rQK|{oqJ9zbJ zEoZFk>~2=6F?mTTEUX{aSGGhCXS_gx)bP*&mISl%u24dlO*#J!NS{5!iD@tCF zm4S5Bl{(^uG$$KAQs{|?C^45vTG$HaB_pLnfstyXIY$w7OkN;%E3s9T5Sy>?)`1!j zb81p-q(53Lrk@`?O=j$2PO^_%)WY5q_Y)q~6PcdH&#E^>jLU2;4vw1%tc@VsqmS!F%3*~-f4$mC65NaY2%pEh106ff@$R@On|o zlrr&VvGHk&_|Enso%EK`mksq+##32CwVH>Ap*e&4-oI%^mBpv=*t{uM%>sGj6Gju& zDSi1*%ZHt`99v;qYW0ms-CG-BYqr%cCznmSZ%y|csY+PQv;*-F5(Yb&2zgz~ zPNAv>he}S`WTu(Zyl8N&vmS&|yp!DzZH<~{yo`-6FIlkJ$`6~O9bx*#J+s_&-o|pB zZU<9=3ZPY@GzJrdQn0Fcm#(w3(Pm~#u)Jo??K~PkN~-Ba1LUogO}5}9PvxPZ3NaN~ zflOzO7R%ShC3wvwJ>`fnv={WO+qHO>IK`s!QO$y`(E0d(3eb|(q(p@ch)#>rqS=8j zO=qyTaXw9o#_Kc@jbhn5w!3D@EGQ@jTP5F*h_bQ9(_Sg7L<-_W1jHqE(7hwKJS2 zWoxVSJ$B>LZd$NRB6!AeVXDPWOqE$c9U&xcwOxrfZZn}hI+P4ivZ2LPS4d&t42Vu8 z3^AFI*=((j*V{8Mj|uvQvlJ3q$pj`iRz1DltsR`T(%ISOz5SHntW}E?`(8}Di~=7(6hponT{T2wYulzhRIaE+12Xr#5Uk@i)TpYf<-ZjZ%=#Dq#v z3iohhfk`Zn_HK0Aj}d}RDmA_t(e+jfp;a{A8V!ZEx{Ema09=Y{Mb=mJH81UcXR;?C zHO^i%V3-bdv1gr(f15H<4{yR!Tq{^y#WhXhypZB~(sS8eiVqza(z1yIwFEzX8$v>X z);~*2ZA{vQT9a|xAZo0#QCTCB6ii zT97mLMlTO_8N6|)MRN-7ee@^jXiACHys44YzUMp+@0g0vp;7vhqUl8#kBmo&O*CRv z$8!82omh7qkp4l#T${!1kyZ9cF*R9B$P7)Ngpz`N)x^>~AtNFZ8zQ$Fo|T#&$+4E6 zCW8dE;Jod^&|xZKn-vbht|IMeiYF@jCPYM*71=HiP4ofe4OF@_%-b<_m{Wp#%dEyu zY7!onWm$Fv`Yw%X7(F&9?Jb-SkhLa#EgCx%r*lQIpwcaas0_48`NQn z3`;+9seX#sUbP9@S8=|ek1d#m;UG$@U>!tYrDt(jBB*IaZ~u+dI&4*EnrW?(Y42T` z!ep!2lZbUTeUpX*a*2LJd$y#oG*`|Fa4?B6w1a&+Dc6KZu|lV&K-e30-q#Mh4EP9r zYTnY?Dm!BDZEaqODgVr7rtN#Fu@|AGl1Zq%AOqfV#EnAg*0;R8m`cP=ZEVRn!EFy!L+%&{vI1th49P)?4DC&R`Thb!O5D>*ySI-dFTkn&k z{E!7JjtP7SVVzlJe7#J1j20K*cz4)tr&6}V}cSC?eV17{tL_q8>2q}%5F z&N%P92%Q)k<$XH27*J`b73csgk^tt_DEhL61d41kAS<}01+7?bv zig#w1|E;BvV+%l_)*PQ>Ej5h}^vN(i#gSAi5$BT!EhI3quS99Gmp?Jn6`c8XgEE|34X@B`ax8}}a6~(o=5VhZhCIA2 zQIc&13Q(w^QNC1b)em4po1R-T&XI<4BXSh(J%;UU+?p7domjZj*m_-Sl5*^&%5Jwp zskLzpCfI%)F-`3Mw1-$r!bU8`4pD=&GAelYGY#nI892u560RxY;?WY;o0*JWO40#b zLFx<8Rut$?RDIv7=frjh-Z*5RwQZeB>z zEz$+^)29Zf{0qIBC1%xjH|wtMn98yVrK3RLNC-SG@p}!|OR~AIbLw=Tioy||%gU6p zJchDf1u8RAa#Yb!MHCF7mT}4Y(=CK+lT&Emmr~Tg`0Y$(PIa+y21MixEOsSo%XDmM ziJ}r<8}>J%E#clup?phl=ulu8{$r|mL6CiVIf@91rA%2>W+4Yhps>qHqH4YlxN}tB-|jl$!KiwQf<@?ut^(u=;Lg+HE?F}i=zyca`FJ-m-Pz?$gr1z`|;6Cm0qil8$Rl9M>!s> z(mB+OXEH*0!H*x=rkB7=54UE1U9dwl6m)rmATusIYvmPM-rAH%A%ZEgD!fkf`bT*= z8&>ffSAik@c%hYbX-VDEqMNkSw6XG%GTUJ$2c?P7+^~PgoA^eWI3$~B`(0 zzlrnAlB)U$5smY@T;JQdylL54X%SBOi`qh_qNj~?Z$jvr7T2Vbo_m$FvT53O(k2OZ zGgRD!k;x^Fq6TT2lBLF$LQNOK&NBryQ~p*Tkmh;(%}v|UK?qRk3^=ocG1G|Fw4Ku; z1;Tj*txu)1!h@ZnPPj#ctB;6EKkEUU%8f}+k~rszQ@*WEnyRNi^vS^GW7BLc(D(g% z2`II9Hn+&Zpb3m3Sfx)MVzwC$m9Sm*Nu}YUhr=msJTfcmfWP_Zq zq59$7$PjZ%cDAxPZ-#pgE|fR*%$JPHu=+4Hs;QZ(_4P81t(C4)uDhl)P?-P8NeI;$ zge&Dx<$)M6kYP@S2f${$s-3v&I6ne@RE`{xpbVA(22+Z|^+pNmFw&3_*HV+WKKV?9 z9=k6ek6`QWiEKF*;sfg>cR*!oVhEMjl{U#`+p-?eDGeaa3+x9GKX|q5`#^fUF$t%6 zC#(pkdxs2(;n|_AA*a5cbt7WI7$rHhyuMylR!*Uf(q!LZd^#@0yU z>cUkg%cM(ImTV7Aa_D7SOUKe)F>?WILe33l-5A}5!txn)C!>+36R zTsyJJhXV>SafYIPLDz9!?Go8Y?`PNM8P}Dh)`-+fK03lOjU3)CM*KLSdXp@_{&NW= zig=6M5;d2>dTMk|pCpCZb?WiE^tQf!SR@S-lnNXYxU}tzu4O%aT`k?r2ReEYykxrI zYuJJ1ak5&&i1nv;H3-uq!1eV$yqQTOYLG3o){aEX6dErw&CC|tgmaavsqgC9E3=u} zn(p82$z){ujm%_Q!28OS=KQtHvp!^#DjL|*`BuyuKu_pcU_ZvegmaqfXCaxyW?sbA zCDA-AeHk#H*sNd7h^&`x!A2o1R2I1%eNCMmOInxOTC5Cnsl^L*G-4KUb7@0+OHXe@ zZ%a7AHdAMS?JYJ_)e)@8!YFhz6Z^P@ulXIFFgN8BuV%@TjenhiX z*?bmquNmsw_p6I2f#ouLae~@NAK4k1OJjJm^=Ig6^>CFXAdx()NlzdBsImkdiwY%< zO;XMLW`?sQ;({XBi~JIJ38CjG7q6r^BnM%z9ByO{XESo5jK=NKXROKKFj2cSrP>NN zt!U`BGYtBS=V$o?w(INpTBIGh&F%d3c0qc(Fue`ua#MCunz}f>J(iF_r+!}nriJK0 zW}u=2J^-L6tdDRWHSnHsR99ZIr58LV{p3K1Nwpb848{83&q-- zT-G=g&>=WmV{Lh@ZC|b~u3k;P1py-#C0E>QTrQQ#B&a6XzhT;v9AL^tG&L>5#KvYrzq9s1hAkbp|KK3Z)il zsj6C>Db?S!KrP1NdI7fvE4=RH@Qh|=`KIJu*xF2&9PbF^zzr1SW&4_4v#c|C->znz zF7*#;W|;xaWyxeRW`zuG)ohRu3eG(9I(6D?f{0Vp(@J@9i*itXOeF@~)w!~zdwEwi z?1Fq#NnAmLy0WFAtFxoJ81Wh+Wc~B=P01v!N8iBC;ov{2B_~7Y>qxY-Doq0$I<@lw zjI8zsa9Sc?nKrNj%CDM2pZfVRQ1N=@n-6%oLyWkb01`f}C;mqEV^+c3T1(>H%7>ud z@@=C`nfiJ=`!1hoN}NlTF+Z2YC%UTACdIzy%1PRSe4;nHxuTX@RoJUcuCS$6 z6)v-faiS%$p1Dfd+^WiX+ncMcVHhM|WBK_mrP7zHrSTM2EIA8x#+)ilQlpcrV?vip zG`B66sJ1oVq$a8v%#}{`G?(s;TrO2cAssn#>FJP?%Sd!q+&je8evnKFONEEvrD>7+ zdiD~t&4Y_3U`(^5|W|E+>1!xFGm!=_;{oot>760&zM=vWbX#rbz ziC1E*Zi1c%m@GKR)C(ke*5wMOY|HTa@ch&&kRw}ncw12d^e{p`13_Zi02P`iIPFE} zaO8wVsm!hLP!>pth6moJaS*@l)qnjXt&clQrE*dwo5Sb>CLUUxC0>AjK&BFM{Zy^7 zb*Y_L7X19U7V%`+6+%aK2{4yso2+~RnHXaMSdG(TDrHHxQNHFBrw$B`PmWZj5-;bV zl2TRrKtjL_5J;3TB9k$|8S;EBk8jK1PFI#PToy9<)hw%(-7>a;HNA!ngC{019aN<~6@v%(tbK4ub`Wm`h8u}W~=xxEpNlOb8<8UEgGH52| z6ao_(kk6#`g;*jmT6Ewu;)HuqLJhP;`9U$+@nY1iO?CXGXpMr2R7O=7d=}t$u$bgs}v9#j3lVf46?xl?lfv?1wYm~rx=qtv_6rXT7e8MY!Ce|81G92GvyS#`c{)Pw2o(|bXW=qfF zMr)8*(E?~_S+LakfJX5$CysjfP=hbY6iRFylpv?!9#=2YA)S^eY_`Ap$El*UT9oiU zo6!pu?P7ptprW4nH5GxOskZD+e2$~1Ws8S(bEAH8*6umQP>CvnRJPcUxD@nRs7tGg z4>S5{&L7b#Y!a|nj#Zg3ee0;eSSxS#@I};N{mMs@XY~gNOZwUowj&q~H5{%W(IoF} zgrm;u>!*sfUpfZ^BP*_{RO-AulO>-N%B9MC8(scWKe?NUTnZ(*&7ji^0`#rw;-^VT**0DL3N@vBeuBHKrJ)(ypH@*Z$b;5Ig^@^! zuiwzt+R!7TM+!l<4dekxn%0+_sQKQOhW1Qlyh@x39W3M!zrYAlXkj3(j=zh5ND#dD zjIJye0E*8nje*7AfQZu()<)TVnKo;a_%slnh?WGU<|j3gFpOj)#kp}cLHmrP5o zvKB@#zpG~TVw}f3pjJ_Z=%{NSYgIyr-8gZb%;~;q#-M#jrb#`iG&wpnH__nwdTvz) zvPsQ@ynT}q=|C!3y%!0Nr8?xvW=t>I4%DuxBPY_4ugk@W{h;f3K^nzLQqtFXlcY&za{grA z(8E=Ik(-nh)Ln`!jmlcSZvfv?zA+bQq?C^zQu1ZWkUZIfASW{|Pz8VEl6U&zzDuUS zwql{1Sq6%C$nk6Kjp_?zYlvmawIxY>075<(R$aC)he=Ac#HID2;OMzfOs7RisBJ_@ zoN7aVOtd1Gma;gPAqR!F>e1D?3_CA9cF?UoIFT#KWSkI`9NU^s-q?B}5h-DNCY7j< zeb6f|%BaJhW^tp!+>fPiO_Rgr)3gu(%OvWK+)Rp2_k3(Pt}Zh>dGF}2X33``(pE#Y z4!)&2T&_`B$U#s(Q^}|CMy8yIp8|{0d38w+wXd1in9WdHWRfP<_91O?ZAsz%vpC6) zAc|AgGNaBE5f4#zUlKpgr0Z5tJ+{>RdXX%#%*oMd*jG)fN`jvW+E}>E5R|so$F% z0G$O8dOTx&G&L{p1Wao2(O54h7V8_X*>)^b8IluQ%c;Ryv5}rwQEZTHa3%kuU(Hkn zl*v&G?5dNhOC~YlOyOxh9jfPR=TmWrvS4-BWsS0$UR63#K>RQXEM&kZnbB@=c~_%$ zA?->U{bR_tZ4erTvxuNLZMxeyE@rRa$0-)-^BZfm`r6_oE(ozcDHa~GEu^XXjz8P| zbA@%gT6MC8$#Z2DM9myqvdN<1mu<3%3c`9K8JQSo7V}&dw!v0?rJ8vazT@E`TfHQ) zQlpIB*2-3iO~HnOnYKbAeww_Qkp(F`eg&aWNJ@xvlXa`>GG$U)g<27%LJ}m>lcQqb zl|gp#s5MY{6+1N15DE|3UZ$yRAW!=lB^Nf;O3n}xR_o8Uf033gIMl%Rxa9cvQjB}%pz#^Xt5OLJ?l&P&gVim^nju8h(uEKt~7AeW@x zsPrl=#XKvUuqpREoqH|~4q0G6g%M;UP0`Jmxr%;^c(%21)*jjPq?8sX)k6B%m~1h5 zBHp3r59hLMF*93Sj-?PgTI0nid&Peq6Q8*`KownKVI;_vqhOGlgWabHF0``3(6SUF{q+#J<0quTlu#g34zUqc7m(^9Iw8M(4BG zenE7hx+lD|h2^PE4{zI5=lG)zt1~8LYLahP676d>`J77pebcJU^h4$OESW|bF~cI3 z2FSzib6 z^svpQw-$jjz3Z~ofT~Vr3Z=(AL+?@<>(=2t7=xVtOYgm{0T9& zAlB@tAgA_PK8Y8vX|H9*=9jV63DXaI`ZZ`>)VEqVG^Kd)J6$1mHP(}>lakSW<}7(x zVnYpR$cnjHwW?Z<4OSLbmqWr^dC!#?ZLJC#AJFod7jq?LZp{kpiikf1H78R|hsRpY z$eF7Rc35|P0>{|Ngyu+eWnUcU;c)_EtGlGZC^(Dq|%RL+e~}S6^>?G1EMW>-!@>qf)YZ5tkv>?mzVs z7oy^uXK*Z3z`@$l;+)r!O|^(@F3}__ml)Ud6PBoip0XSl$(=wN6}22bYSK$5YFDXF zm2aR#F#I}0loHOokCLLVokXd!13U&L&wAizRAw;!gin+zC5e8rav3FRgu|AYqg2yF zB7JdD9fDO2BwoOdxl|>*9-@SuoWau2u~araMDW5_Q=%js7u-QHDp8^ckG=pK(h>m; z3HYe$y_+U_7q3aqwD2Dkk$IRu1;}0r*2CV?4{TZ` z{Lc*NaCk&X2JZg_|KFl${V$=K2)squJsjA~=QQy>vz&NSIhuh2q6WPjQfLPZ)Fe2c z2rBq9u4?AvnJ|m8?dIWlt7_z|Z_FCQzVtbDGoWPejM$-CZvuzmSx(@Y5lD3S+e}a- zuE!ZZBKqmE4Ksq&NL4fRYGtJR-;zJ8W!9t|bK%pyUZ&CuPBZjuIGl{9?9NKS%(W8a ztByj;nBAEHOe7yHt3gerW8IvYG45r@!A!>5`aUDs>2K2t1kgPD8jVLI#k`cGGvgxA zaO~J@T7!bIHJbs1j5~m+ApvpajE$WEk}98C*2$43Tluc;U$s`(GU6h`(s`AvnYjq= zow5iHG5t}X)eVND?q)z5e&j%e3Rzhcz%ziT$OgOU+|gFo+6MB|m~+?0 zMW`cx#&Fg68BnuB-EDeGjck{+`kPi1)1ZTKED9M7Gj;}q5`~{p{0$+2YkODH8nwZ` zDSGK)^VK9z5Ssx45e=MA47@60Bgdy!!;o&h6%~w*L#{cbAg1Bq-x(T-lzs+$<&fua z=yT0R?10L@4u9T}M;@(uSxgvCd9hh$n!2$)v?DlSs+p1G&EYJZyD@NKCAxEh%6s0Vqd3x zo4b~KPg^t86r=oCYWhL@t>VJanE+fO%W$=+rsuuSkhjUE(=~~xJDqCg$o2}2>()o#gM3PfNva(3H((FM(`pt?w!qcQjd#A)EWmqB`ms*4 znl+19Cu+C8q^pOibo%j<%!A*o80Uxci)y(AVTP>dMJBFNmImx1WU7p9&Cw>r_-f^Z zF4oGEiPjPzR)MRGvU*!HXDuhM)vDpil*c!;-iRxd&$A_XavCNk${UxD|CIuIXziQB zXp?pEH!spHFRIR5X679IK3P?^y)oBb92g)Nns3=MTY2G}Q=apgdK?3x-s%k9X;G74 zno}DQiGVU`;vEcm9ij@TW)sDlIk%C;n%cP{nM=|S+~zwHeYP^Aum~%!MA_*}wd(j! z80NEN$4_~qd^*7R@y%`)A?^xd6*VNtF)3dChRbHb?0@z8MHcAmR;}WvM z(_qir%9ON^VP=y0g9oBysGXGsYuoiQCH)85GHHo>n5~^8TQoUS zCHgRJCf#=UWRipmE%w?_7JihmAe+O6Y({qVCNiL8e?xUDhs=3qX9~-vq9)~EHd#N| zUL(VQ9J)r1Kr%O#7wG+RoE;RAJjg*0$-~C@VI+=Zi$tj#kWJ)E4cWbUCYe1=-K|}{ z9PO}FG+!c>77nl2OVmjU`_MvWe9L;oHPSP6*BiX9u69Lc4zSEUKxhTcr^+Jp2uzJ-dcakRb$(Ix3y1BWE7$$)vb;=H~F+Udh^#n=t6T009Jrq3Nu;ANDJw~2l*9XIUyll5te5$ zVFPjqGe;jp_eJ&)Ie9BuPF_FPZM(g5XTHzrb=`^1y|#mMKQB2qb*ytEdpq~WLC*bK zt8?GE-nq}-?A#%ru(D4d;oQ4cIXAkUa~E?zvA=VtQ(vyZW9;|-A^VO0x9#cNt(2AP zxP6`5>q5Ji|5u#g+<~Xt^A$JQ@0WY*SN^{`n%>8E_YXMNNZZ%#=UhAWTb^|8Qt;k| zzJ%)w^x*;zv!44yw{`B$d!2h}xpV#eeQk5+?mN=CZ66CY?DyYqv)}O>o%`wY*}VAa z;5z4i-R)chIQ$5D?gad!Ry+5@m!13FHT{6cf?`o^9j)9m{XlQ^?XbF*oF4-s>w!U+UbA;P9EFkf+U@YvnIohb^?b zgO3NVGo3qW59kXn-+I5LcVA$?lULa9N8mwxwfXvzwiR-{A25zvtri@(gJsN#F+wPmUcJAm;IQKHR$@Rzmo%`H@&g~D}udK1O zpKXN=fSz*g2%Y8Hy4ksp1N)|B&ix6R{PVfs)=S&ij0;ZWmwq1ef|cC?yyf~5ZC)GE zXsXY-x}AXo{8!-5#q?9I2Pw0v1${rxxwDXstLmKl@{P`2f0T1yTxn%ypM-AQWcTv_ z^XQ{o^WWv%IK0`BddEW3HOTUrAGAFAKYJne2HFh1l&0O>?c9oS+V%ZSbL{T7l>IHV zmg|fApr`yj%iqKN-NoObmpFI8$1Pv}zXXk5fET-*2S1>-Tz4Xq3*g=N;r*e|W*vQg z&m#D;9J%9u&o$01S&O|R?^CmZu^66!(-43E3>~gU)(!&hA@Jwt(BZlb*cIfpLfMgn zocqR;&h2v;v?PC*F7QO|Z=LI02eSQ}=M0CNFR`OLO<$JH02 zX>e}VZP;$;_=$6n<5uMKRP^l;=YGcDOxHPkI#)caI`_^)s?)Y_ckUzafoJert}8C0 z%{!5`{q-^P4|Frv1JTo6o54fq|D_XvwWDP;K=0YtJNFQB(zG4p4m|mIfxNw-4L`2} z@ROaizlC%E3eC@cKlb2J?Cpyw;BUasS;*5j+vqd=yd1h6v<}j zZYyj)bUF`x_yThFE97SxecTSY|3~WnY!7tqY3FV)GM;0rcHbYnk6x|g?_bD20NO2s zZ~5z+p0D}z@cidfpcyi-4|RXU{kzXac6PPge*`DF-gCD7?n=9V%C+%|Wx20{t6VQa z#}{wGhC!cQ?!wN%*RAf=EZ2M{bRNN$(8kYpM|a+h?b?98orI1~JJ)w1{n&~AU+&yC z^yh!xn>eXmZR`$Ba6-S2=8@b7r=Kjakb z_0?t1|s|IBGGj~{8{Qnz=V4qf5 z$^`mw{)2YE{X_Uo^tslx<=)7^0r-&6@-=9=H#&I8aqxn6kH^k^5t=SSE>EGo>yhPe zdfx4SgF)Nl$`tCi&xBvk+w&3hYn8|GMf#P$ZUfI{>);RliLXx`5kJ94c)JJud}3Sl z;S^-P;@r|h;r9UJJb6E&pF1H7zd}|Xr;m5@_w8QrSmxXhM&J?ldtNJg%-@$MnKPho z-CII`o{Q*4@0H}y=9%ctMezD}E9pP&y@tFUvkiTKrrX?tkBB7RV}n>Ed~ZqwxJML2sZ( zxIPUX;%gspI1!zgb0Rw053i{cU;hfNN9mASUq&K`d;g#XX|d*SH$o)1!Z)`7sKpP$~txg+mG&mX}?z08=q74ise-?xK-+!h-A7jNCyUx$X_ z`j^X?Q^HHRUhA{pck%n*$jUw4_<4t8FX_Wq4`bf67ju~+&-CSPcslP{XudV}8ToHV z51u@j@uDAj=I^CL;2XdHLEqniCg1wFb6Z01XMp>|ZLkf%EW^Khwq!1VZMX`X-M&A( znugbxFxDfpzd+9Z0?g+g$F4w^I@;>EocZGVb< zb?D~#;Nf|3FgPD}C++TLW#5>~FEE!uce#Fs4DOFS%C#CA%k==X4A=G*yITwH*MjqA z(0KR)cz%baUj@E*Yyy{4!5uy>yfxHhEIJE+4EYGx7H7ae+TLz;NXh=5ayGW{wlwXN z)LjNWYh9nYADfH}{44S}|9N--4ent~Xg(RfJYqF=xClBROTUEn;d*sHyL%k|hU>}LbJ1nm7+gW$c1IQ-VvK`^a&3IneubQu@Nf54d>m-@IPxRc zb?{)9Ih4B^JB|E(3z}V9KnE7`3+|6`zdt;9iaL)V>*2b3Ik5?7E7vOcunro&^K{0$ zCT#xZz(>{&??O+p(SJ|=caYy#j=*OH$B*%R%yG;+7Ezh@|Ad?^gNL8L4!ejBE@;5U zEdb7*%y(Zx#y)}ld0Cs%e}`|D-p6-etz%q69$$HmIVduazYe0^mZ$Qm_yuF&O7bt! z+fih^Z(GuKaqe9DcY29<2DI4iMC{*AJg;KzOdnrt!|z89u4yI>yY$+HjA55E*5863 zfgGH$iFwXV)op!&zRLBrjp!PGPb{%#`9J5-^#1GUqg?;zB+9fuJ$B&cWAUw!nU}X<>@Pzv zX#V8WDJ;3W^hn0@8?tG|mG-<5nfTp@u>Z)@Ve~V;?mGv21#f4A>xakj|3UmHV1=vh zns7(I)}fn}c@(_AUco^h7JX2`y=G( z4f=Tfi^LBOWd6G&elzv1nZ;Ow%^gDi+b_oVp#N=KB5%-Q!+rRkA7@Mu=5sZ{x86$_ z2kx@x@c$o9WBxM?oD+~IVD7)3>H1uJIQl;SEMUQ-8@q_RHqbtK$Ik&L+V~T?Sl9u3 zbq&1yAUvh+2M@w#@wW^8_(%R8fX-9&t+XvXLRKE%;9L)Q9q|}E;;#S_|Mo2OrO%H% zkE{Wsnfhz#t6Ymne;@q~*H;dp+&S>?y^PQB@<+(f-|ve5M!(NL4BLM%e7fDa&1oZC zcSF0q<}pTr=k+^T>bh05!QXFtun{K{=URhb1#K?A%JRQA0bVWmM99rQK|{Iz2A#PF zdOSp59)mvHQ07tibkhUq*@w|9I`h(T=*Kx)+|7LoUellb?q|GxA9&NRaNUUR$aO1t z$#ufv&V6?)=3vmO1-(1uI`~m%dH;DD{xkB|e4aheX+VFMGf#OZ{3Knj?Vx|S{$_Q! zv)?^C?e~nG!TA_;7TVp`1RpMAd`IT~&++)+9nSq2{?A&+7<~nDFoq7^fWO0^T=#)n zxE3O7*CJmR?S+4gZgygqe*xb6oJ;xj%)>6mrX%n1wLP?%y9Ykq2h!Bb>DNxQ`^ZNv z?HuZbYZ*M>GitL1y04!CzkbFnV14c#$mOBPKfL=RecGD5|Jom)9^6)Mjy-CoKK=OD zGw`c73sA9d(ChT=;X8dkb=tXiK=)s_GwxnUKY)1$a`)-&up2Kke?jls=+Exde;jC^{}N^8I+(hXyAiYCe$}qbi)jA>ty588bJTwnW`Rr$wm;%3OkCg5%l&ig{=70Az@A3~1Nq3=VtUr_W3?7;V->DkEG zYU-Y|HMZnlZ21!g=U?r|-AcQ^*#^EZf;NX?zo~P~Mc6Umy=Ncfu51OLdAF|+{cP!F zRgjZ=;w!_(_G|bclh+m zCi-(8WByH)yBR&^?=t9d4siC|g)#p&{0aVkbRRZlwIQ-wBX*qr*SdZ>AOCR`dU!DN zx|8q~=u^1=V(GKfD4k9+w${{Y6+ z5@Ry-Itv@xycitl$F(2CZbRz>$p0L_FCd3IJVAT|d3etl_7(a2A^dBBCa=8|FoAAo z+WiIe=|14fwLGHjp~!$-CymO)OrTMk)&Y=DI^!xBeeE(kb3mSb1y4`Rb{exGRT}vA6 zEyZ?ji%t1m2R7qHF{OH9U1!|G;M5V+_<0k{G*J!(DZ3| zBiBtU(4iyjeuTaq!t+K zrNG-9c|9L{C-U#<{INF1*9#e+Td{ZW^=bIG0{QsyFk?LWc`E%5*M>X89pm`(_*m#} zGx*B&`RncX0OaGAy@3(hY5D zbLW67diy`{>W|Bw!MGjQHT`LCkWuTuZ-dKl}D zVtfXN$(^z9M`G_5^9-!3k>%s|hnKs6FMn^4{t5JTyal@h|8IZ}FJNo-rLDeq;-|y= zGU>O|X2%}*S*PIJpvzx?f5YT|Vn6K10oV$7_3^v7hj*7y=l%Edw=FWt{kHJo(%sMx zWMlj>^a{KVe-59Fzvo^?hbY%p2aeQz2z*wdSJb_H*+-j@crfJ1$f?qJ|2G*bU^3# zI}RD3pT7piRnU8@OR-7t=K5Lqwb1c4V0{)jy5Jb(>lF0v1n_zf`L`oOAA$E9kS}!g zb#Q#(<$#g>{`m~-5&i0+>^2SAy!dI~t+D6e@mxRS{ex)^TlH~Z?D=!({Ri$y^KN{c zct;cV;b}|z6*$N>8yGKKgMQJU4am|m`uyEF^c^@o2f}OQaNtVDYWRQPZRiyJ>wqVB z($`mzrBf;UhYI{SA9=b2Ij7AzFAC(DuQhXt=UrPn|KfL`7wE%B&IJzi*yC>I8s~w> z`@mD=kpA{TyGNkw(8uA&1?WCJeD5Uw?FUnszg(5x_szyWb-^2cXJH#21lK=YjO>4i zKEcIylzIv;LjmEe|9b70PS9N z3-%Jezj`M$1@0T323JD2@700hIAeuRyJ=~P+lA+*_pQgXP5=+~elK|KX6eUn&hrEK zAJ9Oq7r-}MFRp>zBg{cgXFLG!$9KSY=|FdZ@r{c@Ddq_a)B9JEoh9%qT(ch)RPl8{) zjFHgmQe^x2r=S-&o(TO@w)H=De(fCVq^INQ?Y z|D1c7eRs^SYV3Ot{Mr$ld^oam6ypuDd^2O*5hr60fgP^R4+?kHzq9GXz2N!+xNZlmAM)1# zeQu!WH{o43_&!EkZ+3N#U}x$3?{CANJ&F9ISK&Gs`|`<4p%s1p?+dUqyF0h@(fD!b z=mlMj$F%WV=>75w{E{cv@U6(+^>#1+`RKL#D*1BpnGd}-Kh=KkfUomTv-|LW*%HQr zJs20T7w5mnQqPAka{XvC{6+dF*JfvA(c5MZR{4=k2Htz z^crF!z&jiHJ!D^O&d%_fzHM5GN$97&BaxNk(fvzUvwa_W3y)gwCr0@Y^nzD&D8KE~ z$j>p1ThANhe&j)}SJ9t`p;>&rQN-RHj-9-hagn-J*E=ocQe@*lkdw=h*{;JF7xtnZ z_$=3FXCv#UV8_5^Ep+|e0!`L`e{%rxM)`0ZhU{zu%x?Y;-N1MP{hN^G{PlC__L=vi zgCaOwuk@k!C3v$2`MC)HW|VOVJ^C4ZTTK6+1-Ey@;{l$#U!>g2&{F#IVeo24|2`^E z>^k+PaF_o6r7qlJyQ4$jor_H*cH=5^_#^P>{)f?n$KmT*Y}2s8-iJpg=uN?VJOm4m?bP-qyg&ryE2%kahNyIeOy;|r-j({&lJUOx}HzM47j zhv+XjUI30qgZK73)0aMEeIw7nJnhyjl%0^jaP2>ee}LX?3r@e?mVVOz+i7=hODJK# zOM!pcmf19U`Y-T)u*{qWnyrUlKcN0|k0Gznqt^Ael>N&^;C@3kcis{9{2F}DUw_ya znjz~?f!FNy_f9AdD%=78;LAaee}ivd1IDY+;@evzd(X1wflmMUCdPJX@#?MEotM!YaQ^Kx*4CfV z*IL(4f%WQ6meY0;bGy5rUxM%TB)r^H#vUxr{2FCY~V!jTakwojzRnp#jw_@iGdqqWXC-{PN3FyvWar;bu>0R0jXYe9?cN_7yF0dNbNn-O_aBfa zxqb{!<@y6KZpW6$bu{|_<2Jkh2k0eNg}QQG2J9i~hwFXd9ACHb{0n&Z;H}u{<(BhV z$}ik4F2z_1UGBo39)}G6Xao47AAK+Kh~4v&Sbpf?|0xBu1_;Y{n_{H5_q-*+BWZ*`HC`5L+#u1j~eyXywA_btT#(UB+N-;wb6sYc7|0mc?Z zyKlHM)TFO>F(uZHwF=j8t??HxcKM~r{ z|3^1NKGqP^m1oL-ZxwSQaQh(r-X2|8M!#N%*EcLi$8QF&$MMsByVoLvxAAvBe}#8p zU$4fGM1JI2j~(5D{=C`s(<8FE3-@B~Nnbw$UbB(4XRkuupSLo10b8zLARq2%y-og2 zoQB^CeR{ALa@|h7Pa`XTyb0g-6PETRp@+ZrJUHB;xAb{u_4ZU0UU5Sb3gpa3!x3qpZ4RA)VixHf&-54;qmfw znC~Ft`+@8I=*#Bt^^aSm^4ftv@l;w)?tVx8>#hK2%D;M7 zHcy^@0!=?onZx1D@2NY2%>Q&Yw(MGL_e1dfTy%5=WA5Xu7xfbhK#q?=)}Fc(oDRjN zW5a&%a5Y>>`NKkNR2}lW$nyV#zJCW=okzW&uVcP^Bje3;miJH4?mXYeOHa2n`TxuV zcK^|CXon2!v|E~&zq=RQp7-$XgywRsKM0w90iWs~dk+7v^t`q~+oQPJG^N;nJcd(~QgXuG8 zAx%V&#UkgL^2)HUZKaQj52Tjw{jK5q>80Y@Bl}~RHA{^aEB$}1*!n(BK^pn%r8v<- zPQaeI(d4V~g~{@0<*gKy&Im2uO4(7)LVhdd?5k66srk3wql%usRC-HLrzVS~H$gNo zFgaU2l8X!vjhvjT*3WzU6;2+{6`U%rNnR??=W(=?ei3nvwzj^{_p}N|wp?XuVyMtR zs7F3jx0jUdSD=#}^eiv7*QHWQ`XwD`BPUPJr7 zxBYKtiE?rr=YM*fxjt|5Pq z{eCm+**OHK_`R9*&-eXq)(G17cRWv`&0GKB_ln1kwEHo%@%O*~{Ve7)ZjY6gei*;U zps7dy#h$-K{WmDLjOR6UXoUK6fUt_^+tA*ld1lVyzV~PQ-J1IHyfygC?;ig5C%^v9 zEHO$W;JJ%?#y#t%+y=MNZDNPXc}!8yckgu`Dp_q6ME%iRjM(sj61?hJRPTkY1kv)tLP&z-}LfwivR z4LHvFb;EAN72Ua*){+}_W3KGR-Fn9-rQA-K(p@oIyJJfC#7ysvDc%=zyPunbu{*#W z=nirRyF)N`hq<|~ju#^4xg*?>?kJ)P^W6fs5R<XS-3jhQ;wUG%liew< z!8N)j*Ng#P;+FCzPpdoCo#xtHyX)j-gwtKO>v5CN^6l$w3cO8$w<+*81>UB>+Z1@4 X0&i2`Z3?_ifww8}HU<9Qr@;RM5i0u+ literal 0 HcmV?d00001 diff --git a/ta_ui/ui.opt b/ta_ui/ui.opt new file mode 100644 index 0000000000000000000000000000000000000000..4ab30e8dac8dd4fce0154517aa16a159edeb6850 GIT binary patch literal 55808 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 + +
+

Build Log

+

+--------------------Configuration: ui - Win32 vector-------------------- +

+

Command Lines

+Creating temporary file "C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\RSPC38.tmp" with contents +[ +/nologo /G6 /ML /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "UI_EXPORTS" /Fp"ui___Win32_vector/ui.pch" /YX /Fo"ui___Win32_vector/" /Fd"ui___Win32_vector/" /FD /c +"C:\reaction\ta_ui\ui_players.c" +] +Creating command line "cl.exe @C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\RSPC38.tmp" +Creating temporary file "C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\RSPC39.tmp" with contents +[ +/nologo /base:"0x40000000" /dll /incremental:no /pdb:"ui___Win32_vector/uix86.pdb" /map:"ui___Win32_vector/uix86.map" /machine:I386 /def:".\ui.def" /out:"../Release_TA/uix86.dll" /implib:"ui___Win32_vector/uix86.lib" +.\ui___Win32_vector\bg_misc.obj +.\ui___Win32_vector\q_math.obj +.\ui___Win32_vector\q_shared.obj +.\ui___Win32_vector\ui_atoms.obj +.\ui___Win32_vector\ui_gameinfo.obj +.\ui___Win32_vector\ui_main.obj +.\ui___Win32_vector\ui_players.obj +.\ui___Win32_vector\ui_shared.obj +.\ui___Win32_vector\ui_syscalls.obj +.\ui___Win32_vector\ui_util.obj +] +Creating command line "link.exe @C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\RSPC39.tmp" +

Output Window

+Compiling... +ui_players.c +C:\reaction\ta_ui\ui_players.c(678) : warning C4101: 'barrel' : unreferenced local variable +Linking... + Creating library ui___Win32_vector/uix86.lib and object ui___Win32_vector/uix86.exp + + + +

Results

+uix86.dll - 0 error(s), 1 warning(s) +
+ + diff --git a/ta_ui/ui.q3asm b/ta_ui/ui.q3asm new file mode 100644 index 00000000..1365826b --- /dev/null +++ b/ta_ui/ui.q3asm @@ -0,0 +1,12 @@ +-o "\quake3\baseq3\vm\ui" +ui_main +..\ui_syscalls +ui_atoms +ui_players +ui_util +ui_shared +ui_gameinfo +bg_misc +bg_lib +q_math +q_shared diff --git a/ta_ui/ui.vcproj b/ta_ui/ui.vcproj new file mode 100644 index 00000000..04b9f4f6 --- /dev/null +++ b/ta_ui/ui.vcproj @@ -0,0 +1,481 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ta_ui/ui/addfilter.menu b/ta_ui/ui/addfilter.menu new file mode 100644 index 00000000..6a0210dc --- /dev/null +++ b/ta_ui/ui/addfilter.menu @@ -0,0 +1,323 @@ +#include "ui/menudef.h" + +{ +\\ ADD FILTER POPUP MENU \\ + +menuDef { + name "addfilter_popmenu" + visible 0 + fullscreen 0 + rect 190 200 256 256 + outOfBoundsClick + focusColor 1 .75 0 1 + style 1 + border 1 + onopen { hide grpFilter ; show add } + +itemDef { + name window + rect 0 0 256 256 + style 1 + border 1 + bordercolor .5 .5 .5 1 + backcolor 0 0 .5 1 + visible 1 + decoration + } + +itemDef { + name window + rect 0 220 256 1 + style 1 + border 1 + bordercolor .5 .5 .5 1 + backcolor 0 0 .5 1 + visible 1 + decoration + } + + +// BUTTONS // + +itemDef { + name filter_add + text "Add" + type 1 + textscale .25 + group grpFilterbutton + style WINDOW_STYLE_SHADER + background "ui/assets/button_red.tga" + rect 10 5 75 20 + textalign 1 + textalignx 37 + textaligny 16 + forecolor 1 1 1 1 + visible 1 + action { hide grpFilter ; show add } + } + +itemDef { + name filter_edit + text "Edit" + type 1 + textscale .25 + group grpFilterbutton + style WINDOW_STYLE_SHADER + background "ui/assets/button_red.tga" + rect 90 5 75 20 + textalign 1 + textalignx 37 + textaligny 16 + forecolor 1 1 1 1 + visible 1 + action { hide grpFilter ; show edit } + } + +itemDef { + name filter_delete + text "Delete" + type 1 + textscale .25 + group grpFilterbutton + style WINDOW_STYLE_SHADER + background "ui/assets/button_red.tga" + rect 170 5 75 20 + textalign 1 + textalignx 37 + textaligny 16 + forecolor 1 1 1 1 + visible 1 + action { hide grpFilter ; show delete } + } + + + + + // ADD FILTER // + + +itemDef { + name add + group grpFilter + text "Description:" + style 0 + textscale .25 + type ITEM_TYPE_EDITFIELD + rect 20 30 110 20 + textalign 0 + textalignx 0 + textaligny 16 + forecolor 1 1 1 1 + visible 0 + } +itemDef { + name add + group grpFilter + text "Filter Name:" + style 0 + textscale .25 + type ITEM_TYPE_EDITFIELD + rect 20 50 110 20 + textalign 0 + textalignx 0 + textaligny 16 + forecolor 1 1 1 1 + visible 0 + } + +itemDef { + name add + group grpFilter + rect 20 80 216 105 + style WINDOW_STYLE_FILLED + type ITEM_TYPE_LISTBOX + elementwidth 120 + elementheight 15 + textscale .25 + elementtype LISTBOX_TEXT + feeder FEEDER_PLAYER_LIST + border 1 + bordercolor .5 .5 .5 1 + forecolor 1 1 1 1 + backcolor 0 0 .5 .25 + outlinecolor .1 .1 .7 .5 + visible 0 + mouseEnter { fadein message_arena ; setitemcolor add bordercolor .7 0 0 1 } + mouseExit { fadeout message_arena ; setitemcolor add bordercolor .5 .5 .5 1 } + } + +itemDef { + name add + text "Add" + group grpFilter + type 1 + textscale .25 + style WINDOW_STYLE_SHADER + background "ui/assets/button_red.tga" + rect 103 190 50 20 + textalign 1 + textalignx 25 + textaligny 15 + forecolor 1 1 1 1 + visible 0 + action { } + } + + + + + +// EDIT // + + +itemDef { + name edit + group grpFilter + text "Description:" + style 0 + textscale .25 + type ITEM_TYPE_EDITFIELD + rect 20 30 110 20 + textalign 0 + textalignx 0 + textaligny 16 + forecolor 1 1 1 1 + visible 0 + } +itemDef { + name edit + group grpFilter + text "Filter Name:" + style 0 + textscale .25 + type ITEM_TYPE_EDITFIELD + rect 20 50 110 20 + textalign 0 + textalignx 0 + textaligny 16 + forecolor 1 1 1 1 + visible 0 + } + +itemDef { + name edit + group grpFilter + rect 20 80 216 105 + style WINDOW_STYLE_FILLED + type ITEM_TYPE_LISTBOX + elementwidth 120 + elementheight 15 + textscale .25 + elementtype LISTBOX_TEXT + feeder FEEDER_PLAYER_LIST + border 1 + bordercolor .5 .5 .5 1 + forecolor 1 1 1 1 + backcolor 0 0 .5 .25 + outlinecolor .1 .1 .7 .5 + visible 0 + mouseEnter { fadein message_arena ; setitemcolor edit bordercolor .7 0 0 1 } + mouseExit { fadeout message_arena ; setitemcolor edit bordercolor .5 .5 .5 1 } + } + +itemDef { + name edit + text "Accept" + group grpFilter + type 1 + textscale .25 + style WINDOW_STYLE_SHADER + background "ui/assets/button_red.tga" + rect 103 190 50 20 + textalign 1 + textalignx 25 + textaligny 15 + forecolor 1 1 1 1 + visible 0 + action { } + } + + + +// DELETE // + +itemDef { + name delete + group grpFilter + text "Filter Name:" + textscale .25 + rect 20 30 110 20 + textalign 0 + textalignx 0 + textaligny 16 + forecolor 1 1 1 1 + visible 0 + action { } + } +itemDef { + name delete + group grpFilter + rect 20 80 216 105 + style WINDOW_STYLE_FILLED + type ITEM_TYPE_LISTBOX + elementwidth 120 + elementheight 15 + textscale .25 + elementtype LISTBOX_TEXT + feeder FEEDER_PLAYER_LIST + border 1 + bordercolor .5 .5 .5 1 + forecolor 1 1 1 1 + backcolor 0 0 .5 .25 + outlinecolor .1 .1 .7 .5 + visible 0 + mouseEnter { fadein message_arena ; setitemcolor delete bordercolor .7 0 0 1 } + mouseExit { fadeout message_arena ; setitemcolor delete bordercolor .5 .5 .5 1 } + } + +itemDef { + name delete + text "Delete" + group grpFilter + type 1 + textscale .25 + style WINDOW_STYLE_SHADER + background "ui/assets/button_red.tga" + rect 103 190 50 20 + textalign 1 + textalignx 25 + textaligny 15 + forecolor 1 1 1 1 + visible 0 + action { } + } + + + + + +// OK // + +itemDef { + name type + text "Exit" + textscale .25 + type 1 + group grpFilterbutton + style WINDOW_STYLE_SHADER + background "ui/assets/button_red.tga" + rect 103 230 50 20 + textalign 1 + textalignx 25 + textaligny 15 + forecolor 1 1 1 1 + visible 1 + action { close addfilter_popmenu ; close joinserver ; open joinserver } +} + + +} + + + +} diff --git a/ta_ui/ui/botselection.menu b/ta_ui/ui/botselection.menu new file mode 100644 index 00000000..653f63ee --- /dev/null +++ b/ta_ui/ui/botselection.menu @@ -0,0 +1,306 @@ +#include "ui/menudef.h" + +// botselection menu +{ + menuDef { + name "BotSelection" + fullScreen MENU_FALSE + visible MENU_FALSE + rect 5 200 80 132 + style WINDOW_STYLE_FILLED + backcolor 0 0 0.8 .25 + border WINDOW_BORDER_FULL + bordersize 1 + bordercolor .5 .5 1 1 + + itemDef { + name "Possess" + text "Possess" + textaligny 10 + textalign ITEM_ALIGN_LEFT + rect 5 5 75 10 + visible 1 + textscale 0.22 + mouseEnter { hide highlight ; show pbar } + + } + itemDef { + name "pbar" + group "highlight" + style WINDOW_STYLE_FILLED + rect 0 5 79 13 + visible 0 + backcolor 0.8 0.8 0.8 0.3 + decoration + } + itemDef { + name "Follow" + text "Follow" + textaligny 10 + textalign ITEM_ALIGN_Left + rect 5 17 75 10 + visible 1 + textscale 0.22 + mouseEnter { hide highlight ; show fbar } + } + itemDef { + name "fbar" + group "highlight" + style WINDOW_STYLE_FILLED + rect 0 17 79 13 + visible 0 + backcolor 0.8 0.8 0.8 0.3 + decoration + } + itemDef { + name "Go To" + text "Go To" + textaligny 10 + textalign ITEM_ALIGN_Left + rect 5 29 75 10 + visible 1 + textscale 0.22 + mouseEnter { hide highlight ; show gbar } + } + itemDef { + name "gbar" + group "highlight" + style WINDOW_STYLE_FILLED + rect 0 29 79 13 + visible 0 + backcolor 0.8 0.8 0.8 0.3 + decoration + } + itemDef { + name "Get" + text "Get" + textaligny 10 + textalign ITEM_ALIGN_Left + rect 5 41 75 10 + visible 1 + textscale 0.22 + mouseEnter { hide highlight ; show g2bar } + action { open getMenu } + } + itemDef { + name "g2bar" + group "highlight" + style WINDOW_STYLE_FILLED + rect 0 41 79 13 + visible 0 + backcolor 0.8 0.8 0.8 0.3 + decoration + } + itemDef { + name "Patrol From" + text "Patrol From" + textaligny 10 + textalign ITEM_ALIGN_Left + rect 5 53 75 10 + visible 1 + textscale 0.22 + mouseEnter { hide highlight ; show p2bar } + } + itemDef { + name "p2bar" + group "highlight" + style WINDOW_STYLE_FILLED + rect 0 53 79 13 + visible 0 + backcolor 0.8 0.8 0.8 0.3 + decoration + } + itemDef { + name "Patrol To" + text "Patrol To" + textaligny 10 + textalign ITEM_ALIGN_Left + rect 5 65 75 10 + visible 1 + textscale 0.22 + mouseEnter { hide highlight ; show p3bar } + } + itemDef { + name "p3bar" + group "highlight" + style WINDOW_STYLE_FILLED + rect 0 65 79 13 + visible 0 + backcolor 0.8 0.8 0.8 0.3 + decoration + } + itemDef { + name "Camp Near" + text "Camp Near" + textaligny 10 + textalign ITEM_ALIGN_Left + rect 5 77 75 10 + visible 1 + textscale 0.22 + mouseEnter { hide highlight ; show cbar } + } + itemDef { + name "cbar" + group "highlight" + style WINDOW_STYLE_FILLED + rect 0 75 79 13 + visible 0 + backcolor 0.8 0.8 0.8 0.3 + decoration + } + itemDef { + name "Defend" + text "Defend" + textaligny 10 + textalign ITEM_ALIGN_Left + rect 5 89 75 10 + visible 1 + textscale 0.22 + mouseEnter { hide highlight ; show dbar } + } + itemDef { + name "dbar" + group "highlight" + style WINDOW_STYLE_FILLED + rect 0 89 79 13 + visible 0 + backcolor 0.8 0.8 0.8 0.3 + decoration + } + itemDef { + name "Attack" + text "Attack" + textaligny 10 + textalign ITEM_ALIGN_Left + rect 5 101 75 10 + visible 1 + textscale 0.22 + mouseEnter { hide highlight ; show abar } + } + itemDef { + name "abar" + group "highlight" + style WINDOW_STYLE_FILLED + rect 0 101 79 13 + visible 0 + backcolor 0.8 0.8 0.8 0.3 + decoration + } + itemDef { + name "Drop Command" + text "Drop Command" + textaligny 10 + textalign ITEM_ALIGN_Left + rect 5 113 75 10 + visible 1 + textscale 0.22 + mouseEnter { hide highlight ; show dcbar } + } + itemDef { + name "dcbar" + group "highlight" + style WINDOW_STYLE_FILLED + rect 0 113 79 13 + visible 0 + backcolor 0.8 0.8 0.8 0.3 + decoration + } + } + + menuDef { + name "getMenu" + fullScreen MENU_FALSE + visible MENU_FALSE + rect 86 238 85 35 + style WINDOW_STYLE_FILLED + backcolor 0 0 0.8 .25 + border WINDOW_BORDER_FULL + bordersize 1 + bordercolor .5 .5 1 1 + + itemDef { + name "Enemy Flag" + text "Enemy Flag" + textaligny 10 + textalign ITEM_ALIGN_LEFT + rect 5 3 80 10 + visible 1 + textscale 0.22 + mouseEnter { hide highlight2 ; show efbar } + action { close getMenu ; close teamMenu ; orders get flag } + + } + itemDef { + name "efbar" + group "highlight2" + style WINDOW_STYLE_FILLED + rect 0 3 84 13 + visible 0 + backcolor 0.8 0.8 0.8 0.3 + decoration + } + itemDef { + name "Rocket Launcher" + text "Rocket Launcher" + textaligny 10 + textalign ITEM_ALIGN_LEFT + rect 5 17 80 10 + visible 1 + textscale 0.22 + mouseEnter { hide highlight2 ; show rlbar } + action { close getMenu ; close teamMenu ; orders get rocketlauncher } + + } + itemDef { + name "rlbar" + group "highlight2" + style WINDOW_STYLE_FILLED + rect 0 17 84 13 + visible 0 + backcolor 0.8 0.8 0.8 0.3 + decoration + } + } + + menuDef { + name "voiceMenu" + fullScreen MENU_FALSE + visible MENU_FALSE + rect 5 25 40 40 + style WINDOW_STYLE_SHADER + background "console" + //backcolor 0 0 0.5 0.5 + border WINDOW_BORDER_FULL + bordersize 1 + bordercolor .5 .5 .5 1 + + itemDef { + name "b" + rect 2 2 33 33 + visible 1 + decoration + ownerdraw CG_SELECTEDPLAYER_HEAD + } + + } + + menuDef { + name "voteMenu" + fullScreen MENU_FALSE + visible MENU_FALSE + rect 5 25 40 40 + style WINDOW_STYLE_SHADER + background "textures/base_wall/comp3" + backcolor 0 0 0.5 0.5 + border WINDOW_BORDER_FULL + bordersize 1 + bordercolor 0 1 0 1 + + } + + + + +} + + diff --git a/ta_ui/ui/cdkey.menu b/ta_ui/ui/cdkey.menu new file mode 100644 index 00000000..acd64917 --- /dev/null +++ b/ta_ui/ui/cdkey.menu @@ -0,0 +1,312 @@ +#include "ui/menudef.h" + +{ +\\ SETUP MENU \\ + +menuDef { + name "cdkey_menu" + visible 0 + fullscreen 0 + rect 186 0 443 426 + focusColor 1 .75 0 1 + style 1 + border 1 + onClose { + uiScript verifyCDKey + } + onOpen { + setitemcolor fadebox backcolor 0 0 0 1 ; + fadeout fadebox ; + hide grpfinish ; + uiScript getCDKey + } + onEsc { close cdkey_menu ; close setup_menu ; open main } + + +itemDef { + name window + group grpSystembutton + rect 0 2 443 426 + style WINDOW_STYLE_FILLED + border 1 + bordercolor .5 .5 .5 .5 + forecolor 1 1 1 1 + backcolor 0 0 0 .25 + visible 1 + decoration + } + + +/* +// DEMO ONLY OPTION // + + itemDef { + name demo_only + group grpcdkey + rect 0 145 454 30 + text"This Option is Not Available in Demo." + textalign 1 + textstyle 1 + textscale .333 + textalignx 217 + textaligny 23 + forecolor 1 1 1 1 + visible 1 + decoration + } +*/ + + + + + + itemDef { + name data + group grpcdkey + rect 0 145 454 30 + text"Enter your encryption code in the field below." + textalign 1 + textscale .333 + textalignx 217 + textaligny 23 + forecolor 1 1 1 1 + visible 1 + decoration + } + + + + itemDef { + name datafield + group grpcdkey + style 0 + text "Code:" + maxchars 4 + rect 60 192 50 30 + textalign ITEM_ALIGN_LEFT + textalignx 0 + textaligny 23 + textscale .333 + decoration + backcolor 1 0 0 .25 + forecolor 1 1 1 1 + visible 1 + } + + + itemDef { + name datafield + group grpcdkey + type ITEM_TYPE_EDITFIELD + style 1 + text "" + cvar "cdkey1" + maxchars 4 + rect 107 192 50 30 + textalign ITEM_ALIGN_LEFT + textalignx 0 + textaligny 23 + textscale .333 + border 1 + bordercolor .5 .5 .5 1 + backcolor 1 0 0 .25 + forecolor 1 1 1 1 + visible 1 + mouseenter { setcolor bordercolor 1 .75 0 1 } + mouseexit { setcolor bordercolor .5 .5 .5 1 } + } +itemDef { + name datafield + group grpcdkey + type ITEM_TYPE_EDITFIELD + style 1 + text "" + cvar "cdkey2" + maxchars 4 + rect 162 192 50 30 + textalign ITEM_ALIGN_LEFT + textalignx 0 + textaligny 23 + textscale .333 + border 1 + bordercolor .5 .5 .5 1 + backcolor 1 0 0 .25 + forecolor 1 1 1 1 + visible 1 + mouseenter { setcolor bordercolor 1 .75 0 1 } + mouseexit { setcolor bordercolor .5 .5 .5 1 } + + } + itemDef { + name datafield + group grpcdkey + type ITEM_TYPE_EDITFIELD + style 1 + text "" + cvar "cdkey3" + maxchars 4 + rect 217 192 50 30 + textalign ITEM_ALIGN_LEFT + textalignx 0 + textaligny 23 + textscale .333 + border 1 + bordercolor .5 .5 .5 1 + backcolor 1 0 0 .25 + forecolor 1 1 1 1 + visible 1 + mouseenter { setcolor bordercolor 1 .75 0 1 } + mouseexit { setcolor bordercolor .5 .5 .5 1 } + + } + itemDef { + name datafield + group grpcdkey + type ITEM_TYPE_EDITFIELD + style 1 + text"" + cvar "cdkey4" + maxchars 4 + rect 272 192 50 30 + textalign ITEM_ALIGN_LEFT + textalignx 0 + textaligny 23 + textscale .333 + border 1 + bordercolor .5 .5 .5 1 + backcolor 1 0 0 .25 + forecolor 1 1 1 1 + visible 1 + mouseenter { setcolor bordercolor 1 .75 0 1 } + mouseexit { setcolor bordercolor .5 .5 .5 1 } + } + itemDef { + name datafield + group grpcdkey + style 0 + text "-" + maxchars 2 + rect 327 192 60 30 + textalign ITEM_ALIGN_LEFT + textalignx 0 + textaligny 23 + textscale .333 + backcolor 0 0 0 0 + decoration + forecolor 1 1 1 1 + visible 1 + } + itemDef { + name datafield + group grpcdkey + type ITEM_TYPE_EDITFIELD + style 1 + text "" + cvar "cdkeychecksum" + maxchars 2 + rect 335 192 40 30 + textalign ITEM_ALIGN_LEFT + textalignx 0 + textaligny 23 + textscale .333 + border 1 + bordercolor .5 .5 .5 1 + forecolor 1 1 1 1 + backcolor 1 0 0 .25 + visible 1 + mouseenter { setcolor bordercolor 1 .75 0 1 } + mouseexit { setcolor bordercolor .5 .5 .5 1 } + } +itemDef { + name accept + text "Verify" + type 1 + group grpcdkey + textscale .3 + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + rect 161 247 100 26 + textalign 1 + textalignx 50 + textaligny 20 + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + visible 1 + action { + play "sound/misc/nomenu.wav" ; + uiScript verifyCDKey ; + show finish_message + } + mouseEnter { setitemcolor accept backcolor .1 .37 .1 1 } + mouseExit { setitemcolor accept backcolor .37 .1 .1 1 } + } + + itemDef { + name accept + group grpcdkey + style WINDOW_STYLE_SHADER + background "ui/assets/framebutton.tga" + rect 161 247 100 26 + visible 1 + decoration + } + + itemDef { + name accept + group grpcdkey + style WINDOW_STYLE_SHADER + background "ui/assets/leftbutton.tga" + rect 149 247 13 26 + visible 1 + decoration + } + + itemDef { + name accept + group grpcdkey + style WINDOW_STYLE_SHADER + background "ui/assets/rightbutton.tga" + rect 260 247 13 26 + visible 1 + decoration + } + + + itemDef { + name finish_message + group grpfinish + style 0 + type ITEM_TYPE_EDITFIELD + text "" + cvar ui_cdkeyvalid + rect 0 290 443 20 + textalign ITEM_ALIGN_CENTER + textalignx 221 + textaligny 20 + textscale .333 + forecolor 1 1 1 1 + visible 1 + decoration + } + + +itemDef { + name fadebox + style WINDOW_STYLE_FILLED + background "ui/assets/fadebox.tga" + forecolor 0 0 0 1 + backcolor 0 0 0 1 + rect 0 0 640 480 + visible 1 + decoration + } + + + + +} +} + + + + diff --git a/ta_ui/ui/chip.menu b/ta_ui/ui/chip.menu new file mode 100644 index 00000000..e8f76477 --- /dev/null +++ b/ta_ui/ui/chip.menu @@ -0,0 +1,39 @@ +#include "ui/menudef.h" + + itemDef { + name "f" + rect 5 7 24 24 + visible 1 + bordercolor 1 1 1 .75 + decoration + style 3 + background "ui/assets/bluechip.tga" + } + + + itemDef { + name "f" + rect 5 7 24 24 + visible 1 + decoration + ownerdraw CG_BLUE_FLAGSTATUS + } + + itemDef { + name "f" + rect 67 7 24 24 + visible 1 + bordercolor 1 1 1 .75 + decoration + style 3 + background "ui/assets/redchip.tga" + } + + itemDef { + name "f" + rect 67 7 24 24 + visible 1 + decoration + ownerdraw CG_RED_FLAGSTATUS + } + diff --git a/ta_ui/ui/cinematic.menu b/ta_ui/ui/cinematic.menu new file mode 100644 index 00000000..9a5247a8 --- /dev/null +++ b/ta_ui/ui/cinematic.menu @@ -0,0 +1,16 @@ +#include "ui/menudef.h" + +{ +\\ Cinematic \\ + + menuDef { + name "cinematic" + visible 0 + fullscreen 1 + rect 0 0 640 480 + focusColor 1 .67 0 1 + style 1 + border 1 + onopen { exec "cinematic idlogo.RoQ" ; open credit } +} +} \ No newline at end of file diff --git a/ta_ui/ui/cinematicmenu.menu b/ta_ui/ui/cinematicmenu.menu new file mode 100644 index 00000000..f34c1afb --- /dev/null +++ b/ta_ui/ui/cinematicmenu.menu @@ -0,0 +1,308 @@ +#include "ui/menudef.h" + +{ +\\ CINEMATIC \\ + + menuDef { + name "cinematicMenu" + visible 0 + fullscreen 1 + rect 0 0 640 480 + background "menuback_a" + focusColor 1 .67 0 1 + style 1 + border 1 + onEsc { close cinematicMenu ; open main } + onOpen { setitemcolor fadebox backcolor 0 0 0 1 ; + play "sound/misc/kcswish.wav" ; + playlooped "music/fla_mp03.wav" ; + fadeout fadebox ; + transition mappreview 0 0 640 480 54 144 256 192 20 10 ; + uiScript loadMovies ; + hide lightning ; + hide accept_alt ; + show accept ; + hide back_alt ; + show back ; + hide grpmessage } + + + + +itemDef { + name menuback_e + style WINDOW_STYLE_SHADER + rect 0 163 640 155 + background "menuback_e" + visible 1 + decoration + } + + + +itemDef { + name menuback_b + style WINDOW_STYLE_SHADER + rect 0 163 640 155 + visible 1 + background "menuback_b" + bordercolor 0.5 0.5 0.5 .7 + decoration + } + +itemDef { + name windowscreen + rect 0 0 640 240 + style 3 + background levelshotdetail + forecolor 0 0 0 0 + visible 1 + decoration + } +itemDef { + name windowscreen + rect 0 240 640 240 + style 3 + background levelshotdetail + forecolor 0 0 0 0 + visible 1 + decoration + } + + + +// LEVEL SELECTION BAR // + + + itemDef { + name levelbar + text "TEAM ARENA CINEMATICS" + textstyle 6 + style 2 + rect 0 16 640 40 + textscale 0.416 + textalign 1 // center + textalignx 320 // x alignment point for text + // use it to offset left/right text from the edge + // or to center the text on a different point + textaligny 27 + style 2 + border 4 + bordercolor 0.5 0.5 0.5 0.5 + bordersize 2 + backcolor 0 0 .75 0.5 + visible 1 + decoration + } + + + + + + +itemDef { + name cinematiclist + rect 330 144 256 192 + type ITEM_TYPE_LISTBOX + style WINDOW_STYLE_FILLED + elementwidth 120 + elementheight 20 + textscale .25 + elementtype LISTBOX_TEXT + feeder FEEDER_CINEMATICS + doubleclick { uiScript playMovie } + textalign 3 + textaligny 14 + border 1 + bordercolor .5 .5 .5 .5 + forecolor 1 1 1 1 + backcolor 0 0 .1 1 + outlinecolor .1 .1 .7 .5 + visible 1 + mouseEnter { fadein message_cinematic ; setitemcolor cinematiclist bordercolor .7 0 0 1 } + mouseExit { fadeout message_cinematic ; setitemcolor cinematiclist bordercolor .5 .5 .5 .5 } + } + + + +// BACK BAR // + + + itemDef { + name gotobar + style 2 + rect 0 430 640 30 + textscale 0.4 + textalign 0 // center + textalignx 60 // x alignment point for text + // use it to offset left/right text from the edge + // or to center the text on a different point + textaligny 21 + style 2 + border 4 + bordercolor 0.5 0.5 0.5 0.5 + bordersize 2 + backcolor 0 0 .75 0.5 + visible 1 + mouseEnter { setcolor backcolor .75 0 0 .5 } + mouseExit { setcolor backcolor 0 0 .75 .5 } + decoration + } + + + + itemDef { + name back + style 3 + background "ui/assets/backarrow.tga" + rect 16 424 50 50 + visible 1 + action { close cinematicMenu ; open main } + mouseEnter { hide back ; show back_alt ; fadein message_back } + } + +itemDef { + name back_alt + style WINDOW_STYLE_SHADER + background "ui/assets/backarrow_alt.tga" + rect 14 422 54 54 + backcolor 0 0 0 0 + forecolor 1 1 1 1 + visible 0 + type ITEM_TYPE_BUTTON + mouseExit { hide back_alt ; show back ; fadeout message_back } + action { close cinematicMenu ; open main } + } + +itemDef { + name accept + style 3 + rect 574 424 50 50 + background "ui/assets/forwardarrow.tga" + backcolor 0 0 0 0 + forecolor 1 1 1 1 + visible 1 + mouseEnter { playlooped "sound/misc/loop_electricity_05.wav" ; show lightning ; hide accept ; show accept_alt ; fadein message_accept } + action { close cinematicMenu ; uiScript playMovie } + } + +itemDef { + name accept_alt + style 3 + rect 572 422 54 54 + background "ui/assets/forwardarrow_alt.tga" + backcolor 0 0 0 0 + forecolor 1 1 1 1 + visible 0 + type ITEM_TYPE_BUTTON + action { close cinematicMenu ; uiScript playMovie } + mouseExit { hide lightning ; hide accept_alt ; show accept ; fadeout message_accept ; playlooped "music/fla_mp03.wav" } + } +itemDef { + name lightning + style 3 + background lightningkc + rect 46 385 174 128 + visible 0 + decoration + } +itemDef { + name lightning + style 3 + background lightningkc + rect 417 385 174 128 + visible 0 + decoration + } + + +// MESSAGES // + +itemDef { + name message_back + group grpmessage + style 0 + rect 320 430 128 30 + textstyle 1 + textalign 1 + textalignx 0 + textaligny 25 + textscale .416 + text "Exit to Main Menu" + forecolor 1 1 1 1 + decoration + visible 0 + } + +itemDef { + name message_cinematic + group grpmessage + style 0 + rect 320 430 128 30 + textalign 1 + textstyle 1 + textalignx 0 + textaligny 25 + textscale .416 + text "Select Cinematic to Play" + forecolor 1 1 1 1 + decoration + visible 0 + } +itemDef { + name message_accept + group grpmessage + style 0 + rect 320 430 128 30 + textalign 1 + textstyle 1 + textalignx 0 + textaligny 25 + textscale .416 + text "Select to Play Fullscreen" + forecolor 1 1 1 1 + decoration + visible 0 + } + +itemDef { + name mappreview + ownerdraw UI_PREVIEWCINEMATIC + rect 54 144 256 192 + backcolor 1 1 1 .25 + border 1 + bordersize 1 + bordercolor .5 .5 .5 1 + decoration + visible 1 + } + + +itemDef { + name fadebox + style WINDOW_STYLE_FILLED + background "ui/assets/fadebox.tga" + forecolor 0 0 0 1 + backcolor 0 0 0 1 + rect 0 0 640 480 + visible 1 + decoration + } + + + + + +} + + + + + + + + +} + +} +} \ No newline at end of file diff --git a/ta_ui/ui/connect.menu b/ta_ui/ui/connect.menu new file mode 100644 index 00000000..d4a3d211 --- /dev/null +++ b/ta_ui/ui/connect.menu @@ -0,0 +1,15 @@ +#include "ui/menudef.h" + + +{ + +menuDef { + name "Connect" + background "ui/assets/backscreen" + rect 0 0 640 480 + fullScreen MENU_FALSE + visible MENU_FALSE + style WINDOW_STYLE_SHADER + } + +} \ No newline at end of file diff --git a/ta_ui/ui/controls.menu b/ta_ui/ui/controls.menu new file mode 100644 index 00000000..07b2ba3f --- /dev/null +++ b/ta_ui/ui/controls.menu @@ -0,0 +1,1417 @@ +#include "ui/menudef.h" + +{ +\\ SETUP MENU \\ + +menuDef { + name "control_menu" + visible 0 + fullscreen 0 + rect 186 0 443 426 + focusColor 1 .75 0 1 + style 1 + border 1 + onClose { + uiScript saveControls + } + onOpen { setitemcolor fadebox backcolor 0 0 0 1 ; + fadeout fadebox ; + hide grpControls ; + show look ; + uiScript loadControls } + onEsc { close control_menu ; close setup_menu ; open main } + + +itemDef { + name controls_shader + group grpControls + style WINDOW_STYLE_SHADER + rect 0 45 640 60 + visible 0 + background "ui/assets/controls_shader1" + decoration + } + +itemDef { + name window + group grpControlbutton + rect 0 2 443 426 + style WINDOW_STYLE_FILLED + border 1 + bordercolor .5 .5 .5 .5 + forecolor 1 1 1 1 + backcolor 0 0 0 .25 + visible 1 + decoration + } + +itemDef { + name keyBindStatus + rect 0 15 640 30 + ownerdraw UI_KEYBINDSTATUS + text " " + forecolor 1 .75 0 1 + textscale .25 + textalignx 221 + textalign 1 + textaligny 20 + visible 0 + decoration + } + + +itemDef { + name ctr_look + text "Look" + type 1 + textscale .3 + group grpControlbutton + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + rect 17 395 45 26 + textalign 1 + textalignx 22 + textaligny 20 + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + visible 1 + action { play "sound/misc/kcaction.wav" ; + hide grpControls ; show look } + mouseEnter { show message_look ; setitemcolor ctr_look backcolor .1 .37 .1 1 } + mouseExit { hide message_look ; setitemcolor ctr_look backcolor .37 .1 .1 1 } + } +itemDef { + name ctr_look + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/framebutton.tga" + rect 17 395 45 26 + visible 1 + decoration + } + +itemDef { + name ctr_look + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/leftbutton.tga" + rect 5 395 13 26 + visible 1 + decoration + } + +itemDef { + name ctr_look + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/rightbutton.tga" + rect 61 395 13 26 + visible 1 + decoration + } + itemDef { + name look + group grpControls + type ITEM_TYPE_BIND + text "Lookup:" + cvar "+lookup" + rect 99 50 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 17 + textscale .333 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + + itemDef { + name look + group grpControls + type ITEM_TYPE_BIND + text "Look Down:" + cvar "+lookdown" + rect 99 80 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 17 + textscale .333 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + + itemDef { + name look + group grpControls + type ITEM_TYPE_BIND + text "Mouse Look:" + cvar "+mlook" + rect 99 110 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 17 + textscale .333 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + + itemDef { + name look + group grpControls + type ITEM_TYPE_BIND + text "Centerview:" + cvar "centerview" + rect 99 140 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 17 + textscale .333 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + + itemDef { + name look + group grpControls + type ITEM_TYPE_BIND + text "ZoomView:" + cvar "+zoom" + rect 99 170 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 17 + textscale .333 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + + itemDef { + name look + group grpControls + type ITEM_TYPE_YESNO + text "Free Look:" + cvar "cl_freelook" + rect 99 200 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 17 + textscale .333 + forecolor 1 1 1 1 + visible 0 + mouseenter { show yesno_message } + mouseexit { hide yesno_message } + } + +itemDef { + name ctr_move + text "Move" + type 1 + textscale .3 + group grpControlbutton + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + rect 90 395 45 26 + textalign 1 + textalignx 22 + textaligny 20 + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + visible 1 + action { play "sound/misc/kcaction.wav" ; + hide grpControls ; show move } + mouseEnter { show message_move ; setitemcolor ctr_move backcolor .1 .37 .1 1 } + mouseExit { hide message_move ; setitemcolor ctr_move backcolor .37 .1 .1 1 } + } +itemDef { + name ctr_move + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/framebutton.tga" + rect 90 395 45 26 + visible 1 + decoration + } + +itemDef { + name ctr_move + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/leftbutton.tga" + rect 78 395 13 26 + visible 1 + decoration + } + +itemDef { + name ctr_move + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/rightbutton.tga" + rect 134 395 13 26 + visible 1 + decoration + } + + + itemDef { + name move + group grpControls + type ITEM_TYPE_YESNO + text "Always Run:" + cvar "cl_run" + rect 99 50 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .333 + forecolor 1 1 1 1 + visible 0 + mouseenter { show yesno_message } + mouseexit { hide yesno_message } + } + itemDef { + name move + group grpControls + type ITEM_TYPE_BIND + text "Run / Walk:" + cvar "+speed" + rect 99 75 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .333 + forecolor 1 1 1 1 + visible 0 + } + + itemDef { + name move + group grpControls + type ITEM_TYPE_BIND + text "Forward:" + cvar "+forward" + rect 99 100 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .333 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + + itemDef { + name move + group grpControls + type ITEM_TYPE_BIND + text "Backpedal:" + cvar "+back" + rect 99 125 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .333 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + + itemDef { + name move + group grpControls + type ITEM_TYPE_BIND + text "Move Left:" + cvar "+moveleft" + rect 99 150 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .333 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + + itemDef { + name move + group grpControls + type ITEM_TYPE_BIND + text "Move Right:" + cvar "+moveright" + rect 99 175 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .333 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + + itemDef { + name move + group grpControls + type ITEM_TYPE_BIND + text "Jump:" + cvar "+moveup" + rect 99 200 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .333 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + + itemDef { + name move + group grpControls + type ITEM_TYPE_BIND + text "Crouch:" + cvar "+movedown" + rect 99 225 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .333 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + + itemDef { + name move + group grpControls + type ITEM_TYPE_BIND + text "Turn Left:" + cvar "+left" + rect 99 250 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .333 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + + itemDef { + name move + group grpControls + type ITEM_TYPE_BIND + text "Turn Right:" + cvar "+right" + rect 99 275 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .333 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + + itemDef { + name move + group grpControls + type ITEM_TYPE_BIND + text "Strafe:" + cvar "+strafe" + rect 99 300 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .333 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + + + +itemDef { + name ctr_shoot + text "Shoot" + type 1 + textscale .3 + group grpControlbutton + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + rect 163 395 45 26 + textalign 1 + textalignx 22 + textaligny 20 + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + visible 1 + action { play "sound/misc/kcaction.wav" ; + hide grpControls ; show shoot } + mouseEnter { show message_shoot ; setitemcolor ctr_shoot backcolor .1 .37 .1 1 } + mouseExit { hide message_shoot ; setitemcolor ctr_shoot backcolor .37 .1 .1 1 } + } + +itemDef { + name ctr_shoot + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/framebutton.tga" + rect 163 395 45 26 + visible 1 + decoration + } + +itemDef { + name ctr_shoot + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/leftbutton.tga" + rect 151 395 13 26 + visible 1 + decoration + } + +itemDef { + name ctr_shoot + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/rightbutton.tga" + rect 207 395 13 26 + visible 1 + decoration + } + + + itemDef { + name shoot + group grpControls + type ITEM_TYPE_BIND + text "Attack:" + cvar "+attack" + rect 99 50 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .3 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + + itemDef { + name shoot + group grpControls + type ITEM_TYPE_BIND + text "Previous Weapon:" + cvar "weapprev" + rect 99 70 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .3 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + + itemDef { + name shoot + group grpControls + type ITEM_TYPE_BIND + text "Next Weapon:" + cvar "weapnext" + rect 99 90 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .3 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + + itemDef { + name shoot + group grpControls + type ITEM_TYPE_YESNO + text "Autoswitch:" + cvar "cg_autoswitch" + rect 99 110 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .3 + forecolor 1 1 1 1 + visible 0 + mouseenter { show yesno_message } + mouseexit { hide yesno_message } + } + + itemDef { + name shoot + group grpControls + type ITEM_TYPE_BIND + text "Gauntlet:" + cvar "weapon 1" + rect 99 130 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .3 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + + itemDef { + name shoot + group grpControls + type ITEM_TYPE_BIND + text "Machinegun:" + cvar "weapon 2" + rect 99 150 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .3 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + + itemDef { + name shoot + group grpControls + type ITEM_TYPE_BIND + text "Shotgun:" + cvar "weapon 3" + rect 99 170 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .3 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + + itemDef { + name shoot + group grpControls + type ITEM_TYPE_BIND + text "Grenade Launcher:" + cvar "weapon 4" + rect 99 190 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .3 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + + itemDef { + name shoot + group grpControls + type ITEM_TYPE_BIND + text "Rocket Launcher:" + cvar "weapon 5" + rect 99 210 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .3 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + + itemDef { + name shoot + group grpControls + type ITEM_TYPE_BIND + text "Lightning Gun:" + cvar "weapon 6" + rect 99 230 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .3 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + + itemDef { + name shoot + group grpControls + type ITEM_TYPE_BIND + text "Railgun:" + cvar "Weapon 7" + rect 99 250 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .3 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + itemDef { + name shoot + group grpControls + type ITEM_TYPE_BIND + text "Plasma Gun:" + cvar "weapon 8" + rect 99 270 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .3 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + itemDef { + name shoot + group grpControls + type ITEM_TYPE_BIND + text "BFG:" + cvar "weapon 9" + rect 99 290 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .3 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + itemDef { + name shoot + group grpControls + type ITEM_TYPE_BIND + text "Nail Gun:" + cvar "weapon 11" + rect 99 310 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .3 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + itemDef { + name shoot + group grpControls + type ITEM_TYPE_BIND + text "Proximity Mine:" + cvar "weapon 12" + rect 99 330 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .3 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + itemDef { + name shoot + group grpControls + type ITEM_TYPE_BIND + text "Chain Gun:" + cvar "weapon 13" + rect 99 350 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .3 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + +itemDef { + name ctr_miscellaneous + text "Misc" + type 1 + textscale .3 + group grpControlbutton + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + rect 236 395 45 26 + textalign 1 + textalignx 22 + textaligny 20 + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + visible 1 + action { play "sound/misc/kcaction.wav" ; + hide grpControls ; show misc } + mouseEnter { show message_misc ; setitemcolor ctr_miscellaneous backcolor .1 .37 .1 1 } + mouseExit { hide message_misc ; setitemcolor ctr_miscellaneous backcolor .37 .1 .1 1 } + } + +itemDef { + name ctr_miscellaneous + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/framebutton.tga" + rect 236 395 45 26 + visible 1 + decoration + } + +itemDef { + name ctr_miscellaneous + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/leftbutton.tga" + rect 224 395 13 26 + visible 1 + decoration + } + +itemDef { + name ctr_miscellaneous + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/rightbutton.tga" + rect 280 395 13 26 + visible 1 + decoration + } + + itemDef { + name misc + group grpControls + type ITEM_TYPE_BIND + text "Show Scores:" + cvar "+scores" + rect 99 50 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .333 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + itemDef { + name misc + group grpControls + type ITEM_TYPE_BIND + text "Scroll Scores Up:" + cvar "scoresUp" + rect 99 80 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .333 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + itemDef { + name misc + group grpControls + type ITEM_TYPE_BIND + text "Scroll Scores Down:" + cvar "scoresDown" + rect 99 110 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .333 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + + itemDef { + name misc + group grpControls + type ITEM_TYPE_BIND + text "Use Item:" + cvar "+button2" + rect 99 140 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .333 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + + + itemDef { + name misc + group grpControls + type ITEM_TYPE_SLIDER + text "Sensitivity:" + cvarfloat "sensitivity" 5 1 30 + rect 99 170 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .333 + forecolor 1 1 1 1 + visible 0 + mouseenter { show slider_message } + mouseexit { hide slider_message } + } + + itemDef { + name misc + group grpControls + type ITEM_TYPE_YESNO + text "Invert Mouse:" + cvar "ui_mousePitch" + rect 99 200 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .333 + forecolor 1 1 1 1 + visible 0 + action { uiScript update ui_mousePitch } + mouseenter { show yesno_message } + mouseexit { hide yesno_message } + } + + itemDef { + name misc + group grpControls + type ITEM_TYPE_YESNO + text "Smooth Mouse:" + cvar "m_filter" + rect 99 230 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .333 + forecolor 1 1 1 1 + visible 0 + mouseenter { show yesno_message } + mouseexit { hide yesno_message } + } + + + +itemDef { + name ctr_orders + text "Orders" + type 1 + textscale .3 + group grpControlbutton + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + rect 309 395 47 26 + textalign 1 + textalignx 23 + textaligny 20 + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + visible 1 + action { play "sound/misc/kcaction.wav" ; + hide grpControls ; show orders} + mouseEnter { show message_misc ; setitemcolor ctr_orders backcolor .1 .37 .1 1 } + mouseExit { hide message_misc ; setitemcolor ctr_orders backcolor .37 .1 .1 1 } + } + +itemDef { + name ctr_orders + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/framebutton.tga" + rect 309 395 47 26 + visible 1 + decoration + } + +itemDef { + name ctr_orders + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/leftbutton.tga" + rect 297 395 13 26 + visible 1 + decoration + } + +itemDef { + name ctr_orders + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/rightbutton.tga" + rect 355 395 13 26 + visible 1 + decoration + } + + itemDef { + name orders + group grpControls + type ITEM_TYPE_BIND + text "Next Team Member:" + cvar "nextTeamMember" + rect 99 50 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .333 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + itemDef { + name orders + group grpControls + type ITEM_TYPE_BIND + text "Next Team Order:" + cvar "nextOrder" + rect 99 75 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .333 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + itemDef { + name orders + group grpControls + type ITEM_TYPE_BIND + text "Confirm Order:" + cvar "confirmOrder" + rect 99 100 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .333 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + + itemDef { + name orders + group grpControls + type ITEM_TYPE_BIND + text "Deny Order:" + cvar "denyOrder" + rect 99 125 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .333 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + + + itemDef { + name orders + group grpControls + type ITEM_TYPE_BIND + text "Offense:" + cvar "taskOffense" + rect 99 150 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .333 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + + itemDef { + name orders + group grpControls + type ITEM_TYPE_BIND + text "Defense:" + cvar "taskDefense" + rect 99 175 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .333 + forecolor 1 1 1 1 + visible 0 + } + + itemDef { + name orders + group grpControls + type ITEM_TYPE_BIND + text "Patrol:" + cvar "taskPatrol" + rect 99 200 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .333 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + itemDef { + name orders + group grpControls + type ITEM_TYPE_BIND + text "Camp:" + cvar "taskCamp" + rect 99 225 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .333 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + itemDef { + name orders + group grpControls + type ITEM_TYPE_BIND + text "Follow:" + cvar "taskFollow" + rect 99 250 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .333 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + itemDef { + name orders + group grpControls + type ITEM_TYPE_BIND + text "Retrieve:" + cvar "taskRetrieve" + rect 99 275 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .333 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + itemDef { + name orders + group grpControls + type ITEM_TYPE_BIND + text "Escort:" + cvar "taskEscort" + rect 99 300 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .333 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + + itemDef { + name orders + group grpControls + type ITEM_TYPE_BIND + text "I Have the Flag!:" + cvar "taskOwnFlag" + rect 99 325 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .333 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + itemDef { + name orders + group grpControls + type ITEM_TYPE_BIND + text "Target Suicide" + cvar "taskSuicide" + rect 99 350 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .333 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + + +itemDef { + name ctr_chat + text "Chat" + type 1 + textscale .3 + group grpControlbutton + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + rect 382 395 45 26 + textalign 1 + textalignx 23 + textaligny 20 + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + visible 1 + action { play "sound/misc/kcaction.wav" ; + hide grpControls ; show chat} + mouseEnter { show message_misc ; setitemcolor ctr_chat backcolor .1 .37 .1 1 } + mouseExit { hide message_misc ; setitemcolor ctr_chat backcolor .37 .1 .1 1 } + } + +itemDef { + name ctr_chat + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/framebutton.tga" + rect 382 395 45 26 + visible 1 + decoration + } + +itemDef { + name ctr_chat + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/leftbutton.tga" + rect 370 395 13 26 + visible 1 + decoration + } +itemDef { + name ctr_chat + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/rightbutton.tga" + rect 426 395 13 26 + visible 1 + decoration + } + +itemDef { + name chat + group grpControls + type ITEM_TYPE_BIND + text "Gesture:" + cvar "+button3" + rect 99 50 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .333 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + + itemDef { + name chat + group grpControls + type ITEM_TYPE_BIND + text "Chat:" + cvar "messagemode" + rect 99 75 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .333 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + + itemDef { + name chat + group grpControls + type ITEM_TYPE_BIND + text "Team Chat:" + cvar "messagemode2" + rect 99 100 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .333 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + + itemDef { + name chat + group grpControls + type ITEM_TYPE_BIND + text "Target Chat:" + cvar "messagemode3" + rect 99 125 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .333 + forecolor 1 1 1 1 + visible 0 + } + + + itemDef { + name chat + group grpControls + type ITEM_TYPE_BIND + text "Attack Chat:" + cvar "messagemode4" + rect 99 150 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .333 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + + itemDef { + name chat + group grpControls + type ITEM_TYPE_BIND + text "Voice Taunt:" + cvar "tauntTaunt" + rect 99 175 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .333 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + + + +// TOOLS MESSAGE // + +itemDef { + name yesno_message + rect 0 15 640 30 + text "Select the Item to Toggle to Yes or No" + forecolor 1 .75 0 1 + textscale .25 + textalignx 221 + textalign 1 + textaligny 20 + visible 0 + decoration + } +itemDef { + name slider_message + rect 0 15 640 30 + text "Drag the Slider to Increase and Decrease" + forecolor 1 .75 0 1 + textscale .25 + textalignx 221 + textalign 1 + textaligny 20 + visible 0 + decoration + } + +itemDef { + name fadebox + style WINDOW_STYLE_FILLED + background "ui/assets/fadebox.tga" + forecolor 0 0 0 1 + backcolor 0 0 0 1 + rect 0 0 640 480 + visible 1 + decoration + } + + + + + + + + + + + + + +} + +} + +} diff --git a/ta_ui/ui/controls2.menu b/ta_ui/ui/controls2.menu new file mode 100644 index 00000000..317a7a0f --- /dev/null +++ b/ta_ui/ui/controls2.menu @@ -0,0 +1,911 @@ +#include "ui/menudef.h" + +{ +\\ SETUP MENU \\ + +menuDef { + name "control_menu" + visible 0 + fullscreen 0 + rect 186 0 443 426 + focusColor 1 .75 0 1 + style 1 + border 1 + onopen { hide grpControls ; show look } + + +itemDef { + name controls_shader + group grpControls + style WINDOW_STYLE_SHADER + rect 0 45 640 60 + visible 0 + background "ui/assets/controls_shader1" + decoration + } + +itemDef { + name window + group grpControlbutton + rect 0 2 443 426 + style WINDOW_STYLE_FILLED + border 1 + bordercolor .5 .5 .5 .5 + forecolor 1 1 1 1 + backcolor 0 0 0 .25 + visible 1 + decoration + } + +itemDef { + name keyBindStatus + rect 0 15 640 30 + ownerdraw UI_KEYBINDSTATUS + text " " + forecolor 1 .75 0 1 + textscale .25 + textalignx 100 + textalign 1 + textaligny 20 + visible 1 + decoration + } + +itemDef { + name ctr_look + text "Look" + type 1 + textscale .3 + group grpControlbutton + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + rect 37 395 45 26 + textalign 1 + textalignx 22 + textaligny 20 + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + visible 1 + action { hide grpControls ; show look } + mouseEnter { show message_look ; setitemcolor ctr_look backcolor .1 .37 .1 1 } + mouseExit { hide message_look ; setitemcolor ctr_look backcolor .37 .1 .1 1 } + } +itemDef { + name ctr_look + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/framebutton.tga" + rect 37 395 45 26 + visible 1 + decoration + } + +itemDef { + name ctr_look + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/leftbutton.tga" + rect 25 395 13 26 + visible 1 + decoration + } + +itemDef { + name ctr_look + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/rightbutton.tga" + rect 81 395 13 26 + visible 1 + decoration + } + + itemDef { + name look + group grpControls + type ITEM_TYPE_BIND + text "Look Down:" + cvar "+lookdown" + //rect 99 140 256 20 + rect 99 135 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 17 + textscale .3 + forecolor 1 1 1 1 + visible 0 + } + + itemDef { + name look + group grpControls + type ITEM_TYPE_BIND + text "Mouse Look:" + cvar "+mlook" + rect 99 160 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 17 + textscale .3 + forecolor 1 1 1 1 + visible 0 + } + + itemDef { + name look + group grpControls + type ITEM_TYPE_BIND + text "Centerview:" + cvar "centerview" + rect 99 185 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 17 + textscale .3 + forecolor 1 1 1 1 + visible 0 + } + + itemDef { + name look + group grpControls + type ITEM_TYPE_BIND + text "ZoomView:" + cvar "+zoom" + rect 99 210 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 17 + textscale .3 + forecolor 1 1 1 1 + visible 0 + } + + itemDef { + name look + group grpControls + type ITEM_TYPE_YESNO + text "Free Look:" + cvar "cl_freelook" + rect 99 235 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 17 + textscale .3 + forecolor 1 1 1 1 + visible 0 + } + +itemDef { + name ctr_move + text "Move" + type 1 + textscale .3 + group grpControlbutton + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + rect 116 395 45 26 + textalign 1 + textalignx 22 + textaligny 20 + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + visible 1 + action { hide grpControls ; show move } + mouseEnter { show message_move ; setitemcolor ctr_move backcolor .1 .37 .1 1 } + mouseExit { hide message_move ; setitemcolor ctr_move backcolor .37 .1 .1 1 } + } +itemDef { + name ctr_move + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/framebutton.tga" + rect 116 395 45 26 + visible 1 + decoration + } + +itemDef { + name ctr_move + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/leftbutton.tga" + rect 104 395 13 26 + visible 1 + decoration + } + +itemDef { + name ctr_move + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/rightbutton.tga" + rect 160 395 13 26 + visible 1 + decoration + } + + +itemDef { + name move + group grpControls + type ITEM_TYPE_YESNO + text "Always Run:" + cvar "+speed" + rect 99 50 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .3 + forecolor 1 1 1 1 + visible 0 + } + + itemDef { + name move + group grpControls + type ITEM_TYPE_BIND + text "Forward:" + cvar "+forward" + rect 99 75 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .3 + forecolor 1 1 1 1 + visible 0 + } + + itemDef { + name move + group grpControls + type ITEM_TYPE_BIND + text "Backpedal:" + cvar "+back" + rect 99 100 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .3 + forecolor 1 1 1 1 + visible 0 + } + + itemDef { + name move + group grpControls + type ITEM_TYPE_BIND + text "Move Left:" + cvar "+moveleft" + rect 99 125 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .3 + forecolor 1 1 1 1 + visible 0 + } + + itemDef { + name move + group grpControls + type ITEM_TYPE_BIND + text "Move Right:" + cvar "+moveright" + rect 99 150 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .3 + forecolor 1 1 1 1 + visible 0 + } + + itemDef { + name move + group grpControls + type ITEM_TYPE_BIND + text "Jump:" + cvar "+moveup" + rect 99 175 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .3 + forecolor 1 1 1 1 + visible 0 + } + + itemDef { + name move + group grpControls + type ITEM_TYPE_BIND + text "Crouch:" + cvar "+movedown" + rect 99 200 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .3 + forecolor 1 1 1 1 + visible 0 + } + + itemDef { + name move + group grpControls + type ITEM_TYPE_BIND + text "Turn Left:" + cvar "+left" + rect 99 225 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .3 + forecolor 1 1 1 1 + visible 0 + } + + itemDef { + name move + group grpControls + type ITEM_TYPE_BIND + text "Turn Right:" + cvar "+right" + rect 99 250 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .3 + forecolor 1 1 1 1 + visible 0 + } + + itemDef { + name move + group grpControls + type ITEM_TYPE_BIND + text "Strafe:" + cvar "+strafe" + rect 99 275 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .3 + forecolor 1 1 1 1 + visible 0 + } + + + +itemDef { + name ctr_shoot + text "Shoot" + type 1 + textscale .3 + group grpControlbutton + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + rect 197 395 45 26 + textalign 1 + textalignx 22 + textaligny 20 + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + visible 1 + action { hide grpControls ; show shoot } + mouseEnter { show message_shoot ; setitemcolor ctr_shoot backcolor .1 .37 .1 1 } + mouseExit { hide message_shoot ; setitemcolor ctr_shoot backcolor .37 .1 .1 1 } + } + +itemDef { + name ctr_shoot + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/framebutton.tga" + rect 197 395 45 26 + visible 1 + decoration + } + +itemDef { + name ctr_shoot + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/leftbutton.tga" + rect 185 395 13 26 + visible 1 + decoration + } + +itemDef { + name ctr_shoot + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/rightbutton.tga" + rect 241 395 13 26 + visible 1 + decoration + } + + + itemDef { + name shoot + group grpControls + type ITEM_TYPE_BIND + text "Attack:" + cvar "+attack" + rect 99 50 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .3 + forecolor 1 1 1 1 + visible 0 + } + + itemDef { + name shoot + group grpControls + type ITEM_TYPE_BIND + text "Previous Weapon:" + cvar "weapprev" + rect 99 70 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .3 + forecolor 1 1 1 1 + visible 0 + } + + itemDef { + name shoot + group grpControls + type ITEM_TYPE_BIND + text "Next Weapon:" + cvar "weapnext" + rect 99 90 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .3 + forecolor 1 1 1 1 + visible 0 + } + + itemDef { + name shoot + group grpControls + type ITEM_TYPE_YESNO + text "Autoswitch:" + cvar "cg_autoswitch" + rect 99 110 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .3 + forecolor 1 1 1 1 + visible 0 + } + + itemDef { + name shoot + group grpControls + type ITEM_TYPE_BIND + text "Gauntlet:" + cvar "weapon 1" + rect 99 130 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .3 + forecolor 1 1 1 1 + visible 0 + } + + itemDef { + name shoot + group grpControls + type ITEM_TYPE_BIND + text "Machinegun:" + cvar "weapon 2" + rect 99 150 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .3 + forecolor 1 1 1 1 + visible 0 + } + + itemDef { + name shoot + group grpControls + type ITEM_TYPE_BIND + text "Shotgun:" + cvar "weapon 3" + rect 99 170 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .3 + forecolor 1 1 1 1 + visible 0 + } + + itemDef { + name shoot + group grpControls + type ITEM_TYPE_BIND + text "Grenade Launcher:" + cvar "weapon 4" + rect 99 190 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .3 + forecolor 1 1 1 1 + visible 0 + } + + itemDef { + name shoot + group grpControls + type ITEM_TYPE_BIND + text "Rocket Launcher:" + cvar "weapon 5" + rect 99 210 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .3 + forecolor 1 1 1 1 + visible 0 + } + + itemDef { + name shoot + group grpControls + type ITEM_TYPE_BIND + text "Lightning Gun:" + cvar "weapon 6" + rect 99 230 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .3 + forecolor 1 1 1 1 + visible 0 + } + + itemDef { + name shoot + group grpControls + type ITEM_TYPE_BIND + text "Railgun:" + cvar "Weapon 7" + rect 99 250 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .3 + forecolor 1 1 1 1 + visible 0 + } + itemDef { + name shoot + group grpControls + type ITEM_TYPE_BIND + text "Plasma Gun:" + cvar "weapon 8" + rect 99 270 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .3 + forecolor 1 1 1 1 + visible 0 + } + itemDef { + name shoot + group grpControls + type ITEM_TYPE_BIND + text "BFG:" + cvar "weapon 9" + rect 99 290 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .3 + forecolor 1 1 1 1 + visible 0 + } + itemDef { + name shoot + group grpControls + type ITEM_TYPE_BIND + text "Nail Gun:" + cvar "weapon 11" + rect 99 310 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .3 + forecolor 1 1 1 1 + visible 0 + } + itemDef { + name shoot + group grpControls + type ITEM_TYPE_BIND + text "Proximity Mine:" + cvar "weapon 12" + rect 99 330 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .3 + forecolor 1 1 1 1 + visible 0 + } + itemDef { + name shoot + group grpControls + type ITEM_TYPE_BIND + text "Chain Gun:" + cvar "weapon 13" + rect 99 350 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .3 + forecolor 1 1 1 1 + visible 0 + } + +itemDef { + name ctr_miscellaneous + text "Miscellaneous" + type 1 + textscale .3 + group grpControlbutton + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + rect 282 395 140 26 + textalign 1 + textalignx 70 + textaligny 20 + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + visible 1 + action { hide grpControls ; show misc } + mouseEnter { show message_misc ; setitemcolor ctr_miscellaneous backcolor .1 .37 .1 1 } + mouseExit { hide message_misc ; setitemcolor ctr_miscellaneous backcolor .37 .1 .1 1 } + } + +itemDef { + name ctr_miscellaneous + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/framebutton.tga" + rect 282 395 140 26 + visible 1 + decoration + } + +itemDef { + name ctr_miscellaneous + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/leftbutton.tga" + rect 270 395 13 26 + visible 1 + decoration + } + +itemDef { + name ctr_miscellaneous + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/rightbutton.tga" + rect 421 395 13 26 + visible 1 + decoration + } + + itemDef { + name misc + group grpControls + type ITEM_TYPE_BIND + text "Show Scores:" + cvar "+scores" + rect 99 50 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .3 + forecolor 1 1 1 1 + visible 0 + } + + itemDef { + name misc + group grpControls + type ITEM_TYPE_BIND + text "Use Item:" + cvar "+button2" + rect 99 75 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .3 + forecolor 1 1 1 1 + visible 0 + } + + itemDef { + name misc + group grpControls + type ITEM_TYPE_BIND + text "Gesture:" + cvar "+button3" + rect 99 100 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .3 + forecolor 1 1 1 1 + visible 0 + } + + itemDef { + name misc + group grpControls + type ITEM_TYPE_BIND + text "Chat:" + cvar "messagemode" + rect 99 125 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .3 + forecolor 1 1 1 1 + visible 0 + } + + itemDef { + name misc + group grpControls + type ITEM_TYPE_BIND + text "Team Chat:" + cvar "messagemode2" + rect 99 150 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .3 + forecolor 1 1 1 1 + visible 0 + } + + itemDef { + name misc + group grpControls + type ITEM_TYPE_BIND + text "Target Chat:" + cvar "messagemode3" + rect 99 175 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .3 + forecolor 1 1 1 1 + visible 0 + } + + itemDef { + name misc + group grpControls + type ITEM_TYPE_BIND + text "Attack Chat:" + cvar "messagemode4" + rect 99 200 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .3 + forecolor 1 1 1 1 + visible 0 + } + + itemDef { + name misc + group grpControls + type ITEM_TYPE_SLIDER + text "Senstivity:" + cvarfloat "sensitivity" 5 1 30 + rect 99 225 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .3 + forecolor 1 1 1 1 + visible 0 + } + + itemDef { + name misc + group grpControls + type ITEM_TYPE_YESNO + text "Invert Mouse:" + cvar "ui_mousePitch" + rect 99 250 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .3 + forecolor 1 1 1 1 + visible 0 + action { uiScript update mousePitch } + } + + itemDef { + name misc + group grpControls + type ITEM_TYPE_YESNO + text "Smooth Mouse:" + cvar "m_filter" + rect 99 275 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .3 + forecolor 1 1 1 1 + visible 0 + } + itemDef { + name misc + group grpControls + type ITEM_TYPE_BIND + text "Next Team Member:" + cvar "nextTeamMember" + rect 99 300 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .3 + forecolor 1 1 1 1 + visible 0 + } + itemDef { + name misc + group grpControls + type ITEM_TYPE_BIND + text "Next Team Order:" + cvar "nextOrder" + rect 99 325 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .3 + forecolor 1 1 1 1 + visible 0 + } + + + + + + + + + +} + +} + +} diff --git a/ta_ui/ui/createfavorite.menu b/ta_ui/ui/createfavorite.menu new file mode 100644 index 00000000..f0f324af --- /dev/null +++ b/ta_ui/ui/createfavorite.menu @@ -0,0 +1,199 @@ +#include "ui/menudef.h" + +{ +\\ CREATE FAVORITE POPUP MENU \\ + +menuDef { + name "createfavorite_popmenu" + visible 0 + fullscreen 0 + rect 204 122 235 235 + focusColor 1 .75 0 1 + style 1 + border 1 + popup + onESC { close createfavorite_popmenu ; open joinserver } + + + +itemDef { + name window + rect 0 0 235 235 + style 3 + background "ui/assets/mainpop.tga" + visible 1 + decoration + } +itemDef { + name window + rect 47 47 144 144 + style 3 + background "centerconsole2" + visible 1 + decoration + } + + + + + + // ENTER NAME AND ADDRESS // + +itemDef { + name name + text "Name" + style 0 + decoration + textscale .3 + rect 1 62 110 20 + textalign 1 + textalignx 117 + textaligny 16 + forecolor 0 0 0 1 + visible 1 + + } +itemDef { + name name + text "Name" + style 0 + decoration + textscale .3 + rect 0 61 110 20 + textalign 1 + textalignx 117 + textaligny 16 + forecolor 1 1 1 1 + visible 1 + } +itemDef { + name nameEntry + style 1 + maxchars 15 + text ":" + textscale .25 + TYPE 4 + cvar "ui_favoriteName" + rect 60 81 120 20 + textalign 0 + textalignx 0 + textaligny 16 + forecolor 1 1 1 1 + backcolor 0 0 0 .5 + visible 1 + mouseenter { setitemcolor nameentry backcolor 0 0 0 .75 } + mouseexit { setitemcolor nameentry backcolor 0 0 0 .5 } + } + + + + + +itemDef { + name address + text "IP Address" + style 0 + decoration + textscale .3 + rect 1 112 110 20 + textalign 1 + textalignx 117 + textaligny 16 + forecolor 0 0 0 1 + visible 1 + + } +itemDef { + name address + text "IP Address" + style 0 + decoration + textscale .3 + rect 0 111 110 20 + textalign 1 + textalignx 117 + textaligny 16 + forecolor 1 1 1 1 + visible 1 + } +itemDef { + name addressEntry + style 1 + maxchars 20 + maxPaintChars 12 + text ":" + textscale .25 + TYPE 4 + maxchars 21 + cvar "ui_favoriteAddress" + rect 60 131 120 20 + textalign 0 + textalignx 0 + textaligny 16 + forecolor 1 1 1 1 + backcolor 0 0 0 .25 + visible 1 + mouseenter { setitemcolor addressEntry backcolor 0 0 0 .75 } + mouseexit { setitemcolor addressEntry backcolor 0 0 0 .25 } + } + + + + +itemDef { + name yes + text "Ok" + type 1 + textscale .25 + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + rect 103 158 30 26 + textalign 1 + textalignx 15 + textaligny 20 + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + visible 1 + action { play "sound/misc/nomenu.wav" ; + uiScript CreateFavorite ; + close createfavorite_popmenu ; + open joinserver } + mouseEnter { setitemcolor yes backcolor .1 .37 .1 1 } + mouseExit { setitemcolor yes backcolor .37 .1 .1 1 } + } + + itemDef { + name yes + style WINDOW_STYLE_SHADER + background "ui/assets/framebutton.tga" + rect 103 158 30 26 + visible 1 + decoration + } + + itemDef { + name yes + style WINDOW_STYLE_SHADER + background "ui/assets/leftbutton.tga" + rect 97 158 7 26 + visible 1 + decoration + } + + itemDef { + name yes + style WINDOW_STYLE_SHADER + background "ui/assets/rightbutton.tga" + rect 132 158 7 26 + visible 1 + decoration + } + + + + + + +} +} +} \ No newline at end of file diff --git a/ta_ui/ui/createserver.menu b/ta_ui/ui/createserver.menu new file mode 100644 index 00000000..68f1d3de --- /dev/null +++ b/ta_ui/ui/createserver.menu @@ -0,0 +1,1315 @@ +#include "ui/menudef.h" + +{ +\\ Server Creation \\ + + menuDef { + name "createserver" + visible 0 + fullscreen 1 + rect 0 0 640 480 + background "menuback_a" + outOfBoundsClick + focusColor 1 .75 0 1 + style 1 + border 1 + onEsc { close createserver ; open main } + onOpen { setitemcolor fadebox backcolor 0 0 0 1 ; + playlooped "music/fla_mp03.wav" ; + fadeout fadebox ; + transition mappreview 7 127 190 1 7 57 190 141 20 10 ; + uiScript loadArenas ; + hide lightning ; + hide accept_alt ; + show accept ; + hide back_alt ; + show back ; + hide grpmessage } + + +itemDef { + name window + rect 2 50 200 370 + style WINDOW_STYLE_FILLED + border 1 + bordercolor 1 1 1 .25 + forecolor 1 1 1 1 + backcolor 0 0 0 .25 + visible 1 + decoration +} + +itemDef { + name window + rect 204 50 227 98 + style WINDOW_STYLE_FILLED + border 1 + bordercolor 1 1 1 .25 + forecolor 1 1 1 1 + backcolor 0 0 0 .25 + visible 1 + decoration +} + + +itemDef { + name window + rect 204 150 227 270 + style WINDOW_STYLE_FILLED + border 1 + bordercolor 1 1 1 .25 + forecolor 1 1 1 1 + backcolor 0 0 0 .25 + visible 1 + decoration +} + +itemDef { + name window + rect 433 50 200 183 + style WINDOW_STYLE_FILLED + border 1 + bordercolor 1 1 1 .25 + forecolor 1 1 1 1 + backcolor 0 0 0 .25 + visible 1 + cvarTest "ui_actualNetGameType" + hideCvar { "0" ; "1" ; "2" } + decoration +} + +itemDef { + name window + rect 433 235 200 185 + style WINDOW_STYLE_FILLED + border 1 + bordercolor 1 1 1 .25 + forecolor 1 1 1 1 + backcolor 0 0 0 .25 + visible 1 + cvarTest "ui_actualNetGameType" + hideCvar { "0" ; "1" ; "2" } + decoration +} +itemDef { + name window + rect 433 50 200 370 + style WINDOW_STYLE_FILLED + border 1 + bordercolor 1 1 1 .25 + forecolor 1 1 1 1 + backcolor 0 0 0 .25 + visible 1 + cvarTest "ui_actualNetGameType" + showCvar { "0" ; "1" ; "2" } + decoration +} + + + +// top bar // + itemDef { + name topbar + style 2 + rect 0 5 640 40 + style 2 + border 4 + bordercolor 0.5 0.5 0.5 0.5 + bordersize 2 + backcolor 0 0 .75 .5 + visible 1 + decoration + mouseEnter { setcolor backcolor .75 0 0 .5 } + mouseExit { setcolor backcolor 0 0 .75 .5 } + } + + +// GLOBAL SETTINGS + + + +itemDef { + name gametypefield + style 0 + ownerdraw UI_NETGAMETYPE + text "Type:" + textstyle 6 + rect 0 10 320 31 + textalign ITEM_ALIGN_LEFT + textalignx 20 + textaligny 26 + textscale .416 + forecolor 1 1 1 1 + visible 1 + action { play "sound/misc/kcaction.wav" } + mouseEnter { fadein message_gametype } + mouseExit { fadeout message_gametype } + } + +itemDef { + name gametypefield + style 0 + ownerdraw UI_SKILL + textstyle 6 + text "Skill:" + rect 320 10 320 31 + textalign ITEM_ALIGN_LEFT + textalignx 90 + textaligny 26 + textscale .416 + forecolor 1 1 1 1 + visible 1 + action { play "sound/misc/kcaction.wav" } + mouseEnter { fadein message_skill } + mouseExit { fadeout message_skill } + } + + +// map selection + +itemDef { + name mappreview + style 0 + ownerdraw UI_STARTMAPCINEMATIC + rect 7 57 190 141 + border 1 + bordercolor .5 .5 .5 .5 + visible 1 + } + +itemDef { + name mappreview + style WINDOW_STYLE_FILLED + rect 6 56 192 143 + border 1 + bordercolor .5 .5 .5 .5 + visible 1 + } + + itemDef { + name maplist + rect 6 205 192 211 + type ITEM_TYPE_LISTBOX + style WINDOW_STYLE_FILLED + elementwidth 120 + elementheight 20 + textscale .25 + elementtype LISTBOX_TEXT + feeder FEEDER_ALLMAPS + textstyle 6 + textalign 3 + textaligny 14 + border 1 + bordercolor .5 .5 .5 .5 + forecolor 1 1 1 1 + backcolor 0 0 .5 .25 + outlinecolor .1 .1 .7 .5 + visible 1 + columns 1 2 190 25 + mouseEnter { fadein message_arena ; setitemcolor maplist bordercolor .7 0 0 1 } + mouseExit { fadeout message_arena ; setitemcolor maplist bordercolor .5 .5 .5 .5 } + } + +// SETTINGS // + + + +// NORMAL // + + itemDef { + name normal + group grpsettings + type ITEM_TYPE_NUMERICFIELD + text "Capture Limit:" + cvar "capturelimit" + ownerdrawflag UI_SHOW_NETANYTEAMGAME + rect 260 60 128 12 + textalign ITEM_ALIGN_RIGHT + textalignx 65 + textaligny 12 + maxchars 4 + textscale .25 + forecolor 1 1 1 1 + visible 1 + } + itemDef { + name normal + group grpsettings + type ITEM_TYPE_NUMERICFIELD + text "Frag Limit:" + cvar "fraglimit" + ownerdrawflag UI_SHOW_NETANYNONTEAMGAME + rect 260 60 128 12 + textalign ITEM_ALIGN_RIGHT + textalignx 65 + maxchars 4 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 1 + } + + itemDef { + name normal + group grpsettings + type ITEM_TYPE_NUMERICFIELD + text "Time Limit:" + cvar "timelimit" + rect 260 77 128 12 + textalign ITEM_ALIGN_RIGHT + textalignx 65 + maxchars 4 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 1 + } + + + itemDef { + name normal + group grpsettings + type ITEM_TYPE_YESNO + text "Friendly Fire:" + cvar "g_friendlyfire" + rect 260 94 128 12 + textalign ITEM_ALIGN_RIGHT + textalignx 65 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 1 + } + + itemDef { + name normal + group grpsettings + type ITEM_TYPE_YESNO + text "Pure Server:" + cvar "sv_pure" + rect 260 111 128 12 + textalign ITEM_ALIGN_RIGHT + textalignx 65 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 1 + } + + itemDef { + name normal + group grpsettings + type ITEM_TYPE_MULTI + text "Dedicated:" + // syntax for this is cvar name followed by a semicolan separated list of choices first choice equals 0 + // dedicated is a special cvar in that as soon as it is set, the game goes to console only so the ui catches this one specifically + cvar "ui_dedicated" + cvarFloatList { "No" 0 "LAN" 1 "Internet" 2 } + rect 260 128 128 12 + textalign ITEM_ALIGN_RIGHT + textalignx 65 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 1 + } + + +// EXPERT // + + itemDef { + name expert + group grpsettings + type ITEM_TYPE_EDITFIELD + text "Host Name:" + cvar "sv_hostname" + maxChars 32 + maxPaintChars 10 + rect 260 160 128 12 + textalign ITEM_ALIGN_RIGHT + textalignx 65 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 1 + } + + + + itemDef { + name expert + group grpsettings + type ITEM_TYPE_YESNO + text "Auto Download:" + cvar "sv_allowdownload" + rect 260 175 128 12 + textalign ITEM_ALIGN_RIGHT + textalignx 65 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 1 + } + + itemDef { + name expert + group grpsettings + type ITEM_TYPE_YESNO + text "Enable Voting:" + cvar "g_allowvote" + rect 260 190 128 12 + textalign ITEM_ALIGN_RIGHT + textalignx 65 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 1 + } + + + + itemDef { + name expert + group grpsettings + type ITEM_TYPE_NUMERICFIELD + text "Maximum Players:" + cvar "sv_maxclients" + rect 260 205 128 12 + textalign ITEM_ALIGN_RIGHT + textalignx 65 + maxchars 4 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 1 + } + + + + itemDef { + name expert + group grpsettings + type ITEM_TYPE_NUMERICFIELD + text "Minimum Ping:" + cvar "sv_minping" + rect 260 220 128 12 + textalign ITEM_ALIGN_RIGHT + textalignx 65 + maxchars 4 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 1 + } + + itemDef { + name expert + group grpsettings + type ITEM_TYPE_NUMERICFIELD + text "Maximum Ping:" + cvar "sv_maxping" + rect 260 235 128 12 + textalign ITEM_ALIGN_RIGHT + textalignx 65 + textaligny 12 + maxchars 4 + textscale .25 + forecolor 1 1 1 1 + visible 1 + } + + itemDef { + name expert + group grpsettings + type ITEM_TYPE_YESNO + text "Force Join:" + cvar "g_teamautojoin" + rect 260 250 128 12 + textalign ITEM_ALIGN_RIGHT + textalignx 65 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 1 + } + + itemDef { + name expert + group grpsettings + type ITEM_TYPE_YESNO + text "Even Teams:" + cvar "g_teamforcebalance" + rect 260 265 128 12 + textalign ITEM_ALIGN_RIGHT + textalignx 65 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 1 + } + + itemDef { + name expert + group grpsettings + type ITEM_TYPE_YESNO + text "Do Warmup:" + cvar "g_dowarmup" + rect 260 280 128 12 + textalign ITEM_ALIGN_RIGHT + textalignx 65 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 1 + } + + itemDef { + name expert + group grpsettings + type ITEM_TYPE_NUMERICFIELD + text "Warmup time:" + cvar "g_warmup" + rect 260 295 128 12 + textalign ITEM_ALIGN_RIGHT + textalignx 65 + textaligny 12 + textscale .25 + maxchars 4 + forecolor 1 1 1 1 + visible 1 + } + + itemDef { + name expert + group grpsettings + type ITEM_TYPE_YESNO + text "Synchronous Client:" + cvar "g_synchronousclients" + rect 260 310 128 12 + textalign ITEM_ALIGN_RIGHT + textalignx 65 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 1 + } + + itemDef { + name expert + group grpsettings + type ITEM_TYPE_NUMERICFIELD + text "Max Rate:" + cvar "sv_maxrate" + rect 260 325 128 12 + textalign ITEM_ALIGN_RIGHT + textalignx 65 + maxchars 4 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 1 + } + + itemDef { + name expert + group grpsettings + type ITEM_TYPE_NUMERICFIELD + text "Zombie Time:" + cvar "sv_zombietime" + rect 260 340 128 12 + maxchars 4 + textalign ITEM_ALIGN_RIGHT + textalignx 65 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 1 + } + + itemDef { + name expert + group grpsettings + type ITEM_TYPE_NUMERICFIELD + text "Reconnect Limit:" + cvar "sv_reconnectlimit" + maxchars 4 + rect 260 355 128 12 + textalign ITEM_ALIGN_RIGHT + textalignx 65 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 1 + } + itemDef { + name expert + group grpsettings + type ITEM_TYPE_YESNO + text "Require Password:" + cvar "g_needpassword" + rect 260 370 128 12 + textalign ITEM_ALIGN_RIGHT + textalignx 65 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 1 + } + + itemDef { + name expert + group grpsettings + type 4 + text "Password:" + cvar "g_password" + rect 260 385 128 12 + maxchars 10 + maxPaintChars 10 + textalign ITEM_ALIGN_RIGHT + textalignx 65 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 1 + } + + + +// BOT LIST FOR TEAM GAMES + +itemDef { + name gametypefield + style 0 + ownerdraw UI_BLUETEAMNAME + rect 450 70 128 28 + textalign ITEM_ALIGN_LEFT + textalignx 0 + textaligny 26 + textscale .333 + forecolor 0 0 1 1 + border 0 + bordercolor 0 0 0 0 + visible 1 + cvarTest "ui_actualNetGameType" + hideCvar { "0" ; "1" ; "2" } + action { play "sound/misc/nomenu.wav" } + mouseEnter { fadein message_clan } + mouseExit { fadeout message_clan } + } + + + +itemDef { + name gametypefield + style 0 + ownerdraw UI_BLUETEAM1 + rect 450 100 128 20 + text "1." + textalign ITEM_ALIGN_LEFT + textalignx 0 + textaligny 18 + textscale .333 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 1 + cvarTest "ui_actualNetGameType" + hideCvar { "0" ; "1" ; "2" } + action { play "sound/misc/nomenu.wav" } + mouseEnter { fadein message_slot } + mouseExit { fadeout message_slot } + } + +itemDef { + name gametypefield + style 0 + ownerdraw UI_BLUETEAM2 + rect 450 122 128 20 + textalign ITEM_ALIGN_LEFT + textalignx 0 + textaligny 18 + text "2." + textscale .333 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 1 + cvarTest "ui_actualNetGameType" + hideCvar { "0" ; "1" ; "2" } + action { play "sound/misc/nomenu.wav" } + mouseEnter { fadein message_slot } + mouseExit { fadeout message_slot } + } + +itemDef { + name gametypefield + style 0 + text "3." + ownerdraw UI_BLUETEAM3 + rect 450 144 128 20 + textalign ITEM_ALIGN_LEFT + textalignx 0 + textaligny 18 + textscale .333 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 1 + cvarTest "ui_actualNetGameType" + hideCvar { "0" ; "1" ; "2" } + action { play "sound/misc/nomenu.wav" } + mouseEnter { fadein message_slot } + mouseExit { fadeout message_slot } + } + +itemDef { + name gametypefield + style 0 + text "4." + ownerdraw UI_BLUETEAM4 + rect 450 166 128 20 + textalign ITEM_ALIGN_LEFT + textalignx 0 + textaligny 18 + textscale .333 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 1 + cvarTest "ui_actualNetGameType" + hideCvar { "0" ; "1" ; "2" } + action { play "sound/misc/nomenu.wav" } + mouseEnter { fadein message_slot } + mouseExit { fadeout message_slot } + } + +itemDef { + name gametypefield + style 0 + text "5." + ownerdraw UI_BLUETEAM5 + rect 450 188 128 20 + textalign ITEM_ALIGN_LEFT + textalignx 0 + textaligny 18 + textscale .333 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 1 + cvarTest "ui_actualNetGameType" + hideCvar { "0" ; "1" ; "2" } + action { play "sound/misc/nomenu.wav" } + mouseEnter { fadein message_slot } + mouseExit { fadeout message_slot } + } + + + + +itemDef { + name gametypefield + style 0 + ownerdraw UI_REDTEAMNAME + rect 450 250 128 28 + textalign ITEM_ALIGN_LEFT + textalignx 0 + textaligny 26 + textscale .333 + forecolor 1 0 0 1 + border 0 + bordercolor 0 0 0 0 + visible 1 + cvarTest "ui_actualNetGameType" + hideCvar { "0" ; "1" ; "2" } + action { play "sound/misc/nomenu.wav" } + mouseEnter { fadein message_clan } + mouseExit { fadeout message_clan } + } + + +itemDef { + name gametypefield + style 0 + ownerdraw UI_REDTEAM1 + text "1." + rect 450 280 128 20 + textalign ITEM_ALIGN_LEFT + textalignx 0 + textaligny 18 + textscale .333 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 1 + cvarTest "ui_actualNetGameType" + hideCvar { "0" ; "1" ; "2" } + action { play "sound/misc/nomenu.wav" } + mouseEnter { fadein message_slot } + mouseExit { fadeout message_slot } + } + +itemDef { + name gametypefield + style 0 + text "2." + ownerdraw UI_REDTEAM2 + rect 450 302 128 20 + textalign ITEM_ALIGN_LEFT + textalignx 0 + textaligny 18 + textscale .333 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 1 + cvarTest "ui_actualNetGameType" + hideCvar { "0" ; "1" ; "2" } + action { play "sound/misc/nomenu.wav" } + mouseEnter { fadein message_slot } + mouseExit { fadeout message_slot } + } + +itemDef { + name gametypefield + style 0 + text "3." + ownerdraw UI_REDTEAM3 + rect 450 324 128 20 + textalign ITEM_ALIGN_LEFT + textalignx 0 + textaligny 18 + textscale .333 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 1 + cvarTest "ui_actualNetGameType" + hideCvar { "0" ; "1" ; "2" } + action { play "sound/misc/nomenu.wav" } + mouseEnter { fadein message_slot } + mouseExit { fadeout message_slot } + } + +itemDef { + name gametypefield + style 0 + text "4." + ownerdraw UI_REDTEAM4 + rect 450 346 128 20 + textalign ITEM_ALIGN_LEFT + textalignx 0 + textaligny 18 + textscale .333 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 1 + cvarTest "ui_actualNetGameType" + hideCvar { "0" ; "1" ; "2" } + action { play "sound/misc/nomenu.wav" } + mouseEnter { fadein message_slot } + mouseExit { fadeout message_slot } + } + +itemDef { + name gametypefield + style 0 + text "5." + ownerdraw UI_REDTEAM5 + rect 450 368 128 20 + textalign ITEM_ALIGN_LEFT + textalignx 0 + textaligny 18 + textscale .333 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 1 + cvarTest "ui_actualNetGameType" + hideCvar { "0" ; "1" ; "2" } + action { play "sound/misc/nomenu.wav" } + mouseEnter { fadein message_slot } + mouseExit { fadeout message_slot } + } + +// BOT LIST FOR NONTEAMGAMES + + +itemDef { + name gametypefield + style 0 + text "1." + ownerdraw UI_BLUETEAM1 + rect 450 100 128 20 + textalign ITEM_ALIGN_LEFT + textalignx 0 + textaligny 18 + textscale .333 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 1 + cvarTest "ui_actualNetGameType" + showCvar { "0" ; "1" ; "2" } + action { play "sound/misc/nomenu.wav" } + mouseEnter { fadein message_slot } + mouseExit { fadeout message_slot } + } + +itemDef { + name gametypefield + style 0 + text "2." + ownerdraw UI_REDTEAM1 + rect 450 125 128 20 + textalign ITEM_ALIGN_LEFT + textalignx 0 + textaligny 18 + textscale .333 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 1 + cvarTest "ui_actualNetGameType" + showCvar { "0" ; "1" ; "2" } + action { play "sound/misc/nomenu.wav" } + mouseEnter { fadein message_slot } + mouseExit { fadeout message_slot } + } + +itemDef { + name gametypefield + style 0 + text "3." + ownerdraw UI_BLUETEAM2 + rect 450 150 128 20 + textalign ITEM_ALIGN_LEFT + textalignx 0 + textaligny 18 + textscale .333 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 1 + cvarTest "ui_actualNetGameType" + showCvar { "0" ; "1" ; "2" } + action { play "sound/misc/nomenu.wav" } + mouseEnter { fadein message_slot } + mouseExit { fadeout message_slot } + } + +itemDef { + name gametypefield + style 0 + text "4." + ownerdraw UI_REDTEAM2 + rect 450 175 128 20 + textalign ITEM_ALIGN_LEFT + textalignx 0 + textaligny 18 + textscale .333 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 1 + cvarTest "ui_actualNetGameType" + showCvar { "0" ; "1" ; "2" } + action { play "sound/misc/nomenu.wav" } + mouseEnter { fadein message_slot } + mouseExit { fadeout message_slot } + } + +itemDef { + name gametypefield + style 0 + text "5." + ownerdraw UI_BLUETEAM3 + rect 450 200 128 20 + textalign ITEM_ALIGN_LEFT + textalignx 0 + textaligny 18 + textscale .333 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 1 + cvarTest "ui_actualNetGameType" + showCvar { "0" ; "1" ; "2" } + action { play "sound/misc/nomenu.wav" } + mouseEnter { fadein message_slot } + mouseExit { fadeout message_slot } + } + + + + + + + +itemDef { + name gametypefield + style 0 + text "6." + ownerdraw UI_REDTEAM3 + rect 450 225 128 20 + textalign ITEM_ALIGN_LEFT + textalignx 0 + textaligny 18 + textscale .333 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 1 + cvarTest "ui_actualNetGameType" + showCvar { "0" ; "1" ; "2" } + action { play "sound/misc/nomenu.wav" } + mouseEnter { fadein message_slot } + mouseExit { fadeout message_slot } + } + +itemDef { + name gametypefield + style 0 + text "7." + ownerdraw UI_BLUETEAM4 + rect 450 250 128 20 + textalign ITEM_ALIGN_LEFT + textalignx 0 + textaligny 18 + textscale .333 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 1 + cvarTest "ui_actualNetGameType" + showCvar { "0" ; "1" ; "2" } + action { play "sound/misc/nomenu.wav" } + mouseEnter { fadein message_slot } + mouseExit { fadeout message_slot } + } + +itemDef { + name gametypefield + style 0 + text "8." + ownerdraw UI_REDTEAM4 + rect 450 275 128 20 + textalign ITEM_ALIGN_LEFT + textalignx 0 + textaligny 18 + textscale .333 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 1 + cvarTest "ui_actualNetGameType" + showCvar { "0" ; "1" ; "2" } + action { play "sound/misc/nomenu.wav" } + mouseEnter { fadein message_slot } + mouseExit { fadeout message_slot } + } + +itemDef { + name gametypefield + style 0 + text "9." + ownerdraw UI_BLUETEAM5 + rect 450 300 128 20 + textalign ITEM_ALIGN_LEFT + textalignx 0 + textaligny 18 + textscale .333 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 1 + cvarTest "ui_actualNetGameType" + showCvar { "0" ; "1" ; "2" } + action { play "sound/misc/nomenu.wav" } + mouseEnter { fadein message_slot } + mouseExit { fadeout message_slot } + } + +itemDef { + name gametypefield + style 0 + text "10." + ownerdraw UI_REDTEAM5 + rect 443 325 128 20 + textalign ITEM_ALIGN_LEFT + textalignx 0 + textaligny 18 + textscale .333 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 1 + cvarTest "ui_actualNetGameType" + showCvar { "0" ; "1" ; "2" } + action { play "sound/misc/nomenu.wav" } + mouseEnter { fadein message_slot } + mouseExit { fadeout message_slot } + } + + + +// BACK BAR // + + + itemDef { + name gotobar + style 2 + rect 0 430 640 30 + textscale 0.4 + textalign 0 // center + textalignx 60 // x alignment point for text + // use it to offset left/right text from the edge + // or to center the text on a different point + textaligny 21 + style 2 + border 4 + bordercolor 0.5 0.5 0.5 0.75 + bordersize 2 + backcolor 0 0 .75 0.5 + visible 1 + mouseEnter { setcolor backcolor .75 0 0 .5 } + mouseExit { setcolor backcolor 0 0 .75 .5 } + decoration + } + + itemDef { + name back + style 3 + background "ui/assets/backarrow.tga" + rect 16 424 50 50 + visible 1 + action { close createserver ; open main } + mouseEnter { hide back ; show back_alt ; fadein message_back } + } + +itemDef { + name back_alt + style WINDOW_STYLE_SHADER + background "ui/assets/backarrow_alt.tga" + rect 14 422 54 54 + backcolor 0 0 0 0 + forecolor 1 1 1 1 + visible 0 + type ITEM_TYPE_BUTTON + mouseExit { hide back_alt ; show back ; fadeout message_back } + action { close createserver ; open main } + } + + + + itemDef { + name accept + style 3 + rect 574 424 50 50 + background "ui/assets/forwardarrow.tga" + backcolor 0 0 0 0 + forecolor 1 1 1 1 + visible 1 + mouseEnter { playlooped "sound/misc/loop_electricity_05.wav" ; show lightning ; hide accept ; show accept_alt ; fadein message_accept } + action { close fight ; uiScript StartServer } +/* + // demo_only + cvarTest "ui_actualNetGameType" + hideCvar { "0" ; "1" } +*/ + } + + itemDef { + name accept_alt + style 3 + rect 572 422 54 54 + background "ui/assets/forwardarrow_alt.tga" + backcolor 0 0 0 0 + forecolor 1 1 1 1 + visible 0 + type ITEM_TYPE_BUTTON + action { close fight ; uiScript StartServer } + mouseExit { hide lightning ; hide accept_alt ; show accept ; fadeout message_accept ; playlooped "music/fla_mp03.wav" } +/* + // demo_only + cvarTest "ui_actualNetGameType" + hideCvar { "0" ; "1" } +*/ + } +itemDef { + name lightning + style 3 + background lightningkc + rect 46 385 236 128 + visible 0 + decoration + } +itemDef { + name lightning + style 3 + background lightningkc + rect 355 385 236 128 + visible 0 + decoration + } + + + +// MESSAGES // + +itemDef { + name message_back + group grpmessage + style 0 + rect 320 430 128 30 + textalign 1 + textstyle 1 + textalignx 0 + textaligny 25 + textscale .416 + text "Exit to Main Menu" + forecolor 1 1 1 1 + decoration + visible 0 + } + +itemDef { + name message_accept + group grpmessage + style 0 + rect 320 430 128 30 + textalign 1 + textalignx 0 + textstyle 1 + textaligny 25 + textscale .416 + text "Start Server" + forecolor 1 1 1 1 + decoration + visible 0 + } + +itemDef { + name message_gametype + group grpmessage + style 0 + rect 320 430 128 30 + textalign 1 + textstyle 1 + textalignx 0 + textaligny 25 + textscale .416 + text "Set GameType" + forecolor 1 1 1 1 + decoration + visible 0 + } + +itemDef { + name message_skill + group grpmessage + style 0 + rect 320 430 128 30 + textalign 1 + textstyle 1 + textalignx 0 + textaligny 25 + textscale .416 + text "Set Skill Level" + forecolor 1 1 1 1 + decoration + visible 0 + } +itemDef { + name message_arena + group grpmessage + style 0 + rect 320 430 128 30 + textalign 1 + textstyle 1 + textalignx 0 + textaligny 25 + textscale .416 + text "Choose Your Arena" + forecolor 1 1 1 1 + decoration + visible 0 + } +itemDef { + name message_clan + group grpmessage + style 0 + rect 320 430 128 30 + textalign 1 + textstyle 1 + textalignx 0 + textaligny 25 + textscale .416 + text "Click to toggle through clan list" + forecolor 1 1 1 1 + decoration + visible 0 + } +itemDef { + name message_slot + group grpmessage + style 0 + rect 320 430 128 30 + textalign 1 + textstyle 1 + textalignx 0 + textaligny 25 + textscale .416 + text "Click to toggle botnames, human, or closed slots" + forecolor 1 1 1 1 + decoration + visible 0 + } +itemDef { + name message_normal + group grpmessage + style 0 + rect 320 430 128 30 + textalign 1 + textstyle 1 + textalignx 0 + textaligny 25 + textscale .416 + text "Select to Modify Normal Server Settings" + forecolor 1 1 1 1 + decoration + visible 0 + } +itemDef { + name message_expert + group grpmessage + style 0 + rect 320 430 128 30 + textalign 1 + textstyle 1 + textalignx 0 + textaligny 25 + textscale .416 + text "Select to Modify Expert Server Settings" + forecolor 1 1 1 1 + decoration + visible 0 + } + +itemDef { + name fadebox + style WINDOW_STYLE_FILLED + background "ui/assets/fadebox.tga" + forecolor 0 0 0 1 + backcolor 0 0 0 1 + rect 0 0 640 480 + visible 1 + decoration + } + + +} +} + +} diff --git a/ta_ui/ui/credit.menu b/ta_ui/ui/credit.menu new file mode 100644 index 00000000..120e2d95 --- /dev/null +++ b/ta_ui/ui/credit.menu @@ -0,0 +1,459 @@ +#include "ui/menudef.h" + +{ +\\ CREDIT \\ + + menuDef { + name "credit" + visible 0 + fullscreen 1 + rect 0 0 640 480 + background "menuback_a" + focusColor 1 .67 0 1 + style 1 + border 1 + soundloop "" + onEsc { close credit ; open menu } + onOpen { setitemcolor fadebox backcolor 0 0 0 1 ; + fadeout fadebox ; + show grpidcredit ; + hide grpoutcredit ; + transition programming 0 0 640 30 0 80 640 30 20 10 ; + transition artist 0 0 640 30 0 110 640 30 20 10 ; + transition levelDesign 0 0 640 30 0 140 640 30 20 10 ; + transition gameDesign 0 0 640 30 0 170 640 30 20 10 ; + transition ceo 0 0 640 30 0 200 640 30 20 10 ; + transition bizdev 0 0 640 30 0 230 640 30 20 10 ; + transition idMom 0 0 640 30 0 260 640 30 20 10 ; + transition devAssist 0 0 640 30 0 290 640 30 20 10 ; + transition progAssist 0 0 640 30 0 340 640 30 20 10 ; + hide back_alt ; + show back ; + hide grpmessage } + + + + +// LEVEL SELECTION BAR // + + +itemDef { + name mappreview + style 5 + cinematic "idlogo.roq" + rect 0 0 640 480 + backcolor 1 1 1 .25 + border 1 + bordersize 1 + bordercolor .5 .5 .5 1 + decoration + visible 1 + } + + +itemDef { + name idcredit + group grpidcredit + rect 0 50 620 20 + style 1 + textalign 1 + textalignx 320 + textaligny 10 + textstyle 6 + textscale .4 + text "id Software is:" + forecolor 1 1 1 1 + decoration + visible 0 + } + + +itemDef { + name programming + group grpidcredit + style 0 + rect 0 80 640 30 + textalign 1 + textstyle 6 + textalignx 320 + textaligny 10 + textscale .333 + text "PROGRAMMING: John Carmack, Robert Duffy, Jim Dose'" + forecolor 1 1 1 1 + decoration + visible 0 + } + +itemDef { + name artist + group grpidcredit + style 0 + rect 0 110 640 30 + textstyle 6 + textalign 1 + textalignx 320 + textaligny 10 + textscale .333 + text "ART: Adrian Carmack, Kevin Cloud, Kenneth Scott, Seneca Menard, Fred Nilsson " + forecolor 1 1 1 1 + decoration + visible 0 + } + + +itemDef { + name levelDesign + group grpidcredit + style 0 + rect 0 140 640 30 + textalign 1 + textalignx 320 + textstyle 6 + textaligny 10 + textscale .333 + text "LEVEL DESIGN: Tim Willits, Christian Antkow, Paul Jaquays" + forecolor 1 1 1 1 + decoration + visible 0 + } + +itemDef { + name gameDesign + group grpidcredit + style 0 + rect 0 170 640 30 + textalign 1 + textalignx 320 + textstyle 6 + textaligny 10 + textscale .333 + text "GAME DESIGN: Graeme Devine" + forecolor 1 1 1 1 + decoration + visible 0 + } + +itemDef { + name ceo + group grpidcredit + style 0 + rect 0 200 640 30 + textstyle 6 + textalign 1 + textalignx 320 + textaligny 10 + textscale .333 + text "CEO: Todd Hollenshead" + forecolor 1 1 1 1 + decoration + visible 0 + } + +itemDef { + name bizDev + group grpidcredit + style 0 + rect 0 230 640 30 + textalign 1 + textalignx 320 + textstyle 6 + textaligny 10 + textscale .333 + text "BUSINESS DEVELOPMENT: Marty Stratton" + forecolor 1 1 1 1 + decoration + visible 0 + } + +itemDef { + name idMom + group grpidcredit + style 0 + rect 0 260 640 30 + textalign 1 + textalignx 320 + textstyle 6 + textaligny 10 + textscale .333 + text "OFFICE MANAGER AND ID MOM: Donna Jackson" + forecolor 1 1 1 1 + decoration + visible 0 + } + +itemDef { + name devAssist + group grpidcredit + style 0 + rect 0 290 640 30 + textalign 1 + textalignx 320 + textstyle 6 + textaligny 10 + textscale .333 + text "DEVELOPMENT ASSISTANCE: Eric Webb" + forecolor 1 1 1 1 + decoration + visible 0 + } + +itemDef { + name progAssist + group grpidcredit + style 0 + rect 0 340 640 30 + textalign 1 + textalignx 320 + textstyle 6 + textaligny 10 + textscale .333 + text "BOT AI & PROGRAMMING ASSISTANCE: Jan Paul van Waveren" + forecolor 1 1 1 1 + decoration + visible 0 + } + + +itemDef { + name outcreditbttn + group grpidcredit + rect 255 400 130 26 + type 1 + text "Additional Credit" + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + textalign 1 + textscale .25 + textalignx 65 + textaligny 20 + visible 0 + backcolor .37 .1 .1 1 + forecolor 1 1 1 1 + action { play "sound/misc/kcaction.wav" ; + hide grpidcredit ; + show grpoutcredit } + mouseEnter { setitemcolor outcreditbttn backcolor .1 .37 .1 1 } + mouseExit { setitemcolor outcreditbttn backcolor .37 .1 .1 1 } + } +itemDef { + name idcreditbttn + group grpidcredit + style WINDOW_STYLE_SHADER + background "ui/assets/framebutton.tga" + rect 255 400 130 26 + visible 0 + decoration + } + +itemDef { + name idcreditbttn + group grpidcredit + style WINDOW_STYLE_SHADER + background "ui/assets/leftbutton.tga" + rect 243 400 13 26 + visible 0 + decoration + } + +itemDef { + name idcreditbttn + group grpidcredit + style WINDOW_STYLE_SHADER + background "ui/assets/rightbutton.tga" + rect 384 400 13 26 + visible 0 + decoration + } + +// OUTSIDE CREDIT // + +itemDef { + name outcredit + group grpoutcredit + rect 0 50 620 20 + style 1 + textalign 1 + textalignx 320 + textaligny 10 + textstyle 6 + textscale .4 + text "Additional Assistance" + forecolor 1 1 1 1 + decoration + visible 0 + } + +itemDef { + name outcredit + group grpoutcredit + style 1 + rect 75 100 620 15 + textalign 0 + textstyle 3 + textalignx 5 + textaligny 10 + textscale .25 + wrapped + text"Additional Map Work by Ka'ai Cluney\r" + "Additional Progamming by John Cash\r" + "Character Models and Animation by Paul Steed\r" + "Additional Model Work by Beau Anderson\r" + "Motion Capture by Pyros Pictures, House of Moves, and LocoMotion Studios\r\r\r" + "Sound Design by Soundelux Showorks\r" + "Music by Sonic Mayhem (www.sonicmayhem.com)\r" + "Music by Front Line Assembly\r\r\r" + "Manual by William W. Connors\r" + "Manual & Package Design by Focus2\r" + "Portions of Team Arena based in part on the work of the Independent JPEG Group\r" + "Font rendering performed by FreeType ( www.freetype.org )" + forecolor 1 1 1 1 + decoration + visible 0 + } +itemDef { + name idcreditbttn + group grpoutcredit + type 1 + rect 260 400 120 26 + text "id Credit" + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + textalign 1 + textscale .25 + textalignx 60 + textaligny 20 + visible 0 + backcolor .37 .1 .1 1 + forecolor 1 1 1 1 + action { play "sound/misc/kcaction.wav" ; + hide grpoutcredit ; + show grpidcredit } + mouseEnter { setitemcolor idcreditbttn backcolor .1 .37 .1 1 } + mouseExit { setitemcolor idcreditbttn backcolor .37 .1 .1 1 } + } +itemDef { + name outcredit + group grpoutcredit + style WINDOW_STYLE_SHADER + background "ui/assets/framebutton.tga" + rect 260 400 120 26 + visible 0 + decoration + } + +itemDef { + name outcredit + group grpoutcredit + style WINDOW_STYLE_SHADER + background "ui/assets/leftbutton.tga" + rect 248 400 13 26 + visible 0 + decoration + } + +itemDef { + name outcredit + group grpoutcredit + style WINDOW_STYLE_SHADER + background "ui/assets/rightbutton.tga" + rect 379 400 13 26 + visible 0 + decoration + } + + + + + + +// BACK BAR // + + + itemDef { + name gotobar + style 2 + rect 0 430 640 30 + textscale 0.4 + textalign 0 // center + textalignx 60 // x alignment point for text + // use it to offset left/right text from the edge + // or to center the text on a different point + textaligny 21 + style 2 + border 4 + bordercolor 0.5 0.5 0.5 0.5 + bordersize 2 + backcolor 0 0 .75 0.5 + visible 1 + mouseEnter { setcolor backcolor .75 0 0 .5 } + mouseExit { setcolor backcolor 0 0 .75 .5 } + decoration + } + + itemDef { + name back + style 3 + background "ui/assets/backarrow.tga" + rect 16 424 50 50 + visible 1 + action { close credit ; open main } + mouseEnter { hide back ; show back_alt ; show message_back } + } + +itemDef { + name back_alt + style WINDOW_STYLE_SHADER + background "ui/assets/backarrow_alt.tga" + rect 14 422 54 54 + backcolor 0 0 0 0 + forecolor 1 1 1 1 + visible 0 + type ITEM_TYPE_BUTTON + mouseExit { hide back_alt ; show back ; hide message_back } + action { close credit ; open main } + } + + + +// MESSAGES // + +itemDef { + name message_back + group grpmessage + style 0 + rect 320 430 128 30 + textstyle 1 + textalign 1 + textalignx 0 + textaligny 25 + textscale .416 + text "Exit to Main Menu" + forecolor 1 1 1 1 + decoration + visible 0 + } + + +itemDef { + name fadebox + style WINDOW_STYLE_FILLED + background "ui/assets/fadebox.tga" + forecolor 0 0 0 1 + backcolor 0 0 0 1 + rect 0 0 640 480 + visible 1 + decoration + } + + + + + + +} + + +} + +} +} \ No newline at end of file diff --git a/ta_ui/ui/default.menu b/ta_ui/ui/default.menu new file mode 100644 index 00000000..c8edfe58 --- /dev/null +++ b/ta_ui/ui/default.menu @@ -0,0 +1,255 @@ +#include "ui/menudef.h" + +{ +\\ DEFAULT MENU \\ + +menuDef { + name "default_menu" + visible 0 + fullscreen 0 + rect 186 0 443 426 + focusColor 1 .75 0 1 + style 1 + border 1 + onOpen { setitemcolor fadebox backcolor 0 0 0 1 ; + fadeout fadebox ; + show grpdefault ; + hide grpfinish } + onEsc { close default_menu ; close setup_menu ; open main } + + + + +itemDef { + name window + group grpControlbutton + rect 0 2 443 426 + style WINDOW_STYLE_FILLED + border 1 + bordercolor .5 .5 .5 .5 + forecolor 1 1 1 1 + backcolor 0 0 0 .25 + visible 1 + decoration +} + + + + + itemDef { + name default + group grpdefault + style 0 + text "This will set your Controls," + rect 0 140 443 20 + textalign ITEM_ALIGN_CENTER + textalignx 221 + textaligny 20 + textscale .333 + forecolor 1 1 1 1 + visible 1 + decoration + } + itemDef { + name default + group grpdefault + style 0 + text "Graphics and game Options" + rect 0 160 443 20 + textalign ITEM_ALIGN_CENTER + textalignx 221 + textaligny 20 + textscale .333 + forecolor 1 1 1 1 + visible 1 + decoration + } + itemDef { + name default + group grpdefault + style 0 + text "to their original defaults." + rect 0 180 443 20 + textalign ITEM_ALIGN_CENTER + textalignx 221 + textaligny 20 + textscale .333 + forecolor 1 1 1 1 + visible 1 + decoration + } + itemDef { + name default + group grpdefault + style 0 + text "Are you sure?" + rect 0 220 443 20 + textalign ITEM_ALIGN_CENTER + textalignx 221 + textaligny 20 + textscale .333 + forecolor 1 1 1 1 + visible 1 + decoration + } + + + + +itemDef { + name yes + text "YES" + group grpdefault + type 1 + textscale .3 + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + rect 135 250 70 26 + textalign 1 + textalignx 35 + textaligny 20 + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + visible 1 + action { play "sound/misc/nomenu.wav" ; + hide grpdefault ; + show grpfinish ; + uiScript resetDefaults } + mouseEnter { setitemcolor yes backcolor .1 .37 .1 1 } + mouseExit { setitemcolor yes backcolor .37 .1 .1 1 } + } + + itemDef { + name yes + group grpdefault + style WINDOW_STYLE_SHADER + background "ui/assets/framebutton.tga" + rect 135 250 70 26 + visible 1 + decoration + } + + itemDef { + name yes + group grpdefault + style WINDOW_STYLE_SHADER + background "ui/assets/leftbutton.tga" + rect 123 250 13 26 + visible 1 + decoration + } + + itemDef { + name yes + group grpdefault + style WINDOW_STYLE_SHADER + background "ui/assets/rightbutton.tga" + rect 204 250 13 26 + visible 1 + decoration + } + +itemDef { + name no + text "No" + group grpdefault + type 1 + textscale .3 + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + rect 235 250 70 26 + textalign 1 + textalignx 35 + textaligny 20 + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + visible 1 + action { play "sound/misc/nomenu.wav" ; + close default_menu ; open control_menu } + mouseEnter { setitemcolor no backcolor .1 .37 .1 1 } + mouseExit { setitemcolor no backcolor .37 .1 .1 1 } + } + + itemDef { + name no + group grpdefault + style WINDOW_STYLE_SHADER + background "ui/assets/framebutton.tga" + rect 235 250 70 26 + visible 1 + decoration + } + + itemDef { + name no + group grpdefault + style WINDOW_STYLE_SHADER + background "ui/assets/leftbutton.tga" + rect 223 250 13 26 + visible 1 + decoration + } + + itemDef { + name no + group grpdefault + style WINDOW_STYLE_SHADER + background "ui/assets/rightbutton.tga" + rect 304 250 13 26 + visible 1 + decoration + } + +itemDef { + name finish_message + group grpfinish + style 0 + text "Your settings are now set" + rect 0 160 443 20 + textalign ITEM_ALIGN_CENTER + textalignx 221 + textaligny 20 + textscale .333 + forecolor 1 1 1 1 + visible 0 + decoration + } + itemDef { + name finish_message + group grpfinish + style 0 + text "to their original default values." + rect 0 180 443 20 + textalign ITEM_ALIGN_CENTER + textalignx 221 + textaligny 20 + textscale .333 + forecolor 1 1 1 1 + visible 0 + decoration + } + + +itemDef { + name fadebox + style WINDOW_STYLE_FILLED + background "ui/assets/fadebox.tga" + forecolor 0 0 0 1 + backcolor 0 0 0 1 + rect 0 0 640 480 + visible 1 + decoration + } + + + + + + + + + + + + +} diff --git a/ta_ui/ui/demo.menu b/ta_ui/ui/demo.menu new file mode 100644 index 00000000..656f8a8c --- /dev/null +++ b/ta_ui/ui/demo.menu @@ -0,0 +1,266 @@ +#include "ui/menudef.h" + +{ +\\ Fight \\ + + menuDef { + name "demo" + visible 0 + fullscreen 1 + rect 0 0 640 480 + background "menuback_a" + focusColor 1 .67 0 1 + style 1 + border 1 + onOpen { setitemcolor fadebox backcolor 0 0 0 1 ; + playlooped "music/fla_mp03.wav" ; + fadeout fadebox ; uiScript LoadDemos ; + hide lightning ; + hide accept_alt ; + show accept ; + hide back_alt ; + show back ; + hide grpmessage } + onEsc { close demo ; open main } + + + + + + + +// LEVEL SELECTION BAR // + + + itemDef { + name levelbar + style 2 + text "TEAM ARENA DEMOS" + rect 0 16 640 40 + textstyle 6 + textscale 0.416 + textalign 1 // center + textalignx 320 // x alignment point for text + // use it to offset left/right text from the edge + // or to center the text on a different point + textaligny 27 + forecolor 1 1 1 1 + style 2 + border 4 + bordercolor 0.5 0.5 0.5 0.5 + bordersize 2 + backcolor 0 0 .75 0.5 + visible 1 + decoration + } + + itemDef { + name teamarenaimage + style 3 + background "ui/assets/teamarenaimage.tga" + rect 0 80 220 115 + visible 1 + } + + +itemDef { + name mappreview + style 5 + cinematic "mpintro.roq" + rect 20 195 200 150 + backcolor 1 1 1 .25 + border 1 + bordersize 1 + bordercolor .5 .5 .5 1 + decoration + visible 1 + } + + +itemDef { + name demolist + rect 240 100 360 300 + type ITEM_TYPE_LISTBOX + style WINDOW_STYLE_FILLED + elementwidth 120 + elementheight 20 + textscale .25 + elementtype LISTBOX_TEXT + feeder FEEDER_DEMOS + textalign 3 + textaligny 14 + border 1 + bordercolor .5 .5 .5 .5 + forecolor 1 1 1 1 + backcolor 0 0 .5 .25 + outlinecolor .1 .1 .7 .5 + visible 1 + mouseEnter { fadein message_demos ; setitemcolor demolist bordercolor .7 0 0 1 } + mouseExit { fadeout message_demos ; setitemcolor demolist bordercolor .5 .5 .5 .5 } + } + + + + +// BACK BAR // + + + itemDef { + name gotobar + style 2 + rect 0 430 640 30 + textscale 0.4 + textalign 0 // center + textalignx 60 // x alignment point for text + // use it to offset left/right text from the edge + // or to center the text on a different point + textaligny 21 + style 2 + border 4 + bordercolor 0.5 0.5 0.5 0.5 + bordersize 2 + backcolor 0 0 .75 0.5 + visible 1 + mouseEnter { setcolor backcolor .75 0 0 .5 } + mouseExit { setcolor backcolor 0 0 .75 .5 } + decoration + } + + itemDef { + name back + style 3 + background "ui/assets/backarrow.tga" + rect 16 424 50 50 + visible 1 + action { close demo ; open main } + mouseEnter { hide back ; show back_alt ; fadein message_back } + } + +itemDef { + name back_alt + style WINDOW_STYLE_SHADER + background "ui/assets/backarrow_alt.tga" + rect 14 422 54 54 + backcolor 0 0 0 0 + forecolor 1 1 1 1 + visible 0 + type ITEM_TYPE_BUTTON + mouseExit { hide back_alt ; show back ; fadeout message_back } + action { close demo ; open main } + } + + + + +itemDef { + name accept + style 3 + rect 574 424 50 50 + background "ui/assets/forwardarrow.tga" + backcolor 0 0 0 0 + forecolor 1 1 1 1 + visible 1 + mouseEnter { show lightning ; hide accept ; show accept_alt ; show message_accept ; playlooped "sound/misc/loop_electricity_05.wav" } + action { close demo } + } + +itemDef { + name accept_alt + style 3 + rect 572 422 54 54 + background "ui/assets/forwardarrow_alt.tga" + backcolor 0 0 0 0 + forecolor 1 1 1 1 + visible 0 + type ITEM_TYPE_BUTTON + action { close demo ; uiScript RunDemo } + mouseExit { hide lightning ; hide accept_alt ; show accept ; hide message_accept ; playlooped "music/fla_mp03.wav" } + } + + itemDef { + name lightning + style 3 + background lightningkc + rect 44 385 246 128 + visible 0 + decoration + } +itemDef { + name lightning + style 3 + background lightningkc + rect 345 385 246 128 + visible 0 + decoration + } + + +// MESSAGES // + +itemDef { + name message_back + group grpmessage + style 0 + rect 320 430 128 30 + textstyle 1 + textalign 1 + textalignx 0 + textaligny 25 + textscale .4 + text "Exit to Main Menu" + forecolor 1 1 1 1 + decoration + visible 0 + } + +itemDef { + name message_accept + group grpmessage + style 0 + rect 320 430 128 30 + textalign 1 + textstyle 1 + textalignx 0 + textaligny 25 + textscale .4 + text "View Demo" + forecolor 1 1 1 1 + decoration + visible 0 + } +itemDef { + name message_demos + group grpmessage + style 0 + rect 320 430 128 30 + textalign 1 + textstyle 1 + textalignx 0 + textaligny 25 + textscale .4 + text "Select Recorded Game To View" + forecolor 1 1 1 1 + decoration + visible 0 + } + +itemDef { + name fadebox + style WINDOW_STYLE_FILLED + background "ui/assets/fadebox.tga" + forecolor 0 0 0 1 + backcolor 0 0 0 1 + rect 0 0 640 480 + visible 1 + decoration + } + + + +} + + +} + +} +} \ No newline at end of file diff --git a/ta_ui/ui/demo_quit.menu b/ta_ui/ui/demo_quit.menu new file mode 100644 index 00000000..d9298f32 --- /dev/null +++ b/ta_ui/ui/demo_quit.menu @@ -0,0 +1,252 @@ +#include "ui/menudef.h" + +{ +\\ DEMO QUIT \\ + + menuDef { + name "demo_quit" + visible 0 + fullscreen 1 + rect 0 0 640 480 + background "menuback_a" + focusColor 1 .67 0 1 + style 1 + border 1 + onEsc { uiScript "quit" } + onOpen { setitemcolor fadebox backcolor 0 0 0 1 ; + fadeout fadebox } + + +itemDef { + name actionback + style WINDOW_STYLE_EMPTY + rect 0 0 640 480 + type 1 + visible 1 + action { play "sound/misc/nomenu.wav" ; + uiScript "quit" } + } + + +// LEVEL SELECTION BAR // + +itemDef { + name teamarenaart + group grpidcredit + style WINDOW_STYLE_SHADER + background "ui/assets/teamarenaimage2.tga" + rect 64 0 512 150 + visible 1 + decoration + } + + + + + +itemDef { + name demo + group grpidcredit + style 0 + rect 0 160 640 30 + textalign 1 + textalignx 320 + textaligny 10 + textscale .5 + text "" + forecolor 1 1 1 1 + decoration + visible 1 + } + +itemDef { + name artist + group grpidcredit + style 0 + rect 0 190 640 30 + textalign 1 + textalignx 320 + textaligny 10 + textscale .333 + text "Thanks for playing the Quake III: Team Arena DEMO." + forecolor 1 1 1 1 + decoration + visible 1 + } + + +itemDef { + name levelDesign + group grpidcredit + style 0 + rect 0 220 640 30 + textalign 1 + textalignx 320 + textaligny 10 + textscale .333 + text "For more information about Team Arena" + forecolor 1 1 1 1 + decoration + visible 1 + } + +itemDef { + name gameDesign + group grpidcredit + style 0 + rect 0 250 640 30 + textalign 1 + textalignx 320 + textaligny 10 + textscale .333 + text "check out the official Quake III website at" + forecolor 1 1 1 1 + decoration + visible 1 + } + +itemDef { + name ceo + group grpidcredit + style 0 + rect 0 280 640 30 + textalign 1 + textalignx 320 + textaligny 10 + textscale .333 + text "www.quake3world.com." + forecolor 1 1 1 1 + decoration + visible 1 + } + +itemDef { + name bizDev + group grpidcredit + style 0 + rect 0 310 640 30 + textalign 1 + textalignx 320 + textaligny 10 + textscale .35 + text "" + forecolor 1 1 1 1 + decoration + visible 1 + } + +itemDef { + name idMom + group grpidcredit + style 0 + rect 0 340 640 30 + textalign 1 + textalignx 320 + textaligny 10 + textscale .333 + text "Christmas 2000." + forecolor 1 1 1 1 + decoration + visible 1 + } + +itemDef { + name devAssist + group grpidcredit + style 0 + rect 0 380 640 30 + textalign 1 + textalignx 320 + textaligny 10 + textscale .333 + text "Full Version of Quake III is Required." + forecolor 1 1 1 1 + decoration + visible 1 + } + + +itemDef { + name exitbttn + group grpidcredit + rect 255 420 130 26 + type 1 + text "Click to Exit" + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + textalign 1 + textscale .25 + textalignx 65 + textaligny 20 + visible 1 + decoration + backcolor .37 .1 .1 1 + forecolor 1 1 1 1 + action { play "sound/misc/nomenu.wav" } + mouseEnter { setitemcolor exitbttn backcolor .1 .37 .1 1 } + mouseExit { setitemcolor exitbttn backcolor .37 .1 .1 1 } + } +itemDef { + name exitbttn + group grpidcredit + style WINDOW_STYLE_SHADER + background "ui/assets/framebutton.tga" + rect 255 420 130 26 + visible 1 + decoration + } + +itemDef { + name exitbttn + group grpidcredit + style WINDOW_STYLE_SHADER + background "ui/assets/leftbutton.tga" + rect 243 420 13 26 + visible 1 + decoration + } + +itemDef { + name exitbttn + group grpidcredit + style WINDOW_STYLE_SHADER + background "ui/assets/rightbutton.tga" + rect 384 420 13 26 + visible 1 + decoration + } + +itemDef { + name copyright + text "Quake III: Team Arena Copyright 2000 Id Software, Inc. All rights reserved" + style 0 + textscale .25 + rect 0 440 640 40 + textalign 1 + textaligny 32 + textalignx 320 + forecolor .75 0 0 .75 + visible 1 + decoration + } + + +itemDef { + name fadebox + style WINDOW_STYLE_FILLED + background "ui/assets/fadebox.tga" + forecolor 0 0 0 1 + backcolor 0 0 0 1 + rect 0 0 640 480 + visible 1 + decoration + } + + + + + +} + +} +} \ No newline at end of file diff --git a/ta_ui/ui/endofgame.menu b/ta_ui/ui/endofgame.menu new file mode 100644 index 00000000..201140fe --- /dev/null +++ b/ta_ui/ui/endofgame.menu @@ -0,0 +1,1331 @@ +#include "ui/menudef.h" + +{ +\\ END OF GAME \\ + +menuDef { + name "endOfGame" + visible 0 + fullscreen 1 + rect 0 0 640 480 + backcolor 0 0 0 1 + background "menuback_a" + fadeClamp 1.0 // sets the fadeup alpha + fadeCycle 1 // how often fade happens in milliseconds + fadeAmount 0.05 + focusColor 1 .75 0 1 + onClose { uiScript updateSPMenu } + onESC { close endOfGame ; open skirmish } + onOpen { close ingame ; + play "sound/misc/kcswish.wav" ; + playlooped "music/win.wav" ; + setitemcolor fadebox backcolor 0 0 0 1 ; + transition mappreview 0 0 640 480 120 111 400 300 20 10 ; + transition playerlogo 250 160 160 160 110 30 80 80 20 10 ; + transition opposinglogo 250 160 160 160 450 30 80 80 20 10 ; + fadeout fadebox } + + + + + + +itemDef { + name window + rect 0 0 640 480 + style 1 + backcolor 0 0 0 0 + forecolor 0 0 0 0 + visible 1 + decoration + } +itemDef { + name menuback_e + style WINDOW_STYLE_SHADER + rect 0 163 640 155 + background "menuback_e" + visible 1 + decoration + } + + + +itemDef { + name menuback_b + style WINDOW_STYLE_SHADER + rect 0 163 640 155 + visible 1 + background "menuback_b" + bordercolor 0.5 0.5 0.5 .7 + decoration + } + +itemDef { + name mappreview + ownerdraw UI_MAPCINEMATIC + rect 120 111 400 300 + backcolor 1 1 1 1 + border 1 + bordercolor .5 .5 .5 1 + bordersize 1 + decoration + visible 1 + } + + + +itemDef { + name windowscreen + rect 0 0 640 240 + style 3 + background levelshotdetail + forecolor 0 0 0 0 + visible 1 + decoration + } +itemDef { + name windowscreen + rect 0 240 640 240 + style 3 + background levelshotdetail + forecolor 0 0 0 0 + visible 1 + decoration + } + + +itemDef { + name gametypebar + style 2 + rect 0 50 640 40 + textscale 0.4 + textalign 0 // center + textalignx 60 // x alignment point for text + // use it to offset left/right text from the edge + // or to center the text on a different point + textaligny 21 + style 2 + border 4 + bordercolor 0.5 0.5 0.5 0.5 + bordersize 2 + backcolor 0 0 .75 0.5 + visible 1 + decoration + } + + itemDef { + name opposingteamfield + text "GAME STATS" + rect 0 70 128 12 + textstyle 6 + textalign ITEM_ALIGN_CENTER + textalignx 320 + textaligny 12 + textscale .416 + forecolor 1 1 1 1 + decoration + visible 1 + } + + + + +itemDef { + name playerlogo + ownerdraw UI_PLAYERLOGO_METAL + rect 110 30 80 80 + visible 1 + forecolor 1 .7 .7 1 + decoration + } + +itemDef { + name opposinglogo + ownerdraw UI_OPPONENTLOGO_METAL + rect 450 30 80 80 + visible 1 + forecolor .7 .7 1 1 + decoration + } + + + + + + + + + + +// AWARDS TEAM GAME // + + +itemdef { + name medal_assist_team_shadow + rect 187 362 30 30 + style WINDOW_STYLE_SHADER + background "ui/assets/medal_assist.tga" + ownerdrawflag UI_SHOW_ANYTEAMGAME + forecolor 0 0 0 .5 + visible 1 + decoration + } + + +itemdef { + name medal_assist_team + rect 185 360 30 30 + type ITEM_TYPE_EDITFIELD + style WINDOW_STYLE_SHADER + background "ui/assets/medal_assist.tga" + cvar "ui_scoreAssists2" + ownerdrawflag UI_SHOW_ANYTEAMGAME + textscale .22 + textalign 1 + text "" + textalignx 15 + textaligny 40 + visible 1 + decoration + border 1 + bordersize 1 + bordercolor 1 1 1 0 + mouseenter { show message_assist } + mouseexit { hide message_assist } + } +itemdef { + name medal_accuracy_team_shadow + style WINDOW_STYLE_SHADER + rect 227 362 30 30 + forecolor 0 0 0 .5 + background "ui/assets/medal_accuracy.tga" + ownerdrawflag UI_SHOW_ANYTEAMGAME + visible 1 + decoration + } + +itemdef { + name medal_accuracy_team + style WINDOW_STYLE_SHADER + cvar "ui_scoreAccuracy2" + rect 225 360 30 30 + background "ui/assets/medal_accuracy.tga" + ownerdrawflag UI_SHOW_ANYTEAMGAME + visible 1 + decoration + type ITEM_TYPE_EDITFIELD + textalign 1 + text "" + textalignx 15 + textaligny 40 + border 1 + bordersize 1 + bordercolor 1 1 1 0 + textscale .22 + mouseenter { show message_accuracy } + mouseexit { hide message_accuracy } + } +itemdef { + name medal_excellent_team_shadow + style WINDOW_STYLE_SHADER + rect 267 362 30 30 + forecolor 0 0 0 .5 + background "ui/assets/medal_excellent.tga" + ownerdrawflag UI_SHOW_ANYTEAMGAME + visible 1 + decoration + } + +itemdef { + name medal_excellent_team + style WINDOW_STYLE_SHADER + cvar "ui_scoreExcellents2" + rect 265 360 30 30 + background "ui/assets/medal_excellent.tga" + ownerdrawflag UI_SHOW_ANYTEAMGAME + visible 1 + decoration + type ITEM_TYPE_EDITFIELD + textalign 1 + text "" + textalignx 15 + textaligny 40 + border 1 + bordersize 1 + bordercolor 1 1 1 0 + textscale .22 + mouseenter { show message_excellent } + mouseexit { hide message_excellent } + } + + + +itemdef { + name medal_gauntlet_team_shadow + style WINDOW_STYLE_SHADER + rect 307 362 30 30 + forecolor 0 0 0 .5 + background "ui/assets/medal_gauntlet.tga" + ownerdrawflag UI_SHOW_ANYTEAMGAME + visible 1 + decoration + } + +itemdef { + name medal_gauntlet_team + style WINDOW_STYLE_SHADER + cvar "ui_scoreGauntlets2" + rect 305 360 30 30 + background "ui/assets/medal_gauntlet.tga" + ownerdrawflag UI_SHOW_ANYTEAMGAME + visible 1 + decoration + type ITEM_TYPE_EDITFIELD + textalign 1 + text "" + textalignx 15 + textaligny 40 + border 1 + bordersize 1 + bordercolor 1 1 1 0 + textscale .22 + mouseenter { show message_gauntlet } + mouseexit { hide message_gauntlet } + } + + +itemdef { + name medal_impressive_team_shadow + style WINDOW_STYLE_SHADER + rect 347 362 30 30 + forecolor 0 0 0 .5 + background "ui/assets/medal_impressive.tga" + ownerdrawflag UI_SHOW_ANYTEAMGAME + visible 1 + decoration + } + + +itemdef { + name medal_impressive_team + style WINDOW_STYLE_SHADER + cvar "ui_scoreImpressives2" + rect 345 360 30 30 + background "ui/assets/medal_impressive.tga" + ownerdrawflag UI_SHOW_ANYTEAMGAME + visible 1 + decoration + type ITEM_TYPE_EDITFIELD + textalign 1 + text "" + textalignx 15 + textaligny 40 + border 1 + bordersize 1 + bordercolor 1 1 1 0 + textscale .22 + mouseenter { show message_impressive } + mouseexit { hide message_impressive } + } + + + +itemdef { + name medal_defend_team_shadow + style WINDOW_STYLE_SHADER + rect 387 362 30 30 + forecolor 0 0 0 .5 + background "ui/assets/medal_defend.tga" + ownerdrawflag UI_SHOW_ANYTEAMGAME + visible 1 + decoration + } + + +itemdef { + name medal_defend_team + style WINDOW_STYLE_SHADER + cvar "ui_scoreDefends2" + rect 385 360 30 30 + background "ui/assets/medal_defend.tga" + ownerdrawflag UI_SHOW_ANYTEAMGAME + visible 1 + decoration + type ITEM_TYPE_EDITFIELD + textalign 1 + text "" + textalignx 15 + textaligny 40 + border 1 + bordersize 1 + bordercolor 1 1 1 0 + textscale .22 + mouseenter { show message_defend } + mouseexit { hide message_defend } + } + + +itemdef { + name medal_capture_team_shadow + style WINDOW_STYLE_SHADER + rect 427 362 30 30 + forecolor 0 0 0 .5 + background "ui/assets/medal_capture.tga" + ownerdrawflag UI_SHOW_ANYTEAMGAME + visible 1 + decoration + } + + + +itemdef { + name medal_capture_team + style WINDOW_STYLE_SHADER + cvar "ui_scoreCaptures2" + rect 425 360 30 30 + background "ui/assets/medal_capture.tga" + ownerdrawflag UI_SHOW_ANYTEAMGAME + visible 1 + decoration + type ITEM_TYPE_EDITFIELD + textalign 1 + text "" + textalignx 15 + textaligny 40 + border 1 + bordersize 1 + bordercolor 1 1 1 0 + textscale .22 + mouseenter { show message_capture } + mouseexit { hide message_capture } + } + + + + + +// AWARDS NONTEAM GAME // + +itemdef { + name medal_perfect_nonteam_shadow + rect 232 362 30 30 + forecolor 0 0 0 .5 + style WINDOW_STYLE_SHADER + background "ui/assets/medal_perfect.tga" + ownerdrawflag UI_SHOW_ANYNONTEAMGAME + visible 1 + decoration + } + + + +itemdef { + name medal_perfect_nonteam + rect 230 360 30 30 + type ITEM_TYPE_EDITFIELD + style WINDOW_STYLE_SHADER + background "ui/assets/medal_perfect.tga" + cvar "ui_scorePerfect2" + ownerdrawflag UI_SHOW_ANYNONTEAMGAME + textscale .22 + textalign 1 + text "" + textalignx 15 + textaligny 40 + visible 1 + decoration + border 1 + bordersize 1 + bordercolor 1 1 1 0 + mouseenter { show message_perfect } + mouseexit { hide message_perfect } + } + +itemdef { + name medal_accuracy_nonteam_shadow + style WINDOW_STYLE_SHADER + rect 272 362 30 30 + forecolor 0 0 0 .5 + background "ui/assets/medal_accuracy.tga" + ownerdrawflag UI_SHOW_ANYNONTEAMGAME + visible 1 + decoration + } + +itemdef { + name medal_accuracy_nonteam + style WINDOW_STYLE_SHADER + cvar "ui_scoreAccuracy2" + rect 270 360 30 30 + background "ui/assets/medal_accuracy.tga" + ownerdrawflag UI_SHOW_ANYNONTEAMGAME + visible 1 + decoration + type ITEM_TYPE_EDITFIELD + textalign 1 + text "" + textalignx 15 + textaligny 40 + textscale .22 + border 1 + bordersize 1 + bordercolor 1 1 1 0 + mouseenter { show message_accuracy } + mouseexit { hide message_accuracy } + } + + +itemdef { + name medal_excellent_nonteam_shadow + style WINDOW_STYLE_SHADER + rect 312 362 30 30 + forecolor 0 0 0 .5 + background "ui/assets/medal_excellent.tga" + ownerdrawflag UI_SHOW_ANYNONTEAMGAME + visible 1 + decoration + } + + + +itemdef { + name medal_excellent_nonteam + style WINDOW_STYLE_SHADER + cvar "ui_scoreExcellents2" + rect 310 360 30 30 + background "ui/assets/medal_excellent.tga" + ownerdrawflag UI_SHOW_ANYNONTEAMGAME + visible 1 + decoration + type ITEM_TYPE_EDITFIELD + textalign 1 + text "" + textalignx 15 + textaligny 40 + textscale .22 + border 1 + bordersize 1 + bordercolor 1 1 1 0 + mouseenter { show message_excellent } + mouseexit { hide message_excellent } + } + +itemdef { + name medal_gauntlet_nonteam_shadow + style WINDOW_STYLE_SHADER + rect 352 362 30 30 + forecolor 0 0 0 .5 + background "ui/assets/medal_gauntlet.tga" + ownerdrawflag UI_SHOW_ANYNONTEAMGAME + visible 1 + decoration + } + + +itemdef { + name medal_gauntlet_nonteam + style WINDOW_STYLE_SHADER + cvar "ui_scoreGauntlets2" + rect 350 360 30 30 + background "ui/assets/medal_gauntlet.tga" + ownerdrawflag UI_SHOW_ANYNONTEAMGAME + visible 1 + decoration + type ITEM_TYPE_EDITFIELD + textalign 1 + text "" + textalignx 15 + textaligny 40 + textscale .22 + border 1 + bordersize 1 + bordercolor 1 1 1 0 + mouseenter { show message_gauntlet } + mouseexit { hide message_gauntlet } + } + + + +itemdef { + name medal_impressive_nonteam_shadow + style WINDOW_STYLE_SHADER + rect 392 362 30 30 + forecolor 0 0 0 .5 + background "ui/assets/medal_impressive.tga" + ownerdrawflag UI_SHOW_ANYNONTEAMGAME + visible 1 + decoration + } + + +itemdef { + name medal_impressive_nonteam + style WINDOW_STYLE_SHADER + cvar "ui_scoreImpressives2" + rect 390 360 30 30 + background "ui/assets/medal_impressive.tga" + ownerdrawflag UI_SHOW_ANYNONTEAMGAME + visible 1 + decoration + type ITEM_TYPE_EDITFIELD + textalign 1 + text "" + textalignx 15 + textaligny 40 + textscale .22 + border 1 + bordersize 1 + bordercolor 1 1 1 0 + mouseenter { show message_impressive } + mouseexit { hide message_impressive } + } + + + +// SOUND BUTTON // + + +itemdef { + name medal_assist_window + rect 183 358 34 34 + style WINDOW_STYLE_SHADER + background "ui/assets/medal_assist.tga" + ownerdrawflag UI_SHOW_ANYTEAMGAME + type 1 + border 1 + bordercolor .5 .5 .5 0 + forecolor 1 1 1 0 + backcolor 1 1 1 0 + visible 1 + mouseenter { setitemcolor medal_assist_team forecolor 0 0 0 0 ; setcolor forecolor 1 1 1 1 } + mouseexit { setitemcolor medal_assist_team forecolor 1 1 1 1 ; setcolor forecolor 1 1 1 0 } + action { exec "play sound/feedback/voc_menu_assist.wav" } + } + +itemdef { + name medal_accuracy_window + rect 223 358 34 34 + style WINDOW_STYLE_SHADER + background "ui/assets/medal_accuracy.tga" + ownerdrawflag UI_SHOW_ANYTEAMGAME + type 1 + border 1 + bordercolor .5 .5 .5 0 + forecolor 1 1 1 0 + backcolor 1 1 1 0 + visible 1 + mouseenter { setitemcolor medal_accuracy_team forecolor 0 0 0 0 ; setcolor forecolor 1 1 1 1 } + mouseexit { setitemcolor medal_accuracy_team forecolor 1 1 1 1 ; setcolor forecolor 1 1 1 0 } + action { exec "play sound/feedback/voc_menu_accuracy.wav" } + } +itemdef { + name medal_excellent_window + rect 263 358 34 34 + type 1 + style WINDOW_STYLE_SHADER + background "ui/assets/medal_excellent.tga" + ownerdrawflag UI_SHOW_ANYTEAMGAME + border 1 + bordercolor .5 .5 .5 0 + forecolor 1 1 1 0 + backcolor 1 1 1 0 + visible 1 + mouseenter { setitemcolor medal_excellent_team forecolor 0 0 0 0 ; setcolor forecolor 1 1 1 1 } + mouseexit { setitemcolor medal_excellent_team forecolor 1 1 1 1 ; setcolor forecolor 1 1 1 0 } + action { exec "play sound/feedback/voc_menu_excellent.wav" } + } +itemdef { + name medal_gauntlet_window + rect 303 358 34 34 + type 1 + style WINDOW_STYLE_SHADER + background "ui/assets/medal_gauntlet.tga" + ownerdrawflag UI_SHOW_ANYTEAMGAME + border 1 + bordercolor .5 .5 .5 0 + forecolor 1 1 1 0 + backcolor 1 1 1 0 + visible 1 + mouseenter { setitemcolor medal_gauntlet_team forecolor 0 0 0 0 ; setcolor forecolor 1 1 1 1 } + mouseexit { setitemcolor medal_gauntlet_team forecolor 1 1 1 1 ; setcolor forecolor 1 1 1 0 } + action { exec "play sound/feedback/voc_menu_gauntlet.wav" } + } +itemdef { + name medal_impressive_window + rect 343 358 34 34 + type 1 + style WINDOW_STYLE_SHADER + background "ui/assets/medal_impressive.tga" + ownerdrawflag UI_SHOW_ANYTEAMGAME + border 1 + bordercolor .5 .5 .5 0 + forecolor 1 1 1 0 + backcolor 1 1 1 0 + visible 1 + mouseenter { setitemcolor medal_impressive_team forecolor 0 0 0 0 ; setcolor forecolor 1 1 1 1 } + mouseexit { setitemcolor medal_impressive_team forecolor 1 1 1 1 ; setcolor forecolor 1 1 1 0 } + action { exec "play sound/feedback/voc_menu_impressive.wav" } + } +itemdef { + name medal_defend_window + rect 383 358 34 34 + type 1 + style WINDOW_STYLE_SHADER + background "ui/assets/medal_defend.tga" + ownerdrawflag UI_SHOW_ANYTEAMGAME + border 1 + bordercolor .5 .5 .5 0 + forecolor 1 1 1 0 + backcolor 1 1 1 0 + visible 1 + mouseenter { setitemcolor medal_defend_team forecolor 0 0 0 0 ; setcolor forecolor 1 1 1 1 } + mouseexit { setitemcolor medal_defend_team forecolor 1 1 1 1 ; setcolor forecolor 1 1 1 0 } + action { exec "play sound/feedback/voc_menu_defense.wav" } + } +itemdef { + name medal_capture_window + rect 423 358 34 34 + type 1 + style WINDOW_STYLE_SHADER + background "ui/assets/medal_capture.tga" + ownerdrawflag UI_SHOW_ANYTEAMGAME + border 1 + bordercolor .5 .5 .5 0 + forecolor 1 1 1 0 + backcolor 1 1 1 0 + visible 1 + mouseenter { setitemcolor medal_capture_team forecolor 0 0 0 0 ; setcolor forecolor 1 1 1 1 } + mouseexit { setitemcolor medal_capture_team forecolor 1 1 1 1 ; setcolor forecolor 1 1 1 0 } + action { exec "play sound/feedback/voc_menu_captures.wav" } + } + + + + + + + + +itemdef { + name medal_perfect_window + rect 228 358 34 34 + type 1 + style WINDOW_STYLE_SHADER + background "ui/assets/medal_perfect.tga" + ownerdrawflag UI_SHOW_ANYNONTEAMGAME + border 1 + bordercolor .5 .5 .5 0 + forecolor 1 1 1 0 + backcolor 1 1 1 0 + visible 1 + mouseenter { setitemcolor medal_perfect_nonteam forecolor 0 0 0 0 ; setcolor forecolor 1 1 1 1 } + mouseexit { setitemcolor medal_perfect_nonteam forecolor 1 1 1 1 ; setcolor forecolor 1 1 1 0 } + action { exec "play sound/feedback/perfect.wav" } + } + +itemdef { + name medal_accuracy_window + rect 268 358 34 34 + type 1 + style WINDOW_STYLE_SHADER + background "ui/assets/medal_accuracy.tga" + ownerdrawflag UI_SHOW_ANYNONTEAMGAME + border 1 + bordercolor .5 .5 .5 0 + forecolor 1 1 1 0 + backcolor 1 1 1 0 + visible 1 + mouseenter { setitemcolor medal_accuracy_nonteam forecolor 0 0 0 0 ; setcolor forecolor 1 1 1 1 } + mouseexit { setitemcolor medal_accuracy_nonteam forecolor 1 1 1 1 ; setcolor forecolor 1 1 1 0 } + action { exec "play sound/feedback/voc_menu_accuracy.wav" } + } + + + +itemdef { + name medal_excellent_window + rect 308 358 34 34 + type 1 + ownerdrawflag UI_SHOW_ANYNONTEAMGAME + style WINDOW_STYLE_SHADER + background "ui/assets/medal_excellent.tga" + border 1 + bordercolor .5 .5 .5 0 + forecolor 1 1 1 0 + backcolor 1 1 1 0 + visible 1 + mouseenter { setitemcolor medal_excellent_nonteam forecolor 0 0 0 0 ; setcolor forecolor 1 1 1 1 } + mouseexit { setitemcolor medal_excellent_nonteam forecolor 1 1 1 1 ; setcolor forecolor 1 1 1 0 } + action { exec "play sound/feedback/voc_menu_excellent.wav" } + } + + +itemdef { + name medal_gauntlet_window + rect 348 358 34 34 + type 1 + style WINDOW_STYLE_SHADER + background "ui/assets/medal_gauntlet.tga" + ownerdrawflag UI_SHOW_ANYNONTEAMGAME + border 1 + bordercolor .5 .5 .5 0 + forecolor 1 1 1 0 + backcolor 1 1 1 0 + visible 1 + mouseenter { setitemcolor medal_gauntlet_nonteam forecolor 0 0 0 0 ; setcolor forecolor 1 1 1 1 } + mouseexit { setitemcolor medal_gauntlet_nonteam forecolor 1 1 1 1 ; setcolor forecolor 1 1 1 0 } + action { exec "play sound/feedback/voc_menu_gauntlet.wav" } + } + + +itemdef { + name medal_impressive_window + rect 388 358 34 34 + type 1 + style WINDOW_STYLE_SHADER + background "ui/assets/medal_impressive.tga" + ownerdrawflag UI_SHOW_ANYNONTEAMGAME + border 1 + bordercolor .5 .5 .5 0 + forecolor 1 1 1 0 + backcolor 1 1 1 0 + visible 1 + mouseenter { setitemcolor medal_impressive_nonteam forecolor 0 0 0 0 ; setcolor forecolor 1 1 1 1 } + mouseexit { setitemcolor medal_impressive_nonteam forecolor 1 1 1 1 ; setcolor forecolor 1 1 1 0 } + action { exec "play sound/feedback/voc_menu_impressive.wav" } + } + + + + + +// SCORE // + + + // MAP SETTINGS // + + + + itemDef { + name mapname + type 4 + text "Map:" + cvar "ui_scoremap" + rect 0 140 128 12 + textstyle 3 + textalign ITEM_ALIGN_RIGHT + textalignx 320 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + decoration + visible 1 + } + + + + itemDef { + name normal + group grpsettings + type ITEM_TYPE_NUMERICFIELD + text "Frag limit:" + cvar "ui_fraglimit" + textstyle 3 + ownerdrawflag UI_SHOW_ANYNONTEAMGAME + rect 0 155 128 12 + textalign ITEM_ALIGN_RIGHT + textalignx 320 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 1 + decoration + } + + itemDef { + name normal + group grpsettings + type ITEM_TYPE_NUMERICFIELD + text "Capture limit:" + cvar "ui_capturelimit" + ownerdrawflag UI_SHOW_ANYTEAMGAME + rect 0 155 128 12 + textstyle 3 + textalign ITEM_ALIGN_RIGHT + textalignx 320 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 1 + decoration + } + + itemDef { + name normal + group grpsettings + ownerdraw UI_MAP_TIMETOBEAT + text "Time to Beat:" + rect 0 170 128 12 + textstyle 3 + textalign ITEM_ALIGN_RIGHT + textalignx 320 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 1 + decoration + } + itemDef { + name normal + group grpsettings + type ITEM_TYPE_NUMERICFIELD + text "Skill Multiplier:" + cvar "g_spSkill" + rect 0 185 128 12 + textstyle 3 + textalign ITEM_ALIGN_RIGHT + textalignx 320 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 1 + decoration + } +itemDef { + name recordDemo + type ITEM_TYPE_YESNO + text "Record Game:" + cvar "ui_recordSPDemo" + rect 0 200 640 12 + textalign ITEM_ALIGN_RIGHT + textalignx 320 + textstyle 3 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + forecolor 1 1 1 1 + visible 1 + action { } + } + + + + + + itemDef { + name normal + group grpsettings + type ITEM_TYPE_NUMERICFIELD + text "Game Score:" + cvar "ui_scoreTeam2" + rect 0 225 128 12 + textstyle 3 + textalign ITEM_ALIGN_RIGHT + textalignx 320 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 1 + decoration + } + itemDef { + name normal + group grpsettings + type ITEM_TYPE_NUMERICFIELD + text "Completion Time:" + cvar "ui_scoreTime2" + rect 0 240 128 12 + textstyle 3 + textalign ITEM_ALIGN_RIGHT + textalignx 320 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 1 + decoration + } + + itemDef { + name normal + group grpsettings + type ITEM_TYPE_NUMERICFIELD + text "Base Score:" + cvar "ui_scoreBase2" + rect 0 265 128 12 + textstyle 3 + textalign ITEM_ALIGN_RIGHT + textalignx 320 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 1 + decoration + mouseenter { } + mouseexit { } + } + + itemDef { + name normal + group grpsettings + type ITEM_TYPE_NUMERICFIELD + text "Time Bonus:" + cvar "ui_scoreTimeBonus2" + rect 0 280 128 12 + textstyle 3 + textalign ITEM_ALIGN_RIGHT + textalignx 320 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 1 + decoration + mouseenter { } + mouseexit { } + } +itemDef { + name normal + group grpsettings + type ITEM_TYPE_NUMERICFIELD + text "Shutout Bonus:" + cvar "ui_scoreShutoutBonus2" + rect 0 295 128 12 + textalign ITEM_ALIGN_RIGHT + textalignx 320 + textaligny 12 + textstyle 3 + textscale .25 + forecolor 1 1 1 1 + visible 1 + decoration + mouseenter { } + mouseexit { } + } +itemDef { + name normal + group grpsettings + type ITEM_TYPE_NUMERICFIELD + text "Skill Bonus:" + cvar "ui_scoreSkillBonus2" + rect 0 310 128 12 + textalign ITEM_ALIGN_RIGHT + textalignx 320 + textaligny 12 + textscale .25 + textstyle 3 + forecolor 1 1 1 1 + visible 1 + decoration + mouseenter { } + mouseexit { } + } +itemDef { + name normal + group grpsettings + type ITEM_TYPE_NUMERICFIELD + text "Total Score:" + cvar "ui_scoreScore2" + rect 0 325 128 12 + textalign ITEM_ALIGN_RIGHT + textalignx 320 + textaligny 12 + textscale .25 + textstyle 3 + forecolor 1 1 1 1 + visible 1 + decoration + mouseenter { } + mouseexit { } + } + + + + + +itemDef { + name level_info + group grplevelinfo2 + textstyle ITEM_TEXTSTYLE_BLINK + textscale .333 + text "New High Score" + textstyle 3 + rect 0 345 320 20 + ownerdrawflag UI_SHOW_NEWHIGHSCORE + textalign 1 + textalignx 320 // x alignment point for text + // use it to offset left/right text from the edge + // or to center the text on a different point + textaligny 12 + backcolor 0 0 0 0 + forecolor 1 0 0 1 + decoration + visible 1 + } + + +// BUTTON // + + +itemDef { + name replay + text "Replay" + type 1 + textscale .25 + group grpControlbutton + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + rect 178 430 45 26 + textalign 1 + textalignx 23 + textaligny 19 + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + visible 1 + action { play "sound/misc/nomenu.wav" ; + close endofgame ; + close skirmish ; + uiScript skirmishStart } + mouseEnter { setitemcolor replay backcolor .1 .37 .1 1 } + mouseExit { setitemcolor replay backcolor .37 .1 .1 1 } + } +itemDef { + name replay + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/framebutton.tga" + rect 178 430 45 26 + visible 1 + forecolor 1 1 1 1 + decoration + } + +itemDef { + name replay + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/leftbutton.tga" + rect 166 430 13 26 + visible 1 + forecolor 1 1 1 1 + decoration + } + +itemDef { + name replay + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/rightbutton.tga" + rect 221 430 13 26 + visible 1 + forecolor 1 1 1 1 + decoration + } +itemDef { + name demo + text "Demo" + type 1 + textscale .25 + group grpControlbutton + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + rect 257 430 45 26 + textalign 1 + textalignx 23 + textaligny 19 + forecolor .5 .5 .5 1 + backcolor .37 .1 .1 1 + decoration + visible 1 + } + +itemDef { + name demo + text "Demo" + type 1 + textscale .25 + group grpControlbutton + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + rect 257 430 45 26 + textalign 1 + textalignx 23 + textaligny 19 + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + visible 1 + ownerdrawflag UI_SHOW_DEMOAVAILABLE + action { play "sound/misc/nomenu.wav" ; + close endofgame ; + uiScript RunSPDemo } + mouseEnter { setitemcolor demo backcolor .1 .37 .1 1 } + mouseExit { setitemcolor demo backcolor .37 .1 .1 1 } + } +itemDef { + name demo + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/framebutton.tga" + rect 257 430 45 26 + visible 1 + forecolor 1 1 1 1 + decoration + } + +itemDef { + name demo + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/leftbutton.tga" + rect 245 430 13 26 + visible 1 + forecolor 1 1 1 1 + decoration + } + +itemDef { + name demo + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/rightbutton.tga" + rect 301 430 13 26 + forecolor 1 1 1 1 + visible 1 + decoration + } + + +itemDef { + name main + text "Menu" + type 1 + textscale .25 + group grpControlbutton + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + rect 338 430 45 26 + textalign 1 + textalignx 23 + textaligny 19 + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + visible 1 + action { play "sound/misc/nomenu.wav" ; + close endofgame ; + open skirmish } + mouseEnter { setitemcolor main backcolor .1 .37 .1 1 } + mouseExit { setitemcolor main backcolor .37 .1 .1 1 } + } + +itemDef { + name main + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/framebutton.tga" + rect 338 430 45 26 + visible 1 + forecolor 1 1 1 1 + decoration + } + +itemDef { + name main + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/leftbutton.tga" + rect 326 430 13 26 + forecolor 1 1 1 1 + visible 1 + decoration + } + +itemDef { + name main + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/rightbutton.tga" + rect 382 430 13 26 + forecolor 1 1 1 1 + visible 1 + decoration + } + +itemDef { + name next + text "Next" + type 1 + textscale .25 + group grpControlbutton + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + rect 419 430 45 26 + textalign 1 + textalignx 23 + textaligny 19 + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + visible 1 + action { play "sound/misc/nomenu.wav" ; + uiScript nextSkirmish ; + close endofgame } + mouseEnter { setitemcolor next backcolor .1 .37 .1 1 } + mouseExit { setitemcolor next backcolor .37 .1 .1 1 } + } + +itemDef { + name next + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/framebutton.tga" + rect 419 430 45 26 + visible 1 + forecolor 1 1 1 1 + decoration + } + +itemDef { + name next + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/leftbutton.tga" + rect 407 430 13 26 + forecolor 1 1 1 1 + visible 1 + decoration + } + +itemDef { + name next + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/rightbutton.tga" + rect 463 430 13 26 + forecolor 1 1 1 1 + visible 1 + decoration + } + +itemDef { + name fadebox + style WINDOW_STYLE_FILLED + background "ui/assets/fadebox.tga" + forecolor 0 0 0 1 + backcolor 0 0 0 .5 + rect 0 0 640 480 + visible 1 + decoration + } + + + + + +} + + +} + + diff --git a/ta_ui/ui/endofgame2.menu b/ta_ui/ui/endofgame2.menu new file mode 100644 index 00000000..56be6591 --- /dev/null +++ b/ta_ui/ui/endofgame2.menu @@ -0,0 +1,1034 @@ +#include "ui/menudef.h" + +{ +\\ END OF GAME \\ + +menuDef { + name "endOfGame" + visible 0 + fullscreen 0 + rect 158 80 320 340 + focusColor 1 .75 0 1 + style 1 + border 1 + popup + onClose { uiScript updateSPMenu } + onESC { close endOfGame ; open skirmish } + exec "play music/win.wav" + +itemDef { + name window + rect 10 15 320 340 + style 1 + backcolor 0 0 0 .25 + forecolor 0 0 0 1 + visible 1 + decoration + } +itemDef { + name window + rect 10 15 310 330 + style 1 + backcolor 0 0 0 .5 + forecolor 0 0 0 1 + visible 1 + decoration + } + + + + +itemDef { + name window + rect 10 15 300 320 + style 1 + backcolor 0 0 0 1 + forecolor 0 0 0 1 + visible 1 + decoration + } + +// FRAME // + + +itemDef { + name window + rect 0 10 64 64 + style 3 + background "ui/assets/ingameleftcorner.tga" + visible 1 + decoration + } +itemDef { + name window + rect 64 10 64 8 + style 3 + background "ui/assets/ingametop.tga" + visible 1 + decoration + } +itemDef { + name window + rect 184 10 96 8 + style 3 + background "ui/assets/ingametop.tga" + visible 1 + decoration + } +itemDef { + name window + rect 256 10 64 64 + style 3 + background "ui/assets/ingamerightcorner.tga" + visible 1 + decoration + } +itemDef { + name window + rect 128 10 64 8 + style 3 + background "ui/assets/ingametop.tga" + visible 1 + decoration + } +itemDef { + name window + rect 0 274 64 64 + style 3 + background "ui/assets/ingameleftcornerb.tga" + visible 1 + decoration + } +itemDef { + name window + rect 256 274 64 64 + style 3 + background "ui/assets/ingamerightcornerb.tga" + visible 1 + decoration + } + +itemDef { + name window + rect 0 64 16 64 + style 3 + background "ui/assets/ingameleft.tga" + visible 1 + decoration + } + + +itemDef { + name window + rect 0 128 16 64 + style 3 + background "ui/assets/ingameleft.tga" + visible 1 + decoration + } + +itemDef { + name window + rect 0 192 16 96 + style 3 + background "ui/assets/ingameleft.tga" + visible 1 + decoration + } + +itemDef { + name window + rect 304 64 16 64 + style 3 + background "ui/assets/ingameright.tga" + visible 1 + decoration + } + + +itemDef { + name window + rect 304 128 16 64 + style 3 + background "ui/assets/ingameright.tga" + visible 1 + decoration + } + +itemDef { + name window + rect 304 192 16 96 + style 3 + background "ui/assets/ingameright.tga" + visible 1 + decoration + } + + + +itemDef { + name window + rect 64 330 64 8 + style 3 + background "ui/assets/ingamebottom.tga" + visible 1 + decoration + } +itemDef { + name window + rect 128 330 98 8 + style 3 + background "ui/assets/ingamebottom.tga" + visible 1 + decoration + } +itemDef { + name window + rect 172 330 98 8 + style 3 + background "ui/assets/ingamebottom.tga" + visible 1 + decoration + } + + + itemDef { + name teamarenaimage + style 3 + background "ui/assets/teamarenaimage.tga" + rect 70 20 180 90 + visible 1 + } + +itemDef { + name window + rect 20 81 280 40 + style 1 + backcolor 0 0 0 1 + forecolor 0 0 0 1 + visible 1 + decoration + } + + + +itemDef { + name playerlogo + ownerdraw UI_PLAYERLOGO_METAL + rect 20 25 60 60 + visible 1 + forecolor 1 .7 .7 1 + decoration + } + +itemDef { + name opposinglogo + ownerdraw UI_OPPONENTLOGO_METAL + rect 240 25 60 60 + visible 1 + forecolor .7 .7 1 1 + decoration +} + + + + + + + +// AWARDS TEAM GAME // + +itemdef { + name medal_assist_team + rect 25 250 30 30 + type ITEM_TYPE_EDITFIELD + style WINDOW_STYLE_SHADER + background "ui/assets/medal_assist.tga" + cvar "ui_scoreAssists" + ownerdrawflag UI_SHOW_ANYTEAMGAME + textscale .22 + textalign 1 + text "" + textalignx 15 + textaligny 40 + visible 1 + decoration + border 1 + bordersize 1 + bordercolor 1 1 1 0 + + } + + + +itemdef { + name medal_accuracy_team + style WINDOW_STYLE_SHADER + cvar "ui_scoreAccuracy" + rect 65 250 30 30 + background "ui/assets/medal_accuracy.tga" + ownerdrawflag UI_SHOW_ANYTEAMGAME + visible 1 + decoration + type ITEM_TYPE_EDITFIELD + textalign 1 + text "" + textalignx 15 + textaligny 40 + border 1 + bordersize 1 + bordercolor 1 1 1 0 + textscale .22 + } + + +itemdef { + name medal_excellent_team + style WINDOW_STYLE_SHADER + cvar "ui_scoreExcellents" + rect 105 250 30 30 + background "ui/assets/medal_excellent.tga" + ownerdrawflag UI_SHOW_ANYTEAMGAME + visible 1 + decoration + type ITEM_TYPE_EDITFIELD + textalign 1 + text "" + textalignx 15 + textaligny 40 + border 1 + bordersize 1 + bordercolor 1 1 1 0 + textscale .22 + } + + +itemdef { + name medal_gauntlet_team + style WINDOW_STYLE_SHADER + cvar "ui_scoreGauntlets" + rect 145 250 30 30 + background "ui/assets/medal_gauntlet.tga" + ownerdrawflag UI_SHOW_ANYTEAMGAME + visible 1 + decoration + type ITEM_TYPE_EDITFIELD + textalign 1 + text "" + textalignx 15 + textaligny 40 + border 1 + bordersize 1 + bordercolor 1 1 1 0 + textscale .22 + } + + +itemdef { + name medal_impressive_team + style WINDOW_STYLE_SHADER + cvar "ui_scoreImpressives" + rect 185 250 30 30 + background "ui/assets/medal_impressive.tga" + ownerdrawflag UI_SHOW_ANYTEAMGAME + visible 1 + decoration + type ITEM_TYPE_EDITFIELD + textalign 1 + text "" + textalignx 15 + textaligny 40 + border 1 + bordersize 1 + bordercolor 1 1 1 0 + textscale .22 + } + +itemdef { + name medal_defend_team + style WINDOW_STYLE_SHADER + cvar "ui_scoreDefends" + rect 225 250 30 30 + background "ui/assets/medal_defend.tga" + ownerdrawflag UI_SHOW_ANYTEAMGAME + visible 1 + decoration + type ITEM_TYPE_EDITFIELD + textalign 1 + text "" + textalignx 15 + textaligny 40 + border 1 + bordersize 1 + bordercolor 1 1 1 0 + textscale .22 + } + +itemdef { + name medal_capture_team + style WINDOW_STYLE_SHADER + cvar "ui_scoreCaptures" + rect 265 250 30 30 + background "ui/assets/medal_capture.tga" + ownerdrawflag UI_SHOW_ANYTEAMGAME + visible 1 + decoration + type ITEM_TYPE_EDITFIELD + textalign 1 + text "" + textalignx 15 + textaligny 40 + border 1 + bordersize 1 + bordercolor 1 1 1 0 + textscale .22 + } + + + + + +// AWARDS NONTEAM GAME // + + +itemdef { + name medal_perfect_nonteam + rect 60 250 30 30 + type ITEM_TYPE_EDITFIELD + style WINDOW_STYLE_SHADER + background "ui/assets/medal_perfect.tga" + cvar "ui_scorePerfect" + ownerdrawflag UI_SHOW_ANYNONTEAMGAME + textscale .22 + textalign 1 + text "" + textalignx 15 + textaligny 40 + visible 1 + decoration + border 1 + bordersize 1 + } + +itemdef { + name medal_accuracy_nonteam + style WINDOW_STYLE_SHADER + cvar "ui_scoreAccuracy" + rect 100 250 30 30 + background "ui/assets/medal_accuracy.tga" + ownerdrawflag UI_SHOW_ANYNONTEAMGAME + visible 1 + decoration + type ITEM_TYPE_EDITFIELD + textalign 1 + text "" + textalignx 15 + textaligny 40 + textscale .22 + border 1 + bordersize 1 + bordercolor 1 1 1 0 + } + + +itemdef { + name medal_excellent_nonteam + style WINDOW_STYLE_SHADER + cvar "ui_scoreExcellents" + rect 140 250 30 30 + background "ui/assets/medal_excellent.tga" + ownerdrawflag UI_SHOW_ANYNONTEAMGAME + visible 1 + decoration + type ITEM_TYPE_EDITFIELD + textalign 1 + text "" + textalignx 15 + textaligny 40 + textscale .22 + border 1 + bordersize 1 + bordercolor 1 1 1 0 + } + + + + +itemdef { + name medal_gauntlet_nonteam + style WINDOW_STYLE_SHADER + cvar "ui_scoreGauntlets" + rect 180 250 30 30 + background "ui/assets/medal_gauntlet.tga" + ownerdrawflag UI_SHOW_ANYNONTEAMGAME + visible 1 + decoration + type ITEM_TYPE_EDITFIELD + textalign 1 + text "" + textalignx 15 + textaligny 40 + textscale .22 + border 1 + bordersize 1 + bordercolor 1 1 1 0 + } + + +itemdef { + name medal_impressive_nonteam + style WINDOW_STYLE_SHADER + cvar "ui_scoreImpressives" + rect 220 250 30 30 + background "ui/assets/medal_impressive.tga" + ownerdrawflag UI_SHOW_ANYNONTEAMGAME + visible 1 + decoration + type ITEM_TYPE_EDITFIELD + textalign 1 + text "" + textalignx 15 + textaligny 40 + textscale .22 + border 1 + bordersize 1 + bordercolor 1 1 1 0 + } + + +// SOUND BUTTON // + + +itemdef { + name medal_assist_window + rect 23 248 34 34 + style WINDOW_STYLE_SHADER + background "ui/assets/medal_assist.tga" + ownerdrawflag UI_SHOW_ANYTEAMGAME + type 1 + border 1 + bordercolor .5 .5 .5 0 + forecolor 1 1 1 0 + backcolor 1 1 1 0 + visible 1 + mouseenter { setitemcolor medal_assist_team forecolor 0 0 0 0 ; setcolor forecolor 1 1 1 1 } + mouseexit { setitemcolor medal_assist_team forecolor 1 1 1 1 ; setcolor forecolor 1 1 1 0 } + action { exec "play sound/feedback/assist.wav" } + } + +itemdef { + name medal_accuracy_window + rect 63 248 34 34 + style WINDOW_STYLE_SHADER + background "ui/assets/medal_accuracy.tga" + ownerdrawflag UI_SHOW_ANYTEAMGAME + type 1 + border 1 + bordercolor .5 .5 .5 0 + forecolor 1 1 1 0 + backcolor 1 1 1 0 + visible 1 + mouseenter { setitemcolor medal_accuracy_team forecolor 0 0 0 0 ; setcolor forecolor 1 1 1 1 } + mouseexit { setitemcolor medal_accuracy_team forecolor 1 1 1 1 ; setcolor forecolor 1 1 1 0 } + action { exec "play sound/feedback/accuracy.wav" } + } +itemdef { + name medal_excellent_window + rect 103 248 34 34 + type 1 + style WINDOW_STYLE_SHADER + background "ui/assets/medal_excellent.tga" + ownerdrawflag UI_SHOW_ANYTEAMGAME + border 1 + bordercolor .5 .5 .5 0 + forecolor 1 1 1 0 + backcolor 1 1 1 0 + visible 1 + mouseenter { setitemcolor medal_excellent_team forecolor 0 0 0 0 ; setcolor forecolor 1 1 1 1 } + mouseexit { setitemcolor medal_excellent_team forecolor 1 1 1 1 ; setcolor forecolor 1 1 1 0 } + action { exec "play sound/feedback/excellent.wav" } + } +itemdef { + name medal_gauntlet_window + rect 143 248 34 34 + type 1 + style WINDOW_STYLE_SHADER + background "ui/assets/medal_gauntlet.tga" + ownerdrawflag UI_SHOW_ANYTEAMGAME + border 1 + bordercolor .5 .5 .5 0 + forecolor 1 1 1 0 + backcolor 1 1 1 0 + visible 1 + mouseenter { setitemcolor medal_gauntlet_team forecolor 0 0 0 0 ; setcolor forecolor 1 1 1 1 } + mouseexit { setitemcolor medal_gauntlet_team forecolor 1 1 1 1 ; setcolor forecolor 1 1 1 0 } + action { exec "play sound/feedback/gauntlet.wav" } + } +itemdef { + name medal_impressive_window + rect 183 248 34 34 + type 1 + style WINDOW_STYLE_SHADER + background "ui/assets/medal_impressive.tga" + ownerdrawflag UI_SHOW_ANYTEAMGAME + border 1 + bordercolor .5 .5 .5 0 + forecolor 1 1 1 0 + backcolor 1 1 1 0 + visible 1 + mouseenter { setitemcolor medal_impressive_team forecolor 0 0 0 0 ; setcolor forecolor 1 1 1 1 } + mouseexit { setitemcolor medal_impressive_team forecolor 1 1 1 1 ; setcolor forecolor 1 1 1 0 } + action { exec "play sound/feedback/impressive.wav" } + } +itemdef { + name medal_defend_window + rect 223 248 34 34 + type 1 + style WINDOW_STYLE_SHADER + background "ui/assets/medal_defend.tga" + ownerdrawflag UI_SHOW_ANYTEAMGAME + border 1 + bordercolor .5 .5 .5 0 + forecolor 1 1 1 0 + backcolor 1 1 1 0 + visible 1 + mouseenter { setitemcolor medal_defend_team forecolor 0 0 0 0 ; setcolor forecolor 1 1 1 1 } + mouseexit { setitemcolor medal_defend_team forecolor 1 1 1 1 ; setcolor forecolor 1 1 1 0 } + action { exec "play sound/feedback/defense.wav" } + } +itemdef { + name medal_capture_window + rect 263 248 34 34 + type 1 + style WINDOW_STYLE_SHADER + background "ui/assets/medal_capture.tga" + ownerdrawflag UI_SHOW_ANYTEAMGAME + border 1 + bordercolor .5 .5 .5 0 + forecolor 1 1 1 0 + backcolor 1 1 1 0 + visible 1 + mouseenter { setitemcolor medal_capture_team forecolor 0 0 0 0 ; setcolor forecolor 1 1 1 1 } + mouseexit { setitemcolor medal_capture_team forecolor 1 1 1 1 ; setcolor forecolor 1 1 1 0 } + action { exec "play sound/feedback/voc_captures.wav" } + } + + + + + + + +itemdef { + name medal_perfect_window + rect 58 248 34 34 + type 1 + style WINDOW_STYLE_SHADER + background "ui/assets/medal_perfect.tga" + ownerdrawflag UI_SHOW_ANYNONTEAMGAME + border 1 + bordercolor .5 .5 .5 0 + forecolor 1 1 1 0 + backcolor 1 1 1 0 + visible 1 + mouseenter { setitemcolor medal_perfect_nonteam forecolor 0 0 0 0 ; setcolor forecolor 1 1 1 1 } + mouseexit { setitemcolor medal_perfect_nonteam forecolor 1 1 1 1 ; setcolor forecolor 1 1 1 0 } + action { exec "play sound/feedback/perfect.wav" } + } + +itemdef { + name medal_accuracy_window + rect 98 248 34 34 + type 1 + style WINDOW_STYLE_SHADER + background "ui/assets/medal_accuracy.tga" + ownerdrawflag UI_SHOW_ANYNONTEAMGAME + border 1 + bordercolor .5 .5 .5 0 + forecolor 1 1 1 0 + backcolor 1 1 1 0 + visible 1 + mouseenter { setitemcolor medal_accuracy_nonteam forecolor 0 0 0 0 ; setcolor forecolor 1 1 1 1 } + mouseexit { setitemcolor medal_accuracy_nonteam forecolor 1 1 1 1 ; setcolor forecolor 1 1 1 0 } + action { exec "play sound/feedback/accuracy.wav" } + } + + + +itemdef { + name medal_excellent_window + rect 138 248 34 34 + type 1 + ownerdrawflag UI_SHOW_ANYNONTEAMGAME + style WINDOW_STYLE_SHADER + background "ui/assets/medal_excellent.tga" + border 1 + bordercolor .5 .5 .5 0 + forecolor 1 1 1 0 + backcolor 1 1 1 0 + visible 1 + mouseenter { setitemcolor medal_excellent_nonteam forecolor 0 0 0 0 ; setcolor forecolor 1 1 1 1 } + mouseexit { setitemcolor medal_excellent_nonteam forecolor 1 1 1 1 ; setcolor forecolor 1 1 1 0 } + action { exec "play sound/feedback/excellent.wav" } + } + + +itemdef { + name medal_gauntlet_window + rect 178 248 34 34 + type 1 + style WINDOW_STYLE_SHADER + background "ui/assets/medal_gauntlet.tga" + ownerdrawflag UI_SHOW_ANYNONTEAMGAME + border 1 + bordercolor .5 .5 .5 0 + forecolor 1 1 1 0 + backcolor 1 1 1 0 + visible 1 + mouseenter { setitemcolor medal_gauntlet_nonteam forecolor 0 0 0 0 ; setcolor forecolor 1 1 1 1 } + mouseexit { setitemcolor medal_gauntlet_nonteam forecolor 1 1 1 1 ; setcolor forecolor 1 1 1 0 } + action { exec "play sound/feedback/gauntlet.wav" } + } + + +itemdef { + name medal_impressive_window + rect 218 248 34 34 + type 1 + style WINDOW_STYLE_SHADER + background "ui/assets/medal_impressive.tga" + ownerdrawflag UI_SHOW_ANYNONTEAMGAME + border 1 + bordercolor .5 .5 .5 0 + forecolor 1 1 1 0 + backcolor 1 1 1 0 + visible 1 + mouseenter { setitemcolor medal_impressive_nonteam forecolor 0 0 0 0 ; setcolor forecolor 1 1 1 1 } + mouseexit { setitemcolor medal_impressive_nonteam forecolor 1 1 1 1 ; setcolor forecolor 1 1 1 0 } + action { exec "play sound/feedback/impressive.wav" } + } + + + + +// SCORE // + + + itemDef { + name normal + group grpsettings + type ITEM_TYPE_NUMERICFIELD + text "Game Score:" + cvar "ui_scoreTeam" + rect 160 95 128 12 + textalign ITEM_ALIGN_RIGHT + textalignx 0 + textaligny 12 + textscale .3 + forecolor 1 1 1 1 + visible 1 + decoration + } + itemDef { + name normal + group grpsettings + type ITEM_TYPE_NUMERICFIELD + text "Completion Time:" + cvar "ui_scoreTime" + rect 160 115 128 12 + textalign ITEM_ALIGN_RIGHT + textalignx 0 + textaligny 12 + textscale .3 + forecolor 1 1 1 1 + visible 1 + decoration + } + + itemDef { + name normal + group grpsettings + type ITEM_TYPE_NUMERICFIELD + text "Base Score:" + cvar "ui_scoreBase" + rect 160 135 128 12 + textalign ITEM_ALIGN_RIGHT + textalignx 0 + textaligny 12 + textscale .3 + forecolor 1 1 1 1 + visible 1 + decoration + mouseenter { } + mouseexit { } + } + + itemDef { + name normal + group grpsettings + type ITEM_TYPE_NUMERICFIELD + text "Time Bonus:" + cvar "ui_scoreTimeBonus" + rect 160 155 128 12 + textalign ITEM_ALIGN_RIGHT + textalignx 0 + textaligny 12 + textscale .3 + forecolor 1 1 1 1 + visible 1 + decoration + mouseenter { } + mouseexit { } + } +itemDef { + name normal + group grpsettings + type ITEM_TYPE_NUMERICFIELD + text "Shutout Bonus:" + cvar "ui_scoreShutoutBonus" + rect 160 175 128 12 + textalign ITEM_ALIGN_RIGHT + textalignx 0 + textaligny 12 + textscale .3 + forecolor 1 1 1 1 + visible 1 + decoration + mouseenter { } + mouseexit { } + } +itemDef { + name normal + group grpsettings + type ITEM_TYPE_NUMERICFIELD + text "Skill Bonus:" + cvar "ui_scoreSkillBonus" + rect 160 195 128 12 + textalign ITEM_ALIGN_RIGHT + textalignx 0 + textaligny 12 + textscale .3 + forecolor 1 1 1 1 + visible 1 + decoration + mouseenter { } + mouseexit { } + } + +itemDef { + name normal + group grpsettings + type ITEM_TYPE_NUMERICFIELD + text "Total Score:" + cvar "ui_scoreScore" + rect 160 215 128 12 + textalign ITEM_ALIGN_RIGHT + textalignx 0 + textaligny 12 + textscale .3 + forecolor 1 1 1 1 + visible 1 + decoration + mouseenter { } + mouseexit { } + } + +itemDef { + name level_info + group grplevelinfo2 + textstyle ITEM_TEXTSTYLE_BLINK + textscale .3 + text "New High Score" + rect 0 235 320 20 + ownerdrawflag UI_SHOW_NEWHIGHSCORE + textalign 1 + textalignx 160 // x alignment point for text + // use it to offset left/right text from the edge + // or to center the text on a different point + textaligny 12 + backcolor 0 0 0 0 + forecolor 1 0 0 1 + decoration + visible 1 + } + + +// BUTTON // + + +itemDef { + name replay + text "Replay" + type 1 + textscale .25 + group grpControlbutton + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + rect 57 305 45 26 + textalign 1 + textalignx 22 + textaligny 20 + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + visible 1 + action { close endofgame ; close skirmish ; uiScript skirmishStart } + mouseEnter { setitemcolor replay backcolor .1 .37 .1 1 } + mouseExit { setitemcolor replay backcolor .37 .1 .1 1 } + } +itemDef { + name replay + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/framebutton.tga" + rect 57 305 45 26 + visible 1 + forecolor .5 .5 .5 1 + decoration + } + +itemDef { + name replay + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/leftbutton.tga" + rect 45 305 13 26 + visible 1 + forecolor .5 .5 .5 1 + decoration + } + +itemDef { + name replay + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/rightbutton.tga" + rect 101 305 13 26 + visible 1 + forecolor .5 .5 .5 1 + decoration + } + + +itemDef { + name demo + text "Demo" + type 1 + textscale .25 + group grpControlbutton + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + rect 136 305 45 26 + textalign 1 + textalignx 22 + textaligny 20 + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + visible 1 + ownerdrawflag UI_SHOW_DEMOAVAILABLE + action { close endofgame ; uiScript RunSPDemo } + mouseEnter { setitemcolor demo backcolor .1 .37 .1 1 } + mouseExit { setitemcolor demo backcolor .37 .1 .1 1 } + } +itemDef { + name demo + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/framebutton.tga" + rect 136 305 45 26 + visible 1 + forecolor .5 .5 .5 1 + ownerdrawflag UI_SHOW_DEMOAVAILABLE + decoration + } + +itemDef { + name demo + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/leftbutton.tga" + rect 124 305 13 26 + visible 1 + forecolor .5 .5 .5 1 + ownerdrawflag UI_SHOW_DEMOAVAILABLE + decoration + } + +itemDef { + name demo + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/rightbutton.tga" + rect 180 305 13 26 + forecolor .5 .5 .5 1 + visible 1 + ownerdrawflag UI_SHOW_DEMOAVAILABLE + decoration + } + + +itemDef { + name main + text "Esc" + type 1 + textscale .25 + group grpControlbutton + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + rect 217 305 45 26 + textalign 1 + textalignx 22 + textaligny 20 + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + visible 1 + action { close endofgame ; open skirmish } + mouseEnter { setitemcolor main backcolor .1 .37 .1 1 } + mouseExit { setitemcolor main backcolor .37 .1 .1 1 } + } + +itemDef { + name main + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/framebutton.tga" + rect 217 305 45 26 + visible 1 + forecolor .5 .5 .5 1 + decoration + } + +itemDef { + name main + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/leftbutton.tga" + rect 205 305 13 26 + forecolor .5 .5 .5 1 + visible 1 + decoration + } + +itemDef { + name main + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/rightbutton.tga" + rect 261 305 13 26 + forecolor .5 .5 .5 1 + visible 1 + decoration + } + + + + + +} + + +} + + diff --git a/ta_ui/ui/error.menu b/ta_ui/ui/error.menu new file mode 100644 index 00000000..ed987e8d --- /dev/null +++ b/ta_ui/ui/error.menu @@ -0,0 +1,318 @@ +#include "ui/menudef.h" + +{ +\\ END OF GAME \\ + +menuDef { + name "error_popmenu" + visible 0 + fullscreen 0 + rect 158 80 320 320 + focusColor 1 .75 0 1 + style 1 + border 1 + popup + onClose { uiScript clearError } + onOpen { } + onESC { close error_popmenu ; open main } + + + +itemDef { + name window + rect 10 15 300 320 + style 1 + backcolor .8 .66 .15 1 + forecolor 0 0 0 1 + visible 1 + decoration + } + +itemDef { + name window + rect 10 15 300 320 + style 3 + background "warning" + forecolor 0 0 0 1 + visible 1 + decoration + } +itemDef { + name window + rect 10 15 300 10 + style 1 + backcolor 0 0 0 .25 + forecolor 0 0 0 1 + visible 1 + decoration + } + + +itemDef { + name window + rect 30 35 250 270 + style 1 + backcolor .5 .41 .09 1 + forecolor 0 0 0 1 + border 1 + bordercolor 0 0 0 1 + bordersize 5 + visible 1 + decoration + } + +// FRAME // + + +itemDef { + name window + rect 0 10 64 64 + style 3 + background "ui/assets/ingameleftcorner.tga" + visible 1 + decoration + } +itemDef { + name window + rect 64 10 64 8 + style 3 + background "ui/assets/ingametop.tga" + visible 1 + decoration + } +itemDef { + name window + rect 184 10 96 8 + style 3 + background "ui/assets/ingametop.tga" + visible 1 + decoration + } +itemDef { + name window + rect 256 10 64 64 + style 3 + background "ui/assets/ingamerightcorner.tga" + visible 1 + decoration + } +itemDef { + name window + rect 128 10 64 8 + style 3 + background "ui/assets/ingametop.tga" + visible 1 + decoration + } +itemDef { + name window + rect 0 274 64 64 + style 3 + background "ui/assets/ingameleftcornerb.tga" + visible 1 + decoration + } +itemDef { + name window + rect 256 274 64 64 + style 3 + background "ui/assets/ingamerightcornerb.tga" + visible 1 + decoration + } + +itemDef { + name window + rect 0 64 16 64 + style 3 + background "ui/assets/ingameleft.tga" + visible 1 + decoration + } + + +itemDef { + name window + rect 0 128 16 64 + style 3 + background "ui/assets/ingameleft.tga" + visible 1 + decoration + } + +itemDef { + name window + rect 0 192 16 96 + style 3 + background "ui/assets/ingameleft.tga" + visible 1 + decoration + } + +itemDef { + name window + rect 304 64 16 64 + style 3 + background "ui/assets/ingameright.tga" + visible 1 + decoration + } + + +itemDef { + name window + rect 304 128 16 64 + style 3 + background "ui/assets/ingameright.tga" + visible 1 + decoration + } + +itemDef { + name window + rect 304 192 16 96 + style 3 + background "ui/assets/ingameright.tga" + visible 1 + decoration + } + + + +itemDef { + name window + rect 64 330 64 8 + style 3 + background "ui/assets/ingamebottom.tga" + visible 1 + decoration + } +itemDef { + name window + rect 128 330 98 8 + style 3 + background "ui/assets/ingamebottom.tga" + visible 1 + decoration + } +itemDef { + name window + rect 172 330 98 8 + style 3 + background "ui/assets/ingamebottom.tga" + visible 1 + decoration + } + + + + + itemDef { + name errorinfo + rect 0 50 320 20 + text "Error:" + textalign 1 + textstyle 6 + textscale .333 + textalignx 160 + textaligny 23 + forecolor 1 1 1 1 + visible 1 + decoration + } + + itemDef { + name errorinfo + rect 60 80 200 270 + type ITEM_TYPE_TEXT + style 1 + textstyle 3 + autowrapped + cvar "com_errorMessage" + textalign ITEM_ALIGN_CENTER + textalignx 100 + textaligny 23 + textscale .25 + forecolor 1 1 1 1 + visible 1 + decoration + } + + + + + + + + + +// BUTTON // + + +itemDef { + name exit + text "Exit" + type 1 + textscale .25 + group grpControlbutton + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + rect 138 295 45 26 + textalign 1 + textalignx 22 + textaligny 20 + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + visible 1 + action { play "sound/misc/nomenu.wav" ; + close error_popmenu ; + open main } + mouseEnter { setitemcolor exit backcolor .1 .37 .1 1 } + mouseExit { setitemcolor exit backcolor .37 .1 .1 1 } + } +itemDef { + name exit + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/framebutton.tga" + rect 138 295 45 26 + visible 1 + forecolor 1 1 1 1 + decoration + } + +itemDef { + name exit + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/leftbutton.tga" + rect 126 295 13 26 + visible 1 + forecolor 1 1 1 1 + decoration + } + +itemDef { + name exit + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/rightbutton.tga" + rect 182 295 13 26 + visible 1 + forecolor 1 1 1 1 + decoration + } + + + + + + + +} + + +} + + diff --git a/ta_ui/ui/fight.menu b/ta_ui/ui/fight.menu new file mode 100644 index 00000000..9851818b --- /dev/null +++ b/ta_ui/ui/fight.menu @@ -0,0 +1,770 @@ +#include "ui/menudef.h" + +{ +\\ Fight \\ + + menuDef { + name "fight" + visible 0 + fullscreen 1 + rect 0 0 640 480 + background uibackground4 + focusColor 1 .67 0 1 + style 1 + border 1 + + itemDef { + name fight + style WINDOW_STYLE_SHADER + rect 0 45 512 128 + visible 1 + background "fight" + decoration + } + + + itemDef { + name leftgrad + style WINDOW_STYLE_SHADER + background "ui/assets/halfgradleft.tga" + rect 64 249 256 102 + forecolor .75 0 0 0.5 + visible 1 + decoration + } + +itemDef { + name rightgrad + style WINDOW_STYLE_SHADER + background "ui/assets/halfgradright.tga" + rect 320 249 256 102 + forecolor 0 0 .75 0.5 + visible 1 + decoration + } + + + itemDef { + name leftvertgrad + style WINDOW_STYLE_SHADER + background "ui/assets/verticalgradient.tga" + rect 16 249 128 102 + forecolor .75 0 0 0.5 + visible 1 + decoration + } + + itemDef { + name rightvertgrad + style WINDOW_STYLE_SHADER + background "ui/assets/verticalgradient.tga" + rect 496 249 128 102 + forecolor 0 0 .75 0.5 + textscale 0.4 + visible 1 + decoration + } + + + + + + + + +// LEVEL SELECTION BAR // + + +// GAMETYPE BAR // + + +itemDef { + name gametypebar + style 2 + rect 0 5 640 40 + textscale 0.4 + textalign 0 // center + textalignx 60 // x alignment point for text + // use it to offset left/right text from the edge + // or to center the text on a different point + textaligny 21 + style 2 + border 4 + bordercolor 0.5 0.5 0.5 0.5 + bordersize 2 + backcolor 0 0 .75 0.5 + visible 1 + mouseEnter { setcolor backcolor .75 0 0 .5 } + mouseExit { setcolor backcolor 0 0 .75 .5 } + decoration +} + + +itemDef { + name gametypefield + style 0 + name tier + ownerdraw UI_TIER + rect 0 10 320 31 + textalign ITEM_ALIGN_LEFT + textalignx 20 + textaligny 26 + textscale .4 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 1 + mouseEnter { fadein message_tier } + mouseExit { fadeout message_tier } + } + +itemDef { + name gametypefield + style 0 + ownerdraw UI_SKILL + text "Skill:" + rect 320 10 320 31 + textalign ITEM_ALIGN_LEFT + textalignx 90 + textaligny 26 + textscale .4 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 1 + mouseEnter { fadein message_skill } + mouseExit { fadeout message_skill } + } + + +// TEAM LOGO // + + +itemDef { + name playerlogo + ownerdraw UI_PLAYERLOGO_METAL + rect 28 250 100 100 + visible 1 + forecolor 1 .7 .7 1 + decoration + } + +itemDef { + name opposinglogo + ownerdraw UI_OPPONENTLOGO_METAL + rect 488 250 100 100 + visible 1 + forecolor .7 .7 1 1 + decoration +} + +// MAP INFO // + +itemDef { + name window + rect 14 247 612 105 + style WINDOW_STYLE_FILLED + border 1 + bordercolor .5 .5 .5 .5 + forecolor 1 1 1 1 + backcolor 0 0 0 .25 + visible 1 + decoration +} + +itemDef { + name location + text "VS" + textscale 1 + rect 192 325 256 30 + textalign 1 // center + textalignx 128 // x alignment point for text + // use it to offset left/right text from the edge + // or to center the text on a different point + textaligny 21 + backcolor 0 0 0 0 + forecolor 1 1 1 .5 + decoration + visible 1 + } + + +itemDef { + name level_info + group grplevelinfo2 + ownerdraw UI_TIER_MAPNAME + textscale .35 + rect 14 220 222 20 + textalign 0 + textalignx 3 // x alignment point for text + // use it to offset left/right text from the edge + // or to center the text on a different point + textaligny 18 + backcolor 0 0 0 0 + forecolor 1 1 1 1 + decoration + visible 1 + } + +itemDef { + name level_info + group grplevelinfo2 + ownerdraw UI_TIER_GAMETYPE + textscale .35 + rect 236 220 122 20 + textalign 0 + textalignx 3 // x alignment point for text + // use it to offset left/right text from the edge + // or to center the text on a different point + textaligny 18 + backcolor 0 0 0 0 + forecolor 1 1 1 1 + decoration + visible 1 + } + +itemDef { + name level_info + group grplevelinfo2 + type ITEM_TYPE_NUMERICFIELD + text "Captures " + cvar "capturelimit" + rect 358 220 122 20 + textalign 0 + textalignx 3 + textaligny 18 + textscale .35 + forecolor 1 1 1 1 + visible 1 + decoration + } + + itemDef { + name level_info + group grplevelinfo2 + type ITEM_TYPE_NUMERICFIELD + text "Time " + cvar "timelimit" + rect 480 220 72 20 + textalign 0 + textalignx 3 + textaligny 18 + textscale .35 + forecolor 1 1 1 1 + visible 1 + decoration + } + + itemDef { + name level_info + group grplevelinfo2 + type ITEM_TYPE_NUMERICFIELD + text "Frags " + cvar "fraglimit" + rect 552 220 72 20 + textalign 0 + textalignx 3 + textaligny 18 + textscale .35 + forecolor 1 1 1 1 + visible 1 + decoration + } + + +// TEAM NAME // + +itemDef { + name playerteamname + ownerdraw UI_PLAYERLOGO_NAME + rect 128 295 128 64 + decoration + visible 1 +} + +itemDef { + name opposingteamname + ownerdraw UI_OPPONENTLOGO_NAME + rect 388 295 128 64 + backcolor 0 0 0 0 + forecolor 1 1 1 1 + decoration + visible 1 +} + + + + + + + +// PLAYER STATS // + +itemDef { + name window + rect 14 354 612 34 + style WINDOW_STYLE_FILLED + border 1 + bordercolor .5 .5 .5 .5 + forecolor 1 1 1 1 + backcolor 0 0 0 .25 + visible 1 + decoration +} + +itemDef { + name name + type ITEM_TYPE_EDITFIELD + style 0 + text "Name:" + cvar "name" + textscale .35 + style 0 + rect 0 363 128 30 + textalign 1 // center + textalignx 64 // x alignment point for text + // use it to offset left/right text from the edge + // or to center the text on a different point + textaligny 17 + backcolor 0 0 0 0 + forecolor 1 1 1 1 + decoration + visible 1 + } + + + + +itemDef { + name score + text "Score:" + textscale .35 + style 0 + rect 246 363 128 30 + textalign 3 // center + textalignx 16 // x alignment point for text + // use it to offset left/right text from the edge + // or to center the text on a different point + textaligny 17 + backcolor 0 0 0 0 + forecolor 1 1 1 1 + decoration + visible 1 + } + + +itemDef { + name wins + text "Wins:" + textscale .35 + style 0 + rect 404 363 128 30 + textalign 1 // center + textalignx 64 // x alignment point for text + // use it to offset left/right text from the edge + // or to center the text on a different point + textaligny 17 + backcolor 0 0 0 0 + forecolor 1 1 1 1 + decoration + visible 1 + } + + +// AWARDS // + + +itemDef { + name window + rect 14 390 612 38 + style WINDOW_STYLE_FILLED + border 1 + bordercolor .5 .5 .5 .5 + forecolor 1 1 1 1 + backcolor 0 0 0 .25 + visible 1 + decoration +} + +itemdef { + name medal_accuracy + style WINDOW_STYLE_SHADER + rect 48 394 32 32 + background "ui/assets/medal_accuracy.tga" + forecolor 1 1 1 .25 + visible 1 + decoration +} + +itemdef { + name medal_assist + style WINDOW_STYLE_SHADER + rect 112 394 32 32 + background "ui/assets/medal_assist.tga" + forecolor 1 1 1 .25 + visible 1 + decoration + +} + +itemdef { + name medal_accuracy + style WINDOW_STYLE_SHADER + rect 176 394 32 32 + background "ui/assets/medal_accuracy.tga" + forecolor 1 1 1 .25 + visible 1 + decoration + +} + +itemdef { + name medal_defend + style WINDOW_STYLE_SHADER + rect 240 394 32 32 + background "ui/assets/medal_defend.tga" + forecolor 1 1 1 .25 + visible 1 + decoration + +} + +itemdef { + name medal_excellent + style WINDOW_STYLE_SHADER + rect 304 394 32 32 + background "ui/assets/medal_excellent.tga" + forecolor 1 1 1 .25 + visible 1 + decoration + +} + +itemdef { + name medal_frags + style WINDOW_STYLE_SHADER + rect 368 394 32 32 + background "ui/assets/medal_frags.tga" + forecolor 1 1 1 .25 + visible 1 + decoration + +} + +itemdef { + name medal_gauntlet + style WINDOW_STYLE_SHADER + rect 432 394 32 32 + background "ui/assets/medal_gauntlet.tga" + forecolor 1 1 1 .25 + visible 1 + decoration + +} + +itemdef { + name medal_impressive + style WINDOW_STYLE_SHADER + rect 496 394 32 32 + background "ui/assets/medal_impressive.tga" + forecolor 1 1 1 .25 + visible 1 + decoration + +} + +itemdef { + name medal_victory + style WINDOW_STYLE_SHADER + rect 560 394 32 32 + background "ui/assets/medal_victory.tga" + forecolor 1 1 1 .25 + visible 1 + decoration +} + + + + +// SCREEN SHOT // + +itemDef { + name mapwindow + rect 14 52 612 158 + style WINDOW_STYLE_FILLED + border 1 + bordercolor .5 .5 .5 .5 + forecolor 1 1 1 1 + backcolor 0 0 0 .25 + visible 1 + decoration + mouseenter { setitemcolor mapwindow bordercolor .7 0 0 1 ; fadein message_arena } + mouseexit { setitemcolor mapwindow bordercolor .5 .5 .5 .5 ; fadeout message_arena } +} + +itemdef { + name screen1 + rect 19 57 198 148 + ownerdraw UI_TIERMAP1 + visible 1 + mouseenter { setitemcolor borderscreen1 backcolor .25 .25 .25 .25 } + mouseexit { setitemcolor borderscreen1 backcolor 0 0 0 0 } + action { setcvar ui_currentMap 0 ; setitemcolor grpborderscreen bordercolor .5 .5 .5 1 ; setitemcolor borderscreen1 bordercolor 1 0 0 1 } +} + + +itemdef { + name screen2 + rect 221 57 198 148 + ownerdraw UI_TIERMAP2 + visible 1 + mouseenter { setitemcolor borderscreen2 backcolor .25 .25 .25 .25 } + mouseexit { setitemcolor borderscreen2 backcolor 0 0 0 0 } + action { setcvar ui_currentMap 1 ; setitemcolor grpborderscreen bordercolor .5 .5 .5 1 ; setitemcolor borderscreen2 bordercolor 1 0 0 1 } +} + + +itemdef { + name screen3 + ownerdraw UI_TIERMAP3 + rect 423 57 198 148 + visible 1 + mouseenter { setitemcolor borderscreen3 backcolor .25 .25 .25 .25 } + mouseexit { setitemcolor borderscreen3 backcolor 0 0 0 0 } + action { setcvar ui_currentMap 2 ; setitemcolor grpborderscreen bordercolor .5 .5 .5 1 ; setitemcolor borderscreen3 bordercolor 1 0 0 1 } +} + +itemdef { + name borderscreen1 + group grpborderscreen + rect 18 56 200 150 + style WINDOW_STYLE_FILLED + border 1 + backcolor 0 0 0 0 + bordercolor .5 .5 .5 1 + decoration + visible 1 +} + +itemdef { + name borderscreen2 + group grpborderscreen + rect 220 56 200 150 + style WINDOW_STYLE_FILLED + decoration + border 1 + backcolor 0 0 0 0 + bordercolor .5 .5 .5 1 + visible 1 + +} + + +itemdef { + name borderscreen3 + group grpborderscreen + style WINDOW_STYLE_FILLED + border 1 + bordercolor .5 .5 .5 1 + backcolor 0 0 0 0 + decoration + rect 422 56 200 150 + visible 1 +} + + + + + + + + + + + + + +// BACK BAR // + + + itemDef { + name gotobar + style 2 + rect 0 430 640 30 + textscale 0.4 + textalign 0 // center + textalignx 60 // x alignment point for text + // use it to offset left/right text from the edge + // or to center the text on a different point + textaligny 21 + style 2 + border 4 + bordercolor 0.5 0.5 0.5 0.5 + bordersize 2 + backcolor 0 0 .75 0.5 + visible 1 + mouseEnter { setcolor backcolor .75 0 0 .5 } + mouseExit { setcolor backcolor 0 0 .75 .5 } + decoration + } + + itemDef { + name back + style 3 + background "ui/assets/backarrow.tga" + rect 16 424 50 50 + visible 1 + action { close fight ; open main } + mouseEnter { hide back ; show back_alt ; fadein message_back } + } + +itemDef { + name back_alt + style WINDOW_STYLE_SHADER + background "ui/assets/backarrow_alt.tga" + rect 16 424 50 50 + backcolor 0 0 0 0 + forecolor 1 1 1 1 + visible 0 + type ITEM_TYPE_BUTTON + mouseExit { hide back_alt ; show back ; fadeout message_back } + action { close fight ; open main } + } + + + + +itemDef { + name accept + style 3 + rect 574 424 50 50 + background "ui/assets/forwardarrow.tga" + backcolor 0 0 0 0 + forecolor 1 1 1 1 + visible 1 + mouseEnter { show lightning ; hide accept ; show accept_alt ; fadein message_accept } + action { close fight ; uiScript SinglePlayerStart } + } + +itemDef { + name accept_alt + style 3 + rect 574 424 50 50 + background "ui/assets/forwardarrow_alt.tga" + backcolor 0 0 0 0 + forecolor 1 1 1 1 + visible 0 + type ITEM_TYPE_BUTTON + action { close fight ; uiScript SinglePlayerStart } + mouseExit { hide lightning ; hide accept_alt ; show accept ; fadeout message_accept } + } + + itemDef { + name lightning + style 3 + background lightningkc + rect 46 385 246 128 + visible 0 + decoration + } +itemDef { + name lightning + style 3 + background lightningkc + rect 345 385 246 128 + visible 0 + decoration + } + +// MESSAGES // + +itemDef { + name message_back + style 0 + rect 320 430 128 30 + textstyle 1 + textalign 1 + textalignx 0 + textaligny 25 + textscale .4 + text "Exit to Main Menu" + forecolor 1 1 1 1 + decoration + visible 0 + } + +itemDef { + name message_accept + style 0 + rect 320 430 128 30 + textalign 1 + textstyle 1 + textalignx 0 + textaligny 25 + textscale .4 + text "Enter Arena" + forecolor 1 1 1 1 + decoration + visible 0 + } + +itemDef { + name message_tier + style 0 + rect 320 430 128 30 + textalign 1 + textstyle 1 + textalignx 0 + textaligny 25 + textscale .4 + text "Choose Tier" + forecolor 1 1 1 1 + decoration + visible 0 + } + +itemDef { + name message_skill + style 0 + rect 320 430 128 30 + textstyle 1 + textalign 1 + textalignx 0 + textaligny 25 + textscale .4 + text "Set Skill Level" + forecolor 1 1 1 1 + decoration + visible 0 + } + +itemDef { + name message_arena + style 0 + rect 320 430 128 30 + textstyle 1 + textalign 1 + textalignx 0 + textaligny 25 + textscale .4 + text "Choose Your Arena" + forecolor 1 1 1 1 + decoration + visible 0 + } + + + +} + + + + + + + + +} + +} +} \ No newline at end of file diff --git a/ta_ui/ui/findplayer.menu b/ta_ui/ui/findplayer.menu new file mode 100644 index 00000000..1eaf7354 --- /dev/null +++ b/ta_ui/ui/findplayer.menu @@ -0,0 +1,514 @@ +#include "ui/menudef.h" + +{ +\\ Server Information Popup Menu \\ + +menuDef { + name "findplayer_popmenu" + visible 0 + fullscreen 0 + rect 158 80 320 340 + focusColor 1 .75 0 1 + style 1 + border 1 + popup + onClose { } + onOpen { uiScript FindPlayer ; setfocus namefield } + onESC { close findplayer_popmenu ; open joinserver } + +itemDef { + name window + rect 10 15 310 330 + style 1 + backcolor 0 0 0 .5 + forecolor 0 0 0 1 + visible 1 + decoration + } +itemDef { + name window + rect 10 15 320 340 + style 1 + backcolor 0 0 0 .25 + forecolor 0 0 0 1 + visible 1 + decoration + } + + + +itemDef { + name window + rect 10 15 300 320 + style 1 + backcolor .1 .1 .37 1 + forecolor 0 0 0 1 + visible 1 + decoration + } + + + +itemDef { + name window + rect 10 15 300 10 + style 1 + backcolor 0 0 0 .25 + forecolor 0 0 0 1 + visible 1 + decoration + } + + +// FRAME // + + +itemDef { + name window + rect 0 10 64 64 + style 3 + background "ui/assets/ingameleftcorner.tga" + visible 1 + decoration + } +itemDef { + name window + rect 64 10 64 8 + style 3 + background "ui/assets/ingametop.tga" + visible 1 + decoration + } +itemDef { + name window + rect 184 10 96 8 + style 3 + background "ui/assets/ingametop.tga" + visible 1 + decoration + } +itemDef { + name window + rect 256 10 64 64 + style 3 + background "ui/assets/ingamerightcorner.tga" + visible 1 + decoration + } +itemDef { + name window + rect 128 10 64 8 + style 3 + background "ui/assets/ingametop.tga" + visible 1 + decoration + } +itemDef { + name window + rect 0 274 64 64 + style 3 + background "ui/assets/ingameleftcornerb.tga" + visible 1 + decoration + } +itemDef { + name window + rect 256 274 64 64 + style 3 + background "ui/assets/ingamerightcornerb.tga" + visible 1 + decoration + } + +itemDef { + name window + rect 0 64 16 64 + style 3 + background "ui/assets/ingameleft.tga" + visible 1 + decoration + } + + +itemDef { + name window + rect 0 128 16 64 + style 3 + background "ui/assets/ingameleft.tga" + visible 1 + decoration + } + +itemDef { + name window + rect 0 192 16 96 + style 3 + background "ui/assets/ingameleft.tga" + visible 1 + decoration + } + +itemDef { + name window + rect 304 64 16 64 + style 3 + background "ui/assets/ingameright.tga" + visible 1 + decoration + } + + +itemDef { + name window + rect 304 128 16 64 + style 3 + background "ui/assets/ingameright.tga" + visible 1 + decoration + } + +itemDef { + name window + rect 304 192 16 96 + style 3 + background "ui/assets/ingameright.tga" + visible 1 + decoration + } + + + +itemDef { + name window + rect 64 330 64 8 + style 3 + background "ui/assets/ingamebottom.tga" + visible 1 + decoration + } +itemDef { + name window + rect 128 330 98 8 + style 3 + background "ui/assets/ingamebottom.tga" + visible 1 + decoration + } +itemDef { + name window + rect 172 330 98 8 + style 3 + background "ui/assets/ingamebottom.tga" + visible 1 + decoration + } + + + + itemDef { + name findplayer + rect 0 20 320 20 + text "Find a Friend" + textalign 1 + textstyle 3 + textscale .333 + textalignx 155 + textaligny 23 + forecolor 1 1 1 1 + visible 1 + decoration + } +itemDef { + name window + rect 61 53 239 20 + style 1 + backcolor 0 0 0 .5 + forecolor 0 0 0 1 + visible 1 + decoration + } + + +itemDef { + name namefield + group "playersettinggroup" + type ITEM_TYPE_EDITFIELD + style 0 + text "Name:" + cvar "ui_findplayer" + maxChars 20 + rect 20 48 215 32 + textalign ITEM_ALIGN_LEFT + textalignx 0 + textaligny 21 + textscale .3 + outlinecolor 1 .5 .5 .5 + backcolor 0 0 0 0 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + action { ui_script FindPlayer } + visible 1 + } + + + itemDef { + name serverNameList //LIST OF SERVER NAMES// + rect 20 75 280 80 + type ITEM_TYPE_LISTBOX + style WINDOW_STYLE_FILLED + elementwidth 120 + elementheight 16 + textscale .225 + backcolor 0 0 0 1 + outlinecolor .1 .1 .7 .5 + border 1 + bordersize 1 + bordercolor .5 .5 .5 1 + elementtype LISTBOX_TEXT + feeder FEEDER_FINDPLAYER + visible 1 + mouseenter { setitemcolor serverNamewindow bordercolor .7 0 0 1 } + mouseexit { setitemcolor serverNamewindow bordercolor .5 .5 .5 1 } + } + + itemDef { + name serverNamewindow + rect 20 75 264 80 + style 1 + backcolor 0 0 0 0 + forecolor 0 0 0 0 + border 1 + bordersize 1 + bordercolor .5 .5 .5 1 + visible 1 + decoration + } + + itemDef { + name serverInfoList //LIST OF SERVER STATUS INFORMATION// + rect 20 175 280 110 + type ITEM_TYPE_LISTBOX + style WINDOW_STYLE_FILLED + elementwidth 120 + elementheight 16 + textscale .225 + backcolor 0 0 0 1 + border 1 + bordersize 1 + bordercolor .5 .5 .5 1 + elementtype LISTBOX_TEXT + feeder FEEDER_SERVERSTATUS + notselectable + visible 1 + columns 4 2 40 20 + 40 40 10 + 90 40 10 + 135 40 20 + mouseenter { setitemcolor serverInfowindow bordercolor .7 0 0 1 } + mouseexit { setitemcolor serverInfowindow bordercolor .5 .5 .5 1 } + + } + + itemDef { + name serverInfowindow + rect 20 175 264 110 + style 1 + backcolor 0 0 0 0 + forecolor 0 0 0 0 + border 1 + bordersize 1 + bordercolor .5 .5 .5 1 + visible 1 + decoration + } + + + + + + + + + + +// BUTTON // + + +itemDef { + name exit + text "Exit" + type 1 + textscale .25 + group grpControlbutton + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + rect 38 295 45 26 + textalign 1 + textalignx 22 + textaligny 20 + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + visible 1 + action {play "sound/misc/nomenu.wav" ; + close findplayer_popmenu ; + open joinserver } + mouseEnter { setitemcolor exit backcolor .1 .37 .1 1 } + mouseExit { setitemcolor exit backcolor .37 .1 .1 1 } + } +itemDef { + name exit + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/framebutton.tga" + rect 38 295 45 26 + visible 1 + forecolor 1 1 1 1 + decoration + } + +itemDef { + name exit + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/leftbutton.tga" + rect 26 295 13 26 + visible 1 + forecolor 1 1 1 1 + decoration + } + +itemDef { + name exit + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/rightbutton.tga" + rect 82 295 13 26 + visible 1 + forecolor 1 1 1 1 + decoration + } + +itemDef { + name search + text "Search" + type 1 + textscale .25 + group grpControlbutton + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + rect 131 295 60 26 + textalign 1 + textalignx 30 + textaligny 20 + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + visible 1 + action { play "sound/misc/nomenu.wav" ; + ui_script FindPlayer } + mouseEnter { setitemcolor search backcolor .1 .37 .1 1 } + mouseExit { setitemcolor search backcolor .37 .1 .1 1 } + } +itemDef { + name search + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/framebutton.tga" + rect 131 295 60 26 + visible 1 + forecolor 1 1 1 1 + decoration + } + +itemDef { + name search + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/leftbutton.tga" + rect 119 295 13 26 + visible 1 + forecolor 1 1 1 1 + decoration + } + +itemDef { + name search + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/rightbutton.tga" + rect 190 295 13 26 + visible 1 + forecolor 1 1 1 1 + decoration + } + + + + +itemDef { + name join + text "Join" + type 1 + textscale .25 + group grpControlbutton + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + rect 238 295 45 26 + textalign 1 + textalignx 22 + textaligny 20 + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + visible 1 + action { ui_script FoundPlayerJoinServer } + mouseEnter { setitemcolor join backcolor .1 .37 .1 1 } + mouseExit { setitemcolor join backcolor .37 .1 .1 1 } + } +itemDef { + name join + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/framebutton.tga" + rect 238 295 45 26 + visible 1 + forecolor 1 1 1 1 + decoration + } + +itemDef { + name join + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/leftbutton.tga" + rect 226 295 13 26 + visible 1 + forecolor 1 1 1 1 + decoration + } + +itemDef { + name join + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/rightbutton.tga" + rect 282 295 13 26 + visible 1 + forecolor 1 1 1 1 + decoration + } + + + + + + + +} + + +} + + diff --git a/ta_ui/ui/help.menu b/ta_ui/ui/help.menu new file mode 100644 index 00000000..1b450382 --- /dev/null +++ b/ta_ui/ui/help.menu @@ -0,0 +1,660 @@ +#include "ui/menudef.h" + +{ +\\ Help\\ + + menuDef { + name "help_menu" + visible 0 + fullscreen 1 + rect 0 0 640 480 + background "menuback_a" + focusColor 1 .75 0 1 + style 1 + border 1 + onEsc { close help_menu ; close powerup_menu ; close ordersHelp_menu ; open main } + onOpen { setitemcolor fadebox backcolor 0 0 0 1 ; + playlooped "music/fla_mp03.wav" ; + fadeout fadebox ; + hide grphelptext ; + show grpbttn ; + show ctf ; + hide back_alt ; + show back ; + hide grpmessage } + + + +// BAR // + + +itemDef { + name gametypebar + style 2 + rect 0 16 640 40 + textscale 0.4 + textalign 0 // center + textalignx 60 // x alignment point for text + // use it to offset left/right text from the edge + // or to center the text on a different point + textaligny 21 + style 2 + border 4 + bordercolor 0.5 0.5 0.5 0.5 + bordersize 2 + backcolor 0 0 .75 0.5 + visible 1 + mouseEnter { setcolor backcolor .75 0 0 .5 ; fadein message_help } + mouseExit { setcolor backcolor 0 0 .75 .5 ; fadeout message_help } + decoration + } + + +itemDef { + name bar + style 0 + text "Gametypes" + type 1 + rect 0 16 213 40 + textstyle 6 + textalign 1 + textalignx 106 + textaligny 31 + textscale .35 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 1 + action { play "sound/misc/kcaction.wav" ; + hide grphelptext ; + show grpbttn ; + close powerup_menu ; + close ordersHelp_menu ; + show ctf } + } +itemDef { + name bar + style 0 + type 1 + text "Power-Ups" + rect 213 16 213 40 + textstyle 6 + textalign 1 + textalignx 106 + textaligny 31 + textscale .35 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 1 + action { play "sound/misc/kcaction.wav" ; + hide grphelptext ; + hide grpbttn ; + close powerup_menu ; + close ordersHelp_menu ; + open powerup_menu } + } +itemDef { + name bar + style 0 + text "Orders" + textstyle 6 + type 1 + rect 426 16 213 40 + textalign 1 + textalignx 106 + textaligny 31 + textscale .35 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 1 + action { play "sound/misc/kcaction.wav" ; + hide grphelptext ; + hide grpbttn ; + close powerup_menu ; + close ordersHelp_menu ; + open ordersHelp_menu } + } + +// GAMETYPES BUTTONS // + +itemDef { + name ctfbttn + group grpbttn + type 1 + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + text "Capture the Flag" + rect 23 97 120 26 + textalign 1 + textalignx 60 + textaligny 20 + textscale .30 + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + visible 0 + action { hide grphelptext ; show ctf ; play "sound/misc/kcaction.wav" } + mouseEnter { setitemcolor ctfbttn backcolor .1 .37 .1 1 } + mouseExit { setitemcolor ctfbttn backcolor .37 .1 .1 1 } + } + +itemDef { + name ctfbttn + group grpbttn + style WINDOW_STYLE_SHADER + background "ui/assets/framebutton.tga" + rect 23 97 120 26 + visible 1 + decoration + } + +itemDef { + name ctfbttn + group grpbttn + style WINDOW_STYLE_SHADER + background "ui/assets/leftbutton.tga" + rect 11 97 13 26 + visible 1 + decoration + } + +itemDef { + name ctfbttn + group grpbttn + style WINDOW_STYLE_SHADER + background "ui/assets/rightbutton.tga" + rect 142 97 13 26 + visible 1 + decoration + } + +itemDef { + name oneflagbttn + group grpbttn + type 1 + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + text "One Flag" + rect 183 97 120 26 + textalign 1 + textalignx 60 + textaligny 20 + textscale .3 + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + visible 0 + action { hide grphelptext ; show oneflag ; play "sound/misc/kcaction.wav" } + mouseEnter { setitemcolor oneflagbttn backcolor .1 .37 .1 1 } + mouseExit { setitemcolor oneflagbttn backcolor .37 .1 .1 1 } + } + +itemDef { + name oneflagbttn + group grpbttn + style WINDOW_STYLE_SHADER + background "ui/assets/framebutton.tga" + rect 183 97 120 26 + visible 1 + decoration + } + +itemDef { + name oneflagbttn + group grpbttn + style WINDOW_STYLE_SHADER + background "ui/assets/leftbutton.tga" + rect 171 97 13 26 + visible 1 + decoration + } + +itemDef { + name oneflagbttn + group grpbttn + style WINDOW_STYLE_SHADER + background "ui/assets/rightbutton.tga" + rect 302 97 13 26 + visible 1 + decoration + } + +itemDef { + name overloadbttn + group grpbttn + type 1 + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + text "Overload" + rect 343 97 120 26 + textalign 1 + textalignx 60 + textaligny 20 + textscale .3 + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + visible 0 + action { hide grphelptext ; show overload ; play "sound/misc/kcaction.wav" } + mouseEnter { setitemcolor overloadbttn backcolor .1 .37 .1 1 } + mouseExit { setitemcolor overloadbttn backcolor .37 .1 .1 1 } + } + +itemDef { + name overloadbttn + group grpbttn + style WINDOW_STYLE_SHADER + background "ui/assets/framebutton.tga" + rect 343 97 120 26 + visible 1 + decoration + } + +itemDef { + name overloadbttn + group grpbttn + style WINDOW_STYLE_SHADER + background "ui/assets/leftbutton.tga" + rect 331 97 13 26 + visible 1 + decoration + } + +itemDef { + name overloadbttn + group grpbttn + style WINDOW_STYLE_SHADER + background "ui/assets/rightbutton.tga" + rect 462 97 13 26 + visible 1 + decoration + } + + +itemDef { + name harvesterbttn + type 1 + group grpbttn + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + text "Harvester" + rect 503 97 120 26 + textalign 1 + textalignx 60 + textaligny 20 + textscale .3 + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + visible 0 + action { hide grphelptext ; show harvester ; play "sound/misc/kcaction.wav"} + mouseEnter { setitemcolor harvesterbttn backcolor .1 .37 .1 1 } + mouseExit { setitemcolor harvesterbttn backcolor .37 .1 .1 1 } + } + +itemDef { + name harvesterbttn + group grpbttn + style WINDOW_STYLE_SHADER + background "ui/assets/framebutton.tga" + rect 503 97 120 26 + visible 1 + decoration + } + +itemDef { + name harvesterbttn + group grpbttn + style WINDOW_STYLE_SHADER + background "ui/assets/leftbutton.tga" + rect 491 97 13 26 + visible 1 + decoration + } + +itemDef { + name harvesterbttn + group grpbttn + style WINDOW_STYLE_SHADER + background "ui/assets/rightbutton.tga" + rect 622 97 13 26 + visible 1 + decoration + } + + + +// HELP TEXT // + +// CTF // + + +itemDef { + name ctf + group grphelptext + style 0 + text "Capture the Flag" + rect 280 154 500 20 + textalign 0 + textalignx 0 + textaligny 17 + textscale .3 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 0 + decoration + } +itemDef { + name ctf + group grphelptext + style 0 + wrapped + rect 280 184 500 20 + text "To score a team point (often called a capture), the team \r" + "must invade the opposing team's base, run through (grab) \r" + "the other team's flag, and carry it back to their own flag.\r" + "For the capture to take place, the team's own flag must still \r" + "be in the base. The flag carrier drops the flag when he or \r" + "she is fragged. If the flag is not over void or death fog,\r" + "it stays in play. A player picks up a dropped flag when he \r" + "or she runs through it. This returns the player's own flag \r" + "to base. If the player runs through the opposing team's flag,\r" + "the player picks it up and runs with it." + textalign 0 + textalignx 0 + textaligny 17 + textscale .25 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 0 + decoration + } + +itemDef { + name ctf + group grphelptext + style 5 + cinematic "ctf.RoQ" + rect 10 154 256 192 + border 1 + bordercolor .5 .5 .5 1 + visible 0 + decoration + } + + + +// ONE FLAG CTF // + +itemDef { + name oneflag + group grphelptext + style 0 + text "One Flag Capture the Flag" + rect 280 154 500 20 + textalign 0 + textalignx 0 + textaligny 17 + textscale .3 + forecolor 1 1 1 1 + border 0 + decoration + bordercolor 0 0 0 0 + visible 0 + } +itemDef { + name oneflag + group grphelptext + style 0 + wrapped + text "The team must run through or grab the white flag at the \r" + "center of the arena and carry it to the opposing team's \r" + "flag. A team point, called a capture, is scored each time \r" + "a player successfully carries the flag to the opposing base. \r" + "The flag carrier drops the flag when he or she is fragged. \r" + "If the flag is not over a void or death fog, it stays in play \r" + "and may be picked up by a player from either team. A flag \r" + "dropped over a void or death fog returns to the center of \r" + "the arena." + rect 280 184 500 20 + textalign 0 + textalignx 0 + textaligny 17 + textscale .25 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 0 + decoration + } +itemDef { + name oneflag + group grphelptext + style 5 + cinematic "oneflag.RoQ" + rect 10 154 256 192 + border 1 + bordercolor .5 .5 .5 11 + visible 0 + decoration + } + + +// OVERLOAD // + +itemDef { + name overload + group grphelptext + style 0 + text "Overload" + rect 280 154 500 20 + textalign 0 + textalignx 0 + textaligny 17 + textscale .3 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + decoration + visible 0 + } +itemDef { + name overload + group grphelptext + style 0 + wrapped + text "To score a team point, the players must invade \r" + "their opponent's base and attack the skull portion of \r" + "the goal obelisk until it explodes. It slowly turns red \r" + "as the attacker chews through its 2500 points of damage. \r" + "The skull constantly regenerates at a rate of 15 hit \r" + "points a second." + rect 280 184 500 20 + textalign 0 + textalignx 0 + textaligny 17 + textscale .25 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 0 + decoration + } +itemDef { + name overload + group grphelptext + style 5 + cinematic "overload.RoQ" + rect 10 154 256 192 + border 1 + bordercolor .5 .5 .5 1 + visible 0 + decoration + } + + +// HARVESTER // +itemDef { + name harvester + group grphelptext + style 0 + text "Harvester" + rect 280 154 500 20 + textalign 0 + textalignx 0 + textaligny 17 + textscale .3 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 0 + decoration + } +itemDef { + name harvester + group grphelptext + style 0 + wrapped + text "To score team points, the team must frag opposing team \r" + "members. Each time a player on either team is fragged, a \r" + "crystal skull of their team color pops out of the skull \r" + "generator in the center of the arena. Players harvest skulls \r" + "of the opposing team's color by running through them. Skulls \r" + "of their own team's color are removed from play in the same \r" + "manner. Players must carry the skulls to the goal, a skull \r" + "receptacle in the opposing team's base. When a player is \r" + "fragged, any carried skulls are lost." + rect 280 184 500 20 + textalign 0 + textalignx 0 + textaligny 17 + textscale .25 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 0 + decoration + } +itemDef { + name harvester + group grphelptext + style 5 + cinematic "harvester.RoQ" + rect 10 154 256 192 + border 1 + bordercolor .5 .5 .5 1 + visible 0 + decoration + } + + + + +// BACK BAR // + + + itemDef { + name gotobar + style 2 + rect 0 430 640 30 + textscale 0.4 + textalign 0 // center + textalignx 60 // x alignment point for text + // use it to offset left/right text from the edge + // or to center the text on a different point + textaligny 21 + style 2 + border 4 + bordercolor 0.5 0.5 0.5 0.5 + bordersize 2 + backcolor 0 0 .75 0.5 + visible 1 + mouseEnter { setcolor backcolor .75 0 0 .5 } + mouseExit { setcolor backcolor 0 0 .75 .5 } + decoration + } + + itemDef { + name back + style 3 + background "ui/assets/backarrow.tga" + rect 16 424 50 50 + visible 1 + action { close help_menu ; open main } + mouseEnter { hide back ; show back_alt ; fadein message_back } + } + +itemDef { + name back_alt + style WINDOW_STYLE_SHADER + background "ui/assets/backarrow_alt.tga" + rect 14 422 54 54 + backcolor 0 0 0 0 + forecolor 1 1 1 1 + visible 0 + type ITEM_TYPE_BUTTON + mouseExit { hide back_alt ; show back ; fadeout message_back } + action { close help_menu ; + close powerup_menu ; + close ordersHelp_menu ; + //play "sound/misc/tim_pump.wav" ; + open main } + } + + +// MESSAGES // + +itemDef { + name message_back + group grpmessage + style 0 + rect 320 430 128 30 + textstyle 1 + textalign 1 + textalignx 0 + textaligny 25 + textscale .416 + text "Exit to Main Menu" + forecolor 1 1 1 1 + decoration + visible 0 + } + +itemDef { + name message_help + group grpmessage + style 0 + rect 320 430 128 30 + textalign 1 + textstyle 1 + textalignx 0 + textaligny 25 + textscale .416 + text "Select for Description" + forecolor 1 1 1 1 + decoration + visible 0 + } + +itemDef { + name fadebox + style WINDOW_STYLE_FILLED + background "ui/assets/fadebox.tga" + forecolor 0 0 0 1 + backcolor 0 0 0 1 + rect 0 0 640 480 + visible 1 + decoration + } + + + + +} + + + +} + + + diff --git a/ta_ui/ui/help2.menu b/ta_ui/ui/help2.menu new file mode 100644 index 00000000..5f0e3b12 --- /dev/null +++ b/ta_ui/ui/help2.menu @@ -0,0 +1,721 @@ +#include "ui/menudef.h" + +{ +\\ Help\\ + + menuDef { + name "help_menu" + visible 0 + fullscreen 1 + rect 0 0 640 480 + background "menuback_a" + focusColor 1 .75 0 1 + outOfBoundsClick + style 1 + border 1 + onopen { hide grphelptext ; show help } + + + +// GAMETYPE BAR // + + +itemDef { + name gametypebar + style 2 + rect 0 16 640 40 + textscale 0.4 + textalign 0 // center + textalignx 60 // x alignment point for text + // use it to offset left/right text from the edge + // or to center the text on a different point + textaligny 21 + style 2 + border 4 + bordercolor 0.5 0.5 0.5 0.5 + bordersize 2 + backcolor 0 0 .75 0.5 + visible 1 + mouseEnter { setcolor backcolor .75 0 0 .5 ; fadein message_help } + mouseExit { setcolor backcolor 0 0 .75 .5 ; fadeout message_help } + decoration + } + +itemDef { + name bar + style 0 + text "CTF" + rect 0 16 106 40 + textalign 1 + textalignx 53 + textaligny 31 + textscale .3 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 1 + action { hide grphelptext ; show ctf } + } + +itemDef { + name bar + style 0 + text "One Flag" + rect 106 16 128 40 + textalign 1 + textalignx 53 + textaligny 31 + textscale .3 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 1 + action { hide grphelptext ; show onectf } + } +itemDef { + name bar + style 0 + text "Overload" + rect 212 16 106 40 + textalign 1 + textalignx 50 + textaligny 31 + textscale .3 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 1 + action { hide grphelptext ; show overload } + } +itemDef { + name bar + style 0 + text "Harvester" + rect 318 16 106 40 + textalign 1 + textalignx 50 + textaligny 31 + textscale .3 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 1 + action { hide grphelptext ; show harvester } + } +itemDef { + name bar + style 0 + text "Power-Ups" + rect 424 16 106 40 + textalign 1 + textalignx 50 + textaligny 31 + textscale .3 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 1 + action { hide grphelptext ; open powerup_menu } + } +itemDef { + name bar + style 0 + text "Orders" + rect 530 16 106 40 + textalign 1 + textalignx 50 + textaligny 31 + textscale .3 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 1 + action { hide grphelptext ; open ordersHelp_menu } + } + + +// HELP TEXT // + +// CTF // +itemDef { + name help + group grphelptext + style 0 + wrapped + text " For game rules, select one of the \r" + " game types from the above menu bar, \r" + " or select Power-ups for information \r" + " about team power-ups and \r" + " new useable items." + rect 160 140 600 40 + textalign 0 + textalignx 0 + textaligny 31 + textscale .3 + forecolor 1 .67 0 1 + border 0 + bordercolor 0 0 0 0 + visible 0 + decoration + } + +itemDef { + name ctf + group grphelptext + style 0 + text "Capture the Flag" + rect 280 94 500 20 + textalign 0 + textalignx 0 + textaligny 31 + textscale .25 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 0 + decoration + } +itemDef { + name ctf + group grphelptext + style 0 + wrapped + rect 280 124 500 20 + text "To score a team point (often called a capture), the team must invade the \r" + "opposing team's base, run through (grab) the other team's flag, and carry \r" + "it back to their own flag. For the capture to take place, the team's own \r" + "flag must still be in the base. The flag carrier drops the flag when he or \r" + "she is fragged. If the flag is not over void or death fog, it stays in play. \r" + "A player picks up a dropped flag when he or she runs through it. \r" + "This returns the player's own flag to base. If the player runs through \r" + "the opposing team's flag, the player picks it up and runs with it." + textalign 0 + textalignx 0 + textaligny 17 + textscale .25 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 0 + decoration + } + +itemDef { + name ctf + group grphelptext + style 3 + background "ui/assets/helpscreens/ctf/team_base.tga" + rect 80 270 128 128 + border 1 + bordercolor .5 .5 .5 1 + visible 0 + decoration + } +itemDef { + name ctf + group grphelptext + style 0 + text "Team Base" + rect 80 405 128 30 + textalign 1 + textalignx 64 + textaligny 17 + textscale .3 + forecolor 1 1 1 1 + visible 0 + decoration + } +itemDef { + name ctf + group grphelptext + style 3 + background "ui/assets/helpscreens/ctf/flag_carrier.tga" + rect 248 270 128 128 + border 1 + bordercolor .5 .5 .5 1 + visible 0 + decoration + } +itemDef { + name ctf + group grphelptext + style 0 + text "Flag Carrier" + rect 248 405 128 30 + textalign 1 + textalignx 64 + textaligny 17 + textscale .3 + forecolor 1 1 1 1 + visible 0 + decoration + } +itemDef { + name ctf + group grphelptext + style 3 + background "ui/assets/helpscreens/ctf/scoring_with_flag.tga" + rect 416 270 128 128 + border 1 + bordercolor .5 .5 .5 1 + visible 0 + decoration + } +itemDef { + name ctf + group grphelptext + style 0 + text "Scoring with the Flag" + rect 416 405 128 30 + textalign 1 + textalignx 64 + textaligny 17 + textscale .3 + forecolor 1 1 1 1 + visible 0 + decoration + } + + +// ONE FLAG CTF // + +itemDef { + name onectf + group grphelptext + style 0 + text "One Flag Capture the Flag" + rect 70 64 500 40 + textalign 0 + textalignx 0 + textaligny 31 + textscale .25 + forecolor 1 1 1 1 + border 0 + decoration + bordercolor 0 0 0 0 + visible 0 + } +itemDef { + name onectf + group grphelptext + style 0 + wrapped + text "The team must run through (grab) the white flag at the center of the \r" + "arena and carry it to the opposing team's flag. A team point, called a \r" + "capture, is scored each time a player successfully carries the flag \r" + "to the opposing base. The flag carrier drops the flag when he or she \r" + "is fragged. If the flag is not over a void or death fog, it stays in play \r" + "and may be picked up by a player from either team. A flag dropped \r" + "over a void or death fog returns to the center of the arena." + rect 70 104 500 20 + textalign 0 + textalignx 0 + textaligny 17 + textscale .25 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 0 + decoration + } +itemDef { + name onectf + group grphelptext + style 3 + background "ui/assets/helpscreens/oneflag/white_flag.tga" + rect 80 270 128 128 + border 1 + bordercolor .5 .5 .5 11 + visible 0 + decoration + } +itemDef { + name onectf + group grphelptext + style 0 + text "White Flag" + rect 80 405 128 30 + textalign 1 + textalignx 64 + textaligny 17 + textscale .3 + forecolor 1 1 1 1 + visible 0 + decoration + } +itemDef { + name onectf + group grphelptext + style 3 + background "ui/assets/helpscreens/oneflag/flag_carrier.tga" + rect 248 270 128 128 + border 1 + bordercolor .5 .5 .5 1 + visible 0 + decoration + } +itemDef { + name onectf + group grphelptext + style 0 + text "Flag Carrier" + rect 248 405 128 30 + textalign 1 + textalignx 64 + textaligny 17 + textscale .3 + forecolor 1 1 1 1 + visible 0 + decoration + } +itemDef { + name onectf + group grphelptext + style 3 + background "ui/assets/helpscreens/oneflag/scoring_with_flag.tga" + rect 416 270 128 128 + border 1 + bordercolor .5 .5 .5 1 + visible 0 + decoration + } +itemDef { + name onectf + group grphelptext + style 0 + text "Scoring with the Flag" + rect 416 405 128 30 + textalign 1 + textalignx 64 + textaligny 17 + textscale .3 + forecolor 1 1 1 1 + visible 0 + decoration + } + + + +// OVERLOAD // + +itemDef { + name overload + group grphelptext + style 0 + text "Overload" + rect 70 64 500 40 + textalign 0 + textalignx 0 + textaligny 31 + textscale .25 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + decoration + visible 0 + } +itemDef { + name overload + group grphelptext + style 0 + wrapped + text "To score a team point, the players must invade their opponent's base \r" + "and attack the skull portion of the goal obelisk until it explodes. \r" + "As the skull takes damage, it slowly turns bright red. The skull \r" + "constantly regenerates and slowly heals itself." + rect 70 104 500 20 + textalign 0 + textalignx 0 + textaligny 17 + textscale .25 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 0 + decoration + } +itemDef { + name overload + group grphelptext + style 3 + background "ui/assets/helpscreens/overload/obelisk.tga" + rect 80 270 128 128 + border 1 + bordercolor .5 .5 .5 1 + visible 0 + decoration + } +itemDef { + name overload + group grphelptext + style 0 + text "Obelisk" + rect 80 405 128 30 + textalign 1 + textalignx 64 + textaligny 17 + textscale .3 + forecolor 1 1 1 1 + visible 0 + decoration + } +itemDef { + name overload + group grphelptext + style 3 + background "ui/assets/helpscreens/overload/damaged_obelisk.tga" + rect 248 270 128 128 + border 1 + bordercolor .5 .5 .5 1 + visible 0 + decoration + } +itemDef { + name overload + group grphelptext + style 0 + text "Damaged Obelisk" + rect 248 405 128 30 + textalign 1 + textalignx 64 + textaligny 17 + textscale .3 + forecolor 1 1 1 1 + visible 0 + decoration + } +itemDef { + name overload + group grphelptext + style 3 + background "ui/assets/helpscreens/overload/exploded_obelisk_1.tga" + rect 416 270 128 128 + border 1 + bordercolor .5 .5 .5 1 + visible 0 + decoration + } +itemDef { + name overload + group grphelptext + style 0 + text "Exploded Obelisk" + rect 416 405 128 30 + textalign 1 + textalignx 64 + textaligny 17 + textscale .3 + forecolor 1 1 1 1 + visible 0 + decoration + } + +// HARVESTER // +itemDef { + name harvester + group grphelptext + style 0 + text "Harvester" + rect 70 64 500 40 + textalign 0 + textalignx 0 + textaligny 31 + textscale .25 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 0 + decoration + } +itemDef { + name harvester + group grphelptext + style 0 + wrapped + text "To score team points, the team must frag opposing team members. \r" + "Each time a player on either team is fragged, a crystal skull of their \r" + "team color pops out of the skull generator in the center of the arena. \r" + "Players harvest skulls of the opposing team's color by running \r" + "through them. Skulls of their own team's color are removed from play \r" + "in the same manner. Players must carry the skulls to the goal, \r" + "a skull receptacle in the opposing team's base. When a player is \r" + "fragged, any carried skulls are lost." + rect 70 104 500 20 + textalign 0 + textalignx 0 + textaligny 17 + textscale .25 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 0 + decoration + } +itemDef { + name harvester + group grphelptext + style 3 + background "ui/assets/helpscreens/harvester/skull_and_obelisk.tga" + rect 80 270 128 128 + border 1 + bordercolor .5 .5 .5 1 + visible 0 + decoration + } +itemDef { + name harvester + group grphelptext + style 0 + text "Skull Generator" + rect 80 405 128 30 + textalign 1 + textalignx 64 + textaligny 17 + textscale .3 + forecolor 1 1 1 1 + visible 0 + decoration + } +itemDef { + name harvester + group grphelptext + style 3 + background "ui/assets/helpscreens/harvester/carrying_skulls.tga" + rect 248 270 128 128 + border 1 + bordercolor .5 .5 .5 1 + visible 0 + decoration + } +itemDef { + name harvester + group grphelptext + style 0 + text "Carrying Skulls" + rect 248 405 128 30 + textalign 1 + textalignx 64 + textaligny 17 + textscale .3 + forecolor 1 1 1 1 + visible 0 + decoration + } +itemDef { + name harvester + group grphelptext + style 3 + background "ui/assets/helpscreens/harvester/scoring.tga" + rect 416 270 128 128 + border 1 + bordercolor .5 .5 .5 1 + visible 0 + decoration + } +itemDef { + name harvester + group grphelptext + style 0 + text "Scoring with the Skulls" + rect 416 405 128 30 + textalign 1 + textalignx 64 + textaligny 17 + textscale .3 + forecolor 1 1 1 1 + visible 0 + decoration + } + + + +// BACK BAR // + + + itemDef { + name gotobar + style 2 + rect 0 430 640 30 + textscale 0.4 + textalign 0 // center + textalignx 60 // x alignment point for text + // use it to offset left/right text from the edge + // or to center the text on a different point + textaligny 21 + style 2 + border 4 + bordercolor 0.5 0.5 0.5 0.5 + bordersize 2 + backcolor 0 0 .75 0.5 + visible 1 + mouseEnter { setcolor backcolor .75 0 0 .5 } + mouseExit { setcolor backcolor 0 0 .75 .5 } + decoration + } + + itemDef { + name back + style 3 + background "ui/assets/backarrow.tga" + rect 16 424 50 50 + visible 1 + action { close help_menu ; open main } + mouseEnter { hide back ; show back_alt ; fadein message_back } + } + +itemDef { + name back_alt + style WINDOW_STYLE_SHADER + background "ui/assets/backarrow_alt.tga" + rect 16 424 50 50 + backcolor 0 0 0 0 + forecolor 1 1 1 1 + visible 0 + type ITEM_TYPE_BUTTON + mouseExit { hide back_alt ; show back ; fadeout message_back } + action { close help_menu ; open main } + } + + +// MESSAGES // + +itemDef { + name message_back + style 0 + rect 320 430 128 30 + textstyle 1 + textalign 1 + textalignx 0 + textaligny 25 + textscale .4 + text "Exit to Main Menu" + forecolor 1 1 1 1 + decoration + visible 0 + } + +itemDef { + name message_help + style 0 + rect 320 430 128 30 + textalign 1 + textstyle 1 + textalignx 0 + textaligny 25 + textscale .4 + text "Select for Description" + forecolor 1 1 1 1 + decoration + visible 0 + } + + + +} + + + +} + + + diff --git a/ta_ui/ui/hud.menu b/ta_ui/ui/hud.menu new file mode 100644 index 00000000..55ab4f90 --- /dev/null +++ b/ta_ui/ui/hud.menu @@ -0,0 +1,803 @@ +#include "ui/menudef.h" + +// team menu +// +// defines from ui_shared.h + +{ + assetGlobalDef { + cursor "ui/assets/3_cursor2" // cursor + gradientBar "ui/assets/gradientbar2.tga" // gradient bar + fadeClamp 1.0 // sets the fadeup alpha + fadeCycle 1 // how often fade happens in milliseconds + fadeAmount 0.1 // amount to adjust alpha per cycle + + shadowX 5 // x amount for shadow offset + shadowY 5 // y amount for shadow offset + shadowColor 0.1 0.1 0.1 0.25 // shadow color + + font "fonts/font" 16 // font + smallFont "fonts/smallfont" 12 // font + bigFont "fonts/bigfont" 20 // font + + + } + + +// POWERUP AREA // + +menuDef { + name "powerup area" + fullScreen MENU_FALSE + visible MENU_TRUE + rect 570 220 50 100 + + itemDef { + name "powerupArea" + rect 0 0 40 40 + visible 1 + decoration + ownerdraw CG_AREA_POWERUP + special 4 // spacing + align HUD_VERTICAL + } + + +} + + + +// SELECTED PLAYER // + +menuDef { + name "SelectedPlayer" + fullScreen MENU_FALSE + visible 1 + rect 2 363 180 64 + ownerdrawflag CG_SHOW_ANYTEAMGAME + + + itemDef { + name "b" + rect 2 4 170 57 + style 4 + visible 1 + } + + itemDef { + name "b" + rect 2 4 172 60 + visible 1 + textscale .17 + textaligny 10 + textalignx 0 + forecolor 1 1 1 1 + ownerdrawflag CG_SHOW_TEAMINFO + ownerdraw CG_TEAMINFO + } + + itemDef { + name "b" + rect 4 3 32 32 + visible 1 + ownerdrawflag CG_SHOW_NOTEAMINFO + ownerdraw CG_SELECTEDPLAYER_HEAD + } + + +itemDef { + name "b" + rect 75 35 22 11 + visible 1 + style 1 + textscale .25 + decoration + addColorRange -999 25 1 0 0 1 + addColorRange 26 100 1 .75 0 1 + addColorRange 101 999 1 1 1 1 + ownerdrawflag CG_SHOW_NOTEAMINFO + ownerdraw CG_SELECTEDPLAYER_HEALTH + } + + itemDef { + name "b" + rect 50 48 22 11 + visible 1 + style 3 + decoration + background "ui/assets/statusbar/selectedarmor.tga" + addColorRange -999 25 1 0 0 1 + addColorRange 26 100 1 .75 0 1 + addColorRange 101 999 1 1 1 1 + ownerdrawflag CG_SHOW_NOTEAMINFO + ownerdraw CG_SELECTEDPLAYER_ARMOR + } + + itemDef { + name "b" + rect 75 48 22 11 + visible 1 + textstyle 3 + style 1 + textscale .25 + decoration + addColorRange -999 25 1 0 0 1 + addColorRange 26 100 1 .75 0 1 + addColorRange 101 999 1 1 1 1 + ownerdrawflag CG_SHOW_NOTEAMINFO + ownerdraw CG_SELECTEDPLAYER_ARMOR + } + + + itemDef { + name "b" + rect 35 3 35 15 + textscale 0.25 + textstyle 3 + forecolor 1 1 1 1 + visible 1 + decoration + ownerdrawflag CG_SHOW_NOTEAMINFO + ownerdraw CG_SELECTEDPLAYER_NAME + } + + + + itemDef { + name "b" + rect 35 15 45 15 + textstyle 3 + textscale 0.25 + forecolor 1 1 1 1 + visible 1 + decoration + ownerdrawflag CG_SHOW_NOTEAMINFO + ownerdraw CG_SELECTEDPLAYER_LOCATION + } + + itemDef { + name "b" + rect 7 40 16 16 + visible 1 + decoration + ownerdrawflag CG_SHOW_NOTEAMINFO + ownerdraw CG_SELECTEDPLAYER_STATUS + } + + itemDef { + name "b" + rect 30 40 16 16 + visible 1 + decoration + ownerdrawflag CG_SHOW_NOTEAMINFO + ownerdraw CG_SELECTEDPLAYER_POWERUP + } + + itemDef { + name "b" + rect 100 33 24 24 + visible 1 + decoration + ownerdrawflag CG_SHOW_NOTEAMINFO + ownerdraw CG_SELECTEDPLAYER_WEAPON + } + + itemDef { + name "statusscreen" + visible 1 + style 3 + background "menuscreen2" + rect 2 4 170 57 + } + +itemDef { + name "sback" + rect 0 0 256 64 + visible 1 + style 3 + decoration + background "ui/assets/selectedstatus.tga" + } + + } + + + +// PLAYER STATUS // + +menuDef { + name "playerStatus" + fullScreen MENU_FALSE + visible MENU_TRUE + rect 0 416 128 64 + + itemDef { + name "playerStatusRect" + style 4 + rect 12 13 116 48 + visible 1 + } + itemDef { + name "playerRect" + rect 12 13 116 48 + style 3 + background hudalert_good + visible 1 + ownerdrawflag CG_SHOW_IF_PLAYER_HAS_FLAG + } + + itemDef { + name "playeritem" + rect 27 25 22 22 + visible 1 + decoration + ownerdraw CG_PLAYER_ITEM + } + + itemDef { + name "CTFPOWERUP" + rect 54 25 22 22 + visible 1 + decoration + ownerdraw CG_CTF_POWERUP + } + + itemDef { + name "flag" + rect 85 15 40 40 + visible 1 + decoration + ownerdraw CG_PLAYER_HASFLAG + } + + itemDef { + name "skulls" + rect 72 10 48 34 + visible 1 + decoration + textaligny 12 + textalignx 0 + textscale 0.333 + textstyle 3 + ownerdraw CG_HARVESTER_SKULLS + } + + itemDef { + name "statusscreen" + visible 1 + style 3 + background "menuscreen2" + rect 12 13 116 48 + } + } + + +// AMMO // + +menuDef { + name "Ammo" + fullScreen MENU_FALSE + visible MENU_TRUE + rect 128 416 128 64 + + + itemDef { + name "ammoRect" + visible 1 + style 4 + rect 3 13 122 48 + } + + itemDef { + name "a" + rect 85 25 30 30 + visible 1 + decoration + ownerdraw CG_PLAYER_AMMO_ICON2D + } + + + itemDef { + name "a" + rect 10 43 63 12 + visible 1 + textstyle 3 + decoration + textscale .75 + forecolor 1 1 1 1 + ownerdraw CG_PLAYER_AMMO_VALUE + addColorRange -999 5 1 0 0 1 + addColorRange 6 999 1 .75 0 1 + } + + itemDef { + name "statusscreen" + visible 1 + style 3 + background "menuscreen2" + rect 3 13 122 48 + } + } + + + + + + +// PLAYER // + +menuDef { + name "Player" + fullScreen MENU_FALSE + visible MENU_TRUE + rect 256 416 128 64 + + + itemDef { + name "playerRect" + rect 0 2 128 60 + style 4 + visible 1 + } + + itemDef { + name "playerRect" + rect 0 2 128 60 + style 3 + background hudalert + visible 1 + ownerdrawflag CG_SHOW_HEALTHCRITICAL + } + + + itemDef { + name "healthok" + rect 12 42 63 12 + visible 1 + decoration + textstyle 3 + forecolor 1 1 1 1 + textscale .75 + ownerdraw CG_PLAYER_HEALTH + addColorRange -999 25 1 0 0 1 + addColorRange 26 100 1 .75 0 1 + addColorRange 101 999 1 1 1 1 + } + + itemDef { + name "statusscreen" + visible 1 + style 3 + background "menuscreen2" + rect 0 2 128 60 + } + + itemDef { + name "b" + rect 70 10 45 45 + visible 1 + decoration + ownerdraw CG_PLAYER_HEAD + } + } + + + + + + + +// ARMOR // + +menuDef { + name "Armor" + fullScreen MENU_FALSE + visible MENU_TRUE + rect 384 416 128 64 + + + itemDef { + name "armorRect" + rect 0 13 125 48 + visible 1 + style 4 + } + + itemDef { + name "armor" + rect 10 7 30 30 + visible 1 + decoration + ownerdraw CG_PLAYER_ARMOR_ICON2D + } + + + itemDef { + name "armor2" + rect 55 43 63 12 + visible 1 + decoration + textstyle 3 + textscale .75 + ownerdraw CG_PLAYER_ARMOR_VALUE + addColorRange -999 25 .67 0 0 1 + addColorRange 26 100 1 .75 0 1 + addColorRange 101 999 .75 .75 .75 1 + } + + itemDef { + name "statusscreen" + visible 1 + style 3 + background "menuscreen2" + rect 0 13 125 48 + } + } + + +// PLAYERSCORE // + +menuDef { + name "PlayerScore" + fullScreen MENU_FALSE + visible MENU_TRUE + rect 512 416 128 64 + ownerdrawflag CG_SHOW_ANYTEAMGAME + + + itemDef { + name "playerScoreRect" + visible 1 + rect 0 13 126 48 + style 4 + } + + itemDef { + name "playerRect" + rect 0 13 63 48 + style 3 + background hudalert_blue + visible 1 + ownerdrawflag CG_SHOW_BLUE_TEAM_HAS_REDFLAG + } + +itemDef { + name "playerRect" + rect 63 13 63 48 + style 3 + background hudalert_red + visible 1 + ownerdrawflag CG_SHOW_RED_TEAM_HAS_BLUEFLAG + } + + + itemDef { + name "f" + rect 30 22 16 16 + visible 1 + bordercolor 1 1 1 .75 + decoration + style 3 + background "ui/assets/bluechip.tga" + } +itemDef { + name "f" + rect 30 22 16 16 + visible 1 + bordercolor 1 1 1 .75 + decoration + style 3 + ownerdrawflag CG_SHOW_HARVESTER + background "icons/skull_blue.tga" + } + + itemDef { + name "blueflag" + rect 30 22 16 16 + visible 1 + decoration + ownerdrawflag CG_SHOW_CTF + ownerdraw CG_BLUE_FLAGSTATUS + } + + +itemDef { + name "oneflagstatus" + rect 30 40 16 16 + visible 1 + decoration + ownerdraw CG_ONEFLAG_STATUS + } + + + itemDef { + name "r" + rect 35 21 30 15 + textstyle 3 + visible 1 + decoration + forecolor .25 .25 1 1 + textscale 0.25 + ownerdraw CG_BLUE_SCORE + } + + itemDef { + name "f" + rect 77 22 16 16 + visible 1 + bordercolor 1 1 1 1 + decoration + style 3 + background "ui/assets/redchip.tga" + } + + itemDef { + name "f" + rect 77 22 16 16 + visible 1 + bordercolor 1 1 1 1 + decoration + style 3 + ownerdrawflag CG_SHOW_HARVESTER + background "icons/skull_red.tga" + } + + itemDef { + name "f" + rect 77 22 16 16 + visible 1 + decoration + ownerdrawflag CG_SHOW_CTF + ownerdraw CG_RED_FLAGSTATUS + } + + itemDef { + name "r" + rect 87 21 30 15 + textstyle 3 + visible 1 + decoration + forecolor 1 0 0 1 + textscale 0.25 + ownerdraw CG_RED_SCORE + } + + itemDef { + name "statusscreen" + visible 1 + style 3 + background "menuscreen2" + rect 0 13 126 48 + } + + itemDef { + name "playerScore" + type 4 + rect 8 36 40 12 + visible 1 + textstyle 3 + decoration + forecolor 1 1 1 1 + textscale .25 + ownerdraw CG_CAPFRAGLIMIT + } + + + + itemDef { + name "playerScore" + style 0 + rect 60 43 65 12 + visible 1 + textstyle 3 + decoration + forecolor 1 1 1 1 + textscale .25 + ownerdraw CG_PLAYER_SCORE + } + } + + +// PLAYERSCORE // + +menuDef { + name "PlayerScore" + fullScreen MENU_FALSE + visible MENU_TRUE + rect 512 416 128 64 + ownerdrawflag CG_SHOW_ANYNONTEAMGAME + + itemDef { + name "playerScoreRect" + visible 1 + rect 0 13 126 48 + style 4 + } + + itemDef { + name "statusscreen" + visible 1 + style 3 + background "menuscreen2" + rect 0 13 126 48 + } + + itemDef { + name "playerScore" + rect 8 32 40 12 + visible 1 + textstyle 3 + decoration + forecolor 1 1 1 1 + textscale .25 + text "FragLimit:" + ownerdraw CG_CAPFRAGLIMIT + } + itemDef { + name "playerScore" + style 0 + rect 10 45 65 12 + visible 1 + textstyle 3 + text "1st:" + ownerdraw CG_1STPLACE + decoration + forecolor .25 .25 1 1 + textscale .25 + } + itemDef { + name "playerScore" + style 0 + rect 70 45 65 12 + visible 1 + textstyle 3 + text "2nd:" + ownerdraw CG_2NDPLACE + decoration + forecolor 1 0 0 1 + textscale .25 + } + + + itemDef { + name "playerScore" + style 0 + rect 10 58 40 0 + visible 1 + textstyle 3 + text "Score:" + decoration + forecolor 1 1 1 1 + textscale .25 + ownerdraw CG_PLAYER_SCORE + } + } + + +// LOCATION // + +menuDef { + name "location" + fullScreen MENU_FALSE + visible MENU_TRUE + rect 463 395 256 32 + ownerdrawflag CG_SHOW_ANYTEAMGAME + + + itemDef { + name "locationRect" + visible MENU_TRUE + rect 2 6 170 26 + style 4 + } +itemDef { + name "playerStatus" + rect 16 10 16 16 + visible 1 + decoration + ownerdraw CG_PLAYER_STATUS + } + + itemDef { + name "playerlocation" + rect 37 7 16 16 + visible 1 + textstyle 3 + decoration + textscale .25 + ownerdraw CG_PLAYER_LOCATION + } +itemDef { + name "lback" + rect 0 0 256 32 + visible 1 + style 3 + decoration + background "ui/assets/locationstatus.tga" + } + } + + + +// STATUSBAR // + +menuDef { + name "statusbar" + fullScreen 0 + visible 1 + rect 0 416 640 64 + + +itemDef { + name "statusbar" + rect 0 0 640 64 + style 3 + background "ui/assets/statusbar_full.tga" + visible 1 + decoration + forecolor 1 1 1 1 + backcolor 1 1 1 1 + } + } + + + + + + + menuDef { + name "voiceMenu" + fullScreen MENU_FALSE + visible MENU_FALSE + rect 5 5 100 100 + + + itemDef { + name "voiceMenuRect" + style 4 + rect 2 2 50 50 + visible 1 + } + + itemDef { + name "b" + rect 2 2 50 50 + visible 1 + decoration + ownerdraw CG_VOICE_HEAD + } + + itemDef { + name "b" + rect 2 2 50 50 + style WINDOW_STYLE_SHADER + background "menuscreen2" + visible 1 + decoration + } + + itemDef { + name "voiceWindow" + visible 1 + style 3 + background "ui/assets/voice_window.tga" + rect 0 0 54 54 + } + + + itemDef { + name "b" + rect 2 55 50 12 + visible 1 + decoration + textscale .25 + textalign 0 + textalignx 0 + textaligny 12 + ownerdraw CG_VOICE_NAME + } + + + } + + diff --git a/ta_ui/ui/hud.txt b/ta_ui/ui/hud.txt new file mode 100644 index 00000000..ab99a101 --- /dev/null +++ b/ta_ui/ui/hud.txt @@ -0,0 +1,7 @@ +// hud menu defs +// +{ + loadMenu { "ui/hud.menu" } + loadMenu { "ui/score.menu" } + loadMenu { "ui/teamscore.menu" } +} diff --git a/ta_ui/ui/hud2.txt b/ta_ui/ui/hud2.txt new file mode 100644 index 00000000..c0a2da4b --- /dev/null +++ b/ta_ui/ui/hud2.txt @@ -0,0 +1,7 @@ +// hud menu defs +// +{ + loadMenu { "ui/min_hud.menu" } + loadMenu { "ui/score.menu" } + loadMenu { "ui/teamscore.menu" } +} diff --git a/ta_ui/ui/hud_old.menu b/ta_ui/ui/hud_old.menu new file mode 100644 index 00000000..a753be07 --- /dev/null +++ b/ta_ui/ui/hud_old.menu @@ -0,0 +1,1091 @@ +#include "ui/menudef.h" + +// team menu +// +// defines from ui_shared.h + +{ + assetGlobalDef { + font "fonts/impact.ttf" // font + cursor "menu/art/3_cursor2" // cursor + gradientBar "ui/assets/gradientbar2.tga" // gradient bar + fadeClamp 1.0 // sets the fadeup alpha + fadeCycle 1 // how often fade happens in milliseconds + fadeAmount 0.1 // amount to adjust alpha per cycle + + shadowX 5 // x amount for shadow offset + shadowY 5 // y amount for shadow offset + shadowColor 0.1 0.1 0.1 0.25 // shadow color + + hudShader "ui/assets/hudbar.tga" // + + } + + +// POWERUP AREA // + +menuDef { + name "powerup area" + fullScreen MENU_FALSE + visible MENU_TRUE + rect 570 220 50 100 + + ownerdrawflag CG_SHOW_CTF + itemDef { + name "powerupArea" + rect 0 0 40 40 + visible 1 + decoration + ownerdraw CG_AREA_POWERUP + special 4 // spacing + align HUD_VERTICAL + } + + +} + + + +// SELECTED PLAYER // + +menuDef { + name "SelectedPlayer" + fullScreen MENU_FALSE + visible MENU_TRUE + rect 2 340 128 75 + + + + itemDef { + name "b" + rect 0 0 125 75 + style 4 + visible 1 + bordercolor 0 0 0 0 + backcolor 0 0 0 0 + mouseEnter { setcolor bordercolor 1 1 1 .5 ; setteamcolor ; show altSelectedPlayerRect } + mouseExit { setcolor backcolor 0 0 0 0 ; setcolor bordercolor 0 0 0 0 ; hide altSelectedPlayerRect } + action { open teamMenu } + } + + + + itemDef { + name "altSelectedPlayerRect" + rect 0 0 125 75 + style 4 + border 1 + bordersize 1 + visible 0 + bordercolor 1 1 1 1 + backcolor 0 0 0 0 + } + + + itemDef { + name "b" + rect 2 3 32 32 + visible 1 + action { open teamMenu } + ownerdraw CG_SELECTEDPLAYER_HEAD + } + + itemDef { + name "b" + rect 65 5 22 11 + visible 1 + style 3 + decoration + background "ui/assets/statusbar/selectedhealth.tga" + addColorRange -999 25 1 0 0 1 + addColorRange 26 100 1 .75 0 1 + addColorRange 101 999 1 1 1 1 + ownerdraw CG_SELECTEDPLAYER_HEALTH + } + + itemDef { + name "b" + rect 65 18 22 11 + visible 1 + style 3 + decoration + background "ui/assets/statusbar/selectedarmor.tga" + addColorRange -999 25 1 0 0 1 + addColorRange 26 100 .3 .65 0 1 + addColorRange 101 999 1 1 1 1 + ownerdraw CG_SELECTEDPLAYER_ARMOR + } + + + + itemDef { + name "b" + rect 5 40 35 15 + textscale 0.25 + forecolor 1 1 1 1 + visible 1 + decoration + ownerdraw CG_SELECTEDPLAYER_NAME + } + + itemDef { + name "b" + rect 5 52 45 15 + textscale 0.25 + forecolor 1 1 1 1 + visible 1 + decoration + ownerdraw CG_SELECTEDPLAYER_LOCATION + } + + itemDef { + name "b" + rect 38 5 16 16 + visible 1 + decoration + ownerdraw CG_SELECTEDPLAYER_STATUS + } + + itemDef { + name "b" + rect 93 5 24 24 + visible 1 + decoration + ownerdraw CG_SELECTEDPLAYER_WEAPON + } + + itemDef { + name "b" + rect 38 22 16 16 + visible 1 + decoration + ownerdraw CG_SELECTEDPLAYER_POWERUP + } + +} + + + +// PLAYER STATUS // + +menuDef { + name "playerStatus" + fullScreen MENU_FALSE + visible MENU_TRUE + rect 0 416 128 64 + + itemDef { + name "playerStatusRect" + rect 12 13 112 48 + visible 1 + style 4 + //background "ui/assets/hudback.tga" + border 1 + bordersize 1 + mouseEnter { show playerStatusRectAlt } + mouseExit { hide playerStatusRectAlt } + +} + + itemDef { + name "playerStatusRectAlt" + rect 12 13 112 48 + visible 0 + style 1 + border 1 + bordersize 1 + bordercolor 1 1 1 1 + backcolor 0 0 0 .0 +} + + itemDef { + name "playeritem" + rect 27 19 24 24 + visible 1 + decoration + ownerdraw CG_PLAYER_ITEM + } + + itemDef { + name "CTFPOWERUP" + rect 55 19 24 24 + visible 1 + decoration + ownerdraw CG_CTF_POWERUP + + + } + + itemDef { + name "flag" + rect 85 15 40 40 + visible 1 + decoration + ownerdraw CG_PLAYER_HASFLAG + } + + itemDef { + name "skulls" + rect 75 8 45 40 + visible 1 + decoration + textscale 0.5 + ownerdraw CG_HARVESTER_SKULLS + } + + + + itemDef { + name "statusscreen" + visible 1 + style 3 + background "menuscreen2" + rect 12 13 112 48 + border 1 + bordersize 1 + bordercolor 1 1 1 1 + backcolor 0 0 0 0 + } + + +itemDef { + name "sback" + rect 0 0 128 64 + visible 1 + decoration + style 3 + background "ui/assets/statusbar1.tga" + } + + } + + + + + +// AMMO // + +menuDef { + name "Ammo" + fullScreen MENU_FALSE + visible MENU_TRUE + rect 129 416 128 64 + + + itemDef { + name "ammoRect" + visible 1 + style 4 + //background "ui/assets/hudback.tga" + rect 2 13 122 48 + border 1 + bordersize 1 + mouseEnter { show ammoRectAlt } + mouseExit { hide ammoRectAlt } + } + + itemDef { + name "ammoRectAlt" + visible 0 + style 1 + rect 2 13 122 48 + border 1 + bordersize 1 + bordercolor 1 1 1 1 + backcolor 0 0 0 0 + } + + + itemDef { + name "a" + rect 85 22 32 32 + visible 1 + decoration + ownerdraw CG_PLAYER_AMMO_ICON + } + + itemDef { + name "a" + rect 10 40 63 12 + visible 1 + decoration + textscale .75 + forecolor 1 1 1 1 + ownerdraw CG_PLAYER_AMMO_VALUE + addColorRange -999 5 1 0 0 1 + addColorRange 6 999 .3 .65 0 1 + } + + itemDef { + name "statusscreen" + visible 1 + style 3 + background "menuscreen2" + rect 2 13 122 48 + border 1 + bordersize 1 + bordercolor 1 1 1 1 + backcolor 0 0 0 0 + } + +itemDef { + name "sback" + rect 0 0 128 64 + visible 1 + decoration + style 3 + background "ui/assets/statusbar2.tga" + } + +} + + + + + + +// PLAYER // + +menuDef { + name "Player" + fullScreen MENU_FALSE + visible MENU_TRUE + rect 257 416 128 64 + + + itemDef { + name "playerRect" + rect 2 2 122 60 + style 4 + //background "ui/assets/hudback.tga" + visible 1 + border 1 + bordersize 1 + mouseEnter { show playerRectAlt } + mouseExit { hide playerRectAlt } + } + + itemDef { + name "playerRectAlt" + rect 2 2 122 60 + style 1 + visible 0 + border 1 + bordersize 1 + bordercolor 1 1 1 1 + backcolor 0 0 0 0 + } + + + itemDef { + name "b" + rect 10 40 63 12 + visible 1 + decoration + forecolor 1 1 1 1 + textscale .75 + ownerdraw CG_PLAYER_HEALTH + ownerdrawflag CG_SHOW_HEALTHOK + addColorRange -999 25 1 0 0 1 + addColorRange 26 100 .3 .65 0 1 + addColorRange 101 999 1 1 1 1 + } + + itemDef { + name "b" + rect 10 40 63 12 + visible 1 + decoration + forecolor 1 0 0 1 + textscale .75 + textstyle ITEM_TEXTSTYLE_BLINK + ownerdraw CG_PLAYER_HEALTH + ownerdrawflag CG_SHOW_HEALTHCRITICAL + } + + + itemDef { + name "b" + rect 75 10 50 50 + visible 1 + decoration + ownerdraw CG_PLAYER_HEAD + } + + itemDef { + name "statusscreen" + visible 1 + style 3 + background "menuscreen2" + rect 2 13 122 48 + border 1 + bordersize 1 + bordercolor 1 1 1 1 + backcolor 0 0 0 0 + } + + +itemDef { + name "sback" + rect 0 0 128 64 + visible 1 + decoration + style 3 + background "ui/assets/statusbar3.tga" + } + } + + + + +// ARMOR // + +menuDef { + name "Armor" + fullScreen MENU_FALSE + visible MENU_TRUE + rect 385 416 128 64 + + + itemDef { + name "armorRect" + rect 2 13 122 48 + visible 1 + style 4 + //background "ui/assets/hudback.tga" + border 1 + bordersize 1 + mouseEnter { show armorRectAlt } + mouseExit { hide armorRectAlt } + } + + itemDef { + name "armorRectAlt" + rect 2 13 122 48 + visible 0 + style 1 + border 1 + bordersize 1 + bordercolor 1 1 1 1 + backcolor 0 0 0 0 + } + + itemDef { + name "armor" + rect 75 -4 40 40 + visible 1 + decoration + ownerdraw CG_PLAYER_ARMOR_ICON2D + } + + itemDef { + name "armor2" + rect 10 40 63 12 + visible 1 + decoration + textscale .75 + ownerdraw CG_PLAYER_ARMOR_VALUE + addColorRange -999 25 .67 0 0 1 + addColorRange 26 100 .3 .65 0 1 + addColorRange 101 999 .75 .75 .75 1 + } + + itemDef { + name "statusscreen" + visible 1 + style 3 + background "menuscreen2" + rect 2 13 122 48 + border 1 + bordersize 1 + bordercolor 1 1 1 1 + backcolor 0 0 0 0 + } + + +itemDef { + name "sback" + rect 0 0 128 64 + visible 1 + decoration + style 3 + background "ui/assets/statusbar4.tga" + } + } + + +// LOCATION // + +menuDef { + name "location" + fullScreen MENU_FALSE + visible MENU_TRUE + rect 513 380 128 22 + + + + itemDef { + name "locationRect" + visible MENU_TRUE + rect 0 0 128 22 + style 4 + } + + + itemDef { + name "playerlocation" + rect 10 2 16 16 + visible 1 + decoration + textscale .25 + ownerdraw CG_PLAYER_LOCATION + } +} + + + +// FLAGSTATUS // + +menuDef { + name "FlagStatus" + fullScreen MENU_FALSE + visible MENU_TRUE + rect 513 405 128 22 + + + + itemDef { + name "flagStatusRect" + visible MENU_TRUE + rect 0 0 128 22 + style 4 + //border 1 + //bordersize 1 + bordercolor 0 0 0 0 + backcolor 0 0 0 0 + mouseEnter { setcolor bordercolor 1 1 1 1 } + mouseExit { setcolor bordercolor 0 0 0 0 } + } + + itemDef { + name "f" + rect 30 4 16 16 + visible 1 + bordercolor 1 1 1 .75 + decoration + style 3 + background "ui/assets/bluechip.tga" + } + + itemDef { + name "f" + rect 4 4 16 16 + visible 1 + decoration + ownerdraw CG_ONEFLAG_STATUS + } + + itemDef { + name "f" + rect 30 4 16 16 + visible 1 + decoration + ownerdraw CG_BLUE_FLAGSTATUS + } + + + itemDef { + name "r" + rect 40 3 30 15 + visible 1 + decoration + forecolor 1 1 1 1 + textscale 0.25 + ownerdraw CG_BLUE_SCORE + } + + itemDef { + name "f" + rect 72 4 16 16 + visible 1 + bordercolor 1 1 1 1 + decoration + style 3 + background "ui/assets/redchip.tga" + } + + itemDef { + name "f" + rect 72 4 16 16 + visible 1 + decoration + ownerdraw CG_RED_FLAGSTATUS + } + + itemDef { + name "r" + rect 87 3 30 15 + visible 1 + decoration + forecolor 1 1 1 1 + textscale 0.25 + ownerdraw CG_RED_SCORE + } + +} + + +// GAMETYPE // + +menuDef { + name "GameType" + fullScreen MENU_FALSE + visible MENU_TRUE + rect 513 354 128 22 + + + itemDef { + name "gameTypeRect" + visible 1 + rect 0 0 125 22 + style 4 + //background "ui/assets/hudback.tga" + visible 1 + decoration + mouseEnter { show gameTypeRectAlt } + mouseExit { hide gameTypeRectAlt } + } + + itemDef { + name "gameTypeRectAlt" + visible 0 + rect 0 0 125 22 + style 1 + border 1 + bordersize 1 + bordercolor 1 1 1 1 + backcolor 0 0 0 0 + } + + itemDef { + name "gameTypeName" + visible 1 + rect 5 2 125 16 + textscale .25 + ownerdraw CG_GAME_TYPE + style 1 + } + + +} + +// PLAYERSCORE // + +menuDef { + name "PlayerScore" + fullScreen MENU_FALSE + visible MENU_TRUE + rect 513 416 128 64 + + + itemDef { + name "playerScoreRect" + visible 1 + rect 2 13 110 48 + style 4 + border 1 + bordersize 1 + mouseEnter { show playerScoreRectAlt } + mouseExit { hide playerScoreRectAlt } + + } + + itemDef { + name "playerScoreRectAlt" + visible 0 + rect 2 13 110 48 + style 1 + border 1 + bordersize 1 + bordercolor 1 1 1 1 + backcolor 0 0 0 0 + } + + + itemDef { + name "playerStatus" + rect 10 30 16 16 + visible 1 + decoration + ownerdraw CG_PLAYER_STATUS + } + + itemDef { + name "playerScore" + rect 10 32 125 12 + visible 1 + decoration + forecolor .3 .65 0 1 + textscale .35 + ownerdraw CG_PLAYER_SCORE + } + + itemDef { + name "statusscreen" + visible 1 + style 3 + background "menuscreen2" + rect 2 13 110 48 + border 1 + bordersize 1 + bordercolor 1 1 1 1 + backcolor 0 0 0 0 + } + + +itemDef { + name "sback" + rect 0 0 128 64 + visible 1 + decoration + style 3 + background "ui/assets/statusbar5.tga" + } + + } +} + +// SCORESTATUS // + +menuDef { + name "ScoreStatus" + fullScreen MENU_FALSE + visible MENU_TRUE + rect 513 428 125 50 + style 4 + //background "ui/assets/hudback.tga" + border 1 + bordersize 1 + bordercolor .5 .5 1 1 + backcolor 0 0 1 .25 + + +itemDef { + name "r" + rect 5 5 30 15 + visible 1 + decoration + forecolor 1 1 1 1 + textscale 0.25 + ownerdraw CG_BLUE_SCORE + } + +itemDef { + name "r" + rect 42 5 30 15 + visible 1 + decoration + forecolor 0 0 1 1 + textscale 0.25 + ownerdraw CG_BLUE_NAME + } + + +itemDef { + name "r" + rect 5 25 30 15 + visible 1 + decoration + forecolor 1 1 1 1 + textscale 0.25 + ownerdraw CG_RED_SCORE + } + + itemDef { + name "r" + rect 42 25 30 15 + visible 1 + decoration + forecolor 1 0 0 1 + textscale 0.25 + ownerdraw CG_RED_NAME + } + } + + + +} + +// Close off other menu options // + +// CROSSHAIR STATUS BAR // + +menuDef { + name "crosshairStatus" + fullScreen MENU_FALSE + visible MENU_TRUE + rect 256 176 128 128 + style 0 + +itemDef { + name "crosshairHealth" + rect 0 0 128 64 + visible 1 + decoration + forecolor 0 0 0 0 + style 3 + ownerdraw CG_PLAYER_HEALTH_VALUE + background "ui/assets/crosshair_health.tga" + addColorRange -999 25 1 0 0 .5 + addColorRange 26 100 1 .75 0 .25 + addColorRange 101 999 1 1 1 .1 + } + + +itemDef { + name "crosshairAmmo" + rect 0 64 64 64 + visible 1 + decoration + style 3 + forecolor 0 0 0 0 + ownerdraw CG_PLAYER_AMMO_VALUE + background "ui/assets/crosshair_ammo.tga" + addColorRange -999 5 1 0 0 .5 + addColorRange 6 999 1 .75 0 .25 + } + +itemDef { + name "crosshairArmor" + rect 64 64 64 64 + visible 1 + decoration + style 3 + forecolor 1 1 1 .25 + forecolor 0 0 0 0 + ownerdraw CG_PLAYER_ARMOR_VALUE + background "ui/assets/crosshair_armor.tga" + addColorRange -999 25 1 0 0 .5 + addColorRange 26 100 1 .75 0 .25 + addColorRange 101 999 1 1 1 .1 + } +} + + + + + + +// MINI_STATUS // + +menuDef { + name "miniPlayerStatus" + fullScreen MENU_FALSE + visible MENU_TRUE + style 0 + rect 1 10 125 30 + style 1 + border 1 + bordersize 1 + bordercolor .5 .5 1 1 + backcolor 0 0 1 .25 + +itemDef { + name "miniAmmoValue" + rect 5 5 25 15 + visible 1 + decoration + textscale .33 + forecolor 1 1 1 1 + ownerdraw CG_PLAYER_AMMO_VALUE + addColorRange -999 5 1 0 0 1 + addColorRange 6 999 1 .75 0 1 + } + + +itemDef { + name "miniHealthValue" + rect 45 5 25 15 + visible 1 + decoration + forecolor 1 1 1 1 + textscale .33 + ownerdraw CG_PLAYER_HEALTH + addColorRange -999 25 1 0 0 1 + addColorRange 26 100 1 .75 0 1 + addColorRange 101 999 1 1 1 1 + } + +itemDef { + name "MiniArmorValue" + rect 90 5 25 15 + visible 1 + decoration + textscale .33 + ownerdraw CG_PLAYER_ARMOR_VALUE + addColorRange -999 25 1 0 0 1 + addColorRange 26 100 1 .75 0 1 + addColorRange 101 999 1 1 1 1 + } +} + +// MINI_CTF_STATUS // + +menuDef { + name "miniCTFStatus" + fullScreen MENU_FALSE + visible MENU_TRUE + style 0 + rect 129 10 125 30 + style 1 + border 1 + bordersize 1 + bordercolor .5 .5 1 1 + backcolor 0 0 1 .25 + +itemDef { + name "miniFlagBlue" + rect 5 5 16 16 + visible 1 + decoration + ownerdraw CG_BLUE_FLAGSTATUS + } + +itemDef { + name "miniBlueScore" + rect 10 5 30 15 + visible 1 + decoration + forecolor 1 1 1 1 + textscale 0.33 + ownerdraw CG_BLUE_SCORE + } + +itemDef { + name "miniFlagRed" + rect 65 5 16 16 + visible 1 + decoration + ownerdraw CG_RED_FLAGSTATUS + } + +itemDef { + name "miniRedScore" + rect 70 5 30 15 + visible 1 + decoration + forecolor 1 1 1 1 + textscale 0.33 + ownerdraw CG_RED_SCORE + } + +} + + +// MINI_SCORE // + +menuDef { + name "miniScore" + fullScreen MENU_FALSE + visible MENU_TRUE + style 0 + rect 257 10 125 30 + style 1 + border 1 + bordersize 1 + bordercolor .5 .5 1 1 + backcolor 0 0 1 .25 + + +itemDef { + name "b" + rect 5 5 16 16 + visible 1 + decoration + ownerdraw CG_SELECTEDPLAYER_STATUS + } + +itemDef { + name "b" + rect 30 5 30 15 + visible 1 + decoration + forecolor 1 1 1 1 + textscale .33 + ownerdraw CG_PLAYER_SCORE + } + +} + + + +// MINI_LOCATION // + + +menuDef { + name "miniLocation" + fullScreen MENU_FALSE + visible MENU_TRUE + style 0 + rect 385 10 125 30 + style 1 + border 1 + bordersize 1 + bordercolor .5 .5 1 1 + backcolor 0 0 1 .25 + + +itemDef { + name "b" + rect 5 5 30 15 + visible 1 + decoration + textscale .33 + ownerdraw CG_PLAYER_LOCATION + } + } + + + +// MINI_ITEM // + + +menuDef { + name "miniItem" + fullScreen MENU_FALSE + visible MENU_TRUE + style 0 + rect 513 10 125 30 + style 1 + border 1 + bordersize 1 + bordercolor .5 .5 1 1 + backcolor 0 0 1 .25 + + +itemDef { + name "b" + rect 5 5 30 30 + visible 1 + decoration + ownerdraw CG_PLAYER_ITEM + } + + +itemDef { + name "b" + rect 5 50 30 30 + visible 1 + decoration + ownerdraw CG_CTF_POWERUP + } + + + } + + + } + + +} + diff --git a/ta_ui/ui/ingame.menu b/ta_ui/ui/ingame.menu new file mode 100644 index 00000000..8814d223 --- /dev/null +++ b/ta_ui/ui/ingame.menu @@ -0,0 +1,382 @@ +#include "ui/menudef.h" +{ + + assetGlobalDef { + font "fonts/font" 16 // font + smallFont "fonts/smallfont" 12 // font + bigFont "fonts/bigfont" 20 // font + cursor "ui/assets/3_cursor3" // cursor + gradientBar "ui/assets/gradientbar2.tga" // gradient bar + itemFocusSound "sound/misc/menu2.wav" // sound for item getting focus (via keyboard or mouse ) + + fadeClamp 1.0 // sets the fadeup alpha + fadeCycle 1 // how often fade happens in milliseconds + fadeAmount 0.1 // amount to adjust alpha per cycle + + shadowColor 0.1 0.1 0.1 0.25 // shadow color + } + + +\\ INGAME MENU \\ + + menuDef { + name "ingame" + visible 0 + fullScreen 0 + outOfBoundsClick // this closes the window if it gets a click out of the rectangle + rect 0 0 640 480 + focusColor 1 .75 0 1 + disableColor .5 .5 .5 1 + +itemDef { + name "ingameRect" + visible 1 + rect 0 0 620 26 + style 0 + border 1 + bordercolor .5 .5 .5 1 + forecolor 1 1 1 1 + backcolor 0 0 .75 .5 + visible 1 + decoration + } +itemdef + { + name about + text "About" + rect 5 0 53 30 + type 1 + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + textalign 1 + textalignx 27 + textaligny 22 + textscale .25 + forecolor 1 1 1 1 + backcolor .0 .17 .0 1 + visible 1 + action { open ingame_about } + mouseEnter { setitemcolor about backcolor .1 .37 .1 1 } + mouseExit { setitemcolor about backcolor .0 .17 .0 1 } + } +itemdef + { + name aboutframe + style 3 + rect 0 0 58 32 + background "ui/assets/ingameframea.tga" + visible 1 + decoration + } + + itemDef { + name join + text "Join" + type 1 + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + cvarTest "ui_singleplayeractive" + disableCvar { "1" } + rect 58 0 58 30 + textalign 1 + textalignx 29 + textaligny 22 + textscale .25 + forecolor 1 1 1 1 + backcolor 0 .17 0 1 + visible 1 + action { open ingame_join } + mouseEnter { setitemcolor join backcolor .1 .37 .1 1 } + mouseExit { setitemcolor join backcolor 0 .17 0 1 } + } + +itemdef + { + name joinframe + style 3 + rect 58 0 58 32 + background "ui/assets/ingameframe.tga" + visible 1 + decoration + } + + + itemDef { + name orders + text "Orders" + type 1 + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + rect 116 0 58 30 + textalign 1 + textalignx 29 + textaligny 22 + textscale .25 + cvarTest "g_gametype" + disableCvar { "0" ; "1" ; "2" ; "3" ; "8" } + visible 1 + forecolor 1 1 1 1 + backcolor 0 .17 0 1 + action { open ingame_orders } + mouseEnter { setitemcolor orders backcolor .1 .37 .1 1 } + mouseExit { setitemcolor orders backcolor 0 .17 0 1 } + } + +itemdef + { + name ordersframe + style 3 + rect 116 0 58 32 + background "ui/assets/ingameframe.tga" + visible 1 + decoration + } + + itemDef { + name addBot + text "Add Bot" + type 1 + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + rect 174 0 58 30 + textalign 1 + textalignx 29 + textaligny 22 + textscale .25 + cvarTest "ui_singleplayeractive" + disableCvar { "1" } + + forecolor 1 1 1 1 + backcolor 0 .17 0 1 + visible 1 + action { open ingame_addbot } + mouseEnter { setitemcolor addBot backcolor .1 .37 .1 1 } + mouseExit { setitemcolor addBot backcolor 0 .17 0 1 } + } +itemdef + { + name addBotframe + style 3 + rect 174 0 58 32 + background "ui/assets/ingameframe.tga" + visible 1 + decoration + } + +itemDef { + name player + text "Player" + type 1 + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + rect 232 0 58 30 + textalign 1 + textalignx 29 + textaligny 22 + textscale .25 + forecolor 1 1 1 1 + backcolor 0 .17 0 1 + visible 1 + action { open ingame_player } + mouseEnter { setitemcolor player backcolor .1 .37 .1 1 } + mouseExit { setitemcolor player backcolor 0 .17 0 1 } + } +itemdef + { + name playerframe + style 3 + rect 232 0 58 32 + textalign 1 + background "ui/assets/ingameframe.tga" + visible 1 + decoration + } + +itemDef { + name controls + text "Controls" + type 1 + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + rect 290 0 58 30 + textalign 1 + textalignx 29 + textaligny 22 + textscale .25 + forecolor 1 1 1 1 + backcolor 0 .17 0 1 + visible 1 + action { open ingame_controls } + mouseEnter { setitemcolor controls backcolor .1 .37 .1 1 } + mouseExit { setitemcolor controls backcolor 0 .17 0 1 } + } + +itemdef + { + name controlsframe + style 3 + rect 290 0 58 32 + textalign 1 + background "ui/assets/ingameframe.tga" + visible 1 + decoration + } + +itemDef { + name options + text "Options" + type 1 + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + rect 348 0 58 30 + textalign 1 + textalignx 29 + textaligny 22 + textscale .25 + forecolor 1 1 1 1 + backcolor 0 .17 0 1 + visible 1 + action { open ingame_options } + mouseEnter { setitemcolor options backcolor .1 .37 .1 1 } + mouseExit { setitemcolor options backcolor 0 .17 0 1 } + } + +itemdef + { + name optionsframe + style 3 + rect 348 0 58 32 + textalign 1 + background "ui/assets/ingameframe.tga" + visible 1 + decoration + } + +itemDef { + name system + text "System" + type 1 + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + rect 406 0 58 30 + textalign 1 + textalignx 29 + textaligny 22 + textscale .25 + forecolor 1 1 1 1 + backcolor 0 .17 0 1 + visible 1 + action { open ingame_system } + mouseEnter { setitemcolor system backcolor .1 .37 .1 1 } + mouseExit { setitemcolor system backcolor 0 .17 0 1 } + } + +itemdef + { + name systemframe + style 3 + rect 406 0 58 32 + textalign 1 + background "ui/assets/ingameframe.tga" + visible 1 + decoration + } + +itemDef { + name vote + text "Vote" + type 1 + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + cvarTest "ui_singleplayeractive" + disableCvar { "1" } + + rect 464 0 58 30 + textalign 1 + textalignx 29 + textaligny 22 + textscale .25 + forecolor 1 1 1 1 + backcolor 0 .17 0 1 + visible 1 + action { open ingame_vote } + mouseEnter { setitemcolor vote backcolor .1 .37 .1 1 } + mouseExit { setitemcolor vote backcolor 0 .17 0 1 } + } +itemdef + { + name voteframe + style 3 + rect 464 0 58 32 + textalign 1 + background "ui/assets/ingameframe.tga" + visible 1 + decoration + } + +itemDef { + name callvote + text "CallVote" + type 1 + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + cvarTest "ui_singleplayeractive" + disableCvar { "1" } + + rect 522 0 58 30 + textalign 1 + textalignx 29 + textaligny 22 + textscale .25 + forecolor 1 1 1 1 + backcolor 0 .17 0 1 + visible 1 + action { open ingame_callvote } + mouseEnter { setitemcolor callvote backcolor .1 .37 .1 1 } + mouseExit { setitemcolor callvote backcolor 0 .17 0 1 } + } +itemdef + { + name callvoteframe + style 3 + rect 522 0 58 32 + textalign 1 + background "ui/assets/ingameframe.tga" + visible 1 + decoration + } +itemDef { + name leave + text "Exit" + type 1 + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + rect 580 0 58 30 + textalign 1 + textalignx 29 + textaligny 22 + textscale .25 + forecolor 1 1 1 1 + backcolor 0 .17 0 1 + visible 1 + action { open ingame_leave } + mouseEnter { setitemcolor leave backcolor .1 .37 .1 1 } + mouseExit { setitemcolor leave backcolor 0 .17 0 1 } + } + +itemdef + { + name leave + style 3 + rect 580 0 58 32 + textalign 1 + background "ui/assets/ingameframe.tga" + visible 1 + decoration + } + + + +} + +} \ No newline at end of file diff --git a/ta_ui/ui/ingame.txt b/ta_ui/ui/ingame.txt new file mode 100644 index 00000000..fb523ba7 --- /dev/null +++ b/ta_ui/ui/ingame.txt @@ -0,0 +1,16 @@ +// menu defs +// +{ + loadMenu { "ui/ingame.menu" } + loadMenu { "ui/ingame_vote.menu" } + loadMenu { "ui/ingame_about.menu" } + loadMenu { "ui/ingame_controls.menu" } + loadMenu { "ui/ingame_join.menu" } + loadMenu { "ui/ingame_options.menu" } + loadMenu { "ui/ingame_system.menu" } + loadMenu { "ui/ingame_leave.menu" } + loadMenu { "ui/ingame_player.menu" } + loadMenu { "ui/ingame_addbot.menu" } + loadMenu { "ui/ingame_callvote.menu" } + loadMenu { "ui/ingame_orders.menu" } +} diff --git a/ta_ui/ui/ingame_about.menu b/ta_ui/ui/ingame_about.menu new file mode 100644 index 00000000..fb3d348c --- /dev/null +++ b/ta_ui/ui/ingame_about.menu @@ -0,0 +1,400 @@ +#include "ui/menudef.h" + +{ +\\ INGAME ABOUT BOX \\ + +menuDef { + name "ingame_about" + visible 0 + fullscreen 0 + outOfBoundsClick // this closes the window if it gets a click out of the rectangle + rect 0 30 256 295 + focusColor 1 .75 0 1 + style 1 + border 1 + +itemDef { + name window + rect 10 15 256 280 + style 1 + backcolor 0 .1 0 1 + visible 1 + decoration + } + + + +// FRAME // + + + +itemDef { + name window + rect 0 10 16 128 + style 3 + background "ui/assets/ingameleft.tga" + visible 1 + decoration + } + +itemDef { + name window + rect 3 0 65 16 + style 3 + background "ui/assets/ingameconnection.tga" + visible 1 + decoration + } +itemDef { + name window + rect 67 10 64 8 + style 3 + background "ui/assets/ingametop.tga" + visible 1 + decoration + } +itemDef { + name window + rect 131 10 96 8 + style 3 + background "ui/assets/ingametop.tga" + visible 1 + decoration + } + + +itemDef { + name window + rect 0 138 16 64 + style 3 + background "ui/assets/ingameleft.tga" + visible 1 + decoration + } + +itemDef { + name window + rect 0 202 16 64 + style 3 + background "ui/assets/ingameleft.tga" + visible 1 + decoration + } + +itemDef { + name window + rect 0 233 64 64 + style 3 + background "ui/assets/ingameleftcornerb.tga" + visible 1 + decoration + } + +itemDef { + name window + rect 212 10 64 64 + style 3 + background "ui/assets/ingamerightcorner.tga" + visible 1 + decoration + } + +itemDef { + name window + rect 212 233 64 64 + style 3 + background "ui/assets/ingamerightcornerb.tga" + visible 1 + decoration + } + +itemDef { + name window + rect 64 289 66 8 + style 3 + background "ui/assets/ingamebottom.tga" + visible 1 + decoration + } +itemDef { + name window + rect 128 289 96 8 + style 3 + background "ui/assets/ingamebottom.tga" + visible 1 + decoration + } +itemDef { + name window + rect 260 74 16 64 + style 3 + background "ui/assets/ingameright.tga" + visible 1 + decoration + } +itemDef { + name window + rect 260 138 16 64 + style 3 + background "ui/assets/ingameright.tga" + visible 1 + decoration + } +itemDef { + name window + rect 260 202 16 64 + style 3 + background "ui/assets/ingameright.tga" + visible 1 + decoration + } + +itemDef { + name about + rect 0 25 256 20 + name gametypefield + type 4 + style 0 + text "Map Name:" + cvar mapname + maxPaintChars 12 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 1 + decoration + } + + + +itemDef { + name about + rect 0 40 256 20 + style 0 + //type 4 + textalign ITEM_ALIGN_RIGHT + text "GameType:" + type ITEM_TYPE_MULTI + cvar "G_GAMETYPE" + cvarFloatList { "Free For All" 0 "Tournament" 1 "Free For All" 2 "Team Deathmatch" 3 "Capture the Flag" 4 "One Flag CTF" 5 "Overload" 6 "Harvester" 7 "Team Tournament" 8 } + + textalignx 128 + textaligny 12 + textscale .25 + backcolor 0 0 .75 .25 + visible 1 + decoration + } +itemDef { + name about + rect 0 70 256 20 + type 4 + style 0 + text "Capture Limit:" + cvarTest "G_GAMETYPE" + hideCvar { "0" ; "1" ; "2" ; "3" } + maxPaintChars 12 + cvar capturelimit + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 1 + decoration + } +itemDef { + name about + rect 0 70 256 20 + type 4 + style 0 + text "Frag Limit:" + cvarTest "G_GAMETYPE" + showCvar { "0" ; "1" ; "2" ; "3" } + maxPaintChars 12 + cvar fraglimit + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 1 + decoration + } +itemDef { + name about + rect 0 85 256 20 + type 4 + style 0 + text "Time Limit:" + maxPaintChars 12 + cvar timelimit + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 1 + decoration + } + + +itemDef { + name about + rect 20 100 256 20 + type 4 + style 0 + text "Red Team:" + maxPaintChars 12 + cvar g_redTeam + textalign ITEM_ALIGN_RIGHT + textalignx 108 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 1 + decoration + } +itemDef { + name about + rect 20 115 256 20 + type 4 + style 0 + text "Blue Team:" + maxPaintChars 12 + cvar g_blueTeam + textalign ITEM_ALIGN_RIGHT + textalignx 108 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 1 + decoration + } + +itemDef { + name about + rect 0 140 256 20 + type 4 + style 0 + text "Protocol:" + cvar protocol + maxPaintChars 12 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 1 + decoration + } + +itemDef { + name about + rect 0 155 256 20 + type 4 + style 0 + text "Max Clients:" + cvar sv_maxclients + maxPaintChars 12 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 1 + decoration + } + +itemDef { + name about + rect 0 170 256 20 + type 4 + style 0 + text "Host Name:" + cvar sv_hostname + maxPaintChars 12 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 1 + decoration + } + +itemDef { + name about + rect 0 205 256 20 + type 11 + style 0 + text "Password Required:" + cvar g_needpass + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 1 + decoration + } + +itemDef { + name about + rect 0 220 256 20 + type 11 + style 0 + text "DM Flags:" + cvar g_dmflags + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 1 + decoration + } +itemDef { + name about + rect 0 235 256 20 + type 11 + style 0 + text "Bot/Min Players:" + cvar bot_minplayers + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 1 + decoration + } + + +itemDef { + name about + rect 0 265 256 20 + type 4 + style 0 + text "Version:" + cvar version + maxPaintChars 32 + textalign ITEM_ALIGN_LEFT + textalignx 128 + textaligny 12 + textalign 1 + textscale .25 + forecolor 1 1 1 1 + visible 1 + decoration + } + + + + +} + + +} diff --git a/ta_ui/ui/ingame_addbot.menu b/ta_ui/ui/ingame_addbot.menu new file mode 100644 index 00000000..0a0aa530 --- /dev/null +++ b/ta_ui/ui/ingame_addbot.menu @@ -0,0 +1,162 @@ +#include "ui/menudef.h" + +{ +\\ ADDBOT MENU \\ + +menuDef { + name "ingame_addbot" + visible 0 + fullscreen 0 + outOfBoundsClick // this closes the window if it gets a click out of the rectangle + rect 106 30 192 123 + disableColor .5 .5 .5 1 + focusColor 1 .75 0 1 + style 1 + border 1 + +itemDef { + name window + rect 10 15 172 108 + style 1 + backcolor 0 .1 0 1 + visible 1 + decoration + } + + + + + +itemDef { + name window + rect 0 10 64 64 + style 3 + background "ui/assets/ingameleftcorner.tga" + visible 1 + decoration + } + +itemDef { + name window + rect 64 0 65 16 + style 3 + background "ui/assets/ingameconnection.tga" + visible 1 + decoration + } +itemDef { + name window + rect 129 10 64 64 + style 3 + background "ui/assets/ingamerightcorner.tga" + visible 1 + decoration + } + +itemDef { + name window + rect 0 64 64 64 + style 3 + background "ui/assets/ingameleftcornerb.tga" + visible 1 + decoration + } +itemDef { + name window + rect 129 64 64 64 + style 3 + background "ui/assets/ingamerightcornerb.tga" + visible 1 + decoration + } +itemDef { + name window + rect 64 120 66 8 + style 3 + background "ui/assets/ingamebottom.tga" + visible 1 + decoration + } + + + +itemDef { + name gametypefield + style 0 + text "Name:" + ownerdraw UI_BOTNAME + rect 0 20 128 20 + textalign ITEM_ALIGN_RIGHT + textalignx 86 + textaligny 18 + textscale .25 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 1 + } + +itemDef { + name gametypefield + style 0 + text "Team:" + ownerdraw UI_REDBLUE + rect 0 40 128 20 + textalign ITEM_ALIGN_RIGHT + textalignx 86 + textaligny 18 + textscale .25 + cvarTest "g_gametype" + disableCvar { "0" ; "1" } + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 1 + } + +itemDef { + name gametypefield + style 0 + text "Skill:" + ownerdraw UI_BOTSKILL + rect 0 60 128 20 + textalign ITEM_ALIGN_RIGHT + textalignx 86 + textaligny 18 + textscale .25 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 1 + } + + +itemDef { + name ok + text "Add Bot" + type 1 + textscale .25 + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + rect 65 95 50 20 + textalign 1 + textalignx 25 + textaligny 15 + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + visible 1 + action { uiScript addBot ; uiScript closeingame } + mouseEnter { setitemcolor ok backcolor .1 .37 .1 1 } + mouseExit { setitemcolor ok backcolor .37 .1 .1 1 } + } + + + + + + + +} + + +} diff --git a/ta_ui/ui/ingame_callvote.menu b/ta_ui/ui/ingame_callvote.menu new file mode 100644 index 00000000..0c417d77 --- /dev/null +++ b/ta_ui/ui/ingame_callvote.menu @@ -0,0 +1,491 @@ +#include "ui/menudef.h" + +{ +\\ CALL VOTE MENU \\ + +menuDef { + name "ingame_callvote" + visible 0 + fullscreen 0 + rect 347 30 290 190 + outOfBoundsClick // this closes the window if it gets a click out of the rectangle + focusColor 1 .75 0 1 + style 1 + border 1 + onopen { hide grpcallVote ; show misc ; uiScript loadArenas } + +itemDef { + name window + rect 10 15 270 175 + style 1 + backcolor 0 .1 0 1 + visible 1 + decoration + } + +// FRAME // + + +itemDef { + name window + rect 0 10 64 64 + style 3 + background "ui/assets/ingameleftcorner.tga" + visible 1 + decoration + } +itemDef { + name window + rect 64 10 64 8 + style 3 + background "ui/assets/ingametop.tga" + visible 1 + decoration + } +itemDef { + name window + rect 128 10 64 8 + style 3 + background "ui/assets/ingametop.tga" + visible 1 + decoration + } +itemDef { + name window + rect 226 10 64 64 + style 3 + background "ui/assets/ingamerightcorner.tga" + visible 1 + decoration + } +itemDef { + name window + rect 168 0 64 16 + style 3 + background "ui/assets/ingameconnection.tga" + visible 1 + decoration + } +itemDef { + name window + rect 0 128 64 64 + style 3 + background "ui/assets/ingameleftcornerb.tga" + visible 1 + decoration + } +itemDef { + name window + rect 226 128 64 64 + style 3 + background "ui/assets/ingamerightcornerb.tga" + visible 1 + decoration + } + +itemDef { + name window + rect 0 64 16 64 + style 3 + background "ui/assets/ingameleft.tga" + visible 1 + decoration + } + +itemDef { + name window + rect 274 64 16 64 + style 3 + background "ui/assets/ingameright.tga" + visible 1 + decoration + } + + + +itemDef { + name window + rect 64 184 64 8 + style 3 + background "ui/assets/ingamebottom.tga" + visible 1 + decoration + } +itemDef { + name window + rect 128 184 98 8 + style 3 + background "ui/assets/ingamebottom.tga" + visible 1 + decoration + } + + + +// BUTTONS // +itemDef { + name ctr_misc + text "Misc" + textscale .25 + group grpbutton + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + rect 20 25 45 20 + type 1 + textalign 1 + textalignx 22 + textaligny 16 + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + visible 1 + action { hide grpCallVote ; show misc } + mouseEnter { setitemcolor ctr_misc backcolor .1 .37 .1 1 } + mouseExit { setitemcolor ctr_misc backcolor .37 .1 .1 1 } + } +itemDef { + name ctr_gametype + text "Type" + textscale .25 + group grpbutton + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + rect 71 25 45 20 + type 1 + textalign 1 + textalignx 22 + textaligny 16 + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + visible 1 + action { hide grpCallVote ; show type } + mouseEnter { setitemcolor ctr_gametype backcolor .1 .37 .1 1 } + mouseExit { setitemcolor ctr_gametype backcolor .37 .1 .1 1 } + } +itemDef { + name ctr_kickplayer + text "Kick" + textscale .25 + group grpbutton + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + rect 122 25 45 20 + type 1 + textalign 1 + textalignx 22 + textaligny 16 + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + visible 1 + action { hide grpCallVote ; show kick } + mouseEnter { setitemcolor ctr_kickplayer backcolor .1 .37 .1 1 } + mouseExit { setitemcolor ctr_kickplayer backcolor .37 .1 .1 1 } + } +itemDef { + name ctr_changemap + text "Map" + textscale .25 + group grpbutton + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + rect 173 25 45 20 + type 1 + textalign 1 + textalignx 22 + textaligny 16 + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + visible 1 + action { hide grpCallVote ; show map } + mouseEnter { setitemcolor ctr_changemap backcolor .1 .37 .1 1 } + mouseExit { setitemcolor ctr_changemap backcolor .37 .1 .1 1 } + } +itemDef { + name ctr_changeleader + text "Leader" + textscale .25 + group grpbutton + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + rect 225 25 45 20 + type 1 + textalign 1 + textalignx 22 + textaligny 16 + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + visible 1 + action { hide grpCallVote ; show leader } + mouseEnter { setitemcolor ctr_changeleader backcolor .1 .37 .1 1 } + mouseExit { setitemcolor ctr_changeleader backcolor .37 .1 .1 1 } + } + + +// MISC // + +itemDef { + name misc + text "Restart Map" + group grpCallVote + textscale .25 + rect 0 70 290 20 + type 1 + textalign 1 + textalignx 145 + textaligny 16 + forecolor 1 1 1 1 + visible 0 + action { exec "cmd callvote map_restart" ; uiScript closeingame } + } + + +itemDef { + name misc + group grpCallVote + text "Next Map" + textscale .25 + rect 0 90 290 20 + type 1 + textalign 1 + textalignx 145 + textaligny 16 + forecolor 1 1 1 1 + visible 0 + action { exec "cmd callvote nextmap" ; uiScript closeingame } + } +itemDef { + name misc + group grpCallVote + text "Do Warmup" + textscale .25 + rect 0 110 290 20 + type 1 + textalign 1 + textalignx 145 + textaligny 16 + forecolor 1 1 1 1 + visible 0 + action { exec "cmd callvote g_doWarmup 1" ; uiScript closeingame } + } + + + +// Game Type // + +itemDef { + name type + group grpCallVote + text "Gametype:" + style 0 + textscale .25 + ownerdraw UI_NETGAMETYPE + rect 60 90 110 20 + textalign 0 + textalignx 0 + textaligny 16 + forecolor 1 1 1 1 + visible 0 + } +itemDef { + name type + text "OK" + type 1 + textscale .25 + group grpCallVote + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + rect 123 160 50 20 + textalign 1 + textalignx 25 + textaligny 15 + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + visible 0 + action { uiScript voteGame ; uiScript closeingame } + mouseEnter { setcolor backcolor .1 .37 .1 1 } + mouseExit { setcolor backcolor .37 .1 .1 1 } + } + + +// KICK PLAYER // + +itemDef { + name kick + group grpCallVote + text "Kick Player:" + textscale .25 + rect 20 50 110 20 + textalign 0 + textalignx 0 + textaligny 16 + forecolor 1 1 1 1 + visible 0 + decoration + action { } + } +itemDef { + name kick + group grpCallVote + rect 20 70 250 85 + style WINDOW_STYLE_FILLED + type ITEM_TYPE_LISTBOX + elementwidth 120 + elementheight 15 + textscale .25 + elementtype LISTBOX_TEXT + feeder FEEDER_PLAYER_LIST + border 1 + bordercolor .5 .5 .5 .5 + forecolor 1 1 1 1 + backcolor 0 0 .5 .25 + outlinecolor .1 .1 .7 .5 + visible 0 + mouseEnter { fadein message_arena ; setitemcolor kick bordercolor .7 0 0 1 } + mouseExit { fadeout message_arena ; setitemcolor kick bordercolor .5 .5 .5 1 } + } + +itemDef { + name kick + text "OK" + type 1 + textscale .25 + group grpCallVote + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + rect 123 160 50 20 + textalign 1 + textalignx 25 + textaligny 15 + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + visible 0 + action { uiScript voteKick ; uiScript closeingame } + mouseEnter { setcolor backcolor .1 .37 .1 1 } + mouseExit { setcolor backcolor .37 .1 .1 1 } + } + +// NEW MAP // + +itemDef { + name map + group grpCallVote + text "New Map:" + ownerdraw UI_ALLMAPS_SELECTION + textscale .25 + rect 20 50 110 20 + textalign 0 + textalignx 0 + textaligny 16 + forecolor 1 1 1 1 + decoration + visible 0 + action { } + } +itemDef { + name map + group grpCallVote + rect 20 70 250 85 + type ITEM_TYPE_LISTBOX + style WINDOW_STYLE_FILLED + elementwidth 120 + elementheight 15 + textscale .25 + elementtype LISTBOX_TEXT + feeder FEEDER_ALLMAPS + border 1 + bordercolor .5 .5 .5 .5 + forecolor 1 1 1 1 + backcolor 0 0 .5 .25 + outlinecolor .1 .1 .7 .5 + visible 0 + mouseEnter { fadein message_arena ; setitemcolor map bordercolor .7 0 0 1 } + mouseExit { fadeout message_arena ; setitemcolor map bordercolor .5 .5 .5 .5 } + } + + +itemDef { + name map + text "OK" + type 1 + textscale .25 + group grpCallVote + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + rect 123 160 50 20 + textalign 1 + textalignx 25 + textaligny 15 + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + visible 0 + action { uiScript voteMap ; uiScript closeingame } + mouseEnter { setcolor backcolor .1 .37 .1 1 } + mouseExit { setcolor backcolor .37 .1 .1 1 } + } + +// CHANGE LEADER // + +itemDef { + name leader + group grpCallVote + text "New Leader:" + textscale .25 + rect 20 50 110 20 + textalign 0 + textalignx 0 + textaligny 16 + forecolor 1 1 1 1 + visible 0 + decoration + action { } + } +itemDef { + name leader + group grpCallVote + rect 20 70 250 85 + style WINDOW_STYLE_FILLED + type ITEM_TYPE_LISTBOX + elementwidth 120 + elementheight 15 + textscale .25 + elementtype LISTBOX_TEXT + feeder FEEDER_TEAM_LIST + border 1 + bordercolor .5 .5 .5 .5 + forecolor 1 1 1 1 + backcolor 0 0 .5 .25 + outlinecolor .1 .1 .7 .5 + visible 0 + mouseEnter { fadein message_arena ; setitemcolor leader bordercolor .7 0 0 1 } + mouseExit { fadeout message_arena ; setitemcolor leader bordercolor .5 .5 .5 1 } + } + +itemDef { + name leader + text "OK" + type 1 + textscale .25 + group grpCallVote + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + rect 123 160 50 20 + textalign 1 + textalignx 25 + textaligny 15 + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + visible 0 + action { uiScript voteLeader ; uiScript closeingame } + mouseEnter { setcolor backcolor .1 .37 .1 1 } + mouseExit { setcolor backcolor .37 .1 .1 1 } + } + + + + + + + +} + + +} diff --git a/ta_ui/ui/ingame_callvote2.menu b/ta_ui/ui/ingame_callvote2.menu new file mode 100644 index 00000000..2726de99 --- /dev/null +++ b/ta_ui/ui/ingame_callvote2.menu @@ -0,0 +1,192 @@ +#include "ui/menudef.h" + +{ +\\ CALL VOTE MENU \\ + +menuDef { + name "ingame_callvote" + visible 0 + fullscreen 0 + rect 374 30 255 350 + outOfBoundsClick // this closes the window if it gets a click out of the rectangle + focusColor 1 .75 0 1 + style 1 + border 1 + + onOpen { uiScript loadArenas } + + +itemDef { + name window + rect 0 0 255 350 + style 1 + border 1 + bordercolor .5 .5 .5 1 + backcolor 0 0 .75 .25 + visible 1 + decoration + } + + + + +itemDef { + name maprestart + text "Map Restart:" + type 11 + textscale .25 + cvar "map_restart" + rect 20 10 110 20 + textalign 0 + textalignx 0 + textaligny 16 + forecolor 1 1 1 1 + visible 1 + } + + +itemDef { + name maprestart + text "Next Map:" + type 11 + textscale .25 + cvar "nextmap" + rect 20 30 110 20 + textalign 0 + textalignx 0 + textaligny 16 + forecolor 1 1 1 1 + visible 1 + action { } + } +itemDef { + name maprestart + text "Do Warmup:" + type 11 + textscale .25 + rect 20 50 110 20 + textalign 0 + textalignx 0 + textaligny 16 + forecolor 1 1 1 1 + visible 1 + action { } + } + +itemDef { + name gametype + text "Gametype:" + style 0 + textscale .25 + ownerdraw UI_NETGAMETYPE + rect 20 70 110 20 + textalign 0 + textalignx 0 + textaligny 16 + forecolor 1 1 1 1 + visible 1 + } + +itemDef { + name window + rect 0 92 255 120 + style 0 + border 1 + bordercolor .5 .5 .5 1 + visible 1 + decoration + } + +itemDef { + name maprestart + text "Kick Player:" + textscale .25 + rect 20 95 110 20 + //ownerdraw UI_ALLMAPS_SELECTION + textalign 0 + textalignx 0 + textaligny 16 + forecolor 1 1 1 1 + visible 1 + action { } + } +itemDef { + name playerlist + rect 20 115 225 85 + style WINDOW_STYLE_FILLED + type ITEM_TYPE_LISTBOX + elementwidth 120 + elementheight 15 + textscale .25 + elementtype LISTBOX_TEXT + border 1 + bordercolor .5 .5 .5 .5 + forecolor 1 1 1 1 + backcolor 0 0 .5 .25 + outlinecolor .1 .1 .7 .5 + visible 1 + mouseEnter { fadein message_arena ; setitemcolor playerlist bordercolor .7 0 0 1 } + mouseExit { fadeout message_arena ; setitemcolor playerlist bordercolor .5 .5 .5 1 } + } + +itemDef { + name maprestart + text "New Map:" + ownerdraw UI_ALLMAPS_SELECTION + textscale .25 + rect 20 215 110 20 + textalign 0 + textalignx 0 + textaligny 16 + forecolor 1 1 1 1 + visible 1 + action { } + } +itemDef { + name maplist + rect 20 235 225 85 + type ITEM_TYPE_LISTBOX + style WINDOW_STYLE_FILLED + elementwidth 120 + elementheight 15 + textscale .25 + elementtype LISTBOX_TEXT + feeder FEEDER_MAPS + border 1 + bordercolor .5 .5 .5 .5 + forecolor 1 1 1 1 + backcolor 0 0 .5 .25 + outlinecolor .1 .1 .7 .5 + visible 1 + mouseEnter { fadein message_arena ; setitemcolor maplist bordercolor .7 0 0 1 } + mouseExit { fadeout message_arena ; setitemcolor maplist bordercolor .5 .5 .5 .5 } + } + + + +itemDef { + name ok + text "OK" + textscale .25 + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/button_red.tga" + rect 103 325 50 20 + textalign 1 + textalignx 25 + textaligny 15 + forecolor 1 1 1 1 + visible 1 + action { close ingame_callvote ; close ingame ; open ingame } + } + + + + + + + +} + + +} diff --git a/ta_ui/ui/ingame_controls.menu b/ta_ui/ui/ingame_controls.menu new file mode 100644 index 00000000..52c02edb --- /dev/null +++ b/ta_ui/ui/ingame_controls.menu @@ -0,0 +1,1412 @@ +#include "ui/menudef.h" + +{ +\\ SETUP MENU \\ + +menuDef { + name "ingame_controls" + visible 0 + fullscreen 0 + outOfBoundsClick // this closes the window if it gets a click out of the rectangle + rect 131 30 375 335 + focusColor 1 .75 0 1 + style 1 + border 1 + onClose { + uiScript saveControls + } + onopen { hide grpControls ; show look ; uiScript loadControls } + +itemDef { + name window + rect 10 15 355 320 + style 1 + backcolor 0 .1 0 1 + visible 1 + decoration + } + + + +// FRAME // + + +itemDef { + name window + rect 0 10 64 64 + style 3 + background "ui/assets/ingameleftcorner.tga" + visible 1 + decoration + } +itemDef { + name window + rect 64 10 96 8 + style 3 + background "ui/assets/ingametop.tga" + visible 1 + decoration + } +itemDef { + name window + rect 219 10 96 8 + style 3 + background "ui/assets/ingametop.tga" + visible 1 + decoration + } +itemDef { + name window + rect 311 10 64 64 + style 3 + background "ui/assets/ingamerightcorner.tga" + visible 1 + decoration + } +itemDef { + name window + rect 155 0 64 16 + style 3 + background "ui/assets/ingameconnection.tga" + visible 1 + decoration + } +itemDef { + name window + rect 0 274 64 64 + style 3 + background "ui/assets/ingameleftcornerb.tga" + visible 1 + decoration + } +itemDef { + name window + rect 311 274 64 64 + style 3 + background "ui/assets/ingamerightcornerb.tga" + visible 1 + decoration + } + +itemDef { + name window + rect 0 64 16 64 + style 3 + background "ui/assets/ingameleft.tga" + visible 1 + decoration + } + + +itemDef { + name window + rect 0 128 16 64 + style 3 + background "ui/assets/ingameleft.tga" + visible 1 + decoration + } + +itemDef { + name window + rect 0 192 16 96 + style 3 + background "ui/assets/ingameleft.tga" + visible 1 + decoration + } + +itemDef { + name window + rect 359 64 16 64 + style 3 + background "ui/assets/ingameright.tga" + visible 1 + decoration + } + + +itemDef { + name window + rect 359 128 16 64 + style 3 + background "ui/assets/ingameright.tga" + visible 1 + decoration + } + +itemDef { + name window + rect 359 192 16 96 + style 3 + background "ui/assets/ingameright.tga" + visible 1 + decoration + } + + + +itemDef { + name window + rect 64 330 96 8 + style 3 + background "ui/assets/ingamebottom.tga" + visible 1 + decoration + } +itemDef { + name window + rect 160 330 64 8 + style 3 + background "ui/assets/ingamebottom.tga" + visible 1 + decoration + } +itemDef { + name window + rect 224 330 87 8 + style 3 + background "ui/assets/ingamebottom.tga" + visible 1 + decoration + } + + + + + + + + + + + + + + + + + +itemDef { + name keyBindStatus + rect 0 55 300 15 + ownerdraw UI_KEYBINDSTATUS + text " " + forecolor 1 .75 0 1 + textscale .20 + textalignx 187 + textalign 1 + textaligny 10 + visible 0 + decoration + } + + +itemDef { + name ctr_look + text "Look" + type 1 + textscale .25 + group grpControlbutton + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + rect 25 25 50 20 + textalign 1 + textalignx 25 + textaligny 16 + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + visible 1 + action { hide grpControls ; show look } + mouseEnter { setitemcolor ctr_look backcolor .1 .37 .1 1 } + mouseExit { setitemcolor ctr_look backcolor .37 .1 .1 1 } + } + + itemDef { + name look + group grpControls + type ITEM_TYPE_BIND + text "Lookup:" + cvar "+lookup" + rect 0 85 320 15 + textalign ITEM_ALIGN_RIGHT + textalignx 187 + maxPaintChars 20 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + + itemDef { + name look + group grpControls + type ITEM_TYPE_BIND + text "Look Down:" + cvar "+lookdown" + rect 0 100 320 12 + textalign ITEM_ALIGN_RIGHT + textalignx 187 + maxPaintChars 20 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + + itemDef { + name look + group grpControls + type ITEM_TYPE_BIND + text "Mouse Look:" + cvar "+mlook" + rect 0 115 320 15 + textalign ITEM_ALIGN_RIGHT + textalignx 187 + maxPaintChars 20 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + + itemDef { + name look + group grpControls + type ITEM_TYPE_BIND + text "Centerview:" + cvar "centerview" + rect 0 130 320 15 + textalign ITEM_ALIGN_RIGHT + textalignx 187 + maxPaintChars 20 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + + itemDef { + name look + group grpControls + type ITEM_TYPE_BIND + text "ZoomView:" + cvar "+zoom" + rect 0 145 320 15 + textalign ITEM_ALIGN_RIGHT + textalignx 187 + maxPaintChars 20 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + + itemDef { + name look + group grpControls + type ITEM_TYPE_YESNO + text "Free Look:" + cvar "cl_freelook" + rect 0 160 320 15 + textalign ITEM_ALIGN_RIGHT + textalignx 187 + maxPaintChars 20 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 0 + mouseenter { show yesno_message } + mouseexit { hide yesno_message } + } + + +itemDef { + name ctr_move + text "Move" + type 1 + textscale .25 + group grpControlbutton + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + rect 80 25 50 20 + textalign 1 + textalignx 25 + textaligny 16 + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + visible 1 + action { hide grpControls ; show move } + mouseEnter { setitemcolor ctr_move backcolor .1 .37 .1 1 } + mouseExit { setitemcolor ctr_move backcolor .37 .1 .1 1 } + } + + + itemDef { + name move + group grpControls + type ITEM_TYPE_YESNO + text "Always Run:" + cvar "cl_run" + rect 0 85 320 15 + textalign ITEM_ALIGN_RIGHT + textalignx 187 + maxPaintChars 20 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 0 + mouseenter { show yesno_message } + mouseexit { hide yesno_message } + } + itemDef { + name move + group grpControls + type ITEM_TYPE_BIND + text "Run / Walk:" + cvar "+speed" + rect 0 100 320 15 + textalign ITEM_ALIGN_RIGHT + textalignx 187 + maxPaintChars 20 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 0 + } + + itemDef { + name move + group grpControls + type ITEM_TYPE_BIND + text "Forward:" + cvar "+forward" + rect 0 115 320 15 + textalign ITEM_ALIGN_RIGHT + textalignx 187 + maxPaintChars 20 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + + itemDef { + name move + group grpControls + type ITEM_TYPE_BIND + text "Backpedal:" + cvar "+back" + rect 0 130 320 15 + textalign ITEM_ALIGN_RIGHT + textalignx 187 + maxPaintChars 20 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + + itemDef { + name move + group grpControls + type ITEM_TYPE_BIND + text "Move Left:" + cvar "+moveleft" + rect 0 145 320 15 + textalign ITEM_ALIGN_RIGHT + textalignx 187 + maxPaintChars 20 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + + itemDef { + name move + group grpControls + type ITEM_TYPE_BIND + text "Move Right:" + cvar "+moveright" + rect 0 160 320 15 + textalign ITEM_ALIGN_RIGHT + textalignx 187 + maxPaintChars 20 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + + itemDef { + name move + group grpControls + type ITEM_TYPE_BIND + text "Jump:" + cvar "+moveup" + rect 0 175 320 15 + textalign ITEM_ALIGN_RIGHT + textalignx 187 + maxPaintChars 20 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + + itemDef { + name move + group grpControls + type ITEM_TYPE_BIND + text "Crouch:" + cvar "+movedown" + rect 0 190 320 15 + textalign ITEM_ALIGN_RIGHT + textalignx 187 + maxPaintChars 20 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + + itemDef { + name move + group grpControls + type ITEM_TYPE_BIND + text "Turn Left:" + cvar "+left" + rect 0 205 320 15 + textalign ITEM_ALIGN_RIGHT + textalignx 187 + maxPaintChars 20 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + + itemDef { + name move + group grpControls + type ITEM_TYPE_BIND + text "Turn Right:" + cvar "+right" + rect 0 220 320 15 + textalign ITEM_ALIGN_RIGHT + textalignx 187 + maxPaintChars 20 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + + itemDef { + name move + group grpControls + type ITEM_TYPE_BIND + text "Strafe:" + cvar "+strafe" + rect 0 235 320 15 + textalign ITEM_ALIGN_RIGHT + textalignx 187 + maxPaintChars 20 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + + +itemDef { + name ctr_shoot + text "Shoot" + type 1 + textscale .25 + group grpControlbutton + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + rect 135 25 50 20 + textalign 1 + textalignx 25 + textaligny 16 + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + visible 1 + action { hide grpControls ; show shoot } + mouseEnter { setitemcolor ctr_shoot backcolor .1 .37 .1 1 } + mouseExit { setitemcolor ctr_shoot backcolor .37 .1 .1 1 } + } + itemDef { + name shoot + group grpControls + type ITEM_TYPE_BIND + text "Attack:" + cvar "+attack" + rect 0 75 320 15 + textalign ITEM_ALIGN_RIGHT + textalignx 187 + maxPaintChars 20 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + + itemDef { + name shoot + group grpControls + type ITEM_TYPE_BIND + text "Previous Weapon:" + cvar "weapprev" + rect 0 90 320 15 + textalign ITEM_ALIGN_RIGHT + textalignx 187 + maxPaintChars 20 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + + itemDef { + name shoot + group grpControls + type ITEM_TYPE_BIND + text "Next Weapon:" + cvar "weapnext" + rect 0 105 320 15 + textalign ITEM_ALIGN_RIGHT + textalignx 187 + maxPaintChars 20 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + + itemDef { + name shoot + group grpControls + type ITEM_TYPE_YESNO + text "Autoswitch:" + cvar "cg_autoswitch" + rect 0 120 320 15 + textalign ITEM_ALIGN_RIGHT + textalignx 187 + maxPaintChars 20 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 0 + mouseenter { show yesno_message } + mouseexit { hide yesno_message } + } + + itemDef { + name shoot + group grpControls + type ITEM_TYPE_BIND + text "Gauntlet:" + cvar "weapon 1" + rect 0 135 320 15 + textalign ITEM_ALIGN_RIGHT + textalignx 187 + maxPaintChars 20 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + + itemDef { + name shoot + group grpControls + type ITEM_TYPE_BIND + text "Machinegun:" + cvar "weapon 2" + rect 0 150 320 15 + textalign ITEM_ALIGN_RIGHT + textalignx 187 + maxPaintChars 20 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + + itemDef { + name shoot + group grpControls + type ITEM_TYPE_BIND + text "Shotgun:" + cvar "weapon 3" + rect 0 165 320 15 + textalign ITEM_ALIGN_RIGHT + textalignx 187 + maxPaintChars 20 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + + itemDef { + name shoot + group grpControls + type ITEM_TYPE_BIND + text "Grenade Launcher:" + cvar "weapon 4" + rect 0 180 320 15 + textalign ITEM_ALIGN_RIGHT + textalignx 187 + maxPaintChars 20 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + + itemDef { + name shoot + group grpControls + type ITEM_TYPE_BIND + text "Rocket Launcher:" + cvar "weapon 5" + rect 0 195 320 15 + textalign ITEM_ALIGN_RIGHT + textalignx 187 + maxPaintChars 20 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + + itemDef { + name shoot + group grpControls + type ITEM_TYPE_BIND + text "Lightning Gun:" + cvar "weapon 6" + rect 0 210 320 15 + textalign ITEM_ALIGN_RIGHT + textalignx 187 + maxPaintChars 20 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + + itemDef { + name shoot + group grpControls + type ITEM_TYPE_BIND + text "Railgun:" + cvar "Weapon 7" + rect 0 225 320 15 + textalign ITEM_ALIGN_RIGHT + textalignx 187 + maxPaintChars 20 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + itemDef { + name shoot + group grpControls + type ITEM_TYPE_BIND + text "Plasma Gun:" + cvar "weapon 8" + rect 0 240 320 15 + textalign ITEM_ALIGN_RIGHT + textalignx 187 + maxPaintChars 20 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + itemDef { + name shoot + group grpControls + type ITEM_TYPE_BIND + text "BFG:" + cvar "weapon 9" + rect 0 255 320 15 + textalign ITEM_ALIGN_RIGHT + textalignx 187 + maxPaintChars 20 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + + itemDef { + name shoot + group grpControls + type ITEM_TYPE_BIND + text "Nail Gun:" + cvar "weapon 11" + rect 0 270 320 15 + textalign ITEM_ALIGN_RIGHT + textalignx 187 + maxPaintChars 20 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + + itemDef { + name shoot + group grpControls + type ITEM_TYPE_BIND + text "Proximity Mine:" + cvar "weapon 12" + rect 0 285 320 15 + textalign ITEM_ALIGN_RIGHT + textalignx 187 + maxPaintChars 20 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + + itemDef { + name shoot + group grpControls + type ITEM_TYPE_BIND + text "Chain Gun:" + cvar "weapon 13" + rect 0 300 320 15 + textalign ITEM_ALIGN_RIGHT + textalignx 187 + maxPaintChars 20 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + + +itemDef { + name ctr_miscellaneous + text "Misc" + type 1 + textscale .25 + group grpControlbutton + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + rect 190 25 50 20 + textalign 1 + textalignx 25 + textaligny 16 + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + visible 1 + action { hide grpControls ; show misc } + mouseEnter { setitemcolor ctr_miscellaneous backcolor .1 .37 .1 1 } + mouseExit { setitemcolor ctr_miscellaneous backcolor .37 .1 .1 1 } + } + + itemDef { + name misc + group grpControls + type ITEM_TYPE_BIND + text "Show Scores:" + cvar "+scores" + rect 0 75 320 15 + textalign ITEM_ALIGN_RIGHT + textalignx 187 + maxPaintChars 20 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + itemDef { + name misc + group grpControls + type ITEM_TYPE_BIND + text "Scroll Scores Up:" + cvar "scoresUp" + rect 0 90 320 15 + textalign ITEM_ALIGN_RIGHT + textalignx 187 + maxPaintChars 20 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + itemDef { + name misc + group grpControls + type ITEM_TYPE_BIND + text "Scroll Scores Down:" + cvar "scoresDown" + rect 0 105 320 15 + textalign ITEM_ALIGN_RIGHT + textalignx 187 + maxPaintChars 20 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + + itemDef { + name misc + group grpControls + type ITEM_TYPE_BIND + text "Use Item:" + cvar "+button2" + rect 0 120 320 15 + textalign ITEM_ALIGN_RIGHT + textalignx 187 + maxPaintChars 20 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + + + itemDef { + name misc + group grpControls + type ITEM_TYPE_SLIDER + text "Sensitivity:" + cvarfloat "sensitivity" 5 1 30 + rect 0 135 320 15 + textalign ITEM_ALIGN_RIGHT + textalignx 187 + maxPaintChars 20 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 0 + mouseenter { show slider_message } + mouseexit { hide slider_message } + } + + itemDef { + name misc + group grpControls + type ITEM_TYPE_YESNO + text "Invert Mouse:" + cvar "ui_mousePitch" + rect 0 150 320 15 + textalign ITEM_ALIGN_RIGHT + textalignx 187 + maxPaintChars 20 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 0 + action { uiScript update ui_mousePitch } + mouseenter { show yesno_message } + mouseexit { hide yesno_message } + } + + itemDef { + name misc + group grpControls + type ITEM_TYPE_YESNO + text "Smooth Mouse:" + cvar "m_filter" + rect 0 165 320 15 + textalign ITEM_ALIGN_RIGHT + textalignx 187 + maxPaintChars 20 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 0 + mouseenter { show yesno_message } + mouseexit { hide yesno_message } + } + + + +itemDef { + name ctr_orders + text "Orders" + type 1 + textscale .25 + group grpControlbutton + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + rect 245 25 50 20 + textalign 1 + textalignx 25 + textaligny 16 + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + visible 1 + action { hide grpControls ; show orders } + mouseEnter { setitemcolor ctr_orders backcolor .1 .37 .1 1 } + mouseExit { setitemcolor ctr_orders backcolor .37 .1 .1 1 } + } + + + + itemDef { + name orders + group grpControls + type ITEM_TYPE_BIND + text "Next Team Member:" + cvar "nextTeamMember" + rect 0 85 320 15 + textalign ITEM_ALIGN_RIGHT + textalignx 187 + maxPaintChars 20 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + itemDef { + name orders + group grpControls + type ITEM_TYPE_BIND + text "Next Team Order:" + cvar "nextOrder" + rect 0 100 320 15 + textalign ITEM_ALIGN_RIGHT + textalignx 187 + maxPaintChars 20 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + itemDef { + name orders + group grpControls + type ITEM_TYPE_BIND + text "Confirm Order:" + cvar "confirmOrder" + rect 0 115 320 15 + textalign ITEM_ALIGN_RIGHT + textalignx 187 + maxPaintChars 20 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + + itemDef { + name orders + group grpControls + type ITEM_TYPE_BIND + text "Deny Order:" + cvar "denyOrder" + rect 0 130 320 15 + textalign ITEM_ALIGN_RIGHT + textalignx 187 + maxPaintChars 20 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + + + itemDef { + name orders + group grpControls + type ITEM_TYPE_BIND + text "Offense:" + cvar "taskOffense" + rect 0 145 320 15 + textalign ITEM_ALIGN_RIGHT + textalignx 187 + maxPaintChars 20 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + + itemDef { + name orders + group grpControls + type ITEM_TYPE_BIND + text "Defense:" + cvar "taskDefense" + rect 0 160 320 15 + textalign ITEM_ALIGN_RIGHT + textalignx 187 + maxPaintChars 20 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 0 + } + + itemDef { + name orders + group grpControls + type ITEM_TYPE_BIND + text "Patrol:" + cvar "taskPatrol" + rect 0 175 320 15 + textalign ITEM_ALIGN_RIGHT + textalignx 187 + maxPaintChars 20 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + itemDef { + name orders + group grpControls + type ITEM_TYPE_BIND + text "Camp:" + cvar "taskCamp" + rect 0 190 320 15 + textalign ITEM_ALIGN_RIGHT + textalignx 187 + maxPaintChars 20 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + itemDef { + name orders + group grpControls + type ITEM_TYPE_BIND + text "Follow:" + cvar "taskFollow" + rect 0 205 320 15 + textalign ITEM_ALIGN_RIGHT + textalignx 187 + maxPaintChars 20 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + itemDef { + name orders + group grpControls + type ITEM_TYPE_BIND + text "Retrieve:" + cvar "taskRetrieve" + rect 0 220 320 15 + textalign ITEM_ALIGN_RIGHT + textalignx 187 + maxPaintChars 20 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + + itemDef { + name orders + group grpControls + type ITEM_TYPE_BIND + text "Escort:" + cvar "taskEscort" + rect 0 235 320 15 + textalign ITEM_ALIGN_RIGHT + textalignx 187 + textaligny 12 + maxPaintChars 20 + textscale .25 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + + itemDef { + name orders + group grpControls + type ITEM_TYPE_BIND + text "I Have the Flag!" + cvar "taskOwnFlag" + rect 0 250 320 15 + textalign ITEM_ALIGN_RIGHT + textalignx 187 + maxPaintChars 20 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + itemDef { + name orders + group grpControls + type ITEM_TYPE_BIND + text "Target Suicide" + cvar "taskSuicide" + rect 0 265 320 15 + textalign ITEM_ALIGN_RIGHT + textalignx 187 + maxPaintChars 20 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + +itemDef { + name ctr_chat + text "Chat" + type 1 + textscale .25 + group grpControlbutton + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + rect 300 25 50 20 + textalign 1 + textalignx 25 + textaligny 16 + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + visible 1 + action { hide grpControls ; show chat } + mouseEnter { setitemcolor ctr_chat backcolor .1 .37 .1 1 } + mouseExit { setitemcolor ctr_chat backcolor .37 .1 .1 1 } + } + itemDef { + name chat + group grpControls + type ITEM_TYPE_BIND + text "Gesture:" + cvar "+button3" + rect 0 75 320 15 + textalign ITEM_ALIGN_RIGHT + textalignx 187 + maxPaintChars 20 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + + itemDef { + name chat + group grpControls + type ITEM_TYPE_BIND + text "Chat:" + cvar "messagemode" + rect 0 90 320 15 + textalign ITEM_ALIGN_RIGHT + textalignx 187 + maxPaintChars 20 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + + itemDef { + name chat + group grpControls + type ITEM_TYPE_BIND + text "Team Chat:" + cvar "messagemode2" + rect 0 105 320 15 + textalign ITEM_ALIGN_RIGHT + textalignx 187 + maxPaintChars 20 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + + itemDef { + name chat + group grpControls + type ITEM_TYPE_BIND + text "Target Chat:" + cvar "messagemode3" + rect 0 120 320 15 + textalign ITEM_ALIGN_RIGHT + textalignx 187 + maxPaintChars 20 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 0 + } + + itemDef { + name chat + group grpControls + type ITEM_TYPE_BIND + text "Attack Chat:" + cvar "messagemode4" + rect 0 135 320 15 + textalign ITEM_ALIGN_RIGHT + textalignx 187 + maxPaintChars 20 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + +itemDef { + name chat + group grpControls + type ITEM_TYPE_BIND + text "Voice Taunt:" + cvar "tauntTaunt" + rect 0 150 320 15 + textalign ITEM_ALIGN_RIGHT + textalignx 187 + maxPaintChars 20 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 0 + mouseenter { show keyBindStatus } + mouseexit { hide keyBindStatus } + } + +itemDef { + name yesno_message + rect 0 55 300 15 + text "Select the Item to Toggle to Yes or No" + forecolor 1 .75 0 1 + textscale .20 + textalignx 187 + textalign 1 + textaligny 10 + visible 0 + decoration + } + +itemDef { + name slider_message + rect 0 55 300 15 + text "Drag the Slider to Increase and Decrease" + forecolor 1 .75 0 1 + textscale .20 + textalignx 187 + textalign 1 + textaligny 10 + visible 0 + decoration + } + + + + + +} + + +} diff --git a/ta_ui/ui/ingame_join.menu b/ta_ui/ui/ingame_join.menu new file mode 100644 index 00000000..3f0dd09a --- /dev/null +++ b/ta_ui/ui/ingame_join.menu @@ -0,0 +1,144 @@ +#include "ui/menudef.h" + + +{ +\\ INGAME_JOIN MENU \\ + + menuDef { + name "ingame_join" + visible 1 + fullScreen 0 + outOfBoundsClick // this closes the window if it gets a click out of the rectangle + rect 23 30 128 128 + focusColor 1 .75 0 1 + + +itemDef { + name team + style WINDOW_STYLE_FILLED + rect 10 15 108 113 + + forecolor 1 1 1 1 + backcolor 0 .1 0 1 + visible 1 + decoration + } + + + + + +// FRAME // + + +itemDef { + name window + rect 0 10 64 64 + style 3 + background "ui/assets/ingameleftcorner.tga" + visible 1 + decoration + } +itemDef { + name window + rect 64 10 64 64 + style 3 + background "ui/assets/ingamerightcorner.tga" + visible 1 + decoration + } +itemDef { + name window + rect 30 0 65 16 + style 3 + background "ui/assets/ingameconnection.tga" + visible 1 + decoration + } +itemDef { + name window + rect 0 64 64 64 + style 3 + background "ui/assets/ingameleftcornerb.tga" + visible 1 + decoration + } +itemDef { + name window + rect 64 64 64 64 + style 3 + background "ui/assets/ingamerightcornerb.tga" + visible 1 + decoration + } + + + + + +itemDef { + name team + text "Team RED" + type 1 + style 2 + rect 0 20 128 20 + textalign 1 + textalignx 64 + textaligny 18 + textscale .25 + forecolor 1 1 1 1 + visible 1 + action { exec "cmd team red" ; uiScript closeingame } + } + + itemDef { + name team + text "Team BLUE" + type 1 + style 2 + rect 0 40 128 20 + textalign 1 + textalignx 64 + textaligny 18 + textscale .25 + forecolor 1 1 1 1 + visible 1 + action { exec "cmd team blue" ; uiScript closeingame } + } + + + itemDef { + name team + text "Auto TEAM" + type 1 + style 2 + rect 0 60 128 20 + textalign 1 + textalignx 64 + textaligny 18 + textscale .25 + forecolor 1 1 1 1 + visible 1 + action { exec "cmd team free" ; uiScript closeingame } + } + + + itemDef { + name team + text "Spectate" + type 1 + style 2 + rect 0 80 128 20 + textalign 1 + textalignx 64 + textaligny 18 + textscale .25 + forecolor 1 1 1 1 + visible 1 + action { exec "cmd team s" ; uiScript closeingame } + } + + +} + +} \ No newline at end of file diff --git a/ta_ui/ui/ingame_leave.menu b/ta_ui/ui/ingame_leave.menu new file mode 100644 index 00000000..70f82971 --- /dev/null +++ b/ta_ui/ui/ingame_leave.menu @@ -0,0 +1,344 @@ +#include "ui/menudef.h" + + +{ +\\ INGAME_LEAVE MENU \\ + + menuDef { + name "ingame_leave" + visible 1 + fullScreen 0 + outOfBoundsClick // this closes the window if it gets a click out of the rectangle + rect 511 30 128 125 + focusColor 1 .75 0 1 + onOpen { show grpMenu ; hide grpConfirm } + + + +itemDef { + name leave + style WINDOW_STYLE_FILLED + rect 10 15 108 110 + backcolor 0 .1 0 1 + visible 1 + decoration + } + + +// FRAME // + + +itemDef { + name window + rect 0 10 64 64 + style 3 + background "ui/assets/ingameleftcorner.tga" + visible 1 + decoration + } + +itemDef { + name window + rect 112 10 16 64 + style 3 + background "ui/assets/ingameright.tga" + visible 1 + decoration + } +itemDef { + name window + rect 64 0 63 16 + style 3 + background "ui/assets/ingameconnection.tga" + visible 1 + decoration + } + +itemDef { + name window + rect 0 64 64 64 + style 3 + background "ui/assets/ingameleftcornerb.tga" + visible 1 + decoration + } +itemDef { + name window + rect 64 64 64 64 + style 3 + background "ui/assets/ingamerightcornerb.tga" + visible 1 + decoration + } + + + +itemDef { + name leave + text "Main Menu" + group grpMenu + style 2 + rect 0 30 128 20 + type 1 + textalign 1 + textalignx 64 + textaligny 18 + textscale .25 + forecolor 1 1 1 1 + visible 1 + action { hide grpMenu ; show leaveConfirm } + } + + itemDef { + name leave + group grpMenu + text "Restart" + style 2 + type 1 + rect 0 50 128 20 + textalign 1 + textalignx 65 + textaligny 18 + textscale .25 + forecolor 1 1 1 1 + visible 1 + action { hide grpMenu ; show restartConfirm } + } + + itemDef { + name leave + group grpMenu + type 1 + text "Quit" + style 2 + rect 0 70 128 20 + textalign 1 + textalignx 64 + textaligny 18 + textscale .25 + forecolor 1 1 1 1 + visible 1 + action { hide grpMenu ; show quitConfirm } + } + + +// CONFIRMS // + + +itemDef { + name leaveConfirm + text "Exit to" + group grpConfirm + style 2 + rect 0 33 128 20 + textalign 1 + textalignx 64 + textaligny 18 + textscale .25 + decoration + forecolor 1 1 1 1 + visible 1 + } +itemDef { + name leaveConfirm + text "Main Menu?" + group grpConfirm + style 2 + rect 0 50 128 20 + textalign 1 + textalignx 64 + textaligny 18 + textscale .25 + decoration + forecolor 1 1 1 1 + visible 1 + } + + +itemDef { + name leaveConfirm + text "Yes" + group grpConfirm + type 1 + textscale .25 + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + rect 18 80 40 20 + textalign 1 + textalignx 20 + textaligny 15 + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + visible 1 + action { uiScript leave } + mouseEnter { setitemcolor ok backcolor .1 .37 .1 1 } + mouseExit { setitemcolor ok backcolor .37 .1 .1 1 } + } + +itemDef { + name leaveConfirm + text "No" + group grpConfirm + type 1 + textscale .25 + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + rect 70 80 40 20 + textalign 1 + textalignx 20 + textaligny 15 + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + visible 1 + action { hide grpConfirm ; show grpMenu } + mouseEnter { setitemcolor ok backcolor .1 .37 .1 1 } + mouseExit { setitemcolor ok backcolor .37 .1 .1 1 } + } + + +itemDef { + name restartConfirm + text "Want to" + group grpConfirm + style 2 + rect 0 33 128 20 + textalign 1 + textalignx 64 + textaligny 18 + textscale .25 + decoration + forecolor 1 1 1 1 + visible 1 + } +itemDef { + name restartConfirm + text "Restart Map?" + group grpConfirm + style 2 + rect 0 50 128 20 + textalign 1 + textalignx 64 + textaligny 18 + textscale .25 + decoration + forecolor 1 1 1 1 + visible 1 + } + + + +itemDef { + name restartConfirm + text "Yes" + group grpConfirm + type 1 + textscale .25 + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + rect 18 80 40 20 + textalign 1 + textalignx 20 + textaligny 15 + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + visible 1 + action { exec "map_restart" ; close ingame_leave ; close ingame } + mouseEnter { setitemcolor ok backcolor .1 .37 .1 1 } + mouseExit { setitemcolor ok backcolor .37 .1 .1 1 } + } + +itemDef { + name restartConfirm + text "No" + group grpConfirm + type 1 + textscale .25 + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + rect 70 80 40 20 + textalign 1 + textalignx 20 + textaligny 15 + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + visible 1 + action { hide grpConfirm ; show grpMenu } + mouseEnter { setitemcolor ok backcolor .1 .37 .1 1 } + mouseExit { setitemcolor ok backcolor .37 .1 .1 1 } + } + +itemDef { + name quitConfirm + text "Want to" + group grpConfirm + style 2 + rect 0 33 128 20 + textalign 1 + textalignx 64 + textaligny 18 + textscale .25 + forecolor 1 1 1 1 + decoration + visible 1 + } +itemDef { + name quitConfirm + text "Quit Game?" + group grpConfirm + style 2 + rect 0 50 128 20 + textalign 1 + textalignx 64 + textaligny 18 + textscale .25 + forecolor 1 1 1 1 + decoration + visible 1 + } + + +itemDef { + name quitConfirm + text "Yes" + group grpConfirm + type 1 + textscale .25 + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + rect 18 80 40 20 + textalign 1 + textalignx 20 + textaligny 15 + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + visible 1 + action { uiScript quit } + mouseEnter { setitemcolor ok backcolor .1 .37 .1 1 } + mouseExit { setitemcolor ok backcolor .37 .1 .1 1 } + } + +itemDef { + name quitConfirm + text "No" + group grpConfirm + type 1 + textscale .25 + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + rect 70 80 40 20 + textalign 1 + textalignx 20 + textaligny 15 + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + visible 1 + action { hide grpConfirm ; show grpMenu } + mouseEnter { setitemcolor ok backcolor .1 .37 .1 1 } + mouseExit { setitemcolor ok backcolor .37 .1 .1 1 } + } + + + +} + +} \ No newline at end of file diff --git a/ta_ui/ui/ingame_options.menu b/ta_ui/ui/ingame_options.menu new file mode 100644 index 00000000..b369e3b5 --- /dev/null +++ b/ta_ui/ui/ingame_options.menu @@ -0,0 +1,469 @@ +#include "ui/menudef.h" + +{ +\\ SETUP MENU \\ + +menuDef { + name "ingame_options" + visible 0 + fullscreen 0 + outOfBoundsClick // this closes the window if it gets a click out of the rectangle + rect 265 30 210 375 + focusColor 1 .75 0 1 + style 1 + border 1 + disableColor .5 .5 .5 0 + +itemDef { + name window + rect 10 15 200 360 + style 1 + backcolor 0 .1 0 1 + visible 1 + decoration + } + +// FRAME // + + +itemDef { + name window + rect 0 10 64 64 + style 3 + background "ui/assets/ingameleftcorner.tga" + visible 1 + decoration + } +itemDef { + name window + rect 64 10 32 8 + style 3 + background "ui/assets/ingametop.tga" + visible 1 + decoration + } +itemDef { + name window + rect 144 10 32 8 + style 3 + background "ui/assets/ingametop.tga" + visible 1 + decoration + } + +itemDef { + name window + rect 157 10 64 64 + style 3 + background "ui/assets/ingamerightcorner.tga" + visible 1 + decoration + } +itemDef { + name window + rect 74 0 73 16 + style 3 + background "ui/assets/ingameconnection.tga" + visible 1 + decoration + } +itemDef { + name window + rect 0 314 64 64 + style 3 + background "ui/assets/ingameleftcornerb.tga" + visible 1 + decoration + } +itemDef { + name window + rect 157 314 64 64 + style 3 + background "ui/assets/ingamerightcornerb.tga" + visible 1 + decoration + } + +itemDef { + name window + rect 0 64 16 84 + style 3 + background "ui/assets/ingameleft.tga" + visible 1 + decoration + } + + +itemDef { + name window + rect 0 148 16 84 + style 3 + background "ui/assets/ingameleft.tga" + visible 1 + decoration + } + +itemDef { + name window + rect 0 232 16 84 + style 3 + background "ui/assets/ingameleft.tga" + visible 1 + decoration + } + +itemDef { + name window + rect 205 64 16 84 + style 3 + background "ui/assets/ingameright.tga" + visible 1 + decoration + } + + +itemDef { + name window + rect 205 148 16 84 + style 3 + background "ui/assets/ingameright.tga" + visible 1 + decoration + } +itemDef { + name window + rect 205 232 16 84 + style 3 + background "ui/assets/ingameright.tga" + visible 1 + decoration + } + + +itemDef { + name window + rect 64 370 64 8 + style 3 + background "ui/assets/ingamebottom.tga" + visible 1 + decoration + } +itemDef { + name window + rect 128 370 64 8 + style 3 + background "ui/assets/ingamebottom.tga" + visible 1 + decoration + } + + + +itemDef { + name options + group grpOptions + type ITEM_TYPE_YESNO + text "Simple Items:" + cvar "cg_simpleItems" + rect 0 20 200 20 + textalign ITEM_ALIGN_RIGHT + textalignx 143 + textaligny 17 + textscale .25 + forecolor 1 1 1 1 + visible 1 + } + + itemDef { + name options + group grpOptions + type ITEM_TYPE_YESNO + text "Marks On Walls:" + cvar "cg_marks" + rect 0 37 200 20 + textalign ITEM_ALIGN_RIGHT + textalignx 143 + textaligny 17 + textscale .25 + forecolor 1 1 1 1 + visible 1 + } + itemDef { + name options + group grpOptions + type ITEM_TYPE_YESNO + text "Show Floating Scores:" + cvar "cg_scorePlums" + rect 0 54 200 20 + textalign ITEM_ALIGN_RIGHT + textalignx 143 + textaligny 17 + textscale .25 + forecolor 1 1 1 1 + visible 1 + } + + itemDef { + name options + group grpOptions + type ITEM_TYPE_MULTI + text "Ejecting Brass:" + cvar "cg_brassTime" + cvarFloatList { "High" 2500 "Med" 1250 "Off" 0 } + rect 0 71 200 20 + textalign ITEM_ALIGN_RIGHT + textalignx 143 + textaligny 17 + textscale .25 + forecolor 1 1 1 1 + visible 1 + } + + itemDef { + name options + group grpOptions + type ITEM_TYPE_YESNO + text "Dynamic Lights:" + cvar "r_dynamiclight" + rect 0 88 200 20 + textalign ITEM_ALIGN_RIGHT + textalignx 143 + textaligny 17 + textscale .25 + forecolor 1 1 1 1 + visible 1 + } + + itemDef { + name options + group grpOptions + type ITEM_TYPE_YESNO + text "Identify Target:" + cvar "cg_drawCrosshairNames" + rect 0 105 200 20 + textalign ITEM_ALIGN_RIGHT + textalignx 143 + textaligny 17 + textscale .25 + forecolor 1 1 1 1 + visible 1 + } + + itemDef { + name options + group grpOptions + type ITEM_TYPE_YESNO + text "Draw Gun:" + cvar "cg_drawGun" + rect 0 122 200 20 + textalign ITEM_ALIGN_RIGHT + textalignx 143 + textaligny 17 + textscale .25 + forecolor 1 1 1 1 + visible 1 + } + + itemDef { + name options + group grpOptions + type ITEM_TYPE_YESNO + text "Low Quality Sky:" + cvar "r_fastsky" + rect 0 139 200 20 + textalign ITEM_ALIGN_RIGHT + textalignx 143 + textaligny 17 + textscale .25 + forecolor 1 1 1 1 + visible 1 + } + + itemDef { + name options + group grpOptions + type ITEM_TYPE_YESNO + text "Sync Every Frame:" + cvar "weapon 5" + rect 0 156 200 20 + textalign ITEM_ALIGN_RIGHT + textalignx 143 + textaligny 17 + textscale .25 + forecolor 1 1 1 1 + visible 1 + } + + itemDef { + name options + group grpOptions + type ITEM_TYPE_YESNO + text "Force Player Models:" + cvar "cg_forceModel" + rect 0 173 200 20 + textalign ITEM_ALIGN_RIGHT + textalignx 143 + textaligny 17 + textscale .25 + forecolor 1 1 1 1 + visible 1 + } + + itemDef { + name options + group grpOptions + type ITEM_TYPE_YESNO + text "Draw Team Overlay:" + cvar "cg_drawTeamOverlay" + rect 0 190 200 20 + textalign ITEM_ALIGN_RIGHT + textalignx 143 + textaligny 17 + textscale .25 + forecolor 1 1 1 1 + visible 1 + } + itemDef { + name options + group grpOptions + type ITEM_TYPE_YESNO + text "Auto Download:" + cvar "cl_allowDownload" + rect 0 207 200 20 + textalign ITEM_ALIGN_RIGHT + textalignx 143 + textaligny 17 + textscale .25 + forecolor 1 1 1 1 + visible 1 + } + itemDef { + name options + group grpOptions + type ITEM_TYPE_YESNO + text "Show Time:" + cvar "cg_drawTimer" + rect 0 224 200 20 + textalign ITEM_ALIGN_RIGHT + textalignx 143 + textaligny 17 + textscale .25 + forecolor 1 1 1 1 + visible 1 + } +itemDef { + name options + group grpOptions + type ITEM_TYPE_YESNO + text "Voices Off:" + cvar "cg_NoVoiceChats" + rect 0 241 200 20 + textalign ITEM_ALIGN_RIGHT + textalignx 143 + textaligny 17 + textscale .25 + forecolor 1 1 1 1 + visible 1 + } +itemDef { + name options + group grpOptions + type ITEM_TYPE_YESNO + text "Taunts Off:" + cvar "cg_noTaunt" + rect 0 258 200 20 + textalign ITEM_ALIGN_RIGHT + textalignx 143 + textaligny 17 + textscale .25 + forecolor 1 1 1 1 + visible 1 + } +itemDef { + name options + group grpOptions + type ITEM_TYPE_YESNO + text "Voice Text Off:" + cvar "cg_noVoiceText" + rect 0 275 200 20 + textalign ITEM_ALIGN_RIGHT + textalignx 143 + textaligny 17 + textscale .25 + forecolor 1 1 1 1 + visible 1 + } + +itemDef { + name options + group grpOptions + type ITEM_TYPE_YESNO + text "Team Chats Only:" + cvar "cg_teamChatsOnly" + rect 0 292 200 20 + textalign ITEM_ALIGN_RIGHT + textalignx 143 + textaligny 17 + textscale .25 + forecolor 1 1 1 1 + visible 1 + } + +itemDef { + name options + group grpOptions + type ITEM_TYPE_MULTI + text "Statusbar:" + cvar "cg_hudfiles" + cvarStrList { Normal "ui/hud.txt" Small "ui/hud2.txt" } + rect 0 309 200 20 + textalign ITEM_ALIGN_RIGHT + textalignx 143 + textaligny 17 + textscale .25 + forecolor 1 1 1 1 + visible 1 + action { exec "loadhud" } + } + +itemDef { + name options + group grpOptions + type ITEM_TYPE_YESNO + text "In Game Videos:" + cvar "r_inGameVideo" + rect 0 326 200 20 + textalign ITEM_ALIGN_RIGHT + textalignx 143 + textaligny 17 + textscale .25 + forecolor 1 1 1 1 + visible 1 + } + + +itemDef { + name options + group grpOptions + text "Crosshair:" + ownerdraw UI_CROSSHAIR + rect 143 343 20 17 + textalign ITEM_ALIGN_RIGHT + textalignx 0 + textaligny 17 + textscale .25 + forecolor 1 1 1 1 + visible 1 + } + + + + + + + + +} + + +} diff --git a/ta_ui/ui/ingame_orders.menu b/ta_ui/ui/ingame_orders.menu new file mode 100644 index 00000000..d5b2c389 --- /dev/null +++ b/ta_ui/ui/ingame_orders.menu @@ -0,0 +1,481 @@ +#include "ui/menudef.h" + +{ +\\ SETUP MENU \\ + +menuDef { + name "ingame_orders" + visible 0 + fullscreen 0 + rect 45 30 200 240 + outOfBoundsClick // this closes the window if it gets a click out of the rectangle + focusColor 1 .75 0 1 + style 1 + border 1 + disableColor .5 .5 .5 1 + onopen { hide grpicon ; show attack } + +itemDef { + name window + rect 10 15 180 225 + style 1 + backcolor 0 .1 0 1 + visible 1 + decoration + } + + +// FRAME // + + +itemDef { + name window + rect 0 10 64 64 + style 3 + background "ui/assets/ingameleftcorner.tga" + visible 1 + decoration + } +itemDef { + name window + rect 136 10 64 64 + style 3 + background "ui/assets/ingamerightcorner.tga" + visible 1 + decoration + } +itemDef { + name window + rect 64 0 72 16 + style 3 + background "ui/assets/ingameconnection.tga" + visible 1 + decoration + } +itemDef { + name window + rect 0 177 64 64 + style 3 + background "ui/assets/ingameleftcornerb.tga" + visible 1 + decoration + } +itemDef { + name window + rect 136 177 64 64 + style 3 + background "ui/assets/ingamerightcornerb.tga" + visible 1 + decoration + } +itemDef { + name window + rect 0 64 16 64 + style 3 + background "ui/assets/ingameleft.tga" + visible 1 + decoration + } +itemDef { + name window + rect 0 128 16 64 + style 3 + background "ui/assets/ingameleft.tga" + visible 1 + decoration + } + +itemDef { + name window + rect 184 64 16 64 + style 3 + background "ui/assets/ingameright.tga" + visible 1 + decoration + } +itemDef { + name window + rect 184 128 16 64 + style 3 + background "ui/assets/ingameright.tga" + visible 1 + decoration + } +itemDef { + name window + rect 64 233 96 8 + style 3 + background "ui/assets/ingamebottom.tga" + visible 1 + decoration + } + + + +itemDef { + name orders + group grporders + text "Name:" + style 0 + ownerdraw UI_SELECTEDPLAYER + // As cycle through playerlist selected player in HUD cycles // + rect 10 20 200 20 + textalign 0 + textalignx 10 + textaligny 17 + textscale .25 + forecolor 1 1 1 1 + visible 1 + } + +// COMMAND ICONS // + + itemDef { + name attack + group grpicon + style 3 + rect 84 45 32 32 + background "ui/assets/statusbar/assault.tga" + visible 0 + } + itemDef { + name defend + group grpicon + style 3 + rect 84 45 32 32 + background "ui/assets/statusbar/defend.tga" + visible 0 + } + itemDef { + name patrol + group grpicon + style 3 + rect 84 45 32 32 + background "ui/assets/statusbar/patrol.tga" + visible 0 + } + itemDef { + name follow + group grpicon + style 3 + rect 84 45 32 32 + background "ui/assets/statusbar/follow.tga" + visible 0 + } + itemDef { + name camp + group grpicon + style 3 + rect 84 45 32 32 + background "ui/assets/statusbar/camp.tga" + visible 0 + } + itemDef { + name leader + group grpicon + style 3 + rect 84 45 32 32 + background "ui/assets/statusbar/team_leader.tga" + visible 0 + } +itemDef { + name retrieve + group grpicon + style 3 + rect 84 45 32 32 + background "ui/assets/statusbar/retrieve.tga" + visible 0 + } +itemDef { + name escort + group grpicon + style 3 + rect 84 45 32 32 + background "ui/assets/statusbar/escort.tga" + visible 0 + } + + + + + +// GIVE ORDERS TO OTHERS // + + + + itemDef { + name orders + group grporders + text "Attack Enemy Base" + rect 0 80 200 20 + type 1 + textalign 1 + textalignx 100 + textaligny 17 + textscale .25 + forecolor 1 1 1 1 + visible 1 + mouseenter { hide grpicon ; show attack } + action { + uiScript voiceOrders "cmd vtell %d offense; +button7; wait; -button7" + uiScript voiceOrdersTeam "cmd vsay_team offense; +button7; wait; -button7" + } + ownerdrawflag UI_SHOW_LEADER + } + + itemDef { + name orders + group grporders + type 1 + text "Defend Our Base" + rect 0 100 200 20 + textalign 1 + textalignx 100 + textaligny 17 + textscale .25 + forecolor 1 1 1 1 + visible 1 + mouseenter { hide grpicon ; show defend } + action { + uiScript voiceOrders "cmd vtell %d defend; +button8; wait; -button8" + uiScript voiceOrdersTeam "cmd vsay_team defend; +button8; wait; -button8" + } + ownerdrawflag UI_SHOW_LEADER + } + + itemDef { + name orders + group grporders + type 1 + text "Patrol" + rect 0 120 200 20 + textalign 1 + textalignx 100 + textaligny 17 + textscale .25 + forecolor 1 1 1 1 + visible 1 + mouseenter { hide grpicon ; show patrol } + action { + uiScript voiceOrders "cmd vtell %d patrol; +button9; wait; -button9" + uiScript voiceOrdersTeam "cmd vsay_team patrol; +button9; wait; -button9" + } + ownerdrawflag UI_SHOW_LEADER + } + + itemDef { + name orders + group grporders + type 1 + text "Follow Me" + rect 0 140 200 20 + textalign 1 + textalignx 100 + textaligny 17 + textscale .25 + forecolor 1 1 1 1 + visible 1 + mouseenter { hide grpicon ; show follow } + action { + uiScript voiceOrders "cmd vtell %d followme; +button10; wait; -button10" + uiScript voiceOrdersTeam "cmd vsay_team followme; +button10; wait; -button10" + } + ownerdrawflag UI_SHOW_LEADER + } + itemDef { + name orders + group grporders + text "Camp Here" + type 1 + rect 0 160 200 20 + textalign 1 + textalignx 100 + textaligny 17 + textscale .25 + forecolor 1 1 1 1 + visible 1 + mouseenter { hide grpicon ; show camp } + action { + uiScript voiceOrders "cmd vtell %d camp" + uiScript voiceOrdersTeam "cmd vsay_team camp" + } + ownerdrawflag UI_SHOW_LEADER + } + itemDef { + name orders + group grporders + type 1 + text "Escort the Carrier" + rect 0 180 200 20 + textalign 1 + textalignx 100 + textaligny 17 + textscale .25 + forecolor 1 1 1 1 + visible 1 + cvarTest "g_gametype" + hideCvar { "6" ; "7" } + mouseenter { hide grpicon ; show escort } + action { + uiScript voiceOrders "cmd vtell %d followflagcarrier" + uiScript voiceOrdersTeam "cmd vsay_team followflagcarrier" + } + ownerdrawflag UI_SHOW_LEADER + } + itemDef { + name orders + group grporders + type 1 + text "Retrieve Our Flag" + rect 0 200 200 20 + textalign 1 + textalignx 100 + textaligny 17 + textscale .25 + forecolor 1 1 1 1 + visible 1 + cvarTest "g_gametype" + hideCvar { "5" ; "6" ; "7" } + mouseenter { hide grpicon ; show retrieve } + action { + uiScript voiceOrders "cmd vtell %d returnflag" + uiScript voiceOrdersTeam "cmd vsay_team returnflag" + } + ownerdrawflag UI_SHOW_LEADER + } + + +// CHANGE YOUR STATUS // + + + + itemDef { + name orders + group grporders + text "I'M ATTACKING" + rect 0 80 200 20 + textalign 1 + textalignx 100 + type 1 + textaligny 17 + textscale .25 + forecolor 1 1 1 1 + visible 1 + mouseenter { hide grpicon ; show attack } + action { exec "teamtask 1 ; cmd vsay_team onoffense" ; uiScript closeingame } + ownerdrawflag UI_SHOW_NOTLEADER + } + + itemDef { + name orders + group grporders + text "I'M DEFENDING" + type 1 + rect 0 100 200 20 + textalign 1 + textalignx 100 + textaligny 17 + textscale .25 + forecolor 1 1 1 1 + visible 1 + mouseenter { hide grpicon ; show defend } + action { exec "teamtask 2 ; cmd vsay_team ondefense" ; uiScript closeingame } + ownerdrawflag UI_SHOW_NOTLEADER + } + + itemDef { + name orders + group grporders + type 1 + text "I'M PATROLLING" + rect 0 120 200 20 + textalign 1 + textalignx 100 + textaligny 17 + textscale .25 + forecolor 1 1 1 1 + visible 1 + mouseenter { hide grpicon ; show patrol } + action { exec "teamtask 3 ; cmd vsay_team onpatrol" ; uiScript closeingame } + ownerdrawflag UI_SHOW_NOTLEADER + } + + itemDef { + name orders + group grporders + text "I'M FOLLOWING" + type 1 + rect 0 140 200 20 + textalign 1 + textalignx 100 + textaligny 17 + textscale .25 + forecolor 1 1 1 1 + visible 1 + mouseenter { hide grpicon ; show follow } + action { exec "teamtask 4 ; cmd vsay_team onfollow" ; uiScript closeingame } + ownerdrawflag UI_SHOW_NOTLEADER + } + itemDef { + name orders + group grporders + text "I'M CAMPING" + rect 0 160 200 20 + type 1 + textalign 1 + textalignx 100 + textaligny 17 + textscale .25 + forecolor 1 1 1 1 + visible 1 + mouseenter { hide grpicon ; show camp } + action { exec "teamtask 7 ; cmd vsay_team oncamp" ; uiScript closeingame } + ownerdrawflag UI_SHOW_NOTLEADER + } + itemDef { + name orders + group grporders + text "I'M ESCORTING" + type 1 + rect 0 180 200 20 + textalign 1 + textalignx 100 + textaligny 17 + textscale .25 + forecolor 1 1 1 1 + cvarTest "g_gametype" + hideCvar { "6" ; "7" } + visible 1 + mouseenter { hide grpicon ; show retrieve } + action { exec "teamtask 6 ; cmd vsay_team onfollowcarrier" ; uiScript closeingame } + ownerdrawflag UI_SHOW_NOTLEADER + } + itemDef { + name orders + group grporders + text "I'M RETRIEVING" + type 1 + rect 0 200 200 20 + textalign 1 + textalignx 100 + textaligny 17 + textscale .25 + forecolor 1 1 1 1 + visible 1 + cvarTest "g_gametype" + hideCvar { "5" ; "6" ; "7" } + mouseenter { hide grpicon ; show escort } + action { exec "teamtask 5 ; cmd vsay_team onreturnflag" ; uiScript closeingame } + ownerdrawflag UI_SHOW_NOTLEADER + } + + + + + + + +} + + +} diff --git a/ta_ui/ui/ingame_orders2.menu b/ta_ui/ui/ingame_orders2.menu new file mode 100644 index 00000000..82bcfc68 --- /dev/null +++ b/ta_ui/ui/ingame_orders2.menu @@ -0,0 +1,199 @@ +#include "ui/menudef.h" + +{ +\\ SETUP MENU \\ + +menuDef { + name "ingame_orders" + visible 0 + fullscreen 0 + rect 45 30 200 240 + outOfBoundsClick // this closes the window if it gets a click out of the rectangle + focusColor 1 .75 0 1 + style 1 + border 1 + +itemDef { + name window + rect 0 0 200 240 + style 1 + border 1 + bordercolor .5 .5 .5 1 + backcolor 0 0 .75 .25 + visible 1 + decoration + } + + +itemDef { + name orders + group grporders + type ITEM_TYPE_YESNO + text "Name:" + cvar "+weapprev" + rect 0 5 200 20 + textalign ITEM_ALIGN_RIGHT + textalignx 80 + textaligny 17 + textscale .25 + forecolor 1 1 1 1 + visible 1 + } + + itemDef { + name orders + group grporders + type ITEM_TYPE_YESNO + text "Follow:" + cvar "weapnext" + rect 0 25 200 20 + textalign ITEM_ALIGN_RIGHT + textalignx 80 + textaligny 17 + textscale .25 + forecolor 1 1 1 1 + visible 1 + } + + itemDef { + name orders + group grporders + type ITEM_TYPE_YESNO + text "Go To:" + cvar "cg_autoswitch" + rect 0 45 200 20 + textalign ITEM_ALIGN_RIGHT + textalignx 80 + textaligny 17 + textscale .25 + forecolor 1 1 1 1 + visible 1 + } + + itemDef { + name orders + group grporders + type ITEM_TYPE_YESNO + text "Get:" + cvar "weapon 1" + rect 0 65 200 20 + textalign ITEM_ALIGN_RIGHT + textalignx 80 + textaligny 17 + textscale .25 + forecolor 1 1 1 1 + visible 1 + } + + itemDef { + name orders + group grporders + type ITEM_TYPE_YESNO + text "Patrol From:" + cvar "weapon 2" + rect 0 85 200 20 + textalign ITEM_ALIGN_RIGHT + textalignx 80 + textaligny 17 + textscale .25 + forecolor 1 1 1 1 + visible 1 + } + + itemDef { + name orders + group grporders + type ITEM_TYPE_YESNO + text "Patrol To:" + cvar "weapon 3" + rect 0 105 200 20 + textalign ITEM_ALIGN_RIGHT + textalignx 80 + textaligny 17 + textscale .25 + forecolor 1 1 1 1 + visible 1 + } + + itemDef { + name orders + group grporders + type ITEM_TYPE_YESNO + text "Camp Near:" + cvar "weapon 4" + rect 0 125 200 20 + textalign ITEM_ALIGN_RIGHT + textalignx 80 + textaligny 17 + textscale .25 + forecolor 1 1 1 1 + visible 1 + } + + itemDef { + name orders + group grporders + type ITEM_TYPE_YESNO + text "Defend:" + cvar "weapon 5" + rect 0 145 200 20 + textalign ITEM_ALIGN_RIGHT + textalignx 80 + textaligny 17 + textscale .25 + forecolor 1 1 1 1 + visible 1 + } + + itemDef { + name orders + group grporders + type ITEM_TYPE_YESNO + text "Attack:" + cvar "weapon 6" + rect 0 165 200 20 + textalign ITEM_ALIGN_RIGHT + textalignx 80 + textaligny 17 + textscale .25 + forecolor 1 1 1 1 + visible 1 + } + + itemDef { + name orders + group grporders + type ITEM_TYPE_YESNO + text "Leader:" + cvar "Weapon 7" + rect 0 185 200 20 + textalign ITEM_ALIGN_RIGHT + textalignx 80 + textaligny 17 + textscale .25 + forecolor 1 1 1 1 + visible 1 + } + + +itemDef { + name ok + text "OK" + textscale .25 + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/button_red.tga" + rect 75 215 50 20 + textalign 1 + textalignx 25 + textaligny 15 + forecolor 1 1 1 1 + visible 1 + action { close ingame_orders ; close ingame ; open ingame } + } + + +} + + +} diff --git a/ta_ui/ui/ingame_player.menu b/ta_ui/ui/ingame_player.menu new file mode 100644 index 00000000..874d22a0 --- /dev/null +++ b/ta_ui/ui/ingame_player.menu @@ -0,0 +1,259 @@ +#include "ui/menudef.h" + +{ +\\ SETUP MENU \\ + +menuDef { + name "ingame_player" + visible 0 + fullscreen 0 + outOfBoundsClick // this closes the window if it gets a click out of the rectangle + rect 125 30 290 170 + focusColor 1 .75 0 1 + style 1 + border 1 + onOpen { uiScript update "ui_GetName" } + onClose { uiScript update "ui_SetName" } + + +itemDef { + name window + rect 10 15 270 155 + style 1 + backcolor 0 .1 0 1 + visible 1 + decoration + } + + +// FRAME // + + +itemDef { + name window + rect 0 10 64 64 + style 3 + background "ui/assets/ingameleftcorner.tga" + visible 1 + decoration + } +itemDef { + name window + rect 64 10 64 8 + style 3 + background "ui/assets/ingametop.tga" + visible 1 + decoration + } +itemDef { + name window + rect 168 10 64 8 + style 3 + background "ui/assets/ingametop.tga" + visible 1 + decoration + } +itemDef { + name window + rect 226 10 64 64 + style 3 + background "ui/assets/ingamerightcorner.tga" + visible 1 + decoration + } +itemDef { + name window + rect 104 0 64 16 + style 3 + background "ui/assets/ingameconnection.tga" + visible 1 + decoration + } +itemDef { + name window + rect 0 108 64 64 + style 3 + background "ui/assets/ingameleftcornerb.tga" + visible 1 + decoration + } +itemDef { + name window + rect 226 108 64 64 + style 3 + background "ui/assets/ingamerightcornerb.tga" + visible 1 + decoration + } + +itemDef { + name window + rect 0 64 16 64 + style 3 + background "ui/assets/ingameleft.tga" + visible 1 + decoration + } + +itemDef { + name window + rect 274 64 16 64 + style 3 + background "ui/assets/ingameright.tga" + visible 1 + decoration + } + + + +itemDef { + name window + rect 64 164 64 8 + style 3 + background "ui/assets/ingamebottom.tga" + visible 1 + decoration + } +itemDef { + name window + rect 128 164 98 8 + style 3 + background "ui/assets/ingamebottom.tga" + visible 1 + decoration + } + + + +itemDef { + name namefield + group "playersettinggroup" + type ITEM_TYPE_EDITFIELD + style 0 + text "Name:" + cvar "ui_Name" + maxchars 26 + rect 20 25 256 20 + textalign ITEM_ALIGN_LEFT + textalignx 10 + textaligny 18 + textscale .25 + outlinecolor 1 .5 .5 .5 + backcolor 0 0 0 0 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 1 +} + +itemDef { + name handicapfield + group "playersettinggroup" + style 0 + text "Handicap:" + ownerdraw UI_HANDICAP + rect 20 45 256 20 + textalign ITEM_ALIGN_LEFT + textalignx 10 + textaligny 18 + textscale .25 + outlinecolor 1 .5 .5 .5 + backcolor 0 0 0 0 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 1 + } + +itemDef { + name effectentry + group "playersettinggroup" + text "Effect:" + type 1 + style 0 + rect 20 65 256 20 + textalign ITEM_ALIGN_LEFT + textalignx 10 + textaligny 18 + textscale .25 + outlinecolor 1 .5 .5 .5 + backcolor 0 0 0 0 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 1 + decoration + mouseEnterText { setitemcolor effectentry forecolor 1 .75 0 1 ; setfocus effectfield ; show message_effect } + mouseExitText { setitemcolor playersettinggroup forecolor 1 1 1 1 ; hide message_effect } + } + +itemDef { + name effectfield + group "playersettinggroup" + style 0 + ownerdraw UI_EFFECTS + rect 20 65 256 20 + textalign ITEM_ALIGN_LEFT + textalignx 50 + textaligny 25 + outlinecolor 1 .5 .5 .5 + backcolor 0 0 0 0 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 1 + } + +itemDef { + name headlist + rect 15 100 260 50 + type ITEM_TYPE_LISTBOX + style WINDOW_STYLE_FILLED + elementwidth 32 + elementheight 32 + elementtype LISTBOX_IMAGE + feeder FEEDER_HEADS + horizontalscroll + backcolor 0 0 0 1 + border 1 + bordercolor .5 .5 .5 1 + forecolor 1 1 1 1 + visible 1 + cvarTest "g_gametype" + showCvar { "3" ; "4" ; "5" ; "6" ; "7" ; "8" } + mouseenter { setitemcolor headlist bordercolor 1 0 0 1 } + mouseexit { setitemcolor headlist bordercolor .5 .5 .5 1 } + } + +itemDef { + name headlist + rect 15 100 260 50 + type ITEM_TYPE_LISTBOX + style WINDOW_STYLE_FILLED + elementwidth 32 + elementheight 32 + elementtype LISTBOX_IMAGE + feeder FEEDER_Q3HEADS + horizontalscroll + backcolor 0 0 0 1 + border 1 + bordercolor .5 .5 .5 1 + forecolor 1 1 1 1 + visible 1 + cvarTest "g_gametype" + showCvar { "0" ; "1" } + mouseenter { setitemcolor headlist bordercolor 1 0 0 1 } + mouseexit { setitemcolor headlist bordercolor .5 .5 .5 1 } + } + + + + + + + + +} + + +} diff --git a/ta_ui/ui/ingame_scoreffa.menu b/ta_ui/ui/ingame_scoreffa.menu new file mode 100644 index 00000000..c0b13fa2 --- /dev/null +++ b/ta_ui/ui/ingame_scoreffa.menu @@ -0,0 +1,452 @@ +#include "ui/menudef.h" + +{ +\\ score_menu \\ + + menuDef { + name "teamscore_menu" + visible 0 + fullscreen 1 + rect 0 0 640 480 + background uibackground4 + focusColor 1 .75 0 1 + style 1 + border 1 + +itemDef { + name leftteambar + rect 14 102 306 35 + style WINDOW_STYLE_FILLED + border 1 + bordercolor .5 .5 .5 1 + forecolor 1 1 1 1 + backcolor 1 0 0 1 + visible 1 + decoration +} + +itemDef { + name rightteambar + rect 320 102 306 35 + style WINDOW_STYLE_FILLED + border 1 + bordercolor .5 .5 .5 1 + forecolor 1 1 1 1 + backcolor 0 0 1 1 + visible 1 + decoration +} + +itemDef { + name leftteamheadings + text "Status Name Score Time Ping" + textscale .25 + style 0 + rect 25 102 128 30 + textalign 0 + textalignx 0 // x alignment point for text + // use it to offset left/right text from the edge + // or to center the text on a different point + textaligny 23 + backcolor 0 0 0 0 + forecolor 1 .75 0 1 + decoration + visible 1 + } + + +itemDef { + name leftgrad + style WINDOW_STYLE_SHADER + background "ui/assets/halfgradleft.tga" + rect 14 140 306 222 + forecolor .75 0 0 0.5 + visible 1 + decoration +} + +itemDef { + name leftgrad + rect 16 142 302 218 + orecolor .75 .75 .75 .75 + visible 1 + type ITEM_TYPE_LISTBOX + elementwidth 135 + elementheight 20 + textscale .25 + elementtype LISTBOX_TEXT + feeder FEEDER_REDTEAM_LIST + columns 5 2 20 20 60 75 75 165 20 20 205 20 20 235 20 20 +} + + + +itemDef { + name rightgrad + style WINDOW_STYLE_SHADER + background "ui/assets/halfgradright.tga" + rect 320 140 296 222 + forecolor 0 0 .75 0.5 + visible 1 + type ITEM_TYPE_LISTBOX + elementwidth 135 + elementheight 20 + textscale .28 + elementtype LISTBOX_TEXT + feeder FEEDER_BLUETEAM_LIST + columns 5 2 20 20 60 75 75 165 20 20 205 20 20 235 20 20 +} + +itemDef { + name rightteamheadings + text "Status Name Score Time Ping" + textscale .25 + style 0 + rect 336 102 128 30 + textalign 0 + textalignx 0 // x alignment point for text + // use it to offset left/right text from the edge + // or to center the text on a different point + textaligny 23 + backcolor 0 0 0 0 + forecolor 1 .75 0 1 + decoration + visible 1 + } + + + + + + + +itemDef { + name window + rect 14 141 612 221 + style WINDOW_STYLE_EMPTY + border 1 + bordercolor .5 .5 .5 .75 + forecolor 1 1 1 1 + backcolor 0 0 0 .25 + visible 1 + decoration +} + + + + + + +// GAMETYPE BAR // + + +itemDef { + name gametypebar + style 2 + rect 0 16 640 35 + textscale 0.4 + textalign 0 // center + textalignx 60 // x alignment point for text + // use it to offset left/right text from the edge + // or to center the text on a different point + textaligny 21 + style 2 + border 4 + bordercolor 1 1 1 1 + bordersize 1 + backcolor 0 0 .75 0.5 + visible 1 + decoration +} + + +itemDef { + name score + text " " + ownerdraw CG_GAME_STATUS + textscale .5 + style 0 + rect 320 16 210 25 + textalignx 0 + textaligny 21 + textalign 1 + backcolor 0 0 0 0 + forecolor 1 1 1 1 + visible 1 + decoration +} + + +itemDef { + name score + text "" + ownerdraw CG_KILLER + textscale .4 + style 0 + rect 320 40 210 40 + textalignx 0 + textaligny 24 + textalign 1 + backcolor 0 0 0 0 + forecolor 1 1 1 1 + visible 1 + decoration +} + + + + +// PLAYER STATS // + +itemDef { + name window + rect 14 364 612 24 + style WINDOW_STYLE_FILLED + border 1 + bordercolor .5 .5 .5 .5 + forecolor 0 0 0 0 + backcolor 0 0 0 .25 + //outlinecolor 1 1 1 .5 + visible 1 + decoration +} + +itemDef { + name name + text "Name:" + textscale .35 + style 0 + rect 0 363 128 30 + textalign 1 // center + textalignx 64 // x alignment point for text + // use it to offset left/right text from the edge + // or to center the text on a different point + textaligny 21 + backcolor 0 0 0 0 + forecolor 1 .75 0 1 + decoration + visible 1 + } + + +itemDef { + name score + text "Score:" + textscale .35 + style 0 + rect 246 363 128 30 + textalign 3 // center + textalignx 16 // x alignment point for text + // use it to offset left/right text from the edge + // or to center the text on a different point + textaligny 21 + backcolor 0 0 0 0 + forecolor 1 .75 0 1 + decoration + visible 1 + } + + +itemDef { + name wins + text "Wins:" + textscale .35 + style 0 + rect 404 363 128 30 + textalign 1 // center + textalignx 64 // x alignment point for text + // use it to offset left/right text from the edge + // or to center the text on a different point + textaligny 21 + backcolor 0 0 0 0 + forecolor 1 .75 0 1 + decoration + visible 1 + } + + + +// AWARDS // + + +itemDef { + name window + rect 14 390 612 38 + style WINDOW_STYLE_FILLED + border 1 + bordercolor .5 .5 .5 .5 + forecolor 1 1 1 1 + backcolor 0 0 0 .25 + visible 1 + decoration +} + +itemdef { + name medal_accuracy + style WINDOW_STYLE_SHADER + rect 48 394 32 32 + background "ui/assets/medal_accuracy.tga" + forecolor 1 1 1 .25 + visible 1 + decoration +} + +itemdef { + name medal_assist + style WINDOW_STYLE_SHADER + rect 112 394 32 32 + background "ui/assets/medal_assist.tga" + forecolor 1 1 1 .25 + visible 1 + decoration + +} + +itemdef { + name medal_accuracy + style WINDOW_STYLE_SHADER + rect 176 394 32 32 + background "ui/assets/medal_accuracy.tga" + forecolor 1 1 1 .25 + visible 1 + decoration + +} + +itemdef { + name medal_defend + style WINDOW_STYLE_SHADER + rect 240 394 32 32 + background "ui/assets/medal_defend.tga" + forecolor 1 1 1 .25 + visible 1 + decoration + +} + +itemdef { + name medal_excellent + style WINDOW_STYLE_SHADER + rect 304 394 32 32 + background "ui/assets/medal_excellent.tga" + forecolor 1 1 1 .25 + visible 1 + decoration + +} + +itemdef { + name medal_frags + style WINDOW_STYLE_SHADER + rect 368 394 32 32 + background "ui/assets/medal_frags.tga" + forecolor 1 1 1 .25 + visible 1 + decoration + +} + +itemdef { + name medal_gauntlet + style WINDOW_STYLE_SHADER + rect 432 394 32 32 + background "ui/assets/medal_gauntlet.tga" + forecolor 1 1 1 .25 + visible 1 + decoration + +} + +itemdef { + name medal_impressive + style WINDOW_STYLE_SHADER + rect 496 394 32 32 + background "ui/assets/medal_impressive.tga" + forecolor 1 1 1 .25 + visible 1 + decoration + +} + +itemdef { + name medal_victory + style WINDOW_STYLE_SHADER + rect 560 394 32 32 + background "ui/assets/medal_victory.tga" + forecolor 1 1 1 .25 + visible 1 + decoration +} + + + +// TEAM LOGO // + + +itemDef { + name playerlogo + ownerdraw UI_PLAYERLOGO + rect 71 157 180 180 + visible 1 + forecolor .5 0 0 .5 + decoration + } + +itemDef { + ownerdraw UI_OPPONENTLOGO + name opposinglogo + rect 397 157 180 180 + visible 1 + forecolor 0 0 .5 .5 + decoration +} + +itemDef { + name playerlogo + ownerdraw UI_PLAYERLOGO_METAL + rect 14 6 96 96 + visible 1 + forecolor 1 .7 .7 1 + decoration + } + +itemDef { + name opposinglogo + ownerdraw UI_OPPONENTLOGO_METAL + rect 530 6 96 96 + visible 1 + forecolor .7 .7 1 1 + decoration +} + + + + +// TEAM NAME // + +itemDef { + name playerteamname + ownerdraw UI_PLAYERLOGO_NAME + rect 120 54 120 60 + decoration + visible 1 +} + +itemDef { + name opposingteamname + ownerdraw UI_OPPONENTLOGO_NAME + rect 392 54 120 60 + backcolor 0 0 0 0 + forecolor 1 1 1 1 + decoration + visible 1 +} + + + + + +} + + +} diff --git a/ta_ui/ui/ingame_serverinfo.menu b/ta_ui/ui/ingame_serverinfo.menu new file mode 100644 index 00000000..ad3847c6 --- /dev/null +++ b/ta_ui/ui/ingame_serverinfo.menu @@ -0,0 +1,63 @@ +#include "ui/menudef.h" + +{ +\\ SERVER INFO MENU \\ + +menuDef { + name "ingame_serverinfo" + visible 0 + fullscreen 0 + outOfBoundsClick // this closes the window if it gets a click out of the rectangle + rect 352 30 256 300 + focusColor 1 .75 0 1 + style 1 + border 1 + +itemDef { + name window + rect 0 0 256 300 + style 1 + border 1 + bordercolor .5 .5 .5 1 + backcolor 0 0 .75 .25 + visible 1 + decoration + } + + +itemDef { + name serverinfo + group serverinfo + rect 0 100 256 256 + text "Server Information" + textalign 1 + textscale .25 + textalignx 128 + textaligny 17 + forecolor 1 1 1 1 + visible 1 + decoration + } +itemDef { + name ok + text "OK" + textscale .25 + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/button_red.tga" + rect 103 275 50 20 + textalign 1 + textalignx 25 + textaligny 15 + forecolor 1 1 1 1 + visible 1 + action { close ingame_serverinfo ; close ingame ; open ingame } + } + + + + +} + + +} diff --git a/ta_ui/ui/ingame_system.menu b/ta_ui/ui/ingame_system.menu new file mode 100644 index 00000000..f6bf86fa --- /dev/null +++ b/ta_ui/ui/ingame_system.menu @@ -0,0 +1,619 @@ +#include "ui/menudef.h" + +{ +\\ SYSTEM MENU \\ + +menuDef { + name "ingame_system" + visible 0 + fullscreen 0 + outOfBoundsClick // this closes the window if it gets a click out of the rectangle + rect 298 30 276 325 + focusColor 1 .75 0 1 + style 1 + border 1 + onopen { hide grpsystem ; show graphics } + +itemDef { + name window + rect 10 15 256 310 + style 1 + backcolor 0 .1 0 1 + visible 1 + decoration + } + +// FRAME // + + +itemDef { + name window + rect 0 10 64 64 + style 3 + background "ui/assets/ingameleftcorner.tga" + visible 1 + decoration + } + +itemDef { + name window + rect 64 10 64 8 + style 3 + background "ui/assets/ingametop.tga" + visible 1 + decoration + } + +itemDef { + name window + rect 167 10 64 8 + style 3 + background "ui/assets/ingametop.tga" + visible 1 + decoration + } + +itemDef { + name window + rect 213 10 64 64 + style 3 + background "ui/assets/ingamerightcorner.tga" + visible 1 + decoration + } +itemDef { + name window + rect 103 0 64 16 + style 3 + background "ui/assets/ingameconnection.tga" + visible 1 + decoration + } +itemDef { + name window + rect 0 264 64 64 + style 3 + background "ui/assets/ingameleftcornerb.tga" + visible 1 + decoration + } +itemDef { + name window + rect 213 264 64 64 + style 3 + background "ui/assets/ingamerightcornerb.tga" + visible 1 + decoration + } + +itemDef { + name window + rect 0 64 16 64 + style 3 + background "ui/assets/ingameleft.tga" + visible 1 + decoration + } + + +itemDef { + name window + rect 0 128 16 64 + style 3 + background "ui/assets/ingameleft.tga" + visible 1 + decoration + } + +itemDef { + name window + rect 0 192 16 74 + style 3 + background "ui/assets/ingameleft.tga" + visible 1 + decoration + } + +itemDef { + name window + rect 261 64 16 64 + style 3 + background "ui/assets/ingameright.tga" + visible 1 + decoration + } + + +itemDef { + name window + rect 261 128 16 64 + style 3 + background "ui/assets/ingameright.tga" + visible 1 + decoration + } +itemDef { + name window + rect 261 192 16 74 + style 3 + background "ui/assets/ingameright.tga" + visible 1 + decoration + } + +itemDef { + name window + rect 64 320 74 8 + style 3 + background "ui/assets/ingamebottom.tga" + visible 1 + decoration + } +itemDef { + name window + rect 138 320 74 8 + style 3 + background "ui/assets/ingamebottom.tga" + visible 1 + decoration + } + +itemDef { + name ctr_graphics + text "Graphics" + type 1 + textscale .25 + group grpControlbutton + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + rect 30 25 65 20 + textalign 1 + textalignx 32 + textaligny 16 + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + visible 1 + action { hide grpSystem ; show graphics } + mouseEnter { setitemcolor ctr_graphics backcolor .1 .37 .1 1 } + mouseExit { setitemcolor ctr_graphics backcolor .37 .1 .1 1 } + } + + itemDef { + name graphics + group grpSystem + type ITEM_TYPE_MULTI + text "Quality:" + cvar "ui_glCustom" + cvarFloatList { "High Quality" 0 "Normal" 1 "Fast" 2 "Fastest" 3 "Custom" 4 } + rect 0 50 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 133 + textaligny 17 + textscale .25 + forecolor 1 1 1 1 + visible 0 + action { uiScript update "ui_glCustom" } + } + + itemDef { + name graphics + group grpSystem + type ITEM_TYPE_EDITFIELD + text "GL Driver:" + cvar "r_gldriver" + //cvarFloatList { } + rect 0 70 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 133 + textaligny 17 + textscale .25 + forecolor 1 1 1 1 + visible 0 + decoration + } + + itemDef { + name graphics + group grpSystem + type ITEM_TYPE_YESNO + text "GL Extensions:" + cvar "r_allowExtensions" + rect 0 90 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 133 + textaligny 17 + textscale .25 + forecolor 1 1 1 1 + visible 0 + action { uiScript glCustom } + } + + itemDef { + name graphics + group grpSystem + type ITEM_TYPE_MULTI + text "Video Mode:" + cvar "r_mode" + cvarFloatList { "320x240" 0 "400x300" 1 "512x384" 2 "640x480" 3 "800x600" 4 "960x720" 5 "1024x768" 6 "1152x864" 7 "1280x1024" 8 "1600x1200" 9 "2048x1536" 10 "856x480 wide screen" 11 } + rect 0 110 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 133 + textaligny 17 + textscale .25 + forecolor 1 1 1 1 + visible 0 + action { uiScript glCustom } + } + + itemDef { + name graphics + group grpSystem + type ITEM_TYPE_MULTI + text "Color Depth:" + cvar "r_colorbits" + cvarFloatList { "Default" 0 "16 bit" 16 "32 bit" 32 } + rect 0 130 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 133 + textaligny 17 + textscale .25 + forecolor 1 1 1 1 + visible 0 + action { uiScript glCustom ; uiScript update "r_colorbits" } + } + + itemDef { + name graphics + group grpSystem + type ITEM_TYPE_YESNO + text "Fullscreen:" + cvar "r_fullscreen" + rect 0 150 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 133 + textaligny 17 + textscale .25 + forecolor 1 1 1 1 + visible 0 + action { uiScript glCustom } + } + + itemDef { + name graphics + group grpSystem + type ITEM_TYPE_MULTI + text "Lighting:" + cvar "r_vertexlight" + cvarFloatList { "Light Map (high)" 0 "Vertex (low)" 1 } + rect 0 170 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 133 + textaligny 17 + textscale .25 + forecolor 1 1 1 1 + visible 0 + action { uiScript glCustom } + } + + itemDef { + name graphics + group grpSystem + type ITEM_TYPE_MULTI + text "Geometric Detail:" + cvar "r_lodbias" + cvarFloatList { "High" 0 "Medium" 1 "Low" 2 } + rect 0 190 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 133 + textaligny 17 + textscale .25 + forecolor 1 1 1 1 + visible 0 + action { uiScript glCustom ; uiScript update "r_lodbias" } + } + + itemDef { + name graphics + group grpSystem + type ITEM_TYPE_MULTI + text "Texture Detail:" + cvar "r_picmip" + cvarFloatList { "Low" 2 "Normal" 1 "High" 0 } + rect 0 210 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 133 + textaligny 17 + textscale .25 + forecolor 1 1 1 1 + visible 0 + action { uiScript glCustom } + } + + itemDef { + name graphics + group grpSystem + type ITEM_TYPE_MULTI + text "Texture Quality:" + cvar "r_texturebits" + cvarFloatList { "Default" 0 "16 bit" 16 "32 bit" 32 } + rect 0 230 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 133 + textaligny 17 + textscale .25 + forecolor 1 1 1 1 + visible 0 + } + + itemDef { + name graphics + group grpSystem + type ITEM_TYPE_MULTI + text "Texture Filter:" + cvar "r_texturemode" + cvarStrList { "Bilinear", "GL_LINEAR_MIPMAP_NEAREST", "Trilinear", "GL_LINEAR_MIPMAP_LINEAR" } + rect 0 250 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 133 + textaligny 17 + textscale .25 + forecolor 1 1 1 1 + visible 0 + action { uiScript glCustom } + } + + itemDef { + name graphics + group grpSystem + type ITEM_TYPE_YESNO + text "Compress Textures:" + cvar "r_ext_compressed_textures " + rect 0 270 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 133 + textaligny 17 + textscale .25 + forecolor 1 1 1 1 + visible 0 + action { uiScript glCustom } + } + + +//here + +itemDef { + name ctr_driver + text "Driver Info" + type 1 + textscale .25 + group grpControlbutton + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + rect 105 25 65 20 + textalign 1 + textalignx 32 + textaligny 16 + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + visible 1 + action { hide grpSystem ; show driver } + mouseEnter { setitemcolor ctr_driver backcolor .1 .37 .1 1 } + mouseExit { setitemcolor ctr_driver backcolor .37 .1 .1 1 } + } + + + + itemDef { + name driver + group grpSystem + rect 15 55 230 230 + ownerdraw UI_GLINFO + textalign 1 + textscale .15 + textalignx 0 + textaligny 17 + forecolor 1 1 1 1 + visible 0 + decoration + } + +itemDef { + name ctr_other + text "Other" + type 1 + textscale .25 + group grpControlbutton + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + rect 180 25 65 20 + textalign 1 + textalignx 32 + textaligny 16 + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + visible 1 + action { hide grpSystem ; show other } + mouseEnter { setitemcolor ctr_other backcolor .1 .37 .1 1 } + mouseExit { setitemcolor ctr_other backcolor .37 .1 .1 1 } + } + + +itemDef { + name other + group grpSystem + style 1 + text "Display" + rect 0 45 128 20 + textalign ITEM_ALIGN_CENTER + textalignx 128 + textaligny 17 + textscale .25 + forecolor 1 1 1 1 + visible 0 + decoration + } + + itemDef { + name other + group grpSystem + type ITEM_TYPE_SLIDER + text "Brightness:" + cvarfloat "r_gamma" 1 .5 2 + rect 0 65 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 17 + textscale .25 + forecolor 1 1 1 1 + visible 0 + } + + itemDef { + name other + group grpSystem + type ITEM_TYPE_SLIDER + text "Screen Size:" + cvarfloat "cg_viewsize" 100 30 100 + //cvarFloatList { } + rect 0 85 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 17 + textscale .25 + forecolor 1 1 1 1 + visible 0 + } + +itemDef { + name other + group grpSystem + style 1 + text "Sound" + rect 0 125 128 20 + textalign ITEM_ALIGN_CENTER + textalignx 128 + textaligny 17 + textscale .25 + forecolor 1 1 1 1 + visible 0 + decoration + } + + itemDef { + name other + group grpSystem + type ITEM_TYPE_SLIDER + text "Effects Volume:" + cvarfloat "s_volume" 0.7 0 1 + rect 0 145 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 17 + textscale .25 + forecolor 1 1 1 1 + visible 0 + } + + itemDef { + name other + group grpSystem + type ITEM_TYPE_SLIDER + text "Music Volume:" + cvarfloat "s_musicvolume" 0.25 0 1 + rect 0 165 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 17 + textscale .25 + forecolor 1 1 1 1 + visible 0 + } + + itemDef { + name other + group grpSystem + type ITEM_TYPE_MULTI + text "Sound Quality:" + cvar "s_khz" + cvarFloatList { "22 khz (high)" 22 "11 khz (low)" 11 } + rect 0 185 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 17 + textscale .25 + forecolor 1 1 1 1 + visible 0 + } + + itemDef { + name other + group grpSystem + type ITEM_TYPE_YESNO + text "Doppler Sound:" + cvar "s_doppler" + rect 0 205 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 17 + textscale .25 + forecolor 1 1 1 1 + visible 0 + } + + +itemDef { + name other + group grpSystem + style 1 + text "Network" + rect 0 245 128 20 + textalign ITEM_ALIGN_CENTER + textalignx 128 + textaligny 17 + textscale .25 + forecolor 1 1 1 1 + visible 0 + decoration + } + + itemDef { + name other + group grpSystem + type ITEM_TYPE_MULTI + text "Net Data Rate:" + cvar "rate" + cvarFloatList { "<=28.8k" 2500 "33.6k" 3000 "56k" 4000 "ISDN" 5000 "LAN/CABLE/xDSl" 25000 } + rect 0 265 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 17 + textscale .25 + forecolor 1 1 1 1 + visible 0 + } + +itemDef { + name graphics + text "Apply" + type 1 + textscale .25 + group grpsystem + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + rect 101 295 75 20 + textalign 1 + textalignx 37 + textaligny 15 + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + visible 0 + action { exec "vid_restart" } + mouseEnter { setcolor backcolor .1 .37 .1 1 } + mouseExit { setcolor backcolor .37 .1 .1 1 } + } + + +} + + +} diff --git a/ta_ui/ui/ingame_vote.menu b/ta_ui/ui/ingame_vote.menu new file mode 100644 index 00000000..b48b4b47 --- /dev/null +++ b/ta_ui/ui/ingame_vote.menu @@ -0,0 +1,141 @@ +#include "ui/menudef.h" + +{ +\\ SERVER INFO MENU \\ + +menuDef { + name "ingame_vote" + visible 0 + fullscreen 0 + outOfBoundsClick // this closes the window if it gets a click out of the rectangle + rect 430 30 128 125 + focusColor 1 .75 0 1 + style 1 + border 1 + + itemDef { + name window + rect 10 15 108 110 + style 1 + backcolor 0 .1 0 1 + visible 1 + decoration + } + + + + +// FRAME // + + +itemDef { + name window + rect 0 10 64 64 + style 3 + background "ui/assets/ingameleftcorner.tga" + visible 1 + decoration + } +itemDef { + name window + rect 64 10 64 64 + style 3 + background "ui/assets/ingamerightcorner.tga" + visible 1 + decoration + } +itemDef { + name window + rect 30 0 65 16 + style 3 + background "ui/assets/ingameconnection.tga" + visible 1 + decoration + } +itemDef { + name window + rect 0 64 64 64 + style 3 + background "ui/assets/ingameleftcornerb.tga" + visible 1 + decoration + } +itemDef { + name window + rect 64 64 64 64 + style 3 + background "ui/assets/ingamerightcornerb.tga" + visible 1 + decoration + } + + + + itemDef { + name yes + text "Yes" + type 1 + textscale .25 + rect 0 30 128 20 + textalign 1 + textalignx 64 + textaligny 10 + forecolor 1 1 1 1 + visible 1 + action { exec "vote yes" ; uiScript closeingame } + } + + itemDef { + name no + text "No" + type 1 + textscale .25 + rect 0 50 128 20 + textalign 1 + textalignx 64 + textaligny 10 + forecolor 1 1 1 1 + visible 1 + action { exec "vote no" ; uiScript closeingame } + } +itemDef { + name yes + text "TeamYes" + type 1 + ownerdrawflag UI_SHOW_ANYTEAMGAME + textscale .25 + rect 0 70 128 20 + textalign 1 + textalignx 64 + textaligny 10 + forecolor 1 1 1 1 + visible 1 + action { exec "teamvote yes" ; uiScript closeingame } + } + + itemDef { + name no + text "TeamNo" + type 1 + ownerdrawflag UI_SHOW_ANYTEAMGAME + textscale .25 + rect 0 90 128 20 + textalign 1 + textalignx 64 + textaligny 10 + forecolor 1 1 1 1 + visible 1 + action { exec "teamvote no" ; uiScript closeingame } + } + + +} + + + + + +} + + +} diff --git a/ta_ui/ui/ingame_vote2.menu b/ta_ui/ui/ingame_vote2.menu new file mode 100644 index 00000000..b0840d14 --- /dev/null +++ b/ta_ui/ui/ingame_vote2.menu @@ -0,0 +1,71 @@ +#include "ui/menudef.h" + +{ +\\ SERVER INFO MENU \\ + +menuDef { + name "ingame_vote" + visible 0 + fullscreen 0 + outOfBoundsClick // this closes the window if it gets a click out of the rectangle + rect 387 30 210 64 + focusColor 1 .75 0 1 + style 1 + border 1 + +itemDef { + name window + rect 0 0 210 64 + style 1 + border 1 + bordercolor .5 .5 .5 1 + backcolor 0 0 .75 .25 + visible 1 + decoration + } + + +itemDef { + name yes + text "Vote Yes" + type 1 + textscale .25 + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/button_red.tga" + rect 20 20 75 20 + textalign 1 + textalignx 37 + textaligny 16 + forecolor 1 1 1 1 + visible 1 + action { exec "cmd vote yes" ; close ingame_vote } + } + + +itemDef { + name no + text "Vote No" + type 1 + textscale .25 + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/button_red.tga" + rect 115 20 75 20 + textalign 1 + textalignx 37 + textaligny 16 + forecolor 1 1 1 1 + visible 1 + action { exec "cmd vote no" ; close ingame_vote } + } +} + + + + + +} + + +} diff --git a/ta_ui/ui/joinserver.menu b/ta_ui/ui/joinserver.menu new file mode 100644 index 00000000..8686ee8c --- /dev/null +++ b/ta_ui/ui/joinserver.menu @@ -0,0 +1,1259 @@ +#include "ui/menudef.h" + +{ +\\ Server Join \\ + + menuDef { + name "joinserver" + visible 0 + fullscreen 1 + rect 0 0 640 480 + background "menuback_a" + focusColor 1 .75 0 1 + outOfBoundsClick + style 1 + border 1 + onOpen { setitemcolor fadebox backcolor 0 0 0 1 ; + playlooped "music/fla_mp03.wav" ; + fadeout fadebox ; + uiScript UpdateFilter ; + hide lightning ; + hide accept_alt ; + show accept ; + hide back_alt ; + show back ; + hide grpmessage } + onEsc { uiScript closeJoin } + + +// top bar // + + + itemDef { + name sourcebar + style 2 + rect 0 20 640 40 + style 2 + border 4 + bordercolor 0.5 0.5 0.5 0.5 + bordersize 2 + backcolor 0 0 .75 0.5 + visible 1 + mouseEnter { setcolor backcolor .75 0 0 .5 } + mouseExit { setcolor backcolor 0 0 .75 .5 } + decoration + } + +// DATE AND MESSAGE OF THE DAY // + +itemDef { + name datewindow + rect 10 365 265 25 + style WINDOW_STYLE_FILLED + border 1 + bordercolor .5 .5 .5 1 + backcolor 0 0 0 .15 + visible 1 + } +itemDef { + name messagewindow + rect 275 365 355 25 + style WINDOW_STYLE_FILLED + border 1 + bordercolor .5 .5 .5 1 + backcolor 0 0 0 .15 + visible 1 + } + +itemDef { + name refreshdate + ownerdraw UI_SERVERREFRESHDATE + textscale .22 + rect 10 365 265 25 + textalign 0 + textalignx 10 + textaligny 20 + forecolor 1 1 1 1 + visible 1 + decoration + } +itemDef { + name messageoftheday + ownerdraw UI_SERVERMOTD + textscale .3 + rect 280 365 345 25 + forecolor 1 1 1 1 + visible 1 + decoration + } + + + +// map selection + + +itemDef { + name gametypefield + style 0 + ownerdraw UI_NETSOURCE + rect 10 20 134 40 + textstyle 6 + textalign ITEM_ALIGN_LEFT + textalignx 2 + textaligny 30 + textscale .32 + forecolor 1 1 1 1 + visible 1 + action { play "sound/misc/kcaction.wav" } + mouseEnter { show message_source } + mouseExit { hide message_source } + } + +itemDef { + name gametypefield + style 0 + textstyle 6 + ownerdraw UI_NETFILTER + rect 149 20 181 40 + textalign ITEM_ALIGN_LEFT + textalignx 2 + textaligny 30 + textscale .32 + forecolor 1 1 1 1 + visible 1 + action { play "sound/misc/kcaction.wav" } + mouseEnter { show message_gamefilter } + mouseExit { hide message_gamefilter } + } + +itemDef { + name gametypefield + style 0 + textstyle 6 + text "Type:" + ownerdraw UI_JOINGAMETYPE + rect 330 20 160 40 + textalign ITEM_ALIGN_LEFT + textalignx 2 + textaligny 30 + textscale .32 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 1 + action { play "sound/misc/kcaction.wav" } + mouseEnter { show message_typefilter } + mouseExit { hide message_typefilter } + } + +itemDef { + name mappreview + style 0 + ownerdraw UI_NETMAPCINEMATIC + rect 505 5 128 96 + border 1 + bordercolor 0 .5 0 .5 + visible 1 + } + +itemDef { + name mappreview + style WINDOW_STYLE_FILLED + rect 505 5 128 96 + border 1 + bordercolor .5 .5 .5 .5 + visible 1 + } + + + +itemDef { + name horizontoalseparators + rect 10 132 604 20 + style WINDOW_STYLE_FILLED + border 0 + backcolor 0 0 .5 .25 + visible 1 + decoration + } + +itemDef { + name horizontoalseparators + rect 10 172 604 20 + style WINDOW_STYLE_FILLED + border 0 + backcolor 0 0 .5 .25 + visible 1 + decoration + } +itemDef { + name horizontoalseparators + rect 10 212 604 20 + style WINDOW_STYLE_FILLED + border 0 + backcolor 0 0 .5 .25 + visible 1 + decoration + } +itemDef { + name horizontoalseparators + rect 10 252 604 20 + style WINDOW_STYLE_FILLED + border 0 + backcolor 0 0 .5 .25 + visible 1 + decoration + } +itemDef { + name horizontoalseparators + rect 10 292 604 20 + style WINDOW_STYLE_FILLED + border 0 + backcolor 0 0 .5 .25 + visible 1 + decoration + } +itemDef { + name horizontoalseparators + rect 10 332 604 20 + style WINDOW_STYLE_FILLED + border 0 + backcolor 0 0 .5 .25 + visible 1 + decoration + } + +// COLUMNS // + + + +itemDef { + name serverColumn + group grpColumn + rect 10 128 265 235 + style WINDOW_STYLE_FILLED + border 1 + backcolor 0 0 0 0 + bordersize 1 + bordercolor .5 .5 .5 1 + visible 1 + decoration + } +itemDef { + name mapColumn + group grpColumn + rect 275 128 125 235 + style WINDOW_STYLE_FILLED + border 1 + backcolor 0 0 0 0 + bordersize 1 + bordercolor .5 .5 .5 1 + visible 1 + decoration + } +itemDef { + name playerColumn + group grpColumn + rect 400 128 60 235 + style WINDOW_STYLE_FILLED + border 1 + backcolor 0 0 0 0 + bordersize 1 + bordercolor .5 .5 .5 1 + visible 1 + decoration + } +itemDef { + name typeColumn + group grpColumn + rect 460 128 100 235 + style WINDOW_STYLE_FILLED + border 1 + backcolor 0 0 0 0 + bordersize 1 + bordercolor .5 .5 .5 1 + visible 1 + decoration + } +itemDef { + name pingColumn + group grpColumn + rect 560 128 52 235 + style WINDOW_STYLE_FILLED + border 1 + backcolor 0 0 0 0 + bordersize 1 + bordercolor .5 .5 .5 1 + visible 1 + decoration + } + + + + itemDef { + name serverlist + rect 10 128 620 235 + type ITEM_TYPE_LISTBOX + style WINDOW_STYLE_FILLED + elementwidth 120 + elementheight 20 + textscale .25 + elementtype LISTBOX_TEXT + feeder FEEDER_SERVERS + border 1 + bordercolor .5 .5 .5 1 + forecolor 1 1 1 1 + backcolor 0 0 .7 .25 + outlinecolor 0 1 0 .25 + visible 1 + columns 5 2 40 40 275 40 20 400 5 10 460 20 10 560 20 20 + mouseenter { setitemcolor serverlist bordercolor .7 0 0 1 } + mouseexit { setitemcolor serverlist bordercolor .5 .5 .5 .5 } + doubleClick { uiScript JoinServer } + } + + + + + +// SORT TABS // + + + itemDef { + name server + group grpTabs + text "Server Name" + type ITEM_TYPE_BUTTON + textscale .25 + style WINDOW_STYLE_FILLED + background "ui/assets/sorttab.tga" + rect 10 103 110 26 + textalign 1 + textalignx 59 // center + textaligny 21 + forecolor 1 1 1 1 + backcolor .1 .1 .37 1 + visible 1 + action { play "sound/misc/nomenu.wav" ; + uiScript ServerSort 0 ; + setitemcolor grpTabs backcolor .1 .1 .37 1 ; + setitemcolor server backcolor .1 .37 .1 1 ; + setitemcolor grpColumn backcolor 0 0 0 0 ; + setitemcolor serverColumn backcolor 0 1 0 .25 } + mouseEnter { show message_sort ; setitemcolor serverColumn bordercolor 1 0 0 1 } + mouseExit { hide message_sort ; setitemcolor serverColumn bordercolor .5 .5 .5 1 } + } + + + + itemDef { + name map + group grpTabs + type ITEM_TYPE_BUTTON + text "Map Name" + textscale .25 + style WINDOW_STYLE_FILLED + background "ui/assets/sorttab.tga" + rect 275 103 100 26 + textalign 1 + textalignx 50 // center + textaligny 21 + backcolor .1 .1 .37 1 + forecolor 1 1 1 1 + visible 1 + action { play "sound/misc/nomenu.wav" ; + uiScript ServerSort 1 ; + setitemcolor grpTabs backcolor .1 .1 .37 1 ; + setitemcolor map backcolor .1 .37 .1 1 ; + setitemcolor grpColumn backcolor 0 0 0 0 ; + setitemcolor mapColumn backcolor 0 1 0 .25 } + mouseEnter { show message_sort ; setitemcolor mapColumn bordercolor 1 0 0 1 } + mouseExit { hide message_sort ; setitemcolor mapColumn bordercolor .5 .5 .5 1 } + } + + + + itemDef { + name Players + group grpTabs + text "#Plyrs" + type ITEM_TYPE_BUTTON + textscale .25 + style WINDOW_STYLE_FILLED + background "ui/assets/sorttab.tga" + rect 400 103 50 26 + textalign 1 + textalignx 25 // center + textaligny 21 + forecolor 1 1 1 1 + backcolor .1 .1 .37 1 + visible 1 + action { play "sound/misc/nomenu.wav" ; + uiScript ServerSort 2 ; + setitemcolor grpTabs backcolor .1 .1 .37 1 ; + setitemcolor Players backcolor .1 .37 .1 1 ; + setitemcolor grpColumn backcolor 0 0 0 0 ; + setitemcolor playerColumn backcolor 0 1 0 .25 } + mouseEnter { show message_sort ; setitemcolor playerColumn bordercolor 1 0 0 1 } + mouseExit { hide message_sort ; setitemcolor playerColumn bordercolor .5 .5 .5 1 } + } + + +itemDef { + name Type + group grpTabs + text "Type" + textscale .25 + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_FILLED + background "ui/assets/sorttab.tga" + rect 460 103 60 26 + textalign 1 + textalignx 30 // center + textaligny 21 + backcolor .1 .1 .37 1 + forecolor 1 1 1 1 + visible 1 + action { play "sound/misc/nomenu.wav" ; + uiScript ServerSort 3 ; + setitemcolor grpTabs backcolor .1 .1 .37 1 ; + setitemcolor Type backcolor .1 .37 .1 1 ; + setitemcolor grpColumn backcolor 0 0 0 0 ; + setitemcolor typeColumn backcolor 0 1 0 .25 } + mouseEnter { show message_sort ; setitemcolor typeColumn bordercolor 1 0 0 1 } + mouseExit { hide message_sort ; setitemcolor typeColumn bordercolor .5 .5 .5 1 } + } + + +itemDef { + name Ping + group grpTabs + text "Ping" + type ITEM_TYPE_BUTTON + textscale .25 + style WINDOW_STYLE_FILLED + background "ui/assets/sorttab.tga" + rect 560 103 52 26 + textalign 1 + textalignx 26 // center + textaligny 21 + backcolor .1 .1 .37 1 + forecolor 1 1 1 1 + visible 1 + action { play "sound/misc/nomenu.wav" ; + uiScript ServerSort 4 ; + setitemcolor grpTabs backcolor .1 .1 .37 1 ; + setitemcolor Ping backcolor .1 .37 .1 1 ; + setitemcolor grpColumn backcolor 0 0 0 0 ; + setitemcolor pingColumn backcolor 0 1 0 .25 } + mouseEnter { show message_sort ; setitemcolor pingColumn bordercolor 1 0 0 1 } + mouseExit { hide message_sort ; setitemcolor pingColumn bordercolor .5 .5 .5 1 } + } + + + + + +// BUTTONS // + +itemDef { + name refreshSource + text "Get New List" + type ITEM_TYPE_BUTTON + textscale .3 + style WINDOW_STYLE_FILLED + //background "ui/assets/button_red.tga" + background "ui/assets/button_back.tga" + rect 16 67 105 26 + textalign 1 + textalignx 52 // center + textaligny 20 + backcolor .37 .1 .1 1 + forecolor 1 1 1 1 + visible 1 + mouseEnter { show message_refreshSOurce ; setitemcolor refreshSource backcolor .1 .37 .1 1 } + mouseExit { hide message_refreshSource ; setitemcolor refreshSource backcolor .37 .1 .1 1 } + action { play "sound/misc/nomenu.wav" ; + uiScript RefreshServers } + } + + + +itemDef { + name refreshSource + style WINDOW_STYLE_SHADER + background "ui/assets/framebutton.tga" + rect 16 67 105 26 + visible 1 + decoration + } + +itemDef { + name refreshSource + style WINDOW_STYLE_SHADER + background "ui/assets/leftbutton.tga" + rect 4 67 13 26 + visible 1 + decoration + } +itemDef { + name refreshSource + style WINDOW_STYLE_SHADER + background "ui/assets/rightbutton.tga" + rect 120 67 13 26 + visible 1 + decoration + } + + + + +itemDef { + name refreshFilter + text "Refresh List" + textscale .3 + style WINDOW_STYLE_FILLED + type ITEM_TYPE_BUTTON + background "ui/assets/button_back.tga" + rect 149 67 94 26 + textalign 1 + textalignx 46 // center + textaligny 20 + backcolor .37 .1 .1 1 + forecolor 1 1 1 1 + visible 1 + mouseEnter { show message_refreshFilter ; setitemcolor refreshFilter backcolor .1 .37 .1 1 } + mouseExit { hide message_refreshFilter ; setitemcolor refreshFilter backcolor .37 .1 .1 1 } + action { play "sound/misc/nomenu.wav" ; + uiScript RefreshFilter } + } + + + +itemDef { + name refreshFilter + style WINDOW_STYLE_SHADER + background "ui/assets/framebutton.tga" + rect 149 67 94 26 + visible 1 + decoration + } + + +itemDef { + name refreshFilter + style WINDOW_STYLE_SHADER + background "ui/assets/leftbutton.tga" + rect 137 67 13 26 + visible 1 + decoration + } + +itemDef { + name refreshFilter + style WINDOW_STYLE_SHADER + background "ui/assets/rightbutton.tga" + rect 242 67 13 26 + visible 1 + decoration + } + + + + + + + + + +itemDef { + name password + text "Password" + type ITEM_TYPE_BUTTON + textscale .3 + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + rect 20 395 92 26 + textalign 1 + textalignx 46 // center + textaligny 20 + backcolor .37 .1 .1 1 + forecolor 1 1 1 1 + visible 1 + action { play "sound/misc/kcaction.wav" ; + open password_popmenu } + mouseEnter { show message_password ; setitemcolor password backcolor .1 .37 .1 1 } + mouseExit { hide message_password ; setitemcolor password backcolor .37 .1 .1 1 } + } + +itemDef { + name password + style WINDOW_STYLE_SHADER + background "ui/assets/framebutton.tga" + rect 20 395 92 26 + visible 1 + decoration + } + +itemDef { + name password + style WINDOW_STYLE_SHADER + background "ui/assets/leftbutton.tga" + rect 14 395 7 26 + visible 1 + decoration + } + +itemDef { + name password + style WINDOW_STYLE_SHADER + background "ui/assets/rightbutton.tga" + rect 111 395 7 26 + visible 1 + decoration + } + + +itemDef { + name createFavorite + text "New Favorite" + type ITEM_TYPE_BUTTON + textscale .3 + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + rect 148 395 92 26 + textalign 1 + textalignx 46 // center + textaligny 20 + backcolor .37 .1 .1 1 + forecolor 1 1 1 1 + visible 1 + action { play "sound/misc/kcaction.wav" ; + open createfavorite_popmenu } + mouseEnter { show message_createFavorite ; setitemcolor createFavorite backcolor .1 .37 .1 1 } + mouseExit { hide message_createFavorite ; setitemcolor createFavorite backcolor .37 .1 .1 1 } + } +itemDef { + name createFavorite + style WINDOW_STYLE_SHADER + background "ui/assets/framebutton.tga" + rect 148 395 92 26 + visible 1 + decoration + } + +itemDef { + name createFavorite + style WINDOW_STYLE_SHADER + background "ui/assets/leftbutton.tga" + rect 142 395 7 26 + visible 1 + decoration + } + +itemDef { + name createFavorite + style WINDOW_STYLE_SHADER + background "ui/assets/rightbutton.tga" + rect 239 395 7 26 + visible 1 + decoration + } + + + + + +itemDef { + name addFavorite + text "Add Favorite" + type ITEM_TYPE_BUTTON + textscale .3 + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + ownerdrawFlag UI_SHOW_NOTFAVORITESERVERS + rect 276 395 92 26 + textalign 1 + textalignx 46 // center + textaligny 20 + backcolor .37 .1 .1 1 + forecolor 1 1 1 1 + visible 1 + action { play "sound/misc/nomenu.wav" ; + uiScript addFavorite } + mouseEnter { show message_addFavorite ; setitemcolor addFavorite backcolor .1 .37 .1 1 } + mouseExit { hide message_addFavorite ; setitemcolor addFavorite backcolor .37 .1 .1 1 } + } + + +itemDef { + name addFavorite + style WINDOW_STYLE_SHADER + background "ui/assets/framebutton.tga" + rect 276 395 92 26 + visible 1 + decoration + } + +itemDef { + name addFavorite + style WINDOW_STYLE_SHADER + background "ui/assets/leftbutton.tga" + rect 270 395 7 26 + visible 1 + decoration + } + +itemDef { + name addFavorite + style WINDOW_STYLE_SHADER + background "ui/assets/rightbutton.tga" + rect 367 395 7 26 + visible 1 + decoration + } + + +itemDef { + name delfavorite + text "Del. Favorite" + type ITEM_TYPE_BUTTON + textscale .3 + style WINDOW_STYLE_FILLED + ownerdrawFlag UI_SHOW_FAVORITESERVERS + background "ui/assets/button_back.tga" + rect 276 395 92 26 + textalign 1 + textalignx 46 // center + textaligny 20 + backcolor .37 .1 .1 1 + forecolor 1 1 1 1 + visible 1 + action { play "sound/misc/nomenu.wav" ; + uiScript DeleteFavorite ; uiScript UpdateFilter } + mouseEnter { show message_delFavorite ; setitemcolor delfavorite backcolor .1 .37 .1 1 } + mouseExit { hide message_delFavorite ; setitemcolor delfavorite backcolor .37 .1 .1 1 } + } +itemDef { + name delfavorite + style WINDOW_STYLE_SHADER + ownerdrawFlag UI_SHOW_FAVORITESERVERS + background "ui/assets/framebutton.tga" + rect 276 395 92 26 + visible 1 + decoration + } + +itemDef { + name delfavorite + style WINDOW_STYLE_SHADER + ownerdrawFlag UI_SHOW_FAVORITESERVERS + background "ui/assets/leftbutton.tga" + rect 270 395 7 26 + visible 1 + decoration + } + +itemDef { + name delfavorite + style WINDOW_STYLE_SHADER + ownerdrawFlag UI_SHOW_FAVORITESERVERS + background "ui/assets/rightbutton.tga" + rect 367 395 7 26 + visible 1 + decoration + } + + + + + +itemDef { + name serverinfo + text "Server Info" + type ITEM_TYPE_BUTTON + textscale .3 + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + rect 404 395 92 26 + textalign 1 + textalignx 46 // center + textaligny 20 + backcolor .37 .1 .1 1 + forecolor 1 1 1 1 + visible 1 + action { play "sound/misc/kcaction.wav" ; + open serverinfo_popmenu } + mouseEnter { show message_serverinfo ; setitemcolor serverinfo backcolor .1 .37 .1 1 } + mouseExit { hide message_serverinfo ; setitemcolor serverinfo backcolor .37 .1 .1 1 } + } +itemDef { + name serverinfo + style WINDOW_STYLE_SHADER + background "ui/assets/framebutton.tga" + rect 404 395 92 26 + visible 1 + decoration + } + +itemDef { + name serverinfo + style WINDOW_STYLE_SHADER + background "ui/assets/leftbutton.tga" + rect 398 395 7 26 + visible 1 + decoration + } + +itemDef { + name serverinfo + style WINDOW_STYLE_SHADER + background "ui/assets/rightbutton.tga" + rect 495 395 7 26 + visible 1 + decoration + } + +itemDef { + name findplayer + text "Find Friend" + type ITEM_TYPE_BUTTON + textscale .3 + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + rect 532 395 92 26 + textalign 1 + textalignx 46 // center + textaligny 20 + backcolor .37 .1 .1 1 + forecolor 1 1 1 1 + visible 1 + action { play "sound/misc/kcaction.wav" ; + open findplayer_popmenu } + mouseEnter { show message_findplayer ; setitemcolor findplayer backcolor .1 .37 .1 1 } + mouseExit { hide message_findplayer ; setitemcolor findplayer backcolor .37 .1 .1 1 } + } +itemDef { + name serverinfo + style WINDOW_STYLE_SHADER + background "ui/assets/framebutton.tga" + rect 532 395 92 26 + visible 1 + decoration + } + +itemDef { + name serverinfo + style WINDOW_STYLE_SHADER + background "ui/assets/leftbutton.tga" + rect 526 395 7 26 + visible 1 + decoration + } + +itemDef { + name serverinfo + style WINDOW_STYLE_SHADER + background "ui/assets/rightbutton.tga" + rect 623 395 7 26 + visible 1 + decoration + } + + + + + + + + +// VIEW OPTIONS // + +itemDef { + name viewEmpty + type ITEM_TYPE_YESNO + text "View Empty:" + + cvar "ui_browserShowEmpty" + textscale .25 + rect 262 71 125 20 + textalign 0 + textalignx 0 + textaligny 17 + forecolor 1 1 1 1 + visible 1 + action { play "sound/misc/nomenu.wav" ; + uiScript RefreshFilter } + mouseEnter { show message_viewEmpty } + mouseExit { hide message_viewEmpty } + } +itemDef { + name viewEmpty + type 11 + text "View Full:" + cvar "ui_browserShowFull" + textscale .25 + rect 387 71 125 20 + textalign 0 + textalignx 0 + textaligny 17 + forecolor 1 1 1 1 + visible 1 + action { uiScript RefreshFilter ; + play "sound/misc/nomenu.wav" } + mouseEnter { show message_viewFull } + mouseExit { hide message_viewFull } + } + + + + + +// BACK BAR // + + + itemDef { + name gotobar + style 2 + rect 0 430 640 30 + textscale 0.4 + textalign 0 // center + textalignx 60 // x alignment point for text + // use it to offset left/right text from the edge + // or to center the text on a different point + textaligny 21 + style 2 + border 4 + bordercolor 0.5 0.5 0.5 0.5 + bordersize 2 + backcolor 0 0 .75 0.5 + visible 1 + mouseEnter { setcolor backcolor .75 0 0 .5 } + mouseExit { setcolor backcolor 0 0 .75 .5 } + decoration + } + + itemDef { + name back + style 3 + background "ui/assets/backarrow.tga" + rect 16 424 50 50 + visible 1 + action { close joinserver ; open main } + mouseEnter { hide back ; show back_alt ; show message_back } + } + +itemDef { + name back_alt + style WINDOW_STYLE_SHADER + background "ui/assets/backarrow_alt.tga" + rect 14 422 54 54 + backcolor 0 0 0 0 + forecolor 1 1 1 1 + visible 0 + type ITEM_TYPE_BUTTON + mouseExit { hide back_alt ; show back ; hide message_back } + action { close joinserver ; open main } + } + + + + + itemDef { + name accept + style 3 + rect 574 424 50 50 + background "ui/assets/forwardarrow.tga" + backcolor 0 0 0 0 + forecolor 1 1 1 1 + visible 1 + mouseEnter { show lightning ; hide accept ; show accept_alt ; show message_accept ; playlooped "sound/misc/loop_electricity_05.wav" } + action { uiScript JoinServer } + } + + itemDef { + name accept_alt + style WINDOW_STYLE_SHADER + rect 572 422 54 54 + background "ui/assets/forwardarrow_alt.tga" + backcolor 0 0 0 0 + type ITEM_TYPE_BUTTON + forecolor 1 1 1 1 + visible 0 + type ITEM_TYPE_BUTTON + mouseExit { hide lightning ; hide accept_alt ; show accept ; hide message_accept ; playlooped "music/fla_mp03.wav" } + action { uiScript JoinServer } + + } + + itemDef { + name lightning + style 3 + background lightningkc + rect 46 385 246 128 + visible 0 + decoration + } +itemDef { + name lightning + style 3 + background lightningkc + rect 345 385 246 128 + visible 0 + decoration + } + + + +// MESSAGES // + +itemDef { + name message_back + group grpmessage + style 0 + rect 320 430 128 30 + textalign 1 + textstyle 1 + textalignx 0 + textaligny 25 + textscale .416 + text "Exit to Main Menu" + forecolor 1 1 1 1 + decoration + visible 0 + } + +itemDef { + name message_accept + group grpmessage + style 0 + rect 320 430 128 30 + textalign 1 + textalignx 0 + textstyle 1 + textaligny 25 + textscale .416 + text "Join Arena" + forecolor 1 1 1 1 + decoration + visible 0 + } +itemDef { + name message_source + group grpmessage + style 0 + rect 320 430 128 30 + textalign 1 + textstyle 1 + textalignx 0 + textaligny 25 + textscale .416 + text "Set Source" + forecolor 1 1 1 1 + decoration + visible 0 + } + +itemDef { + name message_gamefilter + group grpmessage + style 0 + rect 320 430 128 30 + textalign 1 + textstyle 1 + textalignx 0 + textaligny 25 + textscale .416 + text "Set to Filter for Specific Game Mods" + forecolor 1 1 1 1 + decoration + visible 0 + } +itemDef { + name message_typefilter + group grpmessage + style 0 + rect 320 430 128 30 + textalign 1 + textstyle 1 + textalignx 0 + textaligny 25 + textscale .416 + text "Set to Filter for Specific Game Types" + forecolor 1 1 1 1 + decoration + visible 0 + } + +itemDef { + name message_sort + group grpmessage + style 0 + rect 320 430 128 30 + textalign 1 + textstyle 1 + textalignx 0 + textaligny 25 + textscale .416 + text "Sort Column" + forecolor 1 1 1 1 + decoration + visible 0 + } +itemDef { + name message_refreshSource + group grpmessage + style 0 + rect 320 430 128 30 + textalign 1 + textstyle 1 + textalignx 0 + textaligny 25 + textscale .416 + text "Get Updated Server List from Current Source" + forecolor 1 1 1 1 + decoration + visible 0 + } +itemDef { + name message_refreshFilter + group grpmessage + style 0 + rect 320 430 128 30 + textalign 1 + textstyle 1 + textalignx 0 + textaligny 25 + textscale .416 + text "Refresh All Currently Filtered Servers" + forecolor 1 1 1 1 + decoration + visible 0 + } +itemDef { + name message_addFavorite + group grpmessage + style 0 + rect 320 430 128 30 + textalign 1 + textstyle 1 + textalignx 0 + textaligny 25 + textscale .416 + text "Add Selected Server to Favorites" + forecolor 1 1 1 1 + decoration + visible 0 + } +itemDef { + name message_delFavorite + group grpmessage + style 0 + rect 320 430 128 30 + textalign 1 + textstyle 1 + textalignx 0 + textaligny 25 + textscale .416 + text "Delete Selected Server from Favorites" + forecolor 1 1 1 1 + decoration + visible 0 + } +itemDef { + name message_createFavorite + group grpmessage + style 0 + rect 320 430 128 30 + textalign 1 + textstyle 1 + textalignx 0 + textaligny 25 + textscale .416 + text "Enter IP Address of Favorite Server" + forecolor 1 1 1 1 + decoration + visible 0 + } +itemDef { + name message_addfilter + group grpmessage + style 0 + rect 320 430 128 30 + textalign 1 + textstyle 1 + textalignx 0 + textaligny 25 + textscale .416 + text "Enter Four Letter Filter and Description" + forecolor 1 1 1 1 + decoration + visible 0 + } +itemDef { + name message_password + group grpmessage + style 0 + rect 320 430 128 30 + textalign 1 + textstyle 1 + textalignx 0 + textaligny 25 + textscale .416 + text "Enter Password for Protected Servers" + forecolor 1 1 1 1 + decoration + visible 0 + } +itemDef { + name message_serverinfo + group grpmessage + style 0 + rect 320 430 128 30 + textalign 1 + textstyle 1 + textalignx 0 + textaligny 25 + textscale .416 + text "Display Server Information" + forecolor 1 1 1 1 + decoration + visible 0 + } +itemDef { + name message_findplayer + group grpmessage + style 0 + rect 320 430 128 30 + textalign 1 + textstyle 1 + textalignx 0 + textaligny 25 + textscale .416 + text "Search Current Server List for Friends" + forecolor 1 1 1 1 + decoration + visible 0 + } + + +itemDef { + name fadebox + style WINDOW_STYLE_FILLED + background "ui/assets/fadebox.tga" + forecolor 0 0 0 1 + backcolor 0 0 0 1 + rect 0 0 640 480 + visible 1 + decoration + } + + + + +} + + +} + + diff --git a/ta_ui/ui/main.menu b/ta_ui/ui/main.menu new file mode 100644 index 00000000..68cb4122 --- /dev/null +++ b/ta_ui/ui/main.menu @@ -0,0 +1,559 @@ +#include "ui/menudef.h" + +{ + assetGlobalDef { + font "fonts/font" 16 // font + smallFont "fonts/smallfont" 12 // font + bigFont "fonts/bigfont" 20 // font + cursor "ui/assets/3_cursor3" // cursor + gradientBar "ui/assets/gradientbar2.tga" // gradient bar + itemFocusSound "sound/misc/menu2.wav" // sound for item getting focus (via keyboard or mouse ) + + fadeClamp 1.0 // sets the fadeup alpha + fadeCycle 1 // how often fade happens in milliseconds + fadeAmount 0.1 // amount to adjust alpha per cycle + + shadowColor 0.1 0.1 0.1 0.25 // shadow color + } + + + + + +menuDef { + name "main" + background "menuback_a" // Spinning Circle Background + fullScreen MENU_TRUE + rect 0 0 640 480 // Size and position of the menu + visible MENU_TRUE // Visible on open + focusColor 1 .75 0 1 // Menu focus color for text and items + + + onOpen { + setitemcolor fadebox backcolor 0 0 0 1 ; + playlooped "music/sonic1.wav" ; + fadeout fadebox ; + transition cinematic 390 198 250 1 390 163 250 155 20 12 ; + transition menuback_d 0 198 250 1 0 163 255 155 20 12 ; + transition menuback_b 0 198 640 1 0 163 640 155 20 12 ; + transition teamArenaBar 80 55 520 1 80 40 520 30 20 10 ; + transition singlebar 0 95 640 1 0 80 640 30 20 10 ; + transition optionbar 0 375 640 1 0 360 640 30 20 10 ; + transition quitbar 0 419 640 1 0 404 640 30 20 10 ; + play "sound/misc/tim_pump.wav" ; + uiScript stopRefresh ; + } + + onESC { open quit_popmenu } + + + +itemDef { + name modelselection //Precache player model + ownerdraw UI_PLAYERMODEL //Ownerdraw for player models + rect 0 0 0 0 + style 1 + decoration + visible 1 + } + + +itemDef { + name menuback_e // Flashing and rotating light + style WINDOW_STYLE_SHADER + rect 0 163 640 155 + background "menuback_e" + visible 1 + decoration + } + + + +itemDef { + name menuback_b // Transparent Blue Effect + style WINDOW_STYLE_SHADER + rect 0 163 640 155 + visible 1 + background "menuback_b" + bordercolor 0.5 0.5 0.5 .7 + decoration + } + + + + + +itemDef { + name cinematic + style 5 // Style for cinematic + cinematic "mpintro.roq" + rect 390 163 250 155 + backcolor 1 1 1 .25 + decoration + visible 1 + } + + + + +itemDef { + name menuback_d // Team arena text + style WINDOW_STYLE_SHADER + rect 0 163 255 155 + background "menuback_d" + visible 1 + decoration + } + +itemDef { + name windowscreen // Vertical Line Image + rect 0 0 640 240 + style 3 + background levelshotdetail + forecolor 0 0 0 0 + visible 1 + decoration + } +itemDef { + name windowscreen // Vertical Line Image + rect 0 240 640 240 + style 3 + background levelshotdetail + forecolor 0 0 0 0 + visible 1 + decoration + } + + +itemDef { + name menuback_c // Center medal image + style WINDOW_STYLE_SHADER + rect 205 123 235 235 + background "menuback_c" + visible 1 + decoration + } + + + + + + + + +// GAMETYPE // + +itemDef { + name teamArenaBar + style 2 + rect 80 40 520 30 + backcolor 0 0 .75 .25 + border 4 + bordercolor 0.5 0.5 0.5 1 + bordersize 1 + visible 1 + mouseEnter { hide gametype ; show teamarena ; setcolor backcolor .75 0 0 .25 } + mouseExit { show gametype ; hide teamarena ; setcolor backcolor 0 0 .75 .25 } + decoration + } + + + +itemDef { + name gametype + type 1 + text "TEAM ARENA" + style 0 + textstyle 6 + rect 0 40 640 30 + forecolor 1 1 1 1 + textalignx 320 + textaligny 24 + textalign 1 + textscale .416 + visible 1 + } + + + + + +itemDef { + name teamarena + type 1 + text "Quake3" + style 0 + textstyle 6 + rect 120 40 80 30 + textscale .333 + textalign 1 + textalignx 40 + textaligny 22 + backcolor 0 0 0 0 + forecolor 1 1 1 1 + visible 0 + action { play "sound/misc/kcaction.wav" ; + open quake3_popmenu } +} + +itemDef { + name teamarena + text "Rules" + type 1 + style 0 + textstyle 6 + rect 200 40 80 30 + textscale .333 + textalignx 40 + textaligny 22 + textalign 1 + backcolor 0 0 0 0 + forecolor 1 1 1 1 + visible 0 + action { play "sound/misc/kcaction.wav" ; + close main ; + open help_menu } + } + +itemDef { + name teamarena + text "Credits" + type 1 + textstyle 6 + textscale .333 + style 0 + rect 280 40 80 30 + textalignx 40 + textaligny 22 + textalign 1 + backcolor 0 0 0 0 + forecolor 1 1 1 1 + visible 0 + action { play "sound/misc/kcaction.wav" ; + close main ; + open credit } + } + + +itemDef { + name teamarena + text "Mods" + type 1 + style 0 + textstyle 6 + textscale .333 + rect 360 40 80 30 + textalignx 40 + textaligny 22 + textalign 1 + backcolor 0 0 0 0 + forecolor 1 1 1 1 + visible 0 + action { play "sound/misc/kcaction.wav" ; + close main ; + open mod } + } +itemDef { + name teamarena + text "Cinematics" + type 1 + style 0 + textstyle 6 + textscale .333 + rect 440 40 80 30 + textalignx 40 + textaligny 22 + textalign 1 + backcolor 0 0 0 0 + forecolor 1 1 1 1 + visible 0 + action { play "sound/misc/kcaction.wav" ; + close main ; + open cinematicMenu } + } + + + + + + +// SINGLEPLAYER // + +itemDef { + name singlebar + style 2 + rect 0 80 640 30 + backcolor 0 0 .75 .25 + border 4 + bordercolor 0.5 0.5 0.5 1 + bordersize 1 + visible 1 + mouseEnter { setcolor backcolor .75 0 0 .25 ; hide play ; show playselection } + mouseExit { setcolor backcolor 0 0 .75 .25 ; show play ; hide playselection } + decoration + } + + +itemDef { + name play + text "PLAY" + type 1 + style 0 + textstyle 6 + rect 0 80 640 30 + textalign 1 + textscale .416 + textalignx 320 + textaligny 24 + forecolor 1 1 1 1 + visible 1 + } + + +itemDef { + name playselection + text "SinglePlayer" + type 1 + textstyle 6 + rect 170 80 100 30 + textalignx 50 + textaligny 22 + textscale .333 + textalign 1 + forecolor 1 1 1 1 + visible 0 + action { play "sound/misc/kcaction.wav" ; + close main ; + open Skirmish } + } + + +itemDef { + name playselection + text "MultiPlayer" + type 1 + style 0 + textstyle 6 + rect 270 80 100 30 + textalign 1 // center + textalignx 50 + textaligny 22 + textscale .333 + forecolor 1 1 1 1 + visible 0 + action { play "sound/misc/kcaction.wav" ; + close main ; + open joinserver } + } + + + +itemDef { + name playselection + text "StartServer" + type 1 + style 0 + textstyle 6 + rect 370 80 100 30 + textalign 1 // center + textalignx 50 + textaligny 22 + textscale .333 + forecolor 1 1 1 1 + visible 0 + action { play "sound/misc/kcaction.wav" ; + close main ; + open createserver } + } + + + +// OPTIONS // +itemDef { + name optionbar + style 2 + rect 0 360 640 30 + backcolor 0 0 1 .25 + border 4 + bordercolor 0.5 0.5 0.5 1 + bordersize 1 + visible 1 + mouseEnter { setcolor backcolor .75 0 0 .25 ; hide options ; show optionselection } + mouseExit { setcolor backcolor 0 0 .75 .25 ; show options ; hide optionselection } + decoration + } + + +itemDef { + name options + text "OPTIONS" + style 0 + type 1 + textstyle 6 + rect 0 360 640 30 + textalignx 320 + textaligny 24 + textscale .416 + textalign 1 + forecolor 1 1 1 1 + visible 1 + } + +itemDef { + name optionselection + text "Player" + style 0 + type 1 + textstyle 6 + rect 170 360 100 30 + textalignx 50 + textaligny 22 + textscale .333 + textalign 1 + forecolor 1 1 1 1 + visible 0 + action { play "sound/misc/kcaction.wav" ; + close main ; + open player_menu } + } + + +itemDef { + name optionselection + text "Setup" + type 1 + style 0 + textstyle 6 + rect 270 360 100 30 + textalignx 50 + textaligny 22 + textscale .333 + textalign 1 + forecolor 1 1 1 1 + visible 0 + action { play "sound/misc/kcaction.wav" ; + close main ; + open setup_menu ; + open control_menu } + } + +itemDef { + name optionselection + text "Demos" + type 1 + style 0 + textstyle 6 + rect 370 360 100 30 + textalignx 50 + textaligny 22 + textscale .333 + textalign 1 + forecolor 1 1 1 1 + visible 0 + action { play "sound/misc/kcaction.wav" ; + close main ; + open demo } + } + + + +// QUIT // + +itemDef { + name quitbar + style 2 + rect 0 404 640 30 + backcolor 0 0 1 .25 + border 4 + bordercolor 0.5 0.5 0.5 1 + bordersize 1 + visible 1 + decoration + } + + + +itemDef { + name quit + text "QUIT" + style 0 + type 1 + textstyle 6 + rect 0 404 640 30 + textalignx 320 + textaligny 24 + textscale .416 + textalign 1 + forecolor 1 1 1 1 + visible 1 + action { play "sound/misc/kcaction.wav" ; + open quit_popmenu } + mouseEnter { setitemcolor quitbar backcolor .75 0 0 .25 } + mouseExit { setitemcolor quitbar backcolor 0 0 .75 .25 } + } + +/* + +// DEMO ONLY OPTION // + +itemDef { + name copyright + // demo_only + text "Demo Version Only. Content Warning: Contains Depictions of Violence." + style 0 + textscale .25 + rect 0 425 640 40 + textalign 1 + textaligny 32 + textalignx 320 + forecolor 1 .75 0 1 + visible 1 + decoration + } +*/ + + + +itemDef { + name copyright + text "Quake III: Team Arena Copyright 2000 Id Software, Inc. All rights reserved" + style 0 + textscale .25 + rect 0 440 640 40 + textalign 1 + textaligny 32 + textalignx 320 + forecolor .75 0 0 .75 + visible 1 + decoration + } + +itemDef { + name fadebox // Box for fading in menus + style WINDOW_STYLE_FILLED + background "ui/assets/fadebox.tga" + forecolor 0 0 0 1 + backcolor 0 0 0 1 + rect 0 0 640 480 + visible 1 + decoration + } + + + + + + + + +} +} +} + + } + + + + } + +} \ No newline at end of file diff --git a/ta_ui/ui/main2.menu b/ta_ui/ui/main2.menu new file mode 100644 index 00000000..53662bc4 --- /dev/null +++ b/ta_ui/ui/main2.menu @@ -0,0 +1,686 @@ +#include "ui/menudef.h" + +{ + assetGlobalDef { + font "fonts/impact.ttf" 16 // font + smallFont "fonts/impact.ttf" 12 // font + bigFont "fonts/impact.ttf" 20 // font + cursor "menu/art/3_cursor3" // cursor + gradientBar "ui/assets/gradientbar2.tga" // gradient bar + //menuEnterSound "sound/misc/menu1.wav" // sound for menu loading + //menuExitSound "sound/misc/menu3.wav" // sound for menu exiting + itemFocusSound "sound/misc/menu2.wav" // sound for item getting focus (via keyboard or mouse ) + //menuBuzzSound "sound/misc/menu4.wav" // sound for menu buzzing + + fadeClamp 1.0 // sets the fadeup alpha + fadeCycle 1 // how often fade happens in milliseconds + fadeAmount 0.1 // amount to adjust alpha per cycle + + //shadowX 5 // x amount for shadow offset + //shadowY 5 // y amount for shadow offset + shadowColor 0.1 0.1 0.1 0.25 // shadow color + } + + + + + +menuDef { + name "main" + background "menuback_a" + fullScreen MENU_TRUE + rect 0 0 640 480 + visible MENU_TRUE + focusColor 1 .75 0 1 + soundLoop "music/fla_mp03.wav" + onESC { open quit_popmenu } + + + + + +itemDef { + name menuback_e + style WINDOW_STYLE_SHADER + rect 0 163 640 155 + background "menuback_e" + visible 1 + decoration + } + + + +itemDef { + name menuback_b + style WINDOW_STYLE_SHADER + rect 0 163 640 155 + visible 1 + background "menuback_b" + bordercolor 0.5 0.5 0.5 .7 + decoration + } + + + + + +itemDef { + name cinematic + style 5 + cinematic "mpintro.roq" + rect 390 163 250 155 + backcolor 1 1 1 .25 + decoration + visible 1 + } + + + + +itemDef { + name menuback_d + style WINDOW_STYLE_SHADER + rect 0 163 255 155 + background "menuback_d" + visible 1 + decoration + } + + +itemDef { + name menuback_c + style WINDOW_STYLE_SHADER + rect 205 123 235 235 + background "menuback_c" + visible 1 + decoration + } + +itemDef { + name selection + style WINDOW_STYLE_SHADER + rect 205 123 235 235 + background "ui/assets/mainpop.tga" + forecolor 1 1 1 .75 + visible 0 + decoration + } + +itemDef { + name selection + rect 252 170 144 144 + style 3 + background "centerconsole2" + visible 0 + decoration + } + + + + + + + +// GAMETYPE // + +itemDef { + name gametypebar + style 2 + rect 80 40 520 30 + backcolor 0 0 .75 .25 + border 4 + bordercolor 0.5 0.5 0.5 1 + bordersize 1 + visible 1 + mouseEnter { hide gametype ; show teamarena ; setcolor backcolor .75 0 0 .25 ; show selection } + mouseExit { show gametype ; hide teamarena ; setcolor backcolor 0 0 .75 .25 ; hide selection ; hide grpMessage } + decoration + } + + + +itemDef { + name gametype + type 1 + text "TEAM ARENA" + style 0 + textstyle 6 + rect 0 40 640 30 + forecolor 1 1 1 1 + textalignx 320 + textaligny 23 + textalign 1 + textscale .416 + visible 1 + } + +itemDef { + name teamarena + type 1 + text "Quake3" + style 0 + textstyle 6 + rect 200 40 60 30 + textscale .333 + textalign 1 + textalignx 30 + textaligny 22 + backcolor 0 0 0 0 + forecolor 1 1 1 1 + visible 0 + mouseenter { fadein message_quake } + mouseexit { fadeout message_quake } + action { open quake3_popmenu } +} + +itemDef { + name teamarena + text "Rules" + type 1 + style 0 + textstyle 6 + rect 260 40 60 30 + textscale .333 + textalignx 30 + textaligny 22 + textalign 1 + backcolor 0 0 0 0 + forecolor 1 1 1 1 + visible 0 + mouseenter { fadein message_help } + mouseexit { fadeout message_help } + action { close main ; open help_menu } + } + +itemDef { + name teamarena + text "Credits" + type 1 + textstyle 6 + textscale .333 + style 0 + rect 320 40 60 30 + textalignx 30 + textaligny 22 + textalign 1 + backcolor 0 0 0 0 + forecolor 1 1 1 1 + visible 0 + mouseenter { fadein message_credits } + mouseexit { fadeout message_credits } + action { close main ; open credit } + } + + +itemDef { + name teamarena + text "Mods" + type 1 + style 0 + textstyle 6 + textscale .333 + rect 380 40 60 30 + textalignx 30 + textaligny 22 + textalign 1 + backcolor 0 0 0 0 + forecolor 1 1 1 1 + visible 0 + mouseenter { fadein message_mods } + mouseexit { fadeout message_mods } + action { close main ; open mod } + } + + + + + + +// SINGLEPLAYER // + +itemDef { + name singlebar + style 2 + rect 0 80 640 30 + backcolor 0 0 .75 .25 + border 4 + bordercolor 0.5 0.5 0.5 1 + bordersize 1 + visible 1 + mouseEnter { setcolor backcolor .75 0 0 .25 ; hide play ; show playselection ; show selection } + mouseExit { setcolor backcolor 0 0 .75 .25 ; show play ; hide playselection ; hide selection ; hide grpMessage } + decoration + } + + +itemDef { + name play + text "PLAY" + type 1 + style 0 + textstyle 6 + rect 0 80 640 30 + textalign 1 + textscale .416 + textalignx 320 + textaligny 23 + forecolor 1 1 1 1 + visible 1 + } + + +itemDef { + name playselection + text "SinglePlayer" + type 1 + textstyle 6 + rect 170 80 100 30 + textalignx 50 + textaligny 22 + textscale .333 + textalign 1 + forecolor 1 1 1 1 + visible 0 + mouseenter { fadein message_singleplayer } + mouseexit { fadeout message_singleplayer } + action { close main ; open Skirmish } + } + + +itemDef { + name playselection + text "MultiPlayer" + type 1 + style 0 + textstyle 6 + rect 270 80 100 30 + textalign 1 // center + textalignx 50 + textaligny 22 + textscale .333 + forecolor 1 1 1 1 + visible 0 + mouseenter { fadein message_multiplayer } + mouseexit { fadeout message_multiplayer } + action { close main ; open joinserver } + } + + + +itemDef { + name playselection + text "StartServer" + type 1 + style 0 + textstyle 6 + rect 370 80 100 30 + textalign 1 // center + textalignx 50 + textaligny 22 + textscale .333 + forecolor 1 1 1 1 + visible 0 + mouseenter { fadein message_startserver } + mouseexit { fadeout message_startserver } + action { close main ; open createserver } + } + + + +// OPTIONS // +itemDef { + name optionbar + style 2 + rect 0 360 640 30 + backcolor 0 0 1 .25 + border 4 + bordercolor 0.5 0.5 0.5 1 + bordersize 1 + visible 1 + mouseEnter { setcolor backcolor .75 0 0 .25 ; hide options ; show optionselection ; show selection } + mouseExit { setcolor backcolor 0 0 .75 .25 ; show options ; hide optionselection ; hide selection ; hide grpMessage } + decoration + } + + +itemDef { + name options + text "OPTIONS" + style 0 + type 1 + textstyle 6 + rect 0 360 640 30 + textalignx 320 + textaligny 23 + textscale .416 + textalign 1 + forecolor 1 1 1 1 + visible 1 + mouseenter { fadein message_options } + mouseexit { fadeout message_options } + } + +itemDef { + name optionselection + text "Player" + style 0 + type 1 + textstyle 6 + rect 170 360 100 30 + textalignx 50 + textaligny 22 + textscale .333 + textalign 1 + forecolor 1 1 1 1 + visible 0 + mouseenter { fadein message_player } + mouseexit { fadeout message_player } + action { close main ; open player_menu } + } + + +itemDef { + name optionselection + text "Setup" + type 1 + style 0 + textstyle 6 + rect 270 360 100 30 + textalignx 50 + textaligny 22 + textscale .333 + textalign 1 + forecolor 1 1 1 1 + visible 0 + mouseenter { fadein message_setup } + mouseexit { fadeout message_setup } + action { close main ; open setup_menu ; open control_menu } + } + +itemDef { + name optionselection + text "Demos" + type 1 + style 0 + textstyle 6 + rect 370 360 100 30 + textalignx 50 + textaligny 22 + textscale .333 + textalign 1 + forecolor 1 1 1 1 + visible 0 + mouseenter { fadein message_demos } + mouseexit { fadeout message_demos } + action { close main ; open demo } + } + +// QUIT // + +itemDef { + name quitbar + style 2 + rect 0 404 640 30 + backcolor 0 0 1 .25 + border 4 + bordercolor 0.5 0.5 0.5 1 + bordersize 1 + visible 1 + decoration + } + + + +itemDef { + name quit + text "QUIT" + style 0 + type 1 + textstyle 6 + rect 0 404 640 30 + textalignx 320 + textaligny 23 + textscale .416 + textalign 1 + forecolor 1 1 1 1 + visible 1 + action { open quit_popmenu } + mouseEnter { setitemcolor quitbar backcolor .75 0 0 .25 ; show selection ; show message_quit } + mouseExit { setitemcolor quitbar backcolor 0 0 .75 .25 ; hide selection ; fadeout message_quit ; hide grpMessage } + } + + + +itemDef { + name copyright + text "Quake III Copyright 2000 id software, inc. All rights reserved" + style 0 + textscale .25 + rect 0 440 640 40 + textalign 1 + textaligny 32 + textalignx 320 + forecolor .75 0 0 .75 + visible 1 + decoration + } + +// MESSAGES // + +itemDef { + name message_quake + group grpMessage + style 0 + rect 265 210 235 20 + textalign 0 + textstyle 1 + textalignx 0 + textaligny 25 + wrapped + textscale .333 + text "Play the Original \r" + "Quake III Game." + forecolor 1 1 1 1 + decoration + visible 0 + } +itemDef { + name message_help + group grpMessage + style 0 + rect 261 195 235 20 + textalign 0 + textstyle 1 + textalignx 0 + textaligny 25 + wrapped + textscale .333 + text " Rules for \r" + "New Gametytpes,\r" + " Powerups, and\r" + " Team Orders." + forecolor 1 1 1 1 + decoration + visible 0 + } +itemDef { + name message_credits + group grpMessage + style 0 + rect 272 220 235 20 + textalign 0 + textstyle 1 + textalignx 0 + textaligny 25 + wrapped + textscale .333 + text " About Us." + forecolor 1 1 1 1 + decoration + visible 0 + } + +itemDef { + name message_mods + group grpMessage + style 0 + rect 256 210 235 20 + textalign 0 + textstyle 1 + textalignx 0 + textaligny 25 + wrapped + textscale .333 + text " Modifications of\r" + "Quake III by other \r" + " Developers." + forecolor 1 1 1 1 + decoration + visible 0 + } +itemDef { + name message_singleplayer + group grpMessage + style 0 + rect 260 205 235 20 + textalign 0 + textstyle 1 + textalignx 0 + textaligny 25 + wrapped + textscale .333 + text " Challenge Your\r" + "Skills Against the\r" + " Computer." + forecolor 1 1 1 1 + decoration + visible 0 + } +itemDef { + name message_multiplayer + group grpMessage + style 0 + rect 265 205 235 20 + textalign 0 + textstyle 1 + textalignx 0 + textaligny 25 + wrapped + textscale .333 + text "Join other Team \r" + "Arena Games on\r" + " LAN or Internet." + forecolor 1 1 1 1 + decoration + visible 0 + } +itemDef { + name message_startserver + group grpMessage + style 0 + rect 272 205 235 20 + textalign 0 + textstyle 1 + textalignx 0 + textaligny 25 + wrapped + textscale .333 + text " Start a Game\r" + " Server for\r" + "Others to Join." + forecolor 1 1 1 1 + decoration + visible 0 + } +itemDef { + name message_player + group grpMessage + style 0 + rect 275 205 235 20 + textalign 0 + textstyle 1 + textalignx 0 + textaligny 25 + wrapped + textscale .333 + text " Select Your\r" + "Player Model\r" + " and Clan." + forecolor 1 1 1 1 + decoration + visible 0 + } +itemDef { + name message_setup + group grpMessage + style 0 + rect 257 205 235 20 + textalign 0 + textstyle 1 + textalignx 0 + textaligny 25 + wrapped + textscale .333 + text " Set Controls,\r" + "Game Options, and \r" + " System Settings." + forecolor 1 1 1 1 + decoration + visible 0 + } +itemDef { + name message_demos + group grpMessage + style 0 + rect 258 210 235 20 + textalign 0 + textstyle 1 + textalignx 0 + textaligny 25 + wrapped + textscale .333 + text " View Recorded\r" + "Team Arena Game." + forecolor 1 1 1 1 + decoration + visible 0 + } +itemDef { + name message_quit + group grpMessage + style 0 + rect 258 225 235 20 + textalign 0 + textstyle 1 + textalignx 0 + textaligny 25 + wrapped + textscale .333 + text " Get to Work!" + forecolor 1 1 1 1 + decoration + visible 0 + } + + + + + + } + +} + + + + +} +} +} + + } + + + + } + +} \ No newline at end of file diff --git a/ta_ui/ui/menudef.h b/ta_ui/ui/menudef.h new file mode 100644 index 00000000..ef235672 --- /dev/null +++ b/ta_ui/ui/menudef.h @@ -0,0 +1,287 @@ + +#define ITEM_TYPE_TEXT 0 // simple text +#define ITEM_TYPE_BUTTON 1 // button, basically text with a border +#define ITEM_TYPE_RADIOBUTTON 2 // toggle button, may be grouped +#define ITEM_TYPE_CHECKBOX 3 // check box +#define ITEM_TYPE_EDITFIELD 4 // editable text, associated with a cvar +#define ITEM_TYPE_COMBO 5 // drop down list +#define ITEM_TYPE_LISTBOX 6 // scrollable list +#define ITEM_TYPE_MODEL 7 // model +#define ITEM_TYPE_OWNERDRAW 8 // owner draw, name specs what it is +#define ITEM_TYPE_NUMERICFIELD 9 // editable text, associated with a cvar +#define ITEM_TYPE_SLIDER 10 // mouse speed, volume, etc. +#define ITEM_TYPE_YESNO 11 // yes no cvar setting +#define ITEM_TYPE_MULTI 12 // multiple list setting, enumerated +#define ITEM_TYPE_BIND 13 // multiple list setting, enumerated + +#define ITEM_ALIGN_LEFT 0 // left alignment +#define ITEM_ALIGN_CENTER 1 // center alignment +#define ITEM_ALIGN_RIGHT 2 // right alignment + +#define ITEM_TEXTSTYLE_NORMAL 0 // normal text +#define ITEM_TEXTSTYLE_BLINK 1 // fast blinking +#define ITEM_TEXTSTYLE_PULSE 2 // slow pulsing +#define ITEM_TEXTSTYLE_SHADOWED 3 // drop shadow ( need a color for this ) +#define ITEM_TEXTSTYLE_OUTLINED 4 // drop shadow ( need a color for this ) +#define ITEM_TEXTSTYLE_OUTLINESHADOWED 5 // drop shadow ( need a color for this ) +#define ITEM_TEXTSTYLE_SHADOWEDMORE 6 // drop shadow ( need a color for this ) + +#define WINDOW_BORDER_NONE 0 // no border +#define WINDOW_BORDER_FULL 1 // full border based on border color ( single pixel ) +#define WINDOW_BORDER_HORZ 2 // horizontal borders only +#define WINDOW_BORDER_VERT 3 // vertical borders only +#define WINDOW_BORDER_KCGRADIENT 4 // horizontal border using the gradient bars + +#define WINDOW_STYLE_EMPTY 0 // no background +#define WINDOW_STYLE_FILLED 1 // filled with background color +#define WINDOW_STYLE_GRADIENT 2 // gradient bar based on background color +#define WINDOW_STYLE_SHADER 3 // gradient bar based on background color +#define WINDOW_STYLE_TEAMCOLOR 4 // team color +#define WINDOW_STYLE_CINEMATIC 5 // cinematic + +#define MENU_TRUE 1 // uh.. true +#define MENU_FALSE 0 // and false + +#define HUD_VERTICAL 0x00 +#define HUD_HORIZONTAL 0x01 + +// list box element types +#define LISTBOX_TEXT 0x00 +#define LISTBOX_IMAGE 0x01 + +// list feeders +#define FEEDER_HEADS 0x00 // model heads +#define FEEDER_MAPS 0x01 // text maps based on game type +#define FEEDER_SERVERS 0x02 // servers +#define FEEDER_CLANS 0x03 // clan names +#define FEEDER_ALLMAPS 0x04 // all maps available, in graphic format +#define FEEDER_REDTEAM_LIST 0x05 // red team members +#define FEEDER_BLUETEAM_LIST 0x06 // blue team members +#define FEEDER_PLAYER_LIST 0x07 // players +#define FEEDER_TEAM_LIST 0x08 // team members for team voting +#define FEEDER_MODS 0x09 // team members for team voting +#define FEEDER_DEMOS 0x0a // team members for team voting +#define FEEDER_SCOREBOARD 0x0b // team members for team voting +#define FEEDER_Q3HEADS 0x0c // model heads +#define FEEDER_SERVERSTATUS 0x0d // server status +#define FEEDER_FINDPLAYER 0x0e // find player +#define FEEDER_CINEMATICS 0x0f // cinematics + +// display flags +#define CG_SHOW_BLUE_TEAM_HAS_REDFLAG 0x00000001 +#define CG_SHOW_RED_TEAM_HAS_BLUEFLAG 0x00000002 +#define CG_SHOW_ANYTEAMGAME 0x00000004 +#define CG_SHOW_HARVESTER 0x00000008 +#define CG_SHOW_ONEFLAG 0x00000010 +#define CG_SHOW_CTF 0x00000020 +#define CG_SHOW_OBELISK 0x00000040 +#define CG_SHOW_HEALTHCRITICAL 0x00000080 +#define CG_SHOW_SINGLEPLAYER 0x00000100 +#define CG_SHOW_TOURNAMENT 0x00000200 +#define CG_SHOW_DURINGINCOMINGVOICE 0x00000400 +#define CG_SHOW_IF_PLAYER_HAS_FLAG 0x00000800 +#define CG_SHOW_LANPLAYONLY 0x00001000 +#define CG_SHOW_MINED 0x00002000 +#define CG_SHOW_HEALTHOK 0x00004000 +#define CG_SHOW_TEAMINFO 0x00008000 +#define CG_SHOW_NOTEAMINFO 0x00010000 +#define CG_SHOW_OTHERTEAMHASFLAG 0x00020000 +#define CG_SHOW_YOURTEAMHASENEMYFLAG 0x00040000 +#define CG_SHOW_ANYNONTEAMGAME 0x00080000 +#define CG_SHOW_2DONLY 0x10000000 + + +#define UI_SHOW_LEADER 0x00000001 +#define UI_SHOW_NOTLEADER 0x00000002 +#define UI_SHOW_FAVORITESERVERS 0x00000004 +#define UI_SHOW_ANYNONTEAMGAME 0x00000008 +#define UI_SHOW_ANYTEAMGAME 0x00000010 +#define UI_SHOW_NEWHIGHSCORE 0x00000020 +#define UI_SHOW_DEMOAVAILABLE 0x00000040 +#define UI_SHOW_NEWBESTTIME 0x00000080 +#define UI_SHOW_FFA 0x00000100 +#define UI_SHOW_NOTFFA 0x00000200 +#define UI_SHOW_NETANYNONTEAMGAME 0x00000400 +#define UI_SHOW_NETANYTEAMGAME 0x00000800 +#define UI_SHOW_NOTFAVORITESERVERS 0x00001000 + + + + +// owner draw types +// ideally these should be done outside of this file but +// this makes it much easier for the macro expansion to +// convert them for the designers ( from the .menu files ) +#define CG_OWNERDRAW_BASE 1 +#define CG_PLAYER_ARMOR_ICON 1 +#define CG_PLAYER_ARMOR_VALUE 2 +#define CG_PLAYER_HEAD 3 +#define CG_PLAYER_HEALTH 4 +#define CG_PLAYER_AMMO_ICON 5 +#define CG_PLAYER_AMMO_VALUE 6 +#define CG_SELECTEDPLAYER_HEAD 7 +#define CG_SELECTEDPLAYER_NAME 8 +#define CG_SELECTEDPLAYER_LOCATION 9 +#define CG_SELECTEDPLAYER_STATUS 10 +#define CG_SELECTEDPLAYER_WEAPON 11 +#define CG_SELECTEDPLAYER_POWERUP 12 + +#define CG_FLAGCARRIER_HEAD 13 +#define CG_FLAGCARRIER_NAME 14 +#define CG_FLAGCARRIER_LOCATION 15 +#define CG_FLAGCARRIER_STATUS 16 +#define CG_FLAGCARRIER_WEAPON 17 +#define CG_FLAGCARRIER_POWERUP 18 + +#define CG_PLAYER_ITEM 19 +#define CG_PLAYER_SCORE 20 + +#define CG_BLUE_FLAGHEAD 21 +#define CG_BLUE_FLAGSTATUS 22 +#define CG_BLUE_FLAGNAME 23 +#define CG_RED_FLAGHEAD 24 +#define CG_RED_FLAGSTATUS 25 +#define CG_RED_FLAGNAME 26 + +#define CG_BLUE_SCORE 27 +#define CG_RED_SCORE 28 +#define CG_RED_NAME 29 +#define CG_BLUE_NAME 30 +#define CG_HARVESTER_SKULLS 31 // only shows in harvester +#define CG_ONEFLAG_STATUS 32 // only shows in one flag +#define CG_PLAYER_LOCATION 33 +#define CG_TEAM_COLOR 34 +#define CG_CTF_POWERUP 35 + +#define CG_AREA_POWERUP 36 +#define CG_AREA_LAGOMETER 37 // painted with old system +#define CG_PLAYER_HASFLAG 38 +#define CG_GAME_TYPE 39 // not done + +#define CG_SELECTEDPLAYER_ARMOR 40 +#define CG_SELECTEDPLAYER_HEALTH 41 +#define CG_PLAYER_STATUS 42 +#define CG_FRAGGED_MSG 43 // painted with old system +#define CG_PROXMINED_MSG 44 // painted with old system +#define CG_AREA_FPSINFO 45 // painted with old system +#define CG_AREA_SYSTEMCHAT 46 // painted with old system +#define CG_AREA_TEAMCHAT 47 // painted with old system +#define CG_AREA_CHAT 48 // painted with old system +#define CG_GAME_STATUS 49 +#define CG_KILLER 50 +#define CG_PLAYER_ARMOR_ICON2D 51 +#define CG_PLAYER_AMMO_ICON2D 52 +#define CG_ACCURACY 53 +#define CG_ASSISTS 54 +#define CG_DEFEND 55 +#define CG_EXCELLENT 56 +#define CG_IMPRESSIVE 57 +#define CG_PERFECT 58 +#define CG_GAUNTLET 59 +#define CG_SPECTATORS 60 +#define CG_TEAMINFO 61 +#define CG_VOICE_HEAD 62 +#define CG_VOICE_NAME 63 +#define CG_PLAYER_HASFLAG2D 64 +#define CG_HARVESTER_SKULLS2D 65 // only shows in harvester +#define CG_CAPFRAGLIMIT 66 +#define CG_1STPLACE 67 +#define CG_2NDPLACE 68 +#define CG_CAPTURES 69 + + + + +#define UI_OWNERDRAW_BASE 200 +#define UI_HANDICAP 200 +#define UI_EFFECTS 201 +#define UI_PLAYERMODEL 202 +#define UI_CLANNAME 203 +#define UI_CLANLOGO 204 +#define UI_GAMETYPE 205 +#define UI_MAPPREVIEW 206 +#define UI_SKILL 207 +#define UI_BLUETEAMNAME 208 +#define UI_REDTEAMNAME 209 +#define UI_BLUETEAM1 210 +#define UI_BLUETEAM2 211 +#define UI_BLUETEAM3 212 +#define UI_BLUETEAM4 213 +#define UI_BLUETEAM5 214 +#define UI_REDTEAM1 215 +#define UI_REDTEAM2 216 +#define UI_REDTEAM3 217 +#define UI_REDTEAM4 218 +#define UI_REDTEAM5 219 +#define UI_NETSOURCE 220 +#define UI_NETMAPPREVIEW 221 +#define UI_NETFILTER 222 +#define UI_TIER 223 +#define UI_OPPONENTMODEL 224 +#define UI_TIERMAP1 225 +#define UI_TIERMAP2 226 +#define UI_TIERMAP3 227 +#define UI_PLAYERLOGO 228 +#define UI_OPPONENTLOGO 229 +#define UI_PLAYERLOGO_METAL 230 +#define UI_OPPONENTLOGO_METAL 231 +#define UI_PLAYERLOGO_NAME 232 +#define UI_OPPONENTLOGO_NAME 233 +#define UI_TIER_MAPNAME 234 +#define UI_TIER_GAMETYPE 235 +#define UI_ALLMAPS_SELECTION 236 +#define UI_OPPONENT_NAME 237 +#define UI_VOTE_KICK 238 +#define UI_BOTNAME 239 +#define UI_BOTSKILL 240 +#define UI_REDBLUE 241 +#define UI_CROSSHAIR 242 +#define UI_SELECTEDPLAYER 243 +#define UI_MAPCINEMATIC 244 +#define UI_NETGAMETYPE 245 +#define UI_NETMAPCINEMATIC 246 +#define UI_SERVERREFRESHDATE 247 +#define UI_SERVERMOTD 248 +#define UI_GLINFO 249 +#define UI_KEYBINDSTATUS 250 +#define UI_CLANCINEMATIC 251 +#define UI_MAP_TIMETOBEAT 252 +#define UI_JOINGAMETYPE 253 +#define UI_PREVIEWCINEMATIC 254 +#define UI_STARTMAPCINEMATIC 255 +#define UI_MAPS_SELECTION 256 + +#define VOICECHAT_GETFLAG "getflag" // command someone to get the flag +#define VOICECHAT_OFFENSE "offense" // command someone to go on offense +#define VOICECHAT_DEFEND "defend" // command someone to go on defense +#define VOICECHAT_DEFENDFLAG "defendflag" // command someone to defend the flag +#define VOICECHAT_PATROL "patrol" // command someone to go on patrol (roam) +#define VOICECHAT_CAMP "camp" // command someone to camp (we don't have sounds for this one) +#define VOICECHAT_FOLLOWME "followme" // command someone to follow you +#define VOICECHAT_RETURNFLAG "returnflag" // command someone to return our flag +#define VOICECHAT_FOLLOWFLAGCARRIER "followflagcarrier" // command someone to follow the flag carrier +#define VOICECHAT_YES "yes" // yes, affirmative, etc. +#define VOICECHAT_NO "no" // no, negative, etc. +#define VOICECHAT_ONGETFLAG "ongetflag" // I'm getting the flag +#define VOICECHAT_ONOFFENSE "onoffense" // I'm on offense +#define VOICECHAT_ONDEFENSE "ondefense" // I'm on defense +#define VOICECHAT_ONPATROL "onpatrol" // I'm on patrol (roaming) +#define VOICECHAT_ONCAMPING "oncamp" // I'm camping somewhere +#define VOICECHAT_ONFOLLOW "onfollow" // I'm following +#define VOICECHAT_ONFOLLOWCARRIER "onfollowcarrier" // I'm following the flag carrier +#define VOICECHAT_ONRETURNFLAG "onreturnflag" // I'm returning our flag +#define VOICECHAT_INPOSITION "inposition" // I'm in position +#define VOICECHAT_IHAVEFLAG "ihaveflag" // I have the flag +#define VOICECHAT_BASEATTACK "baseattack" // the base is under attack +#define VOICECHAT_ENEMYHASFLAG "enemyhasflag" // the enemy has our flag (CTF) +#define VOICECHAT_STARTLEADER "startleader" // I'm the leader +#define VOICECHAT_STOPLEADER "stopleader" // I resign leadership +#define VOICECHAT_TRASH "trash" // lots of trash talk +#define VOICECHAT_WHOISLEADER "whoisleader" // who is the team leader +#define VOICECHAT_WANTONDEFENSE "wantondefense" // I want to be on defense +#define VOICECHAT_WANTONOFFENSE "wantonoffense" // I want to be on offense +#define VOICECHAT_KILLINSULT "kill_insult" // I just killed you +#define VOICECHAT_TAUNT "taunt" // I want to taunt you +#define VOICECHAT_DEATHINSULT "death_insult" // you just killed me +#define VOICECHAT_KILLGAUNTLET "kill_gauntlet" // I just killed you with the gauntlet +#define VOICECHAT_PRAISE "praise" // you did something good diff --git a/ta_ui/ui/menus.txt b/ta_ui/ui/menus.txt new file mode 100644 index 00000000..5568ab0a --- /dev/null +++ b/ta_ui/ui/menus.txt @@ -0,0 +1,37 @@ +// menu defs +// +{ + loadMenu { "ui/main.menu" } + loadMenu { "ui/joinserver.menu" } + loadMenu { "ui/player.menu" } + loadMenu { "ui/setup.menu" } + loadMenu { "ui/fight.menu" } + loadMenu { "ui/skirmish.menu" } + loadMenu { "ui/createserver.menu" } + loadMenu { "ui/controls.menu" } + loadMenu { "ui/cdkey.menu" } + loadMenu { "ui/system.menu" } + loadMenu { "ui/options.menu" } + loadMenu { "ui/help.menu" } + loadMenu { "ui/ordershelp.menu" } + loadMenu { "ui/mod.menu" } + loadMenu { "ui/demo.menu" } + loadMenu { "ui/cinematicmenu.menu" } + loadMenu { "ui/credit.menu" } + loadMenu { "ui/demo_quit.menu" } + loadMenu { "ui/connect.menu" } + loadMenu { "ui/powerup.menu" } + loadMenu { "ui/password.menu" } + loadMenu { "ui/quake3.menu" } + loadMenu { "ui/quit.menu" } + loadMenu { "ui/vid_restart.menu" } + loadMenu { "ui/default.menu" } + loadMenu { "ui/addfilter.menu" } + loadMenu { "ui/error.menu" } + loadMenu { "ui/serverinfo.menu" } + loadMenu { "ui/findplayer.menu" } + loadMenu { "ui/endofgame.menu" } + loadMenu { "ui/quitcredit.menu" } + loadMenu { "ui/resetscore.menu" } + loadMenu { "ui/createfavorite.menu" } +} diff --git a/ta_ui/ui/min_hud.menu b/ta_ui/ui/min_hud.menu new file mode 100644 index 00000000..fff2702b --- /dev/null +++ b/ta_ui/ui/min_hud.menu @@ -0,0 +1,674 @@ +#include "ui/menudef.h" + +// team menu +// +// defines from ui_shared.h + +{ + assetGlobalDef { + cursor "ui/assets/3_cursor2" // cursor + gradientBar "ui/assets/gradientbar2.tga" // gradient bar + fadeClamp 1.0 // sets the fadeup alpha + fadeCycle 1 // how often fade happens in milliseconds + fadeAmount 0.1 // amount to adjust alpha per cycle + + shadowX 5 // x amount for shadow offset + shadowY 5 // y amount for shadow offset + shadowColor 0.1 0.1 0.1 0.25 // shadow color + + font "fonts/impact.ttf" 16 // font + smallFont "fonts/impact.ttf" 12 // font + bigFont "fonts/impact.ttf" 20 // font + + + } + + + + + + +// SELECTED PLAYER // + +menuDef { + name "SelectedPlayer" + fullScreen MENU_FALSE + visible 1 + rect 0 390 222 64 + ownerdrawflag CG_SHOW_ANYTEAMGAME + + + itemDef { + name "b" + rect 0 0 222 64 + style 4 + border 1 + bordersize 1 + bordercolor .5 .5 .5 1 + visible 1 + ownerdrawflag CG_SHOW_TEAMINFO + } + itemDef { + name "b" + rect 0 40 222 24 + style 4 + border 1 + bordersize 1 + bordercolor .5 .5 .5 1 + visible 1 + ownerdrawflag CG_SHOW_NOTEAMINFO + } + + + itemDef { + name "b" + rect 0 4 221 64 + visible 1 + textscale .2 + textaligny 10 + textalignx 0 + forecolor 1 1 1 1 + ownerdrawflag CG_SHOW_TEAMINFO + ownerdraw CG_TEAMINFO + } + + + itemDef { + name "b" + rect 2 41 20 20 + visible 1 + ownerdrawflag CG_SHOW_NOTEAMINFO + ownerdraw CG_SELECTEDPLAYER_HEAD + } +itemDef { + name "b" + rect 21 44 16 16 + visible 1 + decoration + ownerdrawflag CG_SHOW_NOTEAMINFO + ownerdraw CG_SELECTEDPLAYER_STATUS + } + + + itemDef { + name "b" + rect 41 43 35 15 + textscale 0.2125 + textstyle 3 + forecolor 1 1 1 1 + visible 1 + decoration + ownerdrawflag CG_SHOW_NOTEAMINFO + ownerdraw CG_SELECTEDPLAYER_NAME + } + +/* +itemDef { + name "b" + rect 90 43 45 15 + textscale 0.2125 + textstyle 3 + forecolor 1 1 1 1 + visible 1 + decoration + ownerdrawflag CG_SHOW_NOTEAMINFO + ownerdraw CG_SELECTEDPLAYER_LOCATION + } + +*/ + + + } + + +// PLAYER STATUS // + +menuDef { + name "playerStatus" + fullScreen MENU_FALSE + visible MENU_TRUE + rect 142 455 80 24 + + itemDef { + name "playerRect" + rect 1 1 78 22 + style 3 + background hudalert_good + visible 1 + ownerdrawflag CG_SHOW_IF_PLAYER_HAS_FLAG + } + + itemDef { + name "playerStatusRect" + style 4 + rect 0 0 80 24 + border 1 + bordersize 1 + bordercolor .5 .5 .5 1 + visible 1 + } + + + itemDef { + name "playeritem" + rect 5 4 16 16 + visible 1 + decoration + ownerdraw CG_PLAYER_ITEM + } + + itemDef { + name "CTFPOWERUP" + rect 25 4 16 16 + visible 1 + decoration + ownerdraw CG_CTF_POWERUP + } + + itemDef { + name "flag" + rect 45 4 16 16 + visible 1 + decoration + ownerdraw CG_PLAYER_HASFLAG2D + ownerdrawflag CG_SHOW_IF_PLAYER_HAS_FLAG + + } + + itemDef { + name "skulls" + rect 39 -14 40 32 + textaligny 4 + textalignx 0 + visible 1 + textscale .25 + decoration + textstyle 3 + ownerdraw CG_HARVESTER_SKULLS2D + } + + } + +// POWERUP AREA // + +menuDef { + name "powerup area" + fullScreen MENU_FALSE + visible MENU_TRUE + rect 0 455 141 24 + + +itemDef { + name "powerRect" + visible 1 + style 4 + rect 0 0 35 24 + } +itemDef { + name "powerRect" + visible 1 + style 4 + rect 70 0 35 24 + } + +itemDef { + name "powerRect" + visible 1 + style 4 + border 1 + bordersize 1 + bordercolor .5 .5 .5 1 + rect 0 0 141 24 + } + + + + itemDef { + name "powerupArea" + rect 2 3 18 18 + textscale .25 + visible 1 + decoration + ownerdraw CG_AREA_POWERUP + special 18 // spacing + align HUD_HORIZONTAL + } + + +} + + + +// AMMO // + +menuDef { + name "Ammo" + fullScreen MENU_FALSE + visible MENU_TRUE + rect 223 455 64 24 + + + itemDef { + name "ammoRect" + visible 1 + style 4 + border 1 + bordersize 1 + bordercolor .5 .5 .5 1 + rect 0 0 64 24 + } + + + itemDef { + name "a" + rect 30 1 24 19 + visible 1 + textstyle 3 + decoration + textscale .333 + forecolor 1 1 1 1 + ownerdraw CG_PLAYER_AMMO_VALUE + addColorRange -999 5 1 0 0 1 + addColorRange 6 999 1 .75 0 1 + } + + itemDef { + name "a" + rect 5 2 20 20 + visible 1 + decoration + ownerdraw CG_PLAYER_AMMO_ICON2D + } + + } + + + + + + +// PLAYER // + +menuDef { + name "Player" + fullScreen MENU_FALSE + visible MENU_TRUE + rect 288 455 64 24 + + itemDef { + name "playerRect" + rect 1 1 62 23 + style 3 + background hudalert + visible 1 + ownerdrawflag CG_SHOW_HEALTHCRITICAL + } + + itemDef { + name "playerRect" + rect 0 0 64 24 + style 4 + visible 1 + border 1 + bordersize 1 + bordercolor .5 .5 .5 1 + } + + + itemDef { + name "healthok" + rect 30 1 24 19 + visible 1 + textstyle 3 + decoration + forecolor 1 1 1 1 + textscale .333 + ownerdraw CG_PLAYER_HEALTH + addColorRange -999 25 1 0 0 1 + addColorRange 26 100 1 .75 0 1 + addColorRange 101 999 1 1 1 1 + } + + itemDef { + name "b" + rect 2 1 22 22 + visible 1 + decoration + ownerdraw CG_PLAYER_HEAD + } + } + + + + + + + +// ARMOR // + +menuDef { + name "Armor" + fullScreen MENU_FALSE + visible MENU_TRUE + rect 353 455 64 24 + + + itemDef { + name "armorRect" + rect 0 0 64 24 + visible 1 + style 4 + border 1 + bordersize 1 + bordercolor .5 .5 .5 1 + } + + itemDef { + name "armor" + rect 5 -8 20 20 + visible 1 + decoration + ownerdraw CG_PLAYER_ARMOR_ICON2D + } + + itemDef { + name "armor2" + textstyle 3 + rect 30 1 24 19 + visible 1 + decoration + textscale .333 + ownerdraw CG_PLAYER_ARMOR_VALUE + addColorRange -999 25 .67 0 0 1 + addColorRange 26 100 1 .75 0 1 + addColorRange 101 999 .75 .75 .75 1 + } + } + + + + + + +// TEAMSCORE // + +menuDef { + name "teamScore" + fullScreen MENU_FALSE + visible MENU_TRUE + rect 418 455 150 24 + ownerdrawflag CG_SHOW_ANYTEAMGAME + + itemDef { + name "teamRect" + rect 53 1 47 22 + style 3 + background hudalert_blue + visible 1 + ownerdrawflag CG_SHOW_BLUE_TEAM_HAS_REDFLAG + } + +itemDef { + name "teamRect" + rect 100 1 50 22 + style 3 + background hudalert_red + visible 1 + ownerdrawflag CG_SHOW_RED_TEAM_HAS_BLUEFLAG + } + + itemDef { + name "teamScoreRect" + visible 1 + rect 0 0 150 24 + border 1 + bordersize 1 + bordercolor .5 .5 .5 1 + style 4 + } + + itemDef { + name "f" + rect 55 5 16 16 + visible 1 + bordercolor 1 1 1 .75 + decoration + style 3 + background "ui/assets/bluechip.tga" + } +itemDef { + name "f" + rect 55 5 16 16 + visible 1 + bordercolor 1 1 1 .75 + decoration + style 3 + ownerdrawflag CG_SHOW_HARVESTER + background "icons/skull_blue.tga" + } + + itemDef { + name "blueflag" + rect 55 5 16 16 + visible 1 + decoration + ownerdrawflag CG_SHOW_CTF + ownerdraw CG_BLUE_FLAGSTATUS + } +itemDef { + name "playerScore" + rect 5 18 40 12 + visible 1 + textstyle 3 + decoration + forecolor 1 1 1 1 + textscale .25 + text "" + ownerdraw CG_CAPFRAGLIMIT + } + +itemDef { + name "oneflagstatus" + rect 34 5 16 16 + visible 1 + decoration + ownerdraw CG_ONEFLAG_STATUS + } + + itemDef { + name "r" + rect 71 6 18 12 + textstyle 3 + visible 1 + decoration + forecolor .25 .25 1 1 + textscale 0.25 + ownerdraw CG_BLUE_SCORE + } + + itemDef { + name "f" + rect 110 5 16 16 + visible 1 + bordercolor 1 1 1 1 + decoration + style 3 + background "ui/assets/redchip.tga" + } + + itemDef { + name "f" + rect 110 5 16 16 + visible 1 + bordercolor 1 1 1 1 + decoration + style 3 + ownerdrawflag CG_SHOW_HARVESTER + background "icons/skull_red.tga" + } + + itemDef { + name "f" + rect 110 5 16 16 + visible 1 + decoration + ownerdrawflag CG_SHOW_CTF + ownerdraw CG_RED_FLAGSTATUS + } + + + itemDef { + name "r" + rect 126 6 18 12 + textstyle 3 + visible 1 + decoration + forecolor 1 0 0 1 + textscale 0.25 + ownerdraw CG_RED_SCORE + } + } + +// TEAMSCORE // + +menuDef { + name "teamScore" + fullScreen MENU_FALSE + visible MENU_TRUE + rect 418 455 150 24 + ownerdrawflag CG_SHOW_ANYNONTEAMGAME + + + itemDef { + name "teamScoreRect" + visible 1 + rect 0 0 150 24 + border 1 + bordersize 1 + bordercolor .5 .5 .5 1 + style 4 + } + + + itemDef { + name "playerScore" + rect 8 18 40 0 + visible 1 + textstyle 3 + decoration + forecolor 1 1 1 1 + textscale .25 + text "" + ownerdraw CG_CAPFRAGLIMIT + } + + + + + itemDef { + name "r" + rect 40 18 18 12 + textstyle 3 + text "1st:" + visible 1 + decoration + forecolor .25 .25 1 1 + textscale 0.25 + ownerdraw CG_1STPLACE + } + + + itemDef { + name "r" + rect 105 18 18 12 + textstyle 3 + text "2nd:" + visible 1 + decoration + forecolor 1 0 0 1 + textscale 0.25 + ownerdraw CG_2NDPLACE + } + } + +// PLAYERSCORE // + +menuDef { + name "playerScore" + fullScreen MENU_FALSE + visible MENU_TRUE + rect 569 455 70 24 + + itemDef { + name "playerScoreRect" + visible 1 + rect 0 0 70 24 + border 1 + bordersize 1 + bordercolor .5 .5 .5 1 + style 4 + } + + + itemDef { + name "playerScore" + rect 4 6 75 12 + textstyle 3 + visible 1 + decoration + forecolor 1 1 1 1 + textscale .25 + ownerdraw CG_PLAYER_SCORE + } + +} + + + + + + + + + menuDef { + name "voiceMenu" + fullScreen MENU_FALSE + visible MENU_FALSE + rect 5 5 100 100 + + + itemDef { + name "voiceMenuRect" + style 4 + rect 2 2 50 50 + border 1 + bordersize 1 + bordercolor .5 .5 .5 1 + visible 1 + } + + itemDef { + name "b" + rect 2 2 50 50 + visible 1 + decoration + ownerdraw CG_VOICE_HEAD + } + + + itemDef { + name "b" + rect 2 55 50 12 + visible 1 + decoration + textscale .25 + textalign 0 + textalignx 0 + textaligny 12 + ownerdraw CG_VOICE_NAME + } + + + } + + diff --git a/ta_ui/ui/mod.menu b/ta_ui/ui/mod.menu new file mode 100644 index 00000000..cb2363e8 --- /dev/null +++ b/ta_ui/ui/mod.menu @@ -0,0 +1,303 @@ +#include "ui/menudef.h" + +{ +\\ MOD \\ + + menuDef { + name "mod" + visible 0 + fullscreen 1 + rect 0 0 640 480 + background "menuback_a" + focusColor 1 .67 0 1 + style 1 + border 1 + onEsc { close mod ; open main } + onOpen { setitemcolor fadebox backcolor 0 0 0 1 ; + playlooped "music/fla_mp03.wav" ; + fadeout fadebox ; + uiScript loadMods ; + hide lightning ; + hide accept_alt ; + show accept ; + hide back_alt ; + show back ; + hide grpmessage } + + + + + + + +// LEVEL SELECTION BAR // + + + itemDef { + name levelbar + text "TEAM ARENA MODS" + textstyle 6 + style 2 + rect 0 16 640 40 + textscale 0.416 + textalign 1 // center + textalignx 320 // x alignment point for text + // use it to offset left/right text from the edge + // or to center the text on a different point + textaligny 27 + style 2 + border 4 + bordercolor 0.5 0.5 0.5 0.5 + bordersize 2 + backcolor 0 0 .75 0.5 + visible 1 + decoration + } + + itemDef { + name teamarenaimage + style 3 + background "ui/assets/teamarenaimage.tga" + rect 0 80 220 115 + visible 1 + } + + +itemDef { + name mappreview + style 5 + cinematic "mpintro.roq" + rect 20 195 200 150 + backcolor 1 1 1 .25 + border 1 + bordersize 1 + bordercolor .5 .5 .5 1 + decoration + visible 1 + } +/* + +// DEMO ONLY // +itemDef { + name demo_only + style 0 + rect 240 250 360 20 + textstyle 1 + textalign 1 + textalignx 180 + textaligny 25 + textscale .333 + text "This Option is Not Available in Demo." + forecolor 1 1 1 1 + decoration + visible 1 + } + +*/ + + + +itemDef { + name modlist + rect 240 100 360 300 + type ITEM_TYPE_LISTBOX + style WINDOW_STYLE_FILLED + elementwidth 120 + elementheight 20 + textscale .25 + elementtype LISTBOX_TEXT + feeder FEEDER_MODS + textalign 3 + textaligny 14 + border 1 + bordercolor .5 .5 .5 .5 + forecolor 1 1 1 1 + backcolor 0 0 .5 .25 + outlinecolor .1 .1 .7 .5 + visible 1 + doubleClick { uiScript RunMod } + mouseEnter { fadein message_mod ; setitemcolor modlist bordercolor .7 0 0 1 } + mouseExit { fadeout message_mod ; setitemcolor modlist bordercolor .5 .5 .5 .5 } + } + + + + +// BACK BAR // + + + itemDef { + name gotobar + style 2 + rect 0 430 640 30 + textscale 0.4 + textalign 0 // center + textalignx 60 // x alignment point for text + // use it to offset left/right text from the edge + // or to center the text on a different point + textaligny 21 + style 2 + border 4 + bordercolor 0.5 0.5 0.5 0.5 + bordersize 2 + backcolor 0 0 .75 0.5 + visible 1 + mouseEnter { setcolor backcolor .75 0 0 .5 } + mouseExit { setcolor backcolor 0 0 .75 .5 } + decoration + } + + + + itemDef { + name back + style 3 + background "ui/assets/backarrow.tga" + rect 16 424 50 50 + visible 1 + action { close mod ; open main } + mouseEnter { hide back ; show back_alt ; fadein message_back } + } + +itemDef { + name back_alt + style WINDOW_STYLE_SHADER + background "ui/assets/backarrow_alt.tga" + rect 14 422 54 54 + backcolor 0 0 0 0 + forecolor 1 1 1 1 + visible 0 + type ITEM_TYPE_BUTTON + mouseExit { hide back_alt ; show back ; fadeout message_back } + action { close mod ; open main } + } + + + + + +itemDef { + name accept + style 3 + rect 574 424 50 50 + background "ui/assets/forwardarrow.tga" + backcolor 0 0 0 0 + forecolor 1 1 1 1 + visible 1 + mouseEnter { show lightning ; hide accept ; show accept_alt ; show message_accept ; playlooped "sound/misc/loop_electricity_05.wav" } + action { close mod ; uiScript RunMod } + } + +itemDef { + name accept_alt + style 3 + rect 572 422 54 54 + background "ui/assets/forwardarrow_alt.tga" + backcolor 0 0 0 0 + forecolor 1 1 1 1 + visible 0 + type ITEM_TYPE_BUTTON + action { close mod ; uiScript RunMod } + mouseExit { hide lightning ; hide accept_alt ; show accept ; hide message_accept ; playlooped "music/fla_mp03.wav" } + } + + + itemDef { + name lightning + style 3 + background lightningkc + rect 46 385 250 128 + visible 0 + decoration + } +itemDef { + name lightning + style 3 + background lightningkc + rect 341 385 250 128 + visible 0 + decoration + } + + + +// MESSAGES // + +itemDef { + name message_back + group grpmessage + style 0 + rect 320 430 128 30 + textstyle 1 + textalign 1 + textalignx 0 + textaligny 25 + textscale .416 + text "Exit to Main Menu" + forecolor 1 1 1 1 + decoration + visible 0 + } + +itemDef { + name message_accept + group grpmessage + style 0 + rect 320 430 128 30 + textalign 1 + textstyle 1 + textalignx 0 + textaligny 25 + textscale .416 + text "Play Mod" + forecolor 1 1 1 1 + decoration + visible 0 + } +itemDef { + name message_mod + group grpmessage + style 0 + rect 320 430 128 30 + textalign 1 + textstyle 1 + textalignx 0 + textaligny 25 + textscale .416 + text "Select Mod Name to Play" + forecolor 1 1 1 1 + decoration + visible 0 + } + + +itemDef { + name fadebox + style WINDOW_STYLE_FILLED + background "ui/assets/fadebox.tga" + forecolor 0 0 0 1 + backcolor 0 0 0 1 + rect 0 0 640 480 + visible 1 + decoration + } + + + + + + + +} + + + + + + + + +} + +} +} \ No newline at end of file diff --git a/ta_ui/ui/newleague.menu b/ta_ui/ui/newleague.menu new file mode 100644 index 00000000..23cf2645 --- /dev/null +++ b/ta_ui/ui/newleague.menu @@ -0,0 +1,67 @@ +#include "ui/menudef.h" + +{ +\\ NEW LEAGUE POPUP MENU \\ + +menuDef { + name "newleague_popmenu" + visible 0 + fullscreen 0 + rect 190 200 255 75 + outOfBoundsClick // this closes the window if it gets a click out of the rectangle + focusColor 1 .75 0 1 + style 1 + border 1 + +itemDef { + name window + rect 0 0 255 75 + style 1 + border 1 + bordercolor .5 .5 .5 1 + backcolor 0 0 .5 1 + visible 1 + decoration + } + + + // ENTER NEW LEAGUE NAME // + + +itemDef { + name newleague + group grpsettings + text "Name:" + style 0 + textscale .3 + ITEM_TYPE_EDITFIELD + rect 20 20 110 20 + textalign 0 + textalignx 0 + textaligny 16 + forecolor 1 1 1 1 + visible 1 + } + +itemDef { + name type + text "OK" + textscale .25 + group grpsettings + style WINDOW_STYLE_SHADER + background "ui/assets/button_red.tga" + rect 103 50 50 20 + textalign 1 + textalignx 25 + textaligny 15 + forecolor 1 1 1 1 + visible 1 + action { close newLeague_popmenu ; close createserver ; open createserver } +} + + +} + + + +} diff --git a/ta_ui/ui/options.menu b/ta_ui/ui/options.menu new file mode 100644 index 00000000..47e9a7fd --- /dev/null +++ b/ta_ui/ui/options.menu @@ -0,0 +1,351 @@ +#include "ui/menudef.h" + +{ +\\ SETUP MENU \\ + +menuDef { + name "options_menu" + visible 0 + fullscreen 0 + rect 186 0 443 426 + focusColor 1 .75 0 1 + style 1 + border 1 + onOpen { setitemcolor fadebox backcolor 0 0 0 1 ; + fadeout fadebox } + onEsc { close options_menu ; close setup_menu ; open main } + + + + +itemDef { + name window + group grpControlbutton + rect 0 2 443 426 + style WINDOW_STYLE_FILLED + border 1 + bordercolor .5 .5 .5 .5 + forecolor 1 1 1 1 + backcolor 0 0 0 .25 + visible 1 + decoration +} + + + + + + + itemDef { + name options + group grpOptions + type ITEM_TYPE_YESNO + text "Simple Items:" + cvar "cg_simpleItems" + rect 99 15 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .3 + forecolor 1 1 1 1 + visible 1 + } + + itemDef { + name options + group grpOptions + type ITEM_TYPE_YESNO + text "Marks On Walls:" + cvar "cg_marks" + rect 99 35 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .3 + forecolor 1 1 1 1 + visible 1 + } + + itemDef { + name options + group grpOptions + type ITEM_TYPE_YESNO + text "Show Floating Scores:" + cvar "cg_scorePlums" + rect 99 55 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .3 + forecolor 1 1 1 1 + visible 1 + } + + itemDef { + name options + group grpOptions + text "Ejecting Brass:" + type ITEM_TYPE_MULTI + cvar "cg_brassTime" + cvarFloatList { "High" 2500 "Med" 1250 "Off" 0 } + rect 99 75 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .3 + forecolor 1 1 1 1 + visible 1 + } + + itemDef { + name options + group grpOptions + type ITEM_TYPE_YESNO + text "Dynamic Lights:" + cvar "r_dynamiclight" + rect 99 95 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .3 + forecolor 1 1 1 1 + visible 1 + } + + itemDef { + name options + group grpOptions + type ITEM_TYPE_YESNO + text "Identify Target:" + cvar "cg_drawCrosshairNames" + rect 99 115 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .3 + forecolor 1 1 1 1 + visible 1 + } + + itemDef { + name options + group grpOptions + type ITEM_TYPE_YESNO + text "Draw Gun:" + cvar "cg_drawGun" + rect 99 135 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .3 + forecolor 1 1 1 1 + visible 1 + } + + itemDef { + name options + group grpOptions + type ITEM_TYPE_YESNO + text "Low Quality Sky:" + cvar "r_fastsky" + rect 99 155 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .3 + forecolor 1 1 1 1 + visible 1 + } + + itemDef { + name options + group grpOptions + type ITEM_TYPE_YESNO + text "Sync Every Frame:" + cvar "weapon 5" + rect 99 175 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .3 + forecolor 1 1 1 1 + visible 1 + } + + itemDef { + name options + group grpOptions + type ITEM_TYPE_YESNO + text "Force Player Models:" + cvar "cg_forceModel" + rect 99 195 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .3 + forecolor 1 1 1 1 + visible 1 + } + + itemDef { + name options + group grpOptions + type ITEM_TYPE_YESNO + text "Draw Team Overlay:" + cvar "cg_drawTeamOverlay" + rect 99 215 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .3 + forecolor 1 1 1 1 + visible 1 + } + itemDef { + name options + group grpOptions + type ITEM_TYPE_YESNO + text "Auto Download:" + cvar "cl_allowDownload" + rect 99 235 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .3 + forecolor 1 1 1 1 + visible 1 + } + itemDef { + name options + group grpOptions + type ITEM_TYPE_YESNO + text "Show Time:" + cvar "cg_drawTimer" + rect 99 255 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .3 + forecolor 1 1 1 1 + visible 1 + } + itemDef { + name options + group grpOptions + type ITEM_TYPE_YESNO + text "Voices Off:" + cvar "cg_NoVoiceChats" + rect 99 275 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .3 + forecolor 1 1 1 1 + visible 1 + } + itemDef { + name options + group grpOptions + type ITEM_TYPE_YESNO + text "Taunts Off:" + cvar "cg_noTaunt" + rect 99 295 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .3 + forecolor 1 1 1 1 + visible 1 + } + itemDef { + name options + group grpOptions + type ITEM_TYPE_YESNO + text "Voice Text Off:" + cvar "cg_noVoiceText" + rect 99 315 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .3 + forecolor 1 1 1 1 + visible 1 + } + itemDef { + name options + group grpOptions + type ITEM_TYPE_YESNO + text "Team Chats Only:" + cvar "cg_teamChatsOnly" + rect 99 335 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .3 + forecolor 1 1 1 1 + visible 1 + } + + itemDef { + name options + group grpOptions + type ITEM_TYPE_YESNO + text "In Game Video:" + cvar "r_inGameVideo" + rect 99 355 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .3 + forecolor 1 1 1 1 + visible 1 + } + +itemDef { + name options + group grpOptions + type ITEM_TYPE_MULTI + text "Statusbar:" + cvar "cg_hudfiles" + cvarStrList { Normal "ui/hud.txt" Small "ui/hud2.txt" } + rect 99 375 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .3 + forecolor 1 1 1 1 + visible 1 + } + +itemDef { + name options + group grpOptions + text "Crosshair:" + rect 227 395 20 20 + ownerdraw UI_CROSSHAIR + textalign ITEM_ALIGN_RIGHT + textalignx 0 + textaligny 20 + textscale .3 + forecolor 1 1 1 1 + visible 1 + } + + +itemDef { + name fadebox + style WINDOW_STYLE_FILLED + background "ui/assets/fadebox.tga" + forecolor 0 0 0 1 + backcolor 0 0 0 1 + rect 0 0 640 480 + visible 1 + decoration + } + + + + + + +} diff --git a/ta_ui/ui/ordershelp.menu b/ta_ui/ui/ordershelp.menu new file mode 100644 index 00000000..1cc93172 --- /dev/null +++ b/ta_ui/ui/ordershelp.menu @@ -0,0 +1,1020 @@ +#include "ui/menudef.h" + +{ +\\ ordersHelp \\ + + menuDef { + name "ordersHelp_menu" + visible 0 + fullscreen 0 + rect 0 90 640 340 + focusColor 1 .67 0 1 + border 1 + style 1 + soundLoop "music/fla_mp03.wav" + onEsc { close help_menu ; close powerup_menu ; close ordersHelp_menu ; open main } + onOpen { setitemcolor fadebox backcolor 0 0 0 1 ; + fadeout fadebox ; + hide grphelptext ; + show helptext ; + hide grpIconAlt ; + hide grpVoiceHead } + + + +// ORDERS ICONS // + + +itemDef { + name helpIcon + style WINDOW_STYLE_SHADER + rect 37 2 32 32 + visible 1 + background "ui/assets/help.tga" + decoration + } + +itemDef { + name attackIcon + style WINDOW_STYLE_SHADER + rect 113 2 32 32 + visible 1 + background "ui/assets/assault.tga" + decoration + } + +itemDef { + name campIcon + style WINDOW_STYLE_SHADER + rect 189 2 32 32 + visible 1 + background "ui/assets/camp.tga" + decoration + } + + +itemDef { + name defendIcon + style WINDOW_STYLE_SHADER + rect 265 2 32 32 + visible 1 + background "ui/assets/defend.tga" + decoration + } + + +itemDef { + name followIcon + style WINDOW_STYLE_SHADER + rect 341 2 32 32 + visible 1 + background "ui/assets/follow.tga" + decoration + } + + +itemDef { + name patrolIcon + style WINDOW_STYLE_SHADER + rect 415 2 32 32 + visible 1 + background "ui/assets/patrol.tga" + decoration + } + +itemDef { + name retrieveIcon + style WINDOW_STYLE_SHADER + rect 489 2 32 32 + visible 1 + background "ui/assets/retrieve.tga" + decoration + } + +itemDef { + name escortIcon + style WINDOW_STYLE_SHADER + rect 563 2 32 32 + visible 1 + background "ui/assets/escort.tga" + decoration + } + + + +// ORDERS ICONS ALT // + + +itemDef { + name helpIconAlt + group grpIconAlt + style WINDOW_STYLE_SHADER + rect 35 0 34 34 + visible 1 + background "ui/assets/help.tga" + decoration + } + +itemDef { + name attackIconAlt + group grpIconAlt + style WINDOW_STYLE_SHADER + rect 111 0 34 34 + visible 1 + background "ui/assets/assault.tga" + decoration + } + +itemDef { + name campIconAlt + group grpIconAlt + style WINDOW_STYLE_SHADER + rect 187 0 34 34 + visible 1 + background "ui/assets/camp.tga" + decoration + } + + +itemDef { + name defendIconAlt + group grpIconAlt + style WINDOW_STYLE_SHADER + rect 263 0 34 34 + visible 1 + background "ui/assets/defend.tga" + decoration + } + + +itemDef { + name followIconAlt + group grpIconAlt + style WINDOW_STYLE_SHADER + rect 339 0 34 34 + visible 1 + background "ui/assets/follow.tga" + decoration + } + + +itemDef { + name patrolIconAlt + group grpIconAlt + style WINDOW_STYLE_SHADER + rect 413 0 34 34 + visible 1 + background "ui/assets/patrol.tga" + decoration + } + +itemDef { + name retrieveIconAlt + group grpIconAlt + style WINDOW_STYLE_SHADER + rect 487 0 34 34 + visible 1 + background "ui/assets/retrieve.tga" + decoration + } + +itemDef { + name escortIconAlt + group grpIconAlt + style WINDOW_STYLE_SHADER + rect 561 0 34 34 + visible 1 + background "ui/assets/escort.tga" + decoration + } + + + +// Leader // + + + + +itemDef { + name Help + rect 28 37 50 26 + type 1 + text "Help" + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + textalign 1 + textscale .25 + textalignx 25 + textaligny 20 + visible 1 + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + action { hide grphelptext ; show helptext ; play "sound/misc/kcaction.wav" } + mouseEnter { setitemcolor help backcolor .1 .37 .1 1 ; hide helpIcon ; show helpIconAlt ; hide grpVoiceHead } + mouseExit { setitemcolor help backcolor .37 .1 .1 1 ; hide helpIconAlt ; show helpIcon } + } +itemDef { + name help + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/framebutton.tga" + rect 28 37 50 26 + visible 1 + decoration + } + +itemDef { + name help + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/leftbutton.tga" + rect 22 37 7 26 + visible 1 + decoration + } + +itemDef { + name help + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/rightbutton.tga" + rect 77 37 7 26 + visible 1 + decoration + } + + + + +// Attack // + + + +itemDef { + name attack + style 0 + rect 104 37 50 26 + text "Attack" + style WINDOW_STYLE_FILLED + type 1 + background "ui/assets/button_back.tga" + textalign 1 + textscale .25 + textalignx 25 + textaligny 20 + visible 1 + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + action { hide grphelptext ; show attacktext ; exec "play sound/voices/male1/or_03.wav" ; show grpVoiceHead } + mouseEnter { setitemcolor attack backcolor .1 .37 .1 1 ; hide attackIcon ; show attackIconAlt ; hide grpVoiceHead } + mouseExit { setitemcolor attack backcolor .37 .1 .1 1 ; hide attackIconAlt ; show attackIcon } + } +itemDef { + name attack + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/framebutton.tga" + rect 104 37 50 26 + visible 1 + decoration + } + +itemDef { + name attack + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/leftbutton.tga" + rect 98 37 7 26 + visible 1 + decoration + } + +itemDef { + name attack + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/rightbutton.tga" + rect 153 37 7 26 + visible 1 + decoration + } + + + +// CAMP // + + + +itemDef { + name camp + style 0 + rect 180 37 50 26 + type 1 + text "Camp" + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + textalign 1 + textscale .25 + textalignx 25 + textaligny 20 + visible 1 + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + action { hide grphelptext ; show camptext ; exec "play sound/voices/male1/voc_01.wav" ; show grpVoiceHead } + mouseEnter { setitemcolor camp backcolor .1 .37 .1 1 ; hide campIcon ; show campIconAlt ; hide grpVoiceHead } + mouseExit { setitemcolor camp backcolor .37 .1 .1 1 ; hide campIconAlt ; show campIcon } + } +itemDef { + name camp + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/framebutton.tga" + rect 180 37 50 26 + visible 1 + decoration + } + +itemDef { + name camp + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/leftbutton.tga" + rect 174 37 7 26 + visible 1 + decoration + } + +itemDef { + name camp + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/rightbutton.tga" + rect 229 37 7 26 + visible 1 + decoration + } + + + +// DEFEND // + + + +itemDef { + name defend + style 0 + rect 256 37 50 26 + type 1 + text "Defend" + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + textalign 1 + textscale .25 + textalignx 25 + textaligny 20 + visible 1 + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + action { hide grphelptext ; show defendtext ; exec "play sound/voices/male1/or_05.wav" ; show grpVoiceHead } + mouseEnter { setitemcolor defend backcolor .1 .37 .1 1 ; hide defendIcon ; show defendIconAlt ; hide grpVoiceHead } + mouseExit { setitemcolor defend backcolor .37 .1 .1 1 ; hide defendIconAlt ; show defendIcon } + } +itemDef { + name defend + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/framebutton.tga" + rect 256 37 50 26 + visible 1 + decoration + } + +itemDef { + name defend + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/leftbutton.tga" + rect 250 37 7 26 + visible 1 + decoration + } + +itemDef { + name defend + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/rightbutton.tga" + rect 305 37 7 26 + visible 1 + decoration + } + + + +// FOLLOW // + + + +itemDef { + name follow + type 1 + rect 332 37 50 26 + text "Follow" + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + textalign 1 + textscale .25 + textalignx 25 + textaligny 20 + visible 1 + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + action { hide grphelptext ; show followtext ; exec "play sound/voices/male1/or_11.wav" ; show grpVoiceHead } + mouseEnter { setitemcolor follow backcolor .1 .37 .1 1 ; hide followIcon ; show followIconAlt ; hide grpVoiceHead } + mouseExit { setitemcolor follow backcolor .37 .1 .1 1 ; hide followIconAlt ; show followIcon } + } + +itemDef { + name follow + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/framebutton.tga" + rect 332 37 50 26 + visible 1 + decoration + } + +itemDef { + name follow + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/leftbutton.tga" + rect 326 37 7 26 + visible 1 + decoration + } + +itemDef { + name follow + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/rightbutton.tga" + rect 381 37 7 26 + visible 1 + decoration + } + + + + +// PATROL // + + +itemDef { + name patrol + rect 406 37 50 26 + type 1 + text "Patrol" + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + textalign 1 + textscale .25 + textalignx 25 + textaligny 20 + visible 1 + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + action { hide grphelptext ; show patroltext ; exec "play sound/voices/male1/or_10.wav" ; show grpVoiceHead } + mouseEnter { setitemcolor patrol backcolor .1 .37 .1 1 ; hide patrolIcon ; show patrolIconAlt ; hide grpVoiceHead } + mouseExit { setitemcolor patrol backcolor .37 .1 .1 1 ; hide patrolIconAlt ; show patrolIcon } + } +itemDef { + name patrol + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/framebutton.tga" + rect 406 37 50 26 + visible 1 + decoration + } + +itemDef { + name patrol + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/leftbutton.tga" + rect 400 37 7 26 + visible 1 + decoration + } + +itemDef { + name patrol + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/rightbutton.tga" + rect 455 37 7 26 + visible 1 + decoration + } + + + +// RETRIEVE // + + + +itemDef { + name retrieve + rect 480 37 50 26 + type 1 + text "Retrieve" + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + textalign 1 + textscale .25 + textalignx 25 + textaligny 20 + visible 1 + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + action { hide grphelptext ; show retrievetext ; exec "play sound/voices/male1/voc_05.wav" ; show grpVoiceHead } + mouseEnter { setitemcolor retrieve backcolor .1 .37 .1 1 ; hide retrieveIcon ; show retrieveIconAlt ; hide grpVoiceHead } + mouseExit { setitemcolor retrieve backcolor .37 .1 .1 1 ; hide retrieveIconAlt ; show retrieveIcon } + } +itemDef { + name retrieve + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/framebutton.tga" + rect 480 37 50 26 + visible 1 + decoration + } + +itemDef { + name retrieve + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/leftbutton.tga" + rect 474 37 7 26 + visible 1 + decoration + } + +itemDef { + name retrieve + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/rightbutton.tga" + rect 529 37 7 26 + visible 1 + decoration + } + +// ESCORT // + + + +itemDef { + name escort + rect 554 37 50 26 + type 1 + text "Escort" + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + textalign 1 + textscale .25 + textalignx 25 + textaligny 20 + visible 1 + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + action { hide grphelptext ; show escorttext ; exec "play sound/voices/male1/voc_11.wav" ; show grpVoiceHead } + mouseEnter { setitemcolor escort backcolor .1 .37 .1 1 ; hide escortIcon ; show escortIconAlt ; hide grpVoiceHead } + mouseExit { setitemcolor escort backcolor .37 .1 .1 1 ; hide escortIconAlt ; show escortIcon } + } +itemDef { + name escort + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/framebutton.tga" + rect 554 37 50 26 + visible 1 + decoration + } + +itemDef { + name escort + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/leftbutton.tga" + rect 548 37 7 26 + visible 1 + decoration + } + +itemDef { + name escort + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/rightbutton.tga" + rect 603 37 7 26 + visible 1 + decoration + } + +// VOICE HEAD // + + + + + itemDef { + name "b" + group grpVoiceHead + rect 40 102 50 50 + visible 1 + style WINDOW_STYLE_SHADER + background "ui/assets/head5.tga" + decoration + } + + itemDef { + name "b" + group grpVoiceHead + rect 40 102 50 50 + style WINDOW_STYLE_SHADER + background "menuscreen2" + visible 1 + decoration + } + + itemDef { + name "voiceWindow" + group grpVoiceHead + visible 1 + style 3 + background "ui/assets/voice_window.tga" + rect 38 100 54 54 + } + + + + +// TEXT MESSAGES // + + +// LEADER // + +itemDef { + name helptext + group grphelptext + style 0 + wrapped + text "Help" + rect 140 94 500 20 + textalign 0 + textalignx 0 + textaligny 17 + textscale .3 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 0 + decoration + } + +itemDef { + name helptext + group grphelptext + style 0 + wrapped + text "Only Leaders can give orders to someone else on the team. \r" + "Any player can change their own status. Orders are given through \r" + "the ingame Orders menu or the HUD system using the Next Team Member \r" + "and Next Orders commands. If you receive an order, you can either \r" + "Confirm or Deny that order. You must have keys bound to those two \r" + "commands. If you confirm the order, your status will automatically \r" + "update to reflect your new status." + rect 140 124 500 20 + textalign 0 + textalignx 0 + textaligny 17 + textscale .25 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 0 + decoration + } + + +// Attack // + +itemDef { + name attacktext + group grphelptext + style 0 + wrapped + text "Attack" + rect 140 94 500 20 + textalign 0 + textalignx 0 + textaligny 17 + textscale .3 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 0 + decoration + } + +itemDef { + name attacktext + group grphelptext + style 0 + wrapped + text "Command your team member to assault the enemy and the enemy Base.\r" + "In Capture the Flag and One Flag CTF, it orders the team member to get the \r" + "opposing team's flag (CTF), or the white flag (One Flag CTF)." + rect 140 124 500 20 + textalign 0 + textalignx 0 + textaligny 17 + textscale .25 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 0 + decoration + } + + + + +// CAMP // + + +itemDef { + name camptext + group grphelptext + style 0 + wrapped + text "Camp" + rect 140 94 500 20 + textalign 0 + textalignx 0 + textaligny 17 + textscale .3 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 0 + decoration + } + +itemDef { + name camptext + group grphelptext + style 0 + wrapped + text "Command your team member to stay at YOUR current location." + rect 140 124 500 20 + textalign 0 + textalignx 0 + textaligny 17 + textscale .25 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 0 + decoration + } + + +// Defend // + +itemDef { + name defendtext + group grphelptext + style 0 + wrapped + text "Defend" + rect 140 94 500 20 + textalign 0 + textalignx 0 + textaligny 17 + textscale .3 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 0 + decoration + } + +itemDef { + name defendtext + group grphelptext + style 0 + wrapped + text "Command your team member to guard your team's Base." + rect 140 124 500 20 + textalign 0 + textalignx 0 + textaligny 17 + textscale .25 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 0 + decoration + } + + +// Follow // + + +itemDef { + name followtext + group grphelptext + style 0 + wrapped + text "Follow" + rect 140 94 500 20 + textalign 0 + textalignx 0 + textaligny 17 + textscale .3 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 0 + decoration + } +itemDef { + name followtext + group grphelptext + style 0 + wrapped + text "Command your team member to follow you." + rect 140 124 500 20 + textalign 0 + textalignx 0 + textaligny 17 + textscale .25 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 0 + decoration + } + + + +// Patrol // + +itemDef { + name patroltext + group grphelptext + style 0 + wrapped + text "Patrol" + rect 140 94 500 20 + textalign 0 + textalignx 0 + textaligny 17 + textscale .3 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 0 + decoration + } + +itemDef { + name patroltext + group grphelptext + style 0 + wrapped + text "Command your team member to patrol between Bases and \r" + "determine their own actions based upon the situation. \r" + "Basically, this command frees the team member \r" + "to act independently of your orders." + rect 140 124 500 20 + textalign 0 + textalignx 0 + textaligny 17 + textscale .25 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 0 + decoration + } + +// Retrieve // + +itemDef { + name retrievetext + group grphelptext + style 0 + wrapped + text "Retrieve" + rect 140 94 500 20 + textalign 0 + textalignx 0 + textaligny 17 + textscale .3 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 0 + decoration + } + +itemDef { + name retrievetext + group grphelptext + style 0 + wrapped + text "If your flag is taken from the base in Capture the Flag, this orders \r" + "your team member to find the stolen flag and return it. In One Flag CTF, \r" + "it orders the team member to take the white flag from the opposition. \r" + "This status can only occur in Capture the Flag or One Flag CTF matches." + rect 140 124 500 20 + textalign 0 + textalignx 0 + textaligny 17 + textscale .25 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 0 + decoration + } + + +// ESCORT // + +itemDef { + name escorttext + group grphelptext + style 0 + wrapped + text "Escort" + rect 140 94 500 20 + textalign 0 + textalignx 0 + textaligny 17 + textscale .3 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 0 + decoration + } + +itemDef { + name escorttext + group grphelptext + style 0 + wrapped + text "This will command your team member to escort the flag \r" + "carrier to the enemy Base. This command can only be given \r" + "Capture the Flag and One Flag CTF matches." + rect 140 124 500 20 + textalign 0 + textalignx 0 + textaligny 17 + textscale .25 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 0 + decoration + } + +itemDef { + name fadebox + style WINDOW_STYLE_FILLED + background "ui/assets/fadebox.tga" + forecolor 0 0 0 1 + backcolor 0 0 0 1 + rect 0 0 640 480 + visible 1 + decoration + } + + + + + + + + + + +} + +} +} \ No newline at end of file diff --git a/ta_ui/ui/password.menu b/ta_ui/ui/password.menu new file mode 100644 index 00000000..3f52bbb9 --- /dev/null +++ b/ta_ui/ui/password.menu @@ -0,0 +1,147 @@ +#include "ui/menudef.h" + +{ +\\ PASSWORD POPUP MENU \\ + +menuDef { + name "password_popmenu" + visible 0 + fullscreen 0 + rect 204 122 235 235 + focusColor 1 .75 0 1 + style 1 + border 1 + popup + onESC { close password_popmenu ; open joinserver } + + + +itemDef { + name window + rect 0 0 235 235 + style 3 + background "ui/assets/mainpop.tga" + visible 1 + decoration + } +itemDef { + name window + rect 47 47 144 144 + style 3 + background "centerconsole2" + visible 1 + decoration + } + + + + + + // PASSWORD // + +itemDef { + name password + text "Password" + style 0 + decoration + textscale .3 + rect 1 87 110 20 + textalign 1 + textalignx 117 + textaligny 16 + forecolor 0 0 0 1 + visible 1 + + } +itemDef { + name password + text "Password" + style 0 + decoration + textscale .3 + rect 0 86 110 20 + textalign 1 + textalignx 117 + textaligny 16 + forecolor 1 1 1 1 + visible 1 + } +itemDef { + name passwordEntry + style 1 + text ":" + maxchars 15 + textscale .25 + TYPE 4 + cvar "password" + rect 50 106 130 20 + textalign 0 + textalignx 0 + textaligny 16 + forecolor 1 1 1 1 + backcolor 0 0 0 .5 + visible 1 + mouseenter { setitemcolor passwordEntry backcolor 0 0 0 .75 } + mouseexit { setitemcolor passwordEntry backcolor 0 0 0 .5 } + } + + + +itemDef { + name yes + text "Ok" + type 1 + textscale .25 + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + rect 103 140 30 26 + textalign 1 + textalignx 15 + textaligny 20 + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + visible 1 + action { play "sound/misc/nomenu.wav" ; + close password_popmenu ; open joinserver } + mouseEnter { setitemcolor yes backcolor .1 .37 .1 1 } + mouseExit { setitemcolor yes backcolor .37 .1 .1 1 } + } + + itemDef { + name yes + style WINDOW_STYLE_SHADER + background "ui/assets/framebutton.tga" + rect 103 140 30 26 + visible 1 + decoration + } + + itemDef { + name yes + style WINDOW_STYLE_SHADER + background "ui/assets/leftbutton.tga" + rect 97 140 7 26 + visible 1 + decoration + } + + itemDef { + name yes + style WINDOW_STYLE_SHADER + background "ui/assets/rightbutton.tga" + rect 132 140 7 26 + visible 1 + decoration + } + + + + + + + +} + + + +} diff --git a/ta_ui/ui/player.menu b/ta_ui/ui/player.menu new file mode 100644 index 00000000..790da8a0 --- /dev/null +++ b/ta_ui/ui/player.menu @@ -0,0 +1,612 @@ +#include "ui/menudef.h" + +{ +\\ PLATER SELECTION MENU \\ + +menuDef { + name "player_menu" + visible 0 + fullscreen 1 + rect 0 0 640 480 + background "menuback_a" + style 1 + focusColor 1 .75 0 1 + + onOpen { play "sound/misc/kcswish.wav" ; + playlooped "music/fla_mp03.wav" ; + setitemcolor fadebox backcolor 0 0 0 1 ; + fadeout fadebox ; + uiScript update "ui_GetName" ; + transition menuback_g 0 0 640 480 195 120 255 202 20 10 ; + transition clancinematic 107 82 426 316 238 153 170 133 20 10 ; + hide back_alt ; + show back ; + hide grpmessage } + onClose { uiScript update "ui_SetName" } + onEsc { close player_menu ; open main } + + + + + + +itemDef { + name gametypebar + style 2 + rect 0 5 640 40 + textscale 0.4 + textalign 0 // center + textalignx 60 // x alignment point for text + // use it to offset left/right text from the edge + // or to center the text on a different point + textaligny 21 + style 2 + border 4 + bordercolor 0.5 0.5 0.5 0.5 + bordersize 2 + backcolor 0 0 .75 .5 + visible 1 + decoration + mouseEnter { setcolor backcolor .75 0 0 .5 } + mouseExit { setcolor backcolor 0 0 .75 .5 } +} + + +itemDef { + name arenatype + type ITEM_TYPE_MULTI + cvar "ui_q3model" + cvarFloatList { "Team Arena" 0 "Quake III" 1 } + text "Model Type:" + textstyle 6 + rect 0 10 320 31 + textalign ITEM_ALIGN_LEFT + textalignx 20 + textaligny 26 + textscale .35 + forecolor 1 1 1 1 + visible 1 + mouseEnter { show message_type } + mouseExit { hide message_type } + action { play "sound/misc/kcaction.wav" } + } + +itemDef { + name quakeimage + style WINDOW_STYLE_SHADER + group grpquaketype + cvarTest "ui_q3model" + showCVar { "1" } + background "ui/assets/playerpatriot.tga" + rect 60 24 128 256 + forecolor .25 .25 .25 1 + decoration + } + +itemDef { + name quakeimage + group grpquaketype + cvarTest "ui_q3model" + showCVar { "1" } + style WINDOW_STYLE_SHADER + background "ui/assets/playerpi.tga" + rect 100 24 128 256 + visible 1 + decoration + } +itemDef { + name quakeimage + group grpquaketype + cvarTest "ui_q3model" + showCVar { "1" } + style WINDOW_STYLE_SHADER + background "ui/assets/playerklesk.tga" + rect 440 24 128 256 + forecolor .5 .5 .5 1 + visible 1 + decoration + } + + +itemDef { + name quakeimage + group grpquaketype + cvarTest "ui_q3model" + showCVar { "1" } + style WINDOW_STYLE_SHADER + background "ui/assets/playerbiker.tga" + rect 384 24 128 256 + visible 1 + decoration + } + + + +itemDef { + name clanlogo1 + style WINDOW_STYLE_SHADER + group grparenatype + cvarTest "ui_q3model" + showCVar { "0" } + background "ui/assets/pagans.tga" + rect 0 150 128 128 + forecolor .5 .5 .5 .25 + visible 1 + decoration + } + +itemDef { + name clanlogo1 + group grparenatype + cvarTest "ui_q3model" + showCVar { "0" } + style WINDOW_STYLE_SHADER + background "ui/assets/crusaders.tga" + rect 128 150 128 128 + forecolor .5 .5 .5 .25 + visible 1 + decoration + } + + +itemDef { + name clanlogo1 + group grparenatype + cvarTest "ui_q3model" + showCVar { "0" } + style WINDOW_STYLE_SHADER + background "ui/assets/stroggs.tga" + rect 384 150 128 128 + forecolor .5 .5 .5 .25 + visible 1 + decoration + } + + +itemDef { + name clanlogo1 + group grparenatype + cvarTest "ui_q3model" + showCVar { "0" } + style WINDOW_STYLE_SHADER + background "ui/assets/intruders.tga" + rect 512 150 128 128 + forecolor .5 .5 .5 .25 + visible 1 + decoration + } + +itemDef { + name window + style WINDOW_STYLE_FILLED + rect 238 153 170 133 + forecolor 0 0 0 1 + backcolor 0 0 0 1 + visible 1 + decoration + } + + + +itemDef { + name playerbar + style 2 + rect 0 130 640 170 + backcolor 0 0 .75 0 + forecolor 1 1 1 1 + border 4 + bordercolor 0.5 0.5 0.5 .75 + bordersize 2 + visible 1 + decoration + } + +itemDef { + name window + rect 10 50 620 60 + style WINDOW_STYLE_EMPTY + border 1 + bordercolor .5 .5 .5 .5 + forecolor 1 1 1 1 + backcolor 0 0 0 0 + visible 1 + decoration + } + +itemDef { + name window + rect 10 112 205 216 + style WINDOW_STYLE_EMPTY + border 1 + bordercolor .5 .5 .5 .5 + forecolor 1 1 1 1 + backcolor 0 0 0 0 + visible 1 + decoration + } +itemDef { + name window + rect 217 112 205 216 + style WINDOW_STYLE_EMPTY + border 1 + bordercolor .5 .5 .5 .5 + forecolor 1 1 1 1 + backcolor 0 0 0 0 + visible 1 + decoration + } + +itemDef { + name window + rect 424 112 206 216 + style WINDOW_STYLE_EMPTY + border 1 + bordercolor .5 .5 .5 .5 + forecolor 1 1 1 1 + backcolor 0 0 0 0 + visible 1 + decoration + } + +itemDef { + name modelselection + ownerdraw UI_PLAYERMODEL + rect 424 80 260 260 + style 1 + decoration + visible 1 + } + +itemDef { + name namefield + group "playersettinggroup" + type ITEM_TYPE_EDITFIELD + style 0 + text "Name:" + cvar "ui_Name" + textstyle 6 + maxChars 32 + rect 0 70 215 32 + textalign ITEM_ALIGN_LEFT + textalignx 20 + textaligny 21 + textscale .333 + outlinecolor 1 .5 .5 .5 + backcolor 0 0 0 0 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 1 + mouseEnter { show message_name } + mouseExit { hide message_name } + } + +itemDef { + name handicapfield + group "playersettinggroup" + style 0 + text "Handicap:" + ownerdraw UI_HANDICAP + textstyle 6 + rect 0 175 215 32 + textalign ITEM_ALIGN_LEFT + textalignx 20 + textaligny 21 + textscale .333 + outlinecolor 1 .5 .5 .5 + backcolor 0 0 0 0 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 1 + mouseEnter { show message_handicap } + mouseExit { hide message_handicap } + } + +itemDef { + name effectfield + group "playersettinggroup" + style 0 + text "Effect:" + ownerdraw UI_EFFECTS + rect 0 205 215 32 + textstyle 6 + textalign ITEM_ALIGN_LEFT + textalignx 20 + textaligny 21 + textscale .333 + outlinecolor 1 .5 .5 .5 + backcolor 0 0 0 0 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 1 + mouseEnter { show message_effect } + mouseExit { hide message_effect } + } + +itemDef { + name clanfield + group grparenatype + ownerdraw UI_CLANNAME + text "Clan:" + textstyle 6 + rect 20 235 215 31 + textalign ITEM_ALIGN_LEFT + textalignx 0 + textaligny 21 + textscale .333 + forecolor 1 1 1 1 + cvarTest "ui_q3model" + showCVar { "0" } + visible 1 + action { play "sound/misc/nomenu.wav" } + mouseEnter { show message_clan } + mouseExit { hide message_clan } + } + + + + +itemDef { + name headlist + rect 10 330 620 80 + group grparenatype + cvarTest "ui_q3model" + hideCvar { "1" } + type ITEM_TYPE_LISTBOX + style WINDOW_STYLE_FILLED + elementwidth 61.75 + elementheight 61.75 + elementtype LISTBOX_IMAGE + feeder FEEDER_HEADS + horizontalscroll + border 1 + bordersize 1 + backcolor 0 0 0 .25 + bordercolor .5 .5 .5 .5 + forecolor 1 1 1 1 + visible 1 + mouseenter { setitemcolor headlist bordercolor .7 0 0 1 ; show message_model } + mouseexit { setitemcolor headlist bordercolor .5 .5 .5 .5 ; hide message_model } + } +itemDef { + name headlist + rect 10 330 620 80 + group grpquaketype + cvarTest "ui_q3model" + showCVar { "1" } + type ITEM_TYPE_LISTBOX + style WINDOW_STYLE_FILLED + elementwidth 61.75 + elementheight 61.75 + elementtype LISTBOX_IMAGE + feeder FEEDER_Q3HEADS + horizontalscroll + border 1 + bordersize 1 + backcolor 0 0 0 .25 + bordercolor .5 .5 .5 .5 + forecolor 1 1 1 1 + visible 1 + mouseenter { setitemcolor headlist bordercolor .7 0 0 1 ; show message_model } + mouseexit { setitemcolor headlist bordercolor .5 .5 .5 .5 ; hide message_model} + } + + + +// BACK BAR // + +itemDef { + name gotobar + style 2 + rect 0 430 640 30 + textscale 0.4 + textalign 0 // center + textalignx 60 // x alignment point for text + // use it to offset left/right text from the edge + // or to center the text on a different point + textaligny 21 + style 2 + border 4 + bordercolor 0.5 0.5 0.5 0.5 + bordersize 2 + backcolor 0 0 .75 0.5 + visible 1 + mouseEnter { setcolor backcolor .75 0 0 .5 } + mouseExit { setcolor backcolor 0 0 .75 .5 } + decoration + } + +itemDef { + name back + style 3 + background "ui/assets/backarrow.tga" + rect 16 424 50 50 + visible 1 + action { close player_menu ; open main } + mouseEnter { hide back ; show back_alt ; show message_back } + } + +itemDef { + name back_alt + style WINDOW_STYLE_SHADER + background "ui/assets/backarrow_alt.tga" + rect 14 422 54 54 + backcolor 0 0 0 0 + forecolor 1 1 1 1 + visible 0 + type ITEM_TYPE_BUTTON + mouseExit { hide back_alt ; show back ; hide message_back } + action { close player_menu ; open main } + } + +// MESSAGES // +itemDef { + name message_back + group grpmessage + style 0 + rect 320 430 128 30 + textstyle 1 + textalign 1 + textalignx 0 + textaligny 25 + textscale .416 + text "Return to Main Menu" + forecolor 1 1 1 1 + decoration + visible 0 + } + +itemDef { + name message_name + group grpmessage + style 0 + rect 320 430 128 30 + textalign 1 + textstyle 1 + textalignx 0 + textaligny 25 + textscale .416 + text "Enter Player Name" + forecolor 1 1 1 1 + decoration + visible 0 + } + +itemDef { + name message_handicap + group grpmessage + style 0 + rect 320 430 128 30 + textalign 1 + textstyle 1 + textalignx 0 + textaligny 25 + textscale .416 + text "Click to Change Handicap" + forecolor 1 1 1 1 + decoration + visible 0 + } + +itemDef { + name message_effect + group grpmessage + style 0 + rect 320 430 128 30 + textalign 1 + textstyle 1 + textalignx 0 + textaligny 25 + textscale .416 + text "Select Bar to Change Effect Color" + forecolor 1 1 1 1 + decoration + visible 0 + } + +itemDef { + name message_clan + group grpmessage + style 0 + rect 320 430 128 30 + textalign 1 + textstyle 1 + textalignx 0 + textaligny 25 + textscale .416 + text "Click to Cycle Clan Selection" + forecolor 1 1 1 1 + decoration + visible 0 + } +itemDef { + name message_type + group grpmessage + style 0 + rect 320 430 128 30 + textalign 1 + textstyle 1 + textalignx 0 + textaligny 25 + textscale .416 + text "Click to View Team Arena or Quake III Models" + forecolor 1 1 1 1 + decoration + visible 0 + } + +itemDef { + name message_model + group grpmessage + style 0 + rect 320 430 128 30 + textalign 1 + textstyle 1 + textalignx 0 + textaligny 25 + textscale .416 + text "Click to Change Player Model" + forecolor 1 1 1 1 + decoration + visible 0 + } + +itemDef { + name clancinematic + rect 238 157 170 133 + group grparenatype + cvarTest "ui_q3model" + showCVar { "0" } + ownerdraw UI_CLANCINEMATIC + visible 1 + decoration + } +itemDef { + name clancinematic + group grpquaketype + cvarTest "ui_q3model" + showCVar { "1" } + style 3 + background "ui/assets/q3imagepage.tga" + rect 238 157 170 133 + visible 1 + decoration + } + +itemDef { + name clancinematic + style 3 + background "menuscreen" + rect 238 153 170 133 + visible 1 + decoration + } + +itemDef { + name menuback_g + style WINDOW_STYLE_SHADER + rect 195 120 255 202 + background "menuback_g" + visible 1 + decoration + } + +itemDef { + name fadebox + style WINDOW_STYLE_FILLED + background "ui/assets/fadebox.tga" + forecolor 0 0 0 1 + backcolor 0 0 0 1 + rect 0 0 640 480 + visible 1 + decoration + } + + +} + + +} + diff --git a/ta_ui/ui/powerup.menu b/ta_ui/ui/powerup.menu new file mode 100644 index 00000000..4ac699e2 --- /dev/null +++ b/ta_ui/ui/powerup.menu @@ -0,0 +1,768 @@ +#include "ui/menudef.h" + +{ +\\ powerup \\ + + menuDef { + name "powerup_menu" + visible 0 + fullscreen 0 + rect 0 90 640 340 + focusColor 1 .67 0 1 + border 1 + style 1 + onEsc { close help_menu ; close powerup_menu ; close ordersHelp_menu ; open main } + onOpen { setitemcolor fadebox backcolor 0 0 0 1 ; + fadeout fadebox ; + hide grphelptext ; + show scouttext ; + hide grpiconalt } + +// SCOUT // + +itemDef { + name scoutIcon + group grpScout + style WINDOW_STYLE_SHADER + rect 32 2 32 32 + visible 1 + type ITEM_TYPE_BUTTON + background "icons/scout.tga" + } +itemDef { + name scoutIconAlt + group grpIconAlt + style WINDOW_STYLE_SHADER + rect 30 0 34 34 + visible 1 + type ITEM_TYPE_BUTTON + background "icons/scout.tga" + } +itemDef { + name scout + group grpScout + rect 15 37 70 26 + text "Scout" + type 1 + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + textalign 1 + textscale .3 + textalignx 35 + textaligny 20 + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + visible 1 + action { hide grphelptext ; show scouttext ; exec "play sound/items/cl_scout.wav" } + mouseEnter { setitemcolor scout backcolor .1 .37 .1 1 ; hide scoutIcon ; show scoutIconAlt } + mouseExit { setitemcolor scout backcolor .37 .1 .1 1 ; hide scoutIconAlt ; show scoutIcon } + } +itemDef { + name scout + group grpScout + style WINDOW_STYLE_SHADER + background "ui/assets/framebutton.tga" + rect 15 37 70 26 + visible 1 + decoration + } + +itemDef { + name scout + group grpScout + style WINDOW_STYLE_SHADER + background "ui/assets/leftbutton.tga" + rect 8 37 8 26 + visible 1 + decoration + } + +itemDef { + name scout + group grpScout + style WINDOW_STYLE_SHADER + background "ui/assets/rightbutton.tga" + rect 84 37 8 26 + visible 1 + decoration + } + +// GUARD // + +itemDef { + name guardIcon + style WINDOW_STYLE_SHADER + rect 128 2 32 32 + visible 1 + background "icons/guard.tga" + decoration + } +itemDef { + name guardIconAlt + group grpIconAlt + style WINDOW_STYLE_SHADER + rect 126 0 34 34 + visible 1 + background "icons/guard.tga" + decoration + } +itemDef { + name guard + rect 111 37 70 26 + type 1 + text "Guard" + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + textalign 1 + textscale .3 + textalignx 35 + textaligny 20 + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + visible 1 + action { hide grphelptext ; show guardtext ; exec "play sound/items/cl_guard.wav" } + mouseEnter { setitemcolor guard backcolor .1 .37 .1 1 ; hide guardIcon ; show guardIconAlt } + mouseExit { setitemcolor guard backcolor .37 .1 .1 1 ; hide guardIconAlt ; show guardIcon } + } + +itemDef { + name guard + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/framebutton.tga" + rect 111 37 70 26 + visible 1 + decoration + } + +itemDef { + name guard + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/leftbutton.tga" + rect 104 37 8 26 + visible 1 + decoration + } + +itemDef { + name guard + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/rightbutton.tga" + rect 180 37 8 26 + visible 1 + decoration + } + +// DOUBLER // + +itemDef { + name doublerIcon + style WINDOW_STYLE_SHADER + rect 222 2 32 32 + visible 1 + background "icons/doubler.tga" + decoration + } +itemDef { + name doublerIconAlt + group grpIconAlt + style WINDOW_STYLE_SHADER + rect 220 0 34 34 + visible 1 + background "icons/doubler.tga" + decoration + } +itemDef { + name doubler + rect 207 37 70 26 + type 1 + text "Doubler" + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + textalign 1 + textscale .3 + textalignx 35 + textaligny 20 + visible 1 + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + action { hide grphelptext ; show doublertext ; exec "play sound/items/cl_doubler.wav" } + mouseEnter { setitemcolor doubler backcolor .1 .37 .1 1 ; hide doublerIcon ; show doublerIconAlt } + mouseExit { setitemcolor doubler backcolor .37 .1 .1 1 ; hide doublerIconAlt ; show doublerIcon } + } +itemDef { + name doubler + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/framebutton.tga" + rect 207 37 70 26 + visible 1 + decoration + } + +itemDef { + name doubler + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/leftbutton.tga" + rect 200 37 8 26 + visible 1 + decoration + } + +itemDef { + name doubler + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/rightbutton.tga" + rect 276 37 8 26 + visible 1 + decoration + } + +// AMMO_REGEN // + +itemDef { + name ammo_regenIcon + style WINDOW_STYLE_SHADER + rect 331 2 32 32 + visible 1 + background "icons/ammo_regen.tga" + decoration + } +itemDef { + name ammo_regenIconAlt + group grpIconAlt + style WINDOW_STYLE_SHADER + rect 329 0 34 34 + visible 1 + background "icons/ammo_regen.tga" + decoration + } +itemDef { + name ammo_regen + rect 302 37 87 26 + type 1 + text "Ammo-Regen" + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + textalign 1 + textscale .3 + textalignx 43 + textaligny 20 + visible 1 + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + action { hide grphelptext ; show ammo_regentext ; exec "play sound/items/cl_ammoregen.wav" } + mouseEnter { setitemcolor ammo_regen backcolor .1 .37 .1 1 ; hide ammo_regenIcon ; show ammo_regenIconAlt } + mouseExit { setitemcolor ammo_regen backcolor .37 .1 .1 1 ; hide ammo_regenIconAlt ; show ammo_regenIcon } + } +itemDef { + name ammo_regen + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/framebutton.tga" + rect 302 37 87 26 + visible 1 + decoration + } + +itemDef { + name ammo_regen + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/leftbutton.tga" + rect 295 37 8 26 + visible 1 + decoration + } + +itemDef { + name ammo_regen + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/rightbutton.tga" + rect 388 37 8 26 + visible 1 + decoration + } + +// KAMIKAZE // + +itemDef { + name kamikazeIcon + style WINDOW_STYLE_SHADER + rect 439 2 32 32 + visible 1 + background "icons/kamikaze.tga" + decoration + } +itemDef { + name kamikazeIconAlt + group grpIconAlt + style WINDOW_STYLE_SHADER + rect 437 0 34 34 + visible 1 + background "icons/kamikaze.tga" + decoration + } +itemDef { + name kamikaze + rect 415 37 87 26 + type 1 + text "Kamikaze" + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + textalign 1 + textscale .3 + textalignx 43 + textaligny 20 + visible 1 + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + action { hide grphelptext ; show kamikazetext ; exec "play sound/items/kamikaze_full.wav" } + mouseEnter { setitemcolor kamikaze backcolor .1 .37 .1 1 ; hide kamikazeIcon ; show kamikazeIconAlt } + mouseExit { setitemcolor kamikaze backcolor .37 .1 .1 1 ; hide kamikazeIconAlt ; show kamikazeIcon } + } +itemDef { + name kamikaze + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/framebutton.tga" + rect 415 37 87 26 + visible 1 + decoration + } + +itemDef { + name kamikaze + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/leftbutton.tga" + rect 408 37 8 26 + visible 1 + decoration + } + +itemDef { + name kamikaze + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/rightbutton.tga" + rect 501 37 8 26 + visible 1 + decoration + } + + +// INVULNERABILITY // + +itemDef { + name invulnerabilityIcon + style WINDOW_STYLE_SHADER + rect 561 2 32 32 + visible 1 + background "icons/invulnerability.tga" + decoration + } +itemDef { + name invulnerabilityIconAlt + group grpIconAlt + style WINDOW_STYLE_SHADER + rect 559 0 34 34 + visible 1 + background "icons/invulnerability.tga" + decoration + } +itemDef { + name invulnerability + rect 526 37 102 26 + type 1 + text "Invulnerability" + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + textalign 1 + textscale .29 + textalignx 49 + textaligny 20 + visible 1 + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + action { hide grphelptext ; show invulnerabilitytext ; exec "play sound/items/invul_activate.wav" } + mouseEnter { setitemcolor invulnerability backcolor .1 .37 .1 1 ; hide invulnerabilityIcon ; show invulnerabilityIconAlt } + mouseExit { setitemcolor invulnerability backcolor .37 .1 .1 1 ; hide invulnerabilityIconAlt ; show invulnerabilityIcon } + } +itemDef { + name invulnerability + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/framebutton.tga" + rect 526 37 102 26 + visible 1 + decoration + } + +itemDef { + name invulnerability + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/leftbutton.tga" + rect 519 37 8 26 + visible 1 + decoration + } + +itemDef { + name invulnerability + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/rightbutton.tga" + rect 626 37 8 26 + visible 1 + decoration + } + +// SCOUT // +itemDef { + name scouttext + group grphelptext + style 0 + wrapped + text "Scout : Team Power-Up" + rect 280 94 500 20 + textalign 0 + textalignx 0 + textaligny 17 + textscale .3 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 0 + decoration + } +itemDef { + name scouttext + group grphelptext + style 0 + wrapped + text "The Scout power-up drastically increases the player's rate \r" + "of movement and attack. It also prevents the player from \r" + "wearing any armor and discards any armor points that the \r" + "player may already have. As with the other persistent team \r" + "power-ups, the player keeps the Scout until he or she \r" + "is fragged. " + rect 280 124 500 20 + textalign 0 + textalignx 0 + textaligny 17 + textscale .25 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 0 + decoration + } +itemDef { + name scouttext + group grphelptext + style 5 + cinematic "scout.RoQ" + rect 10 94 256 192 + border 1 + bordercolor .5 .5 .5 1 + visible 0 + decoration + } + +// Guard // +itemDef { + name guardtext + group grphelptext + style 0 + wrapped + text "Guard : Team Power-Up" + rect 280 94 500 20 + textalign 0 + textalignx 0 + textaligny 17 + textscale .3 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 0 + decoration + } +itemDef { + name guardtext + group grphelptext + style 0 + wrapped + text "The Guard power-up gives the player an instant health \r" + "and armor boost up to 200 points. The player's health \r" + "points will regenerate to keep them at 200 points. The \r" + "player may replenish lost armor points back up to 200 \r" + "points. As with the other persistent team power-ups, \r" + "the player keeps the Guard until he or she is fragged." + rect 280 124 500 20 + textalign 0 + textalignx 0 + textaligny 17 + textscale .25 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 0 + decoration + } + +itemDef { + name guardtext + group grphelptext + style WINDOW_STYLE_CINEMATIC + cinematic "guard.RoQ" + rect 10 94 256 192 + border 1 + bordercolor .5 .5 .5 1 + visible 0 + decoration + } + + + +// Doubler // +itemDef { + name doublertext + group grphelptext + style 0 + wrapped + text "Doubler : Team Power-Up" + rect 280 94 500 20 + textalign 0 + textalignx 0 + textaligny 17 + textscale .3 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 0 + decoration + } +itemDef { + name doublertext + group grphelptext + style 0 + wrapped + text "The Doubler power-up doubles the amount of damage done \r" + "by each hit the player scores. The doubling effect is also \r" + "modified further by the damage boosting effects of the Quad \r" + "Damage. As with the other persistent team power-ups, the \r" + "player keeps the Doubler until he or she is fragged." + rect 280 124 500 20 + textalign 0 + textalignx 0 + textaligny 17 + textscale .25 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 0 + decoration + } +itemDef { + name doublertext + group grphelptext + style 5 + cinematic "doubler.RoQ" + rect 10 94 256 192 + border 1 + bordercolor .5 .5 .5 1 + visible 0 + decoration + } + +// Ammo-Regen // +itemDef { + name ammo_regentext + group grphelptext + style 0 + wrapped + text "Ammo-Regen : Team Power-Up" + rect 280 94 500 20 + textalign 0 + textalignx 0 + textaligny 17 + textscale .3 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 0 + decoration + } +itemDef { + name ammo_regentext + group grphelptext + style 0 + wrapped + text "The Ammo-Regen power-up slowly replenishes the \r" + "ammunition used by each weapon in the player's \r" + "possession up to a full basic load (the amount that \r" + "comes with the weapon). The player can shoot faster \r" + "than the ammo can regenerate. The Ammo-Regen also \r" + "significantly increases the player's rate of fire for \r" + "all attack types. As with the other persistent team \r" + "power-ups, the player keeps the Ammo-Regen until he or \r" + "she is fragged." + rect 280 124 500 20 + textalign 0 + textalignx 0 + textaligny 17 + textscale .25 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 0 + decoration + } +itemDef { + name ammo_regentext + group grphelptext + style 5 + cinematic "ammo_regen.RoQ" + rect 10 94 256 192 + border 1 + bordercolor .5 .5 .5 1 + visible 0 + decoration + } + +// Kamikaze // +itemDef { + name kamikazetext + group grphelptext + style 0 + wrapped + text "Kamikaze : Useable Item" + rect 280 94 500 20 + textalign 0 + textalignx 0 + textaligny 17 + textscale .3 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 0 + decoration + } +itemDef { + name kamikazetext + group grphelptext + style 0 + wrapped + text "When carried by a player, the Kamikaze appears as \r" + "skulls swirling about the body. Pressing the Use Item \r" + "key activates the bomb, fragging the player and severely \r" + "punishing all others within the range of the explosion. \r" + "The blast's powerful shockwave shakes the entire arena." + rect 280 124 500 20 + textalign 0 + textalignx 0 + textaligny 17 + textscale .25 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 0 + decoration + } +itemDef { + name kamikazetext + group grphelptext + style 5 + cinematic "kamikaze.RoQ" + rect 10 94 256 192 + border 1 + bordercolor .5 .5 .5 1 + visible 0 + decoration + } + + +// Invulnerability // +itemDef { + name invulnerabilitytext + group grphelptext + style 0 + wrapped + text "Invulnerability : Useable Item" + rect 280 94 500 20 + textalign 0 + textalignx 0 + textaligny 17 + textscale .3 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 0 + decoration + } +itemDef { + name invulnerabilitytext + group grphelptext + style 0 + wrapped + text "When activated, the Invulnerability power-up freezes the \r" + "player in place and surrounds him or her with a mostly \r" + "impenetrable, crackling shield of magenta energy. Mostly \r" + "impenetrable, because the player can fire out and prox \r" + "mines can be lobbed in." + rect 280 124 500 20 + textalign 0 + textalignx 0 + textaligny 17 + textscale .25 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 0 + decoration + } +itemDef { + name invulnerabilitytext + group grphelptext + style 5 + cinematic "invulnerability.RoQ" + rect 10 94 256 192 + border 1 + bordercolor .5 .5 .5 1 + visible 0 + decoration + } + +itemDef { + name fadebox + style WINDOW_STYLE_FILLED + background "ui/assets/fadebox.tga" + forecolor 0 0 0 1 + backcolor 0 0 0 1 + rect 0 0 640 480 + visible 1 + decoration + } + + + + + + + + + + + + +} + +} +} \ No newline at end of file diff --git a/ta_ui/ui/powerup2.menu b/ta_ui/ui/powerup2.menu new file mode 100644 index 00000000..5e22b044 --- /dev/null +++ b/ta_ui/ui/powerup2.menu @@ -0,0 +1,694 @@ +#include "ui/menudef.h" + +{ +\\ powerup \\ + + menuDef { + name "powerup_menu" + visible 0 + fullscreen 0 + rect 0 90 640 340 + focusColor 1 .67 0 1 + border 1 + outOfBoundsClick + style 1 + onopen { hide grphelptext ; show scouttext } + +// SCOUT // + +itemDef { + name scout + style WINDOW_STYLE_SHADER + rect 32 0 32 32 + visible 1 + type ITEM_TYPE_BUTTON + background "icons/scout.tga" + } +itemDef { + name scout + rect 15 37 70 26 + text "Scout" + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + textalign 1 + textscale .3 + textalignx 35 + textaligny 20 + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + visible 1 + action { hide grphelptext ; show scouttext } + mouseEnter { setitemcolor scout backcolor .1 .37 .1 1 } + mouseExit { setitemcolor scout backcolor .37 .1 .1 1 } + } +itemDef { + name scout + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/framebutton.tga" + rect 15 37 70 26 + visible 1 + decoration + } + +itemDef { + name scout + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/leftbutton.tga" + rect 8 37 8 26 + visible 1 + decoration + } + +itemDef { + name scout + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/rightbutton.tga" + rect 84 37 8 26 + visible 1 + decoration + } + +// GUARD // + +itemDef { + name guard + style WINDOW_STYLE_SHADER + rect 128 0 32 32 + visible 1 + background "icons/guard.tga" + decoration + } +itemDef { + name guard + style 0 + rect 111 37 70 26 + text "Guard" + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + textalign 1 + textscale .3 + textalignx 35 + textaligny 20 + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + visible 1 + action { hide grphelptext ; show guardtext } + mouseEnter { setitemcolor guard backcolor .1 .37 .1 1 } + mouseExit { setitemcolor guard backcolor .37 .1 .1 1 } + } + +itemDef { + name guard + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/framebutton.tga" + rect 111 37 70 26 + visible 1 + decoration + } + +itemDef { + name guard + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/leftbutton.tga" + rect 104 37 8 26 + visible 1 + decoration + } + +itemDef { + name guard + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/rightbutton.tga" + rect 180 37 8 26 + visible 1 + decoration + } + +// DOUBLER // + +itemDef { + name doubler + style WINDOW_STYLE_SHADER + rect 222 0 32 32 + visible 1 + background "icons/doubler.tga" + decoration + } +itemDef { + name doubler + style 0 + rect 207 37 70 26 + text "Doubler" + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + textalign 1 + textscale .3 + textalignx 35 + textaligny 20 + visible 1 + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + action { hide grphelptext ; show doublertext } + mouseEnter { setitemcolor doubler backcolor .1 .37 .1 1 } + mouseExit { setitemcolor doubler backcolor .37 .1 .1 1 } + } +itemDef { + name doubler + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/framebutton.tga" + rect 207 37 70 26 + visible 1 + decoration + } + +itemDef { + name doubler + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/leftbutton.tga" + rect 200 37 8 26 + visible 1 + decoration + } + +itemDef { + name doubler + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/rightbutton.tga" + rect 276 37 8 26 + visible 1 + decoration + } + +// AMMO_REGEN // + +itemDef { + name ammo_regen + style WINDOW_STYLE_SHADER + rect 331 0 32 32 + visible 1 + background "icons/ammo_regen.tga" + decoration + } +itemDef { + name ammo_regen + style 0 + rect 302 37 87 26 + text "Ammo-Regen" + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + textalign 1 + textscale .3 + textalignx 43 + textaligny 20 + visible 1 + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + action { hide grphelptext ; show ammo_regentext } + mouseEnter { setitemcolor ammo_regen backcolor .1 .37 .1 1 } + mouseExit { setitemcolor ammo_regen backcolor .37 .1 .1 1 } + } +itemDef { + name ammo_regen + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/framebutton.tga" + rect 302 37 87 26 + visible 1 + decoration + } + +itemDef { + name ammo_regen + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/leftbutton.tga" + rect 295 37 8 26 + visible 1 + decoration + } + +itemDef { + name ammo_regen + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/rightbutton.tga" + rect 388 37 8 26 + visible 1 + decoration + } + +// KAMIKAZE // + +itemDef { + name kamikaze + style WINDOW_STYLE_SHADER + rect 439 0 32 32 + visible 1 + background "icons/kamikaze.tga" + decoration + } +itemDef { + name kamikaze + style 0 + rect 415 37 87 26 + text "Kamikaze" + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + textalign 1 + textscale .3 + textalignx 43 + textaligny 20 + visible 1 + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + action { hide grphelptext ; show kamikazetext } + mouseEnter { setitemcolor kamikaze backcolor .1 .37 .1 1 } + mouseExit { setitemcolor kamikaze backcolor .37 .1 .1 1 } + } +itemDef { + name kamikaze + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/framebutton.tga" + rect 415 37 87 26 + visible 1 + decoration + } + +itemDef { + name kamikaze + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/leftbutton.tga" + rect 408 37 8 26 + visible 1 + decoration + } + +itemDef { + name kamikaze + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/rightbutton.tga" + rect 501 37 8 26 + visible 1 + decoration + } + + +// INVULNERABILITY // + +itemDef { + name invulnerability + style WINDOW_STYLE_SHADER + rect 561 0 32 32 + visible 1 + background "icons/invulnerability.tga" + decoration + } +itemDef { + name invulnerability + style 0 + rect 526 37 102 26 + text "Invulnerability" + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + textalign 1 + textscale .3 + textalignx 47 + textaligny 20 + visible 1 + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + action { hide grphelptext ; show invulnerabilitytext } + mouseEnter { setitemcolor invulnerability backcolor .1 .37 .1 1 } + mouseExit { setitemcolor invulnerability backcolor .37 .1 .1 1 } + } +itemDef { + name invulnerability + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/framebutton.tga" + rect 526 37 102 26 + visible 1 + decoration + } + +itemDef { + name invulnerability + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/leftbutton.tga" + rect 519 37 8 26 + visible 1 + decoration + } + +itemDef { + name invulnerability + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/rightbutton.tga" + rect 626 37 8 26 + visible 1 + decoration + } + +// SCOUT // +itemDef { + name scouttext + group grphelptext + style 0 + wrapped + text "Scout : Team Power-Up" + rect 180 94 500 20 + textalign 0 + textalignx 0 + textaligny 17 + textscale .3 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 0 + decoration + } +itemDef { + name scouttext + group grphelptext + style 0 + wrapped + text "The Scout power-up drastically increases the player's rate \r" + "of movement and attack. It also prevents the player from \r" + "wearing any armor and discards any armor points that the \r" + "player may already have. As with the other persistent team \r" + "power-ups, the player keeps the Scout until he or she \r" + "is fragged. " + rect 180 124 500 20 + textalign 0 + textalignx 0 + textaligny 17 + textscale .3 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 0 + decoration + } +itemDef { + name scouttext + group grphelptext + style 3 + background "ui/assets/helpscreens/powerups/scout.tga" + rect 30 94 128 96 + border 1 + bordercolor .5 .5 .5 1 + visible 0 + decoration + } + +// Guard // +itemDef { + name guardtext + group grphelptext + style 0 + wrapped + text "Guard : Team Power-Up" + rect 180 94 500 20 + textalign 0 + textalignx 0 + textaligny 17 + textscale .3 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 0 + decoration + } +itemDef { + name guardtext + group grphelptext + style 0 + wrapped + text "The Guard power-up gives the player an instant health \r" + "and armor boost up to 200 points. The player's health \r" + "points will regenerate to keep them at 200 points. The \r" + "player may replenish lost armor points back up to 200 \r" + "points. As with the other persistent team power-ups, \r" + "the player keeps the Guard until he or she is fragged." + rect 180 124 500 20 + textalign 0 + textalignx 0 + textaligny 17 + textscale .3 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 0 + decoration + } +itemDef { + name guardtext + group grphelptext + style 3 + background "ui/assets/helpscreens/powerups/guard.tga" + rect 30 94 128 96 + border 1 + bordercolor .5 .5 .5 1 + visible 0 + decoration + } + + + +// Doubler // +itemDef { + name doublertext + group grphelptext + style 0 + wrapped + text "Doubler : Team Power-Up" + rect 180 94 500 20 + textalign 0 + textalignx 0 + textaligny 17 + textscale .3 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 0 + decoration + } +itemDef { + name doublertext + group grphelptext + style 0 + wrapped + text "The Doubler power-up doubles the amount of damage done \r" + "by each hit the player scores. The doubling effect is also \r" + "modified further by the damage boosting effects of the Quad \r" + "Damage. As with the other persistent team power-ups, the \r" + "player keeps the Doubler until he or she is fragged." + rect 180 124 500 20 + textalign 0 + textalignx 0 + textaligny 17 + textscale .3 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 0 + decoration + } +itemDef { + name doublertext + group grphelptext + style 3 + background "ui/assets/helpscreens/powerups/doubler.tga" + rect 30 94 128 96 + border 1 + bordercolor .5 .5 .5 1 + visible 0 + decoration + } + +// Ammo-Regen // +itemDef { + name ammo_regentext + group grphelptext + style 0 + wrapped + text "Ammo-Regen : Team Power-Up" + rect 180 94 500 20 + textalign 0 + textalignx 0 + textaligny 17 + textscale .3 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 0 + decoration + } +itemDef { + name ammo_regentext + group grphelptext + style 0 + wrapped + text "The Ammo-Regen power-up slowly replenishes the ammunition \r" + "used by each weapon in the player's possession up to a full \r" + "basic load (the amount that comes with the weapon). The player \r" + "can shoot faster than the ammo can regenerate. The Ammo-Regen \r" + "also significantly increases the player's rate of fire for all \r" + "attack types. As with the other persistent team power-ups, the\r" + " playerkeeps the Ammo-Regen until he or she is fragged." + rect 180 124 500 20 + textalign 0 + textalignx 0 + textaligny 17 + textscale .3 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 0 + decoration + } +itemDef { + name ammo_regentext + group grphelptext + style 3 + background "ui/assets/helpscreens/powerups/ammo.tga" + rect 30 94 128 96 + border 1 + bordercolor .5 .5 .5 1 + visible 0 + decoration + } + +// Kamikaze // +itemDef { + name kamikazetext + group grphelptext + style 0 + wrapped + text "Kamikaze : Useable Item" + rect 180 94 500 20 + textalign 0 + textalignx 0 + textaligny 17 + textscale .3 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 0 + decoration + } +itemDef { + name kamikazetext + group grphelptext + style 0 + wrapped + text "When carried by a player, the Kamikaze appears as \r" + "skulls swirling about the body. Pressing the Use Item \r" + "key activates the bomb, fragging the player and severely \r" + "punishing all others within the range of the explosion. \r" + "The blast's powerful shockwave shakes the entire arena." + rect 180 124 500 20 + textalign 0 + textalignx 0 + textaligny 17 + textscale .3 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 0 + decoration + } +itemDef { + name kamikazetext + group grphelptext + style 3 + background "ui/assets/helpscreens/powerups/kamikaze.tga" + rect 30 94 128 96 + border 1 + bordercolor .5 .5 .5 1 + visible 0 + decoration + } + + +// Invulnerability // +itemDef { + name invulnerabilitytext + group grphelptext + style 0 + wrapped + text "Invulnerability : Useable Item" + rect 180 94 500 20 + textalign 0 + textalignx 0 + textaligny 17 + textscale .3 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 0 + decoration + } +itemDef { + name invulnerabilitytext + group grphelptext + style 0 + wrapped + text "When activated, the Invulnerability power-up freezes the \r" + "player in place and surrounds him or her with a mostly \r" + "impenetrable, crackling shield of magenta energy. Mostly \r" + "impenetrable, because the player can fire out and prox \r" + "mines can be lobbed in." + rect 180 124 500 20 + textalign 0 + textalignx 0 + textaligny 17 + textscale .3 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 0 + decoration + } +itemDef { + name invulnerabilitytext + group grphelptext + style 3 + background "ui/assets/helpscreens/powerups/invulnerable.tga" + rect 30 94 128 96 + border 1 + bordercolor .5 .5 .5 1 + visible 0 + decoration + } + + + + + + + + + + + + + +} + +} +} \ No newline at end of file diff --git a/ta_ui/ui/quake3.menu b/ta_ui/ui/quake3.menu new file mode 100644 index 00000000..1ca3fa6a --- /dev/null +++ b/ta_ui/ui/quake3.menu @@ -0,0 +1,222 @@ +#include "ui/menudef.h" + +{ +\\ QUAKE3 POPUP MENU \\ + +menuDef { + name "quake3_popmenu" + visible 0 + fullscreen 0 + rect 204 122 235 235 + focusColor 1 .75 0 1 + style 1 + border 1 + popup + onESC { close quake3_popmenu ; open main } + + + +itemDef { + name window + rect 0 0 235 235 + style 3 + background "ui/assets/mainpop.tga" + visible 1 + decoration + } +itemDef { + name window + rect 47 47 144 144 + style 3 + background "centerconsole2" + visible 1 + decoration + } + +/* +// DEMO ONLY OPTION // + +itemDef { + name demo_only + text "Not Available." + style 0 + textscale .3 + textstyle 3 + rect 1 90 110 20 + textalign 1 + textalignx 117 + textaligny 16 + decoration + forecolor 1 1 1 1 + visible 1 + } + +itemDef { + name demo_only + text "in DEMO." + style 0 + textscale .3 + textstyle 3 + rect 1 110 110 20 + textalign 1 + textalignx 117 + textaligny 16 + decoration + forecolor 1 1 1 1 + visible 1 + } + +itemDef { + name demo_only + text "Press ESC key." + style 0 + textscale .3 + textstyle 3 + rect 0 135 110 20 + textalign 1 + textalignx 117 + textaligny 16 + decoration + forecolor 1 1 1 1 + visible 1 + } + +*/ + + // Quake 3 // + +itemDef { + name confirm + text "Launch Quake3?" + style 0 + textscale .3 + rect 1 91 110 20 + textalign 1 + textalignx 117 + textaligny 16 + decoration + forecolor 0 0 0 1 + visible 1 + } + +itemDef { + name confirm + text "Launch Quake3?" + style 0 + textscale .3 + rect 0 90 110 20 + textalign 1 + textalignx 117 + textaligny 16 + decoration + forecolor 1 1 1 1 + visible 1 + } + +itemDef { + name yes + text "YES" + type 1 + textscale .25 + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + rect 75 120 30 26 + textalign 1 + textalignx 15 + textaligny 20 + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + visible 1 + action { play "sound/misc/nomenu.wav" ; + uiScript "Quake3" } + mouseEnter { setitemcolor yes backcolor .1 .37 .1 1 } + mouseExit { setitemcolor yes backcolor .37 .1 .1 1 } + } + + itemDef { + name yes + style WINDOW_STYLE_SHADER + background "ui/assets/framebutton.tga" + rect 75 120 30 26 + visible 1 + decoration + } + + itemDef { + name yes + style WINDOW_STYLE_SHADER + background "ui/assets/leftbutton.tga" + rect 69 120 7 26 + visible 1 + decoration + } + + itemDef { + name yes + style WINDOW_STYLE_SHADER + background "ui/assets/rightbutton.tga" + rect 104 120 7 26 + visible 1 + decoration + } + + + + + +itemDef { + name no + text "NO" + type 1 + textscale .25 + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + rect 128 120 30 26 + textalign 1 + textalignx 15 + textaligny 20 + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + visible 1 + action { play "sound/misc/nomenu.wav" ; + close quake3_popmenu ; open main } + mouseEnter { setitemcolor no backcolor .1 .37 .1 1 } + mouseExit { setitemcolor no backcolor .37 .1 .1 1 } + } + itemDef { + name no + style WINDOW_STYLE_SHADER + background "ui/assets/framebutton.tga" + rect 128 120 30 26 + visible 1 + decoration + } + + itemDef { + name no + style WINDOW_STYLE_SHADER + background "ui/assets/leftbutton.tga" + rect 122 120 7 26 + visible 1 + decoration + } + + itemDef { + name no + style WINDOW_STYLE_SHADER + background "ui/assets/rightbutton.tga" + rect 157 120 7 26 + visible 1 + decoration + } + + + +} + + +} + + + +} diff --git a/ta_ui/ui/quit.menu b/ta_ui/ui/quit.menu new file mode 100644 index 00000000..2d7f21fb --- /dev/null +++ b/ta_ui/ui/quit.menu @@ -0,0 +1,163 @@ +#include "ui/menudef.h" + +{ +\\ QUIT POPUP MENU \\ + +menuDef { + name "quit_popmenu" + visible 0 + fullscreen 0 + //rect 217 200 210 85 + rect 204 122 235 235 + focusColor 1 .75 0 1 + style 1 + border 1 + popup + onESC { close quit_popmenu ; open main } + + + +itemDef { + name window + rect 0 0 235 235 + style 3 + background "ui/assets/mainpop.tga" + visible 1 + decoration + } +itemDef { + name window + rect 47 47 144 144 + style 3 + background "centerconsole2" + visible 1 + decoration + } + + + + + + // QUIT // + +itemDef { + name confirm + text "Quit Team Arena?" + style 0 + textscale .3 + textstyle 3 + rect 0 90 110 20 + textalign 1 + textalignx 117 + textaligny 16 + decoration + forecolor 1 1 1 1 + visible 1 + } + + +itemDef { + name yes + text "YES" + type 1 + textscale .25 + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + rect 75 120 30 26 + textalign 1 + textalignx 15 + textaligny 20 + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + visible 1 + action { play "sound/misc/nomenu.wav"; + close main ; + close quit_popmenu ; + open quitCredit } + mouseEnter { setitemcolor yes backcolor .1 .37 .1 1 } + mouseExit { setitemcolor yes backcolor .37 .1 .1 1 } + } + + itemDef { + name yes + style WINDOW_STYLE_SHADER + background "ui/assets/framebutton.tga" + rect 75 120 30 26 + visible 1 + decoration + } + + itemDef { + name yes + style WINDOW_STYLE_SHADER + background "ui/assets/leftbutton.tga" + rect 69 120 7 26 + visible 1 + decoration + } + + itemDef { + name yes + style WINDOW_STYLE_SHADER + background "ui/assets/rightbutton.tga" + rect 104 120 7 26 + visible 1 + decoration + } + + + + + +itemDef { + name no + text "NO" + type 1 + textscale .25 + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + rect 128 120 30 26 + textalign 1 + textalignx 15 + textaligny 20 + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + visible 1 + action { play "sound/misc/nomenu.wav" ; + close quit_popmenu ; open main } + mouseEnter { setitemcolor no backcolor .1 .37 .1 1 } + mouseExit { setitemcolor no backcolor .37 .1 .1 1 } + } + itemDef { + name no + style WINDOW_STYLE_SHADER + background "ui/assets/framebutton.tga" + rect 128 120 30 26 + visible 1 + decoration + } + + itemDef { + name no + style WINDOW_STYLE_SHADER + background "ui/assets/leftbutton.tga" + rect 122 120 7 26 + visible 1 + decoration + } + + itemDef { + name no + style WINDOW_STYLE_SHADER + background "ui/assets/rightbutton.tga" + rect 157 120 7 26 + visible 1 + decoration + } + +} + + +} + + diff --git a/ta_ui/ui/quitcredit.menu b/ta_ui/ui/quitcredit.menu new file mode 100644 index 00000000..7f83df1a --- /dev/null +++ b/ta_ui/ui/quitcredit.menu @@ -0,0 +1,258 @@ +#include "ui/menudef.h" + +{ +\\ QUIT CREDIT \\ + + menuDef { + name "quitCredit" + visible 0 + fullscreen 1 + rect 0 0 640 480 + background "menuback_a" + focusColor 1 .67 0 1 + style 1 + border 1 + onEsc { uiScript "quit" } + onOpen { setitemcolor fadebox backcolor 0 0 0 1 ; + fadeout fadebox ; + show grpidcredit } + + + + + +itemDef { + name demo_only + style WINDOW_STYLE_EMPTY + rect 0 0 640 480 + type 1 + visible 1 + action { play "sound/misc/nomenu.wav" ; + close quitCredit ; + uiScript "quit" } + } + + + +// LEVEL SELECTION BAR // + +itemDef { + name teamarenaart + group grpidcredit + style WINDOW_STYLE_SHADER + background "ui/assets/teamarenaimage2.tga" + rect 64 0 512 150 + visible 0 + decoration + } + + + + + +itemDef { + name programming + group grpidcredit + style 0 + rect 0 160 640 30 + textalign 1 + textalignx 320 + textaligny 10 + textscale .35 + text "PROGRAMMING: John Carmack, Robert Duffy, Jim Dose'" + forecolor 1 1 1 1 + decoration + visible 0 + } + +itemDef { + name artist + group grpidcredit + style 0 + rect 0 190 640 30 + textalign 1 + textalignx 320 + textaligny 10 + textscale .35 + text "ART: Adrian Carmack, Kevin Cloud, Kenneth Scott, Seneca Menard, Fred Nilsson " + forecolor 1 1 1 1 + decoration + visible 0 + } + + +itemDef { + name levelDesign + group grpidcredit + style 0 + rect 0 220 640 30 + textalign 1 + textalignx 320 + textaligny 10 + textscale .35 + text "LEVEL DESIGN: Tim Willits, Christian Antkow, Paul Jaquays" + forecolor 1 1 1 1 + decoration + visible 0 + } + +itemDef { + name gameDesign + group grpidcredit + style 0 + rect 0 250 640 30 + textalign 1 + textalignx 320 + textaligny 10 + textscale .35 + text "GAME DESIGN: Graeme Devine" + forecolor 1 1 1 1 + decoration + visible 0 + } + +itemDef { + name ceo + group grpidcredit + style 0 + rect 0 280 640 30 + textalign 1 + textalignx 320 + textaligny 10 + textscale .35 + text "CEO: Todd Hollenshead" + forecolor 1 1 1 1 + decoration + visible 0 + } + +itemDef { + name bizDev + group grpidcredit + style 0 + rect 0 310 640 30 + textalign 1 + textalignx 320 + textaligny 10 + textscale .35 + text "BUSINESS DEVELOPMENT: Marty Stratton" + forecolor 1 1 1 1 + decoration + visible 0 + } + +itemDef { + name idMom + group grpidcredit + style 0 + rect 0 340 640 30 + textalign 1 + textalignx 320 + textaligny 10 + textscale .35 + text "OFFICE MANAGER AND ID MOM: Donna Jackson" + forecolor 1 1 1 1 + decoration + visible 0 + } + +itemDef { + name devAssist + group grpidcredit + style 0 + rect 0 370 640 30 + textalign 1 + textalignx 320 + textaligny 10 + textscale .35 + text "DEVELOPMENT ASSISTANCE: Eric Webb" + forecolor 1 1 1 1 + decoration + visible 0 + } + + +itemDef { + name exitbttn + group grpidcredit + rect 255 420 130 26 + type 1 + text "Click to Exit" + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + textalign 1 + textscale .25 + textalignx 65 + textaligny 20 + visible 0 + decoration + backcolor .37 .1 .1 1 + forecolor 1 1 1 1 + action { play "sound/misc/nomenu.wav" } + mouseEnter { setitemcolor exitbttn backcolor .1 .37 .1 1 } + mouseExit { setitemcolor exitbttn backcolor .37 .1 .1 1 } + } +itemDef { + name exitbttn + group grpidcredit + style WINDOW_STYLE_SHADER + background "ui/assets/framebutton.tga" + rect 255 420 130 26 + visible 0 + decoration + } + +itemDef { + name exitbttn + group grpidcredit + style WINDOW_STYLE_SHADER + background "ui/assets/leftbutton.tga" + rect 243 420 13 26 + visible 0 + decoration + } + +itemDef { + name exitbttn + group grpidcredit + style WINDOW_STYLE_SHADER + background "ui/assets/rightbutton.tga" + rect 384 420 13 26 + visible 0 + decoration + } + +itemDef { + name copyright + text "Quake III: Team Arena Copyright 2000 Id Software, Inc. All rights reserved" + style 0 + textscale .25 + rect 0 440 640 40 + textalign 1 + textaligny 32 + textalignx 320 + forecolor .75 0 0 .75 + visible 1 + decoration + } + + +itemDef { + name fadebox + style WINDOW_STYLE_FILLED + background "ui/assets/fadebox.tga" + forecolor 0 0 0 1 + backcolor 0 0 0 1 + rect 0 0 640 480 + visible 1 + decoration + } + + + + + +} + +} +} \ No newline at end of file diff --git a/ta_ui/ui/rankings.menu b/ta_ui/ui/rankings.menu new file mode 100644 index 00000000..ff91cf41 --- /dev/null +++ b/ta_ui/ui/rankings.menu @@ -0,0 +1,93 @@ +#include "ui/menudef.h" + +{ +\\ RANKINGS MENU \\ + +menuDef { + name "rankings_menu" + visible 0 + fullscreen 0 + rect 186 0 443 426 + focusColor 1 .75 0 1 + style 1 + border 1 + + + +itemDef { + name window + group grpControlbutton + rect 0 2 443 426 + style WINDOW_STYLE_FILLED + border 1 + bordercolor .5 .5 .5 .5 + forecolor 1 1 1 1 + backcolor 0 0 0 .25 + visible 1 + decoration +} + + + + + + + itemDef { + name rankings + group grprankings + type 4 + text "Name:" + rect 99 80 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .3 + forecolor 1 1 1 1 + visible 1 + } + + itemDef { + name rankings + group rankings + type 4 + text "Password:" + rect 99 110 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .3 + forecolor 1 1 1 1 + visible 1 + } + + itemDef { + name options + group grpOptions + type 4 + text "Verify Password:" + rect 99 140 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .3 + forecolor 1 1 1 1 + visible 1 + } + + itemDef { + name options + group grpOptions + type 4 + text "Email (Optional):" + rect 99 170 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .3 + forecolor 1 1 1 1 + visible 1 + } + + + +} diff --git a/ta_ui/ui/resetscore.menu b/ta_ui/ui/resetscore.menu new file mode 100644 index 00000000..e936c50c --- /dev/null +++ b/ta_ui/ui/resetscore.menu @@ -0,0 +1,223 @@ +#include "ui/menudef.h" + +{ +\\ RESET SCORE MENU \\ + +menuDef { + name "resetscore_menu" + visible 0 + fullscreen 0 + rect 186 0 443 426 + focusColor 1 .75 0 1 + style 1 + border 1 + onOpen { setitemcolor fadebox backcolor 0 0 0 1 ; + fadeout fadebox ; + show grpdefault ; + hide grpfinish } + onEsc { close resetscore_menu ; close setup_menu ; open main } + + + +itemDef { + name window + group grpControlbutton + rect 0 2 443 426 + style WINDOW_STYLE_FILLED + border 1 + bordercolor .5 .5 .5 .5 + forecolor 1 1 1 1 + backcolor 0 0 0 .25 + visible 1 + decoration +} + + + + + itemDef { + name default + group grpdefault + style 0 + text "This will set all of your map scores" + rect 0 140 443 20 + textalign ITEM_ALIGN_CENTER + textalignx 221 + textaligny 20 + textscale .333 + forecolor 1 1 1 1 + visible 1 + decoration + } + itemDef { + name default + group grpdefault + style 0 + text "and completion times to zero." + rect 0 160 443 20 + textalign ITEM_ALIGN_CENTER + textalignx 221 + textaligny 20 + textscale .333 + forecolor 1 1 1 1 + visible 1 + decoration + } + + itemDef { + name default + group grpdefault + style 0 + text "Are you sure?" + rect 0 220 443 20 + textalign ITEM_ALIGN_CENTER + textalignx 221 + textaligny 20 + textscale .333 + forecolor 1 1 1 1 + visible 1 + decoration + } + +itemDef { + name yes + text "YES" + group grpdefault + type 1 + textscale .3 + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + rect 135 250 70 26 + textalign 1 + textalignx 35 + textaligny 20 + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + visible 1 + action { play "sound/misc/nomenu.wav" ; + uiScript resetScores ; + show grpfinish ; + hide grpdefault } + mouseEnter { setitemcolor yes backcolor .1 .37 .1 1 } + mouseExit { setitemcolor yes backcolor .37 .1 .1 1 } + } + + itemDef { + name yes + group grpdefault + style WINDOW_STYLE_SHADER + background "ui/assets/framebutton.tga" + rect 135 250 70 26 + visible 1 + decoration + } + + itemDef { + name yes + group grpdefault + style WINDOW_STYLE_SHADER + background "ui/assets/leftbutton.tga" + rect 123 250 13 26 + visible 1 + decoration + } + + itemDef { + name yes + group grpdefault + style WINDOW_STYLE_SHADER + background "ui/assets/rightbutton.tga" + rect 204 250 13 26 + visible 1 + decoration + } + +itemDef { + name no + text "No" + group grpdefault + type 1 + textscale .3 + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + rect 235 250 70 26 + textalign 1 + textalignx 35 + textaligny 20 + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + visible 1 + action { play "sound/misc/nomenu.wav" ; + close resetscore_menu ; open control_menu } + mouseEnter { setitemcolor no backcolor .1 .37 .1 1 } + mouseExit { setitemcolor no backcolor .37 .1 .1 1 } + } + + itemDef { + name no + group grpdefault + style WINDOW_STYLE_SHADER + background "ui/assets/framebutton.tga" + rect 235 250 70 26 + visible 1 + decoration + } + + itemDef { + name no + group grpdefault + style WINDOW_STYLE_SHADER + background "ui/assets/leftbutton.tga" + rect 223 250 13 26 + visible 1 + decoration + } + + itemDef { + name no + group grpdefault + style WINDOW_STYLE_SHADER + background "ui/assets/rightbutton.tga" + rect 304 250 13 26 + visible 1 + decoration + } + + + + + + + + itemDef { + name finish_message + group grpfinish + style 0 + text "Your values are now set to zero." + rect 0 160 443 20 + textalign ITEM_ALIGN_CENTER + textalignx 221 + textaligny 20 + textscale .333 + forecolor 1 1 1 1 + visible 0 + decoration + } + +itemDef { + name fadebox + style WINDOW_STYLE_FILLED + background "ui/assets/fadebox.tga" + forecolor 0 0 0 1 + backcolor 0 0 0 1 + rect 0 0 640 480 + visible 1 + decoration + } + + + + + + +} diff --git a/ta_ui/ui/score.menu b/ta_ui/ui/score.menu new file mode 100644 index 00000000..5ddd3485 --- /dev/null +++ b/ta_ui/ui/score.menu @@ -0,0 +1,452 @@ +#include "ui/menudef.h" + +{ +\\ score_menu \\ + + menuDef { + name "score_menu" + visible 0 + fullscreen 0 + rect 0 0 640 480 + focusColor 1 .75 0 1 + style 0 + border 1 + + + + + +itemDef { + name scorebar + rect 14 28 610 35 + style WINDOW_STYLE_FILLED + border 1 + bordercolor .5 .5 .5 1 + backcolor 0 0 0 .5 + visible 1 + decoration + } + + + +itemDef { + name score + text " " + ownerdraw CG_GAME_STATUS + textscale .4 + style 0 + rect 0 20 640 35 + textalignx 320 + textaligny 0 + textalign 1 + backcolor 0 0 0 0 + forecolor 1 1 1 1 + visible 1 + decoration + } + + +itemDef { + name score + ownerdraw CG_KILLER + textscale .4 + style 0 + rect 0 2 640 25 + textalignx 320 + textaligny 0 + textalign 1 + backcolor 0 0 0 0 + forecolor 1 1 1 1 + visible 1 + decoration + } + + + + + + +// TEAM BARS // + +itemDef { + name teambar + rect 14 65 610 25 + style WINDOW_STYLE_FILLED + border 1 + bordercolor .5 .5 .5 1 + forecolor 1 1 1 1 + backcolor 0 0 0 .5 + visible 1 + decoration + } + + +// PLAYER LIST BORDER // + + + +itemDef { + name window + rect 14 89 610 291 + style WINDOW_STYLE_FILLED + border 1 + bordercolor .5 .5 .5 1 + backcolor 0 0 0 .5 + visible 1 + decoration + } + + + +itemDef { + name window + rect 605 90 1 290 + style WINDOW_STYLE_FILLED + border 1 + bordercolor .5 .5 .5 1 + visible 1 + decoration + } + + + +// TEAM HEADINGS // + +itemDef { + name teamheadings + text "Skill" + textscale .35 + style 0 + rect 25 65 30 30 + textalign 0 + textalignx 0 // x alignment point for text + // use it to offset left/right text from the edge + // or to center the text on a different point + textaligny 22 + backcolor 0 0 0 0 + forecolor 1 .75 0 1 + decoration + visible 1 + } + +itemDef { + name columnWindow + rect 14 65 61 315 + style WINDOW_STYLE_FILLED + border 1 + bordercolor .5 .5 .5 1 + visible 1 + decoration + } + +itemDef { + name teamheadings + text "Status" + textscale .35 + style 0 + rect 85 65 64 30 + textalign 0 + textalignx 0 // x alignment point for text + // use it to offset left/right text from the edge + // or to center the text on a different point + textaligny 22 + backcolor 0 0 0 0 + forecolor 1 .75 0 1 + decoration + visible 1 + } + +itemDef { + name columnWindow + rect 75 65 89 315 + style WINDOW_STYLE_FILLED + border 1 + bordercolor .5 .5 .5 1 + visible 1 + decoration + } + +itemDef { + name teamheadings + text "Name" + textscale .35 + style 0 + rect 170 65 64 30 + textalign 0 + textalignx 0 // x alignment point for text + // use it to offset left/right text from the edge + // or to center the text on a different point + textaligny 22 + backcolor 0 0 0 0 + forecolor 1 .75 0 1 + decoration + visible 1 + } + +itemDef { + name columnWindow + rect 164 65 216 315 + style WINDOW_STYLE_FILLED + border 1 + bordercolor .5 .5 .5 1 + visible 1 + decoration + } + +itemDef { + name teamheadings + text "Score" + textscale .35 + style 0 + rect 385 65 64 30 + textalign 0 + textalignx 0 // x alignment point for text + // use it to offset left/right text from the edge + // or to center the text on a different point + textaligny 22 + backcolor 0 0 0 0 + forecolor 1 .75 0 1 + decoration + visible 1 + } + +itemDef { + name columnWindow + rect 380 65 105 315 + style WINDOW_STYLE_FILLED + border 1 + bordercolor .5 .5 .5 1 + visible 1 + decoration + } + +itemDef { + name teamheadings + text "Time" + textscale .35 + style 0 + rect 490 65 64 30 + textalign 0 + textalignx 0 // x alignment point for text + // use it to offset left/right text from the edge + // or to center the text on a different point + textaligny 22 + backcolor 0 0 0 0 + forecolor 1 .75 0 1 + decoration + visible 1 + } + +itemDef { + name columnWindow + rect 485 65 70 315 + style WINDOW_STYLE_FILLED + border 1 + bordercolor .5 .5 .5 1 + visible 1 + decoration + } + +itemDef { + name teamheadings + text "Ping" + textscale .35 + style 0 + rect 560 65 64 30 + textalign 0 + textalignx 0 // x alignment point for text + // use it to offset left/right text from the edge + // or to center the text on a different point + textaligny 22 + backcolor 0 0 0 0 + forecolor 1 .75 0 1 + decoration + visible 1 + } + +itemDef { + name columnWindow + rect 555 65 70 315 + style WINDOW_STYLE_FILLED + border 1 + bordercolor .5 .5 .5 1 + visible 1 + decoration + } + + + + + +// LIST // + +itemDef { + name playerlist + rect 14 90 610 290 + forecolor .75 .75 .75 1 + visible 1 + type ITEM_TYPE_LISTBOX + elementwidth 592 + elementheight 20 + textscale .25 + elementtype LISTBOX_TEXT + feeder FEEDER_SCOREBOARD + notselectable + columns 7 5 20 20 5 20 20 65 50 50 150 100 40 365 20 20 463 20 20 532 20 20 + } + + + +// PLAYER INFO // + + +itemDef { + name window + rect 14 384 612 65 + style WINDOW_STYLE_FILLED + border 1 + bordercolor .5 .5 .5 1 + backcolor 0 0 0 .5 + visible 1 + decoration + } +itemDef { + name window + rect 250 384 1 65 + style WINDOW_STYLE_FILLED + border 1 + bordercolor .5 .5 .5 1 + visible 1 + decoration + } + +itemDef { + name gametype + ownerdraw CG_GAME_TYPE + text "" + textalign 0 + textscale .25 + rect 30 382 50 17 + forecolor 1 1 1 1 + textaligny 10 + textalignx 0 + decoration + visible 1 + } + + +itemdef { + name playerscore + type 4 + text "Fraglimit:" + rect 30 405 40 10 + textalignx 0 + textaligny 10 + visible 1 + textalign 0 + forecolor 1 1 1 1 + textscale .25 + cvar "fraglimit" + decoration + } + + + +itemdef { + name playerscore + text "Score:" + rect 30 420 40 10 + textalignx 0 + textaligny 10 + visible 1 + textalign 0 + forecolor 1 1 1 1 + textscale .25 + ownerdraw CG_PLAYER_SCORE + decoration + } + + +itemdef { + name playername + text "Use Score Scroll Keys" + rect 30 435 256 20 + forecolor 1 .75 0 1 + textalignx 0 + textaligny 10 + visible 1 + textalign 0 + decoration + textscale 0.25 + } + + +// AWARDS // + + +itemdef { + name medal_accuracy + ownerdraw CG_ACCURACY + rect 276 388 32 32 + background "ui/assets/medal_accuracy.tga" + forecolor 1 1 1 .5 + visible 1 + decoration + textscale 0.25 + } + + +itemdef { + name medal_excellent + ownerdraw CG_EXCELLENT + rect 376 388 32 32 + background "ui/assets/medal_excellent.tga" + forecolor 1 1 1 .5 + visible 1 + decoration + textscale 0.25 + } + +itemdef { + name medal_gauntlet + ownerdraw CG_GAUNTLET + rect 476 388 32 32 + background "ui/assets/medal_gauntlet.tga" + forecolor 1 1 1 .5 + visible 1 + decoration + textscale 0.25 + } + +itemdef { + name medal_impressive + ownerdraw CG_IMPRESSIVE + rect 576 388 32 32 + background "ui/assets/medal_impressive.tga" + forecolor 1 1 1 .5 + visible 1 + decoration + textscale 0.25 + } + + + + + + + + + + + + + + + + + + +} + + +} diff --git a/ta_ui/ui/score_results.menu b/ta_ui/ui/score_results.menu new file mode 100644 index 00000000..434b255a --- /dev/null +++ b/ta_ui/ui/score_results.menu @@ -0,0 +1,417 @@ +#include "ui/menudef.h" + +{ +\\ score_menu \\ + + menuDef { + name "score_results" + visible 0 + fullscreen 0 + rect 0 0 640 480 + focusColor 1 .75 0 1 + style 0 + border 1 + + +// TEAM BARS // + +itemDef { + name leftteambar + rect 14 112 307 25 + style WINDOW_STYLE_FILLED + border 1 + bordercolor 1 1 1 1 + forecolor 1 1 1 1 + backcolor 1 0 0 1 + visible 1 + decoration +} + +itemDef { + name rightteambar + rect 320 112 306 25 + style WINDOW_STYLE_FILLED + border 1 + bordercolor 1 1 1 1 + forecolor 1 1 1 1 + backcolor 0 0 1 1 + visible 1 + decoration +} + +// TEAM HEADINGS // + +itemDef { + name leftteamheadings + text "Status Name Score Time Ping" + textscale .25 + style 0 + rect 25 112 128 30 + textalign 0 + textalignx 0 // x alignment point for text + // use it to offset left/right text from the edge + // or to center the text on a different point + textaligny 18 + backcolor 0 0 0 0 + forecolor 1 .75 0 1 + decoration + visible 1 + } +itemDef { + name rightteamheadings + text "Status Name Score Time Ping" + textscale .25 + style 0 + rect 336 112 128 30 + textalign 0 + textalignx 0 // x alignment point for text + // use it to offset left/right text from the edge + // or to center the text on a different point + textaligny 18 + backcolor 0 0 0 0 + forecolor 1 .75 0 1 + decoration + visible 1 + } + + + + +// GRADIENT BACKGROUNDS // + + +itemDef { + name window + rect 320 142 1 220 + style WINDOW_STYLE_FILLED + border 1 + bordercolor .5 .5 .5 1 + forecolor 1 1 1 1 + backcolor 0 0 0 1 + visible 1 + decoration +} +itemDef { + name window + rect 300 142 1 220 + style WINDOW_STYLE_FILLED + border 1 + bordercolor .5 .5 .5 1 + visible 1 + decoration +} +itemDef { + name window + rect 606 142 1 220 + style WINDOW_STYLE_FILLED + border 1 + bordercolor .5 .5 .5 1 + visible 1 + decoration +} +itemDef { + name leftgrad + style WINDOW_STYLE_SHADER + background "ui/assets/halfgradleft.tga" + rect 14 142 306 222 + forecolor .75 0 0 0.5 + visible 1 + decoration + } +itemDef { + name rightgrad + style WINDOW_STYLE_SHADER + background "ui/assets/halfgradleft.tga" + rect 320 142 306 222 + forecolor 0 0 .75 0.5 + visible 1 + decoration + } +itemDef { + name playerlogo + style 3 + background "ui/assets/stroggs.tga" + rect 71 157 180 180 + visible 1 + forecolor .5 0 0 .5 + decoration + } + +itemDef { + name opponentlogo + style 3 + background "ui/assets/pagans.tga" + rect 397 157 180 180 + visible 1 + forecolor 0 0 .5 .5 + decoration +} + + + + +// LIST // + +itemDef { + name leftlist + rect 14 142 306 222 + forecolor .75 .75 .75 1 + visible 1 + type ITEM_TYPE_LISTBOX + elementwidth 135 + elementheight 20 + textscale .25 + elementtype LISTBOX_TEXT + feeder FEEDER_REDTEAM_LIST + columns 6 2 12 18 20 78 75 183 20 221 20 251 20 +} + + + +itemDef { + name rightlist + rect 320 142 306 222 + forecolor .75 .75 .75 1 + visible 1 + type ITEM_TYPE_LISTBOX + elementwidth 135 + elementheight 20 + textscale .25 + elementtype LISTBOX_TEXT + feeder FEEDER_BLUETEAM_LIST + columns 6 2 12 18 20 78 75 183 20 221 20 251 20 +} + + + + +// PLAYER LIST BORDER // + + + +itemDef { + name window + rect 14 141 612 221 + style WINDOW_STYLE_EMPTY + border 1 + bordercolor .5 .5 .5 1 + forecolor 1 1 1 1 + backcolor 0 0 0 .25 + visible 1 + decoration +} + + + + + + +// GAMETYPE BAR // + + +itemDef { + name gametypebar + style 2 + rect 0 50 640 35 + // use it to offset left/right text from the edge + // or to center the text on a different point + style 2 + border 4 + bordercolor 1 1 1 1 + bordersize 1 + backcolor 0 0 .75 0.5 + visible 1 + decoration +} + + +itemDef { + name score + text " " + ownerdraw CG_GAME_STATUS + textscale .4 + style 0 + rect 0 42 640 35 + textalignx 320 + textaligny 0 + textalign 1 + backcolor 0 0 0 0 + forecolor 1 1 1 1 + visible 1 + decoration +} + + +itemDef { + name score + ownerdraw CG_KILLER + textscale .4 + style 0 + rect 0 10 640 35 + textalignx 320 + textaligny 0 + textalign 1 + backcolor 0 0 0 0 + forecolor 1 1 1 1 + visible 1 + decoration +} + + + + +// spectators // + +itemDef { + name window + text "Spectating:" + textaligny 20 + rect 14 414 82 24 + style WINDOW_STYLE_FILLED + border 0 + bordercolor .5 .5 .5 1 + forecolor 1 1 1 .7 + backcolor .30 .30 .30 .25 + textscale .33 + visible 1 + decoration +} + +itemDef { + name window + rect 96 414 530 24 + style WINDOW_STYLE_FILLED + border 0 + bordercolor .5 .5 .5 1 + forecolor 1 1 1 .7 + backcolor .30 .30 .30 .25 + textscale .33 + visible 1 + ownerdraw CG_SPECTATORS + decoration +} + + + + +// AWARDS // + + +itemDef { + name window + rect 14 364 612 48 + style WINDOW_STYLE_FILLED + border 1 + bordercolor .5 .5 .5 1 + forecolor 1 1 1 1 + backcolor .30 .30 .30 .15 + visible 1 + decoration +} + +itemdef { + name medal_accuracy + ownerdraw CG_ACCURACY + rect 56 368 32 32 + background "ui/assets/medal_accuracy.tga" + forecolor 1 1 1 .25 + visible 1 + decoration + textscale 0.25 +} + +itemdef { + name medal_assist + ownerdraw CG_ASSISTS + rect 156 368 32 32 + background "ui/assets/medal_assist.tga" + forecolor 1 1 1 .25 + visible 1 + decoration + textscale 0.25 + +} + +itemdef { + name medal_defend + ownerdraw CG_DEFEND + rect 256 368 32 32 + background "ui/assets/medal_defend.tga" + forecolor 1 1 1 .25 + visible 1 + decoration + textscale 0.25 +} + +itemdef { + name medal_excellent + ownerdraw CG_EXCELLENT + rect 356 368 32 32 + background "ui/assets/medal_excellent.tga" + forecolor 1 1 1 .25 + visible 1 + decoration + textscale 0.25 + +} + +itemdef { + name medal_gauntlet + ownerdraw CG_GAUNTLET + rect 456 368 32 32 + background "ui/assets/medal_gauntlet.tga" + forecolor 1 1 1 .25 + visible 1 + decoration + textscale 0.25 + +} + +itemdef { + name medal_impressive + ownerdraw CG_IMPRESSIVE + rect 556 368 32 32 + background "ui/assets/medal_impressive.tga" + forecolor 1 1 1 .25 + visible 1 + decoration + textscale 0.25 + +} + + + + + +// TEAM NAME // + +itemDef { + name redteamname + ownerdraw CG_RED_NAME + textalign 1 + textscale .4 + rect 14 84 306 25 + forecolor 1 0 0 1 + decoration + visible 1 +} + +itemDef { + name blueteamname + ownerdraw CG_BLUE_NAME + textalign 1 + textscale .4 + rect 320 84 306 25 + forecolor 0 0 1 1 + decoration + visible 1 +} + + + + + +} + + +} diff --git a/ta_ui/ui/serverinfo.menu b/ta_ui/ui/serverinfo.menu new file mode 100644 index 00000000..24f9006b --- /dev/null +++ b/ta_ui/ui/serverinfo.menu @@ -0,0 +1,396 @@ +#include "ui/menudef.h" + +{ +\\ Server Information Popup Menu \\ + +menuDef { + name "serverinfo_popmenu" + visible 0 + fullscreen 0 + rect 158 80 320 340 + focusColor 1 .75 0 1 + style 1 + border 1 + popup + onClose { } + onOpen { uiScript ServerStatus } + onESC { close serverinfo_popmenu ; open joinserver } + + itemDef { + name window + rect 10 15 310 330 + style 1 + backcolor 0 0 0 .5 + forecolor 0 0 0 1 + visible 1 + decoration + } + + itemDef { + name window + rect 10 15 320 340 + style 1 + backcolor 0 0 0 .25 + forecolor 0 0 0 1 + visible 1 + decoration + } + + itemDef { + name window + rect 10 15 300 320 + style 1 + backcolor .1 .1 .37 1 + forecolor 0 0 0 1 + visible 1 + decoration + } + + + itemDef { + name window + rect 10 15 300 10 + style 1 + backcolor 0 0 0 .25 + forecolor 0 0 0 1 + visible 1 + decoration + } + + itemDef { + name serverinfo + rect 0 20 320 20 + text "Server Information" + textstyle 3 + textalign 1 + textscale .333 + textalignx 160 + textaligny 20 + forecolor 1 1 1 1 + visible 1 + decoration + } + + + + + +// FRAME // + + + itemDef { + name window + rect 0 10 64 64 + style 3 + background "ui/assets/ingameleftcorner.tga" + visible 1 + decoration + } + + itemDef { + name window + rect 64 10 64 8 + style 3 + background "ui/assets/ingametop.tga" + visible 1 + decoration + } + + itemDef { + name window + rect 184 10 96 8 + style 3 + background "ui/assets/ingametop.tga" + visible 1 + decoration + } + itemDef { + name window + rect 256 10 64 64 + style 3 + background "ui/assets/ingamerightcorner.tga" + visible 1 + decoration + } + + itemDef { + name window + rect 128 10 64 8 + style 3 + background "ui/assets/ingametop.tga" + visible 1 + decoration + } + + itemDef { + name window + rect 0 274 64 64 + style 3 + background "ui/assets/ingameleftcornerb.tga" + visible 1 + decoration + } + + itemDef { + name window + rect 256 274 64 64 + style 3 + background "ui/assets/ingamerightcornerb.tga" + visible 1 + decoration + } + + itemDef { + name window + rect 0 64 16 64 + style 3 + background "ui/assets/ingameleft.tga" + visible 1 + decoration + } + + + itemDef { + name window + rect 0 128 16 64 + style 3 + background "ui/assets/ingameleft.tga" + visible 1 + decoration + } + + itemDef { + name window + rect 0 192 16 96 + style 3 + background "ui/assets/ingameleft.tga" + visible 1 + decoration + } + + itemDef { + name window + rect 304 64 16 64 + style 3 + background "ui/assets/ingameright.tga" + visible 1 + decoration + } + + + itemDef { + name window + rect 304 128 16 64 + style 3 + background "ui/assets/ingameright.tga" + visible 1 + decoration + } + + itemDef { + name window + rect 304 192 16 96 + style 3 + background "ui/assets/ingameright.tga" + visible 1 + decoration + } + + + + itemDef { + name window + rect 64 330 64 8 + style 3 + background "ui/assets/ingamebottom.tga" + visible 1 + decoration + } + + itemDef { + name window + rect 128 330 98 8 + style 3 + background "ui/assets/ingamebottom.tga" + visible 1 + decoration + } + + itemDef { + name window + rect 172 330 98 8 + style 3 + background "ui/assets/ingamebottom.tga" + visible 1 + decoration + } + + + + + + itemDef { + name serverinfo + rect 20 55 280 230 + type ITEM_TYPE_LISTBOX + style WINDOW_STYLE_FILLED + elementwidth 120 + elementheight 16 + textscale .225 + backcolor 0 0 0 1 + border 1 + bordersize 1 + bordercolor .5 .5 .5 1 + elementtype LISTBOX_TEXT + feeder FEEDER_SERVERSTATUS + notselectable + visible 1 + columns 4 2 40 20 + 40 40 10 + 90 40 10 + 135 40 20 + } + + itemDef { + name window + rect 20 55 264 230 + style 1 + backcolor 0 0 0 0 + forecolor 0 0 0 0 + border 1 + bordersize 1 + bordercolor .5 .5 .5 1 + visible 1 + decoration + } + + + + + + + + + + +// BUTTON // + + itemDef { + name exit + text "Exit" + type 1 + textscale .23 + group grpControlbutton + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + rect 95 295 45 26 + textalign 1 + textalignx 23 + textaligny 20 + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + visible 1 + action { play "sound/misc/nomenu.wav" ; + close serverinfo_popmenu ; + open joinserver } + mouseEnter { setitemcolor exit backcolor .1 .37 .1 1 } + mouseExit { setitemcolor exit backcolor .37 .1 .1 1 } + } + + itemDef { + name exit + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/framebutton.tga" + rect 95 295 45 26 + visible 1 + forecolor 1 1 1 1 + decoration + } + + itemDef { + name exit + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/leftbutton.tga" + rect 83 295 13 26 + visible 1 + forecolor 1 1 1 1 + decoration + } + + itemDef { + name exit + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/rightbutton.tga" + rect 139 295 13 26 + visible 1 + forecolor 1 1 1 1 + decoration + } + + + itemDef { + name refresh + text "Refresh" + type 1 + textscale .23 + group grpControlbutton + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + rect 180 295 45 26 + textalign 1 + textalignx 23 + textaligny 20 + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + visible 1 + action { uiScript ServerStatus } + mouseEnter { setitemcolor refresh backcolor .1 .37 .1 1 } + mouseExit { setitemcolor refresh backcolor .37 .1 .1 1 } + } + + itemDef { + name refresh + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/framebutton.tga" + rect 180 295 45 26 + visible 1 + forecolor 1 1 1 1 + decoration + } + + itemDef { + name refresh + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/leftbutton.tga" + rect 168 295 13 26 + visible 1 + forecolor 1 1 1 1 + decoration + } + + itemDef { + name refresh + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/rightbutton.tga" + rect 224 295 13 26 + visible 1 + forecolor 1 1 1 1 + decoration + } + + + +} + + +} + + diff --git a/ta_ui/ui/serverinfo_old.menu b/ta_ui/ui/serverinfo_old.menu new file mode 100644 index 00000000..2104b525 --- /dev/null +++ b/ta_ui/ui/serverinfo_old.menu @@ -0,0 +1,340 @@ +#include "ui/menudef.h" + +{ +\\ Server Information Popup Menu \\ + +menuDef { + name "serverinfo_popmenu" + visible 0 + fullscreen 0 + rect 158 80 320 340 + focusColor 1 .75 0 1 + style 1 + border 1 + popup + onClose { } + onOpen { uiScript ServerStatus } + onESC { close serverinfo_popmenu ; open joinserver } + +itemDef { + name window + rect 10 15 310 330 + style 1 + backcolor 0 0 0 .5 + forecolor 0 0 0 1 + visible 1 + decoration + } +itemDef { + name window + rect 10 15 320 340 + style 1 + backcolor 0 0 0 .25 + forecolor 0 0 0 1 + visible 1 + decoration + } + + + +itemDef { + name window + rect 10 15 300 320 + style 1 + backcolor .1 .1 .37 1 + forecolor 0 0 0 1 + visible 1 + decoration + } + + + +itemDef { + name window + rect 10 15 300 10 + style 1 + backcolor 0 0 0 .25 + forecolor 0 0 0 1 + visible 1 + decoration + } + + itemDef { + name serverinfo + rect 0 20 320 20 + text "Server Information" + textstyle 3 + textalign 1 + textscale .333 + textalignx 160 + textaligny 20 + forecolor 1 1 1 1 + visible 1 + decoration + } + + + + + +// FRAME // + + +itemDef { + name window + rect 0 10 64 64 + style 3 + background "ui/assets/ingameleftcorner.tga" + visible 1 + decoration + } +itemDef { + name window + rect 64 10 64 8 + style 3 + background "ui/assets/ingametop.tga" + visible 1 + decoration + } +itemDef { + name window + rect 184 10 96 8 + style 3 + background "ui/assets/ingametop.tga" + visible 1 + decoration + } +itemDef { + name window + rect 256 10 64 64 + style 3 + background "ui/assets/ingamerightcorner.tga" + visible 1 + decoration + } +itemDef { + name window + rect 128 10 64 8 + style 3 + background "ui/assets/ingametop.tga" + visible 1 + decoration + } +itemDef { + name window + rect 0 274 64 64 + style 3 + background "ui/assets/ingameleftcornerb.tga" + visible 1 + decoration + } +itemDef { + name window + rect 256 274 64 64 + style 3 + background "ui/assets/ingamerightcornerb.tga" + visible 1 + decoration + } + +itemDef { + name window + rect 0 64 16 64 + style 3 + background "ui/assets/ingameleft.tga" + visible 1 + decoration + } + + +itemDef { + name window + rect 0 128 16 64 + style 3 + background "ui/assets/ingameleft.tga" + visible 1 + decoration + } + +itemDef { + name window + rect 0 192 16 96 + style 3 + background "ui/assets/ingameleft.tga" + visible 1 + decoration + } + +itemDef { + name window + rect 304 64 16 64 + style 3 + background "ui/assets/ingameright.tga" + visible 1 + decoration + } + + +itemDef { + name window + rect 304 128 16 64 + style 3 + background "ui/assets/ingameright.tga" + visible 1 + decoration + } + +itemDef { + name window + rect 304 192 16 96 + style 3 + background "ui/assets/ingameright.tga" + visible 1 + decoration + } + + + +itemDef { + name window + rect 64 330 64 8 + style 3 + background "ui/assets/ingamebottom.tga" + visible 1 + decoration + } +itemDef { + name window + rect 128 330 98 8 + style 3 + background "ui/assets/ingamebottom.tga" + visible 1 + decoration + } +itemDef { + name window + rect 172 330 98 8 + style 3 + background "ui/assets/ingamebottom.tga" + visible 1 + decoration + } + + + + + + itemDef { + name serverinfo + rect 20 55 280 230 + type ITEM_TYPE_LISTBOX + style WINDOW_STYLE_FILLED + elementwidth 120 + elementheight 16 + textscale .225 + backcolor 0 0 0 1 + border 1 + bordersize 1 + bordercolor .5 .5 .5 1 + elementtype LISTBOX_TEXT + feeder FEEDER_SERVERSTATUS + notselectable + visible 1 + columns 4 2 40 20 + 40 40 10 + 90 40 10 + 135 40 20 + } + + itemDef { + name window + rect 20 55 264 230 + style 1 + backcolor 0 0 0 0 + forecolor 0 0 0 0 + border 1 + bordersize 1 + bordercolor .5 .5 .5 1 + visible 1 + decoration + } + + + + + + + + + + +// BUTTON // + + +itemDef { + name exit + text "Exit" + type 1 + textscale .25 + group grpControlbutton + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + rect 138 295 45 26 + textalign 1 + textalignx 23 + textaligny 20 + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + visible 1 + action { play "sound/misc/nomenu.wav" ; + close serverinfo_popmenu ; + open joinserver } + mouseEnter { setitemcolor exit backcolor .1 .37 .1 1 } + mouseExit { setitemcolor exit backcolor .37 .1 .1 1 } + } +itemDef { + name exit + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/framebutton.tga" + rect 138 295 45 26 + visible 1 + forecolor 1 1 1 1 + decoration + } + +itemDef { + name exit + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/leftbutton.tga" + rect 126 295 13 26 + visible 1 + forecolor 1 1 1 1 + decoration + } + +itemDef { + name exit + group grpControlbutton + style WINDOW_STYLE_SHADER + background "ui/assets/rightbutton.tga" + rect 182 295 13 26 + visible 1 + forecolor 1 1 1 1 + decoration + } + + + + + + + +} + + +} + + diff --git a/ta_ui/ui/setup.menu b/ta_ui/ui/setup.menu new file mode 100644 index 00000000..1fdd9ec8 --- /dev/null +++ b/ta_ui/ui/setup.menu @@ -0,0 +1,513 @@ +#include "ui/menudef.h" + +{ +\\ SETUP MENU \\ + +menuDef { + name "setup_menu" + visible 0 + fullscreen 1 + rect 186 0 454 480 + background "menuback_a" + focusColor 1 .75 0 1 + style 1 + border 1 + onOpen { setitemcolor fadebox backcolor 0 0 0 1 ; + playlooped "music/fla_mp03.wav" ; + fadeout fadebox ; + hide back_alt ; + show back ; + hide grpmessage } + onEsc { close setup_menu ; open main } + + + + +itemDef { + name solid_box + style 1 + rect 4 2 178 426 + border 1 + bordersize 1 + bordercolor .5 .5 .5 .5 + backcolor 0 0 .75 .25 + visible 1 + decoration + mouseEnter { setcolor backcolor .75 0 0 .5 } + mouseExit { setcolor backcolor 0 0 .75 .25 } + } + + + + + +// Control // + + + + +itemDef { + name controls + text "Controls" + textscale .5 + style 0 + type 1 + textstyle 6 + rect 0 75 200 40 + textalign 3 + textalignx 20 + textaligny 32 + backcolor 0 0 0 0 + forecolor 1 1 1 1 + visible 1 + action { play "sound/misc/kcaction.wav" ; + close control_menu ; + close system_menu ; + close options_menu ; + close cdkey_menu ; + close default_menu ; + close resetscore_menu ; + open control_menu } + mouseenter { show message_controls } + mouseexit { hide message_controls } + } + + + + + + +// System // + +itemDef { + name system + text "System" + style 0 + type 1 + textstyle 6 + textscale .5 + rect 0 125 200 40 + textalign 3 // center + textalignx 20 // x alignment point for text + // use it to offset left/right text from the edge + // or to center the text on a different point + textaligny 32 + backcolor 0 0 0 0 + forecolor 1 1 1 1 + visible 1 + action { play "sound/misc/kcaction.wav" ; + close control_menu ; + close system_menu ; + close options_menu ; + close cdkey_menu ; + close default_menu ; + close resetscore_menu ; + open system_menu } + mouseenter { show message_system } + mouseexit { hide message_system } + } + + + +// Game Options // + +itemDef { + name gameoptions + text "Game Options" + style 0 + type 1 + textstyle 6 + textscale .5 + rect 0 175 200 40 + textalign 3 // center + textalignx 20 // x alignment point for text + // use it to offset left/right text from the edge + // or to center the text on a different point + textaligny 32 + backcolor 0 0 0 0 + forecolor 1 1 1 1 + visible 1 + action { play "sound/misc/kcaction.wav" ; + close control_menu ; + close system_menu ; + close options_menu ; + close cdkey_menu ; + close default_menu ; + close resetscore_menu ; + open options_menu } + mouseenter { show message_gameoptions } + mouseexit { hide message_gameoptions } + } + + + + +// CD Key // + +itemDef { + name cdkey + text "Enter CD Key" + style 0 + type 1 + textscale .5 + textstyle 6 + rect 0 225 200 40 + textalign 3 // center + textalignx 20 // x alignment point for text + // use it to offset left/right text from the edge + // or to center the text on a different point + textaligny 32 + forecolor 1 1 1 1 + visible 1 + mouseenter { show message_cdkey } + mouseexit { hide message_cdkey } + action { play "sound/misc/kcaction.wav" ; + close control_menu ; + close system_menu ; + close options_menu ; + close cdkey_menu ; + close default_menu ; + close resetscore_menu ; + open cdkey_menu } + } + + + +// Reset Defaults // + +itemDef { + name defaults + text "Defaults" + style 0 + type 1 + textstyle 6 + textscale .5 + rect 0 275 200 40 + textalign 3 // center + textalignx 20 // x alignment point for text + // use it to offset left/right text from the edge + // or to center the text on a different point + textaligny 32 + forecolor 1 1 1 1 + visible 1 + mouseenter { show message_default } + mouseexit { hide message_default } + action { play "sound/misc/kcaction.wav" ; + close control_menu ; + close system_menu ; + close options_menu ; + close cdkey_menu ; + close default_menu ; + close resetscore_menu ; + open default_menu } + } + +// Reset Score // + + +itemDef { + name scores + text "Clear Scores" + style 0 + type 1 + textstyle 6 + textscale .5 + rect 0 325 200 40 + textalign 3 // center + textalignx 20 // x alignment point for text + // use it to offset left/right text from the edge + // or to center the text on a different point + textaligny 32 + forecolor 1 1 1 1 + visible 1 + mouseenter { show message_scores } + mouseexit { hide message_scores } + action { play "sound/misc/kcaction.wav" ; + close control_menu ; + close system_menu ; + close options_menu ; + close cdkey_menu ; + close default_menu ; + close resetscore_menu ; + open resetscore_menu } + } + + + +// BACK BAR // + + +itemDef { + name gotobar + style 2 + rect 0 430 640 30 + textscale 0.4 + textalign 0 // center + textalignx 60 // x alignment point for text + // use it to offset left/right text from the edge + // or to center the text on a different point + textaligny 21 + style 2 + border 4 + bordercolor 0.5 0.5 0.5 0.5 + bordersize 2 + backcolor 0 0 .75 0.5 + visible 1 + mouseEnter { setcolor backcolor .75 0 0 .5 } + mouseExit { setcolor backcolor 0 0 .75 .5 } + decoration + } + + itemDef { + name back + style 3 + background "ui/assets/backarrow.tga" + rect 16 424 50 50 + visible 1 + action { close setup_menu ; open main } + mouseEnter { hide back ; show back_alt ; show message_back } + } + +itemDef { + name back_alt + style WINDOW_STYLE_SHADER + background "ui/assets/backarrow_alt.tga" + rect 14 422 54 54 + backcolor 0 0 0 0 + forecolor 1 1 1 1 + visible 0 + type ITEM_TYPE_BUTTON + action { hide grpControls ; + close control_menu ; + close setup_menu ; + close system_menu ; + close options_menu ; + close cdkey_menu ; + close default_menu ; + close resetscore_menu ; + open main } + mouseExit { hide back_alt ; show back ; hide message_back } + } + + +// MESSAGES // + +itemDef { + name message_back + group grpmessage + style 0 + rect 320 430 128 30 + textstyle 1 + textalign 1 + textalignx 0 + textaligny 25 + textscale .4 + text "Exit to Main Menu" + forecolor 1 1 1 1 + decoration + visible 0 + } + +itemDef { + name message_accept + group grpmessage + style 0 + rect 320 430 128 30 + textalign 1 + textstyle 1 + textalignx 0 + textaligny 25 + textscale .4 + text "Refresh Video" + forecolor 1 1 1 1 + decoration + visible 0 + } + +itemDef { + name message_controls + group grpmessage + style 0 + rect 320 430 128 30 + textalign 1 + textstyle 1 + textalignx 0 + textaligny 25 + textscale .4 + text "Select to Edit Game Controls" + forecolor 1 1 1 1 + decoration + visible 0 + } + +itemDef { + name message_nowork + group grpmessage + style 0 + rect 320 430 128 30 + textalign 1 + textstyle 1 + textalignx 0 + textaligny 25 + textscale .4 + text "Selection Isn't Implemented" + forecolor 1 1 1 1 + decoration + visible 0 + } + +itemDef { + name message_look + group grpmessage + style 0 + rect 320 430 128 30 + textalign 1 + textstyle 1 + textalignx 0 + textaligny 25 + textscale .4 + text "Select to Edit View Controls" + forecolor 1 1 1 1 + decoration + visible 0 + } + +itemDef { + name message_move + group grpmessage + style 0 + rect 320 430 128 30 + textalign 1 + textstyle 1 + textalignx 0 + textaligny 25 + textscale .4 + text "Select to Edit Movement Controls" + forecolor 1 1 1 1 + decoration + visible 0 + } + +itemDef { + name message_shoot + group grpmessage + style 0 + rect 320 430 128 30 + textalign 1 + textstyle 1 + textalignx 0 + textaligny 25 + textscale .4 + text "Select to Edit Firing and Weapon Selection" + forecolor 1 1 1 1 + decoration + visible 0 + } +itemDef { + name message_misc + group grpmessage + style 0 + rect 320 430 128 30 + textalign 1 + textstyle 1 + textalignx 0 + textaligny 25 + textscale .4 + text "Select to Edit Chat and Mouse Functions" + forecolor 1 1 1 1 + decoration + visible 0 + } +itemDef { + name message_system + group grpmessage + style 0 + rect 320 430 128 30 + textalign 1 + textstyle 1 + textalignx 0 + textaligny 25 + textscale .4 + text "Edit System Settings" + forecolor 1 1 1 1 + decoration + visible 0 + } +itemDef { + name message_gameoptions + group grpmessage + style 0 + rect 320 430 128 30 + textalign 1 + textstyle 1 + textalignx 0 + textaligny 25 + textscale .4 + text "Edit Game Options" + forecolor 1 1 1 1 + decoration + visible 0 + } +itemDef { + name message_cdkey + group grpmessage + style 0 + rect 320 430 128 30 + textalign 1 + textstyle 1 + textalignx 0 + textaligny 25 + textscale .4 + text "Enter Encryption Key" + forecolor 1 1 1 1 + decoration + visible 0 + } +itemDef { + name message_default + group grpmessage + style 0 + rect 320 430 128 30 + textalign 1 + textstyle 1 + textalignx 0 + textaligny 25 + textscale .4 + text "Reset to Default Settings" + forecolor 1 1 1 1 + decoration + visible 0 + } +itemDef { + name message_scores + group grpmessage + style 0 + rect 320 430 128 30 + textalign 1 + textstyle 1 + textalignx 0 + textaligny 25 + textscale .4 + text "Clear High Scores to Zero" + forecolor 1 1 1 1 + decoration + visible 0 + } + + +itemDef { + name fadebox + style WINDOW_STYLE_FILLED + background "ui/assets/fadebox.tga" + forecolor 0 0 0 1 + backcolor 0 0 0 1 + rect 0 0 640 480 + visible 1 + decoration + } + + +} + + +} diff --git a/ta_ui/ui/skirmish.menu b/ta_ui/ui/skirmish.menu new file mode 100644 index 00000000..bc723012 --- /dev/null +++ b/ta_ui/ui/skirmish.menu @@ -0,0 +1,1655 @@ +#include "ui/menudef.h" + +{ +\\ skirmish\\ + + menuDef { + name "skirmish" + visible 0 + fullscreen 1 + rect 0 0 640 480 + background "menuback_a" + focusColor 1 .75 0 1 + style 1 + fadeClamp 1.0 + fadeCycle 1 // how often fade happens in milliseconds + fadeAmount 0.1 + onEsc { close skirmish ; open main } + onOpen { + setitemcolor fadebox backcolor 0 0 0 1 ; + playlooped "music/fla_mp03.wav" ; + fadeout fadebox ; + uiScript loadGameInfo ; + uiScript updateSPMenu ; + hide lightning ; + hide accept_alt ; + show accept ; + hide back_alt ; + show back ; + hide grpmessage } + + + + + + + + + + + + + +// GAMETYPE BAR // + + + +itemDef { + name gametypebar + style 2 + rect 0 5 640 40 + textscale 0.4 + textalign 0 // center + textalignx 60 // x alignment point for text + // use it to offset left/right text from the edge + // or to center the text on a different point + textaligny 21 + style 2 + border 4 + bordercolor 0.5 0.5 0.5 0.5 + bordersize 2 + backcolor 0 0 .75 0.5 + visible 1 + mouseEnter { setcolor backcolor .75 0 0 .5 } + mouseExit { setcolor backcolor 0 0 .75 .5 } + decoration + } + + + +itemDef { + name gametypefield + style 0 + ownerdraw UI_GAMETYPE + textstyle 6 + text "Type:" + rect 0 10 213 31 + textalign ITEM_ALIGN_LEFT + textalignx 20 + textaligny 26 + textscale .35 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 1 + action { play "sound/misc/kcaction.wav" } + mouseEnter { fadein message_type } + mouseExit { fadeout message_type } + } + + itemDef { + name opposingteamfield + text "Opponent: " + ownerdraw UI_OPPONENT_NAME + textstyle 6 + rect 213 10 213 31 + textalign ITEM_ALIGN_LEFT + textalignx 20 + textaligny 26 + textscale .35 + forecolor 1 1 1 1 + visible 1 + cvarTest "ui_gametype" + hideCvar { "1" } + action { play "sound/misc/kcaction.wav" } + mouseenter { show message_opponent } + mouseexit { hide message_opponent } + } + + +itemDef { + name gametypefield + style 0 + ownerdraw UI_SKILL + textstyle 6 + text "Skill:" + rect 426 10 213 31 + textalign ITEM_ALIGN_LEFT + textalignx 20 + textaligny 26 + textscale .35 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 1 + action { play "sound/misc/kcaction.wav" } + mouseEnter { fadein message_skill } + mouseExit { fadeout message_skill } + } + +// DECORATIVE // + + +itemDef { + name mappreview + ownerdraw UI_MAPCINEMATIC + rect 320 170 320 192 + backcolor 1 1 1 .25 + decoration + visible 1 + } + +itemDef { + name mappscreen + style 3 + background "menuscreen" + rect 320 170 320 192 + visible 1 + decoration + } + + + + +itemDef { + name window + rect 0 170 640 192 + style WINDOW_STYLE_EMPTY + border 1 + bordercolor .5 .5 .5 .5 + forecolor 1 1 1 1 + backcolor 0 0 0 .25 + visible 1 + decoration + } + +// MAP INFORMATION BARS // + +itemDef { + name mapinfo + style WINDOW_STYLE_SHADER + rect 0 172 20 82 + background "ui/assets/mapinfo.tga" + forecolor .5 .5 .5 .5 + visible 1 + decoration + } + +itemDef { + name score + style WINDOW_STYLE_SHADER + rect 0 260 20 100 + background "ui/assets/score.tga" + forecolor .5 .5 .5 .5 + visible 1 + decoration + } + +itemDef { + name window + rect 0 255 320 5 + style WINDOW_STYLE_EMPTY + border 1 + bordercolor .5 .5 .5 .5 + forecolor 1 1 1 1 + backcolor 0 0 0 .25 + visible 1 + decoration + } + +// CENTER IMAGE AND INFORMATION // + +itemDef { + name menuback_e + style WINDOW_STYLE_SHADER + rect 254 194 140 140 + background "centerconsole" + visible 1 + decoration + } + +itemDef { + name opposinglogo + ownerdraw UI_OPPONENTLOGO_METAL + rect 264 200 120 120 + cvarTest "ui_gametype" + hideCvar { "1" } + visible 1 + forecolor .7 .7 1 .25 + decoration + } + +itemDef { + name mappscreen + style 3 + background menuscreen + rect 254 194 140 140 + visible 1 + decoration + } + +itemDef { + name menuback_e + group grpCenter + style WINDOW_STYLE_SHADER + rect 254 194 140 140 + background "centerconsole" + visible 1 + decoration + } + +itemDef { + name opposinglogo + ownerdraw UI_OPPONENTLOGO_METAL + cvarTest "ui_gametype" + hideCvar { "1" } + rect 264 200 120 120 + visible 1 + forecolor .7 .7 1 .25 + decoration + } + +itemDef { + name mappscreen + group grpCenter + style 3 + background menuscreen + rect 254 194 140 140 + visible 1 + decoration + } + +itemDef { + name level_info + group grplevelinfo2 + textscale .35 + text "Best Score" + rect 258 250 128 20 + textalign 1 + textalignx 64 // x alignment point for text + // use it to offset left/right text from the edge + // or to center the text on a different point + textaligny 12 + backcolor 0 0 0 0 + forecolor 1 1 1 1 + decoration + visible 1 + } + +// CENTER INFORMATION FOR NEW HIGH SCORE // + + +itemDef { + name backwindow + style WINDOW_STYLE_FILLED + rect 254 194 140 140 + ownerdrawflag UI_SHOW_NEWHIGHSCORE + backcolor 0 0 0 1 + forecolor 0 0 0 1 + visible 1 + decoration + } + +itemDef { + name menuback_e + style WINDOW_STYLE_SHADER + ownerdrawflag UI_SHOW_NEWHIGHSCORE + rect 254 194 140 140 + background "centerconsole" + visible 1 + decoration + } + +itemDef { + name playerlogo + ownerdraw UI_PLAYERLOGO_METAL + cvarTest "ui_gametype" + hideCvar { "1" } + rect 264 200 120 120 + ownerdrawflag UI_SHOW_NEWHIGHSCORE + visible 1 + forecolor .7 .7 1 .25 + decoration + } + +itemDef { + name mappscreen + style 3 + background menuscreen + ownerdrawflag UI_SHOW_NEWHIGHSCORE + rect 254 190 140 150 + visible 1 + decoration + } + +itemDef { + name level_info + group grplevelinfo2 + textstyle ITEM_TEXTSTYLE_BLINK + textscale .35 + text "New High Score" + rect 258 248 128 20 + ownerdrawflag UI_SHOW_NEWHIGHSCORE + textalign 1 + textalignx 64 // x alignment point for text + // use it to offset left/right text from the edge + // or to center the text on a different point + textaligny 12 + backcolor 0 0 0 0 + forecolor 1 0 0 1 + decoration + visible 1 + } + +itemDef { + name menuback_g + style WINDOW_STYLE_SHADER + rect 215 160 215 212 + background "menuback_g" + visible 1 + decoration + } + + +// SCORE INFORMATION // + + +itemDef { + name level_info + group grplevelinfo2 + textscale .3 + text "" + type ITEM_TYPE_EDITFIELD + cvar "ui_scoreScore" + rect 258 265 128 20 + textalign 1 + textalignx 64 // x alignment point for text + // use it to offset left/right text from the edge + // or to center the text on a different point + textaligny 12 + backcolor 0 0 0 0 + forecolor 1 1 1 1 + decoration + visible 1 + } + + + +// AWARDS TEAM GAME // + +itemdef { + name medal_assist_team + rect 185 380 30 30 + type ITEM_TYPE_EDITFIELD + style WINDOW_STYLE_SHADER + background "ui/assets/medal_assist.tga" + cvar "ui_scoreAssists" + ownerdrawflag UI_SHOW_ANYTEAMGAME + textscale .22 + textalign 1 + text "" + textalignx 15 + textaligny 40 + visible 1 + decoration + border 1 + bordersize 1 + bordercolor 1 1 1 0 + mouseenter { show message_assist } + mouseexit { hide message_assist } + } + + +itemdef { + name medal_accuracy_team + style WINDOW_STYLE_SHADER + cvar "ui_scoreAccuracy" + rect 225 380 30 30 + background "ui/assets/medal_accuracy.tga" + ownerdrawflag UI_SHOW_ANYTEAMGAME + visible 1 + decoration + type ITEM_TYPE_EDITFIELD + textalign 1 + text "" + textalignx 15 + textaligny 40 + border 1 + bordersize 1 + bordercolor 1 1 1 0 + textscale .22 + mouseenter { show message_accuracy } + mouseexit { hide message_accuracy } + } + + +itemdef { + name medal_excellent_team + style WINDOW_STYLE_SHADER + cvar "ui_scoreExcellents" + rect 265 380 30 30 + background "ui/assets/medal_excellent.tga" + ownerdrawflag UI_SHOW_ANYTEAMGAME + visible 1 + decoration + type ITEM_TYPE_EDITFIELD + textalign 1 + text "" + textalignx 15 + textaligny 40 + border 1 + bordersize 1 + bordercolor 1 1 1 0 + textscale .22 + mouseenter { show message_excellent } + mouseexit { hide message_excellent } + } + + +itemdef { + name medal_gauntlet_team + style WINDOW_STYLE_SHADER + cvar "ui_scoreGauntlets" + rect 305 380 30 30 + background "ui/assets/medal_gauntlet.tga" + ownerdrawflag UI_SHOW_ANYTEAMGAME + visible 1 + decoration + type ITEM_TYPE_EDITFIELD + textalign 1 + text "" + textalignx 15 + textaligny 40 + border 1 + bordersize 1 + bordercolor 1 1 1 0 + textscale .22 + mouseenter { show message_gauntlet } + mouseexit { hide message_gauntlet } + } + + +itemdef { + name medal_impressive_team + style WINDOW_STYLE_SHADER + cvar "ui_scoreImpressives" + rect 345 380 30 30 + background "ui/assets/medal_impressive.tga" + ownerdrawflag UI_SHOW_ANYTEAMGAME + visible 1 + decoration + type ITEM_TYPE_EDITFIELD + textalign 1 + text "" + textalignx 15 + textaligny 40 + border 1 + bordersize 1 + bordercolor 1 1 1 0 + textscale .22 + mouseenter { show message_impressive } + mouseexit { hide message_impressive } + } + +itemdef { + name medal_defend_team + style WINDOW_STYLE_SHADER + cvar "ui_scoreDefends" + rect 385 380 30 30 + background "ui/assets/medal_defend.tga" + ownerdrawflag UI_SHOW_ANYTEAMGAME + visible 1 + decoration + type ITEM_TYPE_EDITFIELD + textalign 1 + text "" + textalignx 15 + textaligny 40 + border 1 + bordersize 1 + bordercolor 1 1 1 0 + textscale .22 + mouseenter { show message_defend } + mouseexit { hide message_defend } + } + +itemdef { + name medal_capture_team + style WINDOW_STYLE_SHADER + cvar "ui_scoreCaptures" + rect 425 380 30 30 + background "ui/assets/medal_capture.tga" + ownerdrawflag UI_SHOW_ANYTEAMGAME + visible 1 + decoration + type ITEM_TYPE_EDITFIELD + textalign 1 + text "" + textalignx 15 + textaligny 40 + border 1 + bordersize 1 + bordercolor 1 1 1 0 + textscale .22 + mouseenter { show message_capture } + mouseexit { hide message_capture } + } + + + + + +// AWARDS NONTEAM GAME // + + +itemdef { + name medal_perfect_nonteam + rect 230 380 30 30 + type ITEM_TYPE_EDITFIELD + style WINDOW_STYLE_SHADER + background "ui/assets/medal_perfect.tga" + cvar "ui_scorePerfect" + ownerdrawflag UI_SHOW_ANYNONTEAMGAME + textscale .22 + textalign 1 + text "" + textalignx 15 + textaligny 40 + visible 1 + decoration + border 1 + bordersize 1 + bordercolor 1 1 1 0 + mouseenter { show message_perfect } + mouseexit { hide message_perfect } + } + +itemdef { + name medal_accuracy_nonteam + style WINDOW_STYLE_SHADER + cvar "ui_scoreAccuracy" + rect 270 380 30 30 + background "ui/assets/medal_accuracy.tga" + ownerdrawflag UI_SHOW_ANYNONTEAMGAME + visible 1 + decoration + type ITEM_TYPE_EDITFIELD + textalign 1 + text "" + textalignx 15 + textaligny 40 + textscale .22 + border 1 + bordersize 1 + bordercolor 1 1 1 0 + mouseenter { show message_accuracy } + mouseexit { hide message_accuracy } + } + + +itemdef { + name medal_excellent_nonteam + style WINDOW_STYLE_SHADER + cvar "ui_scoreExcellents" + rect 310 380 30 30 + background "ui/assets/medal_excellent.tga" + ownerdrawflag UI_SHOW_ANYNONTEAMGAME + visible 1 + decoration + type ITEM_TYPE_EDITFIELD + textalign 1 + text "" + textalignx 15 + textaligny 40 + textscale .22 + border 1 + bordersize 1 + bordercolor 1 1 1 0 + mouseenter { show message_excellent } + mouseexit { hide message_excellent } + } + + + + +itemdef { + name medal_gauntlet_nonteam + style WINDOW_STYLE_SHADER + cvar "ui_scoreGauntlets" + rect 350 380 30 30 + background "ui/assets/medal_gauntlet.tga" + ownerdrawflag UI_SHOW_ANYNONTEAMGAME + visible 1 + decoration + type ITEM_TYPE_EDITFIELD + textalign 1 + text "" + textalignx 15 + textaligny 40 + textscale .22 + border 1 + bordersize 1 + bordercolor 1 1 1 0 + mouseenter { show message_gauntlet } + mouseexit { hide message_gauntlet } + } + + +itemdef { + name medal_impressive_nonteam + style WINDOW_STYLE_SHADER + cvar "ui_scoreImpressives" + rect 390 380 30 30 + background "ui/assets/medal_impressive.tga" + ownerdrawflag UI_SHOW_ANYNONTEAMGAME + visible 1 + decoration + type ITEM_TYPE_EDITFIELD + textalign 1 + text "" + textalignx 15 + textaligny 40 + textscale .22 + border 1 + bordersize 1 + bordercolor 1 1 1 0 + mouseenter { show message_impressive } + mouseexit { hide message_impressive } + } + + + +// SOUND BUTTON // + + +itemdef { + name medal_assist_window + rect 183 378 34 34 + style WINDOW_STYLE_SHADER + background "ui/assets/medal_assist.tga" + ownerdrawflag UI_SHOW_ANYTEAMGAME + type 1 + border 1 + bordercolor .5 .5 .5 0 + forecolor 1 1 1 0 + backcolor 1 1 1 0 + visible 1 + mouseenter { setitemcolor medal_assist_team forecolor 0 0 0 0 ; setcolor forecolor 1 1 1 1 } + mouseexit { setitemcolor medal_assist_team forecolor 1 1 1 1 ; setcolor forecolor 1 1 1 0 } + action { exec "play sound/feedback/voc_menu_assist.wav" } + } + +itemdef { + name medal_accuracy_window + rect 223 378 34 34 + style WINDOW_STYLE_SHADER + background "ui/assets/medal_accuracy.tga" + ownerdrawflag UI_SHOW_ANYTEAMGAME + type 1 + border 1 + bordercolor .5 .5 .5 0 + forecolor 1 1 1 0 + backcolor 1 1 1 0 + visible 1 + mouseenter { setitemcolor medal_accuracy_team forecolor 0 0 0 0 ; setcolor forecolor 1 1 1 1 } + mouseexit { setitemcolor medal_accuracy_team forecolor 1 1 1 1 ; setcolor forecolor 1 1 1 0 } + action { exec "play sound/feedback/voc_menu_accuracy.wav" } + } +itemdef { + name medal_excellent_window + rect 263 378 34 34 + type 1 + style WINDOW_STYLE_SHADER + background "ui/assets/medal_excellent.tga" + ownerdrawflag UI_SHOW_ANYTEAMGAME + border 1 + bordercolor .5 .5 .5 0 + forecolor 1 1 1 0 + backcolor 1 1 1 0 + visible 1 + mouseenter { setitemcolor medal_excellent_team forecolor 0 0 0 0 ; setcolor forecolor 1 1 1 1 } + mouseexit { setitemcolor medal_excellent_team forecolor 1 1 1 1 ; setcolor forecolor 1 1 1 0 } + action { exec "play sound/feedback/voc_menu_excellent.wav" } + } +itemdef { + name medal_gauntlet_window + rect 303 378 34 34 + type 1 + style WINDOW_STYLE_SHADER + background "ui/assets/medal_gauntlet.tga" + ownerdrawflag UI_SHOW_ANYTEAMGAME + border 1 + bordercolor .5 .5 .5 0 + forecolor 1 1 1 0 + backcolor 1 1 1 0 + visible 1 + mouseenter { setitemcolor medal_gauntlet_team forecolor 0 0 0 0 ; setcolor forecolor 1 1 1 1 } + mouseexit { setitemcolor medal_gauntlet_team forecolor 1 1 1 1 ; setcolor forecolor 1 1 1 0 } + action { exec "play sound/feedback/voc_menu_gauntlet.wav" } + } +itemdef { + name medal_impressive_window + rect 343 378 34 34 + type 1 + style WINDOW_STYLE_SHADER + background "ui/assets/medal_impressive.tga" + ownerdrawflag UI_SHOW_ANYTEAMGAME + border 1 + bordercolor .5 .5 .5 0 + forecolor 1 1 1 0 + backcolor 1 1 1 0 + visible 1 + mouseenter { setitemcolor medal_impressive_team forecolor 0 0 0 0 ; setcolor forecolor 1 1 1 1 } + mouseexit { setitemcolor medal_impressive_team forecolor 1 1 1 1 ; setcolor forecolor 1 1 1 0 } + action { exec "play sound/feedback/voc_menu_impressive.wav" } + } +itemdef { + name medal_defend_window + rect 383 378 34 34 + type 1 + style WINDOW_STYLE_SHADER + background "ui/assets/medal_defend.tga" + ownerdrawflag UI_SHOW_ANYTEAMGAME + border 1 + bordercolor .5 .5 .5 0 + forecolor 1 1 1 0 + backcolor 1 1 1 0 + visible 1 + mouseenter { setitemcolor medal_defend_team forecolor 0 0 0 0 ; setcolor forecolor 1 1 1 1 } + mouseexit { setitemcolor medal_defend_team forecolor 1 1 1 1 ; setcolor forecolor 1 1 1 0 } + action { exec "play sound/feedback/voc_menu_defense.wav" } + } +itemdef { + name medal_capture_window + rect 423 378 34 34 + type 1 + style WINDOW_STYLE_SHADER + background "ui/assets/medal_capture.tga" + ownerdrawflag UI_SHOW_ANYTEAMGAME + border 1 + bordercolor .5 .5 .5 0 + forecolor 1 1 1 0 + backcolor 1 1 1 0 + visible 1 + mouseenter { setitemcolor medal_capture_team forecolor 0 0 0 0 ; setcolor forecolor 1 1 1 1 } + mouseexit { setitemcolor medal_capture_team forecolor 1 1 1 1 ; setcolor forecolor 1 1 1 0 } + action { exec "play sound/feedback/voc_menu_captures.wav" } + } + + + + + + + + +itemdef { + name medal_perfect_window + rect 228 378 34 34 + type 1 + style WINDOW_STYLE_SHADER + background "ui/assets/medal_perfect.tga" + ownerdrawflag UI_SHOW_ANYNONTEAMGAME + border 1 + bordercolor .5 .5 .5 0 + forecolor 1 1 1 0 + backcolor 1 1 1 0 + visible 1 + mouseenter { setitemcolor medal_perfect_nonteam forecolor 0 0 0 0 ; setcolor forecolor 1 1 1 1 } + mouseexit { setitemcolor medal_perfect_nonteam forecolor 1 1 1 1 ; setcolor forecolor 1 1 1 0 } + action { exec "play sound/feedback/perfect.wav" } + } + +itemdef { + name medal_accuracy_window + rect 268 378 34 34 + type 1 + style WINDOW_STYLE_SHADER + background "ui/assets/medal_accuracy.tga" + ownerdrawflag UI_SHOW_ANYNONTEAMGAME + border 1 + bordercolor .5 .5 .5 0 + forecolor 1 1 1 0 + backcolor 1 1 1 0 + visible 1 + mouseenter { setitemcolor medal_accuracy_nonteam forecolor 0 0 0 0 ; setcolor forecolor 1 1 1 1 } + mouseexit { setitemcolor medal_accuracy_nonteam forecolor 1 1 1 1 ; setcolor forecolor 1 1 1 0 } + action { exec "play sound/feedback/voc_menu_accuracy.wav" } + } + + + +itemdef { + name medal_excellent_window + rect 308 378 34 34 + type 1 + ownerdrawflag UI_SHOW_ANYNONTEAMGAME + style WINDOW_STYLE_SHADER + background "ui/assets/medal_excellent.tga" + border 1 + bordercolor .5 .5 .5 0 + forecolor 1 1 1 0 + backcolor 1 1 1 0 + visible 1 + mouseenter { setitemcolor medal_excellent_nonteam forecolor 0 0 0 0 ; setcolor forecolor 1 1 1 1 } + mouseexit { setitemcolor medal_excellent_nonteam forecolor 1 1 1 1 ; setcolor forecolor 1 1 1 0 } + action { exec "play sound/feedback/voc_menu_excellent.wav" } + } + + +itemdef { + name medal_gauntlet_window + rect 348 378 34 34 + type 1 + style WINDOW_STYLE_SHADER + background "ui/assets/medal_gauntlet.tga" + ownerdrawflag UI_SHOW_ANYNONTEAMGAME + border 1 + bordercolor .5 .5 .5 0 + forecolor 1 1 1 0 + backcolor 1 1 1 0 + visible 1 + mouseenter { setitemcolor medal_gauntlet_nonteam forecolor 0 0 0 0 ; setcolor forecolor 1 1 1 1 } + mouseexit { setitemcolor medal_gauntlet_nonteam forecolor 1 1 1 1 ; setcolor forecolor 1 1 1 0 } + action { exec "play sound/feedback/voc_menu_gauntlet.wav" } + } + + +itemdef { + name medal_impressive_window + rect 388 378 34 34 + type 1 + style WINDOW_STYLE_SHADER + background "ui/assets/medal_impressive.tga" + ownerdrawflag UI_SHOW_ANYNONTEAMGAME + border 1 + bordercolor .5 .5 .5 0 + forecolor 1 1 1 0 + backcolor 1 1 1 0 + visible 1 + mouseenter { setitemcolor medal_impressive_nonteam forecolor 0 0 0 0 ; setcolor forecolor 1 1 1 1 } + mouseexit { setitemcolor medal_impressive_nonteam forecolor 1 1 1 1 ; setcolor forecolor 1 1 1 0 } + action { exec "play sound/feedback/voc_menu_impressive.wav" } + } + + + + +// MAP SETTINGS // + + itemDef { + name opposingteamfield + text "Map:" + ownerdraw UI_MAPS_SELECTION + rect 120 185 128 12 + textalign ITEM_ALIGN_RIGHT + textalignx 0 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + decoration + visible 1 + } + + + + itemDef { + name normal + group grpsettings + type ITEM_TYPE_NUMERICFIELD + text "Frag limit:" + cvar "ui_fraglimit" + ownerdrawflag UI_SHOW_ANYNONTEAMGAME + rect 120 200 128 12 + textalign ITEM_ALIGN_RIGHT + textalignx 0 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 1 + decoration + } + + itemDef { + name normal + group grpsettings + type ITEM_TYPE_NUMERICFIELD + text "Capture limit:" + cvar "ui_capturelimit" + ownerdrawflag UI_SHOW_ANYTEAMGAME + rect 120 200 128 12 + textalign ITEM_ALIGN_RIGHT + textalignx 0 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 1 + decoration + } + + itemDef { + name normal + group grpsettings + ownerdraw UI_MAP_TIMETOBEAT + text "Time to Beat:" + rect 120 215 128 12 + textalign ITEM_ALIGN_RIGHT + textalignx 0 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 1 + decoration + } + itemDef { + name normal + group grpsettings + type ITEM_TYPE_NUMERICFIELD + text "Skill Multiplier:" + cvar "g_spSkill" + rect 120 230 128 12 + textalign ITEM_ALIGN_RIGHT + textalignx 0 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 1 + decoration + } + + itemDef { + name normal + group grpsettings + type ITEM_TYPE_NUMERICFIELD + text "Game Score:" + cvar "ui_scoreTeam" + rect 120 265 128 12 + textalign ITEM_ALIGN_RIGHT + textalignx 0 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 1 + decoration + } + itemDef { + name normal + group grpsettings + type ITEM_TYPE_NUMERICFIELD + text "Completion Time:" + cvar "ui_scoreTime" + rect 120 278 128 12 + textalign ITEM_ALIGN_RIGHT + textalignx 0 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 1 + decoration + } + + itemDef { + name normal + group grpsettings + type ITEM_TYPE_NUMERICFIELD + text "Base Score:" + cvar "ui_scoreBase" + rect 120 291 128 12 + textalign ITEM_ALIGN_RIGHT + textalignx 0 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 1 + decoration + mouseenter { } + mouseexit { } + } + + itemDef { + name normal + group grpsettings + type ITEM_TYPE_NUMERICFIELD + text "Time Bonus:" + cvar "ui_scoreTimeBonus" + rect 120 304 128 12 + textalign ITEM_ALIGN_RIGHT + textalignx 0 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 1 + decoration + mouseenter { } + mouseexit { } + } +itemDef { + name normal + group grpsettings + type ITEM_TYPE_NUMERICFIELD + text "Shutout Bonus:" + cvar "ui_scoreShutoutBonus" + rect 120 317 128 12 + textalign ITEM_ALIGN_RIGHT + textalignx 0 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 1 + decoration + mouseenter { } + mouseexit { } + } +itemDef { + name normal + group grpsettings + type ITEM_TYPE_NUMERICFIELD + text "Skill Bonus:" + cvar "ui_scoreSkillBonus" + rect 120 330 128 12 + textalign ITEM_ALIGN_RIGHT + textalignx 0 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 1 + decoration + mouseenter { } + mouseexit { } + } +itemDef { + name normal + group grpsettings + type ITEM_TYPE_NUMERICFIELD + text "Total Score:" + cvar "ui_scoreScore" + rect 120 343 128 12 + textalign ITEM_ALIGN_RIGHT + textalignx 0 + textaligny 12 + textscale .25 + forecolor 1 1 1 1 + visible 1 + decoration + mouseenter { } + mouseexit { } + } + +itemDef { + name recordDemo + type ITEM_TYPE_YESNO + text "Record Game:" + cvar "ui_recordSPDemo" + rect 120 380 64 30 + textalign ITEM_ALIGN_RIGHT + textalignx 0 + textaligny 22 + textscale .333 + forecolor 1 1 1 1 + forecolor 1 1 1 1 + visible 1 + action { play "sound/misc/nomenu.wav" } + mouseEnter { show message_recordDemo } + mouseExit { hide message_recordDemo} + } + + + + + + +// LEVEL SELECTION // + + + +itemDef { + name maplist + rect 119 60 403 91 + type ITEM_TYPE_LISTBOX + style WINDOW_STYLE_FILLED + elementwidth 100 + elementheight 75 + elementtype LISTBOX_IMAGE + feeder FEEDER_MAPS + horizontalscroll + border 1 + bordercolor .5 .5 .5 .5 + forecolor 1 1 1 1 + visible 1 + mouseenter { setitemcolor maplist bordercolor .7 0 0 1 ; show message_arena } + mouseexit { setitemcolor maplist bordercolor .5 .5 .5 .5 ; hide message_arena } +/* + // demo_only + cvarTest "ui_gametype" + hideCvar { "1" } +*/ + } + +/* + +// DEMO ONLY OPTION // + +itemDef { + name demo_only + text "Opponent: " + text "Tournament Maps are Not Available in Demo." + textstyle 3 + rect 119 60 403 91 + textalign ITEM_ALIGN_CENTER + textalignx 200 + textaligny 26 + textscale .35 + forecolor 1 1 1 1 + visible 1 + decoration + cvarTest "ui_gametype" + showCvar { "1" } + } +*/ + + + + +// TEAM LOGOS // + +itemDef { + name playerlogo + ownerdraw UI_PLAYERLOGO_METAL + cvarTest "ui_gametype" + hideCvar { "1" } + rect 30 60 80 80 + visible 1 + forecolor 1 .7 .7 1 + decoration + } + +itemDef { + name modelselection + ownerdraw UI_PLAYERMODEL + cvarTest "ui_gametype" + showCvar { "1" } + rect 10 40 140 140 + style 1 + decoration + visible 1 + } + +itemDef { + name opposinglogo + ownerdraw UI_OPPONENTLOGO_METAL + cvarTest "ui_gametype" + hideCvar { "1" } + rect 530 60 80 80 + visible 1 + forecolor .7 .7 1 1 + decoration + } +itemDef { + name modelselection + ownerdraw UI_OPPONENTMODEL + cvarTest "ui_gametype" + showCvar { "1" } + rect 510 40 140 140 + style 1 + decoration + visible 1 + } + +itemDef { + name playDemobttn + group grpbttn + type 1 + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + text "No Demo" + rect 500 385 100 26 + textalign 1 + textalignx 50 + textaligny 20 + textscale .25 + decoration + forecolor .5 .5 .5 1 + backcolor .17 .05 .05 1 + visible 1 + } + + +itemDef { + name playDemobttn + group grpbttn + type 1 + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + text "View Last Game" + rect 500 385 100 26 + textalign 1 + textalignx 50 + textaligny 20 + textscale .25 + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + visible 1 + ownerdrawflag UI_SHOW_DEMOAVAILABLE + action { play "sound/misc/kcaction.wav" ; + hide grphelptext ; uiScript RunSPDemo } + mouseEnter { setitemcolor playDemobttn backcolor .1 .37 .1 1 ; show demo_message } + mouseExit { setitemcolor playDemobttn backcolor .37 .1 .1 1 ; hide demo_message } + } + +itemDef { + name playDemo + group grpbttn + style WINDOW_STYLE_SHADER + background "ui/assets/framebutton.tga" + rect 500 385 100 26 + visible 1 + decoration + } + +itemDef { + name playDemo + group grpbttn + style WINDOW_STYLE_SHADER + background "ui/assets/leftbutton.tga" + rect 488 385 13 26 + visible 1 + decoration + } + +itemDef { + name playDemo + group grpbttn + style WINDOW_STYLE_SHADER + background "ui/assets/rightbutton.tga" + rect 599 385 13 26 + visible 1 + decoration + } + + + + + + + + +// BACK BAR // + + + itemDef { + name gotobar + style 2 + rect 0 430 640 30 + textscale 0.4 + textalign 0 // center + textalignx 60 // x alignment point for text + // use it to offset left/right text from the edge + // or to center the text on a different point + textaligny 21 + style 2 + border 4 + bordercolor 0.5 0.5 0.5 0.5 + bordersize 2 + backcolor 0 0 .75 0.5 + visible 1 + mouseEnter { setcolor backcolor .75 0 0 .5 } + mouseExit { setcolor backcolor 0 0 .75 .5 } + decoration + } + + itemDef { + name back + style 3 + background "ui/assets/backarrow.tga" + rect 16 424 50 50 + visible 1 + action { close skirmish ; open main } + mouseEnter { hide back ; show back_alt ; fadein message_back } + } + +itemDef { + name back_alt + style WINDOW_STYLE_SHADER + background "ui/assets/backarrow_alt.tga" + rect 14 422 54 54 + backcolor 0 0 0 0 + forecolor 1 1 1 1 + visible 0 + type ITEM_TYPE_BUTTON + mouseExit { hide back_alt ; show back ; fadeout message_back } + action { close skirmish ; open main } + } + +itemDef { + name accept + style 3 + rect 574 424 50 50 + background "ui/assets/forwardarrow.tga" + backcolor 0 0 0 0 + forecolor 1 1 1 1 + visible 1 + mouseEnter { show lightning ; hide accept ; show accept_alt ; fadein message_accept ; playlooped "sound/misc/loop_electricity_05.wav" } + action { uiScript skirmishStart } +/* + // demo_only + cvarTest "ui_gametype" + hideCvar { "1" } +*/ + } + +itemDef { + name accept_alt + style 3 + rect 572 422 54 54 + background "ui/assets/forwardarrow_alt.tga" + backcolor 0 0 0 0 + forecolor 1 1 1 1 + visible 0 + type ITEM_TYPE_BUTTON + action { uiScript skirmishStart } + mouseExit { hide lightning ; hide accept_alt ; show accept ; fadeout message_accept ; playlooped "music/fla_mp03.wav" } +/* + // demo_only + cvarTest "ui_gametype" + hideCvar { "1" } +*/ + } + + + itemDef { + name lightning + style 3 + background lightningkc + rect 46 385 236 128 + visible 0 + decoration + } +itemDef { + name lightning + style 3 + background lightningkc + rect 355 385 236 128 + visible 0 + decoration + } + + + +// MESSAGES // + +itemDef { + name message_back + group grpmessage + style 0 + rect 320 430 128 30 + textstyle 1 + textalign 1 + textalignx 0 + textaligny 25 + textscale .416 + text "Exit to Main Menu" + forecolor 1 1 1 1 + decoration + visible 0 + } + +itemDef { + name message_accept + group grpmessage + style 0 + rect 320 430 128 30 + textalign 1 + textstyle 1 + textalignx 0 + textaligny 25 + textscale .416 + text "Enter Arena" + forecolor 1 1 1 1 + decoration + visible 0 + } + +itemDef { + name message_type + group grpmessage + style 0 + rect 320 430 128 30 + textalign 1 + textstyle 1 + textalignx 0 + textaligny 25 + textscale .416 + text "Select Gametype" + forecolor 1 1 1 1 + decoration + visible 0 + } + +itemDef { + name message_skill + group grpmessage + style 0 + rect 320 430 128 30 + textstyle 1 + textalign 1 + textalignx 0 + textaligny 25 + textscale .416 + text "Set Skill Level" + forecolor 1 1 1 1 + decoration + visible 0 + } + +itemDef { + name message_arena + group grpmessage + style 0 + rect 320 430 128 30 + textstyle 1 + textalign 1 + textalignx 0 + textaligny 25 + textscale .416 + text "Choose Your Arena" + forecolor 1 1 1 1 + decoration + visible 0 + } + +itemDef { + name message_assist + group grpmessage + style 0 + rect 320 430 128 30 + textstyle 1 + textalign 1 + textalignx 0 + textaligny 25 + textscale .416 + text "Assist" + forecolor 1 1 1 1 + decoration + visible 0 + } +itemDef { + name message_perfect + group grpmessage + style 0 + rect 320 430 128 30 + textstyle 1 + textalign 1 + textalignx 0 + textaligny 25 + textscale .416 + text "Perfect" + forecolor 1 1 1 1 + decoration + visible 0 + } +itemDef { + name message_accuracy + group grpmessage + style 0 + rect 320 430 128 30 + textstyle 1 + textalign 1 + textalignx 0 + textaligny 25 + textscale .416 + text "Accuracy" + forecolor 1 1 1 1 + decoration + visible 0 + } +itemDef { + name message_defend + group grpmessage + style 0 + rect 320 430 128 30 + textstyle 1 + textalign 1 + textalignx 0 + textaligny 25 + textscale .416 + text "Defense" + forecolor 1 1 1 1 + decoration + visible 0 + } +itemDef { + name message_excellent + group grpmessage + style 0 + rect 320 430 128 30 + textstyle 1 + textalign 1 + textalignx 0 + textaligny 25 + textscale .416 + text "Excellent" + forecolor 1 1 1 1 + decoration + visible 0 + } +itemDef { + name message_gauntlet + group grpmessage + style 0 + rect 320 430 128 30 + textstyle 1 + textalign 1 + textalignx 0 + textaligny 25 + textscale .416 + text "Gauntlet" + forecolor 1 1 1 1 + decoration + visible 0 + } +itemDef { + name message_impressive + group grpmessage + style 0 + rect 320 430 128 30 + textstyle 1 + textalign 1 + textalignx 0 + textaligny 25 + textscale .416 + text "Impressive" + forecolor 1 1 1 1 + decoration + visible 0 + } +itemDef { + name message_capture + group grpmessage + style 0 + rect 320 430 128 30 + textstyle 1 + textalign 1 + textalignx 0 + textaligny 25 + textscale .416 + text "Captures" + forecolor 1 1 1 1 + decoration + visible 0 + } +itemDef { + name message_opponent + group grpmessage + style 0 + rect 320 430 128 30 + textstyle 1 + textalign 1 + textalignx 0 + textaligny 25 + textscale .416 + text "Cycle through Opponent Clans" + forecolor 1 1 1 1 + decoration + visible 0 + } +itemDef { + name message_recordDemo + group grpmessage + style 0 + rect 320 430 128 30 + textstyle 1 + textalign 1 + textalignx 0 + textaligny 25 + textscale .416 + text "Record Next Game" + forecolor 1 1 1 1 + decoration + visible 0 + } + +itemDef { + name demo_message + group grpmessage + style 0 + rect 320 430 128 30 + textstyle 1 + textalign 1 + textalignx 0 + textaligny 25 + textscale .416 + text "View Last Recorded Game for this Map" + forecolor 1 1 1 1 + decoration + visible 0 + } + + + + + + +itemDef { + name fadebox + style WINDOW_STYLE_FILLED + background "ui/assets/fadebox.tga" + forecolor 0 0 0 1 + backcolor 0 0 0 1 + rect 0 0 640 480 + visible 1 + decoration + } + + + + +} + +} + + + + + + + diff --git a/ta_ui/ui/small.menu b/ta_ui/ui/small.menu new file mode 100644 index 00000000..3fd88263 --- /dev/null +++ b/ta_ui/ui/small.menu @@ -0,0 +1,796 @@ +#include "ui/menudef.h" + +// team menu +// +// defines from ui_shared.h +/* +#define ITEM_TYPE_TEXT 0 // simple text +#define ITEM_TYPE_BUTTON 1 // button, basically text with a border +#define ITEM_TYPE_RADIOBUTTON 2 // toggle button, may be grouped +#define ITEM_TYPE_CHECKBOX 3 // check box +#define ITEM_TYPE_TEXTFIELD 4 // editable text, associated with a cvar +#define ITEM_TYPE_COMBO 5 // drop down list +#define ITEM_TYPE_LISTBOX 6 // scrollable list +#define ITEM_TYPE_MODEL 7 // model +#define ITEM_TYPE_OWNERDRAW 8 // owner draw, name specs what it is + +#define ITEM_ALIGN_LEFT 0 // left alignment +#define ITEM_ALIGN_CENTER 1 // center alignment +#define ITEM_ALIGN_RIGHT 2 // right alignment + +#define ITEM_TEXTSTYLE_NORMAL 0 // normal text +#define ITEM_TEXTSTYLE_BLINK 1 // fast blinking +#define ITEM_TEXTSTYLE_PULSE 2 // slow pulsing +#define ITEM_TEXTSTYLE_SHADOWED 3 // drop shadow ( need a color for this ) +#define ITEM_TEXTSTYLE_OUTLINED 4 // drop shadow ( need a color for this ) +#define ITEM_TEXTSTYLE_OUTLINEDSHADOWED 5 // drop shadow ( need a color for this ) + +#define WINDOW_BORDER_NONE 0 // no border +#define WINDOW_BORDER_FULL 1 // full border based on border color ( single pixel ) +#define WINDOW_BORDER_HORZ 2 // horizontal borders only +#define WINDOW_BORDER_VERT 3 // vertical borders only +#define WINDOW_BORDER_KCGRADIENT 4 // horizontal border using the gradient bars + +#define WINDOW_STYLE_EMPTY 0 // no background +#define WINDOW_STYLE_FILLED 1 // filled with background color +#define WINDOW_STYLE_GRADIENT 2 // gradient bar based on background color +#define WINDOW_STYLE_SHADER 3 // gradient bar based on background color + +#define MENU_TRUE 1 // uh.. true +#define MENU_FALSE 0 // and false + +#define WINDOW_MOUSEOVER 0x00000001 // mouse is over it, non exclusive +#define WINDOW_HASFOCUS 0x00000002 // has cursor focus, exclusive +#define WINDOW_VISIBLE 0x00000004 // is visible +#define WINDOW_GREY 0x00000008 // is visible but grey ( non-active ) +#define WINDOW_DECORATION 0x00000010 // for decoration only, no mouse, keyboard, etc.. +#define WINDOW_FADINGOUT 0x00000020 // fading out, non-active +#define WINDOW_FADINGIN 0x00000040 // fading in +#define WINDOW_MOUSEOVERTEXT 0x00000080 // mouse is over it, non exclusive +#define WINDOW_INTRANSITION 0x00000100 // window is in transition +#define WINDOW_FORECOLORSET 0x00000200 // forecolor was explicitly set ( used to color alpha images or not ) + +// cg owner draw types +// ideally these should be done outside of this file but +// this makes it much easier for the macro expansion to +// convert them for the designers ( from the .menu files ) +// cg owner draw types +// ideally these should be done outside of this file but +// this makes it much easier for the macro expansion to +// convert them for the designers ( from the .menu files ) + +#define CG_PLAYER_ARMOR_ICON 1 +#define CG_PLAYER_ARMOR_VALUE 2 +#define CG_PLAYER_HEAD 3 +#define CG_PLAYER_HEALTH 4 +#define CG_PLAYER_AMMO_ICON 5 +#define CG_PLAYER_AMMO_VALUE 6 + +#define CG_SELECTEDPLAYER_HEAD 7 +#define CG_SELECTEDPLAYER_NAME 8 +#define CG_SELECTEDPLAYER_LOCATION 9 +#define CG_SELECTEDPLAYER_STATUS 10 +#define CG_SELECTEDPLAYER_WEAPON 11 +#define CG_SELECTEDPLAYER_POWERUP 12 + +#define CG_FLAGCARRIER_HEAD 13 +#define CG_FLAGCARRIER_NAME 14 +#define CG_FLAGCARRIER_LOCATION 15 +#define CG_FLAGCARRIER_STATUS 16 +#define CG_FLAGCARRIER_WEAPON 17 +#define CG_FLAGCARRIER_POWERUP 18 + +#define CG_PLAYER_ITEM 19 +#define CG_PLAYER_SCORE 20 + +#define CG_BLUE_FLAGHEAD 21 +#define CG_BLUE_FLAGSTATUS 22 +#define CG_BLUE_FLAGNAME 23 +#define CG_RED_FLAGHEAD 24 +#define CG_RED_FLAGSTATUS 25 +#define CG_RED_FLAGNAME 26 + +#define CG_BLUE_SCORE 27 +#define CG_RED_SCORE 28 +#define CG_RED_NAME 29 +#define CG_BLUE_NAME 30 +#define CG_HARVESTER_SKULLS 31 +#define CG_ONEFLAG_STATUS 32 +#define CG_PLAYER_LOCATION 33 +#define CG_TEAM_COLOR 34 +#define CG_CTF_POWERUP 35 + +#define CG_AREA_POWERUP 36 +#define CG_AREA_LAGOMETER 37 + +#define CG_PLAYER_HASFLAG 38 +#define CG_TEAM_COLOR 39 + + +// display flags +#define CG_SHOW_BLUE_TEAM_HAS_REDFLAG 0x00000001 +#define CG_SHOW_RED_TEAM_HAS_BLUEFLAG 0x00000002 +#define CG_SHOW_ANYTEAMGAME 0x00000004 +#define CG_SHOW_HARVESTER 0x00000008 +#define CG_SHOW_ONEFLAG 0x00000010 +#define CG_SHOW_CTF 0x00000020 +#define CG_SHOW_OBELISK 0x00000040 +#define CG_SHOW_HEALTHCRITICAL 0x00000080 +#define CG_SHOW_SINGLEPLAYER 0x00000100 +#define CG_SHOW_TOURNAMENT 0x00000200 +#define CG_SHOW_DURINGINCOMINGVOICE 0x00000400 +#define CG_SHOW_IF_PLAYER_HAS_FLAG 0x00000800 +#define CG_SHOW_LANPLAYONLY 0x00001000 +#define CG_SHOW_2DONLY 0x10000000 + + + +*/ + + +{ + assetGlobalDef { + font "fonts/impact.ttf" // font + cursor "menu/art/3_cursor2" // cursor + gradientBar "ui/assets/gradientbar2.tga" // gradient bar + fadeClamp 1.0 // sets the fadeup alpha + fadeCycle 1 // how often fade happens in milliseconds + fadeAmount 0.1 // amount to adjust alpha per cycle + + shadowX 5 // x amount for shadow offset + shadowY 5 // y amount for shadow offset + shadowColor 0.1 0.1 0.1 0.25 // shadow color + + hudShader "ui/assets/hudbar.tga" // + + } + + + +// POWERUP AREA // + +menuDef { + name "powerup area" + fullScreen MENU_FALSE + visible MENU_TRUE + rect 570 220 50 100 + + itemDef { + name "powerupArea" + rect 0 0 40 40 + visible 1 + decoration + ownerdraw CG_AREA_POWERUP + special 4 + align HUD_VERTICAL + } + +} + + + +// MINI_SELECTPLAYER // + + +menuDef { + name "miniSelectPlayer" + fullScreen MENU_FALSE + visible MENU_TRUE + rect 3 447 155 30 + + itemDef { + name "miniSelectPlayerRect" + fullScreen MENU_FALSE + visible 1 + rect 0 0 155 30 + style 4 + border 1 + bordersize 1 + bordercolor 0 0 0 0 + backcolor 0 0 0 0 + mouseEnter { show miniSelectPlayerRectAlt } + mouseExit { hide miniSelectPlayerRectAlt } + } + + itemDef { + name "miniSelectPlayerRectAlt" + fullScreen MENU_FALSE + visible 0 + rect 0 0 155 30 + style 1 + border 1 + bordersize 1 + bordercolor 1 1 1 1 + backcolor 0 0 0 0 + } + + itemDef { + name "b" + rect 3 4 25 25 + visible 1 + ownerdraw CG_SELECTEDPLAYER_HEAD + action { open altteamMenu } + } + + itemDef { + name "b" + rect 33 7 20 20 + visible 1 + decoration + ownerdraw CG_SELECTEDPLAYER_STATUS + } + + itemDef { + name "b" + rect 65 4 20 10 + visible 1 + style 3 + decoration + background "ui/assets/statusbar/selectedhealth.tga" + addColorRange -999 25 1 0 0 1 + addColorRange 26 100 1 .75 0 1 + addColorRange 101 999 1 1 1 1 + ownerdraw CG_SELECTEDPLAYER_HEALTH + } + + itemDef { + name "b" + rect 65 17 20 10 + visible 1 + style 3 + decoration + background "ui/assets/statusbar/selectedarmor.tga" + addColorRange -999 25 1 0 0 1 + addColorRange 26 100 1 .75 0 1 + addColorRange 101 999 1 1 1 1 + ownerdraw CG_SELECTEDPLAYER_ARMOR + } + + + itemDef { + name "b" + rect 90 7 20 20 + visible 1 + decoration + ownerdraw CG_SELECTEDPLAYER_WEAPON + } + + itemDef { + name "b" + rect 125 7 20 20 + visible 1 + decoration + ownerdraw CG_SELECTEDPLAYER_POWERUP + } +} + + + + +// MINI_STATUS // + +menuDef { + name "miniPlayerStatus" + fullScreen MENU_FALSE + visible MENU_TRUE + rect 162 447 155 30 + + + itemDef { + name "miniPlayerStatusRect" + fullScreen MENU_FALSE + visible 1 + rect 0 0 155 30 + style 4 + border 1 + bordersize 1 + bordercolor 0 0 0 0 + backcolor 0 0 0 0 + mouseEnter { show miniPlayerStatusRectAlt } + mouseExit { hide miniPlayerStatusRectAlt } + } + + itemDef { + name "miniPlayerStatusRectAlt" + fullScreen MENU_FALSE + visible 0 + rect 0 0 155 30 + style 1 + border 1 + bordersize 1 + bordercolor 1 1 1 1 + backcolor 0 0 0 0 + } + + itemDef { + name "miniAmmoValue" + rect 10 7 25 15 + visible 1 + decoration + textscale .33 + forecolor 1 1 1 1 + ownerdraw CG_PLAYER_AMMO_VALUE + addColorRange -999 5 1 0 0 1 + addColorRange 6 999 1 .75 0 1 + } + + +itemDef { + name "miniHealthValue" + rect 60 7 25 15 + visible 1 + decoration + forecolor 1 1 1 1 + textscale .33 + ownerdraw CG_PLAYER_HEALTH + addColorRange -999 25 1 0 0 1 + addColorRange 26 100 1 .75 0 1 + addColorRange 101 999 1 1 1 1 + } + +itemDef { + name "MiniArmorValue" + rect 110 7 25 15 + visible 1 + decoration + textscale .33 + ownerdraw CG_PLAYER_ARMOR_VALUE + addColorRange -999 25 1 0 0 1 + addColorRange 26 100 1 .75 0 1 + addColorRange 101 999 1 1 1 1 + } +} + + + + +// MINI_ITEMS // + +menuDef { + name "miniItems" + fullScreen MENU_FALSE + visible MENU_TRUE + style 4 + rect 321 447 155 30 + + itemDef { + name "miniItemRect" + fullScreen MENU_FALSE + visible 1 + rect 0 0 155 30 + style 4 + border 1 + bordersize 1 + bordercolor 0 0 0 0 + backcolor 0 0 0 0 + mouseEnter { show miniItemRectAlt } + mouseExit { hide miniItemRectAlt } + } + + itemDef { + name "miniITemRectAlt" + fullScreen MENU_FALSE + visible 0 + rect 0 0 155 30 + style 1 + border 1 + bordersize 1 + bordercolor 1 1 1 1 + backcolor 0 0 0 0 + } + + itemDef { + name "b" + rect 5 6 20 20 + visible 1 + decoration + ownerdraw CG_PLAYER_STATUS + } + + itemDef { + name "b" + rect 45 6 20 20 + visible 1 + decoration + ownerdraw CG_PLAYER_ITEM + } + + + itemDef { + name "b" + rect 80 6 20 20 + visible 1 + decoration + ownerdraw CG_CTF_POWERUP + } + + itemDef { + name "flag" + rect 120 4 25 25 + visible 1 + decoration + ownerdraw CG_PLAYER_HASFLAG + } + + + +} + +// MINI_CTF_STATUS // + +menuDef { + name "miniCTFStatus" + fullScreen MENU_FALSE + visible MENU_TRUE + style 4 + rect 480 447 155 30 + + itemDef { + name "miniCTFStatusRect" + fullScreen MENU_FALSE + visible 1 + rect 0 0 155 30 + style 4 + border 1 + bordersize 1 + bordercolor 0 0 0 0 + backcolor 0 0 0 0 + mouseEnter { show miniCTFStatusRectAlt } + mouseExit { hide miniCTFStatusRectAlt } + } + + itemDef { + name "miniCTFStatusRectAlt" + fullScreen MENU_FALSE + visible 0 + rect 0 0 155 30 + style 1 + border 1 + bordersize 1 + bordercolor 1 1 1 1 + backcolor 0 0 0 0 + } + + +itemDef { + name "f" + rect 8 6 20 20 + visible 1 + bordercolor 1 1 1 .75 + decoration + style 3 + background "ui/assets/bluechip.tga" + } + +itemDef { + name "miniFlagBlue" + rect 8 6 20 20 + visible 1 + decoration + ownerdraw CG_BLUE_FLAGSTATUS + } + +itemDef { + name "miniBlueScore" + rect 25 7 30 15 + visible 1 + decoration + forecolor 1 1 1 1 + textscale 0.33 + ownerdraw CG_BLUE_SCORE + } + +itemDef { + name "f" + rect 85 6 20 20 + visible 1 + bordercolor 1 1 1 .75 + decoration + style 3 + background "ui/assets/redchip.tga" + } + +itemDef { + name "miniFlagRed" + rect 85 6 20 20 + visible 1 + decoration + ownerdraw CG_RED_FLAGSTATUS + } + +itemDef { + name "miniRedScore" + rect 100 7 30 15 + visible 1 + decoration + forecolor 1 1 1 1 + textscale 0.33 + ownerdraw CG_RED_SCORE + } + +} + +{ + menuDef { + name "altTeamMenu" + fullScreen MENU_FALSE + visible MENU_FALSE + rect 5 300 80 132 + style WINDOW_STYLE_FILLED + backcolor 0 0 0.8 .25 + border WINDOW_BORDER_FULL + bordersize 1 + bordercolor .5 .5 1 1 + + itemDef { + name "Possess" + text "Possess" + textaligny 10 + textalign ITEM_ALIGN_LEFT + rect 5 5 75 10 + visible 1 + textscale 0.22 + mouseEnter { hide highlight ; show pbar } + } + + itemDef { + name "pbar" + group "highlight" + style WINDOW_STYLE_FILLED + rect 0 5 79 13 + visible 0 + backcolor 0.8 0.8 0.8 0.3 + decoration + } + + itemDef { + name "Follow" + text "Follow" + textaligny 10 + textalign ITEM_ALIGN_Left + rect 5 17 75 10 + visible 1 + textscale 0.22 + mouseEnter { hide highlight ; show fbar } + } + + itemDef { + name "fbar" + group "highlight" + style WINDOW_STYLE_FILLED + rect 0 17 79 13 + visible 0 + backcolor 0.8 0.8 0.8 0.3 + decoration + } + + itemDef { + name "Go To" + text "Go To" + textaligny 10 + textalign ITEM_ALIGN_Left + rect 5 29 75 10 + visible 1 + textscale 0.22 + mouseEnter { hide highlight ; show gbar } + } + + itemDef { + name "gbar" + group "highlight" + style WINDOW_STYLE_FILLED + rect 0 29 79 13 + visible 0 + backcolor 0.8 0.8 0.8 0.3 + decoration + } + + itemDef { + name "Get" + text "Get" + textaligny 10 + textalign ITEM_ALIGN_Left + rect 5 41 75 10 + visible 1 + textscale 0.22 + mouseEnter { hide highlight ; show g2bar } + action { open altGetMenu } + } + + itemDef { + name "g2bar" + group "highlight" + style WINDOW_STYLE_FILLED + rect 0 41 79 13 + visible 0 + backcolor 0.8 0.8 0.8 0.3 + decoration + } + + itemDef { + name "Patrol From" + text "Patrol From" + textaligny 10 + textalign ITEM_ALIGN_Left + rect 5 53 75 10 + visible 1 + textscale 0.22 + mouseEnter { hide highlight ; show p2bar } + } + + itemDef { + name "p2bar" + group "highlight" + style WINDOW_STYLE_FILLED + rect 0 53 79 13 + visible 0 + backcolor 0.8 0.8 0.8 0.3 + decoration + } + + itemDef { + name "Patrol To" + text "Patrol To" + textaligny 10 + textalign ITEM_ALIGN_Left + rect 5 65 75 10 + visible 1 + textscale 0.22 + mouseEnter { hide highlight ; show p3bar } + } + + itemDef { + name "p3bar" + group "highlight" + style WINDOW_STYLE_FILLED + rect 0 65 79 13 + visible 0 + backcolor 0.8 0.8 0.8 0.3 + decoration + } + + itemDef { + name "Camp Near" + text "Camp Near" + textaligny 10 + textalign ITEM_ALIGN_Left + rect 5 77 75 10 + visible 1 + textscale 0.22 + mouseEnter { hide highlight ; show cbar } + } + + itemDef { + name "cbar" + group "highlight" + style WINDOW_STYLE_FILLED + rect 0 75 79 13 + visible 0 + backcolor 0.8 0.8 0.8 0.3 + decoration + } + + itemDef { + name "Defend" + text "Defend" + textaligny 10 + textalign ITEM_ALIGN_Left + rect 5 89 75 10 + visible 1 + textscale 0.22 + mouseEnter { hide highlight ; show dbar } + } + + itemDef { + name "dbar" + group "highlight" + style WINDOW_STYLE_FILLED + rect 0 89 79 13 + visible 0 + backcolor 0.8 0.8 0.8 0.3 + decoration + } + + itemDef { + name "Attack" + text "Attack" + textaligny 10 + textalign ITEM_ALIGN_Left + rect 5 101 75 10 + visible 1 + textscale 0.22 + mouseEnter { hide highlight ; show abar } + } + + itemDef { + name "abar" + group "highlight" + style WINDOW_STYLE_FILLED + rect 0 101 79 13 + visible 0 + backcolor 0.8 0.8 0.8 0.3 + decoration + } + + itemDef { + name "Drop Command" + text "Drop Command" + textaligny 10 + textalign ITEM_ALIGN_Left + rect 5 113 75 10 + visible 1 + textscale 0.22 + mouseEnter { hide highlight ; show dcbar } + } + + itemDef { + name "dcbar" + group "highlight" + style WINDOW_STYLE_FILLED + rect 0 113 79 13 + visible 0 + backcolor 0.8 0.8 0.8 0.3 + decoration + } + } + + +menuDef { + name "altGetMenu" + fullScreen MENU_FALSE + visible MENU_FALSE + rect 86 338 85 35 + style WINDOW_STYLE_FILLED + backcolor 0 0 0.8 .25 + border WINDOW_BORDER_FULL + bordersize 1 + bordercolor .5 .5 1 1 + + itemDef { + name "Enemy Flag" + text "Enemy Flag" + textaligny 10 + textalign ITEM_ALIGN_LEFT + rect 5 3 80 10 + visible 1 + textscale 0.22 + mouseEnter { hide highlight2 ; show efbar } + action { close altGetMenu ; close altTeamMenu ; orders get flag } + + } + itemDef { + name "efbar" + group "highlight2" + style WINDOW_STYLE_FILLED + rect 0 3 84 13 + visible 0 + backcolor 0.8 0.8 0.8 0.3 + decoration + } + + itemDef { + name "Rocket Launcher" + text "Rocket Launcher" + textaligny 10 + textalign ITEM_ALIGN_LEFT + rect 5 17 80 10 + visible 1 + textscale 0.22 + mouseEnter { hide highlight2 ; show rlbar } + action { close altGetMenu ; close altTeamMenu ; orders get rocketlauncher } + + } + itemDef { + name "rlbar" + group "highlight2" + style WINDOW_STYLE_FILLED + rect 0 17 84 13 + visible 0 + backcolor 0.8 0.8 0.8 0.3 + decoration + } + + } + +} + diff --git a/ta_ui/ui/system.menu b/ta_ui/ui/system.menu new file mode 100644 index 00000000..25f17f5d --- /dev/null +++ b/ta_ui/ui/system.menu @@ -0,0 +1,676 @@ +#include "ui/menudef.h" + +{ +\\ SETUP MENU \\ + +menuDef { + name "system_menu" + visible 0 + fullscreen 0 + rect 186 0 443 426 + focusColor 1 .75 0 1 + style 1 + border 1 + onOpen { setitemcolor fadebox backcolor 0 0 0 1 ; fadeout fadebox ; hide grpSystem ; show graphics } + onEsc { close system_menu ; close setup_menu ; open main } + + +itemDef { + name window + group grpSystembutton + rect 0 2 443 426 + style WINDOW_STYLE_FILLED + border 1 + bordercolor .5 .5 .5 .5 + forecolor 1 1 1 1 + backcolor 0 0 0 .25 + visible 1 + decoration +} + + + + +// System // + +itemDef { + name ctr_graphics + text "Graphics" + type 1 + textscale .3 + group grpSystembutton + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + rect 56 395 100 26 + textalign 1 + textalignx 50 + textaligny 20 + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + visible 1 + action { play "sound/misc/kcaction.wav" ; + hide grpSystem ; show graphics } + mouseEnter { show message_graphics ; setitemcolor ctr_graphics backcolor .1 .37 .1 1 } + mouseExit { hide message_graphics ; setitemcolor ctr_graphics backcolor .37 .1 .1 1 } + } + +itemDef { + name ctr_graphics + style WINDOW_STYLE_SHADER + background "ui/assets/framebutton.tga" + rect 56 395 100 26 + visible 1 + decoration + } + +itemDef { + name ctr_graphics + style WINDOW_STYLE_SHADER + background "ui/assets/leftbutton.tga" + rect 44 395 13 26 + visible 1 + decoration + } + +itemDef { + name ctr_graphics + style WINDOW_STYLE_SHADER + background "ui/assets/rightbutton.tga" + rect 155 395 13 26 + visible 1 + decoration + } + + + itemDef { + name graphics + group grpSystem + text "Quality:" + type ITEM_TYPE_MULTI + cvar "ui_glCustom" + cvarFloatList { "High Quality" 0 "Normal" 1 "Fast" 2 "Fastest" 3 "Custom" 4 } + rect 99 42 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .333 + forecolor 1 1 1 1 + visible 0 + action { uiScript update "ui_glCustom" } + } + + itemDef { + name graphics + group grpSystem + type ITEM_TYPE_EDITFIELD + text "GL Driver:" + cvar "r_gldriver" + rect 99 67 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .333 + forecolor 1 1 1 1 + visible 0 + decoration + } + + itemDef { + name graphics + group grpSystem + type ITEM_TYPE_YESNO + text "GL Extensions:" + cvar "r_allowExtensions" + rect 99 92 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .333 + forecolor 1 1 1 1 + visible 0 + action { uiScript glCustom } + } + + itemDef { + name graphics + group grpSystem + type ITEM_TYPE_MULTI + text "Video Mode:" + cvar "r_mode" + cvarFloatList { "320*240" 0 "400*300" 1 "512*384" 2 "640*480" 3 "800*600" 4 "960*720" 5 "1024*768" 6 "1152*864" 7 "1280*1024" 8 "1600*1200" 9 "2048*1536" 10 "856*480 Wide Screen" 11 } + rect 99 117 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .333 + forecolor 1 1 1 1 + visible 0 + action { uiScript glCustom } + } + + itemDef { + name graphics + group grpSystem + type ITEM_TYPE_MULTI + text "Color Depth:" + cvar "r_colorbits" + cvarFloatList { "Desktop Default" 0 "16-bit" 16 "32-bit" 32 } + rect 99 142 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .333 + forecolor 1 1 1 1 + visible 0 + action { uiScript glCustom ; uiScript update "r_colorbits" } + } + + itemDef { + name graphics + group grpSystem + type ITEM_TYPE_YESNO + text "Fullscreen:" + cvar "r_fullscreen" + rect 99 167 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .333 + forecolor 1 1 1 1 + visible 0 + action { uiScript glCustom } + } + + itemDef { + name graphics + group grpSystem + type ITEM_TYPE_MULTI + text "Lighting:" + cvar "r_vertexlight" + cvarFloatList { "Light Map (high)" 0 "Vertex (low)" 1 } + rect 99 192 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .333 + forecolor 1 1 1 1 + visible 0 + action { uiScript glCustom } + } + + itemDef { + name graphics + group grpSystem + type ITEM_TYPE_MULTI + text "Geometric Detail:" + cvar "r_lodbias" + cvarFloatList { "High" 0 "Medium" 1 "Low" 2 } + rect 99 217 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .333 + forecolor 1 1 1 1 + visible 0 + action { uiScript glCustom ; uiScript update "r_lodbias" } + } + + itemDef { + name graphics + group grpSystem + type ITEM_TYPE_MULTI + text "Texture Detail:" + cvar "r_picmip" + cvarFloatList { "Low" 2 "Normal" 1 "High" 0 } + rect 99 242 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .333 + forecolor 1 1 1 1 + visible 0 + action { uiScript glCustom } + } + + itemDef { + name graphics + group grpSystem + type ITEM_TYPE_MULTI + text "Texture Quality:" + cvar "r_texturebits" + cvarFloatList { "Default" 0 "16 bit" 16 "32 bit" 32 } + rect 99 269 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .333 + forecolor 1 1 1 1 + visible 0 + } + + itemDef { + name graphics + group grpSystem + type ITEM_TYPE_MULTI + text "Texture Filter:" + cvar "r_texturemode" + cvarStrList { "Bilinear", "GL_LINEAR_MIPMAP_NEAREST", "Trilinear", "GL_LINEAR_MIPMAP_LINEAR" } + rect 99 294 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .333 + forecolor 1 1 1 1 + visible 0 + action { uiScript glCustom } + } + itemDef { + name graphics + group grpSystem + type ITEM_TYPE_YESNO + text "Compress Textures:" + cvar "r_ext_compressed_textures" + rect 99 319 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .333 + forecolor 1 1 1 1 + visible 0 + action { uiScript glCustom } + } + +itemDef { + name graphics + text "Apply" + type 1 + group grpSystem + textscale .3 + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + rect 181 357 100 26 + textalign 1 + textalignx 50 + textaligny 20 + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + visible 1 + action { play "sound/misc/kcaction.wav" ; + open vid_restart_popmenu } + mouseEnter { setitemcolor graphics backcolor .1 .37 .1 1 } + mouseExit { setitemcolor graphics backcolor .37 .1 .1 1 } + } + + itemDef { + name graphics + group grpSystem + style WINDOW_STYLE_SHADER + background "ui/assets/framebutton.tga" + rect 181 357 100 26 + visible 1 + decoration + } + + itemDef { + name graphics + group grpSystem + style WINDOW_STYLE_SHADER + background "ui/assets/leftbutton.tga" + rect 169 357 13 26 + visible 1 + decoration + } + + itemDef { + name graphics + group grpSystem + style WINDOW_STYLE_SHADER + background "ui/assets/rightbutton.tga" + rect 280 357 13 26 + visible 1 + decoration + } + + + + + +itemDef { + name ctr_driver + text "Driver Info" + type 1 + textscale .3 + group grpSystembutton + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + rect 181 395 100 26 + textalign 1 + textalignx 50 + textaligny 20 + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + visible 1 + action { play "sound/misc/kcaction.wav" ; + hide grpSystem ; show driver } + mouseEnter { show message_driver ; setitemcolor ctr_driver backcolor .1 .37 .1 1 } + mouseExit { hide message_driver ; setitemcolor ctr_driver backcolor .37 .1 .1 1 } + } + +itemDef { + name ctr_driver + style WINDOW_STYLE_SHADER + background "ui/assets/framebutton.tga" + rect 181 395 100 26 + visible 1 + decoration + } + +itemDef { + name ctr_driver + style WINDOW_STYLE_SHADER + background "ui/assets/leftbutton.tga" + rect 169 395 13 26 + visible 1 + decoration + } + +itemDef { + name ctr_driver + style WINDOW_STYLE_SHADER + background "ui/assets/rightbutton.tga" + rect 280 395 13 26 + visible 1 + decoration + } + + itemDef { + name driver + group grpSystem + rect 0 32 454 256 + text "Driver Information" + textalign 1 + textscale .333 + textalignx 227 + textaligny 23 + forecolor 1 1 1 1 + visible 0 + decoration + } + + itemDef { + name driver + group grpSystem + rect 10 70 400 300 + ownerdraw UI_GLINFO + textalign 0 + textalignx 0 + textaligny 23 + textscale .25 + forecolor 1 1 1 1 + visible 0 + decoration + style 1 + + } + + + +itemDef { + name ctr_other + text "Other" + type 1 + textscale .3 + group grpSystembutton + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + rect 306 395 100 26 + textalign 1 + textalignx 50 + textaligny 20 + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + visible 1 + action { play "sound/misc/kcaction.wav" ; + hide grpSystem ; show other } + mouseEnter { show message_other ; setitemcolor ctr_other backcolor .1 .37 .1 1 } + mouseExit { hide message_other ; setitemcolor ctr_other backcolor .37 .1 .1 1} + } + +itemDef { + name ctr_other + style WINDOW_STYLE_SHADER + background "ui/assets/framebutton.tga" + rect 306 395 100 26 + visible 1 + decoration + } + +itemDef { + name ctr_other + style WINDOW_STYLE_SHADER + background "ui/assets/leftbutton.tga" + rect 294 395 13 26 + visible 1 + decoration + } + +itemDef { + name ctr_other + style WINDOW_STYLE_SHADER + background "ui/assets/rightbutton.tga" + rect 405 395 13 26 + visible 1 + decoration + } + +itemDef { + name other + group grpSystem + rect 2 4 439 125 + style WINDOW_STYLE_FILLED + border 1 + bordercolor .5 .5 .5 .5 + forecolor 1 1 1 1 + backcolor 0 0 0 .25 + visible 0 + decoration +} + +itemDef { + name other + group grpSystem + rect 2 131 439 150 + style WINDOW_STYLE_FILLED + border 1 + bordercolor .5 .5 .5 .5 + forecolor 1 1 1 1 + backcolor 0 0 0 .25 + visible 0 + decoration +} +itemDef { + name other + group grpSystem + rect 2 283 439 100 + style WINDOW_STYLE_FILLED + border 1 + bordercolor .5 .5 .5 .5 + forecolor 1 1 1 1 + backcolor 0 0 0 .25 + visible 0 + decoration +} +itemDef { + name other + group grpSystem + style 1 + text "Display" + rect 163 8 128 20 + textalign ITEM_ALIGN_CENTER + textalignx 64 + textaligny 20 + textscale .3 + forecolor .4 .4 .65 1 + visible 0 + decoration + } + + itemDef { + name other + group grpSystem + type ITEM_TYPE_SLIDER + text "Brightness:" + cvarfloat "r_gamma" 1 0.5 2 + rect 99 52 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .333 + forecolor 1 1 1 1 + visible 0 + } + + itemDef { + name other + group grpSystem + type ITEM_TYPE_SLIDER + text "Screen Size:" + cvarfloat "cg_viewsize" 100 30 100 + rect 99 79 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .333 + forecolor 1 1 1 1 + visible 0 + } + +itemDef { + name other + group grpSystem + style 1 + text "Sound" + rect 163 135 128 20 + textalign ITEM_ALIGN_CENTER + textalignx 64 + textaligny 20 + textscale .333 + forecolor .4 .4 .65 1 + visible 0 + decoration + } + + itemDef { + name other + group grpSystem + type ITEM_TYPE_SLIDER + text "Effects Volume:" + cvarfloat "s_volume" 0.7 0 1 + rect 99 160 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .333 + forecolor 1 1 1 1 + visible 0 + } + + itemDef { + name other + group grpSystem + type ITEM_TYPE_SLIDER + text "Music Volume:" + cvarfloat "s_musicvolume" 0.25 0 1 + rect 99 187 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .333 + forecolor 1 1 1 1 + visible 0 + } + + itemDef { + name other + group grpSystem + type ITEM_TYPE_MULTI + text "Sound Quality:" + cvar "s_khz" + cvarFloatList { "22 khz (high)" 22 "11 khz (low)" 11 } + rect 99 214 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .333 + forecolor 1 1 1 1 + visible 0 + } + + itemDef { + name other + group grpSystem + type ITEM_TYPE_YESNO + text "Doppler Sound:" + cvar "s_doppler" + rect 99 241 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .333 + forecolor 1 1 1 1 + visible 0 + } + + + +itemDef { + name other + group grpSystem + style 1 + text "Network" + rect 163 285 128 20 + textalign 1 + textalignx 64 + textaligny 20 + textscale .333 + forecolor .4 .4 .65 1 + visible 0 + decoration + } + + itemDef { + name other + group grpSystem + type ITEM_TYPE_MULTI + text "Net Data Rate:" + cvar "rate" + cvarFloatList { "<=28.8k" 2500 "33.6k" 3000 "56k" 4000 "ISDN" 5000 "LAN/CABLE/xDSl" 25000 } + rect 99 327 256 20 + textalign ITEM_ALIGN_RIGHT + textalignx 128 + textaligny 20 + textscale .333 + forecolor 1 1 1 1 + visible 0 + action { uiScript update ui_setRate } + } + + +itemDef { + name fadebox + style WINDOW_STYLE_FILLED + background "ui/assets/fadebox.tga" + forecolor 0 0 0 1 + backcolor 0 0 0 1 + rect 0 0 640 480 + visible 1 + decoration + } + + + + +} + + +} diff --git a/ta_ui/ui/team.menu b/ta_ui/ui/team.menu new file mode 100644 index 00000000..72e569e1 --- /dev/null +++ b/ta_ui/ui/team.menu @@ -0,0 +1,306 @@ +#include "ui/menudef.h" + +// botselection menu +{ + menuDef { + name "teamMenu" + fullScreen MENU_FALSE + visible MENU_FALSE + rect 5 200 80 132 + style WINDOW_STYLE_FILLED + backcolor 0 0 0.8 .25 + border WINDOW_BORDER_FULL + bordersize 1 + bordercolor .5 .5 1 1 + + itemDef { + name Possess + text "Possess" + textaligny 10 + textalign 0 + rect 5 5 75 10 + visible 1 + textscale 0.22 + mouseEnter { hide highlight ; show pbar } + + } + itemDef { + name "pbar" + group "highlight" + style WINDOW_STYLE_FILLED + rect 0 5 79 13 + visible 0 + backcolor 0.8 0.8 0.8 0.3 + decoration + } + itemDef { + name Follow + text "Follow" + textaligny 10 + textalign 0 + rect 5 17 75 10 + visible 1 + textscale 0.22 + mouseEnter { hide highlight ; show fbar } + } + itemDef { + name "fbar" + group "highlight" + style WINDOW_STYLE_FILLED + rect 0 17 79 13 + visible 0 + backcolor 0.8 0.8 0.8 0.3 + decoration + } + itemDef { + name "Go To" + text "Go To" + textaligny 10 + textalign 0 + rect 5 29 75 10 + visible 1 + textscale 0.22 + mouseEnter { hide highlight ; show gbar } + } + itemDef { + name "gbar" + group "highlight" + style WINDOW_STYLE_FILLED + rect 0 29 79 13 + visible 0 + backcolor 0.8 0.8 0.8 0.3 + decoration + } + itemDef { + name "Get" + text "Get" + textaligny 10 + textalign 0 + rect 5 41 75 10 + visible 1 + textscale 0.22 + mouseEnter { hide highlight ; show g2bar } + action { open getMenu } + } + itemDef { + name "g2bar" + group "highlight" + style WINDOW_STYLE_FILLED + rect 0 41 79 13 + visible 0 + backcolor 0.8 0.8 0.8 0.3 + decoration + } + itemDef { + name "Patrol From" + text "Patrol From" + textaligny 10 + textalign 0 + rect 5 53 75 10 + visible 1 + textscale 0.22 + mouseEnter { hide highlight ; show p2bar } + } + itemDef { + name "p2bar" + group "highlight" + style WINDOW_STYLE_FILLED + rect 0 53 79 13 + visible 0 + backcolor 0.8 0.8 0.8 0.3 + decoration + } + itemDef { + name "Patrol To" + text "Patrol To" + textaligny 10 + textalign 0 + rect 5 65 75 10 + visible 1 + textscale 0.22 + mouseEnter { hide highlight ; show p3bar } + } + itemDef { + name "p3bar" + group "highlight" + style WINDOW_STYLE_FILLED + rect 0 65 79 13 + visible 0 + backcolor 0.8 0.8 0.8 0.3 + decoration + } + itemDef { + name "Camp Near" + text "Camp Near" + textaligny 10 + textalign 0 + rect 5 77 75 10 + visible 1 + textscale 0.22 + mouseEnter { hide highlight ; show cbar } + } + itemDef { + name "cbar" + group "highlight" + style WINDOW_STYLE_FILLED + rect 0 75 79 13 + visible 0 + backcolor 0.8 0.8 0.8 0.3 + decoration + } + itemDef { + name "Defend" + text "Defend" + textaligny 10 + textalign 0 + rect 5 89 75 10 + visible 1 + textscale 0.22 + mouseEnter { hide highlight ; show dbar } + } + itemDef { + name "dbar" + group "highlight" + style WINDOW_STYLE_FILLED + rect 0 89 79 13 + visible 0 + backcolor 0.8 0.8 0.8 0.3 + decoration + } + itemDef { + name "Attack" + text "Attack" + textaligny 10 + textalign 0 + rect 5 101 75 10 + visible 1 + textscale 0.22 + mouseEnter { hide highlight ; show abar } + } + itemDef { + name "abar" + group "highlight" + style WINDOW_STYLE_FILLED + rect 0 101 79 13 + visible 0 + backcolor 0.8 0.8 0.8 0.3 + decoration + } + itemDef { + name "Drop Command" + text "Drop Command" + textaligny 10 + textalign 0 + rect 5 113 75 10 + visible 1 + textscale 0.22 + mouseEnter { hide highlight ; show dcbar } + } + itemDef { + name "dcbar" + group "highlight" + style WINDOW_STYLE_FILLED + rect 0 113 79 13 + visible 0 + backcolor 0.8 0.8 0.8 0.3 + decoration + } + } + + menuDef { + name "getMenu" + fullScreen MENU_FALSE + visible MENU_FALSE + rect 86 238 85 35 + style WINDOW_STYLE_FILLED + backcolor 0 0 0.8 .25 + border WINDOW_BORDER_FULL + bordersize 1 + bordercolor .5 .5 1 1 + + itemDef { + name "Enemy Flag" + text "Enemy Flag" + textaligny 10 + textalign 0 + rect 5 3 80 10 + visible 1 + textscale 0.22 + mouseEnter { hide highlight2 ; show efbar } + action { close getMenu ; close teamMenu ; orders get flag } + + } + itemDef { + name "efbar" + group "highlight2" + style WINDOW_STYLE_FILLED + rect 0 3 84 13 + visible 0 + backcolor 0.8 0.8 0.8 0.3 + decoration + } + itemDef { + name "Rocket Launcher" + text "Rocket Launcher" + textaligny 10 + textalign 0 + rect 5 17 80 10 + visible 1 + textscale 0.22 + mouseEnter { hide highlight2 ; show rlbar } + action { close getMenu ; close teamMenu ; orders get rocketlauncher } + + } + itemDef { + name "rlbar" + group "highlight2" + style WINDOW_STYLE_FILLED + rect 0 17 84 13 + visible 0 + backcolor 0.8 0.8 0.8 0.3 + decoration + } + } + + menuDef { + name "voiceMenu" + fullScreen MENU_FALSE + visible MENU_FALSE + rect 5 25 40 40 + style WINDOW_STYLE_SHADER + background "console" + //backcolor 0 0 0.5 0.5 + border WINDOW_BORDER_FULL + bordersize 1 + bordercolor .5 .5 .5 1 + + itemDef { + name "b" + rect 2 2 33 33 + visible 1 + decoration + ownerdraw CG_SELECTEDPLAYER_HEAD + } + + } + + menuDef { + name "voteMenu" + fullScreen MENU_FALSE + visible MENU_FALSE + rect 5 25 40 40 + style WINDOW_STYLE_SHADER + background "textures/base_wall/comp3" + backcolor 0 0 0.5 0.5 + border WINDOW_BORDER_FULL + bordersize 1 + bordercolor 0 1 0 1 + + } + + + + +} + + diff --git a/ta_ui/ui/teamscore.menu b/ta_ui/ui/teamscore.menu new file mode 100644 index 00000000..daf18409 --- /dev/null +++ b/ta_ui/ui/teamscore.menu @@ -0,0 +1,512 @@ +#include "ui/menudef.h" + +{ +\\ score_menu \\ + + menuDef { + name "teamscore_menu" + visible 0 + fullscreen 0 + rect 0 0 640 480 + focusColor 1 .75 0 1 + style 0 + border 1 + + +// GAMETYPE BAR // + + +itemDef { + name gameStatusWindow + style 4 + rect 14 40 612 35 + border 1 + bordercolor 1 1 1 1 + visible 1 + decoration + } + + + + +itemDef { + name score + ownerdraw CG_KILLER + textscale .4 + style 0 + rect 0 40 640 27 + textalignx 0 + textaligny 27 + textalign 1 + backcolor 0 0 0 0 + forecolor 1 1 1 1 + visible 1 + decoration + } + + + +// TEAM NAME // + +itemDef { + name teamNameWindow + rect 14 78 612 30 + style WINDOW_STYLE_FILLED + border 1 + bordercolor .5 .5 .5 1 + forecolor 1 1 1 1 + backcolor 0 0 0 .5 + visible 1 + decoration + } +itemDef { + name score + text " " + ownerdraw CG_GAME_STATUS + textscale .3 + style 0 + rect 0 78 640 23 + textalignx 320 + textaligny 0 + textalign 1 + backcolor 0 0 0 0 + forecolor 1 1 1 1 + visible 1 + decoration + } + + +itemDef { + name redteamname + ownerdraw CG_RED_NAME + textalign 0 + textscale .3 + rect 20 78 306 23 + forecolor 1 0 0 1 + decoration + visible 1 + } + +itemDef { + name blueteamname + ownerdraw CG_BLUE_NAME + text " " + textalign 2 + textscale .3 + rect 600 78 0 23 + forecolor 0 0 1 1 + decoration + visible 1 + } + + +// TEAM BARS // + +itemDef { + name leftteambar + rect 14 112 307 25 + style WINDOW_STYLE_FILLED + border 1 + bordercolor 1 1 1 1 + forecolor 1 1 1 1 + backcolor 1 0 0 1 + visible 1 + decoration + } + +itemDef { + name rightteambar + rect 320 112 306 25 + style WINDOW_STYLE_FILLED + border 1 + bordercolor 1 1 1 1 + forecolor 1 1 1 1 + backcolor 0 0 1 1 + visible 1 + decoration + } + +// TEAM HEADINGS // + +itemDef { + name leftteamheadings + text "Status Name Score Time Ping" + textscale .25 + style 0 + rect 25 112 128 30 + textalign 0 + textalignx 0 // x alignment point for text + // use it to offset left/right text from the edge + // or to center the text on a different point + textaligny 18 + backcolor 0 0 0 0 + forecolor 1 .75 0 1 + decoration + visible 1 + } +itemDef { + name rightteamheadings + text "Status Name Score Time Ping" + textscale .25 + style 0 + rect 331 112 128 30 + textalign 0 + textalignx 0 // x alignment point for text + // use it to offset left/right text from the edge + // or to center the text on a different point + textaligny 18 + backcolor 0 0 0 0 + forecolor 1 .75 0 1 + decoration + visible 1 + } + + + + +// GRADIENT BACKGROUNDS // + + +itemDef { + name window + rect 320 142 1 220 + style WINDOW_STYLE_FILLED + border 1 + bordercolor .5 .5 .5 1 + forecolor 1 1 1 1 + backcolor 0 0 0 1 + visible 1 + decoration + } + +itemDef { + name window + rect 300 142 1 220 + style WINDOW_STYLE_FILLED + border 1 + bordercolor .5 .5 .5 1 + visible 1 + decoration + } + +itemDef { + name window + rect 606 142 1 220 + style WINDOW_STYLE_FILLED + border 1 + bordercolor .5 .5 .5 1 + visible 1 + decoration + } +itemDef { + name redlogo + style WINDOW_STYLE_SHADER + background "textures/ctf2/redteam01.tga" + rect 110 189 128 128 + forecolor .75 0 0 0.5 + visible 1 + decoration + } +itemDef { + name bluelogo + style WINDOW_STYLE_SHADER + background "textures/ctf2/blueteam01" + rect 416 189 128 128 + forecolor 0 0 .75 0.5 + visible 1 + decoration + } + +itemDef { + name leftgrad + style WINDOW_STYLE_SHADER + background "ui/assets/halfgradleft.tga" + rect 14 142 306 222 + forecolor .75 0 0 0.5 + visible 1 + decoration + } + +itemDef { + name rightgrad + style WINDOW_STYLE_SHADER + background "ui/assets/halfgradright.tga" + rect 320 142 306 222 + forecolor 0 0 .75 0.5 + visible 1 + decoration + } + + +// LIST // + +itemDef { + name leftlist + rect 14 142 306 222 + forecolor .75 .75 .75 1 + visible 1 + type ITEM_TYPE_LISTBOX + elementwidth 135 + elementheight 20 + textscale .25 + elementtype LISTBOX_TEXT + feeder FEEDER_REDTEAM_LIST + notselectable + columns 7 2 12 12 18 12 12 34 20 20 78 75 16 183 20 20 221 20 20 251 10 10 + } + + + +itemDef { + name rightlist + rect 320 142 306 222 + forecolor 1 1 1 1 + visible 1 + type ITEM_TYPE_LISTBOX + elementwidth 135 + elementheight 20 + textscale .25 + elementtype LISTBOX_TEXT + feeder FEEDER_BLUETEAM_LIST + notselectable + columns 7 2 12 12 18 12 12 34 20 20 78 75 16 183 20 20 221 20 20 251 10 10 + } + + + + +// PLAYER LIST BORDER // + + + +itemDef { + name window + rect 14 141 612 221 + style WINDOW_STYLE_EMPTY + border 1 + bordercolor .5 .5 .5 1 + forecolor 1 1 1 1 + backcolor 0 0 0 .5 + visible 1 + decoration + } + + + + + + + + + +// spectators // + + +itemDef { + name window + rect 14 414 612 24 + style WINDOW_STYLE_FILLED + border 1 + bordercolor .5 .5 .5 1 + forecolor 1 1 1 .7 + backcolor 0 0 0 .5 + textscale .33 + visible 1 + decoration + } + +itemDef { + name window + text "Spectating:" + textaligny 20 + rect 19 414 82 24 + style WINDOW_STYLE_FILLED + forecolor 1 1 1 1 + textscale .33 + textalignx 3 + visible 1 + decoration + } + +itemDef { + name window + rect 100 414 520 24 + style WINDOW_STYLE_FILLED + forecolor 1 1 1 1 + textscale .33 + visible 1 + ownerdraw CG_SPECTATORS + decoration + } + + + + + +// AWARDS // + + +itemDef { + name window + rect 14 364 612 48 + style WINDOW_STYLE_FILLED + border 1 + bordercolor .5 .5 .5 1 + forecolor 1 1 1 1 + backcolor 0 0 0 .5 + visible 1 + decoration + } + +itemdef { + name medal_accuracy + ownerdraw CG_ACCURACY + rect 43 368 32 32 + background "ui/assets/medal_accuracy.tga" + forecolor 1 1 1 .5 + visible 1 + decoration + textscale 0.25 + } + +itemdef { + name medal_assist + ownerdraw CG_ASSISTS + rect 130 368 32 32 + background "ui/assets/medal_assist.tga" + forecolor 1 1 1 .5 + visible 1 + decoration + textscale 0.25 + } + +itemdef { + name medal_defend + ownerdraw CG_DEFEND + rect 227 368 32 32 + background "ui/assets/medal_defend.tga" + forecolor 1 1 1 .5 + visible 1 + decoration + textscale 0.25 + } + +itemdef { + name medal_excellent + ownerdraw CG_EXCELLENT + rect 314 368 32 32 + background "ui/assets/medal_excellent.tga" + forecolor 1 1 1 .5 + visible 1 + decoration + textscale 0.25 + } + +itemdef { + name medal_gauntlet + ownerdraw CG_GAUNTLET + rect 391 368 32 32 + background "ui/assets/medal_gauntlet.tga" + forecolor 1 1 1 .5 + visible 1 + decoration + textscale 0.25 + } + +itemdef { + name medal_impressive + ownerdraw CG_IMPRESSIVE + rect 478 368 32 32 + background "ui/assets/medal_impressive.tga" + forecolor 1 1 1 .5 + visible 1 + decoration + textscale 0.25 + } + +itemdef { + name medal_capture_team + ownerdraw CG_CAPTURES + rect 565 368 32 32 + background "ui/assets/medal_capture.tga" + forecolor 1 1 1 .5 + visible 1 + decoration + textscale 0.25 + } + +// GAMETYPE // + +itemDef { + name window + rect 14 440 612 24 + style WINDOW_STYLE_FILLED + border 1 + bordercolor .5 .5 .5 1 + forecolor 1 1 1 .7 + backcolor 0 0 0 .5 + visible 1 + decoration + } + +itemDef { + name window + rect 220 440 200 24 + style WINDOW_STYLE_EMPTY + border 1 + bordercolor .5 .5 .5 1 + visible 1 + decoration + } + +itemDef { + name gametype + ownerdraw CG_GAME_TYPE + textalign 0 + textscale .3 + rect 18 440 50 20 + forecolor 1 1 1 1 + textaligny 0 + textalignx 0 + decoration + visible 1 + } + +itemdef { + name playername + text "Use Score Scroll Keys" + rect 225 440 256 24 + forecolor 1 .75 0 1 + textalignx 10 + textaligny 20 + visible 1 + textalign 0 + decoration + textscale 0.333 + } + + +itemdef { + name playerscore + text "Score:" + rect 430 440 40 21 + textalignx 0 + textaligny 21 + visible 1 + textalign 0 + forecolor 1 1 1 1 + textscale .3 + ownerdraw CG_PLAYER_SCORE + decoration + } + + + + + + + +} + + +} diff --git a/ta_ui/ui/testhud.menu b/ta_ui/ui/testhud.menu new file mode 100644 index 00000000..8a6e10cb --- /dev/null +++ b/ta_ui/ui/testhud.menu @@ -0,0 +1,1052 @@ +#include "ui/menudef.h" + +// team menu +// +// defines from ui_shared.h + +{ + assetGlobalDef { + font "fonts/impact.ttf" // font + cursor "menu/art/3_cursor2" // cursor + gradientBar "ui/assets/gradientbar2.tga" // gradient bar + fadeClamp 1.0 // sets the fadeup alpha + fadeCycle 1 // how often fade happens in milliseconds + fadeAmount 0.1 // amount to adjust alpha per cycle + + shadowX 5 // x amount for shadow offset + shadowY 5 // y amount for shadow offset + shadowColor 0.1 0.1 0.1 0.25 // shadow color + + //hudShader "ui/assets/hudbar.tga" // + + } + + +// POWERUP AREA // + +menuDef { + name "powerup area" + fullScreen MENU_FALSE + visible MENU_TRUE + rect 570 220 50 100 + + itemDef { + name "powerupArea" + rect 0 0 40 40 + visible 1 + decoration + ownerdraw CG_AREA_POWERUP + special 4 // spacing + align HUD_VERTICAL + } + + +} + + + +// SELECTED PLAYER // + +menuDef { + name "SelectedPlayer" + fullScreen MENU_FALSE + visible 1 + rect 2 363 180 64 + + + itemDef { + name "b" + rect 3 4 162 57 + style 4 + visible 1 + bordercolor 0 0 0 0 + backcolor 0 0 0 0 + mouseEnter { setcolor bordercolor 1 1 1 .5 ; setteamcolor ; show altSelectedPlayerRect } + mouseExit { setcolor backcolor 0 0 0 0 ; setcolor bordercolor 0 0 0 0 ; hide altSelectedPlayerRect } + action { open teamMenu } + } + + + + itemDef { + name "altSelectedPlayerRect" + rect 3 4 162 57 + style 4 + border 1 + bordersize 1 + visible 0 + bordercolor 1 1 1 1 + backcolor 0 0 0 0 + } + + + itemDef { + name "b" + rect 4 3 32 32 + visible 1 + action { open teamMenu } + ownerdraw CG_SELECTEDPLAYER_HEAD + } + + itemDef { + name "b" + rect 50 35 22 11 + visible 1 + style 3 + decoration + background "ui/assets/statusbar/selectedhealth.tga" + addColorRange -999 25 1 0 0 1 + addColorRange 26 100 1 .75 0 1 + addColorRange 101 999 1 1 1 1 + ownerdraw CG_SELECTEDPLAYER_HEALTH + } + + itemDef { + name "b" + rect 50 48 22 11 + visible 1 + style 3 + decoration + background "ui/assets/statusbar/selectedarmor.tga" + addColorRange -999 25 1 0 0 1 + addColorRange 26 100 .3 .65 0 1 + addColorRange 101 999 1 1 1 1 + ownerdraw CG_SELECTEDPLAYER_ARMOR + } + + itemDef { + name "b" + rect 75 48 22 11 + visible 1 + style 1 + textscale .25 + decoration + addColorRange -999 25 1 0 0 1 + addColorRange 26 100 .3 .65 0 1 + addColorRange 101 999 1 1 1 1 + ownerdraw CG_SELECTEDPLAYER_ARMOR + } +itemDef { + name "b" + rect 75 35 22 11 + visible 1 + style 1 + textscale .25 + decoration + addColorRange -999 25 1 0 0 1 + addColorRange 26 100 1 .75 0 1 + addColorRange 101 999 1 1 1 1 + ownerdraw CG_SELECTEDPLAYER_HEALTH + } + + + + itemDef { + name "b" + rect 35 3 35 15 + textscale 0.25 + forecolor 1 1 1 1 + visible 1 + decoration + ownerdraw CG_SELECTEDPLAYER_NAME + } + + itemDef { + name "b" + rect 35 15 45 15 + textscale 0.25 + forecolor 1 1 1 1 + visible 1 + decoration + ownerdraw CG_SELECTEDPLAYER_LOCATION + } + + itemDef { + name "b" + rect 7 40 16 16 + visible 1 + decoration + ownerdraw CG_SELECTEDPLAYER_STATUS + } + + itemDef { + name "b" + rect 30 40 16 16 + visible 1 + decoration + ownerdraw CG_SELECTEDPLAYER_POWERUP + } + + itemDef { + name "b" + rect 100 33 24 24 + visible 1 + decoration + ownerdraw CG_SELECTEDPLAYER_WEAPON + } +itemDef { + name "sback" + rect 0 0 180 64 + visible 1 + style 3 + forecolor 1 1 1 .25 + decoration + background "ui/assets/statusbar6b.tga" + } + + +} + + + +// PLAYER STATUS // + +menuDef { + name "playerStatus" + fullScreen MENU_FALSE + visible MENU_TRUE + rect 0 416 128 64 + + itemDef { + name "playerStatusRect" + rect 12 13 112 48 + visible 1 + style 4 + //background "ui/assets/hudback.tga" + border 1 + bordersize 1 + mouseEnter { show playerStatusRectAlt } + mouseExit { hide playerStatusRectAlt } + +} + + itemDef { + name "playerStatusRectAlt" + rect 12 13 112 48 + visible 0 + style 1 + border 1 + bordersize 1 + bordercolor 1 1 1 1 + backcolor 0 0 0 .0 +} + + itemDef { + name "playeritem" + rect 27 23 24 24 + visible 1 + decoration + ownerdraw CG_PLAYER_ITEM + } + + itemDef { + name "CTFPOWERUP" + rect 55 23 24 24 + visible 1 + decoration + ownerdraw CG_CTF_POWERUP + + + } + + itemDef { + name "flag" + rect 85 15 40 40 + visible 1 + decoration + ownerdraw CG_PLAYER_HASFLAG + } + + itemDef { + name "skulls" + rect 75 8 45 40 + visible 1 + decoration + textscale 0.5 + ownerdraw CG_HARVESTER_SKULLS + } + + + + itemDef { + name "statusscreen" + visible 1 + style 3 + background "menuscreen2" + rect 12 13 112 48 + border 1 + bordersize 1 + bordercolor 1 1 1 1 + backcolor 0 0 0 0 + } + + +itemDef { + name "sback" + rect 0 0 128 64 + visible 1 + decoration + style 3 + background "ui/assets/statusbar1b.tga" + } + + } + + + + + +// AMMO // + +menuDef { + name "Ammo" + fullScreen MENU_FALSE + visible MENU_TRUE + rect 129 416 128 64 + + + itemDef { + name "ammoRect" + visible 1 + style 4 + rect 2 13 122 48 + border 1 + bordersize 1 + mouseEnter { show ammoRectAlt } + mouseExit { hide ammoRectAlt } + } + + itemDef { + name "ammoRectAlt" + visible 0 + style 1 + rect 2 13 122 48 + border 1 + bordersize 1 + bordercolor 1 1 1 1 + backcolor 0 0 0 0 + } + + + itemDef { + name "a" + rect 85 25 30 30 + visible 1 + decoration + ownerdraw CG_PLAYER_AMMO_ICON2D + } + + itemDef { + name "a" + rect 10 43 63 12 + visible 1 + decoration + textscale .75 + forecolor 1 1 1 1 + ownerdraw CG_PLAYER_AMMO_VALUE + addColorRange -999 5 1 0 0 1 + addColorRange 6 999 .3 .75 0 .75 + } + + itemDef { + name "statusscreen" + visible 1 + style 3 + background "menuscreen2" + rect 2 13 122 48 + border 1 + bordersize 1 + bordercolor 1 1 1 1 + backcolor 0 0 0 0 + } + +itemDef { + name "sback" + rect 0 0 128 64 + visible 1 + decoration + style 3 + background "ui/assets/statusbar2b.tga" + } + +} + + + + + + +// PLAYER // + +menuDef { + name "Player" + fullScreen MENU_FALSE + visible MENU_TRUE + rect 257 416 128 64 + + + itemDef { + name "playerRect" + rect 2 2 122 60 + style 4 + visible 1 + border 1 + bordersize 1 + mouseEnter { show playerRectAlt } + mouseExit { hide playerRectAlt } + } + + itemDef { + name "playerRectAlt" + rect 2 2 122 60 + style 1 + visible 0 + border 1 + bordersize 1 + bordercolor 1 1 1 1 + backcolor 0 0 0 0 + } + + + itemDef { + name "b" + rect 12 42 63 12 + visible 1 + decoration + forecolor 1 1 1 1 + textscale .8 + ownerdraw CG_PLAYER_HEALTH + addColorRange -999 25 1 0 0 1 + addColorRange 26 100 .3 .75 0 .75 + addColorRange 101 999 1 1 1 .75 + } + + itemDef { + name "statusscreen" + visible 1 + style 3 + background "menuscreen2" + rect 2 2 122 60 + border 1 + bordersize 1 + bordercolor 1 1 1 1 + backcolor 0 0 0 0 + } + + +itemDef { + name "sback" + rect 0 0 128 64 + visible 1 + decoration + style 3 + background "ui/assets/statusbar3b.tga" + } + + itemDef { + name "b" + rect 70 10 45 45 + visible 1 + decoration + ownerdraw CG_PLAYER_HEAD + } + } + + + + + + + +// ARMOR // + +menuDef { + name "Armor" + fullScreen MENU_FALSE + visible MENU_TRUE + rect 385 416 128 64 + + + itemDef { + name "armorRect" + rect 2 13 122 48 + visible 1 + style 4 + border 1 + bordersize 1 + mouseEnter { show armorRectAlt } + mouseExit { hide armorRectAlt } + } + + itemDef { + name "armorRectAlt" + rect 2 13 122 48 + visible 0 + style 1 + border 1 + bordersize 1 + bordercolor 1 1 1 1 + backcolor 0 0 0 0 + } + + itemDef { + name "armor" + rect 10 7 30 30 + visible 1 + decoration + ownerdraw CG_PLAYER_ARMOR_ICON2D + } + + itemDef { + name "armor2" + rect 55 43 63 12 + visible 1 + decoration + textscale .75 + ownerdraw CG_PLAYER_ARMOR_VALUE + addColorRange -999 25 .67 0 0 1 + addColorRange 26 100 .3 .75 0 .75 + addColorRange 101 999 .75 .75 .75 .75 + } + + itemDef { + name "statusscreen" + visible 1 + style 3 + background "menuscreen2" + rect 2 13 122 48 + border 1 + bordersize 1 + bordercolor 1 1 1 1 + backcolor 0 0 0 0 + } + + +itemDef { + name "sback" + rect 0 0 128 64 + visible 1 + decoration + style 3 + background "ui/assets/statusbar4b.tga" + } + } + + + + + + + +// LOCATION // + +menuDef { + name "location" + fullScreen MENU_FALSE + visible MENU_TRUE + rect 513 405 128 22 + + + itemDef { + name "locationRect" + visible MENU_TRUE + rect 0 0 128 22 + style 4 + } + + + itemDef { + name "playerlocation" + rect 10 2 16 16 + visible 1 + decoration + textscale .25 + ownerdraw CG_PLAYER_LOCATION + } +} + +// PLAYERSCORE // + +menuDef { + name "PlayerScore" + fullScreen MENU_FALSE + visible MENU_TRUE + rect 513 416 128 64 + + + itemDef { + name "playerScoreRect" + visible 1 + rect 2 13 124 48 + style 4 + border 1 + bordersize 1 + mouseEnter { show playerScoreRectAlt } + mouseExit { hide playerScoreRectAlt } + + } + + itemDef { + name "playerScoreRectAlt" + visible 0 + rect 2 13 124 48 + style 1 + border 1 + bordersize 1 + bordercolor 1 1 1 1 + backcolor 0 0 0 0 + } + + + itemDef { + name "playerStatus" + rect 10 42 16 16 + visible 1 + decoration + ownerdraw CG_PLAYER_STATUS + } + + itemDef { + name "playerScore" + rect 0 44 125 12 + visible 1 + decoration + forecolor 1 1 1 1 + textscale .30 + ownerdraw CG_PLAYER_SCORE + } + + itemDef { + name "f" + rect 10 22 16 16 + visible 1 + bordercolor 1 1 1 .75 + decoration + style 3 + background "ui/assets/bluechip.tga" + } + + itemDef { + name "f" + rect 10 22 16 16 + visible 1 + decoration + ownerdraw CG_BLUE_FLAGSTATUS + } +itemDef { + name "r" + rect 16 22 30 15 + visible 1 + decoration + forecolor 0 0 0 1 + textscale 0.25 + ownerdraw CG_BLUE_SCORE + } + + itemDef { + name "r" + rect 15 21 30 15 + visible 1 + decoration + forecolor 1 1 1 1 + textscale 0.25 + ownerdraw CG_BLUE_SCORE + } + + itemDef { + name "f" + rect 72 22 16 16 + visible 1 + bordercolor 1 1 1 1 + decoration + style 3 + background "ui/assets/redchip.tga" + } + + itemDef { + name "f" + rect 72 22 16 16 + visible 1 + decoration + ownerdraw CG_RED_FLAGSTATUS + } +itemDef { + name "r" + rect 83 22 30 15 + visible 1 + decoration + forecolor 0 0 0 1 + textscale 0.25 + ownerdraw CG_RED_SCORE + } + + itemDef { + name "r" + rect 82 21 30 15 + visible 1 + decoration + forecolor 1 1 1 1 + textscale 0.25 + ownerdraw CG_RED_SCORE + } + + + itemDef { + name "statusscreen" + visible 1 + style 3 + background "menuscreen2" + rect 2 13 124 48 + border 1 + bordersize 1 + bordercolor 1 1 1 1 + backcolor 0 0 0 0 + } + + +itemDef { + name "sback" + rect 0 0 128 64 + visible 1 + decoration + style 3 + background "ui/assets/statusbar5b.tga" + } + + } +} + +// SCORESTATUS // + +menuDef { + name "ScoreStatus" + fullScreen MENU_FALSE + visible MENU_TRUE + rect 513 428 125 50 + style 4 + //background "ui/assets/hudback.tga" + border 1 + bordersize 1 + bordercolor .5 .5 1 1 + backcolor 0 0 1 .25 + + +itemDef { + name "r" + rect 5 5 30 15 + visible 1 + decoration + forecolor 1 1 1 1 + textscale 0.25 + ownerdraw CG_BLUE_SCORE + } + +itemDef { + name "r" + rect 42 5 30 15 + visible 1 + decoration + forecolor 0 0 1 1 + textscale 0.25 + ownerdraw CG_BLUE_NAME + } + + +itemDef { + name "r" + rect 5 25 30 15 + visible 1 + decoration + forecolor 1 1 1 1 + textscale 0.25 + ownerdraw CG_RED_SCORE + } + + itemDef { + name "r" + rect 42 25 30 15 + visible 1 + decoration + forecolor 1 0 0 1 + textscale 0.25 + ownerdraw CG_RED_NAME + } + } + + + +} + +// Close off other menu options // + +// CROSSHAIR STATUS BAR // + +menuDef { + name "crosshairStatus" + fullScreen MENU_FALSE + visible MENU_TRUE + rect 256 176 128 128 + style 0 + +itemDef { + name "crosshairHealth" + rect 0 0 128 64 + visible 1 + decoration + forecolor 0 0 0 0 + style 3 + ownerdraw CG_PLAYER_HEALTH_VALUE + background "ui/assets/crosshair_health.tga" + addColorRange -999 25 1 0 0 .5 + addColorRange 26 100 1 .75 0 .25 + addColorRange 101 999 1 1 1 .1 + } + + +itemDef { + name "crosshairAmmo" + rect 0 64 64 64 + visible 1 + decoration + style 3 + forecolor 0 0 0 0 + ownerdraw CG_PLAYER_AMMO_VALUE + background "ui/assets/crosshair_ammo.tga" + addColorRange -999 5 1 0 0 .5 + addColorRange 6 999 1 .75 0 .25 + } + +itemDef { + name "crosshairArmor" + rect 64 64 64 64 + visible 1 + decoration + style 3 + forecolor 1 1 1 .25 + forecolor 0 0 0 0 + ownerdraw CG_PLAYER_ARMOR_VALUE + background "ui/assets/crosshair_armor.tga" + addColorRange -999 25 1 0 0 .5 + addColorRange 26 100 1 .75 0 .25 + addColorRange 101 999 1 1 1 .1 + } +} + + + + + + +// MINI_STATUS // + +menuDef { + name "miniPlayerStatus" + fullScreen MENU_FALSE + visible MENU_TRUE + style 0 + rect 1 10 125 30 + style 1 + border 1 + bordersize 1 + bordercolor .5 .5 1 1 + backcolor 0 0 1 .25 + +itemDef { + name "miniAmmoValue" + rect 5 5 25 15 + visible 1 + decoration + textscale .33 + forecolor 1 1 1 1 + ownerdraw CG_PLAYER_AMMO_VALUE + addColorRange -999 5 1 0 0 1 + addColorRange 6 999 1 .75 0 1 + } + + +itemDef { + name "miniHealthValue" + rect 45 5 25 15 + visible 1 + decoration + forecolor 1 1 1 1 + textscale .33 + ownerdraw CG_PLAYER_HEALTH + addColorRange -999 25 1 0 0 1 + addColorRange 26 100 1 .75 0 1 + addColorRange 101 999 1 1 1 1 + } + +itemDef { + name "MiniArmorValue" + rect 90 5 25 15 + visible 1 + decoration + textscale .33 + ownerdraw CG_PLAYER_ARMOR_VALUE + addColorRange -999 25 1 0 0 1 + addColorRange 26 100 1 .75 0 1 + addColorRange 101 999 1 1 1 1 + } +} + +// MINI_CTF_STATUS // + +menuDef { + name "miniCTFStatus" + fullScreen MENU_FALSE + visible MENU_TRUE + style 0 + rect 129 10 125 30 + style 1 + border 1 + bordersize 1 + bordercolor .5 .5 1 1 + backcolor 0 0 1 .25 + +itemDef { + name "miniFlagBlue" + rect 5 5 16 16 + visible 1 + decoration + ownerdraw CG_BLUE_FLAGSTATUS + } + +itemDef { + name "miniBlueScore" + rect 10 5 30 15 + visible 1 + decoration + forecolor 1 1 1 1 + textscale 0.33 + ownerdraw CG_BLUE_SCORE + } + +itemDef { + name "miniFlagRed" + rect 65 5 16 16 + visible 1 + decoration + ownerdraw CG_RED_FLAGSTATUS + } + +itemDef { + name "miniRedScore" + rect 70 5 30 15 + visible 1 + decoration + forecolor 1 1 1 1 + textscale 0.33 + ownerdraw CG_RED_SCORE + } + +} + + +// MINI_SCORE // + +menuDef { + name "miniScore" + fullScreen MENU_FALSE + visible MENU_TRUE + style 0 + rect 257 10 125 30 + style 1 + border 1 + bordersize 1 + bordercolor .5 .5 1 1 + backcolor 0 0 1 .25 + + +itemDef { + name "b" + rect 5 5 16 16 + visible 1 + decoration + ownerdraw CG_SELECTEDPLAYER_STATUS + } + +itemDef { + name "b" + rect 30 5 30 15 + visible 1 + decoration + forecolor 1 1 1 1 + textscale .33 + ownerdraw CG_PLAYER_SCORE + } + +} + + + +// MINI_LOCATION // + + +menuDef { + name "miniLocation" + fullScreen MENU_FALSE + visible MENU_TRUE + style 0 + rect 385 10 125 30 + style 1 + border 1 + bordersize 1 + bordercolor .5 .5 1 1 + backcolor 0 0 1 .25 + + +itemDef { + name "b" + rect 5 5 30 15 + visible 1 + decoration + textscale .33 + ownerdraw CG_PLAYER_LOCATION + } + } + + + +// MINI_ITEM // + + +menuDef { + name "miniItem" + fullScreen MENU_FALSE + visible MENU_TRUE + style 0 + rect 513 10 125 30 + style 1 + border 1 + bordersize 1 + bordercolor .5 .5 1 1 + backcolor 0 0 1 .25 + + +itemDef { + name "b" + rect 5 5 30 30 + visible 1 + decoration + ownerdraw CG_PLAYER_ITEM + } + + +itemDef { + name "b" + rect 5 50 30 30 + visible 1 + decoration + ownerdraw CG_CTF_POWERUP + } + + + } + + + } + + +} + diff --git a/ta_ui/ui/vid_restart.menu b/ta_ui/ui/vid_restart.menu new file mode 100644 index 00000000..fa1053c9 --- /dev/null +++ b/ta_ui/ui/vid_restart.menu @@ -0,0 +1,194 @@ +#include "ui/menudef.h" + +{ +\\ VID_RESTART POPUP MENU \\ + +menuDef { + name "vid_restart_popmenu" + visible 0 + fullscreen 0 + //rect 217 200 210 85 + rect 204 122 235 235 + //outOfBoundsClick // this closes the window if it gets a click out of the rectangle + focusColor 1 .75 0 1 + style 1 + border 1 + popup + onESC { close vid_restart_popmenu ; + open setup_menu ; + open system_menu } + + + +itemDef { + name window + rect 0 0 235 235 + style 3 + background "ui/assets/mainpop.tga" + visible 1 + decoration + } +itemDef { + name window + rect 47 47 144 144 + style 3 + background "centerconsole2" + visible 1 + decoration + } + + + + + + // VID_RESTART // + +itemDef { + name confirm + text "This will apply video" + style 0 + textscale .25 + textstyle 3 + rect 0 85 110 20 + textalign 1 + textalignx 117 + textaligny 15 + decoration + forecolor 1 1 1 1 + visible 1 + } +itemDef { + name confirm + text "settings and return" + style 0 + textscale .25 + textstyle 3 + rect 0 100 110 20 + textalign 1 + textalignx 117 + textaligny 15 + decoration + forecolor 1 1 1 1 + visible 1 + } +itemDef { + name confirm + text "to the Main Menu." + style 0 + textscale .25 + textstyle 3 + rect 0 115 110 20 + textalign 1 + textalignx 117 + textaligny 15 + decoration + forecolor 1 1 1 1 + visible 1 + } + +itemDef { + name yes + text "YES" + type 1 + textscale .25 + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + rect 75 140 30 26 + textalign 1 + textalignx 15 + textaligny 20 + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + visible 1 + action { play "sound/misc/nomenu.wav" ; + close vid_restart_popmenu ; + exec "vid_restart" } + mouseEnter { setitemcolor yes backcolor .1 .37 .1 1 } + mouseExit { setitemcolor yes backcolor .37 .1 .1 1 } + } + + itemDef { + name yes + style WINDOW_STYLE_SHADER + background "ui/assets/framebutton.tga" + rect 75 140 30 26 + visible 1 + decoration + } + + itemDef { + name yes + style WINDOW_STYLE_SHADER + background "ui/assets/leftbutton.tga" + rect 69 140 7 26 + visible 1 + decoration + } + + itemDef { + name yes + style WINDOW_STYLE_SHADER + background "ui/assets/rightbutton.tga" + rect 104 140 7 26 + visible 1 + decoration + } + + + + + +itemDef { + name no + text "NO" + type 1 + textscale .25 + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + rect 128 140 30 26 + textalign 1 + textalignx 15 + textaligny 20 + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + visible 1 + action { play "sound/misc/nomenu.wav" ; + close vid_restart_popmenu ; + open setup_menu ; + open system_menu } + mouseEnter { setitemcolor no backcolor .1 .37 .1 1 } + mouseExit { setitemcolor no backcolor .37 .1 .1 1 } + } + itemDef { + name no + style WINDOW_STYLE_SHADER + background "ui/assets/framebutton.tga" + rect 128 140 30 26 + visible 1 + decoration + } + + itemDef { + name no + style WINDOW_STYLE_SHADER + background "ui/assets/leftbutton.tga" + rect 122 140 7 26 + visible 1 + decoration + } + + itemDef { + name no + style WINDOW_STYLE_SHADER + background "ui/assets/rightbutton.tga" + rect 157 140 7 26 + visible 1 + decoration + } + +} + + +} + + diff --git a/ta_ui/ui/vssver.scc b/ta_ui/ui/vssver.scc new file mode 100644 index 0000000000000000000000000000000000000000..aae02cdd0a9df65bbe9448324cc3b053d8a52d1d GIT binary patch literal 1232 zcmXxkc`%f59LMox$fPDEks7I#X(oj(jGB%yl`b05mNh8`lP=8`M#c;ss-Z(>yA;xa zY29mOX|t$kWs`PSa;+oBVo9h}pXWRCJpa9(_wRXrzu)sb^Q<$~<3uzY89GNa%t;n< zW*@fX50#07iXU5X=t#2WaP$q%sX_-niS=>j4jd~fP#mgKi}m1SIAgpeoH5gLVV{5{ zX`@li)brr_8y;HL`LOSN8(Fet3-tnccd%lSM|m4vUkHD(-?55y5q!b)SZzB`LtO;t zYbA;YBVFWTn4da*E^9F?575|d67*0nfen|=v1a`WzJH}#bv1i{dMV?(@_AK*I$Dne zHuuav6caZ}y$tT+Z(MXT@Hh2xSmZyM$e7vhYuG`k?J!y}MV7)(H}?d3`Nh)sH?Wml zeQj*?BJ~P5wmAL*W9IqE;Omb2CsTGMk}F~HkD1Onw=R>b;QFynA=8=ps$r*03$xyY z+vK;fRBi0Z`W>8lBO*G^CYkzsII~bES}qlkYhd$j5(n0`uwU4#>eit9)IY%M^`kSx z7Ct1)VL=t&g>@Z#s#9=$WyvGzAK?@?i!u3;G+J*x?7B?l6a421bp^c4pJ!g+@Phg$ znE%f}>D`z`Zh*D=mE|V8U()!`u!}m!h;<_@wv(Jm>&>D51rA!gN9dcFM^?ghy1|$! zyF#)GUL!qVAgBLWD)G9`Smlw>?HX=v?HIO literal 0 HcmV?d00001 diff --git a/ta_ui/ui___Win32_vector/bg_misc.obj b/ta_ui/ui___Win32_vector/bg_misc.obj new file mode 100644 index 0000000000000000000000000000000000000000..10e23ccc0a0307373eb9f76f6b521ffe7bf53264 GIT binary patch literal 48122 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 O7xgb_OZ9Y;*Z&1{u|zHa literal 0 HcmV?d00001 diff --git a/ta_ui/ui___Win32_vector/q_math.obj b/ta_ui/ui___Win32_vector/q_math.obj new file mode 100644 index 0000000000000000000000000000000000000000..f3b629d8070cdf4b70b47df09aba01be384e97d1 GIT binary patch literal 22643 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 LP5SxtRN4Om0WxkB literal 0 HcmV?d00001 diff --git a/ta_ui/ui___Win32_vector/ui.pch b/ta_ui/ui___Win32_vector/ui.pch new file mode 100644 index 0000000000000000000000000000000000000000..9183b7a11ff142b9248674675801a1958aefd0e2 GIT binary patch literal 166896 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 literal 0 HcmV?d00001 diff --git a/ta_ui/ui___Win32_vector/ui_atoms.obj b/ta_ui/ui___Win32_vector/ui_atoms.obj new file mode 100644 index 0000000000000000000000000000000000000000..c7d4aec56b03c70178cb71a4726553d5e759e49b GIT binary patch literal 23856 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

h z)s)rCh34T5%@;8#v(LjBniCexGtZ@drhL9yXij8kPFkdF^XB|5k)b(d!C3b;w+PKC zrWru(Zo$dy2_qIg*L>%)gQ*N#>ltPz&Xk{@Hiyeq6u%If*GpT^N?S(Dzii={`~1Zg z>$t$jQ`ED~e+SvXFgngOhI&?FV_3x@nK=lGuRWV-4N*>Nkuy7pBfaF z%RTii9=+%6>T`r)W`h0wAymC~q_;Pc(5ug`t`>ik(Dh~dGHx4YL!IG7G`uzzX-~ny zKEqOGjhiXbCTk?uC+ScI+9N4uHoA zdc$V11>mmJeg5Vqi7P?pV%7*%2BMU5A zy(AT{UP7Tw3am!=)OuBWi2i0#)1v!*bzW(PbvFwD!!}Ugq(+DAZB`Ua)q7Pth|V?{ z)7;=~k+wu%vtqn@u(?6$QC-antJVFr0o8#_Jt~rzQ+c zzgM-G(H||kDgw1ZsmtS|bn|-S`O1`2p3hrXr?U^GFcs4x5u$TXbp<|{;?!injET83 z92f7M5XE2^YqN-;vZ;mjVfHZy2g~)u+l} z+JVuL{YbcpY40R80yhNlNi*UE$TeI%2@#&@y zP%Jidldz1?~h*`gnxDP)+u)*+C4aIm|p4+ z)UdIX!fLFfJQQgN`x9?8IUEab3^7JcEXH>S;aIn!6T6X=T)>067ypWkZhd{%5{$b> zZ}HW#71#VquLZNTrMA9N7cco*YuwFz)}+^dEj5(^zuybP{GDG*)iQSrU*e~z^J89b zXo8&ahOkAlS@+iX*aSOebwKw90=2sNonni4KyRwW+=7lHUo*DUFY^W)TXgy2v84|4 zdVQdguWaU*ku9KrUW-wwo8M2i)VnbUHjCW^l$hUHw&0d|TUw9<@e(ty!k>Ub_((Z{ zU2bz2+e~~26^`i@dURo(&c28_*VOe!Zc# z5mSkLDOwn$zc^vPh$+n%Pc-3+Ezz}?dRsg#x_EI~VA&AEJmHBC^+x-Q4JvJp@xgdc z{Nf?jPiuMxMv^ICB0hLdMH%CG@$z>7BcUf4?G^*EEksPHh~S-VGrKL)hZ!i6;NOG= z;>}T{0VW7ukC`PFVQ3>U$U{b9c+6$7HhgO??O|E*#A9@?Ahfkddm>3oihC<3>5|xv z_^>;k!fSJq!*x^aX1yzi@o&sU+Pf2x2$I3_Wn~H5bi3e=Z_q;cCO4kw>ZggC)9zTf RdmXdl8Nq!{qG5e09*^+JIbW0MU*s>##B_qjh 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 LUgei!g8P2}6$ya^5)4U9ZWt6aGz1OT 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 literal 0 HcmV?d00001 diff --git a/ta_ui/ui___Win32_vector/ui_players.obj b/ta_ui/ui___Win32_vector/ui_players.obj new file mode 100644 index 0000000000000000000000000000000000000000..5e356bc74eb5fb83cac2131002be7efe0c8fed80 GIT binary patch literal 28901 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 literal 0 HcmV?d00001 diff --git a/ta_ui/ui___Win32_vector/ui_shared.obj b/ta_ui/ui___Win32_vector/ui_shared.obj new file mode 100644 index 0000000000000000000000000000000000000000..0d85a87a27bb2bc9fe1f9496321641ca9d97f7a0 GIT binary patch literal 144380 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⪼&bT@0D|*~d@4z=247 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 H#0vWVy~aXM literal 0 HcmV?d00001 diff --git a/ta_ui/ui___Win32_vector/ui_util.obj b/ta_ui/ui___Win32_vector/ui_util.obj new file mode 100644 index 0000000000000000000000000000000000000000..d5be84374e821892f52fdbe7a1083ed3287f8aa8 GIT binary patch literal 210 zcmeZaWMuIEYhshcz`(!;#2}!TQk0rpQkDwgF)*kB88$EujOG$x&`n8AODxSP$;nKz z^6_+XRzMc;_i^!a^mPqZ&`ZnAff@DhKLbNLle1M!QEFmxNoIatOi5yVX=Y4mW_)Q$ pW{zGm%yb5a~r6fx4JcT*U}f$IJ+F7b;)@asj`AB`%0AHGvown3#(A2n!dWU?h~5l%gAx3DQcMP}-D&=*D00d;B8) z0%vYpLe!Ja>CBnwy^~W_O2HRg-8@SGSrCvE+Zu#}s9=7iuqeK{AnZ`o=us^DWi~4I zSYsFzSvqGEHOSp^&37a^kEG&AwEy1{%$!B_TCv7splD9Q;2q{}XW&d=FFrwrBg)bg zG8Bk2A}bPaiL6A-8_Q58-WJ&@@vg`&1#_1-Iub-`Al5tW{TUr}xL(laU$6Dqyuv+mKo6fQeX_$U!1J?#% zb0Q@e`Ex3O_fC{(iuX^HH$9+VQe7)WtxPzF`(H{0^tD2XaEITF6kzOSRI|cYsy3sCxOx+HM;TzT=)>K z8Xv$_!vnZ*;o7+53A(N4%-lOOEd{}}7w*sbnK}16fAe^?(Q6(&Pdzm*j$D?11uK`o z$j?eLXPNS}mjaLkv{N8H01{_Jp2%6Ey(C1rvb|NSi}j72m$mYCeXAyp-481T2vOa2 zoKZ18d2(M`f3;iP6zgmCHPUxGM?$>sR2uFfg5Bq~+Ux9Busq)DbzoF}NnJQ*pnE-&65Y!jZmc~Pdd|N8jt;*PRp)1giH zqr*n}MaFG4`i;fB;@_vkH_ipA%NT8B2U4$~^tcp$NA#F)!x)gu$PIH$VlD{U67Hor zn|zM}?EB%ue8p|{y6?Jg`o>c2iQ$y1oBY_wxJw*) w%>Fc08#egs$yMoS+>1GjxEqIGupm-lMNb*C + 0003:0018dce0 _Menus 401adce0 + 0003:00197de0 _menuParseKeywordHash 401b7de0 + 0003:001985e0 _g_nameBind1 401b85e0 + 0003:00198600 _g_nameBind2 401b8600 + 0003:00198620 _itemParseKeywordHash 401b8620 + 0003:00198e20 _weaponChangeSound 401b8e20 + 0003:00198e40 _ui_Q3Model 401b8e40 + 0003:00198f60 _ui_ctf_capturelimit 401b8f60 + 0003:00199080 _ui_currentOpponent 401b9080 + 0003:001991a0 _ui_netSource 401b91a0 + 0003:001992c0 _ui_arenasFile 401b92c0 + 0003:001993e0 _ui_menuFiles 401b93e0 + 0003:00199500 _ui_botsFile 401b9500 + 0003:00199620 _ui_drawCrosshairNames 401b9620 + 0003:00199740 _ui_hudFiles 401b9740 + 0003:00199860 _ui_singlePlayerActive 401b9860 + 0003:00199980 _ui_scoreCaptures 401b9980 + 0003:00199aa0 _ui_scoreSkillBonus 401b9aa0 + 0003:00199bc0 _ui_ctf_friendly 401b9bc0 + 0003:00199ce0 _ui_blueteam5 401b9ce0 + 0003:00199e00 _ui_scoreExcellents 401b9e00 + 0003:00199f20 _ui_blueteam4 401b9f20 + 0003:0019a040 _ui_blueteam3 401ba040 + 0003:0019a160 _ui_blueteam2 401ba160 + 0003:0019a280 _ui_blueteam1 401ba280 + 0003:0019a3a0 _ui_scoreTime 401ba3a0 + 0003:0019a4c0 _ui_redteam5 401ba4c0 + 0003:0019a5e0 _ui_redteam4 401ba5e0 + 0003:0019a700 _ui_redteam3 401ba700 + 0003:0019a820 _ui_redteam2 401ba820 + 0003:0019a940 _ui_redteam1 401ba940 + 0003:0019aa60 _ui_joinGameType 401baa60 + 0003:0019ab80 _ui_browserGameType 401bab80 + 0003:0019aca0 _ui_currentMap 401baca0 + 0003:0019adc0 _ui_tourney_timelimit 401badc0 + 0003:0019aee0 _ui_opponentName 401baee0 + 0003:0019b000 _ui_serverFilterType 401bb000 + 0003:0019b120 _ui_marks 401bb120 + 0003:0019b240 _ui_mapIndex 401bb240 + 0003:0019b360 _ui_team_timelimit 401bb360 + 0003:0019b480 _ui_spVideos 401bb480 + 0003:0019b5a0 _ui_cdkeychecked 401bb5a0 + 0003:0019b6c0 _ui_currentNetMap 401bb6c0 + 0003:0019b7e0 _uiInfo 401bb7e0 + 0003:001bcec0 _ui_server10 401dcec0 + 0003:001bcfe0 _ui_server11 401dcfe0 + 0003:001bd100 _ui_server12 401dd100 + 0003:001bd220 _ui_server13 401dd220 + 0003:001bd340 _ui_server14 401dd340 + 0003:001bd460 _ui_server15 401dd460 + 0003:001bd580 _ui_server16 401dd580 + 0003:001bd6a0 _ui_initialized 401dd6a0 + 0003:001bd7c0 _ui_scoreGauntlets 401dd7c0 + 0003:001bd8e0 _ui_currentTier 401dd8e0 + 0003:001bda00 _ui_gameType 401dda00 + 0003:001bdb20 _ui_spAwards 401ddb20 + 0003:001bdc40 _ui_scoreShutoutBonus 401ddc40 + 0003:001bdd60 _ui_teamName 401ddd60 + 0003:001bde80 _ui_browserMaster 401dde80 + 0003:001bdfa0 _ui_ffa_fraglimit 401ddfa0 + 0003:001be0c0 _ui_lastServerRefresh_1 401de0c0 + 0003:001be1e0 _ui_lastServerRefresh_0 401de1e0 + 0003:001be300 _ui_lastServerRefresh_3 401de300 + 0003:001be420 _ui_lastServerRefresh_2 401de420 + 0003:001be540 _ui_team_friendly 401de540 + 0003:001be660 _ui_dedicated 401de660 + 0003:001be780 _ui_spScores1 401de780 + 0003:001be8a0 _ui_spScores3 401de8a0 + 0003:001be9c0 _ui_spScores2 401de9c0 + 0003:001beae0 _ui_spScores5 401deae0 + 0003:001bec00 _ui_spScores4 401dec00 + 0003:001bed20 _ui_bigFont 401ded20 + 0003:001bee40 _ui_blueteam 401dee40 + 0003:001bef60 _ui_findPlayer 401def60 + 0003:001bf080 _ui_realCaptureLimit 401df080 + 0003:001bf1a0 _ui_spSelection 401df1a0 + 0003:001bf2c0 _ui_serverStatusTimeOut 401df2c0 + 0003:001bf3e0 _ui_server4 401df3e0 + 0003:001bf500 _ui_server3 401df500 + 0003:001bf620 _ui_server6 401df620 + 0003:001bf740 _ui_server5 401df740 + 0003:001bf860 _ui_server2 401df860 + 0003:001bf980 _ui_server1 401df980 + 0003:001bfaa0 _ui_server8 401dfaa0 + 0003:001bfbc0 _ui_server7 401dfbc0 + 0003:001bfce0 _ui_server9 401dfce0 + 0003:001bfe00 _ui_ctf_timelimit 401dfe00 + 0003:001bff20 _ui_teamArenaFirstRun 401dff20 + 0003:001c0040 _ui_tourney_fraglimit 401e0040 + 0003:001c0160 _ui_scoreScore 401e0160 + 0003:001c0280 _ui_ffa_timelimit 401e0280 + 0003:001c03a0 _ui_brassTime 401e03a0 + 0003:001c04c0 _ui_actualNetGameType 401e04c0 + 0003:001c05e0 _ui_smallFont 401e05e0 + 0003:001c0700 _ui_redteam 401e0700 + 0003:001c0820 _ui_scoreAccuracy 401e0820 + 0003:001c0940 _ui_realWarmUp 401e0940 + 0003:001c0a60 _ui_netGameType 401e0a60 + 0003:001c0b80 _ui_recordSPDemo 401e0b80 + 0003:001c0ca0 _ui_scoreTeam 401e0ca0 + 0003:001c0dc0 _ui_new 401e0dc0 + 0003:001c0ee0 _ui_team_fraglimit 401e0ee0 + 0003:001c1000 _ui_scoreAssists 401e1000 + 0003:001c1120 _ui_scoreDefends 401e1120 + 0003:001c1240 _ui_browserShowFull 401e1240 + 0003:001c1360 _ui_scorePerfect 401e1360 + 0003:001c1480 _ui_drawCrosshair 401e1480 + 0003:001c15a0 _ui_debug 401e15a0 + 0003:001c16c0 _ui_browserSortKey 401e16c0 + 0003:001c17e0 _ui_fragLimit 401e17e0 + 0003:001c1900 _ui_spSkill 401e1900 + 0003:001c1a20 _ui_scoreImpressives 401e1a20 + 0003:001c1b40 _ui_selectedPlayerName 401e1b40 + 0003:001c1c60 _ui_browserShowEmpty 401e1c60 + 0003:001c1d80 _ui_scoreBase 401e1d80 + 0003:001c1ea0 _ui_scoreTimeBonus 401e1ea0 + 0003:001c1fc0 _ui_selectedPlayer 401e1fc0 + 0003:001c20e0 _ui_captureLimit 401e20e0 + 0003:001c21f0 _ui_numBots 401e21f0 + 0003:001c21f4 ___mbcodepage 401e21f4 + 0003:001c2200 ___mbulinfo 401e2200 + 0003:001c220c ___ismbcodepage 401e220c + 0003:001c2220 __mbcasemap 401e2220 + 0003:001c2320 __mbctype 401e2320 + 0003:001c2424 ___mblcid 401e2424 + 0003:001c2428 ___sbh_sizeHeaderList 401e2428 + 0003:001c242c ___sbh_indGroupDefer 401e242c + 0003:001c2430 ___sbh_pHeaderScan 401e2430 + 0003:001c2434 ___sbh_pHeaderDefer 401e2434 + 0003:001c2438 ___sbh_cntHeaderList 401e2438 + 0003:001c243c ___sbh_pHeaderList 401e243c + 0003:001c2440 ___piob 401e2440 + 0003:001c2460 __bufin 401e2460 + 0003:001c3460 __nstream 401e3460 + 0003:001c3480 ___pioinfo 401e3480 + 0003:001c3580 __nhandle 401e3580 + 0003:001c3584 __crtheap 401e3584 + 0003:001c3588 ___env_initialized 401e3588 + 0003:001c358c ___mbctype_initialized 401e358c + 0003:001c3590 ___onexitend 401e3590 + 0003:001c3594 ___onexitbegin 401e3594 + 0003:001c3598 __acmdln 401e3598 + 0003:001c359c __pRawDllMain 401e359c + + entry point at 0001:00018fbd + + Static symbols + + 0001:0000f2b0 _hashForString 400102b0 f ui_shared.obj + 0001:00010620 _Menu_RunCloseScript 40011620 f ui_shared.obj + 0001:00012710 _Scroll_ListBox_AutoFunc 40013710 f ui_shared.obj + 0001:00012780 _Scroll_ListBox_ThumbFunc 40013780 f ui_shared.obj + 0001:00012930 _Scroll_Slider_ThumbFunc 40013930 f ui_shared.obj + 0001:00012ed0 _Display_CloseCinematics 40013ed0 f ui_shared.obj + 0001:00012f00 _Menu_CloseCinematics 40013f00 f ui_shared.obj + 0001:00012f70 _Window_CloseCinematic 40013f70 f ui_shared.obj + 0001:000135b0 _Item_CorrectedTextRect 400145b0 f ui_shared.obj + 0001:00014390 _Controls_GetKeyAssignment 40015390 f ui_shared.obj + 0001:00017900 _Menu_CacheContents 40018900 f ui_shared.obj + 0001:00017970 _Window_CacheContents 40018970 f ui_shared.obj + 0001:000179b0 _Item_CacheContents 400189b0 f ui_shared.obj + 0001:000179c0 _Menu_OverActiveItem 400189c0 f ui_shared.obj + 0001:0000d7e0 _UI_PositionEntityOnTag 4000e7e0 f ui_players.obj + 0001:0000d890 _UI_PositionRotatedEntityOnTag 4000e890 f ui_players.obj + 0001:0000d940 _UI_PlayerAnimation 4000e940 f ui_players.obj + 0001:0000da20 _UI_TorsoSequencing 4000ea20 f ui_players.obj + 0001:0000dac0 _UI_PlayerInfo_SetWeapon 4000eac0 f ui_players.obj + 0001:0000dd10 _UI_ForceTorsoAnim 4000ed10 f ui_players.obj + 0001:0000dd60 _UI_SetTorsoAnim 4000ed60 f ui_players.obj + 0001:0000dda0 _UI_LegsSequencing 4000eda0 f ui_players.obj + 0001:0000de20 _UI_ForceLegsAnim 4000ee20 f ui_players.obj + 0001:0000de50 _UI_SetLegsAnim 4000ee50 f ui_players.obj + 0001:0000de90 _UI_RunLerpFrame 4000ee90 f ui_players.obj + 0001:0000df90 _UI_SetLerpFrameAnimation 4000ef90 f ui_players.obj + 0001:0000dfe0 _UI_PlayerAngles 4000efe0 f ui_players.obj + 0001:0000e1a0 _UI_SwingAngles 4000f1a0 f ui_players.obj + 0001:0000e300 _UI_MovedirAdjustment 4000f300 f ui_players.obj + 0001:0000e4a0 _UI_PlayerFloatSprite 4000f4a0 f ui_players.obj + 0001:0000e880 _UI_RegisterClientSkin 4000f880 f ui_players.obj + 0001:0000ea70 _UI_FindClientHeadFile 4000fa70 f ui_players.obj + 0001:0000ebd0 _UI_FileExists 4000fbd0 f ui_players.obj + 0001:0000ebf0 _UI_ParseAnimationFile 4000fbf0 f ui_players.obj + 0001:000036b0 _UI_ServersQsortCompare 400046b0 f ui_main.obj + 0001:00003770 _UI_BuildFindPlayerList 40004770 f ui_main.obj + 0001:00003b50 _UI_GetServerStatusInfo 40004b50 f ui_main.obj + 0001:00003e40 _UI_SortServerStatusInfo 40004e40 f ui_main.obj + 0001:00003f10 _stristr 40004f10 f ui_main.obj + 0001:00003f90 _UI_BuildServerStatus 40004f90 f ui_main.obj + 0001:00004040 _UI_FeederSelection 40005040 f ui_main.obj + 0001:000044d0 _UI_SelectedMap 400054d0 f ui_main.obj + 0001:00004520 _UI_SelectedHead 40005520 f ui_main.obj + 0001:00004570 _UI_ParseGameInfo 40005570 f ui_main.obj + 0001:00004630 _GameType_Parse 40005630 f ui_main.obj + 0001:00004780 _MapList_Parse 40005780 f ui_main.obj + 0001:00004da0 _UI_OwnerDrawWidth 40005da0 f ui_main.obj + 0001:00005100 _UI_TeamIndexFromName 40006100 f ui_main.obj + 0001:00005150 _UI_OwnerDraw 40006150 f ui_main.obj + 0001:000057d0 _UI_DrawHandicap 400067d0 f ui_main.obj + 0001:00005840 _UI_DrawClanName 40006840 f ui_main.obj + 0001:00005880 _UI_DrawGameType 40006880 f ui_main.obj + 0001:000058c0 _UI_DrawNetGameType 400068c0 f ui_main.obj + 0001:00005930 _UI_DrawJoinGameType 40006930 f ui_main.obj + 0001:00005990 _UI_DrawClanLogo 40006990 f ui_main.obj + 0001:00005a60 _UI_DrawClanCinematic 40006a60 f ui_main.obj + 0001:00005ba0 _UI_DrawPreviewCinematic 40006ba0 f ui_main.obj + 0001:00005c40 _UI_DrawSkill 40006c40 f ui_main.obj + 0001:00005ca0 _UI_DrawTeamName 40006ca0 f ui_main.obj + 0001:00005d30 _UI_DrawTeamMember 40006d30 f ui_main.obj + 0001:00005de0 _UI_DrawEffects 40006de0 f ui_main.obj + 0001:00005e60 _UI_DrawMapPreview 40006e60 f ui_main.obj + 0001:00005f30 _UI_DrawMapTimeToBeat 40006f30 f ui_main.obj + 0001:00005fe0 _UI_DrawMapCinematic 40006fe0 f ui_main.obj + 0001:00006100 _UI_DrawPlayerModel 40007100 f ui_main.obj + 0001:00006300 _UI_DrawNetSource 40007300 f ui_main.obj + 0001:00006360 _UI_DrawNetMapPreview 40007360 f ui_main.obj + 0001:000063b0 _UI_DrawNetMapCinematic 400073b0 f ui_main.obj + 0001:00006450 _UI_DrawNetFilter 40007450 f ui_main.obj + 0001:000064b0 _UI_DrawTier 400074b0 f ui_main.obj + 0001:00006510 _UI_DrawTierMap 40007510 f ui_main.obj + 0001:00006590 _UI_DrawTierMapName 40007590 f ui_main.obj + 0001:00006610 _UI_EnglishMapName 40007610 f ui_main.obj + 0001:00006660 _UI_DrawTierGameType 40007660 f ui_main.obj + 0001:000066e0 _UI_DrawOpponent 400076e0 f ui_main.obj + 0001:00006810 _UI_DrawPlayerLogo 40007810 f ui_main.obj + 0001:000068c0 _UI_DrawPlayerLogoMetal 400078c0 f ui_main.obj + 0001:00006970 _UI_DrawPlayerLogoName 40007970 f ui_main.obj + 0001:00006a20 _UI_DrawOpponentLogo 40007a20 f ui_main.obj + 0001:00006ad0 _UI_DrawOpponentLogoMetal 40007ad0 f ui_main.obj + 0001:00006b80 _UI_DrawOpponentLogoName 40007b80 f ui_main.obj + 0001:00006c30 _UI_DrawAllMapsSelection 40007c30 f ui_main.obj + 0001:00006c90 _UI_DrawOpponentName 40007c90 f ui_main.obj + 0001:00006cd0 _UI_DrawBotName 40007cd0 f ui_main.obj + 0001:00006d50 _UI_DrawBotSkill 40007d50 f ui_main.obj + 0001:00006d90 _UI_DrawRedBlue 40007d90 f ui_main.obj + 0001:00006dd0 _UI_DrawCrosshair 40007dd0 f ui_main.obj + 0001:00006e30 _UI_DrawSelectedPlayer 40007e30 f ui_main.obj + 0001:00006ea0 _UI_BuildPlayerList 40007ea0 f ui_main.obj + 0001:000070c0 _UI_DrawServerRefreshDate 400080c0 f ui_main.obj + 0001:00007200 _UI_DrawServerMOTD 40008200 f ui_main.obj + 0001:00007420 _Text_Paint_Limit 40008420 f ui_main.obj + 0001:00007600 _UI_DrawKeyBindStatus 40008600 f ui_main.obj + 0001:00007640 _UI_DrawGLInfo 40008640 f ui_main.obj + 0001:000078a0 _UI_OwnerDrawVisible 400088a0 f ui_main.obj + 0001:00007aa0 _UI_OwnerDrawHandleKey 40008aa0 f ui_main.obj + 0001:00007d40 _UI_Handicap_HandleKey 40008d40 f ui_main.obj + 0001:00007dd0 _UI_Effects_HandleKey 40008dd0 f ui_main.obj + 0001:00007e40 _UI_ClanName_HandleKey 40008e40 f ui_main.obj + 0001:00007f00 _UI_GameType_HandleKey 40008f00 f ui_main.obj + 0001:00008030 _UI_SetCapFragLimits 40009030 f ui_main.obj + 0001:000080c0 _UI_NetGameType_HandleKey 400090c0 f ui_main.obj + 0001:00008180 _UI_JoinGameType_HandleKey 40009180 f ui_main.obj + 0001:00008200 _UI_Skill_HandleKey 40009200 f ui_main.obj + 0001:00008280 _UI_TeamName_HandleKey 40009280 f ui_main.obj + 0001:00008320 _UI_TeamMember_HandleKey 40009320 f ui_main.obj + 0001:000083e0 _UI_NetSource_HandleKey 400093e0 f ui_main.obj + 0001:00008490 _UI_NetFilter_HandleKey 40009490 f ui_main.obj + 0001:00008520 _UI_OpponentName_HandleKey 40009520 f ui_main.obj + 0001:00008560 _UI_NextOpponent 40009560 f ui_main.obj + 0001:000085c0 _UI_PriorOpponent 400095c0 f ui_main.obj + 0001:00008620 _UI_BotName_HandleKey 40009620 f ui_main.obj + 0001:000086e0 _UI_BotSkill_HandleKey 400096e0 f ui_main.obj + 0001:00008750 _UI_RedBlue_HandleKey 40009750 f ui_main.obj + 0001:00008790 _UI_Crosshair_HandleKey 40009790 f ui_main.obj + 0001:00008810 _UI_SelectedPlayer_HandleKey 40009810 f ui_main.obj + 0001:000088c0 _UI_GetValue 400098c0 f ui_main.obj + 0001:000088d0 _UI_LoadTeams 400098d0 f ui_main.obj + 0001:00008930 _UI_RunMenuScript 40009930 f ui_main.obj + 0001:00009dc0 _UI_LoadMods 4000adc0 f ui_main.obj + 0001:00009e70 _UI_LoadMovies 4000ae70 f ui_main.obj + 0001:00009f30 _UI_LoadDemos 4000af30 f ui_main.obj + 0001:0000a050 _UI_StartSkirmish 4000b050 f ui_main.obj + 0001:0000a590 _UI_AIFromName 4000b590 f ui_main.obj + 0001:0000a5e0 _UI_SetNextMap 4000b5e0 f ui_main.obj + 0001:0000a630 _UI_Update 4000b630 f ui_main.obj + 0001:0000ab90 _UI_GetTeamColor 4000bb90 f ui_main.obj + 0001:0000aba0 _UI_MapCountByGameType 4000bba0 f ui_main.obj + 0001:0000ac20 _UI_HeadCountByTeam 4000bc20 f ui_main.obj + 0001:0000ae00 _UI_BuildServerDisplayList 4000be00 f ui_main.obj + 0001:0000b0e0 _UI_RemoveServerFromDisplayList 4000c0e0 f ui_main.obj + 0001:0000b130 _UI_BinaryServerInsertion 4000c130 f ui_main.obj + 0001:0000b1b0 _UI_InsertServerIntoDisplayList 4000c1b0 f ui_main.obj + 0001:0000b1f0 _UI_FeederCount 4000c1f0 f ui_main.obj + 0001:0000b360 _UI_GetIndexFromSelection 4000c360 f ui_main.obj + 0001:0000b390 _UI_FeederItemText 4000c390 f ui_main.obj + 0001:0000b7e0 _UI_FeederItemImage 4000c7e0 f ui_main.obj + 0001:0000b8f0 _UI_ParseTeamInfo 4000c8f0 f ui_main.obj + 0001:0000b9c0 _Team_Parse 4000c9c0 f ui_main.obj + 0001:0000bbc0 _Character_Parse 4000cbc0 f ui_main.obj + 0001:0000bd90 _Alias_Parse 4000cd90 f ui_main.obj + 0001:0000beb0 _UI_Pause 4000ceb0 f ui_main.obj + 0001:0000bf00 _UI_PlayCinematic 4000cf00 f ui_main.obj + 0001:0000bf40 _UI_StopCinematic 4000cf40 f ui_main.obj + 0001:0000c010 _UI_DrawCinematic 4000d010 f ui_main.obj + 0001:0000c050 _UI_RunCinematicFrame 4000d050 f ui_main.obj + 0001:0000c060 _UI_BuildQ3Model_List 4000d060 f ui_main.obj + 0001:0000c8e0 _UI_DisplayDownloadInfo 4000d8e0 f ui_main.obj + 0001:0000cc50 _UI_ReadableSize 4000dc50 f ui_main.obj + 0001:0000cdb0 _UI_PrintTime 4000ddb0 f ui_main.obj + 0001:0000cef0 _UI_StopServerRefresh 4000def0 f ui_main.obj + 0001:0000cf60 _UI_DoServerRefresh 4000df60 f ui_main.obj + 0001:0000d000 _UI_StartServerRefresh 4000e000 f ui_main.obj + 0001:0000d180 _UI_UpdatePendingPings 4000e180 f ui_main.obj + 0001:00001f10 _UI_LoadArenasFromFile 40002f10 f ui_gameinfo.obj + 0001:00002110 _UI_LoadBotsFromFile 40003110 f ui_gameinfo.obj + 0001:00001480 _UI_Cache_f 40002480 f ui_atoms.obj + 0001:00001490 _UI_CalcPostGameStats 40002490 f ui_atoms.obj + 0001:00000640 _SkipWhitespace 40001640 f q_shared.obj + 0001:0001d825 _flsall 4001e825 f LIBC:fflush.obj + 0001:0001ce10 LeadUp1 4001de10 f LIBC:memcpy.obj + 0001:0001ce3c LeadUp2 4001de3c f LIBC:memcpy.obj + 0001:0001ce60 LeadUp3 4001de60 f LIBC:memcpy.obj + 0001:0001cedf UnwindUp0 4001dedf f LIBC:memcpy.obj + 0001:0001cecc UnwindUp1 4001decc f LIBC:memcpy.obj + 0001:0001cec4 UnwindUp2 4001dec4 f LIBC:memcpy.obj + 0001:0001cebc UnwindUp3 4001debc f LIBC:memcpy.obj + 0001:0001ceb4 UnwindUp4 4001deb4 f LIBC:memcpy.obj + 0001:0001ceac UnwindUp5 4001deac f LIBC:memcpy.obj + 0001:0001cea4 UnwindUp6 4001dea4 f LIBC:memcpy.obj + 0001:0001ce9c UnwindUp7 4001de9c f LIBC:memcpy.obj + 0001:0001cef8 TrailUp0 4001def8 f LIBC:memcpy.obj + 0001:0001cf00 TrailUp1 4001df00 f LIBC:memcpy.obj + 0001:0001cf0c TrailUp2 4001df0c f LIBC:memcpy.obj + 0001:0001cf20 TrailUp3 4001df20 f LIBC:memcpy.obj + 0001:0001cf98 LeadDown1 4001df98 f LIBC:memcpy.obj + 0001:0001cfb8 LeadDown2 4001dfb8 f LIBC:memcpy.obj + 0001:0001cfe0 LeadDown3 4001dfe0 f LIBC:memcpy.obj + 0001:0001d034 UnwindDown7 4001e034 f LIBC:memcpy.obj + 0001:0001d03c UnwindDown6 4001e03c f LIBC:memcpy.obj + 0001:0001d044 UnwindDown5 4001e044 f LIBC:memcpy.obj + 0001:0001d04c UnwindDown4 4001e04c f LIBC:memcpy.obj + 0001:0001d054 UnwindDown3 4001e054 f LIBC:memcpy.obj + 0001:0001d05c UnwindDown2 4001e05c f LIBC:memcpy.obj + 0001:0001d064 UnwindDown1 4001e064 f LIBC:memcpy.obj + 0001:0001d077 UnwindDown0 4001e077 f LIBC:memcpy.obj + 0001:0001d090 TrailDown0 4001e090 f LIBC:memcpy.obj + 0001:0001d098 TrailDown1 4001e098 f LIBC:memcpy.obj + 0001:0001d0a8 TrailDown2 4001e0a8 f LIBC:memcpy.obj + 0001:0001d0bc TrailDown3 4001e0bc f LIBC:memcpy.obj + 0001:0001cb55 _getSystemCP 4001db55 f LIBC:mbctype.obj + 0001:0001cb9f _CPtoLCID 4001db9f f LIBC:mbctype.obj + 0001:0001cbd2 _setSBCS 4001dbd2 f LIBC:mbctype.obj + 0001:0001cbfb _setSBUpLow 4001dbfb f LIBC:mbctype.obj + 0001:0001bf18 _gu_return 4001cf18 f LIBC:exsup.obj + 0001:0001bf20 __unwind_handler 4001cf20 f LIBC:exsup.obj + 0001:0001ac22 __abstract_cw 4001bc22 f LIBC:ieee87.obj + 0001:0001acb4 __hw_cw 4001bcb4 f LIBC:ieee87.obj + 0001:0001a745 _parse_cmdline 4001b745 f LIBC:stdargv.obj + 0001:0001a2c1 _doexit 4001b2c1 f LIBC:crt0dat.obj + 0001:0001a35a __initterm 4001b35a f LIBC:crt0dat.obj + 0001:0001a214 _strncnt 4001b214 f LIBC:a_map.obj + 0001:00019d97 _write_char 4001ad97 f LIBC:output.obj + 0001:00019dcc _write_multi_char 4001adcc f LIBC:output.obj + 0001:00019dfd _write_string 4001adfd f LIBC:output.obj + 0001:00019e35 _get_int_arg 4001ae35 f LIBC:output.obj + 0001:00019e42 _get_int64_arg 4001ae42 f LIBC:output.obj + 0001:00019e52 _get_short_arg 4001ae52 f LIBC:output.obj + 0001:00019481 __cftoe_g 4001a481 f LIBC:cvt.obj + 0001:000194a8 __cftof_g 4001a4a8 f LIBC:cvt.obj + 0001:0001951c __shift 4001a51c f LIBC:cvt.obj + 0001:00018c40 LeadUp1 40019c40 f LIBC:memmove.obj + 0001:00018c6c LeadUp2 40019c6c f LIBC:memmove.obj + 0001:00018c90 LeadUp3 40019c90 f LIBC:memmove.obj + 0001:00018d0f UnwindUp0 40019d0f f LIBC:memmove.obj + 0001:00018cfc UnwindUp1 40019cfc f LIBC:memmove.obj + 0001:00018cf4 UnwindUp2 40019cf4 f LIBC:memmove.obj + 0001:00018cec UnwindUp3 40019cec f LIBC:memmove.obj + 0001:00018ce4 UnwindUp4 40019ce4 f LIBC:memmove.obj + 0001:00018cdc UnwindUp5 40019cdc f LIBC:memmove.obj + 0001:00018cd4 UnwindUp6 40019cd4 f LIBC:memmove.obj + 0001:00018ccc UnwindUp7 40019ccc f LIBC:memmove.obj + 0001:00018d28 TrailUp0 40019d28 f LIBC:memmove.obj + 0001:00018d30 TrailUp1 40019d30 f LIBC:memmove.obj + 0001:00018d3c TrailUp2 40019d3c f LIBC:memmove.obj + 0001:00018d50 TrailUp3 40019d50 f LIBC:memmove.obj + 0001:00018dc8 LeadDown1 40019dc8 f LIBC:memmove.obj + 0001:00018de8 LeadDown2 40019de8 f LIBC:memmove.obj + 0001:00018e10 LeadDown3 40019e10 f LIBC:memmove.obj + 0001:00018e64 UnwindDown7 40019e64 f LIBC:memmove.obj + 0001:00018e6c UnwindDown6 40019e6c f LIBC:memmove.obj + 0001:00018e74 UnwindDown5 40019e74 f LIBC:memmove.obj + 0001:00018e7c UnwindDown4 40019e7c f LIBC:memmove.obj + 0001:00018e84 UnwindDown3 40019e84 f LIBC:memmove.obj + 0001:00018e8c UnwindDown2 40019e8c f LIBC:memmove.obj + 0001:00018e94 UnwindDown1 40019e94 f LIBC:memmove.obj + 0001:00018ea7 UnwindDown0 40019ea7 f LIBC:memmove.obj + 0001:00018ec0 TrailDown0 40019ec0 f LIBC:memmove.obj + 0001:00018ec8 TrailDown1 40019ec8 f LIBC:memmove.obj + 0001:00018ed8 TrailDown2 40019ed8 f LIBC:memmove.obj + 0001:00018eec TrailDown3 40019eec f LIBC:memmove.obj + 0001:00018b34 _shortsort 40019b34 f LIBC:qsort.obj + 0001:00018b82 _swap 40019b82 f LIBC:qsort.obj + + 784 bytes saved through ICF + diff --git a/ta_ui/ui___Win32_vector/vc60.idb b/ta_ui/ui___Win32_vector/vc60.idb new file mode 100644 index 0000000000000000000000000000000000000000..096d12400db71820508cbf8c63eeac267ed78ab3 GIT binary patch literal 41983 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 max ) return max; + return value; +} + +/* +================= +UI_StartDemoLoop +================= +*/ +void UI_StartDemoLoop( void ) { + trap_Cmd_ExecuteText( EXEC_APPEND, "d1\n" ); +} + + +#ifndef MISSIONPACK // bk001206 +static void NeedCDAction( qboolean result ) { + if ( !result ) { + trap_Cmd_ExecuteText( EXEC_APPEND, "quit\n" ); + } +} +#endif // MISSIONPACK + +#ifndef MISSIONPACK // bk001206 +static void NeedCDKeyAction( qboolean result ) { + if ( !result ) { + trap_Cmd_ExecuteText( EXEC_APPEND, "quit\n" ); + } +} +#endif // MISSIONPACK + +char *UI_Argv( int arg ) { + static char buffer[MAX_STRING_CHARS]; + + trap_Argv( arg, buffer, sizeof( buffer ) ); + + return buffer; +} + + +char *UI_Cvar_VariableString( const char *var_name ) { + static char buffer[MAX_STRING_CHARS]; + + trap_Cvar_VariableStringBuffer( var_name, buffer, sizeof( buffer ) ); + + return buffer; +} + + + +void UI_SetBestScores(postGameInfo_t *newInfo, qboolean postGame) { + trap_Cvar_Set("ui_scoreAccuracy", va("%i%%", newInfo->accuracy)); + trap_Cvar_Set("ui_scoreImpressives", va("%i", newInfo->impressives)); + trap_Cvar_Set("ui_scoreExcellents", va("%i", newInfo->excellents)); + trap_Cvar_Set("ui_scoreDefends", va("%i", newInfo->defends)); + trap_Cvar_Set("ui_scoreAssists", va("%i", newInfo->assists)); + trap_Cvar_Set("ui_scoreGauntlets", va("%i", newInfo->gauntlets)); + trap_Cvar_Set("ui_scoreScore", va("%i", newInfo->score)); + trap_Cvar_Set("ui_scorePerfect", va("%i", newInfo->perfects)); + trap_Cvar_Set("ui_scoreTeam", va("%i to %i", newInfo->redScore, newInfo->blueScore)); + trap_Cvar_Set("ui_scoreBase", va("%i", newInfo->baseScore)); + trap_Cvar_Set("ui_scoreTimeBonus", va("%i", newInfo->timeBonus)); + trap_Cvar_Set("ui_scoreSkillBonus", va("%i", newInfo->skillBonus)); + trap_Cvar_Set("ui_scoreShutoutBonus", va("%i", newInfo->shutoutBonus)); + trap_Cvar_Set("ui_scoreTime", va("%02i:%02i", newInfo->time / 60, newInfo->time % 60)); + trap_Cvar_Set("ui_scoreCaptures", va("%i", newInfo->captures)); + if (postGame) { + trap_Cvar_Set("ui_scoreAccuracy2", va("%i%%", newInfo->accuracy)); + trap_Cvar_Set("ui_scoreImpressives2", va("%i", newInfo->impressives)); + trap_Cvar_Set("ui_scoreExcellents2", va("%i", newInfo->excellents)); + trap_Cvar_Set("ui_scoreDefends2", va("%i", newInfo->defends)); + trap_Cvar_Set("ui_scoreAssists2", va("%i", newInfo->assists)); + trap_Cvar_Set("ui_scoreGauntlets2", va("%i", newInfo->gauntlets)); + trap_Cvar_Set("ui_scoreScore2", va("%i", newInfo->score)); + trap_Cvar_Set("ui_scorePerfect2", va("%i", newInfo->perfects)); + trap_Cvar_Set("ui_scoreTeam2", va("%i to %i", newInfo->redScore, newInfo->blueScore)); + trap_Cvar_Set("ui_scoreBase2", va("%i", newInfo->baseScore)); + trap_Cvar_Set("ui_scoreTimeBonus2", va("%i", newInfo->timeBonus)); + trap_Cvar_Set("ui_scoreSkillBonus2", va("%i", newInfo->skillBonus)); + trap_Cvar_Set("ui_scoreShutoutBonus2", va("%i", newInfo->shutoutBonus)); + trap_Cvar_Set("ui_scoreTime2", va("%02i:%02i", newInfo->time / 60, newInfo->time % 60)); + trap_Cvar_Set("ui_scoreCaptures2", va("%i", newInfo->captures)); + } +} + +void UI_LoadBestScores(const char *map, int game) { + char fileName[MAX_QPATH]; + fileHandle_t f; + postGameInfo_t newInfo; + memset(&newInfo, 0, sizeof(postGameInfo_t)); + Com_sprintf(fileName, MAX_QPATH, "games/%s_%i.game", map, game); + if (trap_FS_FOpenFile(fileName, &f, FS_READ) >= 0) { + int size = 0; + trap_FS_Read(&size, sizeof(int), f); + if (size == sizeof(postGameInfo_t)) { + trap_FS_Read(&newInfo, sizeof(postGameInfo_t), f); + } + trap_FS_FCloseFile(f); + } + UI_SetBestScores(&newInfo, qfalse); + + Com_sprintf(fileName, MAX_QPATH, "demos/%s_%d.dm_%d", map, game, (int)trap_Cvar_VariableValue("protocol")); + uiInfo.demoAvailable = qfalse; + if (trap_FS_FOpenFile(fileName, &f, FS_READ) >= 0) { + uiInfo.demoAvailable = qtrue; + trap_FS_FCloseFile(f); + } +} + +/* +=============== +UI_ClearScores +=============== +*/ +void UI_ClearScores() { + char gameList[4096]; + char *gameFile; + int i, len, count, size; + fileHandle_t f; + postGameInfo_t newInfo; + + count = trap_FS_GetFileList( "games", "game", gameList, sizeof(gameList) ); + + size = sizeof(postGameInfo_t); + memset(&newInfo, 0, size); + + if (count > 0) { + gameFile = gameList; + for ( i = 0; i < count; i++ ) { + len = strlen(gameFile); + if (trap_FS_FOpenFile(va("games/%s",gameFile), &f, FS_WRITE) >= 0) { + trap_FS_Write(&size, sizeof(int), f); + trap_FS_Write(&newInfo, size, f); + trap_FS_FCloseFile(f); + } + gameFile += len + 1; + } + } + + UI_SetBestScores(&newInfo, qfalse); + +} + + + +static void UI_Cache_f() { + Display_CacheAll(); +} + +/* +======================= +UI_CalcPostGameStats +======================= +*/ +static void UI_CalcPostGameStats() { + char map[MAX_QPATH]; + char fileName[MAX_QPATH]; + char info[MAX_INFO_STRING]; + fileHandle_t f; + int size, game, time, adjustedTime; + postGameInfo_t oldInfo; + postGameInfo_t newInfo; + qboolean newHigh = qfalse; + + trap_GetConfigString( CS_SERVERINFO, info, sizeof(info) ); + Q_strncpyz( map, Info_ValueForKey( info, "mapname" ), sizeof(map) ); + game = atoi(Info_ValueForKey(info, "g_gametype")); + + // compose file name + Com_sprintf(fileName, MAX_QPATH, "games/%s_%i.game", map, game); + // see if we have one already + memset(&oldInfo, 0, sizeof(postGameInfo_t)); + if (trap_FS_FOpenFile(fileName, &f, FS_READ) >= 0) { + // if so load it + size = 0; + trap_FS_Read(&size, sizeof(int), f); + if (size == sizeof(postGameInfo_t)) { + trap_FS_Read(&oldInfo, sizeof(postGameInfo_t), f); + } + trap_FS_FCloseFile(f); + } + + newInfo.accuracy = atoi(UI_Argv(3)); + newInfo.impressives = atoi(UI_Argv(4)); + newInfo.excellents = atoi(UI_Argv(5)); + newInfo.defends = atoi(UI_Argv(6)); + newInfo.assists = atoi(UI_Argv(7)); + newInfo.gauntlets = atoi(UI_Argv(8)); + newInfo.baseScore = atoi(UI_Argv(9)); + newInfo.perfects = atoi(UI_Argv(10)); + newInfo.redScore = atoi(UI_Argv(11)); + newInfo.blueScore = atoi(UI_Argv(12)); + time = atoi(UI_Argv(13)); + newInfo.captures = atoi(UI_Argv(14)); + + newInfo.time = (time - trap_Cvar_VariableValue("ui_matchStartTime")) / 1000; + adjustedTime = uiInfo.mapList[ui_currentMap.integer].timeToBeat[game]; + if (newInfo.time < adjustedTime) { + newInfo.timeBonus = (adjustedTime - newInfo.time) * 10; + } else { + newInfo.timeBonus = 0; + } + + if (newInfo.redScore > newInfo.blueScore && newInfo.blueScore <= 0) { + newInfo.shutoutBonus = 100; + } else { + newInfo.shutoutBonus = 0; + } + + newInfo.skillBonus = trap_Cvar_VariableValue("g_spSkill"); + if (newInfo.skillBonus <= 0) { + newInfo.skillBonus = 1; + } + newInfo.score = newInfo.baseScore + newInfo.shutoutBonus + newInfo.timeBonus; + newInfo.score *= newInfo.skillBonus; + + // see if the score is higher for this one + newHigh = (newInfo.redScore > newInfo.blueScore && newInfo.score > oldInfo.score); + + if (newHigh) { + // if so write out the new one + uiInfo.newHighScoreTime = uiInfo.uiDC.realTime + 20000; + if (trap_FS_FOpenFile(fileName, &f, FS_WRITE) >= 0) { + size = sizeof(postGameInfo_t); + trap_FS_Write(&size, sizeof(int), f); + trap_FS_Write(&newInfo, sizeof(postGameInfo_t), f); + trap_FS_FCloseFile(f); + } + } + + if (newInfo.time < oldInfo.time) { + uiInfo.newBestTime = uiInfo.uiDC.realTime + 20000; + } + + // put back all the ui overrides + trap_Cvar_Set("capturelimit", UI_Cvar_VariableString("ui_saveCaptureLimit")); + trap_Cvar_Set("fraglimit", UI_Cvar_VariableString("ui_saveFragLimit")); + trap_Cvar_Set("cg_drawTimer", UI_Cvar_VariableString("ui_drawTimer")); + trap_Cvar_Set("g_doWarmup", UI_Cvar_VariableString("ui_doWarmup")); + trap_Cvar_Set("g_Warmup", UI_Cvar_VariableString("ui_Warmup")); + trap_Cvar_Set("sv_pure", UI_Cvar_VariableString("ui_pure")); + trap_Cvar_Set("g_friendlyFire", UI_Cvar_VariableString("ui_friendlyFire")); + + UI_SetBestScores(&newInfo, qtrue); + UI_ShowPostGame(newHigh); + + +} + + +/* +================= +UI_ConsoleCommand +================= +*/ +qboolean UI_ConsoleCommand( int realTime ) { + char *cmd; + + uiInfo.uiDC.frameTime = realTime - uiInfo.uiDC.realTime; + uiInfo.uiDC.realTime = realTime; + + cmd = UI_Argv( 0 ); + + // ensure minimum menu data is available + //Menu_Cache(); + + if ( Q_stricmp (cmd, "ui_test") == 0 ) { + UI_ShowPostGame(qtrue); + } + + if ( Q_stricmp (cmd, "ui_report") == 0 ) { + UI_Report(); + return qtrue; + } + + if ( Q_stricmp (cmd, "ui_load") == 0 ) { + UI_Load(); + return qtrue; + } + + if ( Q_stricmp (cmd, "remapShader") == 0 ) { + if (trap_Argc() == 4) { + char shader1[MAX_QPATH]; + char shader2[MAX_QPATH]; + Q_strncpyz(shader1, UI_Argv(1), sizeof(shader1)); + Q_strncpyz(shader2, UI_Argv(2), sizeof(shader2)); + trap_R_RemapShader(shader1, shader2, UI_Argv(3)); + return qtrue; + } + } + + if ( Q_stricmp (cmd, "postgame") == 0 ) { + UI_CalcPostGameStats(); + return qtrue; + } + + if ( Q_stricmp (cmd, "ui_cache") == 0 ) { + UI_Cache_f(); + return qtrue; + } + + if ( Q_stricmp (cmd, "ui_teamOrders") == 0 ) { + //UI_TeamOrdersMenu_f(); + return qtrue; + } + + + if ( Q_stricmp (cmd, "ui_cdkey") == 0 ) { + //UI_CDKeyMenu_f(); + return qtrue; + } + + return qfalse; +} + +/* +================= +UI_Shutdown +================= +*/ +void UI_Shutdown( void ) { +} + +/* +================ +UI_AdjustFrom640 + +Adjusted for resolution and screen aspect ratio +================ +*/ +void UI_AdjustFrom640( float *x, float *y, float *w, float *h ) { + // expect valid pointers +#if 0 + *x = *x * uiInfo.uiDC.scale + uiInfo.uiDC.bias; + *y *= uiInfo.uiDC.scale; + *w *= uiInfo.uiDC.scale; + *h *= uiInfo.uiDC.scale; +#endif + + *x *= uiInfo.uiDC.xscale; + *y *= uiInfo.uiDC.yscale; + *w *= uiInfo.uiDC.xscale; + *h *= uiInfo.uiDC.yscale; + +} + +void UI_DrawNamedPic( float x, float y, float width, float height, const char *picname ) { + qhandle_t hShader; + + hShader = trap_R_RegisterShaderNoMip( picname ); + UI_AdjustFrom640( &x, &y, &width, &height ); + trap_R_DrawStretchPic( x, y, width, height, 0, 0, 1, 1, hShader ); +} + +void UI_DrawHandlePic( float x, float y, float w, float h, qhandle_t hShader ) { + float s0; + float s1; + float t0; + float t1; + + if( w < 0 ) { // flip about vertical + w = -w; + s0 = 1; + s1 = 0; + } + else { + s0 = 0; + s1 = 1; + } + + if( h < 0 ) { // flip about horizontal + h = -h; + t0 = 1; + t1 = 0; + } + else { + t0 = 0; + t1 = 1; + } + + UI_AdjustFrom640( &x, &y, &w, &h ); + trap_R_DrawStretchPic( x, y, w, h, s0, t0, s1, t1, hShader ); +} + +/* +================ +UI_FillRect + +Coordinates are 640*480 virtual values +================= +*/ +void UI_FillRect( float x, float y, float width, float height, const float *color ) { + trap_R_SetColor( color ); + + UI_AdjustFrom640( &x, &y, &width, &height ); + trap_R_DrawStretchPic( x, y, width, height, 0, 0, 0, 0, uiInfo.uiDC.whiteShader ); + + trap_R_SetColor( NULL ); +} + +void UI_DrawSides(float x, float y, float w, float h) { + UI_AdjustFrom640( &x, &y, &w, &h ); + trap_R_DrawStretchPic( x, y, 1, h, 0, 0, 0, 0, uiInfo.uiDC.whiteShader ); + trap_R_DrawStretchPic( x + w - 1, y, 1, h, 0, 0, 0, 0, uiInfo.uiDC.whiteShader ); +} + +void UI_DrawTopBottom(float x, float y, float w, float h) { + UI_AdjustFrom640( &x, &y, &w, &h ); + trap_R_DrawStretchPic( x, y, w, 1, 0, 0, 0, 0, uiInfo.uiDC.whiteShader ); + trap_R_DrawStretchPic( x, y + h - 1, w, 1, 0, 0, 0, 0, uiInfo.uiDC.whiteShader ); +} +/* +================ +UI_DrawRect + +Coordinates are 640*480 virtual values +================= +*/ +void UI_DrawRect( float x, float y, float width, float height, const float *color ) { + trap_R_SetColor( color ); + + UI_DrawTopBottom(x, y, width, height); + UI_DrawSides(x, y, width, height); + + trap_R_SetColor( NULL ); +} + +void UI_SetColor( const float *rgba ) { + trap_R_SetColor( rgba ); +} + +void UI_UpdateScreen( void ) { + trap_UpdateScreen(); +} + + +void UI_DrawTextBox (int x, int y, int width, int lines) +{ + UI_FillRect( x + BIGCHAR_WIDTH/2, y + BIGCHAR_HEIGHT/2, ( width + 1 ) * BIGCHAR_WIDTH, ( lines + 1 ) * BIGCHAR_HEIGHT, colorBlack ); + UI_DrawRect( x + BIGCHAR_WIDTH/2, y + BIGCHAR_HEIGHT/2, ( width + 1 ) * BIGCHAR_WIDTH, ( lines + 1 ) * BIGCHAR_HEIGHT, colorWhite ); +} + +qboolean UI_CursorInRect (int x, int y, int width, int height) +{ + if (uiInfo.uiDC.cursorx < x || + uiInfo.uiDC.cursory < y || + uiInfo.uiDC.cursorx > x+width || + uiInfo.uiDC.cursory > y+height) + return qfalse; + + return qtrue; +} diff --git a/ta_ui/ui_gameinfo.c b/ta_ui/ui_gameinfo.c new file mode 100644 index 00000000..91dc800b --- /dev/null +++ b/ta_ui/ui_gameinfo.c @@ -0,0 +1,304 @@ +// Copyright (C) 1999-2000 Id Software, Inc. +// +// +// gameinfo.c +// + +#include "ui_local.h" + + +// +// arena and bot info +// + + +int ui_numBots; +static char *ui_botInfos[MAX_BOTS]; + +static int ui_numArenas; +static char *ui_arenaInfos[MAX_ARENAS]; + +#ifndef MISSIONPACK // bk001206 +static int ui_numSinglePlayerArenas; +static int ui_numSpecialSinglePlayerArenas; +#endif + +/* +=============== +UI_ParseInfos +=============== +*/ +int UI_ParseInfos( char *buf, int max, char *infos[] ) { + char *token; + int count; + char key[MAX_TOKEN_CHARS]; + char info[MAX_INFO_STRING]; + + count = 0; + + while ( 1 ) { + token = COM_Parse( &buf ); + if ( !token[0] ) { + break; + } + if ( strcmp( token, "{" ) ) { + Com_Printf( "Missing { in info file\n" ); + break; + } + + if ( count == max ) { + Com_Printf( "Max infos exceeded\n" ); + break; + } + + info[0] = '\0'; + while ( 1 ) { + token = COM_ParseExt( &buf, qtrue ); + if ( !token[0] ) { + Com_Printf( "Unexpected end of info file\n" ); + break; + } + if ( !strcmp( token, "}" ) ) { + break; + } + Q_strncpyz( key, token, sizeof( key ) ); + + token = COM_ParseExt( &buf, qfalse ); + if ( !token[0] ) { + strcpy( token, "" ); + } + Info_SetValueForKey( info, key, token ); + } + //NOTE: extra space for arena number + infos[count] = UI_Alloc(strlen(info) + strlen("\\num\\") + strlen(va("%d", MAX_ARENAS)) + 1); + if (infos[count]) { + strcpy(infos[count], info); + count++; + } + } + return count; +} + +/* +=============== +UI_LoadArenasFromFile +=============== +*/ +static void UI_LoadArenasFromFile( char *filename ) { + int len; + fileHandle_t f; + char buf[MAX_ARENAS_TEXT]; + + len = trap_FS_FOpenFile( filename, &f, FS_READ ); + if ( !f ) { + trap_Print( va( S_COLOR_RED "file not found: %s\n", filename ) ); + return; + } + if ( len >= MAX_ARENAS_TEXT ) { + trap_Print( va( S_COLOR_RED "file too large: %s is %i, max allowed is %i", filename, len, MAX_ARENAS_TEXT ) ); + trap_FS_FCloseFile( f ); + return; + } + + trap_FS_Read( buf, len, f ); + buf[len] = 0; + trap_FS_FCloseFile( f ); + + ui_numArenas += UI_ParseInfos( buf, MAX_ARENAS - ui_numArenas, &ui_arenaInfos[ui_numArenas] ); +} + +/* +=============== +UI_LoadArenas +=============== +*/ +void UI_LoadArenas( void ) { + int numdirs; + vmCvar_t arenasFile; + char filename[128]; + char dirlist[1024]; + char* dirptr; + int i, n; + int dirlen; + char *type; + + ui_numArenas = 0; + uiInfo.mapCount = 0; + + trap_Cvar_Register( &arenasFile, "g_arenasFile", "", CVAR_INIT|CVAR_ROM ); + if( *arenasFile.string ) { + UI_LoadArenasFromFile(arenasFile.string); + } + else { + UI_LoadArenasFromFile("scripts/arenas.txt"); + } + + // get all arenas from .arena files + numdirs = trap_FS_GetFileList("scripts", ".arena", dirlist, 1024 ); + dirptr = dirlist; + for (i = 0; i < numdirs; i++, dirptr += dirlen+1) { + dirlen = strlen(dirptr); + strcpy(filename, "scripts/"); + strcat(filename, dirptr); + UI_LoadArenasFromFile(filename); + } + trap_Print( va( "%i arenas parsed\n", ui_numArenas ) ); + if (UI_OutOfMemory()) { + trap_Print(S_COLOR_YELLOW"WARNING: not anough memory in pool to load all arenas\n"); + } + + for( n = 0; n < ui_numArenas; n++ ) { + // determine type + + uiInfo.mapList[uiInfo.mapCount].cinematic = -1; + uiInfo.mapList[uiInfo.mapCount].mapLoadName = String_Alloc(Info_ValueForKey(ui_arenaInfos[n], "map")); + uiInfo.mapList[uiInfo.mapCount].mapName = String_Alloc(Info_ValueForKey(ui_arenaInfos[n], "longname")); + uiInfo.mapList[uiInfo.mapCount].levelShot = -1; + uiInfo.mapList[uiInfo.mapCount].imageName = String_Alloc(va("levelshots/%s", uiInfo.mapList[uiInfo.mapCount].mapLoadName)); + uiInfo.mapList[uiInfo.mapCount].typeBits = 0; + + type = Info_ValueForKey( ui_arenaInfos[n], "type" ); + // if no type specified, it will be treated as "ffa" + if( *type ) { + if( strstr( type, "ffa" ) ) { + uiInfo.mapList[uiInfo.mapCount].typeBits |= (1 << GT_FFA); + } + if( strstr( type, "tourney" ) ) { + uiInfo.mapList[uiInfo.mapCount].typeBits |= (1 << GT_TOURNAMENT); + } + if( strstr( type, "ctf" ) ) { + uiInfo.mapList[uiInfo.mapCount].typeBits |= (1 << GT_CTF); + } + if( strstr( type, "oneflag" ) ) { + uiInfo.mapList[uiInfo.mapCount].typeBits |= (1 << GT_1FCTF); + } + if( strstr( type, "overload" ) ) { + uiInfo.mapList[uiInfo.mapCount].typeBits |= (1 << GT_OBELISK); + } + if( strstr( type, "harvester" ) ) { + uiInfo.mapList[uiInfo.mapCount].typeBits |= (1 << GT_HARVESTER); + } + } else { + uiInfo.mapList[uiInfo.mapCount].typeBits |= (1 << GT_FFA); + } + + uiInfo.mapCount++; + if (uiInfo.mapCount >= MAX_MAPS) { + break; + } + } +} + + +/* +=============== +UI_LoadBotsFromFile +=============== +*/ +static void UI_LoadBotsFromFile( char *filename ) { + int len; + fileHandle_t f; + char buf[MAX_BOTS_TEXT]; + + len = trap_FS_FOpenFile( filename, &f, FS_READ ); + if ( !f ) { + trap_Print( va( S_COLOR_RED "file not found: %s\n", filename ) ); + return; + } + if ( len >= MAX_BOTS_TEXT ) { + trap_Print( va( S_COLOR_RED "file too large: %s is %i, max allowed is %i", filename, len, MAX_BOTS_TEXT ) ); + trap_FS_FCloseFile( f ); + return; + } + + trap_FS_Read( buf, len, f ); + buf[len] = 0; + trap_FS_FCloseFile( f ); + + COM_Compress(buf); + + ui_numBots += UI_ParseInfos( buf, MAX_BOTS - ui_numBots, &ui_botInfos[ui_numBots] ); +} + +/* +=============== +UI_LoadBots +=============== +*/ +void UI_LoadBots( void ) { + vmCvar_t botsFile; + int numdirs; + char filename[128]; + char dirlist[1024]; + char* dirptr; + int i; + int dirlen; + + ui_numBots = 0; + + trap_Cvar_Register( &botsFile, "g_botsFile", "", CVAR_INIT|CVAR_ROM ); + if( *botsFile.string ) { + UI_LoadBotsFromFile(botsFile.string); + } + else { + UI_LoadBotsFromFile("scripts/bots.txt"); + } + + // get all bots from .bot files + numdirs = trap_FS_GetFileList("scripts", ".bot", dirlist, 1024 ); + dirptr = dirlist; + for (i = 0; i < numdirs; i++, dirptr += dirlen+1) { + dirlen = strlen(dirptr); + strcpy(filename, "scripts/"); + strcat(filename, dirptr); + UI_LoadBotsFromFile(filename); + } + trap_Print( va( "%i bots parsed\n", ui_numBots ) ); +} + + +/* +=============== +UI_GetBotInfoByNumber +=============== +*/ +char *UI_GetBotInfoByNumber( int num ) { + if( num < 0 || num >= ui_numBots ) { + trap_Print( va( S_COLOR_RED "Invalid bot number: %i\n", num ) ); + return NULL; + } + return ui_botInfos[num]; +} + + +/* +=============== +UI_GetBotInfoByName +=============== +*/ +char *UI_GetBotInfoByName( const char *name ) { + int n; + char *value; + + for ( n = 0; n < ui_numBots ; n++ ) { + value = Info_ValueForKey( ui_botInfos[n], "name" ); + if ( !Q_stricmp( value, name ) ) { + return ui_botInfos[n]; + } + } + + return NULL; +} + +int UI_GetNumBots() { + return ui_numBots; +} + + +char *UI_GetBotNameByNumber( int num ) { + char *info = UI_GetBotInfoByNumber(num); + if (info) { + return Info_ValueForKey( info, "name" ); + } + return "Sarge"; +} diff --git a/ta_ui/ui_local.h b/ta_ui/ui_local.h new file mode 100644 index 00000000..001d84da --- /dev/null +++ b/ta_ui/ui_local.h @@ -0,0 +1,1113 @@ +// Copyright (C) 1999-2000 Id Software, Inc. +// +#ifndef __UI_LOCAL_H__ +#define __UI_LOCAL_H__ + +#include "../game/q_shared.h" +#include "../cgame/tr_types.h" +#include "ui_public.h" +#include "keycodes.h" +#include "../game/bg_public.h" +#include "ui_shared.h" + +// global display context + +extern vmCvar_t ui_ffa_fraglimit; +extern vmCvar_t ui_ffa_timelimit; + +extern vmCvar_t ui_tourney_fraglimit; +extern vmCvar_t ui_tourney_timelimit; + +extern vmCvar_t ui_team_fraglimit; +extern vmCvar_t ui_team_timelimit; +extern vmCvar_t ui_team_friendly; + +extern vmCvar_t ui_ctf_capturelimit; +extern vmCvar_t ui_ctf_timelimit; +extern vmCvar_t ui_ctf_friendly; + +extern vmCvar_t ui_arenasFile; +extern vmCvar_t ui_botsFile; +extern vmCvar_t ui_spScores1; +extern vmCvar_t ui_spScores2; +extern vmCvar_t ui_spScores3; +extern vmCvar_t ui_spScores4; +extern vmCvar_t ui_spScores5; +extern vmCvar_t ui_spAwards; +extern vmCvar_t ui_spVideos; +extern vmCvar_t ui_spSkill; + +extern vmCvar_t ui_spSelection; + +extern vmCvar_t ui_browserMaster; +extern vmCvar_t ui_browserGameType; +extern vmCvar_t ui_browserSortKey; +extern vmCvar_t ui_browserShowFull; +extern vmCvar_t ui_browserShowEmpty; + +extern vmCvar_t ui_brassTime; +extern vmCvar_t ui_drawCrosshair; +extern vmCvar_t ui_drawCrosshairNames; +extern vmCvar_t ui_marks; + +extern vmCvar_t ui_server1; +extern vmCvar_t ui_server2; +extern vmCvar_t ui_server3; +extern vmCvar_t ui_server4; +extern vmCvar_t ui_server5; +extern vmCvar_t ui_server6; +extern vmCvar_t ui_server7; +extern vmCvar_t ui_server8; +extern vmCvar_t ui_server9; +extern vmCvar_t ui_server10; +extern vmCvar_t ui_server11; +extern vmCvar_t ui_server12; +extern vmCvar_t ui_server13; +extern vmCvar_t ui_server14; +extern vmCvar_t ui_server15; +extern vmCvar_t ui_server16; + +extern vmCvar_t ui_cdkey; +extern vmCvar_t ui_cdkeychecked; + +extern vmCvar_t ui_captureLimit; +extern vmCvar_t ui_fragLimit; +extern vmCvar_t ui_gameType; +extern vmCvar_t ui_netGameType; +extern vmCvar_t ui_actualNetGameType; +extern vmCvar_t ui_joinGameType; +extern vmCvar_t ui_netSource; +extern vmCvar_t ui_serverFilterType; +extern vmCvar_t ui_dedicated; +extern vmCvar_t ui_opponentName; +extern vmCvar_t ui_menuFiles; +extern vmCvar_t ui_currentTier; +extern vmCvar_t ui_currentMap; +extern vmCvar_t ui_currentNetMap; +extern vmCvar_t ui_mapIndex; +extern vmCvar_t ui_currentOpponent; +extern vmCvar_t ui_selectedPlayer; +extern vmCvar_t ui_selectedPlayerName; +extern vmCvar_t ui_lastServerRefresh_0; +extern vmCvar_t ui_lastServerRefresh_1; +extern vmCvar_t ui_lastServerRefresh_2; +extern vmCvar_t ui_lastServerRefresh_3; +extern vmCvar_t ui_singlePlayerActive; +extern vmCvar_t ui_scoreAccuracy; +extern vmCvar_t ui_scoreImpressives; +extern vmCvar_t ui_scoreExcellents; +extern vmCvar_t ui_scoreDefends; +extern vmCvar_t ui_scoreAssists; +extern vmCvar_t ui_scoreGauntlets; +extern vmCvar_t ui_scoreScore; +extern vmCvar_t ui_scorePerfect; +extern vmCvar_t ui_scoreTeam; +extern vmCvar_t ui_scoreBase; +extern vmCvar_t ui_scoreTimeBonus; +extern vmCvar_t ui_scoreSkillBonus; +extern vmCvar_t ui_scoreShutoutBonus; +extern vmCvar_t ui_scoreTime; +extern vmCvar_t ui_smallFont; +extern vmCvar_t ui_bigFont; +extern vmCvar_t ui_serverStatusTimeOut; + + + +// +// ui_qmenu.c +// + +#define RCOLUMN_OFFSET ( BIGCHAR_WIDTH ) +#define LCOLUMN_OFFSET (-BIGCHAR_WIDTH ) + +#define SLIDER_RANGE 10 +#define MAX_EDIT_LINE 256 + +#define MAX_MENUDEPTH 8 +#define MAX_MENUITEMS 96 + +#define MTYPE_NULL 0 +#define MTYPE_SLIDER 1 +#define MTYPE_ACTION 2 +#define MTYPE_SPINCONTROL 3 +#define MTYPE_FIELD 4 +#define MTYPE_RADIOBUTTON 5 +#define MTYPE_BITMAP 6 +#define MTYPE_TEXT 7 +#define MTYPE_SCROLLLIST 8 +#define MTYPE_PTEXT 9 +#define MTYPE_BTEXT 10 + +#define QMF_BLINK 0x00000001 +#define QMF_SMALLFONT 0x00000002 +#define QMF_LEFT_JUSTIFY 0x00000004 +#define QMF_CENTER_JUSTIFY 0x00000008 +#define QMF_RIGHT_JUSTIFY 0x00000010 +#define QMF_NUMBERSONLY 0x00000020 // edit field is only numbers +#define QMF_HIGHLIGHT 0x00000040 +#define QMF_HIGHLIGHT_IF_FOCUS 0x00000080 // steady focus +#define QMF_PULSEIFFOCUS 0x00000100 // pulse if focus +#define QMF_HASMOUSEFOCUS 0x00000200 +#define QMF_NOONOFFTEXT 0x00000400 +#define QMF_MOUSEONLY 0x00000800 // only mouse input allowed +#define QMF_HIDDEN 0x00001000 // skips drawing +#define QMF_GRAYED 0x00002000 // grays and disables +#define QMF_INACTIVE 0x00004000 // disables any input +#define QMF_NODEFAULTINIT 0x00008000 // skip default initialization +#define QMF_OWNERDRAW 0x00010000 +#define QMF_PULSE 0x00020000 +#define QMF_LOWERCASE 0x00040000 // edit field is all lower case +#define QMF_UPPERCASE 0x00080000 // edit field is all upper case +#define QMF_SILENT 0x00100000 + +// callback notifications +#define QM_GOTFOCUS 1 +#define QM_LOSTFOCUS 2 +#define QM_ACTIVATED 3 + +typedef struct _tag_menuframework +{ + int cursor; + int cursor_prev; + + int nitems; + void *items[MAX_MENUITEMS]; + + void (*draw) (void); + sfxHandle_t (*key) (int key); + + qboolean wrapAround; + qboolean fullscreen; + qboolean showlogo; +} menuframework_s; + +typedef struct +{ + int type; + const char *name; + int id; + int x, y; + int left; + int top; + int right; + int bottom; + menuframework_s *parent; + int menuPosition; + unsigned flags; + + void (*callback)( void *self, int event ); + void (*statusbar)( void *self ); + void (*ownerdraw)( void *self ); +} menucommon_s; + +typedef struct { + int cursor; + int scroll; + int widthInChars; + char buffer[MAX_EDIT_LINE]; + int maxchars; +} mfield_t; + +typedef struct +{ + menucommon_s generic; + mfield_t field; +} menufield_s; + +typedef struct +{ + menucommon_s generic; + + float minvalue; + float maxvalue; + float curvalue; + + float range; +} menuslider_s; + +typedef struct +{ + menucommon_s generic; + + int oldvalue; + int curvalue; + int numitems; + int top; + + const char **itemnames; + + int width; + int height; + int columns; + int seperation; +} menulist_s; + +typedef struct +{ + menucommon_s generic; +} menuaction_s; + +typedef struct +{ + menucommon_s generic; + int curvalue; +} menuradiobutton_s; + +typedef struct +{ + menucommon_s generic; + char* focuspic; + char* errorpic; + qhandle_t shader; + qhandle_t focusshader; + int width; + int height; + float* focuscolor; +} menubitmap_s; + +typedef struct +{ + menucommon_s generic; + char* string; + int style; + float* color; +} menutext_s; + +extern void Menu_Cache( void ); +extern void Menu_Focus( menucommon_s *m ); +extern void Menu_AddItem( menuframework_s *menu, void *item ); +extern void Menu_AdjustCursor( menuframework_s *menu, int dir ); +extern void Menu_Draw( menuframework_s *menu ); +extern void *Menu_ItemAtCursor( menuframework_s *m ); +extern sfxHandle_t Menu_ActivateItem( menuframework_s *s, menucommon_s* item ); +extern void Menu_SetCursor( menuframework_s *s, int cursor ); +extern void Menu_SetCursorToItem( menuframework_s *m, void* ptr ); +extern sfxHandle_t Menu_DefaultKey( menuframework_s *s, int key ); +extern void Bitmap_Init( menubitmap_s *b ); +extern void Bitmap_Draw( menubitmap_s *b ); +extern void ScrollList_Draw( menulist_s *l ); +extern sfxHandle_t ScrollList_Key( menulist_s *l, int key ); +extern sfxHandle_t menu_in_sound; +extern sfxHandle_t menu_move_sound; +extern sfxHandle_t menu_out_sound; +extern sfxHandle_t menu_buzz_sound; +extern sfxHandle_t menu_null_sound; +extern sfxHandle_t weaponChangeSound; +extern vec4_t menu_text_color; +extern vec4_t menu_grayed_color; +extern vec4_t menu_dark_color; +extern vec4_t menu_highlight_color; +extern vec4_t menu_red_color; +extern vec4_t menu_black_color; +extern vec4_t menu_dim_color; +extern vec4_t color_black; +extern vec4_t color_white; +extern vec4_t color_yellow; +extern vec4_t color_blue; +extern vec4_t color_orange; +extern vec4_t color_red; +extern vec4_t color_dim; +extern vec4_t name_color; +extern vec4_t list_color; +extern vec4_t listbar_color; +extern vec4_t text_color_disabled; +extern vec4_t text_color_normal; +extern vec4_t text_color_highlight; + +extern char *ui_medalNames[]; +extern char *ui_medalPicNames[]; +extern char *ui_medalSounds[]; + +// +// ui_mfield.c +// +extern void MField_Clear( mfield_t *edit ); +extern void MField_KeyDownEvent( mfield_t *edit, int key ); +extern void MField_CharEvent( mfield_t *edit, int ch ); +extern void MField_Draw( mfield_t *edit, int x, int y, int style, vec4_t color ); +extern void MenuField_Init( menufield_s* m ); +extern void MenuField_Draw( menufield_s *f ); +extern sfxHandle_t MenuField_Key( menufield_s* m, int* key ); + +// +// ui_main.c +// +void UI_Report(); +void UI_Load(); +void UI_LoadMenus(const char *menuFile, qboolean reset); +void _UI_SetActiveMenu( uiMenuCommand_t menu ); +int UI_AdjustTimeByGame(int time); +void UI_ShowPostGame(qboolean newHigh); +void UI_ClearScores(); +void UI_LoadArenas(void); + +// +// ui_menu.c +// +extern void MainMenu_Cache( void ); +extern void UI_MainMenu(void); +extern void UI_RegisterCvars( void ); +extern void UI_UpdateCvars( void ); + +// +// ui_credits.c +// +extern void UI_CreditMenu( void ); + +// +// ui_ingame.c +// +extern void InGame_Cache( void ); +extern void UI_InGameMenu(void); + +// +// ui_confirm.c +// +extern void ConfirmMenu_Cache( void ); +extern void UI_ConfirmMenu( const char *question, void (*draw)( void ), void (*action)( qboolean result ) ); + +// +// ui_setup.c +// +extern void UI_SetupMenu_Cache( void ); +extern void UI_SetupMenu(void); + +// +// ui_team.c +// +extern void UI_TeamMainMenu( void ); +extern void TeamMain_Cache( void ); + +// +// ui_connect.c +// +extern void UI_DrawConnectScreen( qboolean overlay ); + +// +// ui_controls2.c +// +extern void UI_ControlsMenu( void ); +extern void Controls_Cache( void ); + +// +// ui_demo2.c +// +extern void UI_DemosMenu( void ); +extern void Demos_Cache( void ); + +// +// ui_cinematics.c +// +extern void UI_CinematicsMenu( void ); +extern void UI_CinematicsMenu_f( void ); +extern void UI_CinematicsMenu_Cache( void ); + +// +// ui_mods.c +// +extern void UI_ModsMenu( void ); +extern void UI_ModsMenu_Cache( void ); + +// +// ui_cdkey.c +// +extern void UI_CDKeyMenu( void ); +extern void UI_CDKeyMenu_Cache( void ); +extern void UI_CDKeyMenu_f( void ); + +// +// ui_playermodel.c +// +extern void UI_PlayerModelMenu( void ); +extern void PlayerModel_Cache( void ); + +// +// ui_playersettings.c +// +extern void UI_PlayerSettingsMenu( void ); +extern void PlayerSettings_Cache( void ); + +// +// ui_preferences.c +// +extern void UI_PreferencesMenu( void ); +extern void Preferences_Cache( void ); + +// +// ui_specifyleague.c +// +extern void UI_SpecifyLeagueMenu( void ); +extern void SpecifyLeague_Cache( void ); + +// +// ui_specifyserver.c +// +extern void UI_SpecifyServerMenu( void ); +extern void SpecifyServer_Cache( void ); + +// +// ui_servers2.c +// +#define MAX_FAVORITESERVERS 16 + +extern void UI_ArenaServersMenu( void ); +extern void ArenaServers_Cache( void ); + +// +// ui_startserver.c +// +extern void UI_StartServerMenu( qboolean multiplayer ); +extern void StartServer_Cache( void ); +extern void ServerOptions_Cache( void ); +extern void UI_BotSelectMenu( char *bot ); +extern void UI_BotSelectMenu_Cache( void ); + +// +// ui_serverinfo.c +// +extern void UI_ServerInfoMenu( void ); +extern void ServerInfo_Cache( void ); + +// +// ui_video.c +// +extern void UI_GraphicsOptionsMenu( void ); +extern void GraphicsOptions_Cache( void ); +extern void DriverInfo_Cache( void ); + +// +// ui_players.c +// + +//FIXME ripped from cg_local.h +typedef struct { + int oldFrame; + int oldFrameTime; // time when ->oldFrame was exactly on + + int frame; + int frameTime; // time when ->frame will be exactly on + + float backlerp; + + float yawAngle; + qboolean yawing; + float pitchAngle; + qboolean pitching; + + int animationNumber; // may include ANIM_TOGGLEBIT + animation_t *animation; + int animationTime; // time when the first frame of the animation will be exact +} lerpFrame_t; + +typedef struct { + // model info + qhandle_t legsModel; + qhandle_t legsSkin; + lerpFrame_t legs; + + qhandle_t torsoModel; + qhandle_t torsoSkin; + lerpFrame_t torso; + + qhandle_t headModel; + qhandle_t headSkin; + + animation_t animations[MAX_TOTALANIMATIONS]; + + qhandle_t weaponModel; + qhandle_t barrelModel; + qhandle_t flashModel; + vec3_t flashDlightColor; + int muzzleFlashTime; + + // currently in use drawing parms + vec3_t viewAngles; + vec3_t moveAngles; + weapon_t currentWeapon; + int legsAnim; + int torsoAnim; + + // animation vars + weapon_t weapon; + weapon_t lastWeapon; + weapon_t pendingWeapon; + int weaponTimer; + int pendingLegsAnim; + int torsoAnimationTimer; + + int pendingTorsoAnim; + int legsAnimationTimer; + + qboolean chat; + qboolean newModel; + + qboolean barrelSpinning; + float barrelAngle; + int barrelTime; + + int realWeapon; +} playerInfo_t; + +void UI_DrawPlayer( float x, float y, float w, float h, playerInfo_t *pi, int time ); +void UI_PlayerInfo_SetModel( playerInfo_t *pi, const char *model, const char *headmodel, char *teamName ); +void UI_PlayerInfo_SetInfo( playerInfo_t *pi, int legsAnim, int torsoAnim, vec3_t viewAngles, vec3_t moveAngles, weapon_t weaponNum, qboolean chat ); +qboolean UI_RegisterClientModelname( playerInfo_t *pi, const char *modelSkinName , const char *headName, const char *teamName); + +// +// ui_atoms.c +// +// this is only used in the old ui, the new ui has it's own version +typedef struct { + int frametime; + int realtime; + int cursorx; + int cursory; + glconfig_t glconfig; + qboolean debug; + qhandle_t whiteShader; + qhandle_t menuBackShader; + qhandle_t menuBackShader2; + qhandle_t menuBackNoLogoShader; + qhandle_t charset; + qhandle_t charsetProp; + qhandle_t charsetPropGlow; + qhandle_t charsetPropB; + qhandle_t cursor; + qhandle_t rb_on; + qhandle_t rb_off; + float scale; + float bias; + qboolean demoversion; + qboolean firstdraw; +} uiStatic_t; + + +// new ui stuff +#define UI_NUMFX 7 +#define MAX_HEADS 64 +#define MAX_ALIASES 64 +#define MAX_HEADNAME 32 +#define MAX_TEAMS 64 +#define MAX_GAMETYPES 16 +#define MAX_MAPS 128 +#define MAX_SPMAPS 16 +#define PLAYERS_PER_TEAM 5 +#define MAX_PINGREQUESTS 32 +#define MAX_ADDRESSLENGTH 64 +#define MAX_HOSTNAMELENGTH 22 +#define MAX_MAPNAMELENGTH 16 +#define MAX_STATUSLENGTH 64 +#define MAX_LISTBOXWIDTH 59 +#define UI_FONT_THRESHOLD 0.1 +#define MAX_DISPLAY_SERVERS 2048 +#define MAX_SERVERSTATUS_LINES 128 +#define MAX_SERVERSTATUS_TEXT 1024 +#define MAX_FOUNDPLAYER_SERVERS 16 +#define TEAM_MEMBERS 5 +#define GAMES_ALL 0 +#define GAMES_FFA 1 +#define GAMES_TEAMPLAY 2 +#define GAMES_TOURNEY 3 +#define GAMES_CTF 4 +#define MAPS_PER_TIER 3 +#define MAX_TIERS 16 +#define MAX_MODS 64 +#define MAX_DEMOS 256 +#define MAX_MOVIES 256 +#define MAX_PLAYERMODELS 256 + + +typedef struct { + const char *name; + const char *imageName; + qhandle_t headImage; + const char *base; + qboolean active; + int reference; +} characterInfo; + +typedef struct { + const char *name; + const char *ai; + const char *action; +} aliasInfo; + +typedef struct { + const char *teamName; + const char *imageName; + const char *teamMembers[TEAM_MEMBERS]; + qhandle_t teamIcon; + qhandle_t teamIcon_Metal; + qhandle_t teamIcon_Name; + int cinematic; +} teamInfo; + +typedef struct { + const char *gameType; + int gtEnum; +} gameTypeInfo; + +typedef struct { + const char *mapName; + const char *mapLoadName; + const char *imageName; + const char *opponentName; + int teamMembers; + int typeBits; + int cinematic; + int timeToBeat[MAX_GAMETYPES]; + qhandle_t levelShot; + qboolean active; +} mapInfo; + +typedef struct { + const char *tierName; + const char *maps[MAPS_PER_TIER]; + int gameTypes[MAPS_PER_TIER]; + qhandle_t mapHandles[MAPS_PER_TIER]; +} tierInfo; + +typedef struct serverFilter_s { + const char *description; + const char *basedir; +} serverFilter_t; + +typedef struct { + char adrstr[MAX_ADDRESSLENGTH]; + int start; +} pinglist_t; + + +typedef struct serverStatus_s { + pinglist_t pingList[MAX_PINGREQUESTS]; + int numqueriedservers; + int currentping; + int nextpingtime; + int maxservers; + int refreshtime; + int numServers; + int sortKey; + int sortDir; + int lastCount; + qboolean refreshActive; + int currentServer; + int displayServers[MAX_DISPLAY_SERVERS]; + int numDisplayServers; + int numPlayersOnServers; + int nextDisplayRefresh; + int nextSortTime; + qhandle_t currentServerPreview; + int currentServerCinematic; + int motdLen; + int motdWidth; + int motdPaintX; + int motdPaintX2; + int motdOffset; + int motdTime; + char motd[MAX_STRING_CHARS]; +} serverStatus_t; + + +typedef struct { + char adrstr[MAX_ADDRESSLENGTH]; + char name[MAX_ADDRESSLENGTH]; + int startTime; + int serverNum; + qboolean valid; +} pendingServer_t; + +typedef struct { + int num; + pendingServer_t server[MAX_SERVERSTATUSREQUESTS]; +} pendingServerStatus_t; + +typedef struct { + char address[MAX_ADDRESSLENGTH]; + char *lines[MAX_SERVERSTATUS_LINES][4]; + char text[MAX_SERVERSTATUS_TEXT]; + char pings[MAX_CLIENTS * 3]; + int numLines; +} serverStatusInfo_t; + +typedef struct { + const char *modName; + const char *modDescr; +} modInfo_t; + + +typedef struct { + displayContextDef_t uiDC; + int newHighScoreTime; + int newBestTime; + int showPostGameTime; + qboolean newHighScore; + qboolean demoAvailable; + qboolean soundHighScore; + + int characterCount; + int botIndex; + characterInfo characterList[MAX_HEADS]; + + int aliasCount; + aliasInfo aliasList[MAX_ALIASES]; + + int teamCount; + teamInfo teamList[MAX_TEAMS]; + + int numGameTypes; + gameTypeInfo gameTypes[MAX_GAMETYPES]; + + int numJoinGameTypes; + gameTypeInfo joinGameTypes[MAX_GAMETYPES]; + + int redBlue; + int playerCount; + int myTeamCount; + int teamIndex; + int playerRefresh; + int playerIndex; + int playerNumber; + qboolean teamLeader; + char playerNames[MAX_CLIENTS][MAX_NAME_LENGTH]; + char teamNames[MAX_CLIENTS][MAX_NAME_LENGTH]; + int teamClientNums[MAX_CLIENTS]; + + int mapCount; + mapInfo mapList[MAX_MAPS]; + + + int tierCount; + tierInfo tierList[MAX_TIERS]; + + int skillIndex; + + modInfo_t modList[MAX_MODS]; + int modCount; + int modIndex; + + const char *demoList[MAX_DEMOS]; + int demoCount; + int demoIndex; + + const char *movieList[MAX_MOVIES]; + int movieCount; + int movieIndex; + int previewMovie; + + serverStatus_t serverStatus; + + // for the showing the status of a server + char serverStatusAddress[MAX_ADDRESSLENGTH]; + serverStatusInfo_t serverStatusInfo; + int nextServerStatusRefresh; + + // to retrieve the status of server to find a player + pendingServerStatus_t pendingServerStatus; + char findPlayerName[MAX_STRING_CHARS]; + char foundPlayerServerAddresses[MAX_FOUNDPLAYER_SERVERS][MAX_ADDRESSLENGTH]; + char foundPlayerServerNames[MAX_FOUNDPLAYER_SERVERS][MAX_ADDRESSLENGTH]; + int currentFoundPlayerServer; + int numFoundPlayerServers; + int nextFindPlayerRefresh; + + int currentCrosshair; + int startPostGameTime; + sfxHandle_t newHighScoreSound; + + int q3HeadCount; + char q3HeadNames[MAX_PLAYERMODELS][64]; + qhandle_t q3HeadIcons[MAX_PLAYERMODELS]; + int q3SelectedHead; + + int effectsColor; + + qboolean inGameLoad; + +} uiInfo_t; + +extern uiInfo_t uiInfo; + + +extern void UI_Init( void ); +extern void UI_Shutdown( void ); +extern void UI_KeyEvent( int key ); +extern void UI_MouseEvent( int dx, int dy ); +extern void UI_Refresh( int realtime ); +extern qboolean UI_ConsoleCommand( int realTime ); +extern float UI_ClampCvar( float min, float max, float value ); +extern void UI_DrawNamedPic( float x, float y, float width, float height, const char *picname ); +extern void UI_DrawHandlePic( float x, float y, float w, float h, qhandle_t hShader ); +extern void UI_FillRect( float x, float y, float width, float height, const float *color ); +extern void UI_DrawRect( float x, float y, float width, float height, const float *color ); +extern void UI_DrawTopBottom(float x, float y, float w, float h); +extern void UI_DrawSides(float x, float y, float w, float h); +extern void UI_UpdateScreen( void ); +extern void UI_SetColor( const float *rgba ); +extern void UI_LerpColor(vec4_t a, vec4_t b, vec4_t c, float t); +extern void UI_DrawBannerString( int x, int y, const char* str, int style, vec4_t color ); +extern float UI_ProportionalSizeScale( int style ); +extern void UI_DrawProportionalString( int x, int y, const char* str, int style, vec4_t color ); +extern int UI_ProportionalStringWidth( const char* str ); +extern void UI_DrawString( int x, int y, const char* str, int style, vec4_t color ); +extern void UI_DrawChar( int x, int y, int ch, int style, vec4_t color ); +extern qboolean UI_CursorInRect (int x, int y, int width, int height); +extern void UI_AdjustFrom640( float *x, float *y, float *w, float *h ); +extern void UI_DrawTextBox (int x, int y, int width, int lines); +extern qboolean UI_IsFullscreen( void ); +extern void UI_SetActiveMenu( uiMenuCommand_t menu ); +extern void UI_PushMenu ( menuframework_s *menu ); +extern void UI_PopMenu (void); +extern void UI_ForceMenuOff (void); +extern char *UI_Argv( int arg ); +extern char *UI_Cvar_VariableString( const char *var_name ); +extern void UI_Refresh( int time ); +extern void UI_KeyEvent( int key ); +extern void UI_StartDemoLoop( void ); +extern qboolean m_entersound; +void UI_LoadBestScores(const char *map, int game); +extern uiStatic_t uis; + +// +// ui_spLevel.c +// +void UI_SPLevelMenu_Cache( void ); +void UI_SPLevelMenu( void ); +void UI_SPLevelMenu_f( void ); +void UI_SPLevelMenu_ReInit( void ); + +// +// ui_spArena.c +// +void UI_SPArena_Start( const char *arenaInfo ); + +// +// ui_spPostgame.c +// +void UI_SPPostgameMenu_Cache( void ); +void UI_SPPostgameMenu_f( void ); + +// +// ui_spSkill.c +// +void UI_SPSkillMenu( const char *arenaInfo ); +void UI_SPSkillMenu_Cache( void ); + +// +// ui_syscalls.c +// +void trap_Print( const char *string ); +void trap_Error( const char *string ); +int trap_Milliseconds( void ); +void trap_Cvar_Register( vmCvar_t *vmCvar, const char *varName, const char *defaultValue, int flags ); +void trap_Cvar_Update( vmCvar_t *vmCvar ); +void trap_Cvar_Set( const char *var_name, const char *value ); +float trap_Cvar_VariableValue( const char *var_name ); +void trap_Cvar_VariableStringBuffer( const char *var_name, char *buffer, int bufsize ); +void trap_Cvar_SetValue( const char *var_name, float value ); +void trap_Cvar_Reset( const char *name ); +void trap_Cvar_Create( const char *var_name, const char *var_value, int flags ); +void trap_Cvar_InfoStringBuffer( int bit, char *buffer, int bufsize ); +int trap_Argc( void ); +void trap_Argv( int n, char *buffer, int bufferLength ); +void trap_Cmd_ExecuteText( int exec_when, const char *text ); // don't use EXEC_NOW! +int trap_FS_FOpenFile( const char *qpath, fileHandle_t *f, fsMode_t mode ); +void trap_FS_Read( void *buffer, int len, fileHandle_t f ); +void trap_FS_Write( const void *buffer, int len, fileHandle_t f ); +void trap_FS_FCloseFile( fileHandle_t f ); +int trap_FS_GetFileList( const char *path, const char *extension, char *listbuf, int bufsize ); +qhandle_t trap_R_RegisterModel( const char *name ); +qhandle_t trap_R_RegisterSkin( const char *name ); +qhandle_t trap_R_RegisterShaderNoMip( const char *name ); +void trap_R_ClearScene( void ); +void trap_R_AddRefEntityToScene( const refEntity_t *re ); +void trap_R_AddPolyToScene( qhandle_t hShader , int numVerts, const polyVert_t *verts ); +void trap_R_AddLightToScene( const vec3_t org, float intensity, float r, float g, float b ); +void trap_R_RenderScene( const refdef_t *fd ); +void trap_R_SetColor( const float *rgba ); +void trap_R_DrawStretchPic( float x, float y, float w, float h, float s1, float t1, float s2, float t2, qhandle_t hShader ); +void trap_R_ModelBounds( clipHandle_t model, vec3_t mins, vec3_t maxs ); +void trap_UpdateScreen( void ); +int trap_CM_LerpTag( orientation_t *tag, clipHandle_t mod, int startFrame, int endFrame, float frac, const char *tagName ); +void trap_S_StartLocalSound( sfxHandle_t sfx, int channelNum ); +sfxHandle_t trap_S_RegisterSound( const char *sample, qboolean compressed ); +void trap_Key_KeynumToStringBuf( int keynum, char *buf, int buflen ); +void trap_Key_GetBindingBuf( int keynum, char *buf, int buflen ); +void trap_Key_SetBinding( int keynum, const char *binding ); +qboolean trap_Key_IsDown( int keynum ); +qboolean trap_Key_GetOverstrikeMode( void ); +void trap_Key_SetOverstrikeMode( qboolean state ); +void trap_Key_ClearStates( void ); +int trap_Key_GetCatcher( void ); +void trap_Key_SetCatcher( int catcher ); +void trap_GetClipboardData( char *buf, int bufsize ); +void trap_GetClientState( uiClientState_t *state ); +void trap_GetGlconfig( glconfig_t *glconfig ); +int trap_GetConfigString( int index, char* buff, int buffsize ); +int trap_LAN_GetServerCount( int source ); +void trap_LAN_GetServerAddressString( int source, int n, char *buf, int buflen ); +void trap_LAN_GetServerInfo( int source, int n, char *buf, int buflen ); +int trap_LAN_GetServerPing( int source, int n ); +int trap_LAN_GetPingQueueCount( void ); +void trap_LAN_ClearPing( int n ); +void trap_LAN_GetPing( int n, char *buf, int buflen, int *pingtime ); +void trap_LAN_GetPingInfo( int n, char *buf, int buflen ); +void trap_LAN_LoadCachedServers(); +void trap_LAN_SaveCachedServers(); +void trap_LAN_MarkServerVisible(int source, int n, qboolean visible); +int trap_LAN_ServerIsVisible( int source, int n); +qboolean trap_LAN_UpdateVisiblePings( int source ); +int trap_LAN_AddServer(int source, const char *name, const char *addr); +void trap_LAN_RemoveServer(int source, const char *addr); +void trap_LAN_ResetPings(int n); +int trap_LAN_ServerStatus( const char *serverAddress, char *serverStatus, int maxLen ); +int trap_LAN_CompareServers( int source, int sortKey, int sortDir, int s1, int s2 ); +int trap_MemoryRemaining( void ); +void trap_GetCDKey( char *buf, int buflen ); +void trap_SetCDKey( char *buf ); +void trap_R_RegisterFont(const char *pFontname, int pointSize, fontInfo_t *font); +void trap_S_StopBackgroundTrack( void ); +void trap_S_StartBackgroundTrack( const char *intro, const char *loop); +int trap_CIN_PlayCinematic( const char *arg0, int xpos, int ypos, int width, int height, int bits); +e_status trap_CIN_StopCinematic(int handle); +e_status trap_CIN_RunCinematic (int handle); +void trap_CIN_DrawCinematic (int handle); +void trap_CIN_SetExtents (int handle, int x, int y, int w, int h); +int trap_RealTime(qtime_t *qtime); +void trap_R_RemapShader( const char *oldShader, const char *newShader, const char *timeOffset ); +qboolean trap_VerifyCDKey( const char *key, const char *chksum); + +// +// ui_addbots.c +// +void UI_AddBots_Cache( void ); +void UI_AddBotsMenu( void ); + +// +// ui_removebots.c +// +void UI_RemoveBots_Cache( void ); +void UI_RemoveBotsMenu( void ); + +// +// ui_teamorders.c +// +extern void UI_TeamOrdersMenu( void ); +extern void UI_TeamOrdersMenu_f( void ); +extern void UI_TeamOrdersMenu_Cache( void ); + +// +// ui_loadconfig.c +// +void UI_LoadConfig_Cache( void ); +void UI_LoadConfigMenu( void ); + +// +// ui_saveconfig.c +// +void UI_SaveConfigMenu_Cache( void ); +void UI_SaveConfigMenu( void ); + +// +// ui_display.c +// +void UI_DisplayOptionsMenu_Cache( void ); +void UI_DisplayOptionsMenu( void ); + +// +// ui_sound.c +// +void UI_SoundOptionsMenu_Cache( void ); +void UI_SoundOptionsMenu( void ); + +// +// ui_network.c +// +void UI_NetworkOptionsMenu_Cache( void ); +void UI_NetworkOptionsMenu( void ); + +// +// ui_gameinfo.c +// +typedef enum { + AWARD_ACCURACY, + AWARD_IMPRESSIVE, + AWARD_EXCELLENT, + AWARD_GAUNTLET, + AWARD_FRAGS, + AWARD_PERFECT +} awardType_t; + +const char *UI_GetArenaInfoByNumber( int num ); +const char *UI_GetArenaInfoByMap( const char *map ); +const char *UI_GetSpecialArenaInfo( const char *tag ); +int UI_GetNumArenas( void ); +int UI_GetNumSPArenas( void ); +int UI_GetNumSPTiers( void ); + +char *UI_GetBotInfoByNumber( int num ); +char *UI_GetBotInfoByName( const char *name ); +int UI_GetNumBots( void ); +void UI_LoadBots( void ); +char *UI_GetBotNameByNumber( int num ); + +void UI_GetBestScore( int level, int *score, int *skill ); +void UI_SetBestScore( int level, int score ); +int UI_TierCompleted( int levelWon ); +qboolean UI_ShowTierVideo( int tier ); +qboolean UI_CanShowTierVideo( int tier ); +int UI_GetCurrentGame( void ); +void UI_NewGame( void ); +void UI_LogAwardData( int award, int data ); +int UI_GetAwardLevel( int award ); + +void UI_SPUnlock_f( void ); +void UI_SPUnlockMedals_f( void ); + +void UI_InitGameinfo( void ); + +// +// ui_login.c +// +void Login_Cache( void ); +void UI_LoginMenu( void ); + +// +// ui_signup.c +// +void Signup_Cache( void ); +void UI_SignupMenu( void ); + +// +// ui_rankstatus.c +// +void RankStatus_Cache( void ); +void UI_RankStatusMenu( void ); + + +// new ui + +#define ASSET_BACKGROUND "uiBackground" + +// for tracking sp game info in Team Arena +typedef struct postGameInfo_s { + int score; + int redScore; + int blueScore; + int perfects; + int accuracy; + int impressives; + int excellents; + int defends; + int assists; + int gauntlets; + int captures; + int time; + int timeBonus; + int shutoutBonus; + int skillBonus; + int baseScore; +} postGameInfo_t; + + + +#endif diff --git a/ta_ui/ui_main.c b/ta_ui/ui_main.c new file mode 100644 index 00000000..aa015d66 --- /dev/null +++ b/ta_ui/ui_main.c @@ -0,0 +1,5929 @@ +// Copyright (C) 1999-2000 Id Software, Inc. +// +/* +======================================================================= + +USER INTERFACE MAIN + +======================================================================= +*/ + +// use this to get a demo build without an explicit demo build, i.e. to get the demo ui files to build +//#define PRE_RELEASE_TADEMO + +#include "ui_local.h" + +uiInfo_t uiInfo; + +static const char *MonthAbbrev[] = { + "Jan","Feb","Mar", + "Apr","May","Jun", + "Jul","Aug","Sep", + "Oct","Nov","Dec" +}; + + +static const char *skillLevels[] = { + "I Can Win", + "Bring It On", + "Hurt Me Plenty", + "Hardcore", + "Nightmare" +}; + +static const int numSkillLevels = sizeof(skillLevels) / sizeof(const char*); + + +static const char *netSources[] = { + "Local", + "Mplayer", + "Internet", + "Favorites" +}; +static const int numNetSources = sizeof(netSources) / sizeof(const char*); + +static const serverFilter_t serverFilters[] = { + {"All", "" }, + {"Quake 3 Arena", "" }, + {"Team Arena", "missionpack" }, + {"Rocket Arena", "arena" }, + {"Alliance", "alliance20" }, + {"Weapons Factory Arena", "wfa" }, + {"OSP", "osp" }, +}; + +static const char *teamArenaGameTypes[] = { + "FFA", + "TOURNAMENT", + "SP", + "TEAM DM", + "CTF", + "1FCTF", + "OVERLOAD", + "HARVESTER", + "TEAMTOURNAMENT" +}; + +static int const numTeamArenaGameTypes = sizeof(teamArenaGameTypes) / sizeof(const char*); + + +static const char *teamArenaGameNames[] = { + "Free For All", + "Tournament", + "Single Player", + "Team Deathmatch", + "Capture the Flag", + "One Flag CTF", + "Overload", + "Harvester", + "Team Tournament", +}; + +static int const numTeamArenaGameNames = sizeof(teamArenaGameNames) / sizeof(const char*); + + +static const int numServerFilters = sizeof(serverFilters) / sizeof(serverFilter_t); + +static const char *sortKeys[] = { + "Server Name", + "Map Name", + "Open Player Spots", + "Game Type", + "Ping Time" +}; +static const int numSortKeys = sizeof(sortKeys) / sizeof(const char*); + +static char* netnames[] = { + "???", + "UDP", + "IPX", + NULL +}; + +#ifndef MISSIONPACK // bk001206 +static char quake3worldMessage[] = "Visit www.quake3world.com - News, Community, Events, Files"; +#endif + +static int gamecodetoui[] = {4,2,3,0,5,1,6}; +static int uitogamecode[] = {4,6,2,3,1,5,7}; + + +static void UI_StartServerRefresh(qboolean full); +static void UI_StopServerRefresh( void ); +static void UI_DoServerRefresh( void ); +static void UI_FeederSelection(float feederID, int index); +static void UI_BuildServerDisplayList(qboolean force); +static void UI_BuildServerStatus(qboolean force); +static void UI_BuildFindPlayerList(qboolean force); +static int QDECL UI_ServersQsortCompare( const void *arg1, const void *arg2 ); +static int UI_MapCountByGameType(qboolean singlePlayer); +static int UI_HeadCountByTeam( void ); +static void UI_ParseGameInfo(const char *teamFile); +static void UI_ParseTeamInfo(const char *teamFile); +static const char *UI_SelectedMap(int index, int *actual); +static const char *UI_SelectedHead(int index, int *actual); +static int UI_GetIndexFromSelection(int actual); + +int ProcessNewUI( int command, int arg0, int arg1, int arg2, int arg3, int arg4, int arg5, int arg6 ); + +/* +================ +vmMain + +This is the only way control passes into the module. +This must be the very first function compiled into the .qvm file +================ +*/ +vmCvar_t ui_new; +vmCvar_t ui_debug; +vmCvar_t ui_initialized; +vmCvar_t ui_teamArenaFirstRun; + +void _UI_Init( qboolean ); +void _UI_Shutdown( void ); +void _UI_KeyEvent( int key, qboolean down ); +void _UI_MouseEvent( int dx, int dy ); +void _UI_Refresh( int realtime ); +qboolean _UI_IsFullscreen( void ); +int vmMain( int command, int arg0, int arg1, int arg2, int arg3, int arg4, int arg5, int arg6, int arg7, int arg8, int arg9, int arg10, int arg11 ) { + switch ( command ) { + case UI_GETAPIVERSION: + return UI_API_VERSION; + + case UI_INIT: + _UI_Init(arg0); + return 0; + + case UI_SHUTDOWN: + _UI_Shutdown(); + return 0; + + case UI_KEY_EVENT: + _UI_KeyEvent( arg0, arg1 ); + return 0; + + case UI_MOUSE_EVENT: + _UI_MouseEvent( arg0, arg1 ); + return 0; + + case UI_REFRESH: + _UI_Refresh( arg0 ); + return 0; + + case UI_IS_FULLSCREEN: + return _UI_IsFullscreen(); + + case UI_SET_ACTIVE_MENU: + _UI_SetActiveMenu( arg0 ); + return 0; + + case UI_CONSOLE_COMMAND: + return UI_ConsoleCommand(arg0); + + case UI_DRAW_CONNECT_SCREEN: + UI_DrawConnectScreen( arg0 ); + return 0; + case UI_HASUNIQUECDKEY: // mod authors need to observe this + return qtrue; // bk010117 - change this to qfalse for mods! + + } + + return -1; +} + + + +void AssetCache() { + int n; + //if (Assets.textFont == NULL) { + //} + //Assets.background = trap_R_RegisterShaderNoMip( ASSET_BACKGROUND ); + //Com_Printf("Menu Size: %i bytes\n", sizeof(Menus)); + uiInfo.uiDC.Assets.gradientBar = trap_R_RegisterShaderNoMip( ASSET_GRADIENTBAR ); + uiInfo.uiDC.Assets.fxBasePic = trap_R_RegisterShaderNoMip( ART_FX_BASE ); + uiInfo.uiDC.Assets.fxPic[0] = trap_R_RegisterShaderNoMip( ART_FX_RED ); + uiInfo.uiDC.Assets.fxPic[1] = trap_R_RegisterShaderNoMip( ART_FX_YELLOW ); + uiInfo.uiDC.Assets.fxPic[2] = trap_R_RegisterShaderNoMip( ART_FX_GREEN ); + uiInfo.uiDC.Assets.fxPic[3] = trap_R_RegisterShaderNoMip( ART_FX_TEAL ); + uiInfo.uiDC.Assets.fxPic[4] = trap_R_RegisterShaderNoMip( ART_FX_BLUE ); + uiInfo.uiDC.Assets.fxPic[5] = trap_R_RegisterShaderNoMip( ART_FX_CYAN ); + uiInfo.uiDC.Assets.fxPic[6] = trap_R_RegisterShaderNoMip( ART_FX_WHITE ); + uiInfo.uiDC.Assets.scrollBar = trap_R_RegisterShaderNoMip( ASSET_SCROLLBAR ); + uiInfo.uiDC.Assets.scrollBarArrowDown = trap_R_RegisterShaderNoMip( ASSET_SCROLLBAR_ARROWDOWN ); + uiInfo.uiDC.Assets.scrollBarArrowUp = trap_R_RegisterShaderNoMip( ASSET_SCROLLBAR_ARROWUP ); + uiInfo.uiDC.Assets.scrollBarArrowLeft = trap_R_RegisterShaderNoMip( ASSET_SCROLLBAR_ARROWLEFT ); + uiInfo.uiDC.Assets.scrollBarArrowRight = trap_R_RegisterShaderNoMip( ASSET_SCROLLBAR_ARROWRIGHT ); + uiInfo.uiDC.Assets.scrollBarThumb = trap_R_RegisterShaderNoMip( ASSET_SCROLL_THUMB ); + uiInfo.uiDC.Assets.sliderBar = trap_R_RegisterShaderNoMip( ASSET_SLIDER_BAR ); + uiInfo.uiDC.Assets.sliderThumb = trap_R_RegisterShaderNoMip( ASSET_SLIDER_THUMB ); + + for( n = 0; n < NUM_CROSSHAIRS; n++ ) { + uiInfo.uiDC.Assets.crosshairShader[n] = trap_R_RegisterShaderNoMip( va("gfx/2d/crosshair%c", 'a' + n ) ); + } + + uiInfo.newHighScoreSound = trap_S_RegisterSound("sound/feedback/voc_newhighscore.wav", qfalse); +} + +void _UI_DrawSides(float x, float y, float w, float h, float size) { + UI_AdjustFrom640( &x, &y, &w, &h ); + size *= uiInfo.uiDC.xscale; + trap_R_DrawStretchPic( x, y, size, h, 0, 0, 0, 0, uiInfo.uiDC.whiteShader ); + trap_R_DrawStretchPic( x + w - size, y, size, h, 0, 0, 0, 0, uiInfo.uiDC.whiteShader ); +} + +void _UI_DrawTopBottom(float x, float y, float w, float h, float size) { + UI_AdjustFrom640( &x, &y, &w, &h ); + size *= uiInfo.uiDC.yscale; + trap_R_DrawStretchPic( x, y, w, size, 0, 0, 0, 0, uiInfo.uiDC.whiteShader ); + trap_R_DrawStretchPic( x, y + h - size, w, size, 0, 0, 0, 0, uiInfo.uiDC.whiteShader ); +} +/* +================ +UI_DrawRect + +Coordinates are 640*480 virtual values +================= +*/ +void _UI_DrawRect( float x, float y, float width, float height, float size, const float *color ) { + trap_R_SetColor( color ); + + _UI_DrawTopBottom(x, y, width, height, size); + _UI_DrawSides(x, y, width, height, size); + + trap_R_SetColor( NULL ); +} + + + + +int Text_Width(const char *text, float scale, int limit) { + int count,len; + float out; + glyphInfo_t *glyph; + float useScale; +// TTimo: FIXME: use const unsigned char to avoid getting a warning in linux debug (.so) when using glyph = &font->glyphs[*s]; +// but use const char to build with lcc.. +// const unsigned char *s = text; // bk001206 - unsigned + const char *s = text; + fontInfo_t *font = &uiInfo.uiDC.Assets.textFont; + if (scale <= ui_smallFont.value) { + font = &uiInfo.uiDC.Assets.smallFont; + } else if (scale >= ui_bigFont.value) { + font = &uiInfo.uiDC.Assets.bigFont; + } + useScale = scale * font->glyphScale; + out = 0; + if (text) { + len = strlen(text); + if (limit > 0 && len > limit) { + len = limit; + } + count = 0; + while (s && *s && count < len) { + if ( Q_IsColorString(s) ) { + s += 2; + continue; + } else { + glyph = &font->glyphs[(int)*s]; // TTimo: FIXME: getting nasty warnings without the cast, hopefully this doesn't break the VM build + out += glyph->xSkip; + s++; + count++; + } + } + } + return out * useScale; +} + +int Text_Height(const char *text, float scale, int limit) { + int len, count; + float max; + glyphInfo_t *glyph; + float useScale; +// TTimo: FIXME +// const unsigned char *s = text; // bk001206 - unsigned + const char *s = text; // bk001206 - unsigned + fontInfo_t *font = &uiInfo.uiDC.Assets.textFont; + if (scale <= ui_smallFont.value) { + font = &uiInfo.uiDC.Assets.smallFont; + } else if (scale >= ui_bigFont.value) { + font = &uiInfo.uiDC.Assets.bigFont; + } + useScale = scale * font->glyphScale; + max = 0; + if (text) { + len = strlen(text); + if (limit > 0 && len > limit) { + len = limit; + } + count = 0; + while (s && *s && count < len) { + if ( Q_IsColorString(s) ) { + s += 2; + continue; + } else { + glyph = &font->glyphs[(int)*s]; // TTimo: FIXME: getting nasty warnings without the cast, hopefully this doesn't break the VM build + if (max < glyph->height) { + max = glyph->height; + } + s++; + count++; + } + } + } + return max * useScale; +} + +void Text_PaintChar(float x, float y, float width, float height, float scale, float s, float t, float s2, float t2, qhandle_t hShader) { + float w, h; + w = width * scale; + h = height * scale; + UI_AdjustFrom640( &x, &y, &w, &h ); + trap_R_DrawStretchPic( x, y, w, h, s, t, s2, t2, hShader ); +} + +void Text_Paint(float x, float y, float scale, vec4_t color, const char *text, float adjust, int limit, int style) { + int len, count; + vec4_t newColor; + glyphInfo_t *glyph; + float useScale; + fontInfo_t *font = &uiInfo.uiDC.Assets.textFont; + if (scale <= ui_smallFont.value) { + font = &uiInfo.uiDC.Assets.smallFont; + } else if (scale >= ui_bigFont.value) { + font = &uiInfo.uiDC.Assets.bigFont; + } + useScale = scale * font->glyphScale; + if (text) { +// TTimo: FIXME +// const unsigned char *s = text; // bk001206 - unsigned + const char *s = text; // bk001206 - unsigned + trap_R_SetColor( color ); + memcpy(&newColor[0], &color[0], sizeof(vec4_t)); + len = strlen(text); + if (limit > 0 && len > limit) { + len = limit; + } + count = 0; + while (s && *s && count < len) { + glyph = &font->glyphs[(int)*s]; // TTimo: FIXME: getting nasty warnings without the cast, hopefully this doesn't break the VM build + //int yadj = Assets.textFont.glyphs[text[i]].bottom + Assets.textFont.glyphs[text[i]].top; + //float yadj = scale * (Assets.textFont.glyphs[text[i]].imageHeight - Assets.textFont.glyphs[text[i]].height); + if ( Q_IsColorString( s ) ) { + memcpy( newColor, g_color_table[ColorIndex(*(s+1))], sizeof( newColor ) ); + newColor[3] = color[3]; + trap_R_SetColor( newColor ); + s += 2; + continue; + } else { + float yadj = useScale * glyph->top; + if (style == ITEM_TEXTSTYLE_SHADOWED || style == ITEM_TEXTSTYLE_SHADOWEDMORE) { + int ofs = style == ITEM_TEXTSTYLE_SHADOWED ? 1 : 2; + colorBlack[3] = newColor[3]; + trap_R_SetColor( colorBlack ); + Text_PaintChar(x + ofs, y - yadj + ofs, + glyph->imageWidth, + glyph->imageHeight, + useScale, + glyph->s, + glyph->t, + glyph->s2, + glyph->t2, + glyph->glyph); + trap_R_SetColor( newColor ); + colorBlack[3] = 1.0; + } + Text_PaintChar(x, y - yadj, + glyph->imageWidth, + glyph->imageHeight, + useScale, + glyph->s, + glyph->t, + glyph->s2, + glyph->t2, + glyph->glyph); + + x += (glyph->xSkip * useScale) + adjust; + s++; + count++; + } + } + trap_R_SetColor( NULL ); + } +} + +void Text_PaintWithCursor(float x, float y, float scale, vec4_t color, const char *text, int cursorPos, char cursor, int limit, int style) { + int len, count; + vec4_t newColor; + glyphInfo_t *glyph, *glyph2; + float yadj; + float useScale; + fontInfo_t *font = &uiInfo.uiDC.Assets.textFont; + if (scale <= ui_smallFont.value) { + font = &uiInfo.uiDC.Assets.smallFont; + } else if (scale >= ui_bigFont.value) { + font = &uiInfo.uiDC.Assets.bigFont; + } + useScale = scale * font->glyphScale; + if (text) { +// TTimo: FIXME +// const unsigned char *s = text; // bk001206 - unsigned + const char *s = text; // bk001206 - unsigned + trap_R_SetColor( color ); + memcpy(&newColor[0], &color[0], sizeof(vec4_t)); + len = strlen(text); + if (limit > 0 && len > limit) { + len = limit; + } + count = 0; + glyph2 = &font->glyphs[ (int) cursor]; // bk001206 - possible signed char + while (s && *s && count < len) { + glyph = &font->glyphs[(int)*s]; // TTimo: FIXME: getting nasty warnings without the cast, hopefully this doesn't break the VM build + //int yadj = Assets.textFont.glyphs[text[i]].bottom + Assets.textFont.glyphs[text[i]].top; + //float yadj = scale * (Assets.textFont.glyphs[text[i]].imageHeight - Assets.textFont.glyphs[text[i]].height); + if ( Q_IsColorString( s ) ) { + memcpy( newColor, g_color_table[ColorIndex(*(s+1))], sizeof( newColor ) ); + newColor[3] = color[3]; + trap_R_SetColor( newColor ); + s += 2; + continue; + } else { + yadj = useScale * glyph->top; + if (style == ITEM_TEXTSTYLE_SHADOWED || style == ITEM_TEXTSTYLE_SHADOWEDMORE) { + int ofs = style == ITEM_TEXTSTYLE_SHADOWED ? 1 : 2; + colorBlack[3] = newColor[3]; + trap_R_SetColor( colorBlack ); + Text_PaintChar(x + ofs, y - yadj + ofs, + glyph->imageWidth, + glyph->imageHeight, + useScale, + glyph->s, + glyph->t, + glyph->s2, + glyph->t2, + glyph->glyph); + colorBlack[3] = 1.0; + trap_R_SetColor( newColor ); + } + Text_PaintChar(x, y - yadj, + glyph->imageWidth, + glyph->imageHeight, + useScale, + glyph->s, + glyph->t, + glyph->s2, + glyph->t2, + glyph->glyph); + + // CG_DrawPic(x, y - yadj, scale * uiDC.Assets.textFont.glyphs[text[i]].imageWidth, scale * uiDC.Assets.textFont.glyphs[text[i]].imageHeight, uiDC.Assets.textFont.glyphs[text[i]].glyph); + yadj = useScale * glyph2->top; + if (count == cursorPos && !((uiInfo.uiDC.realTime/BLINK_DIVISOR) & 1)) { + Text_PaintChar(x, y - yadj, + glyph2->imageWidth, + glyph2->imageHeight, + useScale, + glyph2->s, + glyph2->t, + glyph2->s2, + glyph2->t2, + glyph2->glyph); + } + + x += (glyph->xSkip * useScale); + s++; + count++; + } + } + // need to paint cursor at end of text + if (cursorPos == len && !((uiInfo.uiDC.realTime/BLINK_DIVISOR) & 1)) { + yadj = useScale * glyph2->top; + Text_PaintChar(x, y - yadj, + glyph2->imageWidth, + glyph2->imageHeight, + useScale, + glyph2->s, + glyph2->t, + glyph2->s2, + glyph2->t2, + glyph2->glyph); + + } + + + trap_R_SetColor( NULL ); + } +} + + +static void Text_Paint_Limit(float *maxX, float x, float y, float scale, vec4_t color, const char* text, float adjust, int limit) { + int len, count; + vec4_t newColor; + glyphInfo_t *glyph; + if (text) { +// TTimo: FIXME +// const unsigned char *s = text; // bk001206 - unsigned + const char *s = text; // bk001206 - unsigned + float max = *maxX; + float useScale; + fontInfo_t *font = &uiInfo.uiDC.Assets.textFont; + if (scale <= ui_smallFont.value) { + font = &uiInfo.uiDC.Assets.smallFont; + } else if (scale > ui_bigFont.value) { + font = &uiInfo.uiDC.Assets.bigFont; + } + useScale = scale * font->glyphScale; + trap_R_SetColor( color ); + len = strlen(text); + if (limit > 0 && len > limit) { + len = limit; + } + count = 0; + while (s && *s && count < len) { + glyph = &font->glyphs[(int)*s]; // TTimo: FIXME: getting nasty warnings without the cast, hopefully this doesn't break the VM build + if ( Q_IsColorString( s ) ) { + memcpy( newColor, g_color_table[ColorIndex(*(s+1))], sizeof( newColor ) ); + newColor[3] = color[3]; + trap_R_SetColor( newColor ); + s += 2; + continue; + } else { + float yadj = useScale * glyph->top; + if (Text_Width(s, useScale, 1) + x > max) { + *maxX = 0; + break; + } + Text_PaintChar(x, y - yadj, + glyph->imageWidth, + glyph->imageHeight, + useScale, + glyph->s, + glyph->t, + glyph->s2, + glyph->t2, + glyph->glyph); + x += (glyph->xSkip * useScale) + adjust; + *maxX = x; + count++; + s++; + } + } + trap_R_SetColor( NULL ); + } + +} + + +void UI_ShowPostGame(qboolean newHigh) { + trap_Cvar_Set ("cg_cameraOrbit", "0"); + trap_Cvar_Set("cg_thirdPerson", "0"); + trap_Cvar_Set( "sv_killserver", "1" ); + uiInfo.soundHighScore = newHigh; + _UI_SetActiveMenu(UIMENU_POSTGAME); +} +/* +================= +_UI_Refresh +================= +*/ + +void UI_DrawCenteredPic(qhandle_t image, int w, int h) { + int x, y; + x = (SCREEN_WIDTH - w) / 2; + y = (SCREEN_HEIGHT - h) / 2; + UI_DrawHandlePic(x, y, w, h, image); +} + +int frameCount = 0; +int startTime; + +#define UI_FPS_FRAMES 4 +void _UI_Refresh( int realtime ) +{ + static int index; + static int previousTimes[UI_FPS_FRAMES]; + + //if ( !( trap_Key_GetCatcher() & KEYCATCH_UI ) ) { + // return; + //} + + uiInfo.uiDC.frameTime = realtime - uiInfo.uiDC.realTime; + uiInfo.uiDC.realTime = realtime; + + previousTimes[index % UI_FPS_FRAMES] = uiInfo.uiDC.frameTime; + index++; + if ( index > UI_FPS_FRAMES ) { + int i, total; + // average multiple frames together to smooth changes out a bit + total = 0; + for ( i = 0 ; i < UI_FPS_FRAMES ; i++ ) { + total += previousTimes[i]; + } + if ( !total ) { + total = 1; + } + uiInfo.uiDC.FPS = 1000 * UI_FPS_FRAMES / total; + } + + + + UI_UpdateCvars(); + + if (Menu_Count() > 0) { + // paint all the menus + Menu_PaintAll(); + // refresh server browser list + UI_DoServerRefresh(); + // refresh server status + UI_BuildServerStatus(qfalse); + // refresh find player list + UI_BuildFindPlayerList(qfalse); + } + + // draw cursor + UI_SetColor( NULL ); + if (Menu_Count() > 0) { + UI_DrawHandlePic( uiInfo.uiDC.cursorx-16, uiInfo.uiDC.cursory-16, 32, 32, uiInfo.uiDC.Assets.cursor); + } + +#ifndef NDEBUG + if (uiInfo.uiDC.debug) + { + // cursor coordinates + //FIXME + //UI_DrawString( 0, 0, va("(%d,%d)",uis.cursorx,uis.cursory), UI_LEFT|UI_SMALLFONT, colorRed ); + } +#endif + +} + +/* +================= +_UI_Shutdown +================= +*/ +void _UI_Shutdown( void ) { + trap_LAN_SaveCachedServers(); +} + +char *defaultMenu = NULL; + +char *GetMenuBuffer(const char *filename) { + int len; + fileHandle_t f; + static char buf[MAX_MENUFILE]; + + len = trap_FS_FOpenFile( filename, &f, FS_READ ); + if ( !f ) { + trap_Print( va( S_COLOR_RED "menu file not found: %s, using default\n", filename ) ); + return defaultMenu; + } + if ( len >= MAX_MENUFILE ) { + trap_Print( va( S_COLOR_RED "menu file too large: %s is %i, max allowed is %i", filename, len, MAX_MENUFILE ) ); + trap_FS_FCloseFile( f ); + return defaultMenu; + } + + trap_FS_Read( buf, len, f ); + buf[len] = 0; + trap_FS_FCloseFile( f ); + //COM_Compress(buf); + return buf; + +} + +qboolean Asset_Parse(int handle) { + pc_token_t token; + const char *tempStr; + + if (!trap_PC_ReadToken(handle, &token)) + return qfalse; + if (Q_stricmp(token.string, "{") != 0) { + return qfalse; + } + + while ( 1 ) { + + memset(&token, 0, sizeof(pc_token_t)); + + if (!trap_PC_ReadToken(handle, &token)) + return qfalse; + + if (Q_stricmp(token.string, "}") == 0) { + return qtrue; + } + + // font + if (Q_stricmp(token.string, "font") == 0) { + int pointSize; + if (!PC_String_Parse(handle, &tempStr) || !PC_Int_Parse(handle,&pointSize)) { + return qfalse; + } + trap_R_RegisterFont(tempStr, pointSize, &uiInfo.uiDC.Assets.textFont); + uiInfo.uiDC.Assets.fontRegistered = qtrue; + continue; + } + + if (Q_stricmp(token.string, "smallFont") == 0) { + int pointSize; + if (!PC_String_Parse(handle, &tempStr) || !PC_Int_Parse(handle,&pointSize)) { + return qfalse; + } + trap_R_RegisterFont(tempStr, pointSize, &uiInfo.uiDC.Assets.smallFont); + continue; + } + + if (Q_stricmp(token.string, "bigFont") == 0) { + int pointSize; + if (!PC_String_Parse(handle, &tempStr) || !PC_Int_Parse(handle,&pointSize)) { + return qfalse; + } + trap_R_RegisterFont(tempStr, pointSize, &uiInfo.uiDC.Assets.bigFont); + continue; + } + + + // gradientbar + if (Q_stricmp(token.string, "gradientbar") == 0) { + if (!PC_String_Parse(handle, &tempStr)) { + return qfalse; + } + uiInfo.uiDC.Assets.gradientBar = trap_R_RegisterShaderNoMip(tempStr); + continue; + } + + // enterMenuSound + if (Q_stricmp(token.string, "menuEnterSound") == 0) { + if (!PC_String_Parse(handle, &tempStr)) { + return qfalse; + } + uiInfo.uiDC.Assets.menuEnterSound = trap_S_RegisterSound( tempStr, qfalse ); + continue; + } + + // exitMenuSound + if (Q_stricmp(token.string, "menuExitSound") == 0) { + if (!PC_String_Parse(handle, &tempStr)) { + return qfalse; + } + uiInfo.uiDC.Assets.menuExitSound = trap_S_RegisterSound( tempStr, qfalse ); + continue; + } + + // itemFocusSound + if (Q_stricmp(token.string, "itemFocusSound") == 0) { + if (!PC_String_Parse(handle, &tempStr)) { + return qfalse; + } + uiInfo.uiDC.Assets.itemFocusSound = trap_S_RegisterSound( tempStr, qfalse ); + continue; + } + + // menuBuzzSound + if (Q_stricmp(token.string, "menuBuzzSound") == 0) { + if (!PC_String_Parse(handle, &tempStr)) { + return qfalse; + } + uiInfo.uiDC.Assets.menuBuzzSound = trap_S_RegisterSound( tempStr, qfalse ); + continue; + } + + if (Q_stricmp(token.string, "cursor") == 0) { + if (!PC_String_Parse(handle, &uiInfo.uiDC.Assets.cursorStr)) { + return qfalse; + } + uiInfo.uiDC.Assets.cursor = trap_R_RegisterShaderNoMip( uiInfo.uiDC.Assets.cursorStr); + continue; + } + + if (Q_stricmp(token.string, "fadeClamp") == 0) { + if (!PC_Float_Parse(handle, &uiInfo.uiDC.Assets.fadeClamp)) { + return qfalse; + } + continue; + } + + if (Q_stricmp(token.string, "fadeCycle") == 0) { + if (!PC_Int_Parse(handle, &uiInfo.uiDC.Assets.fadeCycle)) { + return qfalse; + } + continue; + } + + if (Q_stricmp(token.string, "fadeAmount") == 0) { + if (!PC_Float_Parse(handle, &uiInfo.uiDC.Assets.fadeAmount)) { + return qfalse; + } + continue; + } + + if (Q_stricmp(token.string, "shadowX") == 0) { + if (!PC_Float_Parse(handle, &uiInfo.uiDC.Assets.shadowX)) { + return qfalse; + } + continue; + } + + if (Q_stricmp(token.string, "shadowY") == 0) { + if (!PC_Float_Parse(handle, &uiInfo.uiDC.Assets.shadowY)) { + return qfalse; + } + continue; + } + + if (Q_stricmp(token.string, "shadowColor") == 0) { + if (!PC_Color_Parse(handle, &uiInfo.uiDC.Assets.shadowColor)) { + return qfalse; + } + uiInfo.uiDC.Assets.shadowFadeClamp = uiInfo.uiDC.Assets.shadowColor[3]; + continue; + } + + } + return qfalse; +} + +void Font_Report() { + int i; + Com_Printf("Font Info\n"); + Com_Printf("=========\n"); + for ( i = 32; i < 96; i++) { + Com_Printf("Glyph handle %i: %i\n", i, uiInfo.uiDC.Assets.textFont.glyphs[i].glyph); + } +} + +void UI_Report() { + String_Report(); + //Font_Report(); + +} + +void UI_ParseMenu(const char *menuFile) { + int handle; + pc_token_t token; + + Com_Printf("Parsing menu file:%s\n", menuFile); + + handle = trap_PC_LoadSource(menuFile); + if (!handle) { + return; + } + + while ( 1 ) { + memset(&token, 0, sizeof(pc_token_t)); + if (!trap_PC_ReadToken( handle, &token )) { + break; + } + + //if ( Q_stricmp( token, "{" ) ) { + // Com_Printf( "Missing { in menu file\n" ); + // break; + //} + + //if ( menuCount == MAX_MENUS ) { + // Com_Printf( "Too many menus!\n" ); + // break; + //} + + if ( token.string[0] == '}' ) { + break; + } + + if (Q_stricmp(token.string, "assetGlobalDef") == 0) { + if (Asset_Parse(handle)) { + continue; + } else { + break; + } + } + + if (Q_stricmp(token.string, "menudef") == 0) { + // start a new menu + Menu_New(handle); + } + } + trap_PC_FreeSource(handle); +} + +qboolean Load_Menu(int handle) { + pc_token_t token; + + if (!trap_PC_ReadToken(handle, &token)) + return qfalse; + if (token.string[0] != '{') { + return qfalse; + } + + while ( 1 ) { + + if (!trap_PC_ReadToken(handle, &token)) + return qfalse; + + if ( token.string[0] == 0 ) { + return qfalse; + } + + if ( token.string[0] == '}' ) { + return qtrue; + } + + UI_ParseMenu(token.string); + } + return qfalse; +} + +void UI_LoadMenus(const char *menuFile, qboolean reset) { + pc_token_t token; + int handle; + int start; + + start = trap_Milliseconds(); + + handle = trap_PC_LoadSource( menuFile ); + if (!handle) { + trap_Error( va( S_COLOR_YELLOW "menu file not found: %s, using default\n", menuFile ) ); + handle = trap_PC_LoadSource( "ui/menus.txt" ); + if (!handle) { + trap_Error( va( S_COLOR_RED "default menu file not found: ui/menus.txt, unable to continue!\n", menuFile ) ); + } + } + + ui_new.integer = 1; + + if (reset) { + Menu_Reset(); + } + + while ( 1 ) { + if (!trap_PC_ReadToken(handle, &token)) + break; + if( token.string[0] == 0 || token.string[0] == '}') { + break; + } + + if ( token.string[0] == '}' ) { + break; + } + + if (Q_stricmp(token.string, "loadmenu") == 0) { + if (Load_Menu(handle)) { + continue; + } else { + break; + } + } + } + + Com_Printf("UI menu load time = %d milli seconds\n", trap_Milliseconds() - start); + + trap_PC_FreeSource( handle ); +} + +void UI_Load() { + char lastName[1024]; + menuDef_t *menu = Menu_GetFocused(); + char *menuSet = UI_Cvar_VariableString("ui_menuFiles"); + if (menu && menu->window.name) { + strcpy(lastName, menu->window.name); + } + if (menuSet == NULL || menuSet[0] == '\0') { + menuSet = "ui/menus.txt"; + } + + String_Init(); + +#ifdef PRE_RELEASE_TADEMO + UI_ParseGameInfo("demogameinfo.txt"); +#else + UI_ParseGameInfo("gameinfo.txt"); + UI_LoadArenas(); +#endif + + UI_LoadMenus(menuSet, qtrue); + Menus_CloseAll(); + Menus_ActivateByName(lastName); + +} + +static const char *handicapValues[] = {"None","95","90","85","80","75","70","65","60","55","50","45","40","35","30","25","20","15","10","5",NULL}; +#ifndef MISSIONPACK // bk001206 +static int numHandicaps = sizeof(handicapValues) / sizeof(const char*); +#endif + +static void UI_DrawHandicap(rectDef_t *rect, float scale, vec4_t color, int textStyle) { + int i, h; + + h = Com_Clamp( 5, 100, trap_Cvar_VariableValue("handicap") ); + i = 20 - h / 5; + + Text_Paint(rect->x, rect->y, scale, color, handicapValues[i], 0, 0, textStyle); +} + +static void UI_DrawClanName(rectDef_t *rect, float scale, vec4_t color, int textStyle) { + Text_Paint(rect->x, rect->y, scale, color, UI_Cvar_VariableString("ui_teamName"), 0, 0, textStyle); +} + + +static void UI_SetCapFragLimits(qboolean uiVars) { + int cap = 5; + int frag = 10; + if (uiInfo.gameTypes[ui_gameType.integer].gtEnum == GT_OBELISK) { + cap = 4; + } else if (uiInfo.gameTypes[ui_gameType.integer].gtEnum == GT_HARVESTER) { + cap = 15; + } + if (uiVars) { + trap_Cvar_Set("ui_captureLimit", va("%d", cap)); + trap_Cvar_Set("ui_fragLimit", va("%d", frag)); + } else { + trap_Cvar_Set("capturelimit", va("%d", cap)); + trap_Cvar_Set("fraglimit", va("%d", frag)); + } +} +// ui_gameType assumes gametype 0 is -1 ALL and will not show +static void UI_DrawGameType(rectDef_t *rect, float scale, vec4_t color, int textStyle) { + Text_Paint(rect->x, rect->y, scale, color, uiInfo.gameTypes[ui_gameType.integer].gameType, 0, 0, textStyle); +} + +static void UI_DrawNetGameType(rectDef_t *rect, float scale, vec4_t color, int textStyle) { + if (ui_netGameType.integer < 0 || ui_netGameType.integer > uiInfo.numGameTypes) { + trap_Cvar_Set("ui_netGameType", "0"); + trap_Cvar_Set("ui_actualNetGameType", "0"); + } + Text_Paint(rect->x, rect->y, scale, color, uiInfo.gameTypes[ui_netGameType.integer].gameType , 0, 0, textStyle); +} + +static void UI_DrawJoinGameType(rectDef_t *rect, float scale, vec4_t color, int textStyle) { + if (ui_joinGameType.integer < 0 || ui_joinGameType.integer > uiInfo.numJoinGameTypes) { + trap_Cvar_Set("ui_joinGameType", "0"); + } + Text_Paint(rect->x, rect->y, scale, color, uiInfo.joinGameTypes[ui_joinGameType.integer].gameType , 0, 0, textStyle); +} + + + +static int UI_TeamIndexFromName(const char *name) { + int i; + + if (name && *name) { + for (i = 0; i < uiInfo.teamCount; i++) { + if (Q_stricmp(name, uiInfo.teamList[i].teamName) == 0) { + return i; + } + } + } + + return 0; + +} + +static void UI_DrawClanLogo(rectDef_t *rect, float scale, vec4_t color) { + int i; + i = UI_TeamIndexFromName(UI_Cvar_VariableString("ui_teamName")); + if (i >= 0 && i < uiInfo.teamCount) { + trap_R_SetColor( color ); + + if (uiInfo.teamList[i].teamIcon == -1) { + uiInfo.teamList[i].teamIcon = trap_R_RegisterShaderNoMip(uiInfo.teamList[i].imageName); + uiInfo.teamList[i].teamIcon_Metal = trap_R_RegisterShaderNoMip(va("%s_metal",uiInfo.teamList[i].imageName)); + uiInfo.teamList[i].teamIcon_Name = trap_R_RegisterShaderNoMip(va("%s_name", uiInfo.teamList[i].imageName)); + } + + UI_DrawHandlePic( rect->x, rect->y, rect->w, rect->h, uiInfo.teamList[i].teamIcon); + trap_R_SetColor(NULL); + } +} + +static void UI_DrawClanCinematic(rectDef_t *rect, float scale, vec4_t color) { + int i; + i = UI_TeamIndexFromName(UI_Cvar_VariableString("ui_teamName")); + if (i >= 0 && i < uiInfo.teamCount) { + + if (uiInfo.teamList[i].cinematic >= -2) { + if (uiInfo.teamList[i].cinematic == -1) { + uiInfo.teamList[i].cinematic = trap_CIN_PlayCinematic(va("%s.roq", uiInfo.teamList[i].imageName), 0, 0, 0, 0, (CIN_loop | CIN_silent) ); + } + if (uiInfo.teamList[i].cinematic >= 0) { + trap_CIN_RunCinematic(uiInfo.teamList[i].cinematic); + trap_CIN_SetExtents(uiInfo.teamList[i].cinematic, rect->x, rect->y, rect->w, rect->h); + trap_CIN_DrawCinematic(uiInfo.teamList[i].cinematic); + } else { + trap_R_SetColor( color ); + UI_DrawHandlePic( rect->x, rect->y, rect->w, rect->h, uiInfo.teamList[i].teamIcon_Metal); + trap_R_SetColor(NULL); + uiInfo.teamList[i].cinematic = -2; + } + } else { + trap_R_SetColor( color ); + UI_DrawHandlePic( rect->x, rect->y, rect->w, rect->h, uiInfo.teamList[i].teamIcon); + trap_R_SetColor(NULL); + } + } + +} + +static void UI_DrawPreviewCinematic(rectDef_t *rect, float scale, vec4_t color) { + if (uiInfo.previewMovie > -2) { + uiInfo.previewMovie = trap_CIN_PlayCinematic(va("%s.roq", uiInfo.movieList[uiInfo.movieIndex]), 0, 0, 0, 0, (CIN_loop | CIN_silent) ); + if (uiInfo.previewMovie >= 0) { + trap_CIN_RunCinematic(uiInfo.previewMovie); + trap_CIN_SetExtents(uiInfo.previewMovie, rect->x, rect->y, rect->w, rect->h); + trap_CIN_DrawCinematic(uiInfo.previewMovie); + } else { + uiInfo.previewMovie = -2; + } + } + +} + + + +static void UI_DrawSkill(rectDef_t *rect, float scale, vec4_t color, int textStyle) { + int i; + i = trap_Cvar_VariableValue( "g_spSkill" ); + if (i < 1 || i > numSkillLevels) { + i = 1; + } + Text_Paint(rect->x, rect->y, scale, color, skillLevels[i-1],0, 0, textStyle); +} + + +static void UI_DrawTeamName(rectDef_t *rect, float scale, vec4_t color, qboolean blue, int textStyle) { + int i; + i = UI_TeamIndexFromName(UI_Cvar_VariableString((blue) ? "ui_blueTeam" : "ui_redTeam")); + if (i >= 0 && i < uiInfo.teamCount) { + Text_Paint(rect->x, rect->y, scale, color, va("%s: %s", (blue) ? "Blue" : "Red", uiInfo.teamList[i].teamName),0, 0, textStyle); + } +} + +static void UI_DrawTeamMember(rectDef_t *rect, float scale, vec4_t color, qboolean blue, int num, int textStyle) { + // 0 - None + // 1 - Human + // 2..NumCharacters - Bot + int value = trap_Cvar_VariableValue(va(blue ? "ui_blueteam%i" : "ui_redteam%i", num)); + const char *text; + if (value <= 0) { + text = "Closed"; + } else if (value == 1) { + text = "Human"; + } else { + value -= 2; + + if (ui_actualNetGameType.integer >= GT_TEAM) { + if (value >= uiInfo.characterCount) { + value = 0; + } + text = uiInfo.characterList[value].name; + } else { + if (value >= UI_GetNumBots()) { + value = 0; + } + text = UI_GetBotNameByNumber(value); + } + } + Text_Paint(rect->x, rect->y, scale, color, text, 0, 0, textStyle); +} + +static void UI_DrawEffects(rectDef_t *rect, float scale, vec4_t color) { + UI_DrawHandlePic( rect->x, rect->y - 14, 128, 8, uiInfo.uiDC.Assets.fxBasePic ); + UI_DrawHandlePic( rect->x + uiInfo.effectsColor * 16 + 8, rect->y - 16, 16, 12, uiInfo.uiDC.Assets.fxPic[uiInfo.effectsColor] ); +} + +static void UI_DrawMapPreview(rectDef_t *rect, float scale, vec4_t color, qboolean net) { + int map = (net) ? ui_currentNetMap.integer : ui_currentMap.integer; + if (map < 0 || map > uiInfo.mapCount) { + if (net) { + ui_currentNetMap.integer = 0; + trap_Cvar_Set("ui_currentNetMap", "0"); + } else { + ui_currentMap.integer = 0; + trap_Cvar_Set("ui_currentMap", "0"); + } + map = 0; + } + + if (uiInfo.mapList[map].levelShot == -1) { + uiInfo.mapList[map].levelShot = trap_R_RegisterShaderNoMip(uiInfo.mapList[map].imageName); + } + + if (uiInfo.mapList[map].levelShot > 0) { + UI_DrawHandlePic( rect->x, rect->y, rect->w, rect->h, uiInfo.mapList[map].levelShot); + } else { + UI_DrawHandlePic( rect->x, rect->y, rect->w, rect->h, trap_R_RegisterShaderNoMip("menu/art/unknownmap")); + } +} + + +static void UI_DrawMapTimeToBeat(rectDef_t *rect, float scale, vec4_t color, int textStyle) { + int minutes, seconds, time; + if (ui_currentMap.integer < 0 || ui_currentMap.integer > uiInfo.mapCount) { + ui_currentMap.integer = 0; + trap_Cvar_Set("ui_currentMap", "0"); + } + + time = uiInfo.mapList[ui_currentMap.integer].timeToBeat[uiInfo.gameTypes[ui_gameType.integer].gtEnum]; + + minutes = time / 60; + seconds = time % 60; + + Text_Paint(rect->x, rect->y, scale, color, va("%02i:%02i", minutes, seconds), 0, 0, textStyle); +} + + + +static void UI_DrawMapCinematic(rectDef_t *rect, float scale, vec4_t color, qboolean net) { + + int map = (net) ? ui_currentNetMap.integer : ui_currentMap.integer; + if (map < 0 || map > uiInfo.mapCount) { + if (net) { + ui_currentNetMap.integer = 0; + trap_Cvar_Set("ui_currentNetMap", "0"); + } else { + ui_currentMap.integer = 0; + trap_Cvar_Set("ui_currentMap", "0"); + } + map = 0; + } + + if (uiInfo.mapList[map].cinematic >= -1) { + if (uiInfo.mapList[map].cinematic == -1) { + uiInfo.mapList[map].cinematic = trap_CIN_PlayCinematic(va("%s.roq", uiInfo.mapList[map].mapLoadName), 0, 0, 0, 0, (CIN_loop | CIN_silent) ); + } + if (uiInfo.mapList[map].cinematic >= 0) { + trap_CIN_RunCinematic(uiInfo.mapList[map].cinematic); + trap_CIN_SetExtents(uiInfo.mapList[map].cinematic, rect->x, rect->y, rect->w, rect->h); + trap_CIN_DrawCinematic(uiInfo.mapList[map].cinematic); + } else { + uiInfo.mapList[map].cinematic = -2; + } + } else { + UI_DrawMapPreview(rect, scale, color, net); + } +} + + + +static qboolean updateModel = qtrue; +static qboolean q3Model = qfalse; + +static void UI_DrawPlayerModel(rectDef_t *rect) { + static playerInfo_t info; + char model[MAX_QPATH]; + char team[256]; + char head[256]; + vec3_t viewangles; + vec3_t moveangles; + + if (trap_Cvar_VariableValue("ui_Q3Model")) { + strcpy(model, UI_Cvar_VariableString("model")); + strcpy(head, UI_Cvar_VariableString("headmodel")); + if (!q3Model) { + q3Model = qtrue; + updateModel = qtrue; + } + team[0] = '\0'; + } else { + + strcpy(team, UI_Cvar_VariableString("ui_teamName")); + strcpy(model, UI_Cvar_VariableString("team_model")); + strcpy(head, UI_Cvar_VariableString("team_headmodel")); + if (q3Model) { + q3Model = qfalse; + updateModel = qtrue; + } + } + if (updateModel) { + memset( &info, 0, sizeof(playerInfo_t) ); + viewangles[YAW] = 180 - 10; + viewangles[PITCH] = 0; + viewangles[ROLL] = 0; + VectorClear( moveangles ); + UI_PlayerInfo_SetModel( &info, model, head, team); + //Blaze: Changed WP_MACHINEGUN to WP_PISTOL + UI_PlayerInfo_SetInfo( &info, LEGS_IDLE, TORSO_STAND, viewangles, vec3_origin, WP_PISTOL, qfalse ); +// UI_RegisterClientModelname( &info, model, head, team); + updateModel = qfalse; + } + + UI_DrawPlayer( rect->x, rect->y, rect->w, rect->h, &info, uiInfo.uiDC.realTime / 2); + +} + +static void UI_DrawNetSource(rectDef_t *rect, float scale, vec4_t color, int textStyle) { + if (ui_netSource.integer < 0 || ui_netSource.integer > uiInfo.numGameTypes) { + ui_netSource.integer = 0; + } + Text_Paint(rect->x, rect->y, scale, color, va("Source: %s", netSources[ui_netSource.integer]), 0, 0, textStyle); +} + +static void UI_DrawNetMapPreview(rectDef_t *rect, float scale, vec4_t color) { + + if (uiInfo.serverStatus.currentServerPreview > 0) { + UI_DrawHandlePic( rect->x, rect->y, rect->w, rect->h, uiInfo.serverStatus.currentServerPreview); + } else { + UI_DrawHandlePic( rect->x, rect->y, rect->w, rect->h, trap_R_RegisterShaderNoMip("menu/art/unknownmap")); + } +} + +static void UI_DrawNetMapCinematic(rectDef_t *rect, float scale, vec4_t color) { + if (ui_currentNetMap.integer < 0 || ui_currentNetMap.integer > uiInfo.mapCount) { + ui_currentNetMap.integer = 0; + trap_Cvar_Set("ui_currentNetMap", "0"); + } + + if (uiInfo.serverStatus.currentServerCinematic >= 0) { + trap_CIN_RunCinematic(uiInfo.serverStatus.currentServerCinematic); + trap_CIN_SetExtents(uiInfo.serverStatus.currentServerCinematic, rect->x, rect->y, rect->w, rect->h); + trap_CIN_DrawCinematic(uiInfo.serverStatus.currentServerCinematic); + } else { + UI_DrawNetMapPreview(rect, scale, color); + } +} + + + +static void UI_DrawNetFilter(rectDef_t *rect, float scale, vec4_t color, int textStyle) { + if (ui_serverFilterType.integer < 0 || ui_serverFilterType.integer > numServerFilters) { + ui_serverFilterType.integer = 0; + } + Text_Paint(rect->x, rect->y, scale, color, va("Filter: %s", serverFilters[ui_serverFilterType.integer].description), 0, 0, textStyle); +} + + +static void UI_DrawTier(rectDef_t *rect, float scale, vec4_t color, int textStyle) { + int i; + i = trap_Cvar_VariableValue( "ui_currentTier" ); + if (i < 0 || i >= uiInfo.tierCount) { + i = 0; + } + Text_Paint(rect->x, rect->y, scale, color, va("Tier: %s", uiInfo.tierList[i].tierName),0, 0, textStyle); +} + +static void UI_DrawTierMap(rectDef_t *rect, int index) { + int i; + i = trap_Cvar_VariableValue( "ui_currentTier" ); + if (i < 0 || i >= uiInfo.tierCount) { + i = 0; + } + + if (uiInfo.tierList[i].mapHandles[index] == -1) { + uiInfo.tierList[i].mapHandles[index] = trap_R_RegisterShaderNoMip(va("levelshots/%s", uiInfo.tierList[i].maps[index])); + } + + UI_DrawHandlePic( rect->x, rect->y, rect->w, rect->h, uiInfo.tierList[i].mapHandles[index]); +} + +static const char *UI_EnglishMapName(const char *map) { + int i; + for (i = 0; i < uiInfo.mapCount; i++) { + if (Q_stricmp(map, uiInfo.mapList[i].mapLoadName) == 0) { + return uiInfo.mapList[i].mapName; + } + } + return ""; +} + +static void UI_DrawTierMapName(rectDef_t *rect, float scale, vec4_t color, int textStyle) { + int i, j; + i = trap_Cvar_VariableValue( "ui_currentTier" ); + if (i < 0 || i >= uiInfo.tierCount) { + i = 0; + } + j = trap_Cvar_VariableValue("ui_currentMap"); + if (j < 0 || j > MAPS_PER_TIER) { + j = 0; + } + + Text_Paint(rect->x, rect->y, scale, color, UI_EnglishMapName(uiInfo.tierList[i].maps[j]), 0, 0, textStyle); +} + +static void UI_DrawTierGameType(rectDef_t *rect, float scale, vec4_t color, int textStyle) { + int i, j; + i = trap_Cvar_VariableValue( "ui_currentTier" ); + if (i < 0 || i >= uiInfo.tierCount) { + i = 0; + } + j = trap_Cvar_VariableValue("ui_currentMap"); + if (j < 0 || j > MAPS_PER_TIER) { + j = 0; + } + + Text_Paint(rect->x, rect->y, scale, color, uiInfo.gameTypes[uiInfo.tierList[i].gameTypes[j]].gameType , 0, 0, textStyle); +} + + +#ifndef MISSIONPACK // bk001206 +static const char *UI_OpponentLeaderName() { + int i = UI_TeamIndexFromName(UI_Cvar_VariableString("ui_opponentName")); + return uiInfo.teamList[i].teamMembers[0]; +} +#endif + +static const char *UI_AIFromName(const char *name) { + int j; + for (j = 0; j < uiInfo.aliasCount; j++) { + if (Q_stricmp(uiInfo.aliasList[j].name, name) == 0) { + return uiInfo.aliasList[j].ai; + } + } + return "James"; +} + +#ifndef MISSIONPACK // bk001206 +static const int UI_AIIndex(const char *name) { + int j; + for (j = 0; j < uiInfo.characterCount; j++) { + if (Q_stricmp(name, uiInfo.characterList[j].name) == 0) { + return j; + } + } + return 0; +} +#endif + +#ifndef MISSIONPACK // bk001206 +static const int UI_AIIndexFromName(const char *name) { + int j; + for (j = 0; j < uiInfo.aliasCount; j++) { + if (Q_stricmp(uiInfo.aliasList[j].name, name) == 0) { + return UI_AIIndex(uiInfo.aliasList[j].ai); + } + } + return 0; +} +#endif + + +#ifndef MISSIONPACK // bk001206 +static const char *UI_OpponentLeaderHead() { + const char *leader = UI_OpponentLeaderName(); + return UI_AIFromName(leader); +} +#endif + +#ifndef MISSIONPACK // bk001206 +static const char *UI_OpponentLeaderModel() { + int i; + const char *head = UI_OpponentLeaderHead(); + for (i = 0; i < uiInfo.characterCount; i++) { + if (Q_stricmp(head, uiInfo.characterList[i].name) == 0) { + return uiInfo.characterList[i].base; + } + } + return "James"; +} +#endif + + +static qboolean updateOpponentModel = qtrue; +static void UI_DrawOpponent(rectDef_t *rect) { + static playerInfo_t info2; + char model[MAX_QPATH]; + char headmodel[MAX_QPATH]; + char team[256]; + vec3_t viewangles; + vec3_t moveangles; + + if (updateOpponentModel) { + + strcpy(model, UI_Cvar_VariableString("ui_opponentModel")); + strcpy(headmodel, UI_Cvar_VariableString("ui_opponentModel")); + team[0] = '\0'; + + memset( &info2, 0, sizeof(playerInfo_t) ); + viewangles[YAW] = 180 - 10; + viewangles[PITCH] = 0; + viewangles[ROLL] = 0; + VectorClear( moveangles ); + UI_PlayerInfo_SetModel( &info2, model, headmodel, ""); + UI_PlayerInfo_SetInfo( &info2, LEGS_IDLE, TORSO_STAND, viewangles, vec3_origin, WP_PISTOL, qfalse ); + UI_RegisterClientModelname( &info2, model, headmodel, team); + updateOpponentModel = qfalse; + } + + UI_DrawPlayer( rect->x, rect->y, rect->w, rect->h, &info2, uiInfo.uiDC.realTime / 2); + +} + +static void UI_NextOpponent() { + int i = UI_TeamIndexFromName(UI_Cvar_VariableString("ui_opponentName")); + int j = UI_TeamIndexFromName(UI_Cvar_VariableString("ui_teamName")); + i++; + if (i >= uiInfo.teamCount) { + i = 0; + } + if (i == j) { + i++; + if ( i >= uiInfo.teamCount) { + i = 0; + } + } + trap_Cvar_Set( "ui_opponentName", uiInfo.teamList[i].teamName ); +} + +static void UI_PriorOpponent() { + int i = UI_TeamIndexFromName(UI_Cvar_VariableString("ui_opponentName")); + int j = UI_TeamIndexFromName(UI_Cvar_VariableString("ui_teamName")); + i--; + if (i < 0) { + i = uiInfo.teamCount - 1; + } + if (i == j) { + i--; + if ( i < 0) { + i = uiInfo.teamCount - 1; + } + } + trap_Cvar_Set( "ui_opponentName", uiInfo.teamList[i].teamName ); +} + +static void UI_DrawPlayerLogo(rectDef_t *rect, vec3_t color) { + int i = UI_TeamIndexFromName(UI_Cvar_VariableString("ui_teamName")); + + if (uiInfo.teamList[i].teamIcon == -1) { + uiInfo.teamList[i].teamIcon = trap_R_RegisterShaderNoMip(uiInfo.teamList[i].imageName); + uiInfo.teamList[i].teamIcon_Metal = trap_R_RegisterShaderNoMip(va("%s_metal",uiInfo.teamList[i].imageName)); + uiInfo.teamList[i].teamIcon_Name = trap_R_RegisterShaderNoMip(va("%s_name", uiInfo.teamList[i].imageName)); + } + + trap_R_SetColor( color ); + UI_DrawHandlePic( rect->x, rect->y, rect->w, rect->h, uiInfo.teamList[i].teamIcon ); + trap_R_SetColor( NULL ); +} + +static void UI_DrawPlayerLogoMetal(rectDef_t *rect, vec3_t color) { + int i = UI_TeamIndexFromName(UI_Cvar_VariableString("ui_teamName")); + if (uiInfo.teamList[i].teamIcon == -1) { + uiInfo.teamList[i].teamIcon = trap_R_RegisterShaderNoMip(uiInfo.teamList[i].imageName); + uiInfo.teamList[i].teamIcon_Metal = trap_R_RegisterShaderNoMip(va("%s_metal",uiInfo.teamList[i].imageName)); + uiInfo.teamList[i].teamIcon_Name = trap_R_RegisterShaderNoMip(va("%s_name", uiInfo.teamList[i].imageName)); + } + + trap_R_SetColor( color ); + UI_DrawHandlePic( rect->x, rect->y, rect->w, rect->h, uiInfo.teamList[i].teamIcon_Metal ); + trap_R_SetColor( NULL ); +} + +static void UI_DrawPlayerLogoName(rectDef_t *rect, vec3_t color) { + int i = UI_TeamIndexFromName(UI_Cvar_VariableString("ui_teamName")); + if (uiInfo.teamList[i].teamIcon == -1) { + uiInfo.teamList[i].teamIcon = trap_R_RegisterShaderNoMip(uiInfo.teamList[i].imageName); + uiInfo.teamList[i].teamIcon_Metal = trap_R_RegisterShaderNoMip(va("%s_metal",uiInfo.teamList[i].imageName)); + uiInfo.teamList[i].teamIcon_Name = trap_R_RegisterShaderNoMip(va("%s_name", uiInfo.teamList[i].imageName)); + } + + trap_R_SetColor( color ); + UI_DrawHandlePic( rect->x, rect->y, rect->w, rect->h, uiInfo.teamList[i].teamIcon_Name ); + trap_R_SetColor( NULL ); +} + +static void UI_DrawOpponentLogo(rectDef_t *rect, vec3_t color) { + int i = UI_TeamIndexFromName(UI_Cvar_VariableString("ui_opponentName")); + if (uiInfo.teamList[i].teamIcon == -1) { + uiInfo.teamList[i].teamIcon = trap_R_RegisterShaderNoMip(uiInfo.teamList[i].imageName); + uiInfo.teamList[i].teamIcon_Metal = trap_R_RegisterShaderNoMip(va("%s_metal",uiInfo.teamList[i].imageName)); + uiInfo.teamList[i].teamIcon_Name = trap_R_RegisterShaderNoMip(va("%s_name", uiInfo.teamList[i].imageName)); + } + + trap_R_SetColor( color ); + UI_DrawHandlePic( rect->x, rect->y, rect->w, rect->h, uiInfo.teamList[i].teamIcon ); + trap_R_SetColor( NULL ); +} + +static void UI_DrawOpponentLogoMetal(rectDef_t *rect, vec3_t color) { + int i = UI_TeamIndexFromName(UI_Cvar_VariableString("ui_opponentName")); + if (uiInfo.teamList[i].teamIcon == -1) { + uiInfo.teamList[i].teamIcon = trap_R_RegisterShaderNoMip(uiInfo.teamList[i].imageName); + uiInfo.teamList[i].teamIcon_Metal = trap_R_RegisterShaderNoMip(va("%s_metal",uiInfo.teamList[i].imageName)); + uiInfo.teamList[i].teamIcon_Name = trap_R_RegisterShaderNoMip(va("%s_name", uiInfo.teamList[i].imageName)); + } + + trap_R_SetColor( color ); + UI_DrawHandlePic( rect->x, rect->y, rect->w, rect->h, uiInfo.teamList[i].teamIcon_Metal ); + trap_R_SetColor( NULL ); +} + +static void UI_DrawOpponentLogoName(rectDef_t *rect, vec3_t color) { + int i = UI_TeamIndexFromName(UI_Cvar_VariableString("ui_opponentName")); + if (uiInfo.teamList[i].teamIcon == -1) { + uiInfo.teamList[i].teamIcon = trap_R_RegisterShaderNoMip(uiInfo.teamList[i].imageName); + uiInfo.teamList[i].teamIcon_Metal = trap_R_RegisterShaderNoMip(va("%s_metal",uiInfo.teamList[i].imageName)); + uiInfo.teamList[i].teamIcon_Name = trap_R_RegisterShaderNoMip(va("%s_name", uiInfo.teamList[i].imageName)); + } + + trap_R_SetColor( color ); + UI_DrawHandlePic( rect->x, rect->y, rect->w, rect->h, uiInfo.teamList[i].teamIcon_Name ); + trap_R_SetColor( NULL ); +} + +static void UI_DrawAllMapsSelection(rectDef_t *rect, float scale, vec4_t color, int textStyle, qboolean net) { + int map = (net) ? ui_currentNetMap.integer : ui_currentMap.integer; + if (map >= 0 && map < uiInfo.mapCount) { + Text_Paint(rect->x, rect->y, scale, color, uiInfo.mapList[map].mapName, 0, 0, textStyle); + } +} + +static void UI_DrawOpponentName(rectDef_t *rect, float scale, vec4_t color, int textStyle) { + Text_Paint(rect->x, rect->y, scale, color, UI_Cvar_VariableString("ui_opponentName"), 0, 0, textStyle); +} + + +static int UI_OwnerDrawWidth(int ownerDraw, float scale) { + int i, h, value; + const char *text; + const char *s = NULL; + + switch (ownerDraw) { + case UI_HANDICAP: + h = Com_Clamp( 5, 100, trap_Cvar_VariableValue("handicap") ); + i = 20 - h / 5; + s = handicapValues[i]; + break; + case UI_CLANNAME: + s = UI_Cvar_VariableString("ui_teamName"); + break; + case UI_GAMETYPE: + s = uiInfo.gameTypes[ui_gameType.integer].gameType; + break; + case UI_SKILL: + i = trap_Cvar_VariableValue( "g_spSkill" ); + if (i < 1 || i > numSkillLevels) { + i = 1; + } + s = skillLevels[i-1]; + break; + case UI_BLUETEAMNAME: + i = UI_TeamIndexFromName(UI_Cvar_VariableString("ui_blueTeam")); + if (i >= 0 && i < uiInfo.teamCount) { + s = va("%s: %s", "Blue", uiInfo.teamList[i].teamName); + } + break; + case UI_REDTEAMNAME: + i = UI_TeamIndexFromName(UI_Cvar_VariableString("ui_redTeam")); + if (i >= 0 && i < uiInfo.teamCount) { + s = va("%s: %s", "Red", uiInfo.teamList[i].teamName); + } + break; + case UI_BLUETEAM1: + case UI_BLUETEAM2: + case UI_BLUETEAM3: + case UI_BLUETEAM4: + case UI_BLUETEAM5: + value = trap_Cvar_VariableValue(va("ui_blueteam%i", ownerDraw-UI_BLUETEAM1 + 1)); + if (value <= 0) { + text = "Closed"; + } else if (value == 1) { + text = "Human"; + } else { + value -= 2; + if (value >= uiInfo.aliasCount) { + value = 0; + } + text = uiInfo.aliasList[value].name; + } + s = va("%i. %s", ownerDraw-UI_BLUETEAM1 + 1, text); + break; + case UI_REDTEAM1: + case UI_REDTEAM2: + case UI_REDTEAM3: + case UI_REDTEAM4: + case UI_REDTEAM5: + value = trap_Cvar_VariableValue(va("ui_redteam%i", ownerDraw-UI_REDTEAM1 + 1)); + if (value <= 0) { + text = "Closed"; + } else if (value == 1) { + text = "Human"; + } else { + value -= 2; + if (value >= uiInfo.aliasCount) { + value = 0; + } + text = uiInfo.aliasList[value].name; + } + s = va("%i. %s", ownerDraw-UI_REDTEAM1 + 1, text); + break; + case UI_NETSOURCE: + if (ui_netSource.integer < 0 || ui_netSource.integer > uiInfo.numJoinGameTypes) { + ui_netSource.integer = 0; + } + s = va("Source: %s", netSources[ui_netSource.integer]); + break; + case UI_NETFILTER: + if (ui_serverFilterType.integer < 0 || ui_serverFilterType.integer > numServerFilters) { + ui_serverFilterType.integer = 0; + } + s = va("Filter: %s", serverFilters[ui_serverFilterType.integer].description ); + break; + case UI_TIER: + break; + case UI_TIER_MAPNAME: + break; + case UI_TIER_GAMETYPE: + break; + case UI_ALLMAPS_SELECTION: + break; + case UI_OPPONENT_NAME: + break; + case UI_KEYBINDSTATUS: + if (Display_KeyBindPending()) { + s = "Waiting for new key... Press ESCAPE to cancel"; + } else { + s = "Press ENTER or CLICK to change, Press BACKSPACE to clear"; + } + break; + case UI_SERVERREFRESHDATE: + s = UI_Cvar_VariableString(va("ui_lastServerRefresh_%i", ui_netSource.integer)); + break; + default: + break; + } + + if (s) { + return Text_Width(s, scale, 0); + } + return 0; +} + +static void UI_DrawBotName(rectDef_t *rect, float scale, vec4_t color, int textStyle) { + int value = uiInfo.botIndex; + int game = trap_Cvar_VariableValue("g_gametype"); + const char *text = ""; + if (game >= GT_TEAM) { + if (value >= uiInfo.characterCount) { + value = 0; + } + text = uiInfo.characterList[value].name; + } else { + if (value >= UI_GetNumBots()) { + value = 0; + } + text = UI_GetBotNameByNumber(value); + } + Text_Paint(rect->x, rect->y, scale, color, text, 0, 0, textStyle); +} + +static void UI_DrawBotSkill(rectDef_t *rect, float scale, vec4_t color, int textStyle) { + if (uiInfo.skillIndex >= 0 && uiInfo.skillIndex < numSkillLevels) { + Text_Paint(rect->x, rect->y, scale, color, skillLevels[uiInfo.skillIndex], 0, 0, textStyle); + } +} + +static void UI_DrawRedBlue(rectDef_t *rect, float scale, vec4_t color, int textStyle) { + Text_Paint(rect->x, rect->y, scale, color, (uiInfo.redBlue == 0) ? "Red" : "Blue", 0, 0, textStyle); +} + +static void UI_DrawCrosshair(rectDef_t *rect, float scale, vec4_t color) { + trap_R_SetColor( color ); + if (uiInfo.currentCrosshair < 0 || uiInfo.currentCrosshair >= NUM_CROSSHAIRS) { + uiInfo.currentCrosshair = 0; + } + UI_DrawHandlePic( rect->x, rect->y - rect->h, rect->w, rect->h, uiInfo.uiDC.Assets.crosshairShader[uiInfo.currentCrosshair]); + trap_R_SetColor( NULL ); +} + +/* +=============== +UI_BuildPlayerList +=============== +*/ +static void UI_BuildPlayerList() { + uiClientState_t cs; + int n, count, team, team2, playerTeamNumber; + char info[MAX_INFO_STRING]; + + trap_GetClientState( &cs ); + trap_GetConfigString( CS_PLAYERS + cs.clientNum, info, MAX_INFO_STRING ); + uiInfo.playerNumber = cs.clientNum; + uiInfo.teamLeader = atoi(Info_ValueForKey(info, "tl")); + team = atoi(Info_ValueForKey(info, "t")); + trap_GetConfigString( CS_SERVERINFO, info, sizeof(info) ); + count = atoi( Info_ValueForKey( info, "sv_maxclients" ) ); + uiInfo.playerCount = 0; + uiInfo.myTeamCount = 0; + playerTeamNumber = 0; + for( n = 0; n < count; n++ ) { + trap_GetConfigString( CS_PLAYERS + n, info, MAX_INFO_STRING ); + + if (info[0]) { + Q_strncpyz( uiInfo.playerNames[uiInfo.playerCount], Info_ValueForKey( info, "n" ), MAX_NAME_LENGTH ); + Q_CleanStr( uiInfo.playerNames[uiInfo.playerCount] ); + uiInfo.playerCount++; + team2 = atoi(Info_ValueForKey(info, "t")); + if (team2 == team) { + Q_strncpyz( uiInfo.teamNames[uiInfo.myTeamCount], Info_ValueForKey( info, "n" ), MAX_NAME_LENGTH ); + Q_CleanStr( uiInfo.teamNames[uiInfo.myTeamCount] ); + uiInfo.teamClientNums[uiInfo.myTeamCount] = n; + if (uiInfo.playerNumber == n) { + playerTeamNumber = uiInfo.myTeamCount; + } + uiInfo.myTeamCount++; + } + } + } + + if (!uiInfo.teamLeader) { + trap_Cvar_Set("cg_selectedPlayer", va("%d", playerTeamNumber)); + } + + n = trap_Cvar_VariableValue("cg_selectedPlayer"); + if (n < 0 || n > uiInfo.myTeamCount) { + n = 0; + } + if (n < uiInfo.myTeamCount) { + trap_Cvar_Set("cg_selectedPlayerName", uiInfo.teamNames[n]); + } +} + + +static void UI_DrawSelectedPlayer(rectDef_t *rect, float scale, vec4_t color, int textStyle) { + if (uiInfo.uiDC.realTime > uiInfo.playerRefresh) { + uiInfo.playerRefresh = uiInfo.uiDC.realTime + 3000; + UI_BuildPlayerList(); + } + Text_Paint(rect->x, rect->y, scale, color, (uiInfo.teamLeader) ? UI_Cvar_VariableString("cg_selectedPlayerName") : UI_Cvar_VariableString("name") , 0, 0, textStyle); +} + +static void UI_DrawServerRefreshDate(rectDef_t *rect, float scale, vec4_t color, int textStyle) { + if (uiInfo.serverStatus.refreshActive) { + vec4_t lowLight, newColor; + lowLight[0] = 0.8 * color[0]; + lowLight[1] = 0.8 * color[1]; + lowLight[2] = 0.8 * color[2]; + lowLight[3] = 0.8 * color[3]; + LerpColor(color,lowLight,newColor,0.5+0.5*sin(uiInfo.uiDC.realTime / PULSE_DIVISOR)); + Text_Paint(rect->x, rect->y, scale, newColor, va("Getting info for %d servers (ESC to cancel)", trap_LAN_GetServerCount(ui_netSource.integer)), 0, 0, textStyle); + } else { + char buff[64]; + Q_strncpyz(buff, UI_Cvar_VariableString(va("ui_lastServerRefresh_%i", ui_netSource.integer)), 64); + Text_Paint(rect->x, rect->y, scale, color, va("Refresh Time: %s", buff), 0, 0, textStyle); + } +} + +static void UI_DrawServerMOTD(rectDef_t *rect, float scale, vec4_t color) { + if (uiInfo.serverStatus.motdLen) { + float maxX; + + if (uiInfo.serverStatus.motdWidth == -1) { + uiInfo.serverStatus.motdWidth = 0; + uiInfo.serverStatus.motdPaintX = rect->x + 1; + uiInfo.serverStatus.motdPaintX2 = -1; + } + + if (uiInfo.serverStatus.motdOffset > uiInfo.serverStatus.motdLen) { + uiInfo.serverStatus.motdOffset = 0; + uiInfo.serverStatus.motdPaintX = rect->x + 1; + uiInfo.serverStatus.motdPaintX2 = -1; + } + + if (uiInfo.uiDC.realTime > uiInfo.serverStatus.motdTime) { + uiInfo.serverStatus.motdTime = uiInfo.uiDC.realTime + 10; + if (uiInfo.serverStatus.motdPaintX <= rect->x + 2) { + if (uiInfo.serverStatus.motdOffset < uiInfo.serverStatus.motdLen) { + uiInfo.serverStatus.motdPaintX += Text_Width(&uiInfo.serverStatus.motd[uiInfo.serverStatus.motdOffset], scale, 1) - 1; + uiInfo.serverStatus.motdOffset++; + } else { + uiInfo.serverStatus.motdOffset = 0; + if (uiInfo.serverStatus.motdPaintX2 >= 0) { + uiInfo.serverStatus.motdPaintX = uiInfo.serverStatus.motdPaintX2; + } else { + uiInfo.serverStatus.motdPaintX = rect->x + rect->w - 2; + } + uiInfo.serverStatus.motdPaintX2 = -1; + } + } else { + //serverStatus.motdPaintX--; + uiInfo.serverStatus.motdPaintX -= 2; + if (uiInfo.serverStatus.motdPaintX2 >= 0) { + //serverStatus.motdPaintX2--; + uiInfo.serverStatus.motdPaintX2 -= 2; + } + } + } + + maxX = rect->x + rect->w - 2; + Text_Paint_Limit(&maxX, uiInfo.serverStatus.motdPaintX, rect->y + rect->h - 3, scale, color, &uiInfo.serverStatus.motd[uiInfo.serverStatus.motdOffset], 0, 0); + if (uiInfo.serverStatus.motdPaintX2 >= 0) { + float maxX2 = rect->x + rect->w - 2; + Text_Paint_Limit(&maxX2, uiInfo.serverStatus.motdPaintX2, rect->y + rect->h - 3, scale, color, uiInfo.serverStatus.motd, 0, uiInfo.serverStatus.motdOffset); + } + if (uiInfo.serverStatus.motdOffset && maxX > 0) { + // if we have an offset ( we are skipping the first part of the string ) and we fit the string + if (uiInfo.serverStatus.motdPaintX2 == -1) { + uiInfo.serverStatus.motdPaintX2 = rect->x + rect->w - 2; + } + } else { + uiInfo.serverStatus.motdPaintX2 = -1; + } + + } +} + +static void UI_DrawKeyBindStatus(rectDef_t *rect, float scale, vec4_t color, int textStyle) { +// int ofs = 0; TTimo: unused + if (Display_KeyBindPending()) { + Text_Paint(rect->x, rect->y, scale, color, "Waiting for new key... Press ESCAPE to cancel", 0, 0, textStyle); + } else { + Text_Paint(rect->x, rect->y, scale, color, "Press ENTER or CLICK to change, Press BACKSPACE to clear", 0, 0, textStyle); + } +} + +static void UI_DrawGLInfo(rectDef_t *rect, float scale, vec4_t color, int textStyle) { + char * eptr; + char buff[4096]; + const char *lines[64]; + int y, numLines, i; + + Text_Paint(rect->x + 2, rect->y, scale, color, va("VENDOR: %s", uiInfo.uiDC.glconfig.vendor_string), 0, 30, textStyle); + Text_Paint(rect->x + 2, rect->y + 15, scale, color, va("VERSION: %s: %s", uiInfo.uiDC.glconfig.version_string,uiInfo.uiDC.glconfig.renderer_string), 0, 30, textStyle); + Text_Paint(rect->x + 2, rect->y + 30, scale, color, va ("PIXELFORMAT: color(%d-bits) Z(%d-bits) stencil(%d-bits)", uiInfo.uiDC.glconfig.colorBits, uiInfo.uiDC.glconfig.depthBits, uiInfo.uiDC.glconfig.stencilBits), 0, 30, textStyle); + + // build null terminated extension strings + Q_strncpyz(buff, uiInfo.uiDC.glconfig.extensions_string, 4096); + eptr = buff; + y = rect->y + 45; + numLines = 0; + while ( y < rect->y + rect->h && *eptr ) + { + while ( *eptr && *eptr == ' ' ) + *eptr++ = '\0'; + + // track start of valid string + if (*eptr && *eptr != ' ') { + lines[numLines++] = eptr; + } + + while ( *eptr && *eptr != ' ' ) + eptr++; + } + + i = 0; + while (i < numLines) { + Text_Paint(rect->x + 2, y, scale, color, lines[i++], 0, 20, textStyle); + if (i < numLines) { + Text_Paint(rect->x + rect->w / 2, y, scale, color, lines[i++], 0, 20, textStyle); + } + y += 10; + if (y > rect->y + rect->h - 11) { + break; + } + } + + +} + +// FIXME: table drive +// +static void UI_OwnerDraw(float x, float y, float w, float h, float text_x, float text_y, int ownerDraw, int ownerDrawFlags, int align, float special, float scale, vec4_t color, qhandle_t shader, int textStyle) { + rectDef_t rect; + + rect.x = x + text_x; + rect.y = y + text_y; + rect.w = w; + rect.h = h; + + switch (ownerDraw) { + case UI_HANDICAP: + UI_DrawHandicap(&rect, scale, color, textStyle); + break; + case UI_EFFECTS: + UI_DrawEffects(&rect, scale, color); + break; + case UI_PLAYERMODEL: + UI_DrawPlayerModel(&rect); + break; + case UI_CLANNAME: + UI_DrawClanName(&rect, scale, color, textStyle); + break; + case UI_CLANLOGO: + UI_DrawClanLogo(&rect, scale, color); + break; + case UI_CLANCINEMATIC: + UI_DrawClanCinematic(&rect, scale, color); + break; + case UI_PREVIEWCINEMATIC: + UI_DrawPreviewCinematic(&rect, scale, color); + break; + case UI_GAMETYPE: + UI_DrawGameType(&rect, scale, color, textStyle); + break; + case UI_NETGAMETYPE: + UI_DrawNetGameType(&rect, scale, color, textStyle); + break; + case UI_JOINGAMETYPE: + UI_DrawJoinGameType(&rect, scale, color, textStyle); + break; + case UI_MAPPREVIEW: + UI_DrawMapPreview(&rect, scale, color, qtrue); + break; + case UI_MAP_TIMETOBEAT: + UI_DrawMapTimeToBeat(&rect, scale, color, textStyle); + break; + case UI_MAPCINEMATIC: + UI_DrawMapCinematic(&rect, scale, color, qfalse); + break; + case UI_STARTMAPCINEMATIC: + UI_DrawMapCinematic(&rect, scale, color, qtrue); + break; + case UI_SKILL: + UI_DrawSkill(&rect, scale, color, textStyle); + break; + case UI_BLUETEAMNAME: + UI_DrawTeamName(&rect, scale, color, qtrue, textStyle); + break; + case UI_REDTEAMNAME: + UI_DrawTeamName(&rect, scale, color, qfalse, textStyle); + break; + case UI_BLUETEAM1: + case UI_BLUETEAM2: + case UI_BLUETEAM3: + case UI_BLUETEAM4: + case UI_BLUETEAM5: + UI_DrawTeamMember(&rect, scale, color, qtrue, ownerDraw - UI_BLUETEAM1 + 1, textStyle); + break; + case UI_REDTEAM1: + case UI_REDTEAM2: + case UI_REDTEAM3: + case UI_REDTEAM4: + case UI_REDTEAM5: + UI_DrawTeamMember(&rect, scale, color, qfalse, ownerDraw - UI_REDTEAM1 + 1, textStyle); + break; + case UI_NETSOURCE: + UI_DrawNetSource(&rect, scale, color, textStyle); + break; + case UI_NETMAPPREVIEW: + UI_DrawNetMapPreview(&rect, scale, color); + break; + case UI_NETMAPCINEMATIC: + UI_DrawNetMapCinematic(&rect, scale, color); + break; + case UI_NETFILTER: + UI_DrawNetFilter(&rect, scale, color, textStyle); + break; + case UI_TIER: + UI_DrawTier(&rect, scale, color, textStyle); + break; + case UI_OPPONENTMODEL: + UI_DrawOpponent(&rect); + break; + case UI_TIERMAP1: + UI_DrawTierMap(&rect, 0); + break; + case UI_TIERMAP2: + UI_DrawTierMap(&rect, 1); + break; + case UI_TIERMAP3: + UI_DrawTierMap(&rect, 2); + break; + case UI_PLAYERLOGO: + UI_DrawPlayerLogo(&rect, color); + break; + case UI_PLAYERLOGO_METAL: + UI_DrawPlayerLogoMetal(&rect, color); + break; + case UI_PLAYERLOGO_NAME: + UI_DrawPlayerLogoName(&rect, color); + break; + case UI_OPPONENTLOGO: + UI_DrawOpponentLogo(&rect, color); + break; + case UI_OPPONENTLOGO_METAL: + UI_DrawOpponentLogoMetal(&rect, color); + break; + case UI_OPPONENTLOGO_NAME: + UI_DrawOpponentLogoName(&rect, color); + break; + case UI_TIER_MAPNAME: + UI_DrawTierMapName(&rect, scale, color, textStyle); + break; + case UI_TIER_GAMETYPE: + UI_DrawTierGameType(&rect, scale, color, textStyle); + break; + case UI_ALLMAPS_SELECTION: + UI_DrawAllMapsSelection(&rect, scale, color, textStyle, qtrue); + break; + case UI_MAPS_SELECTION: + UI_DrawAllMapsSelection(&rect, scale, color, textStyle, qfalse); + break; + case UI_OPPONENT_NAME: + UI_DrawOpponentName(&rect, scale, color, textStyle); + break; + case UI_BOTNAME: + UI_DrawBotName(&rect, scale, color, textStyle); + break; + case UI_BOTSKILL: + UI_DrawBotSkill(&rect, scale, color, textStyle); + break; + case UI_REDBLUE: + UI_DrawRedBlue(&rect, scale, color, textStyle); + break; + case UI_CROSSHAIR: + UI_DrawCrosshair(&rect, scale, color); + break; + case UI_SELECTEDPLAYER: + UI_DrawSelectedPlayer(&rect, scale, color, textStyle); + break; + case UI_SERVERREFRESHDATE: + UI_DrawServerRefreshDate(&rect, scale, color, textStyle); + break; + case UI_SERVERMOTD: + UI_DrawServerMOTD(&rect, scale, color); + break; + case UI_GLINFO: + UI_DrawGLInfo(&rect,scale, color, textStyle); + break; + case UI_KEYBINDSTATUS: + UI_DrawKeyBindStatus(&rect,scale, color, textStyle); + break; + default: + break; + } + +} + +static qboolean UI_OwnerDrawVisible(int flags) { + qboolean vis = qtrue; + + while (flags) { + + if (flags & UI_SHOW_FFA) { + if (trap_Cvar_VariableValue("g_gametype") != GT_FFA) { + vis = qfalse; + } + flags &= ~UI_SHOW_FFA; + } + + if (flags & UI_SHOW_NOTFFA) { + if (trap_Cvar_VariableValue("g_gametype") == GT_FFA) { + vis = qfalse; + } + flags &= ~UI_SHOW_NOTFFA; + } + + if (flags & UI_SHOW_LEADER) { + // these need to show when this client can give orders to a player or a group + if (!uiInfo.teamLeader) { + vis = qfalse; + } else { + // if showing yourself + if (ui_selectedPlayer.integer < uiInfo.myTeamCount && uiInfo.teamClientNums[ui_selectedPlayer.integer] == uiInfo.playerNumber) { + vis = qfalse; + } + } + flags &= ~UI_SHOW_LEADER; + } + if (flags & UI_SHOW_NOTLEADER) { + // these need to show when this client is assigning their own status or they are NOT the leader + if (uiInfo.teamLeader) { + // if not showing yourself + if (!(ui_selectedPlayer.integer < uiInfo.myTeamCount && uiInfo.teamClientNums[ui_selectedPlayer.integer] == uiInfo.playerNumber)) { + vis = qfalse; + } + // these need to show when this client can give orders to a player or a group + } + flags &= ~UI_SHOW_NOTLEADER; + } + if (flags & UI_SHOW_FAVORITESERVERS) { + // this assumes you only put this type of display flag on something showing in the proper context + if (ui_netSource.integer != AS_FAVORITES) { + vis = qfalse; + } + flags &= ~UI_SHOW_FAVORITESERVERS; + } + if (flags & UI_SHOW_NOTFAVORITESERVERS) { + // this assumes you only put this type of display flag on something showing in the proper context + if (ui_netSource.integer == AS_FAVORITES) { + vis = qfalse; + } + flags &= ~UI_SHOW_NOTFAVORITESERVERS; + } + if (flags & UI_SHOW_ANYTEAMGAME) { + if (uiInfo.gameTypes[ui_gameType.integer].gtEnum <= GT_TEAM ) { + vis = qfalse; + } + flags &= ~UI_SHOW_ANYTEAMGAME; + } + if (flags & UI_SHOW_ANYNONTEAMGAME) { + if (uiInfo.gameTypes[ui_gameType.integer].gtEnum > GT_TEAM ) { + vis = qfalse; + } + flags &= ~UI_SHOW_ANYNONTEAMGAME; + } + if (flags & UI_SHOW_NETANYTEAMGAME) { + if (uiInfo.gameTypes[ui_netGameType.integer].gtEnum <= GT_TEAM ) { + vis = qfalse; + } + flags &= ~UI_SHOW_NETANYTEAMGAME; + } + if (flags & UI_SHOW_NETANYNONTEAMGAME) { + if (uiInfo.gameTypes[ui_netGameType.integer].gtEnum > GT_TEAM ) { + vis = qfalse; + } + flags &= ~UI_SHOW_NETANYNONTEAMGAME; + } + if (flags & UI_SHOW_NEWHIGHSCORE) { + if (uiInfo.newHighScoreTime < uiInfo.uiDC.realTime) { + vis = qfalse; + } else { + if (uiInfo.soundHighScore) { + if (trap_Cvar_VariableValue("sv_killserver") == 0) { + // wait on server to go down before playing sound + trap_S_StartLocalSound(uiInfo.newHighScoreSound, CHAN_ANNOUNCER); + uiInfo.soundHighScore = qfalse; + } + } + } + flags &= ~UI_SHOW_NEWHIGHSCORE; + } + if (flags & UI_SHOW_NEWBESTTIME) { + if (uiInfo.newBestTime < uiInfo.uiDC.realTime) { + vis = qfalse; + } + flags &= ~UI_SHOW_NEWBESTTIME; + } + if (flags & UI_SHOW_DEMOAVAILABLE) { + if (!uiInfo.demoAvailable) { + vis = qfalse; + } + flags &= ~UI_SHOW_DEMOAVAILABLE; + } else { + flags = 0; + } + } + return vis; +} + +static qboolean UI_Handicap_HandleKey(int flags, float *special, int key) { + if (key == K_MOUSE1 || key == K_MOUSE2 || key == K_ENTER || key == K_KP_ENTER) { + int h; + h = Com_Clamp( 5, 100, trap_Cvar_VariableValue("handicap") ); + if (key == K_MOUSE2) { + h -= 5; + } else { + h += 5; + } + if (h > 100) { + h = 5; + } else if (h < 0) { + h = 100; + } + trap_Cvar_Set( "handicap", va( "%i", h) ); + return qtrue; + } + return qfalse; +} + +static qboolean UI_Effects_HandleKey(int flags, float *special, int key) { + if (key == K_MOUSE1 || key == K_MOUSE2 || key == K_ENTER || key == K_KP_ENTER) { + + if (key == K_MOUSE2) { + uiInfo.effectsColor--; + } else { + uiInfo.effectsColor++; + } + + if( uiInfo.effectsColor > 6 ) { + uiInfo.effectsColor = 0; + } else if (uiInfo.effectsColor < 0) { + uiInfo.effectsColor = 6; + } + + trap_Cvar_SetValue( "color1", uitogamecode[uiInfo.effectsColor] ); + return qtrue; + } + return qfalse; +} + +static qboolean UI_ClanName_HandleKey(int flags, float *special, int key) { + if (key == K_MOUSE1 || key == K_MOUSE2 || key == K_ENTER || key == K_KP_ENTER) { + int i; + i = UI_TeamIndexFromName(UI_Cvar_VariableString("ui_teamName")); + if (uiInfo.teamList[i].cinematic >= 0) { + trap_CIN_StopCinematic(uiInfo.teamList[i].cinematic); + uiInfo.teamList[i].cinematic = -1; + } + if (key == K_MOUSE2) { + i--; + } else { + i++; + } + if (i >= uiInfo.teamCount) { + i = 0; + } else if (i < 0) { + i = uiInfo.teamCount - 1; + } + trap_Cvar_Set( "ui_teamName", uiInfo.teamList[i].teamName); + UI_HeadCountByTeam(); + UI_FeederSelection(FEEDER_HEADS, 0); + updateModel = qtrue; + return qtrue; + } + return qfalse; +} + +static qboolean UI_GameType_HandleKey(int flags, float *special, int key, qboolean resetMap) { + if (key == K_MOUSE1 || key == K_MOUSE2 || key == K_ENTER || key == K_KP_ENTER) { + int oldCount = UI_MapCountByGameType(qtrue); + + // hard coded mess here + if (key == K_MOUSE2) { + ui_gameType.integer--; + if (ui_gameType.integer == 2) { + ui_gameType.integer = 1; + } else if (ui_gameType.integer < 2) { + ui_gameType.integer = uiInfo.numGameTypes - 1; + } + } else { + ui_gameType.integer++; + if (ui_gameType.integer >= uiInfo.numGameTypes) { + ui_gameType.integer = 1; + } else if (ui_gameType.integer == 2) { + ui_gameType.integer = 3; + } + } + + if (uiInfo.gameTypes[ui_gameType.integer].gtEnum == GT_TOURNAMENT) { + trap_Cvar_Set("ui_Q3Model", "1"); + } else { + trap_Cvar_Set("ui_Q3Model", "0"); + } + + trap_Cvar_Set("ui_gameType", va("%d", ui_gameType.integer)); + UI_SetCapFragLimits(qtrue); + UI_LoadBestScores(uiInfo.mapList[ui_currentMap.integer].mapLoadName, uiInfo.gameTypes[ui_gameType.integer].gtEnum); + if (resetMap && oldCount != UI_MapCountByGameType(qtrue)) { + trap_Cvar_Set( "ui_currentMap", "0"); + Menu_SetFeederSelection(NULL, FEEDER_MAPS, 0, NULL); + } + return qtrue; + } + return qfalse; +} + +static qboolean UI_NetGameType_HandleKey(int flags, float *special, int key) { + if (key == K_MOUSE1 || key == K_MOUSE2 || key == K_ENTER || key == K_KP_ENTER) { + + if (key == K_MOUSE2) { + ui_netGameType.integer--; + } else { + ui_netGameType.integer++; + } + + if (ui_netGameType.integer < 0) { + ui_netGameType.integer = uiInfo.numGameTypes - 1; + } else if (ui_netGameType.integer >= uiInfo.numGameTypes) { + ui_netGameType.integer = 0; + } + + trap_Cvar_Set( "ui_netGameType", va("%d", ui_netGameType.integer)); + trap_Cvar_Set( "ui_actualnetGameType", va("%d", uiInfo.gameTypes[ui_netGameType.integer].gtEnum)); + trap_Cvar_Set( "ui_currentNetMap", "0"); + UI_MapCountByGameType(qfalse); + Menu_SetFeederSelection(NULL, FEEDER_ALLMAPS, 0, NULL); + return qtrue; + } + return qfalse; +} + +static qboolean UI_JoinGameType_HandleKey(int flags, float *special, int key) { + if (key == K_MOUSE1 || key == K_MOUSE2 || key == K_ENTER || key == K_KP_ENTER) { + + if (key == K_MOUSE2) { + ui_joinGameType.integer--; + } else { + ui_joinGameType.integer++; + } + + if (ui_joinGameType.integer < 0) { + ui_joinGameType.integer = uiInfo.numJoinGameTypes - 1; + } else if (ui_joinGameType.integer >= uiInfo.numJoinGameTypes) { + ui_joinGameType.integer = 0; + } + + trap_Cvar_Set( "ui_joinGameType", va("%d", ui_joinGameType.integer)); + UI_BuildServerDisplayList(qtrue); + return qtrue; + } + return qfalse; +} + + + +static qboolean UI_Skill_HandleKey(int flags, float *special, int key) { + if (key == K_MOUSE1 || key == K_MOUSE2 || key == K_ENTER || key == K_KP_ENTER) { + int i = trap_Cvar_VariableValue( "g_spSkill" ); + + if (key == K_MOUSE2) { + i--; + } else { + i++; + } + + if (i < 1) { + i = numSkillLevels; + } else if (i > numSkillLevels) { + i = 1; + } + + trap_Cvar_Set("g_spSkill", va("%i", i)); + return qtrue; + } + return qfalse; +} + +static qboolean UI_TeamName_HandleKey(int flags, float *special, int key, qboolean blue) { + if (key == K_MOUSE1 || key == K_MOUSE2 || key == K_ENTER || key == K_KP_ENTER) { + int i; + i = UI_TeamIndexFromName(UI_Cvar_VariableString((blue) ? "ui_blueTeam" : "ui_redTeam")); + + if (key == K_MOUSE2) { + i--; + } else { + i++; + } + + if (i >= uiInfo.teamCount) { + i = 0; + } else if (i < 0) { + i = uiInfo.teamCount - 1; + } + + trap_Cvar_Set( (blue) ? "ui_blueTeam" : "ui_redTeam", uiInfo.teamList[i].teamName); + + return qtrue; + } + return qfalse; +} + +static qboolean UI_TeamMember_HandleKey(int flags, float *special, int key, qboolean blue, int num) { + if (key == K_MOUSE1 || key == K_MOUSE2 || key == K_ENTER || key == K_KP_ENTER) { + // 0 - None + // 1 - Human + // 2..NumCharacters - Bot + char *cvar = va(blue ? "ui_blueteam%i" : "ui_redteam%i", num); + int value = trap_Cvar_VariableValue(cvar); + + if (key == K_MOUSE2) { + value--; + } else { + value++; + } + + if (ui_actualNetGameType.integer >= GT_TEAM) { + if (value >= uiInfo.characterCount + 2) { + value = 0; + } else if (value < 0) { + value = uiInfo.characterCount + 2 - 1; + } + } else { + if (value >= UI_GetNumBots() + 2) { + value = 0; + } else if (value < 0) { + value = UI_GetNumBots() + 2 - 1; + } + } + + trap_Cvar_Set(cvar, va("%i", value)); + return qtrue; + } + return qfalse; +} + +static qboolean UI_NetSource_HandleKey(int flags, float *special, int key) { + if (key == K_MOUSE1 || key == K_MOUSE2 || key == K_ENTER || key == K_KP_ENTER) { + + if (key == K_MOUSE2) { + ui_netSource.integer--; + } else { + ui_netSource.integer++; + } + + if (ui_netSource.integer >= numNetSources) { + ui_netSource.integer = 0; + } else if (ui_netSource.integer < 0) { + ui_netSource.integer = numNetSources - 1; + } + + UI_BuildServerDisplayList(qtrue); + if (ui_netSource.integer != AS_GLOBAL) { + UI_StartServerRefresh(qtrue); + } + trap_Cvar_Set( "ui_netSource", va("%d", ui_netSource.integer)); + return qtrue; + } + return qfalse; +} + +static qboolean UI_NetFilter_HandleKey(int flags, float *special, int key) { + if (key == K_MOUSE1 || key == K_MOUSE2 || key == K_ENTER || key == K_KP_ENTER) { + + if (key == K_MOUSE2) { + ui_serverFilterType.integer--; + } else { + ui_serverFilterType.integer++; + } + + if (ui_serverFilterType.integer >= numServerFilters) { + ui_serverFilterType.integer = 0; + } else if (ui_serverFilterType.integer < 0) { + ui_serverFilterType.integer = numServerFilters - 1; + } + UI_BuildServerDisplayList(qtrue); + return qtrue; + } + return qfalse; +} + +static qboolean UI_OpponentName_HandleKey(int flags, float *special, int key) { + if (key == K_MOUSE1 || key == K_MOUSE2 || key == K_ENTER || key == K_KP_ENTER) { + if (key == K_MOUSE2) { + UI_PriorOpponent(); + } else { + UI_NextOpponent(); + } + return qtrue; + } + return qfalse; +} + +static qboolean UI_BotName_HandleKey(int flags, float *special, int key) { + if (key == K_MOUSE1 || key == K_MOUSE2 || key == K_ENTER || key == K_KP_ENTER) { + int game = trap_Cvar_VariableValue("g_gametype"); + int value = uiInfo.botIndex; + + if (key == K_MOUSE2) { + value--; + } else { + value++; + } + + if (game >= GT_TEAM) { + if (value >= uiInfo.characterCount + 2) { + value = 0; + } else if (value < 0) { + value = uiInfo.characterCount + 2 - 1; + } + } else { + if (value >= UI_GetNumBots() + 2) { + value = 0; + } else if (value < 0) { + value = UI_GetNumBots() + 2 - 1; + } + } + uiInfo.botIndex = value; + return qtrue; + } + return qfalse; +} + +static qboolean UI_BotSkill_HandleKey(int flags, float *special, int key) { + if (key == K_MOUSE1 || key == K_MOUSE2 || key == K_ENTER || key == K_KP_ENTER) { + if (key == K_MOUSE2) { + uiInfo.skillIndex--; + } else { + uiInfo.skillIndex++; + } + if (uiInfo.skillIndex >= numSkillLevels) { + uiInfo.skillIndex = 0; + } else if (uiInfo.skillIndex < 0) { + uiInfo.skillIndex = numSkillLevels-1; + } + return qtrue; + } + return qfalse; +} + +static qboolean UI_RedBlue_HandleKey(int flags, float *special, int key) { + if (key == K_MOUSE1 || key == K_MOUSE2 || key == K_ENTER || key == K_KP_ENTER) { + uiInfo.redBlue ^= 1; + return qtrue; + } + return qfalse; +} + +static qboolean UI_Crosshair_HandleKey(int flags, float *special, int key) { + if (key == K_MOUSE1 || key == K_MOUSE2 || key == K_ENTER || key == K_KP_ENTER) { + if (key == K_MOUSE2) { + uiInfo.currentCrosshair--; + } else { + uiInfo.currentCrosshair++; + } + + if (uiInfo.currentCrosshair >= NUM_CROSSHAIRS) { + uiInfo.currentCrosshair = 0; + } else if (uiInfo.currentCrosshair < 0) { + uiInfo.currentCrosshair = NUM_CROSSHAIRS - 1; + } + trap_Cvar_Set("cg_drawCrosshair", va("%d", uiInfo.currentCrosshair)); + return qtrue; + } + return qfalse; +} + + + +static qboolean UI_SelectedPlayer_HandleKey(int flags, float *special, int key) { + if (key == K_MOUSE1 || key == K_MOUSE2 || key == K_ENTER || key == K_KP_ENTER) { + int selected; + + UI_BuildPlayerList(); + if (!uiInfo.teamLeader) { + return qfalse; + } + selected = trap_Cvar_VariableValue("cg_selectedPlayer"); + + if (key == K_MOUSE2) { + selected--; + } else { + selected++; + } + + if (selected > uiInfo.myTeamCount) { + selected = 0; + } else if (selected < 0) { + selected = uiInfo.myTeamCount; + } + + if (selected == uiInfo.myTeamCount) { + trap_Cvar_Set( "cg_selectedPlayerName", "Everyone"); + } else { + trap_Cvar_Set( "cg_selectedPlayerName", uiInfo.teamNames[selected]); + } + trap_Cvar_Set( "cg_selectedPlayer", va("%d", selected)); + } + return qfalse; +} + + +static qboolean UI_OwnerDrawHandleKey(int ownerDraw, int flags, float *special, int key) { + switch (ownerDraw) { + case UI_HANDICAP: + return UI_Handicap_HandleKey(flags, special, key); + break; + case UI_EFFECTS: + return UI_Effects_HandleKey(flags, special, key); + break; + case UI_CLANNAME: + return UI_ClanName_HandleKey(flags, special, key); + break; + case UI_GAMETYPE: + return UI_GameType_HandleKey(flags, special, key, qtrue); + break; + case UI_NETGAMETYPE: + return UI_NetGameType_HandleKey(flags, special, key); + break; + case UI_JOINGAMETYPE: + return UI_JoinGameType_HandleKey(flags, special, key); + break; + case UI_SKILL: + return UI_Skill_HandleKey(flags, special, key); + break; + case UI_BLUETEAMNAME: + return UI_TeamName_HandleKey(flags, special, key, qtrue); + break; + case UI_REDTEAMNAME: + return UI_TeamName_HandleKey(flags, special, key, qfalse); + break; + case UI_BLUETEAM1: + case UI_BLUETEAM2: + case UI_BLUETEAM3: + case UI_BLUETEAM4: + case UI_BLUETEAM5: + UI_TeamMember_HandleKey(flags, special, key, qtrue, ownerDraw - UI_BLUETEAM1 + 1); + break; + case UI_REDTEAM1: + case UI_REDTEAM2: + case UI_REDTEAM3: + case UI_REDTEAM4: + case UI_REDTEAM5: + UI_TeamMember_HandleKey(flags, special, key, qfalse, ownerDraw - UI_REDTEAM1 + 1); + break; + case UI_NETSOURCE: + UI_NetSource_HandleKey(flags, special, key); + break; + case UI_NETFILTER: + UI_NetFilter_HandleKey(flags, special, key); + break; + case UI_OPPONENT_NAME: + UI_OpponentName_HandleKey(flags, special, key); + break; + case UI_BOTNAME: + return UI_BotName_HandleKey(flags, special, key); + break; + case UI_BOTSKILL: + return UI_BotSkill_HandleKey(flags, special, key); + break; + case UI_REDBLUE: + UI_RedBlue_HandleKey(flags, special, key); + break; + case UI_CROSSHAIR: + UI_Crosshair_HandleKey(flags, special, key); + break; + case UI_SELECTEDPLAYER: + UI_SelectedPlayer_HandleKey(flags, special, key); + break; + default: + break; + } + + return qfalse; +} + + +static float UI_GetValue(int ownerDraw) { + return 0; +} + +/* +================= +UI_ServersQsortCompare +================= +*/ +static int QDECL UI_ServersQsortCompare( const void *arg1, const void *arg2 ) { + return trap_LAN_CompareServers( ui_netSource.integer, uiInfo.serverStatus.sortKey, uiInfo.serverStatus.sortDir, *(int*)arg1, *(int*)arg2); +} + + +/* +================= +UI_ServersSort +================= +*/ +void UI_ServersSort(int column, qboolean force) { + + if ( !force ) { + if ( uiInfo.serverStatus.sortKey == column ) { + return; + } + } + + uiInfo.serverStatus.sortKey = column; + qsort( &uiInfo.serverStatus.displayServers[0], uiInfo.serverStatus.numDisplayServers, sizeof(int), UI_ServersQsortCompare); +} + +/* +static void UI_StartSinglePlayer() { + int i,j, k, skill; + char buff[1024]; + i = trap_Cvar_VariableValue( "ui_currentTier" ); + if (i < 0 || i >= tierCount) { + i = 0; + } + j = trap_Cvar_VariableValue("ui_currentMap"); + if (j < 0 || j > MAPS_PER_TIER) { + j = 0; + } + + trap_Cvar_SetValue( "singleplayer", 1 ); + trap_Cvar_SetValue( "g_gametype", Com_Clamp( 0, 7, tierList[i].gameTypes[j] ) ); + trap_Cmd_ExecuteText( EXEC_APPEND, va( "wait ; wait ; map %s\n", tierList[i].maps[j] ) ); + skill = trap_Cvar_VariableValue( "g_spSkill" ); + + if (j == MAPS_PER_TIER-1) { + k = UI_TeamIndexFromName(UI_Cvar_VariableString("ui_opponentName")); + Com_sprintf( buff, sizeof(buff), "wait ; addbot %s %i %s 250 %s\n", UI_AIFromName(teamList[k].teamMembers[0]), skill, "", teamList[k].teamMembers[0]); + } else { + k = UI_TeamIndexFromName(UI_Cvar_VariableString("ui_opponentName")); + for (i = 0; i < PLAYERS_PER_TEAM; i++) { + Com_sprintf( buff, sizeof(buff), "wait ; addbot %s %i %s 250 %s\n", UI_AIFromName(teamList[k].teamMembers[i]), skill, "Blue", teamList[k].teamMembers[i]); + trap_Cmd_ExecuteText( EXEC_APPEND, buff ); + } + + k = UI_TeamIndexFromName(UI_Cvar_VariableString("ui_teamName")); + for (i = 1; i < PLAYERS_PER_TEAM; i++) { + Com_sprintf( buff, sizeof(buff), "wait ; addbot %s %i %s 250 %s\n", UI_AIFromName(teamList[k].teamMembers[i]), skill, "Red", teamList[k].teamMembers[i]); + trap_Cmd_ExecuteText( EXEC_APPEND, buff ); + } + trap_Cmd_ExecuteText( EXEC_APPEND, "wait 5; team Red\n" ); + } + + +} +*/ + +/* +=============== +UI_LoadMods +=============== +*/ +static void UI_LoadMods() { + int numdirs; + char dirlist[2048]; + char *dirptr; + char *descptr; + int i; + int dirlen; + + uiInfo.modCount = 0; + numdirs = trap_FS_GetFileList( "$modlist", "", dirlist, sizeof(dirlist) ); + dirptr = dirlist; + for( i = 0; i < numdirs; i++ ) { + dirlen = strlen( dirptr ) + 1; + descptr = dirptr + dirlen; + uiInfo.modList[uiInfo.modCount].modName = String_Alloc(dirptr); + uiInfo.modList[uiInfo.modCount].modDescr = String_Alloc(descptr); + dirptr += dirlen + strlen(descptr) + 1; + uiInfo.modCount++; + if (uiInfo.modCount >= MAX_MODS) { + break; + } + } + +} + + +/* +=============== +UI_LoadTeams +=============== +*/ +static void UI_LoadTeams() { + char teamList[4096]; + char *teamName; + int i, len, count; + + count = trap_FS_GetFileList( "", "team", teamList, 4096 ); + + if (count) { + teamName = teamList; + for ( i = 0; i < count; i++ ) { + len = strlen( teamName ); + UI_ParseTeamInfo(teamName); + teamName += len + 1; + } + } + +} + + +/* +=============== +UI_LoadMovies +=============== +*/ +static void UI_LoadMovies() { + char movielist[4096]; + char *moviename; + int i, len; + + uiInfo.movieCount = trap_FS_GetFileList( "video", "roq", movielist, 4096 ); + + if (uiInfo.movieCount) { + if (uiInfo.movieCount > MAX_MOVIES) { + uiInfo.movieCount = MAX_MOVIES; + } + moviename = movielist; + for ( i = 0; i < uiInfo.movieCount; i++ ) { + len = strlen( moviename ); + if (!Q_stricmp(moviename + len - 4,".roq")) { + moviename[len-4] = '\0'; + } + Q_strupr(moviename); + uiInfo.movieList[i] = String_Alloc(moviename); + moviename += len + 1; + } + } + +} + + + +/* +=============== +UI_LoadDemos +=============== +*/ +static void UI_LoadDemos() { + char demolist[4096]; + char demoExt[32]; + char *demoname; + int i, len; + + Com_sprintf(demoExt, sizeof(demoExt), "dm_%d", (int)trap_Cvar_VariableValue("protocol")); + + uiInfo.demoCount = trap_FS_GetFileList( "demos", demoExt, demolist, 4096 ); + + Com_sprintf(demoExt, sizeof(demoExt), ".dm_%d", (int)trap_Cvar_VariableValue("protocol")); + + if (uiInfo.demoCount) { + if (uiInfo.demoCount > MAX_DEMOS) { + uiInfo.demoCount = MAX_DEMOS; + } + demoname = demolist; + for ( i = 0; i < uiInfo.demoCount; i++ ) { + len = strlen( demoname ); + if (!Q_stricmp(demoname + len - strlen(demoExt), demoExt)) { + demoname[len-strlen(demoExt)] = '\0'; + } + Q_strupr(demoname); + uiInfo.demoList[i] = String_Alloc(demoname); + demoname += len + 1; + } + } + +} + + +static qboolean UI_SetNextMap(int actual, int index) { + int i; + for (i = actual + 1; i < uiInfo.mapCount; i++) { + if (uiInfo.mapList[i].active) { + Menu_SetFeederSelection(NULL, FEEDER_MAPS, index + 1, "skirmish"); + return qtrue; + } + } + return qfalse; +} + + +static void UI_StartSkirmish(qboolean next) { + int i, k, g, delay, temp; + float skill; + char buff[MAX_STRING_CHARS]; + + if (next) { + int actual; + int index = trap_Cvar_VariableValue("ui_mapIndex"); + UI_MapCountByGameType(qtrue); + UI_SelectedMap(index, &actual); + if (UI_SetNextMap(actual, index)) { + } else { + UI_GameType_HandleKey(0, 0, K_MOUSE1, qfalse); + UI_MapCountByGameType(qtrue); + Menu_SetFeederSelection(NULL, FEEDER_MAPS, 0, "skirmish"); + } + } + + g = uiInfo.gameTypes[ui_gameType.integer].gtEnum; + trap_Cvar_SetValue( "g_gametype", g ); + trap_Cmd_ExecuteText( EXEC_APPEND, va( "wait ; wait ; map %s\n", uiInfo.mapList[ui_currentMap.integer].mapLoadName) ); + skill = trap_Cvar_VariableValue( "g_spSkill" ); + trap_Cvar_Set("ui_scoreMap", uiInfo.mapList[ui_currentMap.integer].mapName); + + k = UI_TeamIndexFromName(UI_Cvar_VariableString("ui_opponentName")); + + trap_Cvar_Set("ui_singlePlayerActive", "1"); + + // set up sp overrides, will be replaced on postgame + temp = trap_Cvar_VariableValue( "capturelimit" ); + trap_Cvar_Set("ui_saveCaptureLimit", va("%i", temp)); + temp = trap_Cvar_VariableValue( "fraglimit" ); + trap_Cvar_Set("ui_saveFragLimit", va("%i", temp)); + + UI_SetCapFragLimits(qfalse); + + temp = trap_Cvar_VariableValue( "cg_drawTimer" ); + trap_Cvar_Set("ui_drawTimer", va("%i", temp)); + temp = trap_Cvar_VariableValue( "g_doWarmup" ); + trap_Cvar_Set("ui_doWarmup", va("%i", temp)); + temp = trap_Cvar_VariableValue( "g_friendlyFire" ); + trap_Cvar_Set("ui_friendlyFire", va("%i", temp)); + temp = trap_Cvar_VariableValue( "sv_maxClients" ); + trap_Cvar_Set("ui_maxClients", va("%i", temp)); + temp = trap_Cvar_VariableValue( "g_warmup" ); + trap_Cvar_Set("ui_Warmup", va("%i", temp)); + temp = trap_Cvar_VariableValue( "sv_pure" ); + trap_Cvar_Set("ui_pure", va("%i", temp)); + + trap_Cvar_Set("cg_cameraOrbit", "0"); + trap_Cvar_Set("cg_thirdPerson", "0"); + trap_Cvar_Set("cg_drawTimer", "1"); + trap_Cvar_Set("g_doWarmup", "1"); + trap_Cvar_Set("g_warmup", "15"); + trap_Cvar_Set("sv_pure", "0"); + trap_Cvar_Set("g_friendlyFire", "0"); + trap_Cvar_Set("g_redTeam", UI_Cvar_VariableString("ui_teamName")); + trap_Cvar_Set("g_blueTeam", UI_Cvar_VariableString("ui_opponentName")); + + if (trap_Cvar_VariableValue("ui_recordSPDemo")) { + Com_sprintf(buff, MAX_STRING_CHARS, "%s_%i", uiInfo.mapList[ui_currentMap.integer].mapLoadName, g); + trap_Cvar_Set("ui_recordSPDemoName", buff); + } + + delay = 500; + + if (g == GT_TOURNAMENT) { + trap_Cvar_Set("sv_maxClients", "2"); + Com_sprintf( buff, sizeof(buff), "wait ; addbot %s %f "", %i \n", uiInfo.mapList[ui_currentMap.integer].opponentName, skill, delay); + trap_Cmd_ExecuteText( EXEC_APPEND, buff ); + } else { + temp = uiInfo.mapList[ui_currentMap.integer].teamMembers * 2; + trap_Cvar_Set("sv_maxClients", va("%d", temp)); + for (i =0; i < uiInfo.mapList[ui_currentMap.integer].teamMembers; i++) { + Com_sprintf( buff, sizeof(buff), "addbot %s %f %s %i %s\n", UI_AIFromName(uiInfo.teamList[k].teamMembers[i]), skill, (g == GT_FFA) ? "" : "Blue", delay, uiInfo.teamList[k].teamMembers[i]); + trap_Cmd_ExecuteText( EXEC_APPEND, buff ); + delay += 500; + } + k = UI_TeamIndexFromName(UI_Cvar_VariableString("ui_teamName")); + for (i =0; i < uiInfo.mapList[ui_currentMap.integer].teamMembers-1; i++) { + Com_sprintf( buff, sizeof(buff), "addbot %s %f %s %i %s\n", UI_AIFromName(uiInfo.teamList[k].teamMembers[i]), skill, (g == GT_FFA) ? "" : "Red", delay, uiInfo.teamList[k].teamMembers[i]); + trap_Cmd_ExecuteText( EXEC_APPEND, buff ); + delay += 500; + } + } + if (g >= GT_TEAM ) { + trap_Cmd_ExecuteText( EXEC_APPEND, "wait 5; team Red\n" ); + } +} + +static void UI_Update(const char *name) { + int val = trap_Cvar_VariableValue(name); + + if (Q_stricmp(name, "ui_SetName") == 0) { + trap_Cvar_Set( "name", UI_Cvar_VariableString("ui_Name")); + } else if (Q_stricmp(name, "ui_setRate") == 0) { + float rate = trap_Cvar_VariableValue("rate"); + if (rate >= 5000) { + trap_Cvar_Set("cl_maxpackets", "30"); + trap_Cvar_Set("cl_packetdup", "1"); + } else if (rate >= 4000) { + trap_Cvar_Set("cl_maxpackets", "15"); + trap_Cvar_Set("cl_packetdup", "2"); // favor less prediction errors when there's packet loss + } else { + trap_Cvar_Set("cl_maxpackets", "15"); + trap_Cvar_Set("cl_packetdup", "1"); // favor lower bandwidth + } + } else if (Q_stricmp(name, "ui_GetName") == 0) { + trap_Cvar_Set( "ui_Name", UI_Cvar_VariableString("name")); + } else if (Q_stricmp(name, "r_colorbits") == 0) { + switch (val) { + case 0: + trap_Cvar_SetValue( "r_depthbits", 0 ); + trap_Cvar_SetValue( "r_stencilbits", 0 ); + break; + case 16: + trap_Cvar_SetValue( "r_depthbits", 16 ); + trap_Cvar_SetValue( "r_stencilbits", 0 ); + break; + case 32: + trap_Cvar_SetValue( "r_depthbits", 24 ); + break; + } + } else if (Q_stricmp(name, "r_lodbias") == 0) { + switch (val) { + case 0: + trap_Cvar_SetValue( "r_subdivisions", 4 ); + break; + case 1: + trap_Cvar_SetValue( "r_subdivisions", 12 ); + break; + case 2: + trap_Cvar_SetValue( "r_subdivisions", 20 ); + break; + } + } else if (Q_stricmp(name, "ui_glCustom") == 0) { + switch (val) { + case 0: // high quality + trap_Cvar_SetValue( "r_fullScreen", 1 ); + trap_Cvar_SetValue( "r_subdivisions", 4 ); + trap_Cvar_SetValue( "r_vertexlight", 0 ); + trap_Cvar_SetValue( "r_lodbias", 0 ); + trap_Cvar_SetValue( "r_colorbits", 32 ); + trap_Cvar_SetValue( "r_depthbits", 24 ); + trap_Cvar_SetValue( "r_picmip", 0 ); + trap_Cvar_SetValue( "r_mode", 4 ); + trap_Cvar_SetValue( "r_texturebits", 32 ); + trap_Cvar_SetValue( "r_fastSky", 0 ); + trap_Cvar_SetValue( "r_inGameVideo", 1 ); + trap_Cvar_SetValue( "cg_shadows", 1 ); + trap_Cvar_SetValue( "cg_brassTime", 2500 ); + trap_Cvar_Set( "r_texturemode", "GL_LINEAR_MIPMAP_LINEAR" ); + break; + case 1: // normal + trap_Cvar_SetValue( "r_fullScreen", 1 ); + trap_Cvar_SetValue( "r_subdivisions", 12 ); + trap_Cvar_SetValue( "r_vertexlight", 0 ); + trap_Cvar_SetValue( "r_lodbias", 0 ); + trap_Cvar_SetValue( "r_colorbits", 0 ); + trap_Cvar_SetValue( "r_depthbits", 24 ); + trap_Cvar_SetValue( "r_picmip", 1 ); + trap_Cvar_SetValue( "r_mode", 3 ); + trap_Cvar_SetValue( "r_texturebits", 0 ); + trap_Cvar_SetValue( "r_fastSky", 0 ); + trap_Cvar_SetValue( "r_inGameVideo", 1 ); + trap_Cvar_SetValue( "cg_brassTime", 2500 ); + trap_Cvar_Set( "r_texturemode", "GL_LINEAR_MIPMAP_LINEAR" ); + trap_Cvar_SetValue( "cg_shadows", 0 ); + break; + case 2: // fast + trap_Cvar_SetValue( "r_fullScreen", 1 ); + trap_Cvar_SetValue( "r_subdivisions", 8 ); + trap_Cvar_SetValue( "r_vertexlight", 0 ); + trap_Cvar_SetValue( "r_lodbias", 1 ); + trap_Cvar_SetValue( "r_colorbits", 0 ); + trap_Cvar_SetValue( "r_depthbits", 0 ); + trap_Cvar_SetValue( "r_picmip", 1 ); + trap_Cvar_SetValue( "r_mode", 3 ); + trap_Cvar_SetValue( "r_texturebits", 0 ); + trap_Cvar_SetValue( "cg_shadows", 0 ); + trap_Cvar_SetValue( "r_fastSky", 1 ); + trap_Cvar_SetValue( "r_inGameVideo", 0 ); + trap_Cvar_SetValue( "cg_brassTime", 0 ); + trap_Cvar_Set( "r_texturemode", "GL_LINEAR_MIPMAP_NEAREST" ); + break; + case 3: // fastest + trap_Cvar_SetValue( "r_fullScreen", 1 ); + trap_Cvar_SetValue( "r_subdivisions", 20 ); + trap_Cvar_SetValue( "r_vertexlight", 1 ); + trap_Cvar_SetValue( "r_lodbias", 2 ); + trap_Cvar_SetValue( "r_colorbits", 16 ); + trap_Cvar_SetValue( "r_depthbits", 16 ); + trap_Cvar_SetValue( "r_mode", 3 ); + trap_Cvar_SetValue( "r_picmip", 2 ); + trap_Cvar_SetValue( "r_texturebits", 16 ); + trap_Cvar_SetValue( "cg_shadows", 0 ); + trap_Cvar_SetValue( "cg_brassTime", 0 ); + trap_Cvar_SetValue( "r_fastSky", 1 ); + trap_Cvar_SetValue( "r_inGameVideo", 0 ); + trap_Cvar_Set( "r_texturemode", "GL_LINEAR_MIPMAP_NEAREST" ); + break; + } + } else if (Q_stricmp(name, "ui_mousePitch") == 0) { + if (val == 0) { + trap_Cvar_SetValue( "m_pitch", 0.022f ); + } else { + trap_Cvar_SetValue( "m_pitch", -0.022f ); + } + } +} + +static void UI_RunMenuScript(char **args) { + const char *name, *name2; + char buff[1024]; + + if (String_Parse(args, &name)) { + if (Q_stricmp(name, "StartServer") == 0) { + int i, clients, oldclients; + float skill; + trap_Cvar_Set("cg_thirdPerson", "0"); + trap_Cvar_Set("cg_cameraOrbit", "0"); + trap_Cvar_Set("ui_singlePlayerActive", "0"); + trap_Cvar_SetValue( "dedicated", Com_Clamp( 0, 2, ui_dedicated.integer ) ); + trap_Cvar_SetValue( "g_gametype", Com_Clamp( 0, 8, uiInfo.gameTypes[ui_netGameType.integer].gtEnum ) ); + trap_Cvar_Set("g_redTeam", UI_Cvar_VariableString("ui_teamName")); + trap_Cvar_Set("g_blueTeam", UI_Cvar_VariableString("ui_opponentName")); + trap_Cmd_ExecuteText( EXEC_APPEND, va( "wait ; wait ; map %s\n", uiInfo.mapList[ui_currentNetMap.integer].mapLoadName ) ); + skill = trap_Cvar_VariableValue( "g_spSkill" ); + // set max clients based on spots + oldclients = trap_Cvar_VariableValue( "sv_maxClients" ); + clients = 0; + for (i = 0; i < PLAYERS_PER_TEAM; i++) { + int bot = trap_Cvar_VariableValue( va("ui_blueteam%i", i+1)); + if (bot >= 0) { + clients++; + } + bot = trap_Cvar_VariableValue( va("ui_redteam%i", i+1)); + if (bot >= 0) { + clients++; + } + } + if (clients == 0) { + clients = 8; + } + + if (oldclients > clients) { + clients = oldclients; + } + + trap_Cvar_Set("sv_maxClients", va("%d",clients)); + + for (i = 0; i < PLAYERS_PER_TEAM; i++) { + int bot = trap_Cvar_VariableValue( va("ui_blueteam%i", i+1)); + if (bot > 1) { + if (ui_actualNetGameType.integer >= GT_TEAM) { + Com_sprintf( buff, sizeof(buff), "addbot %s %f %s\n", uiInfo.characterList[bot-2].name, skill, "Blue"); + } else { + Com_sprintf( buff, sizeof(buff), "addbot %s %f \n", UI_GetBotNameByNumber(bot-2), skill); + } + trap_Cmd_ExecuteText( EXEC_APPEND, buff ); + } + bot = trap_Cvar_VariableValue( va("ui_redteam%i", i+1)); + if (bot > 1) { + if (ui_actualNetGameType.integer >= GT_TEAM) { + Com_sprintf( buff, sizeof(buff), "addbot %s %f %s\n", uiInfo.characterList[bot-2].name, skill, "Red"); + } else { + Com_sprintf( buff, sizeof(buff), "addbot %s %f \n", UI_GetBotNameByNumber(bot-2), skill); + } + trap_Cmd_ExecuteText( EXEC_APPEND, buff ); + } + } + } else if (Q_stricmp(name, "updateSPMenu") == 0) { + UI_SetCapFragLimits(qtrue); + UI_MapCountByGameType(qtrue); + ui_mapIndex.integer = UI_GetIndexFromSelection(ui_currentMap.integer); + trap_Cvar_Set("ui_mapIndex", va("%d", ui_mapIndex.integer)); + Menu_SetFeederSelection(NULL, FEEDER_MAPS, ui_mapIndex.integer, "skirmish"); + UI_GameType_HandleKey(0, 0, K_MOUSE1, qfalse); + UI_GameType_HandleKey(0, 0, K_MOUSE2, qfalse); + } else if (Q_stricmp(name, "resetDefaults") == 0) { + trap_Cmd_ExecuteText( EXEC_APPEND, "exec default.cfg\n"); + trap_Cmd_ExecuteText( EXEC_APPEND, "cvar_restart\n"); + Controls_SetDefaults(); + trap_Cvar_Set("com_introPlayed", "1" ); + trap_Cmd_ExecuteText( EXEC_APPEND, "vid_restart\n" ); + } else if (Q_stricmp(name, "getCDKey") == 0) { + char out[17]; + trap_GetCDKey(buff, 17); + trap_Cvar_Set("cdkey1", ""); + trap_Cvar_Set("cdkey2", ""); + trap_Cvar_Set("cdkey3", ""); + trap_Cvar_Set("cdkey4", ""); + if (strlen(buff) == CDKEY_LEN) { + Q_strncpyz(out, buff, 5); + trap_Cvar_Set("cdkey1", out); + Q_strncpyz(out, buff + 4, 5); + trap_Cvar_Set("cdkey2", out); + Q_strncpyz(out, buff + 8, 5); + trap_Cvar_Set("cdkey3", out); + Q_strncpyz(out, buff + 12, 5); + trap_Cvar_Set("cdkey4", out); + } + + } else if (Q_stricmp(name, "verifyCDKey") == 0) { + buff[0] = '\0'; + Q_strcat(buff, 1024, UI_Cvar_VariableString("cdkey1")); + Q_strcat(buff, 1024, UI_Cvar_VariableString("cdkey2")); + Q_strcat(buff, 1024, UI_Cvar_VariableString("cdkey3")); + Q_strcat(buff, 1024, UI_Cvar_VariableString("cdkey4")); + trap_Cvar_Set("cdkey", buff); + if (trap_VerifyCDKey(buff, UI_Cvar_VariableString("cdkeychecksum"))) { + trap_Cvar_Set("ui_cdkeyvalid", "CD Key Appears to be valid."); + trap_SetCDKey(buff); + } else { + trap_Cvar_Set("ui_cdkeyvalid", "CD Key does not appear to be valid."); + } + } else if (Q_stricmp(name, "loadArenas") == 0) { + UI_LoadArenas(); + UI_MapCountByGameType(qfalse); + Menu_SetFeederSelection(NULL, FEEDER_ALLMAPS, 0, "createserver"); + } else if (Q_stricmp(name, "saveControls") == 0) { + Controls_SetConfig(qtrue); + } else if (Q_stricmp(name, "loadControls") == 0) { + Controls_GetConfig(); + } else if (Q_stricmp(name, "clearError") == 0) { + trap_Cvar_Set("com_errorMessage", ""); + } else if (Q_stricmp(name, "loadGameInfo") == 0) { +#ifdef PRE_RELEASE_TADEMO + UI_ParseGameInfo("demogameinfo.txt"); +#else + UI_ParseGameInfo("gameinfo.txt"); +#endif + UI_LoadBestScores(uiInfo.mapList[ui_currentMap.integer].mapLoadName, uiInfo.gameTypes[ui_gameType.integer].gtEnum); + } else if (Q_stricmp(name, "resetScores") == 0) { + UI_ClearScores(); + } else if (Q_stricmp(name, "RefreshServers") == 0) { + UI_StartServerRefresh(qtrue); + UI_BuildServerDisplayList(qtrue); + } else if (Q_stricmp(name, "RefreshFilter") == 0) { + UI_StartServerRefresh(qfalse); + UI_BuildServerDisplayList(qtrue); + } else if (Q_stricmp(name, "RunSPDemo") == 0) { + if (uiInfo.demoAvailable) { + trap_Cmd_ExecuteText( EXEC_APPEND, va("demo %s_%i\n", uiInfo.mapList[ui_currentMap.integer].mapLoadName, uiInfo.gameTypes[ui_gameType.integer].gtEnum)); + } + } else if (Q_stricmp(name, "LoadDemos") == 0) { + UI_LoadDemos(); + } else if (Q_stricmp(name, "LoadMovies") == 0) { + UI_LoadMovies(); + } else if (Q_stricmp(name, "LoadMods") == 0) { + UI_LoadMods(); + } else if (Q_stricmp(name, "playMovie") == 0) { + if (uiInfo.previewMovie >= 0) { + trap_CIN_StopCinematic(uiInfo.previewMovie); + } + trap_Cmd_ExecuteText( EXEC_APPEND, va("cinematic %s.roq 2\n", uiInfo.movieList[uiInfo.movieIndex])); + } else if (Q_stricmp(name, "RunMod") == 0) { + trap_Cvar_Set( "fs_game", uiInfo.modList[uiInfo.modIndex].modName); + trap_Cmd_ExecuteText( EXEC_APPEND, "vid_restart;" ); + } else if (Q_stricmp(name, "RunDemo") == 0) { + trap_Cmd_ExecuteText( EXEC_APPEND, va("demo %s\n", uiInfo.demoList[uiInfo.demoIndex])); + } else if (Q_stricmp(name, "Quake3") == 0) { + trap_Cvar_Set( "fs_game", ""); + trap_Cmd_ExecuteText( EXEC_APPEND, "vid_restart;" ); + } else if (Q_stricmp(name, "closeJoin") == 0) { + if (uiInfo.serverStatus.refreshActive) { + UI_StopServerRefresh(); + uiInfo.serverStatus.nextDisplayRefresh = 0; + uiInfo.nextServerStatusRefresh = 0; + uiInfo.nextFindPlayerRefresh = 0; + UI_BuildServerDisplayList(qtrue); + } else { + Menus_CloseByName("joinserver"); + Menus_OpenByName("main"); + } + } else if (Q_stricmp(name, "StopRefresh") == 0) { + UI_StopServerRefresh(); + uiInfo.serverStatus.nextDisplayRefresh = 0; + uiInfo.nextServerStatusRefresh = 0; + uiInfo.nextFindPlayerRefresh = 0; + } else if (Q_stricmp(name, "UpdateFilter") == 0) { + if (ui_netSource.integer == AS_LOCAL) { + UI_StartServerRefresh(qtrue); + } + UI_BuildServerDisplayList(qtrue); + UI_FeederSelection(FEEDER_SERVERS, 0); + } else if (Q_stricmp(name, "ServerStatus") == 0) { + trap_LAN_GetServerAddressString(ui_netSource.integer, uiInfo.serverStatus.displayServers[uiInfo.serverStatus.currentServer], uiInfo.serverStatusAddress, sizeof(uiInfo.serverStatusAddress)); + UI_BuildServerStatus(qtrue); + } else if (Q_stricmp(name, "FoundPlayerServerStatus") == 0) { + Q_strncpyz(uiInfo.serverStatusAddress, uiInfo.foundPlayerServerAddresses[uiInfo.currentFoundPlayerServer], sizeof(uiInfo.serverStatusAddress)); + UI_BuildServerStatus(qtrue); + Menu_SetFeederSelection(NULL, FEEDER_FINDPLAYER, 0, NULL); + } else if (Q_stricmp(name, "FindPlayer") == 0) { + UI_BuildFindPlayerList(qtrue); + // clear the displayed server status info + uiInfo.serverStatusInfo.numLines = 0; + Menu_SetFeederSelection(NULL, FEEDER_FINDPLAYER, 0, NULL); + } else if (Q_stricmp(name, "JoinServer") == 0) { + trap_Cvar_Set("cg_thirdPerson", "0"); + trap_Cvar_Set("cg_cameraOrbit", "0"); + trap_Cvar_Set("ui_singlePlayerActive", "0"); + if (uiInfo.serverStatus.currentServer >= 0 && uiInfo.serverStatus.currentServer < uiInfo.serverStatus.numDisplayServers) { + trap_LAN_GetServerAddressString(ui_netSource.integer, uiInfo.serverStatus.displayServers[uiInfo.serverStatus.currentServer], buff, 1024); + trap_Cmd_ExecuteText( EXEC_APPEND, va( "connect %s\n", buff ) ); + } + } else if (Q_stricmp(name, "FoundPlayerJoinServer") == 0) { + trap_Cvar_Set("ui_singlePlayerActive", "0"); + if (uiInfo.currentFoundPlayerServer >= 0 && uiInfo.currentFoundPlayerServer < uiInfo.numFoundPlayerServers) { + trap_Cmd_ExecuteText( EXEC_APPEND, va( "connect %s\n", uiInfo.foundPlayerServerAddresses[uiInfo.currentFoundPlayerServer] ) ); + } + } else if (Q_stricmp(name, "Quit") == 0) { + trap_Cvar_Set("ui_singlePlayerActive", "0"); + trap_Cmd_ExecuteText( EXEC_NOW, "quit"); + } else if (Q_stricmp(name, "Controls") == 0) { + trap_Cvar_Set( "cl_paused", "1" ); + trap_Key_SetCatcher( KEYCATCH_UI ); + Menus_CloseAll(); + Menus_ActivateByName("setup_menu2"); + } else if (Q_stricmp(name, "Leave") == 0) { + trap_Cmd_ExecuteText( EXEC_APPEND, "disconnect\n" ); + trap_Key_SetCatcher( KEYCATCH_UI ); + Menus_CloseAll(); + Menus_ActivateByName("main"); + } else if (Q_stricmp(name, "ServerSort") == 0) { + int sortColumn; + if (Int_Parse(args, &sortColumn)) { + // if same column we're already sorting on then flip the direction + if (sortColumn == uiInfo.serverStatus.sortKey) { + uiInfo.serverStatus.sortDir = !uiInfo.serverStatus.sortDir; + } + // make sure we sort again + UI_ServersSort(sortColumn, qtrue); + } + } else if (Q_stricmp(name, "nextSkirmish") == 0) { + UI_StartSkirmish(qtrue); + } else if (Q_stricmp(name, "SkirmishStart") == 0) { + UI_StartSkirmish(qfalse); + } else if (Q_stricmp(name, "closeingame") == 0) { + trap_Key_SetCatcher( trap_Key_GetCatcher() & ~KEYCATCH_UI ); + trap_Key_ClearStates(); + trap_Cvar_Set( "cl_paused", "0" ); + Menus_CloseAll(); + } else if (Q_stricmp(name, "voteMap") == 0) { + if (ui_currentNetMap.integer >=0 && ui_currentNetMap.integer < uiInfo.mapCount) { + trap_Cmd_ExecuteText( EXEC_APPEND, va("callvote map %s\n",uiInfo.mapList[ui_currentNetMap.integer].mapLoadName) ); + } + } else if (Q_stricmp(name, "voteKick") == 0) { + if (uiInfo.playerIndex >= 0 && uiInfo.playerIndex < uiInfo.playerCount) { + trap_Cmd_ExecuteText( EXEC_APPEND, va("callvote kick %s\n",uiInfo.playerNames[uiInfo.playerIndex]) ); + } + } else if (Q_stricmp(name, "voteGame") == 0) { + if (ui_netGameType.integer >= 0 && ui_netGameType.integer < uiInfo.numGameTypes) { + trap_Cmd_ExecuteText( EXEC_APPEND, va("callvote g_gametype %i\n",uiInfo.gameTypes[ui_netGameType.integer].gtEnum) ); + } + } else if (Q_stricmp(name, "voteLeader") == 0) { + if (uiInfo.teamIndex >= 0 && uiInfo.teamIndex < uiInfo.myTeamCount) { + trap_Cmd_ExecuteText( EXEC_APPEND, va("callteamvote leader %s\n",uiInfo.teamNames[uiInfo.teamIndex]) ); + } + } else if (Q_stricmp(name, "addBot") == 0) { + if (trap_Cvar_VariableValue("g_gametype") >= GT_TEAM) { + trap_Cmd_ExecuteText( EXEC_APPEND, va("addbot %s %i %s\n", uiInfo.characterList[uiInfo.botIndex].name, uiInfo.skillIndex+1, (uiInfo.redBlue == 0) ? "Red" : "Blue") ); + } else { + trap_Cmd_ExecuteText( EXEC_APPEND, va("addbot %s %i %s\n", UI_GetBotNameByNumber(uiInfo.botIndex), uiInfo.skillIndex+1, (uiInfo.redBlue == 0) ? "Red" : "Blue") ); + } + } else if (Q_stricmp(name, "addFavorite") == 0) { + if (ui_netSource.integer != AS_FAVORITES) { + char name[MAX_NAME_LENGTH]; + char addr[MAX_NAME_LENGTH]; + int res; + + trap_LAN_GetServerInfo(ui_netSource.integer, uiInfo.serverStatus.displayServers[uiInfo.serverStatus.currentServer], buff, MAX_STRING_CHARS); + name[0] = addr[0] = '\0'; + Q_strncpyz(name, Info_ValueForKey(buff, "hostname"), MAX_NAME_LENGTH); + Q_strncpyz(addr, Info_ValueForKey(buff, "addr"), MAX_NAME_LENGTH); + if (strlen(name) > 0 && strlen(addr) > 0) { + res = trap_LAN_AddServer(AS_FAVORITES, name, addr); + if (res == 0) { + // server already in the list + Com_Printf("Favorite already in list\n"); + } + else if (res == -1) { + // list full + Com_Printf("Favorite list full\n"); + } + else { + // successfully added + Com_Printf("Added favorite server %s\n", addr); + } + } + } + } else if (Q_stricmp(name, "deleteFavorite") == 0) { + if (ui_netSource.integer == AS_FAVORITES) { + char addr[MAX_NAME_LENGTH]; + trap_LAN_GetServerInfo(ui_netSource.integer, uiInfo.serverStatus.displayServers[uiInfo.serverStatus.currentServer], buff, MAX_STRING_CHARS); + addr[0] = '\0'; + Q_strncpyz(addr, Info_ValueForKey(buff, "addr"), MAX_NAME_LENGTH); + if (strlen(addr) > 0) { + trap_LAN_RemoveServer(AS_FAVORITES, addr); + } + } + } else if (Q_stricmp(name, "createFavorite") == 0) { + if (ui_netSource.integer == AS_FAVORITES) { + char name[MAX_NAME_LENGTH]; + char addr[MAX_NAME_LENGTH]; + int res; + + name[0] = addr[0] = '\0'; + Q_strncpyz(name, UI_Cvar_VariableString("ui_favoriteName"), MAX_NAME_LENGTH); + Q_strncpyz(addr, UI_Cvar_VariableString("ui_favoriteAddress"), MAX_NAME_LENGTH); + if (strlen(name) > 0 && strlen(addr) > 0) { + res = trap_LAN_AddServer(AS_FAVORITES, name, addr); + if (res == 0) { + // server already in the list + Com_Printf("Favorite already in list\n"); + } + else if (res == -1) { + // list full + Com_Printf("Favorite list full\n"); + } + else { + // successfully added + Com_Printf("Added favorite server %s\n", addr); + } + } + } + } else if (Q_stricmp(name, "orders") == 0) { + const char *orders; + if (String_Parse(args, &orders)) { + int selectedPlayer = trap_Cvar_VariableValue("cg_selectedPlayer"); + if (selectedPlayer < uiInfo.myTeamCount) { + strcpy(buff, orders); + trap_Cmd_ExecuteText( EXEC_APPEND, va(buff, uiInfo.teamClientNums[selectedPlayer]) ); + trap_Cmd_ExecuteText( EXEC_APPEND, "\n" ); + } else { + int i; + for (i = 0; i < uiInfo.myTeamCount; i++) { + if (Q_stricmp(UI_Cvar_VariableString("name"), uiInfo.teamNames[i]) == 0) { + continue; + } + strcpy(buff, orders); + trap_Cmd_ExecuteText( EXEC_APPEND, va(buff, uiInfo.teamNames[i]) ); + trap_Cmd_ExecuteText( EXEC_APPEND, "\n" ); + } + } + trap_Key_SetCatcher( trap_Key_GetCatcher() & ~KEYCATCH_UI ); + trap_Key_ClearStates(); + trap_Cvar_Set( "cl_paused", "0" ); + Menus_CloseAll(); + } + } else if (Q_stricmp(name, "voiceOrdersTeam") == 0) { + const char *orders; + if (String_Parse(args, &orders)) { + int selectedPlayer = trap_Cvar_VariableValue("cg_selectedPlayer"); + if (selectedPlayer == uiInfo.myTeamCount) { + trap_Cmd_ExecuteText( EXEC_APPEND, orders ); + trap_Cmd_ExecuteText( EXEC_APPEND, "\n" ); + } + trap_Key_SetCatcher( trap_Key_GetCatcher() & ~KEYCATCH_UI ); + trap_Key_ClearStates(); + trap_Cvar_Set( "cl_paused", "0" ); + Menus_CloseAll(); + } + } else if (Q_stricmp(name, "voiceOrders") == 0) { + const char *orders; + if (String_Parse(args, &orders)) { + int selectedPlayer = trap_Cvar_VariableValue("cg_selectedPlayer"); + if (selectedPlayer < uiInfo.myTeamCount) { + strcpy(buff, orders); + trap_Cmd_ExecuteText( EXEC_APPEND, va(buff, uiInfo.teamClientNums[selectedPlayer]) ); + trap_Cmd_ExecuteText( EXEC_APPEND, "\n" ); + } + trap_Key_SetCatcher( trap_Key_GetCatcher() & ~KEYCATCH_UI ); + trap_Key_ClearStates(); + trap_Cvar_Set( "cl_paused", "0" ); + Menus_CloseAll(); + } + } else if (Q_stricmp(name, "glCustom") == 0) { + trap_Cvar_Set("ui_glCustom", "4"); + } else if (Q_stricmp(name, "update") == 0) { + if (String_Parse(args, &name2)) { + UI_Update(name2); + } + else { + Com_Printf("unknown UI script %s\n", name); + } + } + } +} + +static void UI_GetTeamColor(vec4_t *color) { +} + +/* +================== +UI_MapCountByGameType +================== +*/ +static int UI_MapCountByGameType(qboolean singlePlayer) { + int i, c, game; + c = 0; + game = singlePlayer ? uiInfo.gameTypes[ui_gameType.integer].gtEnum : uiInfo.gameTypes[ui_netGameType.integer].gtEnum; + if (game == GT_SINGLE_PLAYER) { + game++; + } + if (game == GT_TEAM) { + game = GT_FFA; + } + + for (i = 0; i < uiInfo.mapCount; i++) { + uiInfo.mapList[i].active = qfalse; + if ( uiInfo.mapList[i].typeBits & (1 << game)) { + if (singlePlayer) { + if (!(uiInfo.mapList[i].typeBits & (1 << GT_SINGLE_PLAYER))) { + continue; + } + } + c++; + uiInfo.mapList[i].active = qtrue; + } + } + return c; +} + +qboolean UI_hasSkinForBase(const char *base, const char *team) { + char test[1024]; + + Com_sprintf( test, sizeof( test ), "models/players/%s/%s/lower_default.skin", base, team ); + + if (trap_FS_FOpenFile(test, 0, FS_READ)) { + return qtrue; + } + Com_sprintf( test, sizeof( test ), "models/players/characters/%s/%s/lower_default.skin", base, team ); + + if (trap_FS_FOpenFile(test, 0, FS_READ)) { + return qtrue; + } + return qfalse; +} + +/* +================== +UI_MapCountByTeam +================== +*/ +static int UI_HeadCountByTeam() { + static int init = 0; + int i, j, k, c, tIndex; + + c = 0; + if (!init) { + for (i = 0; i < uiInfo.characterCount; i++) { + uiInfo.characterList[i].reference = 0; + for (j = 0; j < uiInfo.teamCount; j++) { + if (UI_hasSkinForBase(uiInfo.characterList[i].base, uiInfo.teamList[j].teamName)) { + uiInfo.characterList[i].reference |= (1< uiInfo.serverStatus.numDisplayServers ) { + return; + } + // + uiInfo.serverStatus.numDisplayServers++; + for (i = uiInfo.serverStatus.numDisplayServers; i > position; i--) { + uiInfo.serverStatus.displayServers[i] = uiInfo.serverStatus.displayServers[i-1]; + } + uiInfo.serverStatus.displayServers[position] = num; +} + +/* +================== +UI_RemoveServerFromDisplayList +================== +*/ +static void UI_RemoveServerFromDisplayList(int num) { + int i, j; + + for (i = 0; i < uiInfo.serverStatus.numDisplayServers; i++) { + if (uiInfo.serverStatus.displayServers[i] == num) { + uiInfo.serverStatus.numDisplayServers--; + for (j = i; j < uiInfo.serverStatus.numDisplayServers; j++) { + uiInfo.serverStatus.displayServers[j] = uiInfo.serverStatus.displayServers[j+1]; + } + return; + } + } +} + +/* +================== +UI_BinaryServerInsertion +================== +*/ +static void UI_BinaryServerInsertion(int num) { + int mid, offset, res, len; + + // use binary search to insert server + len = uiInfo.serverStatus.numDisplayServers; + mid = len; + offset = 0; + res = 0; + while(mid > 0) { + mid = len >> 1; + // + res = trap_LAN_CompareServers( ui_netSource.integer, uiInfo.serverStatus.sortKey, + uiInfo.serverStatus.sortDir, num, uiInfo.serverStatus.displayServers[offset+mid]); + // if equal + if (res == 0) { + UI_InsertServerIntoDisplayList(num, offset+mid); + return; + } + // if larger + else if (res == 1) { + offset += mid; + len -= mid; + } + // if smaller + else { + len -= mid; + } + } + if (res == 1) { + offset++; + } + UI_InsertServerIntoDisplayList(num, offset); +} + +/* +================== +UI_BuildServerDisplayList +================== +*/ +static void UI_BuildServerDisplayList(qboolean force) { + int i, count, clients, maxClients, ping, game, len, visible; + char info[MAX_STRING_CHARS]; +// qboolean startRefresh = qtrue; TTimo: unused + static int numinvisible; + + if (!(force || uiInfo.uiDC.realTime > uiInfo.serverStatus.nextDisplayRefresh)) { + return; + } + // if we shouldn't reset + if ( force == 2 ) { + force = 0; + } + + // do motd updates here too + trap_Cvar_VariableStringBuffer( "cl_motdString", uiInfo.serverStatus.motd, sizeof(uiInfo.serverStatus.motd) ); + len = strlen(uiInfo.serverStatus.motd); + if (len == 0) { + strcpy(uiInfo.serverStatus.motd, "Welcome to Team Arena!"); + len = strlen(uiInfo.serverStatus.motd); + } + if (len != uiInfo.serverStatus.motdLen) { + uiInfo.serverStatus.motdLen = len; + uiInfo.serverStatus.motdWidth = -1; + } + + if (force) { + numinvisible = 0; + // clear number of displayed servers + uiInfo.serverStatus.numDisplayServers = 0; + uiInfo.serverStatus.numPlayersOnServers = 0; + // set list box index to zero + Menu_SetFeederSelection(NULL, FEEDER_SERVERS, 0, NULL); + // mark all servers as visible so we store ping updates for them + trap_LAN_MarkServerVisible(ui_netSource.integer, -1, qtrue); + } + + // get the server count (comes from the master) + count = trap_LAN_GetServerCount(ui_netSource.integer); + if (count == -1 || (ui_netSource.integer == AS_LOCAL && count == 0) ) { + // still waiting on a response from the master + uiInfo.serverStatus.numDisplayServers = 0; + uiInfo.serverStatus.numPlayersOnServers = 0; + uiInfo.serverStatus.nextDisplayRefresh = uiInfo.uiDC.realTime + 500; + return; + } + + visible = qfalse; + for (i = 0; i < count; i++) { + // if we already got info for this server + if (!trap_LAN_ServerIsVisible(ui_netSource.integer, i)) { + continue; + } + visible = qtrue; + // get the ping for this server + ping = trap_LAN_GetServerPing(ui_netSource.integer, i); + if (ping > 0 || ui_netSource.integer == AS_FAVORITES) { + + trap_LAN_GetServerInfo(ui_netSource.integer, i, info, MAX_STRING_CHARS); + + clients = atoi(Info_ValueForKey(info, "clients")); + uiInfo.serverStatus.numPlayersOnServers += clients; + + if (ui_browserShowEmpty.integer == 0) { + if (clients == 0) { + trap_LAN_MarkServerVisible(ui_netSource.integer, i, qfalse); + continue; + } + } + + if (ui_browserShowFull.integer == 0) { + maxClients = atoi(Info_ValueForKey(info, "sv_maxclients")); + if (clients == maxClients) { + trap_LAN_MarkServerVisible(ui_netSource.integer, i, qfalse); + continue; + } + } + + if (uiInfo.joinGameTypes[ui_joinGameType.integer].gtEnum != -1) { + game = atoi(Info_ValueForKey(info, "gametype")); + if (game != uiInfo.joinGameTypes[ui_joinGameType.integer].gtEnum) { + trap_LAN_MarkServerVisible(ui_netSource.integer, i, qfalse); + continue; + } + } + + if (ui_serverFilterType.integer > 0) { + if (Q_stricmp(Info_ValueForKey(info, "game"), serverFilters[ui_serverFilterType.integer].basedir) != 0) { + trap_LAN_MarkServerVisible(ui_netSource.integer, i, qfalse); + continue; + } + } + // make sure we never add a favorite server twice + if (ui_netSource.integer == AS_FAVORITES) { + UI_RemoveServerFromDisplayList(i); + } + // insert the server into the list + UI_BinaryServerInsertion(i); + // done with this server + if (ping > 0) { + trap_LAN_MarkServerVisible(ui_netSource.integer, i, qfalse); + numinvisible++; + } + } + } + + uiInfo.serverStatus.refreshtime = uiInfo.uiDC.realTime; + + // if there were no servers visible for ping updates + if (!visible) { +// UI_StopServerRefresh(); +// uiInfo.serverStatus.nextDisplayRefresh = 0; + } +} + +typedef struct +{ + char *name, *altName; +} serverStatusCvar_t; + +serverStatusCvar_t serverStatusCvars[] = { + {"sv_hostname", "Name"}, + {"Address", ""}, + {"gamename", "Game name"}, + {"g_gametype", "Game type"}, + {"mapname", "Map"}, + {"version", ""}, + {"protocol", ""}, + {"timelimit", ""}, + {"fraglimit", ""}, + {NULL, NULL} +}; + +/* +================== +UI_SortServerStatusInfo +================== +*/ +static void UI_SortServerStatusInfo( serverStatusInfo_t *info ) { + int i, j, index; + char *tmp1, *tmp2; + + // FIXME: if "gamename" == "baseq3" or "missionpack" then + // replace the gametype number by FFA, CTF etc. + // + index = 0; + for (i = 0; serverStatusCvars[i].name; i++) { + for (j = 0; j < info->numLines; j++) { + if ( !info->lines[j][1] || info->lines[j][1][0] ) { + continue; + } + if ( !Q_stricmp(serverStatusCvars[i].name, info->lines[j][0]) ) { + // swap lines + tmp1 = info->lines[index][0]; + tmp2 = info->lines[index][3]; + info->lines[index][0] = info->lines[j][0]; + info->lines[index][3] = info->lines[j][3]; + info->lines[j][0] = tmp1; + info->lines[j][3] = tmp2; + // + if ( strlen(serverStatusCvars[i].altName) ) { + info->lines[index][0] = serverStatusCvars[i].altName; + } + index++; + } + } + } +} + +/* +================== +UI_GetServerStatusInfo +================== +*/ +static int UI_GetServerStatusInfo( const char *serverAddress, serverStatusInfo_t *info ) { + char *p, *score, *ping, *name; + int i, len; + + if (!info) { + trap_LAN_ServerStatus( serverAddress, NULL, 0); + return qfalse; + } + memset(info, 0, sizeof(*info)); + if ( trap_LAN_ServerStatus( serverAddress, info->text, sizeof(info->text)) ) { + Q_strncpyz(info->address, serverAddress, sizeof(info->address)); + p = info->text; + info->numLines = 0; + info->lines[info->numLines][0] = "Address"; + info->lines[info->numLines][1] = ""; + info->lines[info->numLines][2] = ""; + info->lines[info->numLines][3] = info->address; + info->numLines++; + // get the cvars + while (p && *p) { + p = strchr(p, '\\'); + if (!p) break; + *p++ = '\0'; + if (*p == '\\') + break; + info->lines[info->numLines][0] = p; + info->lines[info->numLines][1] = ""; + info->lines[info->numLines][2] = ""; + p = strchr(p, '\\'); + if (!p) break; + *p++ = '\0'; + info->lines[info->numLines][3] = p; + + info->numLines++; + if (info->numLines >= MAX_SERVERSTATUS_LINES) + break; + } + // get the player list + if (info->numLines < MAX_SERVERSTATUS_LINES-3) { + // empty line + info->lines[info->numLines][0] = ""; + info->lines[info->numLines][1] = ""; + info->lines[info->numLines][2] = ""; + info->lines[info->numLines][3] = ""; + info->numLines++; + // header + info->lines[info->numLines][0] = "num"; + info->lines[info->numLines][1] = "score"; + info->lines[info->numLines][2] = "ping"; + info->lines[info->numLines][3] = "name"; + info->numLines++; + // parse players + i = 0; + len = 0; + while (p && *p) { + if (*p == '\\') + *p++ = '\0'; + if (!p) + break; + score = p; + p = strchr(p, ' '); + if (!p) + break; + *p++ = '\0'; + ping = p; + p = strchr(p, ' '); + if (!p) + break; + *p++ = '\0'; + name = p; + Com_sprintf(&info->pings[len], sizeof(info->pings)-len, "%d", i); + info->lines[info->numLines][0] = &info->pings[len]; + len += strlen(&info->pings[len]) + 1; + info->lines[info->numLines][1] = score; + info->lines[info->numLines][2] = ping; + info->lines[info->numLines][3] = name; + info->numLines++; + if (info->numLines >= MAX_SERVERSTATUS_LINES) + break; + p = strchr(p, '\\'); + if (!p) + break; + *p++ = '\0'; + // + i++; + } + } + UI_SortServerStatusInfo( info ); + return qtrue; + } + return qfalse; +} + +/* +================== +stristr +================== +*/ +static char *stristr(char *str, char *charset) { + int i; + + while(*str) { + for (i = 0; charset[i] && str[i]; i++) { + if (toupper(charset[i]) != toupper(str[i])) break; + } + if (!charset[i]) return str; + str++; + } + return NULL; +} + +/* +================== +UI_BuildFindPlayerList +================== +*/ +static void UI_BuildFindPlayerList(qboolean force) { + static int numFound, numTimeOuts; + int i, j, resend; + serverStatusInfo_t info; + char name[MAX_NAME_LENGTH+2]; + char infoString[MAX_STRING_CHARS]; + + if (!force) { + if (!uiInfo.nextFindPlayerRefresh || uiInfo.nextFindPlayerRefresh > uiInfo.uiDC.realTime) { + return; + } + } + else { + memset(&uiInfo.pendingServerStatus, 0, sizeof(uiInfo.pendingServerStatus)); + uiInfo.numFoundPlayerServers = 0; + uiInfo.currentFoundPlayerServer = 0; + trap_Cvar_VariableStringBuffer( "ui_findPlayer", uiInfo.findPlayerName, sizeof(uiInfo.findPlayerName)); + Q_CleanStr(uiInfo.findPlayerName); + // should have a string of some length + if (!strlen(uiInfo.findPlayerName)) { + uiInfo.nextFindPlayerRefresh = 0; + return; + } + // set resend time + resend = ui_serverStatusTimeOut.integer / 2 - 10; + if (resend < 50) { + resend = 50; + } + trap_Cvar_Set("cl_serverStatusResendTime", va("%d", resend)); + // reset all server status requests + trap_LAN_ServerStatus( NULL, NULL, 0); + // + uiInfo.numFoundPlayerServers = 1; + Com_sprintf(uiInfo.foundPlayerServerNames[uiInfo.numFoundPlayerServers-1], + sizeof(uiInfo.foundPlayerServerNames[uiInfo.numFoundPlayerServers-1]), + "searching %d...", uiInfo.pendingServerStatus.num); + numFound = 0; + numTimeOuts++; + } + for (i = 0; i < MAX_SERVERSTATUSREQUESTS; i++) { + // if this pending server is valid + if (uiInfo.pendingServerStatus.server[i].valid) { + // try to get the server status for this server + if (UI_GetServerStatusInfo( uiInfo.pendingServerStatus.server[i].adrstr, &info ) ) { + // + numFound++; + // parse through the server status lines + for (j = 0; j < info.numLines; j++) { + // should have ping info + if ( !info.lines[j][2] || !info.lines[j][2][0] ) { + continue; + } + // clean string first + Q_strncpyz(name, info.lines[j][3], sizeof(name)); + Q_CleanStr(name); + // if the player name is a substring + if (stristr(name, uiInfo.findPlayerName)) { + // add to found server list if we have space (always leave space for a line with the number found) + if (uiInfo.numFoundPlayerServers < MAX_FOUNDPLAYER_SERVERS-1) { + // + Q_strncpyz(uiInfo.foundPlayerServerAddresses[uiInfo.numFoundPlayerServers-1], + uiInfo.pendingServerStatus.server[i].adrstr, + sizeof(uiInfo.foundPlayerServerAddresses[0])); + Q_strncpyz(uiInfo.foundPlayerServerNames[uiInfo.numFoundPlayerServers-1], + uiInfo.pendingServerStatus.server[i].name, + sizeof(uiInfo.foundPlayerServerNames[0])); + uiInfo.numFoundPlayerServers++; + } + else { + // can't add any more so we're done + uiInfo.pendingServerStatus.num = uiInfo.serverStatus.numDisplayServers; + } + } + } + Com_sprintf(uiInfo.foundPlayerServerNames[uiInfo.numFoundPlayerServers-1], + sizeof(uiInfo.foundPlayerServerNames[uiInfo.numFoundPlayerServers-1]), + "searching %d/%d...", uiInfo.pendingServerStatus.num, numFound); + // retrieved the server status so reuse this spot + uiInfo.pendingServerStatus.server[i].valid = qfalse; + } + } + // if empty pending slot or timed out + if (!uiInfo.pendingServerStatus.server[i].valid || + uiInfo.pendingServerStatus.server[i].startTime < uiInfo.uiDC.realTime - ui_serverStatusTimeOut.integer) { + if (uiInfo.pendingServerStatus.server[i].valid) { + numTimeOuts++; + } + // reset server status request for this address + UI_GetServerStatusInfo( uiInfo.pendingServerStatus.server[i].adrstr, NULL ); + // reuse pending slot + uiInfo.pendingServerStatus.server[i].valid = qfalse; + // if we didn't try to get the status of all servers in the main browser yet + if (uiInfo.pendingServerStatus.num < uiInfo.serverStatus.numDisplayServers) { + uiInfo.pendingServerStatus.server[i].startTime = uiInfo.uiDC.realTime; + trap_LAN_GetServerAddressString(ui_netSource.integer, uiInfo.serverStatus.displayServers[uiInfo.pendingServerStatus.num], + uiInfo.pendingServerStatus.server[i].adrstr, sizeof(uiInfo.pendingServerStatus.server[i].adrstr)); + trap_LAN_GetServerInfo(ui_netSource.integer, uiInfo.serverStatus.displayServers[uiInfo.pendingServerStatus.num], infoString, sizeof(infoString)); + Q_strncpyz(uiInfo.pendingServerStatus.server[i].name, Info_ValueForKey(infoString, "hostname"), sizeof(uiInfo.pendingServerStatus.server[0].name)); + uiInfo.pendingServerStatus.server[i].valid = qtrue; + uiInfo.pendingServerStatus.num++; + Com_sprintf(uiInfo.foundPlayerServerNames[uiInfo.numFoundPlayerServers-1], + sizeof(uiInfo.foundPlayerServerNames[uiInfo.numFoundPlayerServers-1]), + "searching %d/%d...", uiInfo.pendingServerStatus.num, numFound); + } + } + } + for (i = 0; i < MAX_SERVERSTATUSREQUESTS; i++) { + if (uiInfo.pendingServerStatus.server[i].valid) { + break; + } + } + // if still trying to retrieve server status info + if (i < MAX_SERVERSTATUSREQUESTS) { + uiInfo.nextFindPlayerRefresh = uiInfo.uiDC.realTime + 25; + } + else { + // add a line that shows the number of servers found + if (!uiInfo.numFoundPlayerServers) { + Com_sprintf(uiInfo.foundPlayerServerNames[uiInfo.numFoundPlayerServers-1], sizeof(uiInfo.foundPlayerServerAddresses[0]), "no servers found"); + } + else { + Com_sprintf(uiInfo.foundPlayerServerNames[uiInfo.numFoundPlayerServers-1], sizeof(uiInfo.foundPlayerServerAddresses[0]), + "%d server%s found with player %s", uiInfo.numFoundPlayerServers-1, + uiInfo.numFoundPlayerServers == 2 ? "":"s", uiInfo.findPlayerName); + } + uiInfo.nextFindPlayerRefresh = 0; + // show the server status info for the selected server + UI_FeederSelection(FEEDER_FINDPLAYER, uiInfo.currentFoundPlayerServer); + } +} + +/* +================== +UI_BuildServerStatus +================== +*/ +static void UI_BuildServerStatus(qboolean force) { + + if (uiInfo.nextFindPlayerRefresh) { + return; + } + if (!force) { + if (!uiInfo.nextServerStatusRefresh || uiInfo.nextServerStatusRefresh > uiInfo.uiDC.realTime) { + return; + } + } + else { + Menu_SetFeederSelection(NULL, FEEDER_SERVERSTATUS, 0, NULL); + uiInfo.serverStatusInfo.numLines = 0; + // reset all server status requests + trap_LAN_ServerStatus( NULL, NULL, 0); + } + if (uiInfo.serverStatus.currentServer < 0 || uiInfo.serverStatus.currentServer > uiInfo.serverStatus.numDisplayServers || uiInfo.serverStatus.numDisplayServers == 0) { + return; + } + if (UI_GetServerStatusInfo( uiInfo.serverStatusAddress, &uiInfo.serverStatusInfo ) ) { + uiInfo.nextServerStatusRefresh = 0; + UI_GetServerStatusInfo( uiInfo.serverStatusAddress, NULL ); + } + else { + uiInfo.nextServerStatusRefresh = uiInfo.uiDC.realTime + 500; + } +} + +/* +================== +UI_FeederCount +================== +*/ +static int UI_FeederCount(float feederID) { + if (feederID == FEEDER_HEADS) { + return UI_HeadCountByTeam(); + } else if (feederID == FEEDER_Q3HEADS) { + return uiInfo.q3HeadCount; + } else if (feederID == FEEDER_CINEMATICS) { + return uiInfo.movieCount; + } else if (feederID == FEEDER_MAPS || feederID == FEEDER_ALLMAPS) { + return UI_MapCountByGameType(feederID == FEEDER_MAPS ? qtrue : qfalse); + } else if (feederID == FEEDER_SERVERS) { + return uiInfo.serverStatus.numDisplayServers; + } else if (feederID == FEEDER_SERVERSTATUS) { + return uiInfo.serverStatusInfo.numLines; + } else if (feederID == FEEDER_FINDPLAYER) { + return uiInfo.numFoundPlayerServers; + } else if (feederID == FEEDER_PLAYER_LIST) { + if (uiInfo.uiDC.realTime > uiInfo.playerRefresh) { + uiInfo.playerRefresh = uiInfo.uiDC.realTime + 3000; + UI_BuildPlayerList(); + } + return uiInfo.playerCount; + } else if (feederID == FEEDER_TEAM_LIST) { + if (uiInfo.uiDC.realTime > uiInfo.playerRefresh) { + uiInfo.playerRefresh = uiInfo.uiDC.realTime + 3000; + UI_BuildPlayerList(); + } + return uiInfo.myTeamCount; + } else if (feederID == FEEDER_MODS) { + return uiInfo.modCount; + } else if (feederID == FEEDER_DEMOS) { + return uiInfo.demoCount; + } + return 0; +} + +static const char *UI_SelectedMap(int index, int *actual) { + int i, c; + c = 0; + *actual = 0; + for (i = 0; i < uiInfo.mapCount; i++) { + if (uiInfo.mapList[i].active) { + if (c == index) { + *actual = i; + return uiInfo.mapList[i].mapName; + } else { + c++; + } + } + } + return ""; +} + +static const char *UI_SelectedHead(int index, int *actual) { + int i, c; + c = 0; + *actual = 0; + for (i = 0; i < uiInfo.characterCount; i++) { + if (uiInfo.characterList[i].active) { + if (c == index) { + *actual = i; + return uiInfo.characterList[i].name; + } else { + c++; + } + } + } + return ""; +} + +static int UI_GetIndexFromSelection(int actual) { + int i, c; + c = 0; + for (i = 0; i < uiInfo.mapCount; i++) { + if (uiInfo.mapList[i].active) { + if (i == actual) { + return c; + } + c++; + } + } + return 0; +} + +static void UI_UpdatePendingPings() { + trap_LAN_ResetPings(ui_netSource.integer); + uiInfo.serverStatus.refreshActive = qtrue; + uiInfo.serverStatus.refreshtime = uiInfo.uiDC.realTime + 1000; + +} + +static const char *UI_FeederItemText(float feederID, int index, int column, qhandle_t *handle) { + static char info[MAX_STRING_CHARS]; + static char hostname[1024]; + static char clientBuff[32]; + static int lastColumn = -1; + static int lastTime = 0; + *handle = -1; + if (feederID == FEEDER_HEADS) { + int actual; + return UI_SelectedHead(index, &actual); + } else if (feederID == FEEDER_Q3HEADS) { + if (index >= 0 && index < uiInfo.q3HeadCount) { + return uiInfo.q3HeadNames[index]; + } + } else if (feederID == FEEDER_MAPS || feederID == FEEDER_ALLMAPS) { + int actual; + return UI_SelectedMap(index, &actual); + } else if (feederID == FEEDER_SERVERS) { + if (index >= 0 && index < uiInfo.serverStatus.numDisplayServers) { + int ping, game; + if (lastColumn != column || lastTime > uiInfo.uiDC.realTime + 5000) { + trap_LAN_GetServerInfo(ui_netSource.integer, uiInfo.serverStatus.displayServers[index], info, MAX_STRING_CHARS); + lastColumn = column; + lastTime = uiInfo.uiDC.realTime; + } + ping = atoi(Info_ValueForKey(info, "ping")); + if (ping == -1) { + // if we ever see a ping that is out of date, do a server refresh + // UI_UpdatePendingPings(); + } + switch (column) { + case SORT_HOST : + if (ping <= 0) { + return Info_ValueForKey(info, "addr"); + } else { + if ( ui_netSource.integer == AS_LOCAL ) { + Com_sprintf( hostname, sizeof(hostname), "%s [%s]", + Info_ValueForKey(info, "hostname"), + netnames[atoi(Info_ValueForKey(info, "nettype"))] ); + return hostname; + } + else { + if (atoi(Info_ValueForKey(info, "sv_allowAnonymous")) != 0) { // anonymous server + Com_sprintf( hostname, sizeof(hostname), "(A) %s", + Info_ValueForKey(info, "hostname")); + } else { + Com_sprintf( hostname, sizeof(hostname), "%s", + Info_ValueForKey(info, "hostname")); + } + return hostname; + } + } + case SORT_MAP : return Info_ValueForKey(info, "mapname"); + case SORT_CLIENTS : + Com_sprintf( clientBuff, sizeof(clientBuff), "%s (%s)", Info_ValueForKey(info, "clients"), Info_ValueForKey(info, "sv_maxclients")); + return clientBuff; + case SORT_GAME : + game = atoi(Info_ValueForKey(info, "gametype")); + if (game >= 0 && game < numTeamArenaGameTypes) { + return teamArenaGameTypes[game]; + } else { + return "Unknown"; + } + case SORT_PING : + if (ping <= 0) { + return "..."; + } else { + return Info_ValueForKey(info, "ping"); + } + } + } + } else if (feederID == FEEDER_SERVERSTATUS) { + if ( index >= 0 && index < uiInfo.serverStatusInfo.numLines ) { + if ( column >= 0 && column < 4 ) { + return uiInfo.serverStatusInfo.lines[index][column]; + } + } + } else if (feederID == FEEDER_FINDPLAYER) { + if ( index >= 0 && index < uiInfo.numFoundPlayerServers ) { + //return uiInfo.foundPlayerServerAddresses[index]; + return uiInfo.foundPlayerServerNames[index]; + } + } else if (feederID == FEEDER_PLAYER_LIST) { + if (index >= 0 && index < uiInfo.playerCount) { + return uiInfo.playerNames[index]; + } + } else if (feederID == FEEDER_TEAM_LIST) { + if (index >= 0 && index < uiInfo.myTeamCount) { + return uiInfo.teamNames[index]; + } + } else if (feederID == FEEDER_MODS) { + if (index >= 0 && index < uiInfo.modCount) { + if (uiInfo.modList[index].modDescr && *uiInfo.modList[index].modDescr) { + return uiInfo.modList[index].modDescr; + } else { + return uiInfo.modList[index].modName; + } + } + } else if (feederID == FEEDER_CINEMATICS) { + if (index >= 0 && index < uiInfo.movieCount) { + return uiInfo.movieList[index]; + } + } else if (feederID == FEEDER_DEMOS) { + if (index >= 0 && index < uiInfo.demoCount) { + return uiInfo.demoList[index]; + } + } + return ""; +} + + +static qhandle_t UI_FeederItemImage(float feederID, int index) { + if (feederID == FEEDER_HEADS) { + int actual; + UI_SelectedHead(index, &actual); + index = actual; + if (index >= 0 && index < uiInfo.characterCount) { + if (uiInfo.characterList[index].headImage == -1) { + uiInfo.characterList[index].headImage = trap_R_RegisterShaderNoMip(uiInfo.characterList[index].imageName); + } + return uiInfo.characterList[index].headImage; + } + } else if (feederID == FEEDER_Q3HEADS) { + if (index >= 0 && index < uiInfo.q3HeadCount) { + return uiInfo.q3HeadIcons[index]; + } + } else if (feederID == FEEDER_ALLMAPS || feederID == FEEDER_MAPS) { + int actual; + UI_SelectedMap(index, &actual); + index = actual; + if (index >= 0 && index < uiInfo.mapCount) { + if (uiInfo.mapList[index].levelShot == -1) { + uiInfo.mapList[index].levelShot = trap_R_RegisterShaderNoMip(uiInfo.mapList[index].imageName); + } + return uiInfo.mapList[index].levelShot; + } + } + return 0; +} + +static void UI_FeederSelection(float feederID, int index) { + static char info[MAX_STRING_CHARS]; + if (feederID == FEEDER_HEADS) { + int actual; + UI_SelectedHead(index, &actual); + index = actual; + if (index >= 0 && index < uiInfo.characterCount) { + trap_Cvar_Set( "team_model", va("%s", uiInfo.characterList[index].base)); + trap_Cvar_Set( "team_headmodel", va("*%s", uiInfo.characterList[index].name)); + updateModel = qtrue; + } + } else if (feederID == FEEDER_Q3HEADS) { + if (index >= 0 && index < uiInfo.q3HeadCount) { + trap_Cvar_Set( "model", uiInfo.q3HeadNames[index]); + trap_Cvar_Set( "headmodel", uiInfo.q3HeadNames[index]); + updateModel = qtrue; + } + } else if (feederID == FEEDER_MAPS || feederID == FEEDER_ALLMAPS) { + int actual, map; + map = (feederID == FEEDER_ALLMAPS) ? ui_currentNetMap.integer : ui_currentMap.integer; + if (uiInfo.mapList[map].cinematic >= 0) { + trap_CIN_StopCinematic(uiInfo.mapList[map].cinematic); + uiInfo.mapList[map].cinematic = -1; + } + UI_SelectedMap(index, &actual); + trap_Cvar_Set("ui_mapIndex", va("%d", index)); + ui_mapIndex.integer = index; + + if (feederID == FEEDER_MAPS) { + ui_currentMap.integer = actual; + trap_Cvar_Set("ui_currentMap", va("%d", actual)); + uiInfo.mapList[ui_currentMap.integer].cinematic = trap_CIN_PlayCinematic(va("%s.roq", uiInfo.mapList[ui_currentMap.integer].mapLoadName), 0, 0, 0, 0, (CIN_loop | CIN_silent) ); + UI_LoadBestScores(uiInfo.mapList[ui_currentMap.integer].mapLoadName, uiInfo.gameTypes[ui_gameType.integer].gtEnum); + trap_Cvar_Set("ui_opponentModel", uiInfo.mapList[ui_currentMap.integer].opponentName); + updateOpponentModel = qtrue; + } else { + ui_currentNetMap.integer = actual; + trap_Cvar_Set("ui_currentNetMap", va("%d", actual)); + uiInfo.mapList[ui_currentNetMap.integer].cinematic = trap_CIN_PlayCinematic(va("%s.roq", uiInfo.mapList[ui_currentNetMap.integer].mapLoadName), 0, 0, 0, 0, (CIN_loop | CIN_silent) ); + } + + } else if (feederID == FEEDER_SERVERS) { + const char *mapName = NULL; + uiInfo.serverStatus.currentServer = index; + trap_LAN_GetServerInfo(ui_netSource.integer, uiInfo.serverStatus.displayServers[index], info, MAX_STRING_CHARS); + uiInfo.serverStatus.currentServerPreview = trap_R_RegisterShaderNoMip(va("levelshots/%s", Info_ValueForKey(info, "mapname"))); + if (uiInfo.serverStatus.currentServerCinematic >= 0) { + trap_CIN_StopCinematic(uiInfo.serverStatus.currentServerCinematic); + uiInfo.serverStatus.currentServerCinematic = -1; + } + mapName = Info_ValueForKey(info, "mapname"); + if (mapName && *mapName) { + uiInfo.serverStatus.currentServerCinematic = trap_CIN_PlayCinematic(va("%s.roq", mapName), 0, 0, 0, 0, (CIN_loop | CIN_silent) ); + } + } else if (feederID == FEEDER_SERVERSTATUS) { + // + } else if (feederID == FEEDER_FINDPLAYER) { + uiInfo.currentFoundPlayerServer = index; + // + if ( index < uiInfo.numFoundPlayerServers-1) { + // build a new server status for this server + Q_strncpyz(uiInfo.serverStatusAddress, uiInfo.foundPlayerServerAddresses[uiInfo.currentFoundPlayerServer], sizeof(uiInfo.serverStatusAddress)); + Menu_SetFeederSelection(NULL, FEEDER_SERVERSTATUS, 0, NULL); + UI_BuildServerStatus(qtrue); + } + } else if (feederID == FEEDER_PLAYER_LIST) { + uiInfo.playerIndex = index; + } else if (feederID == FEEDER_TEAM_LIST) { + uiInfo.teamIndex = index; + } else if (feederID == FEEDER_MODS) { + uiInfo.modIndex = index; + } else if (feederID == FEEDER_CINEMATICS) { + uiInfo.movieIndex = index; + if (uiInfo.previewMovie >= 0) { + trap_CIN_StopCinematic(uiInfo.previewMovie); + } + uiInfo.previewMovie = -1; + } else if (feederID == FEEDER_DEMOS) { + uiInfo.demoIndex = index; + } +} + +static qboolean Team_Parse(char **p) { + char *token; + const char *tempStr; + int i; + + token = COM_ParseExt(p, qtrue); + + if (token[0] != '{') { + return qfalse; + } + + while ( 1 ) { + + token = COM_ParseExt(p, qtrue); + + if (Q_stricmp(token, "}") == 0) { + return qtrue; + } + + if ( !token || token[0] == 0 ) { + return qfalse; + } + + if (token[0] == '{') { + // seven tokens per line, team name and icon, and 5 team member names + if (!String_Parse(p, &uiInfo.teamList[uiInfo.teamCount].teamName) || !String_Parse(p, &tempStr)) { + return qfalse; + } + + + uiInfo.teamList[uiInfo.teamCount].imageName = tempStr; + uiInfo.teamList[uiInfo.teamCount].teamIcon = trap_R_RegisterShaderNoMip(uiInfo.teamList[uiInfo.teamCount].imageName); + uiInfo.teamList[uiInfo.teamCount].teamIcon_Metal = trap_R_RegisterShaderNoMip(va("%s_metal",uiInfo.teamList[uiInfo.teamCount].imageName)); + uiInfo.teamList[uiInfo.teamCount].teamIcon_Name = trap_R_RegisterShaderNoMip(va("%s_name", uiInfo.teamList[uiInfo.teamCount].imageName)); + + uiInfo.teamList[uiInfo.teamCount].cinematic = -1; + + for (i = 0; i < TEAM_MEMBERS; i++) { + uiInfo.teamList[uiInfo.teamCount].teamMembers[i] = NULL; + if (!String_Parse(p, &uiInfo.teamList[uiInfo.teamCount].teamMembers[i])) { + return qfalse; + } + } + + Com_Printf("Loaded team %s with team icon %s.\n", uiInfo.teamList[uiInfo.teamCount].teamName, tempStr); + if (uiInfo.teamCount < MAX_TEAMS) { + uiInfo.teamCount++; + } else { + Com_Printf("Too many teams, last team replaced!\n"); + } + token = COM_ParseExt(p, qtrue); + if (token[0] != '}') { + return qfalse; + } + } + } + + return qfalse; +} + +static qboolean Character_Parse(char **p) { + char *token; + const char *tempStr; + + token = COM_ParseExt(p, qtrue); + + if (token[0] != '{') { + return qfalse; + } + + + while ( 1 ) { + token = COM_ParseExt(p, qtrue); + + if (Q_stricmp(token, "}") == 0) { + return qtrue; + } + + if ( !token || token[0] == 0 ) { + return qfalse; + } + + if (token[0] == '{') { + // two tokens per line, character name and sex + if (!String_Parse(p, &uiInfo.characterList[uiInfo.characterCount].name) || !String_Parse(p, &tempStr)) { + return qfalse; + } + + uiInfo.characterList[uiInfo.characterCount].headImage = -1; + uiInfo.characterList[uiInfo.characterCount].imageName = String_Alloc(va("models/players/heads/%s/icon_default.tga", uiInfo.characterList[uiInfo.characterCount].name)); + + if (tempStr && (!Q_stricmp(tempStr, "female"))) { + uiInfo.characterList[uiInfo.characterCount].base = String_Alloc(va("Janet")); + } else if (tempStr && (!Q_stricmp(tempStr, "male"))) { + uiInfo.characterList[uiInfo.characterCount].base = String_Alloc(va("James")); + } else { + uiInfo.characterList[uiInfo.characterCount].base = String_Alloc(va("%s",tempStr)); + } + + Com_Printf("Loaded %s character %s.\n", uiInfo.characterList[uiInfo.characterCount].base, uiInfo.characterList[uiInfo.characterCount].name); + if (uiInfo.characterCount < MAX_HEADS) { + uiInfo.characterCount++; + } else { + Com_Printf("Too many characters, last character replaced!\n"); + } + + token = COM_ParseExt(p, qtrue); + if (token[0] != '}') { + return qfalse; + } + } + } + + return qfalse; +} + + +static qboolean Alias_Parse(char **p) { + char *token; + + token = COM_ParseExt(p, qtrue); + + if (token[0] != '{') { + return qfalse; + } + + while ( 1 ) { + token = COM_ParseExt(p, qtrue); + + if (Q_stricmp(token, "}") == 0) { + return qtrue; + } + + if ( !token || token[0] == 0 ) { + return qfalse; + } + + if (token[0] == '{') { + // three tokens per line, character name, bot alias, and preferred action a - all purpose, d - defense, o - offense + if (!String_Parse(p, &uiInfo.aliasList[uiInfo.aliasCount].name) || !String_Parse(p, &uiInfo.aliasList[uiInfo.aliasCount].ai) || !String_Parse(p, &uiInfo.aliasList[uiInfo.aliasCount].action)) { + return qfalse; + } + + Com_Printf("Loaded character alias %s using character ai %s.\n", uiInfo.aliasList[uiInfo.aliasCount].name, uiInfo.aliasList[uiInfo.aliasCount].ai); + if (uiInfo.aliasCount < MAX_ALIASES) { + uiInfo.aliasCount++; + } else { + Com_Printf("Too many aliases, last alias replaced!\n"); + } + + token = COM_ParseExt(p, qtrue); + if (token[0] != '}') { + return qfalse; + } + } + } + + return qfalse; +} + + + +// mode +// 0 - high level parsing +// 1 - team parsing +// 2 - character parsing +static void UI_ParseTeamInfo(const char *teamFile) { + char *token; + char *p; + char *buff = NULL; + //static int mode = 0; TTimo: unused + + buff = GetMenuBuffer(teamFile); + if (!buff) { + return; + } + + p = buff; + + while ( 1 ) { + token = COM_ParseExt( &p, qtrue ); + if( !token || token[0] == 0 || token[0] == '}') { + break; + } + + if ( Q_stricmp( token, "}" ) == 0 ) { + break; + } + + if (Q_stricmp(token, "teams") == 0) { + + if (Team_Parse(&p)) { + continue; + } else { + break; + } + } + + if (Q_stricmp(token, "characters") == 0) { + Character_Parse(&p); + } + + if (Q_stricmp(token, "aliases") == 0) { + Alias_Parse(&p); + } + + } + +} + + +static qboolean GameType_Parse(char **p, qboolean join) { + char *token; + + token = COM_ParseExt(p, qtrue); + + if (token[0] != '{') { + return qfalse; + } + + if (join) { + uiInfo.numJoinGameTypes = 0; + } else { + uiInfo.numGameTypes = 0; + } + + while ( 1 ) { + token = COM_ParseExt(p, qtrue); + + if (Q_stricmp(token, "}") == 0) { + return qtrue; + } + + if ( !token || token[0] == 0 ) { + return qfalse; + } + + if (token[0] == '{') { + // two tokens per line, character name and sex + if (join) { + if (!String_Parse(p, &uiInfo.joinGameTypes[uiInfo.numJoinGameTypes].gameType) || !Int_Parse(p, &uiInfo.joinGameTypes[uiInfo.numJoinGameTypes].gtEnum)) { + return qfalse; + } + } else { + if (!String_Parse(p, &uiInfo.gameTypes[uiInfo.numGameTypes].gameType) || !Int_Parse(p, &uiInfo.gameTypes[uiInfo.numGameTypes].gtEnum)) { + return qfalse; + } + } + + if (join) { + if (uiInfo.numJoinGameTypes < MAX_GAMETYPES) { + uiInfo.numJoinGameTypes++; + } else { + Com_Printf("Too many net game types, last one replace!\n"); + } + } else { + if (uiInfo.numGameTypes < MAX_GAMETYPES) { + uiInfo.numGameTypes++; + } else { + Com_Printf("Too many game types, last one replace!\n"); + } + } + + token = COM_ParseExt(p, qtrue); + if (token[0] != '}') { + return qfalse; + } + } + } + return qfalse; +} + +static qboolean MapList_Parse(char **p) { + char *token; + + token = COM_ParseExt(p, qtrue); + + if (token[0] != '{') { + return qfalse; + } + + uiInfo.mapCount = 0; + + while ( 1 ) { + token = COM_ParseExt(p, qtrue); + + if (Q_stricmp(token, "}") == 0) { + return qtrue; + } + + if ( !token || token[0] == 0 ) { + return qfalse; + } + + if (token[0] == '{') { + if (!String_Parse(p, &uiInfo.mapList[uiInfo.mapCount].mapName) || !String_Parse(p, &uiInfo.mapList[uiInfo.mapCount].mapLoadName) + ||!Int_Parse(p, &uiInfo.mapList[uiInfo.mapCount].teamMembers) ) { + return qfalse; + } + + if (!String_Parse(p, &uiInfo.mapList[uiInfo.mapCount].opponentName)) { + return qfalse; + } + + uiInfo.mapList[uiInfo.mapCount].typeBits = 0; + + while (1) { + token = COM_ParseExt(p, qtrue); + if (token[0] >= '0' && token[0] <= '9') { + uiInfo.mapList[uiInfo.mapCount].typeBits |= (1 << (token[0] - 0x030)); + if (!Int_Parse(p, &uiInfo.mapList[uiInfo.mapCount].timeToBeat[token[0] - 0x30])) { + return qfalse; + } + } else { + break; + } + } + + //mapList[mapCount].imageName = String_Alloc(va("levelshots/%s", mapList[mapCount].mapLoadName)); + //if (uiInfo.mapCount == 0) { + // only load the first cinematic, selection loads the others + // uiInfo.mapList[uiInfo.mapCount].cinematic = trap_CIN_PlayCinematic(va("%s.roq",uiInfo.mapList[uiInfo.mapCount].mapLoadName), qfalse, qfalse, qtrue, 0, 0, 0, 0); + //} + uiInfo.mapList[uiInfo.mapCount].cinematic = -1; + uiInfo.mapList[uiInfo.mapCount].levelShot = trap_R_RegisterShaderNoMip(va("levelshots/%s_small", uiInfo.mapList[uiInfo.mapCount].mapLoadName)); + + if (uiInfo.mapCount < MAX_MAPS) { + uiInfo.mapCount++; + } else { + Com_Printf("Too many maps, last one replaced!\n"); + } + } + } + return qfalse; +} + +static void UI_ParseGameInfo(const char *teamFile) { + char *token; + char *p; + char *buff = NULL; + //int mode = 0; TTimo: unused + + buff = GetMenuBuffer(teamFile); + if (!buff) { + return; + } + + p = buff; + + while ( 1 ) { + token = COM_ParseExt( &p, qtrue ); + if( !token || token[0] == 0 || token[0] == '}') { + break; + } + + if ( Q_stricmp( token, "}" ) == 0 ) { + break; + } + + if (Q_stricmp(token, "gametypes") == 0) { + + if (GameType_Parse(&p, qfalse)) { + continue; + } else { + break; + } + } + + if (Q_stricmp(token, "joingametypes") == 0) { + + if (GameType_Parse(&p, qtrue)) { + continue; + } else { + break; + } + } + + if (Q_stricmp(token, "maps") == 0) { + // start a new menu + MapList_Parse(&p); + } + + } +} + +static void UI_Pause(qboolean b) { + if (b) { + // pause the game and set the ui keycatcher + trap_Cvar_Set( "cl_paused", "1" ); + trap_Key_SetCatcher( KEYCATCH_UI ); + } else { + // unpause the game and clear the ui keycatcher + trap_Key_SetCatcher( trap_Key_GetCatcher() & ~KEYCATCH_UI ); + trap_Key_ClearStates(); + trap_Cvar_Set( "cl_paused", "0" ); + } +} + +#ifndef MISSIONPACK // bk001206 +static int UI_OwnerDraw_Width(int ownerDraw) { + // bk001205 - LCC missing return value + return 0; +} +#endif + +static int UI_PlayCinematic(const char *name, float x, float y, float w, float h) { + return trap_CIN_PlayCinematic(name, x, y, w, h, (CIN_loop | CIN_silent)); +} + +static void UI_StopCinematic(int handle) { + if (handle >= 0) { + trap_CIN_StopCinematic(handle); + } else { + handle = abs(handle); + if (handle == UI_MAPCINEMATIC) { + if (uiInfo.mapList[ui_currentMap.integer].cinematic >= 0) { + trap_CIN_StopCinematic(uiInfo.mapList[ui_currentMap.integer].cinematic); + uiInfo.mapList[ui_currentMap.integer].cinematic = -1; + } + } else if (handle == UI_NETMAPCINEMATIC) { + if (uiInfo.serverStatus.currentServerCinematic >= 0) { + trap_CIN_StopCinematic(uiInfo.serverStatus.currentServerCinematic); + uiInfo.serverStatus.currentServerCinematic = -1; + } + } else if (handle == UI_CLANCINEMATIC) { + int i = UI_TeamIndexFromName(UI_Cvar_VariableString("ui_teamName")); + if (i >= 0 && i < uiInfo.teamCount) { + if (uiInfo.teamList[i].cinematic >= 0) { + trap_CIN_StopCinematic(uiInfo.teamList[i].cinematic); + uiInfo.teamList[i].cinematic = -1; + } + } + } + } +} + +static void UI_DrawCinematic(int handle, float x, float y, float w, float h) { + trap_CIN_SetExtents(handle, x, y, w, h); + trap_CIN_DrawCinematic(handle); +} + +static void UI_RunCinematicFrame(int handle) { + trap_CIN_RunCinematic(handle); +} + + + +/* +================= +PlayerModel_BuildList +================= +*/ +static void UI_BuildQ3Model_List( void ) +{ + int numdirs; + int numfiles; + char dirlist[2048]; + char filelist[2048]; + char skinname[64]; + char scratch[256]; + char* dirptr; + char* fileptr; + int i; + int j, k, dirty; + int dirlen; + int filelen; + + uiInfo.q3HeadCount = 0; + + // iterate directory of all player models + numdirs = trap_FS_GetFileList("models/players", "/", dirlist, 2048 ); + dirptr = dirlist; + for (i=0; i uiInfo.uiDC.glconfig.vidHeight * 640 ) { + // wide screen + uiInfo.uiDC.bias = 0.5 * ( uiInfo.uiDC.glconfig.vidWidth - ( uiInfo.uiDC.glconfig.vidHeight * (640.0/480.0) ) ); + } + else { + // no wide screen + uiInfo.uiDC.bias = 0; + } + + + //UI_Load(); + uiInfo.uiDC.registerShaderNoMip = &trap_R_RegisterShaderNoMip; + uiInfo.uiDC.setColor = &UI_SetColor; + uiInfo.uiDC.drawHandlePic = &UI_DrawHandlePic; + uiInfo.uiDC.drawStretchPic = &trap_R_DrawStretchPic; + uiInfo.uiDC.drawText = &Text_Paint; + uiInfo.uiDC.textWidth = &Text_Width; + uiInfo.uiDC.textHeight = &Text_Height; + uiInfo.uiDC.registerModel = &trap_R_RegisterModel; + uiInfo.uiDC.modelBounds = &trap_R_ModelBounds; + uiInfo.uiDC.fillRect = &UI_FillRect; + uiInfo.uiDC.drawRect = &_UI_DrawRect; + uiInfo.uiDC.drawSides = &_UI_DrawSides; + uiInfo.uiDC.drawTopBottom = &_UI_DrawTopBottom; + uiInfo.uiDC.clearScene = &trap_R_ClearScene; + uiInfo.uiDC.drawSides = &_UI_DrawSides; + uiInfo.uiDC.addRefEntityToScene = &trap_R_AddRefEntityToScene; + uiInfo.uiDC.renderScene = &trap_R_RenderScene; + uiInfo.uiDC.registerFont = &trap_R_RegisterFont; + uiInfo.uiDC.ownerDrawItem = &UI_OwnerDraw; + uiInfo.uiDC.getValue = &UI_GetValue; + uiInfo.uiDC.ownerDrawVisible = &UI_OwnerDrawVisible; + uiInfo.uiDC.runScript = &UI_RunMenuScript; + uiInfo.uiDC.getTeamColor = &UI_GetTeamColor; + uiInfo.uiDC.setCVar = trap_Cvar_Set; + uiInfo.uiDC.getCVarString = trap_Cvar_VariableStringBuffer; + uiInfo.uiDC.getCVarValue = trap_Cvar_VariableValue; + uiInfo.uiDC.drawTextWithCursor = &Text_PaintWithCursor; + uiInfo.uiDC.setOverstrikeMode = &trap_Key_SetOverstrikeMode; + uiInfo.uiDC.getOverstrikeMode = &trap_Key_GetOverstrikeMode; + uiInfo.uiDC.startLocalSound = &trap_S_StartLocalSound; + uiInfo.uiDC.ownerDrawHandleKey = &UI_OwnerDrawHandleKey; + uiInfo.uiDC.feederCount = &UI_FeederCount; + uiInfo.uiDC.feederItemImage = &UI_FeederItemImage; + uiInfo.uiDC.feederItemText = &UI_FeederItemText; + uiInfo.uiDC.feederSelection = &UI_FeederSelection; + uiInfo.uiDC.setBinding = &trap_Key_SetBinding; + uiInfo.uiDC.getBindingBuf = &trap_Key_GetBindingBuf; + uiInfo.uiDC.keynumToStringBuf = &trap_Key_KeynumToStringBuf; + uiInfo.uiDC.executeText = &trap_Cmd_ExecuteText; + uiInfo.uiDC.Error = &Com_Error; + uiInfo.uiDC.Print = &Com_Printf; + uiInfo.uiDC.Pause = &UI_Pause; + uiInfo.uiDC.ownerDrawWidth = &UI_OwnerDrawWidth; + uiInfo.uiDC.registerSound = &trap_S_RegisterSound; + uiInfo.uiDC.startBackgroundTrack = &trap_S_StartBackgroundTrack; + uiInfo.uiDC.stopBackgroundTrack = &trap_S_StopBackgroundTrack; + uiInfo.uiDC.playCinematic = &UI_PlayCinematic; + uiInfo.uiDC.stopCinematic = &UI_StopCinematic; + uiInfo.uiDC.drawCinematic = &UI_DrawCinematic; + uiInfo.uiDC.runCinematicFrame = &UI_RunCinematicFrame; + + Init_Display(&uiInfo.uiDC); + + String_Init(); + + uiInfo.uiDC.cursor = trap_R_RegisterShaderNoMip( "menu/art/3_cursor2" ); + uiInfo.uiDC.whiteShader = trap_R_RegisterShaderNoMip( "white" ); + + AssetCache(); + + start = trap_Milliseconds(); + + uiInfo.teamCount = 0; + uiInfo.characterCount = 0; + uiInfo.aliasCount = 0; + +#ifdef PRE_RELEASE_TADEMO + UI_ParseTeamInfo("demoteaminfo.txt"); + UI_ParseGameInfo("demogameinfo.txt"); +#else + UI_ParseTeamInfo("teaminfo.txt"); + UI_LoadTeams(); + UI_ParseGameInfo("gameinfo.txt"); +#endif + + menuSet = UI_Cvar_VariableString("ui_menuFiles"); + if (menuSet == NULL || menuSet[0] == '\0') { + menuSet = "ui/menus.txt"; + } + +#if 0 + if (uiInfo.inGameLoad) { + UI_LoadMenus("ui/ingame.txt", qtrue); + } else { // bk010222: left this: UI_LoadMenus(menuSet, qtrue); + } +#else + UI_LoadMenus(menuSet, qtrue); + UI_LoadMenus("ui/ingame.txt", qfalse); +#endif + + Menus_CloseAll(); + + trap_LAN_LoadCachedServers(); + UI_LoadBestScores(uiInfo.mapList[ui_currentMap.integer].mapLoadName, uiInfo.gameTypes[ui_gameType.integer].gtEnum); + + UI_BuildQ3Model_List(); + UI_LoadBots(); + + // sets defaults for ui temp cvars + uiInfo.effectsColor = gamecodetoui[(int)trap_Cvar_VariableValue("color1")-1]; + uiInfo.currentCrosshair = (int)trap_Cvar_VariableValue("cg_drawCrosshair"); + trap_Cvar_Set("ui_mousePitch", (trap_Cvar_VariableValue("m_pitch") >= 0) ? "0" : "1"); + + uiInfo.serverStatus.currentServerCinematic = -1; + uiInfo.previewMovie = -1; + + if (trap_Cvar_VariableValue("ui_TeamArenaFirstRun") == 0) { + trap_Cvar_Set("s_volume", "0.8"); + trap_Cvar_Set("s_musicvolume", "0.5"); + trap_Cvar_Set("ui_TeamArenaFirstRun", "1"); + } + + trap_Cvar_Register(NULL, "debug_protocol", "", 0 ); + + trap_Cvar_Set("ui_actualNetGameType", va("%d", ui_netGameType.integer)); +} + + +/* +================= +UI_KeyEvent +================= +*/ +void _UI_KeyEvent( int key, qboolean down ) { + + if (Menu_Count() > 0) { + menuDef_t *menu = Menu_GetFocused(); + if (menu) { + if (key == K_ESCAPE && down && !Menus_AnyFullScreenVisible()) { + Menus_CloseAll(); + } else { + Menu_HandleKey(menu, key, down ); + } + } else { + trap_Key_SetCatcher( trap_Key_GetCatcher() & ~KEYCATCH_UI ); + trap_Key_ClearStates(); + trap_Cvar_Set( "cl_paused", "0" ); + } + } + + //if ((s > 0) && (s != menu_null_sound)) { + // trap_S_StartLocalSound( s, CHAN_LOCAL_SOUND ); + //} +} + +/* +================= +UI_MouseEvent +================= +*/ +void _UI_MouseEvent( int dx, int dy ) +{ + // update mouse screen position + uiInfo.uiDC.cursorx += dx; + if (uiInfo.uiDC.cursorx < 0) + uiInfo.uiDC.cursorx = 0; + else if (uiInfo.uiDC.cursorx > SCREEN_WIDTH) + uiInfo.uiDC.cursorx = SCREEN_WIDTH; + + uiInfo.uiDC.cursory += dy; + if (uiInfo.uiDC.cursory < 0) + uiInfo.uiDC.cursory = 0; + else if (uiInfo.uiDC.cursory > SCREEN_HEIGHT) + uiInfo.uiDC.cursory = SCREEN_HEIGHT; + + if (Menu_Count() > 0) { + //menuDef_t *menu = Menu_GetFocused(); + //Menu_HandleMouseMove(menu, uiInfo.uiDC.cursorx, uiInfo.uiDC.cursory); + Display_MouseMove(NULL, uiInfo.uiDC.cursorx, uiInfo.uiDC.cursory); + } + +} + +void UI_LoadNonIngame() { + const char *menuSet = UI_Cvar_VariableString("ui_menuFiles"); + if (menuSet == NULL || menuSet[0] == '\0') { + menuSet = "ui/menus.txt"; + } + UI_LoadMenus(menuSet, qfalse); + uiInfo.inGameLoad = qfalse; +} + +void _UI_SetActiveMenu( uiMenuCommand_t menu ) { + char buf[256]; + + // this should be the ONLY way the menu system is brought up + // enusure minumum menu data is cached + if (Menu_Count() > 0) { + vec3_t v; + v[0] = v[1] = v[2] = 0; + switch ( menu ) { + case UIMENU_NONE: + trap_Key_SetCatcher( trap_Key_GetCatcher() & ~KEYCATCH_UI ); + trap_Key_ClearStates(); + trap_Cvar_Set( "cl_paused", "0" ); + Menus_CloseAll(); + + return; + case UIMENU_MAIN: + //trap_Cvar_Set( "sv_killserver", "1" ); + trap_Key_SetCatcher( KEYCATCH_UI ); + //trap_S_StartLocalSound( trap_S_RegisterSound("sound/misc/menu_background.wav", qfalse) , CHAN_LOCAL_SOUND ); + //trap_S_StartBackgroundTrack("sound/misc/menu_background.wav", NULL); + if (uiInfo.inGameLoad) { + UI_LoadNonIngame(); + } + Menus_CloseAll(); + Menus_ActivateByName("main"); + trap_Cvar_VariableStringBuffer("com_errorMessage", buf, sizeof(buf)); + if (strlen(buf)) { + if (!ui_singlePlayerActive.integer) { + Menus_ActivateByName("error_popmenu"); + } else { + trap_Cvar_Set("com_errorMessage", ""); + } + } + return; + case UIMENU_TEAM: + trap_Key_SetCatcher( KEYCATCH_UI ); + Menus_ActivateByName("team"); + return; + case UIMENU_NEED_CD: + // no cd check in TA + //trap_Key_SetCatcher( KEYCATCH_UI ); + //Menus_ActivateByName("needcd"); + //UI_ConfirmMenu( "Insert the CD", NULL, NeedCDAction ); + return; + case UIMENU_BAD_CD_KEY: + // no cd check in TA + //trap_Key_SetCatcher( KEYCATCH_UI ); + //Menus_ActivateByName("badcd"); + //UI_ConfirmMenu( "Bad CD Key", NULL, NeedCDKeyAction ); + return; + case UIMENU_POSTGAME: + //trap_Cvar_Set( "sv_killserver", "1" ); + trap_Key_SetCatcher( KEYCATCH_UI ); + if (uiInfo.inGameLoad) { + UI_LoadNonIngame(); + } + Menus_CloseAll(); + Menus_ActivateByName("endofgame"); + //UI_ConfirmMenu( "Bad CD Key", NULL, NeedCDKeyAction ); + return; + case UIMENU_INGAME: + trap_Cvar_Set( "cl_paused", "1" ); + trap_Key_SetCatcher( KEYCATCH_UI ); + UI_BuildPlayerList(); + Menus_CloseAll(); + Menus_ActivateByName("ingame"); + return; + } + } +} + +qboolean _UI_IsFullscreen( void ) { + return Menus_AnyFullScreenVisible(); +} + + + +static connstate_t lastConnState; +static char lastLoadingText[MAX_INFO_VALUE]; + +static void UI_ReadableSize ( char *buf, int bufsize, int value ) +{ + if (value > 1024*1024*1024 ) { // gigs + Com_sprintf( buf, bufsize, "%d", value / (1024*1024*1024) ); + Com_sprintf( buf+strlen(buf), bufsize-strlen(buf), ".%02d GB", + (value % (1024*1024*1024))*100 / (1024*1024*1024) ); + } else if (value > 1024*1024 ) { // megs + Com_sprintf( buf, bufsize, "%d", value / (1024*1024) ); + Com_sprintf( buf+strlen(buf), bufsize-strlen(buf), ".%02d MB", + (value % (1024*1024))*100 / (1024*1024) ); + } else if (value > 1024 ) { // kilos + Com_sprintf( buf, bufsize, "%d KB", value / 1024 ); + } else { // bytes + Com_sprintf( buf, bufsize, "%d bytes", value ); + } +} + +// Assumes time is in msec +static void UI_PrintTime ( char *buf, int bufsize, int time ) { + time /= 1000; // change to seconds + + if (time > 3600) { // in the hours range + Com_sprintf( buf, bufsize, "%d hr %d min", time / 3600, (time % 3600) / 60 ); + } else if (time > 60) { // mins + Com_sprintf( buf, bufsize, "%d min %d sec", time / 60, time % 60 ); + } else { // secs + Com_sprintf( buf, bufsize, "%d sec", time ); + } +} + +void Text_PaintCenter(float x, float y, float scale, vec4_t color, const char *text, float adjust) { + int len = Text_Width(text, scale, 0); + Text_Paint(x - len / 2, y, scale, color, text, 0, 0, ITEM_TEXTSTYLE_SHADOWEDMORE); +} + + +static void UI_DisplayDownloadInfo( const char *downloadName, float centerPoint, float yStart, float scale ) { + static char dlText[] = "Downloading:"; + static char etaText[] = "Estimated time left:"; + static char xferText[] = "Transfer rate:"; + + int downloadSize, downloadCount, downloadTime; + char dlSizeBuf[64], totalSizeBuf[64], xferRateBuf[64], dlTimeBuf[64]; + int xferRate; + int leftWidth; + const char *s; + + downloadSize = trap_Cvar_VariableValue( "cl_downloadSize" ); + downloadCount = trap_Cvar_VariableValue( "cl_downloadCount" ); + downloadTime = trap_Cvar_VariableValue( "cl_downloadTime" ); + + leftWidth = 320; + + UI_SetColor(colorWhite); + Text_PaintCenter(centerPoint, yStart + 112, scale, colorWhite, dlText, 0); + Text_PaintCenter(centerPoint, yStart + 192, scale, colorWhite, etaText, 0); + Text_PaintCenter(centerPoint, yStart + 248, scale, colorWhite, xferText, 0); + + if (downloadSize > 0) { + s = va( "%s (%d%%)", downloadName, downloadCount * 100 / downloadSize ); + } else { + s = downloadName; + } + + Text_PaintCenter(centerPoint, yStart+136, scale, colorWhite, s, 0); + + UI_ReadableSize( dlSizeBuf, sizeof dlSizeBuf, downloadCount ); + UI_ReadableSize( totalSizeBuf, sizeof totalSizeBuf, downloadSize ); + + if (downloadCount < 4096 || !downloadTime) { + Text_PaintCenter(leftWidth, yStart+216, scale, colorWhite, "estimating", 0); + Text_PaintCenter(leftWidth, yStart+160, scale, colorWhite, va("(%s of %s copied)", dlSizeBuf, totalSizeBuf), 0); + } else { + if ((uiInfo.uiDC.realTime - downloadTime) / 1000) { + xferRate = downloadCount / ((uiInfo.uiDC.realTime - downloadTime) / 1000); + } else { + xferRate = 0; + } + UI_ReadableSize( xferRateBuf, sizeof xferRateBuf, xferRate ); + + // Extrapolate estimated completion time + if (downloadSize && xferRate) { + int n = downloadSize / xferRate; // estimated time for entire d/l in secs + + // We do it in K (/1024) because we'd overflow around 4MB + UI_PrintTime ( dlTimeBuf, sizeof dlTimeBuf, + (n - (((downloadCount/1024) * n) / (downloadSize/1024))) * 1000); + + Text_PaintCenter(leftWidth, yStart+216, scale, colorWhite, dlTimeBuf, 0); + Text_PaintCenter(leftWidth, yStart+160, scale, colorWhite, va("(%s of %s copied)", dlSizeBuf, totalSizeBuf), 0); + } else { + Text_PaintCenter(leftWidth, yStart+216, scale, colorWhite, "estimating", 0); + if (downloadSize) { + Text_PaintCenter(leftWidth, yStart+160, scale, colorWhite, va("(%s of %s copied)", dlSizeBuf, totalSizeBuf), 0); + } else { + Text_PaintCenter(leftWidth, yStart+160, scale, colorWhite, va("(%s copied)", dlSizeBuf), 0); + } + } + + if (xferRate) { + Text_PaintCenter(leftWidth, yStart+272, scale, colorWhite, va("%s/Sec", xferRateBuf), 0); + } + } +} + +/* +======================== +UI_DrawConnectScreen + +This will also be overlaid on the cgame info screen during loading +to prevent it from blinking away too rapidly on local or lan games. +======================== +*/ +void UI_DrawConnectScreen( qboolean overlay ) { + char *s; + uiClientState_t cstate; + char info[MAX_INFO_VALUE]; + char text[256]; + float centerPoint, yStart, scale; + + menuDef_t *menu = Menus_FindByName("Connect"); + + + if ( !overlay && menu ) { + Menu_Paint(menu, qtrue); + } + + if (!overlay) { + centerPoint = 320; + yStart = 130; + scale = 0.5f; + } else { + centerPoint = 320; + yStart = 32; + scale = 0.6f; + return; + } + + // see what information we should display + trap_GetClientState( &cstate ); + + info[0] = '\0'; + if( trap_GetConfigString( CS_SERVERINFO, info, sizeof(info) ) ) { + Text_PaintCenter(centerPoint, yStart, scale, colorWhite, va( "Loading %s", Info_ValueForKey( info, "mapname" )), 0); + } + + if (!Q_stricmp(cstate.servername,"localhost")) { + Text_PaintCenter(centerPoint, yStart + 48, scale, colorWhite, va("Starting up..."), ITEM_TEXTSTYLE_SHADOWEDMORE); + } else { + strcpy(text, va("Connecting to %s", cstate.servername)); + Text_PaintCenter(centerPoint, yStart + 48, scale, colorWhite,text , ITEM_TEXTSTYLE_SHADOWEDMORE); + } + + //UI_DrawProportionalString( 320, 96, "Press Esc to abort", UI_CENTER|UI_SMALLFONT|UI_DROPSHADOW, menu_text_color ); + + // display global MOTD at bottom + Text_PaintCenter(centerPoint, 600, scale, colorWhite, Info_ValueForKey( cstate.updateInfoString, "motd" ), 0); + // print any server info (server full, bad version, etc) + if ( cstate.connState < CA_CONNECTED ) { + Text_PaintCenter(centerPoint, yStart + 176, scale, colorWhite, cstate.messageString, 0); + } + + if ( lastConnState > cstate.connState ) { + lastLoadingText[0] = '\0'; + } + lastConnState = cstate.connState; + + switch ( cstate.connState ) { + case CA_CONNECTING: + s = va("Awaiting connection...%i", cstate.connectPacketCount); + break; + case CA_CHALLENGING: + s = va("Awaiting challenge...%i", cstate.connectPacketCount); + break; + case CA_CONNECTED: { + char downloadName[MAX_INFO_VALUE]; + + trap_Cvar_VariableStringBuffer( "cl_downloadName", downloadName, sizeof(downloadName) ); + if (*downloadName) { + UI_DisplayDownloadInfo( downloadName, centerPoint, yStart, scale ); + return; + } + } + s = "Awaiting gamestate..."; + break; + case CA_LOADING: + return; + case CA_PRIMED: + return; + default: + return; + } + + + if (Q_stricmp(cstate.servername,"localhost")) { + Text_PaintCenter(centerPoint, yStart + 80, scale, colorWhite, s, 0); + } + + // password required / connection rejected information goes here +} + + +/* +================ +cvars +================ +*/ + +typedef struct { + vmCvar_t *vmCvar; + char *cvarName; + char *defaultString; + int cvarFlags; +} cvarTable_t; + +vmCvar_t ui_ffa_fraglimit; +vmCvar_t ui_ffa_timelimit; + +vmCvar_t ui_tourney_fraglimit; +vmCvar_t ui_tourney_timelimit; + +vmCvar_t ui_team_fraglimit; +vmCvar_t ui_team_timelimit; +vmCvar_t ui_team_friendly; + +vmCvar_t ui_ctf_capturelimit; +vmCvar_t ui_ctf_timelimit; +vmCvar_t ui_ctf_friendly; + +vmCvar_t ui_arenasFile; +vmCvar_t ui_botsFile; +vmCvar_t ui_spScores1; +vmCvar_t ui_spScores2; +vmCvar_t ui_spScores3; +vmCvar_t ui_spScores4; +vmCvar_t ui_spScores5; +vmCvar_t ui_spAwards; +vmCvar_t ui_spVideos; +vmCvar_t ui_spSkill; + +vmCvar_t ui_spSelection; + +vmCvar_t ui_browserMaster; +vmCvar_t ui_browserGameType; +vmCvar_t ui_browserSortKey; +vmCvar_t ui_browserShowFull; +vmCvar_t ui_browserShowEmpty; + +vmCvar_t ui_brassTime; +vmCvar_t ui_drawCrosshair; +vmCvar_t ui_drawCrosshairNames; +vmCvar_t ui_marks; + +vmCvar_t ui_server1; +vmCvar_t ui_server2; +vmCvar_t ui_server3; +vmCvar_t ui_server4; +vmCvar_t ui_server5; +vmCvar_t ui_server6; +vmCvar_t ui_server7; +vmCvar_t ui_server8; +vmCvar_t ui_server9; +vmCvar_t ui_server10; +vmCvar_t ui_server11; +vmCvar_t ui_server12; +vmCvar_t ui_server13; +vmCvar_t ui_server14; +vmCvar_t ui_server15; +vmCvar_t ui_server16; + +vmCvar_t ui_cdkeychecked; + +vmCvar_t ui_redteam; +vmCvar_t ui_redteam1; +vmCvar_t ui_redteam2; +vmCvar_t ui_redteam3; +vmCvar_t ui_redteam4; +vmCvar_t ui_redteam5; +vmCvar_t ui_blueteam; +vmCvar_t ui_blueteam1; +vmCvar_t ui_blueteam2; +vmCvar_t ui_blueteam3; +vmCvar_t ui_blueteam4; +vmCvar_t ui_blueteam5; +vmCvar_t ui_teamName; +vmCvar_t ui_dedicated; +vmCvar_t ui_gameType; +vmCvar_t ui_netGameType; +vmCvar_t ui_actualNetGameType; +vmCvar_t ui_joinGameType; +vmCvar_t ui_netSource; +vmCvar_t ui_serverFilterType; +vmCvar_t ui_opponentName; +vmCvar_t ui_menuFiles; +vmCvar_t ui_currentTier; +vmCvar_t ui_currentMap; +vmCvar_t ui_currentNetMap; +vmCvar_t ui_mapIndex; +vmCvar_t ui_currentOpponent; +vmCvar_t ui_selectedPlayer; +vmCvar_t ui_selectedPlayerName; +vmCvar_t ui_lastServerRefresh_0; +vmCvar_t ui_lastServerRefresh_1; +vmCvar_t ui_lastServerRefresh_2; +vmCvar_t ui_lastServerRefresh_3; +vmCvar_t ui_singlePlayerActive; +vmCvar_t ui_scoreAccuracy; +vmCvar_t ui_scoreImpressives; +vmCvar_t ui_scoreExcellents; +vmCvar_t ui_scoreCaptures; +vmCvar_t ui_scoreDefends; +vmCvar_t ui_scoreAssists; +vmCvar_t ui_scoreGauntlets; +vmCvar_t ui_scoreScore; +vmCvar_t ui_scorePerfect; +vmCvar_t ui_scoreTeam; +vmCvar_t ui_scoreBase; +vmCvar_t ui_scoreTimeBonus; +vmCvar_t ui_scoreSkillBonus; +vmCvar_t ui_scoreShutoutBonus; +vmCvar_t ui_scoreTime; +vmCvar_t ui_captureLimit; +vmCvar_t ui_fragLimit; +vmCvar_t ui_smallFont; +vmCvar_t ui_bigFont; +vmCvar_t ui_findPlayer; +vmCvar_t ui_Q3Model; +vmCvar_t ui_hudFiles; +vmCvar_t ui_recordSPDemo; +vmCvar_t ui_realCaptureLimit; +vmCvar_t ui_realWarmUp; +vmCvar_t ui_serverStatusTimeOut; + + +// bk001129 - made static to avoid aliasing +static cvarTable_t cvarTable[] = { + { &ui_ffa_fraglimit, "ui_ffa_fraglimit", "20", CVAR_ARCHIVE }, + { &ui_ffa_timelimit, "ui_ffa_timelimit", "0", CVAR_ARCHIVE }, + + { &ui_tourney_fraglimit, "ui_tourney_fraglimit", "0", CVAR_ARCHIVE }, + { &ui_tourney_timelimit, "ui_tourney_timelimit", "15", CVAR_ARCHIVE }, + + { &ui_team_fraglimit, "ui_team_fraglimit", "0", CVAR_ARCHIVE }, + { &ui_team_timelimit, "ui_team_timelimit", "20", CVAR_ARCHIVE }, + { &ui_team_friendly, "ui_team_friendly", "1", CVAR_ARCHIVE }, + + { &ui_ctf_capturelimit, "ui_ctf_capturelimit", "8", CVAR_ARCHIVE }, + { &ui_ctf_timelimit, "ui_ctf_timelimit", "30", CVAR_ARCHIVE }, + { &ui_ctf_friendly, "ui_ctf_friendly", "0", CVAR_ARCHIVE }, + + { &ui_arenasFile, "g_arenasFile", "", CVAR_INIT|CVAR_ROM }, + { &ui_botsFile, "g_botsFile", "", CVAR_INIT|CVAR_ROM }, + { &ui_spScores1, "g_spScores1", "", CVAR_ARCHIVE | CVAR_ROM }, + { &ui_spScores2, "g_spScores2", "", CVAR_ARCHIVE | CVAR_ROM }, + { &ui_spScores3, "g_spScores3", "", CVAR_ARCHIVE | CVAR_ROM }, + { &ui_spScores4, "g_spScores4", "", CVAR_ARCHIVE | CVAR_ROM }, + { &ui_spScores5, "g_spScores5", "", CVAR_ARCHIVE | CVAR_ROM }, + { &ui_spAwards, "g_spAwards", "", CVAR_ARCHIVE | CVAR_ROM }, + { &ui_spVideos, "g_spVideos", "", CVAR_ARCHIVE | CVAR_ROM }, + { &ui_spSkill, "g_spSkill", "2", CVAR_ARCHIVE }, + + { &ui_spSelection, "ui_spSelection", "", CVAR_ROM }, + + { &ui_browserMaster, "ui_browserMaster", "0", CVAR_ARCHIVE }, + { &ui_browserGameType, "ui_browserGameType", "0", CVAR_ARCHIVE }, + { &ui_browserSortKey, "ui_browserSortKey", "4", CVAR_ARCHIVE }, + { &ui_browserShowFull, "ui_browserShowFull", "1", CVAR_ARCHIVE }, + { &ui_browserShowEmpty, "ui_browserShowEmpty", "1", CVAR_ARCHIVE }, + + { &ui_brassTime, "cg_brassTime", "2500", CVAR_ARCHIVE }, + { &ui_drawCrosshair, "cg_drawCrosshair", "4", CVAR_ARCHIVE }, + { &ui_drawCrosshairNames, "cg_drawCrosshairNames", "1", CVAR_ARCHIVE }, + { &ui_marks, "cg_marks", "1", CVAR_ARCHIVE }, + + { &ui_server1, "server1", "", CVAR_ARCHIVE }, + { &ui_server2, "server2", "", CVAR_ARCHIVE }, + { &ui_server3, "server3", "", CVAR_ARCHIVE }, + { &ui_server4, "server4", "", CVAR_ARCHIVE }, + { &ui_server5, "server5", "", CVAR_ARCHIVE }, + { &ui_server6, "server6", "", CVAR_ARCHIVE }, + { &ui_server7, "server7", "", CVAR_ARCHIVE }, + { &ui_server8, "server8", "", CVAR_ARCHIVE }, + { &ui_server9, "server9", "", CVAR_ARCHIVE }, + { &ui_server10, "server10", "", CVAR_ARCHIVE }, + { &ui_server11, "server11", "", CVAR_ARCHIVE }, + { &ui_server12, "server12", "", CVAR_ARCHIVE }, + { &ui_server13, "server13", "", CVAR_ARCHIVE }, + { &ui_server14, "server14", "", CVAR_ARCHIVE }, + { &ui_server15, "server15", "", CVAR_ARCHIVE }, + { &ui_server16, "server16", "", CVAR_ARCHIVE }, + { &ui_cdkeychecked, "ui_cdkeychecked", "0", CVAR_ROM }, + { &ui_new, "ui_new", "0", CVAR_TEMP }, + { &ui_debug, "ui_debug", "0", CVAR_TEMP }, + { &ui_initialized, "ui_initialized", "0", CVAR_TEMP }, + { &ui_teamName, "ui_teamName", "Pagans", CVAR_ARCHIVE }, + { &ui_opponentName, "ui_opponentName", "Stroggs", CVAR_ARCHIVE }, + { &ui_redteam, "ui_redteam", "Pagans", CVAR_ARCHIVE }, + { &ui_blueteam, "ui_blueteam", "Stroggs", CVAR_ARCHIVE }, + { &ui_dedicated, "ui_dedicated", "0", CVAR_ARCHIVE }, + { &ui_gameType, "ui_gametype", "3", CVAR_ARCHIVE }, + { &ui_joinGameType, "ui_joinGametype", "0", CVAR_ARCHIVE }, + { &ui_netGameType, "ui_netGametype", "3", CVAR_ARCHIVE }, + { &ui_actualNetGameType, "ui_actualNetGametype", "3", CVAR_ARCHIVE }, + { &ui_redteam1, "ui_redteam1", "0", CVAR_ARCHIVE }, + { &ui_redteam2, "ui_redteam2", "0", CVAR_ARCHIVE }, + { &ui_redteam3, "ui_redteam3", "0", CVAR_ARCHIVE }, + { &ui_redteam4, "ui_redteam4", "0", CVAR_ARCHIVE }, + { &ui_redteam5, "ui_redteam5", "0", CVAR_ARCHIVE }, + { &ui_blueteam1, "ui_blueteam1", "0", CVAR_ARCHIVE }, + { &ui_blueteam2, "ui_blueteam2", "0", CVAR_ARCHIVE }, + { &ui_blueteam3, "ui_blueteam3", "0", CVAR_ARCHIVE }, + { &ui_blueteam4, "ui_blueteam4", "0", CVAR_ARCHIVE }, + { &ui_blueteam5, "ui_blueteam5", "0", CVAR_ARCHIVE }, + { &ui_netSource, "ui_netSource", "0", CVAR_ARCHIVE }, + { &ui_menuFiles, "ui_menuFiles", "ui/menus.txt", CVAR_ARCHIVE }, + { &ui_currentTier, "ui_currentTier", "0", CVAR_ARCHIVE }, + { &ui_currentMap, "ui_currentMap", "0", CVAR_ARCHIVE }, + { &ui_currentNetMap, "ui_currentNetMap", "0", CVAR_ARCHIVE }, + { &ui_mapIndex, "ui_mapIndex", "0", CVAR_ARCHIVE }, + { &ui_currentOpponent, "ui_currentOpponent", "0", CVAR_ARCHIVE }, + { &ui_selectedPlayer, "cg_selectedPlayer", "0", CVAR_ARCHIVE}, + { &ui_selectedPlayerName, "cg_selectedPlayerName", "", CVAR_ARCHIVE}, + { &ui_lastServerRefresh_0, "ui_lastServerRefresh_0", "", CVAR_ARCHIVE}, + { &ui_lastServerRefresh_1, "ui_lastServerRefresh_1", "", CVAR_ARCHIVE}, + { &ui_lastServerRefresh_2, "ui_lastServerRefresh_2", "", CVAR_ARCHIVE}, + { &ui_lastServerRefresh_3, "ui_lastServerRefresh_3", "", CVAR_ARCHIVE}, + { &ui_singlePlayerActive, "ui_singlePlayerActive", "0", 0}, + { &ui_scoreAccuracy, "ui_scoreAccuracy", "0", CVAR_ARCHIVE}, + { &ui_scoreImpressives, "ui_scoreImpressives", "0", CVAR_ARCHIVE}, + { &ui_scoreExcellents, "ui_scoreExcellents", "0", CVAR_ARCHIVE}, + { &ui_scoreCaptures, "ui_scoreCaptures", "0", CVAR_ARCHIVE}, + { &ui_scoreDefends, "ui_scoreDefends", "0", CVAR_ARCHIVE}, + { &ui_scoreAssists, "ui_scoreAssists", "0", CVAR_ARCHIVE}, + { &ui_scoreGauntlets, "ui_scoreGauntlets", "0",CVAR_ARCHIVE}, + { &ui_scoreScore, "ui_scoreScore", "0", CVAR_ARCHIVE}, + { &ui_scorePerfect, "ui_scorePerfect", "0", CVAR_ARCHIVE}, + { &ui_scoreTeam, "ui_scoreTeam", "0 to 0", CVAR_ARCHIVE}, + { &ui_scoreBase, "ui_scoreBase", "0", CVAR_ARCHIVE}, + { &ui_scoreTime, "ui_scoreTime", "00:00", CVAR_ARCHIVE}, + { &ui_scoreTimeBonus, "ui_scoreTimeBonus", "0", CVAR_ARCHIVE}, + { &ui_scoreSkillBonus, "ui_scoreSkillBonus", "0", CVAR_ARCHIVE}, + { &ui_scoreShutoutBonus, "ui_scoreShutoutBonus", "0", CVAR_ARCHIVE}, + { &ui_fragLimit, "ui_fragLimit", "10", 0}, + { &ui_captureLimit, "ui_captureLimit", "5", 0}, + { &ui_smallFont, "ui_smallFont", "0.25", CVAR_ARCHIVE}, + { &ui_bigFont, "ui_bigFont", "0.4", CVAR_ARCHIVE}, + { &ui_findPlayer, "ui_findPlayer", "Sarge", CVAR_ARCHIVE}, + { &ui_Q3Model, "ui_q3model", "0", CVAR_ARCHIVE}, + { &ui_hudFiles, "cg_hudFiles", "ui/hud.txt", CVAR_ARCHIVE}, + { &ui_recordSPDemo, "ui_recordSPDemo", "0", CVAR_ARCHIVE}, + { &ui_teamArenaFirstRun, "ui_teamArenaFirstRun", "0", CVAR_ARCHIVE}, + { &ui_realWarmUp, "g_warmup", "20", CVAR_ARCHIVE}, + { &ui_realCaptureLimit, "capturelimit", "8", CVAR_SERVERINFO | CVAR_ARCHIVE | CVAR_NORESTART}, + { &ui_serverStatusTimeOut, "ui_serverStatusTimeOut", "7000", CVAR_ARCHIVE}, + +}; + +// bk001129 - made static to avoid aliasing +static int cvarTableSize = sizeof(cvarTable) / sizeof(cvarTable[0]); + + +/* +================= +UI_RegisterCvars +================= +*/ +void UI_RegisterCvars( void ) { + int i; + cvarTable_t *cv; + + for ( i = 0, cv = cvarTable ; i < cvarTableSize ; i++, cv++ ) { + trap_Cvar_Register( cv->vmCvar, cv->cvarName, cv->defaultString, cv->cvarFlags ); + } +} + +/* +================= +UI_UpdateCvars +================= +*/ +void UI_UpdateCvars( void ) { + int i; + cvarTable_t *cv; + + for ( i = 0, cv = cvarTable ; i < cvarTableSize ; i++, cv++ ) { + trap_Cvar_Update( cv->vmCvar ); + } +} + + +/* +================= +ArenaServers_StopRefresh +================= +*/ +static void UI_StopServerRefresh( void ) +{ + int count; + + if (!uiInfo.serverStatus.refreshActive) { + // not currently refreshing + return; + } + uiInfo.serverStatus.refreshActive = qfalse; + Com_Printf("%d servers listed in browser with %d players.\n", + uiInfo.serverStatus.numDisplayServers, + uiInfo.serverStatus.numPlayersOnServers); + count = trap_LAN_GetServerCount(ui_netSource.integer); + if (count - uiInfo.serverStatus.numDisplayServers > 0) { + Com_Printf("%d servers not listed due to packet loss or pings higher than %d\n", + count - uiInfo.serverStatus.numDisplayServers, + (int) trap_Cvar_VariableValue("cl_maxPing")); + } + +} + +/* +================= +ArenaServers_MaxPing +================= +*/ +#ifndef MISSIONPACK // bk001206 +static int ArenaServers_MaxPing( void ) { + int maxPing; + + maxPing = (int)trap_Cvar_VariableValue( "cl_maxPing" ); + if( maxPing < 100 ) { + maxPing = 100; + } + return maxPing; +} +#endif + +/* +================= +UI_DoServerRefresh +================= +*/ +static void UI_DoServerRefresh( void ) +{ + qboolean wait = qfalse; + + if (!uiInfo.serverStatus.refreshActive) { + return; + } + if (ui_netSource.integer != AS_FAVORITES) { + if (ui_netSource.integer == AS_LOCAL) { + if (!trap_LAN_GetServerCount(ui_netSource.integer)) { + wait = qtrue; + } + } else { + if (trap_LAN_GetServerCount(ui_netSource.integer) < 0) { + wait = qtrue; + } + } + } + + if (uiInfo.uiDC.realTime < uiInfo.serverStatus.refreshtime) { + if (wait) { + return; + } + } + + // if still trying to retrieve pings + if (trap_LAN_UpdateVisiblePings(ui_netSource.integer)) { + uiInfo.serverStatus.refreshtime = uiInfo.uiDC.realTime + 1000; + } else if (!wait) { + // get the last servers in the list + UI_BuildServerDisplayList(2); + // stop the refresh + UI_StopServerRefresh(); + } + // + UI_BuildServerDisplayList(qfalse); +} + +/* +================= +UI_StartServerRefresh +================= +*/ +static void UI_StartServerRefresh(qboolean full) +{ + int i; + char *ptr; + + qtime_t q; + trap_RealTime(&q); + trap_Cvar_Set( va("ui_lastServerRefresh_%i", ui_netSource.integer), va("%s-%i, %i at %i:%i", MonthAbbrev[q.tm_mon],q.tm_mday, 1900+q.tm_year,q.tm_hour,q.tm_min)); + + if (!full) { + UI_UpdatePendingPings(); + return; + } + + uiInfo.serverStatus.refreshActive = qtrue; + uiInfo.serverStatus.nextDisplayRefresh = uiInfo.uiDC.realTime + 1000; + // clear number of displayed servers + uiInfo.serverStatus.numDisplayServers = 0; + uiInfo.serverStatus.numPlayersOnServers = 0; + // mark all servers as visible so we store ping updates for them + trap_LAN_MarkServerVisible(ui_netSource.integer, -1, qtrue); + // reset all the pings + trap_LAN_ResetPings(ui_netSource.integer); + // + if( ui_netSource.integer == AS_LOCAL ) { + trap_Cmd_ExecuteText( EXEC_NOW, "localservers\n" ); + uiInfo.serverStatus.refreshtime = uiInfo.uiDC.realTime + 1000; + return; + } + + uiInfo.serverStatus.refreshtime = uiInfo.uiDC.realTime + 5000; + if( ui_netSource.integer == AS_GLOBAL || ui_netSource.integer == AS_MPLAYER ) { + if( ui_netSource.integer == AS_GLOBAL ) { + i = 0; + } + else { + i = 1; + } + + ptr = UI_Cvar_VariableString("debug_protocol"); + if (strlen(ptr)) { + trap_Cmd_ExecuteText( EXEC_NOW, va( "globalservers %d %s full empty\n", i, ptr)); + } + else { + trap_Cmd_ExecuteText( EXEC_NOW, va( "globalservers %d %d full empty\n", i, (int)trap_Cvar_VariableValue( "protocol" ) ) ); + } + } +} + diff --git a/ta_ui/ui_players.c b/ta_ui/ui_players.c new file mode 100644 index 00000000..f206ad13 --- /dev/null +++ b/ta_ui/ui_players.c @@ -0,0 +1,1365 @@ +// Copyright (C) 1999-2000 Id Software, Inc. +// +// ui_players.c + +#include "ui_local.h" + + +#define UI_TIMER_GESTURE 2300 +#define UI_TIMER_JUMP 1000 +#define UI_TIMER_LAND 130 +#define UI_TIMER_WEAPON_SWITCH 300 +#define UI_TIMER_ATTACK 500 +#define UI_TIMER_MUZZLE_FLASH 20 +#define UI_TIMER_WEAPON_DELAY 250 + +#define JUMP_HEIGHT 56 + +#define SWINGSPEED 0.3f + +#define SPIN_SPEED 0.9f +#define COAST_TIME 1000 + + +static int dp_realtime; +static float jumpHeight; +sfxHandle_t weaponChangeSound; + + +/* +=============== +UI_PlayerInfo_SetWeapon +=============== +*/ +static void UI_PlayerInfo_SetWeapon( playerInfo_t *pi, weapon_t weaponNum ) { + gitem_t * item; + char path[MAX_QPATH]; + + pi->currentWeapon = weaponNum; +tryagain: + pi->realWeapon = weaponNum; + pi->weaponModel = 0; + pi->barrelModel = 0; + pi->flashModel = 0; + + if ( weaponNum == WP_NONE ) { + return; + } + + for ( item = bg_itemlist + 1; item->classname ; item++ ) { + if ( item->giType != IT_WEAPON ) { + continue; + } + if ( item->giTag == weaponNum ) { + break; + } + } + + if ( item->classname ) { + pi->weaponModel = trap_R_RegisterModel( item->world_model[0] ); + } + + if( pi->weaponModel == 0 ) { + //Blaze: Changed from WP_MACHINEGUN to WP_PISTOL + if( weaponNum == WP_PISTOL ) { + weaponNum = WP_NONE; + goto tryagain; + } + //Blaze: Changed from WP_MACHINEGUN to WP_PISTOL + weaponNum = WP_PISTOL; + goto tryagain; + } + //Blaze: none of our weapons have barrel models + /*if ( weaponNum == WP_PISTOL || weaponNum == WP_GAUNTLET || weaponNum == WP_BFG ) { + strcpy( path, item->world_model[0] ); + COM_StripExtension( path, path ); + strcat( path, "_barrel.md3" ); + pi->barrelModel = trap_R_RegisterModel( path ); + }*/ + + strcpy( path, item->world_model[0] ); + COM_StripExtension( path, path ); + strcat( path, "_flash.md3" ); + pi->flashModel = trap_R_RegisterModel( path ); + + +//Blaze: I think this makes some funky colors or something, I dont really know ;) +//Blaze: Reaction Weapons + switch( weaponNum ) { + case WP_KNIFE: + MAKERGB( pi->flashDlightColor, 0.6f, 0.6f, 1 ); + break; + + case WP_PISTOL: + MAKERGB( pi->flashDlightColor, 1, 1, 0 ); + break; + + case WP_M4: + MAKERGB( pi->flashDlightColor, 1, 1, 0 ); + break; + + case WP_SSG3000: + MAKERGB( pi->flashDlightColor, 1, 0.7f, 0.5f ); + break; + + case WP_MP5: + MAKERGB( pi->flashDlightColor, 1, 0.75f, 0 ); + break; + + case WP_HANDCANNON: + MAKERGB( pi->flashDlightColor, 0.6f, 0.6f, 1 ); + break; + + case WP_M3: + MAKERGB( pi->flashDlightColor, 1, 0.5f, 0 ); + break; + + case WP_AKIMBO: + MAKERGB( pi->flashDlightColor, 0.6f, 0.6f, 1 ); + break; + + case WP_GRENADE: + MAKERGB( pi->flashDlightColor, 1, 0.7f, 1 ); + break; + + default: + MAKERGB( pi->flashDlightColor, 1, 1, 1 ); + break; + } +} + + +/* +=============== +UI_ForceLegsAnim +=============== +*/ +static void UI_ForceLegsAnim( playerInfo_t *pi, int anim ) { + pi->legsAnim = ( ( pi->legsAnim & ANIM_TOGGLEBIT ) ^ ANIM_TOGGLEBIT ) | anim; + + if ( anim == LEGS_JUMP ) { + pi->legsAnimationTimer = UI_TIMER_JUMP; + } +} + + +/* +=============== +UI_SetLegsAnim +=============== +*/ +static void UI_SetLegsAnim( playerInfo_t *pi, int anim ) { + if ( pi->pendingLegsAnim ) { + anim = pi->pendingLegsAnim; + pi->pendingLegsAnim = 0; + } + UI_ForceLegsAnim( pi, anim ); +} + + +/* +=============== +UI_ForceTorsoAnim +=============== +*/ +static void UI_ForceTorsoAnim( playerInfo_t *pi, int anim ) { + pi->torsoAnim = ( ( pi->torsoAnim & ANIM_TOGGLEBIT ) ^ ANIM_TOGGLEBIT ) | anim; + + if ( anim == TORSO_GESTURE ) { + pi->torsoAnimationTimer = UI_TIMER_GESTURE; + } + + if ( anim == TORSO_ATTACK || anim == TORSO_ATTACK2 ) { + pi->torsoAnimationTimer = UI_TIMER_ATTACK; + } +} + + +/* +=============== +UI_SetTorsoAnim +=============== +*/ +static void UI_SetTorsoAnim( playerInfo_t *pi, int anim ) { + if ( pi->pendingTorsoAnim ) { + anim = pi->pendingTorsoAnim; + pi->pendingTorsoAnim = 0; + } + + UI_ForceTorsoAnim( pi, anim ); +} + + +/* +=============== +UI_TorsoSequencing +=============== +*/ +static void UI_TorsoSequencing( playerInfo_t *pi ) { + int currentAnim; + + currentAnim = pi->torsoAnim & ~ANIM_TOGGLEBIT; + + if ( pi->weapon != pi->currentWeapon ) { + if ( currentAnim != TORSO_DROP ) { + pi->torsoAnimationTimer = UI_TIMER_WEAPON_SWITCH; + UI_ForceTorsoAnim( pi, TORSO_DROP ); + } + } + + if ( pi->torsoAnimationTimer > 0 ) { + return; + } + + if( currentAnim == TORSO_GESTURE ) { + UI_SetTorsoAnim( pi, TORSO_STAND ); + return; + } + + if( currentAnim == TORSO_ATTACK || currentAnim == TORSO_ATTACK2 ) { + UI_SetTorsoAnim( pi, TORSO_STAND ); + return; + } + + if ( currentAnim == TORSO_DROP ) { + UI_PlayerInfo_SetWeapon( pi, pi->weapon ); + pi->torsoAnimationTimer = UI_TIMER_WEAPON_SWITCH; + UI_ForceTorsoAnim( pi, TORSO_RAISE ); + return; + } + + if ( currentAnim == TORSO_RAISE ) { + UI_SetTorsoAnim( pi, TORSO_STAND ); + return; + } +} + + +/* +=============== +UI_LegsSequencing +=============== +*/ +static void UI_LegsSequencing( playerInfo_t *pi ) { + int currentAnim; + + currentAnim = pi->legsAnim & ~ANIM_TOGGLEBIT; + + if ( pi->legsAnimationTimer > 0 ) { + if ( currentAnim == LEGS_JUMP ) { + jumpHeight = JUMP_HEIGHT * sin( M_PI * ( UI_TIMER_JUMP - pi->legsAnimationTimer ) / UI_TIMER_JUMP ); + } + return; + } + + if ( currentAnim == LEGS_JUMP ) { + UI_ForceLegsAnim( pi, LEGS_LAND ); + pi->legsAnimationTimer = UI_TIMER_LAND; + jumpHeight = 0; + return; + } + + if ( currentAnim == LEGS_LAND ) { + UI_SetLegsAnim( pi, LEGS_IDLE ); + return; + } +} + + +/* +====================== +UI_PositionEntityOnTag +====================== +*/ +static void UI_PositionEntityOnTag( refEntity_t *entity, const refEntity_t *parent, + clipHandle_t parentModel, char *tagName ) { + int i; + orientation_t lerped; + + // lerp the tag + trap_CM_LerpTag( &lerped, parentModel, parent->oldframe, parent->frame, + 1.0 - parent->backlerp, tagName ); + + // FIXME: allow origin offsets along tag? + VectorCopy( parent->origin, entity->origin ); + for ( i = 0 ; i < 3 ; i++ ) { + VectorMA( entity->origin, lerped.origin[i], parent->axis[i], entity->origin ); + } + + // cast away const because of compiler problems + MatrixMultiply( lerped.axis, ((refEntity_t*)parent)->axis, entity->axis ); + entity->backlerp = parent->backlerp; +} + + +/* +====================== +UI_PositionRotatedEntityOnTag +====================== +*/ +static void UI_PositionRotatedEntityOnTag( refEntity_t *entity, const refEntity_t *parent, + clipHandle_t parentModel, char *tagName ) { + int i; + orientation_t lerped; + vec3_t tempAxis[3]; + + // lerp the tag + trap_CM_LerpTag( &lerped, parentModel, parent->oldframe, parent->frame, + 1.0 - parent->backlerp, tagName ); + + // FIXME: allow origin offsets along tag? + VectorCopy( parent->origin, entity->origin ); + for ( i = 0 ; i < 3 ; i++ ) { + VectorMA( entity->origin, lerped.origin[i], parent->axis[i], entity->origin ); + } + + // cast away const because of compiler problems + MatrixMultiply( entity->axis, ((refEntity_t *)parent)->axis, tempAxis ); + MatrixMultiply( lerped.axis, tempAxis, entity->axis ); +} + + +/* +=============== +UI_SetLerpFrameAnimation +=============== +*/ +static void UI_SetLerpFrameAnimation( playerInfo_t *ci, lerpFrame_t *lf, int newAnimation ) { + animation_t *anim; + + lf->animationNumber = newAnimation; + newAnimation &= ~ANIM_TOGGLEBIT; + + if ( newAnimation < 0 || newAnimation >= MAX_ANIMATIONS ) { + trap_Error( va("Bad animation number: %i", newAnimation) ); + } + + anim = &ci->animations[ newAnimation ]; + + lf->animation = anim; + lf->animationTime = lf->frameTime + anim->initialLerp; +} + + +/* +=============== +UI_RunLerpFrame +=============== +*/ +static void UI_RunLerpFrame( playerInfo_t *ci, lerpFrame_t *lf, int newAnimation ) { + int f; + animation_t *anim; + + // see if the animation sequence is switching + if ( newAnimation != lf->animationNumber || !lf->animation ) { + UI_SetLerpFrameAnimation( ci, lf, newAnimation ); + } + + // if we have passed the current frame, move it to + // oldFrame and calculate a new frame + if ( dp_realtime >= lf->frameTime ) { + lf->oldFrame = lf->frame; + lf->oldFrameTime = lf->frameTime; + + // get the next frame based on the animation + anim = lf->animation; + if ( dp_realtime < lf->animationTime ) { + lf->frameTime = lf->animationTime; // initial lerp + } else { + lf->frameTime = lf->oldFrameTime + anim->frameLerp; + } + f = ( lf->frameTime - lf->animationTime ) / anim->frameLerp; + if ( f >= anim->numFrames ) { + f -= anim->numFrames; + if ( anim->loopFrames ) { + f %= anim->loopFrames; + f += anim->numFrames - anim->loopFrames; + } else { + f = anim->numFrames - 1; + // the animation is stuck at the end, so it + // can immediately transition to another sequence + lf->frameTime = dp_realtime; + } + } + lf->frame = anim->firstFrame + f; + if ( dp_realtime > lf->frameTime ) { + lf->frameTime = dp_realtime; + } + } + + if ( lf->frameTime > dp_realtime + 200 ) { + lf->frameTime = dp_realtime; + } + + if ( lf->oldFrameTime > dp_realtime ) { + lf->oldFrameTime = dp_realtime; + } + // calculate current lerp value + if ( lf->frameTime == lf->oldFrameTime ) { + lf->backlerp = 0; + } else { + lf->backlerp = 1.0 - (float)( dp_realtime - lf->oldFrameTime ) / ( lf->frameTime - lf->oldFrameTime ); + } +} + + +/* +=============== +UI_PlayerAnimation +=============== +*/ +static void UI_PlayerAnimation( playerInfo_t *pi, int *legsOld, int *legs, float *legsBackLerp, + int *torsoOld, int *torso, float *torsoBackLerp ) { + + // legs animation + pi->legsAnimationTimer -= uiInfo.uiDC.frameTime; + if ( pi->legsAnimationTimer < 0 ) { + pi->legsAnimationTimer = 0; + } + + UI_LegsSequencing( pi ); + + if ( pi->legs.yawing && ( pi->legsAnim & ~ANIM_TOGGLEBIT ) == LEGS_IDLE ) { + UI_RunLerpFrame( pi, &pi->legs, LEGS_TURN ); + } else { + UI_RunLerpFrame( pi, &pi->legs, pi->legsAnim ); + } + *legsOld = pi->legs.oldFrame; + *legs = pi->legs.frame; + *legsBackLerp = pi->legs.backlerp; + + // torso animation + pi->torsoAnimationTimer -= uiInfo.uiDC.frameTime; + if ( pi->torsoAnimationTimer < 0 ) { + pi->torsoAnimationTimer = 0; + } + + UI_TorsoSequencing( pi ); + + UI_RunLerpFrame( pi, &pi->torso, pi->torsoAnim ); + *torsoOld = pi->torso.oldFrame; + *torso = pi->torso.frame; + *torsoBackLerp = pi->torso.backlerp; +} + + +/* +================== +UI_SwingAngles +================== +*/ +static void UI_SwingAngles( float destination, float swingTolerance, float clampTolerance, + float speed, float *angle, qboolean *swinging ) { + float swing; + float move; + float scale; + + if ( !*swinging ) { + // see if a swing should be started + swing = AngleSubtract( *angle, destination ); + if ( swing > swingTolerance || swing < -swingTolerance ) { + *swinging = qtrue; + } + } + + if ( !*swinging ) { + return; + } + + // modify the speed depending on the delta + // so it doesn't seem so linear + swing = AngleSubtract( destination, *angle ); + scale = fabs( swing ); + if ( scale < swingTolerance * 0.5 ) { + scale = 0.5; + } else if ( scale < swingTolerance ) { + scale = 1.0; + } else { + scale = 2.0; + } + + // swing towards the destination angle + if ( swing >= 0 ) { + move = uiInfo.uiDC.frameTime * scale * speed; + if ( move >= swing ) { + move = swing; + *swinging = qfalse; + } + *angle = AngleMod( *angle + move ); + } else if ( swing < 0 ) { + move = uiInfo.uiDC.frameTime * scale * -speed; + if ( move <= swing ) { + move = swing; + *swinging = qfalse; + } + *angle = AngleMod( *angle + move ); + } + + // clamp to no more than tolerance + swing = AngleSubtract( destination, *angle ); + if ( swing > clampTolerance ) { + *angle = AngleMod( destination - (clampTolerance - 1) ); + } else if ( swing < -clampTolerance ) { + *angle = AngleMod( destination + (clampTolerance - 1) ); + } +} + + +/* +====================== +UI_MovedirAdjustment +====================== +*/ +static float UI_MovedirAdjustment( playerInfo_t *pi ) { + vec3_t relativeAngles; + vec3_t moveVector; + + VectorSubtract( pi->viewAngles, pi->moveAngles, relativeAngles ); + AngleVectors( relativeAngles, moveVector, NULL, NULL ); + if ( Q_fabs( moveVector[0] ) < 0.01 ) { + moveVector[0] = 0.0; + } + if ( Q_fabs( moveVector[1] ) < 0.01 ) { + moveVector[1] = 0.0; + } + + if ( moveVector[1] == 0 && moveVector[0] > 0 ) { + return 0; + } + if ( moveVector[1] < 0 && moveVector[0] > 0 ) { + return 22; + } + if ( moveVector[1] < 0 && moveVector[0] == 0 ) { + return 45; + } + if ( moveVector[1] < 0 && moveVector[0] < 0 ) { + return -22; + } + if ( moveVector[1] == 0 && moveVector[0] < 0 ) { + return 0; + } + if ( moveVector[1] > 0 && moveVector[0] < 0 ) { + return 22; + } + if ( moveVector[1] > 0 && moveVector[0] == 0 ) { + return -45; + } + + return -22; +} + + +/* +=============== +UI_PlayerAngles +=============== +*/ +static void UI_PlayerAngles( playerInfo_t *pi, vec3_t legs[3], vec3_t torso[3], vec3_t head[3] ) { + vec3_t legsAngles, torsoAngles, headAngles; + float dest; + float adjust; + + VectorCopy( pi->viewAngles, headAngles ); + headAngles[YAW] = AngleMod( headAngles[YAW] ); + VectorClear( legsAngles ); + VectorClear( torsoAngles ); + + // --------- yaw ------------- + + // allow yaw to drift a bit + if ( ( pi->legsAnim & ~ANIM_TOGGLEBIT ) != LEGS_IDLE + || ( pi->torsoAnim & ~ANIM_TOGGLEBIT ) != TORSO_STAND ) { + // if not standing still, always point all in the same direction + pi->torso.yawing = qtrue; // always center + pi->torso.pitching = qtrue; // always center + pi->legs.yawing = qtrue; // always center + } + + // adjust legs for movement dir + adjust = UI_MovedirAdjustment( pi ); + legsAngles[YAW] = headAngles[YAW] + adjust; + torsoAngles[YAW] = headAngles[YAW] + 0.25 * adjust; + + + // torso + UI_SwingAngles( torsoAngles[YAW], 25, 90, SWINGSPEED, &pi->torso.yawAngle, &pi->torso.yawing ); + UI_SwingAngles( legsAngles[YAW], 40, 90, SWINGSPEED, &pi->legs.yawAngle, &pi->legs.yawing ); + + torsoAngles[YAW] = pi->torso.yawAngle; + legsAngles[YAW] = pi->legs.yawAngle; + + // --------- pitch ------------- + + // only show a fraction of the pitch angle in the torso + if ( headAngles[PITCH] > 180 ) { + dest = (-360 + headAngles[PITCH]) * 0.75; + } else { + dest = headAngles[PITCH] * 0.75; + } + UI_SwingAngles( dest, 15, 30, 0.1f, &pi->torso.pitchAngle, &pi->torso.pitching ); + torsoAngles[PITCH] = pi->torso.pitchAngle; + + // pull the angles back out of the hierarchial chain + AnglesSubtract( headAngles, torsoAngles, headAngles ); + AnglesSubtract( torsoAngles, legsAngles, torsoAngles ); + AnglesToAxis( legsAngles, legs ); + AnglesToAxis( torsoAngles, torso ); + AnglesToAxis( headAngles, head ); +} + + +/* +=============== +UI_PlayerFloatSprite +=============== +*/ +static void UI_PlayerFloatSprite( playerInfo_t *pi, vec3_t origin, qhandle_t shader ) { + refEntity_t ent; + + memset( &ent, 0, sizeof( ent ) ); + VectorCopy( origin, ent.origin ); + ent.origin[2] += 48; + ent.reType = RT_SPRITE; + ent.customShader = shader; + ent.radius = 10; + ent.renderfx = 0; + trap_R_AddRefEntityToScene( &ent ); +} + + +/* +====================== +UI_MachinegunSpinAngle +====================== +*/ +float UI_MachinegunSpinAngle( playerInfo_t *pi ) { + int delta; + float angle; + float speed; + int torsoAnim; + + delta = dp_realtime - pi->barrelTime; + if ( pi->barrelSpinning ) { + angle = pi->barrelAngle + delta * SPIN_SPEED; + } else { + if ( delta > COAST_TIME ) { + delta = COAST_TIME; + } + + speed = 0.5 * ( SPIN_SPEED + (float)( COAST_TIME - delta ) / COAST_TIME ); + angle = pi->barrelAngle + delta * speed; + } + + torsoAnim = pi->torsoAnim & ~ANIM_TOGGLEBIT; + if( torsoAnim == TORSO_ATTACK2 ) { + torsoAnim = TORSO_ATTACK; + } + if ( pi->barrelSpinning == !(torsoAnim == TORSO_ATTACK) ) { + pi->barrelTime = dp_realtime; + pi->barrelAngle = AngleMod( angle ); + pi->barrelSpinning = !!(torsoAnim == TORSO_ATTACK); + } + + return angle; +} + + +/* +=============== +UI_DrawPlayer +=============== +*/ +void UI_DrawPlayer( float x, float y, float w, float h, playerInfo_t *pi, int time ) { + refdef_t refdef; + refEntity_t legs; + refEntity_t torso; + refEntity_t head; + refEntity_t gun; + refEntity_t barrel; + refEntity_t flash; + vec3_t origin; + int renderfx; + vec3_t mins = {-16, -16, -24}; + vec3_t maxs = {16, 16, 32}; + float len; + float xx; + + if ( !pi->legsModel || !pi->torsoModel || !pi->headModel || !pi->animations[0].numFrames ) { + return; + } + + // this allows the ui to cache the player model on the main menu + if (w == 0 || h == 0) { + return; + } + + dp_realtime = time; + + if ( pi->pendingWeapon != -1 && dp_realtime > pi->weaponTimer ) { + pi->weapon = pi->pendingWeapon; + pi->lastWeapon = pi->pendingWeapon; + pi->pendingWeapon = -1; + pi->weaponTimer = 0; + if( pi->currentWeapon != pi->weapon ) { + trap_S_StartLocalSound( weaponChangeSound, CHAN_LOCAL ); + } + } + + UI_AdjustFrom640( &x, &y, &w, &h ); + + y -= jumpHeight; + + memset( &refdef, 0, sizeof( refdef ) ); + memset( &legs, 0, sizeof(legs) ); + memset( &torso, 0, sizeof(torso) ); + memset( &head, 0, sizeof(head) ); + + refdef.rdflags = RDF_NOWORLDMODEL; + + AxisClear( refdef.viewaxis ); + + refdef.x = x; + refdef.y = y; + refdef.width = w; + refdef.height = h; + + refdef.fov_x = (int)((float)refdef.width / 640.0f * 90.0f); + xx = refdef.width / tan( refdef.fov_x / 360 * M_PI ); + refdef.fov_y = atan2( refdef.height, xx ); + refdef.fov_y *= ( 360 / (float)M_PI ); + + // calculate distance so the player nearly fills the box + len = 0.7 * ( maxs[2] - mins[2] ); + origin[0] = len / tan( DEG2RAD(refdef.fov_x) * 0.5 ); + origin[1] = 0.5 * ( mins[1] + maxs[1] ); + origin[2] = -0.5 * ( mins[2] + maxs[2] ); + + refdef.time = dp_realtime; + + trap_R_ClearScene(); + + // get the rotation information + UI_PlayerAngles( pi, legs.axis, torso.axis, head.axis ); + + // get the animation state (after rotation, to allow feet shuffle) + UI_PlayerAnimation( pi, &legs.oldframe, &legs.frame, &legs.backlerp, + &torso.oldframe, &torso.frame, &torso.backlerp ); + + renderfx = RF_LIGHTING_ORIGIN | RF_NOSHADOW; + + // + // add the legs + // + legs.hModel = pi->legsModel; + legs.customSkin = pi->legsSkin; + + VectorCopy( origin, legs.origin ); + + VectorCopy( origin, legs.lightingOrigin ); + legs.renderfx = renderfx; + VectorCopy (legs.origin, legs.oldorigin); + + trap_R_AddRefEntityToScene( &legs ); + + if (!legs.hModel) { + return; + } + + // + // add the torso + // + torso.hModel = pi->torsoModel; + if (!torso.hModel) { + return; + } + + torso.customSkin = pi->torsoSkin; + + VectorCopy( origin, torso.lightingOrigin ); + + UI_PositionRotatedEntityOnTag( &torso, &legs, pi->legsModel, "tag_torso"); + + torso.renderfx = renderfx; + + trap_R_AddRefEntityToScene( &torso ); + + // + // add the head + // + head.hModel = pi->headModel; + if (!head.hModel) { + return; + } + head.customSkin = pi->headSkin; + + VectorCopy( origin, head.lightingOrigin ); + + UI_PositionRotatedEntityOnTag( &head, &torso, pi->torsoModel, "tag_head"); + + head.renderfx = renderfx; + + trap_R_AddRefEntityToScene( &head ); + + // + // add the gun + // + if ( pi->currentWeapon != WP_NONE ) { + memset( &gun, 0, sizeof(gun) ); + gun.hModel = pi->weaponModel; + VectorCopy( origin, gun.lightingOrigin ); + UI_PositionEntityOnTag( &gun, &torso, pi->torsoModel, "tag_weapon"); + gun.renderfx = renderfx; + trap_R_AddRefEntityToScene( &gun ); + } + + // + // add the spinning barrel + // + //Blaze: No spinning barrels in rq3 + /* + if ( pi->realWeapon == WP_MACHINEGUN || pi->realWeapon == WP_GAUNTLET || pi->realWeapon == WP_BFG ) { + vec3_t angles; + + memset( &barrel, 0, sizeof(barrel) ); + VectorCopy( origin, barrel.lightingOrigin ); + barrel.renderfx = renderfx; + + barrel.hModel = pi->barrelModel; + angles[YAW] = 0; + angles[PITCH] = 0; + angles[ROLL] = UI_MachinegunSpinAngle( pi ); + if( pi->realWeapon == WP_GAUNTLET || pi->realWeapon == WP_BFG ) { + angles[PITCH] = angles[ROLL]; + angles[ROLL] = 0; + } + AnglesToAxis( angles, barrel.axis ); + + UI_PositionRotatedEntityOnTag( &barrel, &gun, pi->weaponModel, "tag_barrel"); + + trap_R_AddRefEntityToScene( &barrel ); + } + */ + + // + // add muzzle flash + // + if ( dp_realtime <= pi->muzzleFlashTime ) { + if ( pi->flashModel ) { + memset( &flash, 0, sizeof(flash) ); + flash.hModel = pi->flashModel; + VectorCopy( origin, flash.lightingOrigin ); + UI_PositionEntityOnTag( &flash, &gun, pi->weaponModel, "tag_flash"); + flash.renderfx = renderfx; + trap_R_AddRefEntityToScene( &flash ); + } + + // make a dlight for the flash + if ( pi->flashDlightColor[0] || pi->flashDlightColor[1] || pi->flashDlightColor[2] ) { + trap_R_AddLightToScene( flash.origin, 200 + (rand()&31), pi->flashDlightColor[0], + pi->flashDlightColor[1], pi->flashDlightColor[2] ); + } + } + + // + // add the chat icon + // + if ( pi->chat ) { + UI_PlayerFloatSprite( pi, origin, trap_R_RegisterShaderNoMip( "sprites/balloon3" ) ); + } + + // + // add an accent light + // + origin[0] -= 100; // + = behind, - = in front + origin[1] += 100; // + = left, - = right + origin[2] += 100; // + = above, - = below + trap_R_AddLightToScene( origin, 500, 1.0, 1.0, 1.0 ); + + origin[0] -= 100; + origin[1] -= 100; + origin[2] -= 100; + trap_R_AddLightToScene( origin, 500, 1.0, 0.0, 0.0 ); + + trap_R_RenderScene( &refdef ); +} + +/* +========================== +UI_FileExists +========================== +*/ +static qboolean UI_FileExists(const char *filename) { + int len; + + len = trap_FS_FOpenFile( filename, 0, FS_READ ); + if (len>0) { + return qtrue; + } + return qfalse; +} + +/* +========================== +UI_FindClientHeadFile +========================== +*/ +static qboolean UI_FindClientHeadFile( char *filename, int length, const char *teamName, const char *headModelName, const char *headSkinName, const char *base, const char *ext ) { + char *team, *headsFolder; + int i; + + team = "default"; + + if ( headModelName[0] == '*' ) { + headsFolder = "heads/"; + headModelName++; + } + else { + headsFolder = ""; + } + while(1) { + for ( i = 0; i < 2; i++ ) { + if ( i == 0 && teamName && *teamName ) { + Com_sprintf( filename, length, "models/players/%s%s/%s/%s%s_%s.%s", headsFolder, headModelName, headSkinName, teamName, base, team, ext ); + } + else { + Com_sprintf( filename, length, "models/players/%s%s/%s/%s_%s.%s", headsFolder, headModelName, headSkinName, base, team, ext ); + } + if ( UI_FileExists( filename ) ) { + return qtrue; + } + if ( i == 0 && teamName && *teamName ) { + Com_sprintf( filename, length, "models/players/%s%s/%s%s_%s.%s", headsFolder, headModelName, teamName, base, headSkinName, ext ); + } + else { + Com_sprintf( filename, length, "models/players/%s%s/%s_%s.%s", headsFolder, headModelName, base, headSkinName, ext ); + } + if ( UI_FileExists( filename ) ) { + return qtrue; + } + if ( !teamName || !*teamName ) { + break; + } + } + // if tried the heads folder first + if ( headsFolder[0] ) { + break; + } + headsFolder = "heads/"; + } + + return qfalse; +} + +/* +========================== +UI_RegisterClientSkin +========================== +*/ +static qboolean UI_RegisterClientSkin( playerInfo_t *pi, const char *modelName, const char *skinName, const char *headModelName, const char *headSkinName , const char *teamName) { + char filename[MAX_QPATH*2]; + + if (teamName && *teamName) { + Com_sprintf( filename, sizeof( filename ), "models/players/%s/%s/lower_%s.skin", modelName, teamName, skinName ); + } else { + Com_sprintf( filename, sizeof( filename ), "models/players/%s/lower_%s.skin", modelName, skinName ); + } + pi->legsSkin = trap_R_RegisterSkin( filename ); + if (!pi->legsSkin) { + if (teamName && *teamName) { + Com_sprintf( filename, sizeof( filename ), "models/players/characters/%s/%s/lower_%s.skin", modelName, teamName, skinName ); + } else { + Com_sprintf( filename, sizeof( filename ), "models/players/characters/%s/lower_%s.skin", modelName, skinName ); + } + pi->legsSkin = trap_R_RegisterSkin( filename ); + } + + if (teamName && *teamName) { + Com_sprintf( filename, sizeof( filename ), "models/players/%s/%s/upper_%s.skin", modelName, teamName, skinName ); + } else { + Com_sprintf( filename, sizeof( filename ), "models/players/%s/upper_%s.skin", modelName, skinName ); + } + pi->torsoSkin = trap_R_RegisterSkin( filename ); + if (!pi->torsoSkin) { + if (teamName && *teamName) { + Com_sprintf( filename, sizeof( filename ), "models/players/characters/%s/%s/upper_%s.skin", modelName, teamName, skinName ); + } else { + Com_sprintf( filename, sizeof( filename ), "models/players/characters/%s/upper_%s.skin", modelName, skinName ); + } + pi->torsoSkin = trap_R_RegisterSkin( filename ); + } + + if ( UI_FindClientHeadFile( filename, sizeof(filename), teamName, headModelName, headSkinName, "head", "skin" ) ) { + pi->headSkin = trap_R_RegisterSkin( filename ); + } + + if ( !pi->legsSkin || !pi->torsoSkin || !pi->headSkin ) { + return qfalse; + } + + return qtrue; +} + + +/* +====================== +UI_ParseAnimationFile +====================== +*/ +static qboolean UI_ParseAnimationFile( const char *filename, animation_t *animations ) { + char *text_p, *prev; + int len; + int i; + char *token; + float fps; + int skip; + char text[20000]; + fileHandle_t f; + + memset( animations, 0, sizeof( animation_t ) * MAX_ANIMATIONS ); + + // load the file + len = trap_FS_FOpenFile( filename, &f, FS_READ ); + if ( len <= 0 ) { + return qfalse; + } + if ( len >= ( sizeof( text ) - 1 ) ) { + Com_Printf( "File %s too long\n", filename ); + return qfalse; + } + trap_FS_Read( text, len, f ); + text[len] = 0; + trap_FS_FCloseFile( f ); + + COM_Compress(text); + + // parse the text + text_p = text; + skip = 0; // quite the compiler warning + + // read optional parameters + while ( 1 ) { + prev = text_p; // so we can unget + token = COM_Parse( &text_p ); + if ( !token ) { + break; + } + if ( !Q_stricmp( token, "footsteps" ) ) { + token = COM_Parse( &text_p ); + if ( !token ) { + break; + } + continue; + } else if ( !Q_stricmp( token, "headoffset" ) ) { + for ( i = 0 ; i < 3 ; i++ ) { + token = COM_Parse( &text_p ); + if ( !token ) { + break; + } + } + continue; + } else if ( !Q_stricmp( token, "sex" ) ) { + token = COM_Parse( &text_p ); + if ( !token ) { + break; + } + continue; + } + + // if it is a number, start parsing animations + if ( token[0] >= '0' && token[0] <= '9' ) { + text_p = prev; // unget the token + break; + } + + Com_Printf( "unknown token '%s' is %s\n", token, filename ); + } + + // read information for each frame + for ( i = 0 ; i < MAX_ANIMATIONS ; i++ ) { + + token = COM_Parse( &text_p ); + if ( !token ) { + break; + } + animations[i].firstFrame = atoi( token ); + // leg only frames are adjusted to not count the upper body only frames + if ( i == LEGS_WALKCR ) { + skip = animations[LEGS_WALKCR].firstFrame - animations[TORSO_GESTURE].firstFrame; + } + if ( i >= LEGS_WALKCR ) { + animations[i].firstFrame -= skip; + } + + token = COM_Parse( &text_p ); + if ( !token ) { + break; + } + animations[i].numFrames = atoi( token ); + + token = COM_Parse( &text_p ); + if ( !token ) { + break; + } + animations[i].loopFrames = atoi( token ); + + token = COM_Parse( &text_p ); + if ( !token ) { + break; + } + fps = atof( token ); + if ( fps == 0 ) { + fps = 1; + } + animations[i].frameLerp = 1000 / fps; + animations[i].initialLerp = 1000 / fps; + } + + if ( i != MAX_ANIMATIONS ) { + Com_Printf( "Error parsing animation file: %s", filename ); + return qfalse; + } + + return qtrue; +} + +/* +========================== +UI_RegisterClientModelname +========================== +*/ +qboolean UI_RegisterClientModelname( playerInfo_t *pi, const char *modelSkinName, const char *headModelSkinName, const char *teamName ) { + char modelName[MAX_QPATH]; + char skinName[MAX_QPATH]; + char headModelName[MAX_QPATH]; + char headSkinName[MAX_QPATH]; + char filename[MAX_QPATH]; + char *slash; + + pi->torsoModel = 0; + pi->headModel = 0; + + if ( !modelSkinName[0] ) { + return qfalse; + } + + Q_strncpyz( modelName, modelSkinName, sizeof( modelName ) ); + + slash = strchr( modelName, '/' ); + if ( !slash ) { + // modelName did not include a skin name + Q_strncpyz( skinName, "default", sizeof( skinName ) ); + } else { + Q_strncpyz( skinName, slash + 1, sizeof( skinName ) ); + *slash = '\0'; + } + + Q_strncpyz( headModelName, headModelSkinName, sizeof( headModelName ) ); + slash = strchr( headModelName, '/' ); + if ( !slash ) { + // modelName did not include a skin name + Q_strncpyz( headSkinName, "default", sizeof( skinName ) ); + } else { + Q_strncpyz( headSkinName, slash + 1, sizeof( skinName ) ); + *slash = '\0'; + } + + // load cmodels before models so filecache works + + Com_sprintf( filename, sizeof( filename ), "models/players/%s/lower.md3", modelName ); + pi->legsModel = trap_R_RegisterModel( filename ); + if ( !pi->legsModel ) { + Com_sprintf( filename, sizeof( filename ), "models/players/characters/%s/lower.md3", modelName ); + pi->legsModel = trap_R_RegisterModel( filename ); + if ( !pi->legsModel ) { + Com_Printf( "Failed to load model file %s\n", filename ); + return qfalse; + } + } + + Com_sprintf( filename, sizeof( filename ), "models/players/%s/upper.md3", modelName ); + pi->torsoModel = trap_R_RegisterModel( filename ); + if ( !pi->torsoModel ) { + Com_sprintf( filename, sizeof( filename ), "models/players/characters/%s/upper.md3", modelName ); + pi->torsoModel = trap_R_RegisterModel( filename ); + if ( !pi->torsoModel ) { + Com_Printf( "Failed to load model file %s\n", filename ); + return qfalse; + } + } + + if (headModelName && headModelName[0] == '*' ) { + Com_sprintf( filename, sizeof( filename ), "models/players/heads/%s/%s.md3", &headModelName[1], &headModelName[1] ); + } + else { + Com_sprintf( filename, sizeof( filename ), "models/players/%s/head.md3", headModelName ); + } + pi->headModel = trap_R_RegisterModel( filename ); + if ( !pi->headModel && headModelName[0] != '*') { + Com_sprintf( filename, sizeof( filename ), "models/players/heads/%s/%s.md3", headModelName, headModelName ); + pi->headModel = trap_R_RegisterModel( filename ); + } + + if (!pi->headModel) { + Com_Printf( "Failed to load model file %s\n", filename ); + return qfalse; + } + + // if any skins failed to load, fall back to default + if ( !UI_RegisterClientSkin( pi, modelName, skinName, headModelName, headSkinName, teamName) ) { + if ( !UI_RegisterClientSkin( pi, modelName, "default", headModelName, "default", teamName ) ) { + Com_Printf( "Failed to load skin file: %s : %s\n", modelName, skinName ); + return qfalse; + } + } + + // load the animations + Com_sprintf( filename, sizeof( filename ), "models/players/%s/animation.cfg", modelName ); + if ( !UI_ParseAnimationFile( filename, pi->animations ) ) { + Com_sprintf( filename, sizeof( filename ), "models/players/characters/%s/animation.cfg", modelName ); + if ( !UI_ParseAnimationFile( filename, pi->animations ) ) { + Com_Printf( "Failed to load animation file %s\n", filename ); + return qfalse; + } + } + + return qtrue; +} + + +/* +=============== +UI_PlayerInfo_SetModel +=============== +*/ +void UI_PlayerInfo_SetModel( playerInfo_t *pi, const char *model, const char *headmodel, char *teamName ) { + memset( pi, 0, sizeof(*pi) ); + UI_RegisterClientModelname( pi, model, headmodel, teamName ); + //Blaze: Changed from WP_MACHINEGUN to WP_PISTOL + pi->weapon = WP_PISTOL; + pi->currentWeapon = pi->weapon; + pi->lastWeapon = pi->weapon; + pi->pendingWeapon = -1; + pi->weaponTimer = 0; + pi->chat = qfalse; + pi->newModel = qtrue; + UI_PlayerInfo_SetWeapon( pi, pi->weapon ); +} + + +/* +=============== +UI_PlayerInfo_SetInfo +=============== +*/ +void UI_PlayerInfo_SetInfo( playerInfo_t *pi, int legsAnim, int torsoAnim, vec3_t viewAngles, vec3_t moveAngles, weapon_t weaponNumber, qboolean chat ) { + int currentAnim; + weapon_t weaponNum; + + pi->chat = chat; + + // view angles + VectorCopy( viewAngles, pi->viewAngles ); + + // move angles + VectorCopy( moveAngles, pi->moveAngles ); + + if ( pi->newModel ) { + pi->newModel = qfalse; + + jumpHeight = 0; + pi->pendingLegsAnim = 0; + UI_ForceLegsAnim( pi, legsAnim ); + pi->legs.yawAngle = viewAngles[YAW]; + pi->legs.yawing = qfalse; + + pi->pendingTorsoAnim = 0; + UI_ForceTorsoAnim( pi, torsoAnim ); + pi->torso.yawAngle = viewAngles[YAW]; + pi->torso.yawing = qfalse; + + if ( weaponNumber != -1 ) { + pi->weapon = weaponNumber; + pi->currentWeapon = weaponNumber; + pi->lastWeapon = weaponNumber; + pi->pendingWeapon = -1; + pi->weaponTimer = 0; + UI_PlayerInfo_SetWeapon( pi, pi->weapon ); + } + + return; + } + + // weapon + if ( weaponNumber == -1 ) { + pi->pendingWeapon = -1; + pi->weaponTimer = 0; + } + else if ( weaponNumber != WP_NONE ) { + pi->pendingWeapon = weaponNumber; + pi->weaponTimer = dp_realtime + UI_TIMER_WEAPON_DELAY; + } + weaponNum = pi->lastWeapon; + pi->weapon = weaponNum; + + if ( torsoAnim == BOTH_DEATH1 || legsAnim == BOTH_DEATH1 ) { + torsoAnim = legsAnim = BOTH_DEATH1; + pi->weapon = pi->currentWeapon = WP_NONE; + UI_PlayerInfo_SetWeapon( pi, pi->weapon ); + + jumpHeight = 0; + pi->pendingLegsAnim = 0; + UI_ForceLegsAnim( pi, legsAnim ); + + pi->pendingTorsoAnim = 0; + UI_ForceTorsoAnim( pi, torsoAnim ); + + return; + } + + // leg animation + currentAnim = pi->legsAnim & ~ANIM_TOGGLEBIT; + if ( legsAnim != LEGS_JUMP && ( currentAnim == LEGS_JUMP || currentAnim == LEGS_LAND ) ) { + pi->pendingLegsAnim = legsAnim; + } + else if ( legsAnim != currentAnim ) { + jumpHeight = 0; + pi->pendingLegsAnim = 0; + UI_ForceLegsAnim( pi, legsAnim ); + } + + // torso animation + if ( torsoAnim == TORSO_STAND || torsoAnim == TORSO_STAND2 ) { + //Changed from WP_GAUNTLET to WP_KNIFE + if ( weaponNum == WP_NONE || weaponNum == WP_KNIFE ) { + torsoAnim = TORSO_STAND2; + } + else { + torsoAnim = TORSO_STAND; + } + } + + if ( torsoAnim == TORSO_ATTACK || torsoAnim == TORSO_ATTACK2 ) { + //Changed from WP_GAUNTLET to WP_KNIFE + if ( weaponNum == WP_NONE || weaponNum == WP_KNIFE ) { + torsoAnim = TORSO_ATTACK2; + } + else { + torsoAnim = TORSO_ATTACK; + } + pi->muzzleFlashTime = dp_realtime + UI_TIMER_MUZZLE_FLASH; + //FIXME play firing sound here + } + + currentAnim = pi->torsoAnim & ~ANIM_TOGGLEBIT; + + if ( weaponNum != pi->currentWeapon || currentAnim == TORSO_RAISE || currentAnim == TORSO_DROP ) { + pi->pendingTorsoAnim = torsoAnim; + } + else if ( ( currentAnim == TORSO_GESTURE || currentAnim == TORSO_ATTACK ) && ( torsoAnim != currentAnim ) ) { + pi->pendingTorsoAnim = torsoAnim; + } + else if ( torsoAnim != currentAnim ) { + pi->pendingTorsoAnim = 0; + UI_ForceTorsoAnim( pi, torsoAnim ); + } +} diff --git a/ta_ui/ui_public.h b/ta_ui/ui_public.h new file mode 100644 index 00000000..3f87ba75 --- /dev/null +++ b/ta_ui/ui_public.h @@ -0,0 +1,167 @@ +// Copyright (C) 1999-2000 Id Software, Inc. +// +#ifndef __UI_PUBLIC_H__ +#define __UI_PUBLIC_H__ + +#define UI_API_VERSION 6 + +typedef struct { + connstate_t connState; + int connectPacketCount; + int clientNum; + char servername[MAX_STRING_CHARS]; + char updateInfoString[MAX_STRING_CHARS]; + char messageString[MAX_STRING_CHARS]; +} uiClientState_t; + +typedef enum { + UI_ERROR, + UI_PRINT, + UI_MILLISECONDS, + UI_CVAR_SET, + UI_CVAR_VARIABLEVALUE, + UI_CVAR_VARIABLESTRINGBUFFER, + UI_CVAR_SETVALUE, + UI_CVAR_RESET, + UI_CVAR_CREATE, + UI_CVAR_INFOSTRINGBUFFER, + UI_ARGC, + UI_ARGV, + UI_CMD_EXECUTETEXT, + UI_FS_FOPENFILE, + UI_FS_READ, + UI_FS_WRITE, + UI_FS_FCLOSEFILE, + UI_FS_GETFILELIST, + UI_R_REGISTERMODEL, + UI_R_REGISTERSKIN, + UI_R_REGISTERSHADERNOMIP, + UI_R_CLEARSCENE, + UI_R_ADDREFENTITYTOSCENE, + UI_R_ADDPOLYTOSCENE, + UI_R_ADDLIGHTTOSCENE, + UI_R_RENDERSCENE, + UI_R_SETCOLOR, + UI_R_DRAWSTRETCHPIC, + UI_UPDATESCREEN, + UI_CM_LERPTAG, + UI_CM_LOADMODEL, + UI_S_REGISTERSOUND, + UI_S_STARTLOCALSOUND, + UI_KEY_KEYNUMTOSTRINGBUF, + UI_KEY_GETBINDINGBUF, + UI_KEY_SETBINDING, + UI_KEY_ISDOWN, + UI_KEY_GETOVERSTRIKEMODE, + UI_KEY_SETOVERSTRIKEMODE, + UI_KEY_CLEARSTATES, + UI_KEY_GETCATCHER, + UI_KEY_SETCATCHER, + UI_GETCLIPBOARDDATA, + UI_GETGLCONFIG, + UI_GETCLIENTSTATE, + UI_GETCONFIGSTRING, + UI_LAN_GETPINGQUEUECOUNT, + UI_LAN_CLEARPING, + UI_LAN_GETPING, + UI_LAN_GETPINGINFO, + UI_CVAR_REGISTER, + UI_CVAR_UPDATE, + UI_MEMORY_REMAINING, + UI_GET_CDKEY, + UI_SET_CDKEY, + UI_R_REGISTERFONT, + UI_R_MODELBOUNDS, + UI_PC_ADD_GLOBAL_DEFINE, + UI_PC_LOAD_SOURCE, + UI_PC_FREE_SOURCE, + UI_PC_READ_TOKEN, + UI_PC_SOURCE_FILE_AND_LINE, + UI_S_STOPBACKGROUNDTRACK, + UI_S_STARTBACKGROUNDTRACK, + UI_REAL_TIME, + UI_LAN_GETSERVERCOUNT, + UI_LAN_GETSERVERADDRESSSTRING, + UI_LAN_GETSERVERINFO, + UI_LAN_MARKSERVERVISIBLE, + UI_LAN_UPDATEVISIBLEPINGS, + UI_LAN_RESETPINGS, + UI_LAN_LOADCACHEDSERVERS, + UI_LAN_SAVECACHEDSERVERS, + UI_LAN_ADDSERVER, + UI_LAN_REMOVESERVER, + UI_CIN_PLAYCINEMATIC, + UI_CIN_STOPCINEMATIC, + UI_CIN_RUNCINEMATIC, + UI_CIN_DRAWCINEMATIC, + UI_CIN_SETEXTENTS, + UI_R_REMAP_SHADER, + UI_VERIFY_CDKEY, + UI_LAN_SERVERSTATUS, + UI_LAN_GETSERVERPING, + UI_LAN_SERVERISVISIBLE, + UI_LAN_COMPARESERVERS, + + UI_MEMSET = 100, + UI_MEMCPY, + UI_STRNCPY, + UI_SIN, + UI_COS, + UI_ATAN2, + UI_SQRT, + UI_FLOOR, + UI_CEIL +} uiImport_t; + +typedef enum { + UIMENU_NONE, + UIMENU_MAIN, + UIMENU_INGAME, + UIMENU_NEED_CD, + UIMENU_BAD_CD_KEY, + UIMENU_TEAM, + UIMENU_POSTGAME +} uiMenuCommand_t; + +#define SORT_HOST 0 +#define SORT_MAP 1 +#define SORT_CLIENTS 2 +#define SORT_GAME 3 +#define SORT_PING 4 + +typedef enum { + UI_GETAPIVERSION = 0, // system reserved + + UI_INIT, +// void UI_Init( void ); + + UI_SHUTDOWN, +// void UI_Shutdown( void ); + + UI_KEY_EVENT, +// void UI_KeyEvent( int key ); + + UI_MOUSE_EVENT, +// void UI_MouseEvent( int dx, int dy ); + + UI_REFRESH, +// void UI_Refresh( int time ); + + UI_IS_FULLSCREEN, +// qboolean UI_IsFullscreen( void ); + + UI_SET_ACTIVE_MENU, +// void UI_SetActiveMenu( uiMenuCommand_t menu ); + + UI_CONSOLE_COMMAND, +// qboolean UI_ConsoleCommand( int realTime ); + + UI_DRAW_CONNECT_SCREEN, +// void UI_DrawConnectScreen( qboolean overlay ); + UI_HASUNIQUECDKEY +// if !overlay, the background will be drawn, otherwise it will be +// overlayed over whatever the cgame has drawn. +// a GetClientState syscall will be made to get the current strings +} uiExport_t; + +#endif diff --git a/ta_ui/ui_shared.c b/ta_ui/ui_shared.c new file mode 100644 index 00000000..a1071952 --- /dev/null +++ b/ta_ui/ui_shared.c @@ -0,0 +1,5747 @@ +// +// string allocation/managment + +#include "ui_shared.h" + +#define SCROLL_TIME_START 500 +#define SCROLL_TIME_ADJUST 150 +#define SCROLL_TIME_ADJUSTOFFSET 40 +#define SCROLL_TIME_FLOOR 20 + +typedef struct scrollInfo_s { + int nextScrollTime; + int nextAdjustTime; + int adjustValue; + int scrollKey; + float xStart; + float yStart; + itemDef_t *item; + qboolean scrollDir; +} scrollInfo_t; + +static scrollInfo_t scrollInfo; + +static void (*captureFunc) (void *p) = NULL; +static void *captureData = NULL; +static itemDef_t *itemCapture = NULL; // item that has the mouse captured ( if any ) + +displayContextDef_t *DC = NULL; + +static qboolean g_waitingForKey = qfalse; +static qboolean g_editingField = qfalse; + +static itemDef_t *g_bindItem = NULL; +static itemDef_t *g_editItem = NULL; + +menuDef_t Menus[MAX_MENUS]; // defined menus +int menuCount = 0; // how many + +menuDef_t *menuStack[MAX_OPEN_MENUS]; +int openMenuCount = 0; + +static qboolean debugMode = qfalse; + +#define DOUBLE_CLICK_DELAY 300 +static int lastListBoxClickTime = 0; + +void Item_RunScript(itemDef_t *item, const char *s); +void Item_SetupKeywordHash(void); +void Menu_SetupKeywordHash(void); +int BindingIDFromName(const char *name); +qboolean Item_Bind_HandleKey(itemDef_t *item, int key, qboolean down); +itemDef_t *Menu_SetPrevCursorItem(menuDef_t *menu); +itemDef_t *Menu_SetNextCursorItem(menuDef_t *menu); +static qboolean Menu_OverActiveItem(menuDef_t *menu, float x, float y); + +#ifdef CGAME +#define MEM_POOL_SIZE 128 * 1024 +#else +#define MEM_POOL_SIZE 1024 * 1024 +#endif + +static char memoryPool[MEM_POOL_SIZE]; +static int allocPoint, outOfMemory; + + +/* +=============== +UI_Alloc +=============== +*/ +void *UI_Alloc( int size ) { + char *p; + + if ( allocPoint + size > MEM_POOL_SIZE ) { + outOfMemory = qtrue; + if (DC->Print) { + DC->Print("UI_Alloc: Failure. Out of memory!\n"); + } + //DC->trap_Print(S_COLOR_YELLOW"WARNING: UI Out of Memory!\n"); + return NULL; + } + + p = &memoryPool[allocPoint]; + + allocPoint += ( size + 15 ) & ~15; + + return p; +} + +/* +=============== +UI_InitMemory +=============== +*/ +void UI_InitMemory( void ) { + allocPoint = 0; + outOfMemory = qfalse; +} + +qboolean UI_OutOfMemory() { + return outOfMemory; +} + + + + + +#define HASH_TABLE_SIZE 2048 +/* +================ +return a hash value for the string +================ +*/ +static long hashForString(const char *str) { + int i; + long hash; + char letter; + + hash = 0; + i = 0; + while (str[i] != '\0') { + letter = tolower(str[i]); + hash+=(long)(letter)*(i+119); + i++; + } + hash &= (HASH_TABLE_SIZE-1); + return hash; +} + +typedef struct stringDef_s { + struct stringDef_s *next; + const char *str; +} stringDef_t; + +static int strPoolIndex = 0; +static char strPool[STRING_POOL_SIZE]; + +static int strHandleCount = 0; +static stringDef_t *strHandle[HASH_TABLE_SIZE]; + + +const char *String_Alloc(const char *p) { + int len; + long hash; + stringDef_t *str, *last; + static const char *staticNULL = ""; + + if (p == NULL) { + return NULL; + } + + if (*p == 0) { + return staticNULL; + } + + hash = hashForString(p); + + str = strHandle[hash]; + while (str) { + if (strcmp(p, str->str) == 0) { + return str->str; + } + str = str->next; + } + + len = strlen(p); + if (len + strPoolIndex + 1 < STRING_POOL_SIZE) { + int ph = strPoolIndex; + strcpy(&strPool[strPoolIndex], p); + strPoolIndex += len + 1; + + str = strHandle[hash]; + last = str; + while (str && str->next) { + last = str; + str = str->next; + } + + str = UI_Alloc(sizeof(stringDef_t)); + str->next = NULL; + str->str = &strPool[ph]; + if (last) { + last->next = str; + } else { + strHandle[hash] = str; + } + return &strPool[ph]; + } + return NULL; +} + +void String_Report() { + float f; + Com_Printf("Memory/String Pool Info\n"); + Com_Printf("----------------\n"); + f = strPoolIndex; + f /= STRING_POOL_SIZE; + f *= 100; + Com_Printf("String Pool is %.1f%% full, %i bytes out of %i used.\n", f, strPoolIndex, STRING_POOL_SIZE); + f = allocPoint; + f /= MEM_POOL_SIZE; + f *= 100; + Com_Printf("Memory Pool is %.1f%% full, %i bytes out of %i used.\n", f, allocPoint, MEM_POOL_SIZE); +} + +/* +================= +String_Init +================= +*/ +void String_Init() { + int i; + for (i = 0; i < HASH_TABLE_SIZE; i++) { + strHandle[i] = 0; + } + strHandleCount = 0; + strPoolIndex = 0; + menuCount = 0; + openMenuCount = 0; + UI_InitMemory(); + Item_SetupKeywordHash(); + Menu_SetupKeywordHash(); + if (DC && DC->getBindingBuf) { + Controls_GetConfig(); + } +} + +/* +================= +PC_SourceWarning +================= +*/ +void PC_SourceWarning(int handle, char *format, ...) { + int line; + char filename[128]; + va_list argptr; + static char string[4096]; + + va_start (argptr, format); + vsprintf (string, format, argptr); + va_end (argptr); + + filename[0] = '\0'; + line = 0; + trap_PC_SourceFileAndLine(handle, filename, &line); + + Com_Printf(S_COLOR_YELLOW "WARNING: %s, line %d: %s\n", filename, line, string); +} + +/* +================= +PC_SourceError +================= +*/ +void PC_SourceError(int handle, char *format, ...) { + int line; + char filename[128]; + va_list argptr; + static char string[4096]; + + va_start (argptr, format); + vsprintf (string, format, argptr); + va_end (argptr); + + filename[0] = '\0'; + line = 0; + trap_PC_SourceFileAndLine(handle, filename, &line); + + Com_Printf(S_COLOR_RED "ERROR: %s, line %d: %s\n", filename, line, string); +} + +/* +================= +LerpColor +================= +*/ +void LerpColor(vec4_t a, vec4_t b, vec4_t c, float t) +{ + int i; + + // lerp and clamp each component + for (i=0; i<4; i++) + { + c[i] = a[i] + t*(b[i]-a[i]); + if (c[i] < 0) + c[i] = 0; + else if (c[i] > 1.0) + c[i] = 1.0; + } +} + +/* +================= +Float_Parse +================= +*/ +qboolean Float_Parse(char **p, float *f) { + char *token; + token = COM_ParseExt(p, qfalse); + if (token && token[0] != 0) { + *f = atof(token); + return qtrue; + } else { + return qfalse; + } +} + +/* +================= +PC_Float_Parse +================= +*/ +qboolean PC_Float_Parse(int handle, float *f) { + pc_token_t token; + int negative = qfalse; + + if (!trap_PC_ReadToken(handle, &token)) + return qfalse; + if (token.string[0] == '-') { + if (!trap_PC_ReadToken(handle, &token)) + return qfalse; + negative = qtrue; + } + if (token.type != TT_NUMBER) { + PC_SourceError(handle, "expected float but found %s\n", token.string); + return qfalse; + } + if (negative) + *f = -token.floatvalue; + else + *f = token.floatvalue; + return qtrue; +} + +/* +================= +Color_Parse +================= +*/ +qboolean Color_Parse(char **p, vec4_t *c) { + int i; + float f; + + for (i = 0; i < 4; i++) { + if (!Float_Parse(p, &f)) { + return qfalse; + } + (*c)[i] = f; + } + return qtrue; +} + +/* +================= +PC_Color_Parse +================= +*/ +qboolean PC_Color_Parse(int handle, vec4_t *c) { + int i; + float f; + + for (i = 0; i < 4; i++) { + if (!PC_Float_Parse(handle, &f)) { + return qfalse; + } + (*c)[i] = f; + } + return qtrue; +} + +/* +================= +Int_Parse +================= +*/ +qboolean Int_Parse(char **p, int *i) { + char *token; + token = COM_ParseExt(p, qfalse); + + if (token && token[0] != 0) { + *i = atoi(token); + return qtrue; + } else { + return qfalse; + } +} + +/* +================= +PC_Int_Parse +================= +*/ +qboolean PC_Int_Parse(int handle, int *i) { + pc_token_t token; + int negative = qfalse; + + if (!trap_PC_ReadToken(handle, &token)) + return qfalse; + if (token.string[0] == '-') { + if (!trap_PC_ReadToken(handle, &token)) + return qfalse; + negative = qtrue; + } + if (token.type != TT_NUMBER) { + PC_SourceError(handle, "expected integer but found %s\n", token.string); + return qfalse; + } + *i = token.intvalue; + if (negative) + *i = - *i; + return qtrue; +} + +/* +================= +Rect_Parse +================= +*/ +qboolean Rect_Parse(char **p, rectDef_t *r) { + if (Float_Parse(p, &r->x)) { + if (Float_Parse(p, &r->y)) { + if (Float_Parse(p, &r->w)) { + if (Float_Parse(p, &r->h)) { + return qtrue; + } + } + } + } + return qfalse; +} + +/* +================= +PC_Rect_Parse +================= +*/ +qboolean PC_Rect_Parse(int handle, rectDef_t *r) { + if (PC_Float_Parse(handle, &r->x)) { + if (PC_Float_Parse(handle, &r->y)) { + if (PC_Float_Parse(handle, &r->w)) { + if (PC_Float_Parse(handle, &r->h)) { + return qtrue; + } + } + } + } + return qfalse; +} + +/* +================= +String_Parse +================= +*/ +qboolean String_Parse(char **p, const char **out) { + char *token; + + token = COM_ParseExt(p, qfalse); + if (token && token[0] != 0) { + *(out) = String_Alloc(token); + return qtrue; + } + return qfalse; +} + +/* +================= +PC_String_Parse +================= +*/ +qboolean PC_String_Parse(int handle, const char **out) { + pc_token_t token; + + if (!trap_PC_ReadToken(handle, &token)) + return qfalse; + + *(out) = String_Alloc(token.string); + return qtrue; +} + +/* +================= +PC_Script_Parse +================= +*/ +qboolean PC_Script_Parse(int handle, const char **out) { + char script[1024]; + pc_token_t token; + + memset(script, 0, sizeof(script)); + // scripts start with { and have ; separated command lists.. commands are command, arg.. + // basically we want everything between the { } as it will be interpreted at run time + + if (!trap_PC_ReadToken(handle, &token)) + return qfalse; + if (Q_stricmp(token.string, "{") != 0) { + return qfalse; + } + + while ( 1 ) { + if (!trap_PC_ReadToken(handle, &token)) + return qfalse; + + if (Q_stricmp(token.string, "}") == 0) { + *out = String_Alloc(script); + return qtrue; + } + + if (token.string[1] != '\0') { + Q_strcat(script, 1024, va("\"%s\"", token.string)); + } else { + Q_strcat(script, 1024, token.string); + } + Q_strcat(script, 1024, " "); + } + return qfalse; // bk001105 - LCC missing return value +} + +// display, window, menu, item code +// + +/* +================== +Init_Display + +Initializes the display with a structure to all the drawing routines + ================== +*/ +void Init_Display(displayContextDef_t *dc) { + DC = dc; +} + + + +// type and style painting + +void GradientBar_Paint(rectDef_t *rect, vec4_t color) { + // gradient bar takes two paints + DC->setColor( color ); + DC->drawHandlePic(rect->x, rect->y, rect->w, rect->h, DC->Assets.gradientBar); + DC->setColor( NULL ); +} + + +/* +================== +Window_Init + +Initializes a window structure ( windowDef_t ) with defaults + +================== +*/ +void Window_Init(Window *w) { + memset(w, 0, sizeof(windowDef_t)); + w->borderSize = 1; + w->foreColor[0] = w->foreColor[1] = w->foreColor[2] = w->foreColor[3] = 1.0; + w->cinematic = -1; +} + +void Fade(int *flags, float *f, float clamp, int *nextTime, int offsetTime, qboolean bFlags, float fadeAmount) { + if (*flags & (WINDOW_FADINGOUT | WINDOW_FADINGIN)) { + if (DC->realTime > *nextTime) { + *nextTime = DC->realTime + offsetTime; + if (*flags & WINDOW_FADINGOUT) { + *f -= fadeAmount; + if (bFlags && *f <= 0.0) { + *flags &= ~(WINDOW_FADINGOUT | WINDOW_VISIBLE); + } + } else { + *f += fadeAmount; + if (*f >= clamp) { + *f = clamp; + if (bFlags) { + *flags &= ~WINDOW_FADINGIN; + } + } + } + } + } +} + + + +void Window_Paint(Window *w, float fadeAmount, float fadeClamp, float fadeCycle) { + //float bordersize = 0; + vec4_t color; + rectDef_t fillRect = w->rect; + + + if (debugMode) { + color[0] = color[1] = color[2] = color[3] = 1; + DC->drawRect(w->rect.x, w->rect.y, w->rect.w, w->rect.h, 1, color); + } + + if (w == NULL || (w->style == 0 && w->border == 0)) { + return; + } + + if (w->border != 0) { + fillRect.x += w->borderSize; + fillRect.y += w->borderSize; + fillRect.w -= w->borderSize + 1; + fillRect.h -= w->borderSize + 1; + } + + if (w->style == WINDOW_STYLE_FILLED) { + // box, but possible a shader that needs filled + if (w->background) { + Fade(&w->flags, &w->backColor[3], fadeClamp, &w->nextTime, fadeCycle, qtrue, fadeAmount); + DC->setColor(w->backColor); + DC->drawHandlePic(fillRect.x, fillRect.y, fillRect.w, fillRect.h, w->background); + DC->setColor(NULL); + } else { + DC->fillRect(fillRect.x, fillRect.y, fillRect.w, fillRect.h, w->backColor); + } + } else if (w->style == WINDOW_STYLE_GRADIENT) { + GradientBar_Paint(&fillRect, w->backColor); + // gradient bar + } else if (w->style == WINDOW_STYLE_SHADER) { + if (w->flags & WINDOW_FORECOLORSET) { + DC->setColor(w->foreColor); + } + DC->drawHandlePic(fillRect.x, fillRect.y, fillRect.w, fillRect.h, w->background); + DC->setColor(NULL); + } else if (w->style == WINDOW_STYLE_TEAMCOLOR) { + if (DC->getTeamColor) { + DC->getTeamColor(&color); + DC->fillRect(fillRect.x, fillRect.y, fillRect.w, fillRect.h, color); + } + } else if (w->style == WINDOW_STYLE_CINEMATIC) { + if (w->cinematic == -1) { + w->cinematic = DC->playCinematic(w->cinematicName, fillRect.x, fillRect.y, fillRect.w, fillRect.h); + if (w->cinematic == -1) { + w->cinematic = -2; + } + } + if (w->cinematic >= 0) { + DC->runCinematicFrame(w->cinematic); + DC->drawCinematic(w->cinematic, fillRect.x, fillRect.y, fillRect.w, fillRect.h); + } + } + + if (w->border == WINDOW_BORDER_FULL) { + // full + // HACK HACK HACK + if (w->style == WINDOW_STYLE_TEAMCOLOR) { + if (color[0] > 0) { + // red + color[0] = 1; + color[1] = color[2] = .5; + + } else { + color[2] = 1; + color[0] = color[1] = .5; + } + color[3] = 1; + DC->drawRect(w->rect.x, w->rect.y, w->rect.w, w->rect.h, w->borderSize, color); + } else { + DC->drawRect(w->rect.x, w->rect.y, w->rect.w, w->rect.h, w->borderSize, w->borderColor); + } + } else if (w->border == WINDOW_BORDER_HORZ) { + // top/bottom + DC->setColor(w->borderColor); + DC->drawTopBottom(w->rect.x, w->rect.y, w->rect.w, w->rect.h, w->borderSize); + DC->setColor( NULL ); + } else if (w->border == WINDOW_BORDER_VERT) { + // left right + DC->setColor(w->borderColor); + DC->drawSides(w->rect.x, w->rect.y, w->rect.w, w->rect.h, w->borderSize); + DC->setColor( NULL ); + } else if (w->border == WINDOW_BORDER_KCGRADIENT) { + // this is just two gradient bars along each horz edge + rectDef_t r = w->rect; + r.h = w->borderSize; + GradientBar_Paint(&r, w->borderColor); + r.y = w->rect.y + w->rect.h - 1; + GradientBar_Paint(&r, w->borderColor); + } + +} + + +void Item_SetScreenCoords(itemDef_t *item, float x, float y) { + + if (item == NULL) { + return; + } + + if (item->window.border != 0) { + x += item->window.borderSize; + y += item->window.borderSize; + } + + item->window.rect.x = x + item->window.rectClient.x; + item->window.rect.y = y + item->window.rectClient.y; + item->window.rect.w = item->window.rectClient.w; + item->window.rect.h = item->window.rectClient.h; + + // force the text rects to recompute + item->textRect.w = 0; + item->textRect.h = 0; +} + +// FIXME: consolidate this with nearby stuff +void Item_UpdatePosition(itemDef_t *item) { + float x, y; + menuDef_t *menu; + + if (item == NULL || item->parent == NULL) { + return; + } + + menu = item->parent; + + x = menu->window.rect.x; + y = menu->window.rect.y; + + if (menu->window.border != 0) { + x += menu->window.borderSize; + y += menu->window.borderSize; + } + + Item_SetScreenCoords(item, x, y); + +} + +// menus +void Menu_UpdatePosition(menuDef_t *menu) { + int i; + float x, y; + + if (menu == NULL) { + return; + } + + x = menu->window.rect.x; + y = menu->window.rect.y; + if (menu->window.border != 0) { + x += menu->window.borderSize; + y += menu->window.borderSize; + } + + for (i = 0; i < menu->itemCount; i++) { + Item_SetScreenCoords(menu->items[i], x, y); + } +} + +void Menu_PostParse(menuDef_t *menu) { + if (menu == NULL) { + return; + } + if (menu->fullScreen) { + menu->window.rect.x = 0; + menu->window.rect.y = 0; + menu->window.rect.w = 640; + menu->window.rect.h = 480; + } + Menu_UpdatePosition(menu); +} + +itemDef_t *Menu_ClearFocus(menuDef_t *menu) { + int i; + itemDef_t *ret = NULL; + + if (menu == NULL) { + return NULL; + } + + for (i = 0; i < menu->itemCount; i++) { + if (menu->items[i]->window.flags & WINDOW_HASFOCUS) { + ret = menu->items[i]; + } + menu->items[i]->window.flags &= ~WINDOW_HASFOCUS; + if (menu->items[i]->leaveFocus) { + Item_RunScript(menu->items[i], menu->items[i]->leaveFocus); + } + } + + return ret; +} + +qboolean IsVisible(int flags) { + return (flags & WINDOW_VISIBLE && !(flags & WINDOW_FADINGOUT)); +} + +qboolean Rect_ContainsPoint(rectDef_t *rect, float x, float y) { + if (rect) { + if (x > rect->x && x < rect->x + rect->w && y > rect->y && y < rect->y + rect->h) { + return qtrue; + } + } + return qfalse; +} + +int Menu_ItemsMatchingGroup(menuDef_t *menu, const char *name) { + int i; + int count = 0; + for (i = 0; i < menu->itemCount; i++) { + if (Q_stricmp(menu->items[i]->window.name, name) == 0 || (menu->items[i]->window.group && Q_stricmp(menu->items[i]->window.group, name) == 0)) { + count++; + } + } + return count; +} + +itemDef_t *Menu_GetMatchingItemByNumber(menuDef_t *menu, int index, const char *name) { + int i; + int count = 0; + for (i = 0; i < menu->itemCount; i++) { + if (Q_stricmp(menu->items[i]->window.name, name) == 0 || (menu->items[i]->window.group && Q_stricmp(menu->items[i]->window.group, name) == 0)) { + if (count == index) { + return menu->items[i]; + } + count++; + } + } + return NULL; +} + + + +void Script_SetColor(itemDef_t *item, char **args) { + const char *name; + int i; + float f; + vec4_t *out; + // expecting type of color to set and 4 args for the color + if (String_Parse(args, &name)) { + out = NULL; + if (Q_stricmp(name, "backcolor") == 0) { + out = &item->window.backColor; + item->window.flags |= WINDOW_BACKCOLORSET; + } else if (Q_stricmp(name, "forecolor") == 0) { + out = &item->window.foreColor; + item->window.flags |= WINDOW_FORECOLORSET; + } else if (Q_stricmp(name, "bordercolor") == 0) { + out = &item->window.borderColor; + } + + if (out) { + for (i = 0; i < 4; i++) { + if (!Float_Parse(args, &f)) { + return; + } + (*out)[i] = f; + } + } + } +} + +void Script_SetAsset(itemDef_t *item, char **args) { + const char *name; + // expecting name to set asset to + if (String_Parse(args, &name)) { + // check for a model + if (item->type == ITEM_TYPE_MODEL) { + } + } +} + +void Script_SetBackground(itemDef_t *item, char **args) { + const char *name; + // expecting name to set asset to + if (String_Parse(args, &name)) { + item->window.background = DC->registerShaderNoMip(name); + } +} + + + + +itemDef_t *Menu_FindItemByName(menuDef_t *menu, const char *p) { + int i; + if (menu == NULL || p == NULL) { + return NULL; + } + + for (i = 0; i < menu->itemCount; i++) { + if (Q_stricmp(p, menu->items[i]->window.name) == 0) { + return menu->items[i]; + } + } + + return NULL; +} + +void Script_SetTeamColor(itemDef_t *item, char **args) { + if (DC->getTeamColor) { + int i; + vec4_t color; + DC->getTeamColor(&color); + for (i = 0; i < 4; i++) { + item->window.backColor[i] = color[i]; + } + } +} + +void Script_SetItemColor(itemDef_t *item, char **args) { + const char *itemname; + const char *name; + vec4_t color; + int i; + vec4_t *out; + // expecting type of color to set and 4 args for the color + if (String_Parse(args, &itemname) && String_Parse(args, &name)) { + itemDef_t *item2; + int j; + int count = Menu_ItemsMatchingGroup(item->parent, itemname); + + if (!Color_Parse(args, &color)) { + return; + } + + for (j = 0; j < count; j++) { + item2 = Menu_GetMatchingItemByNumber(item->parent, j, itemname); + if (item2 != NULL) { + out = NULL; + if (Q_stricmp(name, "backcolor") == 0) { + out = &item2->window.backColor; + } else if (Q_stricmp(name, "forecolor") == 0) { + out = &item2->window.foreColor; + item2->window.flags |= WINDOW_FORECOLORSET; + } else if (Q_stricmp(name, "bordercolor") == 0) { + out = &item2->window.borderColor; + } + + if (out) { + for (i = 0; i < 4; i++) { + (*out)[i] = color[i]; + } + } + } + } + } +} + + +void Menu_ShowItemByName(menuDef_t *menu, const char *p, qboolean bShow) { + itemDef_t *item; + int i; + int count = Menu_ItemsMatchingGroup(menu, p); + for (i = 0; i < count; i++) { + item = Menu_GetMatchingItemByNumber(menu, i, p); + if (item != NULL) { + if (bShow) { + item->window.flags |= WINDOW_VISIBLE; + } else { + item->window.flags &= ~WINDOW_VISIBLE; + // stop cinematics playing in the window + if (item->window.cinematic >= 0) { + DC->stopCinematic(item->window.cinematic); + item->window.cinematic = -1; + } + } + } + } +} + +void Menu_FadeItemByName(menuDef_t *menu, const char *p, qboolean fadeOut) { + itemDef_t *item; + int i; + int count = Menu_ItemsMatchingGroup(menu, p); + for (i = 0; i < count; i++) { + item = Menu_GetMatchingItemByNumber(menu, i, p); + if (item != NULL) { + if (fadeOut) { + item->window.flags |= (WINDOW_FADINGOUT | WINDOW_VISIBLE); + item->window.flags &= ~WINDOW_FADINGIN; + } else { + item->window.flags |= (WINDOW_VISIBLE | WINDOW_FADINGIN); + item->window.flags &= ~WINDOW_FADINGOUT; + } + } + } +} + +menuDef_t *Menus_FindByName(const char *p) { + int i; + for (i = 0; i < menuCount; i++) { + if (Q_stricmp(Menus[i].window.name, p) == 0) { + return &Menus[i]; + } + } + return NULL; +} + +void Menus_ShowByName(const char *p) { + menuDef_t *menu = Menus_FindByName(p); + if (menu) { + Menus_Activate(menu); + } +} + +void Menus_OpenByName(const char *p) { + Menus_ActivateByName(p); +} + +static void Menu_RunCloseScript(menuDef_t *menu) { + if (menu && menu->window.flags & WINDOW_VISIBLE && menu->onClose) { + itemDef_t item; + item.parent = menu; + Item_RunScript(&item, menu->onClose); + } +} + +void Menus_CloseByName(const char *p) { + menuDef_t *menu = Menus_FindByName(p); + if (menu != NULL) { + Menu_RunCloseScript(menu); + menu->window.flags &= ~(WINDOW_VISIBLE | WINDOW_HASFOCUS); + } +} + +void Menus_CloseAll() { + int i; + for (i = 0; i < menuCount; i++) { + Menu_RunCloseScript(&Menus[i]); + Menus[i].window.flags &= ~(WINDOW_HASFOCUS | WINDOW_VISIBLE); + } +} + + +void Script_Show(itemDef_t *item, char **args) { + const char *name; + if (String_Parse(args, &name)) { + Menu_ShowItemByName(item->parent, name, qtrue); + } +} + +void Script_Hide(itemDef_t *item, char **args) { + const char *name; + if (String_Parse(args, &name)) { + Menu_ShowItemByName(item->parent, name, qfalse); + } +} + +void Script_FadeIn(itemDef_t *item, char **args) { + const char *name; + if (String_Parse(args, &name)) { + Menu_FadeItemByName(item->parent, name, qfalse); + } +} + +void Script_FadeOut(itemDef_t *item, char **args) { + const char *name; + if (String_Parse(args, &name)) { + Menu_FadeItemByName(item->parent, name, qtrue); + } +} + + + +void Script_Open(itemDef_t *item, char **args) { + const char *name; + if (String_Parse(args, &name)) { + Menus_OpenByName(name); + } +} + +void Script_Close(itemDef_t *item, char **args) { + const char *name; + if (String_Parse(args, &name)) { + Menus_CloseByName(name); + } +} + +void Menu_TransitionItemByName(menuDef_t *menu, const char *p, rectDef_t rectFrom, rectDef_t rectTo, int time, float amt) { + itemDef_t *item; + int i; + int count = Menu_ItemsMatchingGroup(menu, p); + for (i = 0; i < count; i++) { + item = Menu_GetMatchingItemByNumber(menu, i, p); + if (item != NULL) { + item->window.flags |= (WINDOW_INTRANSITION | WINDOW_VISIBLE); + item->window.offsetTime = time; + memcpy(&item->window.rectClient, &rectFrom, sizeof(rectDef_t)); + memcpy(&item->window.rectEffects, &rectTo, sizeof(rectDef_t)); + item->window.rectEffects2.x = abs(rectTo.x - rectFrom.x) / amt; + item->window.rectEffects2.y = abs(rectTo.y - rectFrom.y) / amt; + item->window.rectEffects2.w = abs(rectTo.w - rectFrom.w) / amt; + item->window.rectEffects2.h = abs(rectTo.h - rectFrom.h) / amt; + Item_UpdatePosition(item); + } + } +} + + +void Script_Transition(itemDef_t *item, char **args) { + const char *name; + rectDef_t rectFrom, rectTo; + int time; + float amt; + + if (String_Parse(args, &name)) { + if ( Rect_Parse(args, &rectFrom) && Rect_Parse(args, &rectTo) && Int_Parse(args, &time) && Float_Parse(args, &amt)) { + Menu_TransitionItemByName(item->parent, name, rectFrom, rectTo, time, amt); + } + } +} + + +void Menu_OrbitItemByName(menuDef_t *menu, const char *p, float x, float y, float cx, float cy, int time) { + itemDef_t *item; + int i; + int count = Menu_ItemsMatchingGroup(menu, p); + for (i = 0; i < count; i++) { + item = Menu_GetMatchingItemByNumber(menu, i, p); + if (item != NULL) { + item->window.flags |= (WINDOW_ORBITING | WINDOW_VISIBLE); + item->window.offsetTime = time; + item->window.rectEffects.x = cx; + item->window.rectEffects.y = cy; + item->window.rectClient.x = x; + item->window.rectClient.y = y; + Item_UpdatePosition(item); + } + } +} + + +void Script_Orbit(itemDef_t *item, char **args) { + const char *name; + float cx, cy, x, y; + int time; + + if (String_Parse(args, &name)) { + if ( Float_Parse(args, &x) && Float_Parse(args, &y) && Float_Parse(args, &cx) && Float_Parse(args, &cy) && Int_Parse(args, &time) ) { + Menu_OrbitItemByName(item->parent, name, x, y, cx, cy, time); + } + } +} + + + +void Script_SetFocus(itemDef_t *item, char **args) { + const char *name; + itemDef_t *focusItem; + + if (String_Parse(args, &name)) { + focusItem = Menu_FindItemByName(item->parent, name); + if (focusItem && !(focusItem->window.flags & WINDOW_DECORATION) && !(focusItem->window.flags & WINDOW_HASFOCUS)) { + Menu_ClearFocus(item->parent); + focusItem->window.flags |= WINDOW_HASFOCUS; + if (focusItem->onFocus) { + Item_RunScript(focusItem, focusItem->onFocus); + } + if (DC->Assets.itemFocusSound) { + DC->startLocalSound( DC->Assets.itemFocusSound, CHAN_LOCAL_SOUND ); + } + } + } +} + +void Script_SetPlayerModel(itemDef_t *item, char **args) { + const char *name; + if (String_Parse(args, &name)) { + DC->setCVar("team_model", name); + } +} + +void Script_SetPlayerHead(itemDef_t *item, char **args) { + const char *name; + if (String_Parse(args, &name)) { + DC->setCVar("team_headmodel", name); + } +} + +void Script_SetCvar(itemDef_t *item, char **args) { + const char *cvar, *val; + if (String_Parse(args, &cvar) && String_Parse(args, &val)) { + DC->setCVar(cvar, val); + } + +} + +void Script_Exec(itemDef_t *item, char **args) { + const char *val; + if (String_Parse(args, &val)) { + DC->executeText(EXEC_APPEND, va("%s ; ", val)); + } +} + +void Script_Play(itemDef_t *item, char **args) { + const char *val; + if (String_Parse(args, &val)) { + DC->startLocalSound(DC->registerSound(val, qfalse), CHAN_LOCAL_SOUND); + } +} + +void Script_playLooped(itemDef_t *item, char **args) { + const char *val; + if (String_Parse(args, &val)) { + DC->stopBackgroundTrack(); + DC->startBackgroundTrack(val, val); + } +} + + +commandDef_t commandList[] = +{ + {"fadein", &Script_FadeIn}, // group/name + {"fadeout", &Script_FadeOut}, // group/name + {"show", &Script_Show}, // group/name + {"hide", &Script_Hide}, // group/name + {"setcolor", &Script_SetColor}, // works on this + {"open", &Script_Open}, // nenu + {"close", &Script_Close}, // menu + {"setasset", &Script_SetAsset}, // works on this + {"setbackground", &Script_SetBackground}, // works on this + {"setitemcolor", &Script_SetItemColor}, // group/name + {"setteamcolor", &Script_SetTeamColor}, // sets this background color to team color + {"setfocus", &Script_SetFocus}, // sets this background color to team color + {"setplayermodel", &Script_SetPlayerModel}, // sets this background color to team color + {"setplayerhead", &Script_SetPlayerHead}, // sets this background color to team color + {"transition", &Script_Transition}, // group/name + {"setcvar", &Script_SetCvar}, // group/name + {"exec", &Script_Exec}, // group/name + {"play", &Script_Play}, // group/name + {"playlooped", &Script_playLooped}, // group/name + {"orbit", &Script_Orbit} // group/name +}; + +int scriptCommandCount = sizeof(commandList) / sizeof(commandDef_t); + + +void Item_RunScript(itemDef_t *item, const char *s) { + char script[1024], *p; + int i; + qboolean bRan; + memset(script, 0, sizeof(script)); + if (item && s && s[0]) { + Q_strcat(script, 1024, s); + p = script; + while (1) { + const char *command; + // expect command then arguments, ; ends command, NULL ends script + if (!String_Parse(&p, &command)) { + return; + } + + if (command[0] == ';' && command[1] == '\0') { + continue; + } + + bRan = qfalse; + for (i = 0; i < scriptCommandCount; i++) { + if (Q_stricmp(command, commandList[i].name) == 0) { + (commandList[i].handler(item, &p)); + bRan = qtrue; + break; + } + } + // not in our auto list, pass to handler + if (!bRan) { + DC->runScript(&p); + } + } + } +} + + +qboolean Item_EnableShowViaCvar(itemDef_t *item, int flag) { + char script[1024], *p; + memset(script, 0, sizeof(script)); + if (item && item->enableCvar && *item->enableCvar && item->cvarTest && *item->cvarTest) { + char buff[1024]; + DC->getCVarString(item->cvarTest, buff, sizeof(buff)); + + Q_strcat(script, 1024, item->enableCvar); + p = script; + while (1) { + const char *val; + // expect value then ; or NULL, NULL ends list + if (!String_Parse(&p, &val)) { + return (item->cvarFlags & flag) ? qfalse : qtrue; + } + + if (val[0] == ';' && val[1] == '\0') { + continue; + } + + // enable it if any of the values are true + if (item->cvarFlags & flag) { + if (Q_stricmp(buff, val) == 0) { + return qtrue; + } + } else { + // disable it if any of the values are true + if (Q_stricmp(buff, val) == 0) { + return qfalse; + } + } + + } + return (item->cvarFlags & flag) ? qfalse : qtrue; + } + return qtrue; +} + + +// will optionaly set focus to this item +qboolean Item_SetFocus(itemDef_t *item, float x, float y) { + int i; + itemDef_t *oldFocus; + sfxHandle_t *sfx = &DC->Assets.itemFocusSound; + qboolean playSound = qfalse; + menuDef_t *parent; // bk001206: = (menuDef_t*)item->parent; + // sanity check, non-null, not a decoration and does not already have the focus + if (item == NULL || item->window.flags & WINDOW_DECORATION || item->window.flags & WINDOW_HASFOCUS || !(item->window.flags & WINDOW_VISIBLE)) { + return qfalse; + } + + // bk001206 - this can be NULL. + parent = (menuDef_t*)item->parent; + + // items can be enabled and disabled based on cvars + if (item->cvarFlags & (CVAR_ENABLE | CVAR_DISABLE) && !Item_EnableShowViaCvar(item, CVAR_ENABLE)) { + return qfalse; + } + + if (item->cvarFlags & (CVAR_SHOW | CVAR_HIDE) && !Item_EnableShowViaCvar(item, CVAR_SHOW)) { + return qfalse; + } + + oldFocus = Menu_ClearFocus(item->parent); + + if (item->type == ITEM_TYPE_TEXT) { + rectDef_t r; + r = item->textRect; + r.y -= r.h; + if (Rect_ContainsPoint(&r, x, y)) { + item->window.flags |= WINDOW_HASFOCUS; + if (item->focusSound) { + sfx = &item->focusSound; + } + playSound = qtrue; + } else { + if (oldFocus) { + oldFocus->window.flags |= WINDOW_HASFOCUS; + if (oldFocus->onFocus) { + Item_RunScript(oldFocus, oldFocus->onFocus); + } + } + } + } else { + item->window.flags |= WINDOW_HASFOCUS; + if (item->onFocus) { + Item_RunScript(item, item->onFocus); + } + if (item->focusSound) { + sfx = &item->focusSound; + } + playSound = qtrue; + } + + if (playSound && sfx) { + DC->startLocalSound( *sfx, CHAN_LOCAL_SOUND ); + } + + for (i = 0; i < parent->itemCount; i++) { + if (parent->items[i] == item) { + parent->cursorItem = i; + break; + } + } + + return qtrue; +} + +int Item_ListBox_MaxScroll(itemDef_t *item) { + listBoxDef_t *listPtr = (listBoxDef_t*)item->typeData; + int count = DC->feederCount(item->special); + int max; + + if (item->window.flags & WINDOW_HORIZONTAL) { + max = count - (item->window.rect.w / listPtr->elementWidth) + 1; + } + else { + max = count - (item->window.rect.h / listPtr->elementHeight) + 1; + } + if (max < 0) { + return 0; + } + return max; +} + +int Item_ListBox_ThumbPosition(itemDef_t *item) { + float max, pos, size; + listBoxDef_t *listPtr = (listBoxDef_t*)item->typeData; + + max = Item_ListBox_MaxScroll(item); + if (item->window.flags & WINDOW_HORIZONTAL) { + size = item->window.rect.w - (SCROLLBAR_SIZE * 2) - 2; + if (max > 0) { + pos = (size-SCROLLBAR_SIZE) / (float) max; + } else { + pos = 0; + } + pos *= listPtr->startPos; + return item->window.rect.x + 1 + SCROLLBAR_SIZE + pos; + } + else { + size = item->window.rect.h - (SCROLLBAR_SIZE * 2) - 2; + if (max > 0) { + pos = (size-SCROLLBAR_SIZE) / (float) max; + } else { + pos = 0; + } + pos *= listPtr->startPos; + return item->window.rect.y + 1 + SCROLLBAR_SIZE + pos; + } +} + +int Item_ListBox_ThumbDrawPosition(itemDef_t *item) { + int min, max; + + if (itemCapture == item) { + if (item->window.flags & WINDOW_HORIZONTAL) { + min = item->window.rect.x + SCROLLBAR_SIZE + 1; + max = item->window.rect.x + item->window.rect.w - 2*SCROLLBAR_SIZE - 1; + if (DC->cursorx >= min + SCROLLBAR_SIZE/2 && DC->cursorx <= max + SCROLLBAR_SIZE/2) { + return DC->cursorx - SCROLLBAR_SIZE/2; + } + else { + return Item_ListBox_ThumbPosition(item); + } + } + else { + min = item->window.rect.y + SCROLLBAR_SIZE + 1; + max = item->window.rect.y + item->window.rect.h - 2*SCROLLBAR_SIZE - 1; + if (DC->cursory >= min + SCROLLBAR_SIZE/2 && DC->cursory <= max + SCROLLBAR_SIZE/2) { + return DC->cursory - SCROLLBAR_SIZE/2; + } + else { + return Item_ListBox_ThumbPosition(item); + } + } + } + else { + return Item_ListBox_ThumbPosition(item); + } +} + +float Item_Slider_ThumbPosition(itemDef_t *item) { + float value, range, x; + editFieldDef_t *editDef = item->typeData; + + if (item->text) { + x = item->textRect.x + item->textRect.w + 8; + } else { + x = item->window.rect.x; + } + + if (editDef == NULL && item->cvar) { + return x; + } + + value = DC->getCVarValue(item->cvar); + + if (value < editDef->minVal) { + value = editDef->minVal; + } else if (value > editDef->maxVal) { + value = editDef->maxVal; + } + + range = editDef->maxVal - editDef->minVal; + value -= editDef->minVal; + value /= range; + //value /= (editDef->maxVal - editDef->minVal); + value *= SLIDER_WIDTH; + x += value; + // vm fuckage + //x = x + (((float)value / editDef->maxVal) * SLIDER_WIDTH); + return x; +} + +int Item_Slider_OverSlider(itemDef_t *item, float x, float y) { + rectDef_t r; + + r.x = Item_Slider_ThumbPosition(item) - (SLIDER_THUMB_WIDTH / 2); + r.y = item->window.rect.y - 2; + r.w = SLIDER_THUMB_WIDTH; + r.h = SLIDER_THUMB_HEIGHT; + + if (Rect_ContainsPoint(&r, x, y)) { + return WINDOW_LB_THUMB; + } + return 0; +} + +int Item_ListBox_OverLB(itemDef_t *item, float x, float y) { + rectDef_t r; + listBoxDef_t *listPtr; + int thumbstart; + int count; + + count = DC->feederCount(item->special); + listPtr = (listBoxDef_t*)item->typeData; + if (item->window.flags & WINDOW_HORIZONTAL) { + // check if on left arrow + r.x = item->window.rect.x; + r.y = item->window.rect.y + item->window.rect.h - SCROLLBAR_SIZE; + r.h = r.w = SCROLLBAR_SIZE; + if (Rect_ContainsPoint(&r, x, y)) { + return WINDOW_LB_LEFTARROW; + } + // check if on right arrow + r.x = item->window.rect.x + item->window.rect.w - SCROLLBAR_SIZE; + if (Rect_ContainsPoint(&r, x, y)) { + return WINDOW_LB_RIGHTARROW; + } + // check if on thumb + thumbstart = Item_ListBox_ThumbPosition(item); + r.x = thumbstart; + if (Rect_ContainsPoint(&r, x, y)) { + return WINDOW_LB_THUMB; + } + r.x = item->window.rect.x + SCROLLBAR_SIZE; + r.w = thumbstart - r.x; + if (Rect_ContainsPoint(&r, x, y)) { + return WINDOW_LB_PGUP; + } + r.x = thumbstart + SCROLLBAR_SIZE; + r.w = item->window.rect.x + item->window.rect.w - SCROLLBAR_SIZE; + if (Rect_ContainsPoint(&r, x, y)) { + return WINDOW_LB_PGDN; + } + } else { + r.x = item->window.rect.x + item->window.rect.w - SCROLLBAR_SIZE; + r.y = item->window.rect.y; + r.h = r.w = SCROLLBAR_SIZE; + if (Rect_ContainsPoint(&r, x, y)) { + return WINDOW_LB_LEFTARROW; + } + r.y = item->window.rect.y + item->window.rect.h - SCROLLBAR_SIZE; + if (Rect_ContainsPoint(&r, x, y)) { + return WINDOW_LB_RIGHTARROW; + } + thumbstart = Item_ListBox_ThumbPosition(item); + r.y = thumbstart; + if (Rect_ContainsPoint(&r, x, y)) { + return WINDOW_LB_THUMB; + } + r.y = item->window.rect.y + SCROLLBAR_SIZE; + r.h = thumbstart - r.y; + if (Rect_ContainsPoint(&r, x, y)) { + return WINDOW_LB_PGUP; + } + r.y = thumbstart + SCROLLBAR_SIZE; + r.h = item->window.rect.y + item->window.rect.h - SCROLLBAR_SIZE; + if (Rect_ContainsPoint(&r, x, y)) { + return WINDOW_LB_PGDN; + } + } + return 0; +} + + +void Item_ListBox_MouseEnter(itemDef_t *item, float x, float y) +{ + rectDef_t r; + listBoxDef_t *listPtr = (listBoxDef_t*)item->typeData; + + item->window.flags &= ~(WINDOW_LB_LEFTARROW | WINDOW_LB_RIGHTARROW | WINDOW_LB_THUMB | WINDOW_LB_PGUP | WINDOW_LB_PGDN); + item->window.flags |= Item_ListBox_OverLB(item, x, y); + + if (item->window.flags & WINDOW_HORIZONTAL) { + if (!(item->window.flags & (WINDOW_LB_LEFTARROW | WINDOW_LB_RIGHTARROW | WINDOW_LB_THUMB | WINDOW_LB_PGUP | WINDOW_LB_PGDN))) { + // check for selection hit as we have exausted buttons and thumb + if (listPtr->elementStyle == LISTBOX_IMAGE) { + r.x = item->window.rect.x; + r.y = item->window.rect.y; + r.h = item->window.rect.h - SCROLLBAR_SIZE; + r.w = item->window.rect.w - listPtr->drawPadding; + if (Rect_ContainsPoint(&r, x, y)) { + listPtr->cursorPos = (int)((x - r.x) / listPtr->elementWidth) + listPtr->startPos; + if (listPtr->cursorPos >= listPtr->endPos) { + listPtr->cursorPos = listPtr->endPos; + } + } + } else { + // text hit.. + } + } + } else if (!(item->window.flags & (WINDOW_LB_LEFTARROW | WINDOW_LB_RIGHTARROW | WINDOW_LB_THUMB | WINDOW_LB_PGUP | WINDOW_LB_PGDN))) { + r.x = item->window.rect.x; + r.y = item->window.rect.y; + r.w = item->window.rect.w - SCROLLBAR_SIZE; + r.h = item->window.rect.h - listPtr->drawPadding; + if (Rect_ContainsPoint(&r, x, y)) { + listPtr->cursorPos = (int)((y - 2 - r.y) / listPtr->elementHeight) + listPtr->startPos; + if (listPtr->cursorPos > listPtr->endPos) { + listPtr->cursorPos = listPtr->endPos; + } + } + } +} + +void Item_MouseEnter(itemDef_t *item, float x, float y) { + rectDef_t r; + if (item) { + r = item->textRect; + r.y -= r.h; + // in the text rect? + + // items can be enabled and disabled based on cvars + if (item->cvarFlags & (CVAR_ENABLE | CVAR_DISABLE) && !Item_EnableShowViaCvar(item, CVAR_ENABLE)) { + return; + } + + if (item->cvarFlags & (CVAR_SHOW | CVAR_HIDE) && !Item_EnableShowViaCvar(item, CVAR_SHOW)) { + return; + } + + if (Rect_ContainsPoint(&r, x, y)) { + if (!(item->window.flags & WINDOW_MOUSEOVERTEXT)) { + Item_RunScript(item, item->mouseEnterText); + item->window.flags |= WINDOW_MOUSEOVERTEXT; + } + if (!(item->window.flags & WINDOW_MOUSEOVER)) { + Item_RunScript(item, item->mouseEnter); + item->window.flags |= WINDOW_MOUSEOVER; + } + + } else { + // not in the text rect + if (item->window.flags & WINDOW_MOUSEOVERTEXT) { + // if we were + Item_RunScript(item, item->mouseExitText); + item->window.flags &= ~WINDOW_MOUSEOVERTEXT; + } + if (!(item->window.flags & WINDOW_MOUSEOVER)) { + Item_RunScript(item, item->mouseEnter); + item->window.flags |= WINDOW_MOUSEOVER; + } + + if (item->type == ITEM_TYPE_LISTBOX) { + Item_ListBox_MouseEnter(item, x, y); + } + } + } +} + +void Item_MouseLeave(itemDef_t *item) { + if (item) { + if (item->window.flags & WINDOW_MOUSEOVERTEXT) { + Item_RunScript(item, item->mouseExitText); + item->window.flags &= ~WINDOW_MOUSEOVERTEXT; + } + Item_RunScript(item, item->mouseExit); + item->window.flags &= ~(WINDOW_LB_RIGHTARROW | WINDOW_LB_LEFTARROW); + } +} + +itemDef_t *Menu_HitTest(menuDef_t *menu, float x, float y) { + int i; + for (i = 0; i < menu->itemCount; i++) { + if (Rect_ContainsPoint(&menu->items[i]->window.rect, x, y)) { + return menu->items[i]; + } + } + return NULL; +} + +void Item_SetMouseOver(itemDef_t *item, qboolean focus) { + if (item) { + if (focus) { + item->window.flags |= WINDOW_MOUSEOVER; + } else { + item->window.flags &= ~WINDOW_MOUSEOVER; + } + } +} + + +qboolean Item_OwnerDraw_HandleKey(itemDef_t *item, int key) { + if (item && DC->ownerDrawHandleKey) { + return DC->ownerDrawHandleKey(item->window.ownerDraw, item->window.ownerDrawFlags, &item->special, key); + } + return qfalse; +} + +qboolean Item_ListBox_HandleKey(itemDef_t *item, int key, qboolean down, qboolean force) { + listBoxDef_t *listPtr = (listBoxDef_t*)item->typeData; + int count = DC->feederCount(item->special); + int max, viewmax; + + if (force || (Rect_ContainsPoint(&item->window.rect, DC->cursorx, DC->cursory) && item->window.flags & WINDOW_HASFOCUS)) { + max = Item_ListBox_MaxScroll(item); + if (item->window.flags & WINDOW_HORIZONTAL) { + viewmax = (item->window.rect.w / listPtr->elementWidth); + if ( key == K_LEFTARROW || key == K_KP_LEFTARROW ) + { + if (!listPtr->notselectable) { + listPtr->cursorPos--; + if (listPtr->cursorPos < 0) { + listPtr->cursorPos = 0; + } + if (listPtr->cursorPos < listPtr->startPos) { + listPtr->startPos = listPtr->cursorPos; + } + if (listPtr->cursorPos >= listPtr->startPos + viewmax) { + listPtr->startPos = listPtr->cursorPos - viewmax + 1; + } + item->cursorPos = listPtr->cursorPos; + DC->feederSelection(item->special, item->cursorPos); + } + else { + listPtr->startPos--; + if (listPtr->startPos < 0) + listPtr->startPos = 0; + } + return qtrue; + } + if ( key == K_RIGHTARROW || key == K_KP_RIGHTARROW ) + { + if (!listPtr->notselectable) { + listPtr->cursorPos++; + if (listPtr->cursorPos < listPtr->startPos) { + listPtr->startPos = listPtr->cursorPos; + } + if (listPtr->cursorPos >= count) { + listPtr->cursorPos = count-1; + } + if (listPtr->cursorPos >= listPtr->startPos + viewmax) { + listPtr->startPos = listPtr->cursorPos - viewmax + 1; + } + item->cursorPos = listPtr->cursorPos; + DC->feederSelection(item->special, item->cursorPos); + } + else { + listPtr->startPos++; + if (listPtr->startPos >= count) + listPtr->startPos = count-1; + } + return qtrue; + } + } + else { + viewmax = (item->window.rect.h / listPtr->elementHeight); + if ( key == K_UPARROW || key == K_KP_UPARROW ) + { + if (!listPtr->notselectable) { + listPtr->cursorPos--; + if (listPtr->cursorPos < 0) { + listPtr->cursorPos = 0; + } + if (listPtr->cursorPos < listPtr->startPos) { + listPtr->startPos = listPtr->cursorPos; + } + if (listPtr->cursorPos >= listPtr->startPos + viewmax) { + listPtr->startPos = listPtr->cursorPos - viewmax + 1; + } + item->cursorPos = listPtr->cursorPos; + DC->feederSelection(item->special, item->cursorPos); + } + else { + listPtr->startPos--; + if (listPtr->startPos < 0) + listPtr->startPos = 0; + } + return qtrue; + } + if ( key == K_DOWNARROW || key == K_KP_DOWNARROW ) + { + if (!listPtr->notselectable) { + listPtr->cursorPos++; + if (listPtr->cursorPos < listPtr->startPos) { + listPtr->startPos = listPtr->cursorPos; + } + if (listPtr->cursorPos >= count) { + listPtr->cursorPos = count-1; + } + if (listPtr->cursorPos >= listPtr->startPos + viewmax) { + listPtr->startPos = listPtr->cursorPos - viewmax + 1; + } + item->cursorPos = listPtr->cursorPos; + DC->feederSelection(item->special, item->cursorPos); + } + else { + listPtr->startPos++; + if (listPtr->startPos > max) + listPtr->startPos = max; + } + return qtrue; + } + } + // mouse hit + if (key == K_MOUSE1 || key == K_MOUSE2) { + if (item->window.flags & WINDOW_LB_LEFTARROW) { + listPtr->startPos--; + if (listPtr->startPos < 0) { + listPtr->startPos = 0; + } + } else if (item->window.flags & WINDOW_LB_RIGHTARROW) { + // one down + listPtr->startPos++; + if (listPtr->startPos > max) { + listPtr->startPos = max; + } + } else if (item->window.flags & WINDOW_LB_PGUP) { + // page up + listPtr->startPos -= viewmax; + if (listPtr->startPos < 0) { + listPtr->startPos = 0; + } + } else if (item->window.flags & WINDOW_LB_PGDN) { + // page down + listPtr->startPos += viewmax; + if (listPtr->startPos > max) { + listPtr->startPos = max; + } + } else if (item->window.flags & WINDOW_LB_THUMB) { + // Display_SetCaptureItem(item); + } else { + // select an item + if (DC->realTime < lastListBoxClickTime && listPtr->doubleClick) { + Item_RunScript(item, listPtr->doubleClick); + } + lastListBoxClickTime = DC->realTime + DOUBLE_CLICK_DELAY; + if (item->cursorPos != listPtr->cursorPos) { + item->cursorPos = listPtr->cursorPos; + DC->feederSelection(item->special, item->cursorPos); + } + } + return qtrue; + } + if ( key == K_HOME || key == K_KP_HOME) { + // home + listPtr->startPos = 0; + return qtrue; + } + if ( key == K_END || key == K_KP_END) { + // end + listPtr->startPos = max; + return qtrue; + } + if (key == K_PGUP || key == K_KP_PGUP ) { + // page up + if (!listPtr->notselectable) { + listPtr->cursorPos -= viewmax; + if (listPtr->cursorPos < 0) { + listPtr->cursorPos = 0; + } + if (listPtr->cursorPos < listPtr->startPos) { + listPtr->startPos = listPtr->cursorPos; + } + if (listPtr->cursorPos >= listPtr->startPos + viewmax) { + listPtr->startPos = listPtr->cursorPos - viewmax + 1; + } + item->cursorPos = listPtr->cursorPos; + DC->feederSelection(item->special, item->cursorPos); + } + else { + listPtr->startPos -= viewmax; + if (listPtr->startPos < 0) { + listPtr->startPos = 0; + } + } + return qtrue; + } + if ( key == K_PGDN || key == K_KP_PGDN ) { + // page down + if (!listPtr->notselectable) { + listPtr->cursorPos += viewmax; + if (listPtr->cursorPos < listPtr->startPos) { + listPtr->startPos = listPtr->cursorPos; + } + if (listPtr->cursorPos >= count) { + listPtr->cursorPos = count-1; + } + if (listPtr->cursorPos >= listPtr->startPos + viewmax) { + listPtr->startPos = listPtr->cursorPos - viewmax + 1; + } + item->cursorPos = listPtr->cursorPos; + DC->feederSelection(item->special, item->cursorPos); + } + else { + listPtr->startPos += viewmax; + if (listPtr->startPos > max) { + listPtr->startPos = max; + } + } + return qtrue; + } + } + return qfalse; +} + +qboolean Item_YesNo_HandleKey(itemDef_t *item, int key) { + + if (Rect_ContainsPoint(&item->window.rect, DC->cursorx, DC->cursory) && item->window.flags & WINDOW_HASFOCUS && item->cvar) { + if (key == K_MOUSE1 || key == K_ENTER || key == K_MOUSE2 || key == K_MOUSE3) { + DC->setCVar(item->cvar, va("%i", !DC->getCVarValue(item->cvar))); + return qtrue; + } + } + + return qfalse; + +} + +int Item_Multi_CountSettings(itemDef_t *item) { + multiDef_t *multiPtr = (multiDef_t*)item->typeData; + if (multiPtr == NULL) { + return 0; + } + return multiPtr->count; +} + +int Item_Multi_FindCvarByValue(itemDef_t *item) { + char buff[1024]; + float value = 0; + int i; + multiDef_t *multiPtr = (multiDef_t*)item->typeData; + if (multiPtr) { + if (multiPtr->strDef) { + DC->getCVarString(item->cvar, buff, sizeof(buff)); + } else { + value = DC->getCVarValue(item->cvar); + } + for (i = 0; i < multiPtr->count; i++) { + if (multiPtr->strDef) { + if (Q_stricmp(buff, multiPtr->cvarStr[i]) == 0) { + return i; + } + } else { + if (multiPtr->cvarValue[i] == value) { + return i; + } + } + } + } + return 0; +} + +const char *Item_Multi_Setting(itemDef_t *item) { + char buff[1024]; + float value = 0; + int i; + multiDef_t *multiPtr = (multiDef_t*)item->typeData; + if (multiPtr) { + if (multiPtr->strDef) { + DC->getCVarString(item->cvar, buff, sizeof(buff)); + } else { + value = DC->getCVarValue(item->cvar); + } + for (i = 0; i < multiPtr->count; i++) { + if (multiPtr->strDef) { + if (Q_stricmp(buff, multiPtr->cvarStr[i]) == 0) { + return multiPtr->cvarList[i]; + } + } else { + if (multiPtr->cvarValue[i] == value) { + return multiPtr->cvarList[i]; + } + } + } + } + return ""; +} + +qboolean Item_Multi_HandleKey(itemDef_t *item, int key) { + multiDef_t *multiPtr = (multiDef_t*)item->typeData; + if (multiPtr) { + if (Rect_ContainsPoint(&item->window.rect, DC->cursorx, DC->cursory) && item->window.flags & WINDOW_HASFOCUS && item->cvar) { + if (key == K_MOUSE1 || key == K_ENTER || key == K_MOUSE2 || key == K_MOUSE3) { + int current = Item_Multi_FindCvarByValue(item) + 1; + int max = Item_Multi_CountSettings(item); + if ( current < 0 || current >= max ) { + current = 0; + } + if (multiPtr->strDef) { + DC->setCVar(item->cvar, multiPtr->cvarStr[current]); + } else { + float value = multiPtr->cvarValue[current]; + if (((float)((int) value)) == value) { + DC->setCVar(item->cvar, va("%i", (int) value )); + } + else { + DC->setCVar(item->cvar, va("%f", value )); + } + } + return qtrue; + } + } + } + return qfalse; +} + +qboolean Item_TextField_HandleKey(itemDef_t *item, int key) { + char buff[1024]; + int len; + itemDef_t *newItem = NULL; + editFieldDef_t *editPtr = (editFieldDef_t*)item->typeData; + + if (item->cvar) { + + memset(buff, 0, sizeof(buff)); + DC->getCVarString(item->cvar, buff, sizeof(buff)); + len = strlen(buff); + if (editPtr->maxChars && len > editPtr->maxChars) { + len = editPtr->maxChars; + } + if ( key & K_CHAR_FLAG ) { + key &= ~K_CHAR_FLAG; + + + if (key == 'h' - 'a' + 1 ) { // ctrl-h is backspace + if ( item->cursorPos > 0 ) { + memmove( &buff[item->cursorPos - 1], &buff[item->cursorPos], len + 1 - item->cursorPos); + item->cursorPos--; + if (item->cursorPos < editPtr->paintOffset) { + editPtr->paintOffset--; + } + } + DC->setCVar(item->cvar, buff); + return qtrue; + } + + + // + // ignore any non printable chars + // + if ( key < 32 || !item->cvar) { + return qtrue; + } + + if (item->type == ITEM_TYPE_NUMERICFIELD) { + if (key < '0' || key > '9') { + return qfalse; + } + } + + if (!DC->getOverstrikeMode()) { + if (( len == MAX_EDITFIELD - 1 ) || (editPtr->maxChars && len >= editPtr->maxChars)) { + return qtrue; + } + memmove( &buff[item->cursorPos + 1], &buff[item->cursorPos], len + 1 - item->cursorPos ); + } else { + if (editPtr->maxChars && item->cursorPos >= editPtr->maxChars) { + return qtrue; + } + } + + buff[item->cursorPos] = key; + + DC->setCVar(item->cvar, buff); + + if (item->cursorPos < len + 1) { + item->cursorPos++; + if (editPtr->maxPaintChars && item->cursorPos > editPtr->maxPaintChars) { + editPtr->paintOffset++; + } + } + + } else { + + if ( key == K_DEL || key == K_KP_DEL ) { + if ( item->cursorPos < len ) { + memmove( buff + item->cursorPos, buff + item->cursorPos + 1, len - item->cursorPos); + DC->setCVar(item->cvar, buff); + } + return qtrue; + } + + if ( key == K_RIGHTARROW || key == K_KP_RIGHTARROW ) + { + if (editPtr->maxPaintChars && item->cursorPos >= editPtr->maxPaintChars && item->cursorPos < len) { + item->cursorPos++; + editPtr->paintOffset++; + return qtrue; + } + if (item->cursorPos < len) { + item->cursorPos++; + } + return qtrue; + } + + if ( key == K_LEFTARROW || key == K_KP_LEFTARROW ) + { + if ( item->cursorPos > 0 ) { + item->cursorPos--; + } + if (item->cursorPos < editPtr->paintOffset) { + editPtr->paintOffset--; + } + return qtrue; + } + + if ( key == K_HOME || key == K_KP_HOME) {// || ( tolower(key) == 'a' && trap_Key_IsDown( K_CTRL ) ) ) { + item->cursorPos = 0; + editPtr->paintOffset = 0; + return qtrue; + } + + if ( key == K_END || key == K_KP_END) {// ( tolower(key) == 'e' && trap_Key_IsDown( K_CTRL ) ) ) { + item->cursorPos = len; + if(item->cursorPos > editPtr->maxPaintChars) { + editPtr->paintOffset = len - editPtr->maxPaintChars; + } + return qtrue; + } + + if ( key == K_INS || key == K_KP_INS ) { + DC->setOverstrikeMode(!DC->getOverstrikeMode()); + return qtrue; + } + } + + if (key == K_TAB || key == K_DOWNARROW || key == K_KP_DOWNARROW) { + newItem = Menu_SetNextCursorItem(item->parent); + if (newItem && (newItem->type == ITEM_TYPE_EDITFIELD || newItem->type == ITEM_TYPE_NUMERICFIELD)) { + g_editItem = newItem; + } + } + + if (key == K_UPARROW || key == K_KP_UPARROW) { + newItem = Menu_SetPrevCursorItem(item->parent); + if (newItem && (newItem->type == ITEM_TYPE_EDITFIELD || newItem->type == ITEM_TYPE_NUMERICFIELD)) { + g_editItem = newItem; + } + } + + if ( key == K_ENTER || key == K_KP_ENTER || key == K_ESCAPE) { + return qfalse; + } + + return qtrue; + } + return qfalse; + +} + +static void Scroll_ListBox_AutoFunc(void *p) { + scrollInfo_t *si = (scrollInfo_t*)p; + if (DC->realTime > si->nextScrollTime) { + // need to scroll which is done by simulating a click to the item + // this is done a bit sideways as the autoscroll "knows" that the item is a listbox + // so it calls it directly + Item_ListBox_HandleKey(si->item, si->scrollKey, qtrue, qfalse); + si->nextScrollTime = DC->realTime + si->adjustValue; + } + + if (DC->realTime > si->nextAdjustTime) { + si->nextAdjustTime = DC->realTime + SCROLL_TIME_ADJUST; + if (si->adjustValue > SCROLL_TIME_FLOOR) { + si->adjustValue -= SCROLL_TIME_ADJUSTOFFSET; + } + } +} + +static void Scroll_ListBox_ThumbFunc(void *p) { + scrollInfo_t *si = (scrollInfo_t*)p; + rectDef_t r; + int pos, max; + + listBoxDef_t *listPtr = (listBoxDef_t*)si->item->typeData; + if (si->item->window.flags & WINDOW_HORIZONTAL) { + if (DC->cursorx == si->xStart) { + return; + } + r.x = si->item->window.rect.x + SCROLLBAR_SIZE + 1; + r.y = si->item->window.rect.y + si->item->window.rect.h - SCROLLBAR_SIZE - 1; + r.h = SCROLLBAR_SIZE; + r.w = si->item->window.rect.w - (SCROLLBAR_SIZE*2) - 2; + max = Item_ListBox_MaxScroll(si->item); + // + pos = (DC->cursorx - r.x - SCROLLBAR_SIZE/2) * max / (r.w - SCROLLBAR_SIZE); + if (pos < 0) { + pos = 0; + } + else if (pos > max) { + pos = max; + } + listPtr->startPos = pos; + si->xStart = DC->cursorx; + } + else if (DC->cursory != si->yStart) { + + r.x = si->item->window.rect.x + si->item->window.rect.w - SCROLLBAR_SIZE - 1; + r.y = si->item->window.rect.y + SCROLLBAR_SIZE + 1; + r.h = si->item->window.rect.h - (SCROLLBAR_SIZE*2) - 2; + r.w = SCROLLBAR_SIZE; + max = Item_ListBox_MaxScroll(si->item); + // + pos = (DC->cursory - r.y - SCROLLBAR_SIZE/2) * max / (r.h - SCROLLBAR_SIZE); + if (pos < 0) { + pos = 0; + } + else if (pos > max) { + pos = max; + } + listPtr->startPos = pos; + si->yStart = DC->cursory; + } + + if (DC->realTime > si->nextScrollTime) { + // need to scroll which is done by simulating a click to the item + // this is done a bit sideways as the autoscroll "knows" that the item is a listbox + // so it calls it directly + Item_ListBox_HandleKey(si->item, si->scrollKey, qtrue, qfalse); + si->nextScrollTime = DC->realTime + si->adjustValue; + } + + if (DC->realTime > si->nextAdjustTime) { + si->nextAdjustTime = DC->realTime + SCROLL_TIME_ADJUST; + if (si->adjustValue > SCROLL_TIME_FLOOR) { + si->adjustValue -= SCROLL_TIME_ADJUSTOFFSET; + } + } +} + +static void Scroll_Slider_ThumbFunc(void *p) { + float x, value, cursorx; + scrollInfo_t *si = (scrollInfo_t*)p; + editFieldDef_t *editDef = si->item->typeData; + + if (si->item->text) { + x = si->item->textRect.x + si->item->textRect.w + 8; + } else { + x = si->item->window.rect.x; + } + + cursorx = DC->cursorx; + + if (cursorx < x) { + cursorx = x; + } else if (cursorx > x + SLIDER_WIDTH) { + cursorx = x + SLIDER_WIDTH; + } + value = cursorx - x; + value /= SLIDER_WIDTH; + value *= (editDef->maxVal - editDef->minVal); + value += editDef->minVal; + DC->setCVar(si->item->cvar, va("%f", value)); +} + +void Item_StartCapture(itemDef_t *item, int key) { + int flags; + switch (item->type) { + case ITEM_TYPE_EDITFIELD: + case ITEM_TYPE_NUMERICFIELD: + + case ITEM_TYPE_LISTBOX: + { + flags = Item_ListBox_OverLB(item, DC->cursorx, DC->cursory); + if (flags & (WINDOW_LB_LEFTARROW | WINDOW_LB_RIGHTARROW)) { + scrollInfo.nextScrollTime = DC->realTime + SCROLL_TIME_START; + scrollInfo.nextAdjustTime = DC->realTime + SCROLL_TIME_ADJUST; + scrollInfo.adjustValue = SCROLL_TIME_START; + scrollInfo.scrollKey = key; + scrollInfo.scrollDir = (flags & WINDOW_LB_LEFTARROW) ? qtrue : qfalse; + scrollInfo.item = item; + captureData = &scrollInfo; + captureFunc = &Scroll_ListBox_AutoFunc; + itemCapture = item; + } else if (flags & WINDOW_LB_THUMB) { + scrollInfo.scrollKey = key; + scrollInfo.item = item; + scrollInfo.xStart = DC->cursorx; + scrollInfo.yStart = DC->cursory; + captureData = &scrollInfo; + captureFunc = &Scroll_ListBox_ThumbFunc; + itemCapture = item; + } + break; + } + case ITEM_TYPE_SLIDER: + { + flags = Item_Slider_OverSlider(item, DC->cursorx, DC->cursory); + if (flags & WINDOW_LB_THUMB) { + scrollInfo.scrollKey = key; + scrollInfo.item = item; + scrollInfo.xStart = DC->cursorx; + scrollInfo.yStart = DC->cursory; + captureData = &scrollInfo; + captureFunc = &Scroll_Slider_ThumbFunc; + itemCapture = item; + } + break; + } + } +} + +void Item_StopCapture(itemDef_t *item) { + +} + +qboolean Item_Slider_HandleKey(itemDef_t *item, int key, qboolean down) { + float x, value, width, work; + + //DC->Print("slider handle key\n"); + if (item->window.flags & WINDOW_HASFOCUS && item->cvar && Rect_ContainsPoint(&item->window.rect, DC->cursorx, DC->cursory)) { + if (key == K_MOUSE1 || key == K_ENTER || key == K_MOUSE2 || key == K_MOUSE3) { + editFieldDef_t *editDef = item->typeData; + if (editDef) { + rectDef_t testRect; + width = SLIDER_WIDTH; + if (item->text) { + x = item->textRect.x + item->textRect.w + 8; + } else { + x = item->window.rect.x; + } + + testRect = item->window.rect; + testRect.x = x; + value = (float)SLIDER_THUMB_WIDTH / 2; + testRect.x -= value; + //DC->Print("slider x: %f\n", testRect.x); + testRect.w = (SLIDER_WIDTH + (float)SLIDER_THUMB_WIDTH / 2); + //DC->Print("slider w: %f\n", testRect.w); + if (Rect_ContainsPoint(&testRect, DC->cursorx, DC->cursory)) { + work = DC->cursorx - x; + value = work / width; + value *= (editDef->maxVal - editDef->minVal); + // vm fuckage + // value = (((float)(DC->cursorx - x)/ SLIDER_WIDTH) * (editDef->maxVal - editDef->minVal)); + value += editDef->minVal; + DC->setCVar(item->cvar, va("%f", value)); + return qtrue; + } + } + } + } + DC->Print("slider handle key exit\n"); + return qfalse; +} + + +qboolean Item_HandleKey(itemDef_t *item, int key, qboolean down) { + + if (itemCapture) { + Item_StopCapture(itemCapture); + itemCapture = NULL; + captureFunc = NULL; + captureData = NULL; + } else { + // bk001206 - parentheses + if ( down && ( key == K_MOUSE1 || key == K_MOUSE2 || key == K_MOUSE3 ) ) { + Item_StartCapture(item, key); + } + } + + if (!down) { + return qfalse; + } + + switch (item->type) { + case ITEM_TYPE_BUTTON: + return qfalse; + break; + case ITEM_TYPE_RADIOBUTTON: + return qfalse; + break; + case ITEM_TYPE_CHECKBOX: + return qfalse; + break; + case ITEM_TYPE_EDITFIELD: + case ITEM_TYPE_NUMERICFIELD: + //return Item_TextField_HandleKey(item, key); + return qfalse; + break; + case ITEM_TYPE_COMBO: + return qfalse; + break; + case ITEM_TYPE_LISTBOX: + return Item_ListBox_HandleKey(item, key, down, qfalse); + break; + case ITEM_TYPE_YESNO: + return Item_YesNo_HandleKey(item, key); + break; + case ITEM_TYPE_MULTI: + return Item_Multi_HandleKey(item, key); + break; + case ITEM_TYPE_OWNERDRAW: + return Item_OwnerDraw_HandleKey(item, key); + break; + case ITEM_TYPE_BIND: + return Item_Bind_HandleKey(item, key, down); + break; + case ITEM_TYPE_SLIDER: + return Item_Slider_HandleKey(item, key, down); + break; + //case ITEM_TYPE_IMAGE: + // Item_Image_Paint(item); + // break; + default: + return qfalse; + break; + } + + //return qfalse; +} + +void Item_Action(itemDef_t *item) { + if (item) { + Item_RunScript(item, item->action); + } +} + +itemDef_t *Menu_SetPrevCursorItem(menuDef_t *menu) { + qboolean wrapped = qfalse; + int oldCursor = menu->cursorItem; + + if (menu->cursorItem < 0) { + menu->cursorItem = menu->itemCount-1; + wrapped = qtrue; + } + + while (menu->cursorItem > -1) { + + menu->cursorItem--; + if (menu->cursorItem < 0 && !wrapped) { + wrapped = qtrue; + menu->cursorItem = menu->itemCount -1; + } + + if (Item_SetFocus(menu->items[menu->cursorItem], DC->cursorx, DC->cursory)) { + Menu_HandleMouseMove(menu, menu->items[menu->cursorItem]->window.rect.x + 1, menu->items[menu->cursorItem]->window.rect.y + 1); + return menu->items[menu->cursorItem]; + } + } + menu->cursorItem = oldCursor; + return NULL; + +} + +itemDef_t *Menu_SetNextCursorItem(menuDef_t *menu) { + + qboolean wrapped = qfalse; + int oldCursor = menu->cursorItem; + + + if (menu->cursorItem == -1) { + menu->cursorItem = 0; + wrapped = qtrue; + } + + while (menu->cursorItem < menu->itemCount) { + + menu->cursorItem++; + if (menu->cursorItem >= menu->itemCount && !wrapped) { + wrapped = qtrue; + menu->cursorItem = 0; + } + if (Item_SetFocus(menu->items[menu->cursorItem], DC->cursorx, DC->cursory)) { + Menu_HandleMouseMove(menu, menu->items[menu->cursorItem]->window.rect.x + 1, menu->items[menu->cursorItem]->window.rect.y + 1); + return menu->items[menu->cursorItem]; + } + + } + + menu->cursorItem = oldCursor; + return NULL; +} + +static void Window_CloseCinematic(windowDef_t *window) { + if (window->style == WINDOW_STYLE_CINEMATIC && window->cinematic >= 0) { + DC->stopCinematic(window->cinematic); + window->cinematic = -1; + } +} + +static void Menu_CloseCinematics(menuDef_t *menu) { + if (menu) { + int i; + Window_CloseCinematic(&menu->window); + for (i = 0; i < menu->itemCount; i++) { + Window_CloseCinematic(&menu->items[i]->window); + if (menu->items[i]->type == ITEM_TYPE_OWNERDRAW) { + DC->stopCinematic(0-menu->items[i]->window.ownerDraw); + } + } + } +} + +static void Display_CloseCinematics() { + int i; + for (i = 0; i < menuCount; i++) { + Menu_CloseCinematics(&Menus[i]); + } +} + +void Menus_Activate(menuDef_t *menu) { + menu->window.flags |= (WINDOW_HASFOCUS | WINDOW_VISIBLE); + if (menu->onOpen) { + itemDef_t item; + item.parent = menu; + Item_RunScript(&item, menu->onOpen); + } + + if (menu->soundName && *menu->soundName) { +// DC->stopBackgroundTrack(); // you don't want to do this since it will reset s_rawend + DC->startBackgroundTrack(menu->soundName, menu->soundName); + } + + Display_CloseCinematics(); + +} + +int Display_VisibleMenuCount() { + int i, count; + count = 0; + for (i = 0; i < menuCount; i++) { + if (Menus[i].window.flags & (WINDOW_FORCED | WINDOW_VISIBLE)) { + count++; + } + } + return count; +} + +void Menus_HandleOOBClick(menuDef_t *menu, int key, qboolean down) { + if (menu) { + int i; + // basically the behaviour we are looking for is if there are windows in the stack.. see if + // the cursor is within any of them.. if not close them otherwise activate them and pass the + // key on.. force a mouse move to activate focus and script stuff + if (down && menu->window.flags & WINDOW_OOB_CLICK) { + Menu_RunCloseScript(menu); + menu->window.flags &= ~(WINDOW_HASFOCUS | WINDOW_VISIBLE); + } + + for (i = 0; i < menuCount; i++) { + if (Menu_OverActiveItem(&Menus[i], DC->cursorx, DC->cursory)) { + Menu_RunCloseScript(menu); + menu->window.flags &= ~(WINDOW_HASFOCUS | WINDOW_VISIBLE); + Menus_Activate(&Menus[i]); + Menu_HandleMouseMove(&Menus[i], DC->cursorx, DC->cursory); + Menu_HandleKey(&Menus[i], key, down); + } + } + + if (Display_VisibleMenuCount() == 0) { + if (DC->Pause) { + DC->Pause(qfalse); + } + } + Display_CloseCinematics(); + } +} + +static rectDef_t *Item_CorrectedTextRect(itemDef_t *item) { + static rectDef_t rect; + memset(&rect, 0, sizeof(rectDef_t)); + if (item) { + rect = item->textRect; + if (rect.w) { + rect.y -= rect.h; + } + } + return ▭ +} + +void Menu_HandleKey(menuDef_t *menu, int key, qboolean down) { + int i; + itemDef_t *item = NULL; + qboolean inHandler = qfalse; + + if (inHandler) { + return; + } + + inHandler = qtrue; + if (g_waitingForKey && down) { + Item_Bind_HandleKey(g_bindItem, key, down); + inHandler = qfalse; + return; + } + + if (g_editingField && down) { + if (!Item_TextField_HandleKey(g_editItem, key)) { + g_editingField = qfalse; + g_editItem = NULL; + inHandler = qfalse; + return; + } else if (key == K_MOUSE1 || key == K_MOUSE2 || key == K_MOUSE3) { + g_editingField = qfalse; + g_editItem = NULL; + Display_MouseMove(NULL, DC->cursorx, DC->cursory); + } else if (key == K_TAB || key == K_UPARROW || key == K_DOWNARROW) { + return; + } + } + + if (menu == NULL) { + inHandler = qfalse; + return; + } + + // see if the mouse is within the window bounds and if so is this a mouse click + if (down && !(menu->window.flags & WINDOW_POPUP) && !Rect_ContainsPoint(&menu->window.rect, DC->cursorx, DC->cursory)) { + static qboolean inHandleKey = qfalse; + // bk001206 - parentheses + if (!inHandleKey && ( key == K_MOUSE1 || key == K_MOUSE2 || key == K_MOUSE3 ) ) { + inHandleKey = qtrue; + Menus_HandleOOBClick(menu, key, down); + inHandleKey = qfalse; + inHandler = qfalse; + return; + } + } + + // get the item with focus + for (i = 0; i < menu->itemCount; i++) { + if (menu->items[i]->window.flags & WINDOW_HASFOCUS) { + item = menu->items[i]; + } + } + + if (item != NULL) { + if (Item_HandleKey(item, key, down)) { + Item_Action(item); + inHandler = qfalse; + return; + } + } + + if (!down) { + inHandler = qfalse; + return; + } + + // default handling + switch ( key ) { + + case K_F11: + if (DC->getCVarValue("developer")) { + debugMode ^= 1; + } + break; + + case K_F12: + if (DC->getCVarValue("developer")) { + DC->executeText(EXEC_APPEND, "screenshot\n"); + } + break; + case K_KP_UPARROW: + case K_UPARROW: + Menu_SetPrevCursorItem(menu); + break; + + case K_ESCAPE: + if (!g_waitingForKey && menu->onESC) { + itemDef_t it; + it.parent = menu; + Item_RunScript(&it, menu->onESC); + } + break; + case K_TAB: + case K_KP_DOWNARROW: + case K_DOWNARROW: + Menu_SetNextCursorItem(menu); + break; + + case K_MOUSE1: + case K_MOUSE2: + if (item) { + if (item->type == ITEM_TYPE_TEXT) { + if (Rect_ContainsPoint(Item_CorrectedTextRect(item), DC->cursorx, DC->cursory)) { + Item_Action(item); + } + } else if (item->type == ITEM_TYPE_EDITFIELD || item->type == ITEM_TYPE_NUMERICFIELD) { + if (Rect_ContainsPoint(&item->window.rect, DC->cursorx, DC->cursory)) { + item->cursorPos = 0; + g_editingField = qtrue; + g_editItem = item; + DC->setOverstrikeMode(qtrue); + } + } else { + if (Rect_ContainsPoint(&item->window.rect, DC->cursorx, DC->cursory)) { + Item_Action(item); + } + } + } + break; + + case K_JOY1: + case K_JOY2: + case K_JOY3: + case K_JOY4: + case K_AUX1: + case K_AUX2: + case K_AUX3: + case K_AUX4: + case K_AUX5: + case K_AUX6: + case K_AUX7: + case K_AUX8: + case K_AUX9: + case K_AUX10: + case K_AUX11: + case K_AUX12: + case K_AUX13: + case K_AUX14: + case K_AUX15: + case K_AUX16: + break; + case K_KP_ENTER: + case K_ENTER: + if (item) { + if (item->type == ITEM_TYPE_EDITFIELD || item->type == ITEM_TYPE_NUMERICFIELD) { + item->cursorPos = 0; + g_editingField = qtrue; + g_editItem = item; + DC->setOverstrikeMode(qtrue); + } else { + Item_Action(item); + } + } + break; + } + inHandler = qfalse; +} + +void ToWindowCoords(float *x, float *y, windowDef_t *window) { + if (window->border != 0) { + *x += window->borderSize; + *y += window->borderSize; + } + *x += window->rect.x; + *y += window->rect.y; +} + +void Rect_ToWindowCoords(rectDef_t *rect, windowDef_t *window) { + ToWindowCoords(&rect->x, &rect->y, window); +} + +void Item_SetTextExtents(itemDef_t *item, int *width, int *height, const char *text) { + const char *textPtr = (text) ? text : item->text; + + if (textPtr == NULL ) { + return; + } + + *width = item->textRect.w; + *height = item->textRect.h; + + // keeps us from computing the widths and heights more than once + if (*width == 0 || (item->type == ITEM_TYPE_OWNERDRAW && item->textalignment == ITEM_ALIGN_CENTER)) { + int originalWidth = DC->textWidth(item->text, item->textscale, 0); + + if (item->type == ITEM_TYPE_OWNERDRAW && (item->textalignment == ITEM_ALIGN_CENTER || item->textalignment == ITEM_ALIGN_RIGHT)) { + originalWidth += DC->ownerDrawWidth(item->window.ownerDraw, item->textscale); + } else if (item->type == ITEM_TYPE_EDITFIELD && item->textalignment == ITEM_ALIGN_CENTER && item->cvar) { + char buff[256]; + DC->getCVarString(item->cvar, buff, 256); + originalWidth += DC->textWidth(buff, item->textscale, 0); + } + + *width = DC->textWidth(textPtr, item->textscale, 0); + *height = DC->textHeight(textPtr, item->textscale, 0); + item->textRect.w = *width; + item->textRect.h = *height; + item->textRect.x = item->textalignx; + item->textRect.y = item->textaligny; + if (item->textalignment == ITEM_ALIGN_RIGHT) { + item->textRect.x = item->textalignx - originalWidth; + } else if (item->textalignment == ITEM_ALIGN_CENTER) { + item->textRect.x = item->textalignx - originalWidth / 2; + } + + ToWindowCoords(&item->textRect.x, &item->textRect.y, &item->window); + } +} + +void Item_TextColor(itemDef_t *item, vec4_t *newColor) { + vec4_t lowLight; + menuDef_t *parent = (menuDef_t*)item->parent; + + Fade(&item->window.flags, &item->window.foreColor[3], parent->fadeClamp, &item->window.nextTime, parent->fadeCycle, qtrue, parent->fadeAmount); + + if (item->window.flags & WINDOW_HASFOCUS) { + lowLight[0] = 0.8 * parent->focusColor[0]; + lowLight[1] = 0.8 * parent->focusColor[1]; + lowLight[2] = 0.8 * parent->focusColor[2]; + lowLight[3] = 0.8 * parent->focusColor[3]; + LerpColor(parent->focusColor,lowLight,*newColor,0.5+0.5*sin(DC->realTime / PULSE_DIVISOR)); + } else if (item->textStyle == ITEM_TEXTSTYLE_BLINK && !((DC->realTime/BLINK_DIVISOR) & 1)) { + lowLight[0] = 0.8 * item->window.foreColor[0]; + lowLight[1] = 0.8 * item->window.foreColor[1]; + lowLight[2] = 0.8 * item->window.foreColor[2]; + lowLight[3] = 0.8 * item->window.foreColor[3]; + LerpColor(item->window.foreColor,lowLight,*newColor,0.5+0.5*sin(DC->realTime / PULSE_DIVISOR)); + } else { + memcpy(newColor, &item->window.foreColor, sizeof(vec4_t)); + // items can be enabled and disabled based on cvars + } + + if (item->enableCvar && *item->enableCvar && item->cvarTest && *item->cvarTest) { + if (item->cvarFlags & (CVAR_ENABLE | CVAR_DISABLE) && !Item_EnableShowViaCvar(item, CVAR_ENABLE)) { + memcpy(newColor, &parent->disableColor, sizeof(vec4_t)); + } + } +} + +void Item_Text_AutoWrapped_Paint(itemDef_t *item) { + char text[1024]; + const char *p, *textPtr, *newLinePtr; + char buff[1024]; + int width, height, len, textWidth, newLine, newLineWidth; + float y; + vec4_t color; + + textWidth = 0; + newLinePtr = NULL; + + if (item->text == NULL) { + if (item->cvar == NULL) { + return; + } + else { + DC->getCVarString(item->cvar, text, sizeof(text)); + textPtr = text; + } + } + else { + textPtr = item->text; + } + if (*textPtr == '\0') { + return; + } + Item_TextColor(item, &color); + Item_SetTextExtents(item, &width, &height, textPtr); + + y = item->textaligny; + len = 0; + buff[0] = '\0'; + newLine = 0; + newLineWidth = 0; + p = textPtr; + while (p) { + if (*p == ' ' || *p == '\t' || *p == '\n' || *p == '\0') { + newLine = len; + newLinePtr = p+1; + newLineWidth = textWidth; + } + textWidth = DC->textWidth(buff, item->textscale, 0); + if ( (newLine && textWidth > item->window.rect.w) || *p == '\n' || *p == '\0') { + if (len) { + if (item->textalignment == ITEM_ALIGN_LEFT) { + item->textRect.x = item->textalignx; + } else if (item->textalignment == ITEM_ALIGN_RIGHT) { + item->textRect.x = item->textalignx - newLineWidth; + } else if (item->textalignment == ITEM_ALIGN_CENTER) { + item->textRect.x = item->textalignx - newLineWidth / 2; + } + item->textRect.y = y; + ToWindowCoords(&item->textRect.x, &item->textRect.y, &item->window); + // + buff[newLine] = '\0'; + DC->drawText(item->textRect.x, item->textRect.y, item->textscale, color, buff, 0, 0, item->textStyle); + } + if (*p == '\0') { + break; + } + // + y += height + 5; + p = newLinePtr; + len = 0; + newLine = 0; + newLineWidth = 0; + continue; + } + buff[len++] = *p++; + buff[len] = '\0'; + } +} + +void Item_Text_Wrapped_Paint(itemDef_t *item) { + char text[1024]; + const char *p, *start, *textPtr; + char buff[1024]; + int width, height; + float x, y; + vec4_t color; + + // now paint the text and/or any optional images + // default to left + + if (item->text == NULL) { + if (item->cvar == NULL) { + return; + } + else { + DC->getCVarString(item->cvar, text, sizeof(text)); + textPtr = text; + } + } + else { + textPtr = item->text; + } + if (*textPtr == '\0') { + return; + } + + Item_TextColor(item, &color); + Item_SetTextExtents(item, &width, &height, textPtr); + + x = item->textRect.x; + y = item->textRect.y; + start = textPtr; + p = strchr(textPtr, '\r'); + while (p && *p) { + strncpy(buff, start, p-start+1); + buff[p-start] = '\0'; + DC->drawText(x, y, item->textscale, color, buff, 0, 0, item->textStyle); + y += height + 5; + start += p - start + 1; + p = strchr(p+1, '\r'); + } + DC->drawText(x, y, item->textscale, color, start, 0, 0, item->textStyle); +} + +void Item_Text_Paint(itemDef_t *item) { + char text[1024]; + const char *textPtr; + int height, width; + vec4_t color; + + if (item->window.flags & WINDOW_WRAPPED) { + Item_Text_Wrapped_Paint(item); + return; + } + if (item->window.flags & WINDOW_AUTOWRAPPED) { + Item_Text_AutoWrapped_Paint(item); + return; + } + + if (item->text == NULL) { + if (item->cvar == NULL) { + return; + } + else { + DC->getCVarString(item->cvar, text, sizeof(text)); + textPtr = text; + } + } + else { + textPtr = item->text; + } + + // this needs to go here as it sets extents for cvar types as well + Item_SetTextExtents(item, &width, &height, textPtr); + + if (*textPtr == '\0') { + return; + } + + + Item_TextColor(item, &color); + + //FIXME: this is a fucking mess +/* + adjust = 0; + if (item->textStyle == ITEM_TEXTSTYLE_OUTLINED || item->textStyle == ITEM_TEXTSTYLE_OUTLINESHADOWED) { + adjust = 0.5; + } + + if (item->textStyle == ITEM_TEXTSTYLE_SHADOWED || item->textStyle == ITEM_TEXTSTYLE_OUTLINESHADOWED) { + Fade(&item->window.flags, &DC->Assets.shadowColor[3], DC->Assets.fadeClamp, &item->window.nextTime, DC->Assets.fadeCycle, qfalse); + DC->drawText(item->textRect.x + DC->Assets.shadowX, item->textRect.y + DC->Assets.shadowY, item->textscale, DC->Assets.shadowColor, textPtr, adjust); + } +*/ + + +// if (item->textStyle == ITEM_TEXTSTYLE_OUTLINED || item->textStyle == ITEM_TEXTSTYLE_OUTLINESHADOWED) { +// Fade(&item->window.flags, &item->window.outlineColor[3], DC->Assets.fadeClamp, &item->window.nextTime, DC->Assets.fadeCycle, qfalse); +// /* +// Text_Paint(item->textRect.x-1, item->textRect.y-1, item->textscale, item->window.foreColor, textPtr, adjust); +// Text_Paint(item->textRect.x, item->textRect.y-1, item->textscale, item->window.foreColor, textPtr, adjust); +// Text_Paint(item->textRect.x+1, item->textRect.y-1, item->textscale, item->window.foreColor, textPtr, adjust); +// Text_Paint(item->textRect.x-1, item->textRect.y, item->textscale, item->window.foreColor, textPtr, adjust); +// Text_Paint(item->textRect.x+1, item->textRect.y, item->textscale, item->window.foreColor, textPtr, adjust); +// Text_Paint(item->textRect.x-1, item->textRect.y+1, item->textscale, item->window.foreColor, textPtr, adjust); +// Text_Paint(item->textRect.x, item->textRect.y+1, item->textscale, item->window.foreColor, textPtr, adjust); +// Text_Paint(item->textRect.x+1, item->textRect.y+1, item->textscale, item->window.foreColor, textPtr, adjust); +// */ +// DC->drawText(item->textRect.x - 1, item->textRect.y + 1, item->textscale * 1.02, item->window.outlineColor, textPtr, adjust); +// } + + DC->drawText(item->textRect.x, item->textRect.y, item->textscale, color, textPtr, 0, 0, item->textStyle); +} + + + +//float trap_Cvar_VariableValue( const char *var_name ); +//void trap_Cvar_VariableStringBuffer( const char *var_name, char *buffer, int bufsize ); + +void Item_TextField_Paint(itemDef_t *item) { + char buff[1024]; + vec4_t newColor, lowLight; + int offset; + menuDef_t *parent = (menuDef_t*)item->parent; + editFieldDef_t *editPtr = (editFieldDef_t*)item->typeData; + + Item_Text_Paint(item); + + buff[0] = '\0'; + + if (item->cvar) { + DC->getCVarString(item->cvar, buff, sizeof(buff)); + } + + parent = (menuDef_t*)item->parent; + + if (item->window.flags & WINDOW_HASFOCUS) { + lowLight[0] = 0.8 * parent->focusColor[0]; + lowLight[1] = 0.8 * parent->focusColor[1]; + lowLight[2] = 0.8 * parent->focusColor[2]; + lowLight[3] = 0.8 * parent->focusColor[3]; + LerpColor(parent->focusColor,lowLight,newColor,0.5+0.5*sin(DC->realTime / PULSE_DIVISOR)); + } else { + memcpy(&newColor, &item->window.foreColor, sizeof(vec4_t)); + } + + offset = (item->text && *item->text) ? 8 : 0; + if (item->window.flags & WINDOW_HASFOCUS && g_editingField) { + char cursor = DC->getOverstrikeMode() ? '_' : '|'; + DC->drawTextWithCursor(item->textRect.x + item->textRect.w + offset, item->textRect.y, item->textscale, newColor, buff + editPtr->paintOffset, item->cursorPos - editPtr->paintOffset , cursor, editPtr->maxPaintChars, item->textStyle); + } else { + DC->drawText(item->textRect.x + item->textRect.w + offset, item->textRect.y, item->textscale, newColor, buff + editPtr->paintOffset, 0, editPtr->maxPaintChars, item->textStyle); + } + +} + +void Item_YesNo_Paint(itemDef_t *item) { + vec4_t newColor, lowLight; + float value; + menuDef_t *parent = (menuDef_t*)item->parent; + + value = (item->cvar) ? DC->getCVarValue(item->cvar) : 0; + + if (item->window.flags & WINDOW_HASFOCUS) { + lowLight[0] = 0.8 * parent->focusColor[0]; + lowLight[1] = 0.8 * parent->focusColor[1]; + lowLight[2] = 0.8 * parent->focusColor[2]; + lowLight[3] = 0.8 * parent->focusColor[3]; + LerpColor(parent->focusColor,lowLight,newColor,0.5+0.5*sin(DC->realTime / PULSE_DIVISOR)); + } else { + memcpy(&newColor, &item->window.foreColor, sizeof(vec4_t)); + } + + if (item->text) { + Item_Text_Paint(item); + DC->drawText(item->textRect.x + item->textRect.w + 8, item->textRect.y, item->textscale, newColor, (value != 0) ? "Yes" : "No", 0, 0, item->textStyle); + } else { + DC->drawText(item->textRect.x, item->textRect.y, item->textscale, newColor, (value != 0) ? "Yes" : "No", 0, 0, item->textStyle); + } +} + +void Item_Multi_Paint(itemDef_t *item) { + vec4_t newColor, lowLight; + const char *text = ""; + menuDef_t *parent = (menuDef_t*)item->parent; + + if (item->window.flags & WINDOW_HASFOCUS) { + lowLight[0] = 0.8 * parent->focusColor[0]; + lowLight[1] = 0.8 * parent->focusColor[1]; + lowLight[2] = 0.8 * parent->focusColor[2]; + lowLight[3] = 0.8 * parent->focusColor[3]; + LerpColor(parent->focusColor,lowLight,newColor,0.5+0.5*sin(DC->realTime / PULSE_DIVISOR)); + } else { + memcpy(&newColor, &item->window.foreColor, sizeof(vec4_t)); + } + + text = Item_Multi_Setting(item); + + if (item->text) { + Item_Text_Paint(item); + DC->drawText(item->textRect.x + item->textRect.w + 8, item->textRect.y, item->textscale, newColor, text, 0, 0, item->textStyle); + } else { + DC->drawText(item->textRect.x, item->textRect.y, item->textscale, newColor, text, 0, 0, item->textStyle); + } +} + + +typedef struct { + char *command; + int id; + int defaultbind1; + int defaultbind2; + int bind1; + int bind2; +} bind_t; + +typedef struct +{ + char* name; + float defaultvalue; + float value; +} configcvar_t; + + +static bind_t g_bindings[] = +{ + {"+scores", K_TAB, -1, -1, -1}, + {"+button2", K_ENTER, -1, -1, -1}, + {"+speed", K_SHIFT, -1, -1, -1}, + {"+forward", K_UPARROW, -1, -1, -1}, + {"+back", K_DOWNARROW, -1, -1, -1}, + {"+moveleft", ',', -1, -1, -1}, + {"+moveright", '.', -1, -1, -1}, + {"+moveup", K_SPACE, -1, -1, -1}, + {"+movedown", 'c', -1, -1, -1}, + {"+left", K_LEFTARROW, -1, -1, -1}, + {"+right", K_RIGHTARROW, -1, -1, -1}, + {"+strafe", K_ALT, -1, -1, -1}, + {"+lookup", K_PGDN, -1, -1, -1}, + {"+lookdown", K_DEL, -1, -1, -1}, + {"+mlook", '/', -1, -1, -1}, + {"centerview", K_END, -1, -1, -1}, + {"+zoom", -1, -1, -1, -1}, + {"weapon 1", '1', -1, -1, -1}, + {"weapon 2", '2', -1, -1, -1}, + {"weapon 3", '3', -1, -1, -1}, + {"weapon 4", '4', -1, -1, -1}, + {"weapon 5", '5', -1, -1, -1}, + {"weapon 6", '6', -1, -1, -1}, + {"weapon 7", '7', -1, -1, -1}, + {"weapon 8", '8', -1, -1, -1}, + {"weapon 9", '9', -1, -1, -1}, + {"weapon 10", '0', -1, -1, -1}, + {"weapon 11", -1, -1, -1, -1}, + {"weapon 12", -1, -1, -1, -1}, + {"weapon 13", -1, -1, -1, -1}, + {"+attack", K_CTRL, -1, -1, -1}, + {"weapprev", '[', -1, -1, -1}, + {"weapnext", ']', -1, -1, -1}, + {"+button3", K_MOUSE3, -1, -1, -1}, + {"+button4", K_MOUSE4, -1, -1, -1}, + {"prevTeamMember", 'w', -1, -1, -1}, + {"nextTeamMember", 'r', -1, -1, -1}, + {"nextOrder", 't', -1, -1, -1}, + {"confirmOrder", 'y', -1, -1, -1}, + {"denyOrder", 'n', -1, -1, -1}, + {"taskOffense", 'o', -1, -1, -1}, + {"taskDefense", 'd', -1, -1, -1}, + {"taskPatrol", 'p', -1, -1, -1}, + {"taskCamp", 'c', -1, -1, -1}, + {"taskFollow", 'f', -1, -1, -1}, + {"taskRetrieve", 'v', -1, -1, -1}, + {"taskEscort", 'e', -1, -1, -1}, + {"taskOwnFlag", 'i', -1, -1, -1}, + {"taskSuicide", 'k', -1, -1, -1}, + {"tauntKillInsult", K_F1, -1, -1, -1}, + {"tauntPraise", K_F2, -1, -1, -1}, + {"tauntTaunt", K_F3, -1, -1, -1}, + {"tauntDeathInsult", K_F4, -1, -1, -1}, + {"tauntGauntlet", K_F5, -1, -1, -1}, + {"scoresUp", K_KP_PGUP, -1, -1, -1}, + {"scoresDown", K_KP_PGDN, -1, -1, -1}, + // bk001205 - this one below was: '-1' + {"messagemode", -1, -1, -1, -1}, + {"messagemode2", -1, -1, -1, -1}, + {"messagemode3", -1, -1, -1, -1}, + {"messagemode4", -1, -1, -1, -1} +}; + + +static const int g_bindCount = sizeof(g_bindings) / sizeof(bind_t); + +#ifndef MISSIONPACK // bk001206 +static configcvar_t g_configcvars[] = +{ + {"cl_run", 0, 0}, + {"m_pitch", 0, 0}, + {"cg_autoswitch", 0, 0}, + {"sensitivity", 0, 0}, + {"in_joystick", 0, 0}, + {"joy_threshold", 0, 0}, + {"m_filter", 0, 0}, + {"cl_freelook", 0, 0}, + {NULL, 0, 0} +}; +#endif + +/* +================= +Controls_GetKeyAssignment +================= +*/ +static void Controls_GetKeyAssignment (char *command, int *twokeys) +{ + int count; + int j; + char b[256]; + + twokeys[0] = twokeys[1] = -1; + count = 0; + + for ( j = 0; j < 256; j++ ) + { + DC->getBindingBuf( j, b, 256 ); + if ( *b == 0 ) { + continue; + } + if ( !Q_stricmp( b, command ) ) { + twokeys[count] = j; + count++; + if (count == 2) { + break; + } + } + } +} + +/* +================= +Controls_GetConfig +================= +*/ +void Controls_GetConfig( void ) +{ + int i; + int twokeys[2]; + + // iterate each command, get its numeric binding + for (i=0; i < g_bindCount; i++) + { + + Controls_GetKeyAssignment(g_bindings[i].command, twokeys); + + g_bindings[i].bind1 = twokeys[0]; + g_bindings[i].bind2 = twokeys[1]; + } + + //s_controls.invertmouse.curvalue = DC->getCVarValue( "m_pitch" ) < 0; + //s_controls.smoothmouse.curvalue = UI_ClampCvar( 0, 1, Controls_GetCvarValue( "m_filter" ) ); + //s_controls.alwaysrun.curvalue = UI_ClampCvar( 0, 1, Controls_GetCvarValue( "cl_run" ) ); + //s_controls.autoswitch.curvalue = UI_ClampCvar( 0, 1, Controls_GetCvarValue( "cg_autoswitch" ) ); + //s_controls.sensitivity.curvalue = UI_ClampCvar( 2, 30, Controls_GetCvarValue( "sensitivity" ) ); + //s_controls.joyenable.curvalue = UI_ClampCvar( 0, 1, Controls_GetCvarValue( "in_joystick" ) ); + //s_controls.joythreshold.curvalue = UI_ClampCvar( 0.05, 0.75, Controls_GetCvarValue( "joy_threshold" ) ); + //s_controls.freelook.curvalue = UI_ClampCvar( 0, 1, Controls_GetCvarValue( "cl_freelook" ) ); +} + +/* +================= +Controls_SetConfig +================= +*/ +void Controls_SetConfig(qboolean restart) +{ + int i; + + // iterate each command, get its numeric binding + for (i=0; i < g_bindCount; i++) + { + + if (g_bindings[i].bind1 != -1) + { + DC->setBinding( g_bindings[i].bind1, g_bindings[i].command ); + + if (g_bindings[i].bind2 != -1) + DC->setBinding( g_bindings[i].bind2, g_bindings[i].command ); + } + } + + //if ( s_controls.invertmouse.curvalue ) + // DC->setCVar("m_pitch", va("%f),-fabs( DC->getCVarValue( "m_pitch" ) ) ); + //else + // trap_Cvar_SetValue( "m_pitch", fabs( trap_Cvar_VariableValue( "m_pitch" ) ) ); + + //trap_Cvar_SetValue( "m_filter", s_controls.smoothmouse.curvalue ); + //trap_Cvar_SetValue( "cl_run", s_controls.alwaysrun.curvalue ); + //trap_Cvar_SetValue( "cg_autoswitch", s_controls.autoswitch.curvalue ); + //trap_Cvar_SetValue( "sensitivity", s_controls.sensitivity.curvalue ); + //trap_Cvar_SetValue( "in_joystick", s_controls.joyenable.curvalue ); + //trap_Cvar_SetValue( "joy_threshold", s_controls.joythreshold.curvalue ); + //trap_Cvar_SetValue( "cl_freelook", s_controls.freelook.curvalue ); + DC->executeText(EXEC_APPEND, "in_restart\n"); + //trap_Cmd_ExecuteText( EXEC_APPEND, "in_restart\n" ); +} + +/* +================= +Controls_SetDefaults +================= +*/ +void Controls_SetDefaults( void ) +{ + int i; + + // iterate each command, set its default binding + for (i=0; i < g_bindCount; i++) + { + g_bindings[i].bind1 = g_bindings[i].defaultbind1; + g_bindings[i].bind2 = g_bindings[i].defaultbind2; + } + + //s_controls.invertmouse.curvalue = Controls_GetCvarDefault( "m_pitch" ) < 0; + //s_controls.smoothmouse.curvalue = Controls_GetCvarDefault( "m_filter" ); + //s_controls.alwaysrun.curvalue = Controls_GetCvarDefault( "cl_run" ); + //s_controls.autoswitch.curvalue = Controls_GetCvarDefault( "cg_autoswitch" ); + //s_controls.sensitivity.curvalue = Controls_GetCvarDefault( "sensitivity" ); + //s_controls.joyenable.curvalue = Controls_GetCvarDefault( "in_joystick" ); + //s_controls.joythreshold.curvalue = Controls_GetCvarDefault( "joy_threshold" ); + //s_controls.freelook.curvalue = Controls_GetCvarDefault( "cl_freelook" ); +} + +int BindingIDFromName(const char *name) { + int i; + for (i=0; i < g_bindCount; i++) + { + if (Q_stricmp(name, g_bindings[i].command) == 0) { + return i; + } + } + return -1; +} + +char g_nameBind1[32]; +char g_nameBind2[32]; + +void BindingFromName(const char *cvar) { + int i, b1, b2; + + // iterate each command, set its default binding + for (i=0; i < g_bindCount; i++) + { + if (Q_stricmp(cvar, g_bindings[i].command) == 0) { + b1 = g_bindings[i].bind1; + if (b1 == -1) { + break; + } + DC->keynumToStringBuf( b1, g_nameBind1, 32 ); + Q_strupr(g_nameBind1); + + b2 = g_bindings[i].bind2; + if (b2 != -1) + { + DC->keynumToStringBuf( b2, g_nameBind2, 32 ); + Q_strupr(g_nameBind2); + strcat( g_nameBind1, " or " ); + strcat( g_nameBind1, g_nameBind2 ); + } + return; + } + } + strcpy(g_nameBind1, "???"); +} + +void Item_Slider_Paint(itemDef_t *item) { + vec4_t newColor, lowLight; + float x, y, value; + menuDef_t *parent = (menuDef_t*)item->parent; + + value = (item->cvar) ? DC->getCVarValue(item->cvar) : 0; + + if (item->window.flags & WINDOW_HASFOCUS) { + lowLight[0] = 0.8 * parent->focusColor[0]; + lowLight[1] = 0.8 * parent->focusColor[1]; + lowLight[2] = 0.8 * parent->focusColor[2]; + lowLight[3] = 0.8 * parent->focusColor[3]; + LerpColor(parent->focusColor,lowLight,newColor,0.5+0.5*sin(DC->realTime / PULSE_DIVISOR)); + } else { + memcpy(&newColor, &item->window.foreColor, sizeof(vec4_t)); + } + + y = item->window.rect.y; + if (item->text) { + Item_Text_Paint(item); + x = item->textRect.x + item->textRect.w + 8; + } else { + x = item->window.rect.x; + } + DC->setColor(newColor); + DC->drawHandlePic( x, y, SLIDER_WIDTH, SLIDER_HEIGHT, DC->Assets.sliderBar ); + + x = Item_Slider_ThumbPosition(item); + DC->drawHandlePic( x - (SLIDER_THUMB_WIDTH / 2), y - 2, SLIDER_THUMB_WIDTH, SLIDER_THUMB_HEIGHT, DC->Assets.sliderThumb ); + +} + +void Item_Bind_Paint(itemDef_t *item) { + vec4_t newColor, lowLight; + float value; + int maxChars = 0; + menuDef_t *parent = (menuDef_t*)item->parent; + editFieldDef_t *editPtr = (editFieldDef_t*)item->typeData; + if (editPtr) { + maxChars = editPtr->maxPaintChars; + } + + value = (item->cvar) ? DC->getCVarValue(item->cvar) : 0; + + if (item->window.flags & WINDOW_HASFOCUS) { + if (g_bindItem == item) { + lowLight[0] = 0.8f * 1.0f; + lowLight[1] = 0.8f * 0.0f; + lowLight[2] = 0.8f * 0.0f; + lowLight[3] = 0.8f * 1.0f; + } else { + lowLight[0] = 0.8f * parent->focusColor[0]; + lowLight[1] = 0.8f * parent->focusColor[1]; + lowLight[2] = 0.8f * parent->focusColor[2]; + lowLight[3] = 0.8f * parent->focusColor[3]; + } + LerpColor(parent->focusColor,lowLight,newColor,0.5+0.5*sin(DC->realTime / PULSE_DIVISOR)); + } else { + memcpy(&newColor, &item->window.foreColor, sizeof(vec4_t)); + } + + if (item->text) { + Item_Text_Paint(item); + BindingFromName(item->cvar); + DC->drawText(item->textRect.x + item->textRect.w + 8, item->textRect.y, item->textscale, newColor, g_nameBind1, 0, maxChars, item->textStyle); + } else { + DC->drawText(item->textRect.x, item->textRect.y, item->textscale, newColor, (value != 0) ? "FIXME" : "FIXME", 0, maxChars, item->textStyle); + } +} + +qboolean Display_KeyBindPending() { + return g_waitingForKey; +} + +qboolean Item_Bind_HandleKey(itemDef_t *item, int key, qboolean down) { + int id; + int i; + + if (Rect_ContainsPoint(&item->window.rect, DC->cursorx, DC->cursory) && !g_waitingForKey) + { + if (down && (key == K_MOUSE1 || key == K_ENTER)) { + g_waitingForKey = qtrue; + g_bindItem = item; + } + return qtrue; + } + else + { + if (!g_waitingForKey || g_bindItem == NULL) { + return qtrue; + } + + if (key & K_CHAR_FLAG) { + return qtrue; + } + + switch (key) + { + case K_ESCAPE: + g_waitingForKey = qfalse; + return qtrue; + + case K_BACKSPACE: + id = BindingIDFromName(item->cvar); + if (id != -1) { + g_bindings[id].bind1 = -1; + g_bindings[id].bind2 = -1; + } + Controls_SetConfig(qtrue); + g_waitingForKey = qfalse; + g_bindItem = NULL; + return qtrue; + + case '`': + return qtrue; + } + } + + if (key != -1) + { + + for (i=0; i < g_bindCount; i++) + { + + if (g_bindings[i].bind2 == key) { + g_bindings[i].bind2 = -1; + } + + if (g_bindings[i].bind1 == key) + { + g_bindings[i].bind1 = g_bindings[i].bind2; + g_bindings[i].bind2 = -1; + } + } + } + + + id = BindingIDFromName(item->cvar); + + if (id != -1) { + if (key == -1) { + if( g_bindings[id].bind1 != -1 ) { + DC->setBinding( g_bindings[id].bind1, "" ); + g_bindings[id].bind1 = -1; + } + if( g_bindings[id].bind2 != -1 ) { + DC->setBinding( g_bindings[id].bind2, "" ); + g_bindings[id].bind2 = -1; + } + } + else if (g_bindings[id].bind1 == -1) { + g_bindings[id].bind1 = key; + } + else if (g_bindings[id].bind1 != key && g_bindings[id].bind2 == -1) { + g_bindings[id].bind2 = key; + } + else { + DC->setBinding( g_bindings[id].bind1, "" ); + DC->setBinding( g_bindings[id].bind2, "" ); + g_bindings[id].bind1 = key; + g_bindings[id].bind2 = -1; + } + } + + Controls_SetConfig(qtrue); + g_waitingForKey = qfalse; + + return qtrue; +} + + + +void AdjustFrom640(float *x, float *y, float *w, float *h) { + //*x = *x * DC->scale + DC->bias; + *x *= DC->xscale; + *y *= DC->yscale; + *w *= DC->xscale; + *h *= DC->yscale; +} + +void Item_Model_Paint(itemDef_t *item) { + float x, y, w, h; + refdef_t refdef; + refEntity_t ent; + vec3_t mins, maxs, origin; + vec3_t angles; + modelDef_t *modelPtr = (modelDef_t*)item->typeData; + + if (modelPtr == NULL) { + return; + } + + // setup the refdef + memset( &refdef, 0, sizeof( refdef ) ); + refdef.rdflags = RDF_NOWORLDMODEL; + AxisClear( refdef.viewaxis ); + x = item->window.rect.x+1; + y = item->window.rect.y+1; + w = item->window.rect.w-2; + h = item->window.rect.h-2; + + AdjustFrom640( &x, &y, &w, &h ); + + refdef.x = x; + refdef.y = y; + refdef.width = w; + refdef.height = h; + + DC->modelBounds( item->asset, mins, maxs ); + + origin[2] = -0.5 * ( mins[2] + maxs[2] ); + origin[1] = 0.5 * ( mins[1] + maxs[1] ); + + // calculate distance so the model nearly fills the box + if (qtrue) { + float len = 0.5 * ( maxs[2] - mins[2] ); + origin[0] = len / 0.268; // len / tan( fov/2 ) + //origin[0] = len / tan(w/2); + } else { + origin[0] = item->textscale; + } + refdef.fov_x = (modelPtr->fov_x) ? modelPtr->fov_x : w; + refdef.fov_y = (modelPtr->fov_y) ? modelPtr->fov_y : h; + + //refdef.fov_x = (int)((float)refdef.width / 640.0f * 90.0f); + //xx = refdef.width / tan( refdef.fov_x / 360 * M_PI ); + //refdef.fov_y = atan2( refdef.height, xx ); + //refdef.fov_y *= ( 360 / M_PI ); + + DC->clearScene(); + + refdef.time = DC->realTime; + + // add the model + + memset( &ent, 0, sizeof(ent) ); + + //adjust = 5.0 * sin( (float)uis.realtime / 500 ); + //adjust = 360 % (int)((float)uis.realtime / 1000); + //VectorSet( angles, 0, 0, 1 ); + + // use item storage to track + if (modelPtr->rotationSpeed) { + if (DC->realTime > item->window.nextTime) { + item->window.nextTime = DC->realTime + modelPtr->rotationSpeed; + modelPtr->angle = (int)(modelPtr->angle + 1) % 360; + } + } + VectorSet( angles, 0, modelPtr->angle, 0 ); + AnglesToAxis( angles, ent.axis ); + + ent.hModel = item->asset; + VectorCopy( origin, ent.origin ); + VectorCopy( origin, ent.lightingOrigin ); + ent.renderfx = RF_LIGHTING_ORIGIN | RF_NOSHADOW; + VectorCopy( ent.origin, ent.oldorigin ); + + DC->addRefEntityToScene( &ent ); + DC->renderScene( &refdef ); + +} + + +void Item_Image_Paint(itemDef_t *item) { + if (item == NULL) { + return; + } + DC->drawHandlePic(item->window.rect.x+1, item->window.rect.y+1, item->window.rect.w-2, item->window.rect.h-2, item->asset); +} + +void Item_ListBox_Paint(itemDef_t *item) { + float x, y, size, count, i, thumb; + qhandle_t image; + qhandle_t optionalImage; + listBoxDef_t *listPtr = (listBoxDef_t*)item->typeData; + + // the listbox is horizontal or vertical and has a fixed size scroll bar going either direction + // elements are enumerated from the DC and either text or image handles are acquired from the DC as well + // textscale is used to size the text, textalignx and textaligny are used to size image elements + // there is no clipping available so only the last completely visible item is painted + count = DC->feederCount(item->special); + // default is vertical if horizontal flag is not here + if (item->window.flags & WINDOW_HORIZONTAL) { + // draw scrollbar in bottom of the window + // bar + x = item->window.rect.x + 1; + y = item->window.rect.y + item->window.rect.h - SCROLLBAR_SIZE - 1; + DC->drawHandlePic(x, y, SCROLLBAR_SIZE, SCROLLBAR_SIZE, DC->Assets.scrollBarArrowLeft); + x += SCROLLBAR_SIZE - 1; + size = item->window.rect.w - (SCROLLBAR_SIZE * 2); + DC->drawHandlePic(x, y, size+1, SCROLLBAR_SIZE, DC->Assets.scrollBar); + x += size - 1; + DC->drawHandlePic(x, y, SCROLLBAR_SIZE, SCROLLBAR_SIZE, DC->Assets.scrollBarArrowRight); + // thumb + thumb = Item_ListBox_ThumbDrawPosition(item);//Item_ListBox_ThumbPosition(item); + if (thumb > x - SCROLLBAR_SIZE - 1) { + thumb = x - SCROLLBAR_SIZE - 1; + } + DC->drawHandlePic(thumb, y, SCROLLBAR_SIZE, SCROLLBAR_SIZE, DC->Assets.scrollBarThumb); + // + listPtr->endPos = listPtr->startPos; + size = item->window.rect.w - 2; + // items + // size contains max available space + if (listPtr->elementStyle == LISTBOX_IMAGE) { + // fit = 0; + x = item->window.rect.x + 1; + y = item->window.rect.y + 1; + for (i = listPtr->startPos; i < count; i++) { + // always draw at least one + // which may overdraw the box if it is too small for the element + image = DC->feederItemImage(item->special, i); + if (image) { + DC->drawHandlePic(x+1, y+1, listPtr->elementWidth - 2, listPtr->elementHeight - 2, image); + } + + if (i == item->cursorPos) { + DC->drawRect(x, y, listPtr->elementWidth-1, listPtr->elementHeight-1, item->window.borderSize, item->window.borderColor); + } + + size -= listPtr->elementWidth; + if (size < listPtr->elementWidth) { + listPtr->drawPadding = size; //listPtr->elementWidth - size; + break; + } + x += listPtr->elementWidth; + listPtr->endPos++; + // fit++; + } + } else { + // + } + } else { + // draw scrollbar to right side of the window + x = item->window.rect.x + item->window.rect.w - SCROLLBAR_SIZE - 1; + y = item->window.rect.y + 1; + DC->drawHandlePic(x, y, SCROLLBAR_SIZE, SCROLLBAR_SIZE, DC->Assets.scrollBarArrowUp); + y += SCROLLBAR_SIZE - 1; + + listPtr->endPos = listPtr->startPos; + size = item->window.rect.h - (SCROLLBAR_SIZE * 2); + DC->drawHandlePic(x, y, SCROLLBAR_SIZE, size+1, DC->Assets.scrollBar); + y += size - 1; + DC->drawHandlePic(x, y, SCROLLBAR_SIZE, SCROLLBAR_SIZE, DC->Assets.scrollBarArrowDown); + // thumb + thumb = Item_ListBox_ThumbDrawPosition(item);//Item_ListBox_ThumbPosition(item); + if (thumb > y - SCROLLBAR_SIZE - 1) { + thumb = y - SCROLLBAR_SIZE - 1; + } + DC->drawHandlePic(x, thumb, SCROLLBAR_SIZE, SCROLLBAR_SIZE, DC->Assets.scrollBarThumb); + + // adjust size for item painting + size = item->window.rect.h - 2; + if (listPtr->elementStyle == LISTBOX_IMAGE) { + // fit = 0; + x = item->window.rect.x + 1; + y = item->window.rect.y + 1; + for (i = listPtr->startPos; i < count; i++) { + // always draw at least one + // which may overdraw the box if it is too small for the element + image = DC->feederItemImage(item->special, i); + if (image) { + DC->drawHandlePic(x+1, y+1, listPtr->elementWidth - 2, listPtr->elementHeight - 2, image); + } + + if (i == item->cursorPos) { + DC->drawRect(x, y, listPtr->elementWidth - 1, listPtr->elementHeight - 1, item->window.borderSize, item->window.borderColor); + } + + listPtr->endPos++; + size -= listPtr->elementWidth; + if (size < listPtr->elementHeight) { + listPtr->drawPadding = listPtr->elementHeight - size; + break; + } + y += listPtr->elementHeight; + // fit++; + } + } else { + x = item->window.rect.x + 1; + y = item->window.rect.y + 1; + for (i = listPtr->startPos; i < count; i++) { + const char *text; + // always draw at least one + // which may overdraw the box if it is too small for the element + + if (listPtr->numColumns > 0) { + int j; + for (j = 0; j < listPtr->numColumns; j++) { + text = DC->feederItemText(item->special, i, j, &optionalImage); + if (optionalImage >= 0) { + DC->drawHandlePic(x + 4 + listPtr->columnInfo[j].pos, y - 1 + listPtr->elementHeight / 2, listPtr->columnInfo[j].width, listPtr->columnInfo[j].width, optionalImage); + } else if (text) { + DC->drawText(x + 4 + listPtr->columnInfo[j].pos, y + listPtr->elementHeight, item->textscale, item->window.foreColor, text, 0, listPtr->columnInfo[j].maxChars, item->textStyle); + } + } + } else { + text = DC->feederItemText(item->special, i, 0, &optionalImage); + if (optionalImage >= 0) { + //DC->drawHandlePic(x + 4 + listPtr->elementHeight, y, listPtr->columnInfo[j].width, listPtr->columnInfo[j].width, optionalImage); + } else if (text) { + DC->drawText(x + 4, y + listPtr->elementHeight, item->textscale, item->window.foreColor, text, 0, 0, item->textStyle); + } + } + + if (i == item->cursorPos) { + DC->fillRect(x + 2, y + 2, item->window.rect.w - SCROLLBAR_SIZE - 4, listPtr->elementHeight, item->window.outlineColor); + } + + size -= listPtr->elementHeight; + if (size < listPtr->elementHeight) { + listPtr->drawPadding = listPtr->elementHeight - size; + break; + } + listPtr->endPos++; + y += listPtr->elementHeight; + // fit++; + } + } + } +} + + +void Item_OwnerDraw_Paint(itemDef_t *item) { + menuDef_t *parent; + + if (item == NULL) { + return; + } + parent = (menuDef_t*)item->parent; + + if (DC->ownerDrawItem) { + vec4_t color, lowLight; + menuDef_t *parent = (menuDef_t*)item->parent; + Fade(&item->window.flags, &item->window.foreColor[3], parent->fadeClamp, &item->window.nextTime, parent->fadeCycle, qtrue, parent->fadeAmount); + memcpy(&color, &item->window.foreColor, sizeof(color)); + if (item->numColors > 0 && DC->getValue) { + // if the value is within one of the ranges then set color to that, otherwise leave at default + int i; + float f = DC->getValue(item->window.ownerDraw); + for (i = 0; i < item->numColors; i++) { + if (f >= item->colorRanges[i].low && f <= item->colorRanges[i].high) { + memcpy(&color, &item->colorRanges[i].color, sizeof(color)); + break; + } + } + } + + if (item->window.flags & WINDOW_HASFOCUS) { + lowLight[0] = 0.8 * parent->focusColor[0]; + lowLight[1] = 0.8 * parent->focusColor[1]; + lowLight[2] = 0.8 * parent->focusColor[2]; + lowLight[3] = 0.8 * parent->focusColor[3]; + LerpColor(parent->focusColor,lowLight,color,0.5+0.5*sin(DC->realTime / PULSE_DIVISOR)); + } else if (item->textStyle == ITEM_TEXTSTYLE_BLINK && !((DC->realTime/BLINK_DIVISOR) & 1)) { + lowLight[0] = 0.8 * item->window.foreColor[0]; + lowLight[1] = 0.8 * item->window.foreColor[1]; + lowLight[2] = 0.8 * item->window.foreColor[2]; + lowLight[3] = 0.8 * item->window.foreColor[3]; + LerpColor(item->window.foreColor,lowLight,color,0.5+0.5*sin(DC->realTime / PULSE_DIVISOR)); + } + + if (item->cvarFlags & (CVAR_ENABLE | CVAR_DISABLE) && !Item_EnableShowViaCvar(item, CVAR_ENABLE)) { + memcpy(color, parent->disableColor, sizeof(vec4_t)); // bk001207 - FIXME: Com_Memcpy + } + + if (item->text) { + Item_Text_Paint(item); + if (item->text[0]) { + // +8 is an offset kludge to properly align owner draw items that have text combined with them + DC->ownerDrawItem(item->textRect.x + item->textRect.w + 8, item->window.rect.y, item->window.rect.w, item->window.rect.h, 0, item->textaligny, item->window.ownerDraw, item->window.ownerDrawFlags, item->alignment, item->special, item->textscale, color, item->window.background, item->textStyle ); + } else { + DC->ownerDrawItem(item->textRect.x + item->textRect.w, item->window.rect.y, item->window.rect.w, item->window.rect.h, 0, item->textaligny, item->window.ownerDraw, item->window.ownerDrawFlags, item->alignment, item->special, item->textscale, color, item->window.background, item->textStyle ); + } + } else { + DC->ownerDrawItem(item->window.rect.x, item->window.rect.y, item->window.rect.w, item->window.rect.h, item->textalignx, item->textaligny, item->window.ownerDraw, item->window.ownerDrawFlags, item->alignment, item->special, item->textscale, color, item->window.background, item->textStyle ); + } + } +} + + +void Item_Paint(itemDef_t *item) { + vec4_t red; + menuDef_t *parent = (menuDef_t*)item->parent; + red[0] = red[3] = 1; + red[1] = red[2] = 0; + + if (item == NULL) { + return; + } + + if (item->window.flags & WINDOW_ORBITING) { + if (DC->realTime > item->window.nextTime) { + float rx, ry, a, c, s, w, h; + + item->window.nextTime = DC->realTime + item->window.offsetTime; + // translate + w = item->window.rectClient.w / 2; + h = item->window.rectClient.h / 2; + rx = item->window.rectClient.x + w - item->window.rectEffects.x; + ry = item->window.rectClient.y + h - item->window.rectEffects.y; + a = 3 * M_PI / 180; + c = cos(a); + s = sin(a); + item->window.rectClient.x = (rx * c - ry * s) + item->window.rectEffects.x - w; + item->window.rectClient.y = (rx * s + ry * c) + item->window.rectEffects.y - h; + Item_UpdatePosition(item); + + } + } + + + if (item->window.flags & WINDOW_INTRANSITION) { + if (DC->realTime > item->window.nextTime) { + int done = 0; + item->window.nextTime = DC->realTime + item->window.offsetTime; + // transition the x,y + if (item->window.rectClient.x == item->window.rectEffects.x) { + done++; + } else { + if (item->window.rectClient.x < item->window.rectEffects.x) { + item->window.rectClient.x += item->window.rectEffects2.x; + if (item->window.rectClient.x > item->window.rectEffects.x) { + item->window.rectClient.x = item->window.rectEffects.x; + done++; + } + } else { + item->window.rectClient.x -= item->window.rectEffects2.x; + if (item->window.rectClient.x < item->window.rectEffects.x) { + item->window.rectClient.x = item->window.rectEffects.x; + done++; + } + } + } + if (item->window.rectClient.y == item->window.rectEffects.y) { + done++; + } else { + if (item->window.rectClient.y < item->window.rectEffects.y) { + item->window.rectClient.y += item->window.rectEffects2.y; + if (item->window.rectClient.y > item->window.rectEffects.y) { + item->window.rectClient.y = item->window.rectEffects.y; + done++; + } + } else { + item->window.rectClient.y -= item->window.rectEffects2.y; + if (item->window.rectClient.y < item->window.rectEffects.y) { + item->window.rectClient.y = item->window.rectEffects.y; + done++; + } + } + } + if (item->window.rectClient.w == item->window.rectEffects.w) { + done++; + } else { + if (item->window.rectClient.w < item->window.rectEffects.w) { + item->window.rectClient.w += item->window.rectEffects2.w; + if (item->window.rectClient.w > item->window.rectEffects.w) { + item->window.rectClient.w = item->window.rectEffects.w; + done++; + } + } else { + item->window.rectClient.w -= item->window.rectEffects2.w; + if (item->window.rectClient.w < item->window.rectEffects.w) { + item->window.rectClient.w = item->window.rectEffects.w; + done++; + } + } + } + if (item->window.rectClient.h == item->window.rectEffects.h) { + done++; + } else { + if (item->window.rectClient.h < item->window.rectEffects.h) { + item->window.rectClient.h += item->window.rectEffects2.h; + if (item->window.rectClient.h > item->window.rectEffects.h) { + item->window.rectClient.h = item->window.rectEffects.h; + done++; + } + } else { + item->window.rectClient.h -= item->window.rectEffects2.h; + if (item->window.rectClient.h < item->window.rectEffects.h) { + item->window.rectClient.h = item->window.rectEffects.h; + done++; + } + } + } + + Item_UpdatePosition(item); + + if (done == 4) { + item->window.flags &= ~WINDOW_INTRANSITION; + } + + } + } + + if (item->window.ownerDrawFlags && DC->ownerDrawVisible) { + if (!DC->ownerDrawVisible(item->window.ownerDrawFlags)) { + item->window.flags &= ~WINDOW_VISIBLE; + } else { + item->window.flags |= WINDOW_VISIBLE; + } + } + + if (item->cvarFlags & (CVAR_SHOW | CVAR_HIDE)) { + if (!Item_EnableShowViaCvar(item, CVAR_SHOW)) { + return; + } + } + + if (item->window.flags & WINDOW_TIMEDVISIBLE) { + + } + + if (!(item->window.flags & WINDOW_VISIBLE)) { + return; + } + + // paint the rect first.. + Window_Paint(&item->window, parent->fadeAmount , parent->fadeClamp, parent->fadeCycle); + + if (debugMode) { + vec4_t color; + rectDef_t *r = Item_CorrectedTextRect(item); + color[1] = color[3] = 1; + color[0] = color[2] = 0; + DC->drawRect(r->x, r->y, r->w, r->h, 1, color); + } + + //DC->drawRect(item->window.rect.x, item->window.rect.y, item->window.rect.w, item->window.rect.h, 1, red); + + switch (item->type) { + case ITEM_TYPE_OWNERDRAW: + Item_OwnerDraw_Paint(item); + break; + case ITEM_TYPE_TEXT: + case ITEM_TYPE_BUTTON: + Item_Text_Paint(item); + break; + case ITEM_TYPE_RADIOBUTTON: + break; + case ITEM_TYPE_CHECKBOX: + break; + case ITEM_TYPE_EDITFIELD: + case ITEM_TYPE_NUMERICFIELD: + Item_TextField_Paint(item); + break; + case ITEM_TYPE_COMBO: + break; + case ITEM_TYPE_LISTBOX: + Item_ListBox_Paint(item); + break; + //case ITEM_TYPE_IMAGE: + // Item_Image_Paint(item); + // break; + case ITEM_TYPE_MODEL: + Item_Model_Paint(item); + break; + case ITEM_TYPE_YESNO: + Item_YesNo_Paint(item); + break; + case ITEM_TYPE_MULTI: + Item_Multi_Paint(item); + break; + case ITEM_TYPE_BIND: + Item_Bind_Paint(item); + break; + case ITEM_TYPE_SLIDER: + Item_Slider_Paint(item); + break; + default: + break; + } + +} + +void Menu_Init(menuDef_t *menu) { + memset(menu, 0, sizeof(menuDef_t)); + menu->cursorItem = -1; + menu->fadeAmount = DC->Assets.fadeAmount; + menu->fadeClamp = DC->Assets.fadeClamp; + menu->fadeCycle = DC->Assets.fadeCycle; + Window_Init(&menu->window); +} + +itemDef_t *Menu_GetFocusedItem(menuDef_t *menu) { + int i; + if (menu) { + for (i = 0; i < menu->itemCount; i++) { + if (menu->items[i]->window.flags & WINDOW_HASFOCUS) { + return menu->items[i]; + } + } + } + return NULL; +} + +menuDef_t *Menu_GetFocused() { + int i; + for (i = 0; i < menuCount; i++) { + if (Menus[i].window.flags & WINDOW_HASFOCUS && Menus[i].window.flags & WINDOW_VISIBLE) { + return &Menus[i]; + } + } + return NULL; +} + +void Menu_ScrollFeeder(menuDef_t *menu, int feeder, qboolean down) { + if (menu) { + int i; + for (i = 0; i < menu->itemCount; i++) { + if (menu->items[i]->special == feeder) { + Item_ListBox_HandleKey(menu->items[i], (down) ? K_DOWNARROW : K_UPARROW, qtrue, qtrue); + return; + } + } + } +} + + + +void Menu_SetFeederSelection(menuDef_t *menu, int feeder, int index, const char *name) { + if (menu == NULL) { + if (name == NULL) { + menu = Menu_GetFocused(); + } else { + menu = Menus_FindByName(name); + } + } + + if (menu) { + int i; + for (i = 0; i < menu->itemCount; i++) { + if (menu->items[i]->special == feeder) { + if (index == 0) { + listBoxDef_t *listPtr = (listBoxDef_t*)menu->items[i]->typeData; + listPtr->cursorPos = 0; + listPtr->startPos = 0; + } + menu->items[i]->cursorPos = index; + DC->feederSelection(menu->items[i]->special, menu->items[i]->cursorPos); + return; + } + } + } +} + +qboolean Menus_AnyFullScreenVisible() { + int i; + for (i = 0; i < menuCount; i++) { + if (Menus[i].window.flags & WINDOW_VISIBLE && Menus[i].fullScreen) { + return qtrue; + } + } + return qfalse; +} + +menuDef_t *Menus_ActivateByName(const char *p) { + int i; + menuDef_t *m = NULL; + menuDef_t *focus = Menu_GetFocused(); + for (i = 0; i < menuCount; i++) { + if (Q_stricmp(Menus[i].window.name, p) == 0) { + m = &Menus[i]; + Menus_Activate(m); + if (openMenuCount < MAX_OPEN_MENUS && focus != NULL) { + menuStack[openMenuCount++] = focus; + } + } else { + Menus[i].window.flags &= ~WINDOW_HASFOCUS; + } + } + Display_CloseCinematics(); + return m; +} + + +void Item_Init(itemDef_t *item) { + memset(item, 0, sizeof(itemDef_t)); + item->textscale = 0.55f; + Window_Init(&item->window); +} + +void Menu_HandleMouseMove(menuDef_t *menu, float x, float y) { + int i, pass; + qboolean focusSet = qfalse; + + itemDef_t *overItem; + if (menu == NULL) { + return; + } + + if (!(menu->window.flags & (WINDOW_VISIBLE | WINDOW_FORCED))) { + return; + } + + if (itemCapture) { + //Item_MouseMove(itemCapture, x, y); + return; + } + + if (g_waitingForKey || g_editingField) { + return; + } + + // FIXME: this is the whole issue of focus vs. mouse over.. + // need a better overall solution as i don't like going through everything twice + for (pass = 0; pass < 2; pass++) { + for (i = 0; i < menu->itemCount; i++) { + // turn off focus each item + // menu->items[i].window.flags &= ~WINDOW_HASFOCUS; + + if (!(menu->items[i]->window.flags & (WINDOW_VISIBLE | WINDOW_FORCED))) { + continue; + } + + // items can be enabled and disabled based on cvars + if (menu->items[i]->cvarFlags & (CVAR_ENABLE | CVAR_DISABLE) && !Item_EnableShowViaCvar(menu->items[i], CVAR_ENABLE)) { + continue; + } + + if (menu->items[i]->cvarFlags & (CVAR_SHOW | CVAR_HIDE) && !Item_EnableShowViaCvar(menu->items[i], CVAR_SHOW)) { + continue; + } + + + + if (Rect_ContainsPoint(&menu->items[i]->window.rect, x, y)) { + if (pass == 1) { + overItem = menu->items[i]; + if (overItem->type == ITEM_TYPE_TEXT && overItem->text) { + if (!Rect_ContainsPoint(Item_CorrectedTextRect(overItem), x, y)) { + continue; + } + } + // if we are over an item + if (IsVisible(overItem->window.flags)) { + // different one + Item_MouseEnter(overItem, x, y); + // Item_SetMouseOver(overItem, qtrue); + + // if item is not a decoration see if it can take focus + if (!focusSet) { + focusSet = Item_SetFocus(overItem, x, y); + } + } + } + } else if (menu->items[i]->window.flags & WINDOW_MOUSEOVER) { + Item_MouseLeave(menu->items[i]); + Item_SetMouseOver(menu->items[i], qfalse); + } + } + } + +} + +void Menu_Paint(menuDef_t *menu, qboolean forcePaint) { + int i; + + if (menu == NULL) { + return; + } + + if (!(menu->window.flags & WINDOW_VISIBLE) && !forcePaint) { + return; + } + + if (menu->window.ownerDrawFlags && DC->ownerDrawVisible && !DC->ownerDrawVisible(menu->window.ownerDrawFlags)) { + return; + } + + if (forcePaint) { + menu->window.flags |= WINDOW_FORCED; + } + + // draw the background if necessary + if (menu->fullScreen) { + // implies a background shader + // FIXME: make sure we have a default shader if fullscreen is set with no background + DC->drawHandlePic( 0, 0, SCREEN_WIDTH, SCREEN_HEIGHT, menu->window.background ); + } else if (menu->window.background) { + // this allows a background shader without being full screen + //UI_DrawHandlePic(menu->window.rect.x, menu->window.rect.y, menu->window.rect.w, menu->window.rect.h, menu->backgroundShader); + } + + // paint the background and or border + Window_Paint(&menu->window, menu->fadeAmount, menu->fadeClamp, menu->fadeCycle ); + + for (i = 0; i < menu->itemCount; i++) { + Item_Paint(menu->items[i]); + } + + if (debugMode) { + vec4_t color; + color[0] = color[2] = color[3] = 1; + color[1] = 0; + DC->drawRect(menu->window.rect.x, menu->window.rect.y, menu->window.rect.w, menu->window.rect.h, 1, color); + } +} + +/* +=============== +Item_ValidateTypeData +=============== +*/ +void Item_ValidateTypeData(itemDef_t *item) { + if (item->typeData) { + return; + } + + if (item->type == ITEM_TYPE_LISTBOX) { + item->typeData = UI_Alloc(sizeof(listBoxDef_t)); + memset(item->typeData, 0, sizeof(listBoxDef_t)); + } else if (item->type == ITEM_TYPE_EDITFIELD || item->type == ITEM_TYPE_NUMERICFIELD || item->type == ITEM_TYPE_YESNO || item->type == ITEM_TYPE_BIND || item->type == ITEM_TYPE_SLIDER || item->type == ITEM_TYPE_TEXT) { + item->typeData = UI_Alloc(sizeof(editFieldDef_t)); + memset(item->typeData, 0, sizeof(editFieldDef_t)); + if (item->type == ITEM_TYPE_EDITFIELD) { + if (!((editFieldDef_t *) item->typeData)->maxPaintChars) { + ((editFieldDef_t *) item->typeData)->maxPaintChars = MAX_EDITFIELD; + } + } + } else if (item->type == ITEM_TYPE_MULTI) { + item->typeData = UI_Alloc(sizeof(multiDef_t)); + } else if (item->type == ITEM_TYPE_MODEL) { + item->typeData = UI_Alloc(sizeof(modelDef_t)); + } +} + +/* +=============== +Keyword Hash +=============== +*/ + +#define KEYWORDHASH_SIZE 512 + +typedef struct keywordHash_s +{ + char *keyword; + qboolean (*func)(itemDef_t *item, int handle); + struct keywordHash_s *next; +} keywordHash_t; + +int KeywordHash_Key(char *keyword) { + int register hash, i; + + hash = 0; + for (i = 0; keyword[i] != '\0'; i++) { + if (keyword[i] >= 'A' && keyword[i] <= 'Z') + hash += (keyword[i] + ('a' - 'A')) * (119 + i); + else + hash += keyword[i] * (119 + i); + } + hash = (hash ^ (hash >> 10) ^ (hash >> 20)) & (KEYWORDHASH_SIZE-1); + return hash; +} + +void KeywordHash_Add(keywordHash_t *table[], keywordHash_t *key) { + int hash; + + hash = KeywordHash_Key(key->keyword); +/* + if (table[hash]) { + int collision = qtrue; + } +*/ + key->next = table[hash]; + table[hash] = key; +} + +keywordHash_t *KeywordHash_Find(keywordHash_t *table[], char *keyword) +{ + keywordHash_t *key; + int hash; + + hash = KeywordHash_Key(keyword); + for (key = table[hash]; key; key = key->next) { + if (!Q_stricmp(key->keyword, keyword)) + return key; + } + return NULL; +} + +/* +=============== +Item Keyword Parse functions +=============== +*/ + +// name +qboolean ItemParse_name( itemDef_t *item, int handle ) { + if (!PC_String_Parse(handle, &item->window.name)) { + return qfalse; + } + return qtrue; +} + +// name +qboolean ItemParse_focusSound( itemDef_t *item, int handle ) { + const char *temp; + if (!PC_String_Parse(handle, &temp)) { + return qfalse; + } + item->focusSound = DC->registerSound(temp, qfalse); + return qtrue; +} + + +// text +qboolean ItemParse_text( itemDef_t *item, int handle ) { + if (!PC_String_Parse(handle, &item->text)) { + return qfalse; + } + return qtrue; +} + +// group +qboolean ItemParse_group( itemDef_t *item, int handle ) { + if (!PC_String_Parse(handle, &item->window.group)) { + return qfalse; + } + return qtrue; +} + +// asset_model +qboolean ItemParse_asset_model( itemDef_t *item, int handle ) { + const char *temp; + modelDef_t *modelPtr; + Item_ValidateTypeData(item); + modelPtr = (modelDef_t*)item->typeData; + + if (!PC_String_Parse(handle, &temp)) { + return qfalse; + } + item->asset = DC->registerModel(temp); + modelPtr->angle = rand() % 360; + return qtrue; +} + +// asset_shader +qboolean ItemParse_asset_shader( itemDef_t *item, int handle ) { + const char *temp; + + if (!PC_String_Parse(handle, &temp)) { + return qfalse; + } + item->asset = DC->registerShaderNoMip(temp); + return qtrue; +} + +// model_origin +qboolean ItemParse_model_origin( itemDef_t *item, int handle ) { + modelDef_t *modelPtr; + Item_ValidateTypeData(item); + modelPtr = (modelDef_t*)item->typeData; + + if (PC_Float_Parse(handle, &modelPtr->origin[0])) { + if (PC_Float_Parse(handle, &modelPtr->origin[1])) { + if (PC_Float_Parse(handle, &modelPtr->origin[2])) { + return qtrue; + } + } + } + return qfalse; +} + +// model_fovx +qboolean ItemParse_model_fovx( itemDef_t *item, int handle ) { + modelDef_t *modelPtr; + Item_ValidateTypeData(item); + modelPtr = (modelDef_t*)item->typeData; + + if (!PC_Float_Parse(handle, &modelPtr->fov_x)) { + return qfalse; + } + return qtrue; +} + +// model_fovy +qboolean ItemParse_model_fovy( itemDef_t *item, int handle ) { + modelDef_t *modelPtr; + Item_ValidateTypeData(item); + modelPtr = (modelDef_t*)item->typeData; + + if (!PC_Float_Parse(handle, &modelPtr->fov_y)) { + return qfalse; + } + return qtrue; +} + +// model_rotation +qboolean ItemParse_model_rotation( itemDef_t *item, int handle ) { + modelDef_t *modelPtr; + Item_ValidateTypeData(item); + modelPtr = (modelDef_t*)item->typeData; + + if (!PC_Int_Parse(handle, &modelPtr->rotationSpeed)) { + return qfalse; + } + return qtrue; +} + +// model_angle +qboolean ItemParse_model_angle( itemDef_t *item, int handle ) { + modelDef_t *modelPtr; + Item_ValidateTypeData(item); + modelPtr = (modelDef_t*)item->typeData; + + if (!PC_Int_Parse(handle, &modelPtr->angle)) { + return qfalse; + } + return qtrue; +} + +// rect +qboolean ItemParse_rect( itemDef_t *item, int handle ) { + if (!PC_Rect_Parse(handle, &item->window.rectClient)) { + return qfalse; + } + return qtrue; +} + +// style +qboolean ItemParse_style( itemDef_t *item, int handle ) { + if (!PC_Int_Parse(handle, &item->window.style)) { + return qfalse; + } + return qtrue; +} + +// decoration +qboolean ItemParse_decoration( itemDef_t *item, int handle ) { + item->window.flags |= WINDOW_DECORATION; + return qtrue; +} + +// notselectable +qboolean ItemParse_notselectable( itemDef_t *item, int handle ) { + listBoxDef_t *listPtr; + Item_ValidateTypeData(item); + listPtr = (listBoxDef_t*)item->typeData; + if (item->type == ITEM_TYPE_LISTBOX && listPtr) { + listPtr->notselectable = qtrue; + } + return qtrue; +} + +// manually wrapped +qboolean ItemParse_wrapped( itemDef_t *item, int handle ) { + item->window.flags |= WINDOW_WRAPPED; + return qtrue; +} + +// auto wrapped +qboolean ItemParse_autowrapped( itemDef_t *item, int handle ) { + item->window.flags |= WINDOW_AUTOWRAPPED; + return qtrue; +} + + +// horizontalscroll +qboolean ItemParse_horizontalscroll( itemDef_t *item, int handle ) { + item->window.flags |= WINDOW_HORIZONTAL; + return qtrue; +} + +// type +qboolean ItemParse_type( itemDef_t *item, int handle ) { + if (!PC_Int_Parse(handle, &item->type)) { + return qfalse; + } + Item_ValidateTypeData(item); + return qtrue; +} + +// elementwidth, used for listbox image elements +// uses textalignx for storage +qboolean ItemParse_elementwidth( itemDef_t *item, int handle ) { + listBoxDef_t *listPtr; + + Item_ValidateTypeData(item); + listPtr = (listBoxDef_t*)item->typeData; + if (!PC_Float_Parse(handle, &listPtr->elementWidth)) { + return qfalse; + } + return qtrue; +} + +// elementheight, used for listbox image elements +// uses textaligny for storage +qboolean ItemParse_elementheight( itemDef_t *item, int handle ) { + listBoxDef_t *listPtr; + + Item_ValidateTypeData(item); + listPtr = (listBoxDef_t*)item->typeData; + if (!PC_Float_Parse(handle, &listPtr->elementHeight)) { + return qfalse; + } + return qtrue; +} + +// feeder +qboolean ItemParse_feeder( itemDef_t *item, int handle ) { + if (!PC_Float_Parse(handle, &item->special)) { + return qfalse; + } + return qtrue; +} + +// elementtype, used to specify what type of elements a listbox contains +// uses textstyle for storage +qboolean ItemParse_elementtype( itemDef_t *item, int handle ) { + listBoxDef_t *listPtr; + + Item_ValidateTypeData(item); + if (!item->typeData) + return qfalse; + listPtr = (listBoxDef_t*)item->typeData; + if (!PC_Int_Parse(handle, &listPtr->elementStyle)) { + return qfalse; + } + return qtrue; +} + +// columns sets a number of columns and an x pos and width per.. +qboolean ItemParse_columns( itemDef_t *item, int handle ) { + int num, i; + listBoxDef_t *listPtr; + + Item_ValidateTypeData(item); + if (!item->typeData) + return qfalse; + listPtr = (listBoxDef_t*)item->typeData; + if (PC_Int_Parse(handle, &num)) { + if (num > MAX_LB_COLUMNS) { + num = MAX_LB_COLUMNS; + } + listPtr->numColumns = num; + for (i = 0; i < num; i++) { + int pos, width, maxChars; + + if (PC_Int_Parse(handle, &pos) && PC_Int_Parse(handle, &width) && PC_Int_Parse(handle, &maxChars)) { + listPtr->columnInfo[i].pos = pos; + listPtr->columnInfo[i].width = width; + listPtr->columnInfo[i].maxChars = maxChars; + } else { + return qfalse; + } + } + } else { + return qfalse; + } + return qtrue; +} + +qboolean ItemParse_border( itemDef_t *item, int handle ) { + if (!PC_Int_Parse(handle, &item->window.border)) { + return qfalse; + } + return qtrue; +} + +qboolean ItemParse_bordersize( itemDef_t *item, int handle ) { + if (!PC_Float_Parse(handle, &item->window.borderSize)) { + return qfalse; + } + return qtrue; +} + +qboolean ItemParse_visible( itemDef_t *item, int handle ) { + int i; + + if (!PC_Int_Parse(handle, &i)) { + return qfalse; + } + if (i) { + item->window.flags |= WINDOW_VISIBLE; + } + return qtrue; +} + +qboolean ItemParse_ownerdraw( itemDef_t *item, int handle ) { + if (!PC_Int_Parse(handle, &item->window.ownerDraw)) { + return qfalse; + } + item->type = ITEM_TYPE_OWNERDRAW; + return qtrue; +} + +qboolean ItemParse_align( itemDef_t *item, int handle ) { + if (!PC_Int_Parse(handle, &item->alignment)) { + return qfalse; + } + return qtrue; +} + +qboolean ItemParse_textalign( itemDef_t *item, int handle ) { + if (!PC_Int_Parse(handle, &item->textalignment)) { + return qfalse; + } + return qtrue; +} + +qboolean ItemParse_textalignx( itemDef_t *item, int handle ) { + if (!PC_Float_Parse(handle, &item->textalignx)) { + return qfalse; + } + return qtrue; +} + +qboolean ItemParse_textaligny( itemDef_t *item, int handle ) { + if (!PC_Float_Parse(handle, &item->textaligny)) { + return qfalse; + } + return qtrue; +} + +qboolean ItemParse_textscale( itemDef_t *item, int handle ) { + if (!PC_Float_Parse(handle, &item->textscale)) { + return qfalse; + } + return qtrue; +} + +qboolean ItemParse_textstyle( itemDef_t *item, int handle ) { + if (!PC_Int_Parse(handle, &item->textStyle)) { + return qfalse; + } + return qtrue; +} + +qboolean ItemParse_backcolor( itemDef_t *item, int handle ) { + int i; + float f; + + for (i = 0; i < 4; i++) { + if (!PC_Float_Parse(handle, &f)) { + return qfalse; + } + item->window.backColor[i] = f; + } + return qtrue; +} + +qboolean ItemParse_forecolor( itemDef_t *item, int handle ) { + int i; + float f; + + for (i = 0; i < 4; i++) { + if (!PC_Float_Parse(handle, &f)) { + return qfalse; + } + item->window.foreColor[i] = f; + item->window.flags |= WINDOW_FORECOLORSET; + } + return qtrue; +} + +qboolean ItemParse_bordercolor( itemDef_t *item, int handle ) { + int i; + float f; + + for (i = 0; i < 4; i++) { + if (!PC_Float_Parse(handle, &f)) { + return qfalse; + } + item->window.borderColor[i] = f; + } + return qtrue; +} + +qboolean ItemParse_outlinecolor( itemDef_t *item, int handle ) { + if (!PC_Color_Parse(handle, &item->window.outlineColor)){ + return qfalse; + } + return qtrue; +} + +qboolean ItemParse_background( itemDef_t *item, int handle ) { + const char *temp; + + if (!PC_String_Parse(handle, &temp)) { + return qfalse; + } + item->window.background = DC->registerShaderNoMip(temp); + return qtrue; +} + +qboolean ItemParse_cinematic( itemDef_t *item, int handle ) { + if (!PC_String_Parse(handle, &item->window.cinematicName)) { + return qfalse; + } + return qtrue; +} + +qboolean ItemParse_doubleClick( itemDef_t *item, int handle ) { + listBoxDef_t *listPtr; + + Item_ValidateTypeData(item); + if (!item->typeData) { + return qfalse; + } + + listPtr = (listBoxDef_t*)item->typeData; + + if (!PC_Script_Parse(handle, &listPtr->doubleClick)) { + return qfalse; + } + return qtrue; +} + +qboolean ItemParse_onFocus( itemDef_t *item, int handle ) { + if (!PC_Script_Parse(handle, &item->onFocus)) { + return qfalse; + } + return qtrue; +} + +qboolean ItemParse_leaveFocus( itemDef_t *item, int handle ) { + if (!PC_Script_Parse(handle, &item->leaveFocus)) { + return qfalse; + } + return qtrue; +} + +qboolean ItemParse_mouseEnter( itemDef_t *item, int handle ) { + if (!PC_Script_Parse(handle, &item->mouseEnter)) { + return qfalse; + } + return qtrue; +} + +qboolean ItemParse_mouseExit( itemDef_t *item, int handle ) { + if (!PC_Script_Parse(handle, &item->mouseExit)) { + return qfalse; + } + return qtrue; +} + +qboolean ItemParse_mouseEnterText( itemDef_t *item, int handle ) { + if (!PC_Script_Parse(handle, &item->mouseEnterText)) { + return qfalse; + } + return qtrue; +} + +qboolean ItemParse_mouseExitText( itemDef_t *item, int handle ) { + if (!PC_Script_Parse(handle, &item->mouseExitText)) { + return qfalse; + } + return qtrue; +} + +qboolean ItemParse_action( itemDef_t *item, int handle ) { + if (!PC_Script_Parse(handle, &item->action)) { + return qfalse; + } + return qtrue; +} + +qboolean ItemParse_special( itemDef_t *item, int handle ) { + if (!PC_Float_Parse(handle, &item->special)) { + return qfalse; + } + return qtrue; +} + +qboolean ItemParse_cvarTest( itemDef_t *item, int handle ) { + if (!PC_String_Parse(handle, &item->cvarTest)) { + return qfalse; + } + return qtrue; +} + +qboolean ItemParse_cvar( itemDef_t *item, int handle ) { + editFieldDef_t *editPtr; + + Item_ValidateTypeData(item); + if (!PC_String_Parse(handle, &item->cvar)) { + return qfalse; + } + if (item->typeData) { + editPtr = (editFieldDef_t*)item->typeData; + editPtr->minVal = -1; + editPtr->maxVal = -1; + editPtr->defVal = -1; + } + return qtrue; +} + +qboolean ItemParse_maxChars( itemDef_t *item, int handle ) { + editFieldDef_t *editPtr; + int maxChars; + + Item_ValidateTypeData(item); + if (!item->typeData) + return qfalse; + + if (!PC_Int_Parse(handle, &maxChars)) { + return qfalse; + } + editPtr = (editFieldDef_t*)item->typeData; + editPtr->maxChars = maxChars; + return qtrue; +} + +qboolean ItemParse_maxPaintChars( itemDef_t *item, int handle ) { + editFieldDef_t *editPtr; + int maxChars; + + Item_ValidateTypeData(item); + if (!item->typeData) + return qfalse; + + if (!PC_Int_Parse(handle, &maxChars)) { + return qfalse; + } + editPtr = (editFieldDef_t*)item->typeData; + editPtr->maxPaintChars = maxChars; + return qtrue; +} + + + +qboolean ItemParse_cvarFloat( itemDef_t *item, int handle ) { + editFieldDef_t *editPtr; + + Item_ValidateTypeData(item); + if (!item->typeData) + return qfalse; + editPtr = (editFieldDef_t*)item->typeData; + if (PC_String_Parse(handle, &item->cvar) && + PC_Float_Parse(handle, &editPtr->defVal) && + PC_Float_Parse(handle, &editPtr->minVal) && + PC_Float_Parse(handle, &editPtr->maxVal)) { + return qtrue; + } + return qfalse; +} + +qboolean ItemParse_cvarStrList( itemDef_t *item, int handle ) { + pc_token_t token; + multiDef_t *multiPtr; + int pass; + + Item_ValidateTypeData(item); + if (!item->typeData) + return qfalse; + multiPtr = (multiDef_t*)item->typeData; + multiPtr->count = 0; + multiPtr->strDef = qtrue; + + if (!trap_PC_ReadToken(handle, &token)) + return qfalse; + if (*token.string != '{') { + return qfalse; + } + + pass = 0; + while ( 1 ) { + if (!trap_PC_ReadToken(handle, &token)) { + PC_SourceError(handle, "end of file inside menu item\n"); + return qfalse; + } + + if (*token.string == '}') { + return qtrue; + } + + if (*token.string == ',' || *token.string == ';') { + continue; + } + + if (pass == 0) { + multiPtr->cvarList[multiPtr->count] = String_Alloc(token.string); + pass = 1; + } else { + multiPtr->cvarStr[multiPtr->count] = String_Alloc(token.string); + pass = 0; + multiPtr->count++; + if (multiPtr->count >= MAX_MULTI_CVARS) { + return qfalse; + } + } + + } + return qfalse; // bk001205 - LCC missing return value +} + +qboolean ItemParse_cvarFloatList( itemDef_t *item, int handle ) { + pc_token_t token; + multiDef_t *multiPtr; + + Item_ValidateTypeData(item); + if (!item->typeData) + return qfalse; + multiPtr = (multiDef_t*)item->typeData; + multiPtr->count = 0; + multiPtr->strDef = qfalse; + + if (!trap_PC_ReadToken(handle, &token)) + return qfalse; + if (*token.string != '{') { + return qfalse; + } + + while ( 1 ) { + if (!trap_PC_ReadToken(handle, &token)) { + PC_SourceError(handle, "end of file inside menu item\n"); + return qfalse; + } + + if (*token.string == '}') { + return qtrue; + } + + if (*token.string == ',' || *token.string == ';') { + continue; + } + + multiPtr->cvarList[multiPtr->count] = String_Alloc(token.string); + if (!PC_Float_Parse(handle, &multiPtr->cvarValue[multiPtr->count])) { + return qfalse; + } + + multiPtr->count++; + if (multiPtr->count >= MAX_MULTI_CVARS) { + return qfalse; + } + + } + return qfalse; // bk001205 - LCC missing return value +} + + + +qboolean ItemParse_addColorRange( itemDef_t *item, int handle ) { + colorRangeDef_t color; + + if (PC_Float_Parse(handle, &color.low) && + PC_Float_Parse(handle, &color.high) && + PC_Color_Parse(handle, &color.color) ) { + if (item->numColors < MAX_COLOR_RANGES) { + memcpy(&item->colorRanges[item->numColors], &color, sizeof(color)); + item->numColors++; + } + return qtrue; + } + return qfalse; +} + +qboolean ItemParse_ownerdrawFlag( itemDef_t *item, int handle ) { + int i; + if (!PC_Int_Parse(handle, &i)) { + return qfalse; + } + item->window.ownerDrawFlags |= i; + return qtrue; +} + +qboolean ItemParse_enableCvar( itemDef_t *item, int handle ) { + if (PC_Script_Parse(handle, &item->enableCvar)) { + item->cvarFlags = CVAR_ENABLE; + return qtrue; + } + return qfalse; +} + +qboolean ItemParse_disableCvar( itemDef_t *item, int handle ) { + if (PC_Script_Parse(handle, &item->enableCvar)) { + item->cvarFlags = CVAR_DISABLE; + return qtrue; + } + return qfalse; +} + +qboolean ItemParse_showCvar( itemDef_t *item, int handle ) { + if (PC_Script_Parse(handle, &item->enableCvar)) { + item->cvarFlags = CVAR_SHOW; + return qtrue; + } + return qfalse; +} + +qboolean ItemParse_hideCvar( itemDef_t *item, int handle ) { + if (PC_Script_Parse(handle, &item->enableCvar)) { + item->cvarFlags = CVAR_HIDE; + return qtrue; + } + return qfalse; +} + + +keywordHash_t itemParseKeywords[] = { + {"name", ItemParse_name, NULL}, + {"text", ItemParse_text, NULL}, + {"group", ItemParse_group, NULL}, + {"asset_model", ItemParse_asset_model, NULL}, + {"asset_shader", ItemParse_asset_shader, NULL}, + {"model_origin", ItemParse_model_origin, NULL}, + {"model_fovx", ItemParse_model_fovx, NULL}, + {"model_fovy", ItemParse_model_fovy, NULL}, + {"model_rotation", ItemParse_model_rotation, NULL}, + {"model_angle", ItemParse_model_angle, NULL}, + {"rect", ItemParse_rect, NULL}, + {"style", ItemParse_style, NULL}, + {"decoration", ItemParse_decoration, NULL}, + {"notselectable", ItemParse_notselectable, NULL}, + {"wrapped", ItemParse_wrapped, NULL}, + {"autowrapped", ItemParse_autowrapped, NULL}, + {"horizontalscroll", ItemParse_horizontalscroll, NULL}, + {"type", ItemParse_type, NULL}, + {"elementwidth", ItemParse_elementwidth, NULL}, + {"elementheight", ItemParse_elementheight, NULL}, + {"feeder", ItemParse_feeder, NULL}, + {"elementtype", ItemParse_elementtype, NULL}, + {"columns", ItemParse_columns, NULL}, + {"border", ItemParse_border, NULL}, + {"bordersize", ItemParse_bordersize, NULL}, + {"visible", ItemParse_visible, NULL}, + {"ownerdraw", ItemParse_ownerdraw, NULL}, + {"align", ItemParse_align, NULL}, + {"textalign", ItemParse_textalign, NULL}, + {"textalignx", ItemParse_textalignx, NULL}, + {"textaligny", ItemParse_textaligny, NULL}, + {"textscale", ItemParse_textscale, NULL}, + {"textstyle", ItemParse_textstyle, NULL}, + {"backcolor", ItemParse_backcolor, NULL}, + {"forecolor", ItemParse_forecolor, NULL}, + {"bordercolor", ItemParse_bordercolor, NULL}, + {"outlinecolor", ItemParse_outlinecolor, NULL}, + {"background", ItemParse_background, NULL}, + {"onFocus", ItemParse_onFocus, NULL}, + {"leaveFocus", ItemParse_leaveFocus, NULL}, + {"mouseEnter", ItemParse_mouseEnter, NULL}, + {"mouseExit", ItemParse_mouseExit, NULL}, + {"mouseEnterText", ItemParse_mouseEnterText, NULL}, + {"mouseExitText", ItemParse_mouseExitText, NULL}, + {"action", ItemParse_action, NULL}, + {"special", ItemParse_special, NULL}, + {"cvar", ItemParse_cvar, NULL}, + {"maxChars", ItemParse_maxChars, NULL}, + {"maxPaintChars", ItemParse_maxPaintChars, NULL}, + {"focusSound", ItemParse_focusSound, NULL}, + {"cvarFloat", ItemParse_cvarFloat, NULL}, + {"cvarStrList", ItemParse_cvarStrList, NULL}, + {"cvarFloatList", ItemParse_cvarFloatList, NULL}, + {"addColorRange", ItemParse_addColorRange, NULL}, + {"ownerdrawFlag", ItemParse_ownerdrawFlag, NULL}, + {"enableCvar", ItemParse_enableCvar, NULL}, + {"cvarTest", ItemParse_cvarTest, NULL}, + {"disableCvar", ItemParse_disableCvar, NULL}, + {"showCvar", ItemParse_showCvar, NULL}, + {"hideCvar", ItemParse_hideCvar, NULL}, + {"cinematic", ItemParse_cinematic, NULL}, + {"doubleclick", ItemParse_doubleClick, NULL}, + {NULL, NULL, NULL} +}; + +keywordHash_t *itemParseKeywordHash[KEYWORDHASH_SIZE]; + +/* +=============== +Item_SetupKeywordHash +=============== +*/ +void Item_SetupKeywordHash(void) { + int i; + + memset(itemParseKeywordHash, 0, sizeof(itemParseKeywordHash)); + for (i = 0; itemParseKeywords[i].keyword; i++) { + KeywordHash_Add(itemParseKeywordHash, &itemParseKeywords[i]); + } +} + +/* +=============== +Item_Parse +=============== +*/ +qboolean Item_Parse(int handle, itemDef_t *item) { + pc_token_t token; + keywordHash_t *key; + + + if (!trap_PC_ReadToken(handle, &token)) + return qfalse; + if (*token.string != '{') { + return qfalse; + } + while ( 1 ) { + if (!trap_PC_ReadToken(handle, &token)) { + PC_SourceError(handle, "end of file inside menu item\n"); + return qfalse; + } + + if (*token.string == '}') { + return qtrue; + } + + key = KeywordHash_Find(itemParseKeywordHash, token.string); + if (!key) { + PC_SourceError(handle, "unknown menu item keyword %s", token.string); + continue; + } + if ( !key->func(item, handle) ) { + PC_SourceError(handle, "couldn't parse menu item keyword %s", token.string); + return qfalse; + } + } + return qfalse; // bk001205 - LCC missing return value +} + + +// Item_InitControls +// init's special control types +void Item_InitControls(itemDef_t *item) { + if (item == NULL) { + return; + } + if (item->type == ITEM_TYPE_LISTBOX) { + listBoxDef_t *listPtr = (listBoxDef_t*)item->typeData; + item->cursorPos = 0; + if (listPtr) { + listPtr->cursorPos = 0; + listPtr->startPos = 0; + listPtr->endPos = 0; + listPtr->cursorPos = 0; + } + } +} + +/* +=============== +Menu Keyword Parse functions +=============== +*/ + +qboolean MenuParse_font( itemDef_t *item, int handle ) { + menuDef_t *menu = (menuDef_t*)item; + if (!PC_String_Parse(handle, &menu->font)) { + return qfalse; + } + if (!DC->Assets.fontRegistered) { + DC->registerFont(menu->font, 48, &DC->Assets.textFont); + DC->Assets.fontRegistered = qtrue; + } + return qtrue; +} + +qboolean MenuParse_name( itemDef_t *item, int handle ) { + menuDef_t *menu = (menuDef_t*)item; + if (!PC_String_Parse(handle, &menu->window.name)) { + return qfalse; + } + if (Q_stricmp(menu->window.name, "main") == 0) { + // default main as having focus + //menu->window.flags |= WINDOW_HASFOCUS; + } + return qtrue; +} + +qboolean MenuParse_fullscreen( itemDef_t *item, int handle ) { + menuDef_t *menu = (menuDef_t*)item; + if (!PC_Int_Parse(handle, (int*) &menu->fullScreen)) { // bk001206 - cast qboolean + return qfalse; + } + return qtrue; +} + +qboolean MenuParse_rect( itemDef_t *item, int handle ) { + menuDef_t *menu = (menuDef_t*)item; + if (!PC_Rect_Parse(handle, &menu->window.rect)) { + return qfalse; + } + return qtrue; +} + +qboolean MenuParse_style( itemDef_t *item, int handle ) { + menuDef_t *menu = (menuDef_t*)item; + if (!PC_Int_Parse(handle, &menu->window.style)) { + return qfalse; + } + return qtrue; +} + +qboolean MenuParse_visible( itemDef_t *item, int handle ) { + int i; + menuDef_t *menu = (menuDef_t*)item; + + if (!PC_Int_Parse(handle, &i)) { + return qfalse; + } + if (i) { + menu->window.flags |= WINDOW_VISIBLE; + } + return qtrue; +} + +qboolean MenuParse_onOpen( itemDef_t *item, int handle ) { + menuDef_t *menu = (menuDef_t*)item; + if (!PC_Script_Parse(handle, &menu->onOpen)) { + return qfalse; + } + return qtrue; +} + +qboolean MenuParse_onClose( itemDef_t *item, int handle ) { + menuDef_t *menu = (menuDef_t*)item; + if (!PC_Script_Parse(handle, &menu->onClose)) { + return qfalse; + } + return qtrue; +} + +qboolean MenuParse_onESC( itemDef_t *item, int handle ) { + menuDef_t *menu = (menuDef_t*)item; + if (!PC_Script_Parse(handle, &menu->onESC)) { + return qfalse; + } + return qtrue; +} + + + +qboolean MenuParse_border( itemDef_t *item, int handle ) { + menuDef_t *menu = (menuDef_t*)item; + if (!PC_Int_Parse(handle, &menu->window.border)) { + return qfalse; + } + return qtrue; +} + +qboolean MenuParse_borderSize( itemDef_t *item, int handle ) { + menuDef_t *menu = (menuDef_t*)item; + if (!PC_Float_Parse(handle, &menu->window.borderSize)) { + return qfalse; + } + return qtrue; +} + +qboolean MenuParse_backcolor( itemDef_t *item, int handle ) { + int i; + float f; + menuDef_t *menu = (menuDef_t*)item; + + for (i = 0; i < 4; i++) { + if (!PC_Float_Parse(handle, &f)) { + return qfalse; + } + menu->window.backColor[i] = f; + } + return qtrue; +} + +qboolean MenuParse_forecolor( itemDef_t *item, int handle ) { + int i; + float f; + menuDef_t *menu = (menuDef_t*)item; + + for (i = 0; i < 4; i++) { + if (!PC_Float_Parse(handle, &f)) { + return qfalse; + } + menu->window.foreColor[i] = f; + menu->window.flags |= WINDOW_FORECOLORSET; + } + return qtrue; +} + +qboolean MenuParse_bordercolor( itemDef_t *item, int handle ) { + int i; + float f; + menuDef_t *menu = (menuDef_t*)item; + + for (i = 0; i < 4; i++) { + if (!PC_Float_Parse(handle, &f)) { + return qfalse; + } + menu->window.borderColor[i] = f; + } + return qtrue; +} + +qboolean MenuParse_focuscolor( itemDef_t *item, int handle ) { + int i; + float f; + menuDef_t *menu = (menuDef_t*)item; + + for (i = 0; i < 4; i++) { + if (!PC_Float_Parse(handle, &f)) { + return qfalse; + } + menu->focusColor[i] = f; + } + return qtrue; +} + +qboolean MenuParse_disablecolor( itemDef_t *item, int handle ) { + int i; + float f; + menuDef_t *menu = (menuDef_t*)item; + for (i = 0; i < 4; i++) { + if (!PC_Float_Parse(handle, &f)) { + return qfalse; + } + menu->disableColor[i] = f; + } + return qtrue; +} + + +qboolean MenuParse_outlinecolor( itemDef_t *item, int handle ) { + menuDef_t *menu = (menuDef_t*)item; + if (!PC_Color_Parse(handle, &menu->window.outlineColor)){ + return qfalse; + } + return qtrue; +} + +qboolean MenuParse_background( itemDef_t *item, int handle ) { + const char *buff; + menuDef_t *menu = (menuDef_t*)item; + + if (!PC_String_Parse(handle, &buff)) { + return qfalse; + } + menu->window.background = DC->registerShaderNoMip(buff); + return qtrue; +} + +qboolean MenuParse_cinematic( itemDef_t *item, int handle ) { + menuDef_t *menu = (menuDef_t*)item; + + if (!PC_String_Parse(handle, &menu->window.cinematicName)) { + return qfalse; + } + return qtrue; +} + +qboolean MenuParse_ownerdrawFlag( itemDef_t *item, int handle ) { + int i; + menuDef_t *menu = (menuDef_t*)item; + + if (!PC_Int_Parse(handle, &i)) { + return qfalse; + } + menu->window.ownerDrawFlags |= i; + return qtrue; +} + +qboolean MenuParse_ownerdraw( itemDef_t *item, int handle ) { + menuDef_t *menu = (menuDef_t*)item; + + if (!PC_Int_Parse(handle, &menu->window.ownerDraw)) { + return qfalse; + } + return qtrue; +} + + +// decoration +qboolean MenuParse_popup( itemDef_t *item, int handle ) { + menuDef_t *menu = (menuDef_t*)item; + menu->window.flags |= WINDOW_POPUP; + return qtrue; +} + + +qboolean MenuParse_outOfBounds( itemDef_t *item, int handle ) { + menuDef_t *menu = (menuDef_t*)item; + + menu->window.flags |= WINDOW_OOB_CLICK; + return qtrue; +} + +qboolean MenuParse_soundLoop( itemDef_t *item, int handle ) { + menuDef_t *menu = (menuDef_t*)item; + + if (!PC_String_Parse(handle, &menu->soundName)) { + return qfalse; + } + return qtrue; +} + +qboolean MenuParse_fadeClamp( itemDef_t *item, int handle ) { + menuDef_t *menu = (menuDef_t*)item; + + if (!PC_Float_Parse(handle, &menu->fadeClamp)) { + return qfalse; + } + return qtrue; +} + +qboolean MenuParse_fadeAmount( itemDef_t *item, int handle ) { + menuDef_t *menu = (menuDef_t*)item; + + if (!PC_Float_Parse(handle, &menu->fadeAmount)) { + return qfalse; + } + return qtrue; +} + + +qboolean MenuParse_fadeCycle( itemDef_t *item, int handle ) { + menuDef_t *menu = (menuDef_t*)item; + + if (!PC_Int_Parse(handle, &menu->fadeCycle)) { + return qfalse; + } + return qtrue; +} + + +qboolean MenuParse_itemDef( itemDef_t *item, int handle ) { + menuDef_t *menu = (menuDef_t*)item; + if (menu->itemCount < MAX_MENUITEMS) { + menu->items[menu->itemCount] = UI_Alloc(sizeof(itemDef_t)); + Item_Init(menu->items[menu->itemCount]); + if (!Item_Parse(handle, menu->items[menu->itemCount])) { + return qfalse; + } + Item_InitControls(menu->items[menu->itemCount]); + menu->items[menu->itemCount++]->parent = menu; + } + return qtrue; +} + +keywordHash_t menuParseKeywords[] = { + {"font", MenuParse_font, NULL}, + {"name", MenuParse_name, NULL}, + {"fullscreen", MenuParse_fullscreen, NULL}, + {"rect", MenuParse_rect, NULL}, + {"style", MenuParse_style, NULL}, + {"visible", MenuParse_visible, NULL}, + {"onOpen", MenuParse_onOpen, NULL}, + {"onClose", MenuParse_onClose, NULL}, + {"onESC", MenuParse_onESC, NULL}, + {"border", MenuParse_border, NULL}, + {"borderSize", MenuParse_borderSize, NULL}, + {"backcolor", MenuParse_backcolor, NULL}, + {"forecolor", MenuParse_forecolor, NULL}, + {"bordercolor", MenuParse_bordercolor, NULL}, + {"focuscolor", MenuParse_focuscolor, NULL}, + {"disablecolor", MenuParse_disablecolor, NULL}, + {"outlinecolor", MenuParse_outlinecolor, NULL}, + {"background", MenuParse_background, NULL}, + {"ownerdraw", MenuParse_ownerdraw, NULL}, + {"ownerdrawFlag", MenuParse_ownerdrawFlag, NULL}, + {"outOfBoundsClick", MenuParse_outOfBounds, NULL}, + {"soundLoop", MenuParse_soundLoop, NULL}, + {"itemDef", MenuParse_itemDef, NULL}, + {"cinematic", MenuParse_cinematic, NULL}, + {"popup", MenuParse_popup, NULL}, + {"fadeClamp", MenuParse_fadeClamp, NULL}, + {"fadeCycle", MenuParse_fadeCycle, NULL}, + {"fadeAmount", MenuParse_fadeAmount, NULL}, + {NULL, NULL, NULL} +}; + +keywordHash_t *menuParseKeywordHash[KEYWORDHASH_SIZE]; + +/* +=============== +Menu_SetupKeywordHash +=============== +*/ +void Menu_SetupKeywordHash(void) { + int i; + + memset(menuParseKeywordHash, 0, sizeof(menuParseKeywordHash)); + for (i = 0; menuParseKeywords[i].keyword; i++) { + KeywordHash_Add(menuParseKeywordHash, &menuParseKeywords[i]); + } +} + +/* +=============== +Menu_Parse +=============== +*/ +qboolean Menu_Parse(int handle, menuDef_t *menu) { + pc_token_t token; + keywordHash_t *key; + + if (!trap_PC_ReadToken(handle, &token)) + return qfalse; + if (*token.string != '{') { + return qfalse; + } + + while ( 1 ) { + + memset(&token, 0, sizeof(pc_token_t)); + if (!trap_PC_ReadToken(handle, &token)) { + PC_SourceError(handle, "end of file inside menu\n"); + return qfalse; + } + + if (*token.string == '}') { + return qtrue; + } + + key = KeywordHash_Find(menuParseKeywordHash, token.string); + if (!key) { + PC_SourceError(handle, "unknown menu keyword %s", token.string); + continue; + } + if ( !key->func((itemDef_t*)menu, handle) ) { + PC_SourceError(handle, "couldn't parse menu keyword %s", token.string); + return qfalse; + } + } + return qfalse; // bk001205 - LCC missing return value +} + +/* +=============== +Menu_New +=============== +*/ +void Menu_New(int handle) { + menuDef_t *menu = &Menus[menuCount]; + + if (menuCount < MAX_MENUS) { + Menu_Init(menu); + if (Menu_Parse(handle, menu)) { + Menu_PostParse(menu); + menuCount++; + } + } +} + +int Menu_Count() { + return menuCount; +} + +void Menu_PaintAll() { + int i; + if (captureFunc) { + captureFunc(captureData); + } + + for (i = 0; i < Menu_Count(); i++) { + Menu_Paint(&Menus[i], qfalse); + } + + if (debugMode) { + vec4_t v = {1, 1, 1, 1}; + DC->drawText(5, 25, .5, v, va("fps: %f", DC->FPS), 0, 0, 0); + } +} + +void Menu_Reset() { + menuCount = 0; +} + +displayContextDef_t *Display_GetContext() { + return DC; +} + +#ifndef MISSIONPACK // bk001206 +static float captureX; +static float captureY; +#endif + +void *Display_CaptureItem(int x, int y) { + int i; + + for (i = 0; i < menuCount; i++) { + // turn off focus each item + // menu->items[i].window.flags &= ~WINDOW_HASFOCUS; + if (Rect_ContainsPoint(&Menus[i].window.rect, x, y)) { + return &Menus[i]; + } + } + return NULL; +} + + +// FIXME: +qboolean Display_MouseMove(void *p, int x, int y) { + int i; + menuDef_t *menu = p; + + if (menu == NULL) { + menu = Menu_GetFocused(); + if (menu) { + if (menu->window.flags & WINDOW_POPUP) { + Menu_HandleMouseMove(menu, x, y); + return qtrue; + } + } + for (i = 0; i < menuCount; i++) { + Menu_HandleMouseMove(&Menus[i], x, y); + } + } else { + menu->window.rect.x += x; + menu->window.rect.y += y; + Menu_UpdatePosition(menu); + } + return qtrue; + +} + +int Display_CursorType(int x, int y) { + int i; + for (i = 0; i < menuCount; i++) { + rectDef_t r2; + r2.x = Menus[i].window.rect.x - 3; + r2.y = Menus[i].window.rect.y - 3; + r2.w = r2.h = 7; + if (Rect_ContainsPoint(&r2, x, y)) { + return CURSOR_SIZER; + } + } + return CURSOR_ARROW; +} + + +void Display_HandleKey(int key, qboolean down, int x, int y) { + menuDef_t *menu = Display_CaptureItem(x, y); + if (menu == NULL) { + menu = Menu_GetFocused(); + } + if (menu) { + Menu_HandleKey(menu, key, down ); + } +} + +static void Window_CacheContents(windowDef_t *window) { + if (window) { + if (window->cinematicName) { + int cin = DC->playCinematic(window->cinematicName, 0, 0, 0, 0); + DC->stopCinematic(cin); + } + } +} + + +static void Item_CacheContents(itemDef_t *item) { + if (item) { + Window_CacheContents(&item->window); + } + +} + +static void Menu_CacheContents(menuDef_t *menu) { + if (menu) { + int i; + Window_CacheContents(&menu->window); + for (i = 0; i < menu->itemCount; i++) { + Item_CacheContents(menu->items[i]); + } + + if (menu->soundName && *menu->soundName) { + DC->registerSound(menu->soundName, qfalse); + } + } + +} + +void Display_CacheAll() { + int i; + for (i = 0; i < menuCount; i++) { + Menu_CacheContents(&Menus[i]); + } +} + + +static qboolean Menu_OverActiveItem(menuDef_t *menu, float x, float y) { + if (menu && menu->window.flags & (WINDOW_VISIBLE | WINDOW_FORCED)) { + if (Rect_ContainsPoint(&menu->window.rect, x, y)) { + int i; + for (i = 0; i < menu->itemCount; i++) { + // turn off focus each item + // menu->items[i].window.flags &= ~WINDOW_HASFOCUS; + + if (!(menu->items[i]->window.flags & (WINDOW_VISIBLE | WINDOW_FORCED))) { + continue; + } + + if (menu->items[i]->window.flags & WINDOW_DECORATION) { + continue; + } + + if (Rect_ContainsPoint(&menu->items[i]->window.rect, x, y)) { + itemDef_t *overItem = menu->items[i]; + if (overItem->type == ITEM_TYPE_TEXT && overItem->text) { + if (Rect_ContainsPoint(Item_CorrectedTextRect(overItem), x, y)) { + return qtrue; + } else { + continue; + } + } else { + return qtrue; + } + } + } + + } + } + return qfalse; +} + diff --git a/ta_ui/ui_shared.h b/ta_ui/ui_shared.h new file mode 100644 index 00000000..41be3f90 --- /dev/null +++ b/ta_ui/ui_shared.h @@ -0,0 +1,429 @@ +#ifndef __UI_SHARED_H +#define __UI_SHARED_H + + +#include "../game/q_shared.h" +#include "../cgame/tr_types.h" +#include "keycodes.h" + +#include "menudef.h" + +#define MAX_MENUNAME 32 +#define MAX_ITEMTEXT 64 +#define MAX_ITEMACTION 64 +#define MAX_MENUDEFFILE 4096 +#define MAX_MENUFILE 32768 +#define MAX_MENUS 64 +#define MAX_MENUITEMS 96 +#define MAX_COLOR_RANGES 10 +#define MAX_OPEN_MENUS 16 + +#define WINDOW_MOUSEOVER 0x00000001 // mouse is over it, non exclusive +#define WINDOW_HASFOCUS 0x00000002 // has cursor focus, exclusive +#define WINDOW_VISIBLE 0x00000004 // is visible +#define WINDOW_GREY 0x00000008 // is visible but grey ( non-active ) +#define WINDOW_DECORATION 0x00000010 // for decoration only, no mouse, keyboard, etc.. +#define WINDOW_FADINGOUT 0x00000020 // fading out, non-active +#define WINDOW_FADINGIN 0x00000040 // fading in +#define WINDOW_MOUSEOVERTEXT 0x00000080 // mouse is over it, non exclusive +#define WINDOW_INTRANSITION 0x00000100 // window is in transition +#define WINDOW_FORECOLORSET 0x00000200 // forecolor was explicitly set ( used to color alpha images or not ) +#define WINDOW_HORIZONTAL 0x00000400 // for list boxes and sliders, vertical is default this is set of horizontal +#define WINDOW_LB_LEFTARROW 0x00000800 // mouse is over left/up arrow +#define WINDOW_LB_RIGHTARROW 0x00001000 // mouse is over right/down arrow +#define WINDOW_LB_THUMB 0x00002000 // mouse is over thumb +#define WINDOW_LB_PGUP 0x00004000 // mouse is over page up +#define WINDOW_LB_PGDN 0x00008000 // mouse is over page down +#define WINDOW_ORBITING 0x00010000 // item is in orbit +#define WINDOW_OOB_CLICK 0x00020000 // close on out of bounds click +#define WINDOW_WRAPPED 0x00040000 // manually wrap text +#define WINDOW_AUTOWRAPPED 0x00080000 // auto wrap text +#define WINDOW_FORCED 0x00100000 // forced open +#define WINDOW_POPUP 0x00200000 // popup +#define WINDOW_BACKCOLORSET 0x00400000 // backcolor was explicitly set +#define WINDOW_TIMEDVISIBLE 0x00800000 // visibility timing ( NOT implemented ) + + +// CGAME cursor type bits +#define CURSOR_NONE 0x00000001 +#define CURSOR_ARROW 0x00000002 +#define CURSOR_SIZER 0x00000004 + +#ifdef CGAME +#define STRING_POOL_SIZE 128*1024 +#else +#define STRING_POOL_SIZE 384*1024 +#endif +#define MAX_STRING_HANDLES 4096 + +#define MAX_SCRIPT_ARGS 12 +#define MAX_EDITFIELD 256 + +#define ART_FX_BASE "menu/art/fx_base" +#define ART_FX_BLUE "menu/art/fx_blue" +#define ART_FX_CYAN "menu/art/fx_cyan" +#define ART_FX_GREEN "menu/art/fx_grn" +#define ART_FX_RED "menu/art/fx_red" +#define ART_FX_TEAL "menu/art/fx_teal" +#define ART_FX_WHITE "menu/art/fx_white" +#define ART_FX_YELLOW "menu/art/fx_yel" + +#define ASSET_GRADIENTBAR "ui/assets/gradientbar2.tga" +#define ASSET_SCROLLBAR "ui/assets/scrollbar.tga" +#define ASSET_SCROLLBAR_ARROWDOWN "ui/assets/scrollbar_arrow_dwn_a.tga" +#define ASSET_SCROLLBAR_ARROWUP "ui/assets/scrollbar_arrow_up_a.tga" +#define ASSET_SCROLLBAR_ARROWLEFT "ui/assets/scrollbar_arrow_left.tga" +#define ASSET_SCROLLBAR_ARROWRIGHT "ui/assets/scrollbar_arrow_right.tga" +#define ASSET_SCROLL_THUMB "ui/assets/scrollbar_thumb.tga" +#define ASSET_SLIDER_BAR "ui/assets/slider2.tga" +#define ASSET_SLIDER_THUMB "ui/assets/sliderbutt_1.tga" +#define SCROLLBAR_SIZE 16.0 +#define SLIDER_WIDTH 96.0 +#define SLIDER_HEIGHT 16.0 +#define SLIDER_THUMB_WIDTH 12.0 +#define SLIDER_THUMB_HEIGHT 20.0 +#define NUM_CROSSHAIRS 10 + +typedef struct { + const char *command; + const char *args[MAX_SCRIPT_ARGS]; +} scriptDef_t; + + +typedef struct { + float x; // horiz position + float y; // vert position + float w; // width + float h; // height; +} rectDef_t; + +typedef rectDef_t Rectangle; + +// FIXME: do something to separate text vs window stuff +typedef struct { + Rectangle rect; // client coord rectangle + Rectangle rectClient; // screen coord rectangle + const char *name; // + const char *group; // if it belongs to a group + const char *cinematicName; // cinematic name + int cinematic; // cinematic handle + int style; // + int border; // + int ownerDraw; // ownerDraw style + int ownerDrawFlags; // show flags for ownerdraw items + float borderSize; // + int flags; // visible, focus, mouseover, cursor + Rectangle rectEffects; // for various effects + Rectangle rectEffects2; // for various effects + int offsetTime; // time based value for various effects + int nextTime; // time next effect should cycle + vec4_t foreColor; // text color + vec4_t backColor; // border color + vec4_t borderColor; // border color + vec4_t outlineColor; // border color + qhandle_t background; // background asset +} windowDef_t; + +typedef windowDef_t Window; + +typedef struct { + vec4_t color; + float low; + float high; +} colorRangeDef_t; + +// FIXME: combine flags into bitfields to save space +// FIXME: consolidate all of the common stuff in one structure for menus and items +// THINKABOUTME: is there any compelling reason not to have items contain items +// and do away with a menu per say.. major issue is not being able to dynamically allocate +// and destroy stuff.. Another point to consider is adding an alloc free call for vm's and have +// the engine just allocate the pool for it based on a cvar +// many of the vars are re-used for different item types, as such they are not always named appropriately +// the benefits of c++ in DOOM will greatly help crap like this +// FIXME: need to put a type ptr that points to specific type info per type +// +#define MAX_LB_COLUMNS 16 + +typedef struct columnInfo_s { + int pos; + int width; + int maxChars; +} columnInfo_t; + +typedef struct listBoxDef_s { + int startPos; + int endPos; + int drawPadding; + int cursorPos; + float elementWidth; + float elementHeight; + int elementStyle; + int numColumns; + columnInfo_t columnInfo[MAX_LB_COLUMNS]; + const char *doubleClick; + qboolean notselectable; +} listBoxDef_t; + +typedef struct editFieldDef_s { + float minVal; // edit field limits + float maxVal; // + float defVal; // + float range; // + int maxChars; // for edit fields + int maxPaintChars; // for edit fields + int paintOffset; // +} editFieldDef_t; + +#define MAX_MULTI_CVARS 32 + +typedef struct multiDef_s { + const char *cvarList[MAX_MULTI_CVARS]; + const char *cvarStr[MAX_MULTI_CVARS]; + float cvarValue[MAX_MULTI_CVARS]; + int count; + qboolean strDef; +} multiDef_t; + +typedef struct modelDef_s { + int angle; + vec3_t origin; + float fov_x; + float fov_y; + int rotationSpeed; +} modelDef_t; + +#define CVAR_ENABLE 0x00000001 +#define CVAR_DISABLE 0x00000002 +#define CVAR_SHOW 0x00000004 +#define CVAR_HIDE 0x00000008 + +typedef struct itemDef_s { + Window window; // common positional, border, style, layout info + Rectangle textRect; // rectangle the text ( if any ) consumes + int type; // text, button, radiobutton, checkbox, textfield, listbox, combo + int alignment; // left center right + int textalignment; // ( optional ) alignment for text within rect based on text width + float textalignx; // ( optional ) text alignment x coord + float textaligny; // ( optional ) text alignment x coord + float textscale; // scale percentage from 72pts + int textStyle; // ( optional ) style, normal and shadowed are it for now + const char *text; // display text + void *parent; // menu owner + qhandle_t asset; // handle to asset + const char *mouseEnterText; // mouse enter script + const char *mouseExitText; // mouse exit script + const char *mouseEnter; // mouse enter script + const char *mouseExit; // mouse exit script + const char *action; // select script + const char *onFocus; // select script + const char *leaveFocus; // select script + const char *cvar; // associated cvar + const char *cvarTest; // associated cvar for enable actions + const char *enableCvar; // enable, disable, show, or hide based on value, this can contain a list + int cvarFlags; // what type of action to take on cvarenables + sfxHandle_t focusSound; + int numColors; // number of color ranges + colorRangeDef_t colorRanges[MAX_COLOR_RANGES]; + float special; // used for feeder id's etc.. diff per type + int cursorPos; // cursor position in characters + void *typeData; // type specific data ptr's +} itemDef_t; + +typedef struct { + Window window; + const char *font; // font + qboolean fullScreen; // covers entire screen + int itemCount; // number of items; + int fontIndex; // + int cursorItem; // which item as the cursor + int fadeCycle; // + float fadeClamp; // + float fadeAmount; // + const char *onOpen; // run when the menu is first opened + const char *onClose; // run when the menu is closed + const char *onESC; // run when the menu is closed + const char *soundName; // background loop sound for menu + + vec4_t focusColor; // focus color for items + vec4_t disableColor; // focus color for items + itemDef_t *items[MAX_MENUITEMS]; // items this menu contains +} menuDef_t; + +typedef struct { + const char *fontStr; + const char *cursorStr; + const char *gradientStr; + fontInfo_t textFont; + fontInfo_t smallFont; + fontInfo_t bigFont; + qhandle_t cursor; + qhandle_t gradientBar; + qhandle_t scrollBarArrowUp; + qhandle_t scrollBarArrowDown; + qhandle_t scrollBarArrowLeft; + qhandle_t scrollBarArrowRight; + qhandle_t scrollBar; + qhandle_t scrollBarThumb; + qhandle_t buttonMiddle; + qhandle_t buttonInside; + qhandle_t solidBox; + qhandle_t sliderBar; + qhandle_t sliderThumb; + sfxHandle_t menuEnterSound; + sfxHandle_t menuExitSound; + sfxHandle_t menuBuzzSound; + sfxHandle_t itemFocusSound; + float fadeClamp; + int fadeCycle; + float fadeAmount; + float shadowX; + float shadowY; + vec4_t shadowColor; + float shadowFadeClamp; + qboolean fontRegistered; + + // player settings + qhandle_t fxBasePic; + qhandle_t fxPic[7]; + qhandle_t crosshairShader[NUM_CROSSHAIRS]; + +} cachedAssets_t; + +typedef struct { + const char *name; + void (*handler) (itemDef_t *item, char** args); +} commandDef_t; + +typedef struct { + qhandle_t (*registerShaderNoMip) (const char *p); + void (*setColor) (const vec4_t v); + void (*drawHandlePic) (float x, float y, float w, float h, qhandle_t asset); + void (*drawStretchPic) (float x, float y, float w, float h, float s1, float t1, float s2, float t2, qhandle_t hShader ); + void (*drawText) (float x, float y, float scale, vec4_t color, const char *text, float adjust, int limit, int style ); + int (*textWidth) (const char *text, float scale, int limit); + int (*textHeight) (const char *text, float scale, int limit); + qhandle_t (*registerModel) (const char *p); + void (*modelBounds) (qhandle_t model, vec3_t min, vec3_t max); + void (*fillRect) ( float x, float y, float w, float h, const vec4_t color); + void (*drawRect) ( float x, float y, float w, float h, float size, const vec4_t color); + void (*drawSides) (float x, float y, float w, float h, float size); + void (*drawTopBottom) (float x, float y, float w, float h, float size); + void (*clearScene) (); + void (*addRefEntityToScene) (const refEntity_t *re ); + void (*renderScene) ( const refdef_t *fd ); + void (*registerFont) (const char *pFontname, int pointSize, fontInfo_t *font); + void (*ownerDrawItem) (float x, float y, float w, float h, float text_x, float text_y, int ownerDraw, int ownerDrawFlags, int align, float special, float scale, vec4_t color, qhandle_t shader, int textStyle); + float (*getValue) (int ownerDraw); + qboolean (*ownerDrawVisible) (int flags); + void (*runScript)(char **p); + void (*getTeamColor)(vec4_t *color); + void (*getCVarString)(const char *cvar, char *buffer, int bufsize); + float (*getCVarValue)(const char *cvar); + void (*setCVar)(const char *cvar, const char *value); + void (*drawTextWithCursor)(float x, float y, float scale, vec4_t color, const char *text, int cursorPos, char cursor, int limit, int style); + void (*setOverstrikeMode)(qboolean b); + qboolean (*getOverstrikeMode)(); + void (*startLocalSound)( sfxHandle_t sfx, int channelNum ); + qboolean (*ownerDrawHandleKey)(int ownerDraw, int flags, float *special, int key); + int (*feederCount)(float feederID); + const char *(*feederItemText)(float feederID, int index, int column, qhandle_t *handle); + qhandle_t (*feederItemImage)(float feederID, int index); + void (*feederSelection)(float feederID, int index); + void (*keynumToStringBuf)( int keynum, char *buf, int buflen ); + void (*getBindingBuf)( int keynum, char *buf, int buflen ); + void (*setBinding)( int keynum, const char *binding ); + void (*executeText)(int exec_when, const char *text ); + void (*Error)(int level, const char *error, ...); + void (*Print)(const char *msg, ...); + void (*Pause)(qboolean b); + int (*ownerDrawWidth)(int ownerDraw, float scale); + sfxHandle_t (*registerSound)(const char *name, qboolean compressed); + void (*startBackgroundTrack)( const char *intro, const char *loop); + void (*stopBackgroundTrack)(); + int (*playCinematic)(const char *name, float x, float y, float w, float h); + void (*stopCinematic)(int handle); + void (*drawCinematic)(int handle, float x, float y, float w, float h); + void (*runCinematicFrame)(int handle); + + float yscale; + float xscale; + float bias; + int realTime; + int frameTime; + int cursorx; + int cursory; + qboolean debug; + + cachedAssets_t Assets; + + glconfig_t glconfig; + qhandle_t whiteShader; + qhandle_t gradientImage; + qhandle_t cursor; + float FPS; + +} displayContextDef_t; + +const char *String_Alloc(const char *p); +void String_Init(); +void String_Report(); +void Init_Display(displayContextDef_t *dc); +void Display_ExpandMacros(char * buff); +void Menu_Init(menuDef_t *menu); +void Item_Init(itemDef_t *item); +void Menu_PostParse(menuDef_t *menu); +menuDef_t *Menu_GetFocused(); +void Menu_HandleKey(menuDef_t *menu, int key, qboolean down); +void Menu_HandleMouseMove(menuDef_t *menu, float x, float y); +void Menu_ScrollFeeder(menuDef_t *menu, int feeder, qboolean down); +qboolean Float_Parse(char **p, float *f); +qboolean Color_Parse(char **p, vec4_t *c); +qboolean Int_Parse(char **p, int *i); +qboolean Rect_Parse(char **p, rectDef_t *r); +qboolean String_Parse(char **p, const char **out); +qboolean Script_Parse(char **p, const char **out); +qboolean PC_Float_Parse(int handle, float *f); +qboolean PC_Color_Parse(int handle, vec4_t *c); +qboolean PC_Int_Parse(int handle, int *i); +qboolean PC_Rect_Parse(int handle, rectDef_t *r); +qboolean PC_String_Parse(int handle, const char **out); +qboolean PC_Script_Parse(int handle, const char **out); +int Menu_Count(); +void Menu_New(int handle); +void Menu_PaintAll(); +menuDef_t *Menus_ActivateByName(const char *p); +void Menu_Reset(); +qboolean Menus_AnyFullScreenVisible(); +void Menus_Activate(menuDef_t *menu); + +displayContextDef_t *Display_GetContext(); +void *Display_CaptureItem(int x, int y); +qboolean Display_MouseMove(void *p, int x, int y); +int Display_CursorType(int x, int y); +qboolean Display_KeyBindPending(); +void Menus_OpenByName(const char *p); +menuDef_t *Menus_FindByName(const char *p); +void Menus_ShowByName(const char *p); +void Menus_CloseByName(const char *p); +void Display_HandleKey(int key, qboolean down, int x, int y); +void LerpColor(vec4_t a, vec4_t b, vec4_t c, float t); +void Menus_CloseAll(); +void Menu_Paint(menuDef_t *menu, qboolean forcePaint); +void Menu_SetFeederSelection(menuDef_t *menu, int feeder, int index, const char *name); +void Display_CacheAll(); + +void *UI_Alloc( int size ); +void UI_InitMemory( void ); +qboolean UI_OutOfMemory(); + +void Controls_GetConfig( void ); +void Controls_SetConfig(qboolean restart); +void Controls_SetDefaults( void ); + +int trap_PC_AddGlobalDefine( char *define ); +int trap_PC_LoadSource( const char *filename ); +int trap_PC_FreeSource( int handle ); +int trap_PC_ReadToken( int handle, pc_token_t *pc_token ); +int trap_PC_SourceFileAndLine( int handle, char *filename, int *line ); + +#endif diff --git a/ta_ui/ui_syscalls.asm b/ta_ui/ui_syscalls.asm new file mode 100644 index 00000000..2fdb200e --- /dev/null +++ b/ta_ui/ui_syscalls.asm @@ -0,0 +1,100 @@ +code + +equ trap_Error -1 +equ trap_Print -2 +equ trap_Milliseconds -3 +equ trap_Cvar_Set -4 +equ trap_Cvar_VariableValue -5 +equ trap_Cvar_VariableStringBuffer -6 +equ trap_Cvar_SetValue -7 +equ trap_Cvar_Reset -8 +equ trap_Cvar_Create -9 +equ trap_Cvar_InfoStringBuffer -10 +equ trap_Argc -11 +equ trap_Argv -12 +equ trap_Cmd_ExecuteText -13 +equ trap_FS_FOpenFile -14 +equ trap_FS_Read -15 +equ trap_FS_Write -16 +equ trap_FS_FCloseFile -17 +equ trap_FS_GetFileList -18 +equ trap_R_RegisterModel -19 +equ trap_R_RegisterSkin -20 +equ trap_R_RegisterShaderNoMip -21 +equ trap_R_ClearScene -22 +equ trap_R_AddRefEntityToScene -23 +equ trap_R_AddPolyToScene -24 +equ trap_R_AddLightToScene -25 +equ trap_R_RenderScene -26 +equ trap_R_SetColor -27 +equ trap_R_DrawStretchPic -28 +equ trap_UpdateScreen -29 +equ trap_CM_LerpTag -30 +equ trap_CM_LoadModel -31 +equ trap_S_RegisterSound -32 +equ trap_S_StartLocalSound -33 +equ trap_Key_KeynumToStringBuf -34 +equ trap_Key_GetBindingBuf -35 +equ trap_Key_SetBinding -36 +equ trap_Key_IsDown -37 +equ trap_Key_GetOverstrikeMode -38 +equ trap_Key_SetOverstrikeMode -39 +equ trap_Key_ClearStates -40 +equ trap_Key_GetCatcher -41 +equ trap_Key_SetCatcher -42 +equ trap_GetClipboardData -43 +equ trap_GetGlconfig -44 +equ trap_GetClientState -45 +equ trap_GetConfigString -46 +equ trap_LAN_GetPingQueueCount -47 +equ trap_LAN_ClearPing -48 +equ trap_LAN_GetPing -49 +equ trap_LAN_GetPingInfo -50 +equ trap_Cvar_Register -51 +equ trap_Cvar_Update -52 +equ trap_MemoryRemaining -53 +equ trap_GetCDKey -54 +equ trap_SetCDKey -55 +equ trap_R_RegisterFont -56 +equ trap_R_ModelBounds -57 +equ trap_PC_AddGlobalDefine -58 +equ trap_PC_LoadSource -59 +equ trap_PC_FreeSource -60 +equ trap_PC_ReadToken -61 +equ trap_PC_SourceFileAndLine -62 +equ trap_S_StopBackgroundTrack -63 +equ trap_S_StartBackgroundTrack -64 +equ trap_RealTime -65 +equ trap_LAN_GetServerCount -66 +equ trap_LAN_GetServerAddressString -67 +equ trap_LAN_GetServerInfo -68 +equ trap_LAN_MarkServerVisible -69 +equ trap_LAN_UpdateVisiblePings -70 +equ trap_LAN_ResetPings -71 +equ trap_LAN_LoadCachedServers -72 +equ trap_LAN_SaveCachedServers -73 +equ trap_LAN_AddServer -74 +equ trap_LAN_RemoveServer -75 +equ trap_CIN_PlayCinematic -76 +equ trap_CIN_StopCinematic -77 +equ trap_CIN_RunCinematic -78 +equ trap_CIN_DrawCinematic -79 +equ trap_CIN_SetExtents -80 +equ trap_R_RemapShader -81 +equ trap_VerifyCDKey -82 +equ trap_LAN_ServerStatus -83 +equ trap_LAN_GetServerPing -84 +equ trap_LAN_ServerIsVisible -85 +equ trap_LAN_CompareServers -86 + + +equ memset -101 +equ memcpy -102 +equ strncpy -103 +equ sin -104 +equ cos -105 +equ atan2 -106 +equ sqrt -107 +equ floor -108 +equ ceil -109 + diff --git a/ta_ui/ui_syscalls.c b/ta_ui/ui_syscalls.c new file mode 100644 index 00000000..8bce0862 --- /dev/null +++ b/ta_ui/ui_syscalls.c @@ -0,0 +1,372 @@ +// Copyright (C) 1999-2000 Id Software, Inc. +// +#include "ui_local.h" + +// this file is only included when building a dll +// syscalls.asm is included instead when building a qvm + +static int (QDECL *syscall)( int arg, ... ) = (int (QDECL *)( int, ...))-1; + +void dllEntry( int (QDECL *syscallptr)( int arg,... ) ) { + syscall = syscallptr; +} + +int PASSFLOAT( float x ) { + float floatTemp; + floatTemp = x; + return *(int *)&floatTemp; +} + +void trap_Print( const char *string ) { + syscall( UI_PRINT, string ); +} + +void trap_Error( const char *string ) { + syscall( UI_ERROR, string ); +} + +int trap_Milliseconds( void ) { + return syscall( UI_MILLISECONDS ); +} + +void trap_Cvar_Register( vmCvar_t *cvar, const char *var_name, const char *value, int flags ) { + syscall( UI_CVAR_REGISTER, cvar, var_name, value, flags ); +} + +void trap_Cvar_Update( vmCvar_t *cvar ) { + syscall( UI_CVAR_UPDATE, cvar ); +} + +void trap_Cvar_Set( const char *var_name, const char *value ) { + syscall( UI_CVAR_SET, var_name, value ); +} + +float trap_Cvar_VariableValue( const char *var_name ) { + int temp; + temp = syscall( UI_CVAR_VARIABLEVALUE, var_name ); + return (*(float*)&temp); +} + +void trap_Cvar_VariableStringBuffer( const char *var_name, char *buffer, int bufsize ) { + syscall( UI_CVAR_VARIABLESTRINGBUFFER, var_name, buffer, bufsize ); +} + +void trap_Cvar_SetValue( const char *var_name, float value ) { + syscall( UI_CVAR_SETVALUE, var_name, PASSFLOAT( value ) ); +} + +void trap_Cvar_Reset( const char *name ) { + syscall( UI_CVAR_RESET, name ); +} + +void trap_Cvar_Create( const char *var_name, const char *var_value, int flags ) { + syscall( UI_CVAR_CREATE, var_name, var_value, flags ); +} + +void trap_Cvar_InfoStringBuffer( int bit, char *buffer, int bufsize ) { + syscall( UI_CVAR_INFOSTRINGBUFFER, bit, buffer, bufsize ); +} + +int trap_Argc( void ) { + return syscall( UI_ARGC ); +} + +void trap_Argv( int n, char *buffer, int bufferLength ) { + syscall( UI_ARGV, n, buffer, bufferLength ); +} + +void trap_Cmd_ExecuteText( int exec_when, const char *text ) { + syscall( UI_CMD_EXECUTETEXT, exec_when, text ); +} + +int trap_FS_FOpenFile( const char *qpath, fileHandle_t *f, fsMode_t mode ) { + return syscall( UI_FS_FOPENFILE, qpath, f, mode ); +} + +void trap_FS_Read( void *buffer, int len, fileHandle_t f ) { + syscall( UI_FS_READ, buffer, len, f ); +} + +void trap_FS_Write( const void *buffer, int len, fileHandle_t f ) { + syscall( UI_FS_WRITE, buffer, len, f ); +} + +void trap_FS_FCloseFile( fileHandle_t f ) { + syscall( UI_FS_FCLOSEFILE, f ); +} + +int trap_FS_GetFileList( const char *path, const char *extension, char *listbuf, int bufsize ) { + return syscall( UI_FS_GETFILELIST, path, extension, listbuf, bufsize ); +} + +qhandle_t trap_R_RegisterModel( const char *name ) { + return syscall( UI_R_REGISTERMODEL, name ); +} + +qhandle_t trap_R_RegisterSkin( const char *name ) { + return syscall( UI_R_REGISTERSKIN, name ); +} + +void trap_R_RegisterFont(const char *fontName, int pointSize, fontInfo_t *font) { + syscall( UI_R_REGISTERFONT, fontName, pointSize, font ); +} + +qhandle_t trap_R_RegisterShaderNoMip( const char *name ) { + return syscall( UI_R_REGISTERSHADERNOMIP, name ); +} + +void trap_R_ClearScene( void ) { + syscall( UI_R_CLEARSCENE ); +} + +void trap_R_AddRefEntityToScene( const refEntity_t *re ) { + syscall( UI_R_ADDREFENTITYTOSCENE, re ); +} + +void trap_R_AddPolyToScene( qhandle_t hShader , int numVerts, const polyVert_t *verts ) { + syscall( UI_R_ADDPOLYTOSCENE, hShader, numVerts, verts ); +} + +void trap_R_AddLightToScene( const vec3_t org, float intensity, float r, float g, float b ) { + syscall( UI_R_ADDLIGHTTOSCENE, org, PASSFLOAT(intensity), PASSFLOAT(r), PASSFLOAT(g), PASSFLOAT(b) ); +} + +void trap_R_RenderScene( const refdef_t *fd ) { + syscall( UI_R_RENDERSCENE, fd ); +} + +void trap_R_SetColor( const float *rgba ) { + syscall( UI_R_SETCOLOR, rgba ); +} + +void trap_R_DrawStretchPic( float x, float y, float w, float h, float s1, float t1, float s2, float t2, qhandle_t hShader ) { + syscall( UI_R_DRAWSTRETCHPIC, PASSFLOAT(x), PASSFLOAT(y), PASSFLOAT(w), PASSFLOAT(h), PASSFLOAT(s1), PASSFLOAT(t1), PASSFLOAT(s2), PASSFLOAT(t2), hShader ); +} + +void trap_R_ModelBounds( clipHandle_t model, vec3_t mins, vec3_t maxs ) { + syscall( UI_R_MODELBOUNDS, model, mins, maxs ); +} + +void trap_UpdateScreen( void ) { + syscall( UI_UPDATESCREEN ); +} + +int trap_CM_LerpTag( orientation_t *tag, clipHandle_t mod, int startFrame, int endFrame, float frac, const char *tagName ) { + return syscall( UI_CM_LERPTAG, tag, mod, startFrame, endFrame, PASSFLOAT(frac), tagName ); +} + +void trap_S_StartLocalSound( sfxHandle_t sfx, int channelNum ) { + syscall( UI_S_STARTLOCALSOUND, sfx, channelNum ); +} + +sfxHandle_t trap_S_RegisterSound( const char *sample, qboolean compressed ) { + return syscall( UI_S_REGISTERSOUND, sample, compressed ); +} + +void trap_Key_KeynumToStringBuf( int keynum, char *buf, int buflen ) { + syscall( UI_KEY_KEYNUMTOSTRINGBUF, keynum, buf, buflen ); +} + +void trap_Key_GetBindingBuf( int keynum, char *buf, int buflen ) { + syscall( UI_KEY_GETBINDINGBUF, keynum, buf, buflen ); +} + +void trap_Key_SetBinding( int keynum, const char *binding ) { + syscall( UI_KEY_SETBINDING, keynum, binding ); +} + +qboolean trap_Key_IsDown( int keynum ) { + return syscall( UI_KEY_ISDOWN, keynum ); +} + +qboolean trap_Key_GetOverstrikeMode( void ) { + return syscall( UI_KEY_GETOVERSTRIKEMODE ); +} + +void trap_Key_SetOverstrikeMode( qboolean state ) { + syscall( UI_KEY_SETOVERSTRIKEMODE, state ); +} + +void trap_Key_ClearStates( void ) { + syscall( UI_KEY_CLEARSTATES ); +} + +int trap_Key_GetCatcher( void ) { + return syscall( UI_KEY_GETCATCHER ); +} + +void trap_Key_SetCatcher( int catcher ) { + syscall( UI_KEY_SETCATCHER, catcher ); +} + +void trap_GetClipboardData( char *buf, int bufsize ) { + syscall( UI_GETCLIPBOARDDATA, buf, bufsize ); +} + +void trap_GetClientState( uiClientState_t *state ) { + syscall( UI_GETCLIENTSTATE, state ); +} + +void trap_GetGlconfig( glconfig_t *glconfig ) { + syscall( UI_GETGLCONFIG, glconfig ); +} + +int trap_GetConfigString( int index, char* buff, int buffsize ) { + return syscall( UI_GETCONFIGSTRING, index, buff, buffsize ); +} + +int trap_LAN_GetServerCount( int source ) { + return syscall( UI_LAN_GETSERVERCOUNT, source ); +} + +void trap_LAN_GetServerAddressString( int source, int n, char *buf, int buflen ) { + syscall( UI_LAN_GETSERVERADDRESSSTRING, source, n, buf, buflen ); +} + +void trap_LAN_GetServerInfo( int source, int n, char *buf, int buflen ) { + syscall( UI_LAN_GETSERVERINFO, source, n, buf, buflen ); +} + +int trap_LAN_GetServerPing( int source, int n ) { + return syscall( UI_LAN_GETSERVERPING, source, n ); +} + +int trap_LAN_GetPingQueueCount( void ) { + return syscall( UI_LAN_GETPINGQUEUECOUNT ); +} + +int trap_LAN_ServerStatus( const char *serverAddress, char *serverStatus, int maxLen ) { + return syscall( UI_LAN_SERVERSTATUS, serverAddress, serverStatus, maxLen ); +} + +void trap_LAN_SaveCachedServers() { + syscall( UI_LAN_SAVECACHEDSERVERS ); +} + +void trap_LAN_LoadCachedServers() { + syscall( UI_LAN_LOADCACHEDSERVERS ); +} + +void trap_LAN_ResetPings(int n) { + syscall( UI_LAN_RESETPINGS, n ); +} + +void trap_LAN_ClearPing( int n ) { + syscall( UI_LAN_CLEARPING, n ); +} + +void trap_LAN_GetPing( int n, char *buf, int buflen, int *pingtime ) { + syscall( UI_LAN_GETPING, n, buf, buflen, pingtime ); +} + +void trap_LAN_GetPingInfo( int n, char *buf, int buflen ) { + syscall( UI_LAN_GETPINGINFO, n, buf, buflen ); +} + +void trap_LAN_MarkServerVisible( int source, int n, qboolean visible ) { + syscall( UI_LAN_MARKSERVERVISIBLE, source, n, visible ); +} + +int trap_LAN_ServerIsVisible( int source, int n) { + return syscall( UI_LAN_SERVERISVISIBLE, source, n ); +} + +qboolean trap_LAN_UpdateVisiblePings( int source ) { + return syscall( UI_LAN_UPDATEVISIBLEPINGS, source ); +} + +int trap_LAN_AddServer(int source, const char *name, const char *addr) { + return syscall( UI_LAN_ADDSERVER, source, name, addr ); +} + +void trap_LAN_RemoveServer(int source, const char *addr) { + syscall( UI_LAN_REMOVESERVER, source, addr ); +} + +int trap_LAN_CompareServers( int source, int sortKey, int sortDir, int s1, int s2 ) { + return syscall( UI_LAN_COMPARESERVERS, source, sortKey, sortDir, s1, s2 ); +} + +int trap_MemoryRemaining( void ) { + return syscall( UI_MEMORY_REMAINING ); +} + +void trap_GetCDKey( char *buf, int buflen ) { + syscall( UI_GET_CDKEY, buf, buflen ); +} + +void trap_SetCDKey( char *buf ) { + syscall( UI_SET_CDKEY, buf ); +} + +int trap_PC_AddGlobalDefine( char *define ) { + return syscall( UI_PC_ADD_GLOBAL_DEFINE, define ); +} + +int trap_PC_LoadSource( const char *filename ) { + return syscall( UI_PC_LOAD_SOURCE, filename ); +} + +int trap_PC_FreeSource( int handle ) { + return syscall( UI_PC_FREE_SOURCE, handle ); +} + +int trap_PC_ReadToken( int handle, pc_token_t *pc_token ) { + return syscall( UI_PC_READ_TOKEN, handle, pc_token ); +} + +int trap_PC_SourceFileAndLine( int handle, char *filename, int *line ) { + return syscall( UI_PC_SOURCE_FILE_AND_LINE, handle, filename, line ); +} + +void trap_S_StopBackgroundTrack( void ) { + syscall( UI_S_STOPBACKGROUNDTRACK ); +} + +void trap_S_StartBackgroundTrack( const char *intro, const char *loop) { + syscall( UI_S_STARTBACKGROUNDTRACK, intro, loop ); +} + +int trap_RealTime(qtime_t *qtime) { + return syscall( UI_REAL_TIME, qtime ); +} + +// this returns a handle. arg0 is the name in the format "idlogo.roq", set arg1 to NULL, alteredstates to qfalse (do not alter gamestate) +int trap_CIN_PlayCinematic( const char *arg0, int xpos, int ypos, int width, int height, int bits) { + return syscall(UI_CIN_PLAYCINEMATIC, arg0, xpos, ypos, width, height, bits); +} + +// stops playing the cinematic and ends it. should always return FMV_EOF +// cinematics must be stopped in reverse order of when they are started +e_status trap_CIN_StopCinematic(int handle) { + return syscall(UI_CIN_STOPCINEMATIC, handle); +} + + +// will run a frame of the cinematic but will not draw it. Will return FMV_EOF if the end of the cinematic has been reached. +e_status trap_CIN_RunCinematic (int handle) { + return syscall(UI_CIN_RUNCINEMATIC, handle); +} + + +// draws the current frame +void trap_CIN_DrawCinematic (int handle) { + syscall(UI_CIN_DRAWCINEMATIC, handle); +} + + +// allows you to resize the animation dynamically +void trap_CIN_SetExtents (int handle, int x, int y, int w, int h) { + syscall(UI_CIN_SETEXTENTS, handle, x, y, w, h); +} + + +void trap_R_RemapShader( const char *oldShader, const char *newShader, const char *timeOffset ) { + syscall( UI_R_REMAP_SHADER, oldShader, newShader, timeOffset ); +} + +qboolean trap_VerifyCDKey( const char *key, const char *chksum) { + return syscall( UI_VERIFY_CDKEY, key, chksum); +} + + \ No newline at end of file diff --git a/ta_ui/ui_util.c b/ta_ui/ui_util.c new file mode 100644 index 00000000..05246d58 --- /dev/null +++ b/ta_ui/ui_util.c @@ -0,0 +1,8 @@ +// ui_util.c +// +// origin: rad +// new ui support stuff +// +// memory, string alloc + + diff --git a/ta_ui/vid_restart.menu b/ta_ui/vid_restart.menu new file mode 100644 index 00000000..fa1053c9 --- /dev/null +++ b/ta_ui/vid_restart.menu @@ -0,0 +1,194 @@ +#include "ui/menudef.h" + +{ +\\ VID_RESTART POPUP MENU \\ + +menuDef { + name "vid_restart_popmenu" + visible 0 + fullscreen 0 + //rect 217 200 210 85 + rect 204 122 235 235 + //outOfBoundsClick // this closes the window if it gets a click out of the rectangle + focusColor 1 .75 0 1 + style 1 + border 1 + popup + onESC { close vid_restart_popmenu ; + open setup_menu ; + open system_menu } + + + +itemDef { + name window + rect 0 0 235 235 + style 3 + background "ui/assets/mainpop.tga" + visible 1 + decoration + } +itemDef { + name window + rect 47 47 144 144 + style 3 + background "centerconsole2" + visible 1 + decoration + } + + + + + + // VID_RESTART // + +itemDef { + name confirm + text "This will apply video" + style 0 + textscale .25 + textstyle 3 + rect 0 85 110 20 + textalign 1 + textalignx 117 + textaligny 15 + decoration + forecolor 1 1 1 1 + visible 1 + } +itemDef { + name confirm + text "settings and return" + style 0 + textscale .25 + textstyle 3 + rect 0 100 110 20 + textalign 1 + textalignx 117 + textaligny 15 + decoration + forecolor 1 1 1 1 + visible 1 + } +itemDef { + name confirm + text "to the Main Menu." + style 0 + textscale .25 + textstyle 3 + rect 0 115 110 20 + textalign 1 + textalignx 117 + textaligny 15 + decoration + forecolor 1 1 1 1 + visible 1 + } + +itemDef { + name yes + text "YES" + type 1 + textscale .25 + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + rect 75 140 30 26 + textalign 1 + textalignx 15 + textaligny 20 + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + visible 1 + action { play "sound/misc/nomenu.wav" ; + close vid_restart_popmenu ; + exec "vid_restart" } + mouseEnter { setitemcolor yes backcolor .1 .37 .1 1 } + mouseExit { setitemcolor yes backcolor .37 .1 .1 1 } + } + + itemDef { + name yes + style WINDOW_STYLE_SHADER + background "ui/assets/framebutton.tga" + rect 75 140 30 26 + visible 1 + decoration + } + + itemDef { + name yes + style WINDOW_STYLE_SHADER + background "ui/assets/leftbutton.tga" + rect 69 140 7 26 + visible 1 + decoration + } + + itemDef { + name yes + style WINDOW_STYLE_SHADER + background "ui/assets/rightbutton.tga" + rect 104 140 7 26 + visible 1 + decoration + } + + + + + +itemDef { + name no + text "NO" + type 1 + textscale .25 + style WINDOW_STYLE_FILLED + background "ui/assets/button_back.tga" + rect 128 140 30 26 + textalign 1 + textalignx 15 + textaligny 20 + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + visible 1 + action { play "sound/misc/nomenu.wav" ; + close vid_restart_popmenu ; + open setup_menu ; + open system_menu } + mouseEnter { setitemcolor no backcolor .1 .37 .1 1 } + mouseExit { setitemcolor no backcolor .37 .1 .1 1 } + } + itemDef { + name no + style WINDOW_STYLE_SHADER + background "ui/assets/framebutton.tga" + rect 128 140 30 26 + visible 1 + decoration + } + + itemDef { + name no + style WINDOW_STYLE_SHADER + background "ui/assets/leftbutton.tga" + rect 122 140 7 26 + visible 1 + decoration + } + + itemDef { + name no + style WINDOW_STYLE_SHADER + background "ui/assets/rightbutton.tga" + rect 157 140 7 26 + visible 1 + decoration + } + +} + + +} + + diff --git a/ta_ui/vm/bg_lib.asm b/ta_ui/vm/bg_lib.asm new file mode 100644 index 00000000..5f82bf3b --- /dev/null +++ b/ta_ui/vm/bg_lib.asm @@ -0,0 +1,5890 @@ +code +proc swapfunc 24 0 +file "../../game/bg_lib.c" +line 96 +;1://----------------------------------------------------------------------------- +;2:// +;3:// $Id$ +;4:// +;5://----------------------------------------------------------------------------- +;6:// +;7:// $Log$ +;7:// Revision 1.1 2002/01/08 05:46:17 blaze +;7:// Initial revision +;7:// +;8:// Revision 1.4 2001/12/31 16:28:42 jbravo +;9:// I made a Booboo with the Log tag. +;10:// +;11:// +;12://----------------------------------------------------------------------------- +;13:// Copyright (C) 1999-2000 Id Software, Inc. +;14:// +;15:// Copyright (C) 1999-2000 Id Software, Inc. +;16:// +;17:// bg_lib,c -- standard C library replacement routines used by code +;18:// compiled for the virtual machine +;19: +;20:#include "q_shared.h" +;21: +;22:/*- +;23: * Copyright (c) 1992, 1993 +;24: * The Regents of the University of California. All rights reserved. +;25: * +;26: * Redistribution and use in source and binary forms, with or without +;27: * modification, are permitted provided that the following conditions +;28: * are met: +;29: * 1. Redistributions of source code must retain the above copyright +;30: * notice, this list of conditions and the following disclaimer. +;31: * 2. Redistributions in binary form must reproduce the above copyright +;32: * notice, this list of conditions and the following disclaimer in the +;33: * documentation and/or other materials provided with the distribution. +;34: * 3. All advertising materials mentioning features or use of this software +;35: * must display the following acknowledgement: +;36: * This product includes software developed by the University of +;37: * California, Berkeley and its contributors. +;38: * 4. Neither the name of the University nor the names of its contributors +;39: * may be used to endorse or promote products derived from this software +;40: * without specific prior written permission. +;41: * +;42: * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +;43: * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +;44: * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +;45: * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +;46: * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +;47: * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +;48: * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +;49: * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +;50: * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +;51: * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +;52: * SUCH DAMAGE. +;53: */ +;54: +;55:#if defined(LIBC_SCCS) && !defined(lint) +;56:#if 0 +;57:static char sccsid[] = "@(#)qsort.c 8.1 (Berkeley) 6/4/93"; +;58:#endif +;59:static const char rcsid[] = +;60: "$Id$"; +;61:#endif /* LIBC_SCCS and not lint */ +;62: +;63:// bk001127 - needed for DLL's +;64:#if !defined( Q3_VM ) +;65:typedef int cmp_t(const void *, const void *); +;66:#endif +;67: +;68:static char* med3(char *, char *, char *, cmp_t *); +;69:static void swapfunc(char *, char *, int, int); +;70: +;71:#ifndef min +;72:#define min(a, b) (a) < (b) ? a : b +;73:#endif +;74: +;75:/* +;76: * Qsort routine from Bentley & McIlroy's "Engineering a Sort Function". +;77: */ +;78:#define swapcode(TYPE, parmi, parmj, n) { \ +;79: long i = (n) / sizeof (TYPE); \ +;80: register TYPE *pi = (TYPE *) (parmi); \ +;81: register TYPE *pj = (TYPE *) (parmj); \ +;82: do { \ +;83: register TYPE t = *pi; \ +;84: *pi++ = *pj; \ +;85: *pj++ = t; \ +;86: } while (--i > 0); \ +;87:} +;88: +;89:#define SWAPINIT(a, es) swaptype = ((char *)a - (char *)0) % sizeof(long) || \ +;90: es % sizeof(long) ? 2 : es == sizeof(long)? 0 : 1; +;91: +;92:static void +;93:swapfunc(a, b, n, swaptype) +;94: char *a, *b; +;95: int n, swaptype; +;96:{ +line 97 +;97: if(swaptype <= 1) +ADDRFP4 12 +INDIRI4 +CNSTI4 1 +GTI4 $23 +line 98 +;98: swapcode(long, a, b, n) +ADDRLP4 8 +ADDRFP4 8 +INDIRI4 +CVIU4 4 +CNSTI4 2 +RSHU4 +CVUI4 4 +ASGNI4 +ADDRLP4 0 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 4 +ADDRFP4 4 +INDIRP4 +ASGNP4 +LABELV $25 +ADDRLP4 12 +ADDRLP4 0 +INDIRP4 +INDIRI4 +ASGNI4 +ADDRLP4 16 +ADDRLP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 0 +ADDRLP4 16 +INDIRP4 +CNSTI4 4 +ADDP4 +ASGNP4 +ADDRLP4 16 +INDIRP4 +ADDRLP4 4 +INDIRP4 +INDIRI4 +ASGNI4 +ADDRLP4 20 +ADDRLP4 4 +INDIRP4 +ASGNP4 +ADDRLP4 4 +ADDRLP4 20 +INDIRP4 +CNSTI4 4 +ADDP4 +ASGNP4 +ADDRLP4 20 +INDIRP4 +ADDRLP4 12 +INDIRI4 +ASGNI4 +LABELV $26 +ADDRLP4 12 +ADDRLP4 8 +INDIRI4 +CNSTI4 1 +SUBI4 +ASGNI4 +ADDRLP4 8 +ADDRLP4 12 +INDIRI4 +ASGNI4 +ADDRLP4 12 +INDIRI4 +CNSTI4 0 +GTI4 $25 +ADDRGP4 $24 +JUMPV +LABELV $23 +line 100 +;99: else +;100: swapcode(char, a, b, n) +ADDRLP4 8 +ADDRFP4 8 +INDIRI4 +CVIU4 4 +CVUI4 4 +ASGNI4 +ADDRLP4 0 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 4 +ADDRFP4 4 +INDIRP4 +ASGNP4 +LABELV $28 +ADDRLP4 12 +ADDRLP4 0 +INDIRP4 +INDIRI1 +ASGNI1 +ADDRLP4 16 +ADDRLP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 0 +ADDRLP4 16 +INDIRP4 +CNSTI4 1 +ADDP4 +ASGNP4 +ADDRLP4 16 +INDIRP4 +ADDRLP4 4 +INDIRP4 +INDIRI1 +ASGNI1 +ADDRLP4 20 +ADDRLP4 4 +INDIRP4 +ASGNP4 +ADDRLP4 4 +ADDRLP4 20 +INDIRP4 +CNSTI4 1 +ADDP4 +ASGNP4 +ADDRLP4 20 +INDIRP4 +ADDRLP4 12 +INDIRI1 +ASGNI1 +LABELV $29 +ADDRLP4 12 +ADDRLP4 8 +INDIRI4 +CNSTI4 1 +SUBI4 +ASGNI4 +ADDRLP4 8 +ADDRLP4 12 +INDIRI4 +ASGNI4 +ADDRLP4 12 +INDIRI4 +CNSTI4 0 +GTI4 $28 +LABELV $24 +line 101 +;101:} +LABELV $22 +endproc swapfunc 24 0 +proc med3 40 8 +line 117 +;102: +;103:#define swap(a, b) \ +;104: if (swaptype == 0) { \ +;105: long t = *(long *)(a); \ +;106: *(long *)(a) = *(long *)(b); \ +;107: *(long *)(b) = t; \ +;108: } else \ +;109: swapfunc(a, b, es, swaptype) +;110: +;111:#define vecswap(a, b, n) if ((n) > 0) swapfunc(a, b, n, swaptype) +;112: +;113:static char * +;114:med3(a, b, c, cmp) +;115: char *a, *b, *c; +;116: cmp_t *cmp; +;117:{ +line 118 +;118: return cmp(a, b) < 0 ? +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRFP4 4 +INDIRP4 +ARGP4 +ADDRLP4 20 +ADDRFP4 12 +INDIRP4 +CALLI4 +ASGNI4 +ADDRLP4 20 +INDIRI4 +CNSTI4 0 +GEI4 $37 +ADDRFP4 4 +INDIRP4 +ARGP4 +ADDRFP4 8 +INDIRP4 +ARGP4 +ADDRLP4 24 +ADDRFP4 12 +INDIRP4 +CALLI4 +ASGNI4 +ADDRLP4 24 +INDIRI4 +CNSTI4 0 +GEI4 $39 +ADDRLP4 4 +ADDRFP4 4 +INDIRP4 +ASGNP4 +ADDRGP4 $40 +JUMPV +LABELV $39 +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRFP4 8 +INDIRP4 +ARGP4 +ADDRLP4 28 +ADDRFP4 12 +INDIRP4 +CALLI4 +ASGNI4 +ADDRLP4 28 +INDIRI4 +CNSTI4 0 +GEI4 $41 +ADDRLP4 8 +ADDRFP4 8 +INDIRP4 +ASGNP4 +ADDRGP4 $42 +JUMPV +LABELV $41 +ADDRLP4 8 +ADDRFP4 0 +INDIRP4 +ASGNP4 +LABELV $42 +ADDRLP4 4 +ADDRLP4 8 +INDIRP4 +ASGNP4 +LABELV $40 +ADDRLP4 0 +ADDRLP4 4 +INDIRP4 +ASGNP4 +ADDRGP4 $38 +JUMPV +LABELV $37 +ADDRFP4 4 +INDIRP4 +ARGP4 +ADDRFP4 8 +INDIRP4 +ARGP4 +ADDRLP4 32 +ADDRFP4 12 +INDIRP4 +CALLI4 +ASGNI4 +ADDRLP4 32 +INDIRI4 +CNSTI4 0 +LEI4 $43 +ADDRLP4 12 +ADDRFP4 4 +INDIRP4 +ASGNP4 +ADDRGP4 $44 +JUMPV +LABELV $43 +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRFP4 8 +INDIRP4 +ARGP4 +ADDRLP4 36 +ADDRFP4 12 +INDIRP4 +CALLI4 +ASGNI4 +ADDRLP4 36 +INDIRI4 +CNSTI4 0 +GEI4 $45 +ADDRLP4 16 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRGP4 $46 +JUMPV +LABELV $45 +ADDRLP4 16 +ADDRFP4 8 +INDIRP4 +ASGNP4 +LABELV $46 +ADDRLP4 12 +ADDRLP4 16 +INDIRP4 +ASGNP4 +LABELV $44 +ADDRLP4 0 +ADDRLP4 12 +INDIRP4 +ASGNP4 +LABELV $38 +ADDRLP4 0 +INDIRP4 +RETP4 +LABELV $31 +endproc med3 40 8 +export qsort +proc qsort 104 16 +line 128 +;119: (cmp(b, c) < 0 ? b : (cmp(a, c) < 0 ? c : a )) +;120: :(cmp(b, c) > 0 ? b : (cmp(a, c) < 0 ? a : c )); +;121:} +;122: +;123:void +;124:qsort(a, n, es, cmp) +;125: void *a; +;126: size_t n, es; +;127: cmp_t *cmp; +;128:{ +LABELV $48 +line 132 +;129: char *pa, *pb, *pc, *pd, *pl, *pm, *pn; +;130: int d, r, swaptype, swap_cnt; +;131: +;132:loop: SWAPINIT(a, es); +ADDRLP4 52 +CNSTU4 3 +ASGNU4 +ADDRLP4 56 +CNSTU4 0 +ASGNU4 +ADDRFP4 0 +INDIRP4 +CVPU4 4 +CVUI4 4 +CVIU4 4 +ADDRLP4 52 +INDIRU4 +BANDU4 +ADDRLP4 56 +INDIRU4 +NEU4 $53 +ADDRFP4 8 +INDIRI4 +CVIU4 4 +ADDRLP4 52 +INDIRU4 +BANDU4 +ADDRLP4 56 +INDIRU4 +EQU4 $51 +LABELV $53 +ADDRLP4 44 +CNSTI4 2 +ASGNI4 +ADDRGP4 $52 +JUMPV +LABELV $51 +ADDRFP4 8 +INDIRI4 +CVIU4 4 +CNSTU4 4 +NEU4 $54 +ADDRLP4 48 +CNSTI4 0 +ASGNI4 +ADDRGP4 $55 +JUMPV +LABELV $54 +ADDRLP4 48 +CNSTI4 1 +ASGNI4 +LABELV $55 +ADDRLP4 44 +ADDRLP4 48 +INDIRI4 +ASGNI4 +LABELV $52 +ADDRLP4 16 +ADDRLP4 44 +INDIRI4 +ASGNI4 +line 133 +;133: swap_cnt = 0; +ADDRLP4 28 +CNSTI4 0 +ASGNI4 +line 134 +;134: if (n < 7) { +ADDRFP4 4 +INDIRI4 +CNSTI4 7 +GEI4 $56 +line 135 +;135: for (pm = (char *)a + es; pm < (char *)a + n * es; pm += es) +ADDRLP4 32 +ADDRFP4 8 +INDIRI4 +ADDRFP4 0 +INDIRP4 +ADDP4 +ASGNP4 +ADDRGP4 $61 +JUMPV +LABELV $58 +line 136 +;136: for (pl = pm; pl > (char *)a && cmp(pl - es, pl) > 0; +ADDRLP4 0 +ADDRLP4 32 +INDIRP4 +ASGNP4 +ADDRGP4 $65 +JUMPV +LABELV $62 +line 138 +;137: pl -= es) +;138: swap(pl, pl - es); +ADDRLP4 16 +INDIRI4 +CNSTI4 0 +NEI4 $66 +ADDRLP4 60 +ADDRLP4 0 +INDIRP4 +INDIRI4 +ASGNI4 +ADDRLP4 0 +INDIRP4 +ADDRLP4 0 +INDIRP4 +ADDRFP4 8 +INDIRI4 +SUBP4 +INDIRI4 +ASGNI4 +ADDRLP4 0 +INDIRP4 +ADDRFP4 8 +INDIRI4 +SUBP4 +ADDRLP4 60 +INDIRI4 +ASGNI4 +ADDRGP4 $67 +JUMPV +LABELV $66 +ADDRLP4 0 +INDIRP4 +ARGP4 +ADDRLP4 64 +ADDRFP4 8 +INDIRI4 +ASGNI4 +ADDRLP4 0 +INDIRP4 +ADDRLP4 64 +INDIRI4 +SUBP4 +ARGP4 +ADDRLP4 64 +INDIRI4 +ARGI4 +ADDRLP4 16 +INDIRI4 +ARGI4 +ADDRGP4 swapfunc +CALLV +pop +LABELV $67 +LABELV $63 +line 137 +ADDRLP4 0 +ADDRLP4 0 +INDIRP4 +ADDRFP4 8 +INDIRI4 +SUBP4 +ASGNP4 +LABELV $65 +line 136 +ADDRLP4 0 +INDIRP4 +CVPU4 4 +ADDRFP4 0 +INDIRP4 +CVPU4 4 +LEU4 $68 +ADDRLP4 0 +INDIRP4 +ADDRFP4 8 +INDIRI4 +SUBP4 +ARGP4 +ADDRLP4 0 +INDIRP4 +ARGP4 +ADDRLP4 72 +ADDRFP4 12 +INDIRP4 +CALLI4 +ASGNI4 +ADDRLP4 72 +INDIRI4 +CNSTI4 0 +GTI4 $62 +LABELV $68 +LABELV $59 +line 135 +ADDRLP4 32 +ADDRFP4 8 +INDIRI4 +ADDRLP4 32 +INDIRP4 +ADDP4 +ASGNP4 +LABELV $61 +ADDRLP4 32 +INDIRP4 +CVPU4 4 +ADDRFP4 4 +INDIRI4 +ADDRFP4 8 +INDIRI4 +MULI4 +ADDRFP4 0 +INDIRP4 +ADDP4 +CVPU4 4 +LTU4 $58 +line 139 +;139: return; +ADDRGP4 $47 +JUMPV +LABELV $56 +line 141 +;140: } +;141: pm = (char *)a + (n / 2) * es; +ADDRLP4 32 +ADDRFP4 4 +INDIRI4 +CNSTI4 2 +DIVI4 +ADDRFP4 8 +INDIRI4 +MULI4 +ADDRFP4 0 +INDIRP4 +ADDP4 +ASGNP4 +line 142 +;142: if (n > 7) { +ADDRFP4 4 +INDIRI4 +CNSTI4 7 +LEI4 $69 +line 143 +;143: pl = a; +ADDRLP4 0 +ADDRFP4 0 +INDIRP4 +ASGNP4 +line 144 +;144: pn = (char *)a + (n - 1) * es; +ADDRLP4 36 +ADDRFP4 4 +INDIRI4 +CNSTI4 1 +SUBI4 +ADDRFP4 8 +INDIRI4 +MULI4 +ADDRFP4 0 +INDIRP4 +ADDP4 +ASGNP4 +line 145 +;145: if (n > 40) { +ADDRFP4 4 +INDIRI4 +CNSTI4 40 +LEI4 $71 +line 146 +;146: d = (n / 8) * es; +ADDRLP4 40 +ADDRFP4 4 +INDIRI4 +CNSTI4 8 +DIVI4 +ADDRFP4 8 +INDIRI4 +MULI4 +ASGNI4 +line 147 +;147: pl = med3(pl, pl + d, pl + 2 * d, cmp); +ADDRLP4 0 +INDIRP4 +ARGP4 +ADDRLP4 64 +ADDRLP4 40 +INDIRI4 +ASGNI4 +ADDRLP4 64 +INDIRI4 +ADDRLP4 0 +INDIRP4 +ADDP4 +ARGP4 +ADDRLP4 64 +INDIRI4 +CNSTI4 1 +LSHI4 +ADDRLP4 0 +INDIRP4 +ADDP4 +ARGP4 +ADDRFP4 12 +INDIRP4 +ARGP4 +ADDRLP4 68 +ADDRGP4 med3 +CALLP4 +ASGNP4 +ADDRLP4 0 +ADDRLP4 68 +INDIRP4 +ASGNP4 +line 148 +;148: pm = med3(pm - d, pm, pm + d, cmp); +ADDRLP4 76 +ADDRLP4 40 +INDIRI4 +ASGNI4 +ADDRLP4 32 +INDIRP4 +ADDRLP4 76 +INDIRI4 +SUBP4 +ARGP4 +ADDRLP4 32 +INDIRP4 +ARGP4 +ADDRLP4 76 +INDIRI4 +ADDRLP4 32 +INDIRP4 +ADDP4 +ARGP4 +ADDRFP4 12 +INDIRP4 +ARGP4 +ADDRLP4 80 +ADDRGP4 med3 +CALLP4 +ASGNP4 +ADDRLP4 32 +ADDRLP4 80 +INDIRP4 +ASGNP4 +line 149 +;149: pn = med3(pn - 2 * d, pn - d, pn, cmp); +ADDRLP4 88 +ADDRLP4 40 +INDIRI4 +ASGNI4 +ADDRLP4 36 +INDIRP4 +ADDRLP4 88 +INDIRI4 +CNSTI4 1 +LSHI4 +SUBP4 +ARGP4 +ADDRLP4 36 +INDIRP4 +ADDRLP4 88 +INDIRI4 +SUBP4 +ARGP4 +ADDRLP4 36 +INDIRP4 +ARGP4 +ADDRFP4 12 +INDIRP4 +ARGP4 +ADDRLP4 92 +ADDRGP4 med3 +CALLP4 +ASGNP4 +ADDRLP4 36 +ADDRLP4 92 +INDIRP4 +ASGNP4 +line 150 +;150: } +LABELV $71 +line 151 +;151: pm = med3(pl, pm, pn, cmp); +ADDRLP4 0 +INDIRP4 +ARGP4 +ADDRLP4 32 +INDIRP4 +ARGP4 +ADDRLP4 36 +INDIRP4 +ARGP4 +ADDRFP4 12 +INDIRP4 +ARGP4 +ADDRLP4 60 +ADDRGP4 med3 +CALLP4 +ASGNP4 +ADDRLP4 32 +ADDRLP4 60 +INDIRP4 +ASGNP4 +line 152 +;152: } +LABELV $69 +line 153 +;153: swap(a, pm); +ADDRLP4 16 +INDIRI4 +CNSTI4 0 +NEI4 $73 +ADDRLP4 60 +ADDRFP4 0 +INDIRP4 +INDIRI4 +ASGNI4 +ADDRFP4 0 +INDIRP4 +ADDRLP4 32 +INDIRP4 +INDIRI4 +ASGNI4 +ADDRLP4 32 +INDIRP4 +ADDRLP4 60 +INDIRI4 +ASGNI4 +ADDRGP4 $74 +JUMPV +LABELV $73 +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRLP4 32 +INDIRP4 +ARGP4 +ADDRFP4 8 +INDIRI4 +ARGI4 +ADDRLP4 16 +INDIRI4 +ARGI4 +ADDRGP4 swapfunc +CALLV +pop +LABELV $74 +line 154 +;154: pa = pb = (char *)a + es; +ADDRLP4 60 +ADDRFP4 8 +INDIRI4 +ADDRFP4 0 +INDIRP4 +ADDP4 +ASGNP4 +ADDRLP4 4 +ADDRLP4 60 +INDIRP4 +ASGNP4 +ADDRLP4 20 +ADDRLP4 60 +INDIRP4 +ASGNP4 +line 156 +;155: +;156: pc = pd = (char *)a + (n - 1) * es; +ADDRLP4 64 +ADDRFP4 4 +INDIRI4 +CNSTI4 1 +SUBI4 +ADDRFP4 8 +INDIRI4 +MULI4 +ADDRFP4 0 +INDIRP4 +ADDP4 +ASGNP4 +ADDRLP4 24 +ADDRLP4 64 +INDIRP4 +ASGNP4 +ADDRLP4 8 +ADDRLP4 64 +INDIRP4 +ASGNP4 +line 157 +;157: for (;;) { +ADDRGP4 $80 +JUMPV +LABELV $79 +line 158 +;158: while (pb <= pc && (r = cmp(pb, a)) <= 0) { +line 159 +;159: if (r == 0) { +ADDRLP4 12 +INDIRI4 +CNSTI4 0 +NEI4 $82 +line 160 +;160: swap_cnt = 1; +ADDRLP4 28 +CNSTI4 1 +ASGNI4 +line 161 +;161: swap(pa, pb); +ADDRLP4 16 +INDIRI4 +CNSTI4 0 +NEI4 $84 +ADDRLP4 68 +ADDRLP4 20 +INDIRP4 +INDIRI4 +ASGNI4 +ADDRLP4 20 +INDIRP4 +ADDRLP4 4 +INDIRP4 +INDIRI4 +ASGNI4 +ADDRLP4 4 +INDIRP4 +ADDRLP4 68 +INDIRI4 +ASGNI4 +ADDRGP4 $85 +JUMPV +LABELV $84 +ADDRLP4 20 +INDIRP4 +ARGP4 +ADDRLP4 4 +INDIRP4 +ARGP4 +ADDRFP4 8 +INDIRI4 +ARGI4 +ADDRLP4 16 +INDIRI4 +ARGI4 +ADDRGP4 swapfunc +CALLV +pop +LABELV $85 +line 162 +;162: pa += es; +ADDRLP4 20 +ADDRFP4 8 +INDIRI4 +ADDRLP4 20 +INDIRP4 +ADDP4 +ASGNP4 +line 163 +;163: } +LABELV $82 +line 164 +;164: pb += es; +ADDRLP4 4 +ADDRFP4 8 +INDIRI4 +ADDRLP4 4 +INDIRP4 +ADDP4 +ASGNP4 +line 165 +;165: } +LABELV $80 +line 158 +ADDRLP4 4 +INDIRP4 +CVPU4 4 +ADDRLP4 8 +INDIRP4 +CVPU4 4 +GTU4 $86 +ADDRLP4 4 +INDIRP4 +ARGP4 +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRLP4 72 +ADDRFP4 12 +INDIRP4 +CALLI4 +ASGNI4 +ADDRLP4 12 +ADDRLP4 72 +INDIRI4 +ASGNI4 +ADDRLP4 72 +INDIRI4 +CNSTI4 0 +LEI4 $79 +LABELV $86 +ADDRGP4 $88 +JUMPV +LABELV $87 +line 166 +;166: while (pb <= pc && (r = cmp(pc, a)) >= 0) { +line 167 +;167: if (r == 0) { +ADDRLP4 12 +INDIRI4 +CNSTI4 0 +NEI4 $90 +line 168 +;168: swap_cnt = 1; +ADDRLP4 28 +CNSTI4 1 +ASGNI4 +line 169 +;169: swap(pc, pd); +ADDRLP4 16 +INDIRI4 +CNSTI4 0 +NEI4 $92 +ADDRLP4 76 +ADDRLP4 8 +INDIRP4 +INDIRI4 +ASGNI4 +ADDRLP4 8 +INDIRP4 +ADDRLP4 24 +INDIRP4 +INDIRI4 +ASGNI4 +ADDRLP4 24 +INDIRP4 +ADDRLP4 76 +INDIRI4 +ASGNI4 +ADDRGP4 $93 +JUMPV +LABELV $92 +ADDRLP4 8 +INDIRP4 +ARGP4 +ADDRLP4 24 +INDIRP4 +ARGP4 +ADDRFP4 8 +INDIRI4 +ARGI4 +ADDRLP4 16 +INDIRI4 +ARGI4 +ADDRGP4 swapfunc +CALLV +pop +LABELV $93 +line 170 +;170: pd -= es; +ADDRLP4 24 +ADDRLP4 24 +INDIRP4 +ADDRFP4 8 +INDIRI4 +SUBP4 +ASGNP4 +line 171 +;171: } +LABELV $90 +line 172 +;172: pc -= es; +ADDRLP4 8 +ADDRLP4 8 +INDIRP4 +ADDRFP4 8 +INDIRI4 +SUBP4 +ASGNP4 +line 173 +;173: } +LABELV $88 +line 166 +ADDRLP4 4 +INDIRP4 +CVPU4 4 +ADDRLP4 8 +INDIRP4 +CVPU4 4 +GTU4 $94 +ADDRLP4 8 +INDIRP4 +ARGP4 +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRLP4 80 +ADDRFP4 12 +INDIRP4 +CALLI4 +ASGNI4 +ADDRLP4 12 +ADDRLP4 80 +INDIRI4 +ASGNI4 +ADDRLP4 80 +INDIRI4 +CNSTI4 0 +GEI4 $87 +LABELV $94 +line 174 +;174: if (pb > pc) +ADDRLP4 4 +INDIRP4 +CVPU4 4 +ADDRLP4 8 +INDIRP4 +CVPU4 4 +LEU4 $95 +line 175 +;175: break; +ADDRGP4 $77 +JUMPV +LABELV $95 +line 176 +;176: swap(pb, pc); +ADDRLP4 16 +INDIRI4 +CNSTI4 0 +NEI4 $97 +ADDRLP4 84 +ADDRLP4 4 +INDIRP4 +INDIRI4 +ASGNI4 +ADDRLP4 4 +INDIRP4 +ADDRLP4 8 +INDIRP4 +INDIRI4 +ASGNI4 +ADDRLP4 8 +INDIRP4 +ADDRLP4 84 +INDIRI4 +ASGNI4 +ADDRGP4 $98 +JUMPV +LABELV $97 +ADDRLP4 4 +INDIRP4 +ARGP4 +ADDRLP4 8 +INDIRP4 +ARGP4 +ADDRFP4 8 +INDIRI4 +ARGI4 +ADDRLP4 16 +INDIRI4 +ARGI4 +ADDRGP4 swapfunc +CALLV +pop +LABELV $98 +line 177 +;177: swap_cnt = 1; +ADDRLP4 28 +CNSTI4 1 +ASGNI4 +line 178 +;178: pb += es; +ADDRLP4 4 +ADDRFP4 8 +INDIRI4 +ADDRLP4 4 +INDIRP4 +ADDP4 +ASGNP4 +line 179 +;179: pc -= es; +ADDRLP4 8 +ADDRLP4 8 +INDIRP4 +ADDRFP4 8 +INDIRI4 +SUBP4 +ASGNP4 +line 180 +;180: } +line 157 +ADDRGP4 $80 +JUMPV +LABELV $77 +line 181 +;181: if (swap_cnt == 0) { /* Switch to insertion sort */ +ADDRLP4 28 +INDIRI4 +CNSTI4 0 +NEI4 $99 +line 182 +;182: for (pm = (char *)a + es; pm < (char *)a + n * es; pm += es) +ADDRLP4 32 +ADDRFP4 8 +INDIRI4 +ADDRFP4 0 +INDIRP4 +ADDP4 +ASGNP4 +ADDRGP4 $104 +JUMPV +LABELV $101 +line 183 +;183: for (pl = pm; pl > (char *)a && cmp(pl - es, pl) > 0; +ADDRLP4 0 +ADDRLP4 32 +INDIRP4 +ASGNP4 +ADDRGP4 $108 +JUMPV +LABELV $105 +line 185 +;184: pl -= es) +;185: swap(pl, pl - es); +ADDRLP4 16 +INDIRI4 +CNSTI4 0 +NEI4 $109 +ADDRLP4 68 +ADDRLP4 0 +INDIRP4 +INDIRI4 +ASGNI4 +ADDRLP4 0 +INDIRP4 +ADDRLP4 0 +INDIRP4 +ADDRFP4 8 +INDIRI4 +SUBP4 +INDIRI4 +ASGNI4 +ADDRLP4 0 +INDIRP4 +ADDRFP4 8 +INDIRI4 +SUBP4 +ADDRLP4 68 +INDIRI4 +ASGNI4 +ADDRGP4 $110 +JUMPV +LABELV $109 +ADDRLP4 0 +INDIRP4 +ARGP4 +ADDRLP4 72 +ADDRFP4 8 +INDIRI4 +ASGNI4 +ADDRLP4 0 +INDIRP4 +ADDRLP4 72 +INDIRI4 +SUBP4 +ARGP4 +ADDRLP4 72 +INDIRI4 +ARGI4 +ADDRLP4 16 +INDIRI4 +ARGI4 +ADDRGP4 swapfunc +CALLV +pop +LABELV $110 +LABELV $106 +line 184 +ADDRLP4 0 +ADDRLP4 0 +INDIRP4 +ADDRFP4 8 +INDIRI4 +SUBP4 +ASGNP4 +LABELV $108 +line 183 +ADDRLP4 0 +INDIRP4 +CVPU4 4 +ADDRFP4 0 +INDIRP4 +CVPU4 4 +LEU4 $111 +ADDRLP4 0 +INDIRP4 +ADDRFP4 8 +INDIRI4 +SUBP4 +ARGP4 +ADDRLP4 0 +INDIRP4 +ARGP4 +ADDRLP4 80 +ADDRFP4 12 +INDIRP4 +CALLI4 +ASGNI4 +ADDRLP4 80 +INDIRI4 +CNSTI4 0 +GTI4 $105 +LABELV $111 +LABELV $102 +line 182 +ADDRLP4 32 +ADDRFP4 8 +INDIRI4 +ADDRLP4 32 +INDIRP4 +ADDP4 +ASGNP4 +LABELV $104 +ADDRLP4 32 +INDIRP4 +CVPU4 4 +ADDRFP4 4 +INDIRI4 +ADDRFP4 8 +INDIRI4 +MULI4 +ADDRFP4 0 +INDIRP4 +ADDP4 +CVPU4 4 +LTU4 $101 +line 186 +;186: return; +ADDRGP4 $47 +JUMPV +LABELV $99 +line 189 +;187: } +;188: +;189: pn = (char *)a + n * es; +ADDRLP4 36 +ADDRFP4 4 +INDIRI4 +ADDRFP4 8 +INDIRI4 +MULI4 +ADDRFP4 0 +INDIRP4 +ADDP4 +ASGNP4 +line 190 +;190: r = min(pa - (char *)a, pb - pa); +ADDRLP4 72 +ADDRLP4 20 +INDIRP4 +CVPU4 4 +ASGNU4 +ADDRLP4 72 +INDIRU4 +ADDRFP4 0 +INDIRP4 +CVPU4 4 +SUBU4 +CVUI4 4 +ADDRLP4 4 +INDIRP4 +CVPU4 4 +ADDRLP4 72 +INDIRU4 +SUBU4 +CVUI4 4 +GEI4 $113 +ADDRLP4 68 +ADDRLP4 20 +INDIRP4 +CVPU4 4 +ADDRFP4 0 +INDIRP4 +CVPU4 4 +SUBU4 +CVUI4 4 +ASGNI4 +ADDRGP4 $114 +JUMPV +LABELV $113 +ADDRLP4 68 +ADDRLP4 4 +INDIRP4 +CVPU4 4 +ADDRLP4 20 +INDIRP4 +CVPU4 4 +SUBU4 +CVUI4 4 +ASGNI4 +LABELV $114 +ADDRLP4 12 +ADDRLP4 68 +INDIRI4 +ASGNI4 +line 191 +;191: vecswap(a, pb - r, r); +ADDRLP4 12 +INDIRI4 +CNSTI4 0 +LEI4 $115 +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRLP4 4 +INDIRP4 +ADDRLP4 12 +INDIRI4 +SUBP4 +ARGP4 +ADDRLP4 12 +INDIRI4 +ARGI4 +ADDRLP4 16 +INDIRI4 +ARGI4 +ADDRGP4 swapfunc +CALLV +pop +LABELV $115 +line 192 +;192: r = min(pd - pc, pn - pd - es); +ADDRLP4 84 +ADDRLP4 24 +INDIRP4 +CVPU4 4 +ASGNU4 +ADDRLP4 84 +INDIRU4 +ADDRLP4 8 +INDIRP4 +CVPU4 4 +SUBU4 +CVUI4 4 +ADDRLP4 36 +INDIRP4 +CVPU4 4 +ADDRLP4 84 +INDIRU4 +SUBU4 +CVUI4 4 +ADDRFP4 8 +INDIRI4 +SUBI4 +GEI4 $118 +ADDRLP4 80 +ADDRLP4 24 +INDIRP4 +CVPU4 4 +ADDRLP4 8 +INDIRP4 +CVPU4 4 +SUBU4 +CVUI4 4 +ASGNI4 +ADDRGP4 $119 +JUMPV +LABELV $118 +ADDRLP4 80 +ADDRLP4 36 +INDIRP4 +CVPU4 4 +ADDRLP4 24 +INDIRP4 +CVPU4 4 +SUBU4 +CVUI4 4 +ADDRFP4 8 +INDIRI4 +SUBI4 +ASGNI4 +LABELV $119 +ADDRLP4 12 +ADDRLP4 80 +INDIRI4 +ASGNI4 +line 193 +;193: vecswap(pb, pn - r, r); +ADDRLP4 12 +INDIRI4 +CNSTI4 0 +LEI4 $120 +ADDRLP4 4 +INDIRP4 +ARGP4 +ADDRLP4 36 +INDIRP4 +ADDRLP4 12 +INDIRI4 +SUBP4 +ARGP4 +ADDRLP4 12 +INDIRI4 +ARGI4 +ADDRLP4 16 +INDIRI4 +ARGI4 +ADDRGP4 swapfunc +CALLV +pop +LABELV $120 +line 194 +;194: if ((r = pb - pa) > es) +ADDRLP4 92 +ADDRLP4 4 +INDIRP4 +CVPU4 4 +ADDRLP4 20 +INDIRP4 +CVPU4 4 +SUBU4 +CVUI4 4 +ASGNI4 +ADDRLP4 12 +ADDRLP4 92 +INDIRI4 +ASGNI4 +ADDRLP4 92 +INDIRI4 +ADDRFP4 8 +INDIRI4 +LEI4 $122 +line 195 +;195: qsort(a, r / es, es, cmp); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRLP4 96 +ADDRFP4 8 +INDIRI4 +ASGNI4 +ADDRLP4 12 +INDIRI4 +ADDRLP4 96 +INDIRI4 +DIVI4 +ARGI4 +ADDRLP4 96 +INDIRI4 +ARGI4 +ADDRFP4 12 +INDIRP4 +ARGP4 +ADDRGP4 qsort +CALLV +pop +LABELV $122 +line 196 +;196: if ((r = pd - pc) > es) { +ADDRLP4 100 +ADDRLP4 24 +INDIRP4 +CVPU4 4 +ADDRLP4 8 +INDIRP4 +CVPU4 4 +SUBU4 +CVUI4 4 +ASGNI4 +ADDRLP4 12 +ADDRLP4 100 +INDIRI4 +ASGNI4 +ADDRLP4 100 +INDIRI4 +ADDRFP4 8 +INDIRI4 +LEI4 $124 +line 198 +;197: /* Iterate rather than recurse to save stack space */ +;198: a = pn - r; +ADDRFP4 0 +ADDRLP4 36 +INDIRP4 +ADDRLP4 12 +INDIRI4 +SUBP4 +ASGNP4 +line 199 +;199: n = r / es; +ADDRFP4 4 +ADDRLP4 12 +INDIRI4 +ADDRFP4 8 +INDIRI4 +DIVI4 +ASGNI4 +line 200 +;200: goto loop; +ADDRGP4 $48 +JUMPV +LABELV $124 +line 203 +;201: } +;202:/* qsort(pn - r, r / es, es, cmp);*/ +;203:} +LABELV $47 +endproc qsort 104 16 +export strlen +proc strlen 4 0 +line 213 +;204: +;205://================================================================================== +;206: +;207: +;208:// this file is excluded from release builds because of intrinsics +;209: +;210:// bk001211 - gcc errors on compiling strcpy: parse error before `__extension__' +;211:#if defined ( Q3_VM ) +;212: +;213:size_t strlen( const char *string ) { +line 216 +;214: const char *s; +;215: +;216: s = string; +ADDRLP4 0 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRGP4 $128 +JUMPV +LABELV $127 +line 217 +;217: while ( *s ) { +line 218 +;218: s++; +ADDRLP4 0 +ADDRLP4 0 +INDIRP4 +CNSTI4 1 +ADDP4 +ASGNP4 +line 219 +;219: } +LABELV $128 +line 217 +ADDRLP4 0 +INDIRP4 +INDIRI1 +CVII4 1 +CNSTI4 0 +NEI4 $127 +line 220 +;220: return s - string; +ADDRLP4 0 +INDIRP4 +CVPU4 4 +ADDRFP4 0 +INDIRP4 +CVPU4 4 +SUBU4 +CVUI4 4 +RETI4 +LABELV $126 +endproc strlen 4 0 +export strcat +proc strcat 16 0 +line 224 +;221:} +;222: +;223: +;224:char *strcat( char *strDestination, const char *strSource ) { +line 227 +;225: char *s; +;226: +;227: s = strDestination; +ADDRLP4 0 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRGP4 $132 +JUMPV +LABELV $131 +line 228 +;228: while ( *s ) { +line 229 +;229: s++; +ADDRLP4 0 +ADDRLP4 0 +INDIRP4 +CNSTI4 1 +ADDP4 +ASGNP4 +line 230 +;230: } +LABELV $132 +line 228 +ADDRLP4 0 +INDIRP4 +INDIRI1 +CVII4 1 +CNSTI4 0 +NEI4 $131 +ADDRGP4 $135 +JUMPV +LABELV $134 +line 231 +;231: while ( *strSource ) { +line 232 +;232: *s++ = *strSource++; +ADDRLP4 4 +ADDRLP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 12 +CNSTI4 1 +ASGNI4 +ADDRLP4 0 +ADDRLP4 4 +INDIRP4 +ADDRLP4 12 +INDIRI4 +ADDP4 +ASGNP4 +ADDRLP4 8 +ADDRFP4 4 +INDIRP4 +ASGNP4 +ADDRFP4 4 +ADDRLP4 8 +INDIRP4 +ADDRLP4 12 +INDIRI4 +ADDP4 +ASGNP4 +ADDRLP4 4 +INDIRP4 +ADDRLP4 8 +INDIRP4 +INDIRI1 +ASGNI1 +line 233 +;233: } +LABELV $135 +line 231 +ADDRFP4 4 +INDIRP4 +INDIRI1 +CVII4 1 +CNSTI4 0 +NEI4 $134 +line 234 +;234: *s = 0; +ADDRLP4 0 +INDIRP4 +CNSTI1 0 +ASGNI1 +line 235 +;235: return strDestination; +ADDRFP4 0 +INDIRP4 +RETP4 +LABELV $130 +endproc strcat 16 0 +export strcpy +proc strcpy 16 0 +line 238 +;236:} +;237: +;238:char *strcpy( char *strDestination, const char *strSource ) { +line 241 +;239: char *s; +;240: +;241: s = strDestination; +ADDRLP4 0 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRGP4 $139 +JUMPV +LABELV $138 +line 242 +;242: while ( *strSource ) { +line 243 +;243: *s++ = *strSource++; +ADDRLP4 4 +ADDRLP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 12 +CNSTI4 1 +ASGNI4 +ADDRLP4 0 +ADDRLP4 4 +INDIRP4 +ADDRLP4 12 +INDIRI4 +ADDP4 +ASGNP4 +ADDRLP4 8 +ADDRFP4 4 +INDIRP4 +ASGNP4 +ADDRFP4 4 +ADDRLP4 8 +INDIRP4 +ADDRLP4 12 +INDIRI4 +ADDP4 +ASGNP4 +ADDRLP4 4 +INDIRP4 +ADDRLP4 8 +INDIRP4 +INDIRI1 +ASGNI1 +line 244 +;244: } +LABELV $139 +line 242 +ADDRFP4 4 +INDIRP4 +INDIRI1 +CVII4 1 +CNSTI4 0 +NEI4 $138 +line 245 +;245: *s = 0; +ADDRLP4 0 +INDIRP4 +CNSTI1 0 +ASGNI1 +line 246 +;246: return strDestination; +ADDRFP4 0 +INDIRP4 +RETP4 +LABELV $137 +endproc strcpy 16 0 +export strcmp +proc strcmp 12 0 +line 250 +;247:} +;248: +;249: +;250:int strcmp( const char *string1, const char *string2 ) { +ADDRGP4 $143 +JUMPV +LABELV $142 +line 251 +;251: while ( *string1 == *string2 && *string1 && *string2 ) { +line 252 +;252: string1++; +ADDRFP4 0 +ADDRFP4 0 +INDIRP4 +CNSTI4 1 +ADDP4 +ASGNP4 +line 253 +;253: string2++; +ADDRFP4 4 +ADDRFP4 4 +INDIRP4 +CNSTI4 1 +ADDP4 +ASGNP4 +line 254 +;254: } +LABELV $143 +line 251 +ADDRLP4 0 +ADDRFP4 0 +INDIRP4 +INDIRI1 +CVII4 1 +ASGNI4 +ADDRLP4 4 +ADDRFP4 4 +INDIRP4 +INDIRI1 +CVII4 1 +ASGNI4 +ADDRLP4 0 +INDIRI4 +ADDRLP4 4 +INDIRI4 +NEI4 $146 +ADDRLP4 8 +CNSTI4 0 +ASGNI4 +ADDRLP4 0 +INDIRI4 +ADDRLP4 8 +INDIRI4 +EQI4 $146 +ADDRLP4 4 +INDIRI4 +ADDRLP4 8 +INDIRI4 +NEI4 $142 +LABELV $146 +line 255 +;255: return *string1 - *string2; +ADDRFP4 0 +INDIRP4 +INDIRI1 +CVII4 1 +ADDRFP4 4 +INDIRP4 +INDIRI1 +CVII4 1 +SUBI4 +RETI4 +LABELV $141 +endproc strcmp 12 0 +export strchr +proc strchr 0 0 +line 259 +;256:} +;257: +;258: +;259:char *strchr( const char *string, int c ) { +ADDRGP4 $149 +JUMPV +LABELV $148 +line 260 +;260: while ( *string ) { +line 261 +;261: if ( *string == c ) { +ADDRFP4 0 +INDIRP4 +INDIRI1 +CVII4 1 +ADDRFP4 4 +INDIRI4 +NEI4 $151 +line 262 +;262: return ( char * )string; +ADDRFP4 0 +INDIRP4 +RETP4 +ADDRGP4 $147 +JUMPV +LABELV $151 +line 264 +;263: } +;264: string++; +ADDRFP4 0 +ADDRFP4 0 +INDIRP4 +CNSTI4 1 +ADDP4 +ASGNP4 +line 265 +;265: } +LABELV $149 +line 260 +ADDRFP4 0 +INDIRP4 +INDIRI1 +CVII4 1 +CNSTI4 0 +NEI4 $148 +line 266 +;266: return (char *)0; +CNSTP4 0 +RETP4 +LABELV $147 +endproc strchr 0 0 +export strstr +proc strstr 8 0 +line 269 +;267:} +;268: +;269:char *strstr( const char *string, const char *strCharSet ) { +ADDRGP4 $155 +JUMPV +LABELV $154 +line 270 +;270: while ( *string ) { +line 273 +;271: int i; +;272: +;273: for ( i = 0 ; strCharSet[i] ; i++ ) { +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +ADDRGP4 $160 +JUMPV +LABELV $157 +line 274 +;274: if ( string[i] != strCharSet[i] ) { +ADDRLP4 0 +INDIRI4 +ADDRFP4 0 +INDIRP4 +ADDP4 +INDIRI1 +CVII4 1 +ADDRLP4 0 +INDIRI4 +ADDRFP4 4 +INDIRP4 +ADDP4 +INDIRI1 +CVII4 1 +EQI4 $161 +line 275 +;275: break; +ADDRGP4 $159 +JUMPV +LABELV $161 +line 277 +;276: } +;277: } +LABELV $158 +line 273 +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +LABELV $160 +ADDRLP4 0 +INDIRI4 +ADDRFP4 4 +INDIRP4 +ADDP4 +INDIRI1 +CVII4 1 +CNSTI4 0 +NEI4 $157 +LABELV $159 +line 278 +;278: if ( !strCharSet[i] ) { +ADDRLP4 0 +INDIRI4 +ADDRFP4 4 +INDIRP4 +ADDP4 +INDIRI1 +CVII4 1 +CNSTI4 0 +NEI4 $163 +line 279 +;279: return (char *)string; +ADDRFP4 0 +INDIRP4 +RETP4 +ADDRGP4 $153 +JUMPV +LABELV $163 +line 281 +;280: } +;281: string++; +ADDRFP4 0 +ADDRFP4 0 +INDIRP4 +CNSTI4 1 +ADDP4 +ASGNP4 +line 282 +;282: } +LABELV $155 +line 270 +ADDRFP4 0 +INDIRP4 +INDIRI1 +CVII4 1 +CNSTI4 0 +NEI4 $154 +line 283 +;283: return (char *)0; +CNSTP4 0 +RETP4 +LABELV $153 +endproc strstr 8 0 +export tolower +proc tolower 4 0 +line 291 +;284:} +;285:#endif // bk001211 +;286: +;287:// bk001120 - presumably needed for Mac +;288://#if !defined(_MSC_VER) && !defined(__linux__) +;289:// bk001127 - undid undo +;290:#if defined ( Q3_VM ) +;291:int tolower( int c ) { +line 292 +;292: if ( c >= 'A' && c <= 'Z' ) { +ADDRLP4 0 +ADDRFP4 0 +INDIRI4 +ASGNI4 +ADDRLP4 0 +INDIRI4 +CNSTI4 65 +LTI4 $166 +ADDRLP4 0 +INDIRI4 +CNSTI4 90 +GTI4 $166 +line 293 +;293: c += 'a' - 'A'; +ADDRFP4 0 +ADDRFP4 0 +INDIRI4 +CNSTI4 32 +ADDI4 +ASGNI4 +line 294 +;294: } +LABELV $166 +line 295 +;295: return c; +ADDRFP4 0 +INDIRI4 +RETI4 +LABELV $165 +endproc tolower 4 0 +export toupper +proc toupper 4 0 +line 299 +;296:} +;297: +;298: +;299:int toupper( int c ) { +line 300 +;300: if ( c >= 'a' && c <= 'z' ) { +ADDRLP4 0 +ADDRFP4 0 +INDIRI4 +ASGNI4 +ADDRLP4 0 +INDIRI4 +CNSTI4 97 +LTI4 $169 +ADDRLP4 0 +INDIRI4 +CNSTI4 122 +GTI4 $169 +line 301 +;301: c += 'A' - 'a'; +ADDRFP4 0 +ADDRFP4 0 +INDIRI4 +CNSTI4 -32 +ADDI4 +ASGNI4 +line 302 +;302: } +LABELV $169 +line 303 +;303: return c; +ADDRFP4 0 +INDIRI4 +RETI4 +LABELV $168 +endproc toupper 4 0 +export memmove +proc memmove 8 0 +line 309 +;304:} +;305: +;306:#endif +;307://#ifndef _MSC_VER +;308: +;309:void *memmove( void *dest, const void *src, size_t count ) { +line 312 +;310: int i; +;311: +;312: if ( dest > src ) { +ADDRFP4 0 +INDIRP4 +CVPU4 4 +ADDRFP4 4 +INDIRP4 +CVPU4 4 +LEU4 $172 +line 313 +;313: for ( i = count-1 ; i >= 0 ; i-- ) { +ADDRLP4 0 +ADDRFP4 8 +INDIRI4 +CNSTI4 1 +SUBI4 +ASGNI4 +ADDRGP4 $177 +JUMPV +LABELV $174 +line 314 +;314: ((char *)dest)[i] = ((char *)src)[i]; +ADDRLP4 0 +INDIRI4 +ADDRFP4 0 +INDIRP4 +ADDP4 +ADDRLP4 0 +INDIRI4 +ADDRFP4 4 +INDIRP4 +ADDP4 +INDIRI1 +ASGNI1 +line 315 +;315: } +LABELV $175 +line 313 +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +SUBI4 +ASGNI4 +LABELV $177 +ADDRLP4 0 +INDIRI4 +CNSTI4 0 +GEI4 $174 +line 316 +;316: } else { +ADDRGP4 $173 +JUMPV +LABELV $172 +line 317 +;317: for ( i = 0 ; i < count ; i++ ) { +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +ADDRGP4 $181 +JUMPV +LABELV $178 +line 318 +;318: ((char *)dest)[i] = ((char *)src)[i]; +ADDRLP4 0 +INDIRI4 +ADDRFP4 0 +INDIRP4 +ADDP4 +ADDRLP4 0 +INDIRI4 +ADDRFP4 4 +INDIRP4 +ADDP4 +INDIRI1 +ASGNI1 +line 319 +;319: } +LABELV $179 +line 317 +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +LABELV $181 +ADDRLP4 0 +INDIRI4 +ADDRFP4 8 +INDIRI4 +LTI4 $178 +line 320 +;320: } +LABELV $173 +line 321 +;321: return dest; +ADDRFP4 0 +INDIRP4 +RETP4 +LABELV $171 +endproc memmove 8 0 +export tan +proc tan 8 4 +line 779 +;322:} +;323: +;324: +;325:#if 0 +;326: +;327:double floor( double x ) { +;328: return (int)(x + 0x40000000) - 0x40000000; +;329:} +;330: +;331:void *memset( void *dest, int c, size_t count ) { +;332: while ( count-- ) { +;333: ((char *)dest)[count] = c; +;334: } +;335: return dest; +;336:} +;337: +;338:void *memcpy( void *dest, const void *src, size_t count ) { +;339: while ( count-- ) { +;340: ((char *)dest)[count] = ((char *)src)[count]; +;341: } +;342: return dest; +;343:} +;344: +;345:char *strncpy( char *strDest, const char *strSource, size_t count ) { +;346: char *s; +;347: +;348: s = strDest; +;349: while ( *strSource && count ) { +;350: *s++ = *strSource++; +;351: count--; +;352: } +;353: while ( count-- ) { +;354: *s++ = 0; +;355: } +;356: return strDest; +;357:} +;358: +;359:double sqrt( double x ) { +;360: float y; +;361: float delta; +;362: float maxError; +;363: +;364: if ( x <= 0 ) { +;365: return 0; +;366: } +;367: +;368: // initial guess +;369: y = x / 2; +;370: +;371: // refine +;372: maxError = x * 0.001; +;373: +;374: do { +;375: delta = ( y * y ) - x; +;376: y -= delta / ( 2 * y ); +;377: } while ( delta > maxError || delta < -maxError ); +;378: +;379: return y; +;380:} +;381: +;382: +;383:float sintable[1024] = { +;384:0.000000,0.001534,0.003068,0.004602,0.006136,0.007670,0.009204,0.010738, +;385:0.012272,0.013805,0.015339,0.016873,0.018407,0.019940,0.021474,0.023008, +;386:0.024541,0.026075,0.027608,0.029142,0.030675,0.032208,0.033741,0.035274, +;387:0.036807,0.038340,0.039873,0.041406,0.042938,0.044471,0.046003,0.047535, +;388:0.049068,0.050600,0.052132,0.053664,0.055195,0.056727,0.058258,0.059790, +;389:0.061321,0.062852,0.064383,0.065913,0.067444,0.068974,0.070505,0.072035, +;390:0.073565,0.075094,0.076624,0.078153,0.079682,0.081211,0.082740,0.084269, +;391:0.085797,0.087326,0.088854,0.090381,0.091909,0.093436,0.094963,0.096490, +;392:0.098017,0.099544,0.101070,0.102596,0.104122,0.105647,0.107172,0.108697, +;393:0.110222,0.111747,0.113271,0.114795,0.116319,0.117842,0.119365,0.120888, +;394:0.122411,0.123933,0.125455,0.126977,0.128498,0.130019,0.131540,0.133061, +;395:0.134581,0.136101,0.137620,0.139139,0.140658,0.142177,0.143695,0.145213, +;396:0.146730,0.148248,0.149765,0.151281,0.152797,0.154313,0.155828,0.157343, +;397:0.158858,0.160372,0.161886,0.163400,0.164913,0.166426,0.167938,0.169450, +;398:0.170962,0.172473,0.173984,0.175494,0.177004,0.178514,0.180023,0.181532, +;399:0.183040,0.184548,0.186055,0.187562,0.189069,0.190575,0.192080,0.193586, +;400:0.195090,0.196595,0.198098,0.199602,0.201105,0.202607,0.204109,0.205610, +;401:0.207111,0.208612,0.210112,0.211611,0.213110,0.214609,0.216107,0.217604, +;402:0.219101,0.220598,0.222094,0.223589,0.225084,0.226578,0.228072,0.229565, +;403:0.231058,0.232550,0.234042,0.235533,0.237024,0.238514,0.240003,0.241492, +;404:0.242980,0.244468,0.245955,0.247442,0.248928,0.250413,0.251898,0.253382, +;405:0.254866,0.256349,0.257831,0.259313,0.260794,0.262275,0.263755,0.265234, +;406:0.266713,0.268191,0.269668,0.271145,0.272621,0.274097,0.275572,0.277046, +;407:0.278520,0.279993,0.281465,0.282937,0.284408,0.285878,0.287347,0.288816, +;408:0.290285,0.291752,0.293219,0.294685,0.296151,0.297616,0.299080,0.300543, +;409:0.302006,0.303468,0.304929,0.306390,0.307850,0.309309,0.310767,0.312225, +;410:0.313682,0.315138,0.316593,0.318048,0.319502,0.320955,0.322408,0.323859, +;411:0.325310,0.326760,0.328210,0.329658,0.331106,0.332553,0.334000,0.335445, +;412:0.336890,0.338334,0.339777,0.341219,0.342661,0.344101,0.345541,0.346980, +;413:0.348419,0.349856,0.351293,0.352729,0.354164,0.355598,0.357031,0.358463, +;414:0.359895,0.361326,0.362756,0.364185,0.365613,0.367040,0.368467,0.369892, +;415:0.371317,0.372741,0.374164,0.375586,0.377007,0.378428,0.379847,0.381266, +;416:0.382683,0.384100,0.385516,0.386931,0.388345,0.389758,0.391170,0.392582, +;417:0.393992,0.395401,0.396810,0.398218,0.399624,0.401030,0.402435,0.403838, +;418:0.405241,0.406643,0.408044,0.409444,0.410843,0.412241,0.413638,0.415034, +;419:0.416430,0.417824,0.419217,0.420609,0.422000,0.423390,0.424780,0.426168, +;420:0.427555,0.428941,0.430326,0.431711,0.433094,0.434476,0.435857,0.437237, +;421:0.438616,0.439994,0.441371,0.442747,0.444122,0.445496,0.446869,0.448241, +;422:0.449611,0.450981,0.452350,0.453717,0.455084,0.456449,0.457813,0.459177, +;423:0.460539,0.461900,0.463260,0.464619,0.465976,0.467333,0.468689,0.470043, +;424:0.471397,0.472749,0.474100,0.475450,0.476799,0.478147,0.479494,0.480839, +;425:0.482184,0.483527,0.484869,0.486210,0.487550,0.488889,0.490226,0.491563, +;426:0.492898,0.494232,0.495565,0.496897,0.498228,0.499557,0.500885,0.502212, +;427:0.503538,0.504863,0.506187,0.507509,0.508830,0.510150,0.511469,0.512786, +;428:0.514103,0.515418,0.516732,0.518045,0.519356,0.520666,0.521975,0.523283, +;429:0.524590,0.525895,0.527199,0.528502,0.529804,0.531104,0.532403,0.533701, +;430:0.534998,0.536293,0.537587,0.538880,0.540171,0.541462,0.542751,0.544039, +;431:0.545325,0.546610,0.547894,0.549177,0.550458,0.551738,0.553017,0.554294, +;432:0.555570,0.556845,0.558119,0.559391,0.560662,0.561931,0.563199,0.564466, +;433:0.565732,0.566996,0.568259,0.569521,0.570781,0.572040,0.573297,0.574553, +;434:0.575808,0.577062,0.578314,0.579565,0.580814,0.582062,0.583309,0.584554, +;435:0.585798,0.587040,0.588282,0.589521,0.590760,0.591997,0.593232,0.594466, +;436:0.595699,0.596931,0.598161,0.599389,0.600616,0.601842,0.603067,0.604290, +;437:0.605511,0.606731,0.607950,0.609167,0.610383,0.611597,0.612810,0.614022, +;438:0.615232,0.616440,0.617647,0.618853,0.620057,0.621260,0.622461,0.623661, +;439:0.624859,0.626056,0.627252,0.628446,0.629638,0.630829,0.632019,0.633207, +;440:0.634393,0.635578,0.636762,0.637944,0.639124,0.640303,0.641481,0.642657, +;441:0.643832,0.645005,0.646176,0.647346,0.648514,0.649681,0.650847,0.652011, +;442:0.653173,0.654334,0.655493,0.656651,0.657807,0.658961,0.660114,0.661266, +;443:0.662416,0.663564,0.664711,0.665856,0.667000,0.668142,0.669283,0.670422, +;444:0.671559,0.672695,0.673829,0.674962,0.676093,0.677222,0.678350,0.679476, +;445:0.680601,0.681724,0.682846,0.683965,0.685084,0.686200,0.687315,0.688429, +;446:0.689541,0.690651,0.691759,0.692866,0.693971,0.695075,0.696177,0.697278, +;447:0.698376,0.699473,0.700569,0.701663,0.702755,0.703845,0.704934,0.706021, +;448:0.707107,0.708191,0.709273,0.710353,0.711432,0.712509,0.713585,0.714659, +;449:0.715731,0.716801,0.717870,0.718937,0.720003,0.721066,0.722128,0.723188, +;450:0.724247,0.725304,0.726359,0.727413,0.728464,0.729514,0.730563,0.731609, +;451:0.732654,0.733697,0.734739,0.735779,0.736817,0.737853,0.738887,0.739920, +;452:0.740951,0.741980,0.743008,0.744034,0.745058,0.746080,0.747101,0.748119, +;453:0.749136,0.750152,0.751165,0.752177,0.753187,0.754195,0.755201,0.756206, +;454:0.757209,0.758210,0.759209,0.760207,0.761202,0.762196,0.763188,0.764179, +;455:0.765167,0.766154,0.767139,0.768122,0.769103,0.770083,0.771061,0.772036, +;456:0.773010,0.773983,0.774953,0.775922,0.776888,0.777853,0.778817,0.779778, +;457:0.780737,0.781695,0.782651,0.783605,0.784557,0.785507,0.786455,0.787402, +;458:0.788346,0.789289,0.790230,0.791169,0.792107,0.793042,0.793975,0.794907, +;459:0.795837,0.796765,0.797691,0.798615,0.799537,0.800458,0.801376,0.802293, +;460:0.803208,0.804120,0.805031,0.805940,0.806848,0.807753,0.808656,0.809558, +;461:0.810457,0.811355,0.812251,0.813144,0.814036,0.814926,0.815814,0.816701, +;462:0.817585,0.818467,0.819348,0.820226,0.821103,0.821977,0.822850,0.823721, +;463:0.824589,0.825456,0.826321,0.827184,0.828045,0.828904,0.829761,0.830616, +;464:0.831470,0.832321,0.833170,0.834018,0.834863,0.835706,0.836548,0.837387, +;465:0.838225,0.839060,0.839894,0.840725,0.841555,0.842383,0.843208,0.844032, +;466:0.844854,0.845673,0.846491,0.847307,0.848120,0.848932,0.849742,0.850549, +;467:0.851355,0.852159,0.852961,0.853760,0.854558,0.855354,0.856147,0.856939, +;468:0.857729,0.858516,0.859302,0.860085,0.860867,0.861646,0.862424,0.863199, +;469:0.863973,0.864744,0.865514,0.866281,0.867046,0.867809,0.868571,0.869330, +;470:0.870087,0.870842,0.871595,0.872346,0.873095,0.873842,0.874587,0.875329, +;471:0.876070,0.876809,0.877545,0.878280,0.879012,0.879743,0.880471,0.881197, +;472:0.881921,0.882643,0.883363,0.884081,0.884797,0.885511,0.886223,0.886932, +;473:0.887640,0.888345,0.889048,0.889750,0.890449,0.891146,0.891841,0.892534, +;474:0.893224,0.893913,0.894599,0.895284,0.895966,0.896646,0.897325,0.898001, +;475:0.898674,0.899346,0.900016,0.900683,0.901349,0.902012,0.902673,0.903332, +;476:0.903989,0.904644,0.905297,0.905947,0.906596,0.907242,0.907886,0.908528, +;477:0.909168,0.909806,0.910441,0.911075,0.911706,0.912335,0.912962,0.913587, +;478:0.914210,0.914830,0.915449,0.916065,0.916679,0.917291,0.917901,0.918508, +;479:0.919114,0.919717,0.920318,0.920917,0.921514,0.922109,0.922701,0.923291, +;480:0.923880,0.924465,0.925049,0.925631,0.926210,0.926787,0.927363,0.927935, +;481:0.928506,0.929075,0.929641,0.930205,0.930767,0.931327,0.931884,0.932440, +;482:0.932993,0.933544,0.934093,0.934639,0.935184,0.935726,0.936266,0.936803, +;483:0.937339,0.937872,0.938404,0.938932,0.939459,0.939984,0.940506,0.941026, +;484:0.941544,0.942060,0.942573,0.943084,0.943593,0.944100,0.944605,0.945107, +;485:0.945607,0.946105,0.946601,0.947094,0.947586,0.948075,0.948561,0.949046, +;486:0.949528,0.950008,0.950486,0.950962,0.951435,0.951906,0.952375,0.952842, +;487:0.953306,0.953768,0.954228,0.954686,0.955141,0.955594,0.956045,0.956494, +;488:0.956940,0.957385,0.957826,0.958266,0.958703,0.959139,0.959572,0.960002, +;489:0.960431,0.960857,0.961280,0.961702,0.962121,0.962538,0.962953,0.963366, +;490:0.963776,0.964184,0.964590,0.964993,0.965394,0.965793,0.966190,0.966584, +;491:0.966976,0.967366,0.967754,0.968139,0.968522,0.968903,0.969281,0.969657, +;492:0.970031,0.970403,0.970772,0.971139,0.971504,0.971866,0.972226,0.972584, +;493:0.972940,0.973293,0.973644,0.973993,0.974339,0.974684,0.975025,0.975365, +;494:0.975702,0.976037,0.976370,0.976700,0.977028,0.977354,0.977677,0.977999, +;495:0.978317,0.978634,0.978948,0.979260,0.979570,0.979877,0.980182,0.980485, +;496:0.980785,0.981083,0.981379,0.981673,0.981964,0.982253,0.982539,0.982824, +;497:0.983105,0.983385,0.983662,0.983937,0.984210,0.984480,0.984749,0.985014, +;498:0.985278,0.985539,0.985798,0.986054,0.986308,0.986560,0.986809,0.987057, +;499:0.987301,0.987544,0.987784,0.988022,0.988258,0.988491,0.988722,0.988950, +;500:0.989177,0.989400,0.989622,0.989841,0.990058,0.990273,0.990485,0.990695, +;501:0.990903,0.991108,0.991311,0.991511,0.991710,0.991906,0.992099,0.992291, +;502:0.992480,0.992666,0.992850,0.993032,0.993212,0.993389,0.993564,0.993737, +;503:0.993907,0.994075,0.994240,0.994404,0.994565,0.994723,0.994879,0.995033, +;504:0.995185,0.995334,0.995481,0.995625,0.995767,0.995907,0.996045,0.996180, +;505:0.996313,0.996443,0.996571,0.996697,0.996820,0.996941,0.997060,0.997176, +;506:0.997290,0.997402,0.997511,0.997618,0.997723,0.997825,0.997925,0.998023, +;507:0.998118,0.998211,0.998302,0.998390,0.998476,0.998559,0.998640,0.998719, +;508:0.998795,0.998870,0.998941,0.999011,0.999078,0.999142,0.999205,0.999265, +;509:0.999322,0.999378,0.999431,0.999481,0.999529,0.999575,0.999619,0.999660, +;510:0.999699,0.999735,0.999769,0.999801,0.999831,0.999858,0.999882,0.999905, +;511:0.999925,0.999942,0.999958,0.999971,0.999981,0.999989,0.999995,0.999999 +;512:}; +;513: +;514:double sin( double x ) { +;515: int index; +;516: int quad; +;517: +;518: index = 1024 * x / (M_PI * 0.5); +;519: quad = ( index >> 10 ) & 3; +;520: index &= 1023; +;521: switch ( quad ) { +;522: case 0: +;523: return sintable[index]; +;524: case 1: +;525: return sintable[1023-index]; +;526: case 2: +;527: return -sintable[index]; +;528: case 3: +;529: return -sintable[1023-index]; +;530: } +;531: return 0; +;532:} +;533: +;534: +;535:double cos( double x ) { +;536: int index; +;537: int quad; +;538: +;539: index = 1024 * x / (M_PI * 0.5); +;540: quad = ( index >> 10 ) & 3; +;541: index &= 1023; +;542: switch ( quad ) { +;543: case 3: +;544: return sintable[index]; +;545: case 0: +;546: return sintable[1023-index]; +;547: case 1: +;548: return -sintable[index]; +;549: case 2: +;550: return -sintable[1023-index]; +;551: } +;552: return 0; +;553:} +;554: +;555: +;556:/* +;557:void create_acostable( void ) { +;558: int i; +;559: FILE *fp; +;560: float a; +;561: +;562: fp = fopen("c:\\acostable.txt", "w"); +;563: fprintf(fp, "float acostable[] = {"); +;564: for (i = 0; i < 1024; i++) { +;565: if (!(i & 7)) +;566: fprintf(fp, "\n"); +;567: a = acos( (float) -1 + i / 512 ); +;568: fprintf(fp, "%1.8f,", a); +;569: } +;570: fprintf(fp, "\n}\n"); +;571: fclose(fp); +;572:} +;573:*/ +;574: +;575:float acostable[] = { +;576:3.14159265,3.07908248,3.05317551,3.03328655,3.01651113,3.00172442,2.98834964,2.97604422, +;577:2.96458497,2.95381690,2.94362719,2.93393068,2.92466119,2.91576615,2.90720289,2.89893629, +;578:2.89093699,2.88318015,2.87564455,2.86831188,2.86116621,2.85419358,2.84738169,2.84071962, +;579:2.83419760,2.82780691,2.82153967,2.81538876,2.80934770,2.80341062,2.79757211,2.79182724, +;580:2.78617145,2.78060056,2.77511069,2.76969824,2.76435988,2.75909250,2.75389319,2.74875926, +;581:2.74368816,2.73867752,2.73372510,2.72882880,2.72398665,2.71919677,2.71445741,2.70976688, +;582:2.70512362,2.70052613,2.69597298,2.69146283,2.68699438,2.68256642,2.67817778,2.67382735, +;583:2.66951407,2.66523692,2.66099493,2.65678719,2.65261279,2.64847088,2.64436066,2.64028133, +;584:2.63623214,2.63221238,2.62822133,2.62425835,2.62032277,2.61641398,2.61253138,2.60867440, +;585:2.60484248,2.60103507,2.59725167,2.59349176,2.58975488,2.58604053,2.58234828,2.57867769, +;586:2.57502832,2.57139977,2.56779164,2.56420354,2.56063509,2.55708594,2.55355572,2.55004409, +;587:2.54655073,2.54307530,2.53961750,2.53617701,2.53275354,2.52934680,2.52595650,2.52258238, +;588:2.51922417,2.51588159,2.51255441,2.50924238,2.50594525,2.50266278,2.49939476,2.49614096, +;589:2.49290115,2.48967513,2.48646269,2.48326362,2.48007773,2.47690482,2.47374472,2.47059722, +;590:2.46746215,2.46433933,2.46122860,2.45812977,2.45504269,2.45196720,2.44890314,2.44585034, +;591:2.44280867,2.43977797,2.43675809,2.43374890,2.43075025,2.42776201,2.42478404,2.42181622, +;592:2.41885841,2.41591048,2.41297232,2.41004380,2.40712480,2.40421521,2.40131491,2.39842379, +;593:2.39554173,2.39266863,2.38980439,2.38694889,2.38410204,2.38126374,2.37843388,2.37561237, +;594:2.37279910,2.36999400,2.36719697,2.36440790,2.36162673,2.35885335,2.35608768,2.35332964, +;595:2.35057914,2.34783610,2.34510044,2.34237208,2.33965094,2.33693695,2.33423003,2.33153010, +;596:2.32883709,2.32615093,2.32347155,2.32079888,2.31813284,2.31547337,2.31282041,2.31017388, +;597:2.30753373,2.30489988,2.30227228,2.29965086,2.29703556,2.29442632,2.29182309,2.28922580, +;598:2.28663439,2.28404881,2.28146900,2.27889490,2.27632647,2.27376364,2.27120637,2.26865460, +;599:2.26610827,2.26356735,2.26103177,2.25850149,2.25597646,2.25345663,2.25094195,2.24843238, +;600:2.24592786,2.24342836,2.24093382,2.23844420,2.23595946,2.23347956,2.23100444,2.22853408, +;601:2.22606842,2.22360742,2.22115104,2.21869925,2.21625199,2.21380924,2.21137096,2.20893709, +;602:2.20650761,2.20408248,2.20166166,2.19924511,2.19683280,2.19442469,2.19202074,2.18962092, +;603:2.18722520,2.18483354,2.18244590,2.18006225,2.17768257,2.17530680,2.17293493,2.17056692, +;604:2.16820274,2.16584236,2.16348574,2.16113285,2.15878367,2.15643816,2.15409630,2.15175805, +;605:2.14942338,2.14709226,2.14476468,2.14244059,2.14011997,2.13780279,2.13548903,2.13317865, +;606:2.13087163,2.12856795,2.12626757,2.12397047,2.12167662,2.11938600,2.11709859,2.11481435, +;607:2.11253326,2.11025530,2.10798044,2.10570867,2.10343994,2.10117424,2.09891156,2.09665185, +;608:2.09439510,2.09214129,2.08989040,2.08764239,2.08539725,2.08315496,2.08091550,2.07867884, +;609:2.07644495,2.07421383,2.07198545,2.06975978,2.06753681,2.06531651,2.06309887,2.06088387, +;610:2.05867147,2.05646168,2.05425445,2.05204979,2.04984765,2.04764804,2.04545092,2.04325628, +;611:2.04106409,2.03887435,2.03668703,2.03450211,2.03231957,2.03013941,2.02796159,2.02578610, +;612:2.02361292,2.02144204,2.01927344,2.01710710,2.01494300,2.01278113,2.01062146,2.00846399, +;613:2.00630870,2.00415556,2.00200457,1.99985570,1.99770895,1.99556429,1.99342171,1.99128119, +;614:1.98914271,1.98700627,1.98487185,1.98273942,1.98060898,1.97848051,1.97635399,1.97422942, +;615:1.97210676,1.96998602,1.96786718,1.96575021,1.96363511,1.96152187,1.95941046,1.95730088, +;616:1.95519310,1.95308712,1.95098292,1.94888050,1.94677982,1.94468089,1.94258368,1.94048818, +;617:1.93839439,1.93630228,1.93421185,1.93212308,1.93003595,1.92795046,1.92586659,1.92378433, +;618:1.92170367,1.91962459,1.91754708,1.91547113,1.91339673,1.91132385,1.90925250,1.90718266, +;619:1.90511432,1.90304746,1.90098208,1.89891815,1.89685568,1.89479464,1.89273503,1.89067683, +;620:1.88862003,1.88656463,1.88451060,1.88245794,1.88040664,1.87835668,1.87630806,1.87426076, +;621:1.87221477,1.87017008,1.86812668,1.86608457,1.86404371,1.86200412,1.85996577,1.85792866, +;622:1.85589277,1.85385809,1.85182462,1.84979234,1.84776125,1.84573132,1.84370256,1.84167495, +;623:1.83964848,1.83762314,1.83559892,1.83357582,1.83155381,1.82953289,1.82751305,1.82549429, +;624:1.82347658,1.82145993,1.81944431,1.81742973,1.81541617,1.81340362,1.81139207,1.80938151, +;625:1.80737194,1.80536334,1.80335570,1.80134902,1.79934328,1.79733848,1.79533460,1.79333164, +;626:1.79132959,1.78932843,1.78732817,1.78532878,1.78333027,1.78133261,1.77933581,1.77733985, +;627:1.77534473,1.77335043,1.77135695,1.76936428,1.76737240,1.76538132,1.76339101,1.76140148, +;628:1.75941271,1.75742470,1.75543743,1.75345090,1.75146510,1.74948002,1.74749565,1.74551198, +;629:1.74352900,1.74154672,1.73956511,1.73758417,1.73560389,1.73362426,1.73164527,1.72966692, +;630:1.72768920,1.72571209,1.72373560,1.72175971,1.71978441,1.71780969,1.71583556,1.71386199, +;631:1.71188899,1.70991653,1.70794462,1.70597325,1.70400241,1.70203209,1.70006228,1.69809297, +;632:1.69612416,1.69415584,1.69218799,1.69022062,1.68825372,1.68628727,1.68432127,1.68235571, +;633:1.68039058,1.67842588,1.67646160,1.67449772,1.67253424,1.67057116,1.66860847,1.66664615, +;634:1.66468420,1.66272262,1.66076139,1.65880050,1.65683996,1.65487975,1.65291986,1.65096028, +;635:1.64900102,1.64704205,1.64508338,1.64312500,1.64116689,1.63920905,1.63725148,1.63529416, +;636:1.63333709,1.63138026,1.62942366,1.62746728,1.62551112,1.62355517,1.62159943,1.61964388, +;637:1.61768851,1.61573332,1.61377831,1.61182346,1.60986877,1.60791422,1.60595982,1.60400556, +;638:1.60205142,1.60009739,1.59814349,1.59618968,1.59423597,1.59228235,1.59032882,1.58837536, +;639:1.58642196,1.58446863,1.58251535,1.58056211,1.57860891,1.57665574,1.57470259,1.57274945, +;640:1.57079633,1.56884320,1.56689007,1.56493692,1.56298375,1.56103055,1.55907731,1.55712403, +;641:1.55517069,1.55321730,1.55126383,1.54931030,1.54735668,1.54540297,1.54344917,1.54149526, +;642:1.53954124,1.53758710,1.53563283,1.53367843,1.53172389,1.52976919,1.52781434,1.52585933, +;643:1.52390414,1.52194878,1.51999323,1.51803748,1.51608153,1.51412537,1.51216900,1.51021240, +;644:1.50825556,1.50629849,1.50434117,1.50238360,1.50042576,1.49846765,1.49650927,1.49455060, +;645:1.49259163,1.49063237,1.48867280,1.48671291,1.48475270,1.48279215,1.48083127,1.47887004, +;646:1.47690845,1.47494650,1.47298419,1.47102149,1.46905841,1.46709493,1.46513106,1.46316677, +;647:1.46120207,1.45923694,1.45727138,1.45530538,1.45333893,1.45137203,1.44940466,1.44743682, +;648:1.44546850,1.44349969,1.44153038,1.43956057,1.43759024,1.43561940,1.43364803,1.43167612, +;649:1.42970367,1.42773066,1.42575709,1.42378296,1.42180825,1.41983295,1.41785705,1.41588056, +;650:1.41390346,1.41192573,1.40994738,1.40796840,1.40598877,1.40400849,1.40202755,1.40004594, +;651:1.39806365,1.39608068,1.39409701,1.39211264,1.39012756,1.38814175,1.38615522,1.38416795, +;652:1.38217994,1.38019117,1.37820164,1.37621134,1.37422025,1.37222837,1.37023570,1.36824222, +;653:1.36624792,1.36425280,1.36225684,1.36026004,1.35826239,1.35626387,1.35426449,1.35226422, +;654:1.35026307,1.34826101,1.34625805,1.34425418,1.34224937,1.34024364,1.33823695,1.33622932, +;655:1.33422072,1.33221114,1.33020059,1.32818904,1.32617649,1.32416292,1.32214834,1.32013273, +;656:1.31811607,1.31609837,1.31407960,1.31205976,1.31003885,1.30801684,1.30599373,1.30396951, +;657:1.30194417,1.29991770,1.29789009,1.29586133,1.29383141,1.29180031,1.28976803,1.28773456, +;658:1.28569989,1.28366400,1.28162688,1.27958854,1.27754894,1.27550809,1.27346597,1.27142257, +;659:1.26937788,1.26733189,1.26528459,1.26323597,1.26118602,1.25913471,1.25708205,1.25502803, +;660:1.25297262,1.25091583,1.24885763,1.24679802,1.24473698,1.24267450,1.24061058,1.23854519, +;661:1.23647833,1.23440999,1.23234015,1.23026880,1.22819593,1.22612152,1.22404557,1.22196806, +;662:1.21988898,1.21780832,1.21572606,1.21364219,1.21155670,1.20946958,1.20738080,1.20529037, +;663:1.20319826,1.20110447,1.19900898,1.19691177,1.19481283,1.19271216,1.19060973,1.18850553, +;664:1.18639955,1.18429178,1.18218219,1.18007079,1.17795754,1.17584244,1.17372548,1.17160663, +;665:1.16948589,1.16736324,1.16523866,1.16311215,1.16098368,1.15885323,1.15672081,1.15458638, +;666:1.15244994,1.15031147,1.14817095,1.14602836,1.14388370,1.14173695,1.13958808,1.13743709, +;667:1.13528396,1.13312866,1.13097119,1.12881153,1.12664966,1.12448556,1.12231921,1.12015061, +;668:1.11797973,1.11580656,1.11363107,1.11145325,1.10927308,1.10709055,1.10490563,1.10271831, +;669:1.10052856,1.09833638,1.09614174,1.09394462,1.09174500,1.08954287,1.08733820,1.08513098, +;670:1.08292118,1.08070879,1.07849378,1.07627614,1.07405585,1.07183287,1.06960721,1.06737882, +;671:1.06514770,1.06291382,1.06067715,1.05843769,1.05619540,1.05395026,1.05170226,1.04945136, +;672:1.04719755,1.04494080,1.04268110,1.04041841,1.03815271,1.03588399,1.03361221,1.03133735, +;673:1.02905939,1.02677830,1.02449407,1.02220665,1.01991603,1.01762219,1.01532509,1.01302471, +;674:1.01072102,1.00841400,1.00610363,1.00378986,1.00147268,0.99915206,0.99682798,0.99450039, +;675:0.99216928,0.98983461,0.98749636,0.98515449,0.98280898,0.98045980,0.97810691,0.97575030, +;676:0.97338991,0.97102573,0.96865772,0.96628585,0.96391009,0.96153040,0.95914675,0.95675912, +;677:0.95436745,0.95197173,0.94957191,0.94716796,0.94475985,0.94234754,0.93993099,0.93751017, +;678:0.93508504,0.93265556,0.93022170,0.92778341,0.92534066,0.92289341,0.92044161,0.91798524, +;679:0.91552424,0.91305858,0.91058821,0.90811309,0.90563319,0.90314845,0.90065884,0.89816430, +;680:0.89566479,0.89316028,0.89065070,0.88813602,0.88561619,0.88309116,0.88056088,0.87802531, +;681:0.87548438,0.87293806,0.87038629,0.86782901,0.86526619,0.86269775,0.86012366,0.85754385, +;682:0.85495827,0.85236686,0.84976956,0.84716633,0.84455709,0.84194179,0.83932037,0.83669277, +;683:0.83405893,0.83141877,0.82877225,0.82611928,0.82345981,0.82079378,0.81812110,0.81544172, +;684:0.81275556,0.81006255,0.80736262,0.80465570,0.80194171,0.79922057,0.79649221,0.79375655, +;685:0.79101352,0.78826302,0.78550497,0.78273931,0.77996593,0.77718475,0.77439569,0.77159865, +;686:0.76879355,0.76598029,0.76315878,0.76032891,0.75749061,0.75464376,0.75178826,0.74892402, +;687:0.74605092,0.74316887,0.74027775,0.73737744,0.73446785,0.73154885,0.72862033,0.72568217, +;688:0.72273425,0.71977644,0.71680861,0.71383064,0.71084240,0.70784376,0.70483456,0.70181469, +;689:0.69878398,0.69574231,0.69268952,0.68962545,0.68654996,0.68346288,0.68036406,0.67725332, +;690:0.67413051,0.67099544,0.66784794,0.66468783,0.66151492,0.65832903,0.65512997,0.65191753, +;691:0.64869151,0.64545170,0.64219789,0.63892987,0.63564741,0.63235028,0.62903824,0.62571106, +;692:0.62236849,0.61901027,0.61563615,0.61224585,0.60883911,0.60541564,0.60197515,0.59851735, +;693:0.59504192,0.59154856,0.58803694,0.58450672,0.58095756,0.57738911,0.57380101,0.57019288, +;694:0.56656433,0.56291496,0.55924437,0.55555212,0.55183778,0.54810089,0.54434099,0.54055758, +;695:0.53675018,0.53291825,0.52906127,0.52517867,0.52126988,0.51733431,0.51337132,0.50938028, +;696:0.50536051,0.50131132,0.49723200,0.49312177,0.48897987,0.48480547,0.48059772,0.47635573, +;697:0.47207859,0.46776530,0.46341487,0.45902623,0.45459827,0.45012983,0.44561967,0.44106652, +;698:0.43646903,0.43182577,0.42713525,0.42239588,0.41760600,0.41276385,0.40786755,0.40291513, +;699:0.39790449,0.39283339,0.38769946,0.38250016,0.37723277,0.37189441,0.36648196,0.36099209, +;700:0.35542120,0.34976542,0.34402054,0.33818204,0.33224495,0.32620390,0.32005298,0.31378574, +;701:0.30739505,0.30087304,0.29421096,0.28739907,0.28042645,0.27328078,0.26594810,0.25841250, +;702:0.25065566,0.24265636,0.23438976,0.22582651,0.21693146,0.20766198,0.19796546,0.18777575, +;703:0.17700769,0.16554844,0.15324301,0.13986823,0.12508152,0.10830610,0.08841715,0.06251018, +;704:} +;705: +;706:double acos( double x ) { +;707: int index; +;708: +;709: if (x < -1) +;710: x = -1; +;711: if (x > 1) +;712: x = 1; +;713: index = (float) (1.0 + x) * 511.9; +;714: return acostable[index]; +;715:} +;716: +;717:double atan2( double y, double x ) { +;718: float base; +;719: float temp; +;720: float dir; +;721: float test; +;722: int i; +;723: +;724: if ( x < 0 ) { +;725: if ( y >= 0 ) { +;726: // quad 1 +;727: base = M_PI / 2; +;728: temp = x; +;729: x = y; +;730: y = -temp; +;731: } else { +;732: // quad 2 +;733: base = M_PI; +;734: x = -x; +;735: y = -y; +;736: } +;737: } else { +;738: if ( y < 0 ) { +;739: // quad 3 +;740: base = 3 * M_PI / 2; +;741: temp = x; +;742: x = -y; +;743: y = temp; +;744: } +;745: } +;746: +;747: if ( y > x ) { +;748: base += M_PI/2; +;749: temp = x; +;750: x = y; +;751: y = temp; +;752: dir = -1; +;753: } else { +;754: dir = 1; +;755: } +;756: +;757: // calcualte angle in octant 0 +;758: if ( x == 0 ) { +;759: return base; +;760: } +;761: y /= x; +;762: +;763: for ( i = 0 ; i < 512 ; i++ ) { +;764: test = sintable[i] / sintable[1023-i]; +;765: if ( test > y ) { +;766: break; +;767: } +;768: } +;769: +;770: return base + dir * i * ( M_PI/2048); +;771:} +;772: +;773: +;774:#endif +;775: +;776:#ifdef Q3_VM +;777:// bk001127 - guarded this tan replacement +;778:// ld: undefined versioned symbol name tan@@GLIBC_2.0 +;779:double tan( double x ) { +line 780 +;780: return sin(x) / cos(x); +ADDRFP4 0 +INDIRF4 +ARGF4 +ADDRLP4 0 +ADDRGP4 sin +CALLF4 +ASGNF4 +ADDRFP4 0 +INDIRF4 +ARGF4 +ADDRLP4 4 +ADDRGP4 cos +CALLF4 +ASGNF4 +ADDRLP4 0 +INDIRF4 +ADDRLP4 4 +INDIRF4 +DIVF4 +RETF4 +LABELV $182 +endproc tan 8 4 +data +align 4 +LABELV randSeed +byte 4 0 +export srand +code +proc srand 0 0 +line 787 +;781:} +;782:#endif +;783: +;784: +;785:static int randSeed = 0; +;786: +;787:void srand( unsigned seed ) { +line 788 +;788: randSeed = seed; +ADDRGP4 randSeed +ADDRFP4 0 +INDIRU4 +CVUI4 4 +ASGNI4 +line 789 +;789:} +LABELV $183 +endproc srand 0 0 +export rand +proc rand 4 0 +line 791 +;790: +;791:int rand( void ) { +line 792 +;792: randSeed = (69069 * randSeed + 1); +ADDRLP4 0 +ADDRGP4 randSeed +ASGNP4 +ADDRLP4 0 +INDIRP4 +CNSTI4 69069 +ADDRLP4 0 +INDIRP4 +INDIRI4 +MULI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 793 +;793: return randSeed & 0x7fff; +ADDRGP4 randSeed +INDIRI4 +CNSTI4 32767 +BANDI4 +RETI4 +LABELV $184 +endproc rand 4 0 +export atof +proc atof 32 0 +line 796 +;794:} +;795: +;796:double atof( const char *string ) { +ADDRGP4 $187 +JUMPV +LABELV $186 +line 803 +;797: float sign; +;798: float value; +;799: int c; +;800: +;801: +;802: // skip whitespace +;803: while ( *string <= ' ' ) { +line 804 +;804: if ( !*string ) { +ADDRFP4 0 +INDIRP4 +INDIRI1 +CVII4 1 +CNSTI4 0 +NEI4 $189 +line 805 +;805: return 0; +CNSTF4 0 +RETF4 +ADDRGP4 $185 +JUMPV +LABELV $189 +line 807 +;806: } +;807: string++; +ADDRFP4 0 +ADDRFP4 0 +INDIRP4 +CNSTI4 1 +ADDP4 +ASGNP4 +line 808 +;808: } +LABELV $187 +line 803 +ADDRFP4 0 +INDIRP4 +INDIRI1 +CVII4 1 +CNSTI4 32 +LEI4 $186 +line 811 +;809: +;810: // check sign +;811: switch ( *string ) { +ADDRLP4 12 +ADDRFP4 0 +INDIRP4 +INDIRI1 +CVII4 1 +ASGNI4 +ADDRLP4 12 +INDIRI4 +CNSTI4 43 +EQI4 $194 +ADDRLP4 12 +INDIRI4 +CNSTI4 45 +EQI4 $195 +ADDRGP4 $191 +JUMPV +LABELV $194 +line 813 +;812: case '+': +;813: string++; +ADDRFP4 0 +ADDRFP4 0 +INDIRP4 +CNSTI4 1 +ADDP4 +ASGNP4 +line 814 +;814: sign = 1; +ADDRLP4 8 +CNSTF4 1065353216 +ASGNF4 +line 815 +;815: break; +ADDRGP4 $192 +JUMPV +LABELV $195 +line 817 +;816: case '-': +;817: string++; +ADDRFP4 0 +ADDRFP4 0 +INDIRP4 +CNSTI4 1 +ADDP4 +ASGNP4 +line 818 +;818: sign = -1; +ADDRLP4 8 +CNSTF4 3212836864 +ASGNF4 +line 819 +;819: break; +ADDRGP4 $192 +JUMPV +LABELV $191 +line 821 +;820: default: +;821: sign = 1; +ADDRLP4 8 +CNSTF4 1065353216 +ASGNF4 +line 822 +;822: break; +LABELV $192 +line 826 +;823: } +;824: +;825: // read digits +;826: value = 0; +ADDRLP4 4 +CNSTF4 0 +ASGNF4 +line 827 +;827: c = string[0]; +ADDRLP4 0 +ADDRFP4 0 +INDIRP4 +INDIRI1 +CVII4 1 +ASGNI4 +line 828 +;828: if ( c != '.' ) { +ADDRLP4 0 +INDIRI4 +CNSTI4 46 +EQI4 $196 +LABELV $198 +line 829 +;829: do { +line 830 +;830: c = *string++; +ADDRLP4 20 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRFP4 0 +ADDRLP4 20 +INDIRP4 +CNSTI4 1 +ADDP4 +ASGNP4 +ADDRLP4 0 +ADDRLP4 20 +INDIRP4 +INDIRI1 +CVII4 1 +ASGNI4 +line 831 +;831: if ( c < '0' || c > '9' ) { +ADDRLP4 0 +INDIRI4 +CNSTI4 48 +LTI4 $203 +ADDRLP4 0 +INDIRI4 +CNSTI4 57 +LEI4 $201 +LABELV $203 +line 832 +;832: break; +ADDRGP4 $197 +JUMPV +LABELV $201 +line 834 +;833: } +;834: c -= '0'; +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 48 +SUBI4 +ASGNI4 +line 835 +;835: value = value * 10 + c; +ADDRLP4 4 +CNSTF4 1092616192 +ADDRLP4 4 +INDIRF4 +MULF4 +ADDRLP4 0 +INDIRI4 +CVIF4 4 +ADDF4 +ASGNF4 +line 836 +;836: } while ( 1 ); +LABELV $199 +ADDRGP4 $198 +JUMPV +line 837 +;837: } else { +ADDRGP4 $197 +JUMPV +LABELV $196 +line 838 +;838: string++; +ADDRFP4 0 +ADDRFP4 0 +INDIRP4 +CNSTI4 1 +ADDP4 +ASGNP4 +line 839 +;839: } +LABELV $197 +line 842 +;840: +;841: // check for decimal point +;842: if ( c == '.' ) { +ADDRLP4 0 +INDIRI4 +CNSTI4 46 +NEI4 $204 +line 845 +;843: double fraction; +;844: +;845: fraction = 0.1; +ADDRLP4 20 +CNSTF4 1036831949 +ASGNF4 +LABELV $206 +line 846 +;846: do { +line 847 +;847: c = *string++; +ADDRLP4 24 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRFP4 0 +ADDRLP4 24 +INDIRP4 +CNSTI4 1 +ADDP4 +ASGNP4 +ADDRLP4 0 +ADDRLP4 24 +INDIRP4 +INDIRI1 +CVII4 1 +ASGNI4 +line 848 +;848: if ( c < '0' || c > '9' ) { +ADDRLP4 0 +INDIRI4 +CNSTI4 48 +LTI4 $211 +ADDRLP4 0 +INDIRI4 +CNSTI4 57 +LEI4 $209 +LABELV $211 +line 849 +;849: break; +ADDRGP4 $208 +JUMPV +LABELV $209 +line 851 +;850: } +;851: c -= '0'; +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 48 +SUBI4 +ASGNI4 +line 852 +;852: value += c * fraction; +ADDRLP4 4 +ADDRLP4 4 +INDIRF4 +ADDRLP4 0 +INDIRI4 +CVIF4 4 +ADDRLP4 20 +INDIRF4 +MULF4 +ADDF4 +ASGNF4 +line 853 +;853: fraction *= 0.1; +ADDRLP4 20 +CNSTF4 1036831949 +ADDRLP4 20 +INDIRF4 +MULF4 +ASGNF4 +line 854 +;854: } while ( 1 ); +LABELV $207 +ADDRGP4 $206 +JUMPV +LABELV $208 +line 856 +;855: +;856: } +LABELV $204 +line 860 +;857: +;858: // not handling 10e10 notation... +;859: +;860: return value * sign; +ADDRLP4 4 +INDIRF4 +ADDRLP4 8 +INDIRF4 +MULF4 +RETF4 +LABELV $185 +endproc atof 32 0 +export _atof +proc _atof 36 0 +line 863 +;861:} +;862: +;863:double _atof( const char **stringPtr ) { +line 867 +;864: const char *string; +;865: float sign; +;866: float value; +;867: int c = '0'; // bk001211 - uninitialized use possible +ADDRLP4 0 +CNSTI4 48 +ASGNI4 +line 869 +;868: +;869: string = *stringPtr; +ADDRLP4 4 +ADDRFP4 0 +INDIRP4 +INDIRP4 +ASGNP4 +ADDRGP4 $214 +JUMPV +LABELV $213 +line 872 +;870: +;871: // skip whitespace +;872: while ( *string <= ' ' ) { +line 873 +;873: if ( !*string ) { +ADDRLP4 4 +INDIRP4 +INDIRI1 +CVII4 1 +CNSTI4 0 +NEI4 $216 +line 874 +;874: *stringPtr = string; +ADDRFP4 0 +INDIRP4 +ADDRLP4 4 +INDIRP4 +ASGNP4 +line 875 +;875: return 0; +CNSTF4 0 +RETF4 +ADDRGP4 $212 +JUMPV +LABELV $216 +line 877 +;876: } +;877: string++; +ADDRLP4 4 +ADDRLP4 4 +INDIRP4 +CNSTI4 1 +ADDP4 +ASGNP4 +line 878 +;878: } +LABELV $214 +line 872 +ADDRLP4 4 +INDIRP4 +INDIRI1 +CVII4 1 +CNSTI4 32 +LEI4 $213 +line 881 +;879: +;880: // check sign +;881: switch ( *string ) { +ADDRLP4 16 +ADDRLP4 4 +INDIRP4 +INDIRI1 +CVII4 1 +ASGNI4 +ADDRLP4 16 +INDIRI4 +CNSTI4 43 +EQI4 $221 +ADDRLP4 16 +INDIRI4 +CNSTI4 45 +EQI4 $222 +ADDRGP4 $218 +JUMPV +LABELV $221 +line 883 +;882: case '+': +;883: string++; +ADDRLP4 4 +ADDRLP4 4 +INDIRP4 +CNSTI4 1 +ADDP4 +ASGNP4 +line 884 +;884: sign = 1; +ADDRLP4 12 +CNSTF4 1065353216 +ASGNF4 +line 885 +;885: break; +ADDRGP4 $219 +JUMPV +LABELV $222 +line 887 +;886: case '-': +;887: string++; +ADDRLP4 4 +ADDRLP4 4 +INDIRP4 +CNSTI4 1 +ADDP4 +ASGNP4 +line 888 +;888: sign = -1; +ADDRLP4 12 +CNSTF4 3212836864 +ASGNF4 +line 889 +;889: break; +ADDRGP4 $219 +JUMPV +LABELV $218 +line 891 +;890: default: +;891: sign = 1; +ADDRLP4 12 +CNSTF4 1065353216 +ASGNF4 +line 892 +;892: break; +LABELV $219 +line 896 +;893: } +;894: +;895: // read digits +;896: value = 0; +ADDRLP4 8 +CNSTF4 0 +ASGNF4 +line 897 +;897: if ( string[0] != '.' ) { +ADDRLP4 4 +INDIRP4 +INDIRI1 +CVII4 1 +CNSTI4 46 +EQI4 $223 +LABELV $225 +line 898 +;898: do { +line 899 +;899: c = *string++; +ADDRLP4 24 +ADDRLP4 4 +INDIRP4 +ASGNP4 +ADDRLP4 4 +ADDRLP4 24 +INDIRP4 +CNSTI4 1 +ADDP4 +ASGNP4 +ADDRLP4 0 +ADDRLP4 24 +INDIRP4 +INDIRI1 +CVII4 1 +ASGNI4 +line 900 +;900: if ( c < '0' || c > '9' ) { +ADDRLP4 0 +INDIRI4 +CNSTI4 48 +LTI4 $230 +ADDRLP4 0 +INDIRI4 +CNSTI4 57 +LEI4 $228 +LABELV $230 +line 901 +;901: break; +ADDRGP4 $227 +JUMPV +LABELV $228 +line 903 +;902: } +;903: c -= '0'; +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 48 +SUBI4 +ASGNI4 +line 904 +;904: value = value * 10 + c; +ADDRLP4 8 +CNSTF4 1092616192 +ADDRLP4 8 +INDIRF4 +MULF4 +ADDRLP4 0 +INDIRI4 +CVIF4 4 +ADDF4 +ASGNF4 +line 905 +;905: } while ( 1 ); +LABELV $226 +ADDRGP4 $225 +JUMPV +LABELV $227 +line 906 +;906: } +LABELV $223 +line 909 +;907: +;908: // check for decimal point +;909: if ( c == '.' ) { +ADDRLP4 0 +INDIRI4 +CNSTI4 46 +NEI4 $231 +line 912 +;910: double fraction; +;911: +;912: fraction = 0.1; +ADDRLP4 24 +CNSTF4 1036831949 +ASGNF4 +LABELV $233 +line 913 +;913: do { +line 914 +;914: c = *string++; +ADDRLP4 28 +ADDRLP4 4 +INDIRP4 +ASGNP4 +ADDRLP4 4 +ADDRLP4 28 +INDIRP4 +CNSTI4 1 +ADDP4 +ASGNP4 +ADDRLP4 0 +ADDRLP4 28 +INDIRP4 +INDIRI1 +CVII4 1 +ASGNI4 +line 915 +;915: if ( c < '0' || c > '9' ) { +ADDRLP4 0 +INDIRI4 +CNSTI4 48 +LTI4 $238 +ADDRLP4 0 +INDIRI4 +CNSTI4 57 +LEI4 $236 +LABELV $238 +line 916 +;916: break; +ADDRGP4 $235 +JUMPV +LABELV $236 +line 918 +;917: } +;918: c -= '0'; +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 48 +SUBI4 +ASGNI4 +line 919 +;919: value += c * fraction; +ADDRLP4 8 +ADDRLP4 8 +INDIRF4 +ADDRLP4 0 +INDIRI4 +CVIF4 4 +ADDRLP4 24 +INDIRF4 +MULF4 +ADDF4 +ASGNF4 +line 920 +;920: fraction *= 0.1; +ADDRLP4 24 +CNSTF4 1036831949 +ADDRLP4 24 +INDIRF4 +MULF4 +ASGNF4 +line 921 +;921: } while ( 1 ); +LABELV $234 +ADDRGP4 $233 +JUMPV +LABELV $235 +line 923 +;922: +;923: } +LABELV $231 +line 926 +;924: +;925: // not handling 10e10 notation... +;926: *stringPtr = string; +ADDRFP4 0 +INDIRP4 +ADDRLP4 4 +INDIRP4 +ASGNP4 +line 928 +;927: +;928: return value * sign; +ADDRLP4 8 +INDIRF4 +ADDRLP4 12 +INDIRF4 +MULF4 +RETF4 +LABELV $212 +endproc _atof 36 0 +export atoi +proc atoi 28 0 +line 937 +;929:} +;930: +;931: +;932:// bk001120 - presumably needed for Mac +;933://#if !defined ( _MSC_VER ) && ! defined ( __linux__ ) +;934: +;935:// bk001127 - undid undo +;936:#if defined ( Q3_VM ) +;937:int atoi( const char *string ) { +ADDRGP4 $241 +JUMPV +LABELV $240 +line 944 +;938: int sign; +;939: int value; +;940: int c; +;941: +;942: +;943: // skip whitespace +;944: while ( *string <= ' ' ) { +line 945 +;945: if ( !*string ) { +ADDRFP4 0 +INDIRP4 +INDIRI1 +CVII4 1 +CNSTI4 0 +NEI4 $243 +line 946 +;946: return 0; +CNSTI4 0 +RETI4 +ADDRGP4 $239 +JUMPV +LABELV $243 +line 948 +;947: } +;948: string++; +ADDRFP4 0 +ADDRFP4 0 +INDIRP4 +CNSTI4 1 +ADDP4 +ASGNP4 +line 949 +;949: } +LABELV $241 +line 944 +ADDRFP4 0 +INDIRP4 +INDIRI1 +CVII4 1 +CNSTI4 32 +LEI4 $240 +line 952 +;950: +;951: // check sign +;952: switch ( *string ) { +ADDRLP4 12 +ADDRFP4 0 +INDIRP4 +INDIRI1 +CVII4 1 +ASGNI4 +ADDRLP4 12 +INDIRI4 +CNSTI4 43 +EQI4 $248 +ADDRLP4 12 +INDIRI4 +CNSTI4 45 +EQI4 $249 +ADDRGP4 $245 +JUMPV +LABELV $248 +line 954 +;953: case '+': +;954: string++; +ADDRFP4 0 +ADDRFP4 0 +INDIRP4 +CNSTI4 1 +ADDP4 +ASGNP4 +line 955 +;955: sign = 1; +ADDRLP4 8 +CNSTI4 1 +ASGNI4 +line 956 +;956: break; +ADDRGP4 $246 +JUMPV +LABELV $249 +line 958 +;957: case '-': +;958: string++; +ADDRFP4 0 +ADDRFP4 0 +INDIRP4 +CNSTI4 1 +ADDP4 +ASGNP4 +line 959 +;959: sign = -1; +ADDRLP4 8 +CNSTI4 -1 +ASGNI4 +line 960 +;960: break; +ADDRGP4 $246 +JUMPV +LABELV $245 +line 962 +;961: default: +;962: sign = 1; +ADDRLP4 8 +CNSTI4 1 +ASGNI4 +line 963 +;963: break; +LABELV $246 +line 967 +;964: } +;965: +;966: // read digits +;967: value = 0; +ADDRLP4 4 +CNSTI4 0 +ASGNI4 +LABELV $250 +line 968 +;968: do { +line 969 +;969: c = *string++; +ADDRLP4 20 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRFP4 0 +ADDRLP4 20 +INDIRP4 +CNSTI4 1 +ADDP4 +ASGNP4 +ADDRLP4 0 +ADDRLP4 20 +INDIRP4 +INDIRI1 +CVII4 1 +ASGNI4 +line 970 +;970: if ( c < '0' || c > '9' ) { +ADDRLP4 0 +INDIRI4 +CNSTI4 48 +LTI4 $255 +ADDRLP4 0 +INDIRI4 +CNSTI4 57 +LEI4 $253 +LABELV $255 +line 971 +;971: break; +ADDRGP4 $252 +JUMPV +LABELV $253 +line 973 +;972: } +;973: c -= '0'; +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 48 +SUBI4 +ASGNI4 +line 974 +;974: value = value * 10 + c; +ADDRLP4 4 +CNSTI4 10 +ADDRLP4 4 +INDIRI4 +MULI4 +ADDRLP4 0 +INDIRI4 +ADDI4 +ASGNI4 +line 975 +;975: } while ( 1 ); +LABELV $251 +ADDRGP4 $250 +JUMPV +LABELV $252 +line 979 +;976: +;977: // not handling 10e10 notation... +;978: +;979: return value * sign; +ADDRLP4 4 +INDIRI4 +ADDRLP4 8 +INDIRI4 +MULI4 +RETI4 +LABELV $239 +endproc atoi 28 0 +export _atoi +proc _atoi 32 0 +line 983 +;980:} +;981: +;982: +;983:int _atoi( const char **stringPtr ) { +line 989 +;984: int sign; +;985: int value; +;986: int c; +;987: const char *string; +;988: +;989: string = *stringPtr; +ADDRLP4 4 +ADDRFP4 0 +INDIRP4 +INDIRP4 +ASGNP4 +ADDRGP4 $258 +JUMPV +LABELV $257 +line 992 +;990: +;991: // skip whitespace +;992: while ( *string <= ' ' ) { +line 993 +;993: if ( !*string ) { +ADDRLP4 4 +INDIRP4 +INDIRI1 +CVII4 1 +CNSTI4 0 +NEI4 $260 +line 994 +;994: return 0; +CNSTI4 0 +RETI4 +ADDRGP4 $256 +JUMPV +LABELV $260 +line 996 +;995: } +;996: string++; +ADDRLP4 4 +ADDRLP4 4 +INDIRP4 +CNSTI4 1 +ADDP4 +ASGNP4 +line 997 +;997: } +LABELV $258 +line 992 +ADDRLP4 4 +INDIRP4 +INDIRI1 +CVII4 1 +CNSTI4 32 +LEI4 $257 +line 1000 +;998: +;999: // check sign +;1000: switch ( *string ) { +ADDRLP4 16 +ADDRLP4 4 +INDIRP4 +INDIRI1 +CVII4 1 +ASGNI4 +ADDRLP4 16 +INDIRI4 +CNSTI4 43 +EQI4 $265 +ADDRLP4 16 +INDIRI4 +CNSTI4 45 +EQI4 $266 +ADDRGP4 $262 +JUMPV +LABELV $265 +line 1002 +;1001: case '+': +;1002: string++; +ADDRLP4 4 +ADDRLP4 4 +INDIRP4 +CNSTI4 1 +ADDP4 +ASGNP4 +line 1003 +;1003: sign = 1; +ADDRLP4 12 +CNSTI4 1 +ASGNI4 +line 1004 +;1004: break; +ADDRGP4 $263 +JUMPV +LABELV $266 +line 1006 +;1005: case '-': +;1006: string++; +ADDRLP4 4 +ADDRLP4 4 +INDIRP4 +CNSTI4 1 +ADDP4 +ASGNP4 +line 1007 +;1007: sign = -1; +ADDRLP4 12 +CNSTI4 -1 +ASGNI4 +line 1008 +;1008: break; +ADDRGP4 $263 +JUMPV +LABELV $262 +line 1010 +;1009: default: +;1010: sign = 1; +ADDRLP4 12 +CNSTI4 1 +ASGNI4 +line 1011 +;1011: break; +LABELV $263 +line 1015 +;1012: } +;1013: +;1014: // read digits +;1015: value = 0; +ADDRLP4 8 +CNSTI4 0 +ASGNI4 +LABELV $267 +line 1016 +;1016: do { +line 1017 +;1017: c = *string++; +ADDRLP4 24 +ADDRLP4 4 +INDIRP4 +ASGNP4 +ADDRLP4 4 +ADDRLP4 24 +INDIRP4 +CNSTI4 1 +ADDP4 +ASGNP4 +ADDRLP4 0 +ADDRLP4 24 +INDIRP4 +INDIRI1 +CVII4 1 +ASGNI4 +line 1018 +;1018: if ( c < '0' || c > '9' ) { +ADDRLP4 0 +INDIRI4 +CNSTI4 48 +LTI4 $272 +ADDRLP4 0 +INDIRI4 +CNSTI4 57 +LEI4 $270 +LABELV $272 +line 1019 +;1019: break; +ADDRGP4 $269 +JUMPV +LABELV $270 +line 1021 +;1020: } +;1021: c -= '0'; +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 48 +SUBI4 +ASGNI4 +line 1022 +;1022: value = value * 10 + c; +ADDRLP4 8 +CNSTI4 10 +ADDRLP4 8 +INDIRI4 +MULI4 +ADDRLP4 0 +INDIRI4 +ADDI4 +ASGNI4 +line 1023 +;1023: } while ( 1 ); +LABELV $268 +ADDRGP4 $267 +JUMPV +LABELV $269 +line 1027 +;1024: +;1025: // not handling 10e10 notation... +;1026: +;1027: *stringPtr = string; +ADDRFP4 0 +INDIRP4 +ADDRLP4 4 +INDIRP4 +ASGNP4 +line 1029 +;1028: +;1029: return value * sign; +ADDRLP4 8 +INDIRI4 +ADDRLP4 12 +INDIRI4 +MULI4 +RETI4 +LABELV $256 +endproc _atoi 32 0 +export abs +proc abs 4 0 +line 1032 +;1030:} +;1031: +;1032:int abs( int n ) { +line 1033 +;1033: return n < 0 ? -n : n; +ADDRFP4 0 +INDIRI4 +CNSTI4 0 +GEI4 $275 +ADDRLP4 0 +ADDRFP4 0 +INDIRI4 +NEGI4 +ASGNI4 +ADDRGP4 $276 +JUMPV +LABELV $275 +ADDRLP4 0 +ADDRFP4 0 +INDIRI4 +ASGNI4 +LABELV $276 +ADDRLP4 0 +INDIRI4 +RETI4 +LABELV $273 +endproc abs 4 0 +export fabs +proc fabs 4 0 +line 1036 +;1034:} +;1035: +;1036:double fabs( double x ) { +line 1037 +;1037: return x < 0 ? -x : x; +ADDRFP4 0 +INDIRF4 +CNSTF4 0 +GEF4 $279 +ADDRLP4 0 +ADDRFP4 0 +INDIRF4 +NEGF4 +ASGNF4 +ADDRGP4 $280 +JUMPV +LABELV $279 +ADDRLP4 0 +ADDRFP4 0 +INDIRF4 +ASGNF4 +LABELV $280 +ADDRLP4 0 +INDIRF4 +RETF4 +LABELV $277 +endproc fabs 4 0 +export AddInt +proc AddInt 56 0 +line 1059 +;1038:} +;1039: +;1040: +;1041: +;1042://========================================================= +;1043: +;1044: +;1045:#define ALT 0x00000001 /* alternate form */ +;1046:#define HEXPREFIX 0x00000002 /* add 0x or 0X prefix */ +;1047:#define LADJUST 0x00000004 /* left adjustment */ +;1048:#define LONGDBL 0x00000008 /* long double */ +;1049:#define LONGINT 0x00000010 /* long integer */ +;1050:#define QUADINT 0x00000020 /* quad integer */ +;1051:#define SHORTINT 0x00000040 /* short integer */ +;1052:#define ZEROPAD 0x00000080 /* zero (as opposed to blank) pad */ +;1053:#define FPT 0x00000100 /* floating point number */ +;1054: +;1055:#define to_digit(c) ((c) - '0') +;1056:#define is_digit(c) ((unsigned)to_digit(c) <= 9) +;1057:#define to_char(n) ((n) + '0') +;1058: +;1059:void AddInt( char **buf_p, int val, int width, int flags ) { +line 1065 +;1060: char text[32]; +;1061: int digits; +;1062: int signedVal; +;1063: char *buf; +;1064: +;1065: digits = 0; +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +line 1066 +;1066: signedVal = val; +ADDRLP4 40 +ADDRFP4 4 +INDIRI4 +ASGNI4 +line 1067 +;1067: if ( val < 0 ) { +ADDRFP4 4 +INDIRI4 +CNSTI4 0 +GEI4 $282 +line 1068 +;1068: val = -val; +ADDRFP4 4 +ADDRFP4 4 +INDIRI4 +NEGI4 +ASGNI4 +line 1069 +;1069: } +LABELV $282 +LABELV $284 +line 1070 +;1070: do { +line 1071 +;1071: text[digits++] = '0' + val % 10; +ADDRLP4 44 +ADDRLP4 0 +INDIRI4 +ASGNI4 +ADDRLP4 0 +ADDRLP4 44 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +ADDRLP4 44 +INDIRI4 +ADDRLP4 8 +ADDP4 +ADDRFP4 4 +INDIRI4 +CNSTI4 10 +MODI4 +CNSTI4 48 +ADDI4 +CVII1 4 +ASGNI1 +line 1072 +;1072: val /= 10; +ADDRFP4 4 +ADDRFP4 4 +INDIRI4 +CNSTI4 10 +DIVI4 +ASGNI4 +line 1073 +;1073: } while ( val ); +LABELV $285 +ADDRFP4 4 +INDIRI4 +CNSTI4 0 +NEI4 $284 +line 1075 +;1074: +;1075: if ( signedVal < 0 ) { +ADDRLP4 40 +INDIRI4 +CNSTI4 0 +GEI4 $287 +line 1076 +;1076: text[digits++] = '-'; +ADDRLP4 44 +ADDRLP4 0 +INDIRI4 +ASGNI4 +ADDRLP4 0 +ADDRLP4 44 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +ADDRLP4 44 +INDIRI4 +ADDRLP4 8 +ADDP4 +CNSTI1 45 +ASGNI1 +line 1077 +;1077: } +LABELV $287 +line 1079 +;1078: +;1079: buf = *buf_p; +ADDRLP4 4 +ADDRFP4 0 +INDIRP4 +INDIRP4 +ASGNP4 +line 1081 +;1080: +;1081: if( !( flags & LADJUST ) ) { +ADDRFP4 12 +INDIRI4 +CNSTI4 4 +BANDI4 +CNSTI4 0 +NEI4 $298 +ADDRGP4 $292 +JUMPV +LABELV $291 +line 1082 +;1082: while ( digits < width ) { +line 1083 +;1083: *buf++ = ( flags & ZEROPAD ) ? '0' : ' '; +ADDRLP4 48 +ADDRLP4 4 +INDIRP4 +ASGNP4 +ADDRLP4 4 +ADDRLP4 48 +INDIRP4 +CNSTI4 1 +ADDP4 +ASGNP4 +ADDRFP4 12 +INDIRI4 +CNSTI4 128 +BANDI4 +CNSTI4 0 +EQI4 $295 +ADDRLP4 44 +CNSTI4 48 +ASGNI4 +ADDRGP4 $296 +JUMPV +LABELV $295 +ADDRLP4 44 +CNSTI4 32 +ASGNI4 +LABELV $296 +ADDRLP4 48 +INDIRP4 +ADDRLP4 44 +INDIRI4 +CVII1 4 +ASGNI1 +line 1084 +;1084: width--; +ADDRFP4 8 +ADDRFP4 8 +INDIRI4 +CNSTI4 1 +SUBI4 +ASGNI4 +line 1085 +;1085: } +LABELV $292 +line 1082 +ADDRLP4 0 +INDIRI4 +ADDRFP4 8 +INDIRI4 +LTI4 $291 +line 1086 +;1086: } +ADDRGP4 $298 +JUMPV +LABELV $297 +line 1088 +;1087: +;1088: while ( digits-- ) { +line 1089 +;1089: *buf++ = text[digits]; +ADDRLP4 44 +ADDRLP4 4 +INDIRP4 +ASGNP4 +ADDRLP4 4 +ADDRLP4 44 +INDIRP4 +CNSTI4 1 +ADDP4 +ASGNP4 +ADDRLP4 44 +INDIRP4 +ADDRLP4 0 +INDIRI4 +ADDRLP4 8 +ADDP4 +INDIRI1 +ASGNI1 +line 1090 +;1090: width--; +ADDRFP4 8 +ADDRFP4 8 +INDIRI4 +CNSTI4 1 +SUBI4 +ASGNI4 +line 1091 +;1091: } +LABELV $298 +line 1088 +ADDRLP4 44 +ADDRLP4 0 +INDIRI4 +ASGNI4 +ADDRLP4 0 +ADDRLP4 44 +INDIRI4 +CNSTI4 1 +SUBI4 +ASGNI4 +ADDRLP4 44 +INDIRI4 +CNSTI4 0 +NEI4 $297 +line 1093 +;1092: +;1093: if( flags & LADJUST ) { +ADDRFP4 12 +INDIRI4 +CNSTI4 4 +BANDI4 +CNSTI4 0 +EQI4 $300 +ADDRGP4 $303 +JUMPV +LABELV $302 +line 1094 +;1094: while ( width-- ) { +line 1095 +;1095: *buf++ = ( flags & ZEROPAD ) ? '0' : ' '; +ADDRLP4 52 +ADDRLP4 4 +INDIRP4 +ASGNP4 +ADDRLP4 4 +ADDRLP4 52 +INDIRP4 +CNSTI4 1 +ADDP4 +ASGNP4 +ADDRFP4 12 +INDIRI4 +CNSTI4 128 +BANDI4 +CNSTI4 0 +EQI4 $306 +ADDRLP4 48 +CNSTI4 48 +ASGNI4 +ADDRGP4 $307 +JUMPV +LABELV $306 +ADDRLP4 48 +CNSTI4 32 +ASGNI4 +LABELV $307 +ADDRLP4 52 +INDIRP4 +ADDRLP4 48 +INDIRI4 +CVII1 4 +ASGNI1 +line 1096 +;1096: } +LABELV $303 +line 1094 +ADDRLP4 48 +ADDRFP4 8 +INDIRI4 +ASGNI4 +ADDRFP4 8 +ADDRLP4 48 +INDIRI4 +CNSTI4 1 +SUBI4 +ASGNI4 +ADDRLP4 48 +INDIRI4 +CNSTI4 0 +NEI4 $302 +line 1097 +;1097: } +LABELV $300 +line 1099 +;1098: +;1099: *buf_p = buf; +ADDRFP4 0 +INDIRP4 +ADDRLP4 4 +INDIRP4 +ASGNP4 +line 1100 +;1100:} +LABELV $281 +endproc AddInt 56 0 +export AddFloat +proc AddFloat 60 0 +line 1102 +;1101: +;1102:void AddFloat( char **buf_p, float fval, int width, int prec ) { +line 1110 +;1103: char text[32]; +;1104: int digits; +;1105: float signedVal; +;1106: char *buf; +;1107: int val; +;1108: +;1109: // get the sign +;1110: signedVal = fval; +ADDRLP4 44 +ADDRFP4 4 +INDIRF4 +ASGNF4 +line 1111 +;1111: if ( fval < 0 ) { +ADDRFP4 4 +INDIRF4 +CNSTF4 0 +GEF4 $309 +line 1112 +;1112: fval = -fval; +ADDRFP4 4 +ADDRFP4 4 +INDIRF4 +NEGF4 +ASGNF4 +line 1113 +;1113: } +LABELV $309 +line 1116 +;1114: +;1115: // write the float number +;1116: digits = 0; +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +line 1117 +;1117: val = (int)fval; +ADDRLP4 4 +ADDRFP4 4 +INDIRF4 +CVFI4 4 +ASGNI4 +LABELV $311 +line 1118 +;1118: do { +line 1119 +;1119: text[digits++] = '0' + val % 10; +ADDRLP4 48 +ADDRLP4 0 +INDIRI4 +ASGNI4 +ADDRLP4 0 +ADDRLP4 48 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +ADDRLP4 48 +INDIRI4 +ADDRLP4 8 +ADDP4 +ADDRLP4 4 +INDIRI4 +CNSTI4 10 +MODI4 +CNSTI4 48 +ADDI4 +CVII1 4 +ASGNI1 +line 1120 +;1120: val /= 10; +ADDRLP4 4 +ADDRLP4 4 +INDIRI4 +CNSTI4 10 +DIVI4 +ASGNI4 +line 1121 +;1121: } while ( val ); +LABELV $312 +ADDRLP4 4 +INDIRI4 +CNSTI4 0 +NEI4 $311 +line 1123 +;1122: +;1123: if ( signedVal < 0 ) { +ADDRLP4 44 +INDIRF4 +CNSTF4 0 +GEF4 $314 +line 1124 +;1124: text[digits++] = '-'; +ADDRLP4 48 +ADDRLP4 0 +INDIRI4 +ASGNI4 +ADDRLP4 0 +ADDRLP4 48 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +ADDRLP4 48 +INDIRI4 +ADDRLP4 8 +ADDP4 +CNSTI1 45 +ASGNI1 +line 1125 +;1125: } +LABELV $314 +line 1127 +;1126: +;1127: buf = *buf_p; +ADDRLP4 40 +ADDRFP4 0 +INDIRP4 +INDIRP4 +ASGNP4 +ADDRGP4 $317 +JUMPV +LABELV $316 +line 1129 +;1128: +;1129: while ( digits < width ) { +line 1130 +;1130: *buf++ = ' '; +ADDRLP4 48 +ADDRLP4 40 +INDIRP4 +ASGNP4 +ADDRLP4 40 +ADDRLP4 48 +INDIRP4 +CNSTI4 1 +ADDP4 +ASGNP4 +ADDRLP4 48 +INDIRP4 +CNSTI1 32 +ASGNI1 +line 1131 +;1131: width--; +ADDRFP4 8 +ADDRFP4 8 +INDIRI4 +CNSTI4 1 +SUBI4 +ASGNI4 +line 1132 +;1132: } +LABELV $317 +line 1129 +ADDRLP4 0 +INDIRI4 +ADDRFP4 8 +INDIRI4 +LTI4 $316 +ADDRGP4 $320 +JUMPV +LABELV $319 +line 1134 +;1133: +;1134: while ( digits-- ) { +line 1135 +;1135: *buf++ = text[digits]; +ADDRLP4 48 +ADDRLP4 40 +INDIRP4 +ASGNP4 +ADDRLP4 40 +ADDRLP4 48 +INDIRP4 +CNSTI4 1 +ADDP4 +ASGNP4 +ADDRLP4 48 +INDIRP4 +ADDRLP4 0 +INDIRI4 +ADDRLP4 8 +ADDP4 +INDIRI1 +ASGNI1 +line 1136 +;1136: } +LABELV $320 +line 1134 +ADDRLP4 48 +ADDRLP4 0 +INDIRI4 +ASGNI4 +ADDRLP4 0 +ADDRLP4 48 +INDIRI4 +CNSTI4 1 +SUBI4 +ASGNI4 +ADDRLP4 48 +INDIRI4 +CNSTI4 0 +NEI4 $319 +line 1138 +;1137: +;1138: *buf_p = buf; +ADDRFP4 0 +INDIRP4 +ADDRLP4 40 +INDIRP4 +ASGNP4 +line 1140 +;1139: +;1140: if (prec < 0) +ADDRFP4 12 +INDIRI4 +CNSTI4 0 +GEI4 $322 +line 1141 +;1141: prec = 6; +ADDRFP4 12 +CNSTI4 6 +ASGNI4 +LABELV $322 +line 1143 +;1142: // write the fraction +;1143: digits = 0; +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +ADDRGP4 $325 +JUMPV +LABELV $324 +line 1144 +;1144: while (digits < prec) { +line 1145 +;1145: fval -= (int) fval; +ADDRLP4 52 +ADDRFP4 4 +INDIRF4 +ASGNF4 +ADDRFP4 4 +ADDRLP4 52 +INDIRF4 +ADDRLP4 52 +INDIRF4 +CVFI4 4 +CVIF4 4 +SUBF4 +ASGNF4 +line 1146 +;1146: fval *= 10.0; +ADDRFP4 4 +CNSTF4 1092616192 +ADDRFP4 4 +INDIRF4 +MULF4 +ASGNF4 +line 1147 +;1147: val = (int) fval; +ADDRLP4 4 +ADDRFP4 4 +INDIRF4 +CVFI4 4 +ASGNI4 +line 1148 +;1148: text[digits++] = '0' + val % 10; +ADDRLP4 56 +ADDRLP4 0 +INDIRI4 +ASGNI4 +ADDRLP4 0 +ADDRLP4 56 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +ADDRLP4 56 +INDIRI4 +ADDRLP4 8 +ADDP4 +ADDRLP4 4 +INDIRI4 +CNSTI4 10 +MODI4 +CNSTI4 48 +ADDI4 +CVII1 4 +ASGNI1 +line 1149 +;1149: } +LABELV $325 +line 1144 +ADDRLP4 0 +INDIRI4 +ADDRFP4 12 +INDIRI4 +LTI4 $324 +line 1151 +;1150: +;1151: if (digits > 0) { +ADDRLP4 0 +INDIRI4 +CNSTI4 0 +LEI4 $327 +line 1152 +;1152: buf = *buf_p; +ADDRLP4 40 +ADDRFP4 0 +INDIRP4 +INDIRP4 +ASGNP4 +line 1153 +;1153: *buf++ = '.'; +ADDRLP4 52 +ADDRLP4 40 +INDIRP4 +ASGNP4 +ADDRLP4 40 +ADDRLP4 52 +INDIRP4 +CNSTI4 1 +ADDP4 +ASGNP4 +ADDRLP4 52 +INDIRP4 +CNSTI1 46 +ASGNI1 +line 1154 +;1154: for (prec = 0; prec < digits; prec++) { +ADDRFP4 12 +CNSTI4 0 +ASGNI4 +ADDRGP4 $332 +JUMPV +LABELV $329 +line 1155 +;1155: *buf++ = text[prec]; +ADDRLP4 56 +ADDRLP4 40 +INDIRP4 +ASGNP4 +ADDRLP4 40 +ADDRLP4 56 +INDIRP4 +CNSTI4 1 +ADDP4 +ASGNP4 +ADDRLP4 56 +INDIRP4 +ADDRFP4 12 +INDIRI4 +ADDRLP4 8 +ADDP4 +INDIRI1 +ASGNI1 +line 1156 +;1156: } +LABELV $330 +line 1154 +ADDRFP4 12 +ADDRFP4 12 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +LABELV $332 +ADDRFP4 12 +INDIRI4 +ADDRLP4 0 +INDIRI4 +LTI4 $329 +line 1157 +;1157: *buf_p = buf; +ADDRFP4 0 +INDIRP4 +ADDRLP4 40 +INDIRP4 +ASGNP4 +line 1158 +;1158: } +LABELV $327 +line 1159 +;1159:} +LABELV $308 +endproc AddFloat 60 0 +export AddString +proc AddString 20 4 +line 1162 +;1160: +;1161: +;1162:void AddString( char **buf_p, char *string, int width, int prec ) { +line 1166 +;1163: int size; +;1164: char *buf; +;1165: +;1166: buf = *buf_p; +ADDRLP4 4 +ADDRFP4 0 +INDIRP4 +INDIRP4 +ASGNP4 +line 1168 +;1167: +;1168: if ( string == NULL ) { +ADDRFP4 4 +INDIRP4 +CVPU4 4 +CNSTU4 0 +NEU4 $334 +line 1169 +;1169: string = "(null)"; +ADDRFP4 4 +ADDRGP4 $336 +ASGNP4 +line 1170 +;1170: prec = -1; +ADDRFP4 12 +CNSTI4 -1 +ASGNI4 +line 1171 +;1171: } +LABELV $334 +line 1173 +;1172: +;1173: if ( prec >= 0 ) { +ADDRFP4 12 +INDIRI4 +CNSTI4 0 +LTI4 $337 +line 1174 +;1174: for( size = 0; size < prec; size++ ) { +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +ADDRGP4 $342 +JUMPV +LABELV $339 +line 1175 +;1175: if( string[size] == '\0' ) { +ADDRLP4 0 +INDIRI4 +ADDRFP4 4 +INDIRP4 +ADDP4 +INDIRI1 +CVII4 1 +CNSTI4 0 +NEI4 $343 +line 1176 +;1176: break; +ADDRGP4 $338 +JUMPV +LABELV $343 +line 1178 +;1177: } +;1178: } +LABELV $340 +line 1174 +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +LABELV $342 +ADDRLP4 0 +INDIRI4 +ADDRFP4 12 +INDIRI4 +LTI4 $339 +line 1179 +;1179: } +ADDRGP4 $338 +JUMPV +LABELV $337 +line 1180 +;1180: else { +line 1181 +;1181: size = strlen( string ); +ADDRFP4 4 +INDIRP4 +ARGP4 +ADDRLP4 8 +ADDRGP4 strlen +CALLI4 +ASGNI4 +ADDRLP4 0 +ADDRLP4 8 +INDIRI4 +ASGNI4 +line 1182 +;1182: } +LABELV $338 +line 1184 +;1183: +;1184: width -= size; +ADDRFP4 8 +ADDRFP4 8 +INDIRI4 +ADDRLP4 0 +INDIRI4 +SUBI4 +ASGNI4 +ADDRGP4 $346 +JUMPV +LABELV $345 +line 1186 +;1185: +;1186: while( size-- ) { +line 1187 +;1187: *buf++ = *string++; +ADDRLP4 8 +ADDRLP4 4 +INDIRP4 +ASGNP4 +ADDRLP4 16 +CNSTI4 1 +ASGNI4 +ADDRLP4 4 +ADDRLP4 8 +INDIRP4 +ADDRLP4 16 +INDIRI4 +ADDP4 +ASGNP4 +ADDRLP4 12 +ADDRFP4 4 +INDIRP4 +ASGNP4 +ADDRFP4 4 +ADDRLP4 12 +INDIRP4 +ADDRLP4 16 +INDIRI4 +ADDP4 +ASGNP4 +ADDRLP4 8 +INDIRP4 +ADDRLP4 12 +INDIRP4 +INDIRI1 +ASGNI1 +line 1188 +;1188: } +LABELV $346 +line 1186 +ADDRLP4 8 +ADDRLP4 0 +INDIRI4 +ASGNI4 +ADDRLP4 0 +ADDRLP4 8 +INDIRI4 +CNSTI4 1 +SUBI4 +ASGNI4 +ADDRLP4 8 +INDIRI4 +CNSTI4 0 +NEI4 $345 +ADDRGP4 $349 +JUMPV +LABELV $348 +line 1190 +;1189: +;1190: while( width-- > 0 ) { +line 1191 +;1191: *buf++ = ' '; +ADDRLP4 12 +ADDRLP4 4 +INDIRP4 +ASGNP4 +ADDRLP4 4 +ADDRLP4 12 +INDIRP4 +CNSTI4 1 +ADDP4 +ASGNP4 +ADDRLP4 12 +INDIRP4 +CNSTI1 32 +ASGNI1 +line 1192 +;1192: } +LABELV $349 +line 1190 +ADDRLP4 12 +ADDRFP4 8 +INDIRI4 +ASGNI4 +ADDRFP4 8 +ADDRLP4 12 +INDIRI4 +CNSTI4 1 +SUBI4 +ASGNI4 +ADDRLP4 12 +INDIRI4 +CNSTI4 0 +GTI4 $348 +line 1194 +;1193: +;1194: *buf_p = buf; +ADDRFP4 0 +INDIRP4 +ADDRLP4 4 +INDIRP4 +ASGNP4 +line 1195 +;1195:} +LABELV $333 +endproc AddString 20 4 +export vsprintf +proc vsprintf 72 16 +line 1205 +;1196: +;1197:/* +;1198:vsprintf +;1199: +;1200:I'm not going to support a bunch of the more arcane stuff in here +;1201:just to keep it simpler. For example, the '*' and '$' are not +;1202:currently supported. I've tried to make it so that it will just +;1203:parse and ignore formats we don't support. +;1204:*/ +;1205:int vsprintf( char *buffer, const char *fmt, va_list argptr ) { +line 1215 +;1206: int *arg; +;1207: char *buf_p; +;1208: char ch; +;1209: int flags; +;1210: int width; +;1211: int prec; +;1212: int n; +;1213: char sign; +;1214: +;1215: buf_p = buffer; +ADDRLP4 4 +ADDRFP4 0 +INDIRP4 +ASGNP4 +line 1216 +;1216: arg = (int *)argptr; +ADDRLP4 24 +ADDRFP4 8 +INDIRP4 +ASGNP4 +ADDRGP4 $353 +JUMPV +LABELV $352 +line 1218 +;1217: +;1218: while( qtrue ) { +line 1220 +;1219: // run through the format string until we hit a '%' or '\0' +;1220: for ( ch = *fmt; (ch = *fmt) != '\0' && ch != '%'; fmt++ ) { +ADDRLP4 0 +ADDRFP4 4 +INDIRP4 +INDIRI1 +ASGNI1 +ADDRGP4 $358 +JUMPV +LABELV $355 +line 1221 +;1221: *buf_p++ = ch; +ADDRLP4 32 +ADDRLP4 4 +INDIRP4 +ASGNP4 +ADDRLP4 4 +ADDRLP4 32 +INDIRP4 +CNSTI4 1 +ADDP4 +ASGNP4 +ADDRLP4 32 +INDIRP4 +ADDRLP4 0 +INDIRI1 +ASGNI1 +line 1222 +;1222: } +LABELV $356 +line 1220 +ADDRFP4 4 +ADDRFP4 4 +INDIRP4 +CNSTI4 1 +ADDP4 +ASGNP4 +LABELV $358 +ADDRLP4 29 +ADDRFP4 4 +INDIRP4 +INDIRI1 +ASGNI1 +ADDRLP4 0 +ADDRLP4 29 +INDIRI1 +ASGNI1 +ADDRLP4 29 +INDIRI1 +CVII4 1 +CNSTI4 0 +EQI4 $359 +ADDRLP4 0 +INDIRI1 +CVII4 1 +CNSTI4 37 +NEI4 $355 +LABELV $359 +line 1223 +;1223: if ( ch == '\0' ) { +ADDRLP4 0 +INDIRI1 +CVII4 1 +CNSTI4 0 +NEI4 $360 +line 1224 +;1224: goto done; +ADDRGP4 $362 +JUMPV +LABELV $360 +line 1228 +;1225: } +;1226: +;1227: // skip over the '%' +;1228: fmt++; +ADDRFP4 4 +ADDRFP4 4 +INDIRP4 +CNSTI4 1 +ADDP4 +ASGNP4 +line 1231 +;1229: +;1230: // reset formatting state +;1231: flags = 0; +ADDRLP4 16 +CNSTI4 0 +ASGNI4 +line 1232 +;1232: width = 0; +ADDRLP4 12 +CNSTI4 0 +ASGNI4 +line 1233 +;1233: prec = -1; +ADDRLP4 20 +CNSTI4 -1 +ASGNI4 +line 1234 +;1234: sign = '\0'; +ADDRLP4 28 +CNSTI1 0 +ASGNI1 +LABELV $363 +line 1237 +;1235: +;1236:rflag: +;1237: ch = *fmt++; +ADDRLP4 32 +ADDRFP4 4 +INDIRP4 +ASGNP4 +ADDRFP4 4 +ADDRLP4 32 +INDIRP4 +CNSTI4 1 +ADDP4 +ASGNP4 +ADDRLP4 0 +ADDRLP4 32 +INDIRP4 +INDIRI1 +ASGNI1 +LABELV $364 +line 1239 +;1238:reswitch: +;1239: switch( ch ) { +ADDRLP4 36 +ADDRLP4 0 +INDIRI1 +CVII4 1 +ASGNI4 +ADDRLP4 36 +INDIRI4 +CNSTI4 99 +LTI4 $386 +ADDRLP4 36 +INDIRI4 +CNSTI4 105 +GTI4 $387 +ADDRLP4 36 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 $388-396 +ADDP4 +INDIRP4 +JUMPV +lit +align 4 +LABELV $388 +address $381 +address $382 +address $365 +address $383 +address $365 +address $365 +address $382 +code +LABELV $386 +ADDRLP4 36 +INDIRI4 +CNSTI4 37 +LTI4 $365 +ADDRLP4 36 +INDIRI4 +CNSTI4 57 +GTI4 $365 +ADDRLP4 36 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 $390-148 +ADDP4 +INDIRP4 +JUMPV +lit +align 4 +LABELV $390 +address $385 +address $365 +address $365 +address $365 +address $365 +address $365 +address $365 +address $365 +address $368 +address $369 +address $365 +address $376 +address $377 +address $377 +address $377 +address $377 +address $377 +address $377 +address $377 +address $377 +address $377 +code +LABELV $387 +ADDRLP4 36 +INDIRI4 +CNSTI4 115 +EQI4 $384 +ADDRGP4 $365 +JUMPV +LABELV $368 +line 1241 +;1240: case '-': +;1241: flags |= LADJUST; +ADDRLP4 16 +ADDRLP4 16 +INDIRI4 +CNSTI4 4 +BORI4 +ASGNI4 +line 1242 +;1242: goto rflag; +ADDRGP4 $363 +JUMPV +LABELV $369 +line 1244 +;1243: case '.': +;1244: n = 0; +ADDRLP4 8 +CNSTI4 0 +ASGNI4 +ADDRGP4 $371 +JUMPV +LABELV $370 +line 1245 +;1245: while( is_digit( ( ch = *fmt++ ) ) ) { +line 1246 +;1246: n = 10 * n + ( ch - '0' ); +ADDRLP4 8 +CNSTI4 10 +ADDRLP4 8 +INDIRI4 +MULI4 +ADDRLP4 0 +INDIRI1 +CVII4 1 +CNSTI4 48 +SUBI4 +ADDI4 +ASGNI4 +line 1247 +;1247: } +LABELV $371 +line 1245 +ADDRLP4 48 +ADDRFP4 4 +INDIRP4 +ASGNP4 +ADDRFP4 4 +ADDRLP4 48 +INDIRP4 +CNSTI4 1 +ADDP4 +ASGNP4 +ADDRLP4 52 +ADDRLP4 48 +INDIRP4 +INDIRI1 +ASGNI1 +ADDRLP4 0 +ADDRLP4 52 +INDIRI1 +ASGNI1 +ADDRLP4 52 +INDIRI1 +CVII4 1 +CNSTI4 48 +SUBI4 +CVIU4 4 +CNSTU4 9 +LEU4 $370 +line 1248 +;1248: prec = n < 0 ? -1 : n; +ADDRLP4 8 +INDIRI4 +CNSTI4 0 +GEI4 $374 +ADDRLP4 56 +CNSTI4 -1 +ASGNI4 +ADDRGP4 $375 +JUMPV +LABELV $374 +ADDRLP4 56 +ADDRLP4 8 +INDIRI4 +ASGNI4 +LABELV $375 +ADDRLP4 20 +ADDRLP4 56 +INDIRI4 +ASGNI4 +line 1249 +;1249: goto reswitch; +ADDRGP4 $364 +JUMPV +LABELV $376 +line 1251 +;1250: case '0': +;1251: flags |= ZEROPAD; +ADDRLP4 16 +ADDRLP4 16 +INDIRI4 +CNSTI4 128 +BORI4 +ASGNI4 +line 1252 +;1252: goto rflag; +ADDRGP4 $363 +JUMPV +LABELV $377 +line 1262 +;1253: case '1': +;1254: case '2': +;1255: case '3': +;1256: case '4': +;1257: case '5': +;1258: case '6': +;1259: case '7': +;1260: case '8': +;1261: case '9': +;1262: n = 0; +ADDRLP4 8 +CNSTI4 0 +ASGNI4 +LABELV $378 +line 1263 +;1263: do { +line 1264 +;1264: n = 10 * n + ( ch - '0' ); +ADDRLP4 8 +CNSTI4 10 +ADDRLP4 8 +INDIRI4 +MULI4 +ADDRLP4 0 +INDIRI1 +CVII4 1 +CNSTI4 48 +SUBI4 +ADDI4 +ASGNI4 +line 1265 +;1265: ch = *fmt++; +ADDRLP4 60 +ADDRFP4 4 +INDIRP4 +ASGNP4 +ADDRFP4 4 +ADDRLP4 60 +INDIRP4 +CNSTI4 1 +ADDP4 +ASGNP4 +ADDRLP4 0 +ADDRLP4 60 +INDIRP4 +INDIRI1 +ASGNI1 +line 1266 +;1266: } while( is_digit( ch ) ); +LABELV $379 +ADDRLP4 0 +INDIRI1 +CVII4 1 +CNSTI4 48 +SUBI4 +CVIU4 4 +CNSTU4 9 +LEU4 $378 +line 1267 +;1267: width = n; +ADDRLP4 12 +ADDRLP4 8 +INDIRI4 +ASGNI4 +line 1268 +;1268: goto reswitch; +ADDRGP4 $364 +JUMPV +LABELV $381 +line 1270 +;1269: case 'c': +;1270: *buf_p++ = (char)*arg; +ADDRLP4 60 +ADDRLP4 4 +INDIRP4 +ASGNP4 +ADDRLP4 4 +ADDRLP4 60 +INDIRP4 +CNSTI4 1 +ADDP4 +ASGNP4 +ADDRLP4 60 +INDIRP4 +ADDRLP4 24 +INDIRP4 +INDIRI4 +CVII1 4 +ASGNI1 +line 1271 +;1271: arg++; +ADDRLP4 24 +ADDRLP4 24 +INDIRP4 +CNSTI4 4 +ADDP4 +ASGNP4 +line 1272 +;1272: break; +ADDRGP4 $366 +JUMPV +LABELV $382 +line 1275 +;1273: case 'd': +;1274: case 'i': +;1275: AddInt( &buf_p, *arg, width, flags ); +ADDRLP4 4 +ARGP4 +ADDRLP4 24 +INDIRP4 +INDIRI4 +ARGI4 +ADDRLP4 12 +INDIRI4 +ARGI4 +ADDRLP4 16 +INDIRI4 +ARGI4 +ADDRGP4 AddInt +CALLV +pop +line 1276 +;1276: arg++; +ADDRLP4 24 +ADDRLP4 24 +INDIRP4 +CNSTI4 4 +ADDP4 +ASGNP4 +line 1277 +;1277: break; +ADDRGP4 $366 +JUMPV +LABELV $383 +line 1279 +;1278: case 'f': +;1279: AddFloat( &buf_p, *(double *)arg, width, prec ); +ADDRLP4 4 +ARGP4 +ADDRLP4 24 +INDIRP4 +INDIRF4 +ARGF4 +ADDRLP4 12 +INDIRI4 +ARGI4 +ADDRLP4 20 +INDIRI4 +ARGI4 +ADDRGP4 AddFloat +CALLV +pop +line 1281 +;1280:#ifdef __LCC__ +;1281: arg += 1; // everything is 32 bit in my compiler +ADDRLP4 24 +ADDRLP4 24 +INDIRP4 +CNSTI4 4 +ADDP4 +ASGNP4 +line 1285 +;1282:#else +;1283: arg += 2; +;1284:#endif +;1285: break; +ADDRGP4 $366 +JUMPV +LABELV $384 +line 1287 +;1286: case 's': +;1287: AddString( &buf_p, (char *)*arg, width, prec ); +ADDRLP4 4 +ARGP4 +ADDRLP4 24 +INDIRP4 +INDIRI4 +CVIU4 4 +CVUP4 4 +ARGP4 +ADDRLP4 12 +INDIRI4 +ARGI4 +ADDRLP4 20 +INDIRI4 +ARGI4 +ADDRGP4 AddString +CALLV +pop +line 1288 +;1288: arg++; +ADDRLP4 24 +ADDRLP4 24 +INDIRP4 +CNSTI4 4 +ADDP4 +ASGNP4 +line 1289 +;1289: break; +ADDRGP4 $366 +JUMPV +LABELV $385 +line 1291 +;1290: case '%': +;1291: *buf_p++ = ch; +ADDRLP4 64 +ADDRLP4 4 +INDIRP4 +ASGNP4 +ADDRLP4 4 +ADDRLP4 64 +INDIRP4 +CNSTI4 1 +ADDP4 +ASGNP4 +ADDRLP4 64 +INDIRP4 +ADDRLP4 0 +INDIRI1 +ASGNI1 +line 1292 +;1292: break; +ADDRGP4 $366 +JUMPV +LABELV $365 +line 1294 +;1293: default: +;1294: *buf_p++ = (char)*arg; +ADDRLP4 68 +ADDRLP4 4 +INDIRP4 +ASGNP4 +ADDRLP4 4 +ADDRLP4 68 +INDIRP4 +CNSTI4 1 +ADDP4 +ASGNP4 +ADDRLP4 68 +INDIRP4 +ADDRLP4 24 +INDIRP4 +INDIRI4 +CVII1 4 +ASGNI1 +line 1295 +;1295: arg++; +ADDRLP4 24 +ADDRLP4 24 +INDIRP4 +CNSTI4 4 +ADDP4 +ASGNP4 +line 1296 +;1296: break; +LABELV $366 +line 1298 +;1297: } +;1298: } +LABELV $353 +line 1218 +ADDRGP4 $352 +JUMPV +LABELV $362 +line 1301 +;1299: +;1300:done: +;1301: *buf_p = 0; +ADDRLP4 4 +INDIRP4 +CNSTI1 0 +ASGNI1 +line 1302 +;1302: return buf_p - buffer; +ADDRLP4 4 +INDIRP4 +CVPU4 4 +ADDRFP4 0 +INDIRP4 +CVPU4 4 +SUBU4 +CVUI4 4 +RETI4 +LABELV $351 +endproc vsprintf 72 16 +export sscanf +proc sscanf 28 4 +line 1307 +;1303:} +;1304: +;1305: +;1306:/* this is really crappy */ +;1307:int sscanf( const char *buffer, const char *fmt, ... ) { +line 1312 +;1308: int cmd; +;1309: int **arg; +;1310: int count; +;1311: +;1312: arg = (int **)&fmt + 1; +ADDRLP4 4 +ADDRFP4 4+4 +ASGNP4 +line 1313 +;1313: count = 0; +ADDRLP4 8 +CNSTI4 0 +ASGNI4 +ADDRGP4 $395 +JUMPV +LABELV $394 +line 1315 +;1314: +;1315: while ( *fmt ) { +line 1316 +;1316: if ( fmt[0] != '%' ) { +ADDRFP4 4 +INDIRP4 +INDIRI1 +CVII4 1 +CNSTI4 37 +EQI4 $397 +line 1317 +;1317: fmt++; +ADDRFP4 4 +ADDRFP4 4 +INDIRP4 +CNSTI4 1 +ADDP4 +ASGNP4 +line 1318 +;1318: continue; +ADDRGP4 $395 +JUMPV +LABELV $397 +line 1321 +;1319: } +;1320: +;1321: cmd = fmt[1]; +ADDRLP4 0 +ADDRFP4 4 +INDIRP4 +CNSTI4 1 +ADDP4 +INDIRI1 +CVII4 1 +ASGNI4 +line 1322 +;1322: fmt += 2; +ADDRFP4 4 +ADDRFP4 4 +INDIRP4 +CNSTI4 2 +ADDP4 +ASGNP4 +line 1324 +;1323: +;1324: switch ( cmd ) { +ADDRLP4 16 +CNSTI4 100 +ASGNI4 +ADDRLP4 0 +INDIRI4 +ADDRLP4 16 +INDIRI4 +EQI4 $401 +ADDRLP4 0 +INDIRI4 +CNSTI4 102 +EQI4 $402 +ADDRLP4 0 +INDIRI4 +CNSTI4 105 +EQI4 $401 +ADDRLP4 0 +INDIRI4 +ADDRLP4 16 +INDIRI4 +LTI4 $399 +LABELV $403 +ADDRLP4 0 +INDIRI4 +CNSTI4 117 +EQI4 $401 +ADDRGP4 $399 +JUMPV +LABELV $401 +line 1328 +;1325: case 'i': +;1326: case 'd': +;1327: case 'u': +;1328: **arg = _atoi( &buffer ); +ADDRFP4 0 +ARGP4 +ADDRLP4 20 +ADDRGP4 _atoi +CALLI4 +ASGNI4 +ADDRLP4 4 +INDIRP4 +INDIRP4 +ADDRLP4 20 +INDIRI4 +ASGNI4 +line 1329 +;1329: break; +ADDRGP4 $400 +JUMPV +LABELV $402 +line 1331 +;1330: case 'f': +;1331: *(float *)*arg = _atof( &buffer ); +ADDRFP4 0 +ARGP4 +ADDRLP4 24 +ADDRGP4 _atof +CALLF4 +ASGNF4 +ADDRLP4 4 +INDIRP4 +INDIRP4 +ADDRLP4 24 +INDIRF4 +ASGNF4 +line 1332 +;1332: break; +LABELV $399 +LABELV $400 +line 1334 +;1333: } +;1334: arg++; +ADDRLP4 4 +ADDRLP4 4 +INDIRP4 +CNSTI4 4 +ADDP4 +ASGNP4 +line 1335 +;1335: } +LABELV $395 +line 1315 +ADDRFP4 4 +INDIRP4 +INDIRI1 +CVII4 1 +CNSTI4 0 +NEI4 $394 +line 1337 +;1336: +;1337: return count; +ADDRLP4 8 +INDIRI4 +RETI4 +LABELV $392 +endproc sscanf 28 4 +import Com_Printf +import Com_Error +import Info_NextPair +import Info_Validate +import Info_SetValueForKey_Big +import Info_SetValueForKey +import Info_RemoveKey_big +import Info_RemoveKey +import Info_ValueForKey +import va +import Q_CleanStr +import Q_PrintStrlen +import Q_strcat +import Q_strncpyz +import Q_strrchr +import Q_strupr +import Q_strlwr +import Q_stricmpn +import Q_strncmp +import Q_stricmp +import Q_isalpha +import Q_isupper +import Q_islower +import Q_isprint +import Com_sprintf +import Parse3DMatrix +import Parse2DMatrix +import Parse1DMatrix +import SkipRestOfLine +import SkipBracedSection +import COM_MatchToken +import COM_ParseWarning +import COM_ParseError +import COM_Compress +import COM_ParseExt +import COM_Parse +import COM_GetCurrentParseLine +import COM_BeginParseSession +import COM_DefaultExtension +import COM_StripExtension +import COM_SkipPath +import Com_Clamp +import PerpendicularVector +import AngleVectors +import MatrixMultiply +import MakeNormalVectors +import RotateAroundDirection +import RotatePointAroundVector +import ProjectPointOnPlane +import PlaneFromPoints +import AngleDelta +import AngleNormalize180 +import AngleNormalize360 +import AnglesSubtract +import AngleSubtract +import LerpAngle +import AngleMod +import BoxOnPlaneSide +import SetPlaneSignbits +import AxisCopy +import AxisClear +import AnglesToAxis +import vectoangles +import Q_crandom +import Q_random +import Q_rand +import Q_acos +import Q_log2 +import VectorRotate +import Vector4Scale +import VectorNormalize2 +import VectorNormalize +import CrossProduct +import VectorInverse +import VectorNormalizeFast +import DistanceSquared +import Distance +import VectorLengthSquared +import VectorLength +import VectorCompare +import AddPointToBounds +import ClearBounds +import RadiusFromBounds +import NormalizeColor +import ColorBytes4 +import ColorBytes3 +import _VectorMA +import _VectorScale +import _VectorCopy +import _VectorAdd +import _VectorSubtract +import _DotProduct +import ByteToDir +import DirToByte +import ClampShort +import ClampChar +import Q_rsqrt +import Q_fabs +import axisDefault +import vec3_origin +import g_color_table +import colorDkGrey +import colorMdGrey +import colorLtGrey +import colorWhite +import colorCyan +import colorMagenta +import colorYellow +import colorBlue +import colorGreen +import colorRed +import colorBlack +import bytedirs +import Com_Memcpy +import Com_Memset +import Hunk_Alloc +import FloatSwap +import LongSwap +import ShortSwap +import acos +import atan2 +import cos +import sin +import sqrt +import floor +import ceil +import memcpy +import memset +import strncpy +lit +align 1 +LABELV $336 +byte 1 40 +byte 1 110 +byte 1 117 +byte 1 108 +byte 1 108 +byte 1 41 +byte 1 0 diff --git a/ta_ui/vm/bg_misc.asm b/ta_ui/vm/bg_misc.asm new file mode 100644 index 00000000..49deee06 --- /dev/null +++ b/ta_ui/vm/bg_misc.asm @@ -0,0 +1,9876 @@ +data +export bg_itemlist +align 4 +LABELV bg_itemlist +byte 4 0 +byte 4 0 +byte 4 0 +byte 4 0 +byte 4 0 +byte 4 0 +byte 4 0 +byte 4 0 +byte 4 0 +byte 4 0 +byte 4 0 +address $43 +address $43 +address $44 +address $45 +address $46 +byte 4 0 +byte 4 0 +byte 4 0 +address $47 +address $48 +byte 4 1 +byte 4 1 +byte 4 8 +address $43 +address $43 +address $49 +address $50 +address $51 +byte 4 0 +byte 4 0 +byte 4 0 +address $52 +address $53 +byte 4 12 +byte 4 1 +byte 4 1 +address $43 +address $43 +address $54 +address $55 +address $56 +byte 4 0 +byte 4 0 +byte 4 0 +address $57 +address $58 +byte 4 24 +byte 4 1 +byte 4 6 +address $43 +address $43 +address $59 +address $60 +address $61 +byte 4 0 +byte 4 0 +byte 4 0 +address $62 +address $63 +byte 4 6 +byte 4 1 +byte 4 5 +address $43 +address $43 +address $64 +address $65 +address $66 +byte 4 0 +byte 4 0 +byte 4 0 +address $67 +address $68 +byte 4 30 +byte 4 1 +byte 4 3 +address $43 +address $43 +address $69 +address $70 +address $71 +byte 4 0 +byte 4 0 +byte 4 0 +address $72 +address $73 +byte 4 2 +byte 4 1 +byte 4 4 +address $43 +address $43 +address $74 +address $75 +address $76 +byte 4 0 +byte 4 0 +byte 4 0 +address $77 +address $78 +byte 4 7 +byte 4 1 +byte 4 2 +address $43 +address $43 +address $79 +address $50 +address $80 +byte 4 0 +byte 4 0 +byte 4 0 +address $81 +address $82 +byte 4 24 +byte 4 1 +byte 4 7 +address $43 +address $43 +address $83 +address $45 +address $84 +byte 4 0 +byte 4 0 +byte 4 0 +address $85 +address $86 +byte 4 1 +byte 4 1 +byte 4 9 +address $43 +address $43 +address $87 +byte 4 0 +address $88 +byte 4 0 +byte 4 0 +byte 4 0 +address $47 +address $48 +byte 4 1 +byte 4 1 +byte 4 8 +address $43 +address $43 +address $89 +byte 4 0 +address $90 +byte 4 0 +byte 4 0 +byte 4 0 +address $52 +address $53 +byte 4 12 +byte 4 1 +byte 4 1 +address $43 +address $43 +address $91 +byte 4 0 +address $92 +byte 4 0 +byte 4 0 +byte 4 0 +address $57 +address $58 +byte 4 24 +byte 4 1 +byte 4 6 +address $43 +address $43 +address $93 +byte 4 0 +address $94 +byte 4 0 +byte 4 0 +byte 4 0 +address $62 +address $63 +byte 4 6 +byte 4 1 +byte 4 5 +address $43 +address $43 +address $95 +byte 4 0 +address $96 +byte 4 0 +byte 4 0 +byte 4 0 +address $67 +address $68 +byte 4 30 +byte 4 1 +byte 4 3 +address $43 +address $43 +address $97 +byte 4 0 +address $98 +byte 4 0 +byte 4 0 +byte 4 0 +address $72 +address $73 +byte 4 2 +byte 4 1 +byte 4 4 +address $43 +address $43 +address $99 +byte 4 0 +address $100 +byte 4 0 +byte 4 0 +byte 4 0 +address $77 +address $78 +byte 4 7 +byte 4 1 +byte 4 2 +address $43 +address $43 +address $101 +byte 4 0 +address $102 +byte 4 0 +byte 4 0 +byte 4 0 +address $81 +address $82 +byte 4 24 +byte 4 1 +byte 4 7 +address $43 +address $43 +address $103 +byte 4 0 +address $104 +byte 4 0 +byte 4 0 +byte 4 0 +address $85 +address $86 +byte 4 1 +byte 4 1 +byte 4 9 +address $43 +address $43 +address $105 +address $45 +address $106 +byte 4 0 +byte 4 0 +byte 4 0 +address $107 +address $108 +byte 4 1 +byte 4 2 +byte 4 1 +address $43 +address $43 +address $109 +address $45 +address $110 +byte 4 0 +byte 4 0 +byte 4 0 +address $111 +address $112 +byte 4 7 +byte 4 2 +byte 4 2 +address $43 +address $43 +address $113 +address $45 +address $114 +byte 4 0 +byte 4 0 +byte 4 0 +address $115 +address $116 +byte 4 10 +byte 4 2 +byte 4 5 +address $43 +address $43 +address $117 +address $45 +address $118 +byte 4 0 +byte 4 0 +byte 4 0 +address $119 +address $120 +byte 4 1 +byte 4 2 +byte 4 3 +address $43 +address $43 +address $121 +address $45 +address $122 +byte 4 0 +byte 4 0 +byte 4 0 +address $123 +address $124 +byte 4 1 +byte 4 2 +byte 4 6 +address $43 +address $43 +address $125 +byte 4 0 +address $126 +byte 4 0 +byte 4 0 +byte 4 0 +address $127 +address $128 +byte 4 0 +byte 4 8 +byte 4 7 +address $43 +address $43 +address $129 +byte 4 0 +address $130 +byte 4 0 +byte 4 0 +byte 4 0 +address $131 +address $132 +byte 4 0 +byte 4 8 +byte 4 8 +address $43 +address $43 +address $133 +address $134 +address $135 +byte 4 0 +byte 4 0 +byte 4 0 +address $136 +address $137 +byte 4 0 +byte 4 6 +byte 4 6 +address $43 +address $43 +address $138 +address $139 +address $140 +byte 4 0 +byte 4 0 +byte 4 0 +address $141 +address $142 +byte 4 0 +byte 4 6 +byte 4 8 +address $43 +address $43 +address $143 +address $144 +address $145 +byte 4 0 +byte 4 0 +byte 4 0 +address $146 +address $147 +byte 4 0 +byte 4 6 +byte 4 7 +address $43 +address $43 +address $148 +address $149 +address $150 +byte 4 0 +byte 4 0 +byte 4 0 +address $151 +address $152 +byte 4 0 +byte 4 6 +byte 4 9 +address $43 +address $43 +address $153 +address $154 +address $155 +byte 4 0 +byte 4 0 +byte 4 0 +address $156 +address $157 +byte 4 0 +byte 4 6 +byte 4 10 +address $43 +address $43 +byte 4 0 +skip 48 +export bg_numItems +align 4 +LABELV bg_numItems +byte 4 31 +export BG_FindItemForPowerup +code +proc BG_FindItemForPowerup 8 0 +file "../../game/bg_misc.c" +line 829 +;1://----------------------------------------------------------------------------- +;2:// +;3:// $Id$ +;4:// +;5://----------------------------------------------------------------------------- +;6:// +;7:// $Log$ +;7:// Revision 1.1 2002/01/08 05:46:20 blaze +;7:// Initial revision +;7:// +;8:// Revision 1.25 2001/12/31 16:28:42 jbravo +;9:// I made a Booboo with the Log tag. +;10:// +;11:// +;12://----------------------------------------------------------------------------- +;13:// Copyright (C) 1999-2000 Id Software, Inc. +;14:// +;15:// bg_misc.c -- both games misc functions, all completely stateless +;16: +;17:#include "q_shared.h" +;18:#include "bg_public.h" +;19: +;20:/*QUAKED item_***** ( 0 0 0 ) (-16 -16 -16) (16 16 16) suspended +;21:DO NOT USE THIS CLASS, IT JUST HOLDS GENERAL INFORMATION. +;22:The suspended flag will allow items to hang in the air, otherwise they are dropped to the next surface. +;23: +;24:If an item is the target of another entity, it will not spawn in until fired. +;25: +;26:An item fires all of its targets when it is picked up. If the toucher can't carry it, the targets won't be fired. +;27: +;28:"notfree" if set to 1, don't spawn in free for all games +;29:"notteam" if set to 1, don't spawn in team games +;30:"notsingle" if set to 1, don't spawn in single player games +;31:"wait" override the default wait before respawning. -1 = never respawn automatically, which can be used with targeted spawning. +;32:"random" random number of plus or minus seconds varied from the respawn time +;33:"count" override quantity or duration on most items. +;34:*/ +;35: +;36:gitem_t bg_itemlist[] = +;37:{ +;38: { +;39: NULL, +;40: NULL, +;41: { NULL, +;42: NULL, +;43: 0, 0} , +;44:/* icon */ NULL, +;45:/* pickup */ NULL, +;46: 0, +;47: 0, +;48: 0, +;49:/* precache */ "", +;50:/* sounds */ "" +;51: }, // leave index 0 alone +;52: +;53: // +;54: // ARMOR +;55: // +;56: +;57: // +;58: // WEAPONS +;59: // +;60: +;61: +;62://Blaze: Reaction weapons +;63://Knife +;64: { +;65: "weapon_knife", +;66: //"sound/weapons/knife/knife.wav", +;67: "sound/misc/am_pkup.wav", +;68: {"models/weapons2/knife/knife.md3",0,0,0}, +;69: "icons/iconw_knife", +;70: RQ3_KNIFE_NAME, +;71: 1, +;72: IT_WEAPON, +;73: WP_KNIFE, +;74: "", +;75: "" +;76: }, +;77: +;78://Pistol +;79: { +;80: "weapon_pistol", +;81: "sound/weapons/mk23/mk23slide.wav", +;82: { "models/weapons2/mk23/mk23.md3", +;83: 0, 0, 0}, +;84:/* icon */ "icons/iconw_mk23", +;85:/* pickup */ RQ3_PISTOL_NAME, +;86: 12, +;87: IT_WEAPON, +;88: WP_PISTOL, +;89:/* precache */ "", +;90:/* sounds */ "" +;91: }, +;92: +;93://M4 +;94: { +;95: "weapon_m4", +;96: "sound/weapons/m4/m4slide.wav", +;97: { "models/weapons2/m4/m4.md3", +;98: 0, 0, 0}, +;99:/* icon */ "icons/iconw_m4", +;100:/* pickup */ RQ3_M4_NAME, +;101: 24, +;102: IT_WEAPON, +;103: WP_M4, +;104:/* precache */ "", +;105:/* sounds */ "" +;106: }, +;107: +;108://SSG3000 +;109: { +;110: "weapon_ssg3000", +;111: "sound/weapons/ssg3000/ssgin.wav", +;112: { "models/weapons2/ssg3000/ssg3000.md3", +;113: 0, 0, 0}, +;114:/* icon */ "icons/iconw_ssg", +;115:/* pickup */ RQ3_SSG3000_NAME, +;116: 6, +;117: IT_WEAPON, +;118: WP_SSG3000, +;119:/* precache */ "", +;120:/* sounds */ "" +;121: }, +;122: +;123://MP5 +;124: { +;125: "weapon_mp5", +;126: "sound/weapons/mp5/mp5slide.wav", +;127: { "models/weapons2/mp5/mp5.md3", +;128: 0, 0, 0}, +;129:/* icon */ "icons/iconw_mp5", +;130:/* pickup */ RQ3_MP5_NAME, +;131: 30, +;132: IT_WEAPON, +;133: WP_MP5, +;134:/* precache */ "", +;135:/* sounds */ "" +;136: }, +;137: +;138://Handcannon +;139: { +;140: "weapon_handcannon", +;141: "sound/weapons/handcannon/hcopen.wav", +;142: { "models/weapons2/handcannon/handcannon.md3", +;143: 0, 0, 0}, +;144:/* icon */ "icons/iconw_sawedoff", +;145:/* pickup */ RQ3_HANDCANNON_NAME, +;146: 2, +;147: IT_WEAPON, +;148: WP_HANDCANNON, +;149:/* precache */ "", +;150:/* sounds */ "" +;151: }, +;152: +;153://Shotgun +;154: { +;155: "weapon_m3", +;156: "sound/weapons/m3/m3in.wav", +;157: { "models/weapons2/m3/m3.md3", +;158: 0, 0, 0}, +;159:/* icon */ "icons/iconw_m3", +;160:/* pickup */ RQ3_M3_NAME, +;161: 7, +;162: IT_WEAPON, +;163: WP_M3, +;164:/* precache */ "", +;165:/* sounds */ "" +;166: }, +;167: +;168://Akimbo Placeholder +;169: { +;170: "weapon_akimbo", +;171: "sound/weapons/mk23/mk23slide.wav", +;172: { "models/weapons2/akimbo/akimbo.md3", +;173: 0, 0, 0}, +;174:/* icon */ "icons/iconw_akimbo", +;175:/* pickup */ RQ3_AKIMBO_NAME, +;176: 24, +;177: IT_WEAPON, +;178: WP_AKIMBO, +;179:/* precache */ "", +;180:/* sounds */ "" +;181: }, +;182: +;183: +;184://Grenade +;185: { +;186: "weapon_grenade", +;187: //"sound/grenade/tink2.wav", +;188: "sound/misc/am_pkup.wav", +;189: { "models/weapons2/grenade/grenade.md3", +;190: 0, 0, 0}, +;191:/* icon */ "icons/iconw_gren", +;192:/* pickup */ RQ3_GRENADE_NAME, +;193: 1, +;194: IT_WEAPON, +;195: WP_GRENADE, +;196:/* precache */ "", +;197:/* sounds */ "" +;198: }, +;199: +;200://Blaze: 3rd Person Models +;201://Elder: 07/06/2001: Now known as 1st-person models! +;202://Knife +;203: +;204: { +;205: "knife_1st", +;206: NULL, +;207: {"models/weapons2/knife/knife_1st.md3",0,0,0}, +;208: "icons/iconw_knife", +;209: RQ3_KNIFE_NAME, +;210: 1, +;211: IT_WEAPON, +;212: WP_KNIFE, +;213: "", +;214: "" +;215: }, +;216: +;217://Pistol +;218: { +;219: "pistol_1st", +;220: NULL, +;221: { "models/weapons2/mk23/mk23_1st.md3", +;222: 0, 0, 0}, +;223: "icons/iconw_mk23", +;224: RQ3_PISTOL_NAME, +;225: 12, +;226: IT_WEAPON, +;227: WP_PISTOL, +;228: "", +;229: "" +;230: }, +;231: +;232://M4 +;233: { +;234: "m4_1st", +;235: NULL, +;236: { "models/weapons2/m4/m4_1st.md3", +;237: 0, 0, 0}, +;238: "icons/iconw_m4", +;239: RQ3_M4_NAME, +;240: 24, +;241: IT_WEAPON, +;242: WP_M4, +;243: "", +;244: "" +;245: }, +;246: +;247://SSG3000 +;248: { +;249: "ssg3000_1st", +;250: NULL, +;251: { "models/weapons2/ssg3000/ssg3000_1st.md3", +;252: 0, 0, 0}, +;253: "icons/iconw_ssg", +;254: RQ3_SSG3000_NAME, +;255: 6, +;256: IT_WEAPON, +;257: WP_SSG3000, +;258: "", +;259: "" +;260: }, +;261: +;262://MP5 +;263: { +;264: "mp5_1st", +;265: NULL, +;266: { "models/weapons2/mp5/mp5_1st.md3", +;267: 0, 0, 0}, +;268: "icons/iconw_mp5", +;269: RQ3_MP5_NAME, +;270: 30, +;271: IT_WEAPON, +;272: WP_MP5, +;273: "", +;274: "" +;275: }, +;276: +;277://Handcannon +;278: { +;279: "handcannon_1st", +;280: NULL, +;281: { "models/weapons2/handcannon/handcannon_1st.md3", +;282: 0, 0, 0}, +;283: "icons/iconw_sawedoff", +;284: RQ3_HANDCANNON_NAME, +;285: 2, +;286: IT_WEAPON, +;287: WP_HANDCANNON, +;288: "", +;289: "" +;290: }, +;291: +;292://Shotgun +;293: { +;294: "m3_1st", +;295: NULL, +;296: { "models/weapons2/m3/m3_1st.md3", +;297: 0, 0, 0}, +;298: "icons/iconw_m3", +;299: RQ3_M3_NAME, +;300: 7, +;301: IT_WEAPON, +;302: WP_M3, +;303: "", +;304: "" +;305: }, +;306: +;307://Akimbo Placeholder +;308: { +;309: "akimbo_1st", +;310: NULL, +;311: { "models/weapons2/akimbo/akimbo_1st.md3", +;312: 0, 0, 0}, +;313: "icons/iconw_akimbo", +;314: RQ3_AKIMBO_NAME, +;315: 24, +;316: IT_WEAPON, +;317: WP_AKIMBO, +;318: "", +;319: "" +;320: }, +;321: +;322: +;323://Grenade +;324: { +;325: "grenade_1st", +;326: NULL, +;327: { "models/weapons2/grenade/grenade_1st.md3", +;328: 0, 0, 0}, +;329: "icons/iconw_gren", +;330: RQ3_GRENADE_NAME, +;331: 1, +;332: IT_WEAPON, +;333: WP_GRENADE, +;334: "", +;335: "" +;336: }, +;337: +;338: +;339: +;340: // +;341: // AMMO ITEMS +;342: // +;343:/*QUAKED ammo_mk23 (.3 .3 1) (-16 -16 -16) (16 16 16) suspended +;344:*/ +;345: { +;346: "ammo_mk23", +;347: "sound/misc/am_pkup.wav", +;348: { "models/ammo/mk23.md3", +;349: 0, 0, 0}, +;350:/* icon */ "icons/icona_mk23clip", +;351:/* pickup */ "MK23 Clip", +;352: 1, +;353: IT_AMMO, +;354: //Blaze: Changed from WP_MACHINEGUN to WP_PISTOL +;355: WP_PISTOL, +;356:/* precache */ "", +;357:/* sounds */ "" +;358: }, +;359: +;360:/*QUAKED ammo_shells (.3 .3 1) (-16 -16 -16) (16 16 16) suspended +;361:*/ +;362: { +;363: "ammo_shells", +;364: "sound/misc/am_pkup.wav", +;365: { "models/ammo/m3.md3", +;366: 0, 0, 0}, +;367:/* icon */ "icons/icona_shells", +;368:/* pickup */ "Shotgun Shells", +;369: 7, +;370: IT_AMMO, +;371: //Blaze: Changed from WP_ROCKET_LAUNCHER to WP_SHOTGUN +;372: WP_M3, +;373:/* precache */ "", +;374:/* sounds */ "" +;375: }, +;376: +;377: +;378:/*QUAKED ammo_ssg3000 (.3 .3 1) (-16 -16 -16) (16 16 16) suspended +;379:*/ +;380: { +;381: "ammo_ssg3000", +;382: "sound/misc/am_pkup.wav", +;383: { "models/ammo/ssg3000.md3", +;384: 0, 0, 0}, +;385:/* icon */ "icons/icona_ssgammo", +;386:/* pickup */ "AP Sniper Ammo", +;387: 10, +;388: IT_AMMO, +;389: //Blaze: Changed from WP_RAILGUN to WP_GRENADE +;390: WP_SSG3000, +;391:/* precache */ "", +;392:/* sounds */ "" +;393: }, +;394: +;395:/*QUAKED ammo_mp5 (.3 .3 1) (-16 -16 -16) (16 16 16) suspended +;396:*/ +;397: { +;398: "ammo_mp5", +;399: "sound/misc/am_pkup.wav", +;400: { "models/ammo/mp5.md3", +;401: 0, 0, 0}, +;402:/* icon */ "icons/icona_mp5clip", +;403:/* pickup */ "MP5 Clip", +;404: 1, +;405: IT_AMMO, +;406: //Blaze: Changed from WP_PLASMAGUN to WP_MP5 +;407: WP_MP5, +;408:/* precache */ "", +;409:/* sounds */ "" +;410: }, +;411: +;412:/*QUAKED ammo_lightning (.3 .3 1) (-16 -16 -16) (16 16 16) suspended +;413:*/ +;414://Blaze: HC and M3 use same ammo +;415:// { +;416:// "ammo_lightning", +;417:// "sound/misc/am_pkup.wav", +;418:// { "models/powerups/ammo/lightningam.md3", +;419:// 0, 0, 0}, +;420:/* icon */// "icons/icona_lightning", +;421:/* pickup */// "Shotgun Shells", +;422: //7, +;423: //IT_AMMO, +;424: //Blaze: Changed from WP_LIGHTNING to WP_HANDCANNON +;425: //WP_HANDCANNON, +;426:/* precache */// "", +;427:/* sounds */ //"" +;428:// }, +;429: +;430:/*QUAKED ammo_m4 (.3 .3 1) (-16 -16 -16) (16 16 16) suspended +;431:*/ +;432: { +;433: "ammo_m4", +;434: "sound/misc/am_pkup.wav", +;435: { "models/ammo/m4.md3", +;436: 0, 0, 0}, +;437:/* icon */ "icons/icona_m4clip", +;438:/* pickup */ "M4 Clip", +;439: 1, +;440: IT_AMMO, +;441: //Blaze: changed from WP_SHOTGUN to WP_M4 +;442: WP_M4, +;443:/* precache */ "", +;444:/* sounds */ "" +;445: }, +;446: +;447: +;448:/*QUAKED team_CTF_redflag (1 0 0) (-16 -16 -16) (16 16 16) +;449:Only in CTF games +;450:*/ +;451: { +;452: "team_CTF_redflag", +;453: NULL, +;454: { "models/flags/r_flag.md3", +;455: 0, 0, 0 }, +;456:/* icon */ "icons/iconf_red1", +;457:/* pickup */ "Red Flag", +;458: 0, +;459: IT_TEAM, +;460: PW_REDFLAG, +;461:/* precache */ "", +;462:/* sounds */ "" +;463: }, +;464: +;465:/*QUAKED team_CTF_blueflag (0 0 1) (-16 -16 -16) (16 16 16) +;466:Only in CTF games +;467:*/ +;468: { +;469: "team_CTF_blueflag", +;470: NULL, +;471: { "models/flags/b_flag.md3", +;472: 0, 0, 0 }, +;473:/* icon */ "icons/iconf_blu1", +;474:/* pickup */ "Blue Flag", +;475: 0, +;476: IT_TEAM, +;477: PW_BLUEFLAG, +;478:/* precache */ "", +;479:/* sounds */ "" +;480: }, +;481: +;482: //Elder: RQ3 Items +;483: { +;484: "item_kevlar", +;485: "sound/items/kevlar.wav", +;486: { "models/items/kevlar.md3", +;487: 0, 0, 0}, +;488: "icons/iconi_kevlar", +;489: RQ3_KEVLAR_NAME, +;490: 0, +;491: IT_HOLDABLE, +;492: HI_KEVLAR, +;493: "", +;494: "" +;495: }, +;496: +;497: { +;498: "item_silencer", +;499: "sound/items/silencer.wav", +;500: { "models/items/silencer.md3", +;501: 0, 0, 0}, +;502: "icons/iconi_silencer", +;503: RQ3_SILENCER_NAME, +;504: 0, +;505: IT_HOLDABLE, +;506: HI_SILENCER, +;507: "", +;508: "" +;509: }, +;510: +;511: { +;512: "item_laser", +;513: "sound/items/laser.wav", +;514: { "models/items/laser.md3", +;515: 0, 0, 0}, +;516: "icons/iconi_laser", +;517: RQ3_LASER_NAME, +;518: 0, +;519: IT_HOLDABLE, +;520: HI_LASER, +;521: "", +;522: "" +;523: }, +;524: +;525: { +;526: "item_bandolier", +;527: "sound/items/bandolier.wav", +;528: { "models/items/bandolier.md3", +;529: 0, 0, 0}, +;530: "icons/iconi_bandolier", +;531: RQ3_BANDOLIER_NAME, +;532: 0, +;533: IT_HOLDABLE, +;534: HI_BANDOLIER, +;535: "", +;536: "" +;537: }, +;538: +;539: { +;540: "item_slippers", +;541: "sound/items/slippers.wav", +;542: { "models/items/slippers.md3", +;543: 0, 0, 0}, +;544: "icons/iconi_slippers", +;545: RQ3_SLIPPERS_NAME, +;546: 0, +;547: IT_HOLDABLE, +;548: HI_SLIPPERS, +;549: "", +;550: "" +;551: }, +;552: +;553: +;554:#ifdef MISSIONPACK +;555:/*QUAKED holdable_kamikaze (.3 .3 1) (-16 -16 -16) (16 16 16) suspended +;556:*/ +;557: { +;558: "holdable_kamikaze", +;559: "sound/items/holdable.wav", +;560: { "models/powerups/kamikazi.md3", +;561: 0, 0, 0}, +;562:/* icon */ "icons/kamikaze", +;563:/* pickup */ "Kamikaze", +;564: 60, +;565: IT_HOLDABLE, +;566: HI_KAMIKAZE, +;567:/* precache */ "", +;568:/* sounds */ "sound/items/kamikazerespawn.wav" +;569: }, +;570: +;571:/*QUAKED holdable_portal (.3 .3 1) (-16 -16 -16) (16 16 16) suspended +;572:*/ +;573: { +;574: "holdable_portal", +;575: "sound/items/holdable.wav", +;576: { "models/powerups/holdable/porter.md3", +;577: 0, 0, 0}, +;578:/* icon */ "icons/portal", +;579:/* pickup */ "Portal", +;580: 60, +;581: IT_HOLDABLE, +;582: HI_PORTAL, +;583:/* precache */ "", +;584:/* sounds */ "" +;585: }, +;586: +;587:/*QUAKED holdable_invulnerability (.3 .3 1) (-16 -16 -16) (16 16 16) suspended +;588:*/ +;589: { +;590: "holdable_invulnerability", +;591: "sound/items/holdable.wav", +;592: { "models/powerups/holdable/invulnerability.md3", +;593: 0, 0, 0}, +;594:/* icon */ "icons/invulnerability", +;595:/* pickup */ "Invulnerability", +;596: 60, +;597: IT_HOLDABLE, +;598: HI_INVULNERABILITY, +;599:/* precache */ "", +;600:/* sounds */ "" +;601: }, +;602: +;603:/*QUAKED ammo_nails (.3 .3 1) (-16 -16 -16) (16 16 16) suspended +;604:*/ +;605: { +;606: "ammo_nails", +;607: "sound/misc/am_pkup.wav", +;608: { "models/powerups/ammo/nailgunam.md3", +;609: 0, 0, 0}, +;610:/* icon */ "icons/icona_nailgun", +;611:/* pickup */ "Nails", +;612: 20, +;613: IT_AMMO, +;614: WP_NAILGUN, +;615:/* precache */ "", +;616:/* sounds */ "" +;617: }, +;618: +;619:/*QUAKED ammo_mines (.3 .3 1) (-16 -16 -16) (16 16 16) suspended +;620:*/ +;621: { +;622: "ammo_mines", +;623: "sound/misc/am_pkup.wav", +;624: { "models/powerups/ammo/proxmineam.md3", +;625: 0, 0, 0}, +;626:/* icon */ "icons/icona_proxlauncher", +;627:/* pickup */ "Proximity Mines", +;628: 10, +;629: IT_AMMO, +;630: WP_PROX_LAUNCHER, +;631:/* precache */ "", +;632:/* sounds */ "" +;633: }, +;634: +;635:/*QUAKED ammo_belt (.3 .3 1) (-16 -16 -16) (16 16 16) suspended +;636:*/ +;637: { +;638: "ammo_belt", +;639: "sound/misc/am_pkup.wav", +;640: { "models/powerups/ammo/chaingunam.md3", +;641: 0, 0, 0}, +;642:/* icon */ "icons/icona_chaingun", +;643:/* pickup */ "Chaingun Belt", +;644: 100, +;645: IT_AMMO, +;646: WP_CHAINGUN, +;647:/* precache */ "", +;648:/* sounds */ "" +;649: }, +;650: +;651: // +;652: // PERSISTANT POWERUP ITEMS +;653: // +;654:/*QUAKED item_scout (.3 .3 1) (-16 -16 -16) (16 16 16) suspended redTeam blueTeam +;655:*/ +;656: { +;657: "item_scout", +;658: "sound/items/scout.wav", +;659: { "models/powerups/scout.md3", +;660: 0, 0, 0 }, +;661:/* icon */ "icons/scout", +;662:/* pickup */ "Scout", +;663: 30, +;664: IT_PERSISTANT_POWERUP, +;665: PW_SCOUT, +;666:/* precache */ "", +;667:/* sounds */ "" +;668: }, +;669: +;670:/*QUAKED item_guard (.3 .3 1) (-16 -16 -16) (16 16 16) suspended redTeam blueTeam +;671:*/ +;672: { +;673: "item_guard", +;674: "sound/items/guard.wav", +;675: { "models/powerups/guard.md3", +;676: 0, 0, 0 }, +;677:/* icon */ "icons/guard", +;678:/* pickup */ "Guard", +;679: 30, +;680: IT_PERSISTANT_POWERUP, +;681: PW_GUARD, +;682:/* precache */ "", +;683:/* sounds */ "" +;684: }, +;685: +;686:/*QUAKED item_doubler (.3 .3 1) (-16 -16 -16) (16 16 16) suspended redTeam blueTeam +;687:*/ +;688: { +;689: "item_doubler", +;690: "sound/items/doubler.wav", +;691: { "models/powerups/doubler.md3", +;692: 0, 0, 0 }, +;693:/* icon */ "icons/doubler", +;694:/* pickup */ "Doubler", +;695: 30, +;696: IT_PERSISTANT_POWERUP, +;697: PW_DOUBLER, +;698:/* precache */ "", +;699:/* sounds */ "" +;700: }, +;701: +;702:/*QUAKED item_doubler (.3 .3 1) (-16 -16 -16) (16 16 16) suspended redTeam blueTeam +;703:*/ +;704: { +;705: "item_ammoregen", +;706: "sound/items/ammoregen.wav", +;707: { "models/powerups/ammo.md3", +;708: 0, 0, 0 }, +;709:/* icon */ "icons/ammo_regen", +;710:/* pickup */ "Ammo Regen", +;711: 30, +;712: IT_PERSISTANT_POWERUP, +;713: PW_AMMOREGEN, +;714:/* precache */ "", +;715:/* sounds */ "" +;716: }, +;717: +;718: /*QUAKED team_CTF_neutralflag (0 0 1) (-16 -16 -16) (16 16 16) +;719:Only in One Flag CTF games +;720:*/ +;721: { +;722: "team_CTF_neutralflag", +;723: NULL, +;724: { "models/flags/n_flag.md3", +;725: 0, 0, 0 }, +;726:/* icon */ "icons/iconf_neutral1", +;727:/* pickup */ "Neutral Flag", +;728: 0, +;729: IT_TEAM, +;730: PW_NEUTRALFLAG, +;731:/* precache */ "", +;732:/* sounds */ "" +;733: }, +;734: +;735: { +;736: "item_redcube", +;737: "sound/misc/am_pkup.wav", +;738: { "models/powerups/orb/r_orb.md3", +;739: 0, 0, 0 }, +;740:/* icon */ "icons/iconh_rorb", +;741:/* pickup */ "Red Cube", +;742: 0, +;743: IT_TEAM, +;744: 0, +;745:/* precache */ "", +;746:/* sounds */ "" +;747: }, +;748: +;749: { +;750: "item_bluecube", +;751: "sound/misc/am_pkup.wav", +;752: { "models/powerups/orb/b_orb.md3", +;753: 0, 0, 0 }, +;754:/* icon */ "icons/iconh_borb", +;755:/* pickup */ "Blue Cube", +;756: 0, +;757: IT_TEAM, +;758: 0, +;759:/* precache */ "", +;760:/* sounds */ "" +;761: }, +;762:/*QUAKED weapon_nailgun (.3 .3 1) (-16 -16 -16) (16 16 16) suspended +;763:*/ +;764: { +;765: "weapon_nailgun", +;766: "sound/misc/w_pkup.wav", +;767: { "models/weapons/nailgun/nailgun.md3", +;768: 0, 0, 0}, +;769:/* icon */ "icons/iconw_nailgun", +;770:/* pickup */ "Nailgun", +;771: 10, +;772: IT_WEAPON, +;773: WP_NAILGUN, +;774:/* precache */ "", +;775:/* sounds */ "" +;776: }, +;777: +;778:/*QUAKED weapon_prox_launcher (.3 .3 1) (-16 -16 -16) (16 16 16) suspended +;779:*/ +;780: { +;781: "weapon_prox_launcher", +;782: "sound/misc/w_pkup.wav", +;783: { "models/weapons/proxmine/proxmine.md3", +;784: 0, 0, 0}, +;785:/* icon */ "icons/iconw_proxlauncher", +;786:/* pickup */ "Prox Launcher", +;787: 5, +;788: IT_WEAPON, +;789: WP_PROX_LAUNCHER, +;790:/* precache */ "", +;791://Elder: removing so we get rid of those error messages +;792:/* sounds */ /*"sound/weapons/proxmine/wstbtick.wav " +;793: "sound/weapons/proxmine/wstbactv.wav " +;794: "sound/weapons/proxmine/wstbimpl.wav " +;795: "sound/weapons/proxmine/wstbimpm.wav " +;796: "sound/weapons/proxmine/wstbimpd.wav " +;797: "sound/weapons/proxmine/wstbactv.wav"*/ +;798: }, +;799: +;800:/*QUAKED weapon_chaingun (.3 .3 1) (-16 -16 -16) (16 16 16) suspended +;801:*/ +;802: { +;803: "weapon_chaingun", +;804: "sound/misc/w_pkup.wav", +;805: { "models/weapons/vulcan/vulcan.md3", +;806: 0, 0, 0}, +;807:/* icon */ "icons/iconw_chaingun", +;808:/* pickup */ "Chaingun", +;809: 80, +;810: IT_WEAPON, +;811: WP_CHAINGUN, +;812:/* precache */ "", +;813:/* sounds */ "sound/weapons/vulcan/wvulwind.wav" +;814: }, +;815:#endif +;816: +;817: // end of list marker +;818: {NULL} +;819:}; +;820: +;821:int bg_numItems = sizeof(bg_itemlist) / sizeof(bg_itemlist[0]) - 1; +;822: +;823: +;824:/* +;825:============== +;826:BG_FindItemForPowerup +;827:============== +;828:*/ +;829:gitem_t *BG_FindItemForPowerup( powerup_t pw ) { +line 832 +;830: int i; +;831: +;832: for ( i = 0 ; i < bg_numItems ; i++ ) { +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +ADDRGP4 $162 +JUMPV +LABELV $159 +line 833 +;833: if ( (bg_itemlist[i].giType == IT_POWERUP || +ADDRLP4 4 +CNSTI4 52 +ADDRLP4 0 +INDIRI4 +MULI4 +ASGNI4 +ADDRLP4 4 +INDIRI4 +ADDRGP4 bg_itemlist+36 +ADDP4 +INDIRI4 +CNSTI4 5 +EQI4 $170 +ADDRLP4 4 +INDIRI4 +ADDRGP4 bg_itemlist+36 +ADDP4 +INDIRI4 +CNSTI4 8 +EQI4 $170 +ADDRLP4 4 +INDIRI4 +ADDRGP4 bg_itemlist+36 +ADDP4 +INDIRI4 +CNSTI4 7 +NEI4 $163 +LABELV $170 +CNSTI4 52 +ADDRLP4 0 +INDIRI4 +MULI4 +ADDRGP4 bg_itemlist+40 +ADDP4 +INDIRI4 +ADDRFP4 0 +INDIRI4 +NEI4 $163 +line 836 +;834: bg_itemlist[i].giType == IT_TEAM || +;835: bg_itemlist[i].giType == IT_PERSISTANT_POWERUP) && +;836: bg_itemlist[i].giTag == pw ) { +line 837 +;837: return &bg_itemlist[i]; +CNSTI4 52 +ADDRLP4 0 +INDIRI4 +MULI4 +ADDRGP4 bg_itemlist +ADDP4 +RETP4 +ADDRGP4 $158 +JUMPV +LABELV $163 +line 839 +;838: } +;839: } +LABELV $160 +line 832 +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +LABELV $162 +ADDRLP4 0 +INDIRI4 +ADDRGP4 bg_numItems +INDIRI4 +LTI4 $159 +line 841 +;840: +;841: return NULL; +CNSTP4 0 +RETP4 +LABELV $158 +endproc BG_FindItemForPowerup 8 0 +export BG_FindItemForHoldable +proc BG_FindItemForHoldable 8 8 +line 850 +;842:} +;843: +;844: +;845:/* +;846:============== +;847:BG_FindItemForHoldable +;848:============== +;849:*/ +;850:gitem_t *BG_FindItemForHoldable( holdable_t pw ) { +line 853 +;851: int i; +;852: +;853: for ( i = 0 ; i < bg_numItems ; i++ ) { +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +ADDRGP4 $175 +JUMPV +LABELV $172 +line 854 +;854: if ( bg_itemlist[i].giType == IT_HOLDABLE && bg_itemlist[i].giTag == pw ) { +ADDRLP4 4 +CNSTI4 52 +ADDRLP4 0 +INDIRI4 +MULI4 +ASGNI4 +ADDRLP4 4 +INDIRI4 +ADDRGP4 bg_itemlist+36 +ADDP4 +INDIRI4 +CNSTI4 6 +NEI4 $176 +ADDRLP4 4 +INDIRI4 +ADDRGP4 bg_itemlist+40 +ADDP4 +INDIRI4 +ADDRFP4 0 +INDIRI4 +NEI4 $176 +line 855 +;855: return &bg_itemlist[i]; +CNSTI4 52 +ADDRLP4 0 +INDIRI4 +MULI4 +ADDRGP4 bg_itemlist +ADDP4 +RETP4 +ADDRGP4 $171 +JUMPV +LABELV $176 +line 857 +;856: } +;857: } +LABELV $173 +line 853 +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +LABELV $175 +ADDRLP4 0 +INDIRI4 +ADDRGP4 bg_numItems +INDIRI4 +LTI4 $172 +line 859 +;858: +;859: Com_Error( ERR_DROP, "HoldableItem not found" ); +CNSTI4 1 +ARGI4 +ADDRGP4 $180 +ARGP4 +ADDRGP4 Com_Error +CALLV +pop +line 861 +;860: +;861: return NULL; +CNSTP4 0 +RETP4 +LABELV $171 +endproc BG_FindItemForHoldable 8 8 +export BG_FindItemForWeapon +proc BG_FindItemForWeapon 8 12 +line 871 +;862:} +;863: +;864: +;865:/* +;866:=============== +;867:BG_FindItemForWeapon +;868: +;869:=============== +;870:*/ +;871:gitem_t *BG_FindItemForWeapon( weapon_t weapon ) { +line 874 +;872: gitem_t *it; +;873: +;874: for ( it = bg_itemlist + 1 ; it->classname ; it++) { +ADDRLP4 0 +ADDRGP4 bg_itemlist+52 +ASGNP4 +ADDRGP4 $185 +JUMPV +LABELV $182 +line 875 +;875: if ( it->giType == IT_WEAPON && it->giTag == weapon ) { +ADDRLP4 0 +INDIRP4 +CNSTI4 36 +ADDP4 +INDIRI4 +CNSTI4 1 +NEI4 $187 +ADDRLP4 0 +INDIRP4 +CNSTI4 40 +ADDP4 +INDIRI4 +ADDRFP4 0 +INDIRI4 +NEI4 $187 +line 876 +;876: return it; +ADDRLP4 0 +INDIRP4 +RETP4 +ADDRGP4 $181 +JUMPV +LABELV $187 +line 878 +;877: } +;878: } +LABELV $183 +line 874 +ADDRLP4 0 +ADDRLP4 0 +INDIRP4 +CNSTI4 52 +ADDP4 +ASGNP4 +LABELV $185 +ADDRLP4 0 +INDIRP4 +INDIRP4 +CVPU4 4 +CNSTU4 0 +NEU4 $182 +line 880 +;879: +;880: Com_Error( ERR_DROP, "Couldn't find item for weapon %i", weapon); +CNSTI4 1 +ARGI4 +ADDRGP4 $189 +ARGP4 +ADDRFP4 0 +INDIRI4 +ARGI4 +ADDRGP4 Com_Error +CALLV +pop +line 881 +;881: return NULL; +CNSTP4 0 +RETP4 +LABELV $181 +endproc BG_FindItemForWeapon 8 12 +export BG_FindItem +proc BG_FindItem 8 8 +line 890 +;882:} +;883: +;884:/* +;885:=============== +;886:BG_FindItem +;887: +;888:=============== +;889:*/ +;890:gitem_t *BG_FindItem( const char *pickupName ) { +line 893 +;891: gitem_t *it; +;892: +;893: for ( it = bg_itemlist + 1 ; it->classname ; it++ ) { +ADDRLP4 0 +ADDRGP4 bg_itemlist+52 +ASGNP4 +ADDRGP4 $194 +JUMPV +LABELV $191 +line 894 +;894: if ( !Q_stricmp( it->pickup_name, pickupName ) ) +ADDRLP4 0 +INDIRP4 +CNSTI4 28 +ADDP4 +INDIRP4 +ARGP4 +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRLP4 4 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 4 +INDIRI4 +CNSTI4 0 +NEI4 $196 +line 895 +;895: return it; +ADDRLP4 0 +INDIRP4 +RETP4 +ADDRGP4 $190 +JUMPV +LABELV $196 +line 896 +;896: } +LABELV $192 +line 893 +ADDRLP4 0 +ADDRLP4 0 +INDIRP4 +CNSTI4 52 +ADDP4 +ASGNP4 +LABELV $194 +ADDRLP4 0 +INDIRP4 +INDIRP4 +CVPU4 4 +CNSTU4 0 +NEU4 $191 +line 898 +;897: +;898: return NULL; +CNSTP4 0 +RETP4 +LABELV $190 +endproc BG_FindItem 8 8 +export BG_PlayerTouchesItem +proc BG_PlayerTouchesItem 36 12 +line 909 +;899:} +;900: +;901:/* +;902:============ +;903:BG_PlayerTouchesItem +;904: +;905:Items can be picked up without actually touching their physical bounds to make +;906:grabbing them easier +;907:============ +;908:*/ +;909:qboolean BG_PlayerTouchesItem( playerState_t *ps, entityState_t *item, int atTime ) { +line 912 +;910: vec3_t origin; +;911: +;912: BG_EvaluateTrajectory( &item->pos, atTime, origin ); +ADDRFP4 4 +INDIRP4 +CNSTI4 12 +ADDP4 +ARGP4 +ADDRFP4 8 +INDIRI4 +ARGI4 +ADDRLP4 0 +ARGP4 +ADDRGP4 BG_EvaluateTrajectory +CALLV +pop +line 915 +;913: +;914: // we are ignoring ducked differences here +;915: if ( ps->origin[0] - origin[0] > 44 +ADDRLP4 12 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 16 +ADDRLP4 12 +INDIRP4 +CNSTI4 20 +ADDP4 +INDIRF4 +ADDRLP4 0 +INDIRF4 +SUBF4 +ASGNF4 +ADDRLP4 16 +INDIRF4 +CNSTF4 1110441984 +GTF4 $209 +ADDRLP4 16 +INDIRF4 +CNSTF4 3259498496 +LTF4 $209 +ADDRLP4 20 +ADDRLP4 12 +INDIRP4 +CNSTI4 24 +ADDP4 +INDIRF4 +ASGNF4 +ADDRLP4 24 +CNSTF4 1108344832 +ASGNF4 +ADDRLP4 20 +INDIRF4 +ADDRLP4 0+4 +INDIRF4 +SUBF4 +ADDRLP4 24 +INDIRF4 +GTF4 $209 +ADDRLP4 28 +CNSTF4 3255828480 +ASGNF4 +ADDRLP4 20 +INDIRF4 +ADDRLP4 0+4 +INDIRF4 +SUBF4 +ADDRLP4 28 +INDIRF4 +LTF4 $209 +ADDRLP4 32 +ADDRLP4 12 +INDIRP4 +CNSTI4 28 +ADDP4 +INDIRF4 +ASGNF4 +ADDRLP4 32 +INDIRF4 +ADDRLP4 0+8 +INDIRF4 +SUBF4 +ADDRLP4 24 +INDIRF4 +GTF4 $209 +ADDRLP4 32 +INDIRF4 +ADDRLP4 0+8 +INDIRF4 +SUBF4 +ADDRLP4 28 +INDIRF4 +GEF4 $199 +LABELV $209 +line 920 +;916: || ps->origin[0] - origin[0] < -50 +;917: || ps->origin[1] - origin[1] > 36 +;918: || ps->origin[1] - origin[1] < -36 +;919: || ps->origin[2] - origin[2] > 36 +;920: || ps->origin[2] - origin[2] < -36 ) { +line 921 +;921: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $198 +JUMPV +LABELV $199 +line 924 +;922: } +;923: +;924: return qtrue; +CNSTI4 1 +RETI4 +LABELV $198 +endproc BG_PlayerTouchesItem 36 12 +export ClipAmountForReload +proc ClipAmountForReload 4 0 +line 938 +;925:} +;926: +;927: +;928:/* +;929:================== +;930: Elder: changed from ClipAmountForWeapon - which was an ambiguous name +;931: ClipAmountForReload for Cmd_Reload +;932: Added by Duffman +;933: Returns the amount of ammo a weapon reloads by +;934: ================== +;935:*/ +;936: +;937: +;938:int ClipAmountForReload( int w ) { +line 945 +;939: //How much each clip holds +;940: //Elder: this function is very misleading. +;941: //It returns the amount to add when reloading, +;942: //Not the actual amount in a weapon clip!! +;943: //For that, you should check ClipAmountForAmmo below +;944: //Changed to use constants defined in bg_public.h +;945: switch(w){ +ADDRLP4 0 +ADDRFP4 0 +INDIRI4 +ASGNI4 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +LTI4 $211 +ADDRLP4 0 +INDIRI4 +CNSTI4 9 +GTI4 $211 +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 $222-4 +ADDP4 +INDIRP4 +JUMPV +lit +align 4 +LABELV $222 +address $213 +address $219 +address $217 +address $218 +address $216 +address $215 +address $220 +address $214 +address $221 +code +LABELV $213 +line 947 +;946: case WP_PISTOL: +;947: return RQ3_PISTOL_RELOAD; +CNSTI4 12 +RETI4 +ADDRGP4 $210 +JUMPV +LABELV $214 +line 949 +;948: case WP_KNIFE: +;949: return RQ3_KNIFE_RELOAD; +CNSTI4 1 +RETI4 +ADDRGP4 $210 +JUMPV +LABELV $215 +line 951 +;950: case WP_M4: +;951: return RQ3_M4_RELOAD; +CNSTI4 24 +RETI4 +ADDRGP4 $210 +JUMPV +LABELV $216 +line 953 +;952: case WP_SSG3000: +;953: return RQ3_SSG3000_RELOAD; +CNSTI4 1 +RETI4 +ADDRGP4 $210 +JUMPV +LABELV $217 +line 955 +;954: case WP_MP5: +;955: return RQ3_MP5_RELOAD; +CNSTI4 30 +RETI4 +ADDRGP4 $210 +JUMPV +LABELV $218 +line 957 +;956: case WP_HANDCANNON: +;957: return RQ3_HANDCANNON_RELOAD; +CNSTI4 2 +RETI4 +ADDRGP4 $210 +JUMPV +LABELV $219 +line 959 +;958: case WP_M3: +;959: return RQ3_M3_RELOAD; +CNSTI4 1 +RETI4 +ADDRGP4 $210 +JUMPV +LABELV $220 +line 961 +;960: case WP_AKIMBO: +;961: return RQ3_AKIMBO_RELOAD; +CNSTI4 24 +RETI4 +ADDRGP4 $210 +JUMPV +LABELV $221 +line 963 +;962: case WP_GRENADE: +;963: return RQ3_GRENADE_RELOAD; +CNSTI4 1 +RETI4 +ADDRGP4 $210 +JUMPV +LABELV $211 +line 965 +;964: default: +;965: return RQ3_PISTOL_RELOAD; +CNSTI4 12 +RETI4 +LABELV $210 +endproc ClipAmountForReload 4 0 +export ClipAmountForAmmo +proc ClipAmountForAmmo 4 0 +line 978 +;966: } +;967:// return 12; //this wont happen unless you copy-and-paste too much +;968:} +;969: +;970:/* +;971:================== +;972: ClipAmountForAmmo +;973: Added by Elder +;974: Returns the amount of ammo a weapon can hold +;975: ================== +;976:*/ +;977: +;978:int ClipAmountForAmmo( int w ) { +line 981 +;979: //How much each GUN holds! +;980: //Elder: don't confuse with the reload one +;981: switch(w){ +ADDRLP4 0 +ADDRFP4 0 +INDIRI4 +ASGNI4 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +LTI4 $225 +ADDRLP4 0 +INDIRI4 +CNSTI4 9 +GTI4 $225 +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 $236-4 +ADDP4 +INDIRP4 +JUMPV +lit +align 4 +LABELV $236 +address $227 +address $233 +address $231 +address $232 +address $230 +address $229 +address $234 +address $228 +address $235 +code +LABELV $227 +line 983 +;982: case WP_PISTOL: +;983: return RQ3_PISTOL_AMMO; +CNSTI4 12 +RETI4 +ADDRGP4 $224 +JUMPV +LABELV $228 +line 985 +;984: case WP_KNIFE: +;985: return RQ3_KNIFE_AMMO; +CNSTI4 1 +RETI4 +ADDRGP4 $224 +JUMPV +LABELV $229 +line 987 +;986: case WP_M4: +;987: return RQ3_M4_AMMO; +CNSTI4 24 +RETI4 +ADDRGP4 $224 +JUMPV +LABELV $230 +line 989 +;988: case WP_SSG3000: +;989: return RQ3_SSG3000_AMMO; +CNSTI4 6 +RETI4 +ADDRGP4 $224 +JUMPV +LABELV $231 +line 991 +;990: case WP_MP5: +;991: return RQ3_MP5_AMMO; +CNSTI4 30 +RETI4 +ADDRGP4 $224 +JUMPV +LABELV $232 +line 993 +;992: case WP_HANDCANNON: +;993: return RQ3_HANDCANNON_AMMO; +CNSTI4 2 +RETI4 +ADDRGP4 $224 +JUMPV +LABELV $233 +line 995 +;994: case WP_M3: +;995: return RQ3_M3_AMMO; +CNSTI4 7 +RETI4 +ADDRGP4 $224 +JUMPV +LABELV $234 +line 997 +;996: case WP_AKIMBO: +;997: return RQ3_AKIMBO_AMMO; +CNSTI4 24 +RETI4 +ADDRGP4 $224 +JUMPV +LABELV $235 +line 999 +;998: case WP_GRENADE: +;999: return RQ3_GRENADE_AMMO; +CNSTI4 1 +RETI4 +ADDRGP4 $224 +JUMPV +LABELV $225 +line 1001 +;1000: default: +;1001: return RQ3_PISTOL_AMMO; +CNSTI4 12 +RETI4 +LABELV $224 +endproc ClipAmountForAmmo 4 0 +export BG_CanItemBeGrabbed +proc BG_CanItemBeGrabbed 24 8 +line 1016 +;1002: } +;1003:} +;1004: +;1005: +;1006:/* +;1007:================ +;1008:BG_CanItemBeGrabbed +;1009: +;1010:Returns false if the item should not be picked up. +;1011:This needs to be the same for client side prediction and server use. +;1012:================ +;1013:*/ +;1014: +;1015: +;1016:qboolean BG_CanItemBeGrabbed( int gametype, const entityState_t *ent, const playerState_t *ps ) { +line 1022 +;1017: gitem_t *item; +;1018:#ifdef MISSIONPACK +;1019: int upperBound; +;1020:#endif +;1021: +;1022: if ( ent->modelindex < 1 || ent->modelindex >= bg_numItems ) { +ADDRLP4 4 +ADDRFP4 4 +INDIRP4 +CNSTI4 160 +ADDP4 +INDIRI4 +ASGNI4 +ADDRLP4 4 +INDIRI4 +CNSTI4 1 +LTI4 $241 +ADDRLP4 4 +INDIRI4 +ADDRGP4 bg_numItems +INDIRI4 +LTI4 $239 +LABELV $241 +line 1023 +;1023: Com_Error( ERR_DROP, "BG_CanItemBeGrabbed: index out of range" ); +CNSTI4 1 +ARGI4 +ADDRGP4 $242 +ARGP4 +ADDRGP4 Com_Error +CALLV +pop +line 1024 +;1024: } +LABELV $239 +line 1026 +;1025: +;1026: item = &bg_itemlist[ent->modelindex]; +ADDRLP4 0 +CNSTI4 52 +ADDRFP4 4 +INDIRP4 +CNSTI4 160 +ADDP4 +INDIRI4 +MULI4 +ADDRGP4 bg_itemlist +ADDP4 +ASGNP4 +line 1028 +;1027: +;1028: switch( item->giType ) { +ADDRLP4 8 +ADDRLP4 0 +INDIRP4 +CNSTI4 36 +ADDP4 +INDIRI4 +ASGNI4 +ADDRLP4 8 +INDIRI4 +CNSTI4 0 +LTI4 $244 +ADDRLP4 8 +INDIRI4 +CNSTI4 8 +GTI4 $244 +ADDRLP4 8 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 $282 +ADDP4 +INDIRP4 +JUMPV +lit +align 4 +LABELV $282 +address $280 +address $246 +address $247 +address $248 +address $251 +address $259 +address $277 +address $244 +address $260 +code +LABELV $246 +line 1037 +;1029: case IT_WEAPON: +;1030: //Elder: gotta check before we can pick it up +;1031: //if (item->giTag == WP_KNIFE && ps->ammo[WP_KNIFE] >= RQ3_KNIFE_MAXCLIP) +;1032: //return qfalse; +;1033: //else +;1034: //if (item->giTag != WP_KNIFE && ent->pos.trDelta && ent->pos.trDelta[2] != 0) +;1035: //return qfalse; +;1036: //else +;1037: return qtrue; // weapons are always picked up +CNSTI4 1 +RETI4 +ADDRGP4 $238 +JUMPV +LABELV $247 +line 1048 +;1038: +;1039: case IT_AMMO: +;1040: +;1041: //Blaze: pick up all ammo +;1042: //Blaze: make sure you dont go over max amount of clips +;1043: //if ( ps->stats[STAT_CLIPS] >= 2) +;1044: //if ( ps->ammo[ item->giTag ] >= ClipAmountForWeapon(item->giTag )) { +;1045: //{ +;1046: // return qfalse; // can't hold any more +;1047: //} +;1048: return qtrue; +CNSTI4 1 +RETI4 +ADDRGP4 $238 +JUMPV +LABELV $248 +line 1068 +;1049: +;1050: case IT_ARMOR: +;1051:#ifdef MISSIONPACK +;1052: if( bg_itemlist[ps->stats[STAT_PERSISTANT_POWERUP]].giTag == PW_SCOUT ) { +;1053: return qfalse; +;1054: } +;1055: +;1056: // we also clamp armor to the maxhealth for handicapping +;1057: if( bg_itemlist[ps->stats[STAT_PERSISTANT_POWERUP]].giTag == PW_GUARD ) { +;1058: upperBound = ps->stats[STAT_MAX_HEALTH]; +;1059: } +;1060: else { +;1061: upperBound = ps->stats[STAT_MAX_HEALTH] * 2; +;1062: } +;1063: +;1064: if ( ps->stats[STAT_ARMOR] >= upperBound ) { +;1065: return qfalse; +;1066: } +;1067:#else +;1068: if ( ps->stats[STAT_ARMOR] >= 200){//2 times max healthps->stats[STAT_MAX_HEALTH] * 2 ) { +ADDRFP4 8 +INDIRP4 +CNSTI4 196 +ADDP4 +INDIRI4 +CNSTI4 200 +LTI4 $249 +line 1069 +;1069: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $238 +JUMPV +LABELV $249 +line 1072 +;1070: } +;1071:#endif +;1072: return qtrue; +CNSTI4 1 +RETI4 +ADDRGP4 $238 +JUMPV +LABELV $251 +line 1083 +;1073: +;1074: case IT_HEALTH: +;1075: // small and mega healths will go over the max, otherwise +;1076: // don't pick up if already at max +;1077:#ifdef MISSIONPACK +;1078: if( bg_itemlist[ps->stats[STAT_PERSISTANT_POWERUP]].giTag == PW_GUARD ) { +;1079: upperBound = ps->stats[STAT_MAX_HEALTH]; +;1080: } +;1081: else +;1082:#endif +;1083: if ( item->quantity == 5 || item->quantity == 100 ) { +ADDRLP4 16 +ADDRLP4 0 +INDIRP4 +CNSTI4 32 +ADDP4 +INDIRI4 +ASGNI4 +ADDRLP4 16 +INDIRI4 +CNSTI4 5 +EQI4 $254 +ADDRLP4 16 +INDIRI4 +CNSTI4 100 +NEI4 $252 +LABELV $254 +line 1084 +;1084: if ( ps->stats[STAT_HEALTH] >= 200) { //200 is max health x 2 ps->stats[STAT_MAX_HEALTH] * 2 ) { +ADDRFP4 8 +INDIRP4 +CNSTI4 184 +ADDP4 +INDIRI4 +CNSTI4 200 +LTI4 $255 +line 1085 +;1085: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $238 +JUMPV +LABELV $255 +line 1087 +;1086: } +;1087: return qtrue; +CNSTI4 1 +RETI4 +ADDRGP4 $238 +JUMPV +LABELV $252 +line 1090 +;1088: } +;1089: +;1090: if ( ps->stats[STAT_HEALTH] >= 100) { //100 is the max health ps->stats[STAT_MAX_HEALTH] ) { +ADDRFP4 8 +INDIRP4 +CNSTI4 184 +ADDP4 +INDIRI4 +CNSTI4 100 +LTI4 $257 +line 1091 +;1091: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $238 +JUMPV +LABELV $257 +line 1093 +;1092: } +;1093: return qtrue; +CNSTI4 1 +RETI4 +ADDRGP4 $238 +JUMPV +LABELV $259 +line 1096 +;1094: +;1095: case IT_POWERUP: +;1096: return qtrue; // powerups are always picked up +CNSTI4 1 +RETI4 +ADDRGP4 $238 +JUMPV +LABELV $260 +line 1134 +;1097: +;1098:#ifdef MISSIONPACK +;1099: case IT_PERSISTANT_POWERUP: +;1100: // can only hold one item at a time +;1101: if ( ps->stats[STAT_PERSISTANT_POWERUP] ) { +;1102: return qfalse; +;1103: } +;1104: +;1105: // check team only +;1106: if( ( ent->generic1 & 2 ) && ( ps->persistant[PERS_TEAM] != TEAM_RED ) ) { +;1107: return qfalse; +;1108: } +;1109: if( ( ent->generic1 & 4 ) && ( ps->persistant[PERS_TEAM] != TEAM_BLUE ) ) { +;1110: return qfalse; +;1111: } +;1112: +;1113: return qtrue; +;1114:#endif +;1115: +;1116: case IT_TEAM: // team items, such as flags +;1117:#ifdef MISSIONPACK +;1118: if( gametype == GT_1FCTF ) { +;1119: // neutral flag can always be picked up +;1120: if( item->giTag == PW_NEUTRALFLAG ) { +;1121: return qtrue; +;1122: } +;1123: if (ps->persistant[PERS_TEAM] == TEAM_RED) { +;1124: if (item->giTag == PW_BLUEFLAG && ps->powerups[PW_NEUTRALFLAG] ) { +;1125: return qtrue; +;1126: } +;1127: } else if (ps->persistant[PERS_TEAM] == TEAM_BLUE) { +;1128: if (item->giTag == PW_REDFLAG && ps->powerups[PW_NEUTRALFLAG] ) { +;1129: return qtrue; +;1130: } +;1131: } +;1132: } +;1133:#endif +;1134: if( gametype == GT_CTF ) { +ADDRFP4 0 +INDIRI4 +CNSTI4 4 +NEI4 $261 +line 1138 +;1135: // ent->modelindex2 is non-zero on items if they are dropped +;1136: // we need to know this because we can pick up our dropped flag (and return it) +;1137: // but we can't pick up our flag at base +;1138: if (ps->persistant[PERS_TEAM] == TEAM_RED) { +ADDRFP4 8 +INDIRP4 +CNSTI4 260 +ADDP4 +INDIRI4 +CNSTI4 1 +NEI4 $263 +line 1139 +;1139: if (item->giTag == PW_BLUEFLAG || +ADDRLP4 20 +ADDRLP4 0 +INDIRP4 +CNSTI4 40 +ADDP4 +INDIRI4 +ASGNI4 +ADDRLP4 20 +INDIRI4 +CNSTI4 8 +EQI4 $268 +ADDRLP4 20 +INDIRI4 +CNSTI4 7 +NEI4 $269 +ADDRFP4 4 +INDIRP4 +CNSTI4 164 +ADDP4 +INDIRI4 +CNSTI4 0 +NEI4 $268 +LABELV $269 +ADDRLP4 0 +INDIRP4 +CNSTI4 40 +ADDP4 +INDIRI4 +CNSTI4 7 +NEI4 $264 +ADDRFP4 8 +INDIRP4 +CNSTI4 344 +ADDP4 +INDIRI4 +CNSTI4 0 +EQI4 $264 +LABELV $268 +line 1142 +;1140: (item->giTag == PW_REDFLAG && ent->modelindex2) || +;1141: (item->giTag == PW_REDFLAG && ps->powerups[PW_BLUEFLAG])) +;1142: return qtrue; +CNSTI4 1 +RETI4 +ADDRGP4 $238 +JUMPV +line 1143 +;1143: } else if (ps->persistant[PERS_TEAM] == TEAM_BLUE) { +LABELV $263 +ADDRFP4 8 +INDIRP4 +CNSTI4 260 +ADDP4 +INDIRI4 +CNSTI4 2 +NEI4 $270 +line 1144 +;1144: if (item->giTag == PW_REDFLAG || +ADDRLP4 20 +ADDRLP4 0 +INDIRP4 +CNSTI4 40 +ADDP4 +INDIRI4 +ASGNI4 +ADDRLP4 20 +INDIRI4 +CNSTI4 7 +EQI4 $275 +ADDRLP4 20 +INDIRI4 +CNSTI4 8 +NEI4 $276 +ADDRFP4 4 +INDIRP4 +CNSTI4 164 +ADDP4 +INDIRI4 +CNSTI4 0 +NEI4 $275 +LABELV $276 +ADDRLP4 0 +INDIRP4 +CNSTI4 40 +ADDP4 +INDIRI4 +CNSTI4 8 +NEI4 $272 +ADDRFP4 8 +INDIRP4 +CNSTI4 340 +ADDP4 +INDIRI4 +CNSTI4 0 +EQI4 $272 +LABELV $275 +line 1147 +;1145: (item->giTag == PW_BLUEFLAG && ent->modelindex2) || +;1146: (item->giTag == PW_BLUEFLAG && ps->powerups[PW_REDFLAG])) +;1147: return qtrue; +CNSTI4 1 +RETI4 +ADDRGP4 $238 +JUMPV +LABELV $272 +line 1148 +;1148: } +LABELV $270 +LABELV $264 +line 1149 +;1149: } +LABELV $261 +line 1156 +;1150: +;1151:#ifdef MISSIONPACK +;1152: if( gametype == GT_HARVESTER ) { +;1153: return qtrue; +;1154: } +;1155:#endif +;1156: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $238 +JUMPV +LABELV $277 +line 1160 +;1157: +;1158: case IT_HOLDABLE: +;1159: // can only hold one item at a time +;1160: if ( ps->stats[STAT_HOLDABLE_ITEM] ) { +ADDRFP4 8 +INDIRP4 +CNSTI4 188 +ADDP4 +INDIRI4 +CNSTI4 0 +EQI4 $278 +line 1161 +;1161: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $238 +JUMPV +LABELV $278 +line 1163 +;1162: } +;1163: return qtrue; +CNSTI4 1 +RETI4 +ADDRGP4 $238 +JUMPV +LABELV $280 +line 1166 +;1164: +;1165: case IT_BAD: +;1166: Com_Error( ERR_DROP, "BG_CanItemBeGrabbed: IT_BAD" ); +CNSTI4 1 +ARGI4 +ADDRGP4 $281 +ARGP4 +ADDRGP4 Com_Error +CALLV +pop +line 1173 +;1167: default: +;1168:#ifndef Q3_VM +;1169:#ifndef NDEBUG // bk0001204 +;1170: Com_Printf("BG_CanItemBeGrabbed: unknown enum %d\n", item->giType ); +;1171:#endif +;1172:#endif +;1173: break; +LABELV $244 +line 1176 +;1174: } +;1175: +;1176: return qfalse; +CNSTI4 0 +RETI4 +LABELV $238 +endproc BG_CanItemBeGrabbed 24 8 +export BG_EvaluateTrajectory +proc BG_EvaluateTrajectory 84 12 +line 1187 +;1177:} +;1178: +;1179://====================================================================== +;1180: +;1181:/* +;1182:================ +;1183:BG_EvaluateTrajectory +;1184: +;1185:================ +;1186:*/ +;1187:void BG_EvaluateTrajectory( const trajectory_t *tr, int atTime, vec3_t result ) { +line 1191 +;1188: float deltaTime; +;1189: float phase; +;1190: +;1191: switch( tr->trType ) { +ADDRLP4 8 +ADDRFP4 0 +INDIRP4 +INDIRI4 +ASGNI4 +ADDRLP4 8 +INDIRI4 +CNSTI4 0 +LTI4 $284 +ADDRLP4 8 +INDIRI4 +CNSTI4 5 +GTI4 $284 +ADDRLP4 8 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 $297 +ADDP4 +INDIRP4 +JUMPV +lit +align 4 +LABELV $297 +address $287 +address $287 +address $288 +address $290 +address $289 +address $295 +code +LABELV $287 +line 1194 +;1192: case TR_STATIONARY: +;1193: case TR_INTERPOLATE: +;1194: VectorCopy( tr->trBase, result ); +ADDRFP4 8 +INDIRP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 12 +ADDP4 +INDIRB +ASGNB 12 +line 1195 +;1195: break; +ADDRGP4 $285 +JUMPV +LABELV $288 +line 1197 +;1196: case TR_LINEAR: +;1197: deltaTime = ( atTime - tr->trTime ) * 0.001; // milliseconds to seconds +ADDRLP4 0 +CNSTF4 981668463 +ADDRFP4 4 +INDIRI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRI4 +SUBI4 +CVIF4 4 +MULF4 +ASGNF4 +line 1198 +;1198: VectorMA( tr->trBase, deltaTime, tr->trDelta, result ); +ADDRLP4 16 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRFP4 8 +INDIRP4 +ADDRLP4 16 +INDIRP4 +CNSTI4 12 +ADDP4 +INDIRF4 +ADDRLP4 16 +INDIRP4 +CNSTI4 24 +ADDP4 +INDIRF4 +ADDRLP4 0 +INDIRF4 +MULF4 +ADDF4 +ASGNF4 +ADDRLP4 20 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRFP4 8 +INDIRP4 +CNSTI4 4 +ADDP4 +ADDRLP4 20 +INDIRP4 +CNSTI4 16 +ADDP4 +INDIRF4 +ADDRLP4 20 +INDIRP4 +CNSTI4 28 +ADDP4 +INDIRF4 +ADDRLP4 0 +INDIRF4 +MULF4 +ADDF4 +ASGNF4 +ADDRLP4 24 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRFP4 8 +INDIRP4 +CNSTI4 8 +ADDP4 +ADDRLP4 24 +INDIRP4 +CNSTI4 20 +ADDP4 +INDIRF4 +ADDRLP4 24 +INDIRP4 +CNSTI4 32 +ADDP4 +INDIRF4 +ADDRLP4 0 +INDIRF4 +MULF4 +ADDF4 +ASGNF4 +line 1199 +;1199: break; +ADDRGP4 $285 +JUMPV +LABELV $289 +line 1201 +;1200: case TR_SINE: +;1201: deltaTime = ( atTime - tr->trTime ) / (float) tr->trDuration; +ADDRLP4 28 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 0 +ADDRFP4 4 +INDIRI4 +ADDRLP4 28 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRI4 +SUBI4 +CVIF4 4 +ADDRLP4 28 +INDIRP4 +CNSTI4 8 +ADDP4 +INDIRI4 +CVIF4 4 +DIVF4 +ASGNF4 +line 1202 +;1202: phase = sin( deltaTime * M_PI * 2 ); +CNSTF4 1073741824 +CNSTF4 1078530011 +ADDRLP4 0 +INDIRF4 +MULF4 +MULF4 +ARGF4 +ADDRLP4 32 +ADDRGP4 sin +CALLF4 +ASGNF4 +ADDRLP4 4 +ADDRLP4 32 +INDIRF4 +ASGNF4 +line 1203 +;1203: VectorMA( tr->trBase, phase, tr->trDelta, result ); +ADDRLP4 36 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRFP4 8 +INDIRP4 +ADDRLP4 36 +INDIRP4 +CNSTI4 12 +ADDP4 +INDIRF4 +ADDRLP4 36 +INDIRP4 +CNSTI4 24 +ADDP4 +INDIRF4 +ADDRLP4 4 +INDIRF4 +MULF4 +ADDF4 +ASGNF4 +ADDRLP4 40 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRFP4 8 +INDIRP4 +CNSTI4 4 +ADDP4 +ADDRLP4 40 +INDIRP4 +CNSTI4 16 +ADDP4 +INDIRF4 +ADDRLP4 40 +INDIRP4 +CNSTI4 28 +ADDP4 +INDIRF4 +ADDRLP4 4 +INDIRF4 +MULF4 +ADDF4 +ASGNF4 +ADDRLP4 44 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRFP4 8 +INDIRP4 +CNSTI4 8 +ADDP4 +ADDRLP4 44 +INDIRP4 +CNSTI4 20 +ADDP4 +INDIRF4 +ADDRLP4 44 +INDIRP4 +CNSTI4 32 +ADDP4 +INDIRF4 +ADDRLP4 4 +INDIRF4 +MULF4 +ADDF4 +ASGNF4 +line 1204 +;1204: break; +ADDRGP4 $285 +JUMPV +LABELV $290 +line 1206 +;1205: case TR_LINEAR_STOP: +;1206: if ( atTime > tr->trTime + tr->trDuration ) { +ADDRLP4 48 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRFP4 4 +INDIRI4 +ADDRLP4 48 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRI4 +ADDRLP4 48 +INDIRP4 +CNSTI4 8 +ADDP4 +INDIRI4 +ADDI4 +LEI4 $291 +line 1207 +;1207: atTime = tr->trTime + tr->trDuration; +ADDRLP4 52 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRFP4 4 +ADDRLP4 52 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRI4 +ADDRLP4 52 +INDIRP4 +CNSTI4 8 +ADDP4 +INDIRI4 +ADDI4 +ASGNI4 +line 1208 +;1208: } +LABELV $291 +line 1209 +;1209: deltaTime = ( atTime - tr->trTime ) * 0.001; // milliseconds to seconds +ADDRLP4 0 +CNSTF4 981668463 +ADDRFP4 4 +INDIRI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRI4 +SUBI4 +CVIF4 4 +MULF4 +ASGNF4 +line 1210 +;1210: if ( deltaTime < 0 ) { +ADDRLP4 0 +INDIRF4 +CNSTF4 0 +GEF4 $293 +line 1211 +;1211: deltaTime = 0; +ADDRLP4 0 +CNSTF4 0 +ASGNF4 +line 1212 +;1212: } +LABELV $293 +line 1213 +;1213: VectorMA( tr->trBase, deltaTime, tr->trDelta, result ); +ADDRLP4 52 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRFP4 8 +INDIRP4 +ADDRLP4 52 +INDIRP4 +CNSTI4 12 +ADDP4 +INDIRF4 +ADDRLP4 52 +INDIRP4 +CNSTI4 24 +ADDP4 +INDIRF4 +ADDRLP4 0 +INDIRF4 +MULF4 +ADDF4 +ASGNF4 +ADDRLP4 56 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRFP4 8 +INDIRP4 +CNSTI4 4 +ADDP4 +ADDRLP4 56 +INDIRP4 +CNSTI4 16 +ADDP4 +INDIRF4 +ADDRLP4 56 +INDIRP4 +CNSTI4 28 +ADDP4 +INDIRF4 +ADDRLP4 0 +INDIRF4 +MULF4 +ADDF4 +ASGNF4 +ADDRLP4 60 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRFP4 8 +INDIRP4 +CNSTI4 8 +ADDP4 +ADDRLP4 60 +INDIRP4 +CNSTI4 20 +ADDP4 +INDIRF4 +ADDRLP4 60 +INDIRP4 +CNSTI4 32 +ADDP4 +INDIRF4 +ADDRLP4 0 +INDIRF4 +MULF4 +ADDF4 +ASGNF4 +line 1214 +;1214: break; +ADDRGP4 $285 +JUMPV +LABELV $295 +line 1216 +;1215: case TR_GRAVITY: +;1216: deltaTime = ( atTime - tr->trTime ) * 0.001; // milliseconds to seconds +ADDRLP4 0 +CNSTF4 981668463 +ADDRFP4 4 +INDIRI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRI4 +SUBI4 +CVIF4 4 +MULF4 +ASGNF4 +line 1217 +;1217: VectorMA( tr->trBase, deltaTime, tr->trDelta, result ); +ADDRLP4 64 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRFP4 8 +INDIRP4 +ADDRLP4 64 +INDIRP4 +CNSTI4 12 +ADDP4 +INDIRF4 +ADDRLP4 64 +INDIRP4 +CNSTI4 24 +ADDP4 +INDIRF4 +ADDRLP4 0 +INDIRF4 +MULF4 +ADDF4 +ASGNF4 +ADDRLP4 68 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRFP4 8 +INDIRP4 +CNSTI4 4 +ADDP4 +ADDRLP4 68 +INDIRP4 +CNSTI4 16 +ADDP4 +INDIRF4 +ADDRLP4 68 +INDIRP4 +CNSTI4 28 +ADDP4 +INDIRF4 +ADDRLP4 0 +INDIRF4 +MULF4 +ADDF4 +ASGNF4 +ADDRLP4 72 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRFP4 8 +INDIRP4 +CNSTI4 8 +ADDP4 +ADDRLP4 72 +INDIRP4 +CNSTI4 20 +ADDP4 +INDIRF4 +ADDRLP4 72 +INDIRP4 +CNSTI4 32 +ADDP4 +INDIRF4 +ADDRLP4 0 +INDIRF4 +MULF4 +ADDF4 +ASGNF4 +line 1218 +;1218: result[2] -= 0.5 * DEFAULT_GRAVITY * deltaTime * deltaTime; // FIXME: local gravity... +ADDRLP4 76 +ADDRFP4 8 +INDIRP4 +CNSTI4 8 +ADDP4 +ASGNP4 +ADDRLP4 80 +ADDRLP4 0 +INDIRF4 +ASGNF4 +ADDRLP4 76 +INDIRP4 +ADDRLP4 76 +INDIRP4 +INDIRF4 +CNSTF4 1137180672 +ADDRLP4 80 +INDIRF4 +MULF4 +ADDRLP4 80 +INDIRF4 +MULF4 +SUBF4 +ASGNF4 +line 1219 +;1219: break; +ADDRGP4 $285 +JUMPV +LABELV $284 +line 1221 +;1220: default: +;1221: Com_Error( ERR_DROP, "BG_EvaluateTrajectory: unknown trType: %i", tr->trTime ); +CNSTI4 1 +ARGI4 +ADDRGP4 $296 +ARGP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRI4 +ARGI4 +ADDRGP4 Com_Error +CALLV +pop +line 1222 +;1222: break; +LABELV $285 +line 1224 +;1223: } +;1224:} +LABELV $283 +endproc BG_EvaluateTrajectory 84 12 +export BG_EvaluateTrajectoryDelta +proc BG_EvaluateTrajectoryDelta 44 12 +line 1233 +;1225: +;1226:/* +;1227:================ +;1228:BG_EvaluateTrajectoryDelta +;1229: +;1230:For determining velocity at a given time +;1231:================ +;1232:*/ +;1233:void BG_EvaluateTrajectoryDelta( const trajectory_t *tr, int atTime, vec3_t result ) { +line 1237 +;1234: float deltaTime; +;1235: float phase; +;1236: +;1237: switch( tr->trType ) { +ADDRLP4 8 +ADDRFP4 0 +INDIRP4 +INDIRI4 +ASGNI4 +ADDRLP4 8 +INDIRI4 +CNSTI4 0 +LTI4 $299 +ADDRLP4 8 +INDIRI4 +CNSTI4 5 +GTI4 $299 +ADDRLP4 8 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 $310 +ADDP4 +INDIRP4 +JUMPV +lit +align 4 +LABELV $310 +address $302 +address $302 +address $303 +address $305 +address $304 +address $308 +code +LABELV $302 +line 1240 +;1238: case TR_STATIONARY: +;1239: case TR_INTERPOLATE: +;1240: VectorClear( result ); +ADDRLP4 16 +ADDRFP4 8 +INDIRP4 +ASGNP4 +ADDRLP4 20 +CNSTF4 0 +ASGNF4 +ADDRLP4 16 +INDIRP4 +CNSTI4 8 +ADDP4 +ADDRLP4 20 +INDIRF4 +ASGNF4 +ADDRLP4 16 +INDIRP4 +CNSTI4 4 +ADDP4 +ADDRLP4 20 +INDIRF4 +ASGNF4 +ADDRLP4 16 +INDIRP4 +ADDRLP4 20 +INDIRF4 +ASGNF4 +line 1241 +;1241: break; +ADDRGP4 $300 +JUMPV +LABELV $303 +line 1243 +;1242: case TR_LINEAR: +;1243: VectorCopy( tr->trDelta, result ); +ADDRFP4 8 +INDIRP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 24 +ADDP4 +INDIRB +ASGNB 12 +line 1244 +;1244: break; +ADDRGP4 $300 +JUMPV +LABELV $304 +line 1246 +;1245: case TR_SINE: +;1246: deltaTime = ( atTime - tr->trTime ) / (float) tr->trDuration; +ADDRLP4 24 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 4 +ADDRFP4 4 +INDIRI4 +ADDRLP4 24 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRI4 +SUBI4 +CVIF4 4 +ADDRLP4 24 +INDIRP4 +CNSTI4 8 +ADDP4 +INDIRI4 +CVIF4 4 +DIVF4 +ASGNF4 +line 1247 +;1247: phase = cos( deltaTime * M_PI * 2 ); // derivative of sin = cos +CNSTF4 1073741824 +CNSTF4 1078530011 +ADDRLP4 4 +INDIRF4 +MULF4 +MULF4 +ARGF4 +ADDRLP4 28 +ADDRGP4 cos +CALLF4 +ASGNF4 +ADDRLP4 0 +ADDRLP4 28 +INDIRF4 +ASGNF4 +line 1248 +;1248: phase *= 0.5; +ADDRLP4 0 +CNSTF4 1056964608 +ADDRLP4 0 +INDIRF4 +MULF4 +ASGNF4 +line 1249 +;1249: VectorScale( tr->trDelta, phase, result ); +ADDRFP4 8 +INDIRP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 24 +ADDP4 +INDIRF4 +ADDRLP4 0 +INDIRF4 +MULF4 +ASGNF4 +ADDRFP4 8 +INDIRP4 +CNSTI4 4 +ADDP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 28 +ADDP4 +INDIRF4 +ADDRLP4 0 +INDIRF4 +MULF4 +ASGNF4 +ADDRFP4 8 +INDIRP4 +CNSTI4 8 +ADDP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 32 +ADDP4 +INDIRF4 +ADDRLP4 0 +INDIRF4 +MULF4 +ASGNF4 +line 1250 +;1250: break; +ADDRGP4 $300 +JUMPV +LABELV $305 +line 1252 +;1251: case TR_LINEAR_STOP: +;1252: if ( atTime > tr->trTime + tr->trDuration ) { +ADDRLP4 32 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRFP4 4 +INDIRI4 +ADDRLP4 32 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRI4 +ADDRLP4 32 +INDIRP4 +CNSTI4 8 +ADDP4 +INDIRI4 +ADDI4 +LEI4 $306 +line 1253 +;1253: VectorClear( result ); +ADDRLP4 36 +ADDRFP4 8 +INDIRP4 +ASGNP4 +ADDRLP4 40 +CNSTF4 0 +ASGNF4 +ADDRLP4 36 +INDIRP4 +CNSTI4 8 +ADDP4 +ADDRLP4 40 +INDIRF4 +ASGNF4 +ADDRLP4 36 +INDIRP4 +CNSTI4 4 +ADDP4 +ADDRLP4 40 +INDIRF4 +ASGNF4 +ADDRLP4 36 +INDIRP4 +ADDRLP4 40 +INDIRF4 +ASGNF4 +line 1254 +;1254: return; +ADDRGP4 $298 +JUMPV +LABELV $306 +line 1256 +;1255: } +;1256: VectorCopy( tr->trDelta, result ); +ADDRFP4 8 +INDIRP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 24 +ADDP4 +INDIRB +ASGNB 12 +line 1257 +;1257: break; +ADDRGP4 $300 +JUMPV +LABELV $308 +line 1259 +;1258: case TR_GRAVITY: +;1259: deltaTime = ( atTime - tr->trTime ) * 0.001; // milliseconds to seconds +ADDRLP4 4 +CNSTF4 981668463 +ADDRFP4 4 +INDIRI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRI4 +SUBI4 +CVIF4 4 +MULF4 +ASGNF4 +line 1260 +;1260: VectorCopy( tr->trDelta, result ); +ADDRFP4 8 +INDIRP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 24 +ADDP4 +INDIRB +ASGNB 12 +line 1261 +;1261: result[2] -= DEFAULT_GRAVITY * deltaTime; // FIXME: local gravity... +ADDRLP4 36 +ADDRFP4 8 +INDIRP4 +CNSTI4 8 +ADDP4 +ASGNP4 +ADDRLP4 36 +INDIRP4 +ADDRLP4 36 +INDIRP4 +INDIRF4 +CNSTF4 1145569280 +ADDRLP4 4 +INDIRF4 +MULF4 +SUBF4 +ASGNF4 +line 1262 +;1262: break; +ADDRGP4 $300 +JUMPV +LABELV $299 +line 1264 +;1263: default: +;1264: Com_Error( ERR_DROP, "BG_EvaluateTrajectoryDelta: unknown trType: %i", tr->trTime ); +CNSTI4 1 +ARGI4 +ADDRGP4 $309 +ARGP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRI4 +ARGI4 +ADDRGP4 Com_Error +CALLV +pop +line 1265 +;1265: break; +LABELV $300 +line 1267 +;1266: } +;1267:} +LABELV $298 +endproc BG_EvaluateTrajectoryDelta 44 12 +data +export eventnames +align 4 +LABELV eventnames +address $311 +address $312 +address $313 +address $314 +address $315 +address $316 +address $317 +address $318 +address $319 +address $320 +address $321 +address $322 +address $323 +address $324 +address $325 +address $326 +address $327 +address $328 +address $329 +address $330 +address $331 +address $332 +address $333 +address $334 +address $335 +address $336 +address $337 +address $338 +address $339 +address $340 +address $341 +address $342 +address $343 +address $344 +address $345 +address $346 +address $347 +address $348 +address $349 +address $350 +address $351 +address $352 +address $353 +address $354 +address $355 +address $356 +address $357 +address $358 +address $359 +address $360 +address $361 +address $362 +address $363 +address $364 +address $365 +address $366 +address $367 +address $368 +address $369 +address $370 +address $371 +address $372 +address $373 +address $374 +address $375 +address $376 +address $377 +address $378 +address $379 +address $380 +address $381 +address $382 +address $383 +address $384 +address $385 +address $386 +address $387 +address $388 +address $389 +address $390 +address $391 +address $392 +address $393 +address $394 +address $395 +address $396 +address $397 +address $398 +address $399 +address $400 +address $401 +address $402 +address $403 +address $404 +address $405 +address $406 +address $407 +address $408 +address $409 +address $410 +address $411 +address $412 +address $413 +address $414 +export BG_AddPredictableEventToPlayerstate +code +proc BG_AddPredictableEventToPlayerstate 12 0 +line 1410 +;1268: +;1269:char *eventnames[] = { +;1270: "EV_NONE", +;1271: +;1272: "EV_FOOTSTEP", +;1273: "EV_FOOTSTEP_METAL", +;1274: "EV_FOOTSTEP_GRASS", // Elder: grass stuff +;1275: "EV_FOOTSTEP_WOOD", +;1276: "EV_FOOTSTEP_CARPET", +;1277: "EV_FOOTSTEP_METAL2", +;1278: "EV_FOOTSPLASH", +;1279: "EV_FOOTWADE", +;1280: "EV_SWIM", +;1281: +;1282: "EV_STEP_4", +;1283: "EV_STEP_8", +;1284: "EV_STEP_12", +;1285: "EV_STEP_16", +;1286: +;1287: "EV_FALL_SHORT", +;1288: "EV_FALL_SHORT_NOSOUND", +;1289: "EV_FALL_MEDIUM", +;1290: "EV_FALL_MEDIUM_NOSOUND", +;1291: "EV_FALL_FAR", +;1292: "EV_FALL_FAR_NOSOUND", +;1293: +;1294: "EV_JUMP_PAD", // boing sound at origin", jump sound on player +;1295: +;1296: "EV_JUMP", +;1297: "EV_WATER_TOUCH", // foot touches +;1298: "EV_WATER_LEAVE", // foot leaves +;1299: "EV_WATER_UNDER", // head touches +;1300: "EV_WATER_CLEAR", // head leaves +;1301: +;1302: "EV_ITEM_PICKUP", // normal item pickups are predictable +;1303: "EV_GLOBAL_ITEM_PICKUP", // powerup / team sounds are broadcast to everyone +;1304: +;1305: "EV_NOAMMO", +;1306: "EV_CHANGE_WEAPON", +;1307: "EV_FIRE_WEAPON", +;1308: "EV_RELOAD_WEAPON0", // Elder: reload weapon sounds +;1309: "EV_RELOAD_WEAPON1", // Elder: reload weapon sounds +;1310: "EV_RELOAD_WEAPON2", // Elder: reload weapon sounds +;1311: +;1312: "EV_USE_ITEM0", +;1313: "EV_USE_ITEM1", +;1314: "EV_USE_ITEM2", +;1315: "EV_USE_ITEM3", +;1316: "EV_USE_ITEM4", +;1317: "EV_USE_ITEM5", +;1318: "EV_USE_ITEM6", +;1319: "EV_USE_ITEM7", +;1320: "EV_USE_ITEM8", +;1321: "EV_USE_ITEM9", +;1322: "EV_USE_ITEM10", +;1323: "EV_USE_ITEM11", +;1324: "EV_USE_ITEM12", +;1325: "EV_USE_ITEM13", +;1326: "EV_USE_ITEM14", +;1327: "EV_USE_ITEM15", +;1328: +;1329: "EV_ITEM_RESPAWN", +;1330: "EV_ITEM_POP", +;1331: "EV_PLAYER_TELEPORT_IN", +;1332: "EV_PLAYER_TELEPORT_OUT", +;1333: +;1334: "EV_GRENADE_BOUNCE", // eventParm will be the soundindex +;1335: +;1336: "EV_GENERAL_SOUND", +;1337: "EV_GLOBAL_SOUND", // no attenuation +;1338: "EV_GLOBAL_TEAM_SOUND", +;1339: "EV_RQ3_SOUND", // Elder: play local sounds - primarily for kick +;1340: +;1341: "EV_DMREWARD", // Duffman: To display exponential reward messages. +;1342: +;1343: "EV_BULLET_HIT_FLESH", +;1344: "EV_BULLET_HIT_WALL", +;1345: "EV_BULLET_HIT_METAL", // Elder: sparks +;1346: "EV_BULLET_HIT_KEVLAR", // Elder: sparks +;1347: "EV_BULLET_HIT_GLASS", // Elder: glass mark +;1348: "EV_SSG3000_HIT_FLESH", // Elder: SSG3000 blood spray +;1349: "EV_JUMPKICK", // Elder: sound + jumpkick message +;1350: "EV_EJECTBLOOD", // Elder: when bleeding, every 2s release blood +;1351: +;1352: "EV_MISSILE_HIT", +;1353: "EV_MISSILE_MISS", +;1354: "EV_MISSILE_MISS_METAL", +;1355: "EV_KNIFE_MISS", // Elder: knife slash stuff +;1356: "EV_RAILTRAIL", +;1357: "EV_SHOTGUN", +;1358: "EV_HANDCANNON", +;1359: "EV_BULLET", // otherEntity is the shooter +;1360: +;1361: "EV_HEADSHOT", // Elder: spray like SSG shot +;1362: "EV_PAIN", +;1363: "EV_DEATH1", +;1364: "EV_DEATH2", +;1365: "EV_DEATH3", +;1366: "EV_OBITUARY", +;1367: //Elder: +;1368: //Location-specific obits- need separate events b/c you can't stuff >8bits in eventParm +;1369: "EV_OBITUARY_HEAD", +;1370: "EV_OBITUARY_CHEST", +;1371: "EV_OBITUARY_STOMACH", +;1372: "EV_OBITUARY_LEGS", +;1373: +;1374: "EV_POWERUP_QUAD", +;1375: "EV_POWERUP_BATTLESUIT", +;1376: "EV_POWERUP_REGEN", +;1377: +;1378: "EV_GIB_PLAYER", // gib a previously living player +;1379: "EV_BREAK_GLASS1", // Blaze: Breakable glass +;1380: "EV_BREAK_GLASS2", +;1381: "EV_BREAK_GLASS3", +;1382: "EV_SCOREPLUM", // score plum +;1383: +;1384://#ifdef MISSIONPACK +;1385: "EV_PROXIMITY_MINE_STICK", +;1386: "EV_PROXIMITY_MINE_TRIGGER", +;1387: "EV_KAMIKAZE", // kamikaze explodes +;1388: "EV_OBELISKEXPLODE", // obelisk explodes +;1389: "EV_INVUL_IMPACT", // invulnerability sphere impact +;1390: "EV_JUICED", // invulnerability juiced effect +;1391: "EV_LIGHTNINGBOLT", // lightning bolt bounced of invulnerability sphere +;1392://#endif +;1393: +;1394: "EV_DEBUG_LINE", +;1395: "EV_STOPLOOPINGSOUND", +;1396: "EV_TAUNT" +;1397: +;1398:}; +;1399: +;1400:/* +;1401:=============== +;1402:BG_AddPredictableEventToPlayerstate +;1403: +;1404:Handles the sequence numbers +;1405:=============== +;1406:*/ +;1407: +;1408:void trap_Cvar_VariableStringBuffer( const char *var_name, char *buffer, int bufsize ); +;1409: +;1410:void BG_AddPredictableEventToPlayerstate( int newEvent, int eventParm, playerState_t *ps ) { +line 1425 +;1411: +;1412:#ifdef _DEBUG +;1413: { +;1414: char buf[256]; +;1415: trap_Cvar_VariableStringBuffer("showevents", buf, sizeof(buf)); +;1416: if ( atof(buf) != 0 ) { +;1417:#ifdef QAGAME +;1418: Com_Printf(" game event svt %5d -> %5d: num = %20s parm %d\n", ps->pmove_framecount/*ps->commandTime*/, ps->eventSequence, eventnames[newEvent], eventParm); +;1419:#else +;1420: Com_Printf("Cgame event svt %5d -> %5d: num = %20s parm %d\n", ps->pmove_framecount/*ps->commandTime*/, ps->eventSequence, eventnames[newEvent], eventParm); +;1421:#endif +;1422: } +;1423: } +;1424:#endif +;1425: ps->events[ps->eventSequence & (MAX_PS_EVENTS-1)] = newEvent; +ADDRLP4 0 +ADDRFP4 8 +INDIRP4 +ASGNP4 +ADDRLP4 0 +INDIRP4 +CNSTI4 108 +ADDP4 +INDIRI4 +CNSTI4 1 +BANDI4 +CNSTI4 2 +LSHI4 +ADDRLP4 0 +INDIRP4 +CNSTI4 112 +ADDP4 +ADDP4 +ADDRFP4 0 +INDIRI4 +ASGNI4 +line 1426 +;1426: ps->eventParms[ps->eventSequence & (MAX_PS_EVENTS-1)] = eventParm; +ADDRLP4 4 +ADDRFP4 8 +INDIRP4 +ASGNP4 +ADDRLP4 4 +INDIRP4 +CNSTI4 108 +ADDP4 +INDIRI4 +CNSTI4 1 +BANDI4 +CNSTI4 2 +LSHI4 +ADDRLP4 4 +INDIRP4 +CNSTI4 120 +ADDP4 +ADDP4 +ADDRFP4 4 +INDIRI4 +ASGNI4 +line 1427 +;1427: ps->eventSequence++; +ADDRLP4 8 +ADDRFP4 8 +INDIRP4 +CNSTI4 108 +ADDP4 +ASGNP4 +ADDRLP4 8 +INDIRP4 +ADDRLP4 8 +INDIRP4 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 1428 +;1428:} +LABELV $415 +endproc BG_AddPredictableEventToPlayerstate 12 0 +export BG_TouchJumpPad +proc BG_TouchJumpPad 24 12 +line 1435 +;1429: +;1430:/* +;1431:======================== +;1432:BG_TouchJumpPad +;1433:======================== +;1434:*/ +;1435:void BG_TouchJumpPad( playerState_t *ps, entityState_t *jumppad ) { +line 1441 +;1436: vec3_t angles; +;1437: float p; +;1438: int effectNum; +;1439: +;1440: // spectators don't use jump pads +;1441: if ( ps->pm_type != PM_NORMAL ) { +ADDRFP4 0 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRI4 +CNSTI4 0 +EQI4 $417 +line 1442 +;1442: return; +ADDRGP4 $416 +JUMPV +LABELV $417 +line 1446 +;1443: } +;1444: +;1445: // flying characters don't hit bounce pads +;1446: if ( ps->powerups[PW_FLIGHT] ) { +ADDRFP4 0 +INDIRP4 +CNSTI4 336 +ADDP4 +INDIRI4 +CNSTI4 0 +EQI4 $419 +line 1447 +;1447: return; +ADDRGP4 $416 +JUMPV +LABELV $419 +line 1452 +;1448: } +;1449: +;1450: // if we didn't hit this same jumppad the previous frame +;1451: // then don't play the event sound again if we are in a fat trigger +;1452: if ( ps->jumppad_ent != jumppad->number ) { +ADDRFP4 0 +INDIRP4 +CNSTI4 448 +ADDP4 +INDIRI4 +ADDRFP4 4 +INDIRP4 +INDIRI4 +EQI4 $421 +line 1464 +;1453: +;1454: /* +;1455: vectoangles( jumppad->origin2, angles); +;1456: p = fabs( AngleNormalize180( angles[PITCH] ) ); +;1457: if( p < 45 ) { +;1458: effectNum = 0; +;1459: } else { +;1460: effectNum = 1; +;1461: } +;1462: */ +;1463: // NiceAss: For cutsom sounds... +;1464: effectNum = jumppad->generic1; +ADDRLP4 0 +ADDRFP4 4 +INDIRP4 +CNSTI4 204 +ADDP4 +INDIRI4 +ASGNI4 +line 1465 +;1465: BG_AddPredictableEventToPlayerstate( EV_JUMP_PAD, effectNum, ps ); +CNSTI4 20 +ARGI4 +ADDRLP4 0 +INDIRI4 +ARGI4 +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRGP4 BG_AddPredictableEventToPlayerstate +CALLV +pop +line 1466 +;1466: } +LABELV $421 +line 1468 +;1467: // remember hitting this jumppad this frame +;1468: ps->jumppad_ent = jumppad->number; +ADDRFP4 0 +INDIRP4 +CNSTI4 448 +ADDP4 +ADDRFP4 4 +INDIRP4 +INDIRI4 +ASGNI4 +line 1469 +;1469: ps->jumppad_frame = ps->pmove_framecount; +ADDRLP4 20 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 20 +INDIRP4 +CNSTI4 460 +ADDP4 +ADDRLP4 20 +INDIRP4 +CNSTI4 456 +ADDP4 +INDIRI4 +ASGNI4 +line 1471 +;1470: // give the player the velocity from the jumppad +;1471: VectorCopy( jumppad->origin2, ps->velocity ); +ADDRFP4 0 +INDIRP4 +CNSTI4 32 +ADDP4 +ADDRFP4 4 +INDIRP4 +CNSTI4 104 +ADDP4 +INDIRB +ASGNB 12 +line 1472 +;1472:} +LABELV $416 +endproc BG_TouchJumpPad 24 12 +export BG_PlayerStateToEntityState +proc BG_PlayerStateToEntityState 28 0 +line 1482 +;1473: +;1474:/* +;1475:======================== +;1476:BG_PlayerStateToEntityState +;1477: +;1478:This is done after each set of usercmd_t on the server, +;1479:and after local prediction on the client +;1480:======================== +;1481:*/ +;1482:void BG_PlayerStateToEntityState( playerState_t *ps, entityState_t *s, qboolean snap ) { +line 1485 +;1483: int i; +;1484: +;1485: if ( ps->pm_type == PM_INTERMISSION || ps->pm_type == PM_SPECTATOR ) { +ADDRLP4 4 +ADDRFP4 0 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRI4 +ASGNI4 +ADDRLP4 4 +INDIRI4 +CNSTI4 5 +EQI4 $426 +ADDRLP4 4 +INDIRI4 +CNSTI4 2 +NEI4 $424 +LABELV $426 +line 1486 +;1486: s->eType = ET_INVISIBLE; +ADDRFP4 4 +INDIRP4 +CNSTI4 4 +ADDP4 +CNSTI4 11 +ASGNI4 +line 1487 +;1487: } else if ( ps->stats[STAT_HEALTH] <= GIB_HEALTH ) { +ADDRGP4 $425 +JUMPV +LABELV $424 +ADDRFP4 0 +INDIRP4 +CNSTI4 184 +ADDP4 +INDIRI4 +CNSTI4 -500 +GTI4 $427 +line 1488 +;1488: s->eType = ET_INVISIBLE; +ADDRFP4 4 +INDIRP4 +CNSTI4 4 +ADDP4 +CNSTI4 11 +ASGNI4 +line 1489 +;1489: } else { +ADDRGP4 $428 +JUMPV +LABELV $427 +line 1490 +;1490: s->eType = ET_PLAYER; +ADDRFP4 4 +INDIRP4 +CNSTI4 4 +ADDP4 +CNSTI4 1 +ASGNI4 +line 1491 +;1491: } +LABELV $428 +LABELV $425 +line 1493 +;1492: +;1493: s->number = ps->clientNum; +ADDRFP4 4 +INDIRP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 140 +ADDP4 +INDIRI4 +ASGNI4 +line 1495 +;1494: +;1495: s->pos.trType = TR_INTERPOLATE; +ADDRFP4 4 +INDIRP4 +CNSTI4 12 +ADDP4 +CNSTI4 1 +ASGNI4 +line 1496 +;1496: VectorCopy( ps->origin, s->pos.trBase ); +ADDRFP4 4 +INDIRP4 +CNSTI4 24 +ADDP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 20 +ADDP4 +INDIRB +ASGNB 12 +line 1497 +;1497: if ( snap ) { +ADDRFP4 8 +INDIRI4 +CNSTI4 0 +EQI4 $429 +line 1498 +;1498: SnapVector( s->pos.trBase ); +ADDRLP4 8 +ADDRFP4 4 +INDIRP4 +CNSTI4 24 +ADDP4 +ASGNP4 +ADDRLP4 8 +INDIRP4 +ADDRLP4 8 +INDIRP4 +INDIRF4 +CVFI4 4 +CVIF4 4 +ASGNF4 +ADDRLP4 12 +ADDRFP4 4 +INDIRP4 +CNSTI4 28 +ADDP4 +ASGNP4 +ADDRLP4 12 +INDIRP4 +ADDRLP4 12 +INDIRP4 +INDIRF4 +CVFI4 4 +CVIF4 4 +ASGNF4 +ADDRLP4 16 +ADDRFP4 4 +INDIRP4 +CNSTI4 32 +ADDP4 +ASGNP4 +ADDRLP4 16 +INDIRP4 +ADDRLP4 16 +INDIRP4 +INDIRF4 +CVFI4 4 +CVIF4 4 +ASGNF4 +line 1499 +;1499: } +LABELV $429 +line 1501 +;1500: // set the trDelta for flag direction +;1501: VectorCopy( ps->velocity, s->pos.trDelta ); +ADDRFP4 4 +INDIRP4 +CNSTI4 36 +ADDP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 32 +ADDP4 +INDIRB +ASGNB 12 +line 1503 +;1502: +;1503: s->apos.trType = TR_INTERPOLATE; +ADDRFP4 4 +INDIRP4 +CNSTI4 48 +ADDP4 +CNSTI4 1 +ASGNI4 +line 1504 +;1504: VectorCopy( ps->viewangles, s->apos.trBase ); +ADDRFP4 4 +INDIRP4 +CNSTI4 60 +ADDP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 152 +ADDP4 +INDIRB +ASGNB 12 +line 1505 +;1505: if ( snap ) { +ADDRFP4 8 +INDIRI4 +CNSTI4 0 +EQI4 $431 +line 1506 +;1506: SnapVector( s->apos.trBase ); +ADDRLP4 8 +ADDRFP4 4 +INDIRP4 +CNSTI4 60 +ADDP4 +ASGNP4 +ADDRLP4 8 +INDIRP4 +ADDRLP4 8 +INDIRP4 +INDIRF4 +CVFI4 4 +CVIF4 4 +ASGNF4 +ADDRLP4 12 +ADDRFP4 4 +INDIRP4 +CNSTI4 64 +ADDP4 +ASGNP4 +ADDRLP4 12 +INDIRP4 +ADDRLP4 12 +INDIRP4 +INDIRF4 +CVFI4 4 +CVIF4 4 +ASGNF4 +ADDRLP4 16 +ADDRFP4 4 +INDIRP4 +CNSTI4 68 +ADDP4 +ASGNP4 +ADDRLP4 16 +INDIRP4 +ADDRLP4 16 +INDIRP4 +INDIRF4 +CVFI4 4 +CVIF4 4 +ASGNF4 +line 1507 +;1507: } +LABELV $431 +line 1509 +;1508: +;1509: s->angles2[YAW] = ps->movementDir; +ADDRFP4 4 +INDIRP4 +CNSTI4 132 +ADDP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 88 +ADDP4 +INDIRI4 +CVIF4 4 +ASGNF4 +line 1510 +;1510: s->legsAnim = ps->legsAnim; +ADDRFP4 4 +INDIRP4 +CNSTI4 196 +ADDP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 76 +ADDP4 +INDIRI4 +ASGNI4 +line 1511 +;1511: s->torsoAnim = ps->torsoAnim; +ADDRFP4 4 +INDIRP4 +CNSTI4 200 +ADDP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 84 +ADDP4 +INDIRI4 +ASGNI4 +line 1512 +;1512: s->clientNum = ps->clientNum; // ET_PLAYER looks here instead of at number +ADDRFP4 4 +INDIRP4 +CNSTI4 168 +ADDP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 140 +ADDP4 +INDIRI4 +ASGNI4 +line 1514 +;1513: // so corpses can also reference the proper config +;1514: s->eFlags = ps->eFlags; +ADDRFP4 4 +INDIRP4 +CNSTI4 8 +ADDP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 104 +ADDP4 +INDIRI4 +ASGNI4 +line 1515 +;1515: if ( ps->stats[STAT_HEALTH] <= 0 ) { +ADDRFP4 0 +INDIRP4 +CNSTI4 184 +ADDP4 +INDIRI4 +CNSTI4 0 +GTI4 $433 +line 1516 +;1516: s->eFlags |= EF_DEAD; +ADDRLP4 8 +ADDRFP4 4 +INDIRP4 +CNSTI4 8 +ADDP4 +ASGNP4 +ADDRLP4 8 +INDIRP4 +ADDRLP4 8 +INDIRP4 +INDIRI4 +CNSTI4 1 +BORI4 +ASGNI4 +line 1517 +;1517: } else { +ADDRGP4 $434 +JUMPV +LABELV $433 +line 1518 +;1518: s->eFlags &= ~EF_DEAD; +ADDRLP4 8 +ADDRFP4 4 +INDIRP4 +CNSTI4 8 +ADDP4 +ASGNP4 +ADDRLP4 8 +INDIRP4 +ADDRLP4 8 +INDIRP4 +INDIRI4 +CNSTI4 -2 +BANDI4 +ASGNI4 +line 1519 +;1519: } +LABELV $434 +line 1521 +;1520: +;1521: if ( ps->externalEvent ) { +ADDRFP4 0 +INDIRP4 +CNSTI4 128 +ADDP4 +INDIRI4 +CNSTI4 0 +EQI4 $435 +line 1522 +;1522: s->event = ps->externalEvent; +ADDRFP4 4 +INDIRP4 +CNSTI4 180 +ADDP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 128 +ADDP4 +INDIRI4 +ASGNI4 +line 1523 +;1523: s->eventParm = ps->externalEventParm; +ADDRFP4 4 +INDIRP4 +CNSTI4 184 +ADDP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 132 +ADDP4 +INDIRI4 +ASGNI4 +line 1524 +;1524: } else if ( ps->entityEventSequence < ps->eventSequence ) { +ADDRGP4 $436 +JUMPV +LABELV $435 +ADDRLP4 8 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 8 +INDIRP4 +CNSTI4 464 +ADDP4 +INDIRI4 +ADDRLP4 8 +INDIRP4 +CNSTI4 108 +ADDP4 +INDIRI4 +GEI4 $437 +line 1527 +;1525: int seq; +;1526: +;1527: if ( ps->entityEventSequence < ps->eventSequence - MAX_PS_EVENTS) { +ADDRLP4 16 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 16 +INDIRP4 +CNSTI4 464 +ADDP4 +INDIRI4 +ADDRLP4 16 +INDIRP4 +CNSTI4 108 +ADDP4 +INDIRI4 +CNSTI4 2 +SUBI4 +GEI4 $439 +line 1528 +;1528: ps->entityEventSequence = ps->eventSequence - MAX_PS_EVENTS; +ADDRLP4 20 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 20 +INDIRP4 +CNSTI4 464 +ADDP4 +ADDRLP4 20 +INDIRP4 +CNSTI4 108 +ADDP4 +INDIRI4 +CNSTI4 2 +SUBI4 +ASGNI4 +line 1529 +;1529: } +LABELV $439 +line 1530 +;1530: seq = ps->entityEventSequence & (MAX_PS_EVENTS-1); +ADDRLP4 12 +ADDRFP4 0 +INDIRP4 +CNSTI4 464 +ADDP4 +INDIRI4 +CNSTI4 1 +BANDI4 +ASGNI4 +line 1531 +;1531: s->event = ps->events[ seq ] | ( ( ps->entityEventSequence & 3 ) << 8 ); +ADDRLP4 20 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRFP4 4 +INDIRP4 +CNSTI4 180 +ADDP4 +ADDRLP4 12 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRLP4 20 +INDIRP4 +CNSTI4 112 +ADDP4 +ADDP4 +INDIRI4 +ADDRLP4 20 +INDIRP4 +CNSTI4 464 +ADDP4 +INDIRI4 +CNSTI4 3 +BANDI4 +CNSTI4 8 +LSHI4 +BORI4 +ASGNI4 +line 1532 +;1532: s->eventParm = ps->eventParms[ seq ]; +ADDRFP4 4 +INDIRP4 +CNSTI4 184 +ADDP4 +ADDRLP4 12 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 120 +ADDP4 +ADDP4 +INDIRI4 +ASGNI4 +line 1533 +;1533: ps->entityEventSequence++; +ADDRLP4 24 +ADDRFP4 0 +INDIRP4 +CNSTI4 464 +ADDP4 +ASGNP4 +ADDRLP4 24 +INDIRP4 +ADDRLP4 24 +INDIRP4 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 1534 +;1534: } +LABELV $437 +LABELV $436 +line 1536 +;1535: +;1536: s->weapon = ps->weapon; +ADDRFP4 4 +INDIRP4 +CNSTI4 192 +ADDP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 144 +ADDP4 +INDIRI4 +ASGNI4 +line 1537 +;1537: s->groundEntityNum = ps->groundEntityNum; +ADDRFP4 4 +INDIRP4 +CNSTI4 148 +ADDP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 68 +ADDP4 +INDIRI4 +ASGNI4 +line 1539 +;1538: +;1539: s->powerups = 0; +ADDRFP4 4 +INDIRP4 +CNSTI4 188 +ADDP4 +CNSTI4 0 +ASGNI4 +line 1540 +;1540: for ( i = 0 ; i < MAX_POWERUPS ; i++ ) { +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +LABELV $441 +line 1541 +;1541: if ( ps->powerups[ i ] ) { +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 312 +ADDP4 +ADDP4 +INDIRI4 +CNSTI4 0 +EQI4 $445 +line 1542 +;1542: s->powerups |= 1 << i; +ADDRLP4 12 +ADDRFP4 4 +INDIRP4 +CNSTI4 188 +ADDP4 +ASGNP4 +ADDRLP4 12 +INDIRP4 +ADDRLP4 12 +INDIRP4 +INDIRI4 +CNSTI4 1 +ADDRLP4 0 +INDIRI4 +LSHI4 +BORI4 +ASGNI4 +line 1543 +;1543: } +LABELV $445 +line 1544 +;1544: } +LABELV $442 +line 1540 +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +ADDRLP4 0 +INDIRI4 +CNSTI4 16 +LTI4 $441 +line 1546 +;1545: +;1546: s->loopSound = ps->loopSound; +ADDRFP4 4 +INDIRP4 +CNSTI4 156 +ADDP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 444 +ADDP4 +INDIRI4 +ASGNI4 +line 1547 +;1547: s->generic1 = ps->generic1; +ADDRFP4 4 +INDIRP4 +CNSTI4 204 +ADDP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 440 +ADDP4 +INDIRI4 +ASGNI4 +line 1548 +;1548:} +LABELV $423 +endproc BG_PlayerStateToEntityState 28 0 +export BG_PlayerStateToEntityStateExtraPolate +proc BG_PlayerStateToEntityStateExtraPolate 28 0 +line 1558 +;1549: +;1550:/* +;1551:======================== +;1552:BG_PlayerStateToEntityStateExtraPolate +;1553: +;1554:This is done after each set of usercmd_t on the server, +;1555:and after local prediction on the client +;1556:======================== +;1557:*/ +;1558:void BG_PlayerStateToEntityStateExtraPolate( playerState_t *ps, entityState_t *s, int time, qboolean snap ) { +line 1561 +;1559: int i; +;1560: +;1561: if ( ps->pm_type == PM_INTERMISSION || ps->pm_type == PM_SPECTATOR ) { +ADDRLP4 4 +ADDRFP4 0 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRI4 +ASGNI4 +ADDRLP4 4 +INDIRI4 +CNSTI4 5 +EQI4 $450 +ADDRLP4 4 +INDIRI4 +CNSTI4 2 +NEI4 $448 +LABELV $450 +line 1562 +;1562: s->eType = ET_INVISIBLE; +ADDRFP4 4 +INDIRP4 +CNSTI4 4 +ADDP4 +CNSTI4 11 +ASGNI4 +line 1563 +;1563: } else if ( ps->stats[STAT_HEALTH] <= GIB_HEALTH ) { +ADDRGP4 $449 +JUMPV +LABELV $448 +ADDRFP4 0 +INDIRP4 +CNSTI4 184 +ADDP4 +INDIRI4 +CNSTI4 -500 +GTI4 $451 +line 1564 +;1564: s->eType = ET_INVISIBLE; +ADDRFP4 4 +INDIRP4 +CNSTI4 4 +ADDP4 +CNSTI4 11 +ASGNI4 +line 1565 +;1565: } else { +ADDRGP4 $452 +JUMPV +LABELV $451 +line 1566 +;1566: s->eType = ET_PLAYER; +ADDRFP4 4 +INDIRP4 +CNSTI4 4 +ADDP4 +CNSTI4 1 +ASGNI4 +line 1567 +;1567: } +LABELV $452 +LABELV $449 +line 1569 +;1568: +;1569: s->number = ps->clientNum; +ADDRFP4 4 +INDIRP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 140 +ADDP4 +INDIRI4 +ASGNI4 +line 1571 +;1570: +;1571: s->pos.trType = TR_LINEAR_STOP; +ADDRFP4 4 +INDIRP4 +CNSTI4 12 +ADDP4 +CNSTI4 3 +ASGNI4 +line 1572 +;1572: VectorCopy( ps->origin, s->pos.trBase ); +ADDRFP4 4 +INDIRP4 +CNSTI4 24 +ADDP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 20 +ADDP4 +INDIRB +ASGNB 12 +line 1573 +;1573: if ( snap ) { +ADDRFP4 12 +INDIRI4 +CNSTI4 0 +EQI4 $453 +line 1574 +;1574: SnapVector( s->pos.trBase ); +ADDRLP4 8 +ADDRFP4 4 +INDIRP4 +CNSTI4 24 +ADDP4 +ASGNP4 +ADDRLP4 8 +INDIRP4 +ADDRLP4 8 +INDIRP4 +INDIRF4 +CVFI4 4 +CVIF4 4 +ASGNF4 +ADDRLP4 12 +ADDRFP4 4 +INDIRP4 +CNSTI4 28 +ADDP4 +ASGNP4 +ADDRLP4 12 +INDIRP4 +ADDRLP4 12 +INDIRP4 +INDIRF4 +CVFI4 4 +CVIF4 4 +ASGNF4 +ADDRLP4 16 +ADDRFP4 4 +INDIRP4 +CNSTI4 32 +ADDP4 +ASGNP4 +ADDRLP4 16 +INDIRP4 +ADDRLP4 16 +INDIRP4 +INDIRF4 +CVFI4 4 +CVIF4 4 +ASGNF4 +line 1575 +;1575: } +LABELV $453 +line 1577 +;1576: // set the trDelta for flag direction and linear prediction +;1577: VectorCopy( ps->velocity, s->pos.trDelta ); +ADDRFP4 4 +INDIRP4 +CNSTI4 36 +ADDP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 32 +ADDP4 +INDIRB +ASGNB 12 +line 1579 +;1578: // set the time for linear prediction +;1579: s->pos.trTime = time; +ADDRFP4 4 +INDIRP4 +CNSTI4 16 +ADDP4 +ADDRFP4 8 +INDIRI4 +ASGNI4 +line 1581 +;1580: // set maximum extra polation time +;1581: s->pos.trDuration = 50; // 1000 / sv_fps (default = 20) +ADDRFP4 4 +INDIRP4 +CNSTI4 20 +ADDP4 +CNSTI4 50 +ASGNI4 +line 1583 +;1582: +;1583: s->apos.trType = TR_INTERPOLATE; +ADDRFP4 4 +INDIRP4 +CNSTI4 48 +ADDP4 +CNSTI4 1 +ASGNI4 +line 1584 +;1584: VectorCopy( ps->viewangles, s->apos.trBase ); +ADDRFP4 4 +INDIRP4 +CNSTI4 60 +ADDP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 152 +ADDP4 +INDIRB +ASGNB 12 +line 1585 +;1585: if ( snap ) { +ADDRFP4 12 +INDIRI4 +CNSTI4 0 +EQI4 $455 +line 1586 +;1586: SnapVector( s->apos.trBase ); +ADDRLP4 8 +ADDRFP4 4 +INDIRP4 +CNSTI4 60 +ADDP4 +ASGNP4 +ADDRLP4 8 +INDIRP4 +ADDRLP4 8 +INDIRP4 +INDIRF4 +CVFI4 4 +CVIF4 4 +ASGNF4 +ADDRLP4 12 +ADDRFP4 4 +INDIRP4 +CNSTI4 64 +ADDP4 +ASGNP4 +ADDRLP4 12 +INDIRP4 +ADDRLP4 12 +INDIRP4 +INDIRF4 +CVFI4 4 +CVIF4 4 +ASGNF4 +ADDRLP4 16 +ADDRFP4 4 +INDIRP4 +CNSTI4 68 +ADDP4 +ASGNP4 +ADDRLP4 16 +INDIRP4 +ADDRLP4 16 +INDIRP4 +INDIRF4 +CVFI4 4 +CVIF4 4 +ASGNF4 +line 1587 +;1587: } +LABELV $455 +line 1589 +;1588: +;1589: s->angles2[YAW] = ps->movementDir; +ADDRFP4 4 +INDIRP4 +CNSTI4 132 +ADDP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 88 +ADDP4 +INDIRI4 +CVIF4 4 +ASGNF4 +line 1590 +;1590: s->legsAnim = ps->legsAnim; +ADDRFP4 4 +INDIRP4 +CNSTI4 196 +ADDP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 76 +ADDP4 +INDIRI4 +ASGNI4 +line 1591 +;1591: s->torsoAnim = ps->torsoAnim; +ADDRFP4 4 +INDIRP4 +CNSTI4 200 +ADDP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 84 +ADDP4 +INDIRI4 +ASGNI4 +line 1592 +;1592: s->clientNum = ps->clientNum; // ET_PLAYER looks here instead of at number +ADDRFP4 4 +INDIRP4 +CNSTI4 168 +ADDP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 140 +ADDP4 +INDIRI4 +ASGNI4 +line 1594 +;1593: // so corpses can also reference the proper config +;1594: s->eFlags = ps->eFlags; +ADDRFP4 4 +INDIRP4 +CNSTI4 8 +ADDP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 104 +ADDP4 +INDIRI4 +ASGNI4 +line 1595 +;1595: if ( ps->stats[STAT_HEALTH] <= 0 ) { +ADDRFP4 0 +INDIRP4 +CNSTI4 184 +ADDP4 +INDIRI4 +CNSTI4 0 +GTI4 $457 +line 1596 +;1596: s->eFlags |= EF_DEAD; +ADDRLP4 8 +ADDRFP4 4 +INDIRP4 +CNSTI4 8 +ADDP4 +ASGNP4 +ADDRLP4 8 +INDIRP4 +ADDRLP4 8 +INDIRP4 +INDIRI4 +CNSTI4 1 +BORI4 +ASGNI4 +line 1597 +;1597: } else { +ADDRGP4 $458 +JUMPV +LABELV $457 +line 1598 +;1598: s->eFlags &= ~EF_DEAD; +ADDRLP4 8 +ADDRFP4 4 +INDIRP4 +CNSTI4 8 +ADDP4 +ASGNP4 +ADDRLP4 8 +INDIRP4 +ADDRLP4 8 +INDIRP4 +INDIRI4 +CNSTI4 -2 +BANDI4 +ASGNI4 +line 1599 +;1599: } +LABELV $458 +line 1601 +;1600: +;1601: if ( ps->externalEvent ) { +ADDRFP4 0 +INDIRP4 +CNSTI4 128 +ADDP4 +INDIRI4 +CNSTI4 0 +EQI4 $459 +line 1602 +;1602: s->event = ps->externalEvent; +ADDRFP4 4 +INDIRP4 +CNSTI4 180 +ADDP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 128 +ADDP4 +INDIRI4 +ASGNI4 +line 1603 +;1603: s->eventParm = ps->externalEventParm; +ADDRFP4 4 +INDIRP4 +CNSTI4 184 +ADDP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 132 +ADDP4 +INDIRI4 +ASGNI4 +line 1604 +;1604: } else if ( ps->entityEventSequence < ps->eventSequence ) { +ADDRGP4 $460 +JUMPV +LABELV $459 +ADDRLP4 8 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 8 +INDIRP4 +CNSTI4 464 +ADDP4 +INDIRI4 +ADDRLP4 8 +INDIRP4 +CNSTI4 108 +ADDP4 +INDIRI4 +GEI4 $461 +line 1607 +;1605: int seq; +;1606: +;1607: if ( ps->entityEventSequence < ps->eventSequence - MAX_PS_EVENTS) { +ADDRLP4 16 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 16 +INDIRP4 +CNSTI4 464 +ADDP4 +INDIRI4 +ADDRLP4 16 +INDIRP4 +CNSTI4 108 +ADDP4 +INDIRI4 +CNSTI4 2 +SUBI4 +GEI4 $463 +line 1608 +;1608: ps->entityEventSequence = ps->eventSequence - MAX_PS_EVENTS; +ADDRLP4 20 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 20 +INDIRP4 +CNSTI4 464 +ADDP4 +ADDRLP4 20 +INDIRP4 +CNSTI4 108 +ADDP4 +INDIRI4 +CNSTI4 2 +SUBI4 +ASGNI4 +line 1609 +;1609: } +LABELV $463 +line 1610 +;1610: seq = ps->entityEventSequence & (MAX_PS_EVENTS-1); +ADDRLP4 12 +ADDRFP4 0 +INDIRP4 +CNSTI4 464 +ADDP4 +INDIRI4 +CNSTI4 1 +BANDI4 +ASGNI4 +line 1611 +;1611: s->event = ps->events[ seq ] | ( ( ps->entityEventSequence & 3 ) << 8 ); +ADDRLP4 20 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRFP4 4 +INDIRP4 +CNSTI4 180 +ADDP4 +ADDRLP4 12 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRLP4 20 +INDIRP4 +CNSTI4 112 +ADDP4 +ADDP4 +INDIRI4 +ADDRLP4 20 +INDIRP4 +CNSTI4 464 +ADDP4 +INDIRI4 +CNSTI4 3 +BANDI4 +CNSTI4 8 +LSHI4 +BORI4 +ASGNI4 +line 1612 +;1612: s->eventParm = ps->eventParms[ seq ]; +ADDRFP4 4 +INDIRP4 +CNSTI4 184 +ADDP4 +ADDRLP4 12 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 120 +ADDP4 +ADDP4 +INDIRI4 +ASGNI4 +line 1613 +;1613: ps->entityEventSequence++; +ADDRLP4 24 +ADDRFP4 0 +INDIRP4 +CNSTI4 464 +ADDP4 +ASGNP4 +ADDRLP4 24 +INDIRP4 +ADDRLP4 24 +INDIRP4 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 1614 +;1614: } +LABELV $461 +LABELV $460 +line 1616 +;1615: +;1616: s->weapon = ps->weapon; +ADDRFP4 4 +INDIRP4 +CNSTI4 192 +ADDP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 144 +ADDP4 +INDIRI4 +ASGNI4 +line 1617 +;1617: s->groundEntityNum = ps->groundEntityNum; +ADDRFP4 4 +INDIRP4 +CNSTI4 148 +ADDP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 68 +ADDP4 +INDIRI4 +ASGNI4 +line 1619 +;1618: +;1619: s->powerups = 0; +ADDRFP4 4 +INDIRP4 +CNSTI4 188 +ADDP4 +CNSTI4 0 +ASGNI4 +line 1620 +;1620: for ( i = 0 ; i < MAX_POWERUPS ; i++ ) { +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +LABELV $465 +line 1621 +;1621: if ( ps->powerups[ i ] ) { +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 312 +ADDP4 +ADDP4 +INDIRI4 +CNSTI4 0 +EQI4 $469 +line 1622 +;1622: s->powerups |= 1 << i; +ADDRLP4 12 +ADDRFP4 4 +INDIRP4 +CNSTI4 188 +ADDP4 +ASGNP4 +ADDRLP4 12 +INDIRP4 +ADDRLP4 12 +INDIRP4 +INDIRI4 +CNSTI4 1 +ADDRLP4 0 +INDIRI4 +LSHI4 +BORI4 +ASGNI4 +line 1623 +;1623: } +LABELV $469 +line 1624 +;1624: } +LABELV $466 +line 1620 +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +ADDRLP4 0 +INDIRI4 +CNSTI4 16 +LTI4 $465 +line 1626 +;1625: +;1626: s->loopSound = ps->loopSound; +ADDRFP4 4 +INDIRP4 +CNSTI4 156 +ADDP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 444 +ADDP4 +INDIRI4 +ASGNI4 +line 1627 +;1627: s->generic1 = ps->generic1; +ADDRFP4 4 +INDIRP4 +CNSTI4 204 +ADDP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 440 +ADDP4 +INDIRI4 +ASGNI4 +line 1628 +;1628:} +LABELV $447 +endproc BG_PlayerStateToEntityStateExtraPolate 28 0 +import trap_Cvar_VariableStringBuffer +import Pmove +import PM_UpdateViewAngles +import Com_Printf +import Com_Error +import Info_NextPair +import Info_Validate +import Info_SetValueForKey_Big +import Info_SetValueForKey +import Info_RemoveKey_big +import Info_RemoveKey +import Info_ValueForKey +import va +import Q_CleanStr +import Q_PrintStrlen +import Q_strcat +import Q_strncpyz +import Q_strrchr +import Q_strupr +import Q_strlwr +import Q_stricmpn +import Q_strncmp +import Q_stricmp +import Q_isalpha +import Q_isupper +import Q_islower +import Q_isprint +import Com_sprintf +import Parse3DMatrix +import Parse2DMatrix +import Parse1DMatrix +import SkipRestOfLine +import SkipBracedSection +import COM_MatchToken +import COM_ParseWarning +import COM_ParseError +import COM_Compress +import COM_ParseExt +import COM_Parse +import COM_GetCurrentParseLine +import COM_BeginParseSession +import COM_DefaultExtension +import COM_StripExtension +import COM_SkipPath +import Com_Clamp +import PerpendicularVector +import AngleVectors +import MatrixMultiply +import MakeNormalVectors +import RotateAroundDirection +import RotatePointAroundVector +import ProjectPointOnPlane +import PlaneFromPoints +import AngleDelta +import AngleNormalize180 +import AngleNormalize360 +import AnglesSubtract +import AngleSubtract +import LerpAngle +import AngleMod +import BoxOnPlaneSide +import SetPlaneSignbits +import AxisCopy +import AxisClear +import AnglesToAxis +import vectoangles +import Q_crandom +import Q_random +import Q_rand +import Q_acos +import Q_log2 +import VectorRotate +import Vector4Scale +import VectorNormalize2 +import VectorNormalize +import CrossProduct +import VectorInverse +import VectorNormalizeFast +import DistanceSquared +import Distance +import VectorLengthSquared +import VectorLength +import VectorCompare +import AddPointToBounds +import ClearBounds +import RadiusFromBounds +import NormalizeColor +import ColorBytes4 +import ColorBytes3 +import _VectorMA +import _VectorScale +import _VectorCopy +import _VectorAdd +import _VectorSubtract +import _DotProduct +import ByteToDir +import DirToByte +import ClampShort +import ClampChar +import Q_rsqrt +import Q_fabs +import axisDefault +import vec3_origin +import g_color_table +import colorDkGrey +import colorMdGrey +import colorLtGrey +import colorWhite +import colorCyan +import colorMagenta +import colorYellow +import colorBlue +import colorGreen +import colorRed +import colorBlack +import bytedirs +import Com_Memcpy +import Com_Memset +import Hunk_Alloc +import FloatSwap +import LongSwap +import ShortSwap +import acos +import fabs +import abs +import tan +import atan2 +import cos +import sin +import sqrt +import floor +import ceil +import memcpy +import memset +import memmove +import sscanf +import vsprintf +import _atoi +import atoi +import _atof +import atof +import toupper +import tolower +import strncpy +import strstr +import strchr +import strcmp +import strcpy +import strcat +import strlen +import rand +import srand +import qsort +lit +align 1 +LABELV $414 +byte 1 69 +byte 1 86 +byte 1 95 +byte 1 84 +byte 1 65 +byte 1 85 +byte 1 78 +byte 1 84 +byte 1 0 +align 1 +LABELV $413 +byte 1 69 +byte 1 86 +byte 1 95 +byte 1 83 +byte 1 84 +byte 1 79 +byte 1 80 +byte 1 76 +byte 1 79 +byte 1 79 +byte 1 80 +byte 1 73 +byte 1 78 +byte 1 71 +byte 1 83 +byte 1 79 +byte 1 85 +byte 1 78 +byte 1 68 +byte 1 0 +align 1 +LABELV $412 +byte 1 69 +byte 1 86 +byte 1 95 +byte 1 68 +byte 1 69 +byte 1 66 +byte 1 85 +byte 1 71 +byte 1 95 +byte 1 76 +byte 1 73 +byte 1 78 +byte 1 69 +byte 1 0 +align 1 +LABELV $411 +byte 1 69 +byte 1 86 +byte 1 95 +byte 1 76 +byte 1 73 +byte 1 71 +byte 1 72 +byte 1 84 +byte 1 78 +byte 1 73 +byte 1 78 +byte 1 71 +byte 1 66 +byte 1 79 +byte 1 76 +byte 1 84 +byte 1 0 +align 1 +LABELV $410 +byte 1 69 +byte 1 86 +byte 1 95 +byte 1 74 +byte 1 85 +byte 1 73 +byte 1 67 +byte 1 69 +byte 1 68 +byte 1 0 +align 1 +LABELV $409 +byte 1 69 +byte 1 86 +byte 1 95 +byte 1 73 +byte 1 78 +byte 1 86 +byte 1 85 +byte 1 76 +byte 1 95 +byte 1 73 +byte 1 77 +byte 1 80 +byte 1 65 +byte 1 67 +byte 1 84 +byte 1 0 +align 1 +LABELV $408 +byte 1 69 +byte 1 86 +byte 1 95 +byte 1 79 +byte 1 66 +byte 1 69 +byte 1 76 +byte 1 73 +byte 1 83 +byte 1 75 +byte 1 69 +byte 1 88 +byte 1 80 +byte 1 76 +byte 1 79 +byte 1 68 +byte 1 69 +byte 1 0 +align 1 +LABELV $407 +byte 1 69 +byte 1 86 +byte 1 95 +byte 1 75 +byte 1 65 +byte 1 77 +byte 1 73 +byte 1 75 +byte 1 65 +byte 1 90 +byte 1 69 +byte 1 0 +align 1 +LABELV $406 +byte 1 69 +byte 1 86 +byte 1 95 +byte 1 80 +byte 1 82 +byte 1 79 +byte 1 88 +byte 1 73 +byte 1 77 +byte 1 73 +byte 1 84 +byte 1 89 +byte 1 95 +byte 1 77 +byte 1 73 +byte 1 78 +byte 1 69 +byte 1 95 +byte 1 84 +byte 1 82 +byte 1 73 +byte 1 71 +byte 1 71 +byte 1 69 +byte 1 82 +byte 1 0 +align 1 +LABELV $405 +byte 1 69 +byte 1 86 +byte 1 95 +byte 1 80 +byte 1 82 +byte 1 79 +byte 1 88 +byte 1 73 +byte 1 77 +byte 1 73 +byte 1 84 +byte 1 89 +byte 1 95 +byte 1 77 +byte 1 73 +byte 1 78 +byte 1 69 +byte 1 95 +byte 1 83 +byte 1 84 +byte 1 73 +byte 1 67 +byte 1 75 +byte 1 0 +align 1 +LABELV $404 +byte 1 69 +byte 1 86 +byte 1 95 +byte 1 83 +byte 1 67 +byte 1 79 +byte 1 82 +byte 1 69 +byte 1 80 +byte 1 76 +byte 1 85 +byte 1 77 +byte 1 0 +align 1 +LABELV $403 +byte 1 69 +byte 1 86 +byte 1 95 +byte 1 66 +byte 1 82 +byte 1 69 +byte 1 65 +byte 1 75 +byte 1 95 +byte 1 71 +byte 1 76 +byte 1 65 +byte 1 83 +byte 1 83 +byte 1 51 +byte 1 0 +align 1 +LABELV $402 +byte 1 69 +byte 1 86 +byte 1 95 +byte 1 66 +byte 1 82 +byte 1 69 +byte 1 65 +byte 1 75 +byte 1 95 +byte 1 71 +byte 1 76 +byte 1 65 +byte 1 83 +byte 1 83 +byte 1 50 +byte 1 0 +align 1 +LABELV $401 +byte 1 69 +byte 1 86 +byte 1 95 +byte 1 66 +byte 1 82 +byte 1 69 +byte 1 65 +byte 1 75 +byte 1 95 +byte 1 71 +byte 1 76 +byte 1 65 +byte 1 83 +byte 1 83 +byte 1 49 +byte 1 0 +align 1 +LABELV $400 +byte 1 69 +byte 1 86 +byte 1 95 +byte 1 71 +byte 1 73 +byte 1 66 +byte 1 95 +byte 1 80 +byte 1 76 +byte 1 65 +byte 1 89 +byte 1 69 +byte 1 82 +byte 1 0 +align 1 +LABELV $399 +byte 1 69 +byte 1 86 +byte 1 95 +byte 1 80 +byte 1 79 +byte 1 87 +byte 1 69 +byte 1 82 +byte 1 85 +byte 1 80 +byte 1 95 +byte 1 82 +byte 1 69 +byte 1 71 +byte 1 69 +byte 1 78 +byte 1 0 +align 1 +LABELV $398 +byte 1 69 +byte 1 86 +byte 1 95 +byte 1 80 +byte 1 79 +byte 1 87 +byte 1 69 +byte 1 82 +byte 1 85 +byte 1 80 +byte 1 95 +byte 1 66 +byte 1 65 +byte 1 84 +byte 1 84 +byte 1 76 +byte 1 69 +byte 1 83 +byte 1 85 +byte 1 73 +byte 1 84 +byte 1 0 +align 1 +LABELV $397 +byte 1 69 +byte 1 86 +byte 1 95 +byte 1 80 +byte 1 79 +byte 1 87 +byte 1 69 +byte 1 82 +byte 1 85 +byte 1 80 +byte 1 95 +byte 1 81 +byte 1 85 +byte 1 65 +byte 1 68 +byte 1 0 +align 1 +LABELV $396 +byte 1 69 +byte 1 86 +byte 1 95 +byte 1 79 +byte 1 66 +byte 1 73 +byte 1 84 +byte 1 85 +byte 1 65 +byte 1 82 +byte 1 89 +byte 1 95 +byte 1 76 +byte 1 69 +byte 1 71 +byte 1 83 +byte 1 0 +align 1 +LABELV $395 +byte 1 69 +byte 1 86 +byte 1 95 +byte 1 79 +byte 1 66 +byte 1 73 +byte 1 84 +byte 1 85 +byte 1 65 +byte 1 82 +byte 1 89 +byte 1 95 +byte 1 83 +byte 1 84 +byte 1 79 +byte 1 77 +byte 1 65 +byte 1 67 +byte 1 72 +byte 1 0 +align 1 +LABELV $394 +byte 1 69 +byte 1 86 +byte 1 95 +byte 1 79 +byte 1 66 +byte 1 73 +byte 1 84 +byte 1 85 +byte 1 65 +byte 1 82 +byte 1 89 +byte 1 95 +byte 1 67 +byte 1 72 +byte 1 69 +byte 1 83 +byte 1 84 +byte 1 0 +align 1 +LABELV $393 +byte 1 69 +byte 1 86 +byte 1 95 +byte 1 79 +byte 1 66 +byte 1 73 +byte 1 84 +byte 1 85 +byte 1 65 +byte 1 82 +byte 1 89 +byte 1 95 +byte 1 72 +byte 1 69 +byte 1 65 +byte 1 68 +byte 1 0 +align 1 +LABELV $392 +byte 1 69 +byte 1 86 +byte 1 95 +byte 1 79 +byte 1 66 +byte 1 73 +byte 1 84 +byte 1 85 +byte 1 65 +byte 1 82 +byte 1 89 +byte 1 0 +align 1 +LABELV $391 +byte 1 69 +byte 1 86 +byte 1 95 +byte 1 68 +byte 1 69 +byte 1 65 +byte 1 84 +byte 1 72 +byte 1 51 +byte 1 0 +align 1 +LABELV $390 +byte 1 69 +byte 1 86 +byte 1 95 +byte 1 68 +byte 1 69 +byte 1 65 +byte 1 84 +byte 1 72 +byte 1 50 +byte 1 0 +align 1 +LABELV $389 +byte 1 69 +byte 1 86 +byte 1 95 +byte 1 68 +byte 1 69 +byte 1 65 +byte 1 84 +byte 1 72 +byte 1 49 +byte 1 0 +align 1 +LABELV $388 +byte 1 69 +byte 1 86 +byte 1 95 +byte 1 80 +byte 1 65 +byte 1 73 +byte 1 78 +byte 1 0 +align 1 +LABELV $387 +byte 1 69 +byte 1 86 +byte 1 95 +byte 1 72 +byte 1 69 +byte 1 65 +byte 1 68 +byte 1 83 +byte 1 72 +byte 1 79 +byte 1 84 +byte 1 0 +align 1 +LABELV $386 +byte 1 69 +byte 1 86 +byte 1 95 +byte 1 66 +byte 1 85 +byte 1 76 +byte 1 76 +byte 1 69 +byte 1 84 +byte 1 0 +align 1 +LABELV $385 +byte 1 69 +byte 1 86 +byte 1 95 +byte 1 72 +byte 1 65 +byte 1 78 +byte 1 68 +byte 1 67 +byte 1 65 +byte 1 78 +byte 1 78 +byte 1 79 +byte 1 78 +byte 1 0 +align 1 +LABELV $384 +byte 1 69 +byte 1 86 +byte 1 95 +byte 1 83 +byte 1 72 +byte 1 79 +byte 1 84 +byte 1 71 +byte 1 85 +byte 1 78 +byte 1 0 +align 1 +LABELV $383 +byte 1 69 +byte 1 86 +byte 1 95 +byte 1 82 +byte 1 65 +byte 1 73 +byte 1 76 +byte 1 84 +byte 1 82 +byte 1 65 +byte 1 73 +byte 1 76 +byte 1 0 +align 1 +LABELV $382 +byte 1 69 +byte 1 86 +byte 1 95 +byte 1 75 +byte 1 78 +byte 1 73 +byte 1 70 +byte 1 69 +byte 1 95 +byte 1 77 +byte 1 73 +byte 1 83 +byte 1 83 +byte 1 0 +align 1 +LABELV $381 +byte 1 69 +byte 1 86 +byte 1 95 +byte 1 77 +byte 1 73 +byte 1 83 +byte 1 83 +byte 1 73 +byte 1 76 +byte 1 69 +byte 1 95 +byte 1 77 +byte 1 73 +byte 1 83 +byte 1 83 +byte 1 95 +byte 1 77 +byte 1 69 +byte 1 84 +byte 1 65 +byte 1 76 +byte 1 0 +align 1 +LABELV $380 +byte 1 69 +byte 1 86 +byte 1 95 +byte 1 77 +byte 1 73 +byte 1 83 +byte 1 83 +byte 1 73 +byte 1 76 +byte 1 69 +byte 1 95 +byte 1 77 +byte 1 73 +byte 1 83 +byte 1 83 +byte 1 0 +align 1 +LABELV $379 +byte 1 69 +byte 1 86 +byte 1 95 +byte 1 77 +byte 1 73 +byte 1 83 +byte 1 83 +byte 1 73 +byte 1 76 +byte 1 69 +byte 1 95 +byte 1 72 +byte 1 73 +byte 1 84 +byte 1 0 +align 1 +LABELV $378 +byte 1 69 +byte 1 86 +byte 1 95 +byte 1 69 +byte 1 74 +byte 1 69 +byte 1 67 +byte 1 84 +byte 1 66 +byte 1 76 +byte 1 79 +byte 1 79 +byte 1 68 +byte 1 0 +align 1 +LABELV $377 +byte 1 69 +byte 1 86 +byte 1 95 +byte 1 74 +byte 1 85 +byte 1 77 +byte 1 80 +byte 1 75 +byte 1 73 +byte 1 67 +byte 1 75 +byte 1 0 +align 1 +LABELV $376 +byte 1 69 +byte 1 86 +byte 1 95 +byte 1 83 +byte 1 83 +byte 1 71 +byte 1 51 +byte 1 48 +byte 1 48 +byte 1 48 +byte 1 95 +byte 1 72 +byte 1 73 +byte 1 84 +byte 1 95 +byte 1 70 +byte 1 76 +byte 1 69 +byte 1 83 +byte 1 72 +byte 1 0 +align 1 +LABELV $375 +byte 1 69 +byte 1 86 +byte 1 95 +byte 1 66 +byte 1 85 +byte 1 76 +byte 1 76 +byte 1 69 +byte 1 84 +byte 1 95 +byte 1 72 +byte 1 73 +byte 1 84 +byte 1 95 +byte 1 71 +byte 1 76 +byte 1 65 +byte 1 83 +byte 1 83 +byte 1 0 +align 1 +LABELV $374 +byte 1 69 +byte 1 86 +byte 1 95 +byte 1 66 +byte 1 85 +byte 1 76 +byte 1 76 +byte 1 69 +byte 1 84 +byte 1 95 +byte 1 72 +byte 1 73 +byte 1 84 +byte 1 95 +byte 1 75 +byte 1 69 +byte 1 86 +byte 1 76 +byte 1 65 +byte 1 82 +byte 1 0 +align 1 +LABELV $373 +byte 1 69 +byte 1 86 +byte 1 95 +byte 1 66 +byte 1 85 +byte 1 76 +byte 1 76 +byte 1 69 +byte 1 84 +byte 1 95 +byte 1 72 +byte 1 73 +byte 1 84 +byte 1 95 +byte 1 77 +byte 1 69 +byte 1 84 +byte 1 65 +byte 1 76 +byte 1 0 +align 1 +LABELV $372 +byte 1 69 +byte 1 86 +byte 1 95 +byte 1 66 +byte 1 85 +byte 1 76 +byte 1 76 +byte 1 69 +byte 1 84 +byte 1 95 +byte 1 72 +byte 1 73 +byte 1 84 +byte 1 95 +byte 1 87 +byte 1 65 +byte 1 76 +byte 1 76 +byte 1 0 +align 1 +LABELV $371 +byte 1 69 +byte 1 86 +byte 1 95 +byte 1 66 +byte 1 85 +byte 1 76 +byte 1 76 +byte 1 69 +byte 1 84 +byte 1 95 +byte 1 72 +byte 1 73 +byte 1 84 +byte 1 95 +byte 1 70 +byte 1 76 +byte 1 69 +byte 1 83 +byte 1 72 +byte 1 0 +align 1 +LABELV $370 +byte 1 69 +byte 1 86 +byte 1 95 +byte 1 68 +byte 1 77 +byte 1 82 +byte 1 69 +byte 1 87 +byte 1 65 +byte 1 82 +byte 1 68 +byte 1 0 +align 1 +LABELV $369 +byte 1 69 +byte 1 86 +byte 1 95 +byte 1 82 +byte 1 81 +byte 1 51 +byte 1 95 +byte 1 83 +byte 1 79 +byte 1 85 +byte 1 78 +byte 1 68 +byte 1 0 +align 1 +LABELV $368 +byte 1 69 +byte 1 86 +byte 1 95 +byte 1 71 +byte 1 76 +byte 1 79 +byte 1 66 +byte 1 65 +byte 1 76 +byte 1 95 +byte 1 84 +byte 1 69 +byte 1 65 +byte 1 77 +byte 1 95 +byte 1 83 +byte 1 79 +byte 1 85 +byte 1 78 +byte 1 68 +byte 1 0 +align 1 +LABELV $367 +byte 1 69 +byte 1 86 +byte 1 95 +byte 1 71 +byte 1 76 +byte 1 79 +byte 1 66 +byte 1 65 +byte 1 76 +byte 1 95 +byte 1 83 +byte 1 79 +byte 1 85 +byte 1 78 +byte 1 68 +byte 1 0 +align 1 +LABELV $366 +byte 1 69 +byte 1 86 +byte 1 95 +byte 1 71 +byte 1 69 +byte 1 78 +byte 1 69 +byte 1 82 +byte 1 65 +byte 1 76 +byte 1 95 +byte 1 83 +byte 1 79 +byte 1 85 +byte 1 78 +byte 1 68 +byte 1 0 +align 1 +LABELV $365 +byte 1 69 +byte 1 86 +byte 1 95 +byte 1 71 +byte 1 82 +byte 1 69 +byte 1 78 +byte 1 65 +byte 1 68 +byte 1 69 +byte 1 95 +byte 1 66 +byte 1 79 +byte 1 85 +byte 1 78 +byte 1 67 +byte 1 69 +byte 1 0 +align 1 +LABELV $364 +byte 1 69 +byte 1 86 +byte 1 95 +byte 1 80 +byte 1 76 +byte 1 65 +byte 1 89 +byte 1 69 +byte 1 82 +byte 1 95 +byte 1 84 +byte 1 69 +byte 1 76 +byte 1 69 +byte 1 80 +byte 1 79 +byte 1 82 +byte 1 84 +byte 1 95 +byte 1 79 +byte 1 85 +byte 1 84 +byte 1 0 +align 1 +LABELV $363 +byte 1 69 +byte 1 86 +byte 1 95 +byte 1 80 +byte 1 76 +byte 1 65 +byte 1 89 +byte 1 69 +byte 1 82 +byte 1 95 +byte 1 84 +byte 1 69 +byte 1 76 +byte 1 69 +byte 1 80 +byte 1 79 +byte 1 82 +byte 1 84 +byte 1 95 +byte 1 73 +byte 1 78 +byte 1 0 +align 1 +LABELV $362 +byte 1 69 +byte 1 86 +byte 1 95 +byte 1 73 +byte 1 84 +byte 1 69 +byte 1 77 +byte 1 95 +byte 1 80 +byte 1 79 +byte 1 80 +byte 1 0 +align 1 +LABELV $361 +byte 1 69 +byte 1 86 +byte 1 95 +byte 1 73 +byte 1 84 +byte 1 69 +byte 1 77 +byte 1 95 +byte 1 82 +byte 1 69 +byte 1 83 +byte 1 80 +byte 1 65 +byte 1 87 +byte 1 78 +byte 1 0 +align 1 +LABELV $360 +byte 1 69 +byte 1 86 +byte 1 95 +byte 1 85 +byte 1 83 +byte 1 69 +byte 1 95 +byte 1 73 +byte 1 84 +byte 1 69 +byte 1 77 +byte 1 49 +byte 1 53 +byte 1 0 +align 1 +LABELV $359 +byte 1 69 +byte 1 86 +byte 1 95 +byte 1 85 +byte 1 83 +byte 1 69 +byte 1 95 +byte 1 73 +byte 1 84 +byte 1 69 +byte 1 77 +byte 1 49 +byte 1 52 +byte 1 0 +align 1 +LABELV $358 +byte 1 69 +byte 1 86 +byte 1 95 +byte 1 85 +byte 1 83 +byte 1 69 +byte 1 95 +byte 1 73 +byte 1 84 +byte 1 69 +byte 1 77 +byte 1 49 +byte 1 51 +byte 1 0 +align 1 +LABELV $357 +byte 1 69 +byte 1 86 +byte 1 95 +byte 1 85 +byte 1 83 +byte 1 69 +byte 1 95 +byte 1 73 +byte 1 84 +byte 1 69 +byte 1 77 +byte 1 49 +byte 1 50 +byte 1 0 +align 1 +LABELV $356 +byte 1 69 +byte 1 86 +byte 1 95 +byte 1 85 +byte 1 83 +byte 1 69 +byte 1 95 +byte 1 73 +byte 1 84 +byte 1 69 +byte 1 77 +byte 1 49 +byte 1 49 +byte 1 0 +align 1 +LABELV $355 +byte 1 69 +byte 1 86 +byte 1 95 +byte 1 85 +byte 1 83 +byte 1 69 +byte 1 95 +byte 1 73 +byte 1 84 +byte 1 69 +byte 1 77 +byte 1 49 +byte 1 48 +byte 1 0 +align 1 +LABELV $354 +byte 1 69 +byte 1 86 +byte 1 95 +byte 1 85 +byte 1 83 +byte 1 69 +byte 1 95 +byte 1 73 +byte 1 84 +byte 1 69 +byte 1 77 +byte 1 57 +byte 1 0 +align 1 +LABELV $353 +byte 1 69 +byte 1 86 +byte 1 95 +byte 1 85 +byte 1 83 +byte 1 69 +byte 1 95 +byte 1 73 +byte 1 84 +byte 1 69 +byte 1 77 +byte 1 56 +byte 1 0 +align 1 +LABELV $352 +byte 1 69 +byte 1 86 +byte 1 95 +byte 1 85 +byte 1 83 +byte 1 69 +byte 1 95 +byte 1 73 +byte 1 84 +byte 1 69 +byte 1 77 +byte 1 55 +byte 1 0 +align 1 +LABELV $351 +byte 1 69 +byte 1 86 +byte 1 95 +byte 1 85 +byte 1 83 +byte 1 69 +byte 1 95 +byte 1 73 +byte 1 84 +byte 1 69 +byte 1 77 +byte 1 54 +byte 1 0 +align 1 +LABELV $350 +byte 1 69 +byte 1 86 +byte 1 95 +byte 1 85 +byte 1 83 +byte 1 69 +byte 1 95 +byte 1 73 +byte 1 84 +byte 1 69 +byte 1 77 +byte 1 53 +byte 1 0 +align 1 +LABELV $349 +byte 1 69 +byte 1 86 +byte 1 95 +byte 1 85 +byte 1 83 +byte 1 69 +byte 1 95 +byte 1 73 +byte 1 84 +byte 1 69 +byte 1 77 +byte 1 52 +byte 1 0 +align 1 +LABELV $348 +byte 1 69 +byte 1 86 +byte 1 95 +byte 1 85 +byte 1 83 +byte 1 69 +byte 1 95 +byte 1 73 +byte 1 84 +byte 1 69 +byte 1 77 +byte 1 51 +byte 1 0 +align 1 +LABELV $347 +byte 1 69 +byte 1 86 +byte 1 95 +byte 1 85 +byte 1 83 +byte 1 69 +byte 1 95 +byte 1 73 +byte 1 84 +byte 1 69 +byte 1 77 +byte 1 50 +byte 1 0 +align 1 +LABELV $346 +byte 1 69 +byte 1 86 +byte 1 95 +byte 1 85 +byte 1 83 +byte 1 69 +byte 1 95 +byte 1 73 +byte 1 84 +byte 1 69 +byte 1 77 +byte 1 49 +byte 1 0 +align 1 +LABELV $345 +byte 1 69 +byte 1 86 +byte 1 95 +byte 1 85 +byte 1 83 +byte 1 69 +byte 1 95 +byte 1 73 +byte 1 84 +byte 1 69 +byte 1 77 +byte 1 48 +byte 1 0 +align 1 +LABELV $344 +byte 1 69 +byte 1 86 +byte 1 95 +byte 1 82 +byte 1 69 +byte 1 76 +byte 1 79 +byte 1 65 +byte 1 68 +byte 1 95 +byte 1 87 +byte 1 69 +byte 1 65 +byte 1 80 +byte 1 79 +byte 1 78 +byte 1 50 +byte 1 0 +align 1 +LABELV $343 +byte 1 69 +byte 1 86 +byte 1 95 +byte 1 82 +byte 1 69 +byte 1 76 +byte 1 79 +byte 1 65 +byte 1 68 +byte 1 95 +byte 1 87 +byte 1 69 +byte 1 65 +byte 1 80 +byte 1 79 +byte 1 78 +byte 1 49 +byte 1 0 +align 1 +LABELV $342 +byte 1 69 +byte 1 86 +byte 1 95 +byte 1 82 +byte 1 69 +byte 1 76 +byte 1 79 +byte 1 65 +byte 1 68 +byte 1 95 +byte 1 87 +byte 1 69 +byte 1 65 +byte 1 80 +byte 1 79 +byte 1 78 +byte 1 48 +byte 1 0 +align 1 +LABELV $341 +byte 1 69 +byte 1 86 +byte 1 95 +byte 1 70 +byte 1 73 +byte 1 82 +byte 1 69 +byte 1 95 +byte 1 87 +byte 1 69 +byte 1 65 +byte 1 80 +byte 1 79 +byte 1 78 +byte 1 0 +align 1 +LABELV $340 +byte 1 69 +byte 1 86 +byte 1 95 +byte 1 67 +byte 1 72 +byte 1 65 +byte 1 78 +byte 1 71 +byte 1 69 +byte 1 95 +byte 1 87 +byte 1 69 +byte 1 65 +byte 1 80 +byte 1 79 +byte 1 78 +byte 1 0 +align 1 +LABELV $339 +byte 1 69 +byte 1 86 +byte 1 95 +byte 1 78 +byte 1 79 +byte 1 65 +byte 1 77 +byte 1 77 +byte 1 79 +byte 1 0 +align 1 +LABELV $338 +byte 1 69 +byte 1 86 +byte 1 95 +byte 1 71 +byte 1 76 +byte 1 79 +byte 1 66 +byte 1 65 +byte 1 76 +byte 1 95 +byte 1 73 +byte 1 84 +byte 1 69 +byte 1 77 +byte 1 95 +byte 1 80 +byte 1 73 +byte 1 67 +byte 1 75 +byte 1 85 +byte 1 80 +byte 1 0 +align 1 +LABELV $337 +byte 1 69 +byte 1 86 +byte 1 95 +byte 1 73 +byte 1 84 +byte 1 69 +byte 1 77 +byte 1 95 +byte 1 80 +byte 1 73 +byte 1 67 +byte 1 75 +byte 1 85 +byte 1 80 +byte 1 0 +align 1 +LABELV $336 +byte 1 69 +byte 1 86 +byte 1 95 +byte 1 87 +byte 1 65 +byte 1 84 +byte 1 69 +byte 1 82 +byte 1 95 +byte 1 67 +byte 1 76 +byte 1 69 +byte 1 65 +byte 1 82 +byte 1 0 +align 1 +LABELV $335 +byte 1 69 +byte 1 86 +byte 1 95 +byte 1 87 +byte 1 65 +byte 1 84 +byte 1 69 +byte 1 82 +byte 1 95 +byte 1 85 +byte 1 78 +byte 1 68 +byte 1 69 +byte 1 82 +byte 1 0 +align 1 +LABELV $334 +byte 1 69 +byte 1 86 +byte 1 95 +byte 1 87 +byte 1 65 +byte 1 84 +byte 1 69 +byte 1 82 +byte 1 95 +byte 1 76 +byte 1 69 +byte 1 65 +byte 1 86 +byte 1 69 +byte 1 0 +align 1 +LABELV $333 +byte 1 69 +byte 1 86 +byte 1 95 +byte 1 87 +byte 1 65 +byte 1 84 +byte 1 69 +byte 1 82 +byte 1 95 +byte 1 84 +byte 1 79 +byte 1 85 +byte 1 67 +byte 1 72 +byte 1 0 +align 1 +LABELV $332 +byte 1 69 +byte 1 86 +byte 1 95 +byte 1 74 +byte 1 85 +byte 1 77 +byte 1 80 +byte 1 0 +align 1 +LABELV $331 +byte 1 69 +byte 1 86 +byte 1 95 +byte 1 74 +byte 1 85 +byte 1 77 +byte 1 80 +byte 1 95 +byte 1 80 +byte 1 65 +byte 1 68 +byte 1 0 +align 1 +LABELV $330 +byte 1 69 +byte 1 86 +byte 1 95 +byte 1 70 +byte 1 65 +byte 1 76 +byte 1 76 +byte 1 95 +byte 1 70 +byte 1 65 +byte 1 82 +byte 1 95 +byte 1 78 +byte 1 79 +byte 1 83 +byte 1 79 +byte 1 85 +byte 1 78 +byte 1 68 +byte 1 0 +align 1 +LABELV $329 +byte 1 69 +byte 1 86 +byte 1 95 +byte 1 70 +byte 1 65 +byte 1 76 +byte 1 76 +byte 1 95 +byte 1 70 +byte 1 65 +byte 1 82 +byte 1 0 +align 1 +LABELV $328 +byte 1 69 +byte 1 86 +byte 1 95 +byte 1 70 +byte 1 65 +byte 1 76 +byte 1 76 +byte 1 95 +byte 1 77 +byte 1 69 +byte 1 68 +byte 1 73 +byte 1 85 +byte 1 77 +byte 1 95 +byte 1 78 +byte 1 79 +byte 1 83 +byte 1 79 +byte 1 85 +byte 1 78 +byte 1 68 +byte 1 0 +align 1 +LABELV $327 +byte 1 69 +byte 1 86 +byte 1 95 +byte 1 70 +byte 1 65 +byte 1 76 +byte 1 76 +byte 1 95 +byte 1 77 +byte 1 69 +byte 1 68 +byte 1 73 +byte 1 85 +byte 1 77 +byte 1 0 +align 1 +LABELV $326 +byte 1 69 +byte 1 86 +byte 1 95 +byte 1 70 +byte 1 65 +byte 1 76 +byte 1 76 +byte 1 95 +byte 1 83 +byte 1 72 +byte 1 79 +byte 1 82 +byte 1 84 +byte 1 95 +byte 1 78 +byte 1 79 +byte 1 83 +byte 1 79 +byte 1 85 +byte 1 78 +byte 1 68 +byte 1 0 +align 1 +LABELV $325 +byte 1 69 +byte 1 86 +byte 1 95 +byte 1 70 +byte 1 65 +byte 1 76 +byte 1 76 +byte 1 95 +byte 1 83 +byte 1 72 +byte 1 79 +byte 1 82 +byte 1 84 +byte 1 0 +align 1 +LABELV $324 +byte 1 69 +byte 1 86 +byte 1 95 +byte 1 83 +byte 1 84 +byte 1 69 +byte 1 80 +byte 1 95 +byte 1 49 +byte 1 54 +byte 1 0 +align 1 +LABELV $323 +byte 1 69 +byte 1 86 +byte 1 95 +byte 1 83 +byte 1 84 +byte 1 69 +byte 1 80 +byte 1 95 +byte 1 49 +byte 1 50 +byte 1 0 +align 1 +LABELV $322 +byte 1 69 +byte 1 86 +byte 1 95 +byte 1 83 +byte 1 84 +byte 1 69 +byte 1 80 +byte 1 95 +byte 1 56 +byte 1 0 +align 1 +LABELV $321 +byte 1 69 +byte 1 86 +byte 1 95 +byte 1 83 +byte 1 84 +byte 1 69 +byte 1 80 +byte 1 95 +byte 1 52 +byte 1 0 +align 1 +LABELV $320 +byte 1 69 +byte 1 86 +byte 1 95 +byte 1 83 +byte 1 87 +byte 1 73 +byte 1 77 +byte 1 0 +align 1 +LABELV $319 +byte 1 69 +byte 1 86 +byte 1 95 +byte 1 70 +byte 1 79 +byte 1 79 +byte 1 84 +byte 1 87 +byte 1 65 +byte 1 68 +byte 1 69 +byte 1 0 +align 1 +LABELV $318 +byte 1 69 +byte 1 86 +byte 1 95 +byte 1 70 +byte 1 79 +byte 1 79 +byte 1 84 +byte 1 83 +byte 1 80 +byte 1 76 +byte 1 65 +byte 1 83 +byte 1 72 +byte 1 0 +align 1 +LABELV $317 +byte 1 69 +byte 1 86 +byte 1 95 +byte 1 70 +byte 1 79 +byte 1 79 +byte 1 84 +byte 1 83 +byte 1 84 +byte 1 69 +byte 1 80 +byte 1 95 +byte 1 77 +byte 1 69 +byte 1 84 +byte 1 65 +byte 1 76 +byte 1 50 +byte 1 0 +align 1 +LABELV $316 +byte 1 69 +byte 1 86 +byte 1 95 +byte 1 70 +byte 1 79 +byte 1 79 +byte 1 84 +byte 1 83 +byte 1 84 +byte 1 69 +byte 1 80 +byte 1 95 +byte 1 67 +byte 1 65 +byte 1 82 +byte 1 80 +byte 1 69 +byte 1 84 +byte 1 0 +align 1 +LABELV $315 +byte 1 69 +byte 1 86 +byte 1 95 +byte 1 70 +byte 1 79 +byte 1 79 +byte 1 84 +byte 1 83 +byte 1 84 +byte 1 69 +byte 1 80 +byte 1 95 +byte 1 87 +byte 1 79 +byte 1 79 +byte 1 68 +byte 1 0 +align 1 +LABELV $314 +byte 1 69 +byte 1 86 +byte 1 95 +byte 1 70 +byte 1 79 +byte 1 79 +byte 1 84 +byte 1 83 +byte 1 84 +byte 1 69 +byte 1 80 +byte 1 95 +byte 1 71 +byte 1 82 +byte 1 65 +byte 1 83 +byte 1 83 +byte 1 0 +align 1 +LABELV $313 +byte 1 69 +byte 1 86 +byte 1 95 +byte 1 70 +byte 1 79 +byte 1 79 +byte 1 84 +byte 1 83 +byte 1 84 +byte 1 69 +byte 1 80 +byte 1 95 +byte 1 77 +byte 1 69 +byte 1 84 +byte 1 65 +byte 1 76 +byte 1 0 +align 1 +LABELV $312 +byte 1 69 +byte 1 86 +byte 1 95 +byte 1 70 +byte 1 79 +byte 1 79 +byte 1 84 +byte 1 83 +byte 1 84 +byte 1 69 +byte 1 80 +byte 1 0 +align 1 +LABELV $311 +byte 1 69 +byte 1 86 +byte 1 95 +byte 1 78 +byte 1 79 +byte 1 78 +byte 1 69 +byte 1 0 +align 1 +LABELV $309 +byte 1 66 +byte 1 71 +byte 1 95 +byte 1 69 +byte 1 118 +byte 1 97 +byte 1 108 +byte 1 117 +byte 1 97 +byte 1 116 +byte 1 101 +byte 1 84 +byte 1 114 +byte 1 97 +byte 1 106 +byte 1 101 +byte 1 99 +byte 1 116 +byte 1 111 +byte 1 114 +byte 1 121 +byte 1 68 +byte 1 101 +byte 1 108 +byte 1 116 +byte 1 97 +byte 1 58 +byte 1 32 +byte 1 117 +byte 1 110 +byte 1 107 +byte 1 110 +byte 1 111 +byte 1 119 +byte 1 110 +byte 1 32 +byte 1 116 +byte 1 114 +byte 1 84 +byte 1 121 +byte 1 112 +byte 1 101 +byte 1 58 +byte 1 32 +byte 1 37 +byte 1 105 +byte 1 0 +align 1 +LABELV $296 +byte 1 66 +byte 1 71 +byte 1 95 +byte 1 69 +byte 1 118 +byte 1 97 +byte 1 108 +byte 1 117 +byte 1 97 +byte 1 116 +byte 1 101 +byte 1 84 +byte 1 114 +byte 1 97 +byte 1 106 +byte 1 101 +byte 1 99 +byte 1 116 +byte 1 111 +byte 1 114 +byte 1 121 +byte 1 58 +byte 1 32 +byte 1 117 +byte 1 110 +byte 1 107 +byte 1 110 +byte 1 111 +byte 1 119 +byte 1 110 +byte 1 32 +byte 1 116 +byte 1 114 +byte 1 84 +byte 1 121 +byte 1 112 +byte 1 101 +byte 1 58 +byte 1 32 +byte 1 37 +byte 1 105 +byte 1 0 +align 1 +LABELV $281 +byte 1 66 +byte 1 71 +byte 1 95 +byte 1 67 +byte 1 97 +byte 1 110 +byte 1 73 +byte 1 116 +byte 1 101 +byte 1 109 +byte 1 66 +byte 1 101 +byte 1 71 +byte 1 114 +byte 1 97 +byte 1 98 +byte 1 98 +byte 1 101 +byte 1 100 +byte 1 58 +byte 1 32 +byte 1 73 +byte 1 84 +byte 1 95 +byte 1 66 +byte 1 65 +byte 1 68 +byte 1 0 +align 1 +LABELV $242 +byte 1 66 +byte 1 71 +byte 1 95 +byte 1 67 +byte 1 97 +byte 1 110 +byte 1 73 +byte 1 116 +byte 1 101 +byte 1 109 +byte 1 66 +byte 1 101 +byte 1 71 +byte 1 114 +byte 1 97 +byte 1 98 +byte 1 98 +byte 1 101 +byte 1 100 +byte 1 58 +byte 1 32 +byte 1 105 +byte 1 110 +byte 1 100 +byte 1 101 +byte 1 120 +byte 1 32 +byte 1 111 +byte 1 117 +byte 1 116 +byte 1 32 +byte 1 111 +byte 1 102 +byte 1 32 +byte 1 114 +byte 1 97 +byte 1 110 +byte 1 103 +byte 1 101 +byte 1 0 +align 1 +LABELV $189 +byte 1 67 +byte 1 111 +byte 1 117 +byte 1 108 +byte 1 100 +byte 1 110 +byte 1 39 +byte 1 116 +byte 1 32 +byte 1 102 +byte 1 105 +byte 1 110 +byte 1 100 +byte 1 32 +byte 1 105 +byte 1 116 +byte 1 101 +byte 1 109 +byte 1 32 +byte 1 102 +byte 1 111 +byte 1 114 +byte 1 32 +byte 1 119 +byte 1 101 +byte 1 97 +byte 1 112 +byte 1 111 +byte 1 110 +byte 1 32 +byte 1 37 +byte 1 105 +byte 1 0 +align 1 +LABELV $180 +byte 1 72 +byte 1 111 +byte 1 108 +byte 1 100 +byte 1 97 +byte 1 98 +byte 1 108 +byte 1 101 +byte 1 73 +byte 1 116 +byte 1 101 +byte 1 109 +byte 1 32 +byte 1 110 +byte 1 111 +byte 1 116 +byte 1 32 +byte 1 102 +byte 1 111 +byte 1 117 +byte 1 110 +byte 1 100 +byte 1 0 +align 1 +LABELV $157 +byte 1 83 +byte 1 116 +byte 1 101 +byte 1 97 +byte 1 108 +byte 1 116 +byte 1 104 +byte 1 32 +byte 1 83 +byte 1 108 +byte 1 105 +byte 1 112 +byte 1 112 +byte 1 101 +byte 1 114 +byte 1 115 +byte 1 0 +align 1 +LABELV $156 +byte 1 105 +byte 1 99 +byte 1 111 +byte 1 110 +byte 1 115 +byte 1 47 +byte 1 105 +byte 1 99 +byte 1 111 +byte 1 110 +byte 1 105 +byte 1 95 +byte 1 115 +byte 1 108 +byte 1 105 +byte 1 112 +byte 1 112 +byte 1 101 +byte 1 114 +byte 1 115 +byte 1 0 +align 1 +LABELV $155 +byte 1 109 +byte 1 111 +byte 1 100 +byte 1 101 +byte 1 108 +byte 1 115 +byte 1 47 +byte 1 105 +byte 1 116 +byte 1 101 +byte 1 109 +byte 1 115 +byte 1 47 +byte 1 115 +byte 1 108 +byte 1 105 +byte 1 112 +byte 1 112 +byte 1 101 +byte 1 114 +byte 1 115 +byte 1 46 +byte 1 109 +byte 1 100 +byte 1 51 +byte 1 0 +align 1 +LABELV $154 +byte 1 115 +byte 1 111 +byte 1 117 +byte 1 110 +byte 1 100 +byte 1 47 +byte 1 105 +byte 1 116 +byte 1 101 +byte 1 109 +byte 1 115 +byte 1 47 +byte 1 115 +byte 1 108 +byte 1 105 +byte 1 112 +byte 1 112 +byte 1 101 +byte 1 114 +byte 1 115 +byte 1 46 +byte 1 119 +byte 1 97 +byte 1 118 +byte 1 0 +align 1 +LABELV $153 +byte 1 105 +byte 1 116 +byte 1 101 +byte 1 109 +byte 1 95 +byte 1 115 +byte 1 108 +byte 1 105 +byte 1 112 +byte 1 112 +byte 1 101 +byte 1 114 +byte 1 115 +byte 1 0 +align 1 +LABELV $152 +byte 1 66 +byte 1 97 +byte 1 110 +byte 1 100 +byte 1 111 +byte 1 108 +byte 1 105 +byte 1 101 +byte 1 114 +byte 1 0 +align 1 +LABELV $151 +byte 1 105 +byte 1 99 +byte 1 111 +byte 1 110 +byte 1 115 +byte 1 47 +byte 1 105 +byte 1 99 +byte 1 111 +byte 1 110 +byte 1 105 +byte 1 95 +byte 1 98 +byte 1 97 +byte 1 110 +byte 1 100 +byte 1 111 +byte 1 108 +byte 1 105 +byte 1 101 +byte 1 114 +byte 1 0 +align 1 +LABELV $150 +byte 1 109 +byte 1 111 +byte 1 100 +byte 1 101 +byte 1 108 +byte 1 115 +byte 1 47 +byte 1 105 +byte 1 116 +byte 1 101 +byte 1 109 +byte 1 115 +byte 1 47 +byte 1 98 +byte 1 97 +byte 1 110 +byte 1 100 +byte 1 111 +byte 1 108 +byte 1 105 +byte 1 101 +byte 1 114 +byte 1 46 +byte 1 109 +byte 1 100 +byte 1 51 +byte 1 0 +align 1 +LABELV $149 +byte 1 115 +byte 1 111 +byte 1 117 +byte 1 110 +byte 1 100 +byte 1 47 +byte 1 105 +byte 1 116 +byte 1 101 +byte 1 109 +byte 1 115 +byte 1 47 +byte 1 98 +byte 1 97 +byte 1 110 +byte 1 100 +byte 1 111 +byte 1 108 +byte 1 105 +byte 1 101 +byte 1 114 +byte 1 46 +byte 1 119 +byte 1 97 +byte 1 118 +byte 1 0 +align 1 +LABELV $148 +byte 1 105 +byte 1 116 +byte 1 101 +byte 1 109 +byte 1 95 +byte 1 98 +byte 1 97 +byte 1 110 +byte 1 100 +byte 1 111 +byte 1 108 +byte 1 105 +byte 1 101 +byte 1 114 +byte 1 0 +align 1 +LABELV $147 +byte 1 76 +byte 1 97 +byte 1 115 +byte 1 101 +byte 1 114 +byte 1 115 +byte 1 105 +byte 1 103 +byte 1 104 +byte 1 116 +byte 1 0 +align 1 +LABELV $146 +byte 1 105 +byte 1 99 +byte 1 111 +byte 1 110 +byte 1 115 +byte 1 47 +byte 1 105 +byte 1 99 +byte 1 111 +byte 1 110 +byte 1 105 +byte 1 95 +byte 1 108 +byte 1 97 +byte 1 115 +byte 1 101 +byte 1 114 +byte 1 0 +align 1 +LABELV $145 +byte 1 109 +byte 1 111 +byte 1 100 +byte 1 101 +byte 1 108 +byte 1 115 +byte 1 47 +byte 1 105 +byte 1 116 +byte 1 101 +byte 1 109 +byte 1 115 +byte 1 47 +byte 1 108 +byte 1 97 +byte 1 115 +byte 1 101 +byte 1 114 +byte 1 46 +byte 1 109 +byte 1 100 +byte 1 51 +byte 1 0 +align 1 +LABELV $144 +byte 1 115 +byte 1 111 +byte 1 117 +byte 1 110 +byte 1 100 +byte 1 47 +byte 1 105 +byte 1 116 +byte 1 101 +byte 1 109 +byte 1 115 +byte 1 47 +byte 1 108 +byte 1 97 +byte 1 115 +byte 1 101 +byte 1 114 +byte 1 46 +byte 1 119 +byte 1 97 +byte 1 118 +byte 1 0 +align 1 +LABELV $143 +byte 1 105 +byte 1 116 +byte 1 101 +byte 1 109 +byte 1 95 +byte 1 108 +byte 1 97 +byte 1 115 +byte 1 101 +byte 1 114 +byte 1 0 +align 1 +LABELV $142 +byte 1 83 +byte 1 105 +byte 1 108 +byte 1 101 +byte 1 110 +byte 1 99 +byte 1 101 +byte 1 114 +byte 1 0 +align 1 +LABELV $141 +byte 1 105 +byte 1 99 +byte 1 111 +byte 1 110 +byte 1 115 +byte 1 47 +byte 1 105 +byte 1 99 +byte 1 111 +byte 1 110 +byte 1 105 +byte 1 95 +byte 1 115 +byte 1 105 +byte 1 108 +byte 1 101 +byte 1 110 +byte 1 99 +byte 1 101 +byte 1 114 +byte 1 0 +align 1 +LABELV $140 +byte 1 109 +byte 1 111 +byte 1 100 +byte 1 101 +byte 1 108 +byte 1 115 +byte 1 47 +byte 1 105 +byte 1 116 +byte 1 101 +byte 1 109 +byte 1 115 +byte 1 47 +byte 1 115 +byte 1 105 +byte 1 108 +byte 1 101 +byte 1 110 +byte 1 99 +byte 1 101 +byte 1 114 +byte 1 46 +byte 1 109 +byte 1 100 +byte 1 51 +byte 1 0 +align 1 +LABELV $139 +byte 1 115 +byte 1 111 +byte 1 117 +byte 1 110 +byte 1 100 +byte 1 47 +byte 1 105 +byte 1 116 +byte 1 101 +byte 1 109 +byte 1 115 +byte 1 47 +byte 1 115 +byte 1 105 +byte 1 108 +byte 1 101 +byte 1 110 +byte 1 99 +byte 1 101 +byte 1 114 +byte 1 46 +byte 1 119 +byte 1 97 +byte 1 118 +byte 1 0 +align 1 +LABELV $138 +byte 1 105 +byte 1 116 +byte 1 101 +byte 1 109 +byte 1 95 +byte 1 115 +byte 1 105 +byte 1 108 +byte 1 101 +byte 1 110 +byte 1 99 +byte 1 101 +byte 1 114 +byte 1 0 +align 1 +LABELV $137 +byte 1 75 +byte 1 101 +byte 1 118 +byte 1 108 +byte 1 97 +byte 1 114 +byte 1 32 +byte 1 86 +byte 1 101 +byte 1 115 +byte 1 116 +byte 1 0 +align 1 +LABELV $136 +byte 1 105 +byte 1 99 +byte 1 111 +byte 1 110 +byte 1 115 +byte 1 47 +byte 1 105 +byte 1 99 +byte 1 111 +byte 1 110 +byte 1 105 +byte 1 95 +byte 1 107 +byte 1 101 +byte 1 118 +byte 1 108 +byte 1 97 +byte 1 114 +byte 1 0 +align 1 +LABELV $135 +byte 1 109 +byte 1 111 +byte 1 100 +byte 1 101 +byte 1 108 +byte 1 115 +byte 1 47 +byte 1 105 +byte 1 116 +byte 1 101 +byte 1 109 +byte 1 115 +byte 1 47 +byte 1 107 +byte 1 101 +byte 1 118 +byte 1 108 +byte 1 97 +byte 1 114 +byte 1 46 +byte 1 109 +byte 1 100 +byte 1 51 +byte 1 0 +align 1 +LABELV $134 +byte 1 115 +byte 1 111 +byte 1 117 +byte 1 110 +byte 1 100 +byte 1 47 +byte 1 105 +byte 1 116 +byte 1 101 +byte 1 109 +byte 1 115 +byte 1 47 +byte 1 107 +byte 1 101 +byte 1 118 +byte 1 108 +byte 1 97 +byte 1 114 +byte 1 46 +byte 1 119 +byte 1 97 +byte 1 118 +byte 1 0 +align 1 +LABELV $133 +byte 1 105 +byte 1 116 +byte 1 101 +byte 1 109 +byte 1 95 +byte 1 107 +byte 1 101 +byte 1 118 +byte 1 108 +byte 1 97 +byte 1 114 +byte 1 0 +align 1 +LABELV $132 +byte 1 66 +byte 1 108 +byte 1 117 +byte 1 101 +byte 1 32 +byte 1 70 +byte 1 108 +byte 1 97 +byte 1 103 +byte 1 0 +align 1 +LABELV $131 +byte 1 105 +byte 1 99 +byte 1 111 +byte 1 110 +byte 1 115 +byte 1 47 +byte 1 105 +byte 1 99 +byte 1 111 +byte 1 110 +byte 1 102 +byte 1 95 +byte 1 98 +byte 1 108 +byte 1 117 +byte 1 49 +byte 1 0 +align 1 +LABELV $130 +byte 1 109 +byte 1 111 +byte 1 100 +byte 1 101 +byte 1 108 +byte 1 115 +byte 1 47 +byte 1 102 +byte 1 108 +byte 1 97 +byte 1 103 +byte 1 115 +byte 1 47 +byte 1 98 +byte 1 95 +byte 1 102 +byte 1 108 +byte 1 97 +byte 1 103 +byte 1 46 +byte 1 109 +byte 1 100 +byte 1 51 +byte 1 0 +align 1 +LABELV $129 +byte 1 116 +byte 1 101 +byte 1 97 +byte 1 109 +byte 1 95 +byte 1 67 +byte 1 84 +byte 1 70 +byte 1 95 +byte 1 98 +byte 1 108 +byte 1 117 +byte 1 101 +byte 1 102 +byte 1 108 +byte 1 97 +byte 1 103 +byte 1 0 +align 1 +LABELV $128 +byte 1 82 +byte 1 101 +byte 1 100 +byte 1 32 +byte 1 70 +byte 1 108 +byte 1 97 +byte 1 103 +byte 1 0 +align 1 +LABELV $127 +byte 1 105 +byte 1 99 +byte 1 111 +byte 1 110 +byte 1 115 +byte 1 47 +byte 1 105 +byte 1 99 +byte 1 111 +byte 1 110 +byte 1 102 +byte 1 95 +byte 1 114 +byte 1 101 +byte 1 100 +byte 1 49 +byte 1 0 +align 1 +LABELV $126 +byte 1 109 +byte 1 111 +byte 1 100 +byte 1 101 +byte 1 108 +byte 1 115 +byte 1 47 +byte 1 102 +byte 1 108 +byte 1 97 +byte 1 103 +byte 1 115 +byte 1 47 +byte 1 114 +byte 1 95 +byte 1 102 +byte 1 108 +byte 1 97 +byte 1 103 +byte 1 46 +byte 1 109 +byte 1 100 +byte 1 51 +byte 1 0 +align 1 +LABELV $125 +byte 1 116 +byte 1 101 +byte 1 97 +byte 1 109 +byte 1 95 +byte 1 67 +byte 1 84 +byte 1 70 +byte 1 95 +byte 1 114 +byte 1 101 +byte 1 100 +byte 1 102 +byte 1 108 +byte 1 97 +byte 1 103 +byte 1 0 +align 1 +LABELV $124 +byte 1 77 +byte 1 52 +byte 1 32 +byte 1 67 +byte 1 108 +byte 1 105 +byte 1 112 +byte 1 0 +align 1 +LABELV $123 +byte 1 105 +byte 1 99 +byte 1 111 +byte 1 110 +byte 1 115 +byte 1 47 +byte 1 105 +byte 1 99 +byte 1 111 +byte 1 110 +byte 1 97 +byte 1 95 +byte 1 109 +byte 1 52 +byte 1 99 +byte 1 108 +byte 1 105 +byte 1 112 +byte 1 0 +align 1 +LABELV $122 +byte 1 109 +byte 1 111 +byte 1 100 +byte 1 101 +byte 1 108 +byte 1 115 +byte 1 47 +byte 1 97 +byte 1 109 +byte 1 109 +byte 1 111 +byte 1 47 +byte 1 109 +byte 1 52 +byte 1 46 +byte 1 109 +byte 1 100 +byte 1 51 +byte 1 0 +align 1 +LABELV $121 +byte 1 97 +byte 1 109 +byte 1 109 +byte 1 111 +byte 1 95 +byte 1 109 +byte 1 52 +byte 1 0 +align 1 +LABELV $120 +byte 1 77 +byte 1 80 +byte 1 53 +byte 1 32 +byte 1 67 +byte 1 108 +byte 1 105 +byte 1 112 +byte 1 0 +align 1 +LABELV $119 +byte 1 105 +byte 1 99 +byte 1 111 +byte 1 110 +byte 1 115 +byte 1 47 +byte 1 105 +byte 1 99 +byte 1 111 +byte 1 110 +byte 1 97 +byte 1 95 +byte 1 109 +byte 1 112 +byte 1 53 +byte 1 99 +byte 1 108 +byte 1 105 +byte 1 112 +byte 1 0 +align 1 +LABELV $118 +byte 1 109 +byte 1 111 +byte 1 100 +byte 1 101 +byte 1 108 +byte 1 115 +byte 1 47 +byte 1 97 +byte 1 109 +byte 1 109 +byte 1 111 +byte 1 47 +byte 1 109 +byte 1 112 +byte 1 53 +byte 1 46 +byte 1 109 +byte 1 100 +byte 1 51 +byte 1 0 +align 1 +LABELV $117 +byte 1 97 +byte 1 109 +byte 1 109 +byte 1 111 +byte 1 95 +byte 1 109 +byte 1 112 +byte 1 53 +byte 1 0 +align 1 +LABELV $116 +byte 1 65 +byte 1 80 +byte 1 32 +byte 1 83 +byte 1 110 +byte 1 105 +byte 1 112 +byte 1 101 +byte 1 114 +byte 1 32 +byte 1 65 +byte 1 109 +byte 1 109 +byte 1 111 +byte 1 0 +align 1 +LABELV $115 +byte 1 105 +byte 1 99 +byte 1 111 +byte 1 110 +byte 1 115 +byte 1 47 +byte 1 105 +byte 1 99 +byte 1 111 +byte 1 110 +byte 1 97 +byte 1 95 +byte 1 115 +byte 1 115 +byte 1 103 +byte 1 97 +byte 1 109 +byte 1 109 +byte 1 111 +byte 1 0 +align 1 +LABELV $114 +byte 1 109 +byte 1 111 +byte 1 100 +byte 1 101 +byte 1 108 +byte 1 115 +byte 1 47 +byte 1 97 +byte 1 109 +byte 1 109 +byte 1 111 +byte 1 47 +byte 1 115 +byte 1 115 +byte 1 103 +byte 1 51 +byte 1 48 +byte 1 48 +byte 1 48 +byte 1 46 +byte 1 109 +byte 1 100 +byte 1 51 +byte 1 0 +align 1 +LABELV $113 +byte 1 97 +byte 1 109 +byte 1 109 +byte 1 111 +byte 1 95 +byte 1 115 +byte 1 115 +byte 1 103 +byte 1 51 +byte 1 48 +byte 1 48 +byte 1 48 +byte 1 0 +align 1 +LABELV $112 +byte 1 83 +byte 1 104 +byte 1 111 +byte 1 116 +byte 1 103 +byte 1 117 +byte 1 110 +byte 1 32 +byte 1 83 +byte 1 104 +byte 1 101 +byte 1 108 +byte 1 108 +byte 1 115 +byte 1 0 +align 1 +LABELV $111 +byte 1 105 +byte 1 99 +byte 1 111 +byte 1 110 +byte 1 115 +byte 1 47 +byte 1 105 +byte 1 99 +byte 1 111 +byte 1 110 +byte 1 97 +byte 1 95 +byte 1 115 +byte 1 104 +byte 1 101 +byte 1 108 +byte 1 108 +byte 1 115 +byte 1 0 +align 1 +LABELV $110 +byte 1 109 +byte 1 111 +byte 1 100 +byte 1 101 +byte 1 108 +byte 1 115 +byte 1 47 +byte 1 97 +byte 1 109 +byte 1 109 +byte 1 111 +byte 1 47 +byte 1 109 +byte 1 51 +byte 1 46 +byte 1 109 +byte 1 100 +byte 1 51 +byte 1 0 +align 1 +LABELV $109 +byte 1 97 +byte 1 109 +byte 1 109 +byte 1 111 +byte 1 95 +byte 1 115 +byte 1 104 +byte 1 101 +byte 1 108 +byte 1 108 +byte 1 115 +byte 1 0 +align 1 +LABELV $108 +byte 1 77 +byte 1 75 +byte 1 50 +byte 1 51 +byte 1 32 +byte 1 67 +byte 1 108 +byte 1 105 +byte 1 112 +byte 1 0 +align 1 +LABELV $107 +byte 1 105 +byte 1 99 +byte 1 111 +byte 1 110 +byte 1 115 +byte 1 47 +byte 1 105 +byte 1 99 +byte 1 111 +byte 1 110 +byte 1 97 +byte 1 95 +byte 1 109 +byte 1 107 +byte 1 50 +byte 1 51 +byte 1 99 +byte 1 108 +byte 1 105 +byte 1 112 +byte 1 0 +align 1 +LABELV $106 +byte 1 109 +byte 1 111 +byte 1 100 +byte 1 101 +byte 1 108 +byte 1 115 +byte 1 47 +byte 1 97 +byte 1 109 +byte 1 109 +byte 1 111 +byte 1 47 +byte 1 109 +byte 1 107 +byte 1 50 +byte 1 51 +byte 1 46 +byte 1 109 +byte 1 100 +byte 1 51 +byte 1 0 +align 1 +LABELV $105 +byte 1 97 +byte 1 109 +byte 1 109 +byte 1 111 +byte 1 95 +byte 1 109 +byte 1 107 +byte 1 50 +byte 1 51 +byte 1 0 +align 1 +LABELV $104 +byte 1 109 +byte 1 111 +byte 1 100 +byte 1 101 +byte 1 108 +byte 1 115 +byte 1 47 +byte 1 119 +byte 1 101 +byte 1 97 +byte 1 112 +byte 1 111 +byte 1 110 +byte 1 115 +byte 1 50 +byte 1 47 +byte 1 103 +byte 1 114 +byte 1 101 +byte 1 110 +byte 1 97 +byte 1 100 +byte 1 101 +byte 1 47 +byte 1 103 +byte 1 114 +byte 1 101 +byte 1 110 +byte 1 97 +byte 1 100 +byte 1 101 +byte 1 95 +byte 1 49 +byte 1 115 +byte 1 116 +byte 1 46 +byte 1 109 +byte 1 100 +byte 1 51 +byte 1 0 +align 1 +LABELV $103 +byte 1 103 +byte 1 114 +byte 1 101 +byte 1 110 +byte 1 97 +byte 1 100 +byte 1 101 +byte 1 95 +byte 1 49 +byte 1 115 +byte 1 116 +byte 1 0 +align 1 +LABELV $102 +byte 1 109 +byte 1 111 +byte 1 100 +byte 1 101 +byte 1 108 +byte 1 115 +byte 1 47 +byte 1 119 +byte 1 101 +byte 1 97 +byte 1 112 +byte 1 111 +byte 1 110 +byte 1 115 +byte 1 50 +byte 1 47 +byte 1 97 +byte 1 107 +byte 1 105 +byte 1 109 +byte 1 98 +byte 1 111 +byte 1 47 +byte 1 97 +byte 1 107 +byte 1 105 +byte 1 109 +byte 1 98 +byte 1 111 +byte 1 95 +byte 1 49 +byte 1 115 +byte 1 116 +byte 1 46 +byte 1 109 +byte 1 100 +byte 1 51 +byte 1 0 +align 1 +LABELV $101 +byte 1 97 +byte 1 107 +byte 1 105 +byte 1 109 +byte 1 98 +byte 1 111 +byte 1 95 +byte 1 49 +byte 1 115 +byte 1 116 +byte 1 0 +align 1 +LABELV $100 +byte 1 109 +byte 1 111 +byte 1 100 +byte 1 101 +byte 1 108 +byte 1 115 +byte 1 47 +byte 1 119 +byte 1 101 +byte 1 97 +byte 1 112 +byte 1 111 +byte 1 110 +byte 1 115 +byte 1 50 +byte 1 47 +byte 1 109 +byte 1 51 +byte 1 47 +byte 1 109 +byte 1 51 +byte 1 95 +byte 1 49 +byte 1 115 +byte 1 116 +byte 1 46 +byte 1 109 +byte 1 100 +byte 1 51 +byte 1 0 +align 1 +LABELV $99 +byte 1 109 +byte 1 51 +byte 1 95 +byte 1 49 +byte 1 115 +byte 1 116 +byte 1 0 +align 1 +LABELV $98 +byte 1 109 +byte 1 111 +byte 1 100 +byte 1 101 +byte 1 108 +byte 1 115 +byte 1 47 +byte 1 119 +byte 1 101 +byte 1 97 +byte 1 112 +byte 1 111 +byte 1 110 +byte 1 115 +byte 1 50 +byte 1 47 +byte 1 104 +byte 1 97 +byte 1 110 +byte 1 100 +byte 1 99 +byte 1 97 +byte 1 110 +byte 1 110 +byte 1 111 +byte 1 110 +byte 1 47 +byte 1 104 +byte 1 97 +byte 1 110 +byte 1 100 +byte 1 99 +byte 1 97 +byte 1 110 +byte 1 110 +byte 1 111 +byte 1 110 +byte 1 95 +byte 1 49 +byte 1 115 +byte 1 116 +byte 1 46 +byte 1 109 +byte 1 100 +byte 1 51 +byte 1 0 +align 1 +LABELV $97 +byte 1 104 +byte 1 97 +byte 1 110 +byte 1 100 +byte 1 99 +byte 1 97 +byte 1 110 +byte 1 110 +byte 1 111 +byte 1 110 +byte 1 95 +byte 1 49 +byte 1 115 +byte 1 116 +byte 1 0 +align 1 +LABELV $96 +byte 1 109 +byte 1 111 +byte 1 100 +byte 1 101 +byte 1 108 +byte 1 115 +byte 1 47 +byte 1 119 +byte 1 101 +byte 1 97 +byte 1 112 +byte 1 111 +byte 1 110 +byte 1 115 +byte 1 50 +byte 1 47 +byte 1 109 +byte 1 112 +byte 1 53 +byte 1 47 +byte 1 109 +byte 1 112 +byte 1 53 +byte 1 95 +byte 1 49 +byte 1 115 +byte 1 116 +byte 1 46 +byte 1 109 +byte 1 100 +byte 1 51 +byte 1 0 +align 1 +LABELV $95 +byte 1 109 +byte 1 112 +byte 1 53 +byte 1 95 +byte 1 49 +byte 1 115 +byte 1 116 +byte 1 0 +align 1 +LABELV $94 +byte 1 109 +byte 1 111 +byte 1 100 +byte 1 101 +byte 1 108 +byte 1 115 +byte 1 47 +byte 1 119 +byte 1 101 +byte 1 97 +byte 1 112 +byte 1 111 +byte 1 110 +byte 1 115 +byte 1 50 +byte 1 47 +byte 1 115 +byte 1 115 +byte 1 103 +byte 1 51 +byte 1 48 +byte 1 48 +byte 1 48 +byte 1 47 +byte 1 115 +byte 1 115 +byte 1 103 +byte 1 51 +byte 1 48 +byte 1 48 +byte 1 48 +byte 1 95 +byte 1 49 +byte 1 115 +byte 1 116 +byte 1 46 +byte 1 109 +byte 1 100 +byte 1 51 +byte 1 0 +align 1 +LABELV $93 +byte 1 115 +byte 1 115 +byte 1 103 +byte 1 51 +byte 1 48 +byte 1 48 +byte 1 48 +byte 1 95 +byte 1 49 +byte 1 115 +byte 1 116 +byte 1 0 +align 1 +LABELV $92 +byte 1 109 +byte 1 111 +byte 1 100 +byte 1 101 +byte 1 108 +byte 1 115 +byte 1 47 +byte 1 119 +byte 1 101 +byte 1 97 +byte 1 112 +byte 1 111 +byte 1 110 +byte 1 115 +byte 1 50 +byte 1 47 +byte 1 109 +byte 1 52 +byte 1 47 +byte 1 109 +byte 1 52 +byte 1 95 +byte 1 49 +byte 1 115 +byte 1 116 +byte 1 46 +byte 1 109 +byte 1 100 +byte 1 51 +byte 1 0 +align 1 +LABELV $91 +byte 1 109 +byte 1 52 +byte 1 95 +byte 1 49 +byte 1 115 +byte 1 116 +byte 1 0 +align 1 +LABELV $90 +byte 1 109 +byte 1 111 +byte 1 100 +byte 1 101 +byte 1 108 +byte 1 115 +byte 1 47 +byte 1 119 +byte 1 101 +byte 1 97 +byte 1 112 +byte 1 111 +byte 1 110 +byte 1 115 +byte 1 50 +byte 1 47 +byte 1 109 +byte 1 107 +byte 1 50 +byte 1 51 +byte 1 47 +byte 1 109 +byte 1 107 +byte 1 50 +byte 1 51 +byte 1 95 +byte 1 49 +byte 1 115 +byte 1 116 +byte 1 46 +byte 1 109 +byte 1 100 +byte 1 51 +byte 1 0 +align 1 +LABELV $89 +byte 1 112 +byte 1 105 +byte 1 115 +byte 1 116 +byte 1 111 +byte 1 108 +byte 1 95 +byte 1 49 +byte 1 115 +byte 1 116 +byte 1 0 +align 1 +LABELV $88 +byte 1 109 +byte 1 111 +byte 1 100 +byte 1 101 +byte 1 108 +byte 1 115 +byte 1 47 +byte 1 119 +byte 1 101 +byte 1 97 +byte 1 112 +byte 1 111 +byte 1 110 +byte 1 115 +byte 1 50 +byte 1 47 +byte 1 107 +byte 1 110 +byte 1 105 +byte 1 102 +byte 1 101 +byte 1 47 +byte 1 107 +byte 1 110 +byte 1 105 +byte 1 102 +byte 1 101 +byte 1 95 +byte 1 49 +byte 1 115 +byte 1 116 +byte 1 46 +byte 1 109 +byte 1 100 +byte 1 51 +byte 1 0 +align 1 +LABELV $87 +byte 1 107 +byte 1 110 +byte 1 105 +byte 1 102 +byte 1 101 +byte 1 95 +byte 1 49 +byte 1 115 +byte 1 116 +byte 1 0 +align 1 +LABELV $86 +byte 1 77 +byte 1 50 +byte 1 54 +byte 1 32 +byte 1 70 +byte 1 114 +byte 1 97 +byte 1 103 +byte 1 109 +byte 1 101 +byte 1 110 +byte 1 116 +byte 1 97 +byte 1 116 +byte 1 105 +byte 1 111 +byte 1 110 +byte 1 32 +byte 1 71 +byte 1 114 +byte 1 101 +byte 1 110 +byte 1 97 +byte 1 100 +byte 1 101 +byte 1 0 +align 1 +LABELV $85 +byte 1 105 +byte 1 99 +byte 1 111 +byte 1 110 +byte 1 115 +byte 1 47 +byte 1 105 +byte 1 99 +byte 1 111 +byte 1 110 +byte 1 119 +byte 1 95 +byte 1 103 +byte 1 114 +byte 1 101 +byte 1 110 +byte 1 0 +align 1 +LABELV $84 +byte 1 109 +byte 1 111 +byte 1 100 +byte 1 101 +byte 1 108 +byte 1 115 +byte 1 47 +byte 1 119 +byte 1 101 +byte 1 97 +byte 1 112 +byte 1 111 +byte 1 110 +byte 1 115 +byte 1 50 +byte 1 47 +byte 1 103 +byte 1 114 +byte 1 101 +byte 1 110 +byte 1 97 +byte 1 100 +byte 1 101 +byte 1 47 +byte 1 103 +byte 1 114 +byte 1 101 +byte 1 110 +byte 1 97 +byte 1 100 +byte 1 101 +byte 1 46 +byte 1 109 +byte 1 100 +byte 1 51 +byte 1 0 +align 1 +LABELV $83 +byte 1 119 +byte 1 101 +byte 1 97 +byte 1 112 +byte 1 111 +byte 1 110 +byte 1 95 +byte 1 103 +byte 1 114 +byte 1 101 +byte 1 110 +byte 1 97 +byte 1 100 +byte 1 101 +byte 1 0 +align 1 +LABELV $82 +byte 1 68 +byte 1 117 +byte 1 97 +byte 1 108 +byte 1 32 +byte 1 77 +byte 1 75 +byte 1 50 +byte 1 51 +byte 1 32 +byte 1 80 +byte 1 105 +byte 1 115 +byte 1 116 +byte 1 111 +byte 1 108 +byte 1 115 +byte 1 0 +align 1 +LABELV $81 +byte 1 105 +byte 1 99 +byte 1 111 +byte 1 110 +byte 1 115 +byte 1 47 +byte 1 105 +byte 1 99 +byte 1 111 +byte 1 110 +byte 1 119 +byte 1 95 +byte 1 97 +byte 1 107 +byte 1 105 +byte 1 109 +byte 1 98 +byte 1 111 +byte 1 0 +align 1 +LABELV $80 +byte 1 109 +byte 1 111 +byte 1 100 +byte 1 101 +byte 1 108 +byte 1 115 +byte 1 47 +byte 1 119 +byte 1 101 +byte 1 97 +byte 1 112 +byte 1 111 +byte 1 110 +byte 1 115 +byte 1 50 +byte 1 47 +byte 1 97 +byte 1 107 +byte 1 105 +byte 1 109 +byte 1 98 +byte 1 111 +byte 1 47 +byte 1 97 +byte 1 107 +byte 1 105 +byte 1 109 +byte 1 98 +byte 1 111 +byte 1 46 +byte 1 109 +byte 1 100 +byte 1 51 +byte 1 0 +align 1 +LABELV $79 +byte 1 119 +byte 1 101 +byte 1 97 +byte 1 112 +byte 1 111 +byte 1 110 +byte 1 95 +byte 1 97 +byte 1 107 +byte 1 105 +byte 1 109 +byte 1 98 +byte 1 111 +byte 1 0 +align 1 +LABELV $78 +byte 1 77 +byte 1 51 +byte 1 32 +byte 1 83 +byte 1 117 +byte 1 112 +byte 1 101 +byte 1 114 +byte 1 32 +byte 1 57 +byte 1 48 +byte 1 32 +byte 1 65 +byte 1 115 +byte 1 115 +byte 1 97 +byte 1 117 +byte 1 108 +byte 1 116 +byte 1 32 +byte 1 83 +byte 1 104 +byte 1 111 +byte 1 116 +byte 1 103 +byte 1 117 +byte 1 110 +byte 1 0 +align 1 +LABELV $77 +byte 1 105 +byte 1 99 +byte 1 111 +byte 1 110 +byte 1 115 +byte 1 47 +byte 1 105 +byte 1 99 +byte 1 111 +byte 1 110 +byte 1 119 +byte 1 95 +byte 1 109 +byte 1 51 +byte 1 0 +align 1 +LABELV $76 +byte 1 109 +byte 1 111 +byte 1 100 +byte 1 101 +byte 1 108 +byte 1 115 +byte 1 47 +byte 1 119 +byte 1 101 +byte 1 97 +byte 1 112 +byte 1 111 +byte 1 110 +byte 1 115 +byte 1 50 +byte 1 47 +byte 1 109 +byte 1 51 +byte 1 47 +byte 1 109 +byte 1 51 +byte 1 46 +byte 1 109 +byte 1 100 +byte 1 51 +byte 1 0 +align 1 +LABELV $75 +byte 1 115 +byte 1 111 +byte 1 117 +byte 1 110 +byte 1 100 +byte 1 47 +byte 1 119 +byte 1 101 +byte 1 97 +byte 1 112 +byte 1 111 +byte 1 110 +byte 1 115 +byte 1 47 +byte 1 109 +byte 1 51 +byte 1 47 +byte 1 109 +byte 1 51 +byte 1 105 +byte 1 110 +byte 1 46 +byte 1 119 +byte 1 97 +byte 1 118 +byte 1 0 +align 1 +LABELV $74 +byte 1 119 +byte 1 101 +byte 1 97 +byte 1 112 +byte 1 111 +byte 1 110 +byte 1 95 +byte 1 109 +byte 1 51 +byte 1 0 +align 1 +LABELV $73 +byte 1 72 +byte 1 97 +byte 1 110 +byte 1 100 +byte 1 99 +byte 1 97 +byte 1 110 +byte 1 110 +byte 1 111 +byte 1 110 +byte 1 0 +align 1 +LABELV $72 +byte 1 105 +byte 1 99 +byte 1 111 +byte 1 110 +byte 1 115 +byte 1 47 +byte 1 105 +byte 1 99 +byte 1 111 +byte 1 110 +byte 1 119 +byte 1 95 +byte 1 115 +byte 1 97 +byte 1 119 +byte 1 101 +byte 1 100 +byte 1 111 +byte 1 102 +byte 1 102 +byte 1 0 +align 1 +LABELV $71 +byte 1 109 +byte 1 111 +byte 1 100 +byte 1 101 +byte 1 108 +byte 1 115 +byte 1 47 +byte 1 119 +byte 1 101 +byte 1 97 +byte 1 112 +byte 1 111 +byte 1 110 +byte 1 115 +byte 1 50 +byte 1 47 +byte 1 104 +byte 1 97 +byte 1 110 +byte 1 100 +byte 1 99 +byte 1 97 +byte 1 110 +byte 1 110 +byte 1 111 +byte 1 110 +byte 1 47 +byte 1 104 +byte 1 97 +byte 1 110 +byte 1 100 +byte 1 99 +byte 1 97 +byte 1 110 +byte 1 110 +byte 1 111 +byte 1 110 +byte 1 46 +byte 1 109 +byte 1 100 +byte 1 51 +byte 1 0 +align 1 +LABELV $70 +byte 1 115 +byte 1 111 +byte 1 117 +byte 1 110 +byte 1 100 +byte 1 47 +byte 1 119 +byte 1 101 +byte 1 97 +byte 1 112 +byte 1 111 +byte 1 110 +byte 1 115 +byte 1 47 +byte 1 104 +byte 1 97 +byte 1 110 +byte 1 100 +byte 1 99 +byte 1 97 +byte 1 110 +byte 1 110 +byte 1 111 +byte 1 110 +byte 1 47 +byte 1 104 +byte 1 99 +byte 1 111 +byte 1 112 +byte 1 101 +byte 1 110 +byte 1 46 +byte 1 119 +byte 1 97 +byte 1 118 +byte 1 0 +align 1 +LABELV $69 +byte 1 119 +byte 1 101 +byte 1 97 +byte 1 112 +byte 1 111 +byte 1 110 +byte 1 95 +byte 1 104 +byte 1 97 +byte 1 110 +byte 1 100 +byte 1 99 +byte 1 97 +byte 1 110 +byte 1 110 +byte 1 111 +byte 1 110 +byte 1 0 +align 1 +LABELV $68 +byte 1 77 +byte 1 80 +byte 1 53 +byte 1 47 +byte 1 49 +byte 1 48 +byte 1 32 +byte 1 83 +byte 1 117 +byte 1 98 +byte 1 109 +byte 1 97 +byte 1 99 +byte 1 104 +byte 1 105 +byte 1 110 +byte 1 101 +byte 1 103 +byte 1 117 +byte 1 110 +byte 1 0 +align 1 +LABELV $67 +byte 1 105 +byte 1 99 +byte 1 111 +byte 1 110 +byte 1 115 +byte 1 47 +byte 1 105 +byte 1 99 +byte 1 111 +byte 1 110 +byte 1 119 +byte 1 95 +byte 1 109 +byte 1 112 +byte 1 53 +byte 1 0 +align 1 +LABELV $66 +byte 1 109 +byte 1 111 +byte 1 100 +byte 1 101 +byte 1 108 +byte 1 115 +byte 1 47 +byte 1 119 +byte 1 101 +byte 1 97 +byte 1 112 +byte 1 111 +byte 1 110 +byte 1 115 +byte 1 50 +byte 1 47 +byte 1 109 +byte 1 112 +byte 1 53 +byte 1 47 +byte 1 109 +byte 1 112 +byte 1 53 +byte 1 46 +byte 1 109 +byte 1 100 +byte 1 51 +byte 1 0 +align 1 +LABELV $65 +byte 1 115 +byte 1 111 +byte 1 117 +byte 1 110 +byte 1 100 +byte 1 47 +byte 1 119 +byte 1 101 +byte 1 97 +byte 1 112 +byte 1 111 +byte 1 110 +byte 1 115 +byte 1 47 +byte 1 109 +byte 1 112 +byte 1 53 +byte 1 47 +byte 1 109 +byte 1 112 +byte 1 53 +byte 1 115 +byte 1 108 +byte 1 105 +byte 1 100 +byte 1 101 +byte 1 46 +byte 1 119 +byte 1 97 +byte 1 118 +byte 1 0 +align 1 +LABELV $64 +byte 1 119 +byte 1 101 +byte 1 97 +byte 1 112 +byte 1 111 +byte 1 110 +byte 1 95 +byte 1 109 +byte 1 112 +byte 1 53 +byte 1 0 +align 1 +LABELV $63 +byte 1 83 +byte 1 110 +byte 1 105 +byte 1 112 +byte 1 101 +byte 1 114 +byte 1 32 +byte 1 82 +byte 1 105 +byte 1 102 +byte 1 108 +byte 1 101 +byte 1 0 +align 1 +LABELV $62 +byte 1 105 +byte 1 99 +byte 1 111 +byte 1 110 +byte 1 115 +byte 1 47 +byte 1 105 +byte 1 99 +byte 1 111 +byte 1 110 +byte 1 119 +byte 1 95 +byte 1 115 +byte 1 115 +byte 1 103 +byte 1 0 +align 1 +LABELV $61 +byte 1 109 +byte 1 111 +byte 1 100 +byte 1 101 +byte 1 108 +byte 1 115 +byte 1 47 +byte 1 119 +byte 1 101 +byte 1 97 +byte 1 112 +byte 1 111 +byte 1 110 +byte 1 115 +byte 1 50 +byte 1 47 +byte 1 115 +byte 1 115 +byte 1 103 +byte 1 51 +byte 1 48 +byte 1 48 +byte 1 48 +byte 1 47 +byte 1 115 +byte 1 115 +byte 1 103 +byte 1 51 +byte 1 48 +byte 1 48 +byte 1 48 +byte 1 46 +byte 1 109 +byte 1 100 +byte 1 51 +byte 1 0 +align 1 +LABELV $60 +byte 1 115 +byte 1 111 +byte 1 117 +byte 1 110 +byte 1 100 +byte 1 47 +byte 1 119 +byte 1 101 +byte 1 97 +byte 1 112 +byte 1 111 +byte 1 110 +byte 1 115 +byte 1 47 +byte 1 115 +byte 1 115 +byte 1 103 +byte 1 51 +byte 1 48 +byte 1 48 +byte 1 48 +byte 1 47 +byte 1 115 +byte 1 115 +byte 1 103 +byte 1 105 +byte 1 110 +byte 1 46 +byte 1 119 +byte 1 97 +byte 1 118 +byte 1 0 +align 1 +LABELV $59 +byte 1 119 +byte 1 101 +byte 1 97 +byte 1 112 +byte 1 111 +byte 1 110 +byte 1 95 +byte 1 115 +byte 1 115 +byte 1 103 +byte 1 51 +byte 1 48 +byte 1 48 +byte 1 48 +byte 1 0 +align 1 +LABELV $58 +byte 1 77 +byte 1 52 +byte 1 32 +byte 1 65 +byte 1 115 +byte 1 115 +byte 1 97 +byte 1 117 +byte 1 108 +byte 1 116 +byte 1 32 +byte 1 82 +byte 1 105 +byte 1 102 +byte 1 108 +byte 1 101 +byte 1 0 +align 1 +LABELV $57 +byte 1 105 +byte 1 99 +byte 1 111 +byte 1 110 +byte 1 115 +byte 1 47 +byte 1 105 +byte 1 99 +byte 1 111 +byte 1 110 +byte 1 119 +byte 1 95 +byte 1 109 +byte 1 52 +byte 1 0 +align 1 +LABELV $56 +byte 1 109 +byte 1 111 +byte 1 100 +byte 1 101 +byte 1 108 +byte 1 115 +byte 1 47 +byte 1 119 +byte 1 101 +byte 1 97 +byte 1 112 +byte 1 111 +byte 1 110 +byte 1 115 +byte 1 50 +byte 1 47 +byte 1 109 +byte 1 52 +byte 1 47 +byte 1 109 +byte 1 52 +byte 1 46 +byte 1 109 +byte 1 100 +byte 1 51 +byte 1 0 +align 1 +LABELV $55 +byte 1 115 +byte 1 111 +byte 1 117 +byte 1 110 +byte 1 100 +byte 1 47 +byte 1 119 +byte 1 101 +byte 1 97 +byte 1 112 +byte 1 111 +byte 1 110 +byte 1 115 +byte 1 47 +byte 1 109 +byte 1 52 +byte 1 47 +byte 1 109 +byte 1 52 +byte 1 115 +byte 1 108 +byte 1 105 +byte 1 100 +byte 1 101 +byte 1 46 +byte 1 119 +byte 1 97 +byte 1 118 +byte 1 0 +align 1 +LABELV $54 +byte 1 119 +byte 1 101 +byte 1 97 +byte 1 112 +byte 1 111 +byte 1 110 +byte 1 95 +byte 1 109 +byte 1 52 +byte 1 0 +align 1 +LABELV $53 +byte 1 77 +byte 1 75 +byte 1 50 +byte 1 51 +byte 1 32 +byte 1 80 +byte 1 105 +byte 1 115 +byte 1 116 +byte 1 111 +byte 1 108 +byte 1 0 +align 1 +LABELV $52 +byte 1 105 +byte 1 99 +byte 1 111 +byte 1 110 +byte 1 115 +byte 1 47 +byte 1 105 +byte 1 99 +byte 1 111 +byte 1 110 +byte 1 119 +byte 1 95 +byte 1 109 +byte 1 107 +byte 1 50 +byte 1 51 +byte 1 0 +align 1 +LABELV $51 +byte 1 109 +byte 1 111 +byte 1 100 +byte 1 101 +byte 1 108 +byte 1 115 +byte 1 47 +byte 1 119 +byte 1 101 +byte 1 97 +byte 1 112 +byte 1 111 +byte 1 110 +byte 1 115 +byte 1 50 +byte 1 47 +byte 1 109 +byte 1 107 +byte 1 50 +byte 1 51 +byte 1 47 +byte 1 109 +byte 1 107 +byte 1 50 +byte 1 51 +byte 1 46 +byte 1 109 +byte 1 100 +byte 1 51 +byte 1 0 +align 1 +LABELV $50 +byte 1 115 +byte 1 111 +byte 1 117 +byte 1 110 +byte 1 100 +byte 1 47 +byte 1 119 +byte 1 101 +byte 1 97 +byte 1 112 +byte 1 111 +byte 1 110 +byte 1 115 +byte 1 47 +byte 1 109 +byte 1 107 +byte 1 50 +byte 1 51 +byte 1 47 +byte 1 109 +byte 1 107 +byte 1 50 +byte 1 51 +byte 1 115 +byte 1 108 +byte 1 105 +byte 1 100 +byte 1 101 +byte 1 46 +byte 1 119 +byte 1 97 +byte 1 118 +byte 1 0 +align 1 +LABELV $49 +byte 1 119 +byte 1 101 +byte 1 97 +byte 1 112 +byte 1 111 +byte 1 110 +byte 1 95 +byte 1 112 +byte 1 105 +byte 1 115 +byte 1 116 +byte 1 111 +byte 1 108 +byte 1 0 +align 1 +LABELV $48 +byte 1 67 +byte 1 111 +byte 1 109 +byte 1 98 +byte 1 97 +byte 1 116 +byte 1 32 +byte 1 75 +byte 1 110 +byte 1 105 +byte 1 102 +byte 1 101 +byte 1 0 +align 1 +LABELV $47 +byte 1 105 +byte 1 99 +byte 1 111 +byte 1 110 +byte 1 115 +byte 1 47 +byte 1 105 +byte 1 99 +byte 1 111 +byte 1 110 +byte 1 119 +byte 1 95 +byte 1 107 +byte 1 110 +byte 1 105 +byte 1 102 +byte 1 101 +byte 1 0 +align 1 +LABELV $46 +byte 1 109 +byte 1 111 +byte 1 100 +byte 1 101 +byte 1 108 +byte 1 115 +byte 1 47 +byte 1 119 +byte 1 101 +byte 1 97 +byte 1 112 +byte 1 111 +byte 1 110 +byte 1 115 +byte 1 50 +byte 1 47 +byte 1 107 +byte 1 110 +byte 1 105 +byte 1 102 +byte 1 101 +byte 1 47 +byte 1 107 +byte 1 110 +byte 1 105 +byte 1 102 +byte 1 101 +byte 1 46 +byte 1 109 +byte 1 100 +byte 1 51 +byte 1 0 +align 1 +LABELV $45 +byte 1 115 +byte 1 111 +byte 1 117 +byte 1 110 +byte 1 100 +byte 1 47 +byte 1 109 +byte 1 105 +byte 1 115 +byte 1 99 +byte 1 47 +byte 1 97 +byte 1 109 +byte 1 95 +byte 1 112 +byte 1 107 +byte 1 117 +byte 1 112 +byte 1 46 +byte 1 119 +byte 1 97 +byte 1 118 +byte 1 0 +align 1 +LABELV $44 +byte 1 119 +byte 1 101 +byte 1 97 +byte 1 112 +byte 1 111 +byte 1 110 +byte 1 95 +byte 1 107 +byte 1 110 +byte 1 105 +byte 1 102 +byte 1 101 +byte 1 0 +align 1 +LABELV $43 +byte 1 0 diff --git a/ta_ui/vm/q_math.asm b/ta_ui/vm/q_math.asm new file mode 100644 index 00000000..85b78e37 --- /dev/null +++ b/ta_ui/vm/q_math.asm @@ -0,0 +1,9605 @@ +data +export vec3_origin +align 4 +LABELV vec3_origin +byte 4 0 +byte 4 0 +byte 4 0 +export axisDefault +align 4 +LABELV axisDefault +byte 4 1065353216 +byte 4 0 +byte 4 0 +byte 4 0 +byte 4 1065353216 +byte 4 0 +byte 4 0 +byte 4 0 +byte 4 1065353216 +export colorBlack +align 4 +LABELV colorBlack +byte 4 0 +byte 4 0 +byte 4 0 +byte 4 1065353216 +export colorRed +align 4 +LABELV colorRed +byte 4 1065353216 +byte 4 0 +byte 4 0 +byte 4 1065353216 +export colorGreen +align 4 +LABELV colorGreen +byte 4 0 +byte 4 1065353216 +byte 4 0 +byte 4 1065353216 +export colorBlue +align 4 +LABELV colorBlue +byte 4 0 +byte 4 0 +byte 4 1065353216 +byte 4 1065353216 +export colorYellow +align 4 +LABELV colorYellow +byte 4 1065353216 +byte 4 1065353216 +byte 4 0 +byte 4 1065353216 +export colorMagenta +align 4 +LABELV colorMagenta +byte 4 1065353216 +byte 4 0 +byte 4 1065353216 +byte 4 1065353216 +export colorCyan +align 4 +LABELV colorCyan +byte 4 0 +byte 4 1065353216 +byte 4 1065353216 +byte 4 1065353216 +export colorWhite +align 4 +LABELV colorWhite +byte 4 1065353216 +byte 4 1065353216 +byte 4 1065353216 +byte 4 1065353216 +export colorLtGrey +align 4 +LABELV colorLtGrey +byte 4 1061158912 +byte 4 1061158912 +byte 4 1061158912 +byte 4 1065353216 +export colorMdGrey +align 4 +LABELV colorMdGrey +byte 4 1056964608 +byte 4 1056964608 +byte 4 1056964608 +byte 4 1065353216 +export colorDkGrey +align 4 +LABELV colorDkGrey +byte 4 1048576000 +byte 4 1048576000 +byte 4 1048576000 +byte 4 1065353216 +export g_color_table +align 4 +LABELV g_color_table +byte 4 0 +byte 4 0 +byte 4 0 +byte 4 1065353216 +byte 4 1065353216 +byte 4 0 +byte 4 0 +byte 4 1065353216 +byte 4 0 +byte 4 1065353216 +byte 4 0 +byte 4 1065353216 +byte 4 1065353216 +byte 4 1065353216 +byte 4 0 +byte 4 1065353216 +byte 4 0 +byte 4 0 +byte 4 1065353216 +byte 4 1065353216 +byte 4 0 +byte 4 1065353216 +byte 4 1065353216 +byte 4 1065353216 +byte 4 1065353216 +byte 4 0 +byte 4 1065353216 +byte 4 1065353216 +byte 4 1065353216 +byte 4 1065353216 +byte 4 1065353216 +byte 4 1065353216 +export bytedirs +align 4 +LABELV bytedirs +byte 4 3204879951 +byte 4 0 +byte 4 1062847556 +byte 4 3202531056 +byte 4 1047828139 +byte 4 1063074669 +byte 4 3197577718 +byte 4 0 +byte 4 1064605338 +byte 4 3198039930 +byte 4 1056964608 +byte 4 1062149053 +byte 4 3190184938 +byte 4 1049007711 +byte 4 1064532072 +byte 4 0 +byte 4 0 +byte 4 1065353216 +byte 4 0 +byte 4 1062847556 +byte 4 1057396303 +byte 4 3189189110 +byte 4 1060597999 +byte 4 1060013330 +byte 4 1041705462 +byte 4 1060597999 +byte 4 1060013330 +byte 4 0 +byte 4 1057396303 +byte 4 1062847556 +byte 4 1050556282 +byte 4 1056964608 +byte 4 1062149053 +byte 4 1057396303 +byte 4 0 +byte 4 1062847556 +byte 4 1050094070 +byte 4 0 +byte 4 1064605338 +byte 4 1055047408 +byte 4 1047828139 +byte 4 1063074669 +byte 4 1042701290 +byte 4 1049007711 +byte 4 1064532072 +byte 4 3207496978 +byte 4 1041705462 +byte 4 1060597999 +byte 4 3209632701 +byte 4 1050556282 +byte 4 1056964608 +byte 4 3205921044 +byte 4 1054458931 +byte 4 1060121929 +byte 4 3210331204 +byte 4 1057396303 +byte 4 0 +byte 4 3210558317 +byte 4 1055047408 +byte 4 1047828139 +byte 4 3208081647 +byte 4 1060013330 +byte 4 1041705462 +byte 4 3207605577 +byte 4 1058437396 +byte 4 1054458931 +byte 4 3204448256 +byte 4 1062149053 +byte 4 1050556282 +byte 4 3195311787 +byte 4 1063074669 +byte 4 1055047408 +byte 4 3201942579 +byte 4 1060121929 +byte 4 1058437396 +byte 4 3208081647 +byte 4 1060013330 +byte 4 3189189110 +byte 4 3204448256 +byte 4 1062149053 +byte 4 3198039930 +byte 4 3204879951 +byte 4 1062847556 +byte 4 0 +byte 4 0 +byte 4 1062847556 +byte 4 3204879951 +byte 4 3195311787 +byte 4 1063074669 +byte 4 3202531056 +byte 4 0 +byte 4 1064605338 +byte 4 3197577718 +byte 4 3196491359 +byte 4 1064532072 +byte 4 3190184938 +byte 4 0 +byte 4 1065353216 +byte 4 0 +byte 4 0 +byte 4 1064605338 +byte 4 1050094070 +byte 4 3196491359 +byte 4 1064532072 +byte 4 1042701290 +byte 4 1047828139 +byte 4 1063074669 +byte 4 1055047408 +byte 4 1049007711 +byte 4 1064532072 +byte 4 1042701290 +byte 4 1056964608 +byte 4 1062149053 +byte 4 1050556282 +byte 4 1047828139 +byte 4 1063074669 +byte 4 3202531056 +byte 4 1049007711 +byte 4 1064532072 +byte 4 3190184938 +byte 4 1056964608 +byte 4 1062149053 +byte 4 3198039930 +byte 4 1062847556 +byte 4 1057396303 +byte 4 0 +byte 4 1060597999 +byte 4 1060013330 +byte 4 1041705462 +byte 4 1060597999 +byte 4 1060013330 +byte 4 3189189110 +byte 4 1057396303 +byte 4 1062847556 +byte 4 0 +byte 4 1054458931 +byte 4 1060121929 +byte 4 1058437396 +byte 4 1063074669 +byte 4 1055047408 +byte 4 1047828139 +byte 4 1060121929 +byte 4 1058437396 +byte 4 1054458931 +byte 4 1062149053 +byte 4 1050556282 +byte 4 1056964608 +byte 4 1060013330 +byte 4 1041705462 +byte 4 1060597999 +byte 4 1058437396 +byte 4 1054458931 +byte 4 1060121929 +byte 4 1064605338 +byte 4 1050094070 +byte 4 0 +byte 4 1065353216 +byte 4 0 +byte 4 0 +byte 4 1064532072 +byte 4 1042701290 +byte 4 1049007711 +byte 4 1062847556 +byte 4 3204879951 +byte 4 0 +byte 4 1064605338 +byte 4 3197577718 +byte 4 0 +byte 4 1063074669 +byte 4 3202531056 +byte 4 1047828139 +byte 4 1064532072 +byte 4 3190184938 +byte 4 1049007711 +byte 4 1062149053 +byte 4 3198039930 +byte 4 1056964608 +byte 4 1060013330 +byte 4 3189189110 +byte 4 1060597999 +byte 4 1062847556 +byte 4 0 +byte 4 1057396303 +byte 4 1063074669 +byte 4 1055047408 +byte 4 3195311787 +byte 4 1062149053 +byte 4 1050556282 +byte 4 3204448256 +byte 4 1064532072 +byte 4 1042701290 +byte 4 3196491359 +byte 4 1057396303 +byte 4 0 +byte 4 3210331204 +byte 4 1060013330 +byte 4 1041705462 +byte 4 3208081647 +byte 4 1060013330 +byte 4 3189189110 +byte 4 3208081647 +byte 4 1062847556 +byte 4 0 +byte 4 3204879951 +byte 4 1062149053 +byte 4 3198039930 +byte 4 3204448256 +byte 4 1063074669 +byte 4 3202531056 +byte 4 3195311787 +byte 4 1064532072 +byte 4 3190184938 +byte 4 3196491359 +byte 4 1041705462 +byte 4 1060597999 +byte 4 3207496978 +byte 4 1050556282 +byte 4 1056964608 +byte 4 3209632701 +byte 4 1054458931 +byte 4 1060121929 +byte 4 3205921044 +byte 4 1055047408 +byte 4 1047828139 +byte 4 3210558317 +byte 4 1058437396 +byte 4 1054458931 +byte 4 3207605577 +byte 4 1060121929 +byte 4 1058437396 +byte 4 3201942579 +byte 4 3189189110 +byte 4 1060597999 +byte 4 3207496978 +byte 4 3198039930 +byte 4 1056964608 +byte 4 3209632701 +byte 4 0 +byte 4 1057396303 +byte 4 3210331204 +byte 4 3204879951 +byte 4 0 +byte 4 3210331204 +byte 4 3202531056 +byte 4 1047828139 +byte 4 3210558317 +byte 4 3197577718 +byte 4 0 +byte 4 3212088986 +byte 4 3190184938 +byte 4 1049007711 +byte 4 3212015720 +byte 4 0 +byte 4 0 +byte 4 3212836864 +byte 4 1050094070 +byte 4 0 +byte 4 3212088986 +byte 4 1042701290 +byte 4 1049007711 +byte 4 3212015720 +byte 4 3202531056 +byte 4 3195311787 +byte 4 3210558317 +byte 4 3198039930 +byte 4 3204448256 +byte 4 3209632701 +byte 4 3190184938 +byte 4 3196491359 +byte 4 3212015720 +byte 4 0 +byte 4 3210331204 +byte 4 3204879951 +byte 4 3189189110 +byte 4 3208081647 +byte 4 3207496978 +byte 4 1041705462 +byte 4 3208081647 +byte 4 3207496978 +byte 4 0 +byte 4 3204879951 +byte 4 3210331204 +byte 4 1050556282 +byte 4 3204448256 +byte 4 3209632701 +byte 4 1055047408 +byte 4 3195311787 +byte 4 3210558317 +byte 4 1042701290 +byte 4 3196491359 +byte 4 3212015720 +byte 4 1047828139 +byte 4 3210558317 +byte 4 3202531056 +byte 4 1056964608 +byte 4 3209632701 +byte 4 3198039930 +byte 4 1054458931 +byte 4 3207605577 +byte 4 3205921044 +byte 4 1060597999 +byte 4 3207496978 +byte 4 3189189110 +byte 4 1060121929 +byte 4 3205921044 +byte 4 3201942579 +byte 4 1058437396 +byte 4 3201942579 +byte 4 3207605577 +byte 4 0 +byte 4 3212088986 +byte 4 3197577718 +byte 4 0 +byte 4 3212836864 +byte 4 0 +byte 4 1049007711 +byte 4 3212015720 +byte 4 3190184938 +byte 4 0 +byte 4 3210331204 +byte 4 1057396303 +byte 4 0 +byte 4 3212088986 +byte 4 1050094070 +byte 4 1047828139 +byte 4 3210558317 +byte 4 1055047408 +byte 4 1049007711 +byte 4 3212015720 +byte 4 1042701290 +byte 4 1056964608 +byte 4 3209632701 +byte 4 1050556282 +byte 4 1060597999 +byte 4 3207496978 +byte 4 1041705462 +byte 4 1057396303 +byte 4 3210331204 +byte 4 0 +byte 4 3195311787 +byte 4 3210558317 +byte 4 3202531056 +byte 4 3204448256 +byte 4 3209632701 +byte 4 3198039930 +byte 4 3196491359 +byte 4 3212015720 +byte 4 3190184938 +byte 4 3210331204 +byte 4 3204879951 +byte 4 0 +byte 4 3208081647 +byte 4 3207496978 +byte 4 3189189110 +byte 4 3208081647 +byte 4 3207496978 +byte 4 1041705462 +byte 4 3204879951 +byte 4 3210331204 +byte 4 0 +byte 4 3204448256 +byte 4 3209632701 +byte 4 1050556282 +byte 4 3195311787 +byte 4 3210558317 +byte 4 1055047408 +byte 4 3196491359 +byte 4 3212015720 +byte 4 1042701290 +byte 4 3210558317 +byte 4 3202531056 +byte 4 1047828139 +byte 4 3209632701 +byte 4 3198039930 +byte 4 1056964608 +byte 4 3207605577 +byte 4 3205921044 +byte 4 1054458931 +byte 4 3207496978 +byte 4 3189189110 +byte 4 1060597999 +byte 4 3202531056 +byte 4 3195311787 +byte 4 1063074669 +byte 4 3205921044 +byte 4 3201942579 +byte 4 1060121929 +byte 4 3198039930 +byte 4 3204448256 +byte 4 1062149053 +byte 4 3189189110 +byte 4 3208081647 +byte 4 1060013330 +byte 4 3201942579 +byte 4 3207605577 +byte 4 1058437396 +byte 4 3190184938 +byte 4 3196491359 +byte 4 1064532072 +byte 4 1055047408 +byte 4 3195311787 +byte 4 1063074669 +byte 4 1042701290 +byte 4 3196491359 +byte 4 1064532072 +byte 4 1050556282 +byte 4 3204448256 +byte 4 1062149053 +byte 4 1041705462 +byte 4 3208081647 +byte 4 1060013330 +byte 4 0 +byte 4 3204879951 +byte 4 1062847556 +byte 4 1054458931 +byte 4 3207605577 +byte 4 1058437396 +byte 4 1058437396 +byte 4 3201942579 +byte 4 1060121929 +byte 4 1060121929 +byte 4 3205921044 +byte 4 1054458931 +byte 4 3212088986 +byte 4 1050094070 +byte 4 0 +byte 4 3212015720 +byte 4 1042701290 +byte 4 1049007711 +byte 4 3212836864 +byte 4 0 +byte 4 0 +byte 4 3210331204 +byte 4 0 +byte 4 1057396303 +byte 4 3212088986 +byte 4 3197577718 +byte 4 0 +byte 4 3212015720 +byte 4 3190184938 +byte 4 1049007711 +byte 4 3210558317 +byte 4 1055047408 +byte 4 3195311787 +byte 4 3212015720 +byte 4 1042701290 +byte 4 3196491359 +byte 4 3209632701 +byte 4 1050556282 +byte 4 3204448256 +byte 4 3210558317 +byte 4 3202531056 +byte 4 3195311787 +byte 4 3212015720 +byte 4 3190184938 +byte 4 3196491359 +byte 4 3209632701 +byte 4 3198039930 +byte 4 3204448256 +byte 4 3207496978 +byte 4 1041705462 +byte 4 3208081647 +byte 4 3207496978 +byte 4 3189189110 +byte 4 3208081647 +byte 4 3210331204 +byte 4 0 +byte 4 3204879951 +byte 4 3207605577 +byte 4 1058437396 +byte 4 3201942579 +byte 4 3205921044 +byte 4 1054458931 +byte 4 3207605577 +byte 4 3201942579 +byte 4 1060121929 +byte 4 3205921044 +byte 4 3201942579 +byte 4 3207605577 +byte 4 3205921044 +byte 4 3205921044 +byte 4 3201942579 +byte 4 3207605577 +byte 4 3207605577 +byte 4 3205921044 +byte 4 3201942579 +export Q_rand +code +proc Q_rand 4 0 +file "../../game/q_math.c" +line 257 +;1://----------------------------------------------------------------------------- +;2:// +;3:// $Id$ +;4:// +;5://----------------------------------------------------------------------------- +;6:// +;7:// $Log$ +;7:// Revision 1.1 2002/01/08 05:46:22 blaze +;7:// Initial revision +;7:// +;8:// Revision 1.4 2001/12/31 16:28:42 jbravo +;9:// I made a Booboo with the Log tag. +;10:// +;11:// +;12://----------------------------------------------------------------------------- +;13:// Copyright (C) 1999-2000 Id Software, Inc. +;14: +;15:// +;16: +;17:// q_math.c -- stateless support routines that are included in each code module +;18: +;19:#include "q_shared.h" +;20: +;21: +;22: +;23: +;24: +;25:vec3_t vec3_origin = {0,0,0}; +;26: +;27:vec3_t axisDefault[3] = { { 1, 0, 0 }, { 0, 1, 0 }, { 0, 0, 1 } }; +;28: +;29: +;30: +;31: +;32: +;33:vec4_t colorBlack = {0, 0, 0, 1}; +;34: +;35:vec4_t colorRed = {1, 0, 0, 1}; +;36: +;37:vec4_t colorGreen = {0, 1, 0, 1}; +;38: +;39:vec4_t colorBlue = {0, 0, 1, 1}; +;40: +;41:vec4_t colorYellow = {1, 1, 0, 1}; +;42: +;43:vec4_t colorMagenta= {1, 0, 1, 1}; +;44: +;45:vec4_t colorCyan = {0, 1, 1, 1}; +;46: +;47:vec4_t colorWhite = {1, 1, 1, 1}; +;48: +;49:vec4_t colorLtGrey = {0.75, 0.75, 0.75, 1}; +;50: +;51:vec4_t colorMdGrey = {0.5, 0.5, 0.5, 1}; +;52: +;53:vec4_t colorDkGrey = {0.25, 0.25, 0.25, 1}; +;54: +;55: +;56: +;57:vec4_t g_color_table[8] = +;58: +;59: { +;60: +;61: {0.0, 0.0, 0.0, 1.0}, +;62: +;63: {1.0, 0.0, 0.0, 1.0}, +;64: +;65: {0.0, 1.0, 0.0, 1.0}, +;66: +;67: {1.0, 1.0, 0.0, 1.0}, +;68: +;69: {0.0, 0.0, 1.0, 1.0}, +;70: +;71: {0.0, 1.0, 1.0, 1.0}, +;72: +;73: {1.0, 0.0, 1.0, 1.0}, +;74: +;75: {1.0, 1.0, 1.0, 1.0}, +;76: +;77: }; +;78: +;79: +;80: +;81: +;82: +;83:vec3_t bytedirs[NUMVERTEXNORMALS] = +;84: +;85:{ +;86: +;87:{-0.525731f, 0.000000f, 0.850651f}, {-0.442863f, 0.238856f, 0.864188f}, +;88: +;89:{-0.295242f, 0.000000f, 0.955423f}, {-0.309017f, 0.500000f, 0.809017f}, +;90: +;91:{-0.162460f, 0.262866f, 0.951056f}, {0.000000f, 0.000000f, 1.000000f}, +;92: +;93:{0.000000f, 0.850651f, 0.525731f}, {-0.147621f, 0.716567f, 0.681718f}, +;94: +;95:{0.147621f, 0.716567f, 0.681718f}, {0.000000f, 0.525731f, 0.850651f}, +;96: +;97:{0.309017f, 0.500000f, 0.809017f}, {0.525731f, 0.000000f, 0.850651f}, +;98: +;99:{0.295242f, 0.000000f, 0.955423f}, {0.442863f, 0.238856f, 0.864188f}, +;100: +;101:{0.162460f, 0.262866f, 0.951056f}, {-0.681718f, 0.147621f, 0.716567f}, +;102: +;103:{-0.809017f, 0.309017f, 0.500000f},{-0.587785f, 0.425325f, 0.688191f}, +;104: +;105:{-0.850651f, 0.525731f, 0.000000f},{-0.864188f, 0.442863f, 0.238856f}, +;106: +;107:{-0.716567f, 0.681718f, 0.147621f},{-0.688191f, 0.587785f, 0.425325f}, +;108: +;109:{-0.500000f, 0.809017f, 0.309017f}, {-0.238856f, 0.864188f, 0.442863f}, +;110: +;111:{-0.425325f, 0.688191f, 0.587785f}, {-0.716567f, 0.681718f, -0.147621f}, +;112: +;113:{-0.500000f, 0.809017f, -0.309017f}, {-0.525731f, 0.850651f, 0.000000f}, +;114: +;115:{0.000000f, 0.850651f, -0.525731f}, {-0.238856f, 0.864188f, -0.442863f}, +;116: +;117:{0.000000f, 0.955423f, -0.295242f}, {-0.262866f, 0.951056f, -0.162460f}, +;118: +;119:{0.000000f, 1.000000f, 0.000000f}, {0.000000f, 0.955423f, 0.295242f}, +;120: +;121:{-0.262866f, 0.951056f, 0.162460f}, {0.238856f, 0.864188f, 0.442863f}, +;122: +;123:{0.262866f, 0.951056f, 0.162460f}, {0.500000f, 0.809017f, 0.309017f}, +;124: +;125:{0.238856f, 0.864188f, -0.442863f},{0.262866f, 0.951056f, -0.162460f}, +;126: +;127:{0.500000f, 0.809017f, -0.309017f},{0.850651f, 0.525731f, 0.000000f}, +;128: +;129:{0.716567f, 0.681718f, 0.147621f}, {0.716567f, 0.681718f, -0.147621f}, +;130: +;131:{0.525731f, 0.850651f, 0.000000f}, {0.425325f, 0.688191f, 0.587785f}, +;132: +;133:{0.864188f, 0.442863f, 0.238856f}, {0.688191f, 0.587785f, 0.425325f}, +;134: +;135:{0.809017f, 0.309017f, 0.500000f}, {0.681718f, 0.147621f, 0.716567f}, +;136: +;137:{0.587785f, 0.425325f, 0.688191f}, {0.955423f, 0.295242f, 0.000000f}, +;138: +;139:{1.000000f, 0.000000f, 0.000000f}, {0.951056f, 0.162460f, 0.262866f}, +;140: +;141:{0.850651f, -0.525731f, 0.000000f},{0.955423f, -0.295242f, 0.000000f}, +;142: +;143:{0.864188f, -0.442863f, 0.238856f}, {0.951056f, -0.162460f, 0.262866f}, +;144: +;145:{0.809017f, -0.309017f, 0.500000f}, {0.681718f, -0.147621f, 0.716567f}, +;146: +;147:{0.850651f, 0.000000f, 0.525731f}, {0.864188f, 0.442863f, -0.238856f}, +;148: +;149:{0.809017f, 0.309017f, -0.500000f}, {0.951056f, 0.162460f, -0.262866f}, +;150: +;151:{0.525731f, 0.000000f, -0.850651f}, {0.681718f, 0.147621f, -0.716567f}, +;152: +;153:{0.681718f, -0.147621f, -0.716567f},{0.850651f, 0.000000f, -0.525731f}, +;154: +;155:{0.809017f, -0.309017f, -0.500000f}, {0.864188f, -0.442863f, -0.238856f}, +;156: +;157:{0.951056f, -0.162460f, -0.262866f}, {0.147621f, 0.716567f, -0.681718f}, +;158: +;159:{0.309017f, 0.500000f, -0.809017f}, {0.425325f, 0.688191f, -0.587785f}, +;160: +;161:{0.442863f, 0.238856f, -0.864188f}, {0.587785f, 0.425325f, -0.688191f}, +;162: +;163:{0.688191f, 0.587785f, -0.425325f}, {-0.147621f, 0.716567f, -0.681718f}, +;164: +;165:{-0.309017f, 0.500000f, -0.809017f}, {0.000000f, 0.525731f, -0.850651f}, +;166: +;167:{-0.525731f, 0.000000f, -0.850651f}, {-0.442863f, 0.238856f, -0.864188f}, +;168: +;169:{-0.295242f, 0.000000f, -0.955423f}, {-0.162460f, 0.262866f, -0.951056f}, +;170: +;171:{0.000000f, 0.000000f, -1.000000f}, {0.295242f, 0.000000f, -0.955423f}, +;172: +;173:{0.162460f, 0.262866f, -0.951056f}, {-0.442863f, -0.238856f, -0.864188f}, +;174: +;175:{-0.309017f, -0.500000f, -0.809017f}, {-0.162460f, -0.262866f, -0.951056f}, +;176: +;177:{0.000000f, -0.850651f, -0.525731f}, {-0.147621f, -0.716567f, -0.681718f}, +;178: +;179:{0.147621f, -0.716567f, -0.681718f}, {0.000000f, -0.525731f, -0.850651f}, +;180: +;181:{0.309017f, -0.500000f, -0.809017f}, {0.442863f, -0.238856f, -0.864188f}, +;182: +;183:{0.162460f, -0.262866f, -0.951056f}, {0.238856f, -0.864188f, -0.442863f}, +;184: +;185:{0.500000f, -0.809017f, -0.309017f}, {0.425325f, -0.688191f, -0.587785f}, +;186: +;187:{0.716567f, -0.681718f, -0.147621f}, {0.688191f, -0.587785f, -0.425325f}, +;188: +;189:{0.587785f, -0.425325f, -0.688191f}, {0.000000f, -0.955423f, -0.295242f}, +;190: +;191:{0.000000f, -1.000000f, 0.000000f}, {0.262866f, -0.951056f, -0.162460f}, +;192: +;193:{0.000000f, -0.850651f, 0.525731f}, {0.000000f, -0.955423f, 0.295242f}, +;194: +;195:{0.238856f, -0.864188f, 0.442863f}, {0.262866f, -0.951056f, 0.162460f}, +;196: +;197:{0.500000f, -0.809017f, 0.309017f}, {0.716567f, -0.681718f, 0.147621f}, +;198: +;199:{0.525731f, -0.850651f, 0.000000f}, {-0.238856f, -0.864188f, -0.442863f}, +;200: +;201:{-0.500000f, -0.809017f, -0.309017f}, {-0.262866f, -0.951056f, -0.162460f}, +;202: +;203:{-0.850651f, -0.525731f, 0.000000f}, {-0.716567f, -0.681718f, -0.147621f}, +;204: +;205:{-0.716567f, -0.681718f, 0.147621f}, {-0.525731f, -0.850651f, 0.000000f}, +;206: +;207:{-0.500000f, -0.809017f, 0.309017f}, {-0.238856f, -0.864188f, 0.442863f}, +;208: +;209:{-0.262866f, -0.951056f, 0.162460f}, {-0.864188f, -0.442863f, 0.238856f}, +;210: +;211:{-0.809017f, -0.309017f, 0.500000f}, {-0.688191f, -0.587785f, 0.425325f}, +;212: +;213:{-0.681718f, -0.147621f, 0.716567f}, {-0.442863f, -0.238856f, 0.864188f}, +;214: +;215:{-0.587785f, -0.425325f, 0.688191f}, {-0.309017f, -0.500000f, 0.809017f}, +;216: +;217:{-0.147621f, -0.716567f, 0.681718f}, {-0.425325f, -0.688191f, 0.587785f}, +;218: +;219:{-0.162460f, -0.262866f, 0.951056f}, {0.442863f, -0.238856f, 0.864188f}, +;220: +;221:{0.162460f, -0.262866f, 0.951056f}, {0.309017f, -0.500000f, 0.809017f}, +;222: +;223:{0.147621f, -0.716567f, 0.681718f}, {0.000000f, -0.525731f, 0.850651f}, +;224: +;225:{0.425325f, -0.688191f, 0.587785f}, {0.587785f, -0.425325f, 0.688191f}, +;226: +;227:{0.688191f, -0.587785f, 0.425325f}, {-0.955423f, 0.295242f, 0.000000f}, +;228: +;229:{-0.951056f, 0.162460f, 0.262866f}, {-1.000000f, 0.000000f, 0.000000f}, +;230: +;231:{-0.850651f, 0.000000f, 0.525731f}, {-0.955423f, -0.295242f, 0.000000f}, +;232: +;233:{-0.951056f, -0.162460f, 0.262866f}, {-0.864188f, 0.442863f, -0.238856f}, +;234: +;235:{-0.951056f, 0.162460f, -0.262866f}, {-0.809017f, 0.309017f, -0.500000f}, +;236: +;237:{-0.864188f, -0.442863f, -0.238856f}, {-0.951056f, -0.162460f, -0.262866f}, +;238: +;239:{-0.809017f, -0.309017f, -0.500000f}, {-0.681718f, 0.147621f, -0.716567f}, +;240: +;241:{-0.681718f, -0.147621f, -0.716567f}, {-0.850651f, 0.000000f, -0.525731f}, +;242: +;243:{-0.688191f, 0.587785f, -0.425325f}, {-0.587785f, 0.425325f, -0.688191f}, +;244: +;245:{-0.425325f, 0.688191f, -0.587785f}, {-0.425325f, -0.688191f, -0.587785f}, +;246: +;247:{-0.587785f, -0.425325f, -0.688191f}, {-0.688191f, -0.587785f, -0.425325f} +;248: +;249:}; +;250: +;251: +;252: +;253://============================================================== +;254: +;255: +;256: +;257:int Q_rand( int *seed ) { +line 259 +;258: +;259: *seed = (69069 * *seed + 1); +ADDRLP4 0 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 0 +INDIRP4 +CNSTI4 69069 +ADDRLP4 0 +INDIRP4 +INDIRI4 +MULI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 261 +;260: +;261: return *seed; +ADDRFP4 0 +INDIRP4 +INDIRI4 +RETI4 +LABELV $22 +endproc Q_rand 4 0 +export Q_random +proc Q_random 4 4 +line 267 +;262: +;263:} +;264: +;265: +;266: +;267:float Q_random( int *seed ) { +line 269 +;268: +;269: return ( Q_rand( seed ) & 0xffff ) / (float)0x10000; +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRLP4 0 +ADDRGP4 Q_rand +CALLI4 +ASGNI4 +ADDRLP4 0 +INDIRI4 +CNSTI4 65535 +BANDI4 +CVIF4 4 +CNSTF4 1199570944 +DIVF4 +RETF4 +LABELV $23 +endproc Q_random 4 4 +export Q_crandom +proc Q_crandom 4 4 +line 275 +;270: +;271:} +;272: +;273: +;274: +;275:float Q_crandom( int *seed ) { +line 277 +;276: +;277: return 2.0 * ( Q_random( seed ) - 0.5 ); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRLP4 0 +ADDRGP4 Q_random +CALLF4 +ASGNF4 +CNSTF4 1073741824 +ADDRLP4 0 +INDIRF4 +CNSTF4 1056964608 +SUBF4 +MULF4 +RETF4 +LABELV $24 +endproc Q_crandom 4 4 +export VectorCompare +proc VectorCompare 16 0 +line 287 +;278: +;279:} +;280: +;281: +;282: +;283:#ifdef __LCC__ +;284: +;285: +;286: +;287:int VectorCompare( const vec3_t v1, const vec3_t v2 ) { +line 289 +;288: +;289: if (v1[0] != v2[0] || v1[1] != v2[1] || v1[2] != v2[2]) { +ADDRLP4 0 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 4 +ADDRFP4 4 +INDIRP4 +ASGNP4 +ADDRLP4 0 +INDIRP4 +INDIRF4 +ADDRLP4 4 +INDIRP4 +INDIRF4 +NEF4 $29 +ADDRLP4 8 +CNSTI4 4 +ASGNI4 +ADDRLP4 0 +INDIRP4 +ADDRLP4 8 +INDIRI4 +ADDP4 +INDIRF4 +ADDRLP4 4 +INDIRP4 +ADDRLP4 8 +INDIRI4 +ADDP4 +INDIRF4 +NEF4 $29 +ADDRLP4 12 +CNSTI4 8 +ASGNI4 +ADDRLP4 0 +INDIRP4 +ADDRLP4 12 +INDIRI4 +ADDP4 +INDIRF4 +ADDRLP4 4 +INDIRP4 +ADDRLP4 12 +INDIRI4 +ADDP4 +INDIRF4 +EQF4 $26 +LABELV $29 +line 291 +;290: +;291: return 0; +CNSTI4 0 +RETI4 +ADDRGP4 $25 +JUMPV +LABELV $26 +line 295 +;292: +;293: } +;294: +;295: return 1; +CNSTI4 1 +RETI4 +LABELV $25 +endproc VectorCompare 16 0 +export VectorLength +proc VectorLength 20 4 +line 301 +;296: +;297:} +;298: +;299: +;300: +;301:vec_t VectorLength( const vec3_t v ) { +line 303 +;302: +;303: return (vec_t)sqrt (v[0]*v[0] + v[1]*v[1] + v[2]*v[2]); +ADDRLP4 0 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 4 +ADDRLP4 0 +INDIRP4 +INDIRF4 +ASGNF4 +ADDRLP4 8 +ADDRLP4 0 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRF4 +ASGNF4 +ADDRLP4 12 +ADDRLP4 0 +INDIRP4 +CNSTI4 8 +ADDP4 +INDIRF4 +ASGNF4 +ADDRLP4 4 +INDIRF4 +ADDRLP4 4 +INDIRF4 +MULF4 +ADDRLP4 8 +INDIRF4 +ADDRLP4 8 +INDIRF4 +MULF4 +ADDF4 +ADDRLP4 12 +INDIRF4 +ADDRLP4 12 +INDIRF4 +MULF4 +ADDF4 +ARGF4 +ADDRLP4 16 +ADDRGP4 sqrt +CALLF4 +ASGNF4 +ADDRLP4 16 +INDIRF4 +RETF4 +LABELV $30 +endproc VectorLength 20 4 +export VectorLengthSquared +proc VectorLengthSquared 16 0 +line 309 +;304: +;305:} +;306: +;307: +;308: +;309:vec_t VectorLengthSquared( const vec3_t v ) { +line 311 +;310: +;311: return (v[0]*v[0] + v[1]*v[1] + v[2]*v[2]); +ADDRLP4 0 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 4 +ADDRLP4 0 +INDIRP4 +INDIRF4 +ASGNF4 +ADDRLP4 8 +ADDRLP4 0 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRF4 +ASGNF4 +ADDRLP4 12 +ADDRLP4 0 +INDIRP4 +CNSTI4 8 +ADDP4 +INDIRF4 +ASGNF4 +ADDRLP4 4 +INDIRF4 +ADDRLP4 4 +INDIRF4 +MULF4 +ADDRLP4 8 +INDIRF4 +ADDRLP4 8 +INDIRF4 +MULF4 +ADDF4 +ADDRLP4 12 +INDIRF4 +ADDRLP4 12 +INDIRF4 +MULF4 +ADDF4 +RETF4 +LABELV $31 +endproc VectorLengthSquared 16 0 +export Distance +proc Distance 32 4 +line 317 +;312: +;313:} +;314: +;315: +;316: +;317:vec_t Distance( const vec3_t p1, const vec3_t p2 ) { +line 323 +;318: +;319: vec3_t v; +;320: +;321: +;322: +;323: VectorSubtract (p2, p1, v); +ADDRLP4 12 +ADDRFP4 4 +INDIRP4 +ASGNP4 +ADDRLP4 16 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 0 +ADDRLP4 12 +INDIRP4 +INDIRF4 +ADDRLP4 16 +INDIRP4 +INDIRF4 +SUBF4 +ASGNF4 +ADDRLP4 20 +CNSTI4 4 +ASGNI4 +ADDRLP4 0+4 +ADDRLP4 12 +INDIRP4 +ADDRLP4 20 +INDIRI4 +ADDP4 +INDIRF4 +ADDRLP4 16 +INDIRP4 +ADDRLP4 20 +INDIRI4 +ADDP4 +INDIRF4 +SUBF4 +ASGNF4 +ADDRLP4 24 +CNSTI4 8 +ASGNI4 +ADDRLP4 0+8 +ADDRFP4 4 +INDIRP4 +ADDRLP4 24 +INDIRI4 +ADDP4 +INDIRF4 +ADDRFP4 0 +INDIRP4 +ADDRLP4 24 +INDIRI4 +ADDP4 +INDIRF4 +SUBF4 +ASGNF4 +line 325 +;324: +;325: return VectorLength( v ); +ADDRLP4 0 +ARGP4 +ADDRLP4 28 +ADDRGP4 VectorLength +CALLF4 +ASGNF4 +ADDRLP4 28 +INDIRF4 +RETF4 +LABELV $32 +endproc Distance 32 4 +export DistanceSquared +proc DistanceSquared 32 0 +line 331 +;326: +;327:} +;328: +;329: +;330: +;331:vec_t DistanceSquared( const vec3_t p1, const vec3_t p2 ) { +line 337 +;332: +;333: vec3_t v; +;334: +;335: +;336: +;337: VectorSubtract (p2, p1, v); +ADDRLP4 12 +ADDRFP4 4 +INDIRP4 +ASGNP4 +ADDRLP4 16 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 0 +ADDRLP4 12 +INDIRP4 +INDIRF4 +ADDRLP4 16 +INDIRP4 +INDIRF4 +SUBF4 +ASGNF4 +ADDRLP4 20 +CNSTI4 4 +ASGNI4 +ADDRLP4 0+4 +ADDRLP4 12 +INDIRP4 +ADDRLP4 20 +INDIRI4 +ADDP4 +INDIRF4 +ADDRLP4 16 +INDIRP4 +ADDRLP4 20 +INDIRI4 +ADDP4 +INDIRF4 +SUBF4 +ASGNF4 +ADDRLP4 24 +CNSTI4 8 +ASGNI4 +ADDRLP4 0+8 +ADDRFP4 4 +INDIRP4 +ADDRLP4 24 +INDIRI4 +ADDP4 +INDIRF4 +ADDRFP4 0 +INDIRP4 +ADDRLP4 24 +INDIRI4 +ADDP4 +INDIRF4 +SUBF4 +ASGNF4 +line 339 +;338: +;339: return v[0]*v[0] + v[1]*v[1] + v[2]*v[2]; +ADDRLP4 28 +ADDRLP4 0 +INDIRF4 +ASGNF4 +ADDRLP4 28 +INDIRF4 +ADDRLP4 28 +INDIRF4 +MULF4 +ADDRLP4 0+4 +INDIRF4 +ADDRLP4 0+4 +INDIRF4 +MULF4 +ADDF4 +ADDRLP4 0+8 +INDIRF4 +ADDRLP4 0+8 +INDIRF4 +MULF4 +ADDF4 +RETF4 +LABELV $35 +endproc DistanceSquared 32 0 +export VectorNormalizeFast +proc VectorNormalizeFast 36 4 +line 351 +;340: +;341:} +;342: +;343: +;344: +;345:// fast vector normalize routine that does not check to make sure +;346: +;347:// that length != 0, nor does it return length, uses rsqrt approximation +;348: +;349:void VectorNormalizeFast( vec3_t v ) +;350: +;351:{ +line 357 +;352: +;353: float ilength; +;354: +;355: +;356: +;357: ilength = Q_rsqrt( DotProduct( v, v ) ); +ADDRLP4 4 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 8 +ADDRLP4 4 +INDIRP4 +INDIRF4 +ASGNF4 +ADDRLP4 12 +ADDRLP4 4 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRF4 +ASGNF4 +ADDRLP4 16 +ADDRLP4 4 +INDIRP4 +CNSTI4 8 +ADDP4 +INDIRF4 +ASGNF4 +ADDRLP4 8 +INDIRF4 +ADDRLP4 8 +INDIRF4 +MULF4 +ADDRLP4 12 +INDIRF4 +ADDRLP4 12 +INDIRF4 +MULF4 +ADDF4 +ADDRLP4 16 +INDIRF4 +ADDRLP4 16 +INDIRF4 +MULF4 +ADDF4 +ARGF4 +ADDRLP4 20 +ADDRGP4 Q_rsqrt +CALLF4 +ASGNF4 +ADDRLP4 0 +ADDRLP4 20 +INDIRF4 +ASGNF4 +line 361 +;358: +;359: +;360: +;361: v[0] *= ilength; +ADDRLP4 24 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 24 +INDIRP4 +ADDRLP4 24 +INDIRP4 +INDIRF4 +ADDRLP4 0 +INDIRF4 +MULF4 +ASGNF4 +line 363 +;362: +;363: v[1] *= ilength; +ADDRLP4 28 +ADDRFP4 0 +INDIRP4 +CNSTI4 4 +ADDP4 +ASGNP4 +ADDRLP4 28 +INDIRP4 +ADDRLP4 28 +INDIRP4 +INDIRF4 +ADDRLP4 0 +INDIRF4 +MULF4 +ASGNF4 +line 365 +;364: +;365: v[2] *= ilength; +ADDRLP4 32 +ADDRFP4 0 +INDIRP4 +CNSTI4 8 +ADDP4 +ASGNP4 +ADDRLP4 32 +INDIRP4 +ADDRLP4 32 +INDIRP4 +INDIRF4 +ADDRLP4 0 +INDIRF4 +MULF4 +ASGNF4 +line 367 +;366: +;367:} +LABELV $42 +endproc VectorNormalizeFast 36 4 +export VectorInverse +proc VectorInverse 12 0 +line 371 +;368: +;369: +;370: +;371:void VectorInverse( vec3_t v ){ +line 373 +;372: +;373: v[0] = -v[0]; +ADDRLP4 0 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 0 +INDIRP4 +ADDRLP4 0 +INDIRP4 +INDIRF4 +NEGF4 +ASGNF4 +line 375 +;374: +;375: v[1] = -v[1]; +ADDRLP4 4 +ADDRFP4 0 +INDIRP4 +CNSTI4 4 +ADDP4 +ASGNP4 +ADDRLP4 4 +INDIRP4 +ADDRLP4 4 +INDIRP4 +INDIRF4 +NEGF4 +ASGNF4 +line 377 +;376: +;377: v[2] = -v[2]; +ADDRLP4 8 +ADDRFP4 0 +INDIRP4 +CNSTI4 8 +ADDP4 +ASGNP4 +ADDRLP4 8 +INDIRP4 +ADDRLP4 8 +INDIRP4 +INDIRF4 +NEGF4 +ASGNF4 +line 379 +;378: +;379:} +LABELV $43 +endproc VectorInverse 12 0 +export CrossProduct +proc CrossProduct 40 0 +line 383 +;380: +;381: +;382: +;383:void CrossProduct( const vec3_t v1, const vec3_t v2, vec3_t cross ) { +line 385 +;384: +;385: cross[0] = v1[1]*v2[2] - v1[2]*v2[1]; +ADDRLP4 0 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 4 +CNSTI4 4 +ASGNI4 +ADDRLP4 8 +ADDRFP4 4 +INDIRP4 +ASGNP4 +ADDRLP4 12 +CNSTI4 8 +ASGNI4 +ADDRFP4 8 +INDIRP4 +ADDRLP4 0 +INDIRP4 +ADDRLP4 4 +INDIRI4 +ADDP4 +INDIRF4 +ADDRLP4 8 +INDIRP4 +ADDRLP4 12 +INDIRI4 +ADDP4 +INDIRF4 +MULF4 +ADDRLP4 0 +INDIRP4 +ADDRLP4 12 +INDIRI4 +ADDP4 +INDIRF4 +ADDRLP4 8 +INDIRP4 +ADDRLP4 4 +INDIRI4 +ADDP4 +INDIRF4 +MULF4 +SUBF4 +ASGNF4 +line 387 +;386: +;387: cross[1] = v1[2]*v2[0] - v1[0]*v2[2]; +ADDRLP4 16 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 20 +CNSTI4 8 +ASGNI4 +ADDRLP4 24 +ADDRFP4 4 +INDIRP4 +ASGNP4 +ADDRFP4 8 +INDIRP4 +CNSTI4 4 +ADDP4 +ADDRLP4 16 +INDIRP4 +ADDRLP4 20 +INDIRI4 +ADDP4 +INDIRF4 +ADDRLP4 24 +INDIRP4 +INDIRF4 +MULF4 +ADDRLP4 16 +INDIRP4 +INDIRF4 +ADDRLP4 24 +INDIRP4 +ADDRLP4 20 +INDIRI4 +ADDP4 +INDIRF4 +MULF4 +SUBF4 +ASGNF4 +line 389 +;388: +;389: cross[2] = v1[0]*v2[1] - v1[1]*v2[0]; +ADDRLP4 28 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 32 +ADDRFP4 4 +INDIRP4 +ASGNP4 +ADDRLP4 36 +CNSTI4 4 +ASGNI4 +ADDRFP4 8 +INDIRP4 +CNSTI4 8 +ADDP4 +ADDRLP4 28 +INDIRP4 +INDIRF4 +ADDRLP4 32 +INDIRP4 +ADDRLP4 36 +INDIRI4 +ADDP4 +INDIRF4 +MULF4 +ADDRLP4 28 +INDIRP4 +ADDRLP4 36 +INDIRI4 +ADDP4 +INDIRF4 +ADDRLP4 32 +INDIRP4 +INDIRF4 +MULF4 +SUBF4 +ASGNF4 +line 391 +;390: +;391:} +LABELV $44 +endproc CrossProduct 40 0 +export ClampChar +proc ClampChar 0 0 +line 401 +;392: +;393:#endif +;394: +;395: +;396: +;397://======================================================= +;398: +;399: +;400: +;401:signed char ClampChar( int i ) { +line 403 +;402: +;403: if ( i < -128 ) { +ADDRFP4 0 +INDIRI4 +CNSTI4 -128 +GEI4 $46 +line 405 +;404: +;405: return -128; +CNSTI4 -128 +RETI4 +ADDRGP4 $45 +JUMPV +LABELV $46 +line 409 +;406: +;407: } +;408: +;409: if ( i > 127 ) { +ADDRFP4 0 +INDIRI4 +CNSTI4 127 +LEI4 $48 +line 411 +;410: +;411: return 127; +CNSTI4 127 +RETI4 +ADDRGP4 $45 +JUMPV +LABELV $48 +line 415 +;412: +;413: } +;414: +;415: return i; +ADDRFP4 0 +INDIRI4 +CVII1 4 +CVII4 1 +RETI4 +LABELV $45 +endproc ClampChar 0 0 +export ClampShort +proc ClampShort 0 0 +line 421 +;416: +;417:} +;418: +;419: +;420: +;421:signed short ClampShort( int i ) { +line 423 +;422: +;423: if ( i < -32768 ) { +ADDRFP4 0 +INDIRI4 +CNSTI4 -32768 +GEI4 $51 +line 425 +;424: +;425: return -32768; +CNSTI4 -32768 +RETI4 +ADDRGP4 $50 +JUMPV +LABELV $51 +line 429 +;426: +;427: } +;428: +;429: if ( i > 0x7fff ) { +ADDRFP4 0 +INDIRI4 +CNSTI4 32767 +LEI4 $53 +line 431 +;430: +;431: return 0x7fff; +CNSTI4 32767 +RETI4 +ADDRGP4 $50 +JUMPV +LABELV $53 +line 435 +;432: +;433: } +;434: +;435: return i; +ADDRFP4 0 +INDIRI4 +CVII2 4 +CVII4 2 +RETI4 +LABELV $50 +endproc ClampShort 0 0 +export DirToByte +proc DirToByte 24 0 +line 445 +;436: +;437:} +;438: +;439: +;440: +;441: +;442: +;443:// this isn't a real cheap function to call! +;444: +;445:int DirToByte( vec3_t dir ) { +line 453 +;446: +;447: int i, best; +;448: +;449: float d, bestd; +;450: +;451: +;452: +;453: if ( !dir ) { +ADDRFP4 0 +INDIRP4 +CVPU4 4 +CNSTU4 0 +NEU4 $56 +line 455 +;454: +;455: return 0; +CNSTI4 0 +RETI4 +ADDRGP4 $55 +JUMPV +LABELV $56 +line 461 +;456: +;457: } +;458: +;459: +;460: +;461: bestd = 0; +ADDRLP4 8 +CNSTF4 0 +ASGNF4 +line 463 +;462: +;463: best = 0; +ADDRLP4 12 +CNSTI4 0 +ASGNI4 +line 465 +;464: +;465: for (i=0 ; i bestd) +ADDRLP4 4 +INDIRF4 +ADDRLP4 8 +INDIRF4 +LEF4 $64 +line 473 +;472: +;473: { +line 475 +;474: +;475: bestd = d; +ADDRLP4 8 +ADDRLP4 4 +INDIRF4 +ASGNF4 +line 477 +;476: +;477: best = i; +ADDRLP4 12 +ADDRLP4 0 +INDIRI4 +ASGNI4 +line 479 +;478: +;479: } +LABELV $64 +line 481 +;480: +;481: } +LABELV $59 +line 465 +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +ADDRLP4 0 +INDIRI4 +CNSTI4 162 +LTI4 $58 +line 485 +;482: +;483: +;484: +;485: return best; +ADDRLP4 12 +INDIRI4 +RETI4 +LABELV $55 +endproc DirToByte 24 0 +export ByteToDir +proc ByteToDir 4 0 +line 491 +;486: +;487:} +;488: +;489: +;490: +;491:void ByteToDir( int b, vec3_t dir ) { +line 493 +;492: +;493: if ( b < 0 || b >= NUMVERTEXNORMALS ) { +ADDRLP4 0 +ADDRFP4 0 +INDIRI4 +ASGNI4 +ADDRLP4 0 +INDIRI4 +CNSTI4 0 +LTI4 $69 +ADDRLP4 0 +INDIRI4 +CNSTI4 162 +LTI4 $67 +LABELV $69 +line 495 +;494: +;495: VectorCopy( vec3_origin, dir ); +ADDRFP4 4 +INDIRP4 +ADDRGP4 vec3_origin +INDIRB +ASGNB 12 +line 497 +;496: +;497: return; +ADDRGP4 $66 +JUMPV +LABELV $67 +line 501 +;498: +;499: } +;500: +;501: VectorCopy (bytedirs[b], dir); +ADDRFP4 4 +INDIRP4 +CNSTI4 12 +ADDRFP4 0 +INDIRI4 +MULI4 +ADDRGP4 bytedirs +ADDP4 +INDIRB +ASGNB 12 +line 503 +;502: +;503:} +LABELV $66 +endproc ByteToDir 4 0 +export ColorBytes3 +proc ColorBytes3 40 0 +line 509 +;504: +;505: +;506: +;507: +;508: +;509:unsigned ColorBytes3 (float r, float g, float b) { +line 515 +;510: +;511: unsigned i; +;512: +;513: +;514: +;515: ( (byte *)&i )[0] = r * 255; +ADDRLP4 8 +CNSTF4 1132396544 +ADDRFP4 0 +INDIRF4 +MULF4 +ASGNF4 +ADDRLP4 12 +CNSTF4 1325400064 +ASGNF4 +ADDRLP4 8 +INDIRF4 +ADDRLP4 12 +INDIRF4 +LTF4 $72 +ADDRLP4 4 +ADDRLP4 8 +INDIRF4 +ADDRLP4 12 +INDIRF4 +SUBF4 +CVFI4 4 +CVIU4 4 +CNSTU4 2147483648 +ADDU4 +ASGNU4 +ADDRGP4 $73 +JUMPV +LABELV $72 +ADDRLP4 4 +ADDRLP4 8 +INDIRF4 +CVFI4 4 +CVIU4 4 +ASGNU4 +LABELV $73 +ADDRLP4 0 +ADDRLP4 4 +INDIRU4 +CVUU1 4 +ASGNU1 +line 517 +;516: +;517: ( (byte *)&i )[1] = g * 255; +ADDRLP4 20 +CNSTF4 1132396544 +ADDRFP4 4 +INDIRF4 +MULF4 +ASGNF4 +ADDRLP4 24 +CNSTF4 1325400064 +ASGNF4 +ADDRLP4 20 +INDIRF4 +ADDRLP4 24 +INDIRF4 +LTF4 $76 +ADDRLP4 16 +ADDRLP4 20 +INDIRF4 +ADDRLP4 24 +INDIRF4 +SUBF4 +CVFI4 4 +CVIU4 4 +CNSTU4 2147483648 +ADDU4 +ASGNU4 +ADDRGP4 $77 +JUMPV +LABELV $76 +ADDRLP4 16 +ADDRLP4 20 +INDIRF4 +CVFI4 4 +CVIU4 4 +ASGNU4 +LABELV $77 +ADDRLP4 0+1 +ADDRLP4 16 +INDIRU4 +CVUU1 4 +ASGNU1 +line 519 +;518: +;519: ( (byte *)&i )[2] = b * 255; +ADDRLP4 32 +CNSTF4 1132396544 +ADDRFP4 8 +INDIRF4 +MULF4 +ASGNF4 +ADDRLP4 36 +CNSTF4 1325400064 +ASGNF4 +ADDRLP4 32 +INDIRF4 +ADDRLP4 36 +INDIRF4 +LTF4 $80 +ADDRLP4 28 +ADDRLP4 32 +INDIRF4 +ADDRLP4 36 +INDIRF4 +SUBF4 +CVFI4 4 +CVIU4 4 +CNSTU4 2147483648 +ADDU4 +ASGNU4 +ADDRGP4 $81 +JUMPV +LABELV $80 +ADDRLP4 28 +ADDRLP4 32 +INDIRF4 +CVFI4 4 +CVIU4 4 +ASGNU4 +LABELV $81 +ADDRLP4 0+2 +ADDRLP4 28 +INDIRU4 +CVUU1 4 +ASGNU1 +line 523 +;520: +;521: +;522: +;523: return i; +ADDRLP4 0 +INDIRU4 +RETU4 +LABELV $70 +endproc ColorBytes3 40 0 +export ColorBytes4 +proc ColorBytes4 52 0 +line 529 +;524: +;525:} +;526: +;527: +;528: +;529:unsigned ColorBytes4 (float r, float g, float b, float a) { +line 535 +;530: +;531: unsigned i; +;532: +;533: +;534: +;535: ( (byte *)&i )[0] = r * 255; +ADDRLP4 8 +CNSTF4 1132396544 +ADDRFP4 0 +INDIRF4 +MULF4 +ASGNF4 +ADDRLP4 12 +CNSTF4 1325400064 +ASGNF4 +ADDRLP4 8 +INDIRF4 +ADDRLP4 12 +INDIRF4 +LTF4 $84 +ADDRLP4 4 +ADDRLP4 8 +INDIRF4 +ADDRLP4 12 +INDIRF4 +SUBF4 +CVFI4 4 +CVIU4 4 +CNSTU4 2147483648 +ADDU4 +ASGNU4 +ADDRGP4 $85 +JUMPV +LABELV $84 +ADDRLP4 4 +ADDRLP4 8 +INDIRF4 +CVFI4 4 +CVIU4 4 +ASGNU4 +LABELV $85 +ADDRLP4 0 +ADDRLP4 4 +INDIRU4 +CVUU1 4 +ASGNU1 +line 537 +;536: +;537: ( (byte *)&i )[1] = g * 255; +ADDRLP4 20 +CNSTF4 1132396544 +ADDRFP4 4 +INDIRF4 +MULF4 +ASGNF4 +ADDRLP4 24 +CNSTF4 1325400064 +ASGNF4 +ADDRLP4 20 +INDIRF4 +ADDRLP4 24 +INDIRF4 +LTF4 $88 +ADDRLP4 16 +ADDRLP4 20 +INDIRF4 +ADDRLP4 24 +INDIRF4 +SUBF4 +CVFI4 4 +CVIU4 4 +CNSTU4 2147483648 +ADDU4 +ASGNU4 +ADDRGP4 $89 +JUMPV +LABELV $88 +ADDRLP4 16 +ADDRLP4 20 +INDIRF4 +CVFI4 4 +CVIU4 4 +ASGNU4 +LABELV $89 +ADDRLP4 0+1 +ADDRLP4 16 +INDIRU4 +CVUU1 4 +ASGNU1 +line 539 +;538: +;539: ( (byte *)&i )[2] = b * 255; +ADDRLP4 32 +CNSTF4 1132396544 +ADDRFP4 8 +INDIRF4 +MULF4 +ASGNF4 +ADDRLP4 36 +CNSTF4 1325400064 +ASGNF4 +ADDRLP4 32 +INDIRF4 +ADDRLP4 36 +INDIRF4 +LTF4 $92 +ADDRLP4 28 +ADDRLP4 32 +INDIRF4 +ADDRLP4 36 +INDIRF4 +SUBF4 +CVFI4 4 +CVIU4 4 +CNSTU4 2147483648 +ADDU4 +ASGNU4 +ADDRGP4 $93 +JUMPV +LABELV $92 +ADDRLP4 28 +ADDRLP4 32 +INDIRF4 +CVFI4 4 +CVIU4 4 +ASGNU4 +LABELV $93 +ADDRLP4 0+2 +ADDRLP4 28 +INDIRU4 +CVUU1 4 +ASGNU1 +line 541 +;540: +;541: ( (byte *)&i )[3] = a * 255; +ADDRLP4 44 +CNSTF4 1132396544 +ADDRFP4 12 +INDIRF4 +MULF4 +ASGNF4 +ADDRLP4 48 +CNSTF4 1325400064 +ASGNF4 +ADDRLP4 44 +INDIRF4 +ADDRLP4 48 +INDIRF4 +LTF4 $96 +ADDRLP4 40 +ADDRLP4 44 +INDIRF4 +ADDRLP4 48 +INDIRF4 +SUBF4 +CVFI4 4 +CVIU4 4 +CNSTU4 2147483648 +ADDU4 +ASGNU4 +ADDRGP4 $97 +JUMPV +LABELV $96 +ADDRLP4 40 +ADDRLP4 44 +INDIRF4 +CVFI4 4 +CVIU4 4 +ASGNU4 +LABELV $97 +ADDRLP4 0+3 +ADDRLP4 40 +INDIRU4 +CVUU1 4 +ASGNU1 +line 545 +;542: +;543: +;544: +;545: return i; +ADDRLP4 0 +INDIRU4 +RETU4 +LABELV $82 +endproc ColorBytes4 52 0 +export NormalizeColor +proc NormalizeColor 12 0 +line 551 +;546: +;547:} +;548: +;549: +;550: +;551:float NormalizeColor( const vec3_t in, vec3_t out ) { +line 557 +;552: +;553: float max; +;554: +;555: +;556: +;557: max = in[0]; +ADDRLP4 0 +ADDRFP4 0 +INDIRP4 +INDIRF4 +ASGNF4 +line 559 +;558: +;559: if ( in[1] > max ) { +ADDRFP4 0 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRF4 +ADDRLP4 0 +INDIRF4 +LEF4 $99 +line 561 +;560: +;561: max = in[1]; +ADDRLP4 0 +ADDRFP4 0 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRF4 +ASGNF4 +line 563 +;562: +;563: } +LABELV $99 +line 565 +;564: +;565: if ( in[2] > max ) { +ADDRFP4 0 +INDIRP4 +CNSTI4 8 +ADDP4 +INDIRF4 +ADDRLP4 0 +INDIRF4 +LEF4 $101 +line 567 +;566: +;567: max = in[2]; +ADDRLP4 0 +ADDRFP4 0 +INDIRP4 +CNSTI4 8 +ADDP4 +INDIRF4 +ASGNF4 +line 569 +;568: +;569: } +LABELV $101 +line 573 +;570: +;571: +;572: +;573: if ( !max ) { +ADDRLP4 0 +INDIRF4 +CNSTF4 0 +NEF4 $103 +line 575 +;574: +;575: VectorClear( out ); +ADDRLP4 4 +ADDRFP4 4 +INDIRP4 +ASGNP4 +ADDRLP4 8 +CNSTF4 0 +ASGNF4 +ADDRLP4 4 +INDIRP4 +CNSTI4 8 +ADDP4 +ADDRLP4 8 +INDIRF4 +ASGNF4 +ADDRLP4 4 +INDIRP4 +CNSTI4 4 +ADDP4 +ADDRLP4 8 +INDIRF4 +ASGNF4 +ADDRLP4 4 +INDIRP4 +ADDRLP4 8 +INDIRF4 +ASGNF4 +line 577 +;576: +;577: } else { +ADDRGP4 $104 +JUMPV +LABELV $103 +line 579 +;578: +;579: out[0] = in[0] / max; +ADDRFP4 4 +INDIRP4 +ADDRFP4 0 +INDIRP4 +INDIRF4 +ADDRLP4 0 +INDIRF4 +DIVF4 +ASGNF4 +line 581 +;580: +;581: out[1] = in[1] / max; +ADDRLP4 4 +CNSTI4 4 +ASGNI4 +ADDRFP4 4 +INDIRP4 +ADDRLP4 4 +INDIRI4 +ADDP4 +ADDRFP4 0 +INDIRP4 +ADDRLP4 4 +INDIRI4 +ADDP4 +INDIRF4 +ADDRLP4 0 +INDIRF4 +DIVF4 +ASGNF4 +line 583 +;582: +;583: out[2] = in[2] / max; +ADDRLP4 8 +CNSTI4 8 +ASGNI4 +ADDRFP4 4 +INDIRP4 +ADDRLP4 8 +INDIRI4 +ADDP4 +ADDRFP4 0 +INDIRP4 +ADDRLP4 8 +INDIRI4 +ADDP4 +INDIRF4 +ADDRLP4 0 +INDIRF4 +DIVF4 +ASGNF4 +line 585 +;584: +;585: } +LABELV $104 +line 587 +;586: +;587: return max; +ADDRLP4 0 +INDIRF4 +RETF4 +LABELV $98 +endproc NormalizeColor 12 0 +export PlaneFromPoints +proc PlaneFromPoints 76 12 +line 611 +;588: +;589:} +;590: +;591: +;592: +;593: +;594: +;595:/* +;596: +;597:===================== +;598: +;599:PlaneFromPoints +;600: +;601: +;602: +;603:Returns false if the triangle is degenrate. +;604: +;605:The normal will point out of the clock for clockwise ordered points +;606: +;607:===================== +;608: +;609:*/ +;610: +;611:qboolean PlaneFromPoints( vec4_t plane, const vec3_t a, const vec3_t b, const vec3_t c ) { +line 617 +;612: +;613: vec3_t d1, d2; +;614: +;615: +;616: +;617: VectorSubtract( b, a, d1 ); +ADDRLP4 24 +ADDRFP4 8 +INDIRP4 +ASGNP4 +ADDRLP4 28 +ADDRFP4 4 +INDIRP4 +ASGNP4 +ADDRLP4 0 +ADDRLP4 24 +INDIRP4 +INDIRF4 +ADDRLP4 28 +INDIRP4 +INDIRF4 +SUBF4 +ASGNF4 +ADDRLP4 32 +CNSTI4 4 +ASGNI4 +ADDRLP4 0+4 +ADDRLP4 24 +INDIRP4 +ADDRLP4 32 +INDIRI4 +ADDP4 +INDIRF4 +ADDRLP4 28 +INDIRP4 +ADDRLP4 32 +INDIRI4 +ADDP4 +INDIRF4 +SUBF4 +ASGNF4 +ADDRLP4 36 +CNSTI4 8 +ASGNI4 +ADDRLP4 0+8 +ADDRFP4 8 +INDIRP4 +ADDRLP4 36 +INDIRI4 +ADDP4 +INDIRF4 +ADDRFP4 4 +INDIRP4 +ADDRLP4 36 +INDIRI4 +ADDP4 +INDIRF4 +SUBF4 +ASGNF4 +line 619 +;618: +;619: VectorSubtract( c, a, d2 ); +ADDRLP4 40 +ADDRFP4 12 +INDIRP4 +ASGNP4 +ADDRLP4 44 +ADDRFP4 4 +INDIRP4 +ASGNP4 +ADDRLP4 12 +ADDRLP4 40 +INDIRP4 +INDIRF4 +ADDRLP4 44 +INDIRP4 +INDIRF4 +SUBF4 +ASGNF4 +ADDRLP4 48 +CNSTI4 4 +ASGNI4 +ADDRLP4 12+4 +ADDRLP4 40 +INDIRP4 +ADDRLP4 48 +INDIRI4 +ADDP4 +INDIRF4 +ADDRLP4 44 +INDIRP4 +ADDRLP4 48 +INDIRI4 +ADDP4 +INDIRF4 +SUBF4 +ASGNF4 +ADDRLP4 52 +CNSTI4 8 +ASGNI4 +ADDRLP4 12+8 +ADDRFP4 12 +INDIRP4 +ADDRLP4 52 +INDIRI4 +ADDP4 +INDIRF4 +ADDRFP4 4 +INDIRP4 +ADDRLP4 52 +INDIRI4 +ADDP4 +INDIRF4 +SUBF4 +ASGNF4 +line 621 +;620: +;621: CrossProduct( d2, d1, plane ); +ADDRLP4 12 +ARGP4 +ADDRLP4 0 +ARGP4 +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRGP4 CrossProduct +CALLV +pop +line 623 +;622: +;623: if ( VectorNormalize( plane ) == 0 ) { +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRLP4 56 +ADDRGP4 VectorNormalize +CALLF4 +ASGNF4 +ADDRLP4 56 +INDIRF4 +CNSTF4 0 +NEF4 $110 +line 625 +;624: +;625: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $105 +JUMPV +LABELV $110 +line 631 +;626: +;627: } +;628: +;629: +;630: +;631: plane[3] = DotProduct( a, plane ); +ADDRLP4 60 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 64 +ADDRFP4 4 +INDIRP4 +ASGNP4 +ADDRLP4 68 +CNSTI4 4 +ASGNI4 +ADDRLP4 72 +CNSTI4 8 +ASGNI4 +ADDRLP4 60 +INDIRP4 +CNSTI4 12 +ADDP4 +ADDRLP4 64 +INDIRP4 +INDIRF4 +ADDRLP4 60 +INDIRP4 +INDIRF4 +MULF4 +ADDRLP4 64 +INDIRP4 +ADDRLP4 68 +INDIRI4 +ADDP4 +INDIRF4 +ADDRLP4 60 +INDIRP4 +ADDRLP4 68 +INDIRI4 +ADDP4 +INDIRF4 +MULF4 +ADDF4 +ADDRLP4 64 +INDIRP4 +ADDRLP4 72 +INDIRI4 +ADDP4 +INDIRF4 +ADDRLP4 60 +INDIRP4 +ADDRLP4 72 +INDIRI4 +ADDP4 +INDIRF4 +MULF4 +ADDF4 +ASGNF4 +line 633 +;632: +;633: return qtrue; +CNSTI4 1 +RETI4 +LABELV $105 +endproc PlaneFromPoints 76 12 +export RotatePointAroundVector +proc RotatePointAroundVector 256 12 +line 655 +;634: +;635:} +;636: +;637: +;638: +;639:/* +;640: +;641:=============== +;642: +;643:RotatePointAroundVector +;644: +;645: +;646: +;647:This is not implemented very well... +;648: +;649:=============== +;650: +;651:*/ +;652: +;653:void RotatePointAroundVector( vec3_t dst, const vec3_t dir, const vec3_t point, +;654: +;655: float degrees ) { +line 675 +;656: +;657: float m[3][3]; +;658: +;659: float im[3][3]; +;660: +;661: float zrot[3][3]; +;662: +;663: float tmpmat[3][3]; +;664: +;665: float rot[3][3]; +;666: +;667: int i; +;668: +;669: vec3_t vr, vup, vf; +;670: +;671: float rad; +;672: +;673: +;674: +;675: vf[0] = dir[0]; +ADDRLP4 148 +ADDRFP4 4 +INDIRP4 +INDIRF4 +ASGNF4 +line 677 +;676: +;677: vf[1] = dir[1]; +ADDRLP4 148+4 +ADDRFP4 4 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRF4 +ASGNF4 +line 679 +;678: +;679: vf[2] = dir[2]; +ADDRLP4 148+8 +ADDRFP4 4 +INDIRP4 +CNSTI4 8 +ADDP4 +INDIRF4 +ASGNF4 +line 683 +;680: +;681: +;682: +;683: PerpendicularVector( vr, dir ); +ADDRLP4 160 +ARGP4 +ADDRFP4 4 +INDIRP4 +ARGP4 +ADDRGP4 PerpendicularVector +CALLV +pop +line 685 +;684: +;685: CrossProduct( vr, vf, vup ); +ADDRLP4 160 +ARGP4 +ADDRLP4 148 +ARGP4 +ADDRLP4 176 +ARGP4 +ADDRGP4 CrossProduct +CALLV +pop +line 689 +;686: +;687: +;688: +;689: m[0][0] = vr[0]; +ADDRLP4 40 +ADDRLP4 160 +INDIRF4 +ASGNF4 +line 691 +;690: +;691: m[1][0] = vr[1]; +ADDRLP4 40+12 +ADDRLP4 160+4 +INDIRF4 +ASGNF4 +line 693 +;692: +;693: m[2][0] = vr[2]; +ADDRLP4 40+24 +ADDRLP4 160+8 +INDIRF4 +ASGNF4 +line 697 +;694: +;695: +;696: +;697: m[0][1] = vup[0]; +ADDRLP4 40+4 +ADDRLP4 176 +INDIRF4 +ASGNF4 +line 699 +;698: +;699: m[1][1] = vup[1]; +ADDRLP4 40+12+4 +ADDRLP4 176+4 +INDIRF4 +ASGNF4 +line 701 +;700: +;701: m[2][1] = vup[2]; +ADDRLP4 40+24+4 +ADDRLP4 176+8 +INDIRF4 +ASGNF4 +line 705 +;702: +;703: +;704: +;705: m[0][2] = vf[0]; +ADDRLP4 40+8 +ADDRLP4 148 +INDIRF4 +ASGNF4 +line 707 +;706: +;707: m[1][2] = vf[1]; +ADDRLP4 40+12+8 +ADDRLP4 148+4 +INDIRF4 +ASGNF4 +line 709 +;708: +;709: m[2][2] = vf[2]; +ADDRLP4 40+24+8 +ADDRLP4 148+8 +INDIRF4 +ASGNF4 +line 713 +;710: +;711: +;712: +;713: memcpy( im, m, sizeof( im ) ); +ADDRLP4 112 +ARGP4 +ADDRLP4 40 +ARGP4 +CNSTI4 36 +ARGI4 +ADDRGP4 memcpy +CALLP4 +pop +line 717 +;714: +;715: +;716: +;717: im[0][1] = m[1][0]; +ADDRLP4 112+4 +ADDRLP4 40+12 +INDIRF4 +ASGNF4 +line 719 +;718: +;719: im[0][2] = m[2][0]; +ADDRLP4 112+8 +ADDRLP4 40+24 +INDIRF4 +ASGNF4 +line 721 +;720: +;721: im[1][0] = m[0][1]; +ADDRLP4 112+12 +ADDRLP4 40+4 +INDIRF4 +ASGNF4 +line 723 +;722: +;723: im[1][2] = m[2][1]; +ADDRLP4 112+12+8 +ADDRLP4 40+24+4 +INDIRF4 +ASGNF4 +line 725 +;724: +;725: im[2][0] = m[0][2]; +ADDRLP4 112+24 +ADDRLP4 40+8 +INDIRF4 +ASGNF4 +line 727 +;726: +;727: im[2][1] = m[1][2]; +ADDRLP4 112+24+4 +ADDRLP4 40+12+8 +INDIRF4 +ASGNF4 +line 731 +;728: +;729: +;730: +;731: memset( zrot, 0, sizeof( zrot ) ); +ADDRLP4 76 +ARGP4 +CNSTI4 0 +ARGI4 +CNSTI4 36 +ARGI4 +ADDRGP4 memset +CALLP4 +pop +line 733 +;732: +;733: zrot[0][0] = zrot[1][1] = zrot[2][2] = 1.0F; +ADDRLP4 224 +CNSTF4 1065353216 +ASGNF4 +ADDRLP4 76+24+8 +ADDRLP4 224 +INDIRF4 +ASGNF4 +ADDRLP4 76+12+4 +ADDRLP4 224 +INDIRF4 +ASGNF4 +ADDRLP4 76 +ADDRLP4 224 +INDIRF4 +ASGNF4 +line 737 +;734: +;735: +;736: +;737: rad = DEG2RAD( degrees ); +ADDRLP4 172 +CNSTF4 1078530011 +ADDRFP4 12 +INDIRF4 +MULF4 +CNSTF4 1127481344 +DIVF4 +ASGNF4 +line 739 +;738: +;739: zrot[0][0] = cos( rad ); +ADDRLP4 172 +INDIRF4 +ARGF4 +ADDRLP4 228 +ADDRGP4 cos +CALLF4 +ASGNF4 +ADDRLP4 76 +ADDRLP4 228 +INDIRF4 +ASGNF4 +line 741 +;740: +;741: zrot[0][1] = sin( rad ); +ADDRLP4 172 +INDIRF4 +ARGF4 +ADDRLP4 232 +ADDRGP4 sin +CALLF4 +ASGNF4 +ADDRLP4 76+4 +ADDRLP4 232 +INDIRF4 +ASGNF4 +line 743 +;742: +;743: zrot[1][0] = -sin( rad ); +ADDRLP4 172 +INDIRF4 +ARGF4 +ADDRLP4 236 +ADDRGP4 sin +CALLF4 +ASGNF4 +ADDRLP4 76+12 +ADDRLP4 236 +INDIRF4 +NEGF4 +ASGNF4 +line 745 +;744: +;745: zrot[1][1] = cos( rad ); +ADDRLP4 172 +INDIRF4 +ARGF4 +ADDRLP4 240 +ADDRGP4 cos +CALLF4 +ASGNF4 +ADDRLP4 76+12+4 +ADDRLP4 240 +INDIRF4 +ASGNF4 +line 749 +;746: +;747: +;748: +;749: MatrixMultiply( m, zrot, tmpmat ); +ADDRLP4 40 +ARGP4 +ADDRLP4 76 +ARGP4 +ADDRLP4 188 +ARGP4 +ADDRGP4 MatrixMultiply +CALLV +pop +line 751 +;750: +;751: MatrixMultiply( tmpmat, im, rot ); +ADDRLP4 188 +ARGP4 +ADDRLP4 112 +ARGP4 +ADDRLP4 4 +ARGP4 +ADDRGP4 MatrixMultiply +CALLV +pop +line 755 +;752: +;753: +;754: +;755: for ( i = 0; i < 3; i++ ) { +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +LABELV $157 +line 757 +;756: +;757: dst[i] = rot[i][0] * point[0] + rot[i][1] * point[1] + rot[i][2] * point[2]; +ADDRLP4 248 +CNSTI4 12 +ADDRLP4 0 +INDIRI4 +MULI4 +ASGNI4 +ADDRLP4 252 +ADDRFP4 8 +INDIRP4 +ASGNP4 +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRFP4 0 +INDIRP4 +ADDP4 +ADDRLP4 248 +INDIRI4 +ADDRLP4 4 +ADDP4 +INDIRF4 +ADDRLP4 252 +INDIRP4 +INDIRF4 +MULF4 +ADDRLP4 248 +INDIRI4 +ADDRLP4 4+4 +ADDP4 +INDIRF4 +ADDRLP4 252 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRF4 +MULF4 +ADDF4 +ADDRLP4 248 +INDIRI4 +ADDRLP4 4+8 +ADDP4 +INDIRF4 +ADDRLP4 252 +INDIRP4 +CNSTI4 8 +ADDP4 +INDIRF4 +MULF4 +ADDF4 +ASGNF4 +line 759 +;758: +;759: } +LABELV $158 +line 755 +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +ADDRLP4 0 +INDIRI4 +CNSTI4 3 +LTI4 $157 +line 761 +;760: +;761:} +LABELV $112 +endproc RotatePointAroundVector 256 12 +export RotateAroundDirection +proc RotateAroundDirection 20 16 +line 775 +;762: +;763: +;764: +;765:/* +;766: +;767:=============== +;768: +;769:RotateAroundDirection +;770: +;771:=============== +;772: +;773:*/ +;774: +;775:void RotateAroundDirection( vec3_t axis[3], float yaw ) { +line 781 +;776: +;777: +;778: +;779: // create an arbitrary axis[1] +;780: +;781: PerpendicularVector( axis[1], axis[0] ); +ADDRLP4 0 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 0 +INDIRP4 +CNSTI4 12 +ADDP4 +ARGP4 +ADDRLP4 0 +INDIRP4 +ARGP4 +ADDRGP4 PerpendicularVector +CALLV +pop +line 787 +;782: +;783: +;784: +;785: // rotate it around axis[0] by yaw +;786: +;787: if ( yaw ) { +ADDRFP4 4 +INDIRF4 +CNSTF4 0 +EQF4 $164 +line 793 +;788: +;789: vec3_t temp; +;790: +;791: +;792: +;793: VectorCopy( axis[1], temp ); +ADDRLP4 4 +ADDRFP4 0 +INDIRP4 +CNSTI4 12 +ADDP4 +INDIRB +ASGNB 12 +line 795 +;794: +;795: RotatePointAroundVector( axis[1], axis[0], temp, yaw ); +ADDRLP4 16 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 16 +INDIRP4 +CNSTI4 12 +ADDP4 +ARGP4 +ADDRLP4 16 +INDIRP4 +ARGP4 +ADDRLP4 4 +ARGP4 +ADDRFP4 4 +INDIRF4 +ARGF4 +ADDRGP4 RotatePointAroundVector +CALLV +pop +line 797 +;796: +;797: } +LABELV $164 +line 803 +;798: +;799: +;800: +;801: // cross to get axis[2] +;802: +;803: CrossProduct( axis[0], axis[1], axis[2] ); +ADDRLP4 4 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 4 +INDIRP4 +ARGP4 +ADDRLP4 4 +INDIRP4 +CNSTI4 12 +ADDP4 +ARGP4 +ADDRLP4 4 +INDIRP4 +CNSTI4 24 +ADDP4 +ARGP4 +ADDRGP4 CrossProduct +CALLV +pop +line 805 +;804: +;805:} +LABELV $163 +endproc RotateAroundDirection 20 16 +export vectoangles +proc vectoangles 40 8 +line 813 +;806: +;807: +;808: +;809: +;810: +;811: +;812: +;813:void vectoangles( const vec3_t value1, vec3_t angles ) { +line 821 +;814: +;815: float forward; +;816: +;817: float yaw, pitch; +;818: +;819: +;820: +;821: if ( value1[1] == 0 && value1[0] == 0 ) { +ADDRLP4 12 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 16 +CNSTF4 0 +ASGNF4 +ADDRLP4 12 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRF4 +ADDRLP4 16 +INDIRF4 +NEF4 $167 +ADDRLP4 12 +INDIRP4 +INDIRF4 +ADDRLP4 16 +INDIRF4 +NEF4 $167 +line 823 +;822: +;823: yaw = 0; +ADDRLP4 0 +CNSTF4 0 +ASGNF4 +line 825 +;824: +;825: if ( value1[2] > 0 ) { +ADDRFP4 0 +INDIRP4 +CNSTI4 8 +ADDP4 +INDIRF4 +CNSTF4 0 +LEF4 $169 +line 827 +;826: +;827: pitch = 90; +ADDRLP4 4 +CNSTF4 1119092736 +ASGNF4 +line 829 +;828: +;829: } +ADDRGP4 $168 +JUMPV +LABELV $169 +line 831 +;830: +;831: else { +line 833 +;832: +;833: pitch = 270; +ADDRLP4 4 +CNSTF4 1132920832 +ASGNF4 +line 835 +;834: +;835: } +line 837 +;836: +;837: } +ADDRGP4 $168 +JUMPV +LABELV $167 +line 839 +;838: +;839: else { +line 841 +;840: +;841: if ( value1[0] ) { +ADDRFP4 0 +INDIRP4 +INDIRF4 +CNSTF4 0 +EQF4 $171 +line 843 +;842: +;843: yaw = ( atan2 ( value1[1], value1[0] ) * 180 / M_PI ); +ADDRLP4 20 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 20 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRF4 +ARGF4 +ADDRLP4 20 +INDIRP4 +INDIRF4 +ARGF4 +ADDRLP4 24 +ADDRGP4 atan2 +CALLF4 +ASGNF4 +ADDRLP4 0 +CNSTF4 1127481344 +ADDRLP4 24 +INDIRF4 +MULF4 +CNSTF4 1078530011 +DIVF4 +ASGNF4 +line 845 +;844: +;845: } +ADDRGP4 $172 +JUMPV +LABELV $171 +line 847 +;846: +;847: else if ( value1[1] > 0 ) { +ADDRFP4 0 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRF4 +CNSTF4 0 +LEF4 $173 +line 849 +;848: +;849: yaw = 90; +ADDRLP4 0 +CNSTF4 1119092736 +ASGNF4 +line 851 +;850: +;851: } +ADDRGP4 $174 +JUMPV +LABELV $173 +line 853 +;852: +;853: else { +line 855 +;854: +;855: yaw = 270; +ADDRLP4 0 +CNSTF4 1132920832 +ASGNF4 +line 857 +;856: +;857: } +LABELV $174 +LABELV $172 +line 859 +;858: +;859: if ( yaw < 0 ) { +ADDRLP4 0 +INDIRF4 +CNSTF4 0 +GEF4 $175 +line 861 +;860: +;861: yaw += 360; +ADDRLP4 0 +ADDRLP4 0 +INDIRF4 +CNSTF4 1135869952 +ADDF4 +ASGNF4 +line 863 +;862: +;863: } +LABELV $175 +line 867 +;864: +;865: +;866: +;867: forward = sqrt ( value1[0]*value1[0] + value1[1]*value1[1] ); +ADDRLP4 20 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 24 +ADDRLP4 20 +INDIRP4 +INDIRF4 +ASGNF4 +ADDRLP4 28 +ADDRLP4 20 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRF4 +ASGNF4 +ADDRLP4 24 +INDIRF4 +ADDRLP4 24 +INDIRF4 +MULF4 +ADDRLP4 28 +INDIRF4 +ADDRLP4 28 +INDIRF4 +MULF4 +ADDF4 +ARGF4 +ADDRLP4 32 +ADDRGP4 sqrt +CALLF4 +ASGNF4 +ADDRLP4 8 +ADDRLP4 32 +INDIRF4 +ASGNF4 +line 869 +;868: +;869: pitch = ( atan2(value1[2], forward) * 180 / M_PI ); +ADDRFP4 0 +INDIRP4 +CNSTI4 8 +ADDP4 +INDIRF4 +ARGF4 +ADDRLP4 8 +INDIRF4 +ARGF4 +ADDRLP4 36 +ADDRGP4 atan2 +CALLF4 +ASGNF4 +ADDRLP4 4 +CNSTF4 1127481344 +ADDRLP4 36 +INDIRF4 +MULF4 +CNSTF4 1078530011 +DIVF4 +ASGNF4 +line 871 +;870: +;871: if ( pitch < 0 ) { +ADDRLP4 4 +INDIRF4 +CNSTF4 0 +GEF4 $177 +line 873 +;872: +;873: pitch += 360; +ADDRLP4 4 +ADDRLP4 4 +INDIRF4 +CNSTF4 1135869952 +ADDF4 +ASGNF4 +line 875 +;874: +;875: } +LABELV $177 +line 877 +;876: +;877: } +LABELV $168 +line 881 +;878: +;879: +;880: +;881: angles[PITCH] = -pitch; +ADDRFP4 4 +INDIRP4 +ADDRLP4 4 +INDIRF4 +NEGF4 +ASGNF4 +line 883 +;882: +;883: angles[YAW] = yaw; +ADDRFP4 4 +INDIRP4 +CNSTI4 4 +ADDP4 +ADDRLP4 0 +INDIRF4 +ASGNF4 +line 885 +;884: +;885: angles[ROLL] = 0; +ADDRFP4 4 +INDIRP4 +CNSTI4 8 +ADDP4 +CNSTF4 0 +ASGNF4 +line 887 +;886: +;887:} +LABELV $166 +endproc vectoangles 40 8 +export AnglesToAxis +proc AnglesToAxis 16 16 +line 903 +;888: +;889: +;890: +;891: +;892: +;893:/* +;894: +;895:================= +;896: +;897:AnglesToAxis +;898: +;899:================= +;900: +;901:*/ +;902: +;903:void AnglesToAxis( const vec3_t angles, vec3_t axis[3] ) { +line 911 +;904: +;905: vec3_t right; +;906: +;907: +;908: +;909: // angle vectors returns "right" instead of "y axis" +;910: +;911: AngleVectors( angles, axis[0], right, axis[2] ); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRLP4 12 +ADDRFP4 4 +INDIRP4 +ASGNP4 +ADDRLP4 12 +INDIRP4 +ARGP4 +ADDRLP4 0 +ARGP4 +ADDRLP4 12 +INDIRP4 +CNSTI4 24 +ADDP4 +ARGP4 +ADDRGP4 AngleVectors +CALLV +pop +line 913 +;912: +;913: VectorSubtract( vec3_origin, right, axis[1] ); +ADDRFP4 4 +INDIRP4 +CNSTI4 12 +ADDP4 +ADDRGP4 vec3_origin +INDIRF4 +ADDRLP4 0 +INDIRF4 +SUBF4 +ASGNF4 +ADDRFP4 4 +INDIRP4 +CNSTI4 16 +ADDP4 +ADDRGP4 vec3_origin+4 +INDIRF4 +ADDRLP4 0+4 +INDIRF4 +SUBF4 +ASGNF4 +ADDRFP4 4 +INDIRP4 +CNSTI4 20 +ADDP4 +ADDRGP4 vec3_origin+8 +INDIRF4 +ADDRLP4 0+8 +INDIRF4 +SUBF4 +ASGNF4 +line 915 +;914: +;915:} +LABELV $179 +endproc AnglesToAxis 16 16 +export AxisClear +proc AxisClear 0 0 +line 919 +;916: +;917: +;918: +;919:void AxisClear( vec3_t axis[3] ) { +line 921 +;920: +;921: axis[0][0] = 1; +ADDRFP4 0 +INDIRP4 +CNSTF4 1065353216 +ASGNF4 +line 923 +;922: +;923: axis[0][1] = 0; +ADDRFP4 0 +INDIRP4 +CNSTI4 4 +ADDP4 +CNSTF4 0 +ASGNF4 +line 925 +;924: +;925: axis[0][2] = 0; +ADDRFP4 0 +INDIRP4 +CNSTI4 8 +ADDP4 +CNSTF4 0 +ASGNF4 +line 927 +;926: +;927: axis[1][0] = 0; +ADDRFP4 0 +INDIRP4 +CNSTI4 12 +ADDP4 +CNSTF4 0 +ASGNF4 +line 929 +;928: +;929: axis[1][1] = 1; +ADDRFP4 0 +INDIRP4 +CNSTI4 16 +ADDP4 +CNSTF4 1065353216 +ASGNF4 +line 931 +;930: +;931: axis[1][2] = 0; +ADDRFP4 0 +INDIRP4 +CNSTI4 20 +ADDP4 +CNSTF4 0 +ASGNF4 +line 933 +;932: +;933: axis[2][0] = 0; +ADDRFP4 0 +INDIRP4 +CNSTI4 24 +ADDP4 +CNSTF4 0 +ASGNF4 +line 935 +;934: +;935: axis[2][1] = 0; +ADDRFP4 0 +INDIRP4 +CNSTI4 28 +ADDP4 +CNSTF4 0 +ASGNF4 +line 937 +;936: +;937: axis[2][2] = 1; +ADDRFP4 0 +INDIRP4 +CNSTI4 32 +ADDP4 +CNSTF4 1065353216 +ASGNF4 +line 939 +;938: +;939:} +LABELV $184 +endproc AxisClear 0 0 +export AxisCopy +proc AxisCopy 8 0 +line 943 +;940: +;941: +;942: +;943:void AxisCopy( vec3_t in[3], vec3_t out[3] ) { +line 945 +;944: +;945: VectorCopy( in[0], out[0] ); +ADDRFP4 4 +INDIRP4 +ADDRFP4 0 +INDIRP4 +INDIRB +ASGNB 12 +line 947 +;946: +;947: VectorCopy( in[1], out[1] ); +ADDRLP4 0 +CNSTI4 12 +ASGNI4 +ADDRFP4 4 +INDIRP4 +ADDRLP4 0 +INDIRI4 +ADDP4 +ADDRFP4 0 +INDIRP4 +ADDRLP4 0 +INDIRI4 +ADDP4 +INDIRB +ASGNB 12 +line 949 +;948: +;949: VectorCopy( in[2], out[2] ); +ADDRLP4 4 +CNSTI4 24 +ASGNI4 +ADDRFP4 4 +INDIRP4 +ADDRLP4 4 +INDIRI4 +ADDP4 +ADDRFP4 0 +INDIRP4 +ADDRLP4 4 +INDIRI4 +ADDP4 +INDIRB +ASGNB 12 +line 951 +;950: +;951:} +LABELV $185 +endproc AxisCopy 8 0 +export ProjectPointOnPlane +proc ProjectPointOnPlane 60 0 +line 957 +;952: +;953: +;954: +;955:void ProjectPointOnPlane( vec3_t dst, const vec3_t p, const vec3_t normal ) +;956: +;957:{ +line 967 +;958: +;959: float d; +;960: +;961: vec3_t n; +;962: +;963: float inv_denom; +;964: +;965: +;966: +;967: inv_denom = DotProduct( normal, normal ); +ADDRLP4 20 +ADDRFP4 8 +INDIRP4 +ASGNP4 +ADDRLP4 24 +ADDRLP4 20 +INDIRP4 +INDIRF4 +ASGNF4 +ADDRLP4 28 +ADDRLP4 20 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRF4 +ASGNF4 +ADDRLP4 32 +ADDRLP4 20 +INDIRP4 +CNSTI4 8 +ADDP4 +INDIRF4 +ASGNF4 +ADDRLP4 0 +ADDRLP4 24 +INDIRF4 +ADDRLP4 24 +INDIRF4 +MULF4 +ADDRLP4 28 +INDIRF4 +ADDRLP4 28 +INDIRF4 +MULF4 +ADDF4 +ADDRLP4 32 +INDIRF4 +ADDRLP4 32 +INDIRF4 +MULF4 +ADDF4 +ASGNF4 +line 975 +;968: +;969:#ifndef Q3_VM +;970: +;971: assert( Q_fabs(inv_denom) != 0.0f ); // bk010122 - zero vectors get here +;972: +;973:#endif +;974: +;975: inv_denom = 1.0f / inv_denom; +ADDRLP4 0 +CNSTF4 1065353216 +ADDRLP4 0 +INDIRF4 +DIVF4 +ASGNF4 +line 979 +;976: +;977: +;978: +;979: d = DotProduct( normal, p ) * inv_denom; +ADDRLP4 36 +ADDRFP4 8 +INDIRP4 +ASGNP4 +ADDRLP4 40 +ADDRFP4 4 +INDIRP4 +ASGNP4 +ADDRLP4 44 +CNSTI4 4 +ASGNI4 +ADDRLP4 48 +CNSTI4 8 +ASGNI4 +ADDRLP4 16 +ADDRLP4 36 +INDIRP4 +INDIRF4 +ADDRLP4 40 +INDIRP4 +INDIRF4 +MULF4 +ADDRLP4 36 +INDIRP4 +ADDRLP4 44 +INDIRI4 +ADDP4 +INDIRF4 +ADDRLP4 40 +INDIRP4 +ADDRLP4 44 +INDIRI4 +ADDP4 +INDIRF4 +MULF4 +ADDF4 +ADDRLP4 36 +INDIRP4 +ADDRLP4 48 +INDIRI4 +ADDP4 +INDIRF4 +ADDRLP4 40 +INDIRP4 +ADDRLP4 48 +INDIRI4 +ADDP4 +INDIRF4 +MULF4 +ADDF4 +ADDRLP4 0 +INDIRF4 +MULF4 +ASGNF4 +line 983 +;980: +;981: +;982: +;983: n[0] = normal[0] * inv_denom; +ADDRLP4 4 +ADDRFP4 8 +INDIRP4 +INDIRF4 +ADDRLP4 0 +INDIRF4 +MULF4 +ASGNF4 +line 985 +;984: +;985: n[1] = normal[1] * inv_denom; +ADDRLP4 4+4 +ADDRFP4 8 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRF4 +ADDRLP4 0 +INDIRF4 +MULF4 +ASGNF4 +line 987 +;986: +;987: n[2] = normal[2] * inv_denom; +ADDRLP4 4+8 +ADDRFP4 8 +INDIRP4 +CNSTI4 8 +ADDP4 +INDIRF4 +ADDRLP4 0 +INDIRF4 +MULF4 +ASGNF4 +line 991 +;988: +;989: +;990: +;991: dst[0] = p[0] - d * n[0]; +ADDRFP4 0 +INDIRP4 +ADDRFP4 4 +INDIRP4 +INDIRF4 +ADDRLP4 16 +INDIRF4 +ADDRLP4 4 +INDIRF4 +MULF4 +SUBF4 +ASGNF4 +line 993 +;992: +;993: dst[1] = p[1] - d * n[1]; +ADDRLP4 52 +CNSTI4 4 +ASGNI4 +ADDRFP4 0 +INDIRP4 +ADDRLP4 52 +INDIRI4 +ADDP4 +ADDRFP4 4 +INDIRP4 +ADDRLP4 52 +INDIRI4 +ADDP4 +INDIRF4 +ADDRLP4 16 +INDIRF4 +ADDRLP4 4+4 +INDIRF4 +MULF4 +SUBF4 +ASGNF4 +line 995 +;994: +;995: dst[2] = p[2] - d * n[2]; +ADDRLP4 56 +CNSTI4 8 +ASGNI4 +ADDRFP4 0 +INDIRP4 +ADDRLP4 56 +INDIRI4 +ADDP4 +ADDRFP4 4 +INDIRP4 +ADDRLP4 56 +INDIRI4 +ADDP4 +INDIRF4 +ADDRLP4 16 +INDIRF4 +ADDRLP4 4+8 +INDIRF4 +MULF4 +SUBF4 +ASGNF4 +line 997 +;996: +;997:} +LABELV $186 +endproc ProjectPointOnPlane 60 0 +export MakeNormalVectors +proc MakeNormalVectors 40 12 +line 1017 +;998: +;999: +;1000: +;1001:/* +;1002: +;1003:================ +;1004: +;1005:MakeNormalVectors +;1006: +;1007: +;1008: +;1009:Given a normalized forward vector, create two +;1010: +;1011:other perpendicular vectors +;1012: +;1013:================ +;1014: +;1015:*/ +;1016: +;1017:void MakeNormalVectors( const vec3_t forward, vec3_t right, vec3_t up) { +line 1027 +;1018: +;1019: float d; +;1020: +;1021: +;1022: +;1023: // this rotate and negate guarantees a vector +;1024: +;1025: // not colinear with the original +;1026: +;1027: right[1] = -forward[0]; +ADDRFP4 4 +INDIRP4 +CNSTI4 4 +ADDP4 +ADDRFP4 0 +INDIRP4 +INDIRF4 +NEGF4 +ASGNF4 +line 1029 +;1028: +;1029: right[2] = forward[1]; +ADDRFP4 4 +INDIRP4 +CNSTI4 8 +ADDP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRF4 +ASGNF4 +line 1031 +;1030: +;1031: right[0] = forward[2]; +ADDRFP4 4 +INDIRP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 8 +ADDP4 +INDIRF4 +ASGNF4 +line 1035 +;1032: +;1033: +;1034: +;1035: d = DotProduct (right, forward); +ADDRLP4 4 +ADDRFP4 4 +INDIRP4 +ASGNP4 +ADDRLP4 8 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 12 +CNSTI4 4 +ASGNI4 +ADDRLP4 16 +CNSTI4 8 +ASGNI4 +ADDRLP4 0 +ADDRLP4 4 +INDIRP4 +INDIRF4 +ADDRLP4 8 +INDIRP4 +INDIRF4 +MULF4 +ADDRLP4 4 +INDIRP4 +ADDRLP4 12 +INDIRI4 +ADDP4 +INDIRF4 +ADDRLP4 8 +INDIRP4 +ADDRLP4 12 +INDIRI4 +ADDP4 +INDIRF4 +MULF4 +ADDF4 +ADDRLP4 4 +INDIRP4 +ADDRLP4 16 +INDIRI4 +ADDP4 +INDIRF4 +ADDRLP4 8 +INDIRP4 +ADDRLP4 16 +INDIRI4 +ADDP4 +INDIRF4 +MULF4 +ADDF4 +ASGNF4 +line 1037 +;1036: +;1037: VectorMA (right, -d, forward, right); +ADDRLP4 20 +ADDRFP4 4 +INDIRP4 +ASGNP4 +ADDRLP4 20 +INDIRP4 +ADDRLP4 20 +INDIRP4 +INDIRF4 +ADDRFP4 0 +INDIRP4 +INDIRF4 +ADDRLP4 0 +INDIRF4 +NEGF4 +MULF4 +ADDF4 +ASGNF4 +ADDRLP4 24 +CNSTI4 4 +ASGNI4 +ADDRLP4 28 +ADDRFP4 4 +INDIRP4 +ADDRLP4 24 +INDIRI4 +ADDP4 +ASGNP4 +ADDRLP4 28 +INDIRP4 +ADDRLP4 28 +INDIRP4 +INDIRF4 +ADDRFP4 0 +INDIRP4 +ADDRLP4 24 +INDIRI4 +ADDP4 +INDIRF4 +ADDRLP4 0 +INDIRF4 +NEGF4 +MULF4 +ADDF4 +ASGNF4 +ADDRLP4 32 +CNSTI4 8 +ASGNI4 +ADDRLP4 36 +ADDRFP4 4 +INDIRP4 +ADDRLP4 32 +INDIRI4 +ADDP4 +ASGNP4 +ADDRLP4 36 +INDIRP4 +ADDRLP4 36 +INDIRP4 +INDIRF4 +ADDRFP4 0 +INDIRP4 +ADDRLP4 32 +INDIRI4 +ADDP4 +INDIRF4 +ADDRLP4 0 +INDIRF4 +NEGF4 +MULF4 +ADDF4 +ASGNF4 +line 1039 +;1038: +;1039: VectorNormalize (right); +ADDRFP4 4 +INDIRP4 +ARGP4 +ADDRGP4 VectorNormalize +CALLF4 +pop +line 1041 +;1040: +;1041: CrossProduct (right, forward, up); +ADDRFP4 4 +INDIRP4 +ARGP4 +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRFP4 8 +INDIRP4 +ARGP4 +ADDRGP4 CrossProduct +CALLV +pop +line 1043 +;1042: +;1043:} +LABELV $191 +endproc MakeNormalVectors 40 12 +export VectorRotate +proc VectorRotate 40 0 +line 1051 +;1044: +;1045: +;1046: +;1047: +;1048: +;1049:void VectorRotate( vec3_t in, vec3_t matrix[3], vec3_t out ) +;1050: +;1051:{ +line 1053 +;1052: +;1053: out[0] = DotProduct( in, matrix[0] ); +ADDRLP4 0 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 4 +ADDRFP4 4 +INDIRP4 +ASGNP4 +ADDRLP4 8 +CNSTI4 4 +ASGNI4 +ADDRLP4 12 +CNSTI4 8 +ASGNI4 +ADDRFP4 8 +INDIRP4 +ADDRLP4 0 +INDIRP4 +INDIRF4 +ADDRLP4 4 +INDIRP4 +INDIRF4 +MULF4 +ADDRLP4 0 +INDIRP4 +ADDRLP4 8 +INDIRI4 +ADDP4 +INDIRF4 +ADDRLP4 4 +INDIRP4 +ADDRLP4 8 +INDIRI4 +ADDP4 +INDIRF4 +MULF4 +ADDF4 +ADDRLP4 0 +INDIRP4 +ADDRLP4 12 +INDIRI4 +ADDP4 +INDIRF4 +ADDRLP4 4 +INDIRP4 +ADDRLP4 12 +INDIRI4 +ADDP4 +INDIRF4 +MULF4 +ADDF4 +ASGNF4 +line 1055 +;1054: +;1055: out[1] = DotProduct( in, matrix[1] ); +ADDRLP4 16 +CNSTI4 4 +ASGNI4 +ADDRLP4 20 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 24 +ADDRFP4 4 +INDIRP4 +ASGNP4 +ADDRFP4 8 +INDIRP4 +ADDRLP4 16 +INDIRI4 +ADDP4 +ADDRLP4 20 +INDIRP4 +INDIRF4 +ADDRLP4 24 +INDIRP4 +CNSTI4 12 +ADDP4 +INDIRF4 +MULF4 +ADDRLP4 20 +INDIRP4 +ADDRLP4 16 +INDIRI4 +ADDP4 +INDIRF4 +ADDRLP4 24 +INDIRP4 +CNSTI4 16 +ADDP4 +INDIRF4 +MULF4 +ADDF4 +ADDRLP4 20 +INDIRP4 +CNSTI4 8 +ADDP4 +INDIRF4 +ADDRLP4 24 +INDIRP4 +CNSTI4 20 +ADDP4 +INDIRF4 +MULF4 +ADDF4 +ASGNF4 +line 1057 +;1056: +;1057: out[2] = DotProduct( in, matrix[2] ); +ADDRLP4 28 +CNSTI4 8 +ASGNI4 +ADDRLP4 32 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 36 +ADDRFP4 4 +INDIRP4 +ASGNP4 +ADDRFP4 8 +INDIRP4 +ADDRLP4 28 +INDIRI4 +ADDP4 +ADDRLP4 32 +INDIRP4 +INDIRF4 +ADDRLP4 36 +INDIRP4 +CNSTI4 24 +ADDP4 +INDIRF4 +MULF4 +ADDRLP4 32 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRF4 +ADDRLP4 36 +INDIRP4 +CNSTI4 28 +ADDP4 +INDIRF4 +MULF4 +ADDF4 +ADDRLP4 32 +INDIRP4 +ADDRLP4 28 +INDIRI4 +ADDP4 +INDIRF4 +ADDRLP4 36 +INDIRP4 +CNSTI4 32 +ADDP4 +INDIRF4 +MULF4 +ADDF4 +ASGNF4 +line 1059 +;1058: +;1059:} +LABELV $192 +endproc VectorRotate 40 0 +export Q_rsqrt +proc Q_rsqrt 20 0 +line 1077 +;1060: +;1061: +;1062: +;1063://============================================================================ +;1064: +;1065: +;1066: +;1067:#if !idppc +;1068: +;1069:/* +;1070: +;1071:** float q_rsqrt( float number ) +;1072: +;1073:*/ +;1074: +;1075:float Q_rsqrt( float number ) +;1076: +;1077:{ +line 1083 +;1078: +;1079: long i; +;1080: +;1081: float x2, y; +;1082: +;1083: const float threehalfs = 1.5F; +ADDRLP4 12 +CNSTF4 1069547520 +ASGNF4 +line 1087 +;1084: +;1085: +;1086: +;1087: x2 = number * 0.5F; +ADDRLP4 8 +CNSTF4 1056964608 +ADDRFP4 0 +INDIRF4 +MULF4 +ASGNF4 +line 1089 +;1088: +;1089: y = number; +ADDRLP4 0 +ADDRFP4 0 +INDIRF4 +ASGNF4 +line 1091 +;1090: +;1091: i = * ( long * ) &y; // evil floating point bit level hacking +ADDRLP4 4 +ADDRLP4 0 +INDIRI4 +ASGNI4 +line 1093 +;1092: +;1093: i = 0x5f3759df - ( i >> 1 ); // what the fuck? +ADDRLP4 4 +CNSTI4 1597463007 +ADDRLP4 4 +INDIRI4 +CNSTI4 1 +RSHI4 +SUBI4 +ASGNI4 +line 1095 +;1094: +;1095: y = * ( float * ) &i; +ADDRLP4 0 +ADDRLP4 4 +INDIRF4 +ASGNF4 +line 1097 +;1096: +;1097: y = y * ( threehalfs - ( x2 * y * y ) ); // 1st iteration +ADDRLP4 16 +ADDRLP4 0 +INDIRF4 +ASGNF4 +ADDRLP4 0 +ADDRLP4 16 +INDIRF4 +ADDRLP4 12 +INDIRF4 +ADDRLP4 8 +INDIRF4 +ADDRLP4 16 +INDIRF4 +MULF4 +ADDRLP4 16 +INDIRF4 +MULF4 +SUBF4 +MULF4 +ASGNF4 +line 1113 +;1098: +;1099:// y = y * ( threehalfs - ( x2 * y * y ) ); // 2nd iteration, this can be removed +;1100: +;1101: +;1102: +;1103:#ifndef Q3_VM +;1104: +;1105:#ifdef __linux__ +;1106: +;1107: assert( !isnan(y) ); // bk010122 - FPE? +;1108: +;1109:#endif +;1110: +;1111:#endif +;1112: +;1113: return y; +ADDRLP4 0 +INDIRF4 +RETF4 +LABELV $193 +endproc Q_rsqrt 20 0 +export Q_fabs +proc Q_fabs 4 0 +line 1119 +;1114: +;1115:} +;1116: +;1117: +;1118: +;1119:float Q_fabs( float f ) { +line 1121 +;1120: +;1121: int tmp = * ( int * ) &f; +ADDRLP4 0 +ADDRFP4 0 +INDIRI4 +ASGNI4 +line 1123 +;1122: +;1123: tmp &= 0x7FFFFFFF; +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 2147483647 +BANDI4 +ASGNI4 +line 1125 +;1124: +;1125: return * ( float * ) &tmp; +ADDRLP4 0 +INDIRF4 +RETF4 +LABELV $194 +endproc Q_fabs 4 0 +export LerpAngle +proc LerpAngle 8 0 +line 1149 +;1126: +;1127:} +;1128: +;1129:#endif +;1130: +;1131: +;1132: +;1133://============================================================ +;1134: +;1135: +;1136: +;1137:/* +;1138: +;1139:=============== +;1140: +;1141:LerpAngle +;1142: +;1143: +;1144: +;1145:=============== +;1146: +;1147:*/ +;1148: +;1149:float LerpAngle (float from, float to, float frac) { +line 1155 +;1150: +;1151: float a; +;1152: +;1153: +;1154: +;1155: if ( to - from > 180 ) { +ADDRFP4 4 +INDIRF4 +ADDRFP4 0 +INDIRF4 +SUBF4 +CNSTF4 1127481344 +LEF4 $196 +line 1157 +;1156: +;1157: to -= 360; +ADDRFP4 4 +ADDRFP4 4 +INDIRF4 +CNSTF4 1135869952 +SUBF4 +ASGNF4 +line 1159 +;1158: +;1159: } +LABELV $196 +line 1161 +;1160: +;1161: if ( to - from < -180 ) { +ADDRFP4 4 +INDIRF4 +ADDRFP4 0 +INDIRF4 +SUBF4 +CNSTF4 3274964992 +GEF4 $198 +line 1163 +;1162: +;1163: to += 360; +ADDRFP4 4 +ADDRFP4 4 +INDIRF4 +CNSTF4 1135869952 +ADDF4 +ASGNF4 +line 1165 +;1164: +;1165: } +LABELV $198 +line 1167 +;1166: +;1167: a = from + frac * (to - from); +ADDRLP4 4 +ADDRFP4 0 +INDIRF4 +ASGNF4 +ADDRLP4 0 +ADDRLP4 4 +INDIRF4 +ADDRFP4 8 +INDIRF4 +ADDRFP4 4 +INDIRF4 +ADDRLP4 4 +INDIRF4 +SUBF4 +MULF4 +ADDF4 +ASGNF4 +line 1171 +;1168: +;1169: +;1170: +;1171: return a; +ADDRLP4 0 +INDIRF4 +RETF4 +LABELV $195 +endproc LerpAngle 8 0 +export AngleSubtract +proc AngleSubtract 4 0 +line 1193 +;1172: +;1173:} +;1174: +;1175: +;1176: +;1177: +;1178: +;1179:/* +;1180: +;1181:================= +;1182: +;1183:AngleSubtract +;1184: +;1185: +;1186: +;1187:Always returns a value from -180 to 180 +;1188: +;1189:================= +;1190: +;1191:*/ +;1192: +;1193:float AngleSubtract( float a1, float a2 ) { +line 1199 +;1194: +;1195: float a; +;1196: +;1197: +;1198: +;1199: a = a1 - a2; +ADDRLP4 0 +ADDRFP4 0 +INDIRF4 +ADDRFP4 4 +INDIRF4 +SUBF4 +ASGNF4 +ADDRGP4 $202 +JUMPV +LABELV $201 +line 1201 +;1200: +;1201: while ( a > 180 ) { +line 1203 +;1202: +;1203: a -= 360; +ADDRLP4 0 +ADDRLP4 0 +INDIRF4 +CNSTF4 1135869952 +SUBF4 +ASGNF4 +line 1205 +;1204: +;1205: } +LABELV $202 +line 1201 +ADDRLP4 0 +INDIRF4 +CNSTF4 1127481344 +GTF4 $201 +ADDRGP4 $205 +JUMPV +LABELV $204 +line 1207 +;1206: +;1207: while ( a < -180 ) { +line 1209 +;1208: +;1209: a += 360; +ADDRLP4 0 +ADDRLP4 0 +INDIRF4 +CNSTF4 1135869952 +ADDF4 +ASGNF4 +line 1211 +;1210: +;1211: } +LABELV $205 +line 1207 +ADDRLP4 0 +INDIRF4 +CNSTF4 3274964992 +LTF4 $204 +line 1213 +;1212: +;1213: return a; +ADDRLP4 0 +INDIRF4 +RETF4 +LABELV $200 +endproc AngleSubtract 4 0 +export AnglesSubtract +proc AnglesSubtract 20 8 +line 1221 +;1214: +;1215:} +;1216: +;1217: +;1218: +;1219: +;1220: +;1221:void AnglesSubtract( vec3_t v1, vec3_t v2, vec3_t v3 ) { +line 1223 +;1222: +;1223: v3[0] = AngleSubtract( v1[0], v2[0] ); +ADDRFP4 0 +INDIRP4 +INDIRF4 +ARGF4 +ADDRFP4 4 +INDIRP4 +INDIRF4 +ARGF4 +ADDRLP4 0 +ADDRGP4 AngleSubtract +CALLF4 +ASGNF4 +ADDRFP4 8 +INDIRP4 +ADDRLP4 0 +INDIRF4 +ASGNF4 +line 1225 +;1224: +;1225: v3[1] = AngleSubtract( v1[1], v2[1] ); +ADDRLP4 4 +CNSTI4 4 +ASGNI4 +ADDRFP4 0 +INDIRP4 +ADDRLP4 4 +INDIRI4 +ADDP4 +INDIRF4 +ARGF4 +ADDRFP4 4 +INDIRP4 +ADDRLP4 4 +INDIRI4 +ADDP4 +INDIRF4 +ARGF4 +ADDRLP4 8 +ADDRGP4 AngleSubtract +CALLF4 +ASGNF4 +ADDRFP4 8 +INDIRP4 +ADDRLP4 4 +INDIRI4 +ADDP4 +ADDRLP4 8 +INDIRF4 +ASGNF4 +line 1227 +;1226: +;1227: v3[2] = AngleSubtract( v1[2], v2[2] ); +ADDRLP4 12 +CNSTI4 8 +ASGNI4 +ADDRFP4 0 +INDIRP4 +ADDRLP4 12 +INDIRI4 +ADDP4 +INDIRF4 +ARGF4 +ADDRFP4 4 +INDIRP4 +ADDRLP4 12 +INDIRI4 +ADDP4 +INDIRF4 +ARGF4 +ADDRLP4 16 +ADDRGP4 AngleSubtract +CALLF4 +ASGNF4 +ADDRFP4 8 +INDIRP4 +ADDRLP4 12 +INDIRI4 +ADDP4 +ADDRLP4 16 +INDIRF4 +ASGNF4 +line 1229 +;1228: +;1229:} +LABELV $207 +endproc AnglesSubtract 20 8 +export AngleMod +proc AngleMod 0 0 +line 1235 +;1230: +;1231: +;1232: +;1233: +;1234: +;1235:float AngleMod(float a) { +line 1237 +;1236: +;1237: a = (360.0/65536) * ((int)(a*(65536/360.0)) & 65535); +ADDRFP4 0 +CNSTF4 1001652224 +CNSTF4 1127615329 +ADDRFP4 0 +INDIRF4 +MULF4 +CVFI4 4 +CNSTI4 65535 +BANDI4 +CVIF4 4 +MULF4 +ASGNF4 +line 1239 +;1238: +;1239: return a; +ADDRFP4 0 +INDIRF4 +RETF4 +LABELV $208 +endproc AngleMod 0 0 +export AngleNormalize360 +proc AngleNormalize360 0 0 +line 1261 +;1240: +;1241:} +;1242: +;1243: +;1244: +;1245: +;1246: +;1247:/* +;1248: +;1249:================= +;1250: +;1251:AngleNormalize360 +;1252: +;1253: +;1254: +;1255:returns angle normalized to the range [0 <= angle < 360] +;1256: +;1257:================= +;1258: +;1259:*/ +;1260: +;1261:float AngleNormalize360 ( float angle ) { +line 1263 +;1262: +;1263: return (360.0 / 65536) * ((int)(angle * (65536 / 360.0)) & 65535); +CNSTF4 1001652224 +CNSTF4 1127615329 +ADDRFP4 0 +INDIRF4 +MULF4 +CVFI4 4 +CNSTI4 65535 +BANDI4 +CVIF4 4 +MULF4 +RETF4 +LABELV $209 +endproc AngleNormalize360 0 0 +export AngleNormalize180 +proc AngleNormalize180 4 4 +line 1285 +;1264: +;1265:} +;1266: +;1267: +;1268: +;1269: +;1270: +;1271:/* +;1272: +;1273:================= +;1274: +;1275:AngleNormalize180 +;1276: +;1277: +;1278: +;1279:returns angle normalized to the range [-180 < angle <= 180] +;1280: +;1281:================= +;1282: +;1283:*/ +;1284: +;1285:float AngleNormalize180 ( float angle ) { +line 1287 +;1286: +;1287: angle = AngleNormalize360( angle ); +ADDRFP4 0 +INDIRF4 +ARGF4 +ADDRLP4 0 +ADDRGP4 AngleNormalize360 +CALLF4 +ASGNF4 +ADDRFP4 0 +ADDRLP4 0 +INDIRF4 +ASGNF4 +line 1289 +;1288: +;1289: if ( angle > 180.0 ) { +ADDRFP4 0 +INDIRF4 +CNSTF4 1127481344 +LEF4 $211 +line 1291 +;1290: +;1291: angle -= 360.0; +ADDRFP4 0 +ADDRFP4 0 +INDIRF4 +CNSTF4 1135869952 +SUBF4 +ASGNF4 +line 1293 +;1292: +;1293: } +LABELV $211 +line 1295 +;1294: +;1295: return angle; +ADDRFP4 0 +INDIRF4 +RETF4 +LABELV $210 +endproc AngleNormalize180 4 4 +export AngleDelta +proc AngleDelta 4 4 +line 1317 +;1296: +;1297:} +;1298: +;1299: +;1300: +;1301: +;1302: +;1303:/* +;1304: +;1305:================= +;1306: +;1307:AngleDelta +;1308: +;1309: +;1310: +;1311:returns the normalized delta from angle1 to angle2 +;1312: +;1313:================= +;1314: +;1315:*/ +;1316: +;1317:float AngleDelta ( float angle1, float angle2 ) { +line 1319 +;1318: +;1319: return AngleNormalize180( angle1 - angle2 ); +ADDRFP4 0 +INDIRF4 +ADDRFP4 4 +INDIRF4 +SUBF4 +ARGF4 +ADDRLP4 0 +ADDRGP4 AngleNormalize180 +CALLF4 +ASGNF4 +ADDRLP4 0 +INDIRF4 +RETF4 +LABELV $213 +endproc AngleDelta 4 4 +export SetPlaneSignbits +proc SetPlaneSignbits 8 0 +line 1343 +;1320: +;1321:} +;1322: +;1323: +;1324: +;1325: +;1326: +;1327://============================================================ +;1328: +;1329: +;1330: +;1331: +;1332: +;1333:/* +;1334: +;1335:================= +;1336: +;1337:SetPlaneSignbits +;1338: +;1339:================= +;1340: +;1341:*/ +;1342: +;1343:void SetPlaneSignbits (cplane_t *out) { +line 1351 +;1344: +;1345: int bits, j; +;1346: +;1347: +;1348: +;1349: // for fast box on planeside test +;1350: +;1351: bits = 0; +ADDRLP4 4 +CNSTI4 0 +ASGNI4 +line 1353 +;1352: +;1353: for (j=0 ; j<3 ; j++) { +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +LABELV $215 +line 1355 +;1354: +;1355: if (out->normal[j] < 0) { +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRFP4 0 +INDIRP4 +ADDP4 +INDIRF4 +CNSTF4 0 +GEF4 $219 +line 1357 +;1356: +;1357: bits |= 1<signbits = bits; +ADDRFP4 0 +INDIRP4 +CNSTI4 17 +ADDP4 +ADDRLP4 4 +INDIRI4 +CVIU4 4 +CVUU1 4 +ASGNU1 +line 1365 +;1364: +;1365:} +LABELV $214 +endproc SetPlaneSignbits 8 0 +export BoxOnPlaneSide +proc BoxOnPlaneSide 280 0 +line 1461 +;1366: +;1367: +;1368: +;1369: +;1370: +;1371:/* +;1372: +;1373:================== +;1374: +;1375:BoxOnPlaneSide +;1376: +;1377: +;1378: +;1379:Returns 1, 2, or 1 + 2 +;1380: +;1381: +;1382: +;1383:// this is the slow, general version +;1384: +;1385:int BoxOnPlaneSide2 (vec3_t emins, vec3_t emaxs, struct cplane_s *p) +;1386: +;1387:{ +;1388: +;1389: int i; +;1390: +;1391: float dist1, dist2; +;1392: +;1393: int sides; +;1394: +;1395: vec3_t corners[2]; +;1396: +;1397: +;1398: +;1399: for (i=0 ; i<3 ; i++) +;1400: +;1401: { +;1402: +;1403: if (p->normal[i] < 0) +;1404: +;1405: { +;1406: +;1407: corners[0][i] = emins[i]; +;1408: +;1409: corners[1][i] = emaxs[i]; +;1410: +;1411: } +;1412: +;1413: else +;1414: +;1415: { +;1416: +;1417: corners[1][i] = emins[i]; +;1418: +;1419: corners[0][i] = emaxs[i]; +;1420: +;1421: } +;1422: +;1423: } +;1424: +;1425: dist1 = DotProduct (p->normal, corners[0]) - p->dist; +;1426: +;1427: dist2 = DotProduct (p->normal, corners[1]) - p->dist; +;1428: +;1429: sides = 0; +;1430: +;1431: if (dist1 >= 0) +;1432: +;1433: sides = 1; +;1434: +;1435: if (dist2 < 0) +;1436: +;1437: sides |= 2; +;1438: +;1439: +;1440: +;1441: return sides; +;1442: +;1443:} +;1444: +;1445: +;1446: +;1447:================== +;1448: +;1449:*/ +;1450: +;1451:#if !( (defined __linux__ || __FreeBSD__) && (defined __i386__) && (!defined C_ONLY)) // rb010123 +;1452: +;1453: +;1454: +;1455:#if defined __LCC__ || defined C_ONLY || !id386 || defined __VECTORC +;1456: +;1457: +;1458: +;1459:int BoxOnPlaneSide (vec3_t emins, vec3_t emaxs, struct cplane_s *p) +;1460: +;1461:{ +line 1471 +;1462: +;1463: float dist1, dist2; +;1464: +;1465: int sides; +;1466: +;1467: +;1468: +;1469:// fast axial cases +;1470: +;1471: if (p->type < 3) +ADDRFP4 8 +INDIRP4 +CNSTI4 16 +ADDP4 +INDIRU1 +CVUI4 1 +CNSTI4 3 +GEI4 $222 +line 1473 +;1472: +;1473: { +line 1475 +;1474: +;1475: if (p->dist <= emins[p->type]) +ADDRLP4 12 +ADDRFP4 8 +INDIRP4 +ASGNP4 +ADDRLP4 12 +INDIRP4 +CNSTI4 12 +ADDP4 +INDIRF4 +ADDRLP4 12 +INDIRP4 +CNSTI4 16 +ADDP4 +INDIRU1 +CVUI4 1 +CNSTI4 2 +LSHI4 +ADDRFP4 0 +INDIRP4 +ADDP4 +INDIRF4 +GTF4 $224 +line 1477 +;1476: +;1477: return 1; +CNSTI4 1 +RETI4 +ADDRGP4 $221 +JUMPV +LABELV $224 +line 1479 +;1478: +;1479: if (p->dist >= emaxs[p->type]) +ADDRLP4 16 +ADDRFP4 8 +INDIRP4 +ASGNP4 +ADDRLP4 16 +INDIRP4 +CNSTI4 12 +ADDP4 +INDIRF4 +ADDRLP4 16 +INDIRP4 +CNSTI4 16 +ADDP4 +INDIRU1 +CVUI4 1 +CNSTI4 2 +LSHI4 +ADDRFP4 4 +INDIRP4 +ADDP4 +INDIRF4 +LTF4 $226 +line 1481 +;1480: +;1481: return 2; +CNSTI4 2 +RETI4 +ADDRGP4 $221 +JUMPV +LABELV $226 +line 1483 +;1482: +;1483: return 3; +CNSTI4 3 +RETI4 +ADDRGP4 $221 +JUMPV +LABELV $222 +line 1491 +;1484: +;1485: } +;1486: +;1487: +;1488: +;1489:// general case +;1490: +;1491: switch (p->signbits) +ADDRLP4 12 +ADDRFP4 8 +INDIRP4 +CNSTI4 17 +ADDP4 +INDIRU1 +CVUI4 1 +ASGNI4 +ADDRLP4 12 +INDIRI4 +CNSTI4 0 +LTI4 $228 +ADDRLP4 12 +INDIRI4 +CNSTI4 7 +GTI4 $228 +ADDRLP4 12 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 $239 +ADDP4 +INDIRP4 +JUMPV +lit +align 4 +LABELV $239 +address $231 +address $232 +address $233 +address $234 +address $235 +address $236 +address $237 +address $238 +code +line 1493 +;1492: +;1493: { +LABELV $231 +line 1497 +;1494: +;1495: case 0: +;1496: +;1497: dist1 = p->normal[0]*emaxs[0] + p->normal[1]*emaxs[1] + p->normal[2]*emaxs[2]; +ADDRLP4 20 +ADDRFP4 8 +INDIRP4 +ASGNP4 +ADDRLP4 24 +ADDRFP4 4 +INDIRP4 +ASGNP4 +ADDRLP4 28 +CNSTI4 4 +ASGNI4 +ADDRLP4 32 +CNSTI4 8 +ASGNI4 +ADDRLP4 4 +ADDRLP4 20 +INDIRP4 +INDIRF4 +ADDRLP4 24 +INDIRP4 +INDIRF4 +MULF4 +ADDRLP4 20 +INDIRP4 +ADDRLP4 28 +INDIRI4 +ADDP4 +INDIRF4 +ADDRLP4 24 +INDIRP4 +ADDRLP4 28 +INDIRI4 +ADDP4 +INDIRF4 +MULF4 +ADDF4 +ADDRLP4 20 +INDIRP4 +ADDRLP4 32 +INDIRI4 +ADDP4 +INDIRF4 +ADDRLP4 24 +INDIRP4 +ADDRLP4 32 +INDIRI4 +ADDP4 +INDIRF4 +MULF4 +ADDF4 +ASGNF4 +line 1499 +;1498: +;1499: dist2 = p->normal[0]*emins[0] + p->normal[1]*emins[1] + p->normal[2]*emins[2]; +ADDRLP4 36 +ADDRFP4 8 +INDIRP4 +ASGNP4 +ADDRLP4 40 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 44 +CNSTI4 4 +ASGNI4 +ADDRLP4 48 +CNSTI4 8 +ASGNI4 +ADDRLP4 8 +ADDRLP4 36 +INDIRP4 +INDIRF4 +ADDRLP4 40 +INDIRP4 +INDIRF4 +MULF4 +ADDRLP4 36 +INDIRP4 +ADDRLP4 44 +INDIRI4 +ADDP4 +INDIRF4 +ADDRLP4 40 +INDIRP4 +ADDRLP4 44 +INDIRI4 +ADDP4 +INDIRF4 +MULF4 +ADDF4 +ADDRLP4 36 +INDIRP4 +ADDRLP4 48 +INDIRI4 +ADDP4 +INDIRF4 +ADDRLP4 40 +INDIRP4 +ADDRLP4 48 +INDIRI4 +ADDP4 +INDIRF4 +MULF4 +ADDF4 +ASGNF4 +line 1501 +;1500: +;1501: break; +ADDRGP4 $229 +JUMPV +LABELV $232 +line 1505 +;1502: +;1503: case 1: +;1504: +;1505: dist1 = p->normal[0]*emins[0] + p->normal[1]*emaxs[1] + p->normal[2]*emaxs[2]; +ADDRLP4 52 +ADDRFP4 8 +INDIRP4 +ASGNP4 +ADDRLP4 56 +CNSTI4 4 +ASGNI4 +ADDRLP4 60 +ADDRFP4 4 +INDIRP4 +ASGNP4 +ADDRLP4 64 +CNSTI4 8 +ASGNI4 +ADDRLP4 4 +ADDRLP4 52 +INDIRP4 +INDIRF4 +ADDRFP4 0 +INDIRP4 +INDIRF4 +MULF4 +ADDRLP4 52 +INDIRP4 +ADDRLP4 56 +INDIRI4 +ADDP4 +INDIRF4 +ADDRLP4 60 +INDIRP4 +ADDRLP4 56 +INDIRI4 +ADDP4 +INDIRF4 +MULF4 +ADDF4 +ADDRLP4 52 +INDIRP4 +ADDRLP4 64 +INDIRI4 +ADDP4 +INDIRF4 +ADDRLP4 60 +INDIRP4 +ADDRLP4 64 +INDIRI4 +ADDP4 +INDIRF4 +MULF4 +ADDF4 +ASGNF4 +line 1507 +;1506: +;1507: dist2 = p->normal[0]*emaxs[0] + p->normal[1]*emins[1] + p->normal[2]*emins[2]; +ADDRLP4 68 +ADDRFP4 8 +INDIRP4 +ASGNP4 +ADDRLP4 72 +CNSTI4 4 +ASGNI4 +ADDRLP4 76 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 80 +CNSTI4 8 +ASGNI4 +ADDRLP4 8 +ADDRLP4 68 +INDIRP4 +INDIRF4 +ADDRFP4 4 +INDIRP4 +INDIRF4 +MULF4 +ADDRLP4 68 +INDIRP4 +ADDRLP4 72 +INDIRI4 +ADDP4 +INDIRF4 +ADDRLP4 76 +INDIRP4 +ADDRLP4 72 +INDIRI4 +ADDP4 +INDIRF4 +MULF4 +ADDF4 +ADDRLP4 68 +INDIRP4 +ADDRLP4 80 +INDIRI4 +ADDP4 +INDIRF4 +ADDRLP4 76 +INDIRP4 +ADDRLP4 80 +INDIRI4 +ADDP4 +INDIRF4 +MULF4 +ADDF4 +ASGNF4 +line 1509 +;1508: +;1509: break; +ADDRGP4 $229 +JUMPV +LABELV $233 +line 1513 +;1510: +;1511: case 2: +;1512: +;1513: dist1 = p->normal[0]*emaxs[0] + p->normal[1]*emins[1] + p->normal[2]*emaxs[2]; +ADDRLP4 84 +ADDRFP4 8 +INDIRP4 +ASGNP4 +ADDRLP4 88 +ADDRFP4 4 +INDIRP4 +ASGNP4 +ADDRLP4 92 +CNSTI4 4 +ASGNI4 +ADDRLP4 96 +CNSTI4 8 +ASGNI4 +ADDRLP4 4 +ADDRLP4 84 +INDIRP4 +INDIRF4 +ADDRLP4 88 +INDIRP4 +INDIRF4 +MULF4 +ADDRLP4 84 +INDIRP4 +ADDRLP4 92 +INDIRI4 +ADDP4 +INDIRF4 +ADDRFP4 0 +INDIRP4 +ADDRLP4 92 +INDIRI4 +ADDP4 +INDIRF4 +MULF4 +ADDF4 +ADDRLP4 84 +INDIRP4 +ADDRLP4 96 +INDIRI4 +ADDP4 +INDIRF4 +ADDRLP4 88 +INDIRP4 +ADDRLP4 96 +INDIRI4 +ADDP4 +INDIRF4 +MULF4 +ADDF4 +ASGNF4 +line 1515 +;1514: +;1515: dist2 = p->normal[0]*emins[0] + p->normal[1]*emaxs[1] + p->normal[2]*emins[2]; +ADDRLP4 100 +ADDRFP4 8 +INDIRP4 +ASGNP4 +ADDRLP4 104 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 108 +CNSTI4 4 +ASGNI4 +ADDRLP4 112 +CNSTI4 8 +ASGNI4 +ADDRLP4 8 +ADDRLP4 100 +INDIRP4 +INDIRF4 +ADDRLP4 104 +INDIRP4 +INDIRF4 +MULF4 +ADDRLP4 100 +INDIRP4 +ADDRLP4 108 +INDIRI4 +ADDP4 +INDIRF4 +ADDRFP4 4 +INDIRP4 +ADDRLP4 108 +INDIRI4 +ADDP4 +INDIRF4 +MULF4 +ADDF4 +ADDRLP4 100 +INDIRP4 +ADDRLP4 112 +INDIRI4 +ADDP4 +INDIRF4 +ADDRLP4 104 +INDIRP4 +ADDRLP4 112 +INDIRI4 +ADDP4 +INDIRF4 +MULF4 +ADDF4 +ASGNF4 +line 1517 +;1516: +;1517: break; +ADDRGP4 $229 +JUMPV +LABELV $234 +line 1521 +;1518: +;1519: case 3: +;1520: +;1521: dist1 = p->normal[0]*emins[0] + p->normal[1]*emins[1] + p->normal[2]*emaxs[2]; +ADDRLP4 116 +ADDRFP4 8 +INDIRP4 +ASGNP4 +ADDRLP4 120 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 124 +CNSTI4 4 +ASGNI4 +ADDRLP4 128 +CNSTI4 8 +ASGNI4 +ADDRLP4 4 +ADDRLP4 116 +INDIRP4 +INDIRF4 +ADDRLP4 120 +INDIRP4 +INDIRF4 +MULF4 +ADDRLP4 116 +INDIRP4 +ADDRLP4 124 +INDIRI4 +ADDP4 +INDIRF4 +ADDRLP4 120 +INDIRP4 +ADDRLP4 124 +INDIRI4 +ADDP4 +INDIRF4 +MULF4 +ADDF4 +ADDRLP4 116 +INDIRP4 +ADDRLP4 128 +INDIRI4 +ADDP4 +INDIRF4 +ADDRFP4 4 +INDIRP4 +ADDRLP4 128 +INDIRI4 +ADDP4 +INDIRF4 +MULF4 +ADDF4 +ASGNF4 +line 1523 +;1522: +;1523: dist2 = p->normal[0]*emaxs[0] + p->normal[1]*emaxs[1] + p->normal[2]*emins[2]; +ADDRLP4 132 +ADDRFP4 8 +INDIRP4 +ASGNP4 +ADDRLP4 136 +ADDRFP4 4 +INDIRP4 +ASGNP4 +ADDRLP4 140 +CNSTI4 4 +ASGNI4 +ADDRLP4 144 +CNSTI4 8 +ASGNI4 +ADDRLP4 8 +ADDRLP4 132 +INDIRP4 +INDIRF4 +ADDRLP4 136 +INDIRP4 +INDIRF4 +MULF4 +ADDRLP4 132 +INDIRP4 +ADDRLP4 140 +INDIRI4 +ADDP4 +INDIRF4 +ADDRLP4 136 +INDIRP4 +ADDRLP4 140 +INDIRI4 +ADDP4 +INDIRF4 +MULF4 +ADDF4 +ADDRLP4 132 +INDIRP4 +ADDRLP4 144 +INDIRI4 +ADDP4 +INDIRF4 +ADDRFP4 0 +INDIRP4 +ADDRLP4 144 +INDIRI4 +ADDP4 +INDIRF4 +MULF4 +ADDF4 +ASGNF4 +line 1525 +;1524: +;1525: break; +ADDRGP4 $229 +JUMPV +LABELV $235 +line 1529 +;1526: +;1527: case 4: +;1528: +;1529: dist1 = p->normal[0]*emaxs[0] + p->normal[1]*emaxs[1] + p->normal[2]*emins[2]; +ADDRLP4 148 +ADDRFP4 8 +INDIRP4 +ASGNP4 +ADDRLP4 152 +ADDRFP4 4 +INDIRP4 +ASGNP4 +ADDRLP4 156 +CNSTI4 4 +ASGNI4 +ADDRLP4 160 +CNSTI4 8 +ASGNI4 +ADDRLP4 4 +ADDRLP4 148 +INDIRP4 +INDIRF4 +ADDRLP4 152 +INDIRP4 +INDIRF4 +MULF4 +ADDRLP4 148 +INDIRP4 +ADDRLP4 156 +INDIRI4 +ADDP4 +INDIRF4 +ADDRLP4 152 +INDIRP4 +ADDRLP4 156 +INDIRI4 +ADDP4 +INDIRF4 +MULF4 +ADDF4 +ADDRLP4 148 +INDIRP4 +ADDRLP4 160 +INDIRI4 +ADDP4 +INDIRF4 +ADDRFP4 0 +INDIRP4 +ADDRLP4 160 +INDIRI4 +ADDP4 +INDIRF4 +MULF4 +ADDF4 +ASGNF4 +line 1531 +;1530: +;1531: dist2 = p->normal[0]*emins[0] + p->normal[1]*emins[1] + p->normal[2]*emaxs[2]; +ADDRLP4 164 +ADDRFP4 8 +INDIRP4 +ASGNP4 +ADDRLP4 168 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 172 +CNSTI4 4 +ASGNI4 +ADDRLP4 176 +CNSTI4 8 +ASGNI4 +ADDRLP4 8 +ADDRLP4 164 +INDIRP4 +INDIRF4 +ADDRLP4 168 +INDIRP4 +INDIRF4 +MULF4 +ADDRLP4 164 +INDIRP4 +ADDRLP4 172 +INDIRI4 +ADDP4 +INDIRF4 +ADDRLP4 168 +INDIRP4 +ADDRLP4 172 +INDIRI4 +ADDP4 +INDIRF4 +MULF4 +ADDF4 +ADDRLP4 164 +INDIRP4 +ADDRLP4 176 +INDIRI4 +ADDP4 +INDIRF4 +ADDRFP4 4 +INDIRP4 +ADDRLP4 176 +INDIRI4 +ADDP4 +INDIRF4 +MULF4 +ADDF4 +ASGNF4 +line 1533 +;1532: +;1533: break; +ADDRGP4 $229 +JUMPV +LABELV $236 +line 1537 +;1534: +;1535: case 5: +;1536: +;1537: dist1 = p->normal[0]*emins[0] + p->normal[1]*emaxs[1] + p->normal[2]*emins[2]; +ADDRLP4 180 +ADDRFP4 8 +INDIRP4 +ASGNP4 +ADDRLP4 184 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 188 +CNSTI4 4 +ASGNI4 +ADDRLP4 192 +CNSTI4 8 +ASGNI4 +ADDRLP4 4 +ADDRLP4 180 +INDIRP4 +INDIRF4 +ADDRLP4 184 +INDIRP4 +INDIRF4 +MULF4 +ADDRLP4 180 +INDIRP4 +ADDRLP4 188 +INDIRI4 +ADDP4 +INDIRF4 +ADDRFP4 4 +INDIRP4 +ADDRLP4 188 +INDIRI4 +ADDP4 +INDIRF4 +MULF4 +ADDF4 +ADDRLP4 180 +INDIRP4 +ADDRLP4 192 +INDIRI4 +ADDP4 +INDIRF4 +ADDRLP4 184 +INDIRP4 +ADDRLP4 192 +INDIRI4 +ADDP4 +INDIRF4 +MULF4 +ADDF4 +ASGNF4 +line 1539 +;1538: +;1539: dist2 = p->normal[0]*emaxs[0] + p->normal[1]*emins[1] + p->normal[2]*emaxs[2]; +ADDRLP4 196 +ADDRFP4 8 +INDIRP4 +ASGNP4 +ADDRLP4 200 +ADDRFP4 4 +INDIRP4 +ASGNP4 +ADDRLP4 204 +CNSTI4 4 +ASGNI4 +ADDRLP4 208 +CNSTI4 8 +ASGNI4 +ADDRLP4 8 +ADDRLP4 196 +INDIRP4 +INDIRF4 +ADDRLP4 200 +INDIRP4 +INDIRF4 +MULF4 +ADDRLP4 196 +INDIRP4 +ADDRLP4 204 +INDIRI4 +ADDP4 +INDIRF4 +ADDRFP4 0 +INDIRP4 +ADDRLP4 204 +INDIRI4 +ADDP4 +INDIRF4 +MULF4 +ADDF4 +ADDRLP4 196 +INDIRP4 +ADDRLP4 208 +INDIRI4 +ADDP4 +INDIRF4 +ADDRLP4 200 +INDIRP4 +ADDRLP4 208 +INDIRI4 +ADDP4 +INDIRF4 +MULF4 +ADDF4 +ASGNF4 +line 1541 +;1540: +;1541: break; +ADDRGP4 $229 +JUMPV +LABELV $237 +line 1545 +;1542: +;1543: case 6: +;1544: +;1545: dist1 = p->normal[0]*emaxs[0] + p->normal[1]*emins[1] + p->normal[2]*emins[2]; +ADDRLP4 212 +ADDRFP4 8 +INDIRP4 +ASGNP4 +ADDRLP4 216 +CNSTI4 4 +ASGNI4 +ADDRLP4 220 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 224 +CNSTI4 8 +ASGNI4 +ADDRLP4 4 +ADDRLP4 212 +INDIRP4 +INDIRF4 +ADDRFP4 4 +INDIRP4 +INDIRF4 +MULF4 +ADDRLP4 212 +INDIRP4 +ADDRLP4 216 +INDIRI4 +ADDP4 +INDIRF4 +ADDRLP4 220 +INDIRP4 +ADDRLP4 216 +INDIRI4 +ADDP4 +INDIRF4 +MULF4 +ADDF4 +ADDRLP4 212 +INDIRP4 +ADDRLP4 224 +INDIRI4 +ADDP4 +INDIRF4 +ADDRLP4 220 +INDIRP4 +ADDRLP4 224 +INDIRI4 +ADDP4 +INDIRF4 +MULF4 +ADDF4 +ASGNF4 +line 1547 +;1546: +;1547: dist2 = p->normal[0]*emins[0] + p->normal[1]*emaxs[1] + p->normal[2]*emaxs[2]; +ADDRLP4 228 +ADDRFP4 8 +INDIRP4 +ASGNP4 +ADDRLP4 232 +CNSTI4 4 +ASGNI4 +ADDRLP4 236 +ADDRFP4 4 +INDIRP4 +ASGNP4 +ADDRLP4 240 +CNSTI4 8 +ASGNI4 +ADDRLP4 8 +ADDRLP4 228 +INDIRP4 +INDIRF4 +ADDRFP4 0 +INDIRP4 +INDIRF4 +MULF4 +ADDRLP4 228 +INDIRP4 +ADDRLP4 232 +INDIRI4 +ADDP4 +INDIRF4 +ADDRLP4 236 +INDIRP4 +ADDRLP4 232 +INDIRI4 +ADDP4 +INDIRF4 +MULF4 +ADDF4 +ADDRLP4 228 +INDIRP4 +ADDRLP4 240 +INDIRI4 +ADDP4 +INDIRF4 +ADDRLP4 236 +INDIRP4 +ADDRLP4 240 +INDIRI4 +ADDP4 +INDIRF4 +MULF4 +ADDF4 +ASGNF4 +line 1549 +;1548: +;1549: break; +ADDRGP4 $229 +JUMPV +LABELV $238 +line 1553 +;1550: +;1551: case 7: +;1552: +;1553: dist1 = p->normal[0]*emins[0] + p->normal[1]*emins[1] + p->normal[2]*emins[2]; +ADDRLP4 244 +ADDRFP4 8 +INDIRP4 +ASGNP4 +ADDRLP4 248 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 252 +CNSTI4 4 +ASGNI4 +ADDRLP4 256 +CNSTI4 8 +ASGNI4 +ADDRLP4 4 +ADDRLP4 244 +INDIRP4 +INDIRF4 +ADDRLP4 248 +INDIRP4 +INDIRF4 +MULF4 +ADDRLP4 244 +INDIRP4 +ADDRLP4 252 +INDIRI4 +ADDP4 +INDIRF4 +ADDRLP4 248 +INDIRP4 +ADDRLP4 252 +INDIRI4 +ADDP4 +INDIRF4 +MULF4 +ADDF4 +ADDRLP4 244 +INDIRP4 +ADDRLP4 256 +INDIRI4 +ADDP4 +INDIRF4 +ADDRLP4 248 +INDIRP4 +ADDRLP4 256 +INDIRI4 +ADDP4 +INDIRF4 +MULF4 +ADDF4 +ASGNF4 +line 1555 +;1554: +;1555: dist2 = p->normal[0]*emaxs[0] + p->normal[1]*emaxs[1] + p->normal[2]*emaxs[2]; +ADDRLP4 260 +ADDRFP4 8 +INDIRP4 +ASGNP4 +ADDRLP4 264 +ADDRFP4 4 +INDIRP4 +ASGNP4 +ADDRLP4 268 +CNSTI4 4 +ASGNI4 +ADDRLP4 272 +CNSTI4 8 +ASGNI4 +ADDRLP4 8 +ADDRLP4 260 +INDIRP4 +INDIRF4 +ADDRLP4 264 +INDIRP4 +INDIRF4 +MULF4 +ADDRLP4 260 +INDIRP4 +ADDRLP4 268 +INDIRI4 +ADDP4 +INDIRF4 +ADDRLP4 264 +INDIRP4 +ADDRLP4 268 +INDIRI4 +ADDP4 +INDIRF4 +MULF4 +ADDF4 +ADDRLP4 260 +INDIRP4 +ADDRLP4 272 +INDIRI4 +ADDP4 +INDIRF4 +ADDRLP4 264 +INDIRP4 +ADDRLP4 272 +INDIRI4 +ADDP4 +INDIRF4 +MULF4 +ADDF4 +ASGNF4 +line 1557 +;1556: +;1557: break; +ADDRGP4 $229 +JUMPV +LABELV $228 +line 1561 +;1558: +;1559: default: +;1560: +;1561: dist1 = dist2 = 0; // shut up compiler +ADDRLP4 276 +CNSTF4 0 +ASGNF4 +ADDRLP4 8 +ADDRLP4 276 +INDIRF4 +ASGNF4 +ADDRLP4 4 +ADDRLP4 276 +INDIRF4 +ASGNF4 +line 1563 +;1562: +;1563: break; +LABELV $229 +line 1569 +;1564: +;1565: } +;1566: +;1567: +;1568: +;1569: sides = 0; +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +line 1571 +;1570: +;1571: if (dist1 >= p->dist) +ADDRLP4 4 +INDIRF4 +ADDRFP4 8 +INDIRP4 +CNSTI4 12 +ADDP4 +INDIRF4 +LTF4 $240 +line 1573 +;1572: +;1573: sides = 1; +ADDRLP4 0 +CNSTI4 1 +ASGNI4 +LABELV $240 +line 1575 +;1574: +;1575: if (dist2 < p->dist) +ADDRLP4 8 +INDIRF4 +ADDRFP4 8 +INDIRP4 +CNSTI4 12 +ADDP4 +INDIRF4 +GEF4 $242 +line 1577 +;1576: +;1577: sides |= 2; +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +BORI4 +ASGNI4 +LABELV $242 +line 1581 +;1578: +;1579: +;1580: +;1581: return sides; +ADDRLP4 0 +INDIRI4 +RETI4 +LABELV $221 +endproc BoxOnPlaneSide 280 0 +export RadiusFromBounds +proc RadiusFromBounds 36 4 +line 2069 +;1582: +;1583:} +;1584: +;1585:#else +;1586: +;1587:#pragma warning( disable: 4035 ) +;1588: +;1589: +;1590: +;1591:__declspec( naked ) int BoxOnPlaneSide (vec3_t emins, vec3_t emaxs, struct cplane_s *p) +;1592: +;1593:{ +;1594: +;1595: static int bops_initialized; +;1596: +;1597: static int Ljmptab[8]; +;1598: +;1599: +;1600: +;1601: __asm { +;1602: +;1603: +;1604: +;1605: push ebx +;1606: +;1607: +;1608: +;1609: cmp bops_initialized, 1 +;1610: +;1611: je initialized +;1612: +;1613: mov bops_initialized, 1 +;1614: +;1615: +;1616: +;1617: mov Ljmptab[0*4], offset Lcase0 +;1618: +;1619: mov Ljmptab[1*4], offset Lcase1 +;1620: +;1621: mov Ljmptab[2*4], offset Lcase2 +;1622: +;1623: mov Ljmptab[3*4], offset Lcase3 +;1624: +;1625: mov Ljmptab[4*4], offset Lcase4 +;1626: +;1627: mov Ljmptab[5*4], offset Lcase5 +;1628: +;1629: mov Ljmptab[6*4], offset Lcase6 +;1630: +;1631: mov Ljmptab[7*4], offset Lcase7 +;1632: +;1633: +;1634: +;1635:initialized: +;1636: +;1637: +;1638: +;1639: mov edx,dword ptr[4+12+esp] +;1640: +;1641: mov ecx,dword ptr[4+4+esp] +;1642: +;1643: xor eax,eax +;1644: +;1645: mov ebx,dword ptr[4+8+esp] +;1646: +;1647: mov al,byte ptr[17+edx] +;1648: +;1649: cmp al,8 +;1650: +;1651: jge Lerror +;1652: +;1653: fld dword ptr[0+edx] +;1654: +;1655: fld st(0) +;1656: +;1657: jmp dword ptr[Ljmptab+eax*4] +;1658: +;1659:Lcase0: +;1660: +;1661: fmul dword ptr[ebx] +;1662: +;1663: fld dword ptr[0+4+edx] +;1664: +;1665: fxch st(2) +;1666: +;1667: fmul dword ptr[ecx] +;1668: +;1669: fxch st(2) +;1670: +;1671: fld st(0) +;1672: +;1673: fmul dword ptr[4+ebx] +;1674: +;1675: fld dword ptr[0+8+edx] +;1676: +;1677: fxch st(2) +;1678: +;1679: fmul dword ptr[4+ecx] +;1680: +;1681: fxch st(2) +;1682: +;1683: fld st(0) +;1684: +;1685: fmul dword ptr[8+ebx] +;1686: +;1687: fxch st(5) +;1688: +;1689: faddp st(3),st(0) +;1690: +;1691: fmul dword ptr[8+ecx] +;1692: +;1693: fxch st(1) +;1694: +;1695: faddp st(3),st(0) +;1696: +;1697: fxch st(3) +;1698: +;1699: faddp st(2),st(0) +;1700: +;1701: jmp LSetSides +;1702: +;1703:Lcase1: +;1704: +;1705: fmul dword ptr[ecx] +;1706: +;1707: fld dword ptr[0+4+edx] +;1708: +;1709: fxch st(2) +;1710: +;1711: fmul dword ptr[ebx] +;1712: +;1713: fxch st(2) +;1714: +;1715: fld st(0) +;1716: +;1717: fmul dword ptr[4+ebx] +;1718: +;1719: fld dword ptr[0+8+edx] +;1720: +;1721: fxch st(2) +;1722: +;1723: fmul dword ptr[4+ecx] +;1724: +;1725: fxch st(2) +;1726: +;1727: fld st(0) +;1728: +;1729: fmul dword ptr[8+ebx] +;1730: +;1731: fxch st(5) +;1732: +;1733: faddp st(3),st(0) +;1734: +;1735: fmul dword ptr[8+ecx] +;1736: +;1737: fxch st(1) +;1738: +;1739: faddp st(3),st(0) +;1740: +;1741: fxch st(3) +;1742: +;1743: faddp st(2),st(0) +;1744: +;1745: jmp LSetSides +;1746: +;1747:Lcase2: +;1748: +;1749: fmul dword ptr[ebx] +;1750: +;1751: fld dword ptr[0+4+edx] +;1752: +;1753: fxch st(2) +;1754: +;1755: fmul dword ptr[ecx] +;1756: +;1757: fxch st(2) +;1758: +;1759: fld st(0) +;1760: +;1761: fmul dword ptr[4+ecx] +;1762: +;1763: fld dword ptr[0+8+edx] +;1764: +;1765: fxch st(2) +;1766: +;1767: fmul dword ptr[4+ebx] +;1768: +;1769: fxch st(2) +;1770: +;1771: fld st(0) +;1772: +;1773: fmul dword ptr[8+ebx] +;1774: +;1775: fxch st(5) +;1776: +;1777: faddp st(3),st(0) +;1778: +;1779: fmul dword ptr[8+ecx] +;1780: +;1781: fxch st(1) +;1782: +;1783: faddp st(3),st(0) +;1784: +;1785: fxch st(3) +;1786: +;1787: faddp st(2),st(0) +;1788: +;1789: jmp LSetSides +;1790: +;1791:Lcase3: +;1792: +;1793: fmul dword ptr[ecx] +;1794: +;1795: fld dword ptr[0+4+edx] +;1796: +;1797: fxch st(2) +;1798: +;1799: fmul dword ptr[ebx] +;1800: +;1801: fxch st(2) +;1802: +;1803: fld st(0) +;1804: +;1805: fmul dword ptr[4+ecx] +;1806: +;1807: fld dword ptr[0+8+edx] +;1808: +;1809: fxch st(2) +;1810: +;1811: fmul dword ptr[4+ebx] +;1812: +;1813: fxch st(2) +;1814: +;1815: fld st(0) +;1816: +;1817: fmul dword ptr[8+ebx] +;1818: +;1819: fxch st(5) +;1820: +;1821: faddp st(3),st(0) +;1822: +;1823: fmul dword ptr[8+ecx] +;1824: +;1825: fxch st(1) +;1826: +;1827: faddp st(3),st(0) +;1828: +;1829: fxch st(3) +;1830: +;1831: faddp st(2),st(0) +;1832: +;1833: jmp LSetSides +;1834: +;1835:Lcase4: +;1836: +;1837: fmul dword ptr[ebx] +;1838: +;1839: fld dword ptr[0+4+edx] +;1840: +;1841: fxch st(2) +;1842: +;1843: fmul dword ptr[ecx] +;1844: +;1845: fxch st(2) +;1846: +;1847: fld st(0) +;1848: +;1849: fmul dword ptr[4+ebx] +;1850: +;1851: fld dword ptr[0+8+edx] +;1852: +;1853: fxch st(2) +;1854: +;1855: fmul dword ptr[4+ecx] +;1856: +;1857: fxch st(2) +;1858: +;1859: fld st(0) +;1860: +;1861: fmul dword ptr[8+ecx] +;1862: +;1863: fxch st(5) +;1864: +;1865: faddp st(3),st(0) +;1866: +;1867: fmul dword ptr[8+ebx] +;1868: +;1869: fxch st(1) +;1870: +;1871: faddp st(3),st(0) +;1872: +;1873: fxch st(3) +;1874: +;1875: faddp st(2),st(0) +;1876: +;1877: jmp LSetSides +;1878: +;1879:Lcase5: +;1880: +;1881: fmul dword ptr[ecx] +;1882: +;1883: fld dword ptr[0+4+edx] +;1884: +;1885: fxch st(2) +;1886: +;1887: fmul dword ptr[ebx] +;1888: +;1889: fxch st(2) +;1890: +;1891: fld st(0) +;1892: +;1893: fmul dword ptr[4+ebx] +;1894: +;1895: fld dword ptr[0+8+edx] +;1896: +;1897: fxch st(2) +;1898: +;1899: fmul dword ptr[4+ecx] +;1900: +;1901: fxch st(2) +;1902: +;1903: fld st(0) +;1904: +;1905: fmul dword ptr[8+ecx] +;1906: +;1907: fxch st(5) +;1908: +;1909: faddp st(3),st(0) +;1910: +;1911: fmul dword ptr[8+ebx] +;1912: +;1913: fxch st(1) +;1914: +;1915: faddp st(3),st(0) +;1916: +;1917: fxch st(3) +;1918: +;1919: faddp st(2),st(0) +;1920: +;1921: jmp LSetSides +;1922: +;1923:Lcase6: +;1924: +;1925: fmul dword ptr[ebx] +;1926: +;1927: fld dword ptr[0+4+edx] +;1928: +;1929: fxch st(2) +;1930: +;1931: fmul dword ptr[ecx] +;1932: +;1933: fxch st(2) +;1934: +;1935: fld st(0) +;1936: +;1937: fmul dword ptr[4+ecx] +;1938: +;1939: fld dword ptr[0+8+edx] +;1940: +;1941: fxch st(2) +;1942: +;1943: fmul dword ptr[4+ebx] +;1944: +;1945: fxch st(2) +;1946: +;1947: fld st(0) +;1948: +;1949: fmul dword ptr[8+ecx] +;1950: +;1951: fxch st(5) +;1952: +;1953: faddp st(3),st(0) +;1954: +;1955: fmul dword ptr[8+ebx] +;1956: +;1957: fxch st(1) +;1958: +;1959: faddp st(3),st(0) +;1960: +;1961: fxch st(3) +;1962: +;1963: faddp st(2),st(0) +;1964: +;1965: jmp LSetSides +;1966: +;1967:Lcase7: +;1968: +;1969: fmul dword ptr[ecx] +;1970: +;1971: fld dword ptr[0+4+edx] +;1972: +;1973: fxch st(2) +;1974: +;1975: fmul dword ptr[ebx] +;1976: +;1977: fxch st(2) +;1978: +;1979: fld st(0) +;1980: +;1981: fmul dword ptr[4+ecx] +;1982: +;1983: fld dword ptr[0+8+edx] +;1984: +;1985: fxch st(2) +;1986: +;1987: fmul dword ptr[4+ebx] +;1988: +;1989: fxch st(2) +;1990: +;1991: fld st(0) +;1992: +;1993: fmul dword ptr[8+ecx] +;1994: +;1995: fxch st(5) +;1996: +;1997: faddp st(3),st(0) +;1998: +;1999: fmul dword ptr[8+ebx] +;2000: +;2001: fxch st(1) +;2002: +;2003: faddp st(3),st(0) +;2004: +;2005: fxch st(3) +;2006: +;2007: faddp st(2),st(0) +;2008: +;2009:LSetSides: +;2010: +;2011: faddp st(2),st(0) +;2012: +;2013: fcomp dword ptr[12+edx] +;2014: +;2015: xor ecx,ecx +;2016: +;2017: fnstsw ax +;2018: +;2019: fcomp dword ptr[12+edx] +;2020: +;2021: and ah,1 +;2022: +;2023: xor ah,1 +;2024: +;2025: add cl,ah +;2026: +;2027: fnstsw ax +;2028: +;2029: and ah,1 +;2030: +;2031: add ah,ah +;2032: +;2033: add cl,ah +;2034: +;2035: pop ebx +;2036: +;2037: mov eax,ecx +;2038: +;2039: ret +;2040: +;2041:Lerror: +;2042: +;2043: int 3 +;2044: +;2045: } +;2046: +;2047:} +;2048: +;2049:#pragma warning( default: 4035 ) +;2050: +;2051: +;2052: +;2053:#endif +;2054: +;2055:#endif +;2056: +;2057: +;2058: +;2059:/* +;2060: +;2061:================= +;2062: +;2063:RadiusFromBounds +;2064: +;2065:================= +;2066: +;2067:*/ +;2068: +;2069:float RadiusFromBounds( const vec3_t mins, const vec3_t maxs ) { +line 2079 +;2070: +;2071: int i; +;2072: +;2073: vec3_t corner; +;2074: +;2075: float a, b; +;2076: +;2077: +;2078: +;2079: for (i=0 ; i<3 ; i++) { +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +LABELV $245 +line 2081 +;2080: +;2081: a = fabs( mins[i] ); +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRFP4 0 +INDIRP4 +ADDP4 +INDIRF4 +ARGF4 +ADDRLP4 24 +ADDRGP4 fabs +CALLF4 +ASGNF4 +ADDRLP4 4 +ADDRLP4 24 +INDIRF4 +ASGNF4 +line 2083 +;2082: +;2083: b = fabs( maxs[i] ); +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRFP4 4 +INDIRP4 +ADDP4 +INDIRF4 +ARGF4 +ADDRLP4 28 +ADDRGP4 fabs +CALLF4 +ASGNF4 +ADDRLP4 8 +ADDRLP4 28 +INDIRF4 +ASGNF4 +line 2085 +;2084: +;2085: corner[i] = a > b ? a : b; +ADDRLP4 4 +INDIRF4 +ADDRLP4 8 +INDIRF4 +LEF4 $250 +ADDRLP4 32 +ADDRLP4 4 +INDIRF4 +ASGNF4 +ADDRGP4 $251 +JUMPV +LABELV $250 +ADDRLP4 32 +ADDRLP4 8 +INDIRF4 +ASGNF4 +LABELV $251 +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRLP4 12 +ADDP4 +ADDRLP4 32 +INDIRF4 +ASGNF4 +line 2087 +;2086: +;2087: } +LABELV $246 +line 2079 +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +ADDRLP4 0 +INDIRI4 +CNSTI4 3 +LTI4 $245 +line 2091 +;2088: +;2089: +;2090: +;2091: return VectorLength (corner); +ADDRLP4 12 +ARGP4 +ADDRLP4 24 +ADDRGP4 VectorLength +CALLF4 +ASGNF4 +ADDRLP4 24 +INDIRF4 +RETF4 +LABELV $244 +endproc RadiusFromBounds 36 4 +export ClearBounds +proc ClearBounds 16 0 +line 2099 +;2092: +;2093:} +;2094: +;2095: +;2096: +;2097: +;2098: +;2099:void ClearBounds( vec3_t mins, vec3_t maxs ) { +line 2101 +;2100: +;2101: mins[0] = mins[1] = mins[2] = 99999; +ADDRLP4 0 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 4 +CNSTF4 1203982208 +ASGNF4 +ADDRLP4 0 +INDIRP4 +CNSTI4 8 +ADDP4 +ADDRLP4 4 +INDIRF4 +ASGNF4 +ADDRLP4 0 +INDIRP4 +CNSTI4 4 +ADDP4 +ADDRLP4 4 +INDIRF4 +ASGNF4 +ADDRLP4 0 +INDIRP4 +ADDRLP4 4 +INDIRF4 +ASGNF4 +line 2103 +;2102: +;2103: maxs[0] = maxs[1] = maxs[2] = -99999; +ADDRLP4 8 +ADDRFP4 4 +INDIRP4 +ASGNP4 +ADDRLP4 12 +CNSTF4 3351465856 +ASGNF4 +ADDRLP4 8 +INDIRP4 +CNSTI4 8 +ADDP4 +ADDRLP4 12 +INDIRF4 +ASGNF4 +ADDRLP4 8 +INDIRP4 +CNSTI4 4 +ADDP4 +ADDRLP4 12 +INDIRF4 +ASGNF4 +ADDRLP4 8 +INDIRP4 +ADDRLP4 12 +INDIRF4 +ASGNF4 +line 2105 +;2104: +;2105:} +LABELV $252 +endproc ClearBounds 16 0 +export AddPointToBounds +proc AddPointToBounds 20 0 +line 2109 +;2106: +;2107: +;2108: +;2109:void AddPointToBounds( const vec3_t v, vec3_t mins, vec3_t maxs ) { +line 2111 +;2110: +;2111: if ( v[0] < mins[0] ) { +ADDRFP4 0 +INDIRP4 +INDIRF4 +ADDRFP4 4 +INDIRP4 +INDIRF4 +GEF4 $254 +line 2113 +;2112: +;2113: mins[0] = v[0]; +ADDRFP4 4 +INDIRP4 +ADDRFP4 0 +INDIRP4 +INDIRF4 +ASGNF4 +line 2115 +;2114: +;2115: } +LABELV $254 +line 2117 +;2116: +;2117: if ( v[0] > maxs[0]) { +ADDRFP4 0 +INDIRP4 +INDIRF4 +ADDRFP4 8 +INDIRP4 +INDIRF4 +LEF4 $256 +line 2119 +;2118: +;2119: maxs[0] = v[0]; +ADDRFP4 8 +INDIRP4 +ADDRFP4 0 +INDIRP4 +INDIRF4 +ASGNF4 +line 2121 +;2120: +;2121: } +LABELV $256 +line 2125 +;2122: +;2123: +;2124: +;2125: if ( v[1] < mins[1] ) { +ADDRLP4 0 +CNSTI4 4 +ASGNI4 +ADDRFP4 0 +INDIRP4 +ADDRLP4 0 +INDIRI4 +ADDP4 +INDIRF4 +ADDRFP4 4 +INDIRP4 +ADDRLP4 0 +INDIRI4 +ADDP4 +INDIRF4 +GEF4 $258 +line 2127 +;2126: +;2127: mins[1] = v[1]; +ADDRLP4 4 +CNSTI4 4 +ASGNI4 +ADDRFP4 4 +INDIRP4 +ADDRLP4 4 +INDIRI4 +ADDP4 +ADDRFP4 0 +INDIRP4 +ADDRLP4 4 +INDIRI4 +ADDP4 +INDIRF4 +ASGNF4 +line 2129 +;2128: +;2129: } +LABELV $258 +line 2131 +;2130: +;2131: if ( v[1] > maxs[1]) { +ADDRLP4 4 +CNSTI4 4 +ASGNI4 +ADDRFP4 0 +INDIRP4 +ADDRLP4 4 +INDIRI4 +ADDP4 +INDIRF4 +ADDRFP4 8 +INDIRP4 +ADDRLP4 4 +INDIRI4 +ADDP4 +INDIRF4 +LEF4 $260 +line 2133 +;2132: +;2133: maxs[1] = v[1]; +ADDRLP4 8 +CNSTI4 4 +ASGNI4 +ADDRFP4 8 +INDIRP4 +ADDRLP4 8 +INDIRI4 +ADDP4 +ADDRFP4 0 +INDIRP4 +ADDRLP4 8 +INDIRI4 +ADDP4 +INDIRF4 +ASGNF4 +line 2135 +;2134: +;2135: } +LABELV $260 +line 2139 +;2136: +;2137: +;2138: +;2139: if ( v[2] < mins[2] ) { +ADDRLP4 8 +CNSTI4 8 +ASGNI4 +ADDRFP4 0 +INDIRP4 +ADDRLP4 8 +INDIRI4 +ADDP4 +INDIRF4 +ADDRFP4 4 +INDIRP4 +ADDRLP4 8 +INDIRI4 +ADDP4 +INDIRF4 +GEF4 $262 +line 2141 +;2140: +;2141: mins[2] = v[2]; +ADDRLP4 12 +CNSTI4 8 +ASGNI4 +ADDRFP4 4 +INDIRP4 +ADDRLP4 12 +INDIRI4 +ADDP4 +ADDRFP4 0 +INDIRP4 +ADDRLP4 12 +INDIRI4 +ADDP4 +INDIRF4 +ASGNF4 +line 2143 +;2142: +;2143: } +LABELV $262 +line 2145 +;2144: +;2145: if ( v[2] > maxs[2]) { +ADDRLP4 12 +CNSTI4 8 +ASGNI4 +ADDRFP4 0 +INDIRP4 +ADDRLP4 12 +INDIRI4 +ADDP4 +INDIRF4 +ADDRFP4 8 +INDIRP4 +ADDRLP4 12 +INDIRI4 +ADDP4 +INDIRF4 +LEF4 $264 +line 2147 +;2146: +;2147: maxs[2] = v[2]; +ADDRLP4 16 +CNSTI4 8 +ASGNI4 +ADDRFP4 8 +INDIRP4 +ADDRLP4 16 +INDIRI4 +ADDP4 +ADDRFP4 0 +INDIRP4 +ADDRLP4 16 +INDIRI4 +ADDP4 +INDIRF4 +ASGNF4 +line 2149 +;2148: +;2149: } +LABELV $264 +line 2151 +;2150: +;2151:} +LABELV $253 +endproc AddPointToBounds 20 0 +export VectorNormalize +proc VectorNormalize 40 4 +line 2157 +;2152: +;2153: +;2154: +;2155: +;2156: +;2157:vec_t VectorNormalize( vec3_t v ) { +line 2163 +;2158: +;2159: float length, ilength; +;2160: +;2161: +;2162: +;2163: length = v[0]*v[0] + v[1]*v[1] + v[2]*v[2]; +ADDRLP4 8 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 12 +ADDRLP4 8 +INDIRP4 +INDIRF4 +ASGNF4 +ADDRLP4 16 +ADDRLP4 8 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRF4 +ASGNF4 +ADDRLP4 20 +ADDRLP4 8 +INDIRP4 +CNSTI4 8 +ADDP4 +INDIRF4 +ASGNF4 +ADDRLP4 0 +ADDRLP4 12 +INDIRF4 +ADDRLP4 12 +INDIRF4 +MULF4 +ADDRLP4 16 +INDIRF4 +ADDRLP4 16 +INDIRF4 +MULF4 +ADDF4 +ADDRLP4 20 +INDIRF4 +ADDRLP4 20 +INDIRF4 +MULF4 +ADDF4 +ASGNF4 +line 2165 +;2164: +;2165: length = sqrt (length); +ADDRLP4 0 +INDIRF4 +ARGF4 +ADDRLP4 24 +ADDRGP4 sqrt +CALLF4 +ASGNF4 +ADDRLP4 0 +ADDRLP4 24 +INDIRF4 +ASGNF4 +line 2169 +;2166: +;2167: +;2168: +;2169: if ( length ) { +ADDRLP4 0 +INDIRF4 +CNSTF4 0 +EQF4 $267 +line 2171 +;2170: +;2171: ilength = 1/length; +ADDRLP4 4 +CNSTF4 1065353216 +ADDRLP4 0 +INDIRF4 +DIVF4 +ASGNF4 +line 2173 +;2172: +;2173: v[0] *= ilength; +ADDRLP4 28 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 28 +INDIRP4 +ADDRLP4 28 +INDIRP4 +INDIRF4 +ADDRLP4 4 +INDIRF4 +MULF4 +ASGNF4 +line 2175 +;2174: +;2175: v[1] *= ilength; +ADDRLP4 32 +ADDRFP4 0 +INDIRP4 +CNSTI4 4 +ADDP4 +ASGNP4 +ADDRLP4 32 +INDIRP4 +ADDRLP4 32 +INDIRP4 +INDIRF4 +ADDRLP4 4 +INDIRF4 +MULF4 +ASGNF4 +line 2177 +;2176: +;2177: v[2] *= ilength; +ADDRLP4 36 +ADDRFP4 0 +INDIRP4 +CNSTI4 8 +ADDP4 +ASGNP4 +ADDRLP4 36 +INDIRP4 +ADDRLP4 36 +INDIRP4 +INDIRF4 +ADDRLP4 4 +INDIRF4 +MULF4 +ASGNF4 +line 2179 +;2178: +;2179: } +LABELV $267 +line 2183 +;2180: +;2181: +;2182: +;2183: return length; +ADDRLP4 0 +INDIRF4 +RETF4 +LABELV $266 +endproc VectorNormalize 40 4 +export VectorNormalize2 +proc VectorNormalize2 36 4 +line 2189 +;2184: +;2185:} +;2186: +;2187: +;2188: +;2189:vec_t VectorNormalize2( const vec3_t v, vec3_t out) { +line 2195 +;2190: +;2191: float length, ilength; +;2192: +;2193: +;2194: +;2195: length = v[0]*v[0] + v[1]*v[1] + v[2]*v[2]; +ADDRLP4 8 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 12 +ADDRLP4 8 +INDIRP4 +INDIRF4 +ASGNF4 +ADDRLP4 16 +ADDRLP4 8 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRF4 +ASGNF4 +ADDRLP4 20 +ADDRLP4 8 +INDIRP4 +CNSTI4 8 +ADDP4 +INDIRF4 +ASGNF4 +ADDRLP4 0 +ADDRLP4 12 +INDIRF4 +ADDRLP4 12 +INDIRF4 +MULF4 +ADDRLP4 16 +INDIRF4 +ADDRLP4 16 +INDIRF4 +MULF4 +ADDF4 +ADDRLP4 20 +INDIRF4 +ADDRLP4 20 +INDIRF4 +MULF4 +ADDF4 +ASGNF4 +line 2197 +;2196: +;2197: length = sqrt (length); +ADDRLP4 0 +INDIRF4 +ARGF4 +ADDRLP4 24 +ADDRGP4 sqrt +CALLF4 +ASGNF4 +ADDRLP4 0 +ADDRLP4 24 +INDIRF4 +ASGNF4 +line 2201 +;2198: +;2199: +;2200: +;2201: if (length) +ADDRLP4 0 +INDIRF4 +CNSTF4 0 +EQF4 $270 +line 2203 +;2202: +;2203: { +line 2211 +;2204: +;2205:#ifndef Q3_VM // bk0101022 - FPE related +;2206: +;2207:// assert( ((Q_fabs(v[0])!=0.0f) || (Q_fabs(v[1])!=0.0f) || (Q_fabs(v[2])!=0.0f)) ); +;2208: +;2209:#endif +;2210: +;2211: ilength = 1/length; +ADDRLP4 4 +CNSTF4 1065353216 +ADDRLP4 0 +INDIRF4 +DIVF4 +ASGNF4 +line 2213 +;2212: +;2213: out[0] = v[0]*ilength; +ADDRFP4 4 +INDIRP4 +ADDRFP4 0 +INDIRP4 +INDIRF4 +ADDRLP4 4 +INDIRF4 +MULF4 +ASGNF4 +line 2215 +;2214: +;2215: out[1] = v[1]*ilength; +ADDRLP4 28 +CNSTI4 4 +ASGNI4 +ADDRFP4 4 +INDIRP4 +ADDRLP4 28 +INDIRI4 +ADDP4 +ADDRFP4 0 +INDIRP4 +ADDRLP4 28 +INDIRI4 +ADDP4 +INDIRF4 +ADDRLP4 4 +INDIRF4 +MULF4 +ASGNF4 +line 2217 +;2216: +;2217: out[2] = v[2]*ilength; +ADDRLP4 32 +CNSTI4 8 +ASGNI4 +ADDRFP4 4 +INDIRP4 +ADDRLP4 32 +INDIRI4 +ADDP4 +ADDRFP4 0 +INDIRP4 +ADDRLP4 32 +INDIRI4 +ADDP4 +INDIRF4 +ADDRLP4 4 +INDIRF4 +MULF4 +ASGNF4 +line 2219 +;2218: +;2219: } else { +ADDRGP4 $271 +JUMPV +LABELV $270 +line 2227 +;2220: +;2221:#ifndef Q3_VM // bk0101022 - FPE related +;2222: +;2223:// assert( ((Q_fabs(v[0])==0.0f) && (Q_fabs(v[1])==0.0f) && (Q_fabs(v[2])==0.0f)) ); +;2224: +;2225:#endif +;2226: +;2227: VectorClear( out ); +ADDRLP4 28 +ADDRFP4 4 +INDIRP4 +ASGNP4 +ADDRLP4 32 +CNSTF4 0 +ASGNF4 +ADDRLP4 28 +INDIRP4 +CNSTI4 8 +ADDP4 +ADDRLP4 32 +INDIRF4 +ASGNF4 +ADDRLP4 28 +INDIRP4 +CNSTI4 4 +ADDP4 +ADDRLP4 32 +INDIRF4 +ASGNF4 +ADDRLP4 28 +INDIRP4 +ADDRLP4 32 +INDIRF4 +ASGNF4 +line 2229 +;2228: +;2229: } +LABELV $271 +line 2233 +;2230: +;2231: +;2232: +;2233: return length; +ADDRLP4 0 +INDIRF4 +RETF4 +LABELV $269 +endproc VectorNormalize2 36 4 +export _VectorMA +proc _VectorMA 8 0 +line 2241 +;2234: +;2235: +;2236: +;2237:} +;2238: +;2239: +;2240: +;2241:void _VectorMA( const vec3_t veca, float scale, const vec3_t vecb, vec3_t vecc) { +line 2243 +;2242: +;2243: vecc[0] = veca[0] + scale*vecb[0]; +ADDRFP4 12 +INDIRP4 +ADDRFP4 0 +INDIRP4 +INDIRF4 +ADDRFP4 4 +INDIRF4 +ADDRFP4 8 +INDIRP4 +INDIRF4 +MULF4 +ADDF4 +ASGNF4 +line 2245 +;2244: +;2245: vecc[1] = veca[1] + scale*vecb[1]; +ADDRLP4 0 +CNSTI4 4 +ASGNI4 +ADDRFP4 12 +INDIRP4 +ADDRLP4 0 +INDIRI4 +ADDP4 +ADDRFP4 0 +INDIRP4 +ADDRLP4 0 +INDIRI4 +ADDP4 +INDIRF4 +ADDRFP4 4 +INDIRF4 +ADDRFP4 8 +INDIRP4 +ADDRLP4 0 +INDIRI4 +ADDP4 +INDIRF4 +MULF4 +ADDF4 +ASGNF4 +line 2247 +;2246: +;2247: vecc[2] = veca[2] + scale*vecb[2]; +ADDRLP4 4 +CNSTI4 8 +ASGNI4 +ADDRFP4 12 +INDIRP4 +ADDRLP4 4 +INDIRI4 +ADDP4 +ADDRFP4 0 +INDIRP4 +ADDRLP4 4 +INDIRI4 +ADDP4 +INDIRF4 +ADDRFP4 4 +INDIRF4 +ADDRFP4 8 +INDIRP4 +ADDRLP4 4 +INDIRI4 +ADDP4 +INDIRF4 +MULF4 +ADDF4 +ASGNF4 +line 2249 +;2248: +;2249:} +LABELV $272 +endproc _VectorMA 8 0 +export _DotProduct +proc _DotProduct 16 0 +line 2255 +;2250: +;2251: +;2252: +;2253: +;2254: +;2255:vec_t _DotProduct( const vec3_t v1, const vec3_t v2 ) { +line 2257 +;2256: +;2257: return v1[0]*v2[0] + v1[1]*v2[1] + v1[2]*v2[2]; +ADDRLP4 0 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 4 +ADDRFP4 4 +INDIRP4 +ASGNP4 +ADDRLP4 8 +CNSTI4 4 +ASGNI4 +ADDRLP4 12 +CNSTI4 8 +ASGNI4 +ADDRLP4 0 +INDIRP4 +INDIRF4 +ADDRLP4 4 +INDIRP4 +INDIRF4 +MULF4 +ADDRLP4 0 +INDIRP4 +ADDRLP4 8 +INDIRI4 +ADDP4 +INDIRF4 +ADDRLP4 4 +INDIRP4 +ADDRLP4 8 +INDIRI4 +ADDP4 +INDIRF4 +MULF4 +ADDF4 +ADDRLP4 0 +INDIRP4 +ADDRLP4 12 +INDIRI4 +ADDP4 +INDIRF4 +ADDRLP4 4 +INDIRP4 +ADDRLP4 12 +INDIRI4 +ADDP4 +INDIRF4 +MULF4 +ADDF4 +RETF4 +LABELV $273 +endproc _DotProduct 16 0 +export _VectorSubtract +proc _VectorSubtract 8 0 +line 2263 +;2258: +;2259:} +;2260: +;2261: +;2262: +;2263:void _VectorSubtract( const vec3_t veca, const vec3_t vecb, vec3_t out ) { +line 2265 +;2264: +;2265: out[0] = veca[0]-vecb[0]; +ADDRFP4 8 +INDIRP4 +ADDRFP4 0 +INDIRP4 +INDIRF4 +ADDRFP4 4 +INDIRP4 +INDIRF4 +SUBF4 +ASGNF4 +line 2267 +;2266: +;2267: out[1] = veca[1]-vecb[1]; +ADDRLP4 0 +CNSTI4 4 +ASGNI4 +ADDRFP4 8 +INDIRP4 +ADDRLP4 0 +INDIRI4 +ADDP4 +ADDRFP4 0 +INDIRP4 +ADDRLP4 0 +INDIRI4 +ADDP4 +INDIRF4 +ADDRFP4 4 +INDIRP4 +ADDRLP4 0 +INDIRI4 +ADDP4 +INDIRF4 +SUBF4 +ASGNF4 +line 2269 +;2268: +;2269: out[2] = veca[2]-vecb[2]; +ADDRLP4 4 +CNSTI4 8 +ASGNI4 +ADDRFP4 8 +INDIRP4 +ADDRLP4 4 +INDIRI4 +ADDP4 +ADDRFP4 0 +INDIRP4 +ADDRLP4 4 +INDIRI4 +ADDP4 +INDIRF4 +ADDRFP4 4 +INDIRP4 +ADDRLP4 4 +INDIRI4 +ADDP4 +INDIRF4 +SUBF4 +ASGNF4 +line 2271 +;2270: +;2271:} +LABELV $274 +endproc _VectorSubtract 8 0 +export _VectorAdd +proc _VectorAdd 8 0 +line 2275 +;2272: +;2273: +;2274: +;2275:void _VectorAdd( const vec3_t veca, const vec3_t vecb, vec3_t out ) { +line 2277 +;2276: +;2277: out[0] = veca[0]+vecb[0]; +ADDRFP4 8 +INDIRP4 +ADDRFP4 0 +INDIRP4 +INDIRF4 +ADDRFP4 4 +INDIRP4 +INDIRF4 +ADDF4 +ASGNF4 +line 2279 +;2278: +;2279: out[1] = veca[1]+vecb[1]; +ADDRLP4 0 +CNSTI4 4 +ASGNI4 +ADDRFP4 8 +INDIRP4 +ADDRLP4 0 +INDIRI4 +ADDP4 +ADDRFP4 0 +INDIRP4 +ADDRLP4 0 +INDIRI4 +ADDP4 +INDIRF4 +ADDRFP4 4 +INDIRP4 +ADDRLP4 0 +INDIRI4 +ADDP4 +INDIRF4 +ADDF4 +ASGNF4 +line 2281 +;2280: +;2281: out[2] = veca[2]+vecb[2]; +ADDRLP4 4 +CNSTI4 8 +ASGNI4 +ADDRFP4 8 +INDIRP4 +ADDRLP4 4 +INDIRI4 +ADDP4 +ADDRFP4 0 +INDIRP4 +ADDRLP4 4 +INDIRI4 +ADDP4 +INDIRF4 +ADDRFP4 4 +INDIRP4 +ADDRLP4 4 +INDIRI4 +ADDP4 +INDIRF4 +ADDF4 +ASGNF4 +line 2283 +;2282: +;2283:} +LABELV $275 +endproc _VectorAdd 8 0 +export _VectorCopy +proc _VectorCopy 8 0 +line 2287 +;2284: +;2285: +;2286: +;2287:void _VectorCopy( const vec3_t in, vec3_t out ) { +line 2289 +;2288: +;2289: out[0] = in[0]; +ADDRFP4 4 +INDIRP4 +ADDRFP4 0 +INDIRP4 +INDIRF4 +ASGNF4 +line 2291 +;2290: +;2291: out[1] = in[1]; +ADDRLP4 0 +CNSTI4 4 +ASGNI4 +ADDRFP4 4 +INDIRP4 +ADDRLP4 0 +INDIRI4 +ADDP4 +ADDRFP4 0 +INDIRP4 +ADDRLP4 0 +INDIRI4 +ADDP4 +INDIRF4 +ASGNF4 +line 2293 +;2292: +;2293: out[2] = in[2]; +ADDRLP4 4 +CNSTI4 8 +ASGNI4 +ADDRFP4 4 +INDIRP4 +ADDRLP4 4 +INDIRI4 +ADDP4 +ADDRFP4 0 +INDIRP4 +ADDRLP4 4 +INDIRI4 +ADDP4 +INDIRF4 +ASGNF4 +line 2295 +;2294: +;2295:} +LABELV $276 +endproc _VectorCopy 8 0 +export _VectorScale +proc _VectorScale 8 0 +line 2299 +;2296: +;2297: +;2298: +;2299:void _VectorScale( const vec3_t in, vec_t scale, vec3_t out ) { +line 2301 +;2300: +;2301: out[0] = in[0]*scale; +ADDRFP4 8 +INDIRP4 +ADDRFP4 0 +INDIRP4 +INDIRF4 +ADDRFP4 4 +INDIRF4 +MULF4 +ASGNF4 +line 2303 +;2302: +;2303: out[1] = in[1]*scale; +ADDRLP4 0 +CNSTI4 4 +ASGNI4 +ADDRFP4 8 +INDIRP4 +ADDRLP4 0 +INDIRI4 +ADDP4 +ADDRFP4 0 +INDIRP4 +ADDRLP4 0 +INDIRI4 +ADDP4 +INDIRF4 +ADDRFP4 4 +INDIRF4 +MULF4 +ASGNF4 +line 2305 +;2304: +;2305: out[2] = in[2]*scale; +ADDRLP4 4 +CNSTI4 8 +ASGNI4 +ADDRFP4 8 +INDIRP4 +ADDRLP4 4 +INDIRI4 +ADDP4 +ADDRFP4 0 +INDIRP4 +ADDRLP4 4 +INDIRI4 +ADDP4 +INDIRF4 +ADDRFP4 4 +INDIRF4 +MULF4 +ASGNF4 +line 2307 +;2306: +;2307:} +LABELV $277 +endproc _VectorScale 8 0 +export Vector4Scale +proc Vector4Scale 12 0 +line 2311 +;2308: +;2309: +;2310: +;2311:void Vector4Scale( const vec4_t in, vec_t scale, vec4_t out ) { +line 2313 +;2312: +;2313: out[0] = in[0]*scale; +ADDRFP4 8 +INDIRP4 +ADDRFP4 0 +INDIRP4 +INDIRF4 +ADDRFP4 4 +INDIRF4 +MULF4 +ASGNF4 +line 2315 +;2314: +;2315: out[1] = in[1]*scale; +ADDRLP4 0 +CNSTI4 4 +ASGNI4 +ADDRFP4 8 +INDIRP4 +ADDRLP4 0 +INDIRI4 +ADDP4 +ADDRFP4 0 +INDIRP4 +ADDRLP4 0 +INDIRI4 +ADDP4 +INDIRF4 +ADDRFP4 4 +INDIRF4 +MULF4 +ASGNF4 +line 2317 +;2316: +;2317: out[2] = in[2]*scale; +ADDRLP4 4 +CNSTI4 8 +ASGNI4 +ADDRFP4 8 +INDIRP4 +ADDRLP4 4 +INDIRI4 +ADDP4 +ADDRFP4 0 +INDIRP4 +ADDRLP4 4 +INDIRI4 +ADDP4 +INDIRF4 +ADDRFP4 4 +INDIRF4 +MULF4 +ASGNF4 +line 2319 +;2318: +;2319: out[3] = in[3]*scale; +ADDRLP4 8 +CNSTI4 12 +ASGNI4 +ADDRFP4 8 +INDIRP4 +ADDRLP4 8 +INDIRI4 +ADDP4 +ADDRFP4 0 +INDIRP4 +ADDRLP4 8 +INDIRI4 +ADDP4 +INDIRF4 +ADDRFP4 4 +INDIRF4 +MULF4 +ASGNF4 +line 2321 +;2320: +;2321:} +LABELV $278 +endproc Vector4Scale 12 0 +export Q_log2 +proc Q_log2 8 0 +line 2327 +;2322: +;2323: +;2324: +;2325: +;2326: +;2327:int Q_log2( int val ) { +line 2333 +;2328: +;2329: int answer; +;2330: +;2331: +;2332: +;2333: answer = 0; +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +ADDRGP4 $281 +JUMPV +LABELV $280 +line 2335 +;2334: +;2335: while ( ( val>>=1 ) != 0 ) { +line 2337 +;2336: +;2337: answer++; +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 2339 +;2338: +;2339: } +LABELV $281 +line 2335 +ADDRLP4 4 +ADDRFP4 0 +INDIRI4 +CNSTI4 1 +RSHI4 +ASGNI4 +ADDRFP4 0 +ADDRLP4 4 +INDIRI4 +ASGNI4 +ADDRLP4 4 +INDIRI4 +CNSTI4 0 +NEI4 $280 +line 2341 +;2340: +;2341: return answer; +ADDRLP4 0 +INDIRI4 +RETI4 +LABELV $279 +endproc Q_log2 8 0 +export MatrixMultiply +proc MatrixMultiply 104 0 +line 2399 +;2342: +;2343:} +;2344: +;2345: +;2346: +;2347: +;2348: +;2349: +;2350: +;2351:/* +;2352: +;2353:================= +;2354: +;2355:PlaneTypeForNormal +;2356: +;2357:================= +;2358: +;2359:*/ +;2360: +;2361:/* +;2362: +;2363:int PlaneTypeForNormal (vec3_t normal) { +;2364: +;2365: if ( normal[0] == 1.0 ) +;2366: +;2367: return PLANE_X; +;2368: +;2369: if ( normal[1] == 1.0 ) +;2370: +;2371: return PLANE_Y; +;2372: +;2373: if ( normal[2] == 1.0 ) +;2374: +;2375: return PLANE_Z; +;2376: +;2377: +;2378: +;2379: return PLANE_NON_AXIAL; +;2380: +;2381:} +;2382: +;2383:*/ +;2384: +;2385: +;2386: +;2387: +;2388: +;2389:/* +;2390: +;2391:================ +;2392: +;2393:MatrixMultiply +;2394: +;2395:================ +;2396: +;2397:*/ +;2398: +;2399:void MatrixMultiply(float in1[3][3], float in2[3][3], float out[3][3]) { +line 2401 +;2400: +;2401: out[0][0] = in1[0][0] * in2[0][0] + in1[0][1] * in2[1][0] + +ADDRLP4 0 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 4 +ADDRFP4 4 +INDIRP4 +ASGNP4 +ADDRFP4 8 +INDIRP4 +ADDRLP4 0 +INDIRP4 +INDIRF4 +ADDRLP4 4 +INDIRP4 +INDIRF4 +MULF4 +ADDRLP4 0 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRF4 +ADDRLP4 4 +INDIRP4 +CNSTI4 12 +ADDP4 +INDIRF4 +MULF4 +ADDF4 +ADDRLP4 0 +INDIRP4 +CNSTI4 8 +ADDP4 +INDIRF4 +ADDRLP4 4 +INDIRP4 +CNSTI4 24 +ADDP4 +INDIRF4 +MULF4 +ADDF4 +ASGNF4 +line 2405 +;2402: +;2403: in1[0][2] * in2[2][0]; +;2404: +;2405: out[0][1] = in1[0][0] * in2[0][1] + in1[0][1] * in2[1][1] + +ADDRLP4 8 +CNSTI4 4 +ASGNI4 +ADDRLP4 12 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 16 +ADDRFP4 4 +INDIRP4 +ASGNP4 +ADDRFP4 8 +INDIRP4 +ADDRLP4 8 +INDIRI4 +ADDP4 +ADDRLP4 12 +INDIRP4 +INDIRF4 +ADDRLP4 16 +INDIRP4 +ADDRLP4 8 +INDIRI4 +ADDP4 +INDIRF4 +MULF4 +ADDRLP4 12 +INDIRP4 +ADDRLP4 8 +INDIRI4 +ADDP4 +INDIRF4 +ADDRLP4 16 +INDIRP4 +CNSTI4 16 +ADDP4 +INDIRF4 +MULF4 +ADDF4 +ADDRLP4 12 +INDIRP4 +CNSTI4 8 +ADDP4 +INDIRF4 +ADDRLP4 16 +INDIRP4 +CNSTI4 28 +ADDP4 +INDIRF4 +MULF4 +ADDF4 +ASGNF4 +line 2409 +;2406: +;2407: in1[0][2] * in2[2][1]; +;2408: +;2409: out[0][2] = in1[0][0] * in2[0][2] + in1[0][1] * in2[1][2] + +ADDRLP4 20 +CNSTI4 8 +ASGNI4 +ADDRLP4 24 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 28 +ADDRFP4 4 +INDIRP4 +ASGNP4 +ADDRFP4 8 +INDIRP4 +ADDRLP4 20 +INDIRI4 +ADDP4 +ADDRLP4 24 +INDIRP4 +INDIRF4 +ADDRLP4 28 +INDIRP4 +ADDRLP4 20 +INDIRI4 +ADDP4 +INDIRF4 +MULF4 +ADDRLP4 24 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRF4 +ADDRLP4 28 +INDIRP4 +CNSTI4 20 +ADDP4 +INDIRF4 +MULF4 +ADDF4 +ADDRLP4 24 +INDIRP4 +ADDRLP4 20 +INDIRI4 +ADDP4 +INDIRF4 +ADDRLP4 28 +INDIRP4 +CNSTI4 32 +ADDP4 +INDIRF4 +MULF4 +ADDF4 +ASGNF4 +line 2413 +;2410: +;2411: in1[0][2] * in2[2][2]; +;2412: +;2413: out[1][0] = in1[1][0] * in2[0][0] + in1[1][1] * in2[1][0] + +ADDRLP4 32 +CNSTI4 12 +ASGNI4 +ADDRLP4 36 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 40 +ADDRFP4 4 +INDIRP4 +ASGNP4 +ADDRFP4 8 +INDIRP4 +ADDRLP4 32 +INDIRI4 +ADDP4 +ADDRLP4 36 +INDIRP4 +ADDRLP4 32 +INDIRI4 +ADDP4 +INDIRF4 +ADDRLP4 40 +INDIRP4 +INDIRF4 +MULF4 +ADDRLP4 36 +INDIRP4 +CNSTI4 16 +ADDP4 +INDIRF4 +ADDRLP4 40 +INDIRP4 +ADDRLP4 32 +INDIRI4 +ADDP4 +INDIRF4 +MULF4 +ADDF4 +ADDRLP4 36 +INDIRP4 +CNSTI4 20 +ADDP4 +INDIRF4 +ADDRLP4 40 +INDIRP4 +CNSTI4 24 +ADDP4 +INDIRF4 +MULF4 +ADDF4 +ASGNF4 +line 2417 +;2414: +;2415: in1[1][2] * in2[2][0]; +;2416: +;2417: out[1][1] = in1[1][0] * in2[0][1] + in1[1][1] * in2[1][1] + +ADDRLP4 44 +CNSTI4 16 +ASGNI4 +ADDRLP4 48 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 52 +ADDRFP4 4 +INDIRP4 +ASGNP4 +ADDRFP4 8 +INDIRP4 +ADDRLP4 44 +INDIRI4 +ADDP4 +ADDRLP4 48 +INDIRP4 +CNSTI4 12 +ADDP4 +INDIRF4 +ADDRLP4 52 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRF4 +MULF4 +ADDRLP4 48 +INDIRP4 +ADDRLP4 44 +INDIRI4 +ADDP4 +INDIRF4 +ADDRLP4 52 +INDIRP4 +ADDRLP4 44 +INDIRI4 +ADDP4 +INDIRF4 +MULF4 +ADDF4 +ADDRLP4 48 +INDIRP4 +CNSTI4 20 +ADDP4 +INDIRF4 +ADDRLP4 52 +INDIRP4 +CNSTI4 28 +ADDP4 +INDIRF4 +MULF4 +ADDF4 +ASGNF4 +line 2421 +;2418: +;2419: in1[1][2] * in2[2][1]; +;2420: +;2421: out[1][2] = in1[1][0] * in2[0][2] + in1[1][1] * in2[1][2] + +ADDRLP4 56 +CNSTI4 20 +ASGNI4 +ADDRLP4 60 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 64 +ADDRFP4 4 +INDIRP4 +ASGNP4 +ADDRFP4 8 +INDIRP4 +ADDRLP4 56 +INDIRI4 +ADDP4 +ADDRLP4 60 +INDIRP4 +CNSTI4 12 +ADDP4 +INDIRF4 +ADDRLP4 64 +INDIRP4 +CNSTI4 8 +ADDP4 +INDIRF4 +MULF4 +ADDRLP4 60 +INDIRP4 +CNSTI4 16 +ADDP4 +INDIRF4 +ADDRLP4 64 +INDIRP4 +ADDRLP4 56 +INDIRI4 +ADDP4 +INDIRF4 +MULF4 +ADDF4 +ADDRLP4 60 +INDIRP4 +ADDRLP4 56 +INDIRI4 +ADDP4 +INDIRF4 +ADDRLP4 64 +INDIRP4 +CNSTI4 32 +ADDP4 +INDIRF4 +MULF4 +ADDF4 +ASGNF4 +line 2425 +;2422: +;2423: in1[1][2] * in2[2][2]; +;2424: +;2425: out[2][0] = in1[2][0] * in2[0][0] + in1[2][1] * in2[1][0] + +ADDRLP4 68 +CNSTI4 24 +ASGNI4 +ADDRLP4 72 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 76 +ADDRFP4 4 +INDIRP4 +ASGNP4 +ADDRFP4 8 +INDIRP4 +ADDRLP4 68 +INDIRI4 +ADDP4 +ADDRLP4 72 +INDIRP4 +ADDRLP4 68 +INDIRI4 +ADDP4 +INDIRF4 +ADDRLP4 76 +INDIRP4 +INDIRF4 +MULF4 +ADDRLP4 72 +INDIRP4 +CNSTI4 28 +ADDP4 +INDIRF4 +ADDRLP4 76 +INDIRP4 +CNSTI4 12 +ADDP4 +INDIRF4 +MULF4 +ADDF4 +ADDRLP4 72 +INDIRP4 +CNSTI4 32 +ADDP4 +INDIRF4 +ADDRLP4 76 +INDIRP4 +ADDRLP4 68 +INDIRI4 +ADDP4 +INDIRF4 +MULF4 +ADDF4 +ASGNF4 +line 2429 +;2426: +;2427: in1[2][2] * in2[2][0]; +;2428: +;2429: out[2][1] = in1[2][0] * in2[0][1] + in1[2][1] * in2[1][1] + +ADDRLP4 80 +CNSTI4 28 +ASGNI4 +ADDRLP4 84 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 88 +ADDRFP4 4 +INDIRP4 +ASGNP4 +ADDRFP4 8 +INDIRP4 +ADDRLP4 80 +INDIRI4 +ADDP4 +ADDRLP4 84 +INDIRP4 +CNSTI4 24 +ADDP4 +INDIRF4 +ADDRLP4 88 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRF4 +MULF4 +ADDRLP4 84 +INDIRP4 +ADDRLP4 80 +INDIRI4 +ADDP4 +INDIRF4 +ADDRLP4 88 +INDIRP4 +CNSTI4 16 +ADDP4 +INDIRF4 +MULF4 +ADDF4 +ADDRLP4 84 +INDIRP4 +CNSTI4 32 +ADDP4 +INDIRF4 +ADDRLP4 88 +INDIRP4 +ADDRLP4 80 +INDIRI4 +ADDP4 +INDIRF4 +MULF4 +ADDF4 +ASGNF4 +line 2433 +;2430: +;2431: in1[2][2] * in2[2][1]; +;2432: +;2433: out[2][2] = in1[2][0] * in2[0][2] + in1[2][1] * in2[1][2] + +ADDRLP4 92 +CNSTI4 32 +ASGNI4 +ADDRLP4 96 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 100 +ADDRFP4 4 +INDIRP4 +ASGNP4 +ADDRFP4 8 +INDIRP4 +ADDRLP4 92 +INDIRI4 +ADDP4 +ADDRLP4 96 +INDIRP4 +CNSTI4 24 +ADDP4 +INDIRF4 +ADDRLP4 100 +INDIRP4 +CNSTI4 8 +ADDP4 +INDIRF4 +MULF4 +ADDRLP4 96 +INDIRP4 +CNSTI4 28 +ADDP4 +INDIRF4 +ADDRLP4 100 +INDIRP4 +CNSTI4 20 +ADDP4 +INDIRF4 +MULF4 +ADDF4 +ADDRLP4 96 +INDIRP4 +ADDRLP4 92 +INDIRI4 +ADDP4 +INDIRF4 +ADDRLP4 100 +INDIRP4 +ADDRLP4 92 +INDIRI4 +ADDP4 +INDIRF4 +MULF4 +ADDF4 +ASGNF4 +line 2437 +;2434: +;2435: in1[2][2] * in2[2][2]; +;2436: +;2437:} +LABELV $283 +endproc MatrixMultiply 104 0 +bss +align 4 +LABELV $285 +skip 4 +align 4 +LABELV $286 +skip 4 +align 4 +LABELV $287 +skip 4 +align 4 +LABELV $288 +skip 4 +align 4 +LABELV $289 +skip 4 +align 4 +LABELV $290 +skip 4 +export AngleVectors +code +proc AngleVectors 36 4 +line 2443 +;2438: +;2439: +;2440: +;2441: +;2442: +;2443:void AngleVectors( const vec3_t angles, vec3_t forward, vec3_t right, vec3_t up) { +line 2453 +;2444: +;2445: float angle; +;2446: +;2447: static float sr, sp, sy, cr, cp, cy; +;2448: +;2449: // static to help MS compiler fp bugs +;2450: +;2451: +;2452: +;2453: angle = angles[YAW] * (M_PI*2 / 360); +ADDRLP4 0 +CNSTF4 1016003125 +ADDRFP4 0 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRF4 +MULF4 +ASGNF4 +line 2455 +;2454: +;2455: sy = sin(angle); +ADDRLP4 0 +INDIRF4 +ARGF4 +ADDRLP4 4 +ADDRGP4 sin +CALLF4 +ASGNF4 +ADDRGP4 $287 +ADDRLP4 4 +INDIRF4 +ASGNF4 +line 2457 +;2456: +;2457: cy = cos(angle); +ADDRLP4 0 +INDIRF4 +ARGF4 +ADDRLP4 8 +ADDRGP4 cos +CALLF4 +ASGNF4 +ADDRGP4 $290 +ADDRLP4 8 +INDIRF4 +ASGNF4 +line 2459 +;2458: +;2459: angle = angles[PITCH] * (M_PI*2 / 360); +ADDRLP4 0 +CNSTF4 1016003125 +ADDRFP4 0 +INDIRP4 +INDIRF4 +MULF4 +ASGNF4 +line 2461 +;2460: +;2461: sp = sin(angle); +ADDRLP4 0 +INDIRF4 +ARGF4 +ADDRLP4 12 +ADDRGP4 sin +CALLF4 +ASGNF4 +ADDRGP4 $286 +ADDRLP4 12 +INDIRF4 +ASGNF4 +line 2463 +;2462: +;2463: cp = cos(angle); +ADDRLP4 0 +INDIRF4 +ARGF4 +ADDRLP4 16 +ADDRGP4 cos +CALLF4 +ASGNF4 +ADDRGP4 $289 +ADDRLP4 16 +INDIRF4 +ASGNF4 +line 2465 +;2464: +;2465: angle = angles[ROLL] * (M_PI*2 / 360); +ADDRLP4 0 +CNSTF4 1016003125 +ADDRFP4 0 +INDIRP4 +CNSTI4 8 +ADDP4 +INDIRF4 +MULF4 +ASGNF4 +line 2467 +;2466: +;2467: sr = sin(angle); +ADDRLP4 0 +INDIRF4 +ARGF4 +ADDRLP4 20 +ADDRGP4 sin +CALLF4 +ASGNF4 +ADDRGP4 $285 +ADDRLP4 20 +INDIRF4 +ASGNF4 +line 2469 +;2468: +;2469: cr = cos(angle); +ADDRLP4 0 +INDIRF4 +ARGF4 +ADDRLP4 24 +ADDRGP4 cos +CALLF4 +ASGNF4 +ADDRGP4 $288 +ADDRLP4 24 +INDIRF4 +ASGNF4 +line 2473 +;2470: +;2471: +;2472: +;2473: if (forward) +ADDRFP4 4 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $291 +line 2475 +;2474: +;2475: { +line 2477 +;2476: +;2477: forward[0] = cp*cy; +ADDRFP4 4 +INDIRP4 +ADDRGP4 $289 +INDIRF4 +ADDRGP4 $290 +INDIRF4 +MULF4 +ASGNF4 +line 2479 +;2478: +;2479: forward[1] = cp*sy; +ADDRFP4 4 +INDIRP4 +CNSTI4 4 +ADDP4 +ADDRGP4 $289 +INDIRF4 +ADDRGP4 $287 +INDIRF4 +MULF4 +ASGNF4 +line 2481 +;2480: +;2481: forward[2] = -sp; +ADDRFP4 4 +INDIRP4 +CNSTI4 8 +ADDP4 +ADDRGP4 $286 +INDIRF4 +NEGF4 +ASGNF4 +line 2483 +;2482: +;2483: } +LABELV $291 +line 2485 +;2484: +;2485: if (right) +ADDRFP4 8 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $293 +line 2487 +;2486: +;2487: { +line 2489 +;2488: +;2489: right[0] = (-1*sr*sp*cy+-1*cr*-sy); +ADDRLP4 28 +CNSTF4 3212836864 +ASGNF4 +ADDRFP4 8 +INDIRP4 +ADDRLP4 28 +INDIRF4 +ADDRGP4 $285 +INDIRF4 +MULF4 +ADDRGP4 $286 +INDIRF4 +MULF4 +ADDRGP4 $290 +INDIRF4 +MULF4 +ADDRLP4 28 +INDIRF4 +ADDRGP4 $288 +INDIRF4 +MULF4 +ADDRGP4 $287 +INDIRF4 +NEGF4 +MULF4 +ADDF4 +ASGNF4 +line 2491 +;2490: +;2491: right[1] = (-1*sr*sp*sy+-1*cr*cy); +ADDRLP4 32 +CNSTF4 3212836864 +ASGNF4 +ADDRFP4 8 +INDIRP4 +CNSTI4 4 +ADDP4 +ADDRLP4 32 +INDIRF4 +ADDRGP4 $285 +INDIRF4 +MULF4 +ADDRGP4 $286 +INDIRF4 +MULF4 +ADDRGP4 $287 +INDIRF4 +MULF4 +ADDRLP4 32 +INDIRF4 +ADDRGP4 $288 +INDIRF4 +MULF4 +ADDRGP4 $290 +INDIRF4 +MULF4 +ADDF4 +ASGNF4 +line 2493 +;2492: +;2493: right[2] = -1*sr*cp; +ADDRFP4 8 +INDIRP4 +CNSTI4 8 +ADDP4 +CNSTF4 3212836864 +ADDRGP4 $285 +INDIRF4 +MULF4 +ADDRGP4 $289 +INDIRF4 +MULF4 +ASGNF4 +line 2495 +;2494: +;2495: } +LABELV $293 +line 2497 +;2496: +;2497: if (up) +ADDRFP4 12 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $295 +line 2499 +;2498: +;2499: { +line 2501 +;2500: +;2501: up[0] = (cr*sp*cy+-sr*-sy); +ADDRFP4 12 +INDIRP4 +ADDRGP4 $288 +INDIRF4 +ADDRGP4 $286 +INDIRF4 +MULF4 +ADDRGP4 $290 +INDIRF4 +MULF4 +ADDRGP4 $285 +INDIRF4 +NEGF4 +ADDRGP4 $287 +INDIRF4 +NEGF4 +MULF4 +ADDF4 +ASGNF4 +line 2503 +;2502: +;2503: up[1] = (cr*sp*sy+-sr*cy); +ADDRFP4 12 +INDIRP4 +CNSTI4 4 +ADDP4 +ADDRGP4 $288 +INDIRF4 +ADDRGP4 $286 +INDIRF4 +MULF4 +ADDRGP4 $287 +INDIRF4 +MULF4 +ADDRGP4 $285 +INDIRF4 +NEGF4 +ADDRGP4 $290 +INDIRF4 +MULF4 +ADDF4 +ASGNF4 +line 2505 +;2504: +;2505: up[2] = cr*cp; +ADDRFP4 12 +INDIRP4 +CNSTI4 8 +ADDP4 +ADDRGP4 $288 +INDIRF4 +ADDRGP4 $289 +INDIRF4 +MULF4 +ASGNF4 +line 2507 +;2506: +;2507: } +LABELV $295 +line 2509 +;2508: +;2509:} +LABELV $284 +endproc AngleVectors 36 4 +export PerpendicularVector +proc PerpendicularVector 36 12 +line 2521 +;2510: +;2511: +;2512: +;2513:/* +;2514: +;2515:** assumes "src" is normalized +;2516: +;2517:*/ +;2518: +;2519:void PerpendicularVector( vec3_t dst, const vec3_t src ) +;2520: +;2521:{ +line 2527 +;2522: +;2523: int pos; +;2524: +;2525: int i; +;2526: +;2527: float minelem = 1.0F; +ADDRLP4 4 +CNSTF4 1065353216 +ASGNF4 +line 2539 +;2528: +;2529: vec3_t tempvec; +;2530: +;2531: +;2532: +;2533: /* +;2534: +;2535: ** find the smallest magnitude axially aligned vector +;2536: +;2537: */ +;2538: +;2539: for ( pos = 0, i = 0; i < 3; i++ ) +ADDRLP4 24 +CNSTI4 0 +ASGNI4 +ADDRLP4 8 +ADDRLP4 24 +INDIRI4 +ASGNI4 +ADDRLP4 0 +ADDRLP4 24 +INDIRI4 +ASGNI4 +ADDRGP4 $301 +JUMPV +LABELV $298 +line 2541 +;2540: +;2541: { +line 2543 +;2542: +;2543: if ( fabs( src[i] ) < minelem ) +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRFP4 4 +INDIRP4 +ADDP4 +INDIRF4 +ARGF4 +ADDRLP4 28 +ADDRGP4 fabs +CALLF4 +ASGNF4 +ADDRLP4 28 +INDIRF4 +ADDRLP4 4 +INDIRF4 +GEF4 $302 +line 2545 +;2544: +;2545: { +line 2547 +;2546: +;2547: pos = i; +ADDRLP4 8 +ADDRLP4 0 +INDIRI4 +ASGNI4 +line 2549 +;2548: +;2549: minelem = fabs( src[i] ); +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRFP4 4 +INDIRP4 +ADDP4 +INDIRF4 +ARGF4 +ADDRLP4 32 +ADDRGP4 fabs +CALLF4 +ASGNF4 +ADDRLP4 4 +ADDRLP4 32 +INDIRF4 +ASGNF4 +line 2551 +;2550: +;2551: } +LABELV $302 +line 2553 +;2552: +;2553: } +LABELV $299 +line 2539 +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +LABELV $301 +ADDRLP4 0 +INDIRI4 +CNSTI4 3 +LTI4 $298 +line 2555 +;2554: +;2555: tempvec[0] = tempvec[1] = tempvec[2] = 0.0F; +ADDRLP4 28 +CNSTF4 0 +ASGNF4 +ADDRLP4 12+8 +ADDRLP4 28 +INDIRF4 +ASGNF4 +ADDRLP4 12+4 +ADDRLP4 28 +INDIRF4 +ASGNF4 +ADDRLP4 12 +ADDRLP4 28 +INDIRF4 +ASGNF4 +line 2557 +;2556: +;2557: tempvec[pos] = 1.0F; +ADDRLP4 8 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRLP4 12 +ADDP4 +CNSTF4 1065353216 +ASGNF4 +line 2567 +;2558: +;2559: +;2560: +;2561: /* +;2562: +;2563: ** project the point onto the plane defined by src +;2564: +;2565: */ +;2566: +;2567: ProjectPointOnPlane( dst, tempvec, src ); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRLP4 12 +ARGP4 +ADDRFP4 4 +INDIRP4 +ARGP4 +ADDRGP4 ProjectPointOnPlane +CALLV +pop +line 2577 +;2568: +;2569: +;2570: +;2571: /* +;2572: +;2573: ** normalize the result +;2574: +;2575: */ +;2576: +;2577: VectorNormalize( dst ); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRGP4 VectorNormalize +CALLF4 +pop +line 2579 +;2578: +;2579:} +LABELV $297 +endproc PerpendicularVector 36 12 +import Com_Printf +import Com_Error +import Info_NextPair +import Info_Validate +import Info_SetValueForKey_Big +import Info_SetValueForKey +import Info_RemoveKey_big +import Info_RemoveKey +import Info_ValueForKey +import va +import Q_CleanStr +import Q_PrintStrlen +import Q_strcat +import Q_strncpyz +import Q_strrchr +import Q_strupr +import Q_strlwr +import Q_stricmpn +import Q_strncmp +import Q_stricmp +import Q_isalpha +import Q_isupper +import Q_islower +import Q_isprint +import Com_sprintf +import Parse3DMatrix +import Parse2DMatrix +import Parse1DMatrix +import SkipRestOfLine +import SkipBracedSection +import COM_MatchToken +import COM_ParseWarning +import COM_ParseError +import COM_Compress +import COM_ParseExt +import COM_Parse +import COM_GetCurrentParseLine +import COM_BeginParseSession +import COM_DefaultExtension +import COM_StripExtension +import COM_SkipPath +import Com_Clamp +import Q_acos +import Com_Memcpy +import Com_Memset +import Hunk_Alloc +import FloatSwap +import LongSwap +import ShortSwap +import acos +import fabs +import abs +import tan +import atan2 +import cos +import sin +import sqrt +import floor +import ceil +import memcpy +import memset +import memmove +import sscanf +import vsprintf +import _atoi +import atoi +import _atof +import atof +import toupper +import tolower +import strncpy +import strstr +import strchr +import strcmp +import strcpy +import strcat +import strlen +import rand +import srand +import qsort diff --git a/ta_ui/vm/q_shared.asm b/ta_ui/vm/q_shared.asm new file mode 100644 index 00000000..112fe522 --- /dev/null +++ b/ta_ui/vm/q_shared.asm @@ -0,0 +1,7907 @@ +export Com_Clamp +code +proc Com_Clamp 0 0 +file "../../game/q_shared.c" +line 23 +;1://----------------------------------------------------------------------------- +;2:// +;3:// $Id$ +;4:// +;5://----------------------------------------------------------------------------- +;6:// +;7:// $Log$ +;7:// Revision 1.1 2002/01/08 05:46:24 blaze +;7:// Initial revision +;7:// +;8:// Revision 1.4 2001/12/31 16:28:42 jbravo +;9:// I made a Booboo with the Log tag. +;10:// +;11:// +;12://----------------------------------------------------------------------------- +;13:// Copyright (C) 1999-2000 Id Software, Inc. +;14: +;15:// +;16: +;17:// q_shared.c -- stateless support routines that are included in each code dll +;18: +;19:#include "q_shared.h" +;20: +;21: +;22: +;23:float Com_Clamp( float min, float max, float value ) { +line 25 +;24: +;25: if ( value < min ) { +ADDRFP4 8 +INDIRF4 +ADDRFP4 0 +INDIRF4 +GEF4 $23 +line 27 +;26: +;27: return min; +ADDRFP4 0 +INDIRF4 +RETF4 +ADDRGP4 $22 +JUMPV +LABELV $23 +line 31 +;28: +;29: } +;30: +;31: if ( value > max ) { +ADDRFP4 8 +INDIRF4 +ADDRFP4 4 +INDIRF4 +LEF4 $25 +line 33 +;32: +;33: return max; +ADDRFP4 4 +INDIRF4 +RETF4 +ADDRGP4 $22 +JUMPV +LABELV $25 +line 37 +;34: +;35: } +;36: +;37: return value; +ADDRFP4 8 +INDIRF4 +RETF4 +LABELV $22 +endproc Com_Clamp 0 0 +export COM_SkipPath +proc COM_SkipPath 4 0 +line 57 +;38: +;39:} +;40: +;41: +;42: +;43: +;44: +;45:/* +;46: +;47:============ +;48: +;49:COM_SkipPath +;50: +;51:============ +;52: +;53:*/ +;54: +;55:char *COM_SkipPath (char *pathname) +;56: +;57:{ +line 63 +;58: +;59: char *last; +;60: +;61: +;62: +;63: last = pathname; +ADDRLP4 0 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRGP4 $29 +JUMPV +LABELV $28 +line 67 +;64: +;65: while (*pathname) +;66: +;67: { +line 69 +;68: +;69: if (*pathname=='/') +ADDRFP4 0 +INDIRP4 +INDIRI1 +CVII4 1 +CNSTI4 47 +NEI4 $31 +line 71 +;70: +;71: last = pathname+1; +ADDRLP4 0 +ADDRFP4 0 +INDIRP4 +CNSTI4 1 +ADDP4 +ASGNP4 +LABELV $31 +line 73 +;72: +;73: pathname++; +ADDRFP4 0 +ADDRFP4 0 +INDIRP4 +CNSTI4 1 +ADDP4 +ASGNP4 +line 75 +;74: +;75: } +LABELV $29 +line 65 +ADDRFP4 0 +INDIRP4 +INDIRI1 +CVII4 1 +CNSTI4 0 +NEI4 $28 +line 77 +;76: +;77: return last; +ADDRLP4 0 +INDIRP4 +RETP4 +LABELV $27 +endproc COM_SkipPath 4 0 +export COM_StripExtension +proc COM_StripExtension 12 0 +line 93 +;78: +;79:} +;80: +;81: +;82: +;83:/* +;84: +;85:============ +;86: +;87:COM_StripExtension +;88: +;89:============ +;90: +;91:*/ +;92: +;93:void COM_StripExtension( const char *in, char *out ) { +ADDRGP4 $35 +JUMPV +LABELV $34 +line 95 +;94: +;95: while ( *in && *in != '.' ) { +line 97 +;96: +;97: *out++ = *in++; +ADDRLP4 0 +ADDRFP4 4 +INDIRP4 +ASGNP4 +ADDRLP4 8 +CNSTI4 1 +ASGNI4 +ADDRFP4 4 +ADDRLP4 0 +INDIRP4 +ADDRLP4 8 +INDIRI4 +ADDP4 +ASGNP4 +ADDRLP4 4 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRFP4 0 +ADDRLP4 4 +INDIRP4 +ADDRLP4 8 +INDIRI4 +ADDP4 +ASGNP4 +ADDRLP4 0 +INDIRP4 +ADDRLP4 4 +INDIRP4 +INDIRI1 +ASGNI1 +line 99 +;98: +;99: } +LABELV $35 +line 95 +ADDRLP4 0 +ADDRFP4 0 +INDIRP4 +INDIRI1 +CVII4 1 +ASGNI4 +ADDRLP4 0 +INDIRI4 +CNSTI4 0 +EQI4 $37 +ADDRLP4 0 +INDIRI4 +CNSTI4 46 +NEI4 $34 +LABELV $37 +line 101 +;100: +;101: *out = 0; +ADDRFP4 4 +INDIRP4 +CNSTI1 0 +ASGNI1 +line 103 +;102: +;103:} +LABELV $33 +endproc COM_StripExtension 12 0 +export COM_DefaultExtension +proc COM_DefaultExtension 76 20 +line 119 +;104: +;105: +;106: +;107: +;108: +;109:/* +;110: +;111:================== +;112: +;113:COM_DefaultExtension +;114: +;115:================== +;116: +;117:*/ +;118: +;119:void COM_DefaultExtension (char *path, int maxSize, const char *extension ) { +line 135 +;120: +;121: char oldPath[MAX_QPATH]; +;122: +;123: char *src; +;124: +;125: +;126: +;127:// +;128: +;129:// if path doesn't have a .EXT, append extension +;130: +;131:// (extension should include the .) +;132: +;133:// +;134: +;135: src = path + strlen(path) - 1; +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRLP4 68 +ADDRGP4 strlen +CALLI4 +ASGNI4 +ADDRLP4 0 +ADDRLP4 68 +INDIRI4 +ADDRFP4 0 +INDIRP4 +ADDP4 +CNSTI4 -1 +ADDP4 +ASGNP4 +ADDRGP4 $40 +JUMPV +LABELV $39 +line 139 +;136: +;137: +;138: +;139: while (*src != '/' && src != path) { +line 141 +;140: +;141: if ( *src == '.' ) { +ADDRLP4 0 +INDIRP4 +INDIRI1 +CVII4 1 +CNSTI4 46 +NEI4 $42 +line 143 +;142: +;143: return; // it has an extension +ADDRGP4 $38 +JUMPV +LABELV $42 +line 147 +;144: +;145: } +;146: +;147: src--; +ADDRLP4 0 +ADDRLP4 0 +INDIRP4 +CNSTI4 -1 +ADDP4 +ASGNP4 +line 149 +;148: +;149: } +LABELV $40 +line 139 +ADDRLP4 0 +INDIRP4 +INDIRI1 +CVII4 1 +CNSTI4 47 +EQI4 $44 +ADDRLP4 0 +INDIRP4 +CVPU4 4 +ADDRFP4 0 +INDIRP4 +CVPU4 4 +NEU4 $39 +LABELV $44 +line 153 +;150: +;151: +;152: +;153: Q_strncpyz( oldPath, path, sizeof( oldPath ) ); +ADDRLP4 4 +ARGP4 +ADDRFP4 0 +INDIRP4 +ARGP4 +CNSTI4 64 +ARGI4 +ADDRGP4 Q_strncpyz +CALLV +pop +line 155 +;154: +;155: Com_sprintf( path, maxSize, "%s%s", oldPath, extension ); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRFP4 4 +INDIRI4 +ARGI4 +ADDRGP4 $45 +ARGP4 +ADDRLP4 4 +ARGP4 +ADDRFP4 8 +INDIRP4 +ARGP4 +ADDRGP4 Com_sprintf +CALLV +pop +line 157 +;156: +;157:} +LABELV $38 +endproc COM_DefaultExtension 76 20 +export ShortSwap +proc ShortSwap 2 0 +ADDRFP4 0 +ADDRFP4 0 +INDIRI4 +CVII2 4 +ASGNI2 +line 221 +;158: +;159: +;160: +;161:/* +;162: +;163:============================================================================ +;164: +;165: +;166: +;167: BYTE ORDER FUNCTIONS +;168: +;169: +;170: +;171:============================================================================ +;172: +;173:*/ +;174: +;175:/* +;176: +;177:// can't just use function pointers, or dll linkage can +;178: +;179:// mess up when qcommon is included in multiple places +;180: +;181:static short (*_BigShort) (short l); +;182: +;183:static short (*_LittleShort) (short l); +;184: +;185:static int (*_BigLong) (int l); +;186: +;187:static int (*_LittleLong) (int l); +;188: +;189:static qint64 (*_BigLong64) (qint64 l); +;190: +;191:static qint64 (*_LittleLong64) (qint64 l); +;192: +;193:static float (*_BigFloat) (const float *l); +;194: +;195:static float (*_LittleFloat) (const float *l); +;196: +;197: +;198: +;199:short BigShort(short l){return _BigShort(l);} +;200: +;201:short LittleShort(short l) {return _LittleShort(l);} +;202: +;203:int BigLong (int l) {return _BigLong(l);} +;204: +;205:int LittleLong (int l) {return _LittleLong(l);} +;206: +;207:qint64 BigLong64 (qint64 l) {return _BigLong64(l);} +;208: +;209:qint64 LittleLong64 (qint64 l) {return _LittleLong64(l);} +;210: +;211:float BigFloat (const float *l) {return _BigFloat(l);} +;212: +;213:float LittleFloat (const float *l) {return _LittleFloat(l);} +;214: +;215:*/ +;216: +;217: +;218: +;219:short ShortSwap (short l) +;220: +;221:{ +line 227 +;222: +;223: byte b1,b2; +;224: +;225: +;226: +;227: b1 = l&255; +ADDRLP4 0 +ADDRFP4 0 +INDIRI2 +CVII4 2 +CNSTI4 255 +BANDI4 +CVIU4 4 +CVUU1 4 +ASGNU1 +line 229 +;228: +;229: b2 = (l>>8)&255; +ADDRLP4 1 +ADDRFP4 0 +INDIRI2 +CVII4 2 +CNSTI4 8 +RSHI4 +CNSTI4 255 +BANDI4 +CVIU4 4 +CVUU1 4 +ASGNU1 +line 233 +;230: +;231: +;232: +;233: return (b1<<8) + b2; +ADDRLP4 0 +INDIRU1 +CVUI4 1 +CNSTI4 8 +LSHI4 +ADDRLP4 1 +INDIRU1 +CVUI4 1 +ADDI4 +CVII2 4 +CVII4 2 +RETI4 +LABELV $46 +endproc ShortSwap 2 0 +export ShortNoSwap +proc ShortNoSwap 0 0 +ADDRFP4 0 +ADDRFP4 0 +INDIRI4 +CVII2 4 +ASGNI2 +line 241 +;234: +;235:} +;236: +;237: +;238: +;239:short ShortNoSwap (short l) +;240: +;241:{ +line 243 +;242: +;243: return l; +ADDRFP4 0 +INDIRI2 +CVII4 2 +RETI4 +LABELV $47 +endproc ShortNoSwap 0 0 +export LongSwap +proc LongSwap 4 0 +line 251 +;244: +;245:} +;246: +;247: +;248: +;249:int LongSwap (int l) +;250: +;251:{ +line 257 +;252: +;253: byte b1,b2,b3,b4; +;254: +;255: +;256: +;257: b1 = l&255; +ADDRLP4 0 +ADDRFP4 0 +INDIRI4 +CNSTI4 255 +BANDI4 +CVIU4 4 +CVUU1 4 +ASGNU1 +line 259 +;258: +;259: b2 = (l>>8)&255; +ADDRLP4 1 +ADDRFP4 0 +INDIRI4 +CNSTI4 8 +RSHI4 +CNSTI4 255 +BANDI4 +CVIU4 4 +CVUU1 4 +ASGNU1 +line 261 +;260: +;261: b3 = (l>>16)&255; +ADDRLP4 2 +ADDRFP4 0 +INDIRI4 +CNSTI4 16 +RSHI4 +CNSTI4 255 +BANDI4 +CVIU4 4 +CVUU1 4 +ASGNU1 +line 263 +;262: +;263: b4 = (l>>24)&255; +ADDRLP4 3 +ADDRFP4 0 +INDIRI4 +CNSTI4 24 +RSHI4 +CNSTI4 255 +BANDI4 +CVIU4 4 +CVUU1 4 +ASGNU1 +line 267 +;264: +;265: +;266: +;267: return ((int)b1<<24) + ((int)b2<<16) + ((int)b3<<8) + b4; +ADDRLP4 0 +INDIRU1 +CVUI4 1 +CNSTI4 24 +LSHI4 +ADDRLP4 1 +INDIRU1 +CVUI4 1 +CNSTI4 16 +LSHI4 +ADDI4 +ADDRLP4 2 +INDIRU1 +CVUI4 1 +CNSTI4 8 +LSHI4 +ADDI4 +ADDRLP4 3 +INDIRU1 +CVUI4 1 +ADDI4 +RETI4 +LABELV $48 +endproc LongSwap 4 0 +export LongNoSwap +proc LongNoSwap 0 0 +line 275 +;268: +;269:} +;270: +;271: +;272: +;273:int LongNoSwap (int l) +;274: +;275:{ +line 277 +;276: +;277: return l; +ADDRFP4 0 +INDIRI4 +RETI4 +LABELV $49 +endproc LongNoSwap 0 0 +export Long64Swap +proc Long64Swap 8 0 +line 285 +;278: +;279:} +;280: +;281: +;282: +;283:qint64 Long64Swap (qint64 ll) +;284: +;285:{ +line 291 +;286: +;287: qint64 result; +;288: +;289: +;290: +;291: result.b0 = ll.b7; +ADDRLP4 0 +ADDRFP4 4 +INDIRP4 +CNSTI4 7 +ADDP4 +INDIRU1 +ASGNU1 +line 293 +;292: +;293: result.b1 = ll.b6; +ADDRLP4 0+1 +ADDRFP4 4 +INDIRP4 +CNSTI4 6 +ADDP4 +INDIRU1 +ASGNU1 +line 295 +;294: +;295: result.b2 = ll.b5; +ADDRLP4 0+2 +ADDRFP4 4 +INDIRP4 +CNSTI4 5 +ADDP4 +INDIRU1 +ASGNU1 +line 297 +;296: +;297: result.b3 = ll.b4; +ADDRLP4 0+3 +ADDRFP4 4 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRU1 +ASGNU1 +line 299 +;298: +;299: result.b4 = ll.b3; +ADDRLP4 0+4 +ADDRFP4 4 +INDIRP4 +CNSTI4 3 +ADDP4 +INDIRU1 +ASGNU1 +line 301 +;300: +;301: result.b5 = ll.b2; +ADDRLP4 0+5 +ADDRFP4 4 +INDIRP4 +CNSTI4 2 +ADDP4 +INDIRU1 +ASGNU1 +line 303 +;302: +;303: result.b6 = ll.b1; +ADDRLP4 0+6 +ADDRFP4 4 +INDIRP4 +CNSTI4 1 +ADDP4 +INDIRU1 +ASGNU1 +line 305 +;304: +;305: result.b7 = ll.b0; +ADDRLP4 0+7 +ADDRFP4 4 +INDIRP4 +INDIRU1 +ASGNU1 +line 309 +;306: +;307: +;308: +;309: return result; +ADDRFP4 0 +INDIRP4 +ADDRLP4 0 +INDIRB +ASGNB 8 +LABELV $50 +endproc Long64Swap 8 0 +export Long64NoSwap +proc Long64NoSwap 0 0 +line 317 +;310: +;311:} +;312: +;313: +;314: +;315:qint64 Long64NoSwap (qint64 ll) +;316: +;317:{ +line 319 +;318: +;319: return ll; +ADDRFP4 0 +INDIRP4 +ADDRFP4 4 +INDIRP4 +INDIRB +ASGNB 8 +LABELV $59 +endproc Long64NoSwap 0 0 +export FloatSwap +proc FloatSwap 12 4 +line 335 +;320: +;321:} +;322: +;323: +;324: +;325:typedef union { +;326: +;327: float f; +;328: +;329: unsigned int i; +;330: +;331:} _FloatByteUnion; +;332: +;333: +;334: +;335:float FloatSwap (const float *f) { +line 343 +;336: +;337: const _FloatByteUnion *in; +;338: +;339: _FloatByteUnion out; +;340: +;341: +;342: +;343: in = (_FloatByteUnion *)f; +ADDRLP4 0 +ADDRFP4 0 +INDIRP4 +ASGNP4 +line 345 +;344: +;345: out.i = LongSwap(in->i); +ADDRLP4 0 +INDIRP4 +INDIRU4 +CVUI4 4 +ARGI4 +ADDRLP4 8 +ADDRGP4 LongSwap +CALLI4 +ASGNI4 +ADDRLP4 4 +ADDRLP4 8 +INDIRI4 +CVIU4 4 +ASGNU4 +line 349 +;346: +;347: +;348: +;349: return out.f; +ADDRLP4 4 +INDIRF4 +RETF4 +LABELV $62 +endproc FloatSwap 12 4 +export FloatNoSwap +proc FloatNoSwap 0 0 +line 357 +;350: +;351:} +;352: +;353: +;354: +;355:float FloatNoSwap (const float *f) +;356: +;357:{ +line 359 +;358: +;359: return *f; +ADDRFP4 0 +INDIRP4 +INDIRF4 +RETF4 +LABELV $63 +endproc FloatNoSwap 0 0 +export COM_BeginParseSession +proc COM_BeginParseSession 0 16 +line 465 +;360: +;361:} +;362: +;363: +;364: +;365:/* +;366: +;367:================ +;368: +;369:Swap_Init +;370: +;371:================ +;372: +;373:*/ +;374: +;375:/* +;376: +;377:void Swap_Init (void) +;378: +;379:{ +;380: +;381: byte swaptest[2] = {1,0}; +;382: +;383: +;384: +;385:// set the byte swapping variables in a portable manner +;386: +;387: if ( *(short *)swaptest == 1) +;388: +;389: { +;390: +;391: _BigShort = ShortSwap; +;392: +;393: _LittleShort = ShortNoSwap; +;394: +;395: _BigLong = LongSwap; +;396: +;397: _LittleLong = LongNoSwap; +;398: +;399: _BigLong64 = Long64Swap; +;400: +;401: _LittleLong64 = Long64NoSwap; +;402: +;403: _BigFloat = FloatSwap; +;404: +;405: _LittleFloat = FloatNoSwap; +;406: +;407: } +;408: +;409: else +;410: +;411: { +;412: +;413: _BigShort = ShortNoSwap; +;414: +;415: _LittleShort = ShortSwap; +;416: +;417: _BigLong = LongNoSwap; +;418: +;419: _LittleLong = LongSwap; +;420: +;421: _BigLong64 = Long64NoSwap; +;422: +;423: _LittleLong64 = Long64Swap; +;424: +;425: _BigFloat = FloatNoSwap; +;426: +;427: _LittleFloat = FloatSwap; +;428: +;429: } +;430: +;431: +;432: +;433:} +;434: +;435:*/ +;436: +;437: +;438: +;439:/* +;440: +;441:============================================================================ +;442: +;443: +;444: +;445:PARSING +;446: +;447: +;448: +;449:============================================================================ +;450: +;451:*/ +;452: +;453: +;454: +;455:static char com_token[MAX_TOKEN_CHARS]; +;456: +;457:static char com_parsename[MAX_TOKEN_CHARS]; +;458: +;459:static int com_lines; +;460: +;461: +;462: +;463:void COM_BeginParseSession( const char *name ) +;464: +;465:{ +line 467 +;466: +;467: com_lines = 0; +ADDRGP4 com_lines +CNSTI4 0 +ASGNI4 +line 469 +;468: +;469: Com_sprintf(com_parsename, sizeof(com_parsename), "%s", name); +ADDRGP4 com_parsename +ARGP4 +CNSTI4 1024 +ARGI4 +ADDRGP4 $65 +ARGP4 +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRGP4 Com_sprintf +CALLV +pop +line 471 +;470: +;471:} +LABELV $64 +endproc COM_BeginParseSession 0 16 +export COM_GetCurrentParseLine +proc COM_GetCurrentParseLine 0 0 +line 477 +;472: +;473: +;474: +;475:int COM_GetCurrentParseLine( void ) +;476: +;477:{ +line 479 +;478: +;479: return com_lines; +ADDRGP4 com_lines +INDIRI4 +RETI4 +LABELV $66 +endproc COM_GetCurrentParseLine 0 0 +export COM_Parse +proc COM_Parse 4 8 +line 487 +;480: +;481:} +;482: +;483: +;484: +;485:char *COM_Parse( char **data_p ) +;486: +;487:{ +line 489 +;488: +;489: return COM_ParseExt( data_p, qtrue ); +ADDRFP4 0 +INDIRP4 +ARGP4 +CNSTI4 1 +ARGI4 +ADDRLP4 0 +ADDRGP4 COM_ParseExt +CALLP4 +ASGNP4 +ADDRLP4 0 +INDIRP4 +RETP4 +LABELV $67 +endproc COM_Parse 4 8 +bss +align 1 +LABELV $69 +skip 4096 +export COM_ParseError +code +proc COM_ParseError 4 16 +line 497 +;490: +;491:} +;492: +;493: +;494: +;495:void COM_ParseError( char *format, ... ) +;496: +;497:{ +line 505 +;498: +;499: va_list argptr; +;500: +;501: static char string[4096]; +;502: +;503: +;504: +;505: va_start (argptr, format); +ADDRLP4 0 +ADDRFP4 0+4 +ASGNP4 +line 507 +;506: +;507: vsprintf (string, format, argptr); +ADDRGP4 $69 +ARGP4 +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRLP4 0 +INDIRP4 +ARGP4 +ADDRGP4 vsprintf +CALLI4 +pop +line 509 +;508: +;509: va_end (argptr); +ADDRLP4 0 +CNSTP4 0 +ASGNP4 +line 513 +;510: +;511: +;512: +;513: Com_Printf("ERROR: %s, line %d: %s\n", com_parsename, com_lines, string); +ADDRGP4 $71 +ARGP4 +ADDRGP4 com_parsename +ARGP4 +ADDRGP4 com_lines +INDIRI4 +ARGI4 +ADDRGP4 $69 +ARGP4 +ADDRGP4 Com_Printf +CALLV +pop +line 515 +;514: +;515:} +LABELV $68 +endproc COM_ParseError 4 16 +bss +align 1 +LABELV $73 +skip 4096 +export COM_ParseWarning +code +proc COM_ParseWarning 4 16 +line 521 +;516: +;517: +;518: +;519:void COM_ParseWarning( char *format, ... ) +;520: +;521:{ +line 529 +;522: +;523: va_list argptr; +;524: +;525: static char string[4096]; +;526: +;527: +;528: +;529: va_start (argptr, format); +ADDRLP4 0 +ADDRFP4 0+4 +ASGNP4 +line 531 +;530: +;531: vsprintf (string, format, argptr); +ADDRGP4 $73 +ARGP4 +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRLP4 0 +INDIRP4 +ARGP4 +ADDRGP4 vsprintf +CALLI4 +pop +line 533 +;532: +;533: va_end (argptr); +ADDRLP4 0 +CNSTP4 0 +ASGNP4 +line 537 +;534: +;535: +;536: +;537: Com_Printf("WARNING: %s, line %d: %s\n", com_parsename, com_lines, string); +ADDRGP4 $75 +ARGP4 +ADDRGP4 com_parsename +ARGP4 +ADDRGP4 com_lines +INDIRI4 +ARGI4 +ADDRGP4 $73 +ARGP4 +ADDRGP4 Com_Printf +CALLV +pop +line 539 +;538: +;539:} +LABELV $72 +endproc COM_ParseWarning 4 16 +proc SkipWhitespace 8 0 +line 567 +;540: +;541: +;542: +;543:/* +;544: +;545:============== +;546: +;547:COM_Parse +;548: +;549: +;550: +;551:Parse a token out of a string +;552: +;553:Will never return NULL, just empty strings +;554: +;555: +;556: +;557:If "allowLineBreaks" is qtrue then an empty +;558: +;559:string will be returned if the next token is +;560: +;561:a newline. +;562: +;563:============== +;564: +;565:*/ +;566: +;567:static char *SkipWhitespace( char *data, qboolean *hasNewLines ) { +ADDRGP4 $78 +JUMPV +LABELV $77 +line 573 +;568: +;569: int c; +;570: +;571: +;572: +;573: while( (c = *data) <= ' ') { +line 575 +;574: +;575: if( !c ) { +ADDRLP4 0 +INDIRI4 +CNSTI4 0 +NEI4 $80 +line 577 +;576: +;577: return NULL; +CNSTP4 0 +RETP4 +ADDRGP4 $76 +JUMPV +LABELV $80 +line 581 +;578: +;579: } +;580: +;581: if( c == '\n' ) { +ADDRLP4 0 +INDIRI4 +CNSTI4 10 +NEI4 $82 +line 583 +;582: +;583: com_lines++; +ADDRLP4 4 +ADDRGP4 com_lines +ASGNP4 +ADDRLP4 4 +INDIRP4 +ADDRLP4 4 +INDIRP4 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 585 +;584: +;585: *hasNewLines = qtrue; +ADDRFP4 4 +INDIRP4 +CNSTI4 1 +ASGNI4 +line 587 +;586: +;587: } +LABELV $82 +line 589 +;588: +;589: data++; +ADDRFP4 0 +ADDRFP4 0 +INDIRP4 +CNSTI4 1 +ADDP4 +ASGNP4 +line 591 +;590: +;591: } +LABELV $78 +line 573 +ADDRLP4 4 +ADDRFP4 0 +INDIRP4 +INDIRI1 +CVII4 1 +ASGNI4 +ADDRLP4 0 +ADDRLP4 4 +INDIRI4 +ASGNI4 +ADDRLP4 4 +INDIRI4 +CNSTI4 32 +LEI4 $77 +line 595 +;592: +;593: +;594: +;595: return data; +ADDRFP4 0 +INDIRP4 +RETP4 +LABELV $76 +endproc SkipWhitespace 8 0 +export COM_Compress +proc COM_Compress 48 0 +line 601 +;596: +;597:} +;598: +;599: +;600: +;601:int COM_Compress( char *data_p ) { +line 607 +;602: +;603: char *in, *out; +;604: +;605: int c; +;606: +;607: qboolean newline = qfalse, whitespace = qfalse; +ADDRLP4 12 +CNSTI4 0 +ASGNI4 +ADDRLP4 16 +CNSTI4 0 +ASGNI4 +line 611 +;608: +;609: +;610: +;611: in = out = data_p; +ADDRLP4 20 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 8 +ADDRLP4 20 +INDIRP4 +ASGNP4 +ADDRLP4 0 +ADDRLP4 20 +INDIRP4 +ASGNP4 +line 613 +;612: +;613: if (in) { +ADDRLP4 0 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $85 +ADDRGP4 $88 +JUMPV +LABELV $87 +line 615 +;614: +;615: while ((c = *in) != 0) { +line 619 +;616: +;617: // skip double slash comments +;618: +;619: if ( c == '/' && in[1] == '/' ) { +ADDRLP4 24 +CNSTI4 47 +ASGNI4 +ADDRLP4 4 +INDIRI4 +ADDRLP4 24 +INDIRI4 +NEI4 $90 +ADDRLP4 0 +INDIRP4 +CNSTI4 1 +ADDP4 +INDIRI1 +CVII4 1 +ADDRLP4 24 +INDIRI4 +NEI4 $90 +ADDRGP4 $93 +JUMPV +LABELV $92 +line 621 +;620: +;621: while (*in && *in != '\n') { +line 623 +;622: +;623: in++; +ADDRLP4 0 +ADDRLP4 0 +INDIRP4 +CNSTI4 1 +ADDP4 +ASGNP4 +line 625 +;624: +;625: } +LABELV $93 +line 621 +ADDRLP4 28 +ADDRLP4 0 +INDIRP4 +INDIRI1 +CVII4 1 +ASGNI4 +ADDRLP4 28 +INDIRI4 +CNSTI4 0 +EQI4 $95 +ADDRLP4 28 +INDIRI4 +CNSTI4 10 +NEI4 $92 +LABELV $95 +line 629 +;626: +;627: // skip /* */ comments +;628: +;629: } else if ( c == '/' && in[1] == '*' ) { +ADDRGP4 $91 +JUMPV +LABELV $90 +ADDRLP4 4 +INDIRI4 +CNSTI4 47 +NEI4 $96 +ADDRLP4 0 +INDIRP4 +CNSTI4 1 +ADDP4 +INDIRI1 +CVII4 1 +CNSTI4 42 +NEI4 $96 +ADDRGP4 $99 +JUMPV +LABELV $98 +line 633 +;630: +;631: while ( *in && ( *in != '*' || in[1] != '/' ) ) +;632: +;633: in++; +ADDRLP4 0 +ADDRLP4 0 +INDIRP4 +CNSTI4 1 +ADDP4 +ASGNP4 +LABELV $99 +line 631 +ADDRLP4 32 +ADDRLP4 0 +INDIRP4 +INDIRI1 +CVII4 1 +ASGNI4 +ADDRLP4 32 +INDIRI4 +CNSTI4 0 +EQI4 $101 +ADDRLP4 32 +INDIRI4 +CNSTI4 42 +NEI4 $98 +ADDRLP4 0 +INDIRP4 +CNSTI4 1 +ADDP4 +INDIRI1 +CVII4 1 +CNSTI4 47 +NEI4 $98 +LABELV $101 +line 635 +;634: +;635: if ( *in ) +ADDRLP4 0 +INDIRP4 +INDIRI1 +CVII4 1 +CNSTI4 0 +EQI4 $97 +line 637 +;636: +;637: in += 2; +ADDRLP4 0 +ADDRLP4 0 +INDIRP4 +CNSTI4 2 +ADDP4 +ASGNP4 +line 641 +;638: +;639: // record when we hit a newline +;640: +;641: } else if ( c == '\n' || c == '\r' ) { +ADDRGP4 $97 +JUMPV +LABELV $96 +ADDRLP4 4 +INDIRI4 +CNSTI4 10 +EQI4 $106 +ADDRLP4 4 +INDIRI4 +CNSTI4 13 +NEI4 $104 +LABELV $106 +line 643 +;642: +;643: newline = qtrue; +ADDRLP4 12 +CNSTI4 1 +ASGNI4 +line 645 +;644: +;645: in++; +ADDRLP4 0 +ADDRLP4 0 +INDIRP4 +CNSTI4 1 +ADDP4 +ASGNP4 +line 649 +;646: +;647: // record when we hit whitespace +;648: +;649: } else if ( c == ' ' || c == '\t') { +ADDRGP4 $105 +JUMPV +LABELV $104 +ADDRLP4 4 +INDIRI4 +CNSTI4 32 +EQI4 $109 +ADDRLP4 4 +INDIRI4 +CNSTI4 9 +NEI4 $107 +LABELV $109 +line 651 +;650: +;651: whitespace = qtrue; +ADDRLP4 16 +CNSTI4 1 +ASGNI4 +line 653 +;652: +;653: in++; +ADDRLP4 0 +ADDRLP4 0 +INDIRP4 +CNSTI4 1 +ADDP4 +ASGNP4 +line 657 +;654: +;655: // an actual token +;656: +;657: } else { +ADDRGP4 $108 +JUMPV +LABELV $107 +line 661 +;658: +;659: // if we have a pending newline, emit it (and it counts as whitespace) +;660: +;661: if (newline) { +ADDRLP4 12 +INDIRI4 +CNSTI4 0 +EQI4 $110 +line 663 +;662: +;663: *out++ = '\n'; +ADDRLP4 36 +ADDRLP4 8 +INDIRP4 +ASGNP4 +ADDRLP4 8 +ADDRLP4 36 +INDIRP4 +CNSTI4 1 +ADDP4 +ASGNP4 +ADDRLP4 36 +INDIRP4 +CNSTI1 10 +ASGNI1 +line 665 +;664: +;665: newline = qfalse; +ADDRLP4 12 +CNSTI4 0 +ASGNI4 +line 667 +;666: +;667: whitespace = qfalse; +ADDRLP4 16 +CNSTI4 0 +ASGNI4 +line 669 +;668: +;669: } if (whitespace) { +LABELV $110 +ADDRLP4 16 +INDIRI4 +CNSTI4 0 +EQI4 $112 +line 671 +;670: +;671: *out++ = ' '; +ADDRLP4 36 +ADDRLP4 8 +INDIRP4 +ASGNP4 +ADDRLP4 8 +ADDRLP4 36 +INDIRP4 +CNSTI4 1 +ADDP4 +ASGNP4 +ADDRLP4 36 +INDIRP4 +CNSTI1 32 +ASGNI1 +line 673 +;672: +;673: whitespace = qfalse; +ADDRLP4 16 +CNSTI4 0 +ASGNI4 +line 675 +;674: +;675: } +LABELV $112 +line 681 +;676: +;677: +;678: +;679: // copy quoted strings unmolested +;680: +;681: if (c == '"') { +ADDRLP4 4 +INDIRI4 +CNSTI4 34 +NEI4 $114 +line 683 +;682: +;683: *out++ = c; +ADDRLP4 36 +ADDRLP4 8 +INDIRP4 +ASGNP4 +ADDRLP4 8 +ADDRLP4 36 +INDIRP4 +CNSTI4 1 +ADDP4 +ASGNP4 +ADDRLP4 36 +INDIRP4 +ADDRLP4 4 +INDIRI4 +CVII1 4 +ASGNI1 +line 685 +;684: +;685: in++; +ADDRLP4 0 +ADDRLP4 0 +INDIRP4 +CNSTI4 1 +ADDP4 +ASGNP4 +ADDRGP4 $117 +JUMPV +LABELV $116 +line 687 +;686: +;687: while (1) { +line 689 +;688: +;689: c = *in; +ADDRLP4 4 +ADDRLP4 0 +INDIRP4 +INDIRI1 +CVII4 1 +ASGNI4 +line 691 +;690: +;691: if (c && c != '"') { +ADDRLP4 4 +INDIRI4 +CNSTI4 0 +EQI4 $118 +ADDRLP4 4 +INDIRI4 +CNSTI4 34 +EQI4 $118 +line 693 +;692: +;693: *out++ = c; +ADDRLP4 44 +ADDRLP4 8 +INDIRP4 +ASGNP4 +ADDRLP4 8 +ADDRLP4 44 +INDIRP4 +CNSTI4 1 +ADDP4 +ASGNP4 +ADDRLP4 44 +INDIRP4 +ADDRLP4 4 +INDIRI4 +CVII1 4 +ASGNI1 +line 695 +;694: +;695: in++; +ADDRLP4 0 +ADDRLP4 0 +INDIRP4 +CNSTI4 1 +ADDP4 +ASGNP4 +line 697 +;696: +;697: } else { +line 699 +;698: +;699: break; +LABELV $120 +line 703 +;700: +;701: } +;702: +;703: } +LABELV $117 +line 687 +ADDRGP4 $116 +JUMPV +LABELV $118 +line 705 +;704: +;705: if (c == '"') { +ADDRLP4 4 +INDIRI4 +CNSTI4 34 +NEI4 $115 +line 707 +;706: +;707: *out++ = c; +ADDRLP4 40 +ADDRLP4 8 +INDIRP4 +ASGNP4 +ADDRLP4 8 +ADDRLP4 40 +INDIRP4 +CNSTI4 1 +ADDP4 +ASGNP4 +ADDRLP4 40 +INDIRP4 +ADDRLP4 4 +INDIRI4 +CVII1 4 +ASGNI1 +line 709 +;708: +;709: in++; +ADDRLP4 0 +ADDRLP4 0 +INDIRP4 +CNSTI4 1 +ADDP4 +ASGNP4 +line 711 +;710: +;711: } +line 713 +;712: +;713: } else { +ADDRGP4 $115 +JUMPV +LABELV $114 +line 715 +;714: +;715: *out = c; +ADDRLP4 8 +INDIRP4 +ADDRLP4 4 +INDIRI4 +CVII1 4 +ASGNI1 +line 717 +;716: +;717: out++; +ADDRLP4 8 +ADDRLP4 8 +INDIRP4 +CNSTI4 1 +ADDP4 +ASGNP4 +line 719 +;718: +;719: in++; +ADDRLP4 0 +ADDRLP4 0 +INDIRP4 +CNSTI4 1 +ADDP4 +ASGNP4 +line 721 +;720: +;721: } +LABELV $115 +line 723 +;722: +;723: } +LABELV $108 +LABELV $105 +LABELV $97 +LABELV $91 +line 725 +;724: +;725: } +LABELV $88 +line 615 +ADDRLP4 24 +ADDRLP4 0 +INDIRP4 +INDIRI1 +CVII4 1 +ASGNI4 +ADDRLP4 4 +ADDRLP4 24 +INDIRI4 +ASGNI4 +ADDRLP4 24 +INDIRI4 +CNSTI4 0 +NEI4 $87 +line 727 +;726: +;727: } +LABELV $85 +line 729 +;728: +;729: *out = 0; +ADDRLP4 8 +INDIRP4 +CNSTI1 0 +ASGNI1 +line 731 +;730: +;731: return out - data_p; +ADDRLP4 8 +INDIRP4 +CVPU4 4 +ADDRFP4 0 +INDIRP4 +CVPU4 4 +SUBU4 +CVUI4 4 +RETI4 +LABELV $84 +endproc COM_Compress 48 0 +export COM_ParseExt +proc COM_ParseExt 36 8 +line 739 +;732: +;733:} +;734: +;735: +;736: +;737:char *COM_ParseExt( char **data_p, qboolean allowLineBreaks ) +;738: +;739:{ +line 741 +;740: +;741: int c = 0, len; +ADDRLP4 4 +CNSTI4 0 +ASGNI4 +line 743 +;742: +;743: qboolean hasNewLines = qfalse; +ADDRLP4 12 +CNSTI4 0 +ASGNI4 +line 749 +;744: +;745: char *data; +;746: +;747: +;748: +;749: data = *data_p; +ADDRLP4 0 +ADDRFP4 0 +INDIRP4 +INDIRP4 +ASGNP4 +line 751 +;750: +;751: len = 0; +ADDRLP4 8 +CNSTI4 0 +ASGNI4 +line 753 +;752: +;753: com_token[0] = 0; +ADDRGP4 com_token +CNSTI1 0 +ASGNI1 +line 759 +;754: +;755: +;756: +;757: // make sure incoming data is valid +;758: +;759: if ( !data ) +ADDRLP4 0 +INDIRP4 +CVPU4 4 +CNSTU4 0 +NEU4 $127 +line 761 +;760: +;761: { +line 763 +;762: +;763: *data_p = NULL; +ADDRFP4 0 +INDIRP4 +CNSTP4 0 +ASGNP4 +line 765 +;764: +;765: return com_token; +ADDRGP4 com_token +RETP4 +ADDRGP4 $123 +JUMPV +LABELV $126 +line 773 +;766: +;767: } +;768: +;769: +;770: +;771: while ( 1 ) +;772: +;773: { +line 777 +;774: +;775: // skip whitespace +;776: +;777: data = SkipWhitespace( data, &hasNewLines ); +ADDRLP4 0 +INDIRP4 +ARGP4 +ADDRLP4 12 +ARGP4 +ADDRLP4 16 +ADDRGP4 SkipWhitespace +CALLP4 +ASGNP4 +ADDRLP4 0 +ADDRLP4 16 +INDIRP4 +ASGNP4 +line 779 +;778: +;779: if ( !data ) +ADDRLP4 0 +INDIRP4 +CVPU4 4 +CNSTU4 0 +NEU4 $129 +line 781 +;780: +;781: { +line 783 +;782: +;783: *data_p = NULL; +ADDRFP4 0 +INDIRP4 +CNSTP4 0 +ASGNP4 +line 785 +;784: +;785: return com_token; +ADDRGP4 com_token +RETP4 +ADDRGP4 $123 +JUMPV +LABELV $129 +line 789 +;786: +;787: } +;788: +;789: if ( hasNewLines && !allowLineBreaks ) +ADDRLP4 20 +CNSTI4 0 +ASGNI4 +ADDRLP4 12 +INDIRI4 +ADDRLP4 20 +INDIRI4 +EQI4 $131 +ADDRFP4 4 +INDIRI4 +ADDRLP4 20 +INDIRI4 +NEI4 $131 +line 791 +;790: +;791: { +line 793 +;792: +;793: *data_p = data; +ADDRFP4 0 +INDIRP4 +ADDRLP4 0 +INDIRP4 +ASGNP4 +line 795 +;794: +;795: return com_token; +ADDRGP4 com_token +RETP4 +ADDRGP4 $123 +JUMPV +LABELV $131 +line 801 +;796: +;797: } +;798: +;799: +;800: +;801: c = *data; +ADDRLP4 4 +ADDRLP4 0 +INDIRP4 +INDIRI1 +CVII4 1 +ASGNI4 +line 807 +;802: +;803: +;804: +;805: // skip double slash comments +;806: +;807: if ( c == '/' && data[1] == '/' ) +ADDRLP4 24 +CNSTI4 47 +ASGNI4 +ADDRLP4 4 +INDIRI4 +ADDRLP4 24 +INDIRI4 +NEI4 $133 +ADDRLP4 0 +INDIRP4 +CNSTI4 1 +ADDP4 +INDIRI1 +CVII4 1 +ADDRLP4 24 +INDIRI4 +NEI4 $133 +line 809 +;808: +;809: { +line 811 +;810: +;811: data += 2; +ADDRLP4 0 +ADDRLP4 0 +INDIRP4 +CNSTI4 2 +ADDP4 +ASGNP4 +ADDRGP4 $136 +JUMPV +LABELV $135 +line 813 +;812: +;813: while (*data && *data != '\n') { +line 815 +;814: +;815: data++; +ADDRLP4 0 +ADDRLP4 0 +INDIRP4 +CNSTI4 1 +ADDP4 +ASGNP4 +line 817 +;816: +;817: } +LABELV $136 +line 813 +ADDRLP4 28 +ADDRLP4 0 +INDIRP4 +INDIRI1 +CVII4 1 +ASGNI4 +ADDRLP4 28 +INDIRI4 +CNSTI4 0 +EQI4 $138 +ADDRLP4 28 +INDIRI4 +CNSTI4 10 +NEI4 $135 +LABELV $138 +line 819 +;818: +;819: } +ADDRGP4 $134 +JUMPV +LABELV $133 +line 823 +;820: +;821: // skip /* */ comments +;822: +;823: else if ( c=='/' && data[1] == '*' ) +ADDRLP4 4 +INDIRI4 +CNSTI4 47 +NEI4 $128 +ADDRLP4 0 +INDIRP4 +CNSTI4 1 +ADDP4 +INDIRI1 +CVII4 1 +CNSTI4 42 +NEI4 $128 +line 825 +;824: +;825: { +line 827 +;826: +;827: data += 2; +ADDRLP4 0 +ADDRLP4 0 +INDIRP4 +CNSTI4 2 +ADDP4 +ASGNP4 +ADDRGP4 $142 +JUMPV +LABELV $141 +line 831 +;828: +;829: while ( *data && ( *data != '*' || data[1] != '/' ) ) +;830: +;831: { +line 833 +;832: +;833: data++; +ADDRLP4 0 +ADDRLP4 0 +INDIRP4 +CNSTI4 1 +ADDP4 +ASGNP4 +line 835 +;834: +;835: } +LABELV $142 +line 829 +ADDRLP4 32 +ADDRLP4 0 +INDIRP4 +INDIRI1 +CVII4 1 +ASGNI4 +ADDRLP4 32 +INDIRI4 +CNSTI4 0 +EQI4 $144 +ADDRLP4 32 +INDIRI4 +CNSTI4 42 +NEI4 $141 +ADDRLP4 0 +INDIRP4 +CNSTI4 1 +ADDP4 +INDIRI1 +CVII4 1 +CNSTI4 47 +NEI4 $141 +LABELV $144 +line 837 +;836: +;837: if ( *data ) +ADDRLP4 0 +INDIRP4 +INDIRI1 +CVII4 1 +CNSTI4 0 +EQI4 $140 +line 839 +;838: +;839: { +line 841 +;840: +;841: data += 2; +ADDRLP4 0 +ADDRLP4 0 +INDIRP4 +CNSTI4 2 +ADDP4 +ASGNP4 +line 843 +;842: +;843: } +line 845 +;844: +;845: } +line 849 +;846: +;847: else +;848: +;849: { +line 851 +;850: +;851: break; +LABELV $140 +LABELV $134 +line 855 +;852: +;853: } +;854: +;855: } +LABELV $127 +line 771 +ADDRGP4 $126 +JUMPV +LABELV $128 +line 861 +;856: +;857: +;858: +;859: // handle quoted strings +;860: +;861: if (c == '\"') +ADDRLP4 4 +INDIRI4 +CNSTI4 34 +NEI4 $147 +line 863 +;862: +;863: { +line 865 +;864: +;865: data++; +ADDRLP4 0 +ADDRLP4 0 +INDIRP4 +CNSTI4 1 +ADDP4 +ASGNP4 +ADDRGP4 $150 +JUMPV +LABELV $149 +line 869 +;866: +;867: while (1) +;868: +;869: { +line 871 +;870: +;871: c = *data++; +ADDRLP4 16 +ADDRLP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 0 +ADDRLP4 16 +INDIRP4 +CNSTI4 1 +ADDP4 +ASGNP4 +ADDRLP4 4 +ADDRLP4 16 +INDIRP4 +INDIRI1 +CVII4 1 +ASGNI4 +line 873 +;872: +;873: if (c=='\"' || !c) +ADDRLP4 4 +INDIRI4 +CNSTI4 34 +EQI4 $154 +ADDRLP4 4 +INDIRI4 +CNSTI4 0 +NEI4 $152 +LABELV $154 +line 875 +;874: +;875: { +line 877 +;876: +;877: com_token[len] = 0; +ADDRLP4 8 +INDIRI4 +ADDRGP4 com_token +ADDP4 +CNSTI1 0 +ASGNI1 +line 879 +;878: +;879: *data_p = ( char * ) data; +ADDRFP4 0 +INDIRP4 +ADDRLP4 0 +INDIRP4 +ASGNP4 +line 881 +;880: +;881: return com_token; +ADDRGP4 com_token +RETP4 +ADDRGP4 $123 +JUMPV +LABELV $152 +line 885 +;882: +;883: } +;884: +;885: if (len < MAX_TOKEN_CHARS) +ADDRLP4 8 +INDIRI4 +CNSTI4 1024 +GEI4 $155 +line 887 +;886: +;887: { +line 889 +;888: +;889: com_token[len] = c; +ADDRLP4 8 +INDIRI4 +ADDRGP4 com_token +ADDP4 +ADDRLP4 4 +INDIRI4 +CVII1 4 +ASGNI1 +line 891 +;890: +;891: len++; +ADDRLP4 8 +ADDRLP4 8 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 893 +;892: +;893: } +LABELV $155 +line 895 +;894: +;895: } +LABELV $150 +line 867 +ADDRGP4 $149 +JUMPV +line 897 +;896: +;897: } +LABELV $147 +LABELV $157 +line 905 +;898: +;899: +;900: +;901: // parse a regular word +;902: +;903: do +;904: +;905: { +line 907 +;906: +;907: if (len < MAX_TOKEN_CHARS) +ADDRLP4 8 +INDIRI4 +CNSTI4 1024 +GEI4 $160 +line 909 +;908: +;909: { +line 911 +;910: +;911: com_token[len] = c; +ADDRLP4 8 +INDIRI4 +ADDRGP4 com_token +ADDP4 +ADDRLP4 4 +INDIRI4 +CVII1 4 +ASGNI1 +line 913 +;912: +;913: len++; +ADDRLP4 8 +ADDRLP4 8 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 915 +;914: +;915: } +LABELV $160 +line 917 +;916: +;917: data++; +ADDRLP4 0 +ADDRLP4 0 +INDIRP4 +CNSTI4 1 +ADDP4 +ASGNP4 +line 919 +;918: +;919: c = *data; +ADDRLP4 4 +ADDRLP4 0 +INDIRP4 +INDIRI1 +CVII4 1 +ASGNI4 +line 921 +;920: +;921: if ( c == '\n' ) +ADDRLP4 4 +INDIRI4 +CNSTI4 10 +NEI4 $162 +line 923 +;922: +;923: com_lines++; +ADDRLP4 16 +ADDRGP4 com_lines +ASGNP4 +ADDRLP4 16 +INDIRP4 +ADDRLP4 16 +INDIRP4 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +LABELV $162 +line 925 +;924: +;925: } while (c>32); +LABELV $158 +ADDRLP4 4 +INDIRI4 +CNSTI4 32 +GTI4 $157 +line 929 +;926: +;927: +;928: +;929: if (len == MAX_TOKEN_CHARS) +ADDRLP4 8 +INDIRI4 +CNSTI4 1024 +NEI4 $164 +line 931 +;930: +;931: { +line 935 +;932: +;933:// Com_Printf ("Token exceeded %i chars, discarded.\n", MAX_TOKEN_CHARS); +;934: +;935: len = 0; +ADDRLP4 8 +CNSTI4 0 +ASGNI4 +line 937 +;936: +;937: } +LABELV $164 +line 939 +;938: +;939: com_token[len] = 0; +ADDRLP4 8 +INDIRI4 +ADDRGP4 com_token +ADDP4 +CNSTI1 0 +ASGNI1 +line 943 +;940: +;941: +;942: +;943: *data_p = ( char * ) data; +ADDRFP4 0 +INDIRP4 +ADDRLP4 0 +INDIRP4 +ASGNP4 +line 945 +;944: +;945: return com_token; +ADDRGP4 com_token +RETP4 +LABELV $123 +endproc COM_ParseExt 36 8 +export COM_MatchToken +proc COM_MatchToken 12 16 +line 1073 +;946: +;947:} +;948: +;949: +;950: +;951: +;952: +;953:#if 0 +;954: +;955:// no longer used +;956: +;957:/* +;958: +;959:=============== +;960: +;961:COM_ParseInfos +;962: +;963:=============== +;964: +;965:*/ +;966: +;967:int COM_ParseInfos( char *buf, int max, char infos[][MAX_INFO_STRING] ) { +;968: +;969: char *token; +;970: +;971: int count; +;972: +;973: char key[MAX_TOKEN_CHARS]; +;974: +;975: +;976: +;977: count = 0; +;978: +;979: +;980: +;981: while ( 1 ) { +;982: +;983: token = COM_Parse( &buf ); +;984: +;985: if ( !token[0] ) { +;986: +;987: break; +;988: +;989: } +;990: +;991: if ( strcmp( token, "{" ) ) { +;992: +;993: Com_Printf( "Missing { in info file\n" ); +;994: +;995: break; +;996: +;997: } +;998: +;999: +;1000: +;1001: if ( count == max ) { +;1002: +;1003: Com_Printf( "Max infos exceeded\n" ); +;1004: +;1005: break; +;1006: +;1007: } +;1008: +;1009: +;1010: +;1011: infos[count][0] = 0; +;1012: +;1013: while ( 1 ) { +;1014: +;1015: token = COM_ParseExt( &buf, qtrue ); +;1016: +;1017: if ( !token[0] ) { +;1018: +;1019: Com_Printf( "Unexpected end of info file\n" ); +;1020: +;1021: break; +;1022: +;1023: } +;1024: +;1025: if ( !strcmp( token, "}" ) ) { +;1026: +;1027: break; +;1028: +;1029: } +;1030: +;1031: Q_strncpyz( key, token, sizeof( key ) ); +;1032: +;1033: +;1034: +;1035: token = COM_ParseExt( &buf, qfalse ); +;1036: +;1037: if ( !token[0] ) { +;1038: +;1039: strcpy( token, "" ); +;1040: +;1041: } +;1042: +;1043: Info_SetValueForKey( infos[count], key, token ); +;1044: +;1045: } +;1046: +;1047: count++; +;1048: +;1049: } +;1050: +;1051: +;1052: +;1053: return count; +;1054: +;1055:} +;1056: +;1057:#endif +;1058: +;1059: +;1060: +;1061: +;1062: +;1063:/* +;1064: +;1065:================== +;1066: +;1067:COM_MatchToken +;1068: +;1069:================== +;1070: +;1071:*/ +;1072: +;1073:void COM_MatchToken( char **buf_p, char *match ) { +line 1079 +;1074: +;1075: char *token; +;1076: +;1077: +;1078: +;1079: token = COM_Parse( buf_p ); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRLP4 4 +ADDRGP4 COM_Parse +CALLP4 +ASGNP4 +ADDRLP4 0 +ADDRLP4 4 +INDIRP4 +ASGNP4 +line 1081 +;1080: +;1081: if ( strcmp( token, match ) ) { +ADDRLP4 0 +INDIRP4 +ARGP4 +ADDRFP4 4 +INDIRP4 +ARGP4 +ADDRLP4 8 +ADDRGP4 strcmp +CALLI4 +ASGNI4 +ADDRLP4 8 +INDIRI4 +CNSTI4 0 +EQI4 $167 +line 1083 +;1082: +;1083: Com_Error( ERR_DROP, "MatchToken: %s != %s", token, match ); +CNSTI4 1 +ARGI4 +ADDRGP4 $169 +ARGP4 +ADDRLP4 0 +INDIRP4 +ARGP4 +ADDRFP4 4 +INDIRP4 +ARGP4 +ADDRGP4 Com_Error +CALLV +pop +line 1085 +;1084: +;1085: } +LABELV $167 +line 1087 +;1086: +;1087:} +LABELV $166 +endproc COM_MatchToken 12 16 +export SkipBracedSection +proc SkipBracedSection 12 8 +line 1111 +;1088: +;1089: +;1090: +;1091: +;1092: +;1093:/* +;1094: +;1095:================= +;1096: +;1097:SkipBracedSection +;1098: +;1099: +;1100: +;1101:The next token should be an open brace. +;1102: +;1103:Skips until a matching close brace is found. +;1104: +;1105:Internal brace depths are properly skipped. +;1106: +;1107:================= +;1108: +;1109:*/ +;1110: +;1111:void SkipBracedSection (char **program) { +line 1119 +;1112: +;1113: char *token; +;1114: +;1115: int depth; +;1116: +;1117: +;1118: +;1119: depth = 0; +ADDRLP4 4 +CNSTI4 0 +ASGNI4 +LABELV $171 +line 1121 +;1120: +;1121: do { +line 1123 +;1122: +;1123: token = COM_ParseExt( program, qtrue ); +ADDRFP4 0 +INDIRP4 +ARGP4 +CNSTI4 1 +ARGI4 +ADDRLP4 8 +ADDRGP4 COM_ParseExt +CALLP4 +ASGNP4 +ADDRLP4 0 +ADDRLP4 8 +INDIRP4 +ASGNP4 +line 1125 +;1124: +;1125: if( token[1] == 0 ) { +ADDRLP4 0 +INDIRP4 +CNSTI4 1 +ADDP4 +INDIRI1 +CVII4 1 +CNSTI4 0 +NEI4 $174 +line 1127 +;1126: +;1127: if( token[0] == '{' ) { +ADDRLP4 0 +INDIRP4 +INDIRI1 +CVII4 1 +CNSTI4 123 +NEI4 $176 +line 1129 +;1128: +;1129: depth++; +ADDRLP4 4 +ADDRLP4 4 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 1131 +;1130: +;1131: } +ADDRGP4 $177 +JUMPV +LABELV $176 +line 1133 +;1132: +;1133: else if( token[0] == '}' ) { +ADDRLP4 0 +INDIRP4 +INDIRI1 +CVII4 1 +CNSTI4 125 +NEI4 $178 +line 1135 +;1134: +;1135: depth--; +ADDRLP4 4 +ADDRLP4 4 +INDIRI4 +CNSTI4 1 +SUBI4 +ASGNI4 +line 1137 +;1136: +;1137: } +LABELV $178 +LABELV $177 +line 1139 +;1138: +;1139: } +LABELV $174 +line 1141 +;1140: +;1141: } while( depth && *program ); +LABELV $172 +ADDRLP4 4 +INDIRI4 +CNSTI4 0 +EQI4 $180 +ADDRFP4 0 +INDIRP4 +INDIRP4 +CVPU4 4 +CNSTU4 0 +NEU4 $171 +LABELV $180 +line 1143 +;1142: +;1143:} +LABELV $170 +endproc SkipBracedSection 12 8 +export SkipRestOfLine +proc SkipRestOfLine 16 0 +line 1157 +;1144: +;1145: +;1146: +;1147:/* +;1148: +;1149:================= +;1150: +;1151:SkipRestOfLine +;1152: +;1153:================= +;1154: +;1155:*/ +;1156: +;1157:void SkipRestOfLine ( char **data ) { +line 1165 +;1158: +;1159: char *p; +;1160: +;1161: int c; +;1162: +;1163: +;1164: +;1165: p = *data; +ADDRLP4 4 +ADDRFP4 0 +INDIRP4 +INDIRP4 +ASGNP4 +ADDRGP4 $183 +JUMPV +LABELV $182 +line 1167 +;1166: +;1167: while ( (c = *p++) != 0 ) { +line 1169 +;1168: +;1169: if ( c == '\n' ) { +ADDRLP4 0 +INDIRI4 +CNSTI4 10 +NEI4 $185 +line 1171 +;1170: +;1171: com_lines++; +ADDRLP4 8 +ADDRGP4 com_lines +ASGNP4 +ADDRLP4 8 +INDIRP4 +ADDRLP4 8 +INDIRP4 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 1173 +;1172: +;1173: break; +ADDRGP4 $184 +JUMPV +LABELV $185 +line 1177 +;1174: +;1175: } +;1176: +;1177: } +LABELV $183 +line 1167 +ADDRLP4 8 +ADDRLP4 4 +INDIRP4 +ASGNP4 +ADDRLP4 4 +ADDRLP4 8 +INDIRP4 +CNSTI4 1 +ADDP4 +ASGNP4 +ADDRLP4 12 +ADDRLP4 8 +INDIRP4 +INDIRI1 +CVII4 1 +ASGNI4 +ADDRLP4 0 +ADDRLP4 12 +INDIRI4 +ASGNI4 +ADDRLP4 12 +INDIRI4 +CNSTI4 0 +NEI4 $182 +LABELV $184 +line 1181 +;1178: +;1179: +;1180: +;1181: *data = p; +ADDRFP4 0 +INDIRP4 +ADDRLP4 4 +INDIRP4 +ASGNP4 +line 1183 +;1182: +;1183:} +LABELV $181 +endproc SkipRestOfLine 16 0 +export Parse1DMatrix +proc Parse1DMatrix 16 8 +line 1189 +;1184: +;1185: +;1186: +;1187: +;1188: +;1189:void Parse1DMatrix (char **buf_p, int x, float *m) { +line 1197 +;1190: +;1191: char *token; +;1192: +;1193: int i; +;1194: +;1195: +;1196: +;1197: COM_MatchToken( buf_p, "(" ); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRGP4 $188 +ARGP4 +ADDRGP4 COM_MatchToken +CALLV +pop +line 1201 +;1198: +;1199: +;1200: +;1201: for (i = 0 ; i < x ; i++) { +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +ADDRGP4 $192 +JUMPV +LABELV $189 +line 1203 +;1202: +;1203: token = COM_Parse(buf_p); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRLP4 8 +ADDRGP4 COM_Parse +CALLP4 +ASGNP4 +ADDRLP4 4 +ADDRLP4 8 +INDIRP4 +ASGNP4 +line 1205 +;1204: +;1205: m[i] = atof(token); +ADDRLP4 4 +INDIRP4 +ARGP4 +ADDRLP4 12 +ADDRGP4 atof +CALLF4 +ASGNF4 +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRFP4 8 +INDIRP4 +ADDP4 +ADDRLP4 12 +INDIRF4 +ASGNF4 +line 1207 +;1206: +;1207: } +LABELV $190 +line 1201 +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +LABELV $192 +ADDRLP4 0 +INDIRI4 +ADDRFP4 4 +INDIRI4 +LTI4 $189 +line 1211 +;1208: +;1209: +;1210: +;1211: COM_MatchToken( buf_p, ")" ); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRGP4 $193 +ARGP4 +ADDRGP4 COM_MatchToken +CALLV +pop +line 1213 +;1212: +;1213:} +LABELV $187 +endproc Parse1DMatrix 16 8 +export Parse2DMatrix +proc Parse2DMatrix 8 12 +line 1217 +;1214: +;1215: +;1216: +;1217:void Parse2DMatrix (char **buf_p, int y, int x, float *m) { +line 1223 +;1218: +;1219: int i; +;1220: +;1221: +;1222: +;1223: COM_MatchToken( buf_p, "(" ); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRGP4 $188 +ARGP4 +ADDRGP4 COM_MatchToken +CALLV +pop +line 1227 +;1224: +;1225: +;1226: +;1227: for (i = 0 ; i < y ; i++) { +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +ADDRGP4 $198 +JUMPV +LABELV $195 +line 1229 +;1228: +;1229: Parse1DMatrix (buf_p, x, m + i * x); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRLP4 4 +ADDRFP4 8 +INDIRI4 +ASGNI4 +ADDRLP4 4 +INDIRI4 +ARGI4 +ADDRLP4 0 +INDIRI4 +ADDRLP4 4 +INDIRI4 +MULI4 +CNSTI4 2 +LSHI4 +ADDRFP4 12 +INDIRP4 +ADDP4 +ARGP4 +ADDRGP4 Parse1DMatrix +CALLV +pop +line 1231 +;1230: +;1231: } +LABELV $196 +line 1227 +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +LABELV $198 +ADDRLP4 0 +INDIRI4 +ADDRFP4 4 +INDIRI4 +LTI4 $195 +line 1235 +;1232: +;1233: +;1234: +;1235: COM_MatchToken( buf_p, ")" ); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRGP4 $193 +ARGP4 +ADDRGP4 COM_MatchToken +CALLV +pop +line 1237 +;1236: +;1237:} +LABELV $194 +endproc Parse2DMatrix 8 12 +export Parse3DMatrix +proc Parse3DMatrix 12 16 +line 1241 +;1238: +;1239: +;1240: +;1241:void Parse3DMatrix (char **buf_p, int z, int y, int x, float *m) { +line 1247 +;1242: +;1243: int i; +;1244: +;1245: +;1246: +;1247: COM_MatchToken( buf_p, "(" ); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRGP4 $188 +ARGP4 +ADDRGP4 COM_MatchToken +CALLV +pop +line 1251 +;1248: +;1249: +;1250: +;1251: for (i = 0 ; i < z ; i++) { +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +ADDRGP4 $203 +JUMPV +LABELV $200 +line 1253 +;1252: +;1253: Parse2DMatrix (buf_p, y, x, m + i * x*y); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRLP4 4 +ADDRFP4 8 +INDIRI4 +ASGNI4 +ADDRLP4 4 +INDIRI4 +ARGI4 +ADDRLP4 8 +ADDRFP4 12 +INDIRI4 +ASGNI4 +ADDRLP4 8 +INDIRI4 +ARGI4 +ADDRLP4 0 +INDIRI4 +ADDRLP4 8 +INDIRI4 +MULI4 +ADDRLP4 4 +INDIRI4 +MULI4 +CNSTI4 2 +LSHI4 +ADDRFP4 16 +INDIRP4 +ADDP4 +ARGP4 +ADDRGP4 Parse2DMatrix +CALLV +pop +line 1255 +;1254: +;1255: } +LABELV $201 +line 1251 +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +LABELV $203 +ADDRLP4 0 +INDIRI4 +ADDRFP4 4 +INDIRI4 +LTI4 $200 +line 1259 +;1256: +;1257: +;1258: +;1259: COM_MatchToken( buf_p, ")" ); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRGP4 $193 +ARGP4 +ADDRGP4 COM_MatchToken +CALLV +pop +line 1261 +;1260: +;1261:} +LABELV $199 +endproc Parse3DMatrix 12 16 +export Q_isprint +proc Q_isprint 4 0 +line 1285 +;1262: +;1263: +;1264: +;1265: +;1266: +;1267:/* +;1268: +;1269:============================================================================ +;1270: +;1271: +;1272: +;1273: LIBRARY REPLACEMENT FUNCTIONS +;1274: +;1275: +;1276: +;1277:============================================================================ +;1278: +;1279:*/ +;1280: +;1281: +;1282: +;1283:int Q_isprint( int c ) +;1284: +;1285:{ +line 1287 +;1286: +;1287: if ( c >= 0x20 && c <= 0x7E ) +ADDRLP4 0 +ADDRFP4 0 +INDIRI4 +ASGNI4 +ADDRLP4 0 +INDIRI4 +CNSTI4 32 +LTI4 $205 +ADDRLP4 0 +INDIRI4 +CNSTI4 126 +GTI4 $205 +line 1289 +;1288: +;1289: return ( 1 ); +CNSTI4 1 +RETI4 +ADDRGP4 $204 +JUMPV +LABELV $205 +line 1291 +;1290: +;1291: return ( 0 ); +CNSTI4 0 +RETI4 +LABELV $204 +endproc Q_isprint 4 0 +export Q_islower +proc Q_islower 4 0 +line 1299 +;1292: +;1293:} +;1294: +;1295: +;1296: +;1297:int Q_islower( int c ) +;1298: +;1299:{ +line 1301 +;1300: +;1301: if (c >= 'a' && c <= 'z') +ADDRLP4 0 +ADDRFP4 0 +INDIRI4 +ASGNI4 +ADDRLP4 0 +INDIRI4 +CNSTI4 97 +LTI4 $208 +ADDRLP4 0 +INDIRI4 +CNSTI4 122 +GTI4 $208 +line 1303 +;1302: +;1303: return ( 1 ); +CNSTI4 1 +RETI4 +ADDRGP4 $207 +JUMPV +LABELV $208 +line 1305 +;1304: +;1305: return ( 0 ); +CNSTI4 0 +RETI4 +LABELV $207 +endproc Q_islower 4 0 +export Q_isupper +proc Q_isupper 4 0 +line 1313 +;1306: +;1307:} +;1308: +;1309: +;1310: +;1311:int Q_isupper( int c ) +;1312: +;1313:{ +line 1315 +;1314: +;1315: if (c >= 'A' && c <= 'Z') +ADDRLP4 0 +ADDRFP4 0 +INDIRI4 +ASGNI4 +ADDRLP4 0 +INDIRI4 +CNSTI4 65 +LTI4 $211 +ADDRLP4 0 +INDIRI4 +CNSTI4 90 +GTI4 $211 +line 1317 +;1316: +;1317: return ( 1 ); +CNSTI4 1 +RETI4 +ADDRGP4 $210 +JUMPV +LABELV $211 +line 1319 +;1318: +;1319: return ( 0 ); +CNSTI4 0 +RETI4 +LABELV $210 +endproc Q_isupper 4 0 +export Q_isalpha +proc Q_isalpha 8 0 +line 1327 +;1320: +;1321:} +;1322: +;1323: +;1324: +;1325:int Q_isalpha( int c ) +;1326: +;1327:{ +line 1329 +;1328: +;1329: if ((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z')) +ADDRLP4 0 +ADDRFP4 0 +INDIRI4 +ASGNI4 +ADDRLP4 0 +INDIRI4 +CNSTI4 97 +LTI4 $217 +ADDRLP4 0 +INDIRI4 +CNSTI4 122 +LEI4 $216 +LABELV $217 +ADDRLP4 4 +ADDRFP4 0 +INDIRI4 +ASGNI4 +ADDRLP4 4 +INDIRI4 +CNSTI4 65 +LTI4 $214 +ADDRLP4 4 +INDIRI4 +CNSTI4 90 +GTI4 $214 +LABELV $216 +line 1331 +;1330: +;1331: return ( 1 ); +CNSTI4 1 +RETI4 +ADDRGP4 $213 +JUMPV +LABELV $214 +line 1333 +;1332: +;1333: return ( 0 ); +CNSTI4 0 +RETI4 +LABELV $213 +endproc Q_isalpha 8 0 +export Q_strrchr +proc Q_strrchr 12 0 +line 1341 +;1334: +;1335:} +;1336: +;1337: +;1338: +;1339:char* Q_strrchr( const char* string, int c ) +;1340: +;1341:{ +line 1343 +;1342: +;1343: char cc = c; +ADDRLP4 4 +ADDRFP4 4 +INDIRI4 +CVII1 4 +ASGNI1 +line 1347 +;1344: +;1345: char *s; +;1346: +;1347: char *sp=(char *)0; +ADDRLP4 8 +CNSTP4 0 +ASGNP4 +line 1351 +;1348: +;1349: +;1350: +;1351: s = (char*)string; +ADDRLP4 0 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRGP4 $220 +JUMPV +LABELV $219 +line 1357 +;1352: +;1353: +;1354: +;1355: while (*s) +;1356: +;1357: { +line 1359 +;1358: +;1359: if (*s == cc) +ADDRLP4 0 +INDIRP4 +INDIRI1 +CVII4 1 +ADDRLP4 4 +INDIRI1 +CVII4 1 +NEI4 $222 +line 1361 +;1360: +;1361: sp = s; +ADDRLP4 8 +ADDRLP4 0 +INDIRP4 +ASGNP4 +LABELV $222 +line 1363 +;1362: +;1363: s++; +ADDRLP4 0 +ADDRLP4 0 +INDIRP4 +CNSTI4 1 +ADDP4 +ASGNP4 +line 1365 +;1364: +;1365: } +LABELV $220 +line 1355 +ADDRLP4 0 +INDIRP4 +INDIRI1 +CVII4 1 +CNSTI4 0 +NEI4 $219 +line 1367 +;1366: +;1367: if (cc == 0) +ADDRLP4 4 +INDIRI1 +CVII4 1 +CNSTI4 0 +NEI4 $224 +line 1369 +;1368: +;1369: sp = s; +ADDRLP4 8 +ADDRLP4 0 +INDIRP4 +ASGNP4 +LABELV $224 +line 1373 +;1370: +;1371: +;1372: +;1373: return sp; +ADDRLP4 8 +INDIRP4 +RETP4 +LABELV $218 +endproc Q_strrchr 12 0 +export Q_strncpyz +proc Q_strncpyz 0 12 +line 1393 +;1374: +;1375:} +;1376: +;1377: +;1378: +;1379:/* +;1380: +;1381:============= +;1382: +;1383:Q_strncpyz +;1384: +;1385: +;1386: +;1387:Safe strncpy that ensures a trailing zero +;1388: +;1389:============= +;1390: +;1391:*/ +;1392: +;1393:void Q_strncpyz( char *dest, const char *src, int destsize ) { +line 1397 +;1394: +;1395: // bk001129 - also NULL dest +;1396: +;1397: if ( !dest ) { +ADDRFP4 0 +INDIRP4 +CVPU4 4 +CNSTU4 0 +NEU4 $227 +line 1399 +;1398: +;1399: Com_Error( ERR_FATAL, "Q_strncpyz: NULL dest" ); +CNSTI4 0 +ARGI4 +ADDRGP4 $229 +ARGP4 +ADDRGP4 Com_Error +CALLV +pop +line 1401 +;1400: +;1401: } +LABELV $227 +line 1403 +;1402: +;1403: if ( !src ) { +ADDRFP4 4 +INDIRP4 +CVPU4 4 +CNSTU4 0 +NEU4 $230 +line 1405 +;1404: +;1405: Com_Error( ERR_FATAL, "Q_strncpyz: NULL src" ); +CNSTI4 0 +ARGI4 +ADDRGP4 $232 +ARGP4 +ADDRGP4 Com_Error +CALLV +pop +line 1407 +;1406: +;1407: } +LABELV $230 +line 1409 +;1408: +;1409: if ( destsize < 1 ) { +ADDRFP4 8 +INDIRI4 +CNSTI4 1 +GEI4 $233 +line 1411 +;1410: +;1411: Com_Error(ERR_FATAL,"Q_strncpyz: destsize < 1" ); +CNSTI4 0 +ARGI4 +ADDRGP4 $235 +ARGP4 +ADDRGP4 Com_Error +CALLV +pop +line 1413 +;1412: +;1413: } +LABELV $233 +line 1417 +;1414: +;1415: +;1416: +;1417: strncpy( dest, src, destsize-1 ); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRFP4 4 +INDIRP4 +ARGP4 +ADDRFP4 8 +INDIRI4 +CNSTI4 1 +SUBI4 +ARGI4 +ADDRGP4 strncpy +CALLP4 +pop +line 1419 +;1418: +;1419: dest[destsize-1] = 0; +ADDRFP4 8 +INDIRI4 +CNSTI4 1 +SUBI4 +ADDRFP4 0 +INDIRP4 +ADDP4 +CNSTI1 0 +ASGNI1 +line 1421 +;1420: +;1421:} +LABELV $226 +endproc Q_strncpyz 0 12 +export Q_stricmpn +proc Q_stricmpn 32 0 +line 1425 +;1422: +;1423: +;1424: +;1425:int Q_stricmpn (const char *s1, const char *s2, int n) { +line 1433 +;1426: +;1427: int c1, c2; +;1428: +;1429: +;1430: +;1431: // bk001129 - moved in 1.17 fix not in id codebase +;1432: +;1433: if ( s1 == NULL ) { +ADDRFP4 0 +INDIRP4 +CVPU4 4 +CNSTU4 0 +NEU4 $237 +line 1435 +;1434: +;1435: if ( s2 == NULL ) +ADDRFP4 4 +INDIRP4 +CVPU4 4 +CNSTU4 0 +NEU4 $239 +line 1437 +;1436: +;1437: return 0; +CNSTI4 0 +RETI4 +ADDRGP4 $236 +JUMPV +LABELV $239 +line 1441 +;1438: +;1439: else +;1440: +;1441: return -1; +CNSTI4 -1 +RETI4 +ADDRGP4 $236 +JUMPV +LABELV $237 +line 1445 +;1442: +;1443: } +;1444: +;1445: else if ( s2==NULL ) +ADDRFP4 4 +INDIRP4 +CVPU4 4 +CNSTU4 0 +NEU4 $241 +line 1447 +;1446: +;1447: return 1; +CNSTI4 1 +RETI4 +ADDRGP4 $236 +JUMPV +LABELV $241 +LABELV $243 +line 1455 +;1448: +;1449: +;1450: +;1451: +;1452: +;1453: +;1454: +;1455: do { +line 1457 +;1456: +;1457: c1 = *s1++; +ADDRLP4 8 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRFP4 0 +ADDRLP4 8 +INDIRP4 +CNSTI4 1 +ADDP4 +ASGNP4 +ADDRLP4 0 +ADDRLP4 8 +INDIRP4 +INDIRI1 +CVII4 1 +ASGNI4 +line 1459 +;1458: +;1459: c2 = *s2++; +ADDRLP4 12 +ADDRFP4 4 +INDIRP4 +ASGNP4 +ADDRFP4 4 +ADDRLP4 12 +INDIRP4 +CNSTI4 1 +ADDP4 +ASGNP4 +ADDRLP4 4 +ADDRLP4 12 +INDIRP4 +INDIRI1 +CVII4 1 +ASGNI4 +line 1463 +;1460: +;1461: +;1462: +;1463: if (!n--) { +ADDRLP4 16 +ADDRFP4 8 +INDIRI4 +ASGNI4 +ADDRFP4 8 +ADDRLP4 16 +INDIRI4 +CNSTI4 1 +SUBI4 +ASGNI4 +ADDRLP4 16 +INDIRI4 +CNSTI4 0 +NEI4 $246 +line 1465 +;1464: +;1465: return 0; // strings are equal until end point +CNSTI4 0 +RETI4 +ADDRGP4 $236 +JUMPV +LABELV $246 +line 1471 +;1466: +;1467: } +;1468: +;1469: +;1470: +;1471: if (c1 != c2) { +ADDRLP4 0 +INDIRI4 +ADDRLP4 4 +INDIRI4 +EQI4 $248 +line 1473 +;1472: +;1473: if (c1 >= 'a' && c1 <= 'z') { +ADDRLP4 0 +INDIRI4 +CNSTI4 97 +LTI4 $250 +ADDRLP4 0 +INDIRI4 +CNSTI4 122 +GTI4 $250 +line 1475 +;1474: +;1475: c1 -= ('a' - 'A'); +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 32 +SUBI4 +ASGNI4 +line 1477 +;1476: +;1477: } +LABELV $250 +line 1479 +;1478: +;1479: if (c2 >= 'a' && c2 <= 'z') { +ADDRLP4 4 +INDIRI4 +CNSTI4 97 +LTI4 $252 +ADDRLP4 4 +INDIRI4 +CNSTI4 122 +GTI4 $252 +line 1481 +;1480: +;1481: c2 -= ('a' - 'A'); +ADDRLP4 4 +ADDRLP4 4 +INDIRI4 +CNSTI4 32 +SUBI4 +ASGNI4 +line 1483 +;1482: +;1483: } +LABELV $252 +line 1485 +;1484: +;1485: if (c1 != c2) { +ADDRLP4 0 +INDIRI4 +ADDRLP4 4 +INDIRI4 +EQI4 $254 +line 1487 +;1486: +;1487: return c1 < c2 ? -1 : 1; +ADDRLP4 0 +INDIRI4 +ADDRLP4 4 +INDIRI4 +GEI4 $257 +ADDRLP4 28 +CNSTI4 -1 +ASGNI4 +ADDRGP4 $258 +JUMPV +LABELV $257 +ADDRLP4 28 +CNSTI4 1 +ASGNI4 +LABELV $258 +ADDRLP4 28 +INDIRI4 +RETI4 +ADDRGP4 $236 +JUMPV +LABELV $254 +line 1491 +;1488: +;1489: } +;1490: +;1491: } +LABELV $248 +line 1493 +;1492: +;1493: } while (c1); +LABELV $244 +ADDRLP4 0 +INDIRI4 +CNSTI4 0 +NEI4 $243 +line 1497 +;1494: +;1495: +;1496: +;1497: return 0; // strings are equal +CNSTI4 0 +RETI4 +LABELV $236 +endproc Q_stricmpn 32 0 +export Q_strncmp +proc Q_strncmp 24 0 +line 1503 +;1498: +;1499:} +;1500: +;1501: +;1502: +;1503:int Q_strncmp (const char *s1, const char *s2, int n) { +LABELV $260 +line 1509 +;1504: +;1505: int c1, c2; +;1506: +;1507: +;1508: +;1509: do { +line 1511 +;1510: +;1511: c1 = *s1++; +ADDRLP4 8 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRFP4 0 +ADDRLP4 8 +INDIRP4 +CNSTI4 1 +ADDP4 +ASGNP4 +ADDRLP4 0 +ADDRLP4 8 +INDIRP4 +INDIRI1 +CVII4 1 +ASGNI4 +line 1513 +;1512: +;1513: c2 = *s2++; +ADDRLP4 12 +ADDRFP4 4 +INDIRP4 +ASGNP4 +ADDRFP4 4 +ADDRLP4 12 +INDIRP4 +CNSTI4 1 +ADDP4 +ASGNP4 +ADDRLP4 4 +ADDRLP4 12 +INDIRP4 +INDIRI1 +CVII4 1 +ASGNI4 +line 1517 +;1514: +;1515: +;1516: +;1517: if (!n--) { +ADDRLP4 16 +ADDRFP4 8 +INDIRI4 +ASGNI4 +ADDRFP4 8 +ADDRLP4 16 +INDIRI4 +CNSTI4 1 +SUBI4 +ASGNI4 +ADDRLP4 16 +INDIRI4 +CNSTI4 0 +NEI4 $263 +line 1519 +;1518: +;1519: return 0; // strings are equal until end point +CNSTI4 0 +RETI4 +ADDRGP4 $259 +JUMPV +LABELV $263 +line 1525 +;1520: +;1521: } +;1522: +;1523: +;1524: +;1525: if (c1 != c2) { +ADDRLP4 0 +INDIRI4 +ADDRLP4 4 +INDIRI4 +EQI4 $265 +line 1527 +;1526: +;1527: return c1 < c2 ? -1 : 1; +ADDRLP4 0 +INDIRI4 +ADDRLP4 4 +INDIRI4 +GEI4 $268 +ADDRLP4 20 +CNSTI4 -1 +ASGNI4 +ADDRGP4 $269 +JUMPV +LABELV $268 +ADDRLP4 20 +CNSTI4 1 +ASGNI4 +LABELV $269 +ADDRLP4 20 +INDIRI4 +RETI4 +ADDRGP4 $259 +JUMPV +LABELV $265 +line 1531 +;1528: +;1529: } +;1530: +;1531: } while (c1); +LABELV $261 +ADDRLP4 0 +INDIRI4 +CNSTI4 0 +NEI4 $260 +line 1535 +;1532: +;1533: +;1534: +;1535: return 0; // strings are equal +CNSTI4 0 +RETI4 +LABELV $259 +endproc Q_strncmp 24 0 +export Q_stricmp +proc Q_stricmp 12 12 +line 1541 +;1536: +;1537:} +;1538: +;1539: +;1540: +;1541:int Q_stricmp (const char *s1, const char *s2) { +line 1543 +;1542: +;1543: return (s1 && s2) ? Q_stricmpn (s1, s2, 99999) : -1; +ADDRLP4 4 +CNSTU4 0 +ASGNU4 +ADDRFP4 0 +INDIRP4 +CVPU4 4 +ADDRLP4 4 +INDIRU4 +EQU4 $272 +ADDRFP4 4 +INDIRP4 +CVPU4 4 +ADDRLP4 4 +INDIRU4 +EQU4 $272 +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRFP4 4 +INDIRP4 +ARGP4 +CNSTI4 99999 +ARGI4 +ADDRLP4 8 +ADDRGP4 Q_stricmpn +CALLI4 +ASGNI4 +ADDRLP4 0 +ADDRLP4 8 +INDIRI4 +ASGNI4 +ADDRGP4 $273 +JUMPV +LABELV $272 +ADDRLP4 0 +CNSTI4 -1 +ASGNI4 +LABELV $273 +ADDRLP4 0 +INDIRI4 +RETI4 +LABELV $270 +endproc Q_stricmp 12 12 +export Q_strlwr +proc Q_strlwr 12 4 +line 1551 +;1544: +;1545:} +;1546: +;1547: +;1548: +;1549: +;1550: +;1551:char *Q_strlwr( char *s1 ) { +line 1557 +;1552: +;1553: char *s; +;1554: +;1555: +;1556: +;1557: s = s1; +ADDRLP4 0 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRGP4 $276 +JUMPV +LABELV $275 +line 1559 +;1558: +;1559: while ( *s ) { +line 1561 +;1560: +;1561: *s = tolower(*s); +ADDRLP4 0 +INDIRP4 +INDIRI1 +CVII4 1 +ARGI4 +ADDRLP4 8 +ADDRGP4 tolower +CALLI4 +ASGNI4 +ADDRLP4 0 +INDIRP4 +ADDRLP4 8 +INDIRI4 +CVII1 4 +ASGNI1 +line 1563 +;1562: +;1563: s++; +ADDRLP4 0 +ADDRLP4 0 +INDIRP4 +CNSTI4 1 +ADDP4 +ASGNP4 +line 1565 +;1564: +;1565: } +LABELV $276 +line 1559 +ADDRLP4 0 +INDIRP4 +INDIRI1 +CVII4 1 +CNSTI4 0 +NEI4 $275 +line 1567 +;1566: +;1567: return s1; +ADDRFP4 0 +INDIRP4 +RETP4 +LABELV $274 +endproc Q_strlwr 12 4 +export Q_strupr +proc Q_strupr 12 4 +line 1573 +;1568: +;1569:} +;1570: +;1571: +;1572: +;1573:char *Q_strupr( char *s1 ) { +line 1579 +;1574: +;1575: char *s; +;1576: +;1577: +;1578: +;1579: s = s1; +ADDRLP4 0 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRGP4 $280 +JUMPV +LABELV $279 +line 1581 +;1580: +;1581: while ( *s ) { +line 1583 +;1582: +;1583: *s = toupper(*s); +ADDRLP4 0 +INDIRP4 +INDIRI1 +CVII4 1 +ARGI4 +ADDRLP4 8 +ADDRGP4 toupper +CALLI4 +ASGNI4 +ADDRLP4 0 +INDIRP4 +ADDRLP4 8 +INDIRI4 +CVII1 4 +ASGNI1 +line 1585 +;1584: +;1585: s++; +ADDRLP4 0 +ADDRLP4 0 +INDIRP4 +CNSTI4 1 +ADDP4 +ASGNP4 +line 1587 +;1586: +;1587: } +LABELV $280 +line 1581 +ADDRLP4 0 +INDIRP4 +INDIRI1 +CVII4 1 +CNSTI4 0 +NEI4 $279 +line 1589 +;1588: +;1589: return s1; +ADDRFP4 0 +INDIRP4 +RETP4 +LABELV $278 +endproc Q_strupr 12 4 +export Q_strcat +proc Q_strcat 12 12 +line 1599 +;1590: +;1591:} +;1592: +;1593: +;1594: +;1595: +;1596: +;1597:// never goes past bounds or leaves without a terminating 0 +;1598: +;1599:void Q_strcat( char *dest, int size, const char *src ) { +line 1605 +;1600: +;1601: int l1; +;1602: +;1603: +;1604: +;1605: l1 = strlen( dest ); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRLP4 4 +ADDRGP4 strlen +CALLI4 +ASGNI4 +ADDRLP4 0 +ADDRLP4 4 +INDIRI4 +ASGNI4 +line 1607 +;1606: +;1607: if ( l1 >= size ) { +ADDRLP4 0 +INDIRI4 +ADDRFP4 4 +INDIRI4 +LTI4 $283 +line 1609 +;1608: +;1609: Com_Error( ERR_FATAL, "Q_strcat: already overflowed" ); +CNSTI4 0 +ARGI4 +ADDRGP4 $285 +ARGP4 +ADDRGP4 Com_Error +CALLV +pop +line 1611 +;1610: +;1611: } +LABELV $283 +line 1613 +;1612: +;1613: Q_strncpyz( dest + l1, src, size - l1 ); +ADDRLP4 0 +INDIRI4 +ADDRFP4 0 +INDIRP4 +ADDP4 +ARGP4 +ADDRFP4 8 +INDIRP4 +ARGP4 +ADDRFP4 4 +INDIRI4 +ADDRLP4 0 +INDIRI4 +SUBI4 +ARGI4 +ADDRGP4 Q_strncpyz +CALLV +pop +line 1615 +;1614: +;1615:} +LABELV $282 +endproc Q_strcat 12 12 +export Q_PrintStrlen +proc Q_PrintStrlen 20 0 +line 1621 +;1616: +;1617: +;1618: +;1619: +;1620: +;1621:int Q_PrintStrlen( const char *string ) { +line 1629 +;1622: +;1623: int len; +;1624: +;1625: const char *p; +;1626: +;1627: +;1628: +;1629: if( !string ) { +ADDRFP4 0 +INDIRP4 +CVPU4 4 +CNSTU4 0 +NEU4 $287 +line 1631 +;1630: +;1631: return 0; +CNSTI4 0 +RETI4 +ADDRGP4 $286 +JUMPV +LABELV $287 +line 1637 +;1632: +;1633: } +;1634: +;1635: +;1636: +;1637: len = 0; +ADDRLP4 4 +CNSTI4 0 +ASGNI4 +line 1639 +;1638: +;1639: p = string; +ADDRLP4 0 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRGP4 $290 +JUMPV +LABELV $289 +line 1641 +;1640: +;1641: while( *p ) { +line 1643 +;1642: +;1643: if( Q_IsColorString( p ) ) { +ADDRLP4 0 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $292 +ADDRLP4 12 +CNSTI4 94 +ASGNI4 +ADDRLP4 0 +INDIRP4 +INDIRI1 +CVII4 1 +ADDRLP4 12 +INDIRI4 +NEI4 $292 +ADDRLP4 16 +ADDRLP4 0 +INDIRP4 +CNSTI4 1 +ADDP4 +INDIRI1 +CVII4 1 +ASGNI4 +ADDRLP4 16 +INDIRI4 +CNSTI4 0 +EQI4 $292 +ADDRLP4 16 +INDIRI4 +ADDRLP4 12 +INDIRI4 +EQI4 $292 +line 1645 +;1644: +;1645: p += 2; +ADDRLP4 0 +ADDRLP4 0 +INDIRP4 +CNSTI4 2 +ADDP4 +ASGNP4 +line 1647 +;1646: +;1647: continue; +ADDRGP4 $290 +JUMPV +LABELV $292 +line 1651 +;1648: +;1649: } +;1650: +;1651: p++; +ADDRLP4 0 +ADDRLP4 0 +INDIRP4 +CNSTI4 1 +ADDP4 +ASGNP4 +line 1653 +;1652: +;1653: len++; +ADDRLP4 4 +ADDRLP4 4 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 1655 +;1654: +;1655: } +LABELV $290 +line 1641 +ADDRLP4 0 +INDIRP4 +INDIRI1 +CVII4 1 +CNSTI4 0 +NEI4 $289 +line 1659 +;1656: +;1657: +;1658: +;1659: return len; +ADDRLP4 4 +INDIRI4 +RETI4 +LABELV $286 +endproc Q_PrintStrlen 20 0 +export Q_CleanStr +proc Q_CleanStr 32 0 +line 1667 +;1660: +;1661:} +;1662: +;1663: +;1664: +;1665: +;1666: +;1667:char *Q_CleanStr( char *string ) { +line 1677 +;1668: +;1669: char* d; +;1670: +;1671: char* s; +;1672: +;1673: int c; +;1674: +;1675: +;1676: +;1677: s = string; +ADDRLP4 0 +ADDRFP4 0 +INDIRP4 +ASGNP4 +line 1679 +;1678: +;1679: d = string; +ADDRLP4 8 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRGP4 $296 +JUMPV +LABELV $295 +line 1681 +;1680: +;1681: while ((c = *s) != 0 ) { +line 1683 +;1682: +;1683: if ( Q_IsColorString( s ) ) { +ADDRLP4 0 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $298 +ADDRLP4 16 +CNSTI4 94 +ASGNI4 +ADDRLP4 0 +INDIRP4 +INDIRI1 +CVII4 1 +ADDRLP4 16 +INDIRI4 +NEI4 $298 +ADDRLP4 20 +ADDRLP4 0 +INDIRP4 +CNSTI4 1 +ADDP4 +INDIRI1 +CVII4 1 +ASGNI4 +ADDRLP4 20 +INDIRI4 +CNSTI4 0 +EQI4 $298 +ADDRLP4 20 +INDIRI4 +ADDRLP4 16 +INDIRI4 +EQI4 $298 +line 1685 +;1684: +;1685: s++; +ADDRLP4 0 +ADDRLP4 0 +INDIRP4 +CNSTI4 1 +ADDP4 +ASGNP4 +line 1687 +;1686: +;1687: } +ADDRGP4 $299 +JUMPV +LABELV $298 +line 1689 +;1688: +;1689: else if ( c >= 0x20 && c <= 0x7E ) { +ADDRLP4 4 +INDIRI4 +CNSTI4 32 +LTI4 $300 +ADDRLP4 4 +INDIRI4 +CNSTI4 126 +GTI4 $300 +line 1691 +;1690: +;1691: *d++ = c; +ADDRLP4 28 +ADDRLP4 8 +INDIRP4 +ASGNP4 +ADDRLP4 8 +ADDRLP4 28 +INDIRP4 +CNSTI4 1 +ADDP4 +ASGNP4 +ADDRLP4 28 +INDIRP4 +ADDRLP4 4 +INDIRI4 +CVII1 4 +ASGNI1 +line 1693 +;1692: +;1693: } +LABELV $300 +LABELV $299 +line 1695 +;1694: +;1695: s++; +ADDRLP4 0 +ADDRLP4 0 +INDIRP4 +CNSTI4 1 +ADDP4 +ASGNP4 +line 1697 +;1696: +;1697: } +LABELV $296 +line 1681 +ADDRLP4 12 +ADDRLP4 0 +INDIRP4 +INDIRI1 +CVII4 1 +ASGNI4 +ADDRLP4 4 +ADDRLP4 12 +INDIRI4 +ASGNI4 +ADDRLP4 12 +INDIRI4 +CNSTI4 0 +NEI4 $295 +line 1699 +;1698: +;1699: *d = '\0'; +ADDRLP4 8 +INDIRP4 +CNSTI1 0 +ASGNI1 +line 1703 +;1700: +;1701: +;1702: +;1703: return string; +ADDRFP4 0 +INDIRP4 +RETP4 +LABELV $294 +endproc Q_CleanStr 32 0 +export Com_sprintf +proc Com_sprintf 32012 12 +line 1711 +;1704: +;1705:} +;1706: +;1707: +;1708: +;1709: +;1710: +;1711:void QDECL Com_sprintf( char *dest, int size, const char *fmt, ...) { +line 1721 +;1712: +;1713: int len; +;1714: +;1715: va_list argptr; +;1716: +;1717: char bigbuffer[32000]; // big, but small enough to fit in PPC stack +;1718: +;1719: +;1720: +;1721: va_start (argptr,fmt); +ADDRLP4 4 +ADDRFP4 8+4 +ASGNP4 +line 1723 +;1722: +;1723: len = vsprintf (bigbuffer,fmt,argptr); +ADDRLP4 8 +ARGP4 +ADDRFP4 8 +INDIRP4 +ARGP4 +ADDRLP4 4 +INDIRP4 +ARGP4 +ADDRLP4 32008 +ADDRGP4 vsprintf +CALLI4 +ASGNI4 +ADDRLP4 0 +ADDRLP4 32008 +INDIRI4 +ASGNI4 +line 1725 +;1724: +;1725: va_end (argptr); +ADDRLP4 4 +CNSTP4 0 +ASGNP4 +line 1727 +;1726: +;1727: if ( len >= sizeof( bigbuffer ) ) { +ADDRLP4 0 +INDIRI4 +CVIU4 4 +CNSTU4 32000 +LTU4 $304 +line 1729 +;1728: +;1729: Com_Error( ERR_FATAL, "Com_sprintf: overflowed bigbuffer" ); +CNSTI4 0 +ARGI4 +ADDRGP4 $306 +ARGP4 +ADDRGP4 Com_Error +CALLV +pop +line 1731 +;1730: +;1731: } +LABELV $304 +line 1733 +;1732: +;1733: if (len >= size) { +ADDRLP4 0 +INDIRI4 +ADDRFP4 4 +INDIRI4 +LTI4 $307 +line 1735 +;1734: +;1735: Com_Printf ("Com_sprintf: overflow of %i in %i\n", len, size); +ADDRGP4 $309 +ARGP4 +ADDRLP4 0 +INDIRI4 +ARGI4 +ADDRFP4 4 +INDIRI4 +ARGI4 +ADDRGP4 Com_Printf +CALLV +pop +line 1747 +;1736: +;1737:#ifdef _DEBUG +;1738: +;1739: __asm { +;1740: +;1741: int 3; +;1742: +;1743: } +;1744: +;1745:#endif +;1746: +;1747: } +LABELV $307 +line 1749 +;1748: +;1749: Q_strncpyz (dest, bigbuffer, size ); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRLP4 8 +ARGP4 +ADDRFP4 4 +INDIRI4 +ARGI4 +ADDRGP4 Q_strncpyz +CALLV +pop +line 1751 +;1750: +;1751:} +LABELV $302 +endproc Com_sprintf 32012 12 +bss +align 1 +LABELV $311 +skip 64000 +data +align 4 +LABELV $312 +byte 4 0 +export va +code +proc va 12 12 +line 1775 +;1752: +;1753: +;1754: +;1755: +;1756: +;1757:/* +;1758: +;1759:============ +;1760: +;1761:va +;1762: +;1763: +;1764: +;1765:does a varargs printf into a temp buffer, so I don't need to have +;1766: +;1767:varargs versions of all text functions. +;1768: +;1769:FIXME: make this buffer size safe someday +;1770: +;1771:============ +;1772: +;1773:*/ +;1774: +;1775:char * QDECL va( char *format, ... ) { +line 1787 +;1776: +;1777: va_list argptr; +;1778: +;1779: static char string[2][32000]; // in case va is called by nested functions +;1780: +;1781: static int index = 0; +;1782: +;1783: char *buf; +;1784: +;1785: +;1786: +;1787: buf = string[index & 1]; +ADDRLP4 4 +CNSTI4 32000 +ADDRGP4 $312 +INDIRI4 +CNSTI4 1 +BANDI4 +MULI4 +ADDRGP4 $311 +ADDP4 +ASGNP4 +line 1789 +;1788: +;1789: index++; +ADDRLP4 8 +ADDRGP4 $312 +ASGNP4 +ADDRLP4 8 +INDIRP4 +ADDRLP4 8 +INDIRP4 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 1793 +;1790: +;1791: +;1792: +;1793: va_start (argptr, format); +ADDRLP4 0 +ADDRFP4 0+4 +ASGNP4 +line 1795 +;1794: +;1795: vsprintf (buf, format,argptr); +ADDRLP4 4 +INDIRP4 +ARGP4 +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRLP4 0 +INDIRP4 +ARGP4 +ADDRGP4 vsprintf +CALLI4 +pop +line 1797 +;1796: +;1797: va_end (argptr); +ADDRLP4 0 +CNSTP4 0 +ASGNP4 +line 1801 +;1798: +;1799: +;1800: +;1801: return buf; +ADDRLP4 4 +INDIRP4 +RETP4 +LABELV $310 +endproc va 12 12 +bss +align 1 +LABELV $315 +skip 16384 +data +align 4 +LABELV $316 +byte 4 0 +export Info_ValueForKey +code +proc Info_ValueForKey 8220 8 +line 1843 +;1802: +;1803:} +;1804: +;1805: +;1806: +;1807: +;1808: +;1809:/* +;1810: +;1811:===================================================================== +;1812: +;1813: +;1814: +;1815: INFO STRINGS +;1816: +;1817: +;1818: +;1819:===================================================================== +;1820: +;1821:*/ +;1822: +;1823: +;1824: +;1825:/* +;1826: +;1827:=============== +;1828: +;1829:Info_ValueForKey +;1830: +;1831: +;1832: +;1833:Searches the string for the given +;1834: +;1835:key and returns the associated value, or an empty string. +;1836: +;1837:FIXME: overflow check? +;1838: +;1839:=============== +;1840: +;1841:*/ +;1842: +;1843:char *Info_ValueForKey( const char *s, const char *key ) { +line 1857 +;1844: +;1845: char pkey[BIG_INFO_KEY]; +;1846: +;1847: static char value[2][BIG_INFO_VALUE]; // use two buffers so compares +;1848: +;1849: // work without stomping on each other +;1850: +;1851: static int valueindex = 0; +;1852: +;1853: char *o; +;1854: +;1855: +;1856: +;1857: if ( !s || !key ) { +ADDRLP4 8196 +CNSTU4 0 +ASGNU4 +ADDRFP4 0 +INDIRP4 +CVPU4 4 +ADDRLP4 8196 +INDIRU4 +EQU4 $319 +ADDRFP4 4 +INDIRP4 +CVPU4 4 +ADDRLP4 8196 +INDIRU4 +NEU4 $317 +LABELV $319 +line 1859 +;1858: +;1859: return ""; +ADDRGP4 $320 +RETP4 +ADDRGP4 $314 +JUMPV +LABELV $317 +line 1865 +;1860: +;1861: } +;1862: +;1863: +;1864: +;1865: if ( strlen( s ) >= BIG_INFO_STRING ) { +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRLP4 8200 +ADDRGP4 strlen +CALLI4 +ASGNI4 +ADDRLP4 8200 +INDIRI4 +CNSTI4 8192 +LTI4 $321 +line 1867 +;1866: +;1867: Com_Error( ERR_DROP, "Info_ValueForKey: oversize infostring" ); +CNSTI4 1 +ARGI4 +ADDRGP4 $323 +ARGP4 +ADDRGP4 Com_Error +CALLV +pop +line 1869 +;1868: +;1869: } +LABELV $321 +line 1873 +;1870: +;1871: +;1872: +;1873: valueindex ^= 1; +ADDRLP4 8204 +ADDRGP4 $316 +ASGNP4 +ADDRLP4 8204 +INDIRP4 +ADDRLP4 8204 +INDIRP4 +INDIRI4 +CNSTI4 1 +BXORI4 +ASGNI4 +line 1875 +;1874: +;1875: if (*s == '\\') +ADDRFP4 0 +INDIRP4 +INDIRI1 +CVII4 1 +CNSTI4 92 +NEI4 $327 +line 1877 +;1876: +;1877: s++; +ADDRFP4 0 +ADDRFP4 0 +INDIRP4 +CNSTI4 1 +ADDP4 +ASGNP4 +ADDRGP4 $327 +JUMPV +LABELV $326 +line 1881 +;1878: +;1879: while (1) +;1880: +;1881: { +line 1883 +;1882: +;1883: o = pkey; +ADDRLP4 0 +ADDRLP4 4 +ASGNP4 +ADDRGP4 $330 +JUMPV +LABELV $329 +line 1887 +;1884: +;1885: while (*s != '\\') +;1886: +;1887: { +line 1889 +;1888: +;1889: if (!*s) +ADDRFP4 0 +INDIRP4 +INDIRI1 +CVII4 1 +CNSTI4 0 +NEI4 $332 +line 1891 +;1890: +;1891: return ""; +ADDRGP4 $320 +RETP4 +ADDRGP4 $314 +JUMPV +LABELV $332 +line 1893 +;1892: +;1893: *o++ = *s++; +ADDRLP4 8208 +ADDRLP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 8216 +CNSTI4 1 +ASGNI4 +ADDRLP4 0 +ADDRLP4 8208 +INDIRP4 +ADDRLP4 8216 +INDIRI4 +ADDP4 +ASGNP4 +ADDRLP4 8212 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRFP4 0 +ADDRLP4 8212 +INDIRP4 +ADDRLP4 8216 +INDIRI4 +ADDP4 +ASGNP4 +ADDRLP4 8208 +INDIRP4 +ADDRLP4 8212 +INDIRP4 +INDIRI1 +ASGNI1 +line 1895 +;1894: +;1895: } +LABELV $330 +line 1885 +ADDRFP4 0 +INDIRP4 +INDIRI1 +CVII4 1 +CNSTI4 92 +NEI4 $329 +line 1897 +;1896: +;1897: *o = 0; +ADDRLP4 0 +INDIRP4 +CNSTI1 0 +ASGNI1 +line 1899 +;1898: +;1899: s++; +ADDRFP4 0 +ADDRFP4 0 +INDIRP4 +CNSTI4 1 +ADDP4 +ASGNP4 +line 1903 +;1900: +;1901: +;1902: +;1903: o = value[valueindex]; +ADDRLP4 0 +ADDRGP4 $316 +INDIRI4 +CNSTI4 13 +LSHI4 +ADDRGP4 $315 +ADDP4 +ASGNP4 +ADDRGP4 $335 +JUMPV +LABELV $334 +line 1909 +;1904: +;1905: +;1906: +;1907: while (*s != '\\' && *s) +;1908: +;1909: { +line 1911 +;1910: +;1911: *o++ = *s++; +ADDRLP4 8208 +ADDRLP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 8216 +CNSTI4 1 +ASGNI4 +ADDRLP4 0 +ADDRLP4 8208 +INDIRP4 +ADDRLP4 8216 +INDIRI4 +ADDP4 +ASGNP4 +ADDRLP4 8212 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRFP4 0 +ADDRLP4 8212 +INDIRP4 +ADDRLP4 8216 +INDIRI4 +ADDP4 +ASGNP4 +ADDRLP4 8208 +INDIRP4 +ADDRLP4 8212 +INDIRP4 +INDIRI1 +ASGNI1 +line 1913 +;1912: +;1913: } +LABELV $335 +line 1907 +ADDRLP4 8208 +ADDRFP4 0 +INDIRP4 +INDIRI1 +CVII4 1 +ASGNI4 +ADDRLP4 8208 +INDIRI4 +CNSTI4 92 +EQI4 $337 +ADDRLP4 8208 +INDIRI4 +CNSTI4 0 +NEI4 $334 +LABELV $337 +line 1915 +;1914: +;1915: *o = 0; +ADDRLP4 0 +INDIRP4 +CNSTI1 0 +ASGNI1 +line 1919 +;1916: +;1917: +;1918: +;1919: if (!Q_stricmp (key, pkey) ) +ADDRFP4 4 +INDIRP4 +ARGP4 +ADDRLP4 4 +ARGP4 +ADDRLP4 8212 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 8212 +INDIRI4 +CNSTI4 0 +NEI4 $338 +line 1921 +;1920: +;1921: return value[valueindex]; +ADDRGP4 $316 +INDIRI4 +CNSTI4 13 +LSHI4 +ADDRGP4 $315 +ADDP4 +RETP4 +ADDRGP4 $314 +JUMPV +LABELV $338 +line 1925 +;1922: +;1923: +;1924: +;1925: if (!*s) +ADDRFP4 0 +INDIRP4 +INDIRI1 +CVII4 1 +CNSTI4 0 +NEI4 $340 +line 1927 +;1926: +;1927: break; +ADDRGP4 $328 +JUMPV +LABELV $340 +line 1929 +;1928: +;1929: s++; +ADDRFP4 0 +ADDRFP4 0 +INDIRP4 +CNSTI4 1 +ADDP4 +ASGNP4 +line 1931 +;1930: +;1931: } +LABELV $327 +line 1879 +ADDRGP4 $326 +JUMPV +LABELV $328 +line 1935 +;1932: +;1933: +;1934: +;1935: return ""; +ADDRGP4 $320 +RETP4 +LABELV $314 +endproc Info_ValueForKey 8220 8 +export Info_NextPair +proc Info_NextPair 20 0 +line 1957 +;1936: +;1937:} +;1938: +;1939: +;1940: +;1941: +;1942: +;1943:/* +;1944: +;1945:=================== +;1946: +;1947:Info_NextPair +;1948: +;1949: +;1950: +;1951:Used to itterate through all the key/value pairs in an info string +;1952: +;1953:=================== +;1954: +;1955:*/ +;1956: +;1957:void Info_NextPair( const char **head, char *key, char *value ) { +line 1965 +;1958: +;1959: char *o; +;1960: +;1961: const char *s; +;1962: +;1963: +;1964: +;1965: s = *head; +ADDRLP4 0 +ADDRFP4 0 +INDIRP4 +INDIRP4 +ASGNP4 +line 1969 +;1966: +;1967: +;1968: +;1969: if ( *s == '\\' ) { +ADDRLP4 0 +INDIRP4 +INDIRI1 +CVII4 1 +CNSTI4 92 +NEI4 $343 +line 1971 +;1970: +;1971: s++; +ADDRLP4 0 +ADDRLP4 0 +INDIRP4 +CNSTI4 1 +ADDP4 +ASGNP4 +line 1973 +;1972: +;1973: } +LABELV $343 +line 1975 +;1974: +;1975: key[0] = 0; +ADDRFP4 4 +INDIRP4 +CNSTI1 0 +ASGNI1 +line 1977 +;1976: +;1977: value[0] = 0; +ADDRFP4 8 +INDIRP4 +CNSTI1 0 +ASGNI1 +line 1981 +;1978: +;1979: +;1980: +;1981: o = key; +ADDRLP4 4 +ADDRFP4 4 +INDIRP4 +ASGNP4 +ADDRGP4 $346 +JUMPV +LABELV $345 +line 1983 +;1982: +;1983: while ( *s != '\\' ) { +line 1985 +;1984: +;1985: if ( !*s ) { +ADDRLP4 0 +INDIRP4 +INDIRI1 +CVII4 1 +CNSTI4 0 +NEI4 $348 +line 1987 +;1986: +;1987: *o = 0; +ADDRLP4 4 +INDIRP4 +CNSTI1 0 +ASGNI1 +line 1989 +;1988: +;1989: *head = s; +ADDRFP4 0 +INDIRP4 +ADDRLP4 0 +INDIRP4 +ASGNP4 +line 1991 +;1990: +;1991: return; +ADDRGP4 $342 +JUMPV +LABELV $348 +line 1995 +;1992: +;1993: } +;1994: +;1995: *o++ = *s++; +ADDRLP4 8 +ADDRLP4 4 +INDIRP4 +ASGNP4 +ADDRLP4 16 +CNSTI4 1 +ASGNI4 +ADDRLP4 4 +ADDRLP4 8 +INDIRP4 +ADDRLP4 16 +INDIRI4 +ADDP4 +ASGNP4 +ADDRLP4 12 +ADDRLP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 0 +ADDRLP4 12 +INDIRP4 +ADDRLP4 16 +INDIRI4 +ADDP4 +ASGNP4 +ADDRLP4 8 +INDIRP4 +ADDRLP4 12 +INDIRP4 +INDIRI1 +ASGNI1 +line 1997 +;1996: +;1997: } +LABELV $346 +line 1983 +ADDRLP4 0 +INDIRP4 +INDIRI1 +CVII4 1 +CNSTI4 92 +NEI4 $345 +line 1999 +;1998: +;1999: *o = 0; +ADDRLP4 4 +INDIRP4 +CNSTI1 0 +ASGNI1 +line 2001 +;2000: +;2001: s++; +ADDRLP4 0 +ADDRLP4 0 +INDIRP4 +CNSTI4 1 +ADDP4 +ASGNP4 +line 2005 +;2002: +;2003: +;2004: +;2005: o = value; +ADDRLP4 4 +ADDRFP4 8 +INDIRP4 +ASGNP4 +ADDRGP4 $351 +JUMPV +LABELV $350 +line 2007 +;2006: +;2007: while ( *s != '\\' && *s ) { +line 2009 +;2008: +;2009: *o++ = *s++; +ADDRLP4 8 +ADDRLP4 4 +INDIRP4 +ASGNP4 +ADDRLP4 16 +CNSTI4 1 +ASGNI4 +ADDRLP4 4 +ADDRLP4 8 +INDIRP4 +ADDRLP4 16 +INDIRI4 +ADDP4 +ASGNP4 +ADDRLP4 12 +ADDRLP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 0 +ADDRLP4 12 +INDIRP4 +ADDRLP4 16 +INDIRI4 +ADDP4 +ASGNP4 +ADDRLP4 8 +INDIRP4 +ADDRLP4 12 +INDIRP4 +INDIRI1 +ASGNI1 +line 2011 +;2010: +;2011: } +LABELV $351 +line 2007 +ADDRLP4 8 +ADDRLP4 0 +INDIRP4 +INDIRI1 +CVII4 1 +ASGNI4 +ADDRLP4 8 +INDIRI4 +CNSTI4 92 +EQI4 $353 +ADDRLP4 8 +INDIRI4 +CNSTI4 0 +NEI4 $350 +LABELV $353 +line 2013 +;2012: +;2013: *o = 0; +ADDRLP4 4 +INDIRP4 +CNSTI1 0 +ASGNI1 +line 2017 +;2014: +;2015: +;2016: +;2017: *head = s; +ADDRFP4 0 +INDIRP4 +ADDRLP4 0 +INDIRP4 +ASGNP4 +line 2019 +;2018: +;2019:} +LABELV $342 +endproc Info_NextPair 20 0 +export Info_RemoveKey +proc Info_RemoveKey 2076 8 +line 2035 +;2020: +;2021: +;2022: +;2023: +;2024: +;2025:/* +;2026: +;2027:=================== +;2028: +;2029:Info_RemoveKey +;2030: +;2031:=================== +;2032: +;2033:*/ +;2034: +;2035:void Info_RemoveKey( char *s, const char *key ) { +line 2047 +;2036: +;2037: char *start; +;2038: +;2039: char pkey[MAX_INFO_KEY]; +;2040: +;2041: char value[MAX_INFO_VALUE]; +;2042: +;2043: char *o; +;2044: +;2045: +;2046: +;2047: if ( strlen( s ) >= MAX_INFO_STRING ) { +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRLP4 2056 +ADDRGP4 strlen +CALLI4 +ASGNI4 +ADDRLP4 2056 +INDIRI4 +CNSTI4 1024 +LTI4 $355 +line 2049 +;2048: +;2049: Com_Error( ERR_DROP, "Info_RemoveKey: oversize infostring" ); +CNSTI4 1 +ARGI4 +ADDRGP4 $357 +ARGP4 +ADDRGP4 Com_Error +CALLV +pop +line 2051 +;2050: +;2051: } +LABELV $355 +line 2055 +;2052: +;2053: +;2054: +;2055: if (strchr (key, '\\')) { +ADDRFP4 4 +INDIRP4 +ARGP4 +CNSTI4 92 +ARGI4 +ADDRLP4 2060 +ADDRGP4 strchr +CALLP4 +ASGNP4 +ADDRLP4 2060 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $361 +line 2057 +;2056: +;2057: return; +ADDRGP4 $354 +JUMPV +LABELV $360 +line 2065 +;2058: +;2059: } +;2060: +;2061: +;2062: +;2063: while (1) +;2064: +;2065: { +line 2067 +;2066: +;2067: start = s; +ADDRLP4 1028 +ADDRFP4 0 +INDIRP4 +ASGNP4 +line 2069 +;2068: +;2069: if (*s == '\\') +ADDRFP4 0 +INDIRP4 +INDIRI1 +CVII4 1 +CNSTI4 92 +NEI4 $363 +line 2071 +;2070: +;2071: s++; +ADDRFP4 0 +ADDRFP4 0 +INDIRP4 +CNSTI4 1 +ADDP4 +ASGNP4 +LABELV $363 +line 2073 +;2072: +;2073: o = pkey; +ADDRLP4 0 +ADDRLP4 4 +ASGNP4 +ADDRGP4 $366 +JUMPV +LABELV $365 +line 2077 +;2074: +;2075: while (*s != '\\') +;2076: +;2077: { +line 2079 +;2078: +;2079: if (!*s) +ADDRFP4 0 +INDIRP4 +INDIRI1 +CVII4 1 +CNSTI4 0 +NEI4 $368 +line 2081 +;2080: +;2081: return; +ADDRGP4 $354 +JUMPV +LABELV $368 +line 2083 +;2082: +;2083: *o++ = *s++; +ADDRLP4 2064 +ADDRLP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 2072 +CNSTI4 1 +ASGNI4 +ADDRLP4 0 +ADDRLP4 2064 +INDIRP4 +ADDRLP4 2072 +INDIRI4 +ADDP4 +ASGNP4 +ADDRLP4 2068 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRFP4 0 +ADDRLP4 2068 +INDIRP4 +ADDRLP4 2072 +INDIRI4 +ADDP4 +ASGNP4 +ADDRLP4 2064 +INDIRP4 +ADDRLP4 2068 +INDIRP4 +INDIRI1 +ASGNI1 +line 2085 +;2084: +;2085: } +LABELV $366 +line 2075 +ADDRFP4 0 +INDIRP4 +INDIRI1 +CVII4 1 +CNSTI4 92 +NEI4 $365 +line 2087 +;2086: +;2087: *o = 0; +ADDRLP4 0 +INDIRP4 +CNSTI1 0 +ASGNI1 +line 2089 +;2088: +;2089: s++; +ADDRFP4 0 +ADDRFP4 0 +INDIRP4 +CNSTI4 1 +ADDP4 +ASGNP4 +line 2093 +;2090: +;2091: +;2092: +;2093: o = value; +ADDRLP4 0 +ADDRLP4 1032 +ASGNP4 +ADDRGP4 $371 +JUMPV +LABELV $370 +line 2097 +;2094: +;2095: while (*s != '\\' && *s) +;2096: +;2097: { +line 2099 +;2098: +;2099: if (!*s) +ADDRFP4 0 +INDIRP4 +INDIRI1 +CVII4 1 +CNSTI4 0 +NEI4 $373 +line 2101 +;2100: +;2101: return; +ADDRGP4 $354 +JUMPV +LABELV $373 +line 2103 +;2102: +;2103: *o++ = *s++; +ADDRLP4 2064 +ADDRLP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 2072 +CNSTI4 1 +ASGNI4 +ADDRLP4 0 +ADDRLP4 2064 +INDIRP4 +ADDRLP4 2072 +INDIRI4 +ADDP4 +ASGNP4 +ADDRLP4 2068 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRFP4 0 +ADDRLP4 2068 +INDIRP4 +ADDRLP4 2072 +INDIRI4 +ADDP4 +ASGNP4 +ADDRLP4 2064 +INDIRP4 +ADDRLP4 2068 +INDIRP4 +INDIRI1 +ASGNI1 +line 2105 +;2104: +;2105: } +LABELV $371 +line 2095 +ADDRLP4 2064 +ADDRFP4 0 +INDIRP4 +INDIRI1 +CVII4 1 +ASGNI4 +ADDRLP4 2064 +INDIRI4 +CNSTI4 92 +EQI4 $375 +ADDRLP4 2064 +INDIRI4 +CNSTI4 0 +NEI4 $370 +LABELV $375 +line 2107 +;2106: +;2107: *o = 0; +ADDRLP4 0 +INDIRP4 +CNSTI1 0 +ASGNI1 +line 2111 +;2108: +;2109: +;2110: +;2111: if (!strcmp (key, pkey) ) +ADDRFP4 4 +INDIRP4 +ARGP4 +ADDRLP4 4 +ARGP4 +ADDRLP4 2068 +ADDRGP4 strcmp +CALLI4 +ASGNI4 +ADDRLP4 2068 +INDIRI4 +CNSTI4 0 +NEI4 $376 +line 2113 +;2112: +;2113: { +line 2115 +;2114: +;2115: strcpy (start, s); // remove this part +ADDRLP4 1028 +INDIRP4 +ARGP4 +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRGP4 strcpy +CALLP4 +pop +line 2117 +;2116: +;2117: return; +ADDRGP4 $354 +JUMPV +LABELV $376 +line 2123 +;2118: +;2119: } +;2120: +;2121: +;2122: +;2123: if (!*s) +ADDRFP4 0 +INDIRP4 +INDIRI1 +CVII4 1 +CNSTI4 0 +NEI4 $378 +line 2125 +;2124: +;2125: return; +ADDRGP4 $354 +JUMPV +LABELV $378 +line 2127 +;2126: +;2127: } +LABELV $361 +line 2063 +ADDRGP4 $360 +JUMPV +line 2131 +;2128: +;2129: +;2130: +;2131:} +LABELV $354 +endproc Info_RemoveKey 2076 8 +export Info_RemoveKey_Big +proc Info_RemoveKey_Big 16412 8 +line 2145 +;2132: +;2133: +;2134: +;2135:/* +;2136: +;2137:=================== +;2138: +;2139:Info_RemoveKey_Big +;2140: +;2141:=================== +;2142: +;2143:*/ +;2144: +;2145:void Info_RemoveKey_Big( char *s, const char *key ) { +line 2157 +;2146: +;2147: char *start; +;2148: +;2149: char pkey[BIG_INFO_KEY]; +;2150: +;2151: char value[BIG_INFO_VALUE]; +;2152: +;2153: char *o; +;2154: +;2155: +;2156: +;2157: if ( strlen( s ) >= BIG_INFO_STRING ) { +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRLP4 16392 +ADDRGP4 strlen +CALLI4 +ASGNI4 +ADDRLP4 16392 +INDIRI4 +CNSTI4 8192 +LTI4 $381 +line 2159 +;2158: +;2159: Com_Error( ERR_DROP, "Info_RemoveKey_Big: oversize infostring" ); +CNSTI4 1 +ARGI4 +ADDRGP4 $383 +ARGP4 +ADDRGP4 Com_Error +CALLV +pop +line 2161 +;2160: +;2161: } +LABELV $381 +line 2165 +;2162: +;2163: +;2164: +;2165: if (strchr (key, '\\')) { +ADDRFP4 4 +INDIRP4 +ARGP4 +CNSTI4 92 +ARGI4 +ADDRLP4 16396 +ADDRGP4 strchr +CALLP4 +ASGNP4 +ADDRLP4 16396 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $387 +line 2167 +;2166: +;2167: return; +ADDRGP4 $380 +JUMPV +LABELV $386 +line 2175 +;2168: +;2169: } +;2170: +;2171: +;2172: +;2173: while (1) +;2174: +;2175: { +line 2177 +;2176: +;2177: start = s; +ADDRLP4 8196 +ADDRFP4 0 +INDIRP4 +ASGNP4 +line 2179 +;2178: +;2179: if (*s == '\\') +ADDRFP4 0 +INDIRP4 +INDIRI1 +CVII4 1 +CNSTI4 92 +NEI4 $389 +line 2181 +;2180: +;2181: s++; +ADDRFP4 0 +ADDRFP4 0 +INDIRP4 +CNSTI4 1 +ADDP4 +ASGNP4 +LABELV $389 +line 2183 +;2182: +;2183: o = pkey; +ADDRLP4 0 +ADDRLP4 4 +ASGNP4 +ADDRGP4 $392 +JUMPV +LABELV $391 +line 2187 +;2184: +;2185: while (*s != '\\') +;2186: +;2187: { +line 2189 +;2188: +;2189: if (!*s) +ADDRFP4 0 +INDIRP4 +INDIRI1 +CVII4 1 +CNSTI4 0 +NEI4 $394 +line 2191 +;2190: +;2191: return; +ADDRGP4 $380 +JUMPV +LABELV $394 +line 2193 +;2192: +;2193: *o++ = *s++; +ADDRLP4 16400 +ADDRLP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 16408 +CNSTI4 1 +ASGNI4 +ADDRLP4 0 +ADDRLP4 16400 +INDIRP4 +ADDRLP4 16408 +INDIRI4 +ADDP4 +ASGNP4 +ADDRLP4 16404 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRFP4 0 +ADDRLP4 16404 +INDIRP4 +ADDRLP4 16408 +INDIRI4 +ADDP4 +ASGNP4 +ADDRLP4 16400 +INDIRP4 +ADDRLP4 16404 +INDIRP4 +INDIRI1 +ASGNI1 +line 2195 +;2194: +;2195: } +LABELV $392 +line 2185 +ADDRFP4 0 +INDIRP4 +INDIRI1 +CVII4 1 +CNSTI4 92 +NEI4 $391 +line 2197 +;2196: +;2197: *o = 0; +ADDRLP4 0 +INDIRP4 +CNSTI1 0 +ASGNI1 +line 2199 +;2198: +;2199: s++; +ADDRFP4 0 +ADDRFP4 0 +INDIRP4 +CNSTI4 1 +ADDP4 +ASGNP4 +line 2203 +;2200: +;2201: +;2202: +;2203: o = value; +ADDRLP4 0 +ADDRLP4 8200 +ASGNP4 +ADDRGP4 $397 +JUMPV +LABELV $396 +line 2207 +;2204: +;2205: while (*s != '\\' && *s) +;2206: +;2207: { +line 2209 +;2208: +;2209: if (!*s) +ADDRFP4 0 +INDIRP4 +INDIRI1 +CVII4 1 +CNSTI4 0 +NEI4 $399 +line 2211 +;2210: +;2211: return; +ADDRGP4 $380 +JUMPV +LABELV $399 +line 2213 +;2212: +;2213: *o++ = *s++; +ADDRLP4 16400 +ADDRLP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 16408 +CNSTI4 1 +ASGNI4 +ADDRLP4 0 +ADDRLP4 16400 +INDIRP4 +ADDRLP4 16408 +INDIRI4 +ADDP4 +ASGNP4 +ADDRLP4 16404 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRFP4 0 +ADDRLP4 16404 +INDIRP4 +ADDRLP4 16408 +INDIRI4 +ADDP4 +ASGNP4 +ADDRLP4 16400 +INDIRP4 +ADDRLP4 16404 +INDIRP4 +INDIRI1 +ASGNI1 +line 2215 +;2214: +;2215: } +LABELV $397 +line 2205 +ADDRLP4 16400 +ADDRFP4 0 +INDIRP4 +INDIRI1 +CVII4 1 +ASGNI4 +ADDRLP4 16400 +INDIRI4 +CNSTI4 92 +EQI4 $401 +ADDRLP4 16400 +INDIRI4 +CNSTI4 0 +NEI4 $396 +LABELV $401 +line 2217 +;2216: +;2217: *o = 0; +ADDRLP4 0 +INDIRP4 +CNSTI1 0 +ASGNI1 +line 2221 +;2218: +;2219: +;2220: +;2221: if (!strcmp (key, pkey) ) +ADDRFP4 4 +INDIRP4 +ARGP4 +ADDRLP4 4 +ARGP4 +ADDRLP4 16404 +ADDRGP4 strcmp +CALLI4 +ASGNI4 +ADDRLP4 16404 +INDIRI4 +CNSTI4 0 +NEI4 $402 +line 2223 +;2222: +;2223: { +line 2225 +;2224: +;2225: strcpy (start, s); // remove this part +ADDRLP4 8196 +INDIRP4 +ARGP4 +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRGP4 strcpy +CALLP4 +pop +line 2227 +;2226: +;2227: return; +ADDRGP4 $380 +JUMPV +LABELV $402 +line 2233 +;2228: +;2229: } +;2230: +;2231: +;2232: +;2233: if (!*s) +ADDRFP4 0 +INDIRP4 +INDIRI1 +CVII4 1 +CNSTI4 0 +NEI4 $404 +line 2235 +;2234: +;2235: return; +ADDRGP4 $380 +JUMPV +LABELV $404 +line 2237 +;2236: +;2237: } +LABELV $387 +line 2173 +ADDRGP4 $386 +JUMPV +line 2241 +;2238: +;2239: +;2240: +;2241:} +LABELV $380 +endproc Info_RemoveKey_Big 16412 8 +export Info_Validate +proc Info_Validate 8 8 +line 2267 +;2242: +;2243: +;2244: +;2245: +;2246: +;2247: +;2248: +;2249: +;2250: +;2251:/* +;2252: +;2253:================== +;2254: +;2255:Info_Validate +;2256: +;2257: +;2258: +;2259:Some characters are illegal in info strings because they +;2260: +;2261:can mess up the server's parsing +;2262: +;2263:================== +;2264: +;2265:*/ +;2266: +;2267:qboolean Info_Validate( const char *s ) { +line 2269 +;2268: +;2269: if ( strchr( s, '\"' ) ) { +ADDRFP4 0 +INDIRP4 +ARGP4 +CNSTI4 34 +ARGI4 +ADDRLP4 0 +ADDRGP4 strchr +CALLP4 +ASGNP4 +ADDRLP4 0 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $407 +line 2271 +;2270: +;2271: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $406 +JUMPV +LABELV $407 +line 2275 +;2272: +;2273: } +;2274: +;2275: if ( strchr( s, ';' ) ) { +ADDRFP4 0 +INDIRP4 +ARGP4 +CNSTI4 59 +ARGI4 +ADDRLP4 4 +ADDRGP4 strchr +CALLP4 +ASGNP4 +ADDRLP4 4 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $409 +line 2277 +;2276: +;2277: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $406 +JUMPV +LABELV $409 +line 2281 +;2278: +;2279: } +;2280: +;2281: return qtrue; +CNSTI4 1 +RETI4 +LABELV $406 +endproc Info_Validate 8 8 +export Info_SetValueForKey +proc Info_SetValueForKey 1068 20 +line 2301 +;2282: +;2283:} +;2284: +;2285: +;2286: +;2287:/* +;2288: +;2289:================== +;2290: +;2291:Info_SetValueForKey +;2292: +;2293: +;2294: +;2295:Changes or adds a key/value pair +;2296: +;2297:================== +;2298: +;2299:*/ +;2300: +;2301:void Info_SetValueForKey( char *s, const char *key, const char *value ) { +line 2307 +;2302: +;2303: char newi[MAX_INFO_STRING]; +;2304: +;2305: +;2306: +;2307: if ( strlen( s ) >= MAX_INFO_STRING ) { +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRLP4 1024 +ADDRGP4 strlen +CALLI4 +ASGNI4 +ADDRLP4 1024 +INDIRI4 +CNSTI4 1024 +LTI4 $412 +line 2309 +;2308: +;2309: Com_Error( ERR_DROP, "Info_SetValueForKey: oversize infostring" ); +CNSTI4 1 +ARGI4 +ADDRGP4 $414 +ARGP4 +ADDRGP4 Com_Error +CALLV +pop +line 2311 +;2310: +;2311: } +LABELV $412 +line 2315 +;2312: +;2313: +;2314: +;2315: if (strchr (key, '\\') || strchr (value, '\\')) +ADDRFP4 4 +INDIRP4 +ARGP4 +CNSTI4 92 +ARGI4 +ADDRLP4 1028 +ADDRGP4 strchr +CALLP4 +ASGNP4 +ADDRLP4 1028 +INDIRP4 +CVPU4 4 +CNSTU4 0 +NEU4 $417 +ADDRFP4 8 +INDIRP4 +ARGP4 +CNSTI4 92 +ARGI4 +ADDRLP4 1032 +ADDRGP4 strchr +CALLP4 +ASGNP4 +ADDRLP4 1032 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $415 +LABELV $417 +line 2317 +;2316: +;2317: { +line 2319 +;2318: +;2319: Com_Printf ("Can't use keys or values with a \\\n"); +ADDRGP4 $418 +ARGP4 +ADDRGP4 Com_Printf +CALLV +pop +line 2321 +;2320: +;2321: return; +ADDRGP4 $411 +JUMPV +LABELV $415 +line 2327 +;2322: +;2323: } +;2324: +;2325: +;2326: +;2327: if (strchr (key, ';') || strchr (value, ';')) +ADDRFP4 4 +INDIRP4 +ARGP4 +CNSTI4 59 +ARGI4 +ADDRLP4 1036 +ADDRGP4 strchr +CALLP4 +ASGNP4 +ADDRLP4 1036 +INDIRP4 +CVPU4 4 +CNSTU4 0 +NEU4 $421 +ADDRFP4 8 +INDIRP4 +ARGP4 +CNSTI4 59 +ARGI4 +ADDRLP4 1040 +ADDRGP4 strchr +CALLP4 +ASGNP4 +ADDRLP4 1040 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $419 +LABELV $421 +line 2329 +;2328: +;2329: { +line 2331 +;2330: +;2331: Com_Printf ("Can't use keys or values with a semicolon\n"); +ADDRGP4 $422 +ARGP4 +ADDRGP4 Com_Printf +CALLV +pop +line 2333 +;2332: +;2333: return; +ADDRGP4 $411 +JUMPV +LABELV $419 +line 2339 +;2334: +;2335: } +;2336: +;2337: +;2338: +;2339: if (strchr (key, '\"') || strchr (value, '\"')) +ADDRFP4 4 +INDIRP4 +ARGP4 +CNSTI4 34 +ARGI4 +ADDRLP4 1044 +ADDRGP4 strchr +CALLP4 +ASGNP4 +ADDRLP4 1044 +INDIRP4 +CVPU4 4 +CNSTU4 0 +NEU4 $425 +ADDRFP4 8 +INDIRP4 +ARGP4 +CNSTI4 34 +ARGI4 +ADDRLP4 1048 +ADDRGP4 strchr +CALLP4 +ASGNP4 +ADDRLP4 1048 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $423 +LABELV $425 +line 2341 +;2340: +;2341: { +line 2343 +;2342: +;2343: Com_Printf ("Can't use keys or values with a \"\n"); +ADDRGP4 $426 +ARGP4 +ADDRGP4 Com_Printf +CALLV +pop +line 2345 +;2344: +;2345: return; +ADDRGP4 $411 +JUMPV +LABELV $423 +line 2351 +;2346: +;2347: } +;2348: +;2349: +;2350: +;2351: Info_RemoveKey (s, key); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRFP4 4 +INDIRP4 +ARGP4 +ADDRGP4 Info_RemoveKey +CALLV +pop +line 2353 +;2352: +;2353: if (!value || !strlen(value)) +ADDRLP4 1052 +ADDRFP4 8 +INDIRP4 +ASGNP4 +ADDRLP4 1052 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $429 +ADDRLP4 1052 +INDIRP4 +ARGP4 +ADDRLP4 1056 +ADDRGP4 strlen +CALLI4 +ASGNI4 +ADDRLP4 1056 +INDIRI4 +CNSTI4 0 +NEI4 $427 +LABELV $429 +line 2355 +;2354: +;2355: return; +ADDRGP4 $411 +JUMPV +LABELV $427 +line 2359 +;2356: +;2357: +;2358: +;2359: Com_sprintf (newi, sizeof(newi), "\\%s\\%s", key, value); +ADDRLP4 0 +ARGP4 +CNSTI4 1024 +ARGI4 +ADDRGP4 $430 +ARGP4 +ADDRFP4 4 +INDIRP4 +ARGP4 +ADDRFP4 8 +INDIRP4 +ARGP4 +ADDRGP4 Com_sprintf +CALLV +pop +line 2363 +;2360: +;2361: +;2362: +;2363: if (strlen(newi) + strlen(s) > MAX_INFO_STRING) +ADDRLP4 0 +ARGP4 +ADDRLP4 1060 +ADDRGP4 strlen +CALLI4 +ASGNI4 +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRLP4 1064 +ADDRGP4 strlen +CALLI4 +ASGNI4 +ADDRLP4 1060 +INDIRI4 +ADDRLP4 1064 +INDIRI4 +ADDI4 +CNSTI4 1024 +LEI4 $431 +line 2365 +;2364: +;2365: { +line 2367 +;2366: +;2367: Com_Printf ("Info string length exceeded\n"); +ADDRGP4 $433 +ARGP4 +ADDRGP4 Com_Printf +CALLV +pop +line 2369 +;2368: +;2369: return; +ADDRGP4 $411 +JUMPV +LABELV $431 +line 2375 +;2370: +;2371: } +;2372: +;2373: +;2374: +;2375: strcat (newi, s); +ADDRLP4 0 +ARGP4 +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRGP4 strcat +CALLP4 +pop +line 2377 +;2376: +;2377: strcpy (s, newi); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRLP4 0 +ARGP4 +ADDRGP4 strcpy +CALLP4 +pop +line 2379 +;2378: +;2379:} +LABELV $411 +endproc Info_SetValueForKey 1068 20 +export Info_SetValueForKey_Big +proc Info_SetValueForKey_Big 8236 20 +line 2397 +;2380: +;2381: +;2382: +;2383:/* +;2384: +;2385:================== +;2386: +;2387:Info_SetValueForKey_Big +;2388: +;2389: +;2390: +;2391:Changes or adds a key/value pair +;2392: +;2393:================== +;2394: +;2395:*/ +;2396: +;2397:void Info_SetValueForKey_Big( char *s, const char *key, const char *value ) { +line 2403 +;2398: +;2399: char newi[BIG_INFO_STRING]; +;2400: +;2401: +;2402: +;2403: if ( strlen( s ) >= BIG_INFO_STRING ) { +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRLP4 8192 +ADDRGP4 strlen +CALLI4 +ASGNI4 +ADDRLP4 8192 +INDIRI4 +CNSTI4 8192 +LTI4 $435 +line 2405 +;2404: +;2405: Com_Error( ERR_DROP, "Info_SetValueForKey: oversize infostring" ); +CNSTI4 1 +ARGI4 +ADDRGP4 $414 +ARGP4 +ADDRGP4 Com_Error +CALLV +pop +line 2407 +;2406: +;2407: } +LABELV $435 +line 2411 +;2408: +;2409: +;2410: +;2411: if (strchr (key, '\\') || strchr (value, '\\')) +ADDRFP4 4 +INDIRP4 +ARGP4 +CNSTI4 92 +ARGI4 +ADDRLP4 8196 +ADDRGP4 strchr +CALLP4 +ASGNP4 +ADDRLP4 8196 +INDIRP4 +CVPU4 4 +CNSTU4 0 +NEU4 $439 +ADDRFP4 8 +INDIRP4 +ARGP4 +CNSTI4 92 +ARGI4 +ADDRLP4 8200 +ADDRGP4 strchr +CALLP4 +ASGNP4 +ADDRLP4 8200 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $437 +LABELV $439 +line 2413 +;2412: +;2413: { +line 2415 +;2414: +;2415: Com_Printf ("Can't use keys or values with a \\\n"); +ADDRGP4 $418 +ARGP4 +ADDRGP4 Com_Printf +CALLV +pop +line 2417 +;2416: +;2417: return; +ADDRGP4 $434 +JUMPV +LABELV $437 +line 2423 +;2418: +;2419: } +;2420: +;2421: +;2422: +;2423: if (strchr (key, ';') || strchr (value, ';')) +ADDRFP4 4 +INDIRP4 +ARGP4 +CNSTI4 59 +ARGI4 +ADDRLP4 8204 +ADDRGP4 strchr +CALLP4 +ASGNP4 +ADDRLP4 8204 +INDIRP4 +CVPU4 4 +CNSTU4 0 +NEU4 $442 +ADDRFP4 8 +INDIRP4 +ARGP4 +CNSTI4 59 +ARGI4 +ADDRLP4 8208 +ADDRGP4 strchr +CALLP4 +ASGNP4 +ADDRLP4 8208 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $440 +LABELV $442 +line 2425 +;2424: +;2425: { +line 2427 +;2426: +;2427: Com_Printf ("Can't use keys or values with a semicolon\n"); +ADDRGP4 $422 +ARGP4 +ADDRGP4 Com_Printf +CALLV +pop +line 2429 +;2428: +;2429: return; +ADDRGP4 $434 +JUMPV +LABELV $440 +line 2435 +;2430: +;2431: } +;2432: +;2433: +;2434: +;2435: if (strchr (key, '\"') || strchr (value, '\"')) +ADDRFP4 4 +INDIRP4 +ARGP4 +CNSTI4 34 +ARGI4 +ADDRLP4 8212 +ADDRGP4 strchr +CALLP4 +ASGNP4 +ADDRLP4 8212 +INDIRP4 +CVPU4 4 +CNSTU4 0 +NEU4 $445 +ADDRFP4 8 +INDIRP4 +ARGP4 +CNSTI4 34 +ARGI4 +ADDRLP4 8216 +ADDRGP4 strchr +CALLP4 +ASGNP4 +ADDRLP4 8216 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $443 +LABELV $445 +line 2437 +;2436: +;2437: { +line 2439 +;2438: +;2439: Com_Printf ("Can't use keys or values with a \"\n"); +ADDRGP4 $426 +ARGP4 +ADDRGP4 Com_Printf +CALLV +pop +line 2441 +;2440: +;2441: return; +ADDRGP4 $434 +JUMPV +LABELV $443 +line 2447 +;2442: +;2443: } +;2444: +;2445: +;2446: +;2447: Info_RemoveKey_Big (s, key); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRFP4 4 +INDIRP4 +ARGP4 +ADDRGP4 Info_RemoveKey_Big +CALLV +pop +line 2449 +;2448: +;2449: if (!value || !strlen(value)) +ADDRLP4 8220 +ADDRFP4 8 +INDIRP4 +ASGNP4 +ADDRLP4 8220 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $448 +ADDRLP4 8220 +INDIRP4 +ARGP4 +ADDRLP4 8224 +ADDRGP4 strlen +CALLI4 +ASGNI4 +ADDRLP4 8224 +INDIRI4 +CNSTI4 0 +NEI4 $446 +LABELV $448 +line 2451 +;2450: +;2451: return; +ADDRGP4 $434 +JUMPV +LABELV $446 +line 2455 +;2452: +;2453: +;2454: +;2455: Com_sprintf (newi, sizeof(newi), "\\%s\\%s", key, value); +ADDRLP4 0 +ARGP4 +CNSTI4 8192 +ARGI4 +ADDRGP4 $430 +ARGP4 +ADDRFP4 4 +INDIRP4 +ARGP4 +ADDRFP4 8 +INDIRP4 +ARGP4 +ADDRGP4 Com_sprintf +CALLV +pop +line 2459 +;2456: +;2457: +;2458: +;2459: if (strlen(newi) + strlen(s) > BIG_INFO_STRING) +ADDRLP4 0 +ARGP4 +ADDRLP4 8228 +ADDRGP4 strlen +CALLI4 +ASGNI4 +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRLP4 8232 +ADDRGP4 strlen +CALLI4 +ASGNI4 +ADDRLP4 8228 +INDIRI4 +ADDRLP4 8232 +INDIRI4 +ADDI4 +CNSTI4 8192 +LEI4 $449 +line 2461 +;2460: +;2461: { +line 2463 +;2462: +;2463: Com_Printf ("BIG Info string length exceeded\n"); +ADDRGP4 $451 +ARGP4 +ADDRGP4 Com_Printf +CALLV +pop +line 2465 +;2464: +;2465: return; +ADDRGP4 $434 +JUMPV +LABELV $449 +line 2471 +;2466: +;2467: } +;2468: +;2469: +;2470: +;2471: strcat (s, newi); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRLP4 0 +ARGP4 +ADDRGP4 strcat +CALLP4 +pop +line 2473 +;2472: +;2473:} +LABELV $434 +endproc Info_SetValueForKey_Big 8236 20 +bss +align 4 +LABELV com_lines +skip 4 +align 1 +LABELV com_parsename +skip 1024 +align 1 +LABELV com_token +skip 1024 +import Com_Printf +import Com_Error +import Info_RemoveKey_big +import PerpendicularVector +import AngleVectors +import MatrixMultiply +import MakeNormalVectors +import RotateAroundDirection +import RotatePointAroundVector +import ProjectPointOnPlane +import PlaneFromPoints +import AngleDelta +import AngleNormalize180 +import AngleNormalize360 +import AnglesSubtract +import AngleSubtract +import LerpAngle +import AngleMod +import BoxOnPlaneSide +import SetPlaneSignbits +import AxisCopy +import AxisClear +import AnglesToAxis +import vectoangles +import Q_crandom +import Q_random +import Q_rand +import Q_acos +import Q_log2 +import VectorRotate +import Vector4Scale +import VectorNormalize2 +import VectorNormalize +import CrossProduct +import VectorInverse +import VectorNormalizeFast +import DistanceSquared +import Distance +import VectorLengthSquared +import VectorLength +import VectorCompare +import AddPointToBounds +import ClearBounds +import RadiusFromBounds +import NormalizeColor +import ColorBytes4 +import ColorBytes3 +import _VectorMA +import _VectorScale +import _VectorCopy +import _VectorAdd +import _VectorSubtract +import _DotProduct +import ByteToDir +import DirToByte +import ClampShort +import ClampChar +import Q_rsqrt +import Q_fabs +import axisDefault +import vec3_origin +import g_color_table +import colorDkGrey +import colorMdGrey +import colorLtGrey +import colorWhite +import colorCyan +import colorMagenta +import colorYellow +import colorBlue +import colorGreen +import colorRed +import colorBlack +import bytedirs +import Com_Memcpy +import Com_Memset +import Hunk_Alloc +import acos +import fabs +import abs +import tan +import atan2 +import cos +import sin +import sqrt +import floor +import ceil +import memcpy +import memset +import memmove +import sscanf +import vsprintf +import _atoi +import atoi +import _atof +import atof +import toupper +import tolower +import strncpy +import strstr +import strchr +import strcmp +import strcpy +import strcat +import strlen +import rand +import srand +import qsort +lit +align 1 +LABELV $451 +byte 1 66 +byte 1 73 +byte 1 71 +byte 1 32 +byte 1 73 +byte 1 110 +byte 1 102 +byte 1 111 +byte 1 32 +byte 1 115 +byte 1 116 +byte 1 114 +byte 1 105 +byte 1 110 +byte 1 103 +byte 1 32 +byte 1 108 +byte 1 101 +byte 1 110 +byte 1 103 +byte 1 116 +byte 1 104 +byte 1 32 +byte 1 101 +byte 1 120 +byte 1 99 +byte 1 101 +byte 1 101 +byte 1 100 +byte 1 101 +byte 1 100 +byte 1 10 +byte 1 0 +align 1 +LABELV $433 +byte 1 73 +byte 1 110 +byte 1 102 +byte 1 111 +byte 1 32 +byte 1 115 +byte 1 116 +byte 1 114 +byte 1 105 +byte 1 110 +byte 1 103 +byte 1 32 +byte 1 108 +byte 1 101 +byte 1 110 +byte 1 103 +byte 1 116 +byte 1 104 +byte 1 32 +byte 1 101 +byte 1 120 +byte 1 99 +byte 1 101 +byte 1 101 +byte 1 100 +byte 1 101 +byte 1 100 +byte 1 10 +byte 1 0 +align 1 +LABELV $430 +byte 1 92 +byte 1 37 +byte 1 115 +byte 1 92 +byte 1 37 +byte 1 115 +byte 1 0 +align 1 +LABELV $426 +byte 1 67 +byte 1 97 +byte 1 110 +byte 1 39 +byte 1 116 +byte 1 32 +byte 1 117 +byte 1 115 +byte 1 101 +byte 1 32 +byte 1 107 +byte 1 101 +byte 1 121 +byte 1 115 +byte 1 32 +byte 1 111 +byte 1 114 +byte 1 32 +byte 1 118 +byte 1 97 +byte 1 108 +byte 1 117 +byte 1 101 +byte 1 115 +byte 1 32 +byte 1 119 +byte 1 105 +byte 1 116 +byte 1 104 +byte 1 32 +byte 1 97 +byte 1 32 +byte 1 34 +byte 1 10 +byte 1 0 +align 1 +LABELV $422 +byte 1 67 +byte 1 97 +byte 1 110 +byte 1 39 +byte 1 116 +byte 1 32 +byte 1 117 +byte 1 115 +byte 1 101 +byte 1 32 +byte 1 107 +byte 1 101 +byte 1 121 +byte 1 115 +byte 1 32 +byte 1 111 +byte 1 114 +byte 1 32 +byte 1 118 +byte 1 97 +byte 1 108 +byte 1 117 +byte 1 101 +byte 1 115 +byte 1 32 +byte 1 119 +byte 1 105 +byte 1 116 +byte 1 104 +byte 1 32 +byte 1 97 +byte 1 32 +byte 1 115 +byte 1 101 +byte 1 109 +byte 1 105 +byte 1 99 +byte 1 111 +byte 1 108 +byte 1 111 +byte 1 110 +byte 1 10 +byte 1 0 +align 1 +LABELV $418 +byte 1 67 +byte 1 97 +byte 1 110 +byte 1 39 +byte 1 116 +byte 1 32 +byte 1 117 +byte 1 115 +byte 1 101 +byte 1 32 +byte 1 107 +byte 1 101 +byte 1 121 +byte 1 115 +byte 1 32 +byte 1 111 +byte 1 114 +byte 1 32 +byte 1 118 +byte 1 97 +byte 1 108 +byte 1 117 +byte 1 101 +byte 1 115 +byte 1 32 +byte 1 119 +byte 1 105 +byte 1 116 +byte 1 104 +byte 1 32 +byte 1 97 +byte 1 32 +byte 1 92 +byte 1 10 +byte 1 0 +align 1 +LABELV $414 +byte 1 73 +byte 1 110 +byte 1 102 +byte 1 111 +byte 1 95 +byte 1 83 +byte 1 101 +byte 1 116 +byte 1 86 +byte 1 97 +byte 1 108 +byte 1 117 +byte 1 101 +byte 1 70 +byte 1 111 +byte 1 114 +byte 1 75 +byte 1 101 +byte 1 121 +byte 1 58 +byte 1 32 +byte 1 111 +byte 1 118 +byte 1 101 +byte 1 114 +byte 1 115 +byte 1 105 +byte 1 122 +byte 1 101 +byte 1 32 +byte 1 105 +byte 1 110 +byte 1 102 +byte 1 111 +byte 1 115 +byte 1 116 +byte 1 114 +byte 1 105 +byte 1 110 +byte 1 103 +byte 1 0 +align 1 +LABELV $383 +byte 1 73 +byte 1 110 +byte 1 102 +byte 1 111 +byte 1 95 +byte 1 82 +byte 1 101 +byte 1 109 +byte 1 111 +byte 1 118 +byte 1 101 +byte 1 75 +byte 1 101 +byte 1 121 +byte 1 95 +byte 1 66 +byte 1 105 +byte 1 103 +byte 1 58 +byte 1 32 +byte 1 111 +byte 1 118 +byte 1 101 +byte 1 114 +byte 1 115 +byte 1 105 +byte 1 122 +byte 1 101 +byte 1 32 +byte 1 105 +byte 1 110 +byte 1 102 +byte 1 111 +byte 1 115 +byte 1 116 +byte 1 114 +byte 1 105 +byte 1 110 +byte 1 103 +byte 1 0 +align 1 +LABELV $357 +byte 1 73 +byte 1 110 +byte 1 102 +byte 1 111 +byte 1 95 +byte 1 82 +byte 1 101 +byte 1 109 +byte 1 111 +byte 1 118 +byte 1 101 +byte 1 75 +byte 1 101 +byte 1 121 +byte 1 58 +byte 1 32 +byte 1 111 +byte 1 118 +byte 1 101 +byte 1 114 +byte 1 115 +byte 1 105 +byte 1 122 +byte 1 101 +byte 1 32 +byte 1 105 +byte 1 110 +byte 1 102 +byte 1 111 +byte 1 115 +byte 1 116 +byte 1 114 +byte 1 105 +byte 1 110 +byte 1 103 +byte 1 0 +align 1 +LABELV $323 +byte 1 73 +byte 1 110 +byte 1 102 +byte 1 111 +byte 1 95 +byte 1 86 +byte 1 97 +byte 1 108 +byte 1 117 +byte 1 101 +byte 1 70 +byte 1 111 +byte 1 114 +byte 1 75 +byte 1 101 +byte 1 121 +byte 1 58 +byte 1 32 +byte 1 111 +byte 1 118 +byte 1 101 +byte 1 114 +byte 1 115 +byte 1 105 +byte 1 122 +byte 1 101 +byte 1 32 +byte 1 105 +byte 1 110 +byte 1 102 +byte 1 111 +byte 1 115 +byte 1 116 +byte 1 114 +byte 1 105 +byte 1 110 +byte 1 103 +byte 1 0 +align 1 +LABELV $320 +byte 1 0 +align 1 +LABELV $309 +byte 1 67 +byte 1 111 +byte 1 109 +byte 1 95 +byte 1 115 +byte 1 112 +byte 1 114 +byte 1 105 +byte 1 110 +byte 1 116 +byte 1 102 +byte 1 58 +byte 1 32 +byte 1 111 +byte 1 118 +byte 1 101 +byte 1 114 +byte 1 102 +byte 1 108 +byte 1 111 +byte 1 119 +byte 1 32 +byte 1 111 +byte 1 102 +byte 1 32 +byte 1 37 +byte 1 105 +byte 1 32 +byte 1 105 +byte 1 110 +byte 1 32 +byte 1 37 +byte 1 105 +byte 1 10 +byte 1 0 +align 1 +LABELV $306 +byte 1 67 +byte 1 111 +byte 1 109 +byte 1 95 +byte 1 115 +byte 1 112 +byte 1 114 +byte 1 105 +byte 1 110 +byte 1 116 +byte 1 102 +byte 1 58 +byte 1 32 +byte 1 111 +byte 1 118 +byte 1 101 +byte 1 114 +byte 1 102 +byte 1 108 +byte 1 111 +byte 1 119 +byte 1 101 +byte 1 100 +byte 1 32 +byte 1 98 +byte 1 105 +byte 1 103 +byte 1 98 +byte 1 117 +byte 1 102 +byte 1 102 +byte 1 101 +byte 1 114 +byte 1 0 +align 1 +LABELV $285 +byte 1 81 +byte 1 95 +byte 1 115 +byte 1 116 +byte 1 114 +byte 1 99 +byte 1 97 +byte 1 116 +byte 1 58 +byte 1 32 +byte 1 97 +byte 1 108 +byte 1 114 +byte 1 101 +byte 1 97 +byte 1 100 +byte 1 121 +byte 1 32 +byte 1 111 +byte 1 118 +byte 1 101 +byte 1 114 +byte 1 102 +byte 1 108 +byte 1 111 +byte 1 119 +byte 1 101 +byte 1 100 +byte 1 0 +align 1 +LABELV $235 +byte 1 81 +byte 1 95 +byte 1 115 +byte 1 116 +byte 1 114 +byte 1 110 +byte 1 99 +byte 1 112 +byte 1 121 +byte 1 122 +byte 1 58 +byte 1 32 +byte 1 100 +byte 1 101 +byte 1 115 +byte 1 116 +byte 1 115 +byte 1 105 +byte 1 122 +byte 1 101 +byte 1 32 +byte 1 60 +byte 1 32 +byte 1 49 +byte 1 0 +align 1 +LABELV $232 +byte 1 81 +byte 1 95 +byte 1 115 +byte 1 116 +byte 1 114 +byte 1 110 +byte 1 99 +byte 1 112 +byte 1 121 +byte 1 122 +byte 1 58 +byte 1 32 +byte 1 78 +byte 1 85 +byte 1 76 +byte 1 76 +byte 1 32 +byte 1 115 +byte 1 114 +byte 1 99 +byte 1 0 +align 1 +LABELV $229 +byte 1 81 +byte 1 95 +byte 1 115 +byte 1 116 +byte 1 114 +byte 1 110 +byte 1 99 +byte 1 112 +byte 1 121 +byte 1 122 +byte 1 58 +byte 1 32 +byte 1 78 +byte 1 85 +byte 1 76 +byte 1 76 +byte 1 32 +byte 1 100 +byte 1 101 +byte 1 115 +byte 1 116 +byte 1 0 +align 1 +LABELV $193 +byte 1 41 +byte 1 0 +align 1 +LABELV $188 +byte 1 40 +byte 1 0 +align 1 +LABELV $169 +byte 1 77 +byte 1 97 +byte 1 116 +byte 1 99 +byte 1 104 +byte 1 84 +byte 1 111 +byte 1 107 +byte 1 101 +byte 1 110 +byte 1 58 +byte 1 32 +byte 1 37 +byte 1 115 +byte 1 32 +byte 1 33 +byte 1 61 +byte 1 32 +byte 1 37 +byte 1 115 +byte 1 0 +align 1 +LABELV $75 +byte 1 87 +byte 1 65 +byte 1 82 +byte 1 78 +byte 1 73 +byte 1 78 +byte 1 71 +byte 1 58 +byte 1 32 +byte 1 37 +byte 1 115 +byte 1 44 +byte 1 32 +byte 1 108 +byte 1 105 +byte 1 110 +byte 1 101 +byte 1 32 +byte 1 37 +byte 1 100 +byte 1 58 +byte 1 32 +byte 1 37 +byte 1 115 +byte 1 10 +byte 1 0 +align 1 +LABELV $71 +byte 1 69 +byte 1 82 +byte 1 82 +byte 1 79 +byte 1 82 +byte 1 58 +byte 1 32 +byte 1 37 +byte 1 115 +byte 1 44 +byte 1 32 +byte 1 108 +byte 1 105 +byte 1 110 +byte 1 101 +byte 1 32 +byte 1 37 +byte 1 100 +byte 1 58 +byte 1 32 +byte 1 37 +byte 1 115 +byte 1 10 +byte 1 0 +align 1 +LABELV $65 +byte 1 37 +byte 1 115 +byte 1 0 +align 1 +LABELV $45 +byte 1 37 +byte 1 115 +byte 1 37 +byte 1 115 +byte 1 0 diff --git a/ta_ui/vm/ui_atoms.asm b/ta_ui/vm/ui_atoms.asm new file mode 100644 index 00000000..5fe75fd3 --- /dev/null +++ b/ta_ui/vm/ui_atoms.asm @@ -0,0 +1,5086 @@ +export Com_Error +code +proc Com_Error 1032 12 +file "../ui_atoms.c" +line 15 +;1:// Copyright (C) 1999-2000 Id Software, Inc. +;2:// +;3:/********************************************************************** +;4: UI_ATOMS.C +;5: +;6: User interface building blocks and support functions. +;7:**********************************************************************/ +;8:#include "ui_local.h" +;9: +;10:qboolean m_entersound; // after a frame, so caching won't disrupt the sound +;11: +;12:// these are here so the functions in q_shared.c can link +;13:#ifndef UI_HARD_LINKED +;14: +;15:void QDECL Com_Error( int level, const char *error, ... ) { +line 19 +;16: va_list argptr; +;17: char text[1024]; +;18: +;19: va_start (argptr, error); +ADDRLP4 0 +ADDRFP4 4+4 +ASGNP4 +line 20 +;20: vsprintf (text, error, argptr); +ADDRLP4 4 +ARGP4 +ADDRFP4 4 +INDIRP4 +ARGP4 +ADDRLP4 0 +INDIRP4 +ARGP4 +ADDRGP4 vsprintf +CALLI4 +pop +line 21 +;21: va_end (argptr); +ADDRLP4 0 +CNSTP4 0 +ASGNP4 +line 23 +;22: +;23: trap_Error( va("%s", text) ); +ADDRGP4 $92 +ARGP4 +ADDRLP4 4 +ARGP4 +ADDRLP4 1028 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRLP4 1028 +INDIRP4 +ARGP4 +ADDRGP4 trap_Error +CALLV +pop +line 24 +;24:} +LABELV $90 +endproc Com_Error 1032 12 +export Com_Printf +proc Com_Printf 1032 12 +line 26 +;25: +;26:void QDECL Com_Printf( const char *msg, ... ) { +line 30 +;27: va_list argptr; +;28: char text[1024]; +;29: +;30: va_start (argptr, msg); +ADDRLP4 0 +ADDRFP4 0+4 +ASGNP4 +line 31 +;31: vsprintf (text, msg, argptr); +ADDRLP4 4 +ARGP4 +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRLP4 0 +INDIRP4 +ARGP4 +ADDRGP4 vsprintf +CALLI4 +pop +line 32 +;32: va_end (argptr); +ADDRLP4 0 +CNSTP4 0 +ASGNP4 +line 34 +;33: +;34: trap_Print( va("%s", text) ); +ADDRGP4 $92 +ARGP4 +ADDRLP4 4 +ARGP4 +ADDRLP4 1028 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRLP4 1028 +INDIRP4 +ARGP4 +ADDRGP4 trap_Print +CALLV +pop +line 35 +;35:} +LABELV $93 +endproc Com_Printf 1032 12 +data +export newUI +align 4 +LABELV newUI +byte 4 0 +export UI_ClampCvar +code +proc UI_ClampCvar 0 0 +line 48 +;36: +;37:#endif +;38: +;39:qboolean newUI = qfalse; +;40: +;41: +;42:/* +;43:================= +;44:UI_ClampCvar +;45:================= +;46:*/ +;47:float UI_ClampCvar( float min, float max, float value ) +;48:{ +line 49 +;49: if ( value < min ) return min; +ADDRFP4 8 +INDIRF4 +ADDRFP4 0 +INDIRF4 +GEF4 $96 +ADDRFP4 0 +INDIRF4 +RETF4 +ADDRGP4 $95 +JUMPV +LABELV $96 +line 50 +;50: if ( value > max ) return max; +ADDRFP4 8 +INDIRF4 +ADDRFP4 4 +INDIRF4 +LEF4 $98 +ADDRFP4 4 +INDIRF4 +RETF4 +ADDRGP4 $95 +JUMPV +LABELV $98 +line 51 +;51: return value; +ADDRFP4 8 +INDIRF4 +RETF4 +LABELV $95 +endproc UI_ClampCvar 0 0 +export UI_StartDemoLoop +proc UI_StartDemoLoop 0 8 +line 59 +;52:} +;53: +;54:/* +;55:================= +;56:UI_StartDemoLoop +;57:================= +;58:*/ +;59:void UI_StartDemoLoop( void ) { +line 60 +;60: trap_Cmd_ExecuteText( EXEC_APPEND, "d1\n" ); +CNSTI4 2 +ARGI4 +ADDRGP4 $101 +ARGP4 +ADDRGP4 trap_Cmd_ExecuteText +CALLV +pop +line 61 +;61:} +LABELV $100 +endproc UI_StartDemoLoop 0 8 +proc NeedCDAction 0 8 +line 65 +;62: +;63: +;64:#ifndef MISSIONPACK // bk001206 +;65:static void NeedCDAction( qboolean result ) { +line 66 +;66: if ( !result ) { +ADDRFP4 0 +INDIRI4 +CNSTI4 0 +NEI4 $103 +line 67 +;67: trap_Cmd_ExecuteText( EXEC_APPEND, "quit\n" ); +CNSTI4 2 +ARGI4 +ADDRGP4 $105 +ARGP4 +ADDRGP4 trap_Cmd_ExecuteText +CALLV +pop +line 68 +;68: } +LABELV $103 +line 69 +;69:} +LABELV $102 +endproc NeedCDAction 0 8 +proc NeedCDKeyAction 0 8 +line 73 +;70:#endif // MISSIONPACK +;71: +;72:#ifndef MISSIONPACK // bk001206 +;73:static void NeedCDKeyAction( qboolean result ) { +line 74 +;74: if ( !result ) { +ADDRFP4 0 +INDIRI4 +CNSTI4 0 +NEI4 $107 +line 75 +;75: trap_Cmd_ExecuteText( EXEC_APPEND, "quit\n" ); +CNSTI4 2 +ARGI4 +ADDRGP4 $105 +ARGP4 +ADDRGP4 trap_Cmd_ExecuteText +CALLV +pop +line 76 +;76: } +LABELV $107 +line 77 +;77:} +LABELV $106 +endproc NeedCDKeyAction 0 8 +bss +align 1 +LABELV $110 +skip 1024 +export UI_Argv +code +proc UI_Argv 0 12 +line 80 +;78:#endif // MISSIONPACK +;79: +;80:char *UI_Argv( int arg ) { +line 83 +;81: static char buffer[MAX_STRING_CHARS]; +;82: +;83: trap_Argv( arg, buffer, sizeof( buffer ) ); +ADDRFP4 0 +INDIRI4 +ARGI4 +ADDRGP4 $110 +ARGP4 +CNSTI4 1024 +ARGI4 +ADDRGP4 trap_Argv +CALLV +pop +line 85 +;84: +;85: return buffer; +ADDRGP4 $110 +RETP4 +LABELV $109 +endproc UI_Argv 0 12 +bss +align 1 +LABELV $112 +skip 1024 +export UI_Cvar_VariableString +code +proc UI_Cvar_VariableString 0 12 +line 89 +;86:} +;87: +;88: +;89:char *UI_Cvar_VariableString( const char *var_name ) { +line 92 +;90: static char buffer[MAX_STRING_CHARS]; +;91: +;92: trap_Cvar_VariableStringBuffer( var_name, buffer, sizeof( buffer ) ); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRGP4 $112 +ARGP4 +CNSTI4 1024 +ARGI4 +ADDRGP4 trap_Cvar_VariableStringBuffer +CALLV +pop +line 94 +;93: +;94: return buffer; +ADDRGP4 $112 +RETP4 +LABELV $111 +endproc UI_Cvar_VariableString 0 12 +export UI_SetBestScores +proc UI_SetBestScores 144 12 +line 99 +;95:} +;96: +;97: +;98: +;99:void UI_SetBestScores(postGameInfo_t *newInfo, qboolean postGame) { +line 100 +;100: trap_Cvar_Set("ui_scoreAccuracy", va("%i%%", newInfo->accuracy)); +ADDRGP4 $115 +ARGP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 16 +ADDP4 +INDIRI4 +ARGI4 +ADDRLP4 0 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRGP4 $114 +ARGP4 +ADDRLP4 0 +INDIRP4 +ARGP4 +ADDRGP4 trap_Cvar_Set +CALLV +pop +line 101 +;101: trap_Cvar_Set("ui_scoreImpressives", va("%i", newInfo->impressives)); +ADDRGP4 $117 +ARGP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 20 +ADDP4 +INDIRI4 +ARGI4 +ADDRLP4 4 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRGP4 $116 +ARGP4 +ADDRLP4 4 +INDIRP4 +ARGP4 +ADDRGP4 trap_Cvar_Set +CALLV +pop +line 102 +;102: trap_Cvar_Set("ui_scoreExcellents", va("%i", newInfo->excellents)); +ADDRGP4 $117 +ARGP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 24 +ADDP4 +INDIRI4 +ARGI4 +ADDRLP4 8 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRGP4 $118 +ARGP4 +ADDRLP4 8 +INDIRP4 +ARGP4 +ADDRGP4 trap_Cvar_Set +CALLV +pop +line 103 +;103: trap_Cvar_Set("ui_scoreDefends", va("%i", newInfo->defends)); +ADDRGP4 $117 +ARGP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 28 +ADDP4 +INDIRI4 +ARGI4 +ADDRLP4 12 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRGP4 $119 +ARGP4 +ADDRLP4 12 +INDIRP4 +ARGP4 +ADDRGP4 trap_Cvar_Set +CALLV +pop +line 104 +;104: trap_Cvar_Set("ui_scoreAssists", va("%i", newInfo->assists)); +ADDRGP4 $117 +ARGP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 32 +ADDP4 +INDIRI4 +ARGI4 +ADDRLP4 16 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRGP4 $120 +ARGP4 +ADDRLP4 16 +INDIRP4 +ARGP4 +ADDRGP4 trap_Cvar_Set +CALLV +pop +line 105 +;105: trap_Cvar_Set("ui_scoreGauntlets", va("%i", newInfo->gauntlets)); +ADDRGP4 $117 +ARGP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 36 +ADDP4 +INDIRI4 +ARGI4 +ADDRLP4 20 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRGP4 $121 +ARGP4 +ADDRLP4 20 +INDIRP4 +ARGP4 +ADDRGP4 trap_Cvar_Set +CALLV +pop +line 106 +;106: trap_Cvar_Set("ui_scoreScore", va("%i", newInfo->score)); +ADDRGP4 $117 +ARGP4 +ADDRFP4 0 +INDIRP4 +INDIRI4 +ARGI4 +ADDRLP4 24 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRGP4 $122 +ARGP4 +ADDRLP4 24 +INDIRP4 +ARGP4 +ADDRGP4 trap_Cvar_Set +CALLV +pop +line 107 +;107: trap_Cvar_Set("ui_scorePerfect", va("%i", newInfo->perfects)); +ADDRGP4 $117 +ARGP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 12 +ADDP4 +INDIRI4 +ARGI4 +ADDRLP4 28 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRGP4 $123 +ARGP4 +ADDRLP4 28 +INDIRP4 +ARGP4 +ADDRGP4 trap_Cvar_Set +CALLV +pop +line 108 +;108: trap_Cvar_Set("ui_scoreTeam", va("%i to %i", newInfo->redScore, newInfo->blueScore)); +ADDRGP4 $125 +ARGP4 +ADDRLP4 32 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 32 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRI4 +ARGI4 +ADDRLP4 32 +INDIRP4 +CNSTI4 8 +ADDP4 +INDIRI4 +ARGI4 +ADDRLP4 36 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRGP4 $124 +ARGP4 +ADDRLP4 36 +INDIRP4 +ARGP4 +ADDRGP4 trap_Cvar_Set +CALLV +pop +line 109 +;109: trap_Cvar_Set("ui_scoreBase", va("%i", newInfo->baseScore)); +ADDRGP4 $117 +ARGP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 60 +ADDP4 +INDIRI4 +ARGI4 +ADDRLP4 40 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRGP4 $126 +ARGP4 +ADDRLP4 40 +INDIRP4 +ARGP4 +ADDRGP4 trap_Cvar_Set +CALLV +pop +line 110 +;110: trap_Cvar_Set("ui_scoreTimeBonus", va("%i", newInfo->timeBonus)); +ADDRGP4 $117 +ARGP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 48 +ADDP4 +INDIRI4 +ARGI4 +ADDRLP4 44 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRGP4 $127 +ARGP4 +ADDRLP4 44 +INDIRP4 +ARGP4 +ADDRGP4 trap_Cvar_Set +CALLV +pop +line 111 +;111: trap_Cvar_Set("ui_scoreSkillBonus", va("%i", newInfo->skillBonus)); +ADDRGP4 $117 +ARGP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 56 +ADDP4 +INDIRI4 +ARGI4 +ADDRLP4 48 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRGP4 $128 +ARGP4 +ADDRLP4 48 +INDIRP4 +ARGP4 +ADDRGP4 trap_Cvar_Set +CALLV +pop +line 112 +;112: trap_Cvar_Set("ui_scoreShutoutBonus", va("%i", newInfo->shutoutBonus)); +ADDRGP4 $117 +ARGP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 52 +ADDP4 +INDIRI4 +ARGI4 +ADDRLP4 52 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRGP4 $129 +ARGP4 +ADDRLP4 52 +INDIRP4 +ARGP4 +ADDRGP4 trap_Cvar_Set +CALLV +pop +line 113 +;113: trap_Cvar_Set("ui_scoreTime", va("%02i:%02i", newInfo->time / 60, newInfo->time % 60)); +ADDRGP4 $131 +ARGP4 +ADDRLP4 56 +ADDRFP4 0 +INDIRP4 +CNSTI4 44 +ADDP4 +INDIRI4 +ASGNI4 +ADDRLP4 60 +CNSTI4 60 +ASGNI4 +ADDRLP4 56 +INDIRI4 +ADDRLP4 60 +INDIRI4 +DIVI4 +ARGI4 +ADDRLP4 56 +INDIRI4 +ADDRLP4 60 +INDIRI4 +MODI4 +ARGI4 +ADDRLP4 64 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRGP4 $130 +ARGP4 +ADDRLP4 64 +INDIRP4 +ARGP4 +ADDRGP4 trap_Cvar_Set +CALLV +pop +line 114 +;114: trap_Cvar_Set("ui_scoreCaptures", va("%i", newInfo->captures)); +ADDRGP4 $117 +ARGP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 40 +ADDP4 +INDIRI4 +ARGI4 +ADDRLP4 68 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRGP4 $132 +ARGP4 +ADDRLP4 68 +INDIRP4 +ARGP4 +ADDRGP4 trap_Cvar_Set +CALLV +pop +line 115 +;115: if (postGame) { +ADDRFP4 4 +INDIRI4 +CNSTI4 0 +EQI4 $133 +line 116 +;116: trap_Cvar_Set("ui_scoreAccuracy2", va("%i%%", newInfo->accuracy)); +ADDRGP4 $115 +ARGP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 16 +ADDP4 +INDIRI4 +ARGI4 +ADDRLP4 72 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRGP4 $135 +ARGP4 +ADDRLP4 72 +INDIRP4 +ARGP4 +ADDRGP4 trap_Cvar_Set +CALLV +pop +line 117 +;117: trap_Cvar_Set("ui_scoreImpressives2", va("%i", newInfo->impressives)); +ADDRGP4 $117 +ARGP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 20 +ADDP4 +INDIRI4 +ARGI4 +ADDRLP4 76 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRGP4 $136 +ARGP4 +ADDRLP4 76 +INDIRP4 +ARGP4 +ADDRGP4 trap_Cvar_Set +CALLV +pop +line 118 +;118: trap_Cvar_Set("ui_scoreExcellents2", va("%i", newInfo->excellents)); +ADDRGP4 $117 +ARGP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 24 +ADDP4 +INDIRI4 +ARGI4 +ADDRLP4 80 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRGP4 $137 +ARGP4 +ADDRLP4 80 +INDIRP4 +ARGP4 +ADDRGP4 trap_Cvar_Set +CALLV +pop +line 119 +;119: trap_Cvar_Set("ui_scoreDefends2", va("%i", newInfo->defends)); +ADDRGP4 $117 +ARGP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 28 +ADDP4 +INDIRI4 +ARGI4 +ADDRLP4 84 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRGP4 $138 +ARGP4 +ADDRLP4 84 +INDIRP4 +ARGP4 +ADDRGP4 trap_Cvar_Set +CALLV +pop +line 120 +;120: trap_Cvar_Set("ui_scoreAssists2", va("%i", newInfo->assists)); +ADDRGP4 $117 +ARGP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 32 +ADDP4 +INDIRI4 +ARGI4 +ADDRLP4 88 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRGP4 $139 +ARGP4 +ADDRLP4 88 +INDIRP4 +ARGP4 +ADDRGP4 trap_Cvar_Set +CALLV +pop +line 121 +;121: trap_Cvar_Set("ui_scoreGauntlets2", va("%i", newInfo->gauntlets)); +ADDRGP4 $117 +ARGP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 36 +ADDP4 +INDIRI4 +ARGI4 +ADDRLP4 92 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRGP4 $140 +ARGP4 +ADDRLP4 92 +INDIRP4 +ARGP4 +ADDRGP4 trap_Cvar_Set +CALLV +pop +line 122 +;122: trap_Cvar_Set("ui_scoreScore2", va("%i", newInfo->score)); +ADDRGP4 $117 +ARGP4 +ADDRFP4 0 +INDIRP4 +INDIRI4 +ARGI4 +ADDRLP4 96 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRGP4 $141 +ARGP4 +ADDRLP4 96 +INDIRP4 +ARGP4 +ADDRGP4 trap_Cvar_Set +CALLV +pop +line 123 +;123: trap_Cvar_Set("ui_scorePerfect2", va("%i", newInfo->perfects)); +ADDRGP4 $117 +ARGP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 12 +ADDP4 +INDIRI4 +ARGI4 +ADDRLP4 100 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRGP4 $142 +ARGP4 +ADDRLP4 100 +INDIRP4 +ARGP4 +ADDRGP4 trap_Cvar_Set +CALLV +pop +line 124 +;124: trap_Cvar_Set("ui_scoreTeam2", va("%i to %i", newInfo->redScore, newInfo->blueScore)); +ADDRGP4 $125 +ARGP4 +ADDRLP4 104 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 104 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRI4 +ARGI4 +ADDRLP4 104 +INDIRP4 +CNSTI4 8 +ADDP4 +INDIRI4 +ARGI4 +ADDRLP4 108 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRGP4 $143 +ARGP4 +ADDRLP4 108 +INDIRP4 +ARGP4 +ADDRGP4 trap_Cvar_Set +CALLV +pop +line 125 +;125: trap_Cvar_Set("ui_scoreBase2", va("%i", newInfo->baseScore)); +ADDRGP4 $117 +ARGP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 60 +ADDP4 +INDIRI4 +ARGI4 +ADDRLP4 112 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRGP4 $144 +ARGP4 +ADDRLP4 112 +INDIRP4 +ARGP4 +ADDRGP4 trap_Cvar_Set +CALLV +pop +line 126 +;126: trap_Cvar_Set("ui_scoreTimeBonus2", va("%i", newInfo->timeBonus)); +ADDRGP4 $117 +ARGP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 48 +ADDP4 +INDIRI4 +ARGI4 +ADDRLP4 116 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRGP4 $145 +ARGP4 +ADDRLP4 116 +INDIRP4 +ARGP4 +ADDRGP4 trap_Cvar_Set +CALLV +pop +line 127 +;127: trap_Cvar_Set("ui_scoreSkillBonus2", va("%i", newInfo->skillBonus)); +ADDRGP4 $117 +ARGP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 56 +ADDP4 +INDIRI4 +ARGI4 +ADDRLP4 120 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRGP4 $146 +ARGP4 +ADDRLP4 120 +INDIRP4 +ARGP4 +ADDRGP4 trap_Cvar_Set +CALLV +pop +line 128 +;128: trap_Cvar_Set("ui_scoreShutoutBonus2", va("%i", newInfo->shutoutBonus)); +ADDRGP4 $117 +ARGP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 52 +ADDP4 +INDIRI4 +ARGI4 +ADDRLP4 124 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRGP4 $147 +ARGP4 +ADDRLP4 124 +INDIRP4 +ARGP4 +ADDRGP4 trap_Cvar_Set +CALLV +pop +line 129 +;129: trap_Cvar_Set("ui_scoreTime2", va("%02i:%02i", newInfo->time / 60, newInfo->time % 60)); +ADDRGP4 $131 +ARGP4 +ADDRLP4 128 +ADDRFP4 0 +INDIRP4 +CNSTI4 44 +ADDP4 +INDIRI4 +ASGNI4 +ADDRLP4 132 +CNSTI4 60 +ASGNI4 +ADDRLP4 128 +INDIRI4 +ADDRLP4 132 +INDIRI4 +DIVI4 +ARGI4 +ADDRLP4 128 +INDIRI4 +ADDRLP4 132 +INDIRI4 +MODI4 +ARGI4 +ADDRLP4 136 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRGP4 $148 +ARGP4 +ADDRLP4 136 +INDIRP4 +ARGP4 +ADDRGP4 trap_Cvar_Set +CALLV +pop +line 130 +;130: trap_Cvar_Set("ui_scoreCaptures2", va("%i", newInfo->captures)); +ADDRGP4 $117 +ARGP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 40 +ADDP4 +INDIRI4 +ARGI4 +ADDRLP4 140 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRGP4 $149 +ARGP4 +ADDRLP4 140 +INDIRP4 +ARGP4 +ADDRGP4 trap_Cvar_Set +CALLV +pop +line 131 +;131: } +LABELV $133 +line 132 +;132:} +LABELV $113 +endproc UI_SetBestScores 144 12 +export UI_LoadBestScores +proc UI_LoadBestScores 144 24 +line 134 +;133: +;134:void UI_LoadBestScores(const char *map, int game) { +line 138 +;135: char fileName[MAX_QPATH]; +;136: fileHandle_t f; +;137: postGameInfo_t newInfo; +;138: memset(&newInfo, 0, sizeof(postGameInfo_t)); +ADDRLP4 68 +ARGP4 +CNSTI4 0 +ARGI4 +CNSTI4 64 +ARGI4 +ADDRGP4 memset +CALLP4 +pop +line 139 +;139: Com_sprintf(fileName, MAX_QPATH, "games/%s_%i.game", map, game); +ADDRLP4 0 +ARGP4 +CNSTI4 64 +ARGI4 +ADDRGP4 $151 +ARGP4 +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRFP4 4 +INDIRI4 +ARGI4 +ADDRGP4 Com_sprintf +CALLV +pop +line 140 +;140: if (trap_FS_FOpenFile(fileName, &f, FS_READ) >= 0) { +ADDRLP4 0 +ARGP4 +ADDRLP4 64 +ARGP4 +CNSTI4 0 +ARGI4 +ADDRLP4 132 +ADDRGP4 trap_FS_FOpenFile +CALLI4 +ASGNI4 +ADDRLP4 132 +INDIRI4 +CNSTI4 0 +LTI4 $152 +line 141 +;141: int size = 0; +ADDRLP4 136 +CNSTI4 0 +ASGNI4 +line 142 +;142: trap_FS_Read(&size, sizeof(int), f); +ADDRLP4 136 +ARGP4 +CNSTI4 4 +ARGI4 +ADDRLP4 64 +INDIRI4 +ARGI4 +ADDRGP4 trap_FS_Read +CALLV +pop +line 143 +;143: if (size == sizeof(postGameInfo_t)) { +ADDRLP4 136 +INDIRI4 +CVIU4 4 +CNSTU4 64 +NEU4 $154 +line 144 +;144: trap_FS_Read(&newInfo, sizeof(postGameInfo_t), f); +ADDRLP4 68 +ARGP4 +CNSTI4 64 +ARGI4 +ADDRLP4 64 +INDIRI4 +ARGI4 +ADDRGP4 trap_FS_Read +CALLV +pop +line 145 +;145: } +LABELV $154 +line 146 +;146: trap_FS_FCloseFile(f); +ADDRLP4 64 +INDIRI4 +ARGI4 +ADDRGP4 trap_FS_FCloseFile +CALLV +pop +line 147 +;147: } +LABELV $152 +line 148 +;148: UI_SetBestScores(&newInfo, qfalse); +ADDRLP4 68 +ARGP4 +CNSTI4 0 +ARGI4 +ADDRGP4 UI_SetBestScores +CALLV +pop +line 150 +;149: +;150: Com_sprintf(fileName, MAX_QPATH, "demos/%s_%d.dm_%d", map, game, (int)trap_Cvar_VariableValue("protocol")); +ADDRGP4 $157 +ARGP4 +ADDRLP4 136 +ADDRGP4 trap_Cvar_VariableValue +CALLF4 +ASGNF4 +ADDRLP4 0 +ARGP4 +CNSTI4 64 +ARGI4 +ADDRGP4 $156 +ARGP4 +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRFP4 4 +INDIRI4 +ARGI4 +ADDRLP4 136 +INDIRF4 +CVFI4 4 +ARGI4 +ADDRGP4 Com_sprintf +CALLV +pop +line 151 +;151: uiInfo.demoAvailable = qfalse; +ADDRGP4 uiInfo+73432 +CNSTI4 0 +ASGNI4 +line 152 +;152: if (trap_FS_FOpenFile(fileName, &f, FS_READ) >= 0) { +ADDRLP4 0 +ARGP4 +ADDRLP4 64 +ARGP4 +CNSTI4 0 +ARGI4 +ADDRLP4 140 +ADDRGP4 trap_FS_FOpenFile +CALLI4 +ASGNI4 +ADDRLP4 140 +INDIRI4 +CNSTI4 0 +LTI4 $159 +line 153 +;153: uiInfo.demoAvailable = qtrue; +ADDRGP4 uiInfo+73432 +CNSTI4 1 +ASGNI4 +line 154 +;154: trap_FS_FCloseFile(f); +ADDRLP4 64 +INDIRI4 +ARGI4 +ADDRGP4 trap_FS_FCloseFile +CALLV +pop +line 155 +;155: } +LABELV $159 +line 156 +;156:} +LABELV $150 +endproc UI_LoadBestScores 144 24 +export UI_ClearScores +proc UI_ClearScores 4200 16 +line 163 +;157: +;158:/* +;159:=============== +;160:UI_ClearScores +;161:=============== +;162:*/ +;163:void UI_ClearScores() { +line 170 +;164: char gameList[4096]; +;165: char *gameFile; +;166: int i, len, count, size; +;167: fileHandle_t f; +;168: postGameInfo_t newInfo; +;169: +;170: count = trap_FS_GetFileList( "games", "game", gameList, sizeof(gameList) ); +ADDRGP4 $163 +ARGP4 +ADDRGP4 $164 +ARGP4 +ADDRLP4 88 +ARGP4 +CNSTI4 4096 +ARGI4 +ADDRLP4 4184 +ADDRGP4 trap_FS_GetFileList +CALLI4 +ASGNI4 +ADDRLP4 16 +ADDRLP4 4184 +INDIRI4 +ASGNI4 +line 172 +;171: +;172: size = sizeof(postGameInfo_t); +ADDRLP4 20 +CNSTI4 64 +ASGNI4 +line 173 +;173: memset(&newInfo, 0, size); +ADDRLP4 24 +ARGP4 +CNSTI4 0 +ARGI4 +ADDRLP4 20 +INDIRI4 +ARGI4 +ADDRGP4 memset +CALLP4 +pop +line 175 +;174: +;175: if (count > 0) { +ADDRLP4 16 +INDIRI4 +CNSTI4 0 +LEI4 $165 +line 176 +;176: gameFile = gameList; +ADDRLP4 0 +ADDRLP4 88 +ASGNP4 +line 177 +;177: for ( i = 0; i < count; i++ ) { +ADDRLP4 8 +CNSTI4 0 +ASGNI4 +ADDRGP4 $170 +JUMPV +LABELV $167 +line 178 +;178: len = strlen(gameFile); +ADDRLP4 0 +INDIRP4 +ARGP4 +ADDRLP4 4188 +ADDRGP4 strlen +CALLI4 +ASGNI4 +ADDRLP4 12 +ADDRLP4 4188 +INDIRI4 +ASGNI4 +line 179 +;179: if (trap_FS_FOpenFile(va("games/%s",gameFile), &f, FS_WRITE) >= 0) { +ADDRGP4 $173 +ARGP4 +ADDRLP4 0 +INDIRP4 +ARGP4 +ADDRLP4 4192 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRLP4 4192 +INDIRP4 +ARGP4 +ADDRLP4 4 +ARGP4 +CNSTI4 1 +ARGI4 +ADDRLP4 4196 +ADDRGP4 trap_FS_FOpenFile +CALLI4 +ASGNI4 +ADDRLP4 4196 +INDIRI4 +CNSTI4 0 +LTI4 $171 +line 180 +;180: trap_FS_Write(&size, sizeof(int), f); +ADDRLP4 20 +ARGP4 +CNSTI4 4 +ARGI4 +ADDRLP4 4 +INDIRI4 +ARGI4 +ADDRGP4 trap_FS_Write +CALLV +pop +line 181 +;181: trap_FS_Write(&newInfo, size, f); +ADDRLP4 24 +ARGP4 +ADDRLP4 20 +INDIRI4 +ARGI4 +ADDRLP4 4 +INDIRI4 +ARGI4 +ADDRGP4 trap_FS_Write +CALLV +pop +line 182 +;182: trap_FS_FCloseFile(f); +ADDRLP4 4 +INDIRI4 +ARGI4 +ADDRGP4 trap_FS_FCloseFile +CALLV +pop +line 183 +;183: } +LABELV $171 +line 184 +;184: gameFile += len + 1; +ADDRLP4 0 +ADDRLP4 12 +INDIRI4 +CNSTI4 1 +ADDI4 +ADDRLP4 0 +INDIRP4 +ADDP4 +ASGNP4 +line 185 +;185: } +LABELV $168 +line 177 +ADDRLP4 8 +ADDRLP4 8 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +LABELV $170 +ADDRLP4 8 +INDIRI4 +ADDRLP4 16 +INDIRI4 +LTI4 $167 +line 186 +;186: } +LABELV $165 +line 188 +;187: +;188: UI_SetBestScores(&newInfo, qfalse); +ADDRLP4 24 +ARGP4 +CNSTI4 0 +ARGI4 +ADDRGP4 UI_SetBestScores +CALLV +pop +line 190 +;189: +;190:} +LABELV $162 +endproc UI_ClearScores 4200 16 +proc UI_Cache_f 0 0 +line 194 +;191: +;192: +;193: +;194:static void UI_Cache_f() { +line 195 +;195: Display_CacheAll(); +ADDRGP4 Display_CacheAll +CALLV +pop +line 196 +;196:} +LABELV $174 +endproc UI_Cache_f 0 0 +proc UI_CalcPostGameStats 1456 20 +line 203 +;197: +;198:/* +;199:======================= +;200:UI_CalcPostGameStats +;201:======================= +;202:*/ +;203:static void UI_CalcPostGameStats() { +line 211 +;204: char map[MAX_QPATH]; +;205: char fileName[MAX_QPATH]; +;206: char info[MAX_INFO_STRING]; +;207: fileHandle_t f; +;208: int size, game, time, adjustedTime; +;209: postGameInfo_t oldInfo; +;210: postGameInfo_t newInfo; +;211: qboolean newHigh = qfalse; +ADDRLP4 1088 +CNSTI4 0 +ASGNI4 +line 213 +;212: +;213: trap_GetConfigString( CS_SERVERINFO, info, sizeof(info) ); +CNSTI4 0 +ARGI4 +ADDRLP4 64 +ARGP4 +CNSTI4 1024 +ARGI4 +ADDRGP4 trap_GetConfigString +CALLI4 +pop +line 214 +;214: Q_strncpyz( map, Info_ValueForKey( info, "mapname" ), sizeof(map) ); +ADDRLP4 64 +ARGP4 +ADDRGP4 $176 +ARGP4 +ADDRLP4 1304 +ADDRGP4 Info_ValueForKey +CALLP4 +ASGNP4 +ADDRLP4 1160 +ARGP4 +ADDRLP4 1304 +INDIRP4 +ARGP4 +CNSTI4 64 +ARGI4 +ADDRGP4 Q_strncpyz +CALLV +pop +line 215 +;215: game = atoi(Info_ValueForKey(info, "g_gametype")); +ADDRLP4 64 +ARGP4 +ADDRGP4 $177 +ARGP4 +ADDRLP4 1308 +ADDRGP4 Info_ValueForKey +CALLP4 +ASGNP4 +ADDRLP4 1308 +INDIRP4 +ARGP4 +ADDRLP4 1312 +ADDRGP4 atoi +CALLI4 +ASGNI4 +ADDRLP4 1224 +ADDRLP4 1312 +INDIRI4 +ASGNI4 +line 218 +;216: +;217: // compose file name +;218: Com_sprintf(fileName, MAX_QPATH, "games/%s_%i.game", map, game); +ADDRLP4 1228 +ARGP4 +CNSTI4 64 +ARGI4 +ADDRGP4 $151 +ARGP4 +ADDRLP4 1160 +ARGP4 +ADDRLP4 1224 +INDIRI4 +ARGI4 +ADDRGP4 Com_sprintf +CALLV +pop +line 220 +;219: // see if we have one already +;220: memset(&oldInfo, 0, sizeof(postGameInfo_t)); +ADDRLP4 1096 +ARGP4 +CNSTI4 0 +ARGI4 +CNSTI4 64 +ARGI4 +ADDRGP4 memset +CALLP4 +pop +line 221 +;221: if (trap_FS_FOpenFile(fileName, &f, FS_READ) >= 0) { +ADDRLP4 1228 +ARGP4 +ADDRLP4 1092 +ARGP4 +CNSTI4 0 +ARGI4 +ADDRLP4 1316 +ADDRGP4 trap_FS_FOpenFile +CALLI4 +ASGNI4 +ADDRLP4 1316 +INDIRI4 +CNSTI4 0 +LTI4 $178 +line 223 +;222: // if so load it +;223: size = 0; +ADDRLP4 1296 +CNSTI4 0 +ASGNI4 +line 224 +;224: trap_FS_Read(&size, sizeof(int), f); +ADDRLP4 1296 +ARGP4 +CNSTI4 4 +ARGI4 +ADDRLP4 1092 +INDIRI4 +ARGI4 +ADDRGP4 trap_FS_Read +CALLV +pop +line 225 +;225: if (size == sizeof(postGameInfo_t)) { +ADDRLP4 1296 +INDIRI4 +CVIU4 4 +CNSTU4 64 +NEU4 $180 +line 226 +;226: trap_FS_Read(&oldInfo, sizeof(postGameInfo_t), f); +ADDRLP4 1096 +ARGP4 +CNSTI4 64 +ARGI4 +ADDRLP4 1092 +INDIRI4 +ARGI4 +ADDRGP4 trap_FS_Read +CALLV +pop +line 227 +;227: } +LABELV $180 +line 228 +;228: trap_FS_FCloseFile(f); +ADDRLP4 1092 +INDIRI4 +ARGI4 +ADDRGP4 trap_FS_FCloseFile +CALLV +pop +line 229 +;229: } +LABELV $178 +line 231 +;230: +;231: newInfo.accuracy = atoi(UI_Argv(3)); +CNSTI4 3 +ARGI4 +ADDRLP4 1320 +ADDRGP4 UI_Argv +CALLP4 +ASGNP4 +ADDRLP4 1320 +INDIRP4 +ARGP4 +ADDRLP4 1324 +ADDRGP4 atoi +CALLI4 +ASGNI4 +ADDRLP4 0+16 +ADDRLP4 1324 +INDIRI4 +ASGNI4 +line 232 +;232: newInfo.impressives = atoi(UI_Argv(4)); +CNSTI4 4 +ARGI4 +ADDRLP4 1328 +ADDRGP4 UI_Argv +CALLP4 +ASGNP4 +ADDRLP4 1328 +INDIRP4 +ARGP4 +ADDRLP4 1332 +ADDRGP4 atoi +CALLI4 +ASGNI4 +ADDRLP4 0+20 +ADDRLP4 1332 +INDIRI4 +ASGNI4 +line 233 +;233: newInfo.excellents = atoi(UI_Argv(5)); +CNSTI4 5 +ARGI4 +ADDRLP4 1336 +ADDRGP4 UI_Argv +CALLP4 +ASGNP4 +ADDRLP4 1336 +INDIRP4 +ARGP4 +ADDRLP4 1340 +ADDRGP4 atoi +CALLI4 +ASGNI4 +ADDRLP4 0+24 +ADDRLP4 1340 +INDIRI4 +ASGNI4 +line 234 +;234: newInfo.defends = atoi(UI_Argv(6)); +CNSTI4 6 +ARGI4 +ADDRLP4 1344 +ADDRGP4 UI_Argv +CALLP4 +ASGNP4 +ADDRLP4 1344 +INDIRP4 +ARGP4 +ADDRLP4 1348 +ADDRGP4 atoi +CALLI4 +ASGNI4 +ADDRLP4 0+28 +ADDRLP4 1348 +INDIRI4 +ASGNI4 +line 235 +;235: newInfo.assists = atoi(UI_Argv(7)); +CNSTI4 7 +ARGI4 +ADDRLP4 1352 +ADDRGP4 UI_Argv +CALLP4 +ASGNP4 +ADDRLP4 1352 +INDIRP4 +ARGP4 +ADDRLP4 1356 +ADDRGP4 atoi +CALLI4 +ASGNI4 +ADDRLP4 0+32 +ADDRLP4 1356 +INDIRI4 +ASGNI4 +line 236 +;236: newInfo.gauntlets = atoi(UI_Argv(8)); +CNSTI4 8 +ARGI4 +ADDRLP4 1360 +ADDRGP4 UI_Argv +CALLP4 +ASGNP4 +ADDRLP4 1360 +INDIRP4 +ARGP4 +ADDRLP4 1364 +ADDRGP4 atoi +CALLI4 +ASGNI4 +ADDRLP4 0+36 +ADDRLP4 1364 +INDIRI4 +ASGNI4 +line 237 +;237: newInfo.baseScore = atoi(UI_Argv(9)); +CNSTI4 9 +ARGI4 +ADDRLP4 1368 +ADDRGP4 UI_Argv +CALLP4 +ASGNP4 +ADDRLP4 1368 +INDIRP4 +ARGP4 +ADDRLP4 1372 +ADDRGP4 atoi +CALLI4 +ASGNI4 +ADDRLP4 0+60 +ADDRLP4 1372 +INDIRI4 +ASGNI4 +line 238 +;238: newInfo.perfects = atoi(UI_Argv(10)); +CNSTI4 10 +ARGI4 +ADDRLP4 1376 +ADDRGP4 UI_Argv +CALLP4 +ASGNP4 +ADDRLP4 1376 +INDIRP4 +ARGP4 +ADDRLP4 1380 +ADDRGP4 atoi +CALLI4 +ASGNI4 +ADDRLP4 0+12 +ADDRLP4 1380 +INDIRI4 +ASGNI4 +line 239 +;239: newInfo.redScore = atoi(UI_Argv(11)); +CNSTI4 11 +ARGI4 +ADDRLP4 1384 +ADDRGP4 UI_Argv +CALLP4 +ASGNP4 +ADDRLP4 1384 +INDIRP4 +ARGP4 +ADDRLP4 1388 +ADDRGP4 atoi +CALLI4 +ASGNI4 +ADDRLP4 0+4 +ADDRLP4 1388 +INDIRI4 +ASGNI4 +line 240 +;240: newInfo.blueScore = atoi(UI_Argv(12)); +CNSTI4 12 +ARGI4 +ADDRLP4 1392 +ADDRGP4 UI_Argv +CALLP4 +ASGNP4 +ADDRLP4 1392 +INDIRP4 +ARGP4 +ADDRLP4 1396 +ADDRGP4 atoi +CALLI4 +ASGNI4 +ADDRLP4 0+8 +ADDRLP4 1396 +INDIRI4 +ASGNI4 +line 241 +;241: time = atoi(UI_Argv(13)); +CNSTI4 13 +ARGI4 +ADDRLP4 1400 +ADDRGP4 UI_Argv +CALLP4 +ASGNP4 +ADDRLP4 1400 +INDIRP4 +ARGP4 +ADDRLP4 1404 +ADDRGP4 atoi +CALLI4 +ASGNI4 +ADDRLP4 1300 +ADDRLP4 1404 +INDIRI4 +ASGNI4 +line 242 +;242: newInfo.captures = atoi(UI_Argv(14)); +CNSTI4 14 +ARGI4 +ADDRLP4 1408 +ADDRGP4 UI_Argv +CALLP4 +ASGNP4 +ADDRLP4 1408 +INDIRP4 +ARGP4 +ADDRLP4 1412 +ADDRGP4 atoi +CALLI4 +ASGNI4 +ADDRLP4 0+40 +ADDRLP4 1412 +INDIRI4 +ASGNI4 +line 244 +;243: +;244: newInfo.time = (time - trap_Cvar_VariableValue("ui_matchStartTime")) / 1000; +ADDRGP4 $194 +ARGP4 +ADDRLP4 1416 +ADDRGP4 trap_Cvar_VariableValue +CALLF4 +ASGNF4 +ADDRLP4 0+44 +ADDRLP4 1300 +INDIRI4 +CVIF4 4 +ADDRLP4 1416 +INDIRF4 +SUBF4 +CNSTF4 1148846080 +DIVF4 +CVFI4 4 +ASGNI4 +line 245 +;245: adjustedTime = uiInfo.mapList[ui_currentMap.integer].timeToBeat[game]; +ADDRLP4 1292 +ADDRLP4 1224 +INDIRI4 +CNSTI4 2 +LSHI4 +CNSTI4 100 +ADDRGP4 ui_currentMap+12 +INDIRI4 +MULI4 +ADDRGP4 uiInfo+83228+28 +ADDP4 +ADDP4 +INDIRI4 +ASGNI4 +line 246 +;246: if (newInfo.time < adjustedTime) { +ADDRLP4 0+44 +INDIRI4 +ADDRLP4 1292 +INDIRI4 +GEI4 $198 +line 247 +;247: newInfo.timeBonus = (adjustedTime - newInfo.time) * 10; +ADDRLP4 0+48 +CNSTI4 10 +ADDRLP4 1292 +INDIRI4 +ADDRLP4 0+44 +INDIRI4 +SUBI4 +MULI4 +ASGNI4 +line 248 +;248: } else { +ADDRGP4 $199 +JUMPV +LABELV $198 +line 249 +;249: newInfo.timeBonus = 0; +ADDRLP4 0+48 +CNSTI4 0 +ASGNI4 +line 250 +;250: } +LABELV $199 +line 252 +;251: +;252: if (newInfo.redScore > newInfo.blueScore && newInfo.blueScore <= 0) { +ADDRLP4 0+4 +INDIRI4 +ADDRLP4 0+8 +INDIRI4 +LEI4 $204 +ADDRLP4 0+8 +INDIRI4 +CNSTI4 0 +GTI4 $204 +line 253 +;253: newInfo.shutoutBonus = 100; +ADDRLP4 0+52 +CNSTI4 100 +ASGNI4 +line 254 +;254: } else { +ADDRGP4 $205 +JUMPV +LABELV $204 +line 255 +;255: newInfo.shutoutBonus = 0; +ADDRLP4 0+52 +CNSTI4 0 +ASGNI4 +line 256 +;256: } +LABELV $205 +line 258 +;257: +;258: newInfo.skillBonus = trap_Cvar_VariableValue("g_spSkill"); +ADDRGP4 $212 +ARGP4 +ADDRLP4 1420 +ADDRGP4 trap_Cvar_VariableValue +CALLF4 +ASGNF4 +ADDRLP4 0+56 +ADDRLP4 1420 +INDIRF4 +CVFI4 4 +ASGNI4 +line 259 +;259: if (newInfo.skillBonus <= 0) { +ADDRLP4 0+56 +INDIRI4 +CNSTI4 0 +GTI4 $213 +line 260 +;260: newInfo.skillBonus = 1; +ADDRLP4 0+56 +CNSTI4 1 +ASGNI4 +line 261 +;261: } +LABELV $213 +line 262 +;262: newInfo.score = newInfo.baseScore + newInfo.shutoutBonus + newInfo.timeBonus; +ADDRLP4 0 +ADDRLP4 0+60 +INDIRI4 +ADDRLP4 0+52 +INDIRI4 +ADDI4 +ADDRLP4 0+48 +INDIRI4 +ADDI4 +ASGNI4 +line 263 +;263: newInfo.score *= newInfo.skillBonus; +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +ADDRLP4 0+56 +INDIRI4 +MULI4 +ASGNI4 +line 266 +;264: +;265: // see if the score is higher for this one +;266: newHigh = (newInfo.redScore > newInfo.blueScore && newInfo.score > oldInfo.score); +ADDRLP4 0+4 +INDIRI4 +ADDRLP4 0+8 +INDIRI4 +LEI4 $224 +ADDRLP4 0 +INDIRI4 +ADDRLP4 1096 +INDIRI4 +LEI4 $224 +ADDRLP4 1424 +CNSTI4 1 +ASGNI4 +ADDRGP4 $225 +JUMPV +LABELV $224 +ADDRLP4 1424 +CNSTI4 0 +ASGNI4 +LABELV $225 +ADDRLP4 1088 +ADDRLP4 1424 +INDIRI4 +ASGNI4 +line 268 +;267: +;268: if (newHigh) { +ADDRLP4 1088 +INDIRI4 +CNSTI4 0 +EQI4 $226 +line 270 +;269: // if so write out the new one +;270: uiInfo.newHighScoreTime = uiInfo.uiDC.realTime + 20000; +ADDRGP4 uiInfo+73416 +ADDRGP4 uiInfo+208 +INDIRI4 +CNSTI4 20000 +ADDI4 +ASGNI4 +line 271 +;271: if (trap_FS_FOpenFile(fileName, &f, FS_WRITE) >= 0) { +ADDRLP4 1228 +ARGP4 +ADDRLP4 1092 +ARGP4 +CNSTI4 1 +ARGI4 +ADDRLP4 1428 +ADDRGP4 trap_FS_FOpenFile +CALLI4 +ASGNI4 +ADDRLP4 1428 +INDIRI4 +CNSTI4 0 +LTI4 $230 +line 272 +;272: size = sizeof(postGameInfo_t); +ADDRLP4 1296 +CNSTI4 64 +ASGNI4 +line 273 +;273: trap_FS_Write(&size, sizeof(int), f); +ADDRLP4 1296 +ARGP4 +CNSTI4 4 +ARGI4 +ADDRLP4 1092 +INDIRI4 +ARGI4 +ADDRGP4 trap_FS_Write +CALLV +pop +line 274 +;274: trap_FS_Write(&newInfo, sizeof(postGameInfo_t), f); +ADDRLP4 0 +ARGP4 +CNSTI4 64 +ARGI4 +ADDRLP4 1092 +INDIRI4 +ARGI4 +ADDRGP4 trap_FS_Write +CALLV +pop +line 275 +;275: trap_FS_FCloseFile(f); +ADDRLP4 1092 +INDIRI4 +ARGI4 +ADDRGP4 trap_FS_FCloseFile +CALLV +pop +line 276 +;276: } +LABELV $230 +line 277 +;277: } +LABELV $226 +line 279 +;278: +;279: if (newInfo.time < oldInfo.time) { +ADDRLP4 0+44 +INDIRI4 +ADDRLP4 1096+44 +INDIRI4 +GEI4 $232 +line 280 +;280: uiInfo.newBestTime = uiInfo.uiDC.realTime + 20000; +ADDRGP4 uiInfo+73420 +ADDRGP4 uiInfo+208 +INDIRI4 +CNSTI4 20000 +ADDI4 +ASGNI4 +line 281 +;281: } +LABELV $232 +line 284 +;282: +;283: // put back all the ui overrides +;284: trap_Cvar_Set("capturelimit", UI_Cvar_VariableString("ui_saveCaptureLimit")); +ADDRGP4 $239 +ARGP4 +ADDRLP4 1428 +ADDRGP4 UI_Cvar_VariableString +CALLP4 +ASGNP4 +ADDRGP4 $238 +ARGP4 +ADDRLP4 1428 +INDIRP4 +ARGP4 +ADDRGP4 trap_Cvar_Set +CALLV +pop +line 285 +;285: trap_Cvar_Set("fraglimit", UI_Cvar_VariableString("ui_saveFragLimit")); +ADDRGP4 $241 +ARGP4 +ADDRLP4 1432 +ADDRGP4 UI_Cvar_VariableString +CALLP4 +ASGNP4 +ADDRGP4 $240 +ARGP4 +ADDRLP4 1432 +INDIRP4 +ARGP4 +ADDRGP4 trap_Cvar_Set +CALLV +pop +line 286 +;286: trap_Cvar_Set("cg_drawTimer", UI_Cvar_VariableString("ui_drawTimer")); +ADDRGP4 $243 +ARGP4 +ADDRLP4 1436 +ADDRGP4 UI_Cvar_VariableString +CALLP4 +ASGNP4 +ADDRGP4 $242 +ARGP4 +ADDRLP4 1436 +INDIRP4 +ARGP4 +ADDRGP4 trap_Cvar_Set +CALLV +pop +line 287 +;287: trap_Cvar_Set("g_doWarmup", UI_Cvar_VariableString("ui_doWarmup")); +ADDRGP4 $245 +ARGP4 +ADDRLP4 1440 +ADDRGP4 UI_Cvar_VariableString +CALLP4 +ASGNP4 +ADDRGP4 $244 +ARGP4 +ADDRLP4 1440 +INDIRP4 +ARGP4 +ADDRGP4 trap_Cvar_Set +CALLV +pop +line 288 +;288: trap_Cvar_Set("g_Warmup", UI_Cvar_VariableString("ui_Warmup")); +ADDRGP4 $247 +ARGP4 +ADDRLP4 1444 +ADDRGP4 UI_Cvar_VariableString +CALLP4 +ASGNP4 +ADDRGP4 $246 +ARGP4 +ADDRLP4 1444 +INDIRP4 +ARGP4 +ADDRGP4 trap_Cvar_Set +CALLV +pop +line 289 +;289: trap_Cvar_Set("sv_pure", UI_Cvar_VariableString("ui_pure")); +ADDRGP4 $249 +ARGP4 +ADDRLP4 1448 +ADDRGP4 UI_Cvar_VariableString +CALLP4 +ASGNP4 +ADDRGP4 $248 +ARGP4 +ADDRLP4 1448 +INDIRP4 +ARGP4 +ADDRGP4 trap_Cvar_Set +CALLV +pop +line 290 +;290: trap_Cvar_Set("g_friendlyFire", UI_Cvar_VariableString("ui_friendlyFire")); +ADDRGP4 $251 +ARGP4 +ADDRLP4 1452 +ADDRGP4 UI_Cvar_VariableString +CALLP4 +ASGNP4 +ADDRGP4 $250 +ARGP4 +ADDRLP4 1452 +INDIRP4 +ARGP4 +ADDRGP4 trap_Cvar_Set +CALLV +pop +line 292 +;291: +;292: UI_SetBestScores(&newInfo, qtrue); +ADDRLP4 0 +ARGP4 +CNSTI4 1 +ARGI4 +ADDRGP4 UI_SetBestScores +CALLV +pop +line 293 +;293: UI_ShowPostGame(newHigh); +ADDRLP4 1088 +INDIRI4 +ARGI4 +ADDRGP4 UI_ShowPostGame +CALLV +pop +line 296 +;294: +;295: +;296:} +LABELV $175 +endproc UI_CalcPostGameStats 1456 20 +export UI_ConsoleCommand +proc UI_ConsoleCommand 168 12 +line 304 +;297: +;298: +;299:/* +;300:================= +;301:UI_ConsoleCommand +;302:================= +;303:*/ +;304:qboolean UI_ConsoleCommand( int realTime ) { +line 307 +;305: char *cmd; +;306: +;307: uiInfo.uiDC.frameTime = realTime - uiInfo.uiDC.realTime; +ADDRGP4 uiInfo+212 +ADDRFP4 0 +INDIRI4 +ADDRGP4 uiInfo+208 +INDIRI4 +SUBI4 +ASGNI4 +line 308 +;308: uiInfo.uiDC.realTime = realTime; +ADDRGP4 uiInfo+208 +ADDRFP4 0 +INDIRI4 +ASGNI4 +line 310 +;309: +;310: cmd = UI_Argv( 0 ); +CNSTI4 0 +ARGI4 +ADDRLP4 4 +ADDRGP4 UI_Argv +CALLP4 +ASGNP4 +ADDRLP4 0 +ADDRLP4 4 +INDIRP4 +ASGNP4 +line 315 +;311: +;312: // ensure minimum menu data is available +;313: //Menu_Cache(); +;314: +;315: if ( Q_stricmp (cmd, "ui_test") == 0 ) { +ADDRLP4 0 +INDIRP4 +ARGP4 +ADDRGP4 $258 +ARGP4 +ADDRLP4 8 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 8 +INDIRI4 +CNSTI4 0 +NEI4 $256 +line 316 +;316: UI_ShowPostGame(qtrue); +CNSTI4 1 +ARGI4 +ADDRGP4 UI_ShowPostGame +CALLV +pop +line 317 +;317: } +LABELV $256 +line 319 +;318: +;319: if ( Q_stricmp (cmd, "ui_report") == 0 ) { +ADDRLP4 0 +INDIRP4 +ARGP4 +ADDRGP4 $261 +ARGP4 +ADDRLP4 12 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 12 +INDIRI4 +CNSTI4 0 +NEI4 $259 +line 320 +;320: UI_Report(); +ADDRGP4 UI_Report +CALLV +pop +line 321 +;321: return qtrue; +CNSTI4 1 +RETI4 +ADDRGP4 $252 +JUMPV +LABELV $259 +line 324 +;322: } +;323: +;324: if ( Q_stricmp (cmd, "ui_load") == 0 ) { +ADDRLP4 0 +INDIRP4 +ARGP4 +ADDRGP4 $264 +ARGP4 +ADDRLP4 16 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 16 +INDIRI4 +CNSTI4 0 +NEI4 $262 +line 325 +;325: UI_Load(); +ADDRGP4 UI_Load +CALLV +pop +line 326 +;326: return qtrue; +CNSTI4 1 +RETI4 +ADDRGP4 $252 +JUMPV +LABELV $262 +line 329 +;327: } +;328: +;329: if ( Q_stricmp (cmd, "remapShader") == 0 ) { +ADDRLP4 0 +INDIRP4 +ARGP4 +ADDRGP4 $267 +ARGP4 +ADDRLP4 20 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 20 +INDIRI4 +CNSTI4 0 +NEI4 $265 +line 330 +;330: if (trap_Argc() == 4) { +ADDRLP4 24 +ADDRGP4 trap_Argc +CALLI4 +ASGNI4 +ADDRLP4 24 +INDIRI4 +CNSTI4 4 +NEI4 $268 +line 333 +;331: char shader1[MAX_QPATH]; +;332: char shader2[MAX_QPATH]; +;333: Q_strncpyz(shader1, UI_Argv(1), sizeof(shader1)); +CNSTI4 1 +ARGI4 +ADDRLP4 156 +ADDRGP4 UI_Argv +CALLP4 +ASGNP4 +ADDRLP4 28 +ARGP4 +ADDRLP4 156 +INDIRP4 +ARGP4 +CNSTI4 64 +ARGI4 +ADDRGP4 Q_strncpyz +CALLV +pop +line 334 +;334: Q_strncpyz(shader2, UI_Argv(2), sizeof(shader2)); +CNSTI4 2 +ARGI4 +ADDRLP4 160 +ADDRGP4 UI_Argv +CALLP4 +ASGNP4 +ADDRLP4 92 +ARGP4 +ADDRLP4 160 +INDIRP4 +ARGP4 +CNSTI4 64 +ARGI4 +ADDRGP4 Q_strncpyz +CALLV +pop +line 335 +;335: trap_R_RemapShader(shader1, shader2, UI_Argv(3)); +CNSTI4 3 +ARGI4 +ADDRLP4 164 +ADDRGP4 UI_Argv +CALLP4 +ASGNP4 +ADDRLP4 28 +ARGP4 +ADDRLP4 92 +ARGP4 +ADDRLP4 164 +INDIRP4 +ARGP4 +ADDRGP4 trap_R_RemapShader +CALLV +pop +line 336 +;336: return qtrue; +CNSTI4 1 +RETI4 +ADDRGP4 $252 +JUMPV +LABELV $268 +line 338 +;337: } +;338: } +LABELV $265 +line 340 +;339: +;340: if ( Q_stricmp (cmd, "postgame") == 0 ) { +ADDRLP4 0 +INDIRP4 +ARGP4 +ADDRGP4 $272 +ARGP4 +ADDRLP4 24 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 24 +INDIRI4 +CNSTI4 0 +NEI4 $270 +line 341 +;341: UI_CalcPostGameStats(); +ADDRGP4 UI_CalcPostGameStats +CALLV +pop +line 342 +;342: return qtrue; +CNSTI4 1 +RETI4 +ADDRGP4 $252 +JUMPV +LABELV $270 +line 345 +;343: } +;344: +;345: if ( Q_stricmp (cmd, "ui_cache") == 0 ) { +ADDRLP4 0 +INDIRP4 +ARGP4 +ADDRGP4 $275 +ARGP4 +ADDRLP4 28 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 28 +INDIRI4 +CNSTI4 0 +NEI4 $273 +line 346 +;346: UI_Cache_f(); +ADDRGP4 UI_Cache_f +CALLV +pop +line 347 +;347: return qtrue; +CNSTI4 1 +RETI4 +ADDRGP4 $252 +JUMPV +LABELV $273 +line 350 +;348: } +;349: +;350: if ( Q_stricmp (cmd, "ui_teamOrders") == 0 ) { +ADDRLP4 0 +INDIRP4 +ARGP4 +ADDRGP4 $278 +ARGP4 +ADDRLP4 32 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 32 +INDIRI4 +CNSTI4 0 +NEI4 $276 +line 352 +;351: //UI_TeamOrdersMenu_f(); +;352: return qtrue; +CNSTI4 1 +RETI4 +ADDRGP4 $252 +JUMPV +LABELV $276 +line 356 +;353: } +;354: +;355: +;356: if ( Q_stricmp (cmd, "ui_cdkey") == 0 ) { +ADDRLP4 0 +INDIRP4 +ARGP4 +ADDRGP4 $281 +ARGP4 +ADDRLP4 36 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 36 +INDIRI4 +CNSTI4 0 +NEI4 $279 +line 358 +;357: //UI_CDKeyMenu_f(); +;358: return qtrue; +CNSTI4 1 +RETI4 +ADDRGP4 $252 +JUMPV +LABELV $279 +line 361 +;359: } +;360: +;361: return qfalse; +CNSTI4 0 +RETI4 +LABELV $252 +endproc UI_ConsoleCommand 168 12 +export UI_Shutdown +proc UI_Shutdown 0 0 +line 369 +;362:} +;363: +;364:/* +;365:================= +;366:UI_Shutdown +;367:================= +;368:*/ +;369:void UI_Shutdown( void ) { +line 370 +;370:} +LABELV $282 +endproc UI_Shutdown 0 0 +export UI_AdjustFrom640 +proc UI_AdjustFrom640 16 0 +line 379 +;371: +;372:/* +;373:================ +;374:UI_AdjustFrom640 +;375: +;376:Adjusted for resolution and screen aspect ratio +;377:================ +;378:*/ +;379:void UI_AdjustFrom640( float *x, float *y, float *w, float *h ) { +line 388 +;380: // expect valid pointers +;381:#if 0 +;382: *x = *x * uiInfo.uiDC.scale + uiInfo.uiDC.bias; +;383: *y *= uiInfo.uiDC.scale; +;384: *w *= uiInfo.uiDC.scale; +;385: *h *= uiInfo.uiDC.scale; +;386:#endif +;387: +;388: *x *= uiInfo.uiDC.xscale; +ADDRLP4 0 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 0 +INDIRP4 +ADDRLP4 0 +INDIRP4 +INDIRF4 +ADDRGP4 uiInfo+200 +INDIRF4 +MULF4 +ASGNF4 +line 389 +;389: *y *= uiInfo.uiDC.yscale; +ADDRLP4 4 +ADDRFP4 4 +INDIRP4 +ASGNP4 +ADDRLP4 4 +INDIRP4 +ADDRLP4 4 +INDIRP4 +INDIRF4 +ADDRGP4 uiInfo+196 +INDIRF4 +MULF4 +ASGNF4 +line 390 +;390: *w *= uiInfo.uiDC.xscale; +ADDRLP4 8 +ADDRFP4 8 +INDIRP4 +ASGNP4 +ADDRLP4 8 +INDIRP4 +ADDRLP4 8 +INDIRP4 +INDIRF4 +ADDRGP4 uiInfo+200 +INDIRF4 +MULF4 +ASGNF4 +line 391 +;391: *h *= uiInfo.uiDC.yscale; +ADDRLP4 12 +ADDRFP4 12 +INDIRP4 +ASGNP4 +ADDRLP4 12 +INDIRP4 +ADDRLP4 12 +INDIRP4 +INDIRF4 +ADDRGP4 uiInfo+196 +INDIRF4 +MULF4 +ASGNF4 +line 393 +;392: +;393:} +LABELV $283 +endproc UI_AdjustFrom640 16 0 +export UI_DrawNamedPic +proc UI_DrawNamedPic 16 36 +line 395 +;394: +;395:void UI_DrawNamedPic( float x, float y, float width, float height, const char *picname ) { +line 398 +;396: qhandle_t hShader; +;397: +;398: hShader = trap_R_RegisterShaderNoMip( picname ); +ADDRFP4 16 +INDIRP4 +ARGP4 +ADDRLP4 4 +ADDRGP4 trap_R_RegisterShaderNoMip +CALLI4 +ASGNI4 +ADDRLP4 0 +ADDRLP4 4 +INDIRI4 +ASGNI4 +line 399 +;399: UI_AdjustFrom640( &x, &y, &width, &height ); +ADDRFP4 0 +ARGP4 +ADDRFP4 4 +ARGP4 +ADDRFP4 8 +ARGP4 +ADDRFP4 12 +ARGP4 +ADDRGP4 UI_AdjustFrom640 +CALLV +pop +line 400 +;400: trap_R_DrawStretchPic( x, y, width, height, 0, 0, 1, 1, hShader ); +ADDRFP4 0 +INDIRF4 +ARGF4 +ADDRFP4 4 +INDIRF4 +ARGF4 +ADDRFP4 8 +INDIRF4 +ARGF4 +ADDRFP4 12 +INDIRF4 +ARGF4 +ADDRLP4 8 +CNSTF4 0 +ASGNF4 +ADDRLP4 8 +INDIRF4 +ARGF4 +ADDRLP4 8 +INDIRF4 +ARGF4 +ADDRLP4 12 +CNSTF4 1065353216 +ASGNF4 +ADDRLP4 12 +INDIRF4 +ARGF4 +ADDRLP4 12 +INDIRF4 +ARGF4 +ADDRLP4 0 +INDIRI4 +ARGI4 +ADDRGP4 trap_R_DrawStretchPic +CALLV +pop +line 401 +;401:} +LABELV $288 +endproc UI_DrawNamedPic 16 36 +export UI_DrawHandlePic +proc UI_DrawHandlePic 16 36 +line 403 +;402: +;403:void UI_DrawHandlePic( float x, float y, float w, float h, qhandle_t hShader ) { +line 409 +;404: float s0; +;405: float s1; +;406: float t0; +;407: float t1; +;408: +;409: if( w < 0 ) { // flip about vertical +ADDRFP4 8 +INDIRF4 +CNSTF4 0 +GEF4 $290 +line 410 +;410: w = -w; +ADDRFP4 8 +ADDRFP4 8 +INDIRF4 +NEGF4 +ASGNF4 +line 411 +;411: s0 = 1; +ADDRLP4 0 +CNSTF4 1065353216 +ASGNF4 +line 412 +;412: s1 = 0; +ADDRLP4 4 +CNSTF4 0 +ASGNF4 +line 413 +;413: } +ADDRGP4 $291 +JUMPV +LABELV $290 +line 414 +;414: else { +line 415 +;415: s0 = 0; +ADDRLP4 0 +CNSTF4 0 +ASGNF4 +line 416 +;416: s1 = 1; +ADDRLP4 4 +CNSTF4 1065353216 +ASGNF4 +line 417 +;417: } +LABELV $291 +line 419 +;418: +;419: if( h < 0 ) { // flip about horizontal +ADDRFP4 12 +INDIRF4 +CNSTF4 0 +GEF4 $292 +line 420 +;420: h = -h; +ADDRFP4 12 +ADDRFP4 12 +INDIRF4 +NEGF4 +ASGNF4 +line 421 +;421: t0 = 1; +ADDRLP4 8 +CNSTF4 1065353216 +ASGNF4 +line 422 +;422: t1 = 0; +ADDRLP4 12 +CNSTF4 0 +ASGNF4 +line 423 +;423: } +ADDRGP4 $293 +JUMPV +LABELV $292 +line 424 +;424: else { +line 425 +;425: t0 = 0; +ADDRLP4 8 +CNSTF4 0 +ASGNF4 +line 426 +;426: t1 = 1; +ADDRLP4 12 +CNSTF4 1065353216 +ASGNF4 +line 427 +;427: } +LABELV $293 +line 429 +;428: +;429: UI_AdjustFrom640( &x, &y, &w, &h ); +ADDRFP4 0 +ARGP4 +ADDRFP4 4 +ARGP4 +ADDRFP4 8 +ARGP4 +ADDRFP4 12 +ARGP4 +ADDRGP4 UI_AdjustFrom640 +CALLV +pop +line 430 +;430: trap_R_DrawStretchPic( x, y, w, h, s0, t0, s1, t1, hShader ); +ADDRFP4 0 +INDIRF4 +ARGF4 +ADDRFP4 4 +INDIRF4 +ARGF4 +ADDRFP4 8 +INDIRF4 +ARGF4 +ADDRFP4 12 +INDIRF4 +ARGF4 +ADDRLP4 0 +INDIRF4 +ARGF4 +ADDRLP4 8 +INDIRF4 +ARGF4 +ADDRLP4 4 +INDIRF4 +ARGF4 +ADDRLP4 12 +INDIRF4 +ARGF4 +ADDRFP4 16 +INDIRI4 +ARGI4 +ADDRGP4 trap_R_DrawStretchPic +CALLV +pop +line 431 +;431:} +LABELV $289 +endproc UI_DrawHandlePic 16 36 +export UI_FillRect +proc UI_FillRect 4 36 +line 440 +;432: +;433:/* +;434:================ +;435:UI_FillRect +;436: +;437:Coordinates are 640*480 virtual values +;438:================= +;439:*/ +;440:void UI_FillRect( float x, float y, float width, float height, const float *color ) { +line 441 +;441: trap_R_SetColor( color ); +ADDRFP4 16 +INDIRP4 +ARGP4 +ADDRGP4 trap_R_SetColor +CALLV +pop +line 443 +;442: +;443: UI_AdjustFrom640( &x, &y, &width, &height ); +ADDRFP4 0 +ARGP4 +ADDRFP4 4 +ARGP4 +ADDRFP4 8 +ARGP4 +ADDRFP4 12 +ARGP4 +ADDRGP4 UI_AdjustFrom640 +CALLV +pop +line 444 +;444: trap_R_DrawStretchPic( x, y, width, height, 0, 0, 0, 0, uiInfo.uiDC.whiteShader ); +ADDRFP4 0 +INDIRF4 +ARGF4 +ADDRFP4 4 +INDIRF4 +ARGF4 +ADDRFP4 8 +INDIRF4 +ARGF4 +ADDRFP4 12 +INDIRF4 +ARGF4 +ADDRLP4 0 +CNSTF4 0 +ASGNF4 +ADDRLP4 0 +INDIRF4 +ARGF4 +ADDRLP4 0 +INDIRF4 +ARGF4 +ADDRLP4 0 +INDIRF4 +ARGF4 +ADDRLP4 0 +INDIRF4 +ARGF4 +ADDRGP4 uiInfo+73400 +INDIRI4 +ARGI4 +ADDRGP4 trap_R_DrawStretchPic +CALLV +pop +line 446 +;445: +;446: trap_R_SetColor( NULL ); +CNSTP4 0 +ARGP4 +ADDRGP4 trap_R_SetColor +CALLV +pop +line 447 +;447:} +LABELV $294 +endproc UI_FillRect 4 36 +export UI_DrawSides +proc UI_DrawSides 12 36 +line 449 +;448: +;449:void UI_DrawSides(float x, float y, float w, float h) { +line 450 +;450: UI_AdjustFrom640( &x, &y, &w, &h ); +ADDRFP4 0 +ARGP4 +ADDRFP4 4 +ARGP4 +ADDRFP4 8 +ARGP4 +ADDRFP4 12 +ARGP4 +ADDRGP4 UI_AdjustFrom640 +CALLV +pop +line 451 +;451: trap_R_DrawStretchPic( x, y, 1, h, 0, 0, 0, 0, uiInfo.uiDC.whiteShader ); +ADDRFP4 0 +INDIRF4 +ARGF4 +ADDRFP4 4 +INDIRF4 +ARGF4 +CNSTF4 1065353216 +ARGF4 +ADDRFP4 12 +INDIRF4 +ARGF4 +ADDRLP4 0 +CNSTF4 0 +ASGNF4 +ADDRLP4 0 +INDIRF4 +ARGF4 +ADDRLP4 0 +INDIRF4 +ARGF4 +ADDRLP4 0 +INDIRF4 +ARGF4 +ADDRLP4 0 +INDIRF4 +ARGF4 +ADDRGP4 uiInfo+73400 +INDIRI4 +ARGI4 +ADDRGP4 trap_R_DrawStretchPic +CALLV +pop +line 452 +;452: trap_R_DrawStretchPic( x + w - 1, y, 1, h, 0, 0, 0, 0, uiInfo.uiDC.whiteShader ); +ADDRLP4 4 +CNSTF4 1065353216 +ASGNF4 +ADDRFP4 0 +INDIRF4 +ADDRFP4 8 +INDIRF4 +ADDF4 +ADDRLP4 4 +INDIRF4 +SUBF4 +ARGF4 +ADDRFP4 4 +INDIRF4 +ARGF4 +ADDRLP4 4 +INDIRF4 +ARGF4 +ADDRFP4 12 +INDIRF4 +ARGF4 +ADDRLP4 8 +CNSTF4 0 +ASGNF4 +ADDRLP4 8 +INDIRF4 +ARGF4 +ADDRLP4 8 +INDIRF4 +ARGF4 +ADDRLP4 8 +INDIRF4 +ARGF4 +ADDRLP4 8 +INDIRF4 +ARGF4 +ADDRGP4 uiInfo+73400 +INDIRI4 +ARGI4 +ADDRGP4 trap_R_DrawStretchPic +CALLV +pop +line 453 +;453:} +LABELV $296 +endproc UI_DrawSides 12 36 +export UI_DrawTopBottom +proc UI_DrawTopBottom 12 36 +line 455 +;454: +;455:void UI_DrawTopBottom(float x, float y, float w, float h) { +line 456 +;456: UI_AdjustFrom640( &x, &y, &w, &h ); +ADDRFP4 0 +ARGP4 +ADDRFP4 4 +ARGP4 +ADDRFP4 8 +ARGP4 +ADDRFP4 12 +ARGP4 +ADDRGP4 UI_AdjustFrom640 +CALLV +pop +line 457 +;457: trap_R_DrawStretchPic( x, y, w, 1, 0, 0, 0, 0, uiInfo.uiDC.whiteShader ); +ADDRFP4 0 +INDIRF4 +ARGF4 +ADDRFP4 4 +INDIRF4 +ARGF4 +ADDRFP4 8 +INDIRF4 +ARGF4 +CNSTF4 1065353216 +ARGF4 +ADDRLP4 0 +CNSTF4 0 +ASGNF4 +ADDRLP4 0 +INDIRF4 +ARGF4 +ADDRLP4 0 +INDIRF4 +ARGF4 +ADDRLP4 0 +INDIRF4 +ARGF4 +ADDRLP4 0 +INDIRF4 +ARGF4 +ADDRGP4 uiInfo+73400 +INDIRI4 +ARGI4 +ADDRGP4 trap_R_DrawStretchPic +CALLV +pop +line 458 +;458: trap_R_DrawStretchPic( x, y + h - 1, w, 1, 0, 0, 0, 0, uiInfo.uiDC.whiteShader ); +ADDRFP4 0 +INDIRF4 +ARGF4 +ADDRLP4 4 +CNSTF4 1065353216 +ASGNF4 +ADDRFP4 4 +INDIRF4 +ADDRFP4 12 +INDIRF4 +ADDF4 +ADDRLP4 4 +INDIRF4 +SUBF4 +ARGF4 +ADDRFP4 8 +INDIRF4 +ARGF4 +ADDRLP4 4 +INDIRF4 +ARGF4 +ADDRLP4 8 +CNSTF4 0 +ASGNF4 +ADDRLP4 8 +INDIRF4 +ARGF4 +ADDRLP4 8 +INDIRF4 +ARGF4 +ADDRLP4 8 +INDIRF4 +ARGF4 +ADDRLP4 8 +INDIRF4 +ARGF4 +ADDRGP4 uiInfo+73400 +INDIRI4 +ARGI4 +ADDRGP4 trap_R_DrawStretchPic +CALLV +pop +line 459 +;459:} +LABELV $299 +endproc UI_DrawTopBottom 12 36 +export UI_DrawRect +proc UI_DrawRect 0 16 +line 467 +;460:/* +;461:================ +;462:UI_DrawRect +;463: +;464:Coordinates are 640*480 virtual values +;465:================= +;466:*/ +;467:void UI_DrawRect( float x, float y, float width, float height, const float *color ) { +line 468 +;468: trap_R_SetColor( color ); +ADDRFP4 16 +INDIRP4 +ARGP4 +ADDRGP4 trap_R_SetColor +CALLV +pop +line 470 +;469: +;470: UI_DrawTopBottom(x, y, width, height); +ADDRFP4 0 +INDIRF4 +ARGF4 +ADDRFP4 4 +INDIRF4 +ARGF4 +ADDRFP4 8 +INDIRF4 +ARGF4 +ADDRFP4 12 +INDIRF4 +ARGF4 +ADDRGP4 UI_DrawTopBottom +CALLV +pop +line 471 +;471: UI_DrawSides(x, y, width, height); +ADDRFP4 0 +INDIRF4 +ARGF4 +ADDRFP4 4 +INDIRF4 +ARGF4 +ADDRFP4 8 +INDIRF4 +ARGF4 +ADDRFP4 12 +INDIRF4 +ARGF4 +ADDRGP4 UI_DrawSides +CALLV +pop +line 473 +;472: +;473: trap_R_SetColor( NULL ); +CNSTP4 0 +ARGP4 +ADDRGP4 trap_R_SetColor +CALLV +pop +line 474 +;474:} +LABELV $302 +endproc UI_DrawRect 0 16 +export UI_SetColor +proc UI_SetColor 0 4 +line 476 +;475: +;476:void UI_SetColor( const float *rgba ) { +line 477 +;477: trap_R_SetColor( rgba ); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRGP4 trap_R_SetColor +CALLV +pop +line 478 +;478:} +LABELV $303 +endproc UI_SetColor 0 4 +export UI_UpdateScreen +proc UI_UpdateScreen 0 0 +line 480 +;479: +;480:void UI_UpdateScreen( void ) { +line 481 +;481: trap_UpdateScreen(); +ADDRGP4 trap_UpdateScreen +CALLV +pop +line 482 +;482:} +LABELV $304 +endproc UI_UpdateScreen 0 0 +export UI_DrawTextBox +proc UI_DrawTextBox 24 20 +line 486 +;483: +;484: +;485:void UI_DrawTextBox (int x, int y, int width, int lines) +;486:{ +line 487 +;487: UI_FillRect( x + BIGCHAR_WIDTH/2, y + BIGCHAR_HEIGHT/2, ( width + 1 ) * BIGCHAR_WIDTH, ( lines + 1 ) * BIGCHAR_HEIGHT, colorBlack ); +ADDRLP4 0 +CNSTI4 8 +ASGNI4 +ADDRFP4 0 +INDIRI4 +ADDRLP4 0 +INDIRI4 +ADDI4 +CVIF4 4 +ARGF4 +ADDRFP4 4 +INDIRI4 +ADDRLP4 0 +INDIRI4 +ADDI4 +CVIF4 4 +ARGF4 +ADDRLP4 4 +CNSTI4 4 +ASGNI4 +ADDRLP4 8 +CNSTI4 16 +ASGNI4 +ADDRFP4 8 +INDIRI4 +ADDRLP4 4 +INDIRI4 +LSHI4 +ADDRLP4 8 +INDIRI4 +ADDI4 +CVIF4 4 +ARGF4 +ADDRFP4 12 +INDIRI4 +ADDRLP4 4 +INDIRI4 +LSHI4 +ADDRLP4 8 +INDIRI4 +ADDI4 +CVIF4 4 +ARGF4 +ADDRGP4 colorBlack +ARGP4 +ADDRGP4 UI_FillRect +CALLV +pop +line 488 +;488: UI_DrawRect( x + BIGCHAR_WIDTH/2, y + BIGCHAR_HEIGHT/2, ( width + 1 ) * BIGCHAR_WIDTH, ( lines + 1 ) * BIGCHAR_HEIGHT, colorWhite ); +ADDRLP4 12 +CNSTI4 8 +ASGNI4 +ADDRFP4 0 +INDIRI4 +ADDRLP4 12 +INDIRI4 +ADDI4 +CVIF4 4 +ARGF4 +ADDRFP4 4 +INDIRI4 +ADDRLP4 12 +INDIRI4 +ADDI4 +CVIF4 4 +ARGF4 +ADDRLP4 16 +CNSTI4 4 +ASGNI4 +ADDRLP4 20 +CNSTI4 16 +ASGNI4 +ADDRFP4 8 +INDIRI4 +ADDRLP4 16 +INDIRI4 +LSHI4 +ADDRLP4 20 +INDIRI4 +ADDI4 +CVIF4 4 +ARGF4 +ADDRFP4 12 +INDIRI4 +ADDRLP4 16 +INDIRI4 +LSHI4 +ADDRLP4 20 +INDIRI4 +ADDI4 +CVIF4 4 +ARGF4 +ADDRGP4 colorWhite +ARGP4 +ADDRGP4 UI_DrawRect +CALLV +pop +line 489 +;489:} +LABELV $305 +endproc UI_DrawTextBox 24 20 +export UI_CursorInRect +proc UI_CursorInRect 8 0 +line 492 +;490: +;491:qboolean UI_CursorInRect (int x, int y, int width, int height) +;492:{ +line 493 +;493: if (uiInfo.uiDC.cursorx < x || +ADDRLP4 0 +ADDRFP4 0 +INDIRI4 +ASGNI4 +ADDRGP4 uiInfo+216 +INDIRI4 +ADDRLP4 0 +INDIRI4 +LTI4 $315 +ADDRLP4 4 +ADDRFP4 4 +INDIRI4 +ASGNI4 +ADDRGP4 uiInfo+220 +INDIRI4 +ADDRLP4 4 +INDIRI4 +LTI4 $315 +ADDRGP4 uiInfo+216 +INDIRI4 +ADDRLP4 0 +INDIRI4 +ADDRFP4 8 +INDIRI4 +ADDI4 +GTI4 $315 +ADDRGP4 uiInfo+220 +INDIRI4 +ADDRLP4 4 +INDIRI4 +ADDRFP4 12 +INDIRI4 +ADDI4 +LEI4 $307 +LABELV $315 +line 497 +;494: uiInfo.uiDC.cursory < y || +;495: uiInfo.uiDC.cursorx > x+width || +;496: uiInfo.uiDC.cursory > y+height) +;497: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $306 +JUMPV +LABELV $307 +line 499 +;498: +;499: return qtrue; +CNSTI4 1 +RETI4 +LABELV $306 +endproc UI_CursorInRect 8 0 +import UI_RankStatusMenu +import RankStatus_Cache +import UI_SignupMenu +import Signup_Cache +import UI_LoginMenu +import Login_Cache +import UI_InitGameinfo +import UI_SPUnlockMedals_f +import UI_SPUnlock_f +import UI_GetAwardLevel +import UI_LogAwardData +import UI_NewGame +import UI_GetCurrentGame +import UI_CanShowTierVideo +import UI_ShowTierVideo +import UI_TierCompleted +import UI_SetBestScore +import UI_GetBestScore +import UI_GetBotNameByNumber +import UI_LoadBots +import UI_GetNumBots +import UI_GetBotInfoByName +import UI_GetBotInfoByNumber +import UI_GetNumSPTiers +import UI_GetNumSPArenas +import UI_GetNumArenas +import UI_GetSpecialArenaInfo +import UI_GetArenaInfoByMap +import UI_GetArenaInfoByNumber +import UI_NetworkOptionsMenu +import UI_NetworkOptionsMenu_Cache +import UI_SoundOptionsMenu +import UI_SoundOptionsMenu_Cache +import UI_DisplayOptionsMenu +import UI_DisplayOptionsMenu_Cache +import UI_SaveConfigMenu +import UI_SaveConfigMenu_Cache +import UI_LoadConfigMenu +import UI_LoadConfig_Cache +import UI_TeamOrdersMenu_Cache +import UI_TeamOrdersMenu_f +import UI_TeamOrdersMenu +import UI_RemoveBotsMenu +import UI_RemoveBots_Cache +import UI_AddBotsMenu +import UI_AddBots_Cache +import trap_VerifyCDKey +import trap_R_RemapShader +import trap_RealTime +import trap_CIN_SetExtents +import trap_CIN_DrawCinematic +import trap_CIN_RunCinematic +import trap_CIN_StopCinematic +import trap_CIN_PlayCinematic +import trap_S_StartBackgroundTrack +import trap_S_StopBackgroundTrack +import trap_R_RegisterFont +import trap_SetCDKey +import trap_GetCDKey +import trap_MemoryRemaining +import trap_LAN_CompareServers +import trap_LAN_ServerStatus +import trap_LAN_ResetPings +import trap_LAN_RemoveServer +import trap_LAN_AddServer +import trap_LAN_UpdateVisiblePings +import trap_LAN_ServerIsVisible +import trap_LAN_MarkServerVisible +import trap_LAN_SaveCachedServers +import trap_LAN_LoadCachedServers +import trap_LAN_GetPingInfo +import trap_LAN_GetPing +import trap_LAN_ClearPing +import trap_LAN_GetPingQueueCount +import trap_LAN_GetServerPing +import trap_LAN_GetServerInfo +import trap_LAN_GetServerAddressString +import trap_LAN_GetServerCount +import trap_GetConfigString +import trap_GetGlconfig +import trap_GetClientState +import trap_GetClipboardData +import trap_Key_SetCatcher +import trap_Key_GetCatcher +import trap_Key_ClearStates +import trap_Key_SetOverstrikeMode +import trap_Key_GetOverstrikeMode +import trap_Key_IsDown +import trap_Key_SetBinding +import trap_Key_GetBindingBuf +import trap_Key_KeynumToStringBuf +import trap_S_RegisterSound +import trap_S_StartLocalSound +import trap_CM_LerpTag +import trap_UpdateScreen +import trap_R_ModelBounds +import trap_R_DrawStretchPic +import trap_R_SetColor +import trap_R_RenderScene +import trap_R_AddLightToScene +import trap_R_AddPolyToScene +import trap_R_AddRefEntityToScene +import trap_R_ClearScene +import trap_R_RegisterShaderNoMip +import trap_R_RegisterSkin +import trap_R_RegisterModel +import trap_FS_GetFileList +import trap_FS_FCloseFile +import trap_FS_Write +import trap_FS_Read +import trap_FS_FOpenFile +import trap_Cmd_ExecuteText +import trap_Argv +import trap_Argc +import trap_Cvar_InfoStringBuffer +import trap_Cvar_Create +import trap_Cvar_Reset +import trap_Cvar_SetValue +import trap_Cvar_VariableStringBuffer +import trap_Cvar_VariableValue +import trap_Cvar_Set +import trap_Cvar_Update +import trap_Cvar_Register +import trap_Milliseconds +import trap_Error +import trap_Print +import UI_SPSkillMenu_Cache +import UI_SPSkillMenu +import UI_SPPostgameMenu_f +import UI_SPPostgameMenu_Cache +import UI_SPArena_Start +import UI_SPLevelMenu_ReInit +import UI_SPLevelMenu_f +import UI_SPLevelMenu +import UI_SPLevelMenu_Cache +import uis +bss +export m_entersound +align 4 +LABELV m_entersound +skip 4 +import UI_ForceMenuOff +import UI_PopMenu +import UI_PushMenu +import UI_SetActiveMenu +import UI_IsFullscreen +import UI_DrawChar +import UI_DrawString +import UI_ProportionalStringWidth +import UI_DrawProportionalString +import UI_ProportionalSizeScale +import UI_DrawBannerString +import UI_LerpColor +import UI_Refresh +import UI_MouseEvent +import UI_KeyEvent +import UI_Init +import uiInfo +import UI_RegisterClientModelname +import UI_PlayerInfo_SetInfo +import UI_PlayerInfo_SetModel +import UI_DrawPlayer +import DriverInfo_Cache +import GraphicsOptions_Cache +import UI_GraphicsOptionsMenu +import ServerInfo_Cache +import UI_ServerInfoMenu +import UI_BotSelectMenu_Cache +import UI_BotSelectMenu +import ServerOptions_Cache +import StartServer_Cache +import UI_StartServerMenu +import ArenaServers_Cache +import UI_ArenaServersMenu +import SpecifyServer_Cache +import UI_SpecifyServerMenu +import SpecifyLeague_Cache +import UI_SpecifyLeagueMenu +import Preferences_Cache +import UI_PreferencesMenu +import PlayerSettings_Cache +import UI_PlayerSettingsMenu +import PlayerModel_Cache +import UI_PlayerModelMenu +import UI_CDKeyMenu_f +import UI_CDKeyMenu_Cache +import UI_CDKeyMenu +import UI_ModsMenu_Cache +import UI_ModsMenu +import UI_CinematicsMenu_Cache +import UI_CinematicsMenu_f +import UI_CinematicsMenu +import Demos_Cache +import UI_DemosMenu +import Controls_Cache +import UI_ControlsMenu +import UI_DrawConnectScreen +import TeamMain_Cache +import UI_TeamMainMenu +import UI_SetupMenu +import UI_SetupMenu_Cache +import UI_ConfirmMenu +import ConfirmMenu_Cache +import UI_InGameMenu +import InGame_Cache +import UI_CreditMenu +import UI_UpdateCvars +import UI_RegisterCvars +import UI_MainMenu +import MainMenu_Cache +import UI_LoadArenas +import UI_ShowPostGame +import UI_AdjustTimeByGame +import _UI_SetActiveMenu +import UI_LoadMenus +import UI_Load +import UI_Report +import MenuField_Key +import MenuField_Draw +import MenuField_Init +import MField_Draw +import MField_CharEvent +import MField_KeyDownEvent +import MField_Clear +import ui_medalSounds +import ui_medalPicNames +import ui_medalNames +import text_color_highlight +import text_color_normal +import text_color_disabled +import listbar_color +import list_color +import name_color +import color_dim +import color_red +import color_orange +import color_blue +import color_yellow +import color_white +import color_black +import menu_dim_color +import menu_black_color +import menu_red_color +import menu_highlight_color +import menu_dark_color +import menu_grayed_color +import menu_text_color +import weaponChangeSound +import menu_null_sound +import menu_buzz_sound +import menu_out_sound +import menu_move_sound +import menu_in_sound +import ScrollList_Key +import ScrollList_Draw +import Bitmap_Draw +import Bitmap_Init +import Menu_DefaultKey +import Menu_SetCursorToItem +import Menu_SetCursor +import Menu_ActivateItem +import Menu_ItemAtCursor +import Menu_Draw +import Menu_AdjustCursor +import Menu_AddItem +import Menu_Focus +import Menu_Cache +import ui_serverStatusTimeOut +import ui_bigFont +import ui_smallFont +import ui_scoreTime +import ui_scoreShutoutBonus +import ui_scoreSkillBonus +import ui_scoreTimeBonus +import ui_scoreBase +import ui_scoreTeam +import ui_scorePerfect +import ui_scoreScore +import ui_scoreGauntlets +import ui_scoreAssists +import ui_scoreDefends +import ui_scoreExcellents +import ui_scoreImpressives +import ui_scoreAccuracy +import ui_singlePlayerActive +import ui_lastServerRefresh_3 +import ui_lastServerRefresh_2 +import ui_lastServerRefresh_1 +import ui_lastServerRefresh_0 +import ui_selectedPlayerName +import ui_selectedPlayer +import ui_currentOpponent +import ui_mapIndex +import ui_currentNetMap +import ui_currentMap +import ui_currentTier +import ui_menuFiles +import ui_opponentName +import ui_dedicated +import ui_serverFilterType +import ui_netSource +import ui_joinGameType +import ui_actualNetGameType +import ui_netGameType +import ui_gameType +import ui_fragLimit +import ui_captureLimit +import ui_cdkeychecked +import ui_cdkey +import ui_server16 +import ui_server15 +import ui_server14 +import ui_server13 +import ui_server12 +import ui_server11 +import ui_server10 +import ui_server9 +import ui_server8 +import ui_server7 +import ui_server6 +import ui_server5 +import ui_server4 +import ui_server3 +import ui_server2 +import ui_server1 +import ui_marks +import ui_drawCrosshairNames +import ui_drawCrosshair +import ui_brassTime +import ui_browserShowEmpty +import ui_browserShowFull +import ui_browserSortKey +import ui_browserGameType +import ui_browserMaster +import ui_spSelection +import ui_spSkill +import ui_spVideos +import ui_spAwards +import ui_spScores5 +import ui_spScores4 +import ui_spScores3 +import ui_spScores2 +import ui_spScores1 +import ui_botsFile +import ui_arenasFile +import ui_ctf_friendly +import ui_ctf_timelimit +import ui_ctf_capturelimit +import ui_team_friendly +import ui_team_timelimit +import ui_team_fraglimit +import ui_tourney_timelimit +import ui_tourney_fraglimit +import ui_ffa_timelimit +import ui_ffa_fraglimit +import trap_PC_SourceFileAndLine +import trap_PC_ReadToken +import trap_PC_FreeSource +import trap_PC_LoadSource +import trap_PC_AddGlobalDefine +import Controls_SetDefaults +import Controls_SetConfig +import Controls_GetConfig +import UI_OutOfMemory +import UI_InitMemory +import UI_Alloc +import Display_CacheAll +import Menu_SetFeederSelection +import Menu_Paint +import Menus_CloseAll +import LerpColor +import Display_HandleKey +import Menus_CloseByName +import Menus_ShowByName +import Menus_FindByName +import Menus_OpenByName +import Display_KeyBindPending +import Display_CursorType +import Display_MouseMove +import Display_CaptureItem +import Display_GetContext +import Menus_Activate +import Menus_AnyFullScreenVisible +import Menu_Reset +import Menus_ActivateByName +import Menu_PaintAll +import Menu_New +import Menu_Count +import PC_Script_Parse +import PC_String_Parse +import PC_Rect_Parse +import PC_Int_Parse +import PC_Color_Parse +import PC_Float_Parse +import Script_Parse +import String_Parse +import Rect_Parse +import Int_Parse +import Color_Parse +import Float_Parse +import Menu_ScrollFeeder +import Menu_HandleMouseMove +import Menu_HandleKey +import Menu_GetFocused +import Menu_PostParse +import Item_Init +import Menu_Init +import Display_ExpandMacros +import Init_Display +import String_Report +import String_Init +import String_Alloc +import BG_PlayerTouchesItem +import BG_PlayerStateToEntityStateExtraPolate +import BG_PlayerStateToEntityState +import BG_TouchJumpPad +import BG_AddPredictableEventToPlayerstate +import BG_EvaluateTrajectoryDelta +import BG_EvaluateTrajectory +import BG_CanItemBeGrabbed +import BG_FindItemForHoldable +import BG_FindItemForPowerup +import BG_FindItemForWeapon +import BG_FindItem +import bg_numItems +import bg_itemlist +import ClipAmountForAmmo +import ClipAmountForReload +import Pmove +import PM_UpdateViewAngles +import Info_NextPair +import Info_Validate +import Info_SetValueForKey_Big +import Info_SetValueForKey +import Info_RemoveKey_big +import Info_RemoveKey +import Info_ValueForKey +import va +import Q_CleanStr +import Q_PrintStrlen +import Q_strcat +import Q_strncpyz +import Q_strrchr +import Q_strupr +import Q_strlwr +import Q_stricmpn +import Q_strncmp +import Q_stricmp +import Q_isalpha +import Q_isupper +import Q_islower +import Q_isprint +import Com_sprintf +import Parse3DMatrix +import Parse2DMatrix +import Parse1DMatrix +import SkipRestOfLine +import SkipBracedSection +import COM_MatchToken +import COM_ParseWarning +import COM_ParseError +import COM_Compress +import COM_ParseExt +import COM_Parse +import COM_GetCurrentParseLine +import COM_BeginParseSession +import COM_DefaultExtension +import COM_StripExtension +import COM_SkipPath +import Com_Clamp +import PerpendicularVector +import AngleVectors +import MatrixMultiply +import MakeNormalVectors +import RotateAroundDirection +import RotatePointAroundVector +import ProjectPointOnPlane +import PlaneFromPoints +import AngleDelta +import AngleNormalize180 +import AngleNormalize360 +import AnglesSubtract +import AngleSubtract +import LerpAngle +import AngleMod +import BoxOnPlaneSide +import SetPlaneSignbits +import AxisCopy +import AxisClear +import AnglesToAxis +import vectoangles +import Q_crandom +import Q_random +import Q_rand +import Q_acos +import Q_log2 +import VectorRotate +import Vector4Scale +import VectorNormalize2 +import VectorNormalize +import CrossProduct +import VectorInverse +import VectorNormalizeFast +import DistanceSquared +import Distance +import VectorLengthSquared +import VectorLength +import VectorCompare +import AddPointToBounds +import ClearBounds +import RadiusFromBounds +import NormalizeColor +import ColorBytes4 +import ColorBytes3 +import _VectorMA +import _VectorScale +import _VectorCopy +import _VectorAdd +import _VectorSubtract +import _DotProduct +import ByteToDir +import DirToByte +import ClampShort +import ClampChar +import Q_rsqrt +import Q_fabs +import axisDefault +import vec3_origin +import g_color_table +import colorDkGrey +import colorMdGrey +import colorLtGrey +import colorWhite +import colorCyan +import colorMagenta +import colorYellow +import colorBlue +import colorGreen +import colorRed +import colorBlack +import bytedirs +import Com_Memcpy +import Com_Memset +import Hunk_Alloc +import FloatSwap +import LongSwap +import ShortSwap +import acos +import fabs +import abs +import tan +import atan2 +import cos +import sin +import sqrt +import floor +import ceil +import memcpy +import memset +import memmove +import sscanf +import vsprintf +import _atoi +import atoi +import _atof +import atof +import toupper +import tolower +import strncpy +import strstr +import strchr +import strcmp +import strcpy +import strcat +import strlen +import rand +import srand +import qsort +lit +align 1 +LABELV $281 +byte 1 117 +byte 1 105 +byte 1 95 +byte 1 99 +byte 1 100 +byte 1 107 +byte 1 101 +byte 1 121 +byte 1 0 +align 1 +LABELV $278 +byte 1 117 +byte 1 105 +byte 1 95 +byte 1 116 +byte 1 101 +byte 1 97 +byte 1 109 +byte 1 79 +byte 1 114 +byte 1 100 +byte 1 101 +byte 1 114 +byte 1 115 +byte 1 0 +align 1 +LABELV $275 +byte 1 117 +byte 1 105 +byte 1 95 +byte 1 99 +byte 1 97 +byte 1 99 +byte 1 104 +byte 1 101 +byte 1 0 +align 1 +LABELV $272 +byte 1 112 +byte 1 111 +byte 1 115 +byte 1 116 +byte 1 103 +byte 1 97 +byte 1 109 +byte 1 101 +byte 1 0 +align 1 +LABELV $267 +byte 1 114 +byte 1 101 +byte 1 109 +byte 1 97 +byte 1 112 +byte 1 83 +byte 1 104 +byte 1 97 +byte 1 100 +byte 1 101 +byte 1 114 +byte 1 0 +align 1 +LABELV $264 +byte 1 117 +byte 1 105 +byte 1 95 +byte 1 108 +byte 1 111 +byte 1 97 +byte 1 100 +byte 1 0 +align 1 +LABELV $261 +byte 1 117 +byte 1 105 +byte 1 95 +byte 1 114 +byte 1 101 +byte 1 112 +byte 1 111 +byte 1 114 +byte 1 116 +byte 1 0 +align 1 +LABELV $258 +byte 1 117 +byte 1 105 +byte 1 95 +byte 1 116 +byte 1 101 +byte 1 115 +byte 1 116 +byte 1 0 +align 1 +LABELV $251 +byte 1 117 +byte 1 105 +byte 1 95 +byte 1 102 +byte 1 114 +byte 1 105 +byte 1 101 +byte 1 110 +byte 1 100 +byte 1 108 +byte 1 121 +byte 1 70 +byte 1 105 +byte 1 114 +byte 1 101 +byte 1 0 +align 1 +LABELV $250 +byte 1 103 +byte 1 95 +byte 1 102 +byte 1 114 +byte 1 105 +byte 1 101 +byte 1 110 +byte 1 100 +byte 1 108 +byte 1 121 +byte 1 70 +byte 1 105 +byte 1 114 +byte 1 101 +byte 1 0 +align 1 +LABELV $249 +byte 1 117 +byte 1 105 +byte 1 95 +byte 1 112 +byte 1 117 +byte 1 114 +byte 1 101 +byte 1 0 +align 1 +LABELV $248 +byte 1 115 +byte 1 118 +byte 1 95 +byte 1 112 +byte 1 117 +byte 1 114 +byte 1 101 +byte 1 0 +align 1 +LABELV $247 +byte 1 117 +byte 1 105 +byte 1 95 +byte 1 87 +byte 1 97 +byte 1 114 +byte 1 109 +byte 1 117 +byte 1 112 +byte 1 0 +align 1 +LABELV $246 +byte 1 103 +byte 1 95 +byte 1 87 +byte 1 97 +byte 1 114 +byte 1 109 +byte 1 117 +byte 1 112 +byte 1 0 +align 1 +LABELV $245 +byte 1 117 +byte 1 105 +byte 1 95 +byte 1 100 +byte 1 111 +byte 1 87 +byte 1 97 +byte 1 114 +byte 1 109 +byte 1 117 +byte 1 112 +byte 1 0 +align 1 +LABELV $244 +byte 1 103 +byte 1 95 +byte 1 100 +byte 1 111 +byte 1 87 +byte 1 97 +byte 1 114 +byte 1 109 +byte 1 117 +byte 1 112 +byte 1 0 +align 1 +LABELV $243 +byte 1 117 +byte 1 105 +byte 1 95 +byte 1 100 +byte 1 114 +byte 1 97 +byte 1 119 +byte 1 84 +byte 1 105 +byte 1 109 +byte 1 101 +byte 1 114 +byte 1 0 +align 1 +LABELV $242 +byte 1 99 +byte 1 103 +byte 1 95 +byte 1 100 +byte 1 114 +byte 1 97 +byte 1 119 +byte 1 84 +byte 1 105 +byte 1 109 +byte 1 101 +byte 1 114 +byte 1 0 +align 1 +LABELV $241 +byte 1 117 +byte 1 105 +byte 1 95 +byte 1 115 +byte 1 97 +byte 1 118 +byte 1 101 +byte 1 70 +byte 1 114 +byte 1 97 +byte 1 103 +byte 1 76 +byte 1 105 +byte 1 109 +byte 1 105 +byte 1 116 +byte 1 0 +align 1 +LABELV $240 +byte 1 102 +byte 1 114 +byte 1 97 +byte 1 103 +byte 1 108 +byte 1 105 +byte 1 109 +byte 1 105 +byte 1 116 +byte 1 0 +align 1 +LABELV $239 +byte 1 117 +byte 1 105 +byte 1 95 +byte 1 115 +byte 1 97 +byte 1 118 +byte 1 101 +byte 1 67 +byte 1 97 +byte 1 112 +byte 1 116 +byte 1 117 +byte 1 114 +byte 1 101 +byte 1 76 +byte 1 105 +byte 1 109 +byte 1 105 +byte 1 116 +byte 1 0 +align 1 +LABELV $238 +byte 1 99 +byte 1 97 +byte 1 112 +byte 1 116 +byte 1 117 +byte 1 114 +byte 1 101 +byte 1 108 +byte 1 105 +byte 1 109 +byte 1 105 +byte 1 116 +byte 1 0 +align 1 +LABELV $212 +byte 1 103 +byte 1 95 +byte 1 115 +byte 1 112 +byte 1 83 +byte 1 107 +byte 1 105 +byte 1 108 +byte 1 108 +byte 1 0 +align 1 +LABELV $194 +byte 1 117 +byte 1 105 +byte 1 95 +byte 1 109 +byte 1 97 +byte 1 116 +byte 1 99 +byte 1 104 +byte 1 83 +byte 1 116 +byte 1 97 +byte 1 114 +byte 1 116 +byte 1 84 +byte 1 105 +byte 1 109 +byte 1 101 +byte 1 0 +align 1 +LABELV $177 +byte 1 103 +byte 1 95 +byte 1 103 +byte 1 97 +byte 1 109 +byte 1 101 +byte 1 116 +byte 1 121 +byte 1 112 +byte 1 101 +byte 1 0 +align 1 +LABELV $176 +byte 1 109 +byte 1 97 +byte 1 112 +byte 1 110 +byte 1 97 +byte 1 109 +byte 1 101 +byte 1 0 +align 1 +LABELV $173 +byte 1 103 +byte 1 97 +byte 1 109 +byte 1 101 +byte 1 115 +byte 1 47 +byte 1 37 +byte 1 115 +byte 1 0 +align 1 +LABELV $164 +byte 1 103 +byte 1 97 +byte 1 109 +byte 1 101 +byte 1 0 +align 1 +LABELV $163 +byte 1 103 +byte 1 97 +byte 1 109 +byte 1 101 +byte 1 115 +byte 1 0 +align 1 +LABELV $157 +byte 1 112 +byte 1 114 +byte 1 111 +byte 1 116 +byte 1 111 +byte 1 99 +byte 1 111 +byte 1 108 +byte 1 0 +align 1 +LABELV $156 +byte 1 100 +byte 1 101 +byte 1 109 +byte 1 111 +byte 1 115 +byte 1 47 +byte 1 37 +byte 1 115 +byte 1 95 +byte 1 37 +byte 1 100 +byte 1 46 +byte 1 100 +byte 1 109 +byte 1 95 +byte 1 37 +byte 1 100 +byte 1 0 +align 1 +LABELV $151 +byte 1 103 +byte 1 97 +byte 1 109 +byte 1 101 +byte 1 115 +byte 1 47 +byte 1 37 +byte 1 115 +byte 1 95 +byte 1 37 +byte 1 105 +byte 1 46 +byte 1 103 +byte 1 97 +byte 1 109 +byte 1 101 +byte 1 0 +align 1 +LABELV $149 +byte 1 117 +byte 1 105 +byte 1 95 +byte 1 115 +byte 1 99 +byte 1 111 +byte 1 114 +byte 1 101 +byte 1 67 +byte 1 97 +byte 1 112 +byte 1 116 +byte 1 117 +byte 1 114 +byte 1 101 +byte 1 115 +byte 1 50 +byte 1 0 +align 1 +LABELV $148 +byte 1 117 +byte 1 105 +byte 1 95 +byte 1 115 +byte 1 99 +byte 1 111 +byte 1 114 +byte 1 101 +byte 1 84 +byte 1 105 +byte 1 109 +byte 1 101 +byte 1 50 +byte 1 0 +align 1 +LABELV $147 +byte 1 117 +byte 1 105 +byte 1 95 +byte 1 115 +byte 1 99 +byte 1 111 +byte 1 114 +byte 1 101 +byte 1 83 +byte 1 104 +byte 1 117 +byte 1 116 +byte 1 111 +byte 1 117 +byte 1 116 +byte 1 66 +byte 1 111 +byte 1 110 +byte 1 117 +byte 1 115 +byte 1 50 +byte 1 0 +align 1 +LABELV $146 +byte 1 117 +byte 1 105 +byte 1 95 +byte 1 115 +byte 1 99 +byte 1 111 +byte 1 114 +byte 1 101 +byte 1 83 +byte 1 107 +byte 1 105 +byte 1 108 +byte 1 108 +byte 1 66 +byte 1 111 +byte 1 110 +byte 1 117 +byte 1 115 +byte 1 50 +byte 1 0 +align 1 +LABELV $145 +byte 1 117 +byte 1 105 +byte 1 95 +byte 1 115 +byte 1 99 +byte 1 111 +byte 1 114 +byte 1 101 +byte 1 84 +byte 1 105 +byte 1 109 +byte 1 101 +byte 1 66 +byte 1 111 +byte 1 110 +byte 1 117 +byte 1 115 +byte 1 50 +byte 1 0 +align 1 +LABELV $144 +byte 1 117 +byte 1 105 +byte 1 95 +byte 1 115 +byte 1 99 +byte 1 111 +byte 1 114 +byte 1 101 +byte 1 66 +byte 1 97 +byte 1 115 +byte 1 101 +byte 1 50 +byte 1 0 +align 1 +LABELV $143 +byte 1 117 +byte 1 105 +byte 1 95 +byte 1 115 +byte 1 99 +byte 1 111 +byte 1 114 +byte 1 101 +byte 1 84 +byte 1 101 +byte 1 97 +byte 1 109 +byte 1 50 +byte 1 0 +align 1 +LABELV $142 +byte 1 117 +byte 1 105 +byte 1 95 +byte 1 115 +byte 1 99 +byte 1 111 +byte 1 114 +byte 1 101 +byte 1 80 +byte 1 101 +byte 1 114 +byte 1 102 +byte 1 101 +byte 1 99 +byte 1 116 +byte 1 50 +byte 1 0 +align 1 +LABELV $141 +byte 1 117 +byte 1 105 +byte 1 95 +byte 1 115 +byte 1 99 +byte 1 111 +byte 1 114 +byte 1 101 +byte 1 83 +byte 1 99 +byte 1 111 +byte 1 114 +byte 1 101 +byte 1 50 +byte 1 0 +align 1 +LABELV $140 +byte 1 117 +byte 1 105 +byte 1 95 +byte 1 115 +byte 1 99 +byte 1 111 +byte 1 114 +byte 1 101 +byte 1 71 +byte 1 97 +byte 1 117 +byte 1 110 +byte 1 116 +byte 1 108 +byte 1 101 +byte 1 116 +byte 1 115 +byte 1 50 +byte 1 0 +align 1 +LABELV $139 +byte 1 117 +byte 1 105 +byte 1 95 +byte 1 115 +byte 1 99 +byte 1 111 +byte 1 114 +byte 1 101 +byte 1 65 +byte 1 115 +byte 1 115 +byte 1 105 +byte 1 115 +byte 1 116 +byte 1 115 +byte 1 50 +byte 1 0 +align 1 +LABELV $138 +byte 1 117 +byte 1 105 +byte 1 95 +byte 1 115 +byte 1 99 +byte 1 111 +byte 1 114 +byte 1 101 +byte 1 68 +byte 1 101 +byte 1 102 +byte 1 101 +byte 1 110 +byte 1 100 +byte 1 115 +byte 1 50 +byte 1 0 +align 1 +LABELV $137 +byte 1 117 +byte 1 105 +byte 1 95 +byte 1 115 +byte 1 99 +byte 1 111 +byte 1 114 +byte 1 101 +byte 1 69 +byte 1 120 +byte 1 99 +byte 1 101 +byte 1 108 +byte 1 108 +byte 1 101 +byte 1 110 +byte 1 116 +byte 1 115 +byte 1 50 +byte 1 0 +align 1 +LABELV $136 +byte 1 117 +byte 1 105 +byte 1 95 +byte 1 115 +byte 1 99 +byte 1 111 +byte 1 114 +byte 1 101 +byte 1 73 +byte 1 109 +byte 1 112 +byte 1 114 +byte 1 101 +byte 1 115 +byte 1 115 +byte 1 105 +byte 1 118 +byte 1 101 +byte 1 115 +byte 1 50 +byte 1 0 +align 1 +LABELV $135 +byte 1 117 +byte 1 105 +byte 1 95 +byte 1 115 +byte 1 99 +byte 1 111 +byte 1 114 +byte 1 101 +byte 1 65 +byte 1 99 +byte 1 99 +byte 1 117 +byte 1 114 +byte 1 97 +byte 1 99 +byte 1 121 +byte 1 50 +byte 1 0 +align 1 +LABELV $132 +byte 1 117 +byte 1 105 +byte 1 95 +byte 1 115 +byte 1 99 +byte 1 111 +byte 1 114 +byte 1 101 +byte 1 67 +byte 1 97 +byte 1 112 +byte 1 116 +byte 1 117 +byte 1 114 +byte 1 101 +byte 1 115 +byte 1 0 +align 1 +LABELV $131 +byte 1 37 +byte 1 48 +byte 1 50 +byte 1 105 +byte 1 58 +byte 1 37 +byte 1 48 +byte 1 50 +byte 1 105 +byte 1 0 +align 1 +LABELV $130 +byte 1 117 +byte 1 105 +byte 1 95 +byte 1 115 +byte 1 99 +byte 1 111 +byte 1 114 +byte 1 101 +byte 1 84 +byte 1 105 +byte 1 109 +byte 1 101 +byte 1 0 +align 1 +LABELV $129 +byte 1 117 +byte 1 105 +byte 1 95 +byte 1 115 +byte 1 99 +byte 1 111 +byte 1 114 +byte 1 101 +byte 1 83 +byte 1 104 +byte 1 117 +byte 1 116 +byte 1 111 +byte 1 117 +byte 1 116 +byte 1 66 +byte 1 111 +byte 1 110 +byte 1 117 +byte 1 115 +byte 1 0 +align 1 +LABELV $128 +byte 1 117 +byte 1 105 +byte 1 95 +byte 1 115 +byte 1 99 +byte 1 111 +byte 1 114 +byte 1 101 +byte 1 83 +byte 1 107 +byte 1 105 +byte 1 108 +byte 1 108 +byte 1 66 +byte 1 111 +byte 1 110 +byte 1 117 +byte 1 115 +byte 1 0 +align 1 +LABELV $127 +byte 1 117 +byte 1 105 +byte 1 95 +byte 1 115 +byte 1 99 +byte 1 111 +byte 1 114 +byte 1 101 +byte 1 84 +byte 1 105 +byte 1 109 +byte 1 101 +byte 1 66 +byte 1 111 +byte 1 110 +byte 1 117 +byte 1 115 +byte 1 0 +align 1 +LABELV $126 +byte 1 117 +byte 1 105 +byte 1 95 +byte 1 115 +byte 1 99 +byte 1 111 +byte 1 114 +byte 1 101 +byte 1 66 +byte 1 97 +byte 1 115 +byte 1 101 +byte 1 0 +align 1 +LABELV $125 +byte 1 37 +byte 1 105 +byte 1 32 +byte 1 116 +byte 1 111 +byte 1 32 +byte 1 37 +byte 1 105 +byte 1 0 +align 1 +LABELV $124 +byte 1 117 +byte 1 105 +byte 1 95 +byte 1 115 +byte 1 99 +byte 1 111 +byte 1 114 +byte 1 101 +byte 1 84 +byte 1 101 +byte 1 97 +byte 1 109 +byte 1 0 +align 1 +LABELV $123 +byte 1 117 +byte 1 105 +byte 1 95 +byte 1 115 +byte 1 99 +byte 1 111 +byte 1 114 +byte 1 101 +byte 1 80 +byte 1 101 +byte 1 114 +byte 1 102 +byte 1 101 +byte 1 99 +byte 1 116 +byte 1 0 +align 1 +LABELV $122 +byte 1 117 +byte 1 105 +byte 1 95 +byte 1 115 +byte 1 99 +byte 1 111 +byte 1 114 +byte 1 101 +byte 1 83 +byte 1 99 +byte 1 111 +byte 1 114 +byte 1 101 +byte 1 0 +align 1 +LABELV $121 +byte 1 117 +byte 1 105 +byte 1 95 +byte 1 115 +byte 1 99 +byte 1 111 +byte 1 114 +byte 1 101 +byte 1 71 +byte 1 97 +byte 1 117 +byte 1 110 +byte 1 116 +byte 1 108 +byte 1 101 +byte 1 116 +byte 1 115 +byte 1 0 +align 1 +LABELV $120 +byte 1 117 +byte 1 105 +byte 1 95 +byte 1 115 +byte 1 99 +byte 1 111 +byte 1 114 +byte 1 101 +byte 1 65 +byte 1 115 +byte 1 115 +byte 1 105 +byte 1 115 +byte 1 116 +byte 1 115 +byte 1 0 +align 1 +LABELV $119 +byte 1 117 +byte 1 105 +byte 1 95 +byte 1 115 +byte 1 99 +byte 1 111 +byte 1 114 +byte 1 101 +byte 1 68 +byte 1 101 +byte 1 102 +byte 1 101 +byte 1 110 +byte 1 100 +byte 1 115 +byte 1 0 +align 1 +LABELV $118 +byte 1 117 +byte 1 105 +byte 1 95 +byte 1 115 +byte 1 99 +byte 1 111 +byte 1 114 +byte 1 101 +byte 1 69 +byte 1 120 +byte 1 99 +byte 1 101 +byte 1 108 +byte 1 108 +byte 1 101 +byte 1 110 +byte 1 116 +byte 1 115 +byte 1 0 +align 1 +LABELV $117 +byte 1 37 +byte 1 105 +byte 1 0 +align 1 +LABELV $116 +byte 1 117 +byte 1 105 +byte 1 95 +byte 1 115 +byte 1 99 +byte 1 111 +byte 1 114 +byte 1 101 +byte 1 73 +byte 1 109 +byte 1 112 +byte 1 114 +byte 1 101 +byte 1 115 +byte 1 115 +byte 1 105 +byte 1 118 +byte 1 101 +byte 1 115 +byte 1 0 +align 1 +LABELV $115 +byte 1 37 +byte 1 105 +byte 1 37 +byte 1 37 +byte 1 0 +align 1 +LABELV $114 +byte 1 117 +byte 1 105 +byte 1 95 +byte 1 115 +byte 1 99 +byte 1 111 +byte 1 114 +byte 1 101 +byte 1 65 +byte 1 99 +byte 1 99 +byte 1 117 +byte 1 114 +byte 1 97 +byte 1 99 +byte 1 121 +byte 1 0 +align 1 +LABELV $105 +byte 1 113 +byte 1 117 +byte 1 105 +byte 1 116 +byte 1 10 +byte 1 0 +align 1 +LABELV $101 +byte 1 100 +byte 1 49 +byte 1 10 +byte 1 0 +align 1 +LABELV $92 +byte 1 37 +byte 1 115 +byte 1 0 diff --git a/ta_ui/vm/ui_gameinfo.asm b/ta_ui/vm/ui_gameinfo.asm new file mode 100644 index 00000000..a2afb846 --- /dev/null +++ b/ta_ui/vm/ui_gameinfo.asm @@ -0,0 +1,2952 @@ +export UI_ParseInfos +code +proc UI_ParseInfos 2084 12 +file "../ui_gameinfo.c" +line 31 +;1:// Copyright (C) 1999-2000 Id Software, Inc. +;2:// +;3:// +;4:// gameinfo.c +;5:// +;6: +;7:#include "ui_local.h" +;8: +;9: +;10:// +;11:// arena and bot info +;12:// +;13: +;14: +;15:int ui_numBots; +;16:static char *ui_botInfos[MAX_BOTS]; +;17: +;18:static int ui_numArenas; +;19:static char *ui_arenaInfos[MAX_ARENAS]; +;20: +;21:#ifndef MISSIONPACK // bk001206 +;22:static int ui_numSinglePlayerArenas; +;23:static int ui_numSpecialSinglePlayerArenas; +;24:#endif +;25: +;26:/* +;27:=============== +;28:UI_ParseInfos +;29:=============== +;30:*/ +;31:int UI_ParseInfos( char *buf, int max, char *infos[] ) { +line 37 +;32: char *token; +;33: int count; +;34: char key[MAX_TOKEN_CHARS]; +;35: char info[MAX_INFO_STRING]; +;36: +;37: count = 0; +ADDRLP4 2052 +CNSTI4 0 +ASGNI4 +ADDRGP4 $92 +JUMPV +LABELV $91 +line 39 +;38: +;39: while ( 1 ) { +line 40 +;40: token = COM_Parse( &buf ); +ADDRFP4 0 +ARGP4 +ADDRLP4 2056 +ADDRGP4 COM_Parse +CALLP4 +ASGNP4 +ADDRLP4 0 +ADDRLP4 2056 +INDIRP4 +ASGNP4 +line 41 +;41: if ( !token[0] ) { +ADDRLP4 0 +INDIRP4 +INDIRI1 +CVII4 1 +CNSTI4 0 +NEI4 $94 +line 42 +;42: break; +ADDRGP4 $93 +JUMPV +LABELV $94 +line 44 +;43: } +;44: if ( strcmp( token, "{" ) ) { +ADDRLP4 0 +INDIRP4 +ARGP4 +ADDRGP4 $98 +ARGP4 +ADDRLP4 2060 +ADDRGP4 strcmp +CALLI4 +ASGNI4 +ADDRLP4 2060 +INDIRI4 +CNSTI4 0 +EQI4 $96 +line 45 +;45: Com_Printf( "Missing { in info file\n" ); +ADDRGP4 $99 +ARGP4 +ADDRGP4 Com_Printf +CALLV +pop +line 46 +;46: break; +ADDRGP4 $93 +JUMPV +LABELV $96 +line 49 +;47: } +;48: +;49: if ( count == max ) { +ADDRLP4 2052 +INDIRI4 +ADDRFP4 4 +INDIRI4 +NEI4 $100 +line 50 +;50: Com_Printf( "Max infos exceeded\n" ); +ADDRGP4 $102 +ARGP4 +ADDRGP4 Com_Printf +CALLV +pop +line 51 +;51: break; +ADDRGP4 $93 +JUMPV +LABELV $100 +line 54 +;52: } +;53: +;54: info[0] = '\0'; +ADDRLP4 1028 +CNSTI1 0 +ASGNI1 +ADDRGP4 $104 +JUMPV +LABELV $103 +line 55 +;55: while ( 1 ) { +line 56 +;56: token = COM_ParseExt( &buf, qtrue ); +ADDRFP4 0 +ARGP4 +CNSTI4 1 +ARGI4 +ADDRLP4 2064 +ADDRGP4 COM_ParseExt +CALLP4 +ASGNP4 +ADDRLP4 0 +ADDRLP4 2064 +INDIRP4 +ASGNP4 +line 57 +;57: if ( !token[0] ) { +ADDRLP4 0 +INDIRP4 +INDIRI1 +CVII4 1 +CNSTI4 0 +NEI4 $106 +line 58 +;58: Com_Printf( "Unexpected end of info file\n" ); +ADDRGP4 $108 +ARGP4 +ADDRGP4 Com_Printf +CALLV +pop +line 59 +;59: break; +ADDRGP4 $105 +JUMPV +LABELV $106 +line 61 +;60: } +;61: if ( !strcmp( token, "}" ) ) { +ADDRLP4 0 +INDIRP4 +ARGP4 +ADDRGP4 $111 +ARGP4 +ADDRLP4 2068 +ADDRGP4 strcmp +CALLI4 +ASGNI4 +ADDRLP4 2068 +INDIRI4 +CNSTI4 0 +NEI4 $109 +line 62 +;62: break; +ADDRGP4 $105 +JUMPV +LABELV $109 +line 64 +;63: } +;64: Q_strncpyz( key, token, sizeof( key ) ); +ADDRLP4 4 +ARGP4 +ADDRLP4 0 +INDIRP4 +ARGP4 +CNSTI4 1024 +ARGI4 +ADDRGP4 Q_strncpyz +CALLV +pop +line 66 +;65: +;66: token = COM_ParseExt( &buf, qfalse ); +ADDRFP4 0 +ARGP4 +CNSTI4 0 +ARGI4 +ADDRLP4 2072 +ADDRGP4 COM_ParseExt +CALLP4 +ASGNP4 +ADDRLP4 0 +ADDRLP4 2072 +INDIRP4 +ASGNP4 +line 67 +;67: if ( !token[0] ) { +ADDRLP4 0 +INDIRP4 +INDIRI1 +CVII4 1 +CNSTI4 0 +NEI4 $112 +line 68 +;68: strcpy( token, "" ); +ADDRLP4 0 +INDIRP4 +ARGP4 +ADDRGP4 $114 +ARGP4 +ADDRGP4 strcpy +CALLP4 +pop +line 69 +;69: } +LABELV $112 +line 70 +;70: Info_SetValueForKey( info, key, token ); +ADDRLP4 1028 +ARGP4 +ADDRLP4 4 +ARGP4 +ADDRLP4 0 +INDIRP4 +ARGP4 +ADDRGP4 Info_SetValueForKey +CALLV +pop +line 71 +;71: } +LABELV $104 +line 55 +ADDRGP4 $103 +JUMPV +LABELV $105 +line 73 +;72: //NOTE: extra space for arena number +;73: infos[count] = UI_Alloc(strlen(info) + strlen("\\num\\") + strlen(va("%d", MAX_ARENAS)) + 1); +ADDRLP4 1028 +ARGP4 +ADDRLP4 2064 +ADDRGP4 strlen +CALLI4 +ASGNI4 +ADDRGP4 $115 +ARGP4 +ADDRLP4 2068 +ADDRGP4 strlen +CALLI4 +ASGNI4 +ADDRGP4 $116 +ARGP4 +CNSTI4 1024 +ARGI4 +ADDRLP4 2072 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRLP4 2072 +INDIRP4 +ARGP4 +ADDRLP4 2076 +ADDRGP4 strlen +CALLI4 +ASGNI4 +ADDRLP4 2064 +INDIRI4 +ADDRLP4 2068 +INDIRI4 +ADDI4 +ADDRLP4 2076 +INDIRI4 +ADDI4 +CNSTI4 1 +ADDI4 +ARGI4 +ADDRLP4 2080 +ADDRGP4 UI_Alloc +CALLP4 +ASGNP4 +ADDRLP4 2052 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRFP4 8 +INDIRP4 +ADDP4 +ADDRLP4 2080 +INDIRP4 +ASGNP4 +line 74 +;74: if (infos[count]) { +ADDRLP4 2052 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRFP4 8 +INDIRP4 +ADDP4 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $117 +line 75 +;75: strcpy(infos[count], info); +ADDRLP4 2052 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRFP4 8 +INDIRP4 +ADDP4 +INDIRP4 +ARGP4 +ADDRLP4 1028 +ARGP4 +ADDRGP4 strcpy +CALLP4 +pop +line 76 +;76: count++; +ADDRLP4 2052 +ADDRLP4 2052 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 77 +;77: } +LABELV $117 +line 78 +;78: } +LABELV $92 +line 39 +ADDRGP4 $91 +JUMPV +LABELV $93 +line 79 +;79: return count; +ADDRLP4 2052 +INDIRI4 +RETI4 +LABELV $90 +endproc UI_ParseInfos 2084 12 +proc UI_LoadArenasFromFile 8216 16 +line 87 +;80:} +;81: +;82:/* +;83:=============== +;84:UI_LoadArenasFromFile +;85:=============== +;86:*/ +;87:static void UI_LoadArenasFromFile( char *filename ) { +line 92 +;88: int len; +;89: fileHandle_t f; +;90: char buf[MAX_ARENAS_TEXT]; +;91: +;92: len = trap_FS_FOpenFile( filename, &f, FS_READ ); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRLP4 4 +ARGP4 +CNSTI4 0 +ARGI4 +ADDRLP4 8200 +ADDRGP4 trap_FS_FOpenFile +CALLI4 +ASGNI4 +ADDRLP4 0 +ADDRLP4 8200 +INDIRI4 +ASGNI4 +line 93 +;93: if ( !f ) { +ADDRLP4 4 +INDIRI4 +CNSTI4 0 +NEI4 $120 +line 94 +;94: trap_Print( va( S_COLOR_RED "file not found: %s\n", filename ) ); +ADDRGP4 $122 +ARGP4 +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRLP4 8204 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRLP4 8204 +INDIRP4 +ARGP4 +ADDRGP4 trap_Print +CALLV +pop +line 95 +;95: return; +ADDRGP4 $119 +JUMPV +LABELV $120 +line 97 +;96: } +;97: if ( len >= MAX_ARENAS_TEXT ) { +ADDRLP4 0 +INDIRI4 +CNSTI4 8192 +LTI4 $123 +line 98 +;98: trap_Print( va( S_COLOR_RED "file too large: %s is %i, max allowed is %i", filename, len, MAX_ARENAS_TEXT ) ); +ADDRGP4 $125 +ARGP4 +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRLP4 0 +INDIRI4 +ARGI4 +CNSTI4 8192 +ARGI4 +ADDRLP4 8204 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRLP4 8204 +INDIRP4 +ARGP4 +ADDRGP4 trap_Print +CALLV +pop +line 99 +;99: trap_FS_FCloseFile( f ); +ADDRLP4 4 +INDIRI4 +ARGI4 +ADDRGP4 trap_FS_FCloseFile +CALLV +pop +line 100 +;100: return; +ADDRGP4 $119 +JUMPV +LABELV $123 +line 103 +;101: } +;102: +;103: trap_FS_Read( buf, len, f ); +ADDRLP4 8 +ARGP4 +ADDRLP4 0 +INDIRI4 +ARGI4 +ADDRLP4 4 +INDIRI4 +ARGI4 +ADDRGP4 trap_FS_Read +CALLV +pop +line 104 +;104: buf[len] = 0; +ADDRLP4 0 +INDIRI4 +ADDRLP4 8 +ADDP4 +CNSTI1 0 +ASGNI1 +line 105 +;105: trap_FS_FCloseFile( f ); +ADDRLP4 4 +INDIRI4 +ARGI4 +ADDRGP4 trap_FS_FCloseFile +CALLV +pop +line 107 +;106: +;107: ui_numArenas += UI_ParseInfos( buf, MAX_ARENAS - ui_numArenas, &ui_arenaInfos[ui_numArenas] ); +ADDRLP4 8 +ARGP4 +ADDRLP4 8204 +ADDRGP4 ui_numArenas +ASGNP4 +ADDRLP4 8208 +ADDRLP4 8204 +INDIRP4 +INDIRI4 +ASGNI4 +CNSTI4 1024 +ADDRLP4 8208 +INDIRI4 +SUBI4 +ARGI4 +ADDRLP4 8208 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 ui_arenaInfos +ADDP4 +ARGP4 +ADDRLP4 8212 +ADDRGP4 UI_ParseInfos +CALLI4 +ASGNI4 +ADDRLP4 8204 +INDIRP4 +ADDRLP4 8208 +INDIRI4 +ADDRLP4 8212 +INDIRI4 +ADDI4 +ASGNI4 +line 108 +;108:} +LABELV $119 +endproc UI_LoadArenasFromFile 8216 16 +export UI_LoadArenas +proc UI_LoadArenas 1524 16 +line 115 +;109: +;110:/* +;111:=============== +;112:UI_LoadArenas +;113:=============== +;114:*/ +;115:void UI_LoadArenas( void ) { +line 125 +;116: int numdirs; +;117: vmCvar_t arenasFile; +;118: char filename[128]; +;119: char dirlist[1024]; +;120: char* dirptr; +;121: int i, n; +;122: int dirlen; +;123: char *type; +;124: +;125: ui_numArenas = 0; +ADDRGP4 ui_numArenas +CNSTI4 0 +ASGNI4 +line 126 +;126: uiInfo.mapCount = 0; +ADDRGP4 uiInfo+83224 +CNSTI4 0 +ASGNI4 +line 128 +;127: +;128: trap_Cvar_Register( &arenasFile, "g_arenasFile", "", CVAR_INIT|CVAR_ROM ); +ADDRLP4 152 +ARGP4 +ADDRGP4 $128 +ARGP4 +ADDRGP4 $129 +ARGP4 +CNSTI4 80 +ARGI4 +ADDRGP4 trap_Cvar_Register +CALLV +pop +line 129 +;129: if( *arenasFile.string ) { +ADDRLP4 152+16 +INDIRI1 +CVII4 1 +CNSTI4 0 +EQI4 $130 +line 130 +;130: UI_LoadArenasFromFile(arenasFile.string); +ADDRLP4 152+16 +ARGP4 +ADDRGP4 UI_LoadArenasFromFile +CALLV +pop +line 131 +;131: } +ADDRGP4 $131 +JUMPV +LABELV $130 +line 132 +;132: else { +line 133 +;133: UI_LoadArenasFromFile("scripts/arenas.txt"); +ADDRGP4 $134 +ARGP4 +ADDRGP4 UI_LoadArenasFromFile +CALLV +pop +line 134 +;134: } +LABELV $131 +line 137 +;135: +;136: // get all arenas from .arena files +;137: numdirs = trap_FS_GetFileList("scripts", ".arena", dirlist, 1024 ); +ADDRGP4 $135 +ARGP4 +ADDRGP4 $136 +ARGP4 +ADDRLP4 424 +ARGP4 +CNSTI4 1024 +ARGI4 +ADDRLP4 1448 +ADDRGP4 trap_FS_GetFileList +CALLI4 +ASGNI4 +ADDRLP4 148 +ADDRLP4 1448 +INDIRI4 +ASGNI4 +line 138 +;138: dirptr = dirlist; +ADDRLP4 8 +ADDRLP4 424 +ASGNP4 +line 139 +;139: for (i = 0; i < numdirs; i++, dirptr += dirlen+1) { +ADDRLP4 140 +CNSTI4 0 +ASGNI4 +ADDRGP4 $140 +JUMPV +LABELV $137 +line 140 +;140: dirlen = strlen(dirptr); +ADDRLP4 8 +INDIRP4 +ARGP4 +ADDRLP4 1452 +ADDRGP4 strlen +CALLI4 +ASGNI4 +ADDRLP4 144 +ADDRLP4 1452 +INDIRI4 +ASGNI4 +line 141 +;141: strcpy(filename, "scripts/"); +ADDRLP4 12 +ARGP4 +ADDRGP4 $141 +ARGP4 +ADDRGP4 strcpy +CALLP4 +pop +line 142 +;142: strcat(filename, dirptr); +ADDRLP4 12 +ARGP4 +ADDRLP4 8 +INDIRP4 +ARGP4 +ADDRGP4 strcat +CALLP4 +pop +line 143 +;143: UI_LoadArenasFromFile(filename); +ADDRLP4 12 +ARGP4 +ADDRGP4 UI_LoadArenasFromFile +CALLV +pop +line 144 +;144: } +LABELV $138 +line 139 +ADDRLP4 1452 +CNSTI4 1 +ASGNI4 +ADDRLP4 140 +ADDRLP4 140 +INDIRI4 +ADDRLP4 1452 +INDIRI4 +ADDI4 +ASGNI4 +ADDRLP4 8 +ADDRLP4 144 +INDIRI4 +ADDRLP4 1452 +INDIRI4 +ADDI4 +ADDRLP4 8 +INDIRP4 +ADDP4 +ASGNP4 +LABELV $140 +ADDRLP4 140 +INDIRI4 +ADDRLP4 148 +INDIRI4 +LTI4 $137 +line 145 +;145: trap_Print( va( "%i arenas parsed\n", ui_numArenas ) ); +ADDRGP4 $142 +ARGP4 +ADDRGP4 ui_numArenas +INDIRI4 +ARGI4 +ADDRLP4 1456 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRLP4 1456 +INDIRP4 +ARGP4 +ADDRGP4 trap_Print +CALLV +pop +line 146 +;146: if (UI_OutOfMemory()) { +ADDRLP4 1460 +ADDRGP4 UI_OutOfMemory +CALLI4 +ASGNI4 +ADDRLP4 1460 +INDIRI4 +CNSTI4 0 +EQI4 $143 +line 147 +;147: trap_Print(S_COLOR_YELLOW"WARNING: not anough memory in pool to load all arenas\n"); +ADDRGP4 $145 +ARGP4 +ADDRGP4 trap_Print +CALLV +pop +line 148 +;148: } +LABELV $143 +line 150 +;149: +;150: for( n = 0; n < ui_numArenas; n++ ) { +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +ADDRGP4 $149 +JUMPV +LABELV $146 +line 153 +;151: // determine type +;152: +;153: uiInfo.mapList[uiInfo.mapCount].cinematic = -1; +CNSTI4 100 +ADDRGP4 uiInfo+83224 +INDIRI4 +MULI4 +ADDRGP4 uiInfo+83228+24 +ADDP4 +CNSTI4 -1 +ASGNI4 +line 154 +;154: uiInfo.mapList[uiInfo.mapCount].mapLoadName = String_Alloc(Info_ValueForKey(ui_arenaInfos[n], "map")); +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 ui_arenaInfos +ADDP4 +INDIRP4 +ARGP4 +ADDRGP4 $156 +ARGP4 +ADDRLP4 1464 +ADDRGP4 Info_ValueForKey +CALLP4 +ASGNP4 +ADDRLP4 1464 +INDIRP4 +ARGP4 +ADDRLP4 1468 +ADDRGP4 String_Alloc +CALLP4 +ASGNP4 +CNSTI4 100 +ADDRGP4 uiInfo+83224 +INDIRI4 +MULI4 +ADDRGP4 uiInfo+83228+4 +ADDP4 +ADDRLP4 1468 +INDIRP4 +ASGNP4 +line 155 +;155: uiInfo.mapList[uiInfo.mapCount].mapName = String_Alloc(Info_ValueForKey(ui_arenaInfos[n], "longname")); +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 ui_arenaInfos +ADDP4 +INDIRP4 +ARGP4 +ADDRGP4 $159 +ARGP4 +ADDRLP4 1472 +ADDRGP4 Info_ValueForKey +CALLP4 +ASGNP4 +ADDRLP4 1472 +INDIRP4 +ARGP4 +ADDRLP4 1476 +ADDRGP4 String_Alloc +CALLP4 +ASGNP4 +CNSTI4 100 +ADDRGP4 uiInfo+83224 +INDIRI4 +MULI4 +ADDRGP4 uiInfo+83228 +ADDP4 +ADDRLP4 1476 +INDIRP4 +ASGNP4 +line 156 +;156: uiInfo.mapList[uiInfo.mapCount].levelShot = -1; +CNSTI4 100 +ADDRGP4 uiInfo+83224 +INDIRI4 +MULI4 +ADDRGP4 uiInfo+83228+92 +ADDP4 +CNSTI4 -1 +ASGNI4 +line 157 +;157: uiInfo.mapList[uiInfo.mapCount].imageName = String_Alloc(va("levelshots/%s", uiInfo.mapList[uiInfo.mapCount].mapLoadName)); +ADDRGP4 $166 +ARGP4 +ADDRLP4 1480 +CNSTI4 100 +ASGNI4 +ADDRLP4 1480 +INDIRI4 +ADDRGP4 uiInfo+83224 +INDIRI4 +MULI4 +ADDRGP4 uiInfo+83228+4 +ADDP4 +INDIRP4 +ARGP4 +ADDRLP4 1484 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRLP4 1484 +INDIRP4 +ARGP4 +ADDRLP4 1488 +ADDRGP4 String_Alloc +CALLP4 +ASGNP4 +ADDRLP4 1480 +INDIRI4 +ADDRGP4 uiInfo+83224 +INDIRI4 +MULI4 +ADDRGP4 uiInfo+83228+8 +ADDP4 +ADDRLP4 1488 +INDIRP4 +ASGNP4 +line 158 +;158: uiInfo.mapList[uiInfo.mapCount].typeBits = 0; +CNSTI4 100 +ADDRGP4 uiInfo+83224 +INDIRI4 +MULI4 +ADDRGP4 uiInfo+83228+20 +ADDP4 +CNSTI4 0 +ASGNI4 +line 160 +;159: +;160: type = Info_ValueForKey( ui_arenaInfos[n], "type" ); +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 ui_arenaInfos +ADDP4 +INDIRP4 +ARGP4 +ADDRGP4 $173 +ARGP4 +ADDRLP4 1492 +ADDRGP4 Info_ValueForKey +CALLP4 +ASGNP4 +ADDRLP4 4 +ADDRLP4 1492 +INDIRP4 +ASGNP4 +line 162 +;161: // if no type specified, it will be treated as "ffa" +;162: if( *type ) { +ADDRLP4 4 +INDIRP4 +INDIRI1 +CVII4 1 +CNSTI4 0 +EQI4 $174 +line 163 +;163: if( strstr( type, "ffa" ) ) { +ADDRLP4 4 +INDIRP4 +ARGP4 +ADDRGP4 $178 +ARGP4 +ADDRLP4 1496 +ADDRGP4 strstr +CALLP4 +ASGNP4 +ADDRLP4 1496 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $176 +line 164 +;164: uiInfo.mapList[uiInfo.mapCount].typeBits |= (1 << GT_FFA); +ADDRLP4 1500 +CNSTI4 100 +ADDRGP4 uiInfo+83224 +INDIRI4 +MULI4 +ADDRGP4 uiInfo+83228+20 +ADDP4 +ASGNP4 +ADDRLP4 1500 +INDIRP4 +ADDRLP4 1500 +INDIRP4 +INDIRI4 +CNSTI4 1 +BORI4 +ASGNI4 +line 165 +;165: } +LABELV $176 +line 166 +;166: if( strstr( type, "tourney" ) ) { +ADDRLP4 4 +INDIRP4 +ARGP4 +ADDRGP4 $184 +ARGP4 +ADDRLP4 1500 +ADDRGP4 strstr +CALLP4 +ASGNP4 +ADDRLP4 1500 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $182 +line 167 +;167: uiInfo.mapList[uiInfo.mapCount].typeBits |= (1 << GT_TOURNAMENT); +ADDRLP4 1504 +CNSTI4 100 +ADDRGP4 uiInfo+83224 +INDIRI4 +MULI4 +ADDRGP4 uiInfo+83228+20 +ADDP4 +ASGNP4 +ADDRLP4 1504 +INDIRP4 +ADDRLP4 1504 +INDIRP4 +INDIRI4 +CNSTI4 2 +BORI4 +ASGNI4 +line 168 +;168: } +LABELV $182 +line 169 +;169: if( strstr( type, "ctf" ) ) { +ADDRLP4 4 +INDIRP4 +ARGP4 +ADDRGP4 $190 +ARGP4 +ADDRLP4 1504 +ADDRGP4 strstr +CALLP4 +ASGNP4 +ADDRLP4 1504 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $188 +line 170 +;170: uiInfo.mapList[uiInfo.mapCount].typeBits |= (1 << GT_CTF); +ADDRLP4 1508 +CNSTI4 100 +ADDRGP4 uiInfo+83224 +INDIRI4 +MULI4 +ADDRGP4 uiInfo+83228+20 +ADDP4 +ASGNP4 +ADDRLP4 1508 +INDIRP4 +ADDRLP4 1508 +INDIRP4 +INDIRI4 +CNSTI4 16 +BORI4 +ASGNI4 +line 171 +;171: } +LABELV $188 +line 172 +;172: if( strstr( type, "oneflag" ) ) { +ADDRLP4 4 +INDIRP4 +ARGP4 +ADDRGP4 $196 +ARGP4 +ADDRLP4 1508 +ADDRGP4 strstr +CALLP4 +ASGNP4 +ADDRLP4 1508 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $194 +line 173 +;173: uiInfo.mapList[uiInfo.mapCount].typeBits |= (1 << GT_1FCTF); +ADDRLP4 1512 +CNSTI4 100 +ADDRGP4 uiInfo+83224 +INDIRI4 +MULI4 +ADDRGP4 uiInfo+83228+20 +ADDP4 +ASGNP4 +ADDRLP4 1512 +INDIRP4 +ADDRLP4 1512 +INDIRP4 +INDIRI4 +CNSTI4 32 +BORI4 +ASGNI4 +line 174 +;174: } +LABELV $194 +line 175 +;175: if( strstr( type, "overload" ) ) { +ADDRLP4 4 +INDIRP4 +ARGP4 +ADDRGP4 $202 +ARGP4 +ADDRLP4 1512 +ADDRGP4 strstr +CALLP4 +ASGNP4 +ADDRLP4 1512 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $200 +line 176 +;176: uiInfo.mapList[uiInfo.mapCount].typeBits |= (1 << GT_OBELISK); +ADDRLP4 1516 +CNSTI4 100 +ADDRGP4 uiInfo+83224 +INDIRI4 +MULI4 +ADDRGP4 uiInfo+83228+20 +ADDP4 +ASGNP4 +ADDRLP4 1516 +INDIRP4 +ADDRLP4 1516 +INDIRP4 +INDIRI4 +CNSTI4 64 +BORI4 +ASGNI4 +line 177 +;177: } +LABELV $200 +line 178 +;178: if( strstr( type, "harvester" ) ) { +ADDRLP4 4 +INDIRP4 +ARGP4 +ADDRGP4 $208 +ARGP4 +ADDRLP4 1516 +ADDRGP4 strstr +CALLP4 +ASGNP4 +ADDRLP4 1516 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $175 +line 179 +;179: uiInfo.mapList[uiInfo.mapCount].typeBits |= (1 << GT_HARVESTER); +ADDRLP4 1520 +CNSTI4 100 +ADDRGP4 uiInfo+83224 +INDIRI4 +MULI4 +ADDRGP4 uiInfo+83228+20 +ADDP4 +ASGNP4 +ADDRLP4 1520 +INDIRP4 +ADDRLP4 1520 +INDIRP4 +INDIRI4 +CNSTI4 128 +BORI4 +ASGNI4 +line 180 +;180: } +line 181 +;181: } else { +ADDRGP4 $175 +JUMPV +LABELV $174 +line 182 +;182: uiInfo.mapList[uiInfo.mapCount].typeBits |= (1 << GT_FFA); +ADDRLP4 1496 +CNSTI4 100 +ADDRGP4 uiInfo+83224 +INDIRI4 +MULI4 +ADDRGP4 uiInfo+83228+20 +ADDP4 +ASGNP4 +ADDRLP4 1496 +INDIRP4 +ADDRLP4 1496 +INDIRP4 +INDIRI4 +CNSTI4 1 +BORI4 +ASGNI4 +line 183 +;183: } +LABELV $175 +line 185 +;184: +;185: uiInfo.mapCount++; +ADDRLP4 1496 +ADDRGP4 uiInfo+83224 +ASGNP4 +ADDRLP4 1496 +INDIRP4 +ADDRLP4 1496 +INDIRP4 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 186 +;186: if (uiInfo.mapCount >= MAX_MAPS) { +ADDRGP4 uiInfo+83224 +INDIRI4 +CNSTI4 128 +LTI4 $216 +line 187 +;187: break; +ADDRGP4 $148 +JUMPV +LABELV $216 +line 189 +;188: } +;189: } +LABELV $147 +line 150 +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +LABELV $149 +ADDRLP4 0 +INDIRI4 +ADDRGP4 ui_numArenas +INDIRI4 +LTI4 $146 +LABELV $148 +line 190 +;190:} +LABELV $126 +endproc UI_LoadArenas 1524 16 +proc UI_LoadBotsFromFile 8216 16 +line 198 +;191: +;192: +;193:/* +;194:=============== +;195:UI_LoadBotsFromFile +;196:=============== +;197:*/ +;198:static void UI_LoadBotsFromFile( char *filename ) { +line 203 +;199: int len; +;200: fileHandle_t f; +;201: char buf[MAX_BOTS_TEXT]; +;202: +;203: len = trap_FS_FOpenFile( filename, &f, FS_READ ); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRLP4 4 +ARGP4 +CNSTI4 0 +ARGI4 +ADDRLP4 8200 +ADDRGP4 trap_FS_FOpenFile +CALLI4 +ASGNI4 +ADDRLP4 0 +ADDRLP4 8200 +INDIRI4 +ASGNI4 +line 204 +;204: if ( !f ) { +ADDRLP4 4 +INDIRI4 +CNSTI4 0 +NEI4 $220 +line 205 +;205: trap_Print( va( S_COLOR_RED "file not found: %s\n", filename ) ); +ADDRGP4 $122 +ARGP4 +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRLP4 8204 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRLP4 8204 +INDIRP4 +ARGP4 +ADDRGP4 trap_Print +CALLV +pop +line 206 +;206: return; +ADDRGP4 $219 +JUMPV +LABELV $220 +line 208 +;207: } +;208: if ( len >= MAX_BOTS_TEXT ) { +ADDRLP4 0 +INDIRI4 +CNSTI4 8192 +LTI4 $222 +line 209 +;209: trap_Print( va( S_COLOR_RED "file too large: %s is %i, max allowed is %i", filename, len, MAX_BOTS_TEXT ) ); +ADDRGP4 $125 +ARGP4 +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRLP4 0 +INDIRI4 +ARGI4 +CNSTI4 8192 +ARGI4 +ADDRLP4 8204 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRLP4 8204 +INDIRP4 +ARGP4 +ADDRGP4 trap_Print +CALLV +pop +line 210 +;210: trap_FS_FCloseFile( f ); +ADDRLP4 4 +INDIRI4 +ARGI4 +ADDRGP4 trap_FS_FCloseFile +CALLV +pop +line 211 +;211: return; +ADDRGP4 $219 +JUMPV +LABELV $222 +line 214 +;212: } +;213: +;214: trap_FS_Read( buf, len, f ); +ADDRLP4 8 +ARGP4 +ADDRLP4 0 +INDIRI4 +ARGI4 +ADDRLP4 4 +INDIRI4 +ARGI4 +ADDRGP4 trap_FS_Read +CALLV +pop +line 215 +;215: buf[len] = 0; +ADDRLP4 0 +INDIRI4 +ADDRLP4 8 +ADDP4 +CNSTI1 0 +ASGNI1 +line 216 +;216: trap_FS_FCloseFile( f ); +ADDRLP4 4 +INDIRI4 +ARGI4 +ADDRGP4 trap_FS_FCloseFile +CALLV +pop +line 218 +;217: +;218: COM_Compress(buf); +ADDRLP4 8 +ARGP4 +ADDRGP4 COM_Compress +CALLI4 +pop +line 220 +;219: +;220: ui_numBots += UI_ParseInfos( buf, MAX_BOTS - ui_numBots, &ui_botInfos[ui_numBots] ); +ADDRLP4 8 +ARGP4 +ADDRLP4 8204 +ADDRGP4 ui_numBots +ASGNP4 +ADDRLP4 8208 +ADDRLP4 8204 +INDIRP4 +INDIRI4 +ASGNI4 +CNSTI4 1024 +ADDRLP4 8208 +INDIRI4 +SUBI4 +ARGI4 +ADDRLP4 8208 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 ui_botInfos +ADDP4 +ARGP4 +ADDRLP4 8212 +ADDRGP4 UI_ParseInfos +CALLI4 +ASGNI4 +ADDRLP4 8204 +INDIRP4 +ADDRLP4 8208 +INDIRI4 +ADDRLP4 8212 +INDIRI4 +ADDI4 +ASGNI4 +line 221 +;221:} +LABELV $219 +endproc UI_LoadBotsFromFile 8216 16 +export UI_LoadBots +proc UI_LoadBots 1452 16 +line 228 +;222: +;223:/* +;224:=============== +;225:UI_LoadBots +;226:=============== +;227:*/ +;228:void UI_LoadBots( void ) { +line 237 +;229: vmCvar_t botsFile; +;230: int numdirs; +;231: char filename[128]; +;232: char dirlist[1024]; +;233: char* dirptr; +;234: int i; +;235: int dirlen; +;236: +;237: ui_numBots = 0; +ADDRGP4 ui_numBots +CNSTI4 0 +ASGNI4 +line 239 +;238: +;239: trap_Cvar_Register( &botsFile, "g_botsFile", "", CVAR_INIT|CVAR_ROM ); +ADDRLP4 144 +ARGP4 +ADDRGP4 $225 +ARGP4 +ADDRGP4 $129 +ARGP4 +CNSTI4 80 +ARGI4 +ADDRGP4 trap_Cvar_Register +CALLV +pop +line 240 +;240: if( *botsFile.string ) { +ADDRLP4 144+16 +INDIRI1 +CVII4 1 +CNSTI4 0 +EQI4 $226 +line 241 +;241: UI_LoadBotsFromFile(botsFile.string); +ADDRLP4 144+16 +ARGP4 +ADDRGP4 UI_LoadBotsFromFile +CALLV +pop +line 242 +;242: } +ADDRGP4 $227 +JUMPV +LABELV $226 +line 243 +;243: else { +line 244 +;244: UI_LoadBotsFromFile("scripts/bots.txt"); +ADDRGP4 $230 +ARGP4 +ADDRGP4 UI_LoadBotsFromFile +CALLV +pop +line 245 +;245: } +LABELV $227 +line 248 +;246: +;247: // get all bots from .bot files +;248: numdirs = trap_FS_GetFileList("scripts", ".bot", dirlist, 1024 ); +ADDRGP4 $135 +ARGP4 +ADDRGP4 $231 +ARGP4 +ADDRLP4 416 +ARGP4 +CNSTI4 1024 +ARGI4 +ADDRLP4 1440 +ADDRGP4 trap_FS_GetFileList +CALLI4 +ASGNI4 +ADDRLP4 140 +ADDRLP4 1440 +INDIRI4 +ASGNI4 +line 249 +;249: dirptr = dirlist; +ADDRLP4 0 +ADDRLP4 416 +ASGNP4 +line 250 +;250: for (i = 0; i < numdirs; i++, dirptr += dirlen+1) { +ADDRLP4 132 +CNSTI4 0 +ASGNI4 +ADDRGP4 $235 +JUMPV +LABELV $232 +line 251 +;251: dirlen = strlen(dirptr); +ADDRLP4 0 +INDIRP4 +ARGP4 +ADDRLP4 1444 +ADDRGP4 strlen +CALLI4 +ASGNI4 +ADDRLP4 136 +ADDRLP4 1444 +INDIRI4 +ASGNI4 +line 252 +;252: strcpy(filename, "scripts/"); +ADDRLP4 4 +ARGP4 +ADDRGP4 $141 +ARGP4 +ADDRGP4 strcpy +CALLP4 +pop +line 253 +;253: strcat(filename, dirptr); +ADDRLP4 4 +ARGP4 +ADDRLP4 0 +INDIRP4 +ARGP4 +ADDRGP4 strcat +CALLP4 +pop +line 254 +;254: UI_LoadBotsFromFile(filename); +ADDRLP4 4 +ARGP4 +ADDRGP4 UI_LoadBotsFromFile +CALLV +pop +line 255 +;255: } +LABELV $233 +line 250 +ADDRLP4 1444 +CNSTI4 1 +ASGNI4 +ADDRLP4 132 +ADDRLP4 132 +INDIRI4 +ADDRLP4 1444 +INDIRI4 +ADDI4 +ASGNI4 +ADDRLP4 0 +ADDRLP4 136 +INDIRI4 +ADDRLP4 1444 +INDIRI4 +ADDI4 +ADDRLP4 0 +INDIRP4 +ADDP4 +ASGNP4 +LABELV $235 +ADDRLP4 132 +INDIRI4 +ADDRLP4 140 +INDIRI4 +LTI4 $232 +line 256 +;256: trap_Print( va( "%i bots parsed\n", ui_numBots ) ); +ADDRGP4 $236 +ARGP4 +ADDRGP4 ui_numBots +INDIRI4 +ARGI4 +ADDRLP4 1448 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRLP4 1448 +INDIRP4 +ARGP4 +ADDRGP4 trap_Print +CALLV +pop +line 257 +;257:} +LABELV $224 +endproc UI_LoadBots 1452 16 +export UI_GetBotInfoByNumber +proc UI_GetBotInfoByNumber 8 8 +line 265 +;258: +;259: +;260:/* +;261:=============== +;262:UI_GetBotInfoByNumber +;263:=============== +;264:*/ +;265:char *UI_GetBotInfoByNumber( int num ) { +line 266 +;266: if( num < 0 || num >= ui_numBots ) { +ADDRLP4 0 +ADDRFP4 0 +INDIRI4 +ASGNI4 +ADDRLP4 0 +INDIRI4 +CNSTI4 0 +LTI4 $240 +ADDRLP4 0 +INDIRI4 +ADDRGP4 ui_numBots +INDIRI4 +LTI4 $238 +LABELV $240 +line 267 +;267: trap_Print( va( S_COLOR_RED "Invalid bot number: %i\n", num ) ); +ADDRGP4 $241 +ARGP4 +ADDRFP4 0 +INDIRI4 +ARGI4 +ADDRLP4 4 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRLP4 4 +INDIRP4 +ARGP4 +ADDRGP4 trap_Print +CALLV +pop +line 268 +;268: return NULL; +CNSTP4 0 +RETP4 +ADDRGP4 $237 +JUMPV +LABELV $238 +line 270 +;269: } +;270: return ui_botInfos[num]; +ADDRFP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 ui_botInfos +ADDP4 +INDIRP4 +RETP4 +LABELV $237 +endproc UI_GetBotInfoByNumber 8 8 +export UI_GetBotInfoByName +proc UI_GetBotInfoByName 16 8 +line 279 +;271:} +;272: +;273: +;274:/* +;275:=============== +;276:UI_GetBotInfoByName +;277:=============== +;278:*/ +;279:char *UI_GetBotInfoByName( const char *name ) { +line 283 +;280: int n; +;281: char *value; +;282: +;283: for ( n = 0; n < ui_numBots ; n++ ) { +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +ADDRGP4 $246 +JUMPV +LABELV $243 +line 284 +;284: value = Info_ValueForKey( ui_botInfos[n], "name" ); +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 ui_botInfos +ADDP4 +INDIRP4 +ARGP4 +ADDRGP4 $247 +ARGP4 +ADDRLP4 8 +ADDRGP4 Info_ValueForKey +CALLP4 +ASGNP4 +ADDRLP4 4 +ADDRLP4 8 +INDIRP4 +ASGNP4 +line 285 +;285: if ( !Q_stricmp( value, name ) ) { +ADDRLP4 4 +INDIRP4 +ARGP4 +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRLP4 12 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 12 +INDIRI4 +CNSTI4 0 +NEI4 $248 +line 286 +;286: return ui_botInfos[n]; +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 ui_botInfos +ADDP4 +INDIRP4 +RETP4 +ADDRGP4 $242 +JUMPV +LABELV $248 +line 288 +;287: } +;288: } +LABELV $244 +line 283 +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +LABELV $246 +ADDRLP4 0 +INDIRI4 +ADDRGP4 ui_numBots +INDIRI4 +LTI4 $243 +line 290 +;289: +;290: return NULL; +CNSTP4 0 +RETP4 +LABELV $242 +endproc UI_GetBotInfoByName 16 8 +export UI_GetNumBots +proc UI_GetNumBots 0 0 +line 293 +;291:} +;292: +;293:int UI_GetNumBots() { +line 294 +;294: return ui_numBots; +ADDRGP4 ui_numBots +INDIRI4 +RETI4 +LABELV $250 +endproc UI_GetNumBots 0 0 +export UI_GetBotNameByNumber +proc UI_GetBotNameByNumber 12 8 +line 298 +;295:} +;296: +;297: +;298:char *UI_GetBotNameByNumber( int num ) { +line 299 +;299: char *info = UI_GetBotInfoByNumber(num); +ADDRFP4 0 +INDIRI4 +ARGI4 +ADDRLP4 4 +ADDRGP4 UI_GetBotInfoByNumber +CALLP4 +ASGNP4 +ADDRLP4 0 +ADDRLP4 4 +INDIRP4 +ASGNP4 +line 300 +;300: if (info) { +ADDRLP4 0 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $252 +line 301 +;301: return Info_ValueForKey( info, "name" ); +ADDRLP4 0 +INDIRP4 +ARGP4 +ADDRGP4 $247 +ARGP4 +ADDRLP4 8 +ADDRGP4 Info_ValueForKey +CALLP4 +ASGNP4 +ADDRLP4 8 +INDIRP4 +RETP4 +ADDRGP4 $251 +JUMPV +LABELV $252 +line 303 +;302: } +;303: return "Sarge"; +ADDRGP4 $254 +RETP4 +LABELV $251 +endproc UI_GetBotNameByNumber 12 8 +bss +align 4 +LABELV ui_numSpecialSinglePlayerArenas +skip 4 +align 4 +LABELV ui_numSinglePlayerArenas +skip 4 +align 4 +LABELV ui_arenaInfos +skip 4096 +align 4 +LABELV ui_numArenas +skip 4 +align 4 +LABELV ui_botInfos +skip 4096 +export ui_numBots +align 4 +LABELV ui_numBots +skip 4 +import UI_RankStatusMenu +import RankStatus_Cache +import UI_SignupMenu +import Signup_Cache +import UI_LoginMenu +import Login_Cache +import UI_InitGameinfo +import UI_SPUnlockMedals_f +import UI_SPUnlock_f +import UI_GetAwardLevel +import UI_LogAwardData +import UI_NewGame +import UI_GetCurrentGame +import UI_CanShowTierVideo +import UI_ShowTierVideo +import UI_TierCompleted +import UI_SetBestScore +import UI_GetBestScore +import UI_GetNumSPTiers +import UI_GetNumSPArenas +import UI_GetNumArenas +import UI_GetSpecialArenaInfo +import UI_GetArenaInfoByMap +import UI_GetArenaInfoByNumber +import UI_NetworkOptionsMenu +import UI_NetworkOptionsMenu_Cache +import UI_SoundOptionsMenu +import UI_SoundOptionsMenu_Cache +import UI_DisplayOptionsMenu +import UI_DisplayOptionsMenu_Cache +import UI_SaveConfigMenu +import UI_SaveConfigMenu_Cache +import UI_LoadConfigMenu +import UI_LoadConfig_Cache +import UI_TeamOrdersMenu_Cache +import UI_TeamOrdersMenu_f +import UI_TeamOrdersMenu +import UI_RemoveBotsMenu +import UI_RemoveBots_Cache +import UI_AddBotsMenu +import UI_AddBots_Cache +import trap_VerifyCDKey +import trap_R_RemapShader +import trap_RealTime +import trap_CIN_SetExtents +import trap_CIN_DrawCinematic +import trap_CIN_RunCinematic +import trap_CIN_StopCinematic +import trap_CIN_PlayCinematic +import trap_S_StartBackgroundTrack +import trap_S_StopBackgroundTrack +import trap_R_RegisterFont +import trap_SetCDKey +import trap_GetCDKey +import trap_MemoryRemaining +import trap_LAN_CompareServers +import trap_LAN_ServerStatus +import trap_LAN_ResetPings +import trap_LAN_RemoveServer +import trap_LAN_AddServer +import trap_LAN_UpdateVisiblePings +import trap_LAN_ServerIsVisible +import trap_LAN_MarkServerVisible +import trap_LAN_SaveCachedServers +import trap_LAN_LoadCachedServers +import trap_LAN_GetPingInfo +import trap_LAN_GetPing +import trap_LAN_ClearPing +import trap_LAN_GetPingQueueCount +import trap_LAN_GetServerPing +import trap_LAN_GetServerInfo +import trap_LAN_GetServerAddressString +import trap_LAN_GetServerCount +import trap_GetConfigString +import trap_GetGlconfig +import trap_GetClientState +import trap_GetClipboardData +import trap_Key_SetCatcher +import trap_Key_GetCatcher +import trap_Key_ClearStates +import trap_Key_SetOverstrikeMode +import trap_Key_GetOverstrikeMode +import trap_Key_IsDown +import trap_Key_SetBinding +import trap_Key_GetBindingBuf +import trap_Key_KeynumToStringBuf +import trap_S_RegisterSound +import trap_S_StartLocalSound +import trap_CM_LerpTag +import trap_UpdateScreen +import trap_R_ModelBounds +import trap_R_DrawStretchPic +import trap_R_SetColor +import trap_R_RenderScene +import trap_R_AddLightToScene +import trap_R_AddPolyToScene +import trap_R_AddRefEntityToScene +import trap_R_ClearScene +import trap_R_RegisterShaderNoMip +import trap_R_RegisterSkin +import trap_R_RegisterModel +import trap_FS_GetFileList +import trap_FS_FCloseFile +import trap_FS_Write +import trap_FS_Read +import trap_FS_FOpenFile +import trap_Cmd_ExecuteText +import trap_Argv +import trap_Argc +import trap_Cvar_InfoStringBuffer +import trap_Cvar_Create +import trap_Cvar_Reset +import trap_Cvar_SetValue +import trap_Cvar_VariableStringBuffer +import trap_Cvar_VariableValue +import trap_Cvar_Set +import trap_Cvar_Update +import trap_Cvar_Register +import trap_Milliseconds +import trap_Error +import trap_Print +import UI_SPSkillMenu_Cache +import UI_SPSkillMenu +import UI_SPPostgameMenu_f +import UI_SPPostgameMenu_Cache +import UI_SPArena_Start +import UI_SPLevelMenu_ReInit +import UI_SPLevelMenu_f +import UI_SPLevelMenu +import UI_SPLevelMenu_Cache +import uis +import UI_LoadBestScores +import m_entersound +import UI_StartDemoLoop +import UI_Cvar_VariableString +import UI_Argv +import UI_ForceMenuOff +import UI_PopMenu +import UI_PushMenu +import UI_SetActiveMenu +import UI_IsFullscreen +import UI_DrawTextBox +import UI_AdjustFrom640 +import UI_CursorInRect +import UI_DrawChar +import UI_DrawString +import UI_ProportionalStringWidth +import UI_DrawProportionalString +import UI_ProportionalSizeScale +import UI_DrawBannerString +import UI_LerpColor +import UI_SetColor +import UI_UpdateScreen +import UI_DrawSides +import UI_DrawTopBottom +import UI_DrawRect +import UI_FillRect +import UI_DrawHandlePic +import UI_DrawNamedPic +import UI_ClampCvar +import UI_ConsoleCommand +import UI_Refresh +import UI_MouseEvent +import UI_KeyEvent +import UI_Shutdown +import UI_Init +import uiInfo +import UI_RegisterClientModelname +import UI_PlayerInfo_SetInfo +import UI_PlayerInfo_SetModel +import UI_DrawPlayer +import DriverInfo_Cache +import GraphicsOptions_Cache +import UI_GraphicsOptionsMenu +import ServerInfo_Cache +import UI_ServerInfoMenu +import UI_BotSelectMenu_Cache +import UI_BotSelectMenu +import ServerOptions_Cache +import StartServer_Cache +import UI_StartServerMenu +import ArenaServers_Cache +import UI_ArenaServersMenu +import SpecifyServer_Cache +import UI_SpecifyServerMenu +import SpecifyLeague_Cache +import UI_SpecifyLeagueMenu +import Preferences_Cache +import UI_PreferencesMenu +import PlayerSettings_Cache +import UI_PlayerSettingsMenu +import PlayerModel_Cache +import UI_PlayerModelMenu +import UI_CDKeyMenu_f +import UI_CDKeyMenu_Cache +import UI_CDKeyMenu +import UI_ModsMenu_Cache +import UI_ModsMenu +import UI_CinematicsMenu_Cache +import UI_CinematicsMenu_f +import UI_CinematicsMenu +import Demos_Cache +import UI_DemosMenu +import Controls_Cache +import UI_ControlsMenu +import UI_DrawConnectScreen +import TeamMain_Cache +import UI_TeamMainMenu +import UI_SetupMenu +import UI_SetupMenu_Cache +import UI_ConfirmMenu +import ConfirmMenu_Cache +import UI_InGameMenu +import InGame_Cache +import UI_CreditMenu +import UI_UpdateCvars +import UI_RegisterCvars +import UI_MainMenu +import MainMenu_Cache +import UI_ClearScores +import UI_ShowPostGame +import UI_AdjustTimeByGame +import _UI_SetActiveMenu +import UI_LoadMenus +import UI_Load +import UI_Report +import MenuField_Key +import MenuField_Draw +import MenuField_Init +import MField_Draw +import MField_CharEvent +import MField_KeyDownEvent +import MField_Clear +import ui_medalSounds +import ui_medalPicNames +import ui_medalNames +import text_color_highlight +import text_color_normal +import text_color_disabled +import listbar_color +import list_color +import name_color +import color_dim +import color_red +import color_orange +import color_blue +import color_yellow +import color_white +import color_black +import menu_dim_color +import menu_black_color +import menu_red_color +import menu_highlight_color +import menu_dark_color +import menu_grayed_color +import menu_text_color +import weaponChangeSound +import menu_null_sound +import menu_buzz_sound +import menu_out_sound +import menu_move_sound +import menu_in_sound +import ScrollList_Key +import ScrollList_Draw +import Bitmap_Draw +import Bitmap_Init +import Menu_DefaultKey +import Menu_SetCursorToItem +import Menu_SetCursor +import Menu_ActivateItem +import Menu_ItemAtCursor +import Menu_Draw +import Menu_AdjustCursor +import Menu_AddItem +import Menu_Focus +import Menu_Cache +import ui_serverStatusTimeOut +import ui_bigFont +import ui_smallFont +import ui_scoreTime +import ui_scoreShutoutBonus +import ui_scoreSkillBonus +import ui_scoreTimeBonus +import ui_scoreBase +import ui_scoreTeam +import ui_scorePerfect +import ui_scoreScore +import ui_scoreGauntlets +import ui_scoreAssists +import ui_scoreDefends +import ui_scoreExcellents +import ui_scoreImpressives +import ui_scoreAccuracy +import ui_singlePlayerActive +import ui_lastServerRefresh_3 +import ui_lastServerRefresh_2 +import ui_lastServerRefresh_1 +import ui_lastServerRefresh_0 +import ui_selectedPlayerName +import ui_selectedPlayer +import ui_currentOpponent +import ui_mapIndex +import ui_currentNetMap +import ui_currentMap +import ui_currentTier +import ui_menuFiles +import ui_opponentName +import ui_dedicated +import ui_serverFilterType +import ui_netSource +import ui_joinGameType +import ui_actualNetGameType +import ui_netGameType +import ui_gameType +import ui_fragLimit +import ui_captureLimit +import ui_cdkeychecked +import ui_cdkey +import ui_server16 +import ui_server15 +import ui_server14 +import ui_server13 +import ui_server12 +import ui_server11 +import ui_server10 +import ui_server9 +import ui_server8 +import ui_server7 +import ui_server6 +import ui_server5 +import ui_server4 +import ui_server3 +import ui_server2 +import ui_server1 +import ui_marks +import ui_drawCrosshairNames +import ui_drawCrosshair +import ui_brassTime +import ui_browserShowEmpty +import ui_browserShowFull +import ui_browserSortKey +import ui_browserGameType +import ui_browserMaster +import ui_spSelection +import ui_spSkill +import ui_spVideos +import ui_spAwards +import ui_spScores5 +import ui_spScores4 +import ui_spScores3 +import ui_spScores2 +import ui_spScores1 +import ui_botsFile +import ui_arenasFile +import ui_ctf_friendly +import ui_ctf_timelimit +import ui_ctf_capturelimit +import ui_team_friendly +import ui_team_timelimit +import ui_team_fraglimit +import ui_tourney_timelimit +import ui_tourney_fraglimit +import ui_ffa_timelimit +import ui_ffa_fraglimit +import trap_PC_SourceFileAndLine +import trap_PC_ReadToken +import trap_PC_FreeSource +import trap_PC_LoadSource +import trap_PC_AddGlobalDefine +import Controls_SetDefaults +import Controls_SetConfig +import Controls_GetConfig +import UI_OutOfMemory +import UI_InitMemory +import UI_Alloc +import Display_CacheAll +import Menu_SetFeederSelection +import Menu_Paint +import Menus_CloseAll +import LerpColor +import Display_HandleKey +import Menus_CloseByName +import Menus_ShowByName +import Menus_FindByName +import Menus_OpenByName +import Display_KeyBindPending +import Display_CursorType +import Display_MouseMove +import Display_CaptureItem +import Display_GetContext +import Menus_Activate +import Menus_AnyFullScreenVisible +import Menu_Reset +import Menus_ActivateByName +import Menu_PaintAll +import Menu_New +import Menu_Count +import PC_Script_Parse +import PC_String_Parse +import PC_Rect_Parse +import PC_Int_Parse +import PC_Color_Parse +import PC_Float_Parse +import Script_Parse +import String_Parse +import Rect_Parse +import Int_Parse +import Color_Parse +import Float_Parse +import Menu_ScrollFeeder +import Menu_HandleMouseMove +import Menu_HandleKey +import Menu_GetFocused +import Menu_PostParse +import Item_Init +import Menu_Init +import Display_ExpandMacros +import Init_Display +import String_Report +import String_Init +import String_Alloc +import BG_PlayerTouchesItem +import BG_PlayerStateToEntityStateExtraPolate +import BG_PlayerStateToEntityState +import BG_TouchJumpPad +import BG_AddPredictableEventToPlayerstate +import BG_EvaluateTrajectoryDelta +import BG_EvaluateTrajectory +import BG_CanItemBeGrabbed +import BG_FindItemForHoldable +import BG_FindItemForPowerup +import BG_FindItemForWeapon +import BG_FindItem +import bg_numItems +import bg_itemlist +import ClipAmountForAmmo +import ClipAmountForReload +import Pmove +import PM_UpdateViewAngles +import Com_Printf +import Com_Error +import Info_NextPair +import Info_Validate +import Info_SetValueForKey_Big +import Info_SetValueForKey +import Info_RemoveKey_big +import Info_RemoveKey +import Info_ValueForKey +import va +import Q_CleanStr +import Q_PrintStrlen +import Q_strcat +import Q_strncpyz +import Q_strrchr +import Q_strupr +import Q_strlwr +import Q_stricmpn +import Q_strncmp +import Q_stricmp +import Q_isalpha +import Q_isupper +import Q_islower +import Q_isprint +import Com_sprintf +import Parse3DMatrix +import Parse2DMatrix +import Parse1DMatrix +import SkipRestOfLine +import SkipBracedSection +import COM_MatchToken +import COM_ParseWarning +import COM_ParseError +import COM_Compress +import COM_ParseExt +import COM_Parse +import COM_GetCurrentParseLine +import COM_BeginParseSession +import COM_DefaultExtension +import COM_StripExtension +import COM_SkipPath +import Com_Clamp +import PerpendicularVector +import AngleVectors +import MatrixMultiply +import MakeNormalVectors +import RotateAroundDirection +import RotatePointAroundVector +import ProjectPointOnPlane +import PlaneFromPoints +import AngleDelta +import AngleNormalize180 +import AngleNormalize360 +import AnglesSubtract +import AngleSubtract +import LerpAngle +import AngleMod +import BoxOnPlaneSide +import SetPlaneSignbits +import AxisCopy +import AxisClear +import AnglesToAxis +import vectoangles +import Q_crandom +import Q_random +import Q_rand +import Q_acos +import Q_log2 +import VectorRotate +import Vector4Scale +import VectorNormalize2 +import VectorNormalize +import CrossProduct +import VectorInverse +import VectorNormalizeFast +import DistanceSquared +import Distance +import VectorLengthSquared +import VectorLength +import VectorCompare +import AddPointToBounds +import ClearBounds +import RadiusFromBounds +import NormalizeColor +import ColorBytes4 +import ColorBytes3 +import _VectorMA +import _VectorScale +import _VectorCopy +import _VectorAdd +import _VectorSubtract +import _DotProduct +import ByteToDir +import DirToByte +import ClampShort +import ClampChar +import Q_rsqrt +import Q_fabs +import axisDefault +import vec3_origin +import g_color_table +import colorDkGrey +import colorMdGrey +import colorLtGrey +import colorWhite +import colorCyan +import colorMagenta +import colorYellow +import colorBlue +import colorGreen +import colorRed +import colorBlack +import bytedirs +import Com_Memcpy +import Com_Memset +import Hunk_Alloc +import FloatSwap +import LongSwap +import ShortSwap +import acos +import fabs +import abs +import tan +import atan2 +import cos +import sin +import sqrt +import floor +import ceil +import memcpy +import memset +import memmove +import sscanf +import vsprintf +import _atoi +import atoi +import _atof +import atof +import toupper +import tolower +import strncpy +import strstr +import strchr +import strcmp +import strcpy +import strcat +import strlen +import rand +import srand +import qsort +lit +align 1 +LABELV $254 +byte 1 83 +byte 1 97 +byte 1 114 +byte 1 103 +byte 1 101 +byte 1 0 +align 1 +LABELV $247 +byte 1 110 +byte 1 97 +byte 1 109 +byte 1 101 +byte 1 0 +align 1 +LABELV $241 +byte 1 94 +byte 1 49 +byte 1 73 +byte 1 110 +byte 1 118 +byte 1 97 +byte 1 108 +byte 1 105 +byte 1 100 +byte 1 32 +byte 1 98 +byte 1 111 +byte 1 116 +byte 1 32 +byte 1 110 +byte 1 117 +byte 1 109 +byte 1 98 +byte 1 101 +byte 1 114 +byte 1 58 +byte 1 32 +byte 1 37 +byte 1 105 +byte 1 10 +byte 1 0 +align 1 +LABELV $236 +byte 1 37 +byte 1 105 +byte 1 32 +byte 1 98 +byte 1 111 +byte 1 116 +byte 1 115 +byte 1 32 +byte 1 112 +byte 1 97 +byte 1 114 +byte 1 115 +byte 1 101 +byte 1 100 +byte 1 10 +byte 1 0 +align 1 +LABELV $231 +byte 1 46 +byte 1 98 +byte 1 111 +byte 1 116 +byte 1 0 +align 1 +LABELV $230 +byte 1 115 +byte 1 99 +byte 1 114 +byte 1 105 +byte 1 112 +byte 1 116 +byte 1 115 +byte 1 47 +byte 1 98 +byte 1 111 +byte 1 116 +byte 1 115 +byte 1 46 +byte 1 116 +byte 1 120 +byte 1 116 +byte 1 0 +align 1 +LABELV $225 +byte 1 103 +byte 1 95 +byte 1 98 +byte 1 111 +byte 1 116 +byte 1 115 +byte 1 70 +byte 1 105 +byte 1 108 +byte 1 101 +byte 1 0 +align 1 +LABELV $208 +byte 1 104 +byte 1 97 +byte 1 114 +byte 1 118 +byte 1 101 +byte 1 115 +byte 1 116 +byte 1 101 +byte 1 114 +byte 1 0 +align 1 +LABELV $202 +byte 1 111 +byte 1 118 +byte 1 101 +byte 1 114 +byte 1 108 +byte 1 111 +byte 1 97 +byte 1 100 +byte 1 0 +align 1 +LABELV $196 +byte 1 111 +byte 1 110 +byte 1 101 +byte 1 102 +byte 1 108 +byte 1 97 +byte 1 103 +byte 1 0 +align 1 +LABELV $190 +byte 1 99 +byte 1 116 +byte 1 102 +byte 1 0 +align 1 +LABELV $184 +byte 1 116 +byte 1 111 +byte 1 117 +byte 1 114 +byte 1 110 +byte 1 101 +byte 1 121 +byte 1 0 +align 1 +LABELV $178 +byte 1 102 +byte 1 102 +byte 1 97 +byte 1 0 +align 1 +LABELV $173 +byte 1 116 +byte 1 121 +byte 1 112 +byte 1 101 +byte 1 0 +align 1 +LABELV $166 +byte 1 108 +byte 1 101 +byte 1 118 +byte 1 101 +byte 1 108 +byte 1 115 +byte 1 104 +byte 1 111 +byte 1 116 +byte 1 115 +byte 1 47 +byte 1 37 +byte 1 115 +byte 1 0 +align 1 +LABELV $159 +byte 1 108 +byte 1 111 +byte 1 110 +byte 1 103 +byte 1 110 +byte 1 97 +byte 1 109 +byte 1 101 +byte 1 0 +align 1 +LABELV $156 +byte 1 109 +byte 1 97 +byte 1 112 +byte 1 0 +align 1 +LABELV $145 +byte 1 94 +byte 1 51 +byte 1 87 +byte 1 65 +byte 1 82 +byte 1 78 +byte 1 73 +byte 1 78 +byte 1 71 +byte 1 58 +byte 1 32 +byte 1 110 +byte 1 111 +byte 1 116 +byte 1 32 +byte 1 97 +byte 1 110 +byte 1 111 +byte 1 117 +byte 1 103 +byte 1 104 +byte 1 32 +byte 1 109 +byte 1 101 +byte 1 109 +byte 1 111 +byte 1 114 +byte 1 121 +byte 1 32 +byte 1 105 +byte 1 110 +byte 1 32 +byte 1 112 +byte 1 111 +byte 1 111 +byte 1 108 +byte 1 32 +byte 1 116 +byte 1 111 +byte 1 32 +byte 1 108 +byte 1 111 +byte 1 97 +byte 1 100 +byte 1 32 +byte 1 97 +byte 1 108 +byte 1 108 +byte 1 32 +byte 1 97 +byte 1 114 +byte 1 101 +byte 1 110 +byte 1 97 +byte 1 115 +byte 1 10 +byte 1 0 +align 1 +LABELV $142 +byte 1 37 +byte 1 105 +byte 1 32 +byte 1 97 +byte 1 114 +byte 1 101 +byte 1 110 +byte 1 97 +byte 1 115 +byte 1 32 +byte 1 112 +byte 1 97 +byte 1 114 +byte 1 115 +byte 1 101 +byte 1 100 +byte 1 10 +byte 1 0 +align 1 +LABELV $141 +byte 1 115 +byte 1 99 +byte 1 114 +byte 1 105 +byte 1 112 +byte 1 116 +byte 1 115 +byte 1 47 +byte 1 0 +align 1 +LABELV $136 +byte 1 46 +byte 1 97 +byte 1 114 +byte 1 101 +byte 1 110 +byte 1 97 +byte 1 0 +align 1 +LABELV $135 +byte 1 115 +byte 1 99 +byte 1 114 +byte 1 105 +byte 1 112 +byte 1 116 +byte 1 115 +byte 1 0 +align 1 +LABELV $134 +byte 1 115 +byte 1 99 +byte 1 114 +byte 1 105 +byte 1 112 +byte 1 116 +byte 1 115 +byte 1 47 +byte 1 97 +byte 1 114 +byte 1 101 +byte 1 110 +byte 1 97 +byte 1 115 +byte 1 46 +byte 1 116 +byte 1 120 +byte 1 116 +byte 1 0 +align 1 +LABELV $129 +byte 1 0 +align 1 +LABELV $128 +byte 1 103 +byte 1 95 +byte 1 97 +byte 1 114 +byte 1 101 +byte 1 110 +byte 1 97 +byte 1 115 +byte 1 70 +byte 1 105 +byte 1 108 +byte 1 101 +byte 1 0 +align 1 +LABELV $125 +byte 1 94 +byte 1 49 +byte 1 102 +byte 1 105 +byte 1 108 +byte 1 101 +byte 1 32 +byte 1 116 +byte 1 111 +byte 1 111 +byte 1 32 +byte 1 108 +byte 1 97 +byte 1 114 +byte 1 103 +byte 1 101 +byte 1 58 +byte 1 32 +byte 1 37 +byte 1 115 +byte 1 32 +byte 1 105 +byte 1 115 +byte 1 32 +byte 1 37 +byte 1 105 +byte 1 44 +byte 1 32 +byte 1 109 +byte 1 97 +byte 1 120 +byte 1 32 +byte 1 97 +byte 1 108 +byte 1 108 +byte 1 111 +byte 1 119 +byte 1 101 +byte 1 100 +byte 1 32 +byte 1 105 +byte 1 115 +byte 1 32 +byte 1 37 +byte 1 105 +byte 1 0 +align 1 +LABELV $122 +byte 1 94 +byte 1 49 +byte 1 102 +byte 1 105 +byte 1 108 +byte 1 101 +byte 1 32 +byte 1 110 +byte 1 111 +byte 1 116 +byte 1 32 +byte 1 102 +byte 1 111 +byte 1 117 +byte 1 110 +byte 1 100 +byte 1 58 +byte 1 32 +byte 1 37 +byte 1 115 +byte 1 10 +byte 1 0 +align 1 +LABELV $116 +byte 1 37 +byte 1 100 +byte 1 0 +align 1 +LABELV $115 +byte 1 92 +byte 1 110 +byte 1 117 +byte 1 109 +byte 1 92 +byte 1 0 +align 1 +LABELV $114 +byte 1 60 +byte 1 78 +byte 1 85 +byte 1 76 +byte 1 76 +byte 1 62 +byte 1 0 +align 1 +LABELV $111 +byte 1 125 +byte 1 0 +align 1 +LABELV $108 +byte 1 85 +byte 1 110 +byte 1 101 +byte 1 120 +byte 1 112 +byte 1 101 +byte 1 99 +byte 1 116 +byte 1 101 +byte 1 100 +byte 1 32 +byte 1 101 +byte 1 110 +byte 1 100 +byte 1 32 +byte 1 111 +byte 1 102 +byte 1 32 +byte 1 105 +byte 1 110 +byte 1 102 +byte 1 111 +byte 1 32 +byte 1 102 +byte 1 105 +byte 1 108 +byte 1 101 +byte 1 10 +byte 1 0 +align 1 +LABELV $102 +byte 1 77 +byte 1 97 +byte 1 120 +byte 1 32 +byte 1 105 +byte 1 110 +byte 1 102 +byte 1 111 +byte 1 115 +byte 1 32 +byte 1 101 +byte 1 120 +byte 1 99 +byte 1 101 +byte 1 101 +byte 1 100 +byte 1 101 +byte 1 100 +byte 1 10 +byte 1 0 +align 1 +LABELV $99 +byte 1 77 +byte 1 105 +byte 1 115 +byte 1 115 +byte 1 105 +byte 1 110 +byte 1 103 +byte 1 32 +byte 1 123 +byte 1 32 +byte 1 105 +byte 1 110 +byte 1 32 +byte 1 105 +byte 1 110 +byte 1 102 +byte 1 111 +byte 1 32 +byte 1 102 +byte 1 105 +byte 1 108 +byte 1 101 +byte 1 10 +byte 1 0 +align 1 +LABELV $98 +byte 1 123 +byte 1 0 diff --git a/ta_ui/vm/ui_main.asm b/ta_ui/vm/ui_main.asm new file mode 100644 index 00000000..c734985f --- /dev/null +++ b/ta_ui/vm/ui_main.asm @@ -0,0 +1,50892 @@ +data +align 4 +LABELV MonthAbbrev +address $90 +address $91 +address $92 +address $93 +address $94 +address $95 +address $96 +address $97 +address $98 +address $99 +address $100 +address $101 +align 4 +LABELV skillLevels +address $102 +address $103 +address $104 +address $105 +address $106 +lit +align 4 +LABELV numSkillLevels +byte 4 5 +data +align 4 +LABELV netSources +address $107 +address $108 +address $109 +address $110 +lit +align 4 +LABELV numNetSources +byte 4 4 +align 4 +LABELV serverFilters +address $111 +address $112 +address $113 +address $112 +address $114 +address $115 +address $116 +address $117 +address $118 +address $119 +address $120 +address $121 +address $122 +address $123 +data +align 4 +LABELV teamArenaGameTypes +address $124 +address $125 +address $126 +address $127 +address $128 +address $129 +address $130 +address $131 +address $132 +lit +align 4 +LABELV numTeamArenaGameTypes +byte 4 9 +data +align 4 +LABELV teamArenaGameNames +address $133 +address $134 +address $135 +address $136 +address $137 +address $138 +address $139 +address $140 +address $141 +lit +align 4 +LABELV numTeamArenaGameNames +byte 4 9 +align 4 +LABELV numServerFilters +byte 4 7 +data +align 4 +LABELV sortKeys +address $142 +address $143 +address $144 +address $145 +address $146 +lit +align 4 +LABELV numSortKeys +byte 4 5 +data +align 4 +LABELV netnames +address $147 +address $148 +address $149 +byte 4 0 +align 1 +LABELV quake3worldMessage +byte 1 86 +byte 1 105 +byte 1 115 +byte 1 105 +byte 1 116 +byte 1 32 +byte 1 119 +byte 1 119 +byte 1 119 +byte 1 46 +byte 1 113 +byte 1 117 +byte 1 97 +byte 1 107 +byte 1 101 +byte 1 51 +byte 1 119 +byte 1 111 +byte 1 114 +byte 1 108 +byte 1 100 +byte 1 46 +byte 1 99 +byte 1 111 +byte 1 109 +byte 1 32 +byte 1 45 +byte 1 32 +byte 1 78 +byte 1 101 +byte 1 119 +byte 1 115 +byte 1 44 +byte 1 32 +byte 1 67 +byte 1 111 +byte 1 109 +byte 1 109 +byte 1 117 +byte 1 110 +byte 1 105 +byte 1 116 +byte 1 121 +byte 1 44 +byte 1 32 +byte 1 69 +byte 1 118 +byte 1 101 +byte 1 110 +byte 1 116 +byte 1 115 +byte 1 44 +byte 1 32 +byte 1 70 +byte 1 105 +byte 1 108 +byte 1 101 +byte 1 115 +byte 1 0 +align 4 +LABELV gamecodetoui +byte 4 4 +byte 4 2 +byte 4 3 +byte 4 0 +byte 4 5 +byte 4 1 +byte 4 6 +align 4 +LABELV uitogamecode +byte 4 4 +byte 4 6 +byte 4 2 +byte 4 3 +byte 4 1 +byte 4 5 +byte 4 7 +export vmMain +code +proc vmMain 12 8 +file "../ui_main.c" +line 148 +;1:// Copyright (C) 1999-2000 Id Software, Inc. +;2:// +;3:/* +;4:======================================================================= +;5: +;6:USER INTERFACE MAIN +;7: +;8:======================================================================= +;9:*/ +;10: +;11:// use this to get a demo build without an explicit demo build, i.e. to get the demo ui files to build +;12://#define PRE_RELEASE_TADEMO +;13: +;14:#include "ui_local.h" +;15: +;16:uiInfo_t uiInfo; +;17: +;18:static const char *MonthAbbrev[] = { +;19: "Jan","Feb","Mar", +;20: "Apr","May","Jun", +;21: "Jul","Aug","Sep", +;22: "Oct","Nov","Dec" +;23:}; +;24: +;25: +;26:static const char *skillLevels[] = { +;27: "I Can Win", +;28: "Bring It On", +;29: "Hurt Me Plenty", +;30: "Hardcore", +;31: "Nightmare" +;32:}; +;33: +;34:static const int numSkillLevels = sizeof(skillLevels) / sizeof(const char*); +;35: +;36: +;37:static const char *netSources[] = { +;38: "Local", +;39: "Mplayer", +;40: "Internet", +;41: "Favorites" +;42:}; +;43:static const int numNetSources = sizeof(netSources) / sizeof(const char*); +;44: +;45:static const serverFilter_t serverFilters[] = { +;46: {"All", "" }, +;47: {"Quake 3 Arena", "" }, +;48: {"Team Arena", "missionpack" }, +;49: {"Rocket Arena", "arena" }, +;50: {"Alliance", "alliance20" }, +;51: {"Weapons Factory Arena", "wfa" }, +;52: {"OSP", "osp" }, +;53:}; +;54: +;55:static const char *teamArenaGameTypes[] = { +;56: "FFA", +;57: "TOURNAMENT", +;58: "SP", +;59: "TEAM DM", +;60: "CTF", +;61: "1FCTF", +;62: "OVERLOAD", +;63: "HARVESTER", +;64: "TEAMTOURNAMENT" +;65:}; +;66: +;67:static int const numTeamArenaGameTypes = sizeof(teamArenaGameTypes) / sizeof(const char*); +;68: +;69: +;70:static const char *teamArenaGameNames[] = { +;71: "Free For All", +;72: "Tournament", +;73: "Single Player", +;74: "Team Deathmatch", +;75: "Capture the Flag", +;76: "One Flag CTF", +;77: "Overload", +;78: "Harvester", +;79: "Team Tournament", +;80:}; +;81: +;82:static int const numTeamArenaGameNames = sizeof(teamArenaGameNames) / sizeof(const char*); +;83: +;84: +;85:static const int numServerFilters = sizeof(serverFilters) / sizeof(serverFilter_t); +;86: +;87:static const char *sortKeys[] = { +;88: "Server Name", +;89: "Map Name", +;90: "Open Player Spots", +;91: "Game Type", +;92: "Ping Time" +;93:}; +;94:static const int numSortKeys = sizeof(sortKeys) / sizeof(const char*); +;95: +;96:static char* netnames[] = { +;97: "???", +;98: "UDP", +;99: "IPX", +;100: NULL +;101:}; +;102: +;103:#ifndef MISSIONPACK // bk001206 +;104:static char quake3worldMessage[] = "Visit www.quake3world.com - News, Community, Events, Files"; +;105:#endif +;106: +;107:static int gamecodetoui[] = {4,2,3,0,5,1,6}; +;108:static int uitogamecode[] = {4,6,2,3,1,5,7}; +;109: +;110: +;111:static void UI_StartServerRefresh(qboolean full); +;112:static void UI_StopServerRefresh( void ); +;113:static void UI_DoServerRefresh( void ); +;114:static void UI_FeederSelection(float feederID, int index); +;115:static void UI_BuildServerDisplayList(qboolean force); +;116:static void UI_BuildServerStatus(qboolean force); +;117:static void UI_BuildFindPlayerList(qboolean force); +;118:static int QDECL UI_ServersQsortCompare( const void *arg1, const void *arg2 ); +;119:static int UI_MapCountByGameType(qboolean singlePlayer); +;120:static int UI_HeadCountByTeam( void ); +;121:static void UI_ParseGameInfo(const char *teamFile); +;122:static void UI_ParseTeamInfo(const char *teamFile); +;123:static const char *UI_SelectedMap(int index, int *actual); +;124:static const char *UI_SelectedHead(int index, int *actual); +;125:static int UI_GetIndexFromSelection(int actual); +;126: +;127:int ProcessNewUI( int command, int arg0, int arg1, int arg2, int arg3, int arg4, int arg5, int arg6 ); +;128: +;129:/* +;130:================ +;131:vmMain +;132: +;133:This is the only way control passes into the module. +;134:This must be the very first function compiled into the .qvm file +;135:================ +;136:*/ +;137:vmCvar_t ui_new; +;138:vmCvar_t ui_debug; +;139:vmCvar_t ui_initialized; +;140:vmCvar_t ui_teamArenaFirstRun; +;141: +;142:void _UI_Init( qboolean ); +;143:void _UI_Shutdown( void ); +;144:void _UI_KeyEvent( int key, qboolean down ); +;145:void _UI_MouseEvent( int dx, int dy ); +;146:void _UI_Refresh( int realtime ); +;147:qboolean _UI_IsFullscreen( void ); +;148:int vmMain( int command, int arg0, int arg1, int arg2, int arg3, int arg4, int arg5, int arg6, int arg7, int arg8, int arg9, int arg10, int arg11 ) { +line 149 +;149: switch ( command ) { +ADDRLP4 0 +ADDRFP4 0 +INDIRI4 +ASGNI4 +ADDRLP4 0 +INDIRI4 +CNSTI4 0 +LTI4 $151 +ADDRLP4 0 +INDIRI4 +CNSTI4 10 +GTI4 $151 +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 $164 +ADDP4 +INDIRP4 +JUMPV +lit +align 4 +LABELV $164 +address $153 +address $154 +address $155 +address $156 +address $157 +address $158 +address $159 +address $160 +address $161 +address $162 +address $163 +code +LABELV $153 +line 151 +;150: case UI_GETAPIVERSION: +;151: return UI_API_VERSION; +CNSTI4 6 +RETI4 +ADDRGP4 $150 +JUMPV +LABELV $154 +line 154 +;152: +;153: case UI_INIT: +;154: _UI_Init(arg0); +ADDRFP4 4 +INDIRI4 +ARGI4 +ADDRGP4 _UI_Init +CALLV +pop +line 155 +;155: return 0; +CNSTI4 0 +RETI4 +ADDRGP4 $150 +JUMPV +LABELV $155 +line 158 +;156: +;157: case UI_SHUTDOWN: +;158: _UI_Shutdown(); +ADDRGP4 _UI_Shutdown +CALLV +pop +line 159 +;159: return 0; +CNSTI4 0 +RETI4 +ADDRGP4 $150 +JUMPV +LABELV $156 +line 162 +;160: +;161: case UI_KEY_EVENT: +;162: _UI_KeyEvent( arg0, arg1 ); +ADDRFP4 4 +INDIRI4 +ARGI4 +ADDRFP4 8 +INDIRI4 +ARGI4 +ADDRGP4 _UI_KeyEvent +CALLV +pop +line 163 +;163: return 0; +CNSTI4 0 +RETI4 +ADDRGP4 $150 +JUMPV +LABELV $157 +line 166 +;164: +;165: case UI_MOUSE_EVENT: +;166: _UI_MouseEvent( arg0, arg1 ); +ADDRFP4 4 +INDIRI4 +ARGI4 +ADDRFP4 8 +INDIRI4 +ARGI4 +ADDRGP4 _UI_MouseEvent +CALLV +pop +line 167 +;167: return 0; +CNSTI4 0 +RETI4 +ADDRGP4 $150 +JUMPV +LABELV $158 +line 170 +;168: +;169: case UI_REFRESH: +;170: _UI_Refresh( arg0 ); +ADDRFP4 4 +INDIRI4 +ARGI4 +ADDRGP4 _UI_Refresh +CALLV +pop +line 171 +;171: return 0; +CNSTI4 0 +RETI4 +ADDRGP4 $150 +JUMPV +LABELV $159 +line 174 +;172: +;173: case UI_IS_FULLSCREEN: +;174: return _UI_IsFullscreen(); +ADDRLP4 4 +ADDRGP4 _UI_IsFullscreen +CALLI4 +ASGNI4 +ADDRLP4 4 +INDIRI4 +RETI4 +ADDRGP4 $150 +JUMPV +LABELV $160 +line 177 +;175: +;176: case UI_SET_ACTIVE_MENU: +;177: _UI_SetActiveMenu( arg0 ); +ADDRFP4 4 +INDIRI4 +ARGI4 +ADDRGP4 _UI_SetActiveMenu +CALLV +pop +line 178 +;178: return 0; +CNSTI4 0 +RETI4 +ADDRGP4 $150 +JUMPV +LABELV $161 +line 181 +;179: +;180: case UI_CONSOLE_COMMAND: +;181: return UI_ConsoleCommand(arg0); +ADDRFP4 4 +INDIRI4 +ARGI4 +ADDRLP4 8 +ADDRGP4 UI_ConsoleCommand +CALLI4 +ASGNI4 +ADDRLP4 8 +INDIRI4 +RETI4 +ADDRGP4 $150 +JUMPV +LABELV $162 +line 184 +;182: +;183: case UI_DRAW_CONNECT_SCREEN: +;184: UI_DrawConnectScreen( arg0 ); +ADDRFP4 4 +INDIRI4 +ARGI4 +ADDRGP4 UI_DrawConnectScreen +CALLV +pop +line 185 +;185: return 0; +CNSTI4 0 +RETI4 +ADDRGP4 $150 +JUMPV +LABELV $163 +line 187 +;186: case UI_HASUNIQUECDKEY: // mod authors need to observe this +;187: return qtrue; // bk010117 - change this to qfalse for mods! +CNSTI4 1 +RETI4 +ADDRGP4 $150 +JUMPV +LABELV $151 +line 191 +;188: +;189: } +;190: +;191: return -1; +CNSTI4 -1 +RETI4 +LABELV $150 +endproc vmMain 12 8 +export AssetCache +proc AssetCache 84 8 +line 196 +;192:} +;193: +;194: +;195: +;196:void AssetCache() { +line 202 +;197: int n; +;198: //if (Assets.textFont == NULL) { +;199: //} +;200: //Assets.background = trap_R_RegisterShaderNoMip( ASSET_BACKGROUND ); +;201: //Com_Printf("Menu Size: %i bytes\n", sizeof(Menus)); +;202: uiInfo.uiDC.Assets.gradientBar = trap_R_RegisterShaderNoMip( ASSET_GRADIENTBAR ); +ADDRGP4 $168 +ARGP4 +ADDRLP4 4 +ADDRGP4 trap_R_RegisterShaderNoMip +CALLI4 +ASGNI4 +ADDRGP4 uiInfo+228+61660 +ADDRLP4 4 +INDIRI4 +ASGNI4 +line 203 +;203: uiInfo.uiDC.Assets.fxBasePic = trap_R_RegisterShaderNoMip( ART_FX_BASE ); +ADDRGP4 $171 +ARGP4 +ADDRLP4 8 +ADDRGP4 trap_R_RegisterShaderNoMip +CALLI4 +ASGNI4 +ADDRGP4 uiInfo+228+61768 +ADDRLP4 8 +INDIRI4 +ASGNI4 +line 204 +;204: uiInfo.uiDC.Assets.fxPic[0] = trap_R_RegisterShaderNoMip( ART_FX_RED ); +ADDRGP4 $174 +ARGP4 +ADDRLP4 12 +ADDRGP4 trap_R_RegisterShaderNoMip +CALLI4 +ASGNI4 +ADDRGP4 uiInfo+228+61772 +ADDRLP4 12 +INDIRI4 +ASGNI4 +line 205 +;205: uiInfo.uiDC.Assets.fxPic[1] = trap_R_RegisterShaderNoMip( ART_FX_YELLOW ); +ADDRGP4 $178 +ARGP4 +ADDRLP4 16 +ADDRGP4 trap_R_RegisterShaderNoMip +CALLI4 +ASGNI4 +ADDRGP4 uiInfo+228+61772+4 +ADDRLP4 16 +INDIRI4 +ASGNI4 +line 206 +;206: uiInfo.uiDC.Assets.fxPic[2] = trap_R_RegisterShaderNoMip( ART_FX_GREEN ); +ADDRGP4 $182 +ARGP4 +ADDRLP4 20 +ADDRGP4 trap_R_RegisterShaderNoMip +CALLI4 +ASGNI4 +ADDRGP4 uiInfo+228+61772+8 +ADDRLP4 20 +INDIRI4 +ASGNI4 +line 207 +;207: uiInfo.uiDC.Assets.fxPic[3] = trap_R_RegisterShaderNoMip( ART_FX_TEAL ); +ADDRGP4 $186 +ARGP4 +ADDRLP4 24 +ADDRGP4 trap_R_RegisterShaderNoMip +CALLI4 +ASGNI4 +ADDRGP4 uiInfo+228+61772+12 +ADDRLP4 24 +INDIRI4 +ASGNI4 +line 208 +;208: uiInfo.uiDC.Assets.fxPic[4] = trap_R_RegisterShaderNoMip( ART_FX_BLUE ); +ADDRGP4 $190 +ARGP4 +ADDRLP4 28 +ADDRGP4 trap_R_RegisterShaderNoMip +CALLI4 +ASGNI4 +ADDRGP4 uiInfo+228+61772+16 +ADDRLP4 28 +INDIRI4 +ASGNI4 +line 209 +;209: uiInfo.uiDC.Assets.fxPic[5] = trap_R_RegisterShaderNoMip( ART_FX_CYAN ); +ADDRGP4 $194 +ARGP4 +ADDRLP4 32 +ADDRGP4 trap_R_RegisterShaderNoMip +CALLI4 +ASGNI4 +ADDRGP4 uiInfo+228+61772+20 +ADDRLP4 32 +INDIRI4 +ASGNI4 +line 210 +;210: uiInfo.uiDC.Assets.fxPic[6] = trap_R_RegisterShaderNoMip( ART_FX_WHITE ); +ADDRGP4 $198 +ARGP4 +ADDRLP4 36 +ADDRGP4 trap_R_RegisterShaderNoMip +CALLI4 +ASGNI4 +ADDRGP4 uiInfo+228+61772+24 +ADDRLP4 36 +INDIRI4 +ASGNI4 +line 211 +;211: uiInfo.uiDC.Assets.scrollBar = trap_R_RegisterShaderNoMip( ASSET_SCROLLBAR ); +ADDRGP4 $201 +ARGP4 +ADDRLP4 40 +ADDRGP4 trap_R_RegisterShaderNoMip +CALLI4 +ASGNI4 +ADDRGP4 uiInfo+228+61680 +ADDRLP4 40 +INDIRI4 +ASGNI4 +line 212 +;212: uiInfo.uiDC.Assets.scrollBarArrowDown = trap_R_RegisterShaderNoMip( ASSET_SCROLLBAR_ARROWDOWN ); +ADDRGP4 $204 +ARGP4 +ADDRLP4 44 +ADDRGP4 trap_R_RegisterShaderNoMip +CALLI4 +ASGNI4 +ADDRGP4 uiInfo+228+61668 +ADDRLP4 44 +INDIRI4 +ASGNI4 +line 213 +;213: uiInfo.uiDC.Assets.scrollBarArrowUp = trap_R_RegisterShaderNoMip( ASSET_SCROLLBAR_ARROWUP ); +ADDRGP4 $207 +ARGP4 +ADDRLP4 48 +ADDRGP4 trap_R_RegisterShaderNoMip +CALLI4 +ASGNI4 +ADDRGP4 uiInfo+228+61664 +ADDRLP4 48 +INDIRI4 +ASGNI4 +line 214 +;214: uiInfo.uiDC.Assets.scrollBarArrowLeft = trap_R_RegisterShaderNoMip( ASSET_SCROLLBAR_ARROWLEFT ); +ADDRGP4 $210 +ARGP4 +ADDRLP4 52 +ADDRGP4 trap_R_RegisterShaderNoMip +CALLI4 +ASGNI4 +ADDRGP4 uiInfo+228+61672 +ADDRLP4 52 +INDIRI4 +ASGNI4 +line 215 +;215: uiInfo.uiDC.Assets.scrollBarArrowRight = trap_R_RegisterShaderNoMip( ASSET_SCROLLBAR_ARROWRIGHT ); +ADDRGP4 $213 +ARGP4 +ADDRLP4 56 +ADDRGP4 trap_R_RegisterShaderNoMip +CALLI4 +ASGNI4 +ADDRGP4 uiInfo+228+61676 +ADDRLP4 56 +INDIRI4 +ASGNI4 +line 216 +;216: uiInfo.uiDC.Assets.scrollBarThumb = trap_R_RegisterShaderNoMip( ASSET_SCROLL_THUMB ); +ADDRGP4 $216 +ARGP4 +ADDRLP4 60 +ADDRGP4 trap_R_RegisterShaderNoMip +CALLI4 +ASGNI4 +ADDRGP4 uiInfo+228+61684 +ADDRLP4 60 +INDIRI4 +ASGNI4 +line 217 +;217: uiInfo.uiDC.Assets.sliderBar = trap_R_RegisterShaderNoMip( ASSET_SLIDER_BAR ); +ADDRGP4 $219 +ARGP4 +ADDRLP4 64 +ADDRGP4 trap_R_RegisterShaderNoMip +CALLI4 +ASGNI4 +ADDRGP4 uiInfo+228+61700 +ADDRLP4 64 +INDIRI4 +ASGNI4 +line 218 +;218: uiInfo.uiDC.Assets.sliderThumb = trap_R_RegisterShaderNoMip( ASSET_SLIDER_THUMB ); +ADDRGP4 $222 +ARGP4 +ADDRLP4 68 +ADDRGP4 trap_R_RegisterShaderNoMip +CALLI4 +ASGNI4 +ADDRGP4 uiInfo+228+61704 +ADDRLP4 68 +INDIRI4 +ASGNI4 +line 220 +;219: +;220: for( n = 0; n < NUM_CROSSHAIRS; n++ ) { +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +LABELV $223 +line 221 +;221: uiInfo.uiDC.Assets.crosshairShader[n] = trap_R_RegisterShaderNoMip( va("gfx/2d/crosshair%c", 'a' + n ) ); +ADDRGP4 $229 +ARGP4 +ADDRLP4 0 +INDIRI4 +CNSTI4 97 +ADDI4 +ARGI4 +ADDRLP4 76 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRLP4 76 +INDIRP4 +ARGP4 +ADDRLP4 80 +ADDRGP4 trap_R_RegisterShaderNoMip +CALLI4 +ASGNI4 +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 uiInfo+228+61800 +ADDP4 +ADDRLP4 80 +INDIRI4 +ASGNI4 +line 222 +;222: } +LABELV $224 +line 220 +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +ADDRLP4 0 +INDIRI4 +CNSTI4 10 +LTI4 $223 +line 224 +;223: +;224: uiInfo.newHighScoreSound = trap_S_RegisterSound("sound/feedback/voc_newhighscore.wav", qfalse); +ADDRGP4 $231 +ARGP4 +CNSTI4 0 +ARGI4 +ADDRLP4 72 +ADDRGP4 trap_S_RegisterSound +CALLI4 +ASGNI4 +ADDRGP4 uiInfo+119484 +ADDRLP4 72 +INDIRI4 +ASGNI4 +line 225 +;225:} +LABELV $165 +endproc AssetCache 84 8 +export _UI_DrawSides +proc _UI_DrawSides 12 36 +line 227 +;226: +;227:void _UI_DrawSides(float x, float y, float w, float h, float size) { +line 228 +;228: UI_AdjustFrom640( &x, &y, &w, &h ); +ADDRFP4 0 +ARGP4 +ADDRFP4 4 +ARGP4 +ADDRFP4 8 +ARGP4 +ADDRFP4 12 +ARGP4 +ADDRGP4 UI_AdjustFrom640 +CALLV +pop +line 229 +;229: size *= uiInfo.uiDC.xscale; +ADDRFP4 16 +ADDRFP4 16 +INDIRF4 +ADDRGP4 uiInfo+200 +INDIRF4 +MULF4 +ASGNF4 +line 230 +;230: trap_R_DrawStretchPic( x, y, size, h, 0, 0, 0, 0, uiInfo.uiDC.whiteShader ); +ADDRFP4 0 +INDIRF4 +ARGF4 +ADDRFP4 4 +INDIRF4 +ARGF4 +ADDRFP4 16 +INDIRF4 +ARGF4 +ADDRFP4 12 +INDIRF4 +ARGF4 +ADDRLP4 0 +CNSTF4 0 +ASGNF4 +ADDRLP4 0 +INDIRF4 +ARGF4 +ADDRLP4 0 +INDIRF4 +ARGF4 +ADDRLP4 0 +INDIRF4 +ARGF4 +ADDRLP4 0 +INDIRF4 +ARGF4 +ADDRGP4 uiInfo+73400 +INDIRI4 +ARGI4 +ADDRGP4 trap_R_DrawStretchPic +CALLV +pop +line 231 +;231: trap_R_DrawStretchPic( x + w - size, y, size, h, 0, 0, 0, 0, uiInfo.uiDC.whiteShader ); +ADDRLP4 4 +ADDRFP4 16 +INDIRF4 +ASGNF4 +ADDRFP4 0 +INDIRF4 +ADDRFP4 8 +INDIRF4 +ADDF4 +ADDRLP4 4 +INDIRF4 +SUBF4 +ARGF4 +ADDRFP4 4 +INDIRF4 +ARGF4 +ADDRLP4 4 +INDIRF4 +ARGF4 +ADDRFP4 12 +INDIRF4 +ARGF4 +ADDRLP4 8 +CNSTF4 0 +ASGNF4 +ADDRLP4 8 +INDIRF4 +ARGF4 +ADDRLP4 8 +INDIRF4 +ARGF4 +ADDRLP4 8 +INDIRF4 +ARGF4 +ADDRLP4 8 +INDIRF4 +ARGF4 +ADDRGP4 uiInfo+73400 +INDIRI4 +ARGI4 +ADDRGP4 trap_R_DrawStretchPic +CALLV +pop +line 232 +;232:} +LABELV $232 +endproc _UI_DrawSides 12 36 +export _UI_DrawTopBottom +proc _UI_DrawTopBottom 12 36 +line 234 +;233: +;234:void _UI_DrawTopBottom(float x, float y, float w, float h, float size) { +line 235 +;235: UI_AdjustFrom640( &x, &y, &w, &h ); +ADDRFP4 0 +ARGP4 +ADDRFP4 4 +ARGP4 +ADDRFP4 8 +ARGP4 +ADDRFP4 12 +ARGP4 +ADDRGP4 UI_AdjustFrom640 +CALLV +pop +line 236 +;236: size *= uiInfo.uiDC.yscale; +ADDRFP4 16 +ADDRFP4 16 +INDIRF4 +ADDRGP4 uiInfo+196 +INDIRF4 +MULF4 +ASGNF4 +line 237 +;237: trap_R_DrawStretchPic( x, y, w, size, 0, 0, 0, 0, uiInfo.uiDC.whiteShader ); +ADDRFP4 0 +INDIRF4 +ARGF4 +ADDRFP4 4 +INDIRF4 +ARGF4 +ADDRFP4 8 +INDIRF4 +ARGF4 +ADDRFP4 16 +INDIRF4 +ARGF4 +ADDRLP4 0 +CNSTF4 0 +ASGNF4 +ADDRLP4 0 +INDIRF4 +ARGF4 +ADDRLP4 0 +INDIRF4 +ARGF4 +ADDRLP4 0 +INDIRF4 +ARGF4 +ADDRLP4 0 +INDIRF4 +ARGF4 +ADDRGP4 uiInfo+73400 +INDIRI4 +ARGI4 +ADDRGP4 trap_R_DrawStretchPic +CALLV +pop +line 238 +;238: trap_R_DrawStretchPic( x, y + h - size, w, size, 0, 0, 0, 0, uiInfo.uiDC.whiteShader ); +ADDRFP4 0 +INDIRF4 +ARGF4 +ADDRLP4 4 +ADDRFP4 16 +INDIRF4 +ASGNF4 +ADDRFP4 4 +INDIRF4 +ADDRFP4 12 +INDIRF4 +ADDF4 +ADDRLP4 4 +INDIRF4 +SUBF4 +ARGF4 +ADDRFP4 8 +INDIRF4 +ARGF4 +ADDRLP4 4 +INDIRF4 +ARGF4 +ADDRLP4 8 +CNSTF4 0 +ASGNF4 +ADDRLP4 8 +INDIRF4 +ARGF4 +ADDRLP4 8 +INDIRF4 +ARGF4 +ADDRLP4 8 +INDIRF4 +ARGF4 +ADDRLP4 8 +INDIRF4 +ARGF4 +ADDRGP4 uiInfo+73400 +INDIRI4 +ARGI4 +ADDRGP4 trap_R_DrawStretchPic +CALLV +pop +line 239 +;239:} +LABELV $236 +endproc _UI_DrawTopBottom 12 36 +export _UI_DrawRect +proc _UI_DrawRect 0 20 +line 247 +;240:/* +;241:================ +;242:UI_DrawRect +;243: +;244:Coordinates are 640*480 virtual values +;245:================= +;246:*/ +;247:void _UI_DrawRect( float x, float y, float width, float height, float size, const float *color ) { +line 248 +;248: trap_R_SetColor( color ); +ADDRFP4 20 +INDIRP4 +ARGP4 +ADDRGP4 trap_R_SetColor +CALLV +pop +line 250 +;249: +;250: _UI_DrawTopBottom(x, y, width, height, size); +ADDRFP4 0 +INDIRF4 +ARGF4 +ADDRFP4 4 +INDIRF4 +ARGF4 +ADDRFP4 8 +INDIRF4 +ARGF4 +ADDRFP4 12 +INDIRF4 +ARGF4 +ADDRFP4 16 +INDIRF4 +ARGF4 +ADDRGP4 _UI_DrawTopBottom +CALLV +pop +line 251 +;251: _UI_DrawSides(x, y, width, height, size); +ADDRFP4 0 +INDIRF4 +ARGF4 +ADDRFP4 4 +INDIRF4 +ARGF4 +ADDRFP4 8 +INDIRF4 +ARGF4 +ADDRFP4 12 +INDIRF4 +ARGF4 +ADDRFP4 16 +INDIRF4 +ARGF4 +ADDRGP4 _UI_DrawSides +CALLV +pop +line 253 +;252: +;253: trap_R_SetColor( NULL ); +CNSTP4 0 +ARGP4 +ADDRGP4 trap_R_SetColor +CALLV +pop +line 254 +;254:} +LABELV $240 +endproc _UI_DrawRect 0 20 +export Text_Width +proc Text_Width 48 4 +line 259 +;255: +;256: +;257: +;258: +;259:int Text_Width(const char *text, float scale, int limit) { +line 267 +;260: int count,len; +;261: float out; +;262: glyphInfo_t *glyph; +;263: float useScale; +;264:// TTimo: FIXME: use const unsigned char to avoid getting a warning in linux debug (.so) when using glyph = &font->glyphs[*s]; +;265:// but use const char to build with lcc.. +;266:// const unsigned char *s = text; // bk001206 - unsigned +;267: const char *s = text; +ADDRLP4 0 +ADDRFP4 0 +INDIRP4 +ASGNP4 +line 268 +;268: fontInfo_t *font = &uiInfo.uiDC.Assets.textFont; +ADDRLP4 12 +ADDRGP4 uiInfo+228+12 +ASGNP4 +line 269 +;269: if (scale <= ui_smallFont.value) { +ADDRFP4 4 +INDIRF4 +ADDRGP4 ui_smallFont+8 +INDIRF4 +GTF4 $244 +line 270 +;270: font = &uiInfo.uiDC.Assets.smallFont; +ADDRLP4 12 +ADDRGP4 uiInfo+228+20560 +ASGNP4 +line 271 +;271: } else if (scale >= ui_bigFont.value) { +ADDRGP4 $245 +JUMPV +LABELV $244 +ADDRFP4 4 +INDIRF4 +ADDRGP4 ui_bigFont+8 +INDIRF4 +LTF4 $249 +line 272 +;272: font = &uiInfo.uiDC.Assets.bigFont; +ADDRLP4 12 +ADDRGP4 uiInfo+228+41108 +ASGNP4 +line 273 +;273: } +LABELV $249 +LABELV $245 +line 274 +;274: useScale = scale * font->glyphScale; +ADDRLP4 24 +ADDRFP4 4 +INDIRF4 +ADDRLP4 12 +INDIRP4 +CNSTI4 20480 +ADDP4 +INDIRF4 +MULF4 +ASGNF4 +line 275 +;275: out = 0; +ADDRLP4 20 +CNSTF4 0 +ASGNF4 +line 276 +;276: if (text) { +ADDRFP4 0 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $254 +line 277 +;277: len = strlen(text); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRLP4 28 +ADDRGP4 strlen +CALLI4 +ASGNI4 +ADDRLP4 8 +ADDRLP4 28 +INDIRI4 +ASGNI4 +line 278 +;278: if (limit > 0 && len > limit) { +ADDRLP4 32 +ADDRFP4 8 +INDIRI4 +ASGNI4 +ADDRLP4 32 +INDIRI4 +CNSTI4 0 +LEI4 $256 +ADDRLP4 8 +INDIRI4 +ADDRLP4 32 +INDIRI4 +LEI4 $256 +line 279 +;279: len = limit; +ADDRLP4 8 +ADDRFP4 8 +INDIRI4 +ASGNI4 +line 280 +;280: } +LABELV $256 +line 281 +;281: count = 0; +ADDRLP4 4 +CNSTI4 0 +ASGNI4 +ADDRGP4 $259 +JUMPV +LABELV $258 +line 282 +;282: while (s && *s && count < len) { +line 283 +;283: if ( Q_IsColorString(s) ) { +ADDRLP4 0 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $261 +ADDRLP4 40 +CNSTI4 94 +ASGNI4 +ADDRLP4 0 +INDIRP4 +INDIRI1 +CVII4 1 +ADDRLP4 40 +INDIRI4 +NEI4 $261 +ADDRLP4 44 +ADDRLP4 0 +INDIRP4 +CNSTI4 1 +ADDP4 +INDIRI1 +CVII4 1 +ASGNI4 +ADDRLP4 44 +INDIRI4 +CNSTI4 0 +EQI4 $261 +ADDRLP4 44 +INDIRI4 +ADDRLP4 40 +INDIRI4 +EQI4 $261 +line 284 +;284: s += 2; +ADDRLP4 0 +ADDRLP4 0 +INDIRP4 +CNSTI4 2 +ADDP4 +ASGNP4 +line 285 +;285: continue; +ADDRGP4 $259 +JUMPV +LABELV $261 +line 286 +;286: } else { +line 287 +;287: glyph = &font->glyphs[(int)*s]; // TTimo: FIXME: getting nasty warnings without the cast, hopefully this doesn't break the VM build +ADDRLP4 16 +CNSTI4 80 +ADDRLP4 0 +INDIRP4 +INDIRI1 +CVII4 1 +MULI4 +ADDRLP4 12 +INDIRP4 +ADDP4 +ASGNP4 +line 288 +;288: out += glyph->xSkip; +ADDRLP4 20 +ADDRLP4 20 +INDIRF4 +ADDRLP4 16 +INDIRP4 +CNSTI4 16 +ADDP4 +INDIRI4 +CVIF4 4 +ADDF4 +ASGNF4 +line 289 +;289: s++; +ADDRLP4 0 +ADDRLP4 0 +INDIRP4 +CNSTI4 1 +ADDP4 +ASGNP4 +line 290 +;290: count++; +ADDRLP4 4 +ADDRLP4 4 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 291 +;291: } +line 292 +;292: } +LABELV $259 +line 282 +ADDRLP4 0 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $264 +ADDRLP4 0 +INDIRP4 +INDIRI1 +CVII4 1 +CNSTI4 0 +EQI4 $264 +ADDRLP4 4 +INDIRI4 +ADDRLP4 8 +INDIRI4 +LTI4 $258 +LABELV $264 +line 293 +;293: } +LABELV $254 +line 294 +;294: return out * useScale; +ADDRLP4 20 +INDIRF4 +ADDRLP4 24 +INDIRF4 +MULF4 +CVFI4 4 +RETI4 +LABELV $241 +endproc Text_Width 48 4 +export Text_Height +proc Text_Height 48 4 +line 297 +;295:} +;296: +;297:int Text_Height(const char *text, float scale, int limit) { +line 304 +;298: int len, count; +;299: float max; +;300: glyphInfo_t *glyph; +;301: float useScale; +;302:// TTimo: FIXME +;303:// const unsigned char *s = text; // bk001206 - unsigned +;304: const char *s = text; // bk001206 - unsigned +ADDRLP4 0 +ADDRFP4 0 +INDIRP4 +ASGNP4 +line 305 +;305: fontInfo_t *font = &uiInfo.uiDC.Assets.textFont; +ADDRLP4 20 +ADDRGP4 uiInfo+228+12 +ASGNP4 +line 306 +;306: if (scale <= ui_smallFont.value) { +ADDRFP4 4 +INDIRF4 +ADDRGP4 ui_smallFont+8 +INDIRF4 +GTF4 $268 +line 307 +;307: font = &uiInfo.uiDC.Assets.smallFont; +ADDRLP4 20 +ADDRGP4 uiInfo+228+20560 +ASGNP4 +line 308 +;308: } else if (scale >= ui_bigFont.value) { +ADDRGP4 $269 +JUMPV +LABELV $268 +ADDRFP4 4 +INDIRF4 +ADDRGP4 ui_bigFont+8 +INDIRF4 +LTF4 $273 +line 309 +;309: font = &uiInfo.uiDC.Assets.bigFont; +ADDRLP4 20 +ADDRGP4 uiInfo+228+41108 +ASGNP4 +line 310 +;310: } +LABELV $273 +LABELV $269 +line 311 +;311: useScale = scale * font->glyphScale; +ADDRLP4 24 +ADDRFP4 4 +INDIRF4 +ADDRLP4 20 +INDIRP4 +CNSTI4 20480 +ADDP4 +INDIRF4 +MULF4 +ASGNF4 +line 312 +;312: max = 0; +ADDRLP4 16 +CNSTF4 0 +ASGNF4 +line 313 +;313: if (text) { +ADDRFP4 0 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $278 +line 314 +;314: len = strlen(text); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRLP4 28 +ADDRGP4 strlen +CALLI4 +ASGNI4 +ADDRLP4 8 +ADDRLP4 28 +INDIRI4 +ASGNI4 +line 315 +;315: if (limit > 0 && len > limit) { +ADDRLP4 32 +ADDRFP4 8 +INDIRI4 +ASGNI4 +ADDRLP4 32 +INDIRI4 +CNSTI4 0 +LEI4 $280 +ADDRLP4 8 +INDIRI4 +ADDRLP4 32 +INDIRI4 +LEI4 $280 +line 316 +;316: len = limit; +ADDRLP4 8 +ADDRFP4 8 +INDIRI4 +ASGNI4 +line 317 +;317: } +LABELV $280 +line 318 +;318: count = 0; +ADDRLP4 4 +CNSTI4 0 +ASGNI4 +ADDRGP4 $283 +JUMPV +LABELV $282 +line 319 +;319: while (s && *s && count < len) { +line 320 +;320: if ( Q_IsColorString(s) ) { +ADDRLP4 0 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $285 +ADDRLP4 40 +CNSTI4 94 +ASGNI4 +ADDRLP4 0 +INDIRP4 +INDIRI1 +CVII4 1 +ADDRLP4 40 +INDIRI4 +NEI4 $285 +ADDRLP4 44 +ADDRLP4 0 +INDIRP4 +CNSTI4 1 +ADDP4 +INDIRI1 +CVII4 1 +ASGNI4 +ADDRLP4 44 +INDIRI4 +CNSTI4 0 +EQI4 $285 +ADDRLP4 44 +INDIRI4 +ADDRLP4 40 +INDIRI4 +EQI4 $285 +line 321 +;321: s += 2; +ADDRLP4 0 +ADDRLP4 0 +INDIRP4 +CNSTI4 2 +ADDP4 +ASGNP4 +line 322 +;322: continue; +ADDRGP4 $283 +JUMPV +LABELV $285 +line 323 +;323: } else { +line 324 +;324: glyph = &font->glyphs[(int)*s]; // TTimo: FIXME: getting nasty warnings without the cast, hopefully this doesn't break the VM build +ADDRLP4 12 +CNSTI4 80 +ADDRLP4 0 +INDIRP4 +INDIRI1 +CVII4 1 +MULI4 +ADDRLP4 20 +INDIRP4 +ADDP4 +ASGNP4 +line 325 +;325: if (max < glyph->height) { +ADDRLP4 16 +INDIRF4 +ADDRLP4 12 +INDIRP4 +INDIRI4 +CVIF4 4 +GEF4 $287 +line 326 +;326: max = glyph->height; +ADDRLP4 16 +ADDRLP4 12 +INDIRP4 +INDIRI4 +CVIF4 4 +ASGNF4 +line 327 +;327: } +LABELV $287 +line 328 +;328: s++; +ADDRLP4 0 +ADDRLP4 0 +INDIRP4 +CNSTI4 1 +ADDP4 +ASGNP4 +line 329 +;329: count++; +ADDRLP4 4 +ADDRLP4 4 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 330 +;330: } +line 331 +;331: } +LABELV $283 +line 319 +ADDRLP4 0 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $290 +ADDRLP4 0 +INDIRP4 +INDIRI1 +CVII4 1 +CNSTI4 0 +EQI4 $290 +ADDRLP4 4 +INDIRI4 +ADDRLP4 8 +INDIRI4 +LTI4 $282 +LABELV $290 +line 332 +;332: } +LABELV $278 +line 333 +;333: return max * useScale; +ADDRLP4 16 +INDIRF4 +ADDRLP4 24 +INDIRF4 +MULF4 +CVFI4 4 +RETI4 +LABELV $265 +endproc Text_Height 48 4 +export Text_PaintChar +proc Text_PaintChar 8 36 +line 336 +;334:} +;335: +;336:void Text_PaintChar(float x, float y, float width, float height, float scale, float s, float t, float s2, float t2, qhandle_t hShader) { +line 338 +;337: float w, h; +;338: w = width * scale; +ADDRLP4 0 +ADDRFP4 8 +INDIRF4 +ADDRFP4 16 +INDIRF4 +MULF4 +ASGNF4 +line 339 +;339: h = height * scale; +ADDRLP4 4 +ADDRFP4 12 +INDIRF4 +ADDRFP4 16 +INDIRF4 +MULF4 +ASGNF4 +line 340 +;340: UI_AdjustFrom640( &x, &y, &w, &h ); +ADDRFP4 0 +ARGP4 +ADDRFP4 4 +ARGP4 +ADDRLP4 0 +ARGP4 +ADDRLP4 4 +ARGP4 +ADDRGP4 UI_AdjustFrom640 +CALLV +pop +line 341 +;341: trap_R_DrawStretchPic( x, y, w, h, s, t, s2, t2, hShader ); +ADDRFP4 0 +INDIRF4 +ARGF4 +ADDRFP4 4 +INDIRF4 +ARGF4 +ADDRLP4 0 +INDIRF4 +ARGF4 +ADDRLP4 4 +INDIRF4 +ARGF4 +ADDRFP4 20 +INDIRF4 +ARGF4 +ADDRFP4 24 +INDIRF4 +ARGF4 +ADDRFP4 28 +INDIRF4 +ARGF4 +ADDRFP4 32 +INDIRF4 +ARGF4 +ADDRFP4 36 +INDIRI4 +ARGI4 +ADDRGP4 trap_R_DrawStretchPic +CALLV +pop +line 342 +;342:} +LABELV $291 +endproc Text_PaintChar 8 36 +export Text_Paint +proc Text_Paint 84 40 +line 344 +;343: +;344:void Text_Paint(float x, float y, float scale, vec4_t color, const char *text, float adjust, int limit, int style) { +line 349 +;345: int len, count; +;346: vec4_t newColor; +;347: glyphInfo_t *glyph; +;348: float useScale; +;349: fontInfo_t *font = &uiInfo.uiDC.Assets.textFont; +ADDRLP4 28 +ADDRGP4 uiInfo+228+12 +ASGNP4 +line 350 +;350: if (scale <= ui_smallFont.value) { +ADDRFP4 8 +INDIRF4 +ADDRGP4 ui_smallFont+8 +INDIRF4 +GTF4 $295 +line 351 +;351: font = &uiInfo.uiDC.Assets.smallFont; +ADDRLP4 28 +ADDRGP4 uiInfo+228+20560 +ASGNP4 +line 352 +;352: } else if (scale >= ui_bigFont.value) { +ADDRGP4 $296 +JUMPV +LABELV $295 +ADDRFP4 8 +INDIRF4 +ADDRGP4 ui_bigFont+8 +INDIRF4 +LTF4 $300 +line 353 +;353: font = &uiInfo.uiDC.Assets.bigFont; +ADDRLP4 28 +ADDRGP4 uiInfo+228+41108 +ASGNP4 +line 354 +;354: } +LABELV $300 +LABELV $296 +line 355 +;355: useScale = scale * font->glyphScale; +ADDRLP4 20 +ADDRFP4 8 +INDIRF4 +ADDRLP4 28 +INDIRP4 +CNSTI4 20480 +ADDP4 +INDIRF4 +MULF4 +ASGNF4 +line 356 +;356: if (text) { +ADDRFP4 16 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $305 +line 359 +;357:// TTimo: FIXME +;358:// const unsigned char *s = text; // bk001206 - unsigned +;359: const char *s = text; // bk001206 - unsigned +ADDRLP4 36 +ADDRFP4 16 +INDIRP4 +ASGNP4 +line 360 +;360: trap_R_SetColor( color ); +ADDRFP4 12 +INDIRP4 +ARGP4 +ADDRGP4 trap_R_SetColor +CALLV +pop +line 361 +;361: memcpy(&newColor[0], &color[0], sizeof(vec4_t)); +ADDRLP4 4 +ARGP4 +ADDRFP4 12 +INDIRP4 +ARGP4 +CNSTI4 16 +ARGI4 +ADDRGP4 memcpy +CALLP4 +pop +line 362 +;362: len = strlen(text); +ADDRFP4 16 +INDIRP4 +ARGP4 +ADDRLP4 40 +ADDRGP4 strlen +CALLI4 +ASGNI4 +ADDRLP4 32 +ADDRLP4 40 +INDIRI4 +ASGNI4 +line 363 +;363: if (limit > 0 && len > limit) { +ADDRLP4 44 +ADDRFP4 24 +INDIRI4 +ASGNI4 +ADDRLP4 44 +INDIRI4 +CNSTI4 0 +LEI4 $307 +ADDRLP4 32 +INDIRI4 +ADDRLP4 44 +INDIRI4 +LEI4 $307 +line 364 +;364: len = limit; +ADDRLP4 32 +ADDRFP4 24 +INDIRI4 +ASGNI4 +line 365 +;365: } +LABELV $307 +line 366 +;366: count = 0; +ADDRLP4 24 +CNSTI4 0 +ASGNI4 +ADDRGP4 $310 +JUMPV +LABELV $309 +line 367 +;367: while (s && *s && count < len) { +line 368 +;368: glyph = &font->glyphs[(int)*s]; // TTimo: FIXME: getting nasty warnings without the cast, hopefully this doesn't break the VM build +ADDRLP4 0 +CNSTI4 80 +ADDRLP4 36 +INDIRP4 +INDIRI1 +CVII4 1 +MULI4 +ADDRLP4 28 +INDIRP4 +ADDP4 +ASGNP4 +line 371 +;369: //int yadj = Assets.textFont.glyphs[text[i]].bottom + Assets.textFont.glyphs[text[i]].top; +;370: //float yadj = scale * (Assets.textFont.glyphs[text[i]].imageHeight - Assets.textFont.glyphs[text[i]].height); +;371: if ( Q_IsColorString( s ) ) { +ADDRLP4 36 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $312 +ADDRLP4 52 +CNSTI4 94 +ASGNI4 +ADDRLP4 36 +INDIRP4 +INDIRI1 +CVII4 1 +ADDRLP4 52 +INDIRI4 +NEI4 $312 +ADDRLP4 56 +ADDRLP4 36 +INDIRP4 +CNSTI4 1 +ADDP4 +INDIRI1 +CVII4 1 +ASGNI4 +ADDRLP4 56 +INDIRI4 +CNSTI4 0 +EQI4 $312 +ADDRLP4 56 +INDIRI4 +ADDRLP4 52 +INDIRI4 +EQI4 $312 +line 372 +;372: memcpy( newColor, g_color_table[ColorIndex(*(s+1))], sizeof( newColor ) ); +ADDRLP4 4 +ARGP4 +ADDRLP4 36 +INDIRP4 +CNSTI4 1 +ADDP4 +INDIRI1 +CVII4 1 +CNSTI4 48 +SUBI4 +CNSTI4 7 +BANDI4 +CNSTI4 4 +LSHI4 +ADDRGP4 g_color_table +ADDP4 +ARGP4 +CNSTI4 16 +ARGI4 +ADDRGP4 memcpy +CALLP4 +pop +line 373 +;373: newColor[3] = color[3]; +ADDRLP4 4+12 +ADDRFP4 12 +INDIRP4 +CNSTI4 12 +ADDP4 +INDIRF4 +ASGNF4 +line 374 +;374: trap_R_SetColor( newColor ); +ADDRLP4 4 +ARGP4 +ADDRGP4 trap_R_SetColor +CALLV +pop +line 375 +;375: s += 2; +ADDRLP4 36 +ADDRLP4 36 +INDIRP4 +CNSTI4 2 +ADDP4 +ASGNP4 +line 376 +;376: continue; +ADDRGP4 $310 +JUMPV +LABELV $312 +line 377 +;377: } else { +line 378 +;378: float yadj = useScale * glyph->top; +ADDRLP4 60 +ADDRLP4 20 +INDIRF4 +ADDRLP4 0 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRI4 +CVIF4 4 +MULF4 +ASGNF4 +line 379 +;379: if (style == ITEM_TEXTSTYLE_SHADOWED || style == ITEM_TEXTSTYLE_SHADOWEDMORE) { +ADDRLP4 64 +ADDRFP4 28 +INDIRI4 +ASGNI4 +ADDRLP4 64 +INDIRI4 +CNSTI4 3 +EQI4 $317 +ADDRLP4 64 +INDIRI4 +CNSTI4 6 +NEI4 $315 +LABELV $317 +line 380 +;380: int ofs = style == ITEM_TEXTSTYLE_SHADOWED ? 1 : 2; +ADDRFP4 28 +INDIRI4 +CNSTI4 3 +NEI4 $319 +ADDRLP4 72 +CNSTI4 1 +ASGNI4 +ADDRGP4 $320 +JUMPV +LABELV $319 +ADDRLP4 72 +CNSTI4 2 +ASGNI4 +LABELV $320 +ADDRLP4 68 +ADDRLP4 72 +INDIRI4 +ASGNI4 +line 381 +;381: colorBlack[3] = newColor[3]; +ADDRGP4 colorBlack+12 +ADDRLP4 4+12 +INDIRF4 +ASGNF4 +line 382 +;382: trap_R_SetColor( colorBlack ); +ADDRGP4 colorBlack +ARGP4 +ADDRGP4 trap_R_SetColor +CALLV +pop +line 383 +;383: Text_PaintChar(x + ofs, y - yadj + ofs, +ADDRLP4 76 +ADDRLP4 68 +INDIRI4 +CVIF4 4 +ASGNF4 +ADDRFP4 0 +INDIRF4 +ADDRLP4 76 +INDIRF4 +ADDF4 +ARGF4 +ADDRFP4 4 +INDIRF4 +ADDRLP4 60 +INDIRF4 +SUBF4 +ADDRLP4 76 +INDIRF4 +ADDF4 +ARGF4 +ADDRLP4 0 +INDIRP4 +CNSTI4 20 +ADDP4 +INDIRI4 +CVIF4 4 +ARGF4 +ADDRLP4 0 +INDIRP4 +CNSTI4 24 +ADDP4 +INDIRI4 +CVIF4 4 +ARGF4 +ADDRLP4 20 +INDIRF4 +ARGF4 +ADDRLP4 0 +INDIRP4 +CNSTI4 28 +ADDP4 +INDIRF4 +ARGF4 +ADDRLP4 0 +INDIRP4 +CNSTI4 32 +ADDP4 +INDIRF4 +ARGF4 +ADDRLP4 0 +INDIRP4 +CNSTI4 36 +ADDP4 +INDIRF4 +ARGF4 +ADDRLP4 0 +INDIRP4 +CNSTI4 40 +ADDP4 +INDIRF4 +ARGF4 +ADDRLP4 0 +INDIRP4 +CNSTI4 44 +ADDP4 +INDIRI4 +ARGI4 +ADDRGP4 Text_PaintChar +CALLV +pop +line 392 +;384: glyph->imageWidth, +;385: glyph->imageHeight, +;386: useScale, +;387: glyph->s, +;388: glyph->t, +;389: glyph->s2, +;390: glyph->t2, +;391: glyph->glyph); +;392: trap_R_SetColor( newColor ); +ADDRLP4 4 +ARGP4 +ADDRGP4 trap_R_SetColor +CALLV +pop +line 393 +;393: colorBlack[3] = 1.0; +ADDRGP4 colorBlack+12 +CNSTF4 1065353216 +ASGNF4 +line 394 +;394: } +LABELV $315 +line 395 +;395: Text_PaintChar(x, y - yadj, +ADDRFP4 0 +INDIRF4 +ARGF4 +ADDRFP4 4 +INDIRF4 +ADDRLP4 60 +INDIRF4 +SUBF4 +ARGF4 +ADDRLP4 0 +INDIRP4 +CNSTI4 20 +ADDP4 +INDIRI4 +CVIF4 4 +ARGF4 +ADDRLP4 0 +INDIRP4 +CNSTI4 24 +ADDP4 +INDIRI4 +CVIF4 4 +ARGF4 +ADDRLP4 20 +INDIRF4 +ARGF4 +ADDRLP4 0 +INDIRP4 +CNSTI4 28 +ADDP4 +INDIRF4 +ARGF4 +ADDRLP4 0 +INDIRP4 +CNSTI4 32 +ADDP4 +INDIRF4 +ARGF4 +ADDRLP4 0 +INDIRP4 +CNSTI4 36 +ADDP4 +INDIRF4 +ARGF4 +ADDRLP4 0 +INDIRP4 +CNSTI4 40 +ADDP4 +INDIRF4 +ARGF4 +ADDRLP4 0 +INDIRP4 +CNSTI4 44 +ADDP4 +INDIRI4 +ARGI4 +ADDRGP4 Text_PaintChar +CALLV +pop +line 405 +;396: glyph->imageWidth, +;397: glyph->imageHeight, +;398: useScale, +;399: glyph->s, +;400: glyph->t, +;401: glyph->s2, +;402: glyph->t2, +;403: glyph->glyph); +;404: +;405: x += (glyph->xSkip * useScale) + adjust; +ADDRFP4 0 +ADDRFP4 0 +INDIRF4 +ADDRLP4 0 +INDIRP4 +CNSTI4 16 +ADDP4 +INDIRI4 +CVIF4 4 +ADDRLP4 20 +INDIRF4 +MULF4 +ADDRFP4 20 +INDIRF4 +ADDF4 +ADDF4 +ASGNF4 +line 406 +;406: s++; +ADDRLP4 36 +ADDRLP4 36 +INDIRP4 +CNSTI4 1 +ADDP4 +ASGNP4 +line 407 +;407: count++; +ADDRLP4 24 +ADDRLP4 24 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 408 +;408: } +line 409 +;409: } +LABELV $310 +line 367 +ADDRLP4 36 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $325 +ADDRLP4 36 +INDIRP4 +INDIRI1 +CVII4 1 +CNSTI4 0 +EQI4 $325 +ADDRLP4 24 +INDIRI4 +ADDRLP4 32 +INDIRI4 +LTI4 $309 +LABELV $325 +line 410 +;410: trap_R_SetColor( NULL ); +CNSTP4 0 +ARGP4 +ADDRGP4 trap_R_SetColor +CALLV +pop +line 411 +;411: } +LABELV $305 +line 412 +;412:} +LABELV $292 +endproc Text_Paint 84 40 +export Text_PaintWithCursor +proc Text_PaintWithCursor 88 40 +ADDRFP4 24 +ADDRFP4 24 +INDIRI4 +CVII1 4 +ASGNI1 +line 414 +;413: +;414:void Text_PaintWithCursor(float x, float y, float scale, vec4_t color, const char *text, int cursorPos, char cursor, int limit, int style) { +line 420 +;415: int len, count; +;416: vec4_t newColor; +;417: glyphInfo_t *glyph, *glyph2; +;418: float yadj; +;419: float useScale; +;420: fontInfo_t *font = &uiInfo.uiDC.Assets.textFont; +ADDRLP4 36 +ADDRGP4 uiInfo+228+12 +ASGNP4 +line 421 +;421: if (scale <= ui_smallFont.value) { +ADDRFP4 8 +INDIRF4 +ADDRGP4 ui_smallFont+8 +INDIRF4 +GTF4 $329 +line 422 +;422: font = &uiInfo.uiDC.Assets.smallFont; +ADDRLP4 36 +ADDRGP4 uiInfo+228+20560 +ASGNP4 +line 423 +;423: } else if (scale >= ui_bigFont.value) { +ADDRGP4 $330 +JUMPV +LABELV $329 +ADDRFP4 8 +INDIRF4 +ADDRGP4 ui_bigFont+8 +INDIRF4 +LTF4 $334 +line 424 +;424: font = &uiInfo.uiDC.Assets.bigFont; +ADDRLP4 36 +ADDRGP4 uiInfo+228+41108 +ASGNP4 +line 425 +;425: } +LABELV $334 +LABELV $330 +line 426 +;426: useScale = scale * font->glyphScale; +ADDRLP4 4 +ADDRFP4 8 +INDIRF4 +ADDRLP4 36 +INDIRP4 +CNSTI4 20480 +ADDP4 +INDIRF4 +MULF4 +ASGNF4 +line 427 +;427: if (text) { +ADDRFP4 16 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $339 +line 430 +;428:// TTimo: FIXME +;429:// const unsigned char *s = text; // bk001206 - unsigned +;430: const char *s = text; // bk001206 - unsigned +ADDRLP4 44 +ADDRFP4 16 +INDIRP4 +ASGNP4 +line 431 +;431: trap_R_SetColor( color ); +ADDRFP4 12 +INDIRP4 +ARGP4 +ADDRGP4 trap_R_SetColor +CALLV +pop +line 432 +;432: memcpy(&newColor[0], &color[0], sizeof(vec4_t)); +ADDRLP4 12 +ARGP4 +ADDRFP4 12 +INDIRP4 +ARGP4 +CNSTI4 16 +ARGI4 +ADDRGP4 memcpy +CALLP4 +pop +line 433 +;433: len = strlen(text); +ADDRFP4 16 +INDIRP4 +ARGP4 +ADDRLP4 48 +ADDRGP4 strlen +CALLI4 +ASGNI4 +ADDRLP4 40 +ADDRLP4 48 +INDIRI4 +ASGNI4 +line 434 +;434: if (limit > 0 && len > limit) { +ADDRLP4 52 +ADDRFP4 28 +INDIRI4 +ASGNI4 +ADDRLP4 52 +INDIRI4 +CNSTI4 0 +LEI4 $341 +ADDRLP4 40 +INDIRI4 +ADDRLP4 52 +INDIRI4 +LEI4 $341 +line 435 +;435: len = limit; +ADDRLP4 40 +ADDRFP4 28 +INDIRI4 +ASGNI4 +line 436 +;436: } +LABELV $341 +line 437 +;437: count = 0; +ADDRLP4 28 +CNSTI4 0 +ASGNI4 +line 438 +;438: glyph2 = &font->glyphs[ (int) cursor]; // bk001206 - possible signed char +ADDRLP4 8 +CNSTI4 80 +ADDRFP4 24 +INDIRI1 +CVII4 1 +MULI4 +ADDRLP4 36 +INDIRP4 +ADDP4 +ASGNP4 +ADDRGP4 $344 +JUMPV +LABELV $343 +line 439 +;439: while (s && *s && count < len) { +line 440 +;440: glyph = &font->glyphs[(int)*s]; // TTimo: FIXME: getting nasty warnings without the cast, hopefully this doesn't break the VM build +ADDRLP4 0 +CNSTI4 80 +ADDRLP4 44 +INDIRP4 +INDIRI1 +CVII4 1 +MULI4 +ADDRLP4 36 +INDIRP4 +ADDP4 +ASGNP4 +line 443 +;441: //int yadj = Assets.textFont.glyphs[text[i]].bottom + Assets.textFont.glyphs[text[i]].top; +;442: //float yadj = scale * (Assets.textFont.glyphs[text[i]].imageHeight - Assets.textFont.glyphs[text[i]].height); +;443: if ( Q_IsColorString( s ) ) { +ADDRLP4 44 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $346 +ADDRLP4 60 +CNSTI4 94 +ASGNI4 +ADDRLP4 44 +INDIRP4 +INDIRI1 +CVII4 1 +ADDRLP4 60 +INDIRI4 +NEI4 $346 +ADDRLP4 64 +ADDRLP4 44 +INDIRP4 +CNSTI4 1 +ADDP4 +INDIRI1 +CVII4 1 +ASGNI4 +ADDRLP4 64 +INDIRI4 +CNSTI4 0 +EQI4 $346 +ADDRLP4 64 +INDIRI4 +ADDRLP4 60 +INDIRI4 +EQI4 $346 +line 444 +;444: memcpy( newColor, g_color_table[ColorIndex(*(s+1))], sizeof( newColor ) ); +ADDRLP4 12 +ARGP4 +ADDRLP4 44 +INDIRP4 +CNSTI4 1 +ADDP4 +INDIRI1 +CVII4 1 +CNSTI4 48 +SUBI4 +CNSTI4 7 +BANDI4 +CNSTI4 4 +LSHI4 +ADDRGP4 g_color_table +ADDP4 +ARGP4 +CNSTI4 16 +ARGI4 +ADDRGP4 memcpy +CALLP4 +pop +line 445 +;445: newColor[3] = color[3]; +ADDRLP4 12+12 +ADDRFP4 12 +INDIRP4 +CNSTI4 12 +ADDP4 +INDIRF4 +ASGNF4 +line 446 +;446: trap_R_SetColor( newColor ); +ADDRLP4 12 +ARGP4 +ADDRGP4 trap_R_SetColor +CALLV +pop +line 447 +;447: s += 2; +ADDRLP4 44 +ADDRLP4 44 +INDIRP4 +CNSTI4 2 +ADDP4 +ASGNP4 +line 448 +;448: continue; +ADDRGP4 $344 +JUMPV +LABELV $346 +line 449 +;449: } else { +line 450 +;450: yadj = useScale * glyph->top; +ADDRLP4 32 +ADDRLP4 4 +INDIRF4 +ADDRLP4 0 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRI4 +CVIF4 4 +MULF4 +ASGNF4 +line 451 +;451: if (style == ITEM_TEXTSTYLE_SHADOWED || style == ITEM_TEXTSTYLE_SHADOWEDMORE) { +ADDRLP4 68 +ADDRFP4 32 +INDIRI4 +ASGNI4 +ADDRLP4 68 +INDIRI4 +CNSTI4 3 +EQI4 $351 +ADDRLP4 68 +INDIRI4 +CNSTI4 6 +NEI4 $349 +LABELV $351 +line 452 +;452: int ofs = style == ITEM_TEXTSTYLE_SHADOWED ? 1 : 2; +ADDRFP4 32 +INDIRI4 +CNSTI4 3 +NEI4 $353 +ADDRLP4 76 +CNSTI4 1 +ASGNI4 +ADDRGP4 $354 +JUMPV +LABELV $353 +ADDRLP4 76 +CNSTI4 2 +ASGNI4 +LABELV $354 +ADDRLP4 72 +ADDRLP4 76 +INDIRI4 +ASGNI4 +line 453 +;453: colorBlack[3] = newColor[3]; +ADDRGP4 colorBlack+12 +ADDRLP4 12+12 +INDIRF4 +ASGNF4 +line 454 +;454: trap_R_SetColor( colorBlack ); +ADDRGP4 colorBlack +ARGP4 +ADDRGP4 trap_R_SetColor +CALLV +pop +line 455 +;455: Text_PaintChar(x + ofs, y - yadj + ofs, +ADDRLP4 80 +ADDRLP4 72 +INDIRI4 +CVIF4 4 +ASGNF4 +ADDRFP4 0 +INDIRF4 +ADDRLP4 80 +INDIRF4 +ADDF4 +ARGF4 +ADDRFP4 4 +INDIRF4 +ADDRLP4 32 +INDIRF4 +SUBF4 +ADDRLP4 80 +INDIRF4 +ADDF4 +ARGF4 +ADDRLP4 0 +INDIRP4 +CNSTI4 20 +ADDP4 +INDIRI4 +CVIF4 4 +ARGF4 +ADDRLP4 0 +INDIRP4 +CNSTI4 24 +ADDP4 +INDIRI4 +CVIF4 4 +ARGF4 +ADDRLP4 4 +INDIRF4 +ARGF4 +ADDRLP4 0 +INDIRP4 +CNSTI4 28 +ADDP4 +INDIRF4 +ARGF4 +ADDRLP4 0 +INDIRP4 +CNSTI4 32 +ADDP4 +INDIRF4 +ARGF4 +ADDRLP4 0 +INDIRP4 +CNSTI4 36 +ADDP4 +INDIRF4 +ARGF4 +ADDRLP4 0 +INDIRP4 +CNSTI4 40 +ADDP4 +INDIRF4 +ARGF4 +ADDRLP4 0 +INDIRP4 +CNSTI4 44 +ADDP4 +INDIRI4 +ARGI4 +ADDRGP4 Text_PaintChar +CALLV +pop +line 464 +;456: glyph->imageWidth, +;457: glyph->imageHeight, +;458: useScale, +;459: glyph->s, +;460: glyph->t, +;461: glyph->s2, +;462: glyph->t2, +;463: glyph->glyph); +;464: colorBlack[3] = 1.0; +ADDRGP4 colorBlack+12 +CNSTF4 1065353216 +ASGNF4 +line 465 +;465: trap_R_SetColor( newColor ); +ADDRLP4 12 +ARGP4 +ADDRGP4 trap_R_SetColor +CALLV +pop +line 466 +;466: } +LABELV $349 +line 467 +;467: Text_PaintChar(x, y - yadj, +ADDRFP4 0 +INDIRF4 +ARGF4 +ADDRFP4 4 +INDIRF4 +ADDRLP4 32 +INDIRF4 +SUBF4 +ARGF4 +ADDRLP4 0 +INDIRP4 +CNSTI4 20 +ADDP4 +INDIRI4 +CVIF4 4 +ARGF4 +ADDRLP4 0 +INDIRP4 +CNSTI4 24 +ADDP4 +INDIRI4 +CVIF4 4 +ARGF4 +ADDRLP4 4 +INDIRF4 +ARGF4 +ADDRLP4 0 +INDIRP4 +CNSTI4 28 +ADDP4 +INDIRF4 +ARGF4 +ADDRLP4 0 +INDIRP4 +CNSTI4 32 +ADDP4 +INDIRF4 +ARGF4 +ADDRLP4 0 +INDIRP4 +CNSTI4 36 +ADDP4 +INDIRF4 +ARGF4 +ADDRLP4 0 +INDIRP4 +CNSTI4 40 +ADDP4 +INDIRF4 +ARGF4 +ADDRLP4 0 +INDIRP4 +CNSTI4 44 +ADDP4 +INDIRI4 +ARGI4 +ADDRGP4 Text_PaintChar +CALLV +pop +line 478 +;468: glyph->imageWidth, +;469: glyph->imageHeight, +;470: useScale, +;471: glyph->s, +;472: glyph->t, +;473: glyph->s2, +;474: glyph->t2, +;475: glyph->glyph); +;476: +;477: // CG_DrawPic(x, y - yadj, scale * uiDC.Assets.textFont.glyphs[text[i]].imageWidth, scale * uiDC.Assets.textFont.glyphs[text[i]].imageHeight, uiDC.Assets.textFont.glyphs[text[i]].glyph); +;478: yadj = useScale * glyph2->top; +ADDRLP4 32 +ADDRLP4 4 +INDIRF4 +ADDRLP4 8 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRI4 +CVIF4 4 +MULF4 +ASGNF4 +line 479 +;479: if (count == cursorPos && !((uiInfo.uiDC.realTime/BLINK_DIVISOR) & 1)) { +ADDRLP4 28 +INDIRI4 +ADDRFP4 20 +INDIRI4 +NEI4 $358 +ADDRGP4 uiInfo+208 +INDIRI4 +CNSTI4 200 +DIVI4 +CNSTI4 1 +BANDI4 +CNSTI4 0 +NEI4 $358 +line 480 +;480: Text_PaintChar(x, y - yadj, +ADDRFP4 0 +INDIRF4 +ARGF4 +ADDRFP4 4 +INDIRF4 +ADDRLP4 32 +INDIRF4 +SUBF4 +ARGF4 +ADDRLP4 8 +INDIRP4 +CNSTI4 20 +ADDP4 +INDIRI4 +CVIF4 4 +ARGF4 +ADDRLP4 8 +INDIRP4 +CNSTI4 24 +ADDP4 +INDIRI4 +CVIF4 4 +ARGF4 +ADDRLP4 4 +INDIRF4 +ARGF4 +ADDRLP4 8 +INDIRP4 +CNSTI4 28 +ADDP4 +INDIRF4 +ARGF4 +ADDRLP4 8 +INDIRP4 +CNSTI4 32 +ADDP4 +INDIRF4 +ARGF4 +ADDRLP4 8 +INDIRP4 +CNSTI4 36 +ADDP4 +INDIRF4 +ARGF4 +ADDRLP4 8 +INDIRP4 +CNSTI4 40 +ADDP4 +INDIRF4 +ARGF4 +ADDRLP4 8 +INDIRP4 +CNSTI4 44 +ADDP4 +INDIRI4 +ARGI4 +ADDRGP4 Text_PaintChar +CALLV +pop +line 489 +;481: glyph2->imageWidth, +;482: glyph2->imageHeight, +;483: useScale, +;484: glyph2->s, +;485: glyph2->t, +;486: glyph2->s2, +;487: glyph2->t2, +;488: glyph2->glyph); +;489: } +LABELV $358 +line 491 +;490: +;491: x += (glyph->xSkip * useScale); +ADDRFP4 0 +ADDRFP4 0 +INDIRF4 +ADDRLP4 0 +INDIRP4 +CNSTI4 16 +ADDP4 +INDIRI4 +CVIF4 4 +ADDRLP4 4 +INDIRF4 +MULF4 +ADDF4 +ASGNF4 +line 492 +;492: s++; +ADDRLP4 44 +ADDRLP4 44 +INDIRP4 +CNSTI4 1 +ADDP4 +ASGNP4 +line 493 +;493: count++; +ADDRLP4 28 +ADDRLP4 28 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 494 +;494: } +line 495 +;495: } +LABELV $344 +line 439 +ADDRLP4 44 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $362 +ADDRLP4 44 +INDIRP4 +INDIRI1 +CVII4 1 +CNSTI4 0 +EQI4 $362 +ADDRLP4 28 +INDIRI4 +ADDRLP4 40 +INDIRI4 +LTI4 $343 +LABELV $362 +line 497 +;496: // need to paint cursor at end of text +;497: if (cursorPos == len && !((uiInfo.uiDC.realTime/BLINK_DIVISOR) & 1)) { +ADDRFP4 20 +INDIRI4 +ADDRLP4 40 +INDIRI4 +NEI4 $363 +ADDRGP4 uiInfo+208 +INDIRI4 +CNSTI4 200 +DIVI4 +CNSTI4 1 +BANDI4 +CNSTI4 0 +NEI4 $363 +line 498 +;498: yadj = useScale * glyph2->top; +ADDRLP4 32 +ADDRLP4 4 +INDIRF4 +ADDRLP4 8 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRI4 +CVIF4 4 +MULF4 +ASGNF4 +line 499 +;499: Text_PaintChar(x, y - yadj, +ADDRFP4 0 +INDIRF4 +ARGF4 +ADDRFP4 4 +INDIRF4 +ADDRLP4 32 +INDIRF4 +SUBF4 +ARGF4 +ADDRLP4 8 +INDIRP4 +CNSTI4 20 +ADDP4 +INDIRI4 +CVIF4 4 +ARGF4 +ADDRLP4 8 +INDIRP4 +CNSTI4 24 +ADDP4 +INDIRI4 +CVIF4 4 +ARGF4 +ADDRLP4 4 +INDIRF4 +ARGF4 +ADDRLP4 8 +INDIRP4 +CNSTI4 28 +ADDP4 +INDIRF4 +ARGF4 +ADDRLP4 8 +INDIRP4 +CNSTI4 32 +ADDP4 +INDIRF4 +ARGF4 +ADDRLP4 8 +INDIRP4 +CNSTI4 36 +ADDP4 +INDIRF4 +ARGF4 +ADDRLP4 8 +INDIRP4 +CNSTI4 40 +ADDP4 +INDIRF4 +ARGF4 +ADDRLP4 8 +INDIRP4 +CNSTI4 44 +ADDP4 +INDIRI4 +ARGI4 +ADDRGP4 Text_PaintChar +CALLV +pop +line 509 +;500: glyph2->imageWidth, +;501: glyph2->imageHeight, +;502: useScale, +;503: glyph2->s, +;504: glyph2->t, +;505: glyph2->s2, +;506: glyph2->t2, +;507: glyph2->glyph); +;508: +;509: } +LABELV $363 +line 512 +;510: +;511: +;512: trap_R_SetColor( NULL ); +CNSTP4 0 +ARGP4 +ADDRGP4 trap_R_SetColor +CALLV +pop +line 513 +;513: } +LABELV $339 +line 514 +;514:} +LABELV $326 +endproc Text_PaintWithCursor 88 40 +proc Text_Paint_Limit 76 40 +line 517 +;515: +;516: +;517:static void Text_Paint_Limit(float *maxX, float x, float y, float scale, vec4_t color, const char* text, float adjust, int limit) { +line 521 +;518: int len, count; +;519: vec4_t newColor; +;520: glyphInfo_t *glyph; +;521: if (text) { +ADDRFP4 20 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $367 +line 524 +;522:// TTimo: FIXME +;523:// const unsigned char *s = text; // bk001206 - unsigned +;524: const char *s = text; // bk001206 - unsigned +ADDRLP4 28 +ADDRFP4 20 +INDIRP4 +ASGNP4 +line 525 +;525: float max = *maxX; +ADDRLP4 40 +ADDRFP4 0 +INDIRP4 +INDIRF4 +ASGNF4 +line 527 +;526: float useScale; +;527: fontInfo_t *font = &uiInfo.uiDC.Assets.textFont; +ADDRLP4 36 +ADDRGP4 uiInfo+228+12 +ASGNP4 +line 528 +;528: if (scale <= ui_smallFont.value) { +ADDRFP4 12 +INDIRF4 +ADDRGP4 ui_smallFont+8 +INDIRF4 +GTF4 $371 +line 529 +;529: font = &uiInfo.uiDC.Assets.smallFont; +ADDRLP4 36 +ADDRGP4 uiInfo+228+20560 +ASGNP4 +line 530 +;530: } else if (scale > ui_bigFont.value) { +ADDRGP4 $372 +JUMPV +LABELV $371 +ADDRFP4 12 +INDIRF4 +ADDRGP4 ui_bigFont+8 +INDIRF4 +LEF4 $376 +line 531 +;531: font = &uiInfo.uiDC.Assets.bigFont; +ADDRLP4 36 +ADDRGP4 uiInfo+228+41108 +ASGNP4 +line 532 +;532: } +LABELV $376 +LABELV $372 +line 533 +;533: useScale = scale * font->glyphScale; +ADDRLP4 32 +ADDRFP4 12 +INDIRF4 +ADDRLP4 36 +INDIRP4 +CNSTI4 20480 +ADDP4 +INDIRF4 +MULF4 +ASGNF4 +line 534 +;534: trap_R_SetColor( color ); +ADDRFP4 16 +INDIRP4 +ARGP4 +ADDRGP4 trap_R_SetColor +CALLV +pop +line 535 +;535: len = strlen(text); +ADDRFP4 20 +INDIRP4 +ARGP4 +ADDRLP4 44 +ADDRGP4 strlen +CALLI4 +ASGNI4 +ADDRLP4 24 +ADDRLP4 44 +INDIRI4 +ASGNI4 +line 536 +;536: if (limit > 0 && len > limit) { +ADDRLP4 48 +ADDRFP4 28 +INDIRI4 +ASGNI4 +ADDRLP4 48 +INDIRI4 +CNSTI4 0 +LEI4 $381 +ADDRLP4 24 +INDIRI4 +ADDRLP4 48 +INDIRI4 +LEI4 $381 +line 537 +;537: len = limit; +ADDRLP4 24 +ADDRFP4 28 +INDIRI4 +ASGNI4 +line 538 +;538: } +LABELV $381 +line 539 +;539: count = 0; +ADDRLP4 20 +CNSTI4 0 +ASGNI4 +ADDRGP4 $384 +JUMPV +LABELV $383 +line 540 +;540: while (s && *s && count < len) { +line 541 +;541: glyph = &font->glyphs[(int)*s]; // TTimo: FIXME: getting nasty warnings without the cast, hopefully this doesn't break the VM build +ADDRLP4 0 +CNSTI4 80 +ADDRLP4 28 +INDIRP4 +INDIRI1 +CVII4 1 +MULI4 +ADDRLP4 36 +INDIRP4 +ADDP4 +ASGNP4 +line 542 +;542: if ( Q_IsColorString( s ) ) { +ADDRLP4 28 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $386 +ADDRLP4 56 +CNSTI4 94 +ASGNI4 +ADDRLP4 28 +INDIRP4 +INDIRI1 +CVII4 1 +ADDRLP4 56 +INDIRI4 +NEI4 $386 +ADDRLP4 60 +ADDRLP4 28 +INDIRP4 +CNSTI4 1 +ADDP4 +INDIRI1 +CVII4 1 +ASGNI4 +ADDRLP4 60 +INDIRI4 +CNSTI4 0 +EQI4 $386 +ADDRLP4 60 +INDIRI4 +ADDRLP4 56 +INDIRI4 +EQI4 $386 +line 543 +;543: memcpy( newColor, g_color_table[ColorIndex(*(s+1))], sizeof( newColor ) ); +ADDRLP4 4 +ARGP4 +ADDRLP4 28 +INDIRP4 +CNSTI4 1 +ADDP4 +INDIRI1 +CVII4 1 +CNSTI4 48 +SUBI4 +CNSTI4 7 +BANDI4 +CNSTI4 4 +LSHI4 +ADDRGP4 g_color_table +ADDP4 +ARGP4 +CNSTI4 16 +ARGI4 +ADDRGP4 memcpy +CALLP4 +pop +line 544 +;544: newColor[3] = color[3]; +ADDRLP4 4+12 +ADDRFP4 16 +INDIRP4 +CNSTI4 12 +ADDP4 +INDIRF4 +ASGNF4 +line 545 +;545: trap_R_SetColor( newColor ); +ADDRLP4 4 +ARGP4 +ADDRGP4 trap_R_SetColor +CALLV +pop +line 546 +;546: s += 2; +ADDRLP4 28 +ADDRLP4 28 +INDIRP4 +CNSTI4 2 +ADDP4 +ASGNP4 +line 547 +;547: continue; +ADDRGP4 $384 +JUMPV +LABELV $386 +line 548 +;548: } else { +line 549 +;549: float yadj = useScale * glyph->top; +ADDRLP4 64 +ADDRLP4 32 +INDIRF4 +ADDRLP4 0 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRI4 +CVIF4 4 +MULF4 +ASGNF4 +line 550 +;550: if (Text_Width(s, useScale, 1) + x > max) { +ADDRLP4 28 +INDIRP4 +ARGP4 +ADDRLP4 32 +INDIRF4 +ARGF4 +CNSTI4 1 +ARGI4 +ADDRLP4 68 +ADDRGP4 Text_Width +CALLI4 +ASGNI4 +ADDRLP4 68 +INDIRI4 +CVIF4 4 +ADDRFP4 4 +INDIRF4 +ADDF4 +ADDRLP4 40 +INDIRF4 +LEF4 $389 +line 551 +;551: *maxX = 0; +ADDRFP4 0 +INDIRP4 +CNSTF4 0 +ASGNF4 +line 552 +;552: break; +ADDRGP4 $385 +JUMPV +LABELV $389 +line 554 +;553: } +;554: Text_PaintChar(x, y - yadj, +ADDRFP4 4 +INDIRF4 +ARGF4 +ADDRFP4 8 +INDIRF4 +ADDRLP4 64 +INDIRF4 +SUBF4 +ARGF4 +ADDRLP4 0 +INDIRP4 +CNSTI4 20 +ADDP4 +INDIRI4 +CVIF4 4 +ARGF4 +ADDRLP4 0 +INDIRP4 +CNSTI4 24 +ADDP4 +INDIRI4 +CVIF4 4 +ARGF4 +ADDRLP4 32 +INDIRF4 +ARGF4 +ADDRLP4 0 +INDIRP4 +CNSTI4 28 +ADDP4 +INDIRF4 +ARGF4 +ADDRLP4 0 +INDIRP4 +CNSTI4 32 +ADDP4 +INDIRF4 +ARGF4 +ADDRLP4 0 +INDIRP4 +CNSTI4 36 +ADDP4 +INDIRF4 +ARGF4 +ADDRLP4 0 +INDIRP4 +CNSTI4 40 +ADDP4 +INDIRF4 +ARGF4 +ADDRLP4 0 +INDIRP4 +CNSTI4 44 +ADDP4 +INDIRI4 +ARGI4 +ADDRGP4 Text_PaintChar +CALLV +pop +line 563 +;555: glyph->imageWidth, +;556: glyph->imageHeight, +;557: useScale, +;558: glyph->s, +;559: glyph->t, +;560: glyph->s2, +;561: glyph->t2, +;562: glyph->glyph); +;563: x += (glyph->xSkip * useScale) + adjust; +ADDRFP4 4 +ADDRFP4 4 +INDIRF4 +ADDRLP4 0 +INDIRP4 +CNSTI4 16 +ADDP4 +INDIRI4 +CVIF4 4 +ADDRLP4 32 +INDIRF4 +MULF4 +ADDRFP4 24 +INDIRF4 +ADDF4 +ADDF4 +ASGNF4 +line 564 +;564: *maxX = x; +ADDRFP4 0 +INDIRP4 +ADDRFP4 4 +INDIRF4 +ASGNF4 +line 565 +;565: count++; +ADDRLP4 20 +ADDRLP4 20 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 566 +;566: s++; +ADDRLP4 28 +ADDRLP4 28 +INDIRP4 +CNSTI4 1 +ADDP4 +ASGNP4 +line 567 +;567: } +line 568 +;568: } +LABELV $384 +line 540 +ADDRLP4 28 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $392 +ADDRLP4 28 +INDIRP4 +INDIRI1 +CVII4 1 +CNSTI4 0 +EQI4 $392 +ADDRLP4 20 +INDIRI4 +ADDRLP4 24 +INDIRI4 +LTI4 $383 +LABELV $392 +LABELV $385 +line 569 +;569: trap_R_SetColor( NULL ); +CNSTP4 0 +ARGP4 +ADDRGP4 trap_R_SetColor +CALLV +pop +line 570 +;570: } +LABELV $367 +line 572 +;571: +;572:} +LABELV $366 +endproc Text_Paint_Limit 76 40 +export UI_ShowPostGame +proc UI_ShowPostGame 0 8 +line 575 +;573: +;574: +;575:void UI_ShowPostGame(qboolean newHigh) { +line 576 +;576: trap_Cvar_Set ("cg_cameraOrbit", "0"); +ADDRGP4 $394 +ARGP4 +ADDRGP4 $395 +ARGP4 +ADDRGP4 trap_Cvar_Set +CALLV +pop +line 577 +;577: trap_Cvar_Set("cg_thirdPerson", "0"); +ADDRGP4 $396 +ARGP4 +ADDRGP4 $395 +ARGP4 +ADDRGP4 trap_Cvar_Set +CALLV +pop +line 578 +;578: trap_Cvar_Set( "sv_killserver", "1" ); +ADDRGP4 $397 +ARGP4 +ADDRGP4 $398 +ARGP4 +ADDRGP4 trap_Cvar_Set +CALLV +pop +line 579 +;579: uiInfo.soundHighScore = newHigh; +ADDRGP4 uiInfo+73436 +ADDRFP4 0 +INDIRI4 +ASGNI4 +line 580 +;580: _UI_SetActiveMenu(UIMENU_POSTGAME); +CNSTI4 6 +ARGI4 +ADDRGP4 _UI_SetActiveMenu +CALLV +pop +line 581 +;581:} +LABELV $393 +endproc UI_ShowPostGame 0 8 +export UI_DrawCenteredPic +proc UI_DrawCenteredPic 8 20 +line 588 +;582:/* +;583:================= +;584:_UI_Refresh +;585:================= +;586:*/ +;587: +;588:void UI_DrawCenteredPic(qhandle_t image, int w, int h) { +line 590 +;589: int x, y; +;590: x = (SCREEN_WIDTH - w) / 2; +ADDRLP4 0 +CNSTI4 640 +ADDRFP4 4 +INDIRI4 +SUBI4 +CNSTI4 2 +DIVI4 +ASGNI4 +line 591 +;591: y = (SCREEN_HEIGHT - h) / 2; +ADDRLP4 4 +CNSTI4 480 +ADDRFP4 8 +INDIRI4 +SUBI4 +CNSTI4 2 +DIVI4 +ASGNI4 +line 592 +;592: UI_DrawHandlePic(x, y, w, h, image); +ADDRLP4 0 +INDIRI4 +CVIF4 4 +ARGF4 +ADDRLP4 4 +INDIRI4 +CVIF4 4 +ARGF4 +ADDRFP4 4 +INDIRI4 +CVIF4 4 +ARGF4 +ADDRFP4 8 +INDIRI4 +CVIF4 4 +ARGF4 +ADDRFP4 0 +INDIRI4 +ARGI4 +ADDRGP4 UI_DrawHandlePic +CALLV +pop +line 593 +;593:} +LABELV $400 +endproc UI_DrawCenteredPic 8 20 +data +export frameCount +align 4 +LABELV frameCount +byte 4 0 +bss +align 4 +LABELV $402 +skip 4 +align 4 +LABELV $403 +skip 16 +export _UI_Refresh +code +proc _UI_Refresh 20 20 +line 600 +;594: +;595:int frameCount = 0; +;596:int startTime; +;597: +;598:#define UI_FPS_FRAMES 4 +;599:void _UI_Refresh( int realtime ) +;600:{ +line 608 +;601: static int index; +;602: static int previousTimes[UI_FPS_FRAMES]; +;603: +;604: //if ( !( trap_Key_GetCatcher() & KEYCATCH_UI ) ) { +;605: // return; +;606: //} +;607: +;608: uiInfo.uiDC.frameTime = realtime - uiInfo.uiDC.realTime; +ADDRGP4 uiInfo+212 +ADDRFP4 0 +INDIRI4 +ADDRGP4 uiInfo+208 +INDIRI4 +SUBI4 +ASGNI4 +line 609 +;609: uiInfo.uiDC.realTime = realtime; +ADDRGP4 uiInfo+208 +ADDRFP4 0 +INDIRI4 +ASGNI4 +line 611 +;610: +;611: previousTimes[index % UI_FPS_FRAMES] = uiInfo.uiDC.frameTime; +ADDRGP4 $402 +INDIRI4 +CNSTI4 4 +MODI4 +CNSTI4 2 +LSHI4 +ADDRGP4 $403 +ADDP4 +ADDRGP4 uiInfo+212 +INDIRI4 +ASGNI4 +line 612 +;612: index++; +ADDRLP4 0 +ADDRGP4 $402 +ASGNP4 +ADDRLP4 0 +INDIRP4 +ADDRLP4 0 +INDIRP4 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 613 +;613: if ( index > UI_FPS_FRAMES ) { +ADDRGP4 $402 +INDIRI4 +CNSTI4 4 +LEI4 $408 +line 616 +;614: int i, total; +;615: // average multiple frames together to smooth changes out a bit +;616: total = 0; +ADDRLP4 8 +CNSTI4 0 +ASGNI4 +line 617 +;617: for ( i = 0 ; i < UI_FPS_FRAMES ; i++ ) { +ADDRLP4 4 +CNSTI4 0 +ASGNI4 +LABELV $410 +line 618 +;618: total += previousTimes[i]; +ADDRLP4 8 +ADDRLP4 8 +INDIRI4 +ADDRLP4 4 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 $403 +ADDP4 +INDIRI4 +ADDI4 +ASGNI4 +line 619 +;619: } +LABELV $411 +line 617 +ADDRLP4 4 +ADDRLP4 4 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +ADDRLP4 4 +INDIRI4 +CNSTI4 4 +LTI4 $410 +line 620 +;620: if ( !total ) { +ADDRLP4 8 +INDIRI4 +CNSTI4 0 +NEI4 $414 +line 621 +;621: total = 1; +ADDRLP4 8 +CNSTI4 1 +ASGNI4 +line 622 +;622: } +LABELV $414 +line 623 +;623: uiInfo.uiDC.FPS = 1000 * UI_FPS_FRAMES / total; +ADDRGP4 uiInfo+73412 +CNSTI4 4000 +ADDRLP4 8 +INDIRI4 +DIVI4 +CVIF4 4 +ASGNF4 +line 624 +;624: } +LABELV $408 +line 628 +;625: +;626: +;627: +;628: UI_UpdateCvars(); +ADDRGP4 UI_UpdateCvars +CALLV +pop +line 630 +;629: +;630: if (Menu_Count() > 0) { +ADDRLP4 4 +ADDRGP4 Menu_Count +CALLI4 +ASGNI4 +ADDRLP4 4 +INDIRI4 +CNSTI4 0 +LEI4 $417 +line 632 +;631: // paint all the menus +;632: Menu_PaintAll(); +ADDRGP4 Menu_PaintAll +CALLV +pop +line 634 +;633: // refresh server browser list +;634: UI_DoServerRefresh(); +ADDRGP4 UI_DoServerRefresh +CALLV +pop +line 636 +;635: // refresh server status +;636: UI_BuildServerStatus(qfalse); +CNSTI4 0 +ARGI4 +ADDRGP4 UI_BuildServerStatus +CALLV +pop +line 638 +;637: // refresh find player list +;638: UI_BuildFindPlayerList(qfalse); +CNSTI4 0 +ARGI4 +ADDRGP4 UI_BuildFindPlayerList +CALLV +pop +line 639 +;639: } +LABELV $417 +line 642 +;640: +;641: // draw cursor +;642: UI_SetColor( NULL ); +CNSTP4 0 +ARGP4 +ADDRGP4 UI_SetColor +CALLV +pop +line 643 +;643: if (Menu_Count() > 0) { +ADDRLP4 8 +ADDRGP4 Menu_Count +CALLI4 +ASGNI4 +ADDRLP4 8 +INDIRI4 +CNSTI4 0 +LEI4 $419 +line 644 +;644: UI_DrawHandlePic( uiInfo.uiDC.cursorx-16, uiInfo.uiDC.cursory-16, 32, 32, uiInfo.uiDC.Assets.cursor); +ADDRLP4 12 +CNSTI4 16 +ASGNI4 +ADDRGP4 uiInfo+216 +INDIRI4 +ADDRLP4 12 +INDIRI4 +SUBI4 +CVIF4 4 +ARGF4 +ADDRGP4 uiInfo+220 +INDIRI4 +ADDRLP4 12 +INDIRI4 +SUBI4 +CVIF4 4 +ARGF4 +ADDRLP4 16 +CNSTF4 1107296256 +ASGNF4 +ADDRLP4 16 +INDIRF4 +ARGF4 +ADDRLP4 16 +INDIRF4 +ARGF4 +ADDRGP4 uiInfo+228+61656 +INDIRI4 +ARGI4 +ADDRGP4 UI_DrawHandlePic +CALLV +pop +line 645 +;645: } +LABELV $419 +line 648 +;646: +;647:#ifndef NDEBUG +;648: if (uiInfo.uiDC.debug) +ADDRGP4 uiInfo+224 +INDIRI4 +CNSTI4 0 +EQI4 $425 +line 649 +;649: { +line 653 +;650: // cursor coordinates +;651: //FIXME +;652: //UI_DrawString( 0, 0, va("(%d,%d)",uis.cursorx,uis.cursory), UI_LEFT|UI_SMALLFONT, colorRed ); +;653: } +LABELV $425 +line 656 +;654:#endif +;655: +;656:} +LABELV $401 +endproc _UI_Refresh 20 20 +export _UI_Shutdown +proc _UI_Shutdown 0 0 +line 663 +;657: +;658:/* +;659:================= +;660:_UI_Shutdown +;661:================= +;662:*/ +;663:void _UI_Shutdown( void ) { +line 664 +;664: trap_LAN_SaveCachedServers(); +ADDRGP4 trap_LAN_SaveCachedServers +CALLV +pop +line 665 +;665:} +LABELV $428 +endproc _UI_Shutdown 0 0 +data +export defaultMenu +align 4 +LABELV defaultMenu +byte 4 0 +bss +align 1 +LABELV $430 +skip 32768 +export GetMenuBuffer +code +proc GetMenuBuffer 16 16 +line 669 +;666: +;667:char *defaultMenu = NULL; +;668: +;669:char *GetMenuBuffer(const char *filename) { +line 674 +;670: int len; +;671: fileHandle_t f; +;672: static char buf[MAX_MENUFILE]; +;673: +;674: len = trap_FS_FOpenFile( filename, &f, FS_READ ); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRLP4 4 +ARGP4 +CNSTI4 0 +ARGI4 +ADDRLP4 8 +ADDRGP4 trap_FS_FOpenFile +CALLI4 +ASGNI4 +ADDRLP4 0 +ADDRLP4 8 +INDIRI4 +ASGNI4 +line 675 +;675: if ( !f ) { +ADDRLP4 4 +INDIRI4 +CNSTI4 0 +NEI4 $431 +line 676 +;676: trap_Print( va( S_COLOR_RED "menu file not found: %s, using default\n", filename ) ); +ADDRGP4 $433 +ARGP4 +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRLP4 12 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRLP4 12 +INDIRP4 +ARGP4 +ADDRGP4 trap_Print +CALLV +pop +line 677 +;677: return defaultMenu; +ADDRGP4 defaultMenu +INDIRP4 +RETP4 +ADDRGP4 $429 +JUMPV +LABELV $431 +line 679 +;678: } +;679: if ( len >= MAX_MENUFILE ) { +ADDRLP4 0 +INDIRI4 +CNSTI4 32768 +LTI4 $434 +line 680 +;680: trap_Print( va( S_COLOR_RED "menu file too large: %s is %i, max allowed is %i", filename, len, MAX_MENUFILE ) ); +ADDRGP4 $436 +ARGP4 +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRLP4 0 +INDIRI4 +ARGI4 +CNSTI4 32768 +ARGI4 +ADDRLP4 12 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRLP4 12 +INDIRP4 +ARGP4 +ADDRGP4 trap_Print +CALLV +pop +line 681 +;681: trap_FS_FCloseFile( f ); +ADDRLP4 4 +INDIRI4 +ARGI4 +ADDRGP4 trap_FS_FCloseFile +CALLV +pop +line 682 +;682: return defaultMenu; +ADDRGP4 defaultMenu +INDIRP4 +RETP4 +ADDRGP4 $429 +JUMPV +LABELV $434 +line 685 +;683: } +;684: +;685: trap_FS_Read( buf, len, f ); +ADDRGP4 $430 +ARGP4 +ADDRLP4 0 +INDIRI4 +ARGI4 +ADDRLP4 4 +INDIRI4 +ARGI4 +ADDRGP4 trap_FS_Read +CALLV +pop +line 686 +;686: buf[len] = 0; +ADDRLP4 0 +INDIRI4 +ADDRGP4 $430 +ADDP4 +CNSTI1 0 +ASGNI1 +line 687 +;687: trap_FS_FCloseFile( f ); +ADDRLP4 4 +INDIRI4 +ARGI4 +ADDRGP4 trap_FS_FCloseFile +CALLV +pop +line 689 +;688: //COM_Compress(buf); +;689: return buf; +ADDRGP4 $430 +RETP4 +LABELV $429 +endproc GetMenuBuffer 16 16 +export Asset_Parse +proc Asset_Parse 1124 12 +line 693 +;690: +;691:} +;692: +;693:qboolean Asset_Parse(int handle) { +line 697 +;694: pc_token_t token; +;695: const char *tempStr; +;696: +;697: if (!trap_PC_ReadToken(handle, &token)) +ADDRFP4 0 +INDIRI4 +ARGI4 +ADDRLP4 0 +ARGP4 +ADDRLP4 1044 +ADDRGP4 trap_PC_ReadToken +CALLI4 +ASGNI4 +ADDRLP4 1044 +INDIRI4 +CNSTI4 0 +NEI4 $438 +line 698 +;698: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $437 +JUMPV +LABELV $438 +line 699 +;699: if (Q_stricmp(token.string, "{") != 0) { +ADDRLP4 0+16 +ARGP4 +ADDRGP4 $443 +ARGP4 +ADDRLP4 1048 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 1048 +INDIRI4 +CNSTI4 0 +EQI4 $445 +line 700 +;700: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $437 +JUMPV +LABELV $444 +line 703 +;701: } +;702: +;703: while ( 1 ) { +line 705 +;704: +;705: memset(&token, 0, sizeof(pc_token_t)); +ADDRLP4 0 +ARGP4 +CNSTI4 0 +ARGI4 +CNSTI4 1040 +ARGI4 +ADDRGP4 memset +CALLP4 +pop +line 707 +;706: +;707: if (!trap_PC_ReadToken(handle, &token)) +ADDRFP4 0 +INDIRI4 +ARGI4 +ADDRLP4 0 +ARGP4 +ADDRLP4 1052 +ADDRGP4 trap_PC_ReadToken +CALLI4 +ASGNI4 +ADDRLP4 1052 +INDIRI4 +CNSTI4 0 +NEI4 $447 +line 708 +;708: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $437 +JUMPV +LABELV $447 +line 710 +;709: +;710: if (Q_stricmp(token.string, "}") == 0) { +ADDRLP4 0+16 +ARGP4 +ADDRGP4 $452 +ARGP4 +ADDRLP4 1056 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 1056 +INDIRI4 +CNSTI4 0 +NEI4 $449 +line 711 +;711: return qtrue; +CNSTI4 1 +RETI4 +ADDRGP4 $437 +JUMPV +LABELV $449 +line 715 +;712: } +;713: +;714: // font +;715: if (Q_stricmp(token.string, "font") == 0) { +ADDRLP4 0+16 +ARGP4 +ADDRGP4 $456 +ARGP4 +ADDRLP4 1060 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 1060 +INDIRI4 +CNSTI4 0 +NEI4 $453 +line 717 +;716: int pointSize; +;717: if (!PC_String_Parse(handle, &tempStr) || !PC_Int_Parse(handle,&pointSize)) { +ADDRFP4 0 +INDIRI4 +ARGI4 +ADDRLP4 1040 +ARGP4 +ADDRLP4 1068 +ADDRGP4 PC_String_Parse +CALLI4 +ASGNI4 +ADDRLP4 1068 +INDIRI4 +CNSTI4 0 +EQI4 $459 +ADDRFP4 0 +INDIRI4 +ARGI4 +ADDRLP4 1064 +ARGP4 +ADDRLP4 1072 +ADDRGP4 PC_Int_Parse +CALLI4 +ASGNI4 +ADDRLP4 1072 +INDIRI4 +CNSTI4 0 +NEI4 $457 +LABELV $459 +line 718 +;718: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $437 +JUMPV +LABELV $457 +line 720 +;719: } +;720: trap_R_RegisterFont(tempStr, pointSize, &uiInfo.uiDC.Assets.textFont); +ADDRLP4 1040 +INDIRP4 +ARGP4 +ADDRLP4 1064 +INDIRI4 +ARGI4 +ADDRGP4 uiInfo+228+12 +ARGP4 +ADDRGP4 trap_R_RegisterFont +CALLV +pop +line 721 +;721: uiInfo.uiDC.Assets.fontRegistered = qtrue; +ADDRGP4 uiInfo+228+61764 +CNSTI4 1 +ASGNI4 +line 722 +;722: continue; +ADDRGP4 $445 +JUMPV +LABELV $453 +line 725 +;723: } +;724: +;725: if (Q_stricmp(token.string, "smallFont") == 0) { +ADDRLP4 0+16 +ARGP4 +ADDRGP4 $467 +ARGP4 +ADDRLP4 1064 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 1064 +INDIRI4 +CNSTI4 0 +NEI4 $464 +line 727 +;726: int pointSize; +;727: if (!PC_String_Parse(handle, &tempStr) || !PC_Int_Parse(handle,&pointSize)) { +ADDRFP4 0 +INDIRI4 +ARGI4 +ADDRLP4 1040 +ARGP4 +ADDRLP4 1072 +ADDRGP4 PC_String_Parse +CALLI4 +ASGNI4 +ADDRLP4 1072 +INDIRI4 +CNSTI4 0 +EQI4 $470 +ADDRFP4 0 +INDIRI4 +ARGI4 +ADDRLP4 1068 +ARGP4 +ADDRLP4 1076 +ADDRGP4 PC_Int_Parse +CALLI4 +ASGNI4 +ADDRLP4 1076 +INDIRI4 +CNSTI4 0 +NEI4 $468 +LABELV $470 +line 728 +;728: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $437 +JUMPV +LABELV $468 +line 730 +;729: } +;730: trap_R_RegisterFont(tempStr, pointSize, &uiInfo.uiDC.Assets.smallFont); +ADDRLP4 1040 +INDIRP4 +ARGP4 +ADDRLP4 1068 +INDIRI4 +ARGI4 +ADDRGP4 uiInfo+228+20560 +ARGP4 +ADDRGP4 trap_R_RegisterFont +CALLV +pop +line 731 +;731: continue; +ADDRGP4 $445 +JUMPV +LABELV $464 +line 734 +;732: } +;733: +;734: if (Q_stricmp(token.string, "bigFont") == 0) { +ADDRLP4 0+16 +ARGP4 +ADDRGP4 $476 +ARGP4 +ADDRLP4 1068 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 1068 +INDIRI4 +CNSTI4 0 +NEI4 $473 +line 736 +;735: int pointSize; +;736: if (!PC_String_Parse(handle, &tempStr) || !PC_Int_Parse(handle,&pointSize)) { +ADDRFP4 0 +INDIRI4 +ARGI4 +ADDRLP4 1040 +ARGP4 +ADDRLP4 1076 +ADDRGP4 PC_String_Parse +CALLI4 +ASGNI4 +ADDRLP4 1076 +INDIRI4 +CNSTI4 0 +EQI4 $479 +ADDRFP4 0 +INDIRI4 +ARGI4 +ADDRLP4 1072 +ARGP4 +ADDRLP4 1080 +ADDRGP4 PC_Int_Parse +CALLI4 +ASGNI4 +ADDRLP4 1080 +INDIRI4 +CNSTI4 0 +NEI4 $477 +LABELV $479 +line 737 +;737: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $437 +JUMPV +LABELV $477 +line 739 +;738: } +;739: trap_R_RegisterFont(tempStr, pointSize, &uiInfo.uiDC.Assets.bigFont); +ADDRLP4 1040 +INDIRP4 +ARGP4 +ADDRLP4 1072 +INDIRI4 +ARGI4 +ADDRGP4 uiInfo+228+41108 +ARGP4 +ADDRGP4 trap_R_RegisterFont +CALLV +pop +line 740 +;740: continue; +ADDRGP4 $445 +JUMPV +LABELV $473 +line 745 +;741: } +;742: +;743: +;744: // gradientbar +;745: if (Q_stricmp(token.string, "gradientbar") == 0) { +ADDRLP4 0+16 +ARGP4 +ADDRGP4 $485 +ARGP4 +ADDRLP4 1072 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 1072 +INDIRI4 +CNSTI4 0 +NEI4 $482 +line 746 +;746: if (!PC_String_Parse(handle, &tempStr)) { +ADDRFP4 0 +INDIRI4 +ARGI4 +ADDRLP4 1040 +ARGP4 +ADDRLP4 1076 +ADDRGP4 PC_String_Parse +CALLI4 +ASGNI4 +ADDRLP4 1076 +INDIRI4 +CNSTI4 0 +NEI4 $486 +line 747 +;747: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $437 +JUMPV +LABELV $486 +line 749 +;748: } +;749: uiInfo.uiDC.Assets.gradientBar = trap_R_RegisterShaderNoMip(tempStr); +ADDRLP4 1040 +INDIRP4 +ARGP4 +ADDRLP4 1080 +ADDRGP4 trap_R_RegisterShaderNoMip +CALLI4 +ASGNI4 +ADDRGP4 uiInfo+228+61660 +ADDRLP4 1080 +INDIRI4 +ASGNI4 +line 750 +;750: continue; +ADDRGP4 $445 +JUMPV +LABELV $482 +line 754 +;751: } +;752: +;753: // enterMenuSound +;754: if (Q_stricmp(token.string, "menuEnterSound") == 0) { +ADDRLP4 0+16 +ARGP4 +ADDRGP4 $493 +ARGP4 +ADDRLP4 1076 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 1076 +INDIRI4 +CNSTI4 0 +NEI4 $490 +line 755 +;755: if (!PC_String_Parse(handle, &tempStr)) { +ADDRFP4 0 +INDIRI4 +ARGI4 +ADDRLP4 1040 +ARGP4 +ADDRLP4 1080 +ADDRGP4 PC_String_Parse +CALLI4 +ASGNI4 +ADDRLP4 1080 +INDIRI4 +CNSTI4 0 +NEI4 $494 +line 756 +;756: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $437 +JUMPV +LABELV $494 +line 758 +;757: } +;758: uiInfo.uiDC.Assets.menuEnterSound = trap_S_RegisterSound( tempStr, qfalse ); +ADDRLP4 1040 +INDIRP4 +ARGP4 +CNSTI4 0 +ARGI4 +ADDRLP4 1084 +ADDRGP4 trap_S_RegisterSound +CALLI4 +ASGNI4 +ADDRGP4 uiInfo+228+61708 +ADDRLP4 1084 +INDIRI4 +ASGNI4 +line 759 +;759: continue; +ADDRGP4 $445 +JUMPV +LABELV $490 +line 763 +;760: } +;761: +;762: // exitMenuSound +;763: if (Q_stricmp(token.string, "menuExitSound") == 0) { +ADDRLP4 0+16 +ARGP4 +ADDRGP4 $501 +ARGP4 +ADDRLP4 1080 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 1080 +INDIRI4 +CNSTI4 0 +NEI4 $498 +line 764 +;764: if (!PC_String_Parse(handle, &tempStr)) { +ADDRFP4 0 +INDIRI4 +ARGI4 +ADDRLP4 1040 +ARGP4 +ADDRLP4 1084 +ADDRGP4 PC_String_Parse +CALLI4 +ASGNI4 +ADDRLP4 1084 +INDIRI4 +CNSTI4 0 +NEI4 $502 +line 765 +;765: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $437 +JUMPV +LABELV $502 +line 767 +;766: } +;767: uiInfo.uiDC.Assets.menuExitSound = trap_S_RegisterSound( tempStr, qfalse ); +ADDRLP4 1040 +INDIRP4 +ARGP4 +CNSTI4 0 +ARGI4 +ADDRLP4 1088 +ADDRGP4 trap_S_RegisterSound +CALLI4 +ASGNI4 +ADDRGP4 uiInfo+228+61712 +ADDRLP4 1088 +INDIRI4 +ASGNI4 +line 768 +;768: continue; +ADDRGP4 $445 +JUMPV +LABELV $498 +line 772 +;769: } +;770: +;771: // itemFocusSound +;772: if (Q_stricmp(token.string, "itemFocusSound") == 0) { +ADDRLP4 0+16 +ARGP4 +ADDRGP4 $509 +ARGP4 +ADDRLP4 1084 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 1084 +INDIRI4 +CNSTI4 0 +NEI4 $506 +line 773 +;773: if (!PC_String_Parse(handle, &tempStr)) { +ADDRFP4 0 +INDIRI4 +ARGI4 +ADDRLP4 1040 +ARGP4 +ADDRLP4 1088 +ADDRGP4 PC_String_Parse +CALLI4 +ASGNI4 +ADDRLP4 1088 +INDIRI4 +CNSTI4 0 +NEI4 $510 +line 774 +;774: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $437 +JUMPV +LABELV $510 +line 776 +;775: } +;776: uiInfo.uiDC.Assets.itemFocusSound = trap_S_RegisterSound( tempStr, qfalse ); +ADDRLP4 1040 +INDIRP4 +ARGP4 +CNSTI4 0 +ARGI4 +ADDRLP4 1092 +ADDRGP4 trap_S_RegisterSound +CALLI4 +ASGNI4 +ADDRGP4 uiInfo+228+61720 +ADDRLP4 1092 +INDIRI4 +ASGNI4 +line 777 +;777: continue; +ADDRGP4 $445 +JUMPV +LABELV $506 +line 781 +;778: } +;779: +;780: // menuBuzzSound +;781: if (Q_stricmp(token.string, "menuBuzzSound") == 0) { +ADDRLP4 0+16 +ARGP4 +ADDRGP4 $517 +ARGP4 +ADDRLP4 1088 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 1088 +INDIRI4 +CNSTI4 0 +NEI4 $514 +line 782 +;782: if (!PC_String_Parse(handle, &tempStr)) { +ADDRFP4 0 +INDIRI4 +ARGI4 +ADDRLP4 1040 +ARGP4 +ADDRLP4 1092 +ADDRGP4 PC_String_Parse +CALLI4 +ASGNI4 +ADDRLP4 1092 +INDIRI4 +CNSTI4 0 +NEI4 $518 +line 783 +;783: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $437 +JUMPV +LABELV $518 +line 785 +;784: } +;785: uiInfo.uiDC.Assets.menuBuzzSound = trap_S_RegisterSound( tempStr, qfalse ); +ADDRLP4 1040 +INDIRP4 +ARGP4 +CNSTI4 0 +ARGI4 +ADDRLP4 1096 +ADDRGP4 trap_S_RegisterSound +CALLI4 +ASGNI4 +ADDRGP4 uiInfo+228+61716 +ADDRLP4 1096 +INDIRI4 +ASGNI4 +line 786 +;786: continue; +ADDRGP4 $445 +JUMPV +LABELV $514 +line 789 +;787: } +;788: +;789: if (Q_stricmp(token.string, "cursor") == 0) { +ADDRLP4 0+16 +ARGP4 +ADDRGP4 $525 +ARGP4 +ADDRLP4 1092 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 1092 +INDIRI4 +CNSTI4 0 +NEI4 $522 +line 790 +;790: if (!PC_String_Parse(handle, &uiInfo.uiDC.Assets.cursorStr)) { +ADDRFP4 0 +INDIRI4 +ARGI4 +ADDRGP4 uiInfo+228+4 +ARGP4 +ADDRLP4 1096 +ADDRGP4 PC_String_Parse +CALLI4 +ASGNI4 +ADDRLP4 1096 +INDIRI4 +CNSTI4 0 +NEI4 $526 +line 791 +;791: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $437 +JUMPV +LABELV $526 +line 793 +;792: } +;793: uiInfo.uiDC.Assets.cursor = trap_R_RegisterShaderNoMip( uiInfo.uiDC.Assets.cursorStr); +ADDRGP4 uiInfo+228+4 +INDIRP4 +ARGP4 +ADDRLP4 1100 +ADDRGP4 trap_R_RegisterShaderNoMip +CALLI4 +ASGNI4 +ADDRGP4 uiInfo+228+61656 +ADDRLP4 1100 +INDIRI4 +ASGNI4 +line 794 +;794: continue; +ADDRGP4 $445 +JUMPV +LABELV $522 +line 797 +;795: } +;796: +;797: if (Q_stricmp(token.string, "fadeClamp") == 0) { +ADDRLP4 0+16 +ARGP4 +ADDRGP4 $537 +ARGP4 +ADDRLP4 1096 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 1096 +INDIRI4 +CNSTI4 0 +NEI4 $534 +line 798 +;798: if (!PC_Float_Parse(handle, &uiInfo.uiDC.Assets.fadeClamp)) { +ADDRFP4 0 +INDIRI4 +ARGI4 +ADDRGP4 uiInfo+228+61724 +ARGP4 +ADDRLP4 1100 +ADDRGP4 PC_Float_Parse +CALLI4 +ASGNI4 +ADDRLP4 1100 +INDIRI4 +CNSTI4 0 +NEI4 $445 +line 799 +;799: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $437 +JUMPV +line 801 +;800: } +;801: continue; +LABELV $534 +line 804 +;802: } +;803: +;804: if (Q_stricmp(token.string, "fadeCycle") == 0) { +ADDRLP4 0+16 +ARGP4 +ADDRGP4 $545 +ARGP4 +ADDRLP4 1100 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 1100 +INDIRI4 +CNSTI4 0 +NEI4 $542 +line 805 +;805: if (!PC_Int_Parse(handle, &uiInfo.uiDC.Assets.fadeCycle)) { +ADDRFP4 0 +INDIRI4 +ARGI4 +ADDRGP4 uiInfo+228+61728 +ARGP4 +ADDRLP4 1104 +ADDRGP4 PC_Int_Parse +CALLI4 +ASGNI4 +ADDRLP4 1104 +INDIRI4 +CNSTI4 0 +NEI4 $445 +line 806 +;806: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $437 +JUMPV +line 808 +;807: } +;808: continue; +LABELV $542 +line 811 +;809: } +;810: +;811: if (Q_stricmp(token.string, "fadeAmount") == 0) { +ADDRLP4 0+16 +ARGP4 +ADDRGP4 $553 +ARGP4 +ADDRLP4 1104 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 1104 +INDIRI4 +CNSTI4 0 +NEI4 $550 +line 812 +;812: if (!PC_Float_Parse(handle, &uiInfo.uiDC.Assets.fadeAmount)) { +ADDRFP4 0 +INDIRI4 +ARGI4 +ADDRGP4 uiInfo+228+61732 +ARGP4 +ADDRLP4 1108 +ADDRGP4 PC_Float_Parse +CALLI4 +ASGNI4 +ADDRLP4 1108 +INDIRI4 +CNSTI4 0 +NEI4 $445 +line 813 +;813: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $437 +JUMPV +line 815 +;814: } +;815: continue; +LABELV $550 +line 818 +;816: } +;817: +;818: if (Q_stricmp(token.string, "shadowX") == 0) { +ADDRLP4 0+16 +ARGP4 +ADDRGP4 $561 +ARGP4 +ADDRLP4 1108 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 1108 +INDIRI4 +CNSTI4 0 +NEI4 $558 +line 819 +;819: if (!PC_Float_Parse(handle, &uiInfo.uiDC.Assets.shadowX)) { +ADDRFP4 0 +INDIRI4 +ARGI4 +ADDRGP4 uiInfo+228+61736 +ARGP4 +ADDRLP4 1112 +ADDRGP4 PC_Float_Parse +CALLI4 +ASGNI4 +ADDRLP4 1112 +INDIRI4 +CNSTI4 0 +NEI4 $445 +line 820 +;820: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $437 +JUMPV +line 822 +;821: } +;822: continue; +LABELV $558 +line 825 +;823: } +;824: +;825: if (Q_stricmp(token.string, "shadowY") == 0) { +ADDRLP4 0+16 +ARGP4 +ADDRGP4 $569 +ARGP4 +ADDRLP4 1112 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 1112 +INDIRI4 +CNSTI4 0 +NEI4 $566 +line 826 +;826: if (!PC_Float_Parse(handle, &uiInfo.uiDC.Assets.shadowY)) { +ADDRFP4 0 +INDIRI4 +ARGI4 +ADDRGP4 uiInfo+228+61740 +ARGP4 +ADDRLP4 1116 +ADDRGP4 PC_Float_Parse +CALLI4 +ASGNI4 +ADDRLP4 1116 +INDIRI4 +CNSTI4 0 +NEI4 $445 +line 827 +;827: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $437 +JUMPV +line 829 +;828: } +;829: continue; +LABELV $566 +line 832 +;830: } +;831: +;832: if (Q_stricmp(token.string, "shadowColor") == 0) { +ADDRLP4 0+16 +ARGP4 +ADDRGP4 $577 +ARGP4 +ADDRLP4 1116 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 1116 +INDIRI4 +CNSTI4 0 +NEI4 $574 +line 833 +;833: if (!PC_Color_Parse(handle, &uiInfo.uiDC.Assets.shadowColor)) { +ADDRFP4 0 +INDIRI4 +ARGI4 +ADDRGP4 uiInfo+228+61744 +ARGP4 +ADDRLP4 1120 +ADDRGP4 PC_Color_Parse +CALLI4 +ASGNI4 +ADDRLP4 1120 +INDIRI4 +CNSTI4 0 +NEI4 $578 +line 834 +;834: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $437 +JUMPV +LABELV $578 +line 836 +;835: } +;836: uiInfo.uiDC.Assets.shadowFadeClamp = uiInfo.uiDC.Assets.shadowColor[3]; +ADDRGP4 uiInfo+228+61760 +ADDRGP4 uiInfo+228+61744+12 +INDIRF4 +ASGNF4 +line 837 +;837: continue; +LABELV $574 +line 840 +;838: } +;839: +;840: } +LABELV $445 +line 703 +ADDRGP4 $444 +JUMPV +line 841 +;841: return qfalse; +CNSTI4 0 +RETI4 +LABELV $437 +endproc Asset_Parse 1124 12 +export Font_Report +proc Font_Report 8 12 +line 844 +;842:} +;843: +;844:void Font_Report() { +line 846 +;845: int i; +;846: Com_Printf("Font Info\n"); +ADDRGP4 $588 +ARGP4 +ADDRGP4 Com_Printf +CALLV +pop +line 847 +;847: Com_Printf("=========\n"); +ADDRGP4 $589 +ARGP4 +ADDRGP4 Com_Printf +CALLV +pop +line 848 +;848: for ( i = 32; i < 96; i++) { +ADDRLP4 0 +CNSTI4 32 +ASGNI4 +LABELV $590 +line 849 +;849: Com_Printf("Glyph handle %i: %i\n", i, uiInfo.uiDC.Assets.textFont.glyphs[i].glyph); +ADDRGP4 $594 +ARGP4 +ADDRLP4 0 +INDIRI4 +ARGI4 +CNSTI4 80 +ADDRLP4 0 +INDIRI4 +MULI4 +ADDRGP4 uiInfo+228+12+44 +ADDP4 +INDIRI4 +ARGI4 +ADDRGP4 Com_Printf +CALLV +pop +line 850 +;850: } +LABELV $591 +line 848 +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +ADDRLP4 0 +INDIRI4 +CNSTI4 96 +LTI4 $590 +line 851 +;851:} +LABELV $587 +endproc Font_Report 8 12 +export UI_Report +proc UI_Report 0 0 +line 853 +;852: +;853:void UI_Report() { +line 854 +;854: String_Report(); +ADDRGP4 String_Report +CALLV +pop +line 857 +;855: //Font_Report(); +;856: +;857:} +LABELV $598 +endproc UI_Report 0 0 +export UI_ParseMenu +proc UI_ParseMenu 1060 12 +line 859 +;858: +;859:void UI_ParseMenu(const char *menuFile) { +line 863 +;860: int handle; +;861: pc_token_t token; +;862: +;863: Com_Printf("Parsing menu file:%s\n", menuFile); +ADDRGP4 $600 +ARGP4 +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRGP4 Com_Printf +CALLV +pop +line 865 +;864: +;865: handle = trap_PC_LoadSource(menuFile); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRLP4 1044 +ADDRGP4 trap_PC_LoadSource +CALLI4 +ASGNI4 +ADDRLP4 1040 +ADDRLP4 1044 +INDIRI4 +ASGNI4 +line 866 +;866: if (!handle) { +ADDRLP4 1040 +INDIRI4 +CNSTI4 0 +NEI4 $604 +line 867 +;867: return; +ADDRGP4 $599 +JUMPV +LABELV $603 +line 870 +;868: } +;869: +;870: while ( 1 ) { +line 871 +;871: memset(&token, 0, sizeof(pc_token_t)); +ADDRLP4 0 +ARGP4 +CNSTI4 0 +ARGI4 +CNSTI4 1040 +ARGI4 +ADDRGP4 memset +CALLP4 +pop +line 872 +;872: if (!trap_PC_ReadToken( handle, &token )) { +ADDRLP4 1040 +INDIRI4 +ARGI4 +ADDRLP4 0 +ARGP4 +ADDRLP4 1048 +ADDRGP4 trap_PC_ReadToken +CALLI4 +ASGNI4 +ADDRLP4 1048 +INDIRI4 +CNSTI4 0 +NEI4 $606 +line 873 +;873: break; +ADDRGP4 $605 +JUMPV +LABELV $606 +line 886 +;874: } +;875: +;876: //if ( Q_stricmp( token, "{" ) ) { +;877: // Com_Printf( "Missing { in menu file\n" ); +;878: // break; +;879: //} +;880: +;881: //if ( menuCount == MAX_MENUS ) { +;882: // Com_Printf( "Too many menus!\n" ); +;883: // break; +;884: //} +;885: +;886: if ( token.string[0] == '}' ) { +ADDRLP4 0+16 +INDIRI1 +CVII4 1 +CNSTI4 125 +NEI4 $608 +line 887 +;887: break; +ADDRGP4 $605 +JUMPV +LABELV $608 +line 890 +;888: } +;889: +;890: if (Q_stricmp(token.string, "assetGlobalDef") == 0) { +ADDRLP4 0+16 +ARGP4 +ADDRGP4 $614 +ARGP4 +ADDRLP4 1052 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 1052 +INDIRI4 +CNSTI4 0 +NEI4 $611 +line 891 +;891: if (Asset_Parse(handle)) { +ADDRLP4 1040 +INDIRI4 +ARGI4 +ADDRLP4 1056 +ADDRGP4 Asset_Parse +CALLI4 +ASGNI4 +ADDRLP4 1056 +INDIRI4 +CNSTI4 0 +EQI4 $605 +line 892 +;892: continue; +ADDRGP4 $604 +JUMPV +line 893 +;893: } else { +line 894 +;894: break; +LABELV $611 +line 898 +;895: } +;896: } +;897: +;898: if (Q_stricmp(token.string, "menudef") == 0) { +ADDRLP4 0+16 +ARGP4 +ADDRGP4 $620 +ARGP4 +ADDRLP4 1056 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 1056 +INDIRI4 +CNSTI4 0 +NEI4 $617 +line 900 +;899: // start a new menu +;900: Menu_New(handle); +ADDRLP4 1040 +INDIRI4 +ARGI4 +ADDRGP4 Menu_New +CALLV +pop +line 901 +;901: } +LABELV $617 +line 902 +;902: } +LABELV $604 +line 870 +ADDRGP4 $603 +JUMPV +LABELV $605 +line 903 +;903: trap_PC_FreeSource(handle); +ADDRLP4 1040 +INDIRI4 +ARGI4 +ADDRGP4 trap_PC_FreeSource +CALLI4 +pop +line 904 +;904:} +LABELV $599 +endproc UI_ParseMenu 1060 12 +export Load_Menu +proc Load_Menu 1048 8 +line 906 +;905: +;906:qboolean Load_Menu(int handle) { +line 909 +;907: pc_token_t token; +;908: +;909: if (!trap_PC_ReadToken(handle, &token)) +ADDRFP4 0 +INDIRI4 +ARGI4 +ADDRLP4 0 +ARGP4 +ADDRLP4 1040 +ADDRGP4 trap_PC_ReadToken +CALLI4 +ASGNI4 +ADDRLP4 1040 +INDIRI4 +CNSTI4 0 +NEI4 $622 +line 910 +;910: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $621 +JUMPV +LABELV $622 +line 911 +;911: if (token.string[0] != '{') { +ADDRLP4 0+16 +INDIRI1 +CVII4 1 +CNSTI4 123 +EQI4 $628 +line 912 +;912: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $621 +JUMPV +LABELV $627 +line 915 +;913: } +;914: +;915: while ( 1 ) { +line 917 +;916: +;917: if (!trap_PC_ReadToken(handle, &token)) +ADDRFP4 0 +INDIRI4 +ARGI4 +ADDRLP4 0 +ARGP4 +ADDRLP4 1044 +ADDRGP4 trap_PC_ReadToken +CALLI4 +ASGNI4 +ADDRLP4 1044 +INDIRI4 +CNSTI4 0 +NEI4 $630 +line 918 +;918: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $621 +JUMPV +LABELV $630 +line 920 +;919: +;920: if ( token.string[0] == 0 ) { +ADDRLP4 0+16 +INDIRI1 +CVII4 1 +CNSTI4 0 +NEI4 $632 +line 921 +;921: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $621 +JUMPV +LABELV $632 +line 924 +;922: } +;923: +;924: if ( token.string[0] == '}' ) { +ADDRLP4 0+16 +INDIRI1 +CVII4 1 +CNSTI4 125 +NEI4 $635 +line 925 +;925: return qtrue; +CNSTI4 1 +RETI4 +ADDRGP4 $621 +JUMPV +LABELV $635 +line 928 +;926: } +;927: +;928: UI_ParseMenu(token.string); +ADDRLP4 0+16 +ARGP4 +ADDRGP4 UI_ParseMenu +CALLV +pop +line 929 +;929: } +LABELV $628 +line 915 +ADDRGP4 $627 +JUMPV +line 930 +;930: return qfalse; +CNSTI4 0 +RETI4 +LABELV $621 +endproc Load_Menu 1048 8 +export UI_LoadMenus +proc UI_LoadMenus 1068 8 +line 933 +;931:} +;932: +;933:void UI_LoadMenus(const char *menuFile, qboolean reset) { +line 938 +;934: pc_token_t token; +;935: int handle; +;936: int start; +;937: +;938: start = trap_Milliseconds(); +ADDRLP4 1048 +ADDRGP4 trap_Milliseconds +CALLI4 +ASGNI4 +ADDRLP4 1044 +ADDRLP4 1048 +INDIRI4 +ASGNI4 +line 940 +;939: +;940: handle = trap_PC_LoadSource( menuFile ); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRLP4 1052 +ADDRGP4 trap_PC_LoadSource +CALLI4 +ASGNI4 +ADDRLP4 1040 +ADDRLP4 1052 +INDIRI4 +ASGNI4 +line 941 +;941: if (!handle) { +ADDRLP4 1040 +INDIRI4 +CNSTI4 0 +NEI4 $640 +line 942 +;942: trap_Error( va( S_COLOR_YELLOW "menu file not found: %s, using default\n", menuFile ) ); +ADDRGP4 $642 +ARGP4 +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRLP4 1056 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRLP4 1056 +INDIRP4 +ARGP4 +ADDRGP4 trap_Error +CALLV +pop +line 943 +;943: handle = trap_PC_LoadSource( "ui/menus.txt" ); +ADDRGP4 $643 +ARGP4 +ADDRLP4 1060 +ADDRGP4 trap_PC_LoadSource +CALLI4 +ASGNI4 +ADDRLP4 1040 +ADDRLP4 1060 +INDIRI4 +ASGNI4 +line 944 +;944: if (!handle) { +ADDRLP4 1040 +INDIRI4 +CNSTI4 0 +NEI4 $644 +line 945 +;945: trap_Error( va( S_COLOR_RED "default menu file not found: ui/menus.txt, unable to continue!\n", menuFile ) ); +ADDRGP4 $646 +ARGP4 +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRLP4 1064 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRLP4 1064 +INDIRP4 +ARGP4 +ADDRGP4 trap_Error +CALLV +pop +line 946 +;946: } +LABELV $644 +line 947 +;947: } +LABELV $640 +line 949 +;948: +;949: ui_new.integer = 1; +ADDRGP4 ui_new+12 +CNSTI4 1 +ASGNI4 +line 951 +;950: +;951: if (reset) { +ADDRFP4 4 +INDIRI4 +CNSTI4 0 +EQI4 $651 +line 952 +;952: Menu_Reset(); +ADDRGP4 Menu_Reset +CALLV +pop +line 953 +;953: } +ADDRGP4 $651 +JUMPV +LABELV $650 +line 955 +;954: +;955: while ( 1 ) { +line 956 +;956: if (!trap_PC_ReadToken(handle, &token)) +ADDRLP4 1040 +INDIRI4 +ARGI4 +ADDRLP4 0 +ARGP4 +ADDRLP4 1056 +ADDRGP4 trap_PC_ReadToken +CALLI4 +ASGNI4 +ADDRLP4 1056 +INDIRI4 +CNSTI4 0 +NEI4 $653 +line 957 +;957: break; +ADDRGP4 $652 +JUMPV +LABELV $653 +line 958 +;958: if( token.string[0] == 0 || token.string[0] == '}') { +ADDRLP4 0+16 +INDIRI1 +CVII4 1 +CNSTI4 0 +EQI4 $659 +ADDRLP4 0+16 +INDIRI1 +CVII4 1 +CNSTI4 125 +NEI4 $655 +LABELV $659 +line 959 +;959: break; +ADDRGP4 $652 +JUMPV +LABELV $655 +line 962 +;960: } +;961: +;962: if ( token.string[0] == '}' ) { +ADDRLP4 0+16 +INDIRI1 +CVII4 1 +CNSTI4 125 +NEI4 $660 +line 963 +;963: break; +ADDRGP4 $652 +JUMPV +LABELV $660 +line 966 +;964: } +;965: +;966: if (Q_stricmp(token.string, "loadmenu") == 0) { +ADDRLP4 0+16 +ARGP4 +ADDRGP4 $666 +ARGP4 +ADDRLP4 1060 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 1060 +INDIRI4 +CNSTI4 0 +NEI4 $663 +line 967 +;967: if (Load_Menu(handle)) { +ADDRLP4 1040 +INDIRI4 +ARGI4 +ADDRLP4 1064 +ADDRGP4 Load_Menu +CALLI4 +ASGNI4 +ADDRLP4 1064 +INDIRI4 +CNSTI4 0 +EQI4 $652 +line 968 +;968: continue; +line 969 +;969: } else { +line 970 +;970: break; +LABELV $663 +line 973 +;971: } +;972: } +;973: } +LABELV $651 +line 955 +ADDRGP4 $650 +JUMPV +LABELV $652 +line 975 +;974: +;975: Com_Printf("UI menu load time = %d milli seconds\n", trap_Milliseconds() - start); +ADDRLP4 1056 +ADDRGP4 trap_Milliseconds +CALLI4 +ASGNI4 +ADDRGP4 $669 +ARGP4 +ADDRLP4 1056 +INDIRI4 +ADDRLP4 1044 +INDIRI4 +SUBI4 +ARGI4 +ADDRGP4 Com_Printf +CALLV +pop +line 977 +;976: +;977: trap_PC_FreeSource( handle ); +ADDRLP4 1040 +INDIRI4 +ARGI4 +ADDRGP4 trap_PC_FreeSource +CALLI4 +pop +line 978 +;978:} +LABELV $639 +endproc UI_LoadMenus 1068 8 +export UI_Load +proc UI_Load 1052 8 +line 980 +;979: +;980:void UI_Load() { +line 982 +;981: char lastName[1024]; +;982: menuDef_t *menu = Menu_GetFocused(); +ADDRLP4 1032 +ADDRGP4 Menu_GetFocused +CALLP4 +ASGNP4 +ADDRLP4 4 +ADDRLP4 1032 +INDIRP4 +ASGNP4 +line 983 +;983: char *menuSet = UI_Cvar_VariableString("ui_menuFiles"); +ADDRGP4 $671 +ARGP4 +ADDRLP4 1036 +ADDRGP4 UI_Cvar_VariableString +CALLP4 +ASGNP4 +ADDRLP4 0 +ADDRLP4 1036 +INDIRP4 +ASGNP4 +line 984 +;984: if (menu && menu->window.name) { +ADDRLP4 1044 +CNSTU4 0 +ASGNU4 +ADDRLP4 4 +INDIRP4 +CVPU4 4 +ADDRLP4 1044 +INDIRU4 +EQU4 $672 +ADDRLP4 4 +INDIRP4 +CNSTI4 32 +ADDP4 +INDIRP4 +CVPU4 4 +ADDRLP4 1044 +INDIRU4 +EQU4 $672 +line 985 +;985: strcpy(lastName, menu->window.name); +ADDRLP4 8 +ARGP4 +ADDRLP4 4 +INDIRP4 +CNSTI4 32 +ADDP4 +INDIRP4 +ARGP4 +ADDRGP4 strcpy +CALLP4 +pop +line 986 +;986: } +LABELV $672 +line 987 +;987: if (menuSet == NULL || menuSet[0] == '\0') { +ADDRLP4 0 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $676 +ADDRLP4 0 +INDIRP4 +INDIRI1 +CVII4 1 +CNSTI4 0 +NEI4 $674 +LABELV $676 +line 988 +;988: menuSet = "ui/menus.txt"; +ADDRLP4 0 +ADDRGP4 $643 +ASGNP4 +line 989 +;989: } +LABELV $674 +line 991 +;990: +;991: String_Init(); +ADDRGP4 String_Init +CALLV +pop +line 996 +;992: +;993:#ifdef PRE_RELEASE_TADEMO +;994: UI_ParseGameInfo("demogameinfo.txt"); +;995:#else +;996: UI_ParseGameInfo("gameinfo.txt"); +ADDRGP4 $677 +ARGP4 +ADDRGP4 UI_ParseGameInfo +CALLV +pop +line 997 +;997: UI_LoadArenas(); +ADDRGP4 UI_LoadArenas +CALLV +pop +line 1000 +;998:#endif +;999: +;1000: UI_LoadMenus(menuSet, qtrue); +ADDRLP4 0 +INDIRP4 +ARGP4 +CNSTI4 1 +ARGI4 +ADDRGP4 UI_LoadMenus +CALLV +pop +line 1001 +;1001: Menus_CloseAll(); +ADDRGP4 Menus_CloseAll +CALLV +pop +line 1002 +;1002: Menus_ActivateByName(lastName); +ADDRLP4 8 +ARGP4 +ADDRGP4 Menus_ActivateByName +CALLP4 +pop +line 1004 +;1003: +;1004:} +LABELV $670 +endproc UI_Load 1052 8 +data +align 4 +LABELV handicapValues +address $678 +address $679 +address $680 +address $681 +address $682 +address $683 +address $684 +address $685 +address $686 +address $687 +address $688 +address $689 +address $690 +address $691 +address $692 +address $693 +address $694 +address $695 +address $696 +address $697 +byte 4 0 +align 4 +LABELV numHandicaps +byte 4 21 +code +proc UI_DrawHandicap 20 32 +line 1011 +;1005: +;1006:static const char *handicapValues[] = {"None","95","90","85","80","75","70","65","60","55","50","45","40","35","30","25","20","15","10","5",NULL}; +;1007:#ifndef MISSIONPACK // bk001206 +;1008:static int numHandicaps = sizeof(handicapValues) / sizeof(const char*); +;1009:#endif +;1010: +;1011:static void UI_DrawHandicap(rectDef_t *rect, float scale, vec4_t color, int textStyle) { +line 1014 +;1012: int i, h; +;1013: +;1014: h = Com_Clamp( 5, 100, trap_Cvar_VariableValue("handicap") ); +ADDRGP4 $699 +ARGP4 +ADDRLP4 8 +ADDRGP4 trap_Cvar_VariableValue +CALLF4 +ASGNF4 +CNSTF4 1084227584 +ARGF4 +CNSTF4 1120403456 +ARGF4 +ADDRLP4 8 +INDIRF4 +ARGF4 +ADDRLP4 12 +ADDRGP4 Com_Clamp +CALLF4 +ASGNF4 +ADDRLP4 4 +ADDRLP4 12 +INDIRF4 +CVFI4 4 +ASGNI4 +line 1015 +;1015: i = 20 - h / 5; +ADDRLP4 0 +CNSTI4 20 +ADDRLP4 4 +INDIRI4 +CNSTI4 5 +DIVI4 +SUBI4 +ASGNI4 +line 1017 +;1016: +;1017: Text_Paint(rect->x, rect->y, scale, color, handicapValues[i], 0, 0, textStyle); +ADDRLP4 16 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 16 +INDIRP4 +INDIRF4 +ARGF4 +ADDRLP4 16 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRF4 +ARGF4 +ADDRFP4 4 +INDIRF4 +ARGF4 +ADDRFP4 8 +INDIRP4 +ARGP4 +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 handicapValues +ADDP4 +INDIRP4 +ARGP4 +CNSTF4 0 +ARGF4 +CNSTI4 0 +ARGI4 +ADDRFP4 12 +INDIRI4 +ARGI4 +ADDRGP4 Text_Paint +CALLV +pop +line 1018 +;1018:} +LABELV $698 +endproc UI_DrawHandicap 20 32 +proc UI_DrawClanName 8 32 +line 1020 +;1019: +;1020:static void UI_DrawClanName(rectDef_t *rect, float scale, vec4_t color, int textStyle) { +line 1021 +;1021: Text_Paint(rect->x, rect->y, scale, color, UI_Cvar_VariableString("ui_teamName"), 0, 0, textStyle); +ADDRGP4 $701 +ARGP4 +ADDRLP4 0 +ADDRGP4 UI_Cvar_VariableString +CALLP4 +ASGNP4 +ADDRLP4 4 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 4 +INDIRP4 +INDIRF4 +ARGF4 +ADDRLP4 4 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRF4 +ARGF4 +ADDRFP4 4 +INDIRF4 +ARGF4 +ADDRFP4 8 +INDIRP4 +ARGP4 +ADDRLP4 0 +INDIRP4 +ARGP4 +CNSTF4 0 +ARGF4 +CNSTI4 0 +ARGI4 +ADDRFP4 12 +INDIRI4 +ARGI4 +ADDRGP4 Text_Paint +CALLV +pop +line 1022 +;1022:} +LABELV $700 +endproc UI_DrawClanName 8 32 +proc UI_SetCapFragLimits 16 8 +line 1025 +;1023: +;1024: +;1025:static void UI_SetCapFragLimits(qboolean uiVars) { +line 1026 +;1026: int cap = 5; +ADDRLP4 0 +CNSTI4 5 +ASGNI4 +line 1027 +;1027: int frag = 10; +ADDRLP4 4 +CNSTI4 10 +ASGNI4 +line 1028 +;1028: if (uiInfo.gameTypes[ui_gameType.integer].gtEnum == GT_OBELISK) { +ADDRGP4 ui_gameType+12 +INDIRI4 +CNSTI4 3 +LSHI4 +ADDRGP4 uiInfo+78580+4 +ADDP4 +INDIRI4 +CNSTI4 6 +NEI4 $703 +line 1029 +;1029: cap = 4; +ADDRLP4 0 +CNSTI4 4 +ASGNI4 +line 1030 +;1030: } else if (uiInfo.gameTypes[ui_gameType.integer].gtEnum == GT_HARVESTER) { +ADDRGP4 $704 +JUMPV +LABELV $703 +ADDRGP4 ui_gameType+12 +INDIRI4 +CNSTI4 3 +LSHI4 +ADDRGP4 uiInfo+78580+4 +ADDP4 +INDIRI4 +CNSTI4 7 +NEI4 $708 +line 1031 +;1031: cap = 15; +ADDRLP4 0 +CNSTI4 15 +ASGNI4 +line 1032 +;1032: } +LABELV $708 +LABELV $704 +line 1033 +;1033: if (uiVars) { +ADDRFP4 0 +INDIRI4 +CNSTI4 0 +EQI4 $713 +line 1034 +;1034: trap_Cvar_Set("ui_captureLimit", va("%d", cap)); +ADDRGP4 $716 +ARGP4 +ADDRLP4 0 +INDIRI4 +ARGI4 +ADDRLP4 8 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRGP4 $715 +ARGP4 +ADDRLP4 8 +INDIRP4 +ARGP4 +ADDRGP4 trap_Cvar_Set +CALLV +pop +line 1035 +;1035: trap_Cvar_Set("ui_fragLimit", va("%d", frag)); +ADDRGP4 $716 +ARGP4 +ADDRLP4 4 +INDIRI4 +ARGI4 +ADDRLP4 12 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRGP4 $717 +ARGP4 +ADDRLP4 12 +INDIRP4 +ARGP4 +ADDRGP4 trap_Cvar_Set +CALLV +pop +line 1036 +;1036: } else { +ADDRGP4 $714 +JUMPV +LABELV $713 +line 1037 +;1037: trap_Cvar_Set("capturelimit", va("%d", cap)); +ADDRGP4 $716 +ARGP4 +ADDRLP4 0 +INDIRI4 +ARGI4 +ADDRLP4 8 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRGP4 $718 +ARGP4 +ADDRLP4 8 +INDIRP4 +ARGP4 +ADDRGP4 trap_Cvar_Set +CALLV +pop +line 1038 +;1038: trap_Cvar_Set("fraglimit", va("%d", frag)); +ADDRGP4 $716 +ARGP4 +ADDRLP4 4 +INDIRI4 +ARGI4 +ADDRLP4 12 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRGP4 $719 +ARGP4 +ADDRLP4 12 +INDIRP4 +ARGP4 +ADDRGP4 trap_Cvar_Set +CALLV +pop +line 1039 +;1039: } +LABELV $714 +line 1040 +;1040:} +LABELV $702 +endproc UI_SetCapFragLimits 16 8 +proc UI_DrawGameType 4 32 +line 1042 +;1041:// ui_gameType assumes gametype 0 is -1 ALL and will not show +;1042:static void UI_DrawGameType(rectDef_t *rect, float scale, vec4_t color, int textStyle) { +line 1043 +;1043: Text_Paint(rect->x, rect->y, scale, color, uiInfo.gameTypes[ui_gameType.integer].gameType, 0, 0, textStyle); +ADDRLP4 0 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 0 +INDIRP4 +INDIRF4 +ARGF4 +ADDRLP4 0 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRF4 +ARGF4 +ADDRFP4 4 +INDIRF4 +ARGF4 +ADDRFP4 8 +INDIRP4 +ARGP4 +ADDRGP4 ui_gameType+12 +INDIRI4 +CNSTI4 3 +LSHI4 +ADDRGP4 uiInfo+78580 +ADDP4 +INDIRP4 +ARGP4 +CNSTF4 0 +ARGF4 +CNSTI4 0 +ARGI4 +ADDRFP4 12 +INDIRI4 +ARGI4 +ADDRGP4 Text_Paint +CALLV +pop +line 1044 +;1044:} +LABELV $720 +endproc UI_DrawGameType 4 32 +proc UI_DrawNetGameType 4 32 +line 1046 +;1045: +;1046:static void UI_DrawNetGameType(rectDef_t *rect, float scale, vec4_t color, int textStyle) { +line 1047 +;1047: if (ui_netGameType.integer < 0 || ui_netGameType.integer > uiInfo.numGameTypes) { +ADDRGP4 ui_netGameType+12 +INDIRI4 +CNSTI4 0 +LTI4 $729 +ADDRGP4 ui_netGameType+12 +INDIRI4 +ADDRGP4 uiInfo+78576 +INDIRI4 +LEI4 $724 +LABELV $729 +line 1048 +;1048: trap_Cvar_Set("ui_netGameType", "0"); +ADDRGP4 $730 +ARGP4 +ADDRGP4 $395 +ARGP4 +ADDRGP4 trap_Cvar_Set +CALLV +pop +line 1049 +;1049: trap_Cvar_Set("ui_actualNetGameType", "0"); +ADDRGP4 $731 +ARGP4 +ADDRGP4 $395 +ARGP4 +ADDRGP4 trap_Cvar_Set +CALLV +pop +line 1050 +;1050: } +LABELV $724 +line 1051 +;1051: Text_Paint(rect->x, rect->y, scale, color, uiInfo.gameTypes[ui_netGameType.integer].gameType , 0, 0, textStyle); +ADDRLP4 0 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 0 +INDIRP4 +INDIRF4 +ARGF4 +ADDRLP4 0 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRF4 +ARGF4 +ADDRFP4 4 +INDIRF4 +ARGF4 +ADDRFP4 8 +INDIRP4 +ARGP4 +ADDRGP4 ui_netGameType+12 +INDIRI4 +CNSTI4 3 +LSHI4 +ADDRGP4 uiInfo+78580 +ADDP4 +INDIRP4 +ARGP4 +CNSTF4 0 +ARGF4 +CNSTI4 0 +ARGI4 +ADDRFP4 12 +INDIRI4 +ARGI4 +ADDRGP4 Text_Paint +CALLV +pop +line 1052 +;1052:} +LABELV $723 +endproc UI_DrawNetGameType 4 32 +proc UI_DrawJoinGameType 4 32 +line 1054 +;1053: +;1054:static void UI_DrawJoinGameType(rectDef_t *rect, float scale, vec4_t color, int textStyle) { +line 1055 +;1055: if (ui_joinGameType.integer < 0 || ui_joinGameType.integer > uiInfo.numJoinGameTypes) { +ADDRGP4 ui_joinGameType+12 +INDIRI4 +CNSTI4 0 +LTI4 $740 +ADDRGP4 ui_joinGameType+12 +INDIRI4 +ADDRGP4 uiInfo+78708 +INDIRI4 +LEI4 $735 +LABELV $740 +line 1056 +;1056: trap_Cvar_Set("ui_joinGameType", "0"); +ADDRGP4 $741 +ARGP4 +ADDRGP4 $395 +ARGP4 +ADDRGP4 trap_Cvar_Set +CALLV +pop +line 1057 +;1057: } +LABELV $735 +line 1058 +;1058: Text_Paint(rect->x, rect->y, scale, color, uiInfo.joinGameTypes[ui_joinGameType.integer].gameType , 0, 0, textStyle); +ADDRLP4 0 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 0 +INDIRP4 +INDIRF4 +ARGF4 +ADDRLP4 0 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRF4 +ARGF4 +ADDRFP4 4 +INDIRF4 +ARGF4 +ADDRFP4 8 +INDIRP4 +ARGP4 +ADDRGP4 ui_joinGameType+12 +INDIRI4 +CNSTI4 3 +LSHI4 +ADDRGP4 uiInfo+78712 +ADDP4 +INDIRP4 +ARGP4 +CNSTF4 0 +ARGF4 +CNSTI4 0 +ARGI4 +ADDRFP4 12 +INDIRI4 +ARGI4 +ADDRGP4 Text_Paint +CALLV +pop +line 1059 +;1059:} +LABELV $734 +endproc UI_DrawJoinGameType 4 32 +proc UI_TeamIndexFromName 12 8 +line 1063 +;1060: +;1061: +;1062: +;1063:static int UI_TeamIndexFromName(const char *name) { +line 1066 +;1064: int i; +;1065: +;1066: if (name && *name) { +ADDRLP4 4 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 4 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $745 +ADDRLP4 4 +INDIRP4 +INDIRI1 +CVII4 1 +CNSTI4 0 +EQI4 $745 +line 1067 +;1067: for (i = 0; i < uiInfo.teamCount; i++) { +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +ADDRGP4 $750 +JUMPV +LABELV $747 +line 1068 +;1068: if (Q_stricmp(name, uiInfo.teamList[i].teamName) == 0) { +ADDRFP4 0 +INDIRP4 +ARGP4 +CNSTI4 44 +ADDRLP4 0 +INDIRI4 +MULI4 +ADDRGP4 uiInfo+75760 +ADDP4 +INDIRP4 +ARGP4 +ADDRLP4 8 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 8 +INDIRI4 +CNSTI4 0 +NEI4 $752 +line 1069 +;1069: return i; +ADDRLP4 0 +INDIRI4 +RETI4 +ADDRGP4 $744 +JUMPV +LABELV $752 +line 1071 +;1070: } +;1071: } +LABELV $748 +line 1067 +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +LABELV $750 +ADDRLP4 0 +INDIRI4 +ADDRGP4 uiInfo+75756 +INDIRI4 +LTI4 $747 +line 1072 +;1072: } +LABELV $745 +line 1074 +;1073: +;1074: return 0; +CNSTI4 0 +RETI4 +LABELV $744 +endproc UI_TeamIndexFromName 12 8 +proc UI_DrawClanLogo 48 20 +line 1078 +;1075: +;1076:} +;1077: +;1078:static void UI_DrawClanLogo(rectDef_t *rect, float scale, vec4_t color) { +line 1080 +;1079: int i; +;1080: i = UI_TeamIndexFromName(UI_Cvar_VariableString("ui_teamName")); +ADDRGP4 $701 +ARGP4 +ADDRLP4 4 +ADDRGP4 UI_Cvar_VariableString +CALLP4 +ASGNP4 +ADDRLP4 4 +INDIRP4 +ARGP4 +ADDRLP4 8 +ADDRGP4 UI_TeamIndexFromName +CALLI4 +ASGNI4 +ADDRLP4 0 +ADDRLP4 8 +INDIRI4 +ASGNI4 +line 1081 +;1081: if (i >= 0 && i < uiInfo.teamCount) { +ADDRLP4 0 +INDIRI4 +CNSTI4 0 +LTI4 $756 +ADDRLP4 0 +INDIRI4 +ADDRGP4 uiInfo+75756 +INDIRI4 +GEI4 $756 +line 1082 +;1082: trap_R_SetColor( color ); +ADDRFP4 8 +INDIRP4 +ARGP4 +ADDRGP4 trap_R_SetColor +CALLV +pop +line 1084 +;1083: +;1084: if (uiInfo.teamList[i].teamIcon == -1) { +CNSTI4 44 +ADDRLP4 0 +INDIRI4 +MULI4 +ADDRGP4 uiInfo+75760+28 +ADDP4 +INDIRI4 +CNSTI4 -1 +NEI4 $759 +line 1085 +;1085: uiInfo.teamList[i].teamIcon = trap_R_RegisterShaderNoMip(uiInfo.teamList[i].imageName); +ADDRLP4 16 +CNSTI4 44 +ADDRLP4 0 +INDIRI4 +MULI4 +ASGNI4 +ADDRLP4 16 +INDIRI4 +ADDRGP4 uiInfo+75760+4 +ADDP4 +INDIRP4 +ARGP4 +ADDRLP4 20 +ADDRGP4 trap_R_RegisterShaderNoMip +CALLI4 +ASGNI4 +ADDRLP4 16 +INDIRI4 +ADDRGP4 uiInfo+75760+28 +ADDP4 +ADDRLP4 20 +INDIRI4 +ASGNI4 +line 1086 +;1086: uiInfo.teamList[i].teamIcon_Metal = trap_R_RegisterShaderNoMip(va("%s_metal",uiInfo.teamList[i].imageName)); +ADDRGP4 $769 +ARGP4 +ADDRLP4 24 +CNSTI4 44 +ADDRLP4 0 +INDIRI4 +MULI4 +ASGNI4 +ADDRLP4 24 +INDIRI4 +ADDRGP4 uiInfo+75760+4 +ADDP4 +INDIRP4 +ARGP4 +ADDRLP4 28 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRLP4 28 +INDIRP4 +ARGP4 +ADDRLP4 32 +ADDRGP4 trap_R_RegisterShaderNoMip +CALLI4 +ASGNI4 +ADDRLP4 24 +INDIRI4 +ADDRGP4 uiInfo+75760+32 +ADDP4 +ADDRLP4 32 +INDIRI4 +ASGNI4 +line 1087 +;1087: uiInfo.teamList[i].teamIcon_Name = trap_R_RegisterShaderNoMip(va("%s_name", uiInfo.teamList[i].imageName)); +ADDRGP4 $774 +ARGP4 +ADDRLP4 36 +CNSTI4 44 +ADDRLP4 0 +INDIRI4 +MULI4 +ASGNI4 +ADDRLP4 36 +INDIRI4 +ADDRGP4 uiInfo+75760+4 +ADDP4 +INDIRP4 +ARGP4 +ADDRLP4 40 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRLP4 40 +INDIRP4 +ARGP4 +ADDRLP4 44 +ADDRGP4 trap_R_RegisterShaderNoMip +CALLI4 +ASGNI4 +ADDRLP4 36 +INDIRI4 +ADDRGP4 uiInfo+75760+36 +ADDP4 +ADDRLP4 44 +INDIRI4 +ASGNI4 +line 1088 +;1088: } +LABELV $759 +line 1090 +;1089: +;1090: UI_DrawHandlePic( rect->x, rect->y, rect->w, rect->h, uiInfo.teamList[i].teamIcon); +ADDRLP4 16 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 16 +INDIRP4 +INDIRF4 +ARGF4 +ADDRLP4 16 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRF4 +ARGF4 +ADDRLP4 16 +INDIRP4 +CNSTI4 8 +ADDP4 +INDIRF4 +ARGF4 +ADDRLP4 16 +INDIRP4 +CNSTI4 12 +ADDP4 +INDIRF4 +ARGF4 +CNSTI4 44 +ADDRLP4 0 +INDIRI4 +MULI4 +ADDRGP4 uiInfo+75760+28 +ADDP4 +INDIRI4 +ARGI4 +ADDRGP4 UI_DrawHandlePic +CALLV +pop +line 1091 +;1091: trap_R_SetColor(NULL); +CNSTP4 0 +ARGP4 +ADDRGP4 trap_R_SetColor +CALLV +pop +line 1092 +;1092: } +LABELV $756 +line 1093 +;1093:} +LABELV $755 +endproc UI_DrawClanLogo 48 20 +proc UI_DrawClanCinematic 32 24 +line 1095 +;1094: +;1095:static void UI_DrawClanCinematic(rectDef_t *rect, float scale, vec4_t color) { +line 1097 +;1096: int i; +;1097: i = UI_TeamIndexFromName(UI_Cvar_VariableString("ui_teamName")); +ADDRGP4 $701 +ARGP4 +ADDRLP4 4 +ADDRGP4 UI_Cvar_VariableString +CALLP4 +ASGNP4 +ADDRLP4 4 +INDIRP4 +ARGP4 +ADDRLP4 8 +ADDRGP4 UI_TeamIndexFromName +CALLI4 +ASGNI4 +ADDRLP4 0 +ADDRLP4 8 +INDIRI4 +ASGNI4 +line 1098 +;1098: if (i >= 0 && i < uiInfo.teamCount) { +ADDRLP4 0 +INDIRI4 +CNSTI4 0 +LTI4 $780 +ADDRLP4 0 +INDIRI4 +ADDRGP4 uiInfo+75756 +INDIRI4 +GEI4 $780 +line 1100 +;1099: +;1100: if (uiInfo.teamList[i].cinematic >= -2) { +CNSTI4 44 +ADDRLP4 0 +INDIRI4 +MULI4 +ADDRGP4 uiInfo+75760+40 +ADDP4 +INDIRI4 +CNSTI4 -2 +LTI4 $783 +line 1101 +;1101: if (uiInfo.teamList[i].cinematic == -1) { +CNSTI4 44 +ADDRLP4 0 +INDIRI4 +MULI4 +ADDRGP4 uiInfo+75760+40 +ADDP4 +INDIRI4 +CNSTI4 -1 +NEI4 $787 +line 1102 +;1102: uiInfo.teamList[i].cinematic = trap_CIN_PlayCinematic(va("%s.roq", uiInfo.teamList[i].imageName), 0, 0, 0, 0, (CIN_loop | CIN_silent) ); +ADDRGP4 $793 +ARGP4 +ADDRLP4 16 +CNSTI4 44 +ADDRLP4 0 +INDIRI4 +MULI4 +ASGNI4 +ADDRLP4 16 +INDIRI4 +ADDRGP4 uiInfo+75760+4 +ADDP4 +INDIRP4 +ARGP4 +ADDRLP4 20 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRLP4 20 +INDIRP4 +ARGP4 +ADDRLP4 24 +CNSTI4 0 +ASGNI4 +ADDRLP4 24 +INDIRI4 +ARGI4 +ADDRLP4 24 +INDIRI4 +ARGI4 +ADDRLP4 24 +INDIRI4 +ARGI4 +ADDRLP4 24 +INDIRI4 +ARGI4 +CNSTI4 10 +ARGI4 +ADDRLP4 28 +ADDRGP4 trap_CIN_PlayCinematic +CALLI4 +ASGNI4 +ADDRLP4 16 +INDIRI4 +ADDRGP4 uiInfo+75760+40 +ADDP4 +ADDRLP4 28 +INDIRI4 +ASGNI4 +line 1103 +;1103: } +LABELV $787 +line 1104 +;1104: if (uiInfo.teamList[i].cinematic >= 0) { +CNSTI4 44 +ADDRLP4 0 +INDIRI4 +MULI4 +ADDRGP4 uiInfo+75760+40 +ADDP4 +INDIRI4 +CNSTI4 0 +LTI4 $796 +line 1105 +;1105: trap_CIN_RunCinematic(uiInfo.teamList[i].cinematic); +CNSTI4 44 +ADDRLP4 0 +INDIRI4 +MULI4 +ADDRGP4 uiInfo+75760+40 +ADDP4 +INDIRI4 +ARGI4 +ADDRGP4 trap_CIN_RunCinematic +CALLI4 +pop +line 1106 +;1106: trap_CIN_SetExtents(uiInfo.teamList[i].cinematic, rect->x, rect->y, rect->w, rect->h); +CNSTI4 44 +ADDRLP4 0 +INDIRI4 +MULI4 +ADDRGP4 uiInfo+75760+40 +ADDP4 +INDIRI4 +ARGI4 +ADDRLP4 16 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 16 +INDIRP4 +INDIRF4 +CVFI4 4 +ARGI4 +ADDRLP4 16 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRF4 +CVFI4 4 +ARGI4 +ADDRLP4 16 +INDIRP4 +CNSTI4 8 +ADDP4 +INDIRF4 +CVFI4 4 +ARGI4 +ADDRLP4 16 +INDIRP4 +CNSTI4 12 +ADDP4 +INDIRF4 +CVFI4 4 +ARGI4 +ADDRGP4 trap_CIN_SetExtents +CALLV +pop +line 1107 +;1107: trap_CIN_DrawCinematic(uiInfo.teamList[i].cinematic); +CNSTI4 44 +ADDRLP4 0 +INDIRI4 +MULI4 +ADDRGP4 uiInfo+75760+40 +ADDP4 +INDIRI4 +ARGI4 +ADDRGP4 trap_CIN_DrawCinematic +CALLV +pop +line 1108 +;1108: } else { +ADDRGP4 $784 +JUMPV +LABELV $796 +line 1109 +;1109: trap_R_SetColor( color ); +ADDRFP4 8 +INDIRP4 +ARGP4 +ADDRGP4 trap_R_SetColor +CALLV +pop +line 1110 +;1110: UI_DrawHandlePic( rect->x, rect->y, rect->w, rect->h, uiInfo.teamList[i].teamIcon_Metal); +ADDRLP4 16 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 16 +INDIRP4 +INDIRF4 +ARGF4 +ADDRLP4 16 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRF4 +ARGF4 +ADDRLP4 16 +INDIRP4 +CNSTI4 8 +ADDP4 +INDIRF4 +ARGF4 +ADDRLP4 16 +INDIRP4 +CNSTI4 12 +ADDP4 +INDIRF4 +ARGF4 +CNSTI4 44 +ADDRLP4 0 +INDIRI4 +MULI4 +ADDRGP4 uiInfo+75760+32 +ADDP4 +INDIRI4 +ARGI4 +ADDRGP4 UI_DrawHandlePic +CALLV +pop +line 1111 +;1111: trap_R_SetColor(NULL); +CNSTP4 0 +ARGP4 +ADDRGP4 trap_R_SetColor +CALLV +pop +line 1112 +;1112: uiInfo.teamList[i].cinematic = -2; +CNSTI4 44 +ADDRLP4 0 +INDIRI4 +MULI4 +ADDRGP4 uiInfo+75760+40 +ADDP4 +CNSTI4 -2 +ASGNI4 +line 1113 +;1113: } +line 1114 +;1114: } else { +ADDRGP4 $784 +JUMPV +LABELV $783 +line 1115 +;1115: trap_R_SetColor( color ); +ADDRFP4 8 +INDIRP4 +ARGP4 +ADDRGP4 trap_R_SetColor +CALLV +pop +line 1116 +;1116: UI_DrawHandlePic( rect->x, rect->y, rect->w, rect->h, uiInfo.teamList[i].teamIcon); +ADDRLP4 16 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 16 +INDIRP4 +INDIRF4 +ARGF4 +ADDRLP4 16 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRF4 +ARGF4 +ADDRLP4 16 +INDIRP4 +CNSTI4 8 +ADDP4 +INDIRF4 +ARGF4 +ADDRLP4 16 +INDIRP4 +CNSTI4 12 +ADDP4 +INDIRF4 +ARGF4 +CNSTI4 44 +ADDRLP4 0 +INDIRI4 +MULI4 +ADDRGP4 uiInfo+75760+28 +ADDP4 +INDIRI4 +ARGI4 +ADDRGP4 UI_DrawHandlePic +CALLV +pop +line 1117 +;1117: trap_R_SetColor(NULL); +CNSTP4 0 +ARGP4 +ADDRGP4 trap_R_SetColor +CALLV +pop +line 1118 +;1118: } +LABELV $784 +line 1119 +;1119: } +LABELV $780 +line 1121 +;1120: +;1121:} +LABELV $779 +endproc UI_DrawClanCinematic 32 24 +proc UI_DrawPreviewCinematic 16 24 +line 1123 +;1122: +;1123:static void UI_DrawPreviewCinematic(rectDef_t *rect, float scale, vec4_t color) { +line 1124 +;1124: if (uiInfo.previewMovie > -2) { +ADDRGP4 uiInfo+99260 +INDIRI4 +CNSTI4 -2 +LEI4 $813 +line 1125 +;1125: uiInfo.previewMovie = trap_CIN_PlayCinematic(va("%s.roq", uiInfo.movieList[uiInfo.movieIndex]), 0, 0, 0, 0, (CIN_loop | CIN_silent) ); +ADDRGP4 $793 +ARGP4 +ADDRGP4 uiInfo+99256 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 uiInfo+98228 +ADDP4 +INDIRP4 +ARGP4 +ADDRLP4 0 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRLP4 0 +INDIRP4 +ARGP4 +ADDRLP4 4 +CNSTI4 0 +ASGNI4 +ADDRLP4 4 +INDIRI4 +ARGI4 +ADDRLP4 4 +INDIRI4 +ARGI4 +ADDRLP4 4 +INDIRI4 +ARGI4 +ADDRLP4 4 +INDIRI4 +ARGI4 +CNSTI4 10 +ARGI4 +ADDRLP4 8 +ADDRGP4 trap_CIN_PlayCinematic +CALLI4 +ASGNI4 +ADDRGP4 uiInfo+99260 +ADDRLP4 8 +INDIRI4 +ASGNI4 +line 1126 +;1126: if (uiInfo.previewMovie >= 0) { +ADDRGP4 uiInfo+99260 +INDIRI4 +CNSTI4 0 +LTI4 $819 +line 1127 +;1127: trap_CIN_RunCinematic(uiInfo.previewMovie); +ADDRGP4 uiInfo+99260 +INDIRI4 +ARGI4 +ADDRGP4 trap_CIN_RunCinematic +CALLI4 +pop +line 1128 +;1128: trap_CIN_SetExtents(uiInfo.previewMovie, rect->x, rect->y, rect->w, rect->h); +ADDRGP4 uiInfo+99260 +INDIRI4 +ARGI4 +ADDRLP4 12 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 12 +INDIRP4 +INDIRF4 +CVFI4 4 +ARGI4 +ADDRLP4 12 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRF4 +CVFI4 4 +ARGI4 +ADDRLP4 12 +INDIRP4 +CNSTI4 8 +ADDP4 +INDIRF4 +CVFI4 4 +ARGI4 +ADDRLP4 12 +INDIRP4 +CNSTI4 12 +ADDP4 +INDIRF4 +CVFI4 4 +ARGI4 +ADDRGP4 trap_CIN_SetExtents +CALLV +pop +line 1129 +;1129: trap_CIN_DrawCinematic(uiInfo.previewMovie); +ADDRGP4 uiInfo+99260 +INDIRI4 +ARGI4 +ADDRGP4 trap_CIN_DrawCinematic +CALLV +pop +line 1130 +;1130: } else { +ADDRGP4 $820 +JUMPV +LABELV $819 +line 1131 +;1131: uiInfo.previewMovie = -2; +ADDRGP4 uiInfo+99260 +CNSTI4 -2 +ASGNI4 +line 1132 +;1132: } +LABELV $820 +line 1133 +;1133: } +LABELV $813 +line 1135 +;1134: +;1135:} +LABELV $812 +endproc UI_DrawPreviewCinematic 16 24 +proc UI_DrawSkill 16 32 +line 1139 +;1136: +;1137: +;1138: +;1139:static void UI_DrawSkill(rectDef_t *rect, float scale, vec4_t color, int textStyle) { +line 1141 +;1140: int i; +;1141: i = trap_Cvar_VariableValue( "g_spSkill" ); +ADDRGP4 $827 +ARGP4 +ADDRLP4 4 +ADDRGP4 trap_Cvar_VariableValue +CALLF4 +ASGNF4 +ADDRLP4 0 +ADDRLP4 4 +INDIRF4 +CVFI4 4 +ASGNI4 +line 1142 +;1142: if (i < 1 || i > numSkillLevels) { +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +LTI4 $830 +ADDRLP4 0 +INDIRI4 +ADDRGP4 numSkillLevels +INDIRI4 +LEI4 $828 +LABELV $830 +line 1143 +;1143: i = 1; +ADDRLP4 0 +CNSTI4 1 +ASGNI4 +line 1144 +;1144: } +LABELV $828 +line 1145 +;1145: Text_Paint(rect->x, rect->y, scale, color, skillLevels[i-1],0, 0, textStyle); +ADDRLP4 12 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 12 +INDIRP4 +INDIRF4 +ARGF4 +ADDRLP4 12 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRF4 +ARGF4 +ADDRFP4 4 +INDIRF4 +ARGF4 +ADDRFP4 8 +INDIRP4 +ARGP4 +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 skillLevels-4 +ADDP4 +INDIRP4 +ARGP4 +CNSTF4 0 +ARGF4 +CNSTI4 0 +ARGI4 +ADDRFP4 12 +INDIRI4 +ARGI4 +ADDRGP4 Text_Paint +CALLV +pop +line 1146 +;1146:} +LABELV $826 +endproc UI_DrawSkill 16 32 +proc UI_DrawTeamName 32 32 +line 1149 +;1147: +;1148: +;1149:static void UI_DrawTeamName(rectDef_t *rect, float scale, vec4_t color, qboolean blue, int textStyle) { +line 1151 +;1150: int i; +;1151: i = UI_TeamIndexFromName(UI_Cvar_VariableString((blue) ? "ui_blueTeam" : "ui_redTeam")); +ADDRFP4 12 +INDIRI4 +CNSTI4 0 +EQI4 $836 +ADDRLP4 4 +ADDRGP4 $833 +ASGNP4 +ADDRGP4 $837 +JUMPV +LABELV $836 +ADDRLP4 4 +ADDRGP4 $834 +ASGNP4 +LABELV $837 +ADDRLP4 4 +INDIRP4 +ARGP4 +ADDRLP4 8 +ADDRGP4 UI_Cvar_VariableString +CALLP4 +ASGNP4 +ADDRLP4 8 +INDIRP4 +ARGP4 +ADDRLP4 12 +ADDRGP4 UI_TeamIndexFromName +CALLI4 +ASGNI4 +ADDRLP4 0 +ADDRLP4 12 +INDIRI4 +ASGNI4 +line 1152 +;1152: if (i >= 0 && i < uiInfo.teamCount) { +ADDRLP4 0 +INDIRI4 +CNSTI4 0 +LTI4 $838 +ADDRLP4 0 +INDIRI4 +ADDRGP4 uiInfo+75756 +INDIRI4 +GEI4 $838 +line 1153 +;1153: Text_Paint(rect->x, rect->y, scale, color, va("%s: %s", (blue) ? "Blue" : "Red", uiInfo.teamList[i].teamName),0, 0, textStyle); +ADDRGP4 $841 +ARGP4 +ADDRFP4 12 +INDIRI4 +CNSTI4 0 +EQI4 $846 +ADDRLP4 20 +ADDRGP4 $842 +ASGNP4 +ADDRGP4 $847 +JUMPV +LABELV $846 +ADDRLP4 20 +ADDRGP4 $843 +ASGNP4 +LABELV $847 +ADDRLP4 20 +INDIRP4 +ARGP4 +CNSTI4 44 +ADDRLP4 0 +INDIRI4 +MULI4 +ADDRGP4 uiInfo+75760 +ADDP4 +INDIRP4 +ARGP4 +ADDRLP4 24 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRLP4 28 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 28 +INDIRP4 +INDIRF4 +ARGF4 +ADDRLP4 28 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRF4 +ARGF4 +ADDRFP4 4 +INDIRF4 +ARGF4 +ADDRFP4 8 +INDIRP4 +ARGP4 +ADDRLP4 24 +INDIRP4 +ARGP4 +CNSTF4 0 +ARGF4 +CNSTI4 0 +ARGI4 +ADDRFP4 16 +INDIRI4 +ARGI4 +ADDRGP4 Text_Paint +CALLV +pop +line 1154 +;1154: } +LABELV $838 +line 1155 +;1155:} +LABELV $832 +endproc UI_DrawTeamName 32 32 +proc UI_DrawTeamMember 28 32 +line 1157 +;1156: +;1157:static void UI_DrawTeamMember(rectDef_t *rect, float scale, vec4_t color, qboolean blue, int num, int textStyle) { +line 1161 +;1158: // 0 - None +;1159: // 1 - Human +;1160: // 2..NumCharacters - Bot +;1161: int value = trap_Cvar_VariableValue(va(blue ? "ui_blueteam%i" : "ui_redteam%i", num)); +ADDRFP4 12 +INDIRI4 +CNSTI4 0 +EQI4 $852 +ADDRLP4 8 +ADDRGP4 $849 +ASGNP4 +ADDRGP4 $853 +JUMPV +LABELV $852 +ADDRLP4 8 +ADDRGP4 $850 +ASGNP4 +LABELV $853 +ADDRLP4 8 +INDIRP4 +ARGP4 +ADDRFP4 16 +INDIRI4 +ARGI4 +ADDRLP4 12 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRLP4 12 +INDIRP4 +ARGP4 +ADDRLP4 16 +ADDRGP4 trap_Cvar_VariableValue +CALLF4 +ASGNF4 +ADDRLP4 0 +ADDRLP4 16 +INDIRF4 +CVFI4 4 +ASGNI4 +line 1163 +;1162: const char *text; +;1163: if (value <= 0) { +ADDRLP4 0 +INDIRI4 +CNSTI4 0 +GTI4 $854 +line 1164 +;1164: text = "Closed"; +ADDRLP4 4 +ADDRGP4 $856 +ASGNP4 +line 1165 +;1165: } else if (value == 1) { +ADDRGP4 $855 +JUMPV +LABELV $854 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +NEI4 $857 +line 1166 +;1166: text = "Human"; +ADDRLP4 4 +ADDRGP4 $859 +ASGNP4 +line 1167 +;1167: } else { +ADDRGP4 $858 +JUMPV +LABELV $857 +line 1168 +;1168: value -= 2; +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +SUBI4 +ASGNI4 +line 1170 +;1169: +;1170: if (ui_actualNetGameType.integer >= GT_TEAM) { +ADDRGP4 ui_actualNetGameType+12 +INDIRI4 +CNSTI4 3 +LTI4 $860 +line 1171 +;1171: if (value >= uiInfo.characterCount) { +ADDRLP4 0 +INDIRI4 +ADDRGP4 uiInfo+73440 +INDIRI4 +LTI4 $863 +line 1172 +;1172: value = 0; +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +line 1173 +;1173: } +LABELV $863 +line 1174 +;1174: text = uiInfo.characterList[value].name; +ADDRLP4 4 +CNSTI4 24 +ADDRLP4 0 +INDIRI4 +MULI4 +ADDRGP4 uiInfo+73448 +ADDP4 +INDIRP4 +ASGNP4 +line 1175 +;1175: } else { +ADDRGP4 $861 +JUMPV +LABELV $860 +line 1176 +;1176: if (value >= UI_GetNumBots()) { +ADDRLP4 20 +ADDRGP4 UI_GetNumBots +CALLI4 +ASGNI4 +ADDRLP4 0 +INDIRI4 +ADDRLP4 20 +INDIRI4 +LTI4 $867 +line 1177 +;1177: value = 0; +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +line 1178 +;1178: } +LABELV $867 +line 1179 +;1179: text = UI_GetBotNameByNumber(value); +ADDRLP4 0 +INDIRI4 +ARGI4 +ADDRLP4 24 +ADDRGP4 UI_GetBotNameByNumber +CALLP4 +ASGNP4 +ADDRLP4 4 +ADDRLP4 24 +INDIRP4 +ASGNP4 +line 1180 +;1180: } +LABELV $861 +line 1181 +;1181: } +LABELV $858 +LABELV $855 +line 1182 +;1182: Text_Paint(rect->x, rect->y, scale, color, text, 0, 0, textStyle); +ADDRLP4 20 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 20 +INDIRP4 +INDIRF4 +ARGF4 +ADDRLP4 20 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRF4 +ARGF4 +ADDRFP4 4 +INDIRF4 +ARGF4 +ADDRFP4 8 +INDIRP4 +ARGP4 +ADDRLP4 4 +INDIRP4 +ARGP4 +CNSTF4 0 +ARGF4 +CNSTI4 0 +ARGI4 +ADDRFP4 20 +INDIRI4 +ARGI4 +ADDRGP4 Text_Paint +CALLV +pop +line 1183 +;1183:} +LABELV $848 +endproc UI_DrawTeamMember 28 32 +proc UI_DrawEffects 16 20 +line 1185 +;1184: +;1185:static void UI_DrawEffects(rectDef_t *rect, float scale, vec4_t color) { +line 1186 +;1186: UI_DrawHandlePic( rect->x, rect->y - 14, 128, 8, uiInfo.uiDC.Assets.fxBasePic ); +ADDRLP4 0 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 0 +INDIRP4 +INDIRF4 +ARGF4 +ADDRLP4 0 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRF4 +CNSTF4 1096810496 +SUBF4 +ARGF4 +CNSTF4 1124073472 +ARGF4 +CNSTF4 1090519040 +ARGF4 +ADDRGP4 uiInfo+228+61768 +INDIRI4 +ARGI4 +ADDRGP4 UI_DrawHandlePic +CALLV +pop +line 1187 +;1187: UI_DrawHandlePic( rect->x + uiInfo.effectsColor * 16 + 8, rect->y - 16, 16, 12, uiInfo.uiDC.Assets.fxPic[uiInfo.effectsColor] ); +ADDRLP4 4 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 8 +CNSTI4 4 +ASGNI4 +ADDRLP4 4 +INDIRP4 +INDIRF4 +ADDRGP4 uiInfo+136904 +INDIRI4 +ADDRLP4 8 +INDIRI4 +LSHI4 +CVIF4 4 +ADDF4 +CNSTF4 1090519040 +ADDF4 +ARGF4 +ADDRLP4 12 +CNSTF4 1098907648 +ASGNF4 +ADDRLP4 4 +INDIRP4 +ADDRLP4 8 +INDIRI4 +ADDP4 +INDIRF4 +ADDRLP4 12 +INDIRF4 +SUBF4 +ARGF4 +ADDRLP4 12 +INDIRF4 +ARGF4 +CNSTF4 1094713344 +ARGF4 +ADDRGP4 uiInfo+136904 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 uiInfo+228+61772 +ADDP4 +INDIRI4 +ARGI4 +ADDRGP4 UI_DrawHandlePic +CALLV +pop +line 1188 +;1188:} +LABELV $869 +endproc UI_DrawEffects 16 20 +proc UI_DrawMapPreview 20 20 +line 1190 +;1189: +;1190:static void UI_DrawMapPreview(rectDef_t *rect, float scale, vec4_t color, qboolean net) { +line 1191 +;1191: int map = (net) ? ui_currentNetMap.integer : ui_currentMap.integer; +ADDRFP4 12 +INDIRI4 +CNSTI4 0 +EQI4 $880 +ADDRLP4 4 +ADDRGP4 ui_currentNetMap+12 +INDIRI4 +ASGNI4 +ADDRGP4 $881 +JUMPV +LABELV $880 +ADDRLP4 4 +ADDRGP4 ui_currentMap+12 +INDIRI4 +ASGNI4 +LABELV $881 +ADDRLP4 0 +ADDRLP4 4 +INDIRI4 +ASGNI4 +line 1192 +;1192: if (map < 0 || map > uiInfo.mapCount) { +ADDRLP4 0 +INDIRI4 +CNSTI4 0 +LTI4 $885 +ADDRLP4 0 +INDIRI4 +ADDRGP4 uiInfo+83224 +INDIRI4 +LEI4 $882 +LABELV $885 +line 1193 +;1193: if (net) { +ADDRFP4 12 +INDIRI4 +CNSTI4 0 +EQI4 $886 +line 1194 +;1194: ui_currentNetMap.integer = 0; +ADDRGP4 ui_currentNetMap+12 +CNSTI4 0 +ASGNI4 +line 1195 +;1195: trap_Cvar_Set("ui_currentNetMap", "0"); +ADDRGP4 $889 +ARGP4 +ADDRGP4 $395 +ARGP4 +ADDRGP4 trap_Cvar_Set +CALLV +pop +line 1196 +;1196: } else { +ADDRGP4 $887 +JUMPV +LABELV $886 +line 1197 +;1197: ui_currentMap.integer = 0; +ADDRGP4 ui_currentMap+12 +CNSTI4 0 +ASGNI4 +line 1198 +;1198: trap_Cvar_Set("ui_currentMap", "0"); +ADDRGP4 $891 +ARGP4 +ADDRGP4 $395 +ARGP4 +ADDRGP4 trap_Cvar_Set +CALLV +pop +line 1199 +;1199: } +LABELV $887 +line 1200 +;1200: map = 0; +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +line 1201 +;1201: } +LABELV $882 +line 1203 +;1202: +;1203: if (uiInfo.mapList[map].levelShot == -1) { +CNSTI4 100 +ADDRLP4 0 +INDIRI4 +MULI4 +ADDRGP4 uiInfo+83228+92 +ADDP4 +INDIRI4 +CNSTI4 -1 +NEI4 $892 +line 1204 +;1204: uiInfo.mapList[map].levelShot = trap_R_RegisterShaderNoMip(uiInfo.mapList[map].imageName); +ADDRLP4 12 +CNSTI4 100 +ADDRLP4 0 +INDIRI4 +MULI4 +ASGNI4 +ADDRLP4 12 +INDIRI4 +ADDRGP4 uiInfo+83228+8 +ADDP4 +INDIRP4 +ARGP4 +ADDRLP4 16 +ADDRGP4 trap_R_RegisterShaderNoMip +CALLI4 +ASGNI4 +ADDRLP4 12 +INDIRI4 +ADDRGP4 uiInfo+83228+92 +ADDP4 +ADDRLP4 16 +INDIRI4 +ASGNI4 +line 1205 +;1205: } +LABELV $892 +line 1207 +;1206: +;1207: if (uiInfo.mapList[map].levelShot > 0) { +CNSTI4 100 +ADDRLP4 0 +INDIRI4 +MULI4 +ADDRGP4 uiInfo+83228+92 +ADDP4 +INDIRI4 +CNSTI4 0 +LEI4 $900 +line 1208 +;1208: UI_DrawHandlePic( rect->x, rect->y, rect->w, rect->h, uiInfo.mapList[map].levelShot); +ADDRLP4 12 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 12 +INDIRP4 +INDIRF4 +ARGF4 +ADDRLP4 12 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRF4 +ARGF4 +ADDRLP4 12 +INDIRP4 +CNSTI4 8 +ADDP4 +INDIRF4 +ARGF4 +ADDRLP4 12 +INDIRP4 +CNSTI4 12 +ADDP4 +INDIRF4 +ARGF4 +CNSTI4 100 +ADDRLP4 0 +INDIRI4 +MULI4 +ADDRGP4 uiInfo+83228+92 +ADDP4 +INDIRI4 +ARGI4 +ADDRGP4 UI_DrawHandlePic +CALLV +pop +line 1209 +;1209: } else { +ADDRGP4 $901 +JUMPV +LABELV $900 +line 1210 +;1210: UI_DrawHandlePic( rect->x, rect->y, rect->w, rect->h, trap_R_RegisterShaderNoMip("menu/art/unknownmap")); +ADDRGP4 $906 +ARGP4 +ADDRLP4 12 +ADDRGP4 trap_R_RegisterShaderNoMip +CALLI4 +ASGNI4 +ADDRLP4 16 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 16 +INDIRP4 +INDIRF4 +ARGF4 +ADDRLP4 16 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRF4 +ARGF4 +ADDRLP4 16 +INDIRP4 +CNSTI4 8 +ADDP4 +INDIRF4 +ARGF4 +ADDRLP4 16 +INDIRP4 +CNSTI4 12 +ADDP4 +INDIRF4 +ARGF4 +ADDRLP4 12 +INDIRI4 +ARGI4 +ADDRGP4 UI_DrawHandlePic +CALLV +pop +line 1211 +;1211: } +LABELV $901 +line 1212 +;1212:} +LABELV $876 +endproc UI_DrawMapPreview 20 20 +proc UI_DrawMapTimeToBeat 20 32 +line 1215 +;1213: +;1214: +;1215:static void UI_DrawMapTimeToBeat(rectDef_t *rect, float scale, vec4_t color, int textStyle) { +line 1217 +;1216: int minutes, seconds, time; +;1217: if (ui_currentMap.integer < 0 || ui_currentMap.integer > uiInfo.mapCount) { +ADDRGP4 ui_currentMap+12 +INDIRI4 +CNSTI4 0 +LTI4 $913 +ADDRGP4 ui_currentMap+12 +INDIRI4 +ADDRGP4 uiInfo+83224 +INDIRI4 +LEI4 $908 +LABELV $913 +line 1218 +;1218: ui_currentMap.integer = 0; +ADDRGP4 ui_currentMap+12 +CNSTI4 0 +ASGNI4 +line 1219 +;1219: trap_Cvar_Set("ui_currentMap", "0"); +ADDRGP4 $891 +ARGP4 +ADDRGP4 $395 +ARGP4 +ADDRGP4 trap_Cvar_Set +CALLV +pop +line 1220 +;1220: } +LABELV $908 +line 1222 +;1221: +;1222: time = uiInfo.mapList[ui_currentMap.integer].timeToBeat[uiInfo.gameTypes[ui_gameType.integer].gtEnum]; +ADDRLP4 0 +ADDRGP4 ui_gameType+12 +INDIRI4 +CNSTI4 3 +LSHI4 +ADDRGP4 uiInfo+78580+4 +ADDP4 +INDIRI4 +CNSTI4 2 +LSHI4 +CNSTI4 100 +ADDRGP4 ui_currentMap+12 +INDIRI4 +MULI4 +ADDRGP4 uiInfo+83228+28 +ADDP4 +ADDP4 +INDIRI4 +ASGNI4 +line 1224 +;1223: +;1224: minutes = time / 60; +ADDRLP4 4 +ADDRLP4 0 +INDIRI4 +CNSTI4 60 +DIVI4 +ASGNI4 +line 1225 +;1225: seconds = time % 60; +ADDRLP4 8 +ADDRLP4 0 +INDIRI4 +CNSTI4 60 +MODI4 +ASGNI4 +line 1227 +;1226: +;1227: Text_Paint(rect->x, rect->y, scale, color, va("%02i:%02i", minutes, seconds), 0, 0, textStyle); +ADDRGP4 $921 +ARGP4 +ADDRLP4 4 +INDIRI4 +ARGI4 +ADDRLP4 8 +INDIRI4 +ARGI4 +ADDRLP4 12 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRLP4 16 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 16 +INDIRP4 +INDIRF4 +ARGF4 +ADDRLP4 16 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRF4 +ARGF4 +ADDRFP4 4 +INDIRF4 +ARGF4 +ADDRFP4 8 +INDIRP4 +ARGP4 +ADDRLP4 12 +INDIRP4 +ARGP4 +CNSTF4 0 +ARGF4 +CNSTI4 0 +ARGI4 +ADDRFP4 12 +INDIRI4 +ARGI4 +ADDRGP4 Text_Paint +CALLV +pop +line 1228 +;1228:} +LABELV $907 +endproc UI_DrawMapTimeToBeat 20 32 +proc UI_DrawMapCinematic 28 24 +line 1232 +;1229: +;1230: +;1231: +;1232:static void UI_DrawMapCinematic(rectDef_t *rect, float scale, vec4_t color, qboolean net) { +line 1234 +;1233: +;1234: int map = (net) ? ui_currentNetMap.integer : ui_currentMap.integer; +ADDRFP4 12 +INDIRI4 +CNSTI4 0 +EQI4 $926 +ADDRLP4 4 +ADDRGP4 ui_currentNetMap+12 +INDIRI4 +ASGNI4 +ADDRGP4 $927 +JUMPV +LABELV $926 +ADDRLP4 4 +ADDRGP4 ui_currentMap+12 +INDIRI4 +ASGNI4 +LABELV $927 +ADDRLP4 0 +ADDRLP4 4 +INDIRI4 +ASGNI4 +line 1235 +;1235: if (map < 0 || map > uiInfo.mapCount) { +ADDRLP4 0 +INDIRI4 +CNSTI4 0 +LTI4 $931 +ADDRLP4 0 +INDIRI4 +ADDRGP4 uiInfo+83224 +INDIRI4 +LEI4 $928 +LABELV $931 +line 1236 +;1236: if (net) { +ADDRFP4 12 +INDIRI4 +CNSTI4 0 +EQI4 $932 +line 1237 +;1237: ui_currentNetMap.integer = 0; +ADDRGP4 ui_currentNetMap+12 +CNSTI4 0 +ASGNI4 +line 1238 +;1238: trap_Cvar_Set("ui_currentNetMap", "0"); +ADDRGP4 $889 +ARGP4 +ADDRGP4 $395 +ARGP4 +ADDRGP4 trap_Cvar_Set +CALLV +pop +line 1239 +;1239: } else { +ADDRGP4 $933 +JUMPV +LABELV $932 +line 1240 +;1240: ui_currentMap.integer = 0; +ADDRGP4 ui_currentMap+12 +CNSTI4 0 +ASGNI4 +line 1241 +;1241: trap_Cvar_Set("ui_currentMap", "0"); +ADDRGP4 $891 +ARGP4 +ADDRGP4 $395 +ARGP4 +ADDRGP4 trap_Cvar_Set +CALLV +pop +line 1242 +;1242: } +LABELV $933 +line 1243 +;1243: map = 0; +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +line 1244 +;1244: } +LABELV $928 +line 1246 +;1245: +;1246: if (uiInfo.mapList[map].cinematic >= -1) { +CNSTI4 100 +ADDRLP4 0 +INDIRI4 +MULI4 +ADDRGP4 uiInfo+83228+24 +ADDP4 +INDIRI4 +CNSTI4 -1 +LTI4 $936 +line 1247 +;1247: if (uiInfo.mapList[map].cinematic == -1) { +CNSTI4 100 +ADDRLP4 0 +INDIRI4 +MULI4 +ADDRGP4 uiInfo+83228+24 +ADDP4 +INDIRI4 +CNSTI4 -1 +NEI4 $940 +line 1248 +;1248: uiInfo.mapList[map].cinematic = trap_CIN_PlayCinematic(va("%s.roq", uiInfo.mapList[map].mapLoadName), 0, 0, 0, 0, (CIN_loop | CIN_silent) ); +ADDRGP4 $793 +ARGP4 +ADDRLP4 12 +CNSTI4 100 +ADDRLP4 0 +INDIRI4 +MULI4 +ASGNI4 +ADDRLP4 12 +INDIRI4 +ADDRGP4 uiInfo+83228+4 +ADDP4 +INDIRP4 +ARGP4 +ADDRLP4 16 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRLP4 16 +INDIRP4 +ARGP4 +ADDRLP4 20 +CNSTI4 0 +ASGNI4 +ADDRLP4 20 +INDIRI4 +ARGI4 +ADDRLP4 20 +INDIRI4 +ARGI4 +ADDRLP4 20 +INDIRI4 +ARGI4 +ADDRLP4 20 +INDIRI4 +ARGI4 +CNSTI4 10 +ARGI4 +ADDRLP4 24 +ADDRGP4 trap_CIN_PlayCinematic +CALLI4 +ASGNI4 +ADDRLP4 12 +INDIRI4 +ADDRGP4 uiInfo+83228+24 +ADDP4 +ADDRLP4 24 +INDIRI4 +ASGNI4 +line 1249 +;1249: } +LABELV $940 +line 1250 +;1250: if (uiInfo.mapList[map].cinematic >= 0) { +CNSTI4 100 +ADDRLP4 0 +INDIRI4 +MULI4 +ADDRGP4 uiInfo+83228+24 +ADDP4 +INDIRI4 +CNSTI4 0 +LTI4 $948 +line 1251 +;1251: trap_CIN_RunCinematic(uiInfo.mapList[map].cinematic); +CNSTI4 100 +ADDRLP4 0 +INDIRI4 +MULI4 +ADDRGP4 uiInfo+83228+24 +ADDP4 +INDIRI4 +ARGI4 +ADDRGP4 trap_CIN_RunCinematic +CALLI4 +pop +line 1252 +;1252: trap_CIN_SetExtents(uiInfo.mapList[map].cinematic, rect->x, rect->y, rect->w, rect->h); +CNSTI4 100 +ADDRLP4 0 +INDIRI4 +MULI4 +ADDRGP4 uiInfo+83228+24 +ADDP4 +INDIRI4 +ARGI4 +ADDRLP4 12 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 12 +INDIRP4 +INDIRF4 +CVFI4 4 +ARGI4 +ADDRLP4 12 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRF4 +CVFI4 4 +ARGI4 +ADDRLP4 12 +INDIRP4 +CNSTI4 8 +ADDP4 +INDIRF4 +CVFI4 4 +ARGI4 +ADDRLP4 12 +INDIRP4 +CNSTI4 12 +ADDP4 +INDIRF4 +CVFI4 4 +ARGI4 +ADDRGP4 trap_CIN_SetExtents +CALLV +pop +line 1253 +;1253: trap_CIN_DrawCinematic(uiInfo.mapList[map].cinematic); +CNSTI4 100 +ADDRLP4 0 +INDIRI4 +MULI4 +ADDRGP4 uiInfo+83228+24 +ADDP4 +INDIRI4 +ARGI4 +ADDRGP4 trap_CIN_DrawCinematic +CALLV +pop +line 1254 +;1254: } else { +ADDRGP4 $937 +JUMPV +LABELV $948 +line 1255 +;1255: uiInfo.mapList[map].cinematic = -2; +CNSTI4 100 +ADDRLP4 0 +INDIRI4 +MULI4 +ADDRGP4 uiInfo+83228+24 +ADDP4 +CNSTI4 -2 +ASGNI4 +line 1256 +;1256: } +line 1257 +;1257: } else { +ADDRGP4 $937 +JUMPV +LABELV $936 +line 1258 +;1258: UI_DrawMapPreview(rect, scale, color, net); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRFP4 4 +INDIRF4 +ARGF4 +ADDRFP4 8 +INDIRP4 +ARGP4 +ADDRFP4 12 +INDIRI4 +ARGI4 +ADDRGP4 UI_DrawMapPreview +CALLV +pop +line 1259 +;1259: } +LABELV $937 +line 1260 +;1260:} +LABELV $922 +endproc UI_DrawMapCinematic 28 24 +data +align 4 +LABELV updateModel +byte 4 1 +align 4 +LABELV q3Model +byte 4 0 +bss +align 4 +LABELV $961 +skip 1276 +code +proc UI_DrawPlayerModel 616 28 +line 1267 +;1261: +;1262: +;1263: +;1264:static qboolean updateModel = qtrue; +;1265:static qboolean q3Model = qfalse; +;1266: +;1267:static void UI_DrawPlayerModel(rectDef_t *rect) { +line 1275 +;1268: static playerInfo_t info; +;1269: char model[MAX_QPATH]; +;1270: char team[256]; +;1271: char head[256]; +;1272: vec3_t viewangles; +;1273: vec3_t moveangles; +;1274: +;1275: if (trap_Cvar_VariableValue("ui_Q3Model")) { +ADDRGP4 $964 +ARGP4 +ADDRLP4 600 +ADDRGP4 trap_Cvar_VariableValue +CALLF4 +ASGNF4 +ADDRLP4 600 +INDIRF4 +CNSTF4 0 +EQF4 $962 +line 1276 +;1276: strcpy(model, UI_Cvar_VariableString("model")); +ADDRGP4 $965 +ARGP4 +ADDRLP4 604 +ADDRGP4 UI_Cvar_VariableString +CALLP4 +ASGNP4 +ADDRLP4 12 +ARGP4 +ADDRLP4 604 +INDIRP4 +ARGP4 +ADDRGP4 strcpy +CALLP4 +pop +line 1277 +;1277: strcpy(head, UI_Cvar_VariableString("headmodel")); +ADDRGP4 $966 +ARGP4 +ADDRLP4 608 +ADDRGP4 UI_Cvar_VariableString +CALLP4 +ASGNP4 +ADDRLP4 332 +ARGP4 +ADDRLP4 608 +INDIRP4 +ARGP4 +ADDRGP4 strcpy +CALLP4 +pop +line 1278 +;1278: if (!q3Model) { +ADDRGP4 q3Model +INDIRI4 +CNSTI4 0 +NEI4 $967 +line 1279 +;1279: q3Model = qtrue; +ADDRGP4 q3Model +CNSTI4 1 +ASGNI4 +line 1280 +;1280: updateModel = qtrue; +ADDRGP4 updateModel +CNSTI4 1 +ASGNI4 +line 1281 +;1281: } +LABELV $967 +line 1282 +;1282: team[0] = '\0'; +ADDRLP4 76 +CNSTI1 0 +ASGNI1 +line 1283 +;1283: } else { +ADDRGP4 $963 +JUMPV +LABELV $962 +line 1285 +;1284: +;1285: strcpy(team, UI_Cvar_VariableString("ui_teamName")); +ADDRGP4 $701 +ARGP4 +ADDRLP4 604 +ADDRGP4 UI_Cvar_VariableString +CALLP4 +ASGNP4 +ADDRLP4 76 +ARGP4 +ADDRLP4 604 +INDIRP4 +ARGP4 +ADDRGP4 strcpy +CALLP4 +pop +line 1286 +;1286: strcpy(model, UI_Cvar_VariableString("team_model")); +ADDRGP4 $969 +ARGP4 +ADDRLP4 608 +ADDRGP4 UI_Cvar_VariableString +CALLP4 +ASGNP4 +ADDRLP4 12 +ARGP4 +ADDRLP4 608 +INDIRP4 +ARGP4 +ADDRGP4 strcpy +CALLP4 +pop +line 1287 +;1287: strcpy(head, UI_Cvar_VariableString("team_headmodel")); +ADDRGP4 $970 +ARGP4 +ADDRLP4 612 +ADDRGP4 UI_Cvar_VariableString +CALLP4 +ASGNP4 +ADDRLP4 332 +ARGP4 +ADDRLP4 612 +INDIRP4 +ARGP4 +ADDRGP4 strcpy +CALLP4 +pop +line 1288 +;1288: if (q3Model) { +ADDRGP4 q3Model +INDIRI4 +CNSTI4 0 +EQI4 $971 +line 1289 +;1289: q3Model = qfalse; +ADDRGP4 q3Model +CNSTI4 0 +ASGNI4 +line 1290 +;1290: updateModel = qtrue; +ADDRGP4 updateModel +CNSTI4 1 +ASGNI4 +line 1291 +;1291: } +LABELV $971 +line 1292 +;1292: } +LABELV $963 +line 1293 +;1293: if (updateModel) { +ADDRGP4 updateModel +INDIRI4 +CNSTI4 0 +EQI4 $973 +line 1294 +;1294: memset( &info, 0, sizeof(playerInfo_t) ); +ADDRGP4 $961 +ARGP4 +CNSTI4 0 +ARGI4 +CNSTI4 1276 +ARGI4 +ADDRGP4 memset +CALLP4 +pop +line 1295 +;1295: viewangles[YAW] = 180 - 10; +ADDRLP4 0+4 +CNSTF4 1126825984 +ASGNF4 +line 1296 +;1296: viewangles[PITCH] = 0; +ADDRLP4 0 +CNSTF4 0 +ASGNF4 +line 1297 +;1297: viewangles[ROLL] = 0; +ADDRLP4 0+8 +CNSTF4 0 +ASGNF4 +line 1298 +;1298: VectorClear( moveangles ); +ADDRLP4 604 +CNSTF4 0 +ASGNF4 +ADDRLP4 588+8 +ADDRLP4 604 +INDIRF4 +ASGNF4 +ADDRLP4 588+4 +ADDRLP4 604 +INDIRF4 +ASGNF4 +ADDRLP4 588 +ADDRLP4 604 +INDIRF4 +ASGNF4 +line 1299 +;1299: UI_PlayerInfo_SetModel( &info, model, head, team); +ADDRGP4 $961 +ARGP4 +ADDRLP4 12 +ARGP4 +ADDRLP4 332 +ARGP4 +ADDRLP4 76 +ARGP4 +ADDRGP4 UI_PlayerInfo_SetModel +CALLV +pop +line 1301 +;1300: //Blaze: Changed WP_MACHINEGUN to WP_PISTOL +;1301: UI_PlayerInfo_SetInfo( &info, LEGS_IDLE, TORSO_STAND, viewangles, vec3_origin, WP_PISTOL, qfalse ); +ADDRGP4 $961 +ARGP4 +CNSTI4 22 +ARGI4 +CNSTI4 11 +ARGI4 +ADDRLP4 0 +ARGP4 +ADDRGP4 vec3_origin +ARGP4 +CNSTI4 1 +ARGI4 +CNSTI4 0 +ARGI4 +ADDRGP4 UI_PlayerInfo_SetInfo +CALLV +pop +line 1303 +;1302:// UI_RegisterClientModelname( &info, model, head, team); +;1303: updateModel = qfalse; +ADDRGP4 updateModel +CNSTI4 0 +ASGNI4 +line 1304 +;1304: } +LABELV $973 +line 1306 +;1305: +;1306: UI_DrawPlayer( rect->x, rect->y, rect->w, rect->h, &info, uiInfo.uiDC.realTime / 2); +ADDRLP4 604 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 604 +INDIRP4 +INDIRF4 +ARGF4 +ADDRLP4 604 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRF4 +ARGF4 +ADDRLP4 604 +INDIRP4 +CNSTI4 8 +ADDP4 +INDIRF4 +ARGF4 +ADDRLP4 604 +INDIRP4 +CNSTI4 12 +ADDP4 +INDIRF4 +ARGF4 +ADDRGP4 $961 +ARGP4 +ADDRGP4 uiInfo+208 +INDIRI4 +CNSTI4 2 +DIVI4 +ARGI4 +ADDRGP4 UI_DrawPlayer +CALLV +pop +line 1308 +;1307: +;1308:} +LABELV $960 +endproc UI_DrawPlayerModel 616 28 +proc UI_DrawNetSource 8 32 +line 1310 +;1309: +;1310:static void UI_DrawNetSource(rectDef_t *rect, float scale, vec4_t color, int textStyle) { +line 1311 +;1311: if (ui_netSource.integer < 0 || ui_netSource.integer > uiInfo.numGameTypes) { +ADDRGP4 ui_netSource+12 +INDIRI4 +CNSTI4 0 +LTI4 $986 +ADDRGP4 ui_netSource+12 +INDIRI4 +ADDRGP4 uiInfo+78576 +INDIRI4 +LEI4 $981 +LABELV $986 +line 1312 +;1312: ui_netSource.integer = 0; +ADDRGP4 ui_netSource+12 +CNSTI4 0 +ASGNI4 +line 1313 +;1313: } +LABELV $981 +line 1314 +;1314: Text_Paint(rect->x, rect->y, scale, color, va("Source: %s", netSources[ui_netSource.integer]), 0, 0, textStyle); +ADDRGP4 $988 +ARGP4 +ADDRGP4 ui_netSource+12 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 netSources +ADDP4 +INDIRP4 +ARGP4 +ADDRLP4 0 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRLP4 4 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 4 +INDIRP4 +INDIRF4 +ARGF4 +ADDRLP4 4 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRF4 +ARGF4 +ADDRFP4 4 +INDIRF4 +ARGF4 +ADDRFP4 8 +INDIRP4 +ARGP4 +ADDRLP4 0 +INDIRP4 +ARGP4 +CNSTF4 0 +ARGF4 +CNSTI4 0 +ARGI4 +ADDRFP4 12 +INDIRI4 +ARGI4 +ADDRGP4 Text_Paint +CALLV +pop +line 1315 +;1315:} +LABELV $980 +endproc UI_DrawNetSource 8 32 +proc UI_DrawNetMapPreview 8 20 +line 1317 +;1316: +;1317:static void UI_DrawNetMapPreview(rectDef_t *rect, float scale, vec4_t color) { +line 1319 +;1318: +;1319: if (uiInfo.serverStatus.currentServerPreview > 0) { +ADDRGP4 uiInfo+99264+10428 +INDIRI4 +CNSTI4 0 +LEI4 $991 +line 1320 +;1320: UI_DrawHandlePic( rect->x, rect->y, rect->w, rect->h, uiInfo.serverStatus.currentServerPreview); +ADDRLP4 0 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 0 +INDIRP4 +INDIRF4 +ARGF4 +ADDRLP4 0 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRF4 +ARGF4 +ADDRLP4 0 +INDIRP4 +CNSTI4 8 +ADDP4 +INDIRF4 +ARGF4 +ADDRLP4 0 +INDIRP4 +CNSTI4 12 +ADDP4 +INDIRF4 +ARGF4 +ADDRGP4 uiInfo+99264+10428 +INDIRI4 +ARGI4 +ADDRGP4 UI_DrawHandlePic +CALLV +pop +line 1321 +;1321: } else { +ADDRGP4 $992 +JUMPV +LABELV $991 +line 1322 +;1322: UI_DrawHandlePic( rect->x, rect->y, rect->w, rect->h, trap_R_RegisterShaderNoMip("menu/art/unknownmap")); +ADDRGP4 $906 +ARGP4 +ADDRLP4 0 +ADDRGP4 trap_R_RegisterShaderNoMip +CALLI4 +ASGNI4 +ADDRLP4 4 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 4 +INDIRP4 +INDIRF4 +ARGF4 +ADDRLP4 4 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRF4 +ARGF4 +ADDRLP4 4 +INDIRP4 +CNSTI4 8 +ADDP4 +INDIRF4 +ARGF4 +ADDRLP4 4 +INDIRP4 +CNSTI4 12 +ADDP4 +INDIRF4 +ARGF4 +ADDRLP4 0 +INDIRI4 +ARGI4 +ADDRGP4 UI_DrawHandlePic +CALLV +pop +line 1323 +;1323: } +LABELV $992 +line 1324 +;1324:} +LABELV $990 +endproc UI_DrawNetMapPreview 8 20 +proc UI_DrawNetMapCinematic 4 20 +line 1326 +;1325: +;1326:static void UI_DrawNetMapCinematic(rectDef_t *rect, float scale, vec4_t color) { +line 1327 +;1327: if (ui_currentNetMap.integer < 0 || ui_currentNetMap.integer > uiInfo.mapCount) { +ADDRGP4 ui_currentNetMap+12 +INDIRI4 +CNSTI4 0 +LTI4 $1003 +ADDRGP4 ui_currentNetMap+12 +INDIRI4 +ADDRGP4 uiInfo+83224 +INDIRI4 +LEI4 $998 +LABELV $1003 +line 1328 +;1328: ui_currentNetMap.integer = 0; +ADDRGP4 ui_currentNetMap+12 +CNSTI4 0 +ASGNI4 +line 1329 +;1329: trap_Cvar_Set("ui_currentNetMap", "0"); +ADDRGP4 $889 +ARGP4 +ADDRGP4 $395 +ARGP4 +ADDRGP4 trap_Cvar_Set +CALLV +pop +line 1330 +;1330: } +LABELV $998 +line 1332 +;1331: +;1332: if (uiInfo.serverStatus.currentServerCinematic >= 0) { +ADDRGP4 uiInfo+99264+10432 +INDIRI4 +CNSTI4 0 +LTI4 $1005 +line 1333 +;1333: trap_CIN_RunCinematic(uiInfo.serverStatus.currentServerCinematic); +ADDRGP4 uiInfo+99264+10432 +INDIRI4 +ARGI4 +ADDRGP4 trap_CIN_RunCinematic +CALLI4 +pop +line 1334 +;1334: trap_CIN_SetExtents(uiInfo.serverStatus.currentServerCinematic, rect->x, rect->y, rect->w, rect->h); +ADDRGP4 uiInfo+99264+10432 +INDIRI4 +ARGI4 +ADDRLP4 0 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 0 +INDIRP4 +INDIRF4 +CVFI4 4 +ARGI4 +ADDRLP4 0 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRF4 +CVFI4 4 +ARGI4 +ADDRLP4 0 +INDIRP4 +CNSTI4 8 +ADDP4 +INDIRF4 +CVFI4 4 +ARGI4 +ADDRLP4 0 +INDIRP4 +CNSTI4 12 +ADDP4 +INDIRF4 +CVFI4 4 +ARGI4 +ADDRGP4 trap_CIN_SetExtents +CALLV +pop +line 1335 +;1335: trap_CIN_DrawCinematic(uiInfo.serverStatus.currentServerCinematic); +ADDRGP4 uiInfo+99264+10432 +INDIRI4 +ARGI4 +ADDRGP4 trap_CIN_DrawCinematic +CALLV +pop +line 1336 +;1336: } else { +ADDRGP4 $1006 +JUMPV +LABELV $1005 +line 1337 +;1337: UI_DrawNetMapPreview(rect, scale, color); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRFP4 4 +INDIRF4 +ARGF4 +ADDRFP4 8 +INDIRP4 +ARGP4 +ADDRGP4 UI_DrawNetMapPreview +CALLV +pop +line 1338 +;1338: } +LABELV $1006 +line 1339 +;1339:} +LABELV $997 +endproc UI_DrawNetMapCinematic 4 20 +proc UI_DrawNetFilter 8 32 +line 1343 +;1340: +;1341: +;1342: +;1343:static void UI_DrawNetFilter(rectDef_t *rect, float scale, vec4_t color, int textStyle) { +line 1344 +;1344: if (ui_serverFilterType.integer < 0 || ui_serverFilterType.integer > numServerFilters) { +ADDRGP4 ui_serverFilterType+12 +INDIRI4 +CNSTI4 0 +LTI4 $1020 +ADDRGP4 ui_serverFilterType+12 +INDIRI4 +ADDRGP4 numServerFilters +INDIRI4 +LEI4 $1016 +LABELV $1020 +line 1345 +;1345: ui_serverFilterType.integer = 0; +ADDRGP4 ui_serverFilterType+12 +CNSTI4 0 +ASGNI4 +line 1346 +;1346: } +LABELV $1016 +line 1347 +;1347: Text_Paint(rect->x, rect->y, scale, color, va("Filter: %s", serverFilters[ui_serverFilterType.integer].description), 0, 0, textStyle); +ADDRGP4 $1022 +ARGP4 +ADDRGP4 ui_serverFilterType+12 +INDIRI4 +CNSTI4 3 +LSHI4 +ADDRGP4 serverFilters +ADDP4 +INDIRP4 +ARGP4 +ADDRLP4 0 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRLP4 4 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 4 +INDIRP4 +INDIRF4 +ARGF4 +ADDRLP4 4 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRF4 +ARGF4 +ADDRFP4 4 +INDIRF4 +ARGF4 +ADDRFP4 8 +INDIRP4 +ARGP4 +ADDRLP4 0 +INDIRP4 +ARGP4 +CNSTF4 0 +ARGF4 +CNSTI4 0 +ARGI4 +ADDRFP4 12 +INDIRI4 +ARGI4 +ADDRGP4 Text_Paint +CALLV +pop +line 1348 +;1348:} +LABELV $1015 +endproc UI_DrawNetFilter 8 32 +proc UI_DrawTier 20 32 +line 1351 +;1349: +;1350: +;1351:static void UI_DrawTier(rectDef_t *rect, float scale, vec4_t color, int textStyle) { +line 1353 +;1352: int i; +;1353: i = trap_Cvar_VariableValue( "ui_currentTier" ); +ADDRGP4 $1025 +ARGP4 +ADDRLP4 4 +ADDRGP4 trap_Cvar_VariableValue +CALLF4 +ASGNF4 +ADDRLP4 0 +ADDRLP4 4 +INDIRF4 +CVFI4 4 +ASGNI4 +line 1354 +;1354: if (i < 0 || i >= uiInfo.tierCount) { +ADDRLP4 0 +INDIRI4 +CNSTI4 0 +LTI4 $1029 +ADDRLP4 0 +INDIRI4 +ADDRGP4 uiInfo+96028 +INDIRI4 +LTI4 $1026 +LABELV $1029 +line 1355 +;1355: i = 0; +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +line 1356 +;1356: } +LABELV $1026 +line 1357 +;1357: Text_Paint(rect->x, rect->y, scale, color, va("Tier: %s", uiInfo.tierList[i].tierName),0, 0, textStyle); +ADDRGP4 $1030 +ARGP4 +CNSTI4 40 +ADDRLP4 0 +INDIRI4 +MULI4 +ADDRGP4 uiInfo+96032 +ADDP4 +INDIRP4 +ARGP4 +ADDRLP4 12 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRLP4 16 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 16 +INDIRP4 +INDIRF4 +ARGF4 +ADDRLP4 16 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRF4 +ARGF4 +ADDRFP4 4 +INDIRF4 +ARGF4 +ADDRFP4 8 +INDIRP4 +ARGP4 +ADDRLP4 12 +INDIRP4 +ARGP4 +CNSTF4 0 +ARGF4 +CNSTI4 0 +ARGI4 +ADDRFP4 12 +INDIRI4 +ARGI4 +ADDRGP4 Text_Paint +CALLV +pop +line 1358 +;1358:} +LABELV $1024 +endproc UI_DrawTier 20 32 +proc UI_DrawTierMap 28 20 +line 1360 +;1359: +;1360:static void UI_DrawTierMap(rectDef_t *rect, int index) { +line 1362 +;1361: int i; +;1362: i = trap_Cvar_VariableValue( "ui_currentTier" ); +ADDRGP4 $1025 +ARGP4 +ADDRLP4 4 +ADDRGP4 trap_Cvar_VariableValue +CALLF4 +ASGNF4 +ADDRLP4 0 +ADDRLP4 4 +INDIRF4 +CVFI4 4 +ASGNI4 +line 1363 +;1363: if (i < 0 || i >= uiInfo.tierCount) { +ADDRLP4 0 +INDIRI4 +CNSTI4 0 +LTI4 $1036 +ADDRLP4 0 +INDIRI4 +ADDRGP4 uiInfo+96028 +INDIRI4 +LTI4 $1033 +LABELV $1036 +line 1364 +;1364: i = 0; +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +line 1365 +;1365: } +LABELV $1033 +line 1367 +;1366: +;1367: if (uiInfo.tierList[i].mapHandles[index] == -1) { +ADDRFP4 4 +INDIRI4 +CNSTI4 2 +LSHI4 +CNSTI4 40 +ADDRLP4 0 +INDIRI4 +MULI4 +ADDRGP4 uiInfo+96032+28 +ADDP4 +ADDP4 +INDIRI4 +CNSTI4 -1 +NEI4 $1037 +line 1368 +;1368: uiInfo.tierList[i].mapHandles[index] = trap_R_RegisterShaderNoMip(va("levelshots/%s", uiInfo.tierList[i].maps[index])); +ADDRGP4 $1043 +ARGP4 +ADDRLP4 12 +ADDRFP4 4 +INDIRI4 +CNSTI4 2 +LSHI4 +ASGNI4 +ADDRLP4 16 +CNSTI4 40 +ADDRLP4 0 +INDIRI4 +MULI4 +ASGNI4 +ADDRLP4 12 +INDIRI4 +ADDRLP4 16 +INDIRI4 +ADDRGP4 uiInfo+96032+4 +ADDP4 +ADDP4 +INDIRP4 +ARGP4 +ADDRLP4 20 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRLP4 20 +INDIRP4 +ARGP4 +ADDRLP4 24 +ADDRGP4 trap_R_RegisterShaderNoMip +CALLI4 +ASGNI4 +ADDRLP4 12 +INDIRI4 +ADDRLP4 16 +INDIRI4 +ADDRGP4 uiInfo+96032+28 +ADDP4 +ADDP4 +ADDRLP4 24 +INDIRI4 +ASGNI4 +line 1369 +;1369: } +LABELV $1037 +line 1371 +;1370: +;1371: UI_DrawHandlePic( rect->x, rect->y, rect->w, rect->h, uiInfo.tierList[i].mapHandles[index]); +ADDRLP4 12 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 12 +INDIRP4 +INDIRF4 +ARGF4 +ADDRLP4 12 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRF4 +ARGF4 +ADDRLP4 12 +INDIRP4 +CNSTI4 8 +ADDP4 +INDIRF4 +ARGF4 +ADDRLP4 12 +INDIRP4 +CNSTI4 12 +ADDP4 +INDIRF4 +ARGF4 +ADDRFP4 4 +INDIRI4 +CNSTI4 2 +LSHI4 +CNSTI4 40 +ADDRLP4 0 +INDIRI4 +MULI4 +ADDRGP4 uiInfo+96032+28 +ADDP4 +ADDP4 +INDIRI4 +ARGI4 +ADDRGP4 UI_DrawHandlePic +CALLV +pop +line 1372 +;1372:} +LABELV $1032 +endproc UI_DrawTierMap 28 20 +proc UI_EnglishMapName 8 8 +line 1374 +;1373: +;1374:static const char *UI_EnglishMapName(const char *map) { +line 1376 +;1375: int i; +;1376: for (i = 0; i < uiInfo.mapCount; i++) { +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +ADDRGP4 $1052 +JUMPV +LABELV $1049 +line 1377 +;1377: if (Q_stricmp(map, uiInfo.mapList[i].mapLoadName) == 0) { +ADDRFP4 0 +INDIRP4 +ARGP4 +CNSTI4 100 +ADDRLP4 0 +INDIRI4 +MULI4 +ADDRGP4 uiInfo+83228+4 +ADDP4 +INDIRP4 +ARGP4 +ADDRLP4 4 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 4 +INDIRI4 +CNSTI4 0 +NEI4 $1054 +line 1378 +;1378: return uiInfo.mapList[i].mapName; +CNSTI4 100 +ADDRLP4 0 +INDIRI4 +MULI4 +ADDRGP4 uiInfo+83228 +ADDP4 +INDIRP4 +RETP4 +ADDRGP4 $1048 +JUMPV +LABELV $1054 +line 1380 +;1379: } +;1380: } +LABELV $1050 +line 1376 +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +LABELV $1052 +ADDRLP4 0 +INDIRI4 +ADDRGP4 uiInfo+83224 +INDIRI4 +LTI4 $1049 +line 1381 +;1381: return ""; +ADDRGP4 $112 +RETP4 +LABELV $1048 +endproc UI_EnglishMapName 8 8 +proc UI_DrawTierMapName 32 32 +line 1384 +;1382:} +;1383: +;1384:static void UI_DrawTierMapName(rectDef_t *rect, float scale, vec4_t color, int textStyle) { +line 1386 +;1385: int i, j; +;1386: i = trap_Cvar_VariableValue( "ui_currentTier" ); +ADDRGP4 $1025 +ARGP4 +ADDRLP4 8 +ADDRGP4 trap_Cvar_VariableValue +CALLF4 +ASGNF4 +ADDRLP4 0 +ADDRLP4 8 +INDIRF4 +CVFI4 4 +ASGNI4 +line 1387 +;1387: if (i < 0 || i >= uiInfo.tierCount) { +ADDRLP4 0 +INDIRI4 +CNSTI4 0 +LTI4 $1063 +ADDRLP4 0 +INDIRI4 +ADDRGP4 uiInfo+96028 +INDIRI4 +LTI4 $1060 +LABELV $1063 +line 1388 +;1388: i = 0; +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +line 1389 +;1389: } +LABELV $1060 +line 1390 +;1390: j = trap_Cvar_VariableValue("ui_currentMap"); +ADDRGP4 $891 +ARGP4 +ADDRLP4 16 +ADDRGP4 trap_Cvar_VariableValue +CALLF4 +ASGNF4 +ADDRLP4 4 +ADDRLP4 16 +INDIRF4 +CVFI4 4 +ASGNI4 +line 1391 +;1391: if (j < 0 || j > MAPS_PER_TIER) { +ADDRLP4 4 +INDIRI4 +CNSTI4 0 +LTI4 $1066 +ADDRLP4 4 +INDIRI4 +CNSTI4 3 +LEI4 $1064 +LABELV $1066 +line 1392 +;1392: j = 0; +ADDRLP4 4 +CNSTI4 0 +ASGNI4 +line 1393 +;1393: } +LABELV $1064 +line 1395 +;1394: +;1395: Text_Paint(rect->x, rect->y, scale, color, UI_EnglishMapName(uiInfo.tierList[i].maps[j]), 0, 0, textStyle); +ADDRLP4 4 +INDIRI4 +CNSTI4 2 +LSHI4 +CNSTI4 40 +ADDRLP4 0 +INDIRI4 +MULI4 +ADDRGP4 uiInfo+96032+4 +ADDP4 +ADDP4 +INDIRP4 +ARGP4 +ADDRLP4 24 +ADDRGP4 UI_EnglishMapName +CALLP4 +ASGNP4 +ADDRLP4 28 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 28 +INDIRP4 +INDIRF4 +ARGF4 +ADDRLP4 28 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRF4 +ARGF4 +ADDRFP4 4 +INDIRF4 +ARGF4 +ADDRFP4 8 +INDIRP4 +ARGP4 +ADDRLP4 24 +INDIRP4 +ARGP4 +CNSTF4 0 +ARGF4 +CNSTI4 0 +ARGI4 +ADDRFP4 12 +INDIRI4 +ARGI4 +ADDRGP4 Text_Paint +CALLV +pop +line 1396 +;1396:} +LABELV $1059 +endproc UI_DrawTierMapName 32 32 +proc UI_DrawTierGameType 28 32 +line 1398 +;1397: +;1398:static void UI_DrawTierGameType(rectDef_t *rect, float scale, vec4_t color, int textStyle) { +line 1400 +;1399: int i, j; +;1400: i = trap_Cvar_VariableValue( "ui_currentTier" ); +ADDRGP4 $1025 +ARGP4 +ADDRLP4 8 +ADDRGP4 trap_Cvar_VariableValue +CALLF4 +ASGNF4 +ADDRLP4 0 +ADDRLP4 8 +INDIRF4 +CVFI4 4 +ASGNI4 +line 1401 +;1401: if (i < 0 || i >= uiInfo.tierCount) { +ADDRLP4 0 +INDIRI4 +CNSTI4 0 +LTI4 $1073 +ADDRLP4 0 +INDIRI4 +ADDRGP4 uiInfo+96028 +INDIRI4 +LTI4 $1070 +LABELV $1073 +line 1402 +;1402: i = 0; +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +line 1403 +;1403: } +LABELV $1070 +line 1404 +;1404: j = trap_Cvar_VariableValue("ui_currentMap"); +ADDRGP4 $891 +ARGP4 +ADDRLP4 16 +ADDRGP4 trap_Cvar_VariableValue +CALLF4 +ASGNF4 +ADDRLP4 4 +ADDRLP4 16 +INDIRF4 +CVFI4 4 +ASGNI4 +line 1405 +;1405: if (j < 0 || j > MAPS_PER_TIER) { +ADDRLP4 4 +INDIRI4 +CNSTI4 0 +LTI4 $1076 +ADDRLP4 4 +INDIRI4 +CNSTI4 3 +LEI4 $1074 +LABELV $1076 +line 1406 +;1406: j = 0; +ADDRLP4 4 +CNSTI4 0 +ASGNI4 +line 1407 +;1407: } +LABELV $1074 +line 1409 +;1408: +;1409: Text_Paint(rect->x, rect->y, scale, color, uiInfo.gameTypes[uiInfo.tierList[i].gameTypes[j]].gameType , 0, 0, textStyle); +ADDRLP4 24 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 24 +INDIRP4 +INDIRF4 +ARGF4 +ADDRLP4 24 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRF4 +ARGF4 +ADDRFP4 4 +INDIRF4 +ARGF4 +ADDRFP4 8 +INDIRP4 +ARGP4 +ADDRLP4 4 +INDIRI4 +CNSTI4 2 +LSHI4 +CNSTI4 40 +ADDRLP4 0 +INDIRI4 +MULI4 +ADDRGP4 uiInfo+96032+16 +ADDP4 +ADDP4 +INDIRI4 +CNSTI4 3 +LSHI4 +ADDRGP4 uiInfo+78580 +ADDP4 +INDIRP4 +ARGP4 +CNSTF4 0 +ARGF4 +CNSTI4 0 +ARGI4 +ADDRFP4 12 +INDIRI4 +ARGI4 +ADDRGP4 Text_Paint +CALLV +pop +line 1410 +;1410:} +LABELV $1069 +endproc UI_DrawTierGameType 28 32 +proc UI_OpponentLeaderName 12 4 +line 1414 +;1411: +;1412: +;1413:#ifndef MISSIONPACK // bk001206 +;1414:static const char *UI_OpponentLeaderName() { +line 1415 +;1415: int i = UI_TeamIndexFromName(UI_Cvar_VariableString("ui_opponentName")); +ADDRGP4 $1081 +ARGP4 +ADDRLP4 4 +ADDRGP4 UI_Cvar_VariableString +CALLP4 +ASGNP4 +ADDRLP4 4 +INDIRP4 +ARGP4 +ADDRLP4 8 +ADDRGP4 UI_TeamIndexFromName +CALLI4 +ASGNI4 +ADDRLP4 0 +ADDRLP4 8 +INDIRI4 +ASGNI4 +line 1416 +;1416: return uiInfo.teamList[i].teamMembers[0]; +CNSTI4 44 +ADDRLP4 0 +INDIRI4 +MULI4 +ADDRGP4 uiInfo+75760+8 +ADDP4 +INDIRP4 +RETP4 +LABELV $1080 +endproc UI_OpponentLeaderName 12 4 +proc UI_AIFromName 8 8 +line 1420 +;1417:} +;1418:#endif +;1419: +;1420:static const char *UI_AIFromName(const char *name) { +line 1422 +;1421: int j; +;1422: for (j = 0; j < uiInfo.aliasCount; j++) { +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +ADDRGP4 $1088 +JUMPV +LABELV $1085 +line 1423 +;1423: if (Q_stricmp(uiInfo.aliasList[j].name, name) == 0) { +CNSTI4 12 +ADDRLP4 0 +INDIRI4 +MULI4 +ADDRGP4 uiInfo+74988 +ADDP4 +INDIRP4 +ARGP4 +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRLP4 4 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 4 +INDIRI4 +CNSTI4 0 +NEI4 $1090 +line 1424 +;1424: return uiInfo.aliasList[j].ai; +CNSTI4 12 +ADDRLP4 0 +INDIRI4 +MULI4 +ADDRGP4 uiInfo+74988+4 +ADDP4 +INDIRP4 +RETP4 +ADDRGP4 $1084 +JUMPV +LABELV $1090 +line 1426 +;1425: } +;1426: } +LABELV $1086 +line 1422 +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +LABELV $1088 +ADDRLP4 0 +INDIRI4 +ADDRGP4 uiInfo+74984 +INDIRI4 +LTI4 $1085 +line 1427 +;1427: return "James"; +ADDRGP4 $1095 +RETP4 +LABELV $1084 +endproc UI_AIFromName 8 8 +proc UI_AIIndex 8 8 +line 1431 +;1428:} +;1429: +;1430:#ifndef MISSIONPACK // bk001206 +;1431:static const int UI_AIIndex(const char *name) { +line 1433 +;1432: int j; +;1433: for (j = 0; j < uiInfo.characterCount; j++) { +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +ADDRGP4 $1100 +JUMPV +LABELV $1097 +line 1434 +;1434: if (Q_stricmp(name, uiInfo.characterList[j].name) == 0) { +ADDRFP4 0 +INDIRP4 +ARGP4 +CNSTI4 24 +ADDRLP4 0 +INDIRI4 +MULI4 +ADDRGP4 uiInfo+73448 +ADDP4 +INDIRP4 +ARGP4 +ADDRLP4 4 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 4 +INDIRI4 +CNSTI4 0 +NEI4 $1102 +line 1435 +;1435: return j; +ADDRLP4 0 +INDIRI4 +RETI4 +ADDRGP4 $1096 +JUMPV +LABELV $1102 +line 1437 +;1436: } +;1437: } +LABELV $1098 +line 1433 +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +LABELV $1100 +ADDRLP4 0 +INDIRI4 +ADDRGP4 uiInfo+73440 +INDIRI4 +LTI4 $1097 +line 1438 +;1438: return 0; +CNSTI4 0 +RETI4 +LABELV $1096 +endproc UI_AIIndex 8 8 +proc UI_AIIndexFromName 12 8 +line 1443 +;1439:} +;1440:#endif +;1441: +;1442:#ifndef MISSIONPACK // bk001206 +;1443:static const int UI_AIIndexFromName(const char *name) { +line 1445 +;1444: int j; +;1445: for (j = 0; j < uiInfo.aliasCount; j++) { +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +ADDRGP4 $1109 +JUMPV +LABELV $1106 +line 1446 +;1446: if (Q_stricmp(uiInfo.aliasList[j].name, name) == 0) { +CNSTI4 12 +ADDRLP4 0 +INDIRI4 +MULI4 +ADDRGP4 uiInfo+74988 +ADDP4 +INDIRP4 +ARGP4 +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRLP4 4 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 4 +INDIRI4 +CNSTI4 0 +NEI4 $1111 +line 1447 +;1447: return UI_AIIndex(uiInfo.aliasList[j].ai); +CNSTI4 12 +ADDRLP4 0 +INDIRI4 +MULI4 +ADDRGP4 uiInfo+74988+4 +ADDP4 +INDIRP4 +ARGP4 +ADDRLP4 8 +ADDRGP4 UI_AIIndex +CALLI4 +ASGNI4 +ADDRLP4 8 +INDIRI4 +RETI4 +ADDRGP4 $1105 +JUMPV +LABELV $1111 +line 1449 +;1448: } +;1449: } +LABELV $1107 +line 1445 +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +LABELV $1109 +ADDRLP4 0 +INDIRI4 +ADDRGP4 uiInfo+74984 +INDIRI4 +LTI4 $1106 +line 1450 +;1450: return 0; +CNSTI4 0 +RETI4 +LABELV $1105 +endproc UI_AIIndexFromName 12 8 +proc UI_OpponentLeaderHead 12 4 +line 1456 +;1451:} +;1452:#endif +;1453: +;1454: +;1455:#ifndef MISSIONPACK // bk001206 +;1456:static const char *UI_OpponentLeaderHead() { +line 1457 +;1457: const char *leader = UI_OpponentLeaderName(); +ADDRLP4 4 +ADDRGP4 UI_OpponentLeaderName +CALLP4 +ASGNP4 +ADDRLP4 0 +ADDRLP4 4 +INDIRP4 +ASGNP4 +line 1458 +;1458: return UI_AIFromName(leader); +ADDRLP4 0 +INDIRP4 +ARGP4 +ADDRLP4 8 +ADDRGP4 UI_AIFromName +CALLP4 +ASGNP4 +ADDRLP4 8 +INDIRP4 +RETP4 +LABELV $1116 +endproc UI_OpponentLeaderHead 12 4 +proc UI_OpponentLeaderModel 16 8 +line 1463 +;1459:} +;1460:#endif +;1461: +;1462:#ifndef MISSIONPACK // bk001206 +;1463:static const char *UI_OpponentLeaderModel() { +line 1465 +;1464: int i; +;1465: const char *head = UI_OpponentLeaderHead(); +ADDRLP4 8 +ADDRGP4 UI_OpponentLeaderHead +CALLP4 +ASGNP4 +ADDRLP4 4 +ADDRLP4 8 +INDIRP4 +ASGNP4 +line 1466 +;1466: for (i = 0; i < uiInfo.characterCount; i++) { +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +ADDRGP4 $1121 +JUMPV +LABELV $1118 +line 1467 +;1467: if (Q_stricmp(head, uiInfo.characterList[i].name) == 0) { +ADDRLP4 4 +INDIRP4 +ARGP4 +CNSTI4 24 +ADDRLP4 0 +INDIRI4 +MULI4 +ADDRGP4 uiInfo+73448 +ADDP4 +INDIRP4 +ARGP4 +ADDRLP4 12 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 12 +INDIRI4 +CNSTI4 0 +NEI4 $1123 +line 1468 +;1468: return uiInfo.characterList[i].base; +CNSTI4 24 +ADDRLP4 0 +INDIRI4 +MULI4 +ADDRGP4 uiInfo+73448+12 +ADDP4 +INDIRP4 +RETP4 +ADDRGP4 $1117 +JUMPV +LABELV $1123 +line 1470 +;1469: } +;1470: } +LABELV $1119 +line 1466 +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +LABELV $1121 +ADDRLP4 0 +INDIRI4 +ADDRGP4 uiInfo+73440 +INDIRI4 +LTI4 $1118 +line 1471 +;1471: return "James"; +ADDRGP4 $1095 +RETP4 +LABELV $1117 +endproc UI_OpponentLeaderModel 16 8 +data +align 4 +LABELV updateOpponentModel +byte 4 1 +bss +align 4 +LABELV $1129 +skip 1276 +code +proc UI_DrawOpponent 420 28 +line 1477 +;1472:} +;1473:#endif +;1474: +;1475: +;1476:static qboolean updateOpponentModel = qtrue; +;1477:static void UI_DrawOpponent(rectDef_t *rect) { +line 1485 +;1478: static playerInfo_t info2; +;1479: char model[MAX_QPATH]; +;1480: char headmodel[MAX_QPATH]; +;1481: char team[256]; +;1482: vec3_t viewangles; +;1483: vec3_t moveangles; +;1484: +;1485: if (updateOpponentModel) { +ADDRGP4 updateOpponentModel +INDIRI4 +CNSTI4 0 +EQI4 $1130 +line 1487 +;1486: +;1487: strcpy(model, UI_Cvar_VariableString("ui_opponentModel")); +ADDRGP4 $1132 +ARGP4 +ADDRLP4 408 +ADDRGP4 UI_Cvar_VariableString +CALLP4 +ASGNP4 +ADDRLP4 12 +ARGP4 +ADDRLP4 408 +INDIRP4 +ARGP4 +ADDRGP4 strcpy +CALLP4 +pop +line 1488 +;1488: strcpy(headmodel, UI_Cvar_VariableString("ui_opponentModel")); +ADDRGP4 $1132 +ARGP4 +ADDRLP4 412 +ADDRGP4 UI_Cvar_VariableString +CALLP4 +ASGNP4 +ADDRLP4 76 +ARGP4 +ADDRLP4 412 +INDIRP4 +ARGP4 +ADDRGP4 strcpy +CALLP4 +pop +line 1489 +;1489: team[0] = '\0'; +ADDRLP4 152 +CNSTI1 0 +ASGNI1 +line 1491 +;1490: +;1491: memset( &info2, 0, sizeof(playerInfo_t) ); +ADDRGP4 $1129 +ARGP4 +CNSTI4 0 +ARGI4 +CNSTI4 1276 +ARGI4 +ADDRGP4 memset +CALLP4 +pop +line 1492 +;1492: viewangles[YAW] = 180 - 10; +ADDRLP4 0+4 +CNSTF4 1126825984 +ASGNF4 +line 1493 +;1493: viewangles[PITCH] = 0; +ADDRLP4 0 +CNSTF4 0 +ASGNF4 +line 1494 +;1494: viewangles[ROLL] = 0; +ADDRLP4 0+8 +CNSTF4 0 +ASGNF4 +line 1495 +;1495: VectorClear( moveangles ); +ADDRLP4 416 +CNSTF4 0 +ASGNF4 +ADDRLP4 140+8 +ADDRLP4 416 +INDIRF4 +ASGNF4 +ADDRLP4 140+4 +ADDRLP4 416 +INDIRF4 +ASGNF4 +ADDRLP4 140 +ADDRLP4 416 +INDIRF4 +ASGNF4 +line 1496 +;1496: UI_PlayerInfo_SetModel( &info2, model, headmodel, ""); +ADDRGP4 $1129 +ARGP4 +ADDRLP4 12 +ARGP4 +ADDRLP4 76 +ARGP4 +ADDRGP4 $112 +ARGP4 +ADDRGP4 UI_PlayerInfo_SetModel +CALLV +pop +line 1497 +;1497: UI_PlayerInfo_SetInfo( &info2, LEGS_IDLE, TORSO_STAND, viewangles, vec3_origin, WP_PISTOL, qfalse ); +ADDRGP4 $1129 +ARGP4 +CNSTI4 22 +ARGI4 +CNSTI4 11 +ARGI4 +ADDRLP4 0 +ARGP4 +ADDRGP4 vec3_origin +ARGP4 +CNSTI4 1 +ARGI4 +CNSTI4 0 +ARGI4 +ADDRGP4 UI_PlayerInfo_SetInfo +CALLV +pop +line 1498 +;1498: UI_RegisterClientModelname( &info2, model, headmodel, team); +ADDRGP4 $1129 +ARGP4 +ADDRLP4 12 +ARGP4 +ADDRLP4 76 +ARGP4 +ADDRLP4 152 +ARGP4 +ADDRGP4 UI_RegisterClientModelname +CALLI4 +pop +line 1499 +;1499: updateOpponentModel = qfalse; +ADDRGP4 updateOpponentModel +CNSTI4 0 +ASGNI4 +line 1500 +;1500: } +LABELV $1130 +line 1502 +;1501: +;1502: UI_DrawPlayer( rect->x, rect->y, rect->w, rect->h, &info2, uiInfo.uiDC.realTime / 2); +ADDRLP4 408 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 408 +INDIRP4 +INDIRF4 +ARGF4 +ADDRLP4 408 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRF4 +ARGF4 +ADDRLP4 408 +INDIRP4 +CNSTI4 8 +ADDP4 +INDIRF4 +ARGF4 +ADDRLP4 408 +INDIRP4 +CNSTI4 12 +ADDP4 +INDIRF4 +ARGF4 +ADDRGP4 $1129 +ARGP4 +ADDRGP4 uiInfo+208 +INDIRI4 +CNSTI4 2 +DIVI4 +ARGI4 +ADDRGP4 UI_DrawPlayer +CALLV +pop +line 1504 +;1503: +;1504:} +LABELV $1128 +endproc UI_DrawOpponent 420 28 +proc UI_NextOpponent 24 8 +line 1506 +;1505: +;1506:static void UI_NextOpponent() { +line 1507 +;1507: int i = UI_TeamIndexFromName(UI_Cvar_VariableString("ui_opponentName")); +ADDRGP4 $1081 +ARGP4 +ADDRLP4 8 +ADDRGP4 UI_Cvar_VariableString +CALLP4 +ASGNP4 +ADDRLP4 8 +INDIRP4 +ARGP4 +ADDRLP4 12 +ADDRGP4 UI_TeamIndexFromName +CALLI4 +ASGNI4 +ADDRLP4 0 +ADDRLP4 12 +INDIRI4 +ASGNI4 +line 1508 +;1508: int j = UI_TeamIndexFromName(UI_Cvar_VariableString("ui_teamName")); +ADDRGP4 $701 +ARGP4 +ADDRLP4 16 +ADDRGP4 UI_Cvar_VariableString +CALLP4 +ASGNP4 +ADDRLP4 16 +INDIRP4 +ARGP4 +ADDRLP4 20 +ADDRGP4 UI_TeamIndexFromName +CALLI4 +ASGNI4 +ADDRLP4 4 +ADDRLP4 20 +INDIRI4 +ASGNI4 +line 1509 +;1509: i++; +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 1510 +;1510: if (i >= uiInfo.teamCount) { +ADDRLP4 0 +INDIRI4 +ADDRGP4 uiInfo+75756 +INDIRI4 +LTI4 $1139 +line 1511 +;1511: i = 0; +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +line 1512 +;1512: } +LABELV $1139 +line 1513 +;1513: if (i == j) { +ADDRLP4 0 +INDIRI4 +ADDRLP4 4 +INDIRI4 +NEI4 $1142 +line 1514 +;1514: i++; +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 1515 +;1515: if ( i >= uiInfo.teamCount) { +ADDRLP4 0 +INDIRI4 +ADDRGP4 uiInfo+75756 +INDIRI4 +LTI4 $1144 +line 1516 +;1516: i = 0; +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +line 1517 +;1517: } +LABELV $1144 +line 1518 +;1518: } +LABELV $1142 +line 1519 +;1519: trap_Cvar_Set( "ui_opponentName", uiInfo.teamList[i].teamName ); +ADDRGP4 $1081 +ARGP4 +CNSTI4 44 +ADDRLP4 0 +INDIRI4 +MULI4 +ADDRGP4 uiInfo+75760 +ADDP4 +INDIRP4 +ARGP4 +ADDRGP4 trap_Cvar_Set +CALLV +pop +line 1520 +;1520:} +LABELV $1138 +endproc UI_NextOpponent 24 8 +proc UI_PriorOpponent 24 8 +line 1522 +;1521: +;1522:static void UI_PriorOpponent() { +line 1523 +;1523: int i = UI_TeamIndexFromName(UI_Cvar_VariableString("ui_opponentName")); +ADDRGP4 $1081 +ARGP4 +ADDRLP4 8 +ADDRGP4 UI_Cvar_VariableString +CALLP4 +ASGNP4 +ADDRLP4 8 +INDIRP4 +ARGP4 +ADDRLP4 12 +ADDRGP4 UI_TeamIndexFromName +CALLI4 +ASGNI4 +ADDRLP4 0 +ADDRLP4 12 +INDIRI4 +ASGNI4 +line 1524 +;1524: int j = UI_TeamIndexFromName(UI_Cvar_VariableString("ui_teamName")); +ADDRGP4 $701 +ARGP4 +ADDRLP4 16 +ADDRGP4 UI_Cvar_VariableString +CALLP4 +ASGNP4 +ADDRLP4 16 +INDIRP4 +ARGP4 +ADDRLP4 20 +ADDRGP4 UI_TeamIndexFromName +CALLI4 +ASGNI4 +ADDRLP4 4 +ADDRLP4 20 +INDIRI4 +ASGNI4 +line 1525 +;1525: i--; +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +SUBI4 +ASGNI4 +line 1526 +;1526: if (i < 0) { +ADDRLP4 0 +INDIRI4 +CNSTI4 0 +GEI4 $1149 +line 1527 +;1527: i = uiInfo.teamCount - 1; +ADDRLP4 0 +ADDRGP4 uiInfo+75756 +INDIRI4 +CNSTI4 1 +SUBI4 +ASGNI4 +line 1528 +;1528: } +LABELV $1149 +line 1529 +;1529: if (i == j) { +ADDRLP4 0 +INDIRI4 +ADDRLP4 4 +INDIRI4 +NEI4 $1152 +line 1530 +;1530: i--; +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +SUBI4 +ASGNI4 +line 1531 +;1531: if ( i < 0) { +ADDRLP4 0 +INDIRI4 +CNSTI4 0 +GEI4 $1154 +line 1532 +;1532: i = uiInfo.teamCount - 1; +ADDRLP4 0 +ADDRGP4 uiInfo+75756 +INDIRI4 +CNSTI4 1 +SUBI4 +ASGNI4 +line 1533 +;1533: } +LABELV $1154 +line 1534 +;1534: } +LABELV $1152 +line 1535 +;1535: trap_Cvar_Set( "ui_opponentName", uiInfo.teamList[i].teamName ); +ADDRGP4 $1081 +ARGP4 +CNSTI4 44 +ADDRLP4 0 +INDIRI4 +MULI4 +ADDRGP4 uiInfo+75760 +ADDP4 +INDIRP4 +ARGP4 +ADDRGP4 trap_Cvar_Set +CALLV +pop +line 1536 +;1536:} +LABELV $1148 +endproc UI_PriorOpponent 24 8 +proc UI_DrawPlayerLogo 44 20 +line 1538 +;1537: +;1538:static void UI_DrawPlayerLogo(rectDef_t *rect, vec3_t color) { +line 1539 +;1539: int i = UI_TeamIndexFromName(UI_Cvar_VariableString("ui_teamName")); +ADDRGP4 $701 +ARGP4 +ADDRLP4 4 +ADDRGP4 UI_Cvar_VariableString +CALLP4 +ASGNP4 +ADDRLP4 4 +INDIRP4 +ARGP4 +ADDRLP4 8 +ADDRGP4 UI_TeamIndexFromName +CALLI4 +ASGNI4 +ADDRLP4 0 +ADDRLP4 8 +INDIRI4 +ASGNI4 +line 1541 +;1540: +;1541: if (uiInfo.teamList[i].teamIcon == -1) { +CNSTI4 44 +ADDRLP4 0 +INDIRI4 +MULI4 +ADDRGP4 uiInfo+75760+28 +ADDP4 +INDIRI4 +CNSTI4 -1 +NEI4 $1159 +line 1542 +;1542: uiInfo.teamList[i].teamIcon = trap_R_RegisterShaderNoMip(uiInfo.teamList[i].imageName); +ADDRLP4 12 +CNSTI4 44 +ADDRLP4 0 +INDIRI4 +MULI4 +ASGNI4 +ADDRLP4 12 +INDIRI4 +ADDRGP4 uiInfo+75760+4 +ADDP4 +INDIRP4 +ARGP4 +ADDRLP4 16 +ADDRGP4 trap_R_RegisterShaderNoMip +CALLI4 +ASGNI4 +ADDRLP4 12 +INDIRI4 +ADDRGP4 uiInfo+75760+28 +ADDP4 +ADDRLP4 16 +INDIRI4 +ASGNI4 +line 1543 +;1543: uiInfo.teamList[i].teamIcon_Metal = trap_R_RegisterShaderNoMip(va("%s_metal",uiInfo.teamList[i].imageName)); +ADDRGP4 $769 +ARGP4 +ADDRLP4 20 +CNSTI4 44 +ADDRLP4 0 +INDIRI4 +MULI4 +ASGNI4 +ADDRLP4 20 +INDIRI4 +ADDRGP4 uiInfo+75760+4 +ADDP4 +INDIRP4 +ARGP4 +ADDRLP4 24 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRLP4 24 +INDIRP4 +ARGP4 +ADDRLP4 28 +ADDRGP4 trap_R_RegisterShaderNoMip +CALLI4 +ASGNI4 +ADDRLP4 20 +INDIRI4 +ADDRGP4 uiInfo+75760+32 +ADDP4 +ADDRLP4 28 +INDIRI4 +ASGNI4 +line 1544 +;1544: uiInfo.teamList[i].teamIcon_Name = trap_R_RegisterShaderNoMip(va("%s_name", uiInfo.teamList[i].imageName)); +ADDRGP4 $774 +ARGP4 +ADDRLP4 32 +CNSTI4 44 +ADDRLP4 0 +INDIRI4 +MULI4 +ASGNI4 +ADDRLP4 32 +INDIRI4 +ADDRGP4 uiInfo+75760+4 +ADDP4 +INDIRP4 +ARGP4 +ADDRLP4 36 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRLP4 36 +INDIRP4 +ARGP4 +ADDRLP4 40 +ADDRGP4 trap_R_RegisterShaderNoMip +CALLI4 +ASGNI4 +ADDRLP4 32 +INDIRI4 +ADDRGP4 uiInfo+75760+36 +ADDP4 +ADDRLP4 40 +INDIRI4 +ASGNI4 +line 1545 +;1545: } +LABELV $1159 +line 1547 +;1546: +;1547: trap_R_SetColor( color ); +ADDRFP4 4 +INDIRP4 +ARGP4 +ADDRGP4 trap_R_SetColor +CALLV +pop +line 1548 +;1548: UI_DrawHandlePic( rect->x, rect->y, rect->w, rect->h, uiInfo.teamList[i].teamIcon ); +ADDRLP4 12 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 12 +INDIRP4 +INDIRF4 +ARGF4 +ADDRLP4 12 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRF4 +ARGF4 +ADDRLP4 12 +INDIRP4 +CNSTI4 8 +ADDP4 +INDIRF4 +ARGF4 +ADDRLP4 12 +INDIRP4 +CNSTI4 12 +ADDP4 +INDIRF4 +ARGF4 +CNSTI4 44 +ADDRLP4 0 +INDIRI4 +MULI4 +ADDRGP4 uiInfo+75760+28 +ADDP4 +INDIRI4 +ARGI4 +ADDRGP4 UI_DrawHandlePic +CALLV +pop +line 1549 +;1549: trap_R_SetColor( NULL ); +CNSTP4 0 +ARGP4 +ADDRGP4 trap_R_SetColor +CALLV +pop +line 1550 +;1550:} +LABELV $1158 +endproc UI_DrawPlayerLogo 44 20 +proc UI_DrawPlayerLogoMetal 44 20 +line 1552 +;1551: +;1552:static void UI_DrawPlayerLogoMetal(rectDef_t *rect, vec3_t color) { +line 1553 +;1553: int i = UI_TeamIndexFromName(UI_Cvar_VariableString("ui_teamName")); +ADDRGP4 $701 +ARGP4 +ADDRLP4 4 +ADDRGP4 UI_Cvar_VariableString +CALLP4 +ASGNP4 +ADDRLP4 4 +INDIRP4 +ARGP4 +ADDRLP4 8 +ADDRGP4 UI_TeamIndexFromName +CALLI4 +ASGNI4 +ADDRLP4 0 +ADDRLP4 8 +INDIRI4 +ASGNI4 +line 1554 +;1554: if (uiInfo.teamList[i].teamIcon == -1) { +CNSTI4 44 +ADDRLP4 0 +INDIRI4 +MULI4 +ADDRGP4 uiInfo+75760+28 +ADDP4 +INDIRI4 +CNSTI4 -1 +NEI4 $1178 +line 1555 +;1555: uiInfo.teamList[i].teamIcon = trap_R_RegisterShaderNoMip(uiInfo.teamList[i].imageName); +ADDRLP4 12 +CNSTI4 44 +ADDRLP4 0 +INDIRI4 +MULI4 +ASGNI4 +ADDRLP4 12 +INDIRI4 +ADDRGP4 uiInfo+75760+4 +ADDP4 +INDIRP4 +ARGP4 +ADDRLP4 16 +ADDRGP4 trap_R_RegisterShaderNoMip +CALLI4 +ASGNI4 +ADDRLP4 12 +INDIRI4 +ADDRGP4 uiInfo+75760+28 +ADDP4 +ADDRLP4 16 +INDIRI4 +ASGNI4 +line 1556 +;1556: uiInfo.teamList[i].teamIcon_Metal = trap_R_RegisterShaderNoMip(va("%s_metal",uiInfo.teamList[i].imageName)); +ADDRGP4 $769 +ARGP4 +ADDRLP4 20 +CNSTI4 44 +ADDRLP4 0 +INDIRI4 +MULI4 +ASGNI4 +ADDRLP4 20 +INDIRI4 +ADDRGP4 uiInfo+75760+4 +ADDP4 +INDIRP4 +ARGP4 +ADDRLP4 24 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRLP4 24 +INDIRP4 +ARGP4 +ADDRLP4 28 +ADDRGP4 trap_R_RegisterShaderNoMip +CALLI4 +ASGNI4 +ADDRLP4 20 +INDIRI4 +ADDRGP4 uiInfo+75760+32 +ADDP4 +ADDRLP4 28 +INDIRI4 +ASGNI4 +line 1557 +;1557: uiInfo.teamList[i].teamIcon_Name = trap_R_RegisterShaderNoMip(va("%s_name", uiInfo.teamList[i].imageName)); +ADDRGP4 $774 +ARGP4 +ADDRLP4 32 +CNSTI4 44 +ADDRLP4 0 +INDIRI4 +MULI4 +ASGNI4 +ADDRLP4 32 +INDIRI4 +ADDRGP4 uiInfo+75760+4 +ADDP4 +INDIRP4 +ARGP4 +ADDRLP4 36 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRLP4 36 +INDIRP4 +ARGP4 +ADDRLP4 40 +ADDRGP4 trap_R_RegisterShaderNoMip +CALLI4 +ASGNI4 +ADDRLP4 32 +INDIRI4 +ADDRGP4 uiInfo+75760+36 +ADDP4 +ADDRLP4 40 +INDIRI4 +ASGNI4 +line 1558 +;1558: } +LABELV $1178 +line 1560 +;1559: +;1560: trap_R_SetColor( color ); +ADDRFP4 4 +INDIRP4 +ARGP4 +ADDRGP4 trap_R_SetColor +CALLV +pop +line 1561 +;1561: UI_DrawHandlePic( rect->x, rect->y, rect->w, rect->h, uiInfo.teamList[i].teamIcon_Metal ); +ADDRLP4 12 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 12 +INDIRP4 +INDIRF4 +ARGF4 +ADDRLP4 12 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRF4 +ARGF4 +ADDRLP4 12 +INDIRP4 +CNSTI4 8 +ADDP4 +INDIRF4 +ARGF4 +ADDRLP4 12 +INDIRP4 +CNSTI4 12 +ADDP4 +INDIRF4 +ARGF4 +CNSTI4 44 +ADDRLP4 0 +INDIRI4 +MULI4 +ADDRGP4 uiInfo+75760+32 +ADDP4 +INDIRI4 +ARGI4 +ADDRGP4 UI_DrawHandlePic +CALLV +pop +line 1562 +;1562: trap_R_SetColor( NULL ); +CNSTP4 0 +ARGP4 +ADDRGP4 trap_R_SetColor +CALLV +pop +line 1563 +;1563:} +LABELV $1177 +endproc UI_DrawPlayerLogoMetal 44 20 +proc UI_DrawPlayerLogoName 44 20 +line 1565 +;1564: +;1565:static void UI_DrawPlayerLogoName(rectDef_t *rect, vec3_t color) { +line 1566 +;1566: int i = UI_TeamIndexFromName(UI_Cvar_VariableString("ui_teamName")); +ADDRGP4 $701 +ARGP4 +ADDRLP4 4 +ADDRGP4 UI_Cvar_VariableString +CALLP4 +ASGNP4 +ADDRLP4 4 +INDIRP4 +ARGP4 +ADDRLP4 8 +ADDRGP4 UI_TeamIndexFromName +CALLI4 +ASGNI4 +ADDRLP4 0 +ADDRLP4 8 +INDIRI4 +ASGNI4 +line 1567 +;1567: if (uiInfo.teamList[i].teamIcon == -1) { +CNSTI4 44 +ADDRLP4 0 +INDIRI4 +MULI4 +ADDRGP4 uiInfo+75760+28 +ADDP4 +INDIRI4 +CNSTI4 -1 +NEI4 $1197 +line 1568 +;1568: uiInfo.teamList[i].teamIcon = trap_R_RegisterShaderNoMip(uiInfo.teamList[i].imageName); +ADDRLP4 12 +CNSTI4 44 +ADDRLP4 0 +INDIRI4 +MULI4 +ASGNI4 +ADDRLP4 12 +INDIRI4 +ADDRGP4 uiInfo+75760+4 +ADDP4 +INDIRP4 +ARGP4 +ADDRLP4 16 +ADDRGP4 trap_R_RegisterShaderNoMip +CALLI4 +ASGNI4 +ADDRLP4 12 +INDIRI4 +ADDRGP4 uiInfo+75760+28 +ADDP4 +ADDRLP4 16 +INDIRI4 +ASGNI4 +line 1569 +;1569: uiInfo.teamList[i].teamIcon_Metal = trap_R_RegisterShaderNoMip(va("%s_metal",uiInfo.teamList[i].imageName)); +ADDRGP4 $769 +ARGP4 +ADDRLP4 20 +CNSTI4 44 +ADDRLP4 0 +INDIRI4 +MULI4 +ASGNI4 +ADDRLP4 20 +INDIRI4 +ADDRGP4 uiInfo+75760+4 +ADDP4 +INDIRP4 +ARGP4 +ADDRLP4 24 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRLP4 24 +INDIRP4 +ARGP4 +ADDRLP4 28 +ADDRGP4 trap_R_RegisterShaderNoMip +CALLI4 +ASGNI4 +ADDRLP4 20 +INDIRI4 +ADDRGP4 uiInfo+75760+32 +ADDP4 +ADDRLP4 28 +INDIRI4 +ASGNI4 +line 1570 +;1570: uiInfo.teamList[i].teamIcon_Name = trap_R_RegisterShaderNoMip(va("%s_name", uiInfo.teamList[i].imageName)); +ADDRGP4 $774 +ARGP4 +ADDRLP4 32 +CNSTI4 44 +ADDRLP4 0 +INDIRI4 +MULI4 +ASGNI4 +ADDRLP4 32 +INDIRI4 +ADDRGP4 uiInfo+75760+4 +ADDP4 +INDIRP4 +ARGP4 +ADDRLP4 36 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRLP4 36 +INDIRP4 +ARGP4 +ADDRLP4 40 +ADDRGP4 trap_R_RegisterShaderNoMip +CALLI4 +ASGNI4 +ADDRLP4 32 +INDIRI4 +ADDRGP4 uiInfo+75760+36 +ADDP4 +ADDRLP4 40 +INDIRI4 +ASGNI4 +line 1571 +;1571: } +LABELV $1197 +line 1573 +;1572: +;1573: trap_R_SetColor( color ); +ADDRFP4 4 +INDIRP4 +ARGP4 +ADDRGP4 trap_R_SetColor +CALLV +pop +line 1574 +;1574: UI_DrawHandlePic( rect->x, rect->y, rect->w, rect->h, uiInfo.teamList[i].teamIcon_Name ); +ADDRLP4 12 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 12 +INDIRP4 +INDIRF4 +ARGF4 +ADDRLP4 12 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRF4 +ARGF4 +ADDRLP4 12 +INDIRP4 +CNSTI4 8 +ADDP4 +INDIRF4 +ARGF4 +ADDRLP4 12 +INDIRP4 +CNSTI4 12 +ADDP4 +INDIRF4 +ARGF4 +CNSTI4 44 +ADDRLP4 0 +INDIRI4 +MULI4 +ADDRGP4 uiInfo+75760+36 +ADDP4 +INDIRI4 +ARGI4 +ADDRGP4 UI_DrawHandlePic +CALLV +pop +line 1575 +;1575: trap_R_SetColor( NULL ); +CNSTP4 0 +ARGP4 +ADDRGP4 trap_R_SetColor +CALLV +pop +line 1576 +;1576:} +LABELV $1196 +endproc UI_DrawPlayerLogoName 44 20 +proc UI_DrawOpponentLogo 44 20 +line 1578 +;1577: +;1578:static void UI_DrawOpponentLogo(rectDef_t *rect, vec3_t color) { +line 1579 +;1579: int i = UI_TeamIndexFromName(UI_Cvar_VariableString("ui_opponentName")); +ADDRGP4 $1081 +ARGP4 +ADDRLP4 4 +ADDRGP4 UI_Cvar_VariableString +CALLP4 +ASGNP4 +ADDRLP4 4 +INDIRP4 +ARGP4 +ADDRLP4 8 +ADDRGP4 UI_TeamIndexFromName +CALLI4 +ASGNI4 +ADDRLP4 0 +ADDRLP4 8 +INDIRI4 +ASGNI4 +line 1580 +;1580: if (uiInfo.teamList[i].teamIcon == -1) { +CNSTI4 44 +ADDRLP4 0 +INDIRI4 +MULI4 +ADDRGP4 uiInfo+75760+28 +ADDP4 +INDIRI4 +CNSTI4 -1 +NEI4 $1216 +line 1581 +;1581: uiInfo.teamList[i].teamIcon = trap_R_RegisterShaderNoMip(uiInfo.teamList[i].imageName); +ADDRLP4 12 +CNSTI4 44 +ADDRLP4 0 +INDIRI4 +MULI4 +ASGNI4 +ADDRLP4 12 +INDIRI4 +ADDRGP4 uiInfo+75760+4 +ADDP4 +INDIRP4 +ARGP4 +ADDRLP4 16 +ADDRGP4 trap_R_RegisterShaderNoMip +CALLI4 +ASGNI4 +ADDRLP4 12 +INDIRI4 +ADDRGP4 uiInfo+75760+28 +ADDP4 +ADDRLP4 16 +INDIRI4 +ASGNI4 +line 1582 +;1582: uiInfo.teamList[i].teamIcon_Metal = trap_R_RegisterShaderNoMip(va("%s_metal",uiInfo.teamList[i].imageName)); +ADDRGP4 $769 +ARGP4 +ADDRLP4 20 +CNSTI4 44 +ADDRLP4 0 +INDIRI4 +MULI4 +ASGNI4 +ADDRLP4 20 +INDIRI4 +ADDRGP4 uiInfo+75760+4 +ADDP4 +INDIRP4 +ARGP4 +ADDRLP4 24 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRLP4 24 +INDIRP4 +ARGP4 +ADDRLP4 28 +ADDRGP4 trap_R_RegisterShaderNoMip +CALLI4 +ASGNI4 +ADDRLP4 20 +INDIRI4 +ADDRGP4 uiInfo+75760+32 +ADDP4 +ADDRLP4 28 +INDIRI4 +ASGNI4 +line 1583 +;1583: uiInfo.teamList[i].teamIcon_Name = trap_R_RegisterShaderNoMip(va("%s_name", uiInfo.teamList[i].imageName)); +ADDRGP4 $774 +ARGP4 +ADDRLP4 32 +CNSTI4 44 +ADDRLP4 0 +INDIRI4 +MULI4 +ASGNI4 +ADDRLP4 32 +INDIRI4 +ADDRGP4 uiInfo+75760+4 +ADDP4 +INDIRP4 +ARGP4 +ADDRLP4 36 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRLP4 36 +INDIRP4 +ARGP4 +ADDRLP4 40 +ADDRGP4 trap_R_RegisterShaderNoMip +CALLI4 +ASGNI4 +ADDRLP4 32 +INDIRI4 +ADDRGP4 uiInfo+75760+36 +ADDP4 +ADDRLP4 40 +INDIRI4 +ASGNI4 +line 1584 +;1584: } +LABELV $1216 +line 1586 +;1585: +;1586: trap_R_SetColor( color ); +ADDRFP4 4 +INDIRP4 +ARGP4 +ADDRGP4 trap_R_SetColor +CALLV +pop +line 1587 +;1587: UI_DrawHandlePic( rect->x, rect->y, rect->w, rect->h, uiInfo.teamList[i].teamIcon ); +ADDRLP4 12 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 12 +INDIRP4 +INDIRF4 +ARGF4 +ADDRLP4 12 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRF4 +ARGF4 +ADDRLP4 12 +INDIRP4 +CNSTI4 8 +ADDP4 +INDIRF4 +ARGF4 +ADDRLP4 12 +INDIRP4 +CNSTI4 12 +ADDP4 +INDIRF4 +ARGF4 +CNSTI4 44 +ADDRLP4 0 +INDIRI4 +MULI4 +ADDRGP4 uiInfo+75760+28 +ADDP4 +INDIRI4 +ARGI4 +ADDRGP4 UI_DrawHandlePic +CALLV +pop +line 1588 +;1588: trap_R_SetColor( NULL ); +CNSTP4 0 +ARGP4 +ADDRGP4 trap_R_SetColor +CALLV +pop +line 1589 +;1589:} +LABELV $1215 +endproc UI_DrawOpponentLogo 44 20 +proc UI_DrawOpponentLogoMetal 44 20 +line 1591 +;1590: +;1591:static void UI_DrawOpponentLogoMetal(rectDef_t *rect, vec3_t color) { +line 1592 +;1592: int i = UI_TeamIndexFromName(UI_Cvar_VariableString("ui_opponentName")); +ADDRGP4 $1081 +ARGP4 +ADDRLP4 4 +ADDRGP4 UI_Cvar_VariableString +CALLP4 +ASGNP4 +ADDRLP4 4 +INDIRP4 +ARGP4 +ADDRLP4 8 +ADDRGP4 UI_TeamIndexFromName +CALLI4 +ASGNI4 +ADDRLP4 0 +ADDRLP4 8 +INDIRI4 +ASGNI4 +line 1593 +;1593: if (uiInfo.teamList[i].teamIcon == -1) { +CNSTI4 44 +ADDRLP4 0 +INDIRI4 +MULI4 +ADDRGP4 uiInfo+75760+28 +ADDP4 +INDIRI4 +CNSTI4 -1 +NEI4 $1235 +line 1594 +;1594: uiInfo.teamList[i].teamIcon = trap_R_RegisterShaderNoMip(uiInfo.teamList[i].imageName); +ADDRLP4 12 +CNSTI4 44 +ADDRLP4 0 +INDIRI4 +MULI4 +ASGNI4 +ADDRLP4 12 +INDIRI4 +ADDRGP4 uiInfo+75760+4 +ADDP4 +INDIRP4 +ARGP4 +ADDRLP4 16 +ADDRGP4 trap_R_RegisterShaderNoMip +CALLI4 +ASGNI4 +ADDRLP4 12 +INDIRI4 +ADDRGP4 uiInfo+75760+28 +ADDP4 +ADDRLP4 16 +INDIRI4 +ASGNI4 +line 1595 +;1595: uiInfo.teamList[i].teamIcon_Metal = trap_R_RegisterShaderNoMip(va("%s_metal",uiInfo.teamList[i].imageName)); +ADDRGP4 $769 +ARGP4 +ADDRLP4 20 +CNSTI4 44 +ADDRLP4 0 +INDIRI4 +MULI4 +ASGNI4 +ADDRLP4 20 +INDIRI4 +ADDRGP4 uiInfo+75760+4 +ADDP4 +INDIRP4 +ARGP4 +ADDRLP4 24 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRLP4 24 +INDIRP4 +ARGP4 +ADDRLP4 28 +ADDRGP4 trap_R_RegisterShaderNoMip +CALLI4 +ASGNI4 +ADDRLP4 20 +INDIRI4 +ADDRGP4 uiInfo+75760+32 +ADDP4 +ADDRLP4 28 +INDIRI4 +ASGNI4 +line 1596 +;1596: uiInfo.teamList[i].teamIcon_Name = trap_R_RegisterShaderNoMip(va("%s_name", uiInfo.teamList[i].imageName)); +ADDRGP4 $774 +ARGP4 +ADDRLP4 32 +CNSTI4 44 +ADDRLP4 0 +INDIRI4 +MULI4 +ASGNI4 +ADDRLP4 32 +INDIRI4 +ADDRGP4 uiInfo+75760+4 +ADDP4 +INDIRP4 +ARGP4 +ADDRLP4 36 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRLP4 36 +INDIRP4 +ARGP4 +ADDRLP4 40 +ADDRGP4 trap_R_RegisterShaderNoMip +CALLI4 +ASGNI4 +ADDRLP4 32 +INDIRI4 +ADDRGP4 uiInfo+75760+36 +ADDP4 +ADDRLP4 40 +INDIRI4 +ASGNI4 +line 1597 +;1597: } +LABELV $1235 +line 1599 +;1598: +;1599: trap_R_SetColor( color ); +ADDRFP4 4 +INDIRP4 +ARGP4 +ADDRGP4 trap_R_SetColor +CALLV +pop +line 1600 +;1600: UI_DrawHandlePic( rect->x, rect->y, rect->w, rect->h, uiInfo.teamList[i].teamIcon_Metal ); +ADDRLP4 12 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 12 +INDIRP4 +INDIRF4 +ARGF4 +ADDRLP4 12 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRF4 +ARGF4 +ADDRLP4 12 +INDIRP4 +CNSTI4 8 +ADDP4 +INDIRF4 +ARGF4 +ADDRLP4 12 +INDIRP4 +CNSTI4 12 +ADDP4 +INDIRF4 +ARGF4 +CNSTI4 44 +ADDRLP4 0 +INDIRI4 +MULI4 +ADDRGP4 uiInfo+75760+32 +ADDP4 +INDIRI4 +ARGI4 +ADDRGP4 UI_DrawHandlePic +CALLV +pop +line 1601 +;1601: trap_R_SetColor( NULL ); +CNSTP4 0 +ARGP4 +ADDRGP4 trap_R_SetColor +CALLV +pop +line 1602 +;1602:} +LABELV $1234 +endproc UI_DrawOpponentLogoMetal 44 20 +proc UI_DrawOpponentLogoName 44 20 +line 1604 +;1603: +;1604:static void UI_DrawOpponentLogoName(rectDef_t *rect, vec3_t color) { +line 1605 +;1605: int i = UI_TeamIndexFromName(UI_Cvar_VariableString("ui_opponentName")); +ADDRGP4 $1081 +ARGP4 +ADDRLP4 4 +ADDRGP4 UI_Cvar_VariableString +CALLP4 +ASGNP4 +ADDRLP4 4 +INDIRP4 +ARGP4 +ADDRLP4 8 +ADDRGP4 UI_TeamIndexFromName +CALLI4 +ASGNI4 +ADDRLP4 0 +ADDRLP4 8 +INDIRI4 +ASGNI4 +line 1606 +;1606: if (uiInfo.teamList[i].teamIcon == -1) { +CNSTI4 44 +ADDRLP4 0 +INDIRI4 +MULI4 +ADDRGP4 uiInfo+75760+28 +ADDP4 +INDIRI4 +CNSTI4 -1 +NEI4 $1254 +line 1607 +;1607: uiInfo.teamList[i].teamIcon = trap_R_RegisterShaderNoMip(uiInfo.teamList[i].imageName); +ADDRLP4 12 +CNSTI4 44 +ADDRLP4 0 +INDIRI4 +MULI4 +ASGNI4 +ADDRLP4 12 +INDIRI4 +ADDRGP4 uiInfo+75760+4 +ADDP4 +INDIRP4 +ARGP4 +ADDRLP4 16 +ADDRGP4 trap_R_RegisterShaderNoMip +CALLI4 +ASGNI4 +ADDRLP4 12 +INDIRI4 +ADDRGP4 uiInfo+75760+28 +ADDP4 +ADDRLP4 16 +INDIRI4 +ASGNI4 +line 1608 +;1608: uiInfo.teamList[i].teamIcon_Metal = trap_R_RegisterShaderNoMip(va("%s_metal",uiInfo.teamList[i].imageName)); +ADDRGP4 $769 +ARGP4 +ADDRLP4 20 +CNSTI4 44 +ADDRLP4 0 +INDIRI4 +MULI4 +ASGNI4 +ADDRLP4 20 +INDIRI4 +ADDRGP4 uiInfo+75760+4 +ADDP4 +INDIRP4 +ARGP4 +ADDRLP4 24 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRLP4 24 +INDIRP4 +ARGP4 +ADDRLP4 28 +ADDRGP4 trap_R_RegisterShaderNoMip +CALLI4 +ASGNI4 +ADDRLP4 20 +INDIRI4 +ADDRGP4 uiInfo+75760+32 +ADDP4 +ADDRLP4 28 +INDIRI4 +ASGNI4 +line 1609 +;1609: uiInfo.teamList[i].teamIcon_Name = trap_R_RegisterShaderNoMip(va("%s_name", uiInfo.teamList[i].imageName)); +ADDRGP4 $774 +ARGP4 +ADDRLP4 32 +CNSTI4 44 +ADDRLP4 0 +INDIRI4 +MULI4 +ASGNI4 +ADDRLP4 32 +INDIRI4 +ADDRGP4 uiInfo+75760+4 +ADDP4 +INDIRP4 +ARGP4 +ADDRLP4 36 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRLP4 36 +INDIRP4 +ARGP4 +ADDRLP4 40 +ADDRGP4 trap_R_RegisterShaderNoMip +CALLI4 +ASGNI4 +ADDRLP4 32 +INDIRI4 +ADDRGP4 uiInfo+75760+36 +ADDP4 +ADDRLP4 40 +INDIRI4 +ASGNI4 +line 1610 +;1610: } +LABELV $1254 +line 1612 +;1611: +;1612: trap_R_SetColor( color ); +ADDRFP4 4 +INDIRP4 +ARGP4 +ADDRGP4 trap_R_SetColor +CALLV +pop +line 1613 +;1613: UI_DrawHandlePic( rect->x, rect->y, rect->w, rect->h, uiInfo.teamList[i].teamIcon_Name ); +ADDRLP4 12 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 12 +INDIRP4 +INDIRF4 +ARGF4 +ADDRLP4 12 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRF4 +ARGF4 +ADDRLP4 12 +INDIRP4 +CNSTI4 8 +ADDP4 +INDIRF4 +ARGF4 +ADDRLP4 12 +INDIRP4 +CNSTI4 12 +ADDP4 +INDIRF4 +ARGF4 +CNSTI4 44 +ADDRLP4 0 +INDIRI4 +MULI4 +ADDRGP4 uiInfo+75760+36 +ADDP4 +INDIRI4 +ARGI4 +ADDRGP4 UI_DrawHandlePic +CALLV +pop +line 1614 +;1614: trap_R_SetColor( NULL ); +CNSTP4 0 +ARGP4 +ADDRGP4 trap_R_SetColor +CALLV +pop +line 1615 +;1615:} +LABELV $1253 +endproc UI_DrawOpponentLogoName 44 20 +proc UI_DrawAllMapsSelection 16 32 +line 1617 +;1616: +;1617:static void UI_DrawAllMapsSelection(rectDef_t *rect, float scale, vec4_t color, int textStyle, qboolean net) { +line 1618 +;1618: int map = (net) ? ui_currentNetMap.integer : ui_currentMap.integer; +ADDRFP4 16 +INDIRI4 +CNSTI4 0 +EQI4 $1276 +ADDRLP4 4 +ADDRGP4 ui_currentNetMap+12 +INDIRI4 +ASGNI4 +ADDRGP4 $1277 +JUMPV +LABELV $1276 +ADDRLP4 4 +ADDRGP4 ui_currentMap+12 +INDIRI4 +ASGNI4 +LABELV $1277 +ADDRLP4 0 +ADDRLP4 4 +INDIRI4 +ASGNI4 +line 1619 +;1619: if (map >= 0 && map < uiInfo.mapCount) { +ADDRLP4 0 +INDIRI4 +CNSTI4 0 +LTI4 $1278 +ADDRLP4 0 +INDIRI4 +ADDRGP4 uiInfo+83224 +INDIRI4 +GEI4 $1278 +line 1620 +;1620: Text_Paint(rect->x, rect->y, scale, color, uiInfo.mapList[map].mapName, 0, 0, textStyle); +ADDRLP4 12 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 12 +INDIRP4 +INDIRF4 +ARGF4 +ADDRLP4 12 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRF4 +ARGF4 +ADDRFP4 4 +INDIRF4 +ARGF4 +ADDRFP4 8 +INDIRP4 +ARGP4 +CNSTI4 100 +ADDRLP4 0 +INDIRI4 +MULI4 +ADDRGP4 uiInfo+83228 +ADDP4 +INDIRP4 +ARGP4 +CNSTF4 0 +ARGF4 +CNSTI4 0 +ARGI4 +ADDRFP4 12 +INDIRI4 +ARGI4 +ADDRGP4 Text_Paint +CALLV +pop +line 1621 +;1621: } +LABELV $1278 +line 1622 +;1622:} +LABELV $1272 +endproc UI_DrawAllMapsSelection 16 32 +proc UI_DrawOpponentName 8 32 +line 1624 +;1623: +;1624:static void UI_DrawOpponentName(rectDef_t *rect, float scale, vec4_t color, int textStyle) { +line 1625 +;1625: Text_Paint(rect->x, rect->y, scale, color, UI_Cvar_VariableString("ui_opponentName"), 0, 0, textStyle); +ADDRGP4 $1081 +ARGP4 +ADDRLP4 0 +ADDRGP4 UI_Cvar_VariableString +CALLP4 +ASGNP4 +ADDRLP4 4 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 4 +INDIRP4 +INDIRF4 +ARGF4 +ADDRLP4 4 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRF4 +ARGF4 +ADDRFP4 4 +INDIRF4 +ARGF4 +ADDRFP4 8 +INDIRP4 +ARGP4 +ADDRLP4 0 +INDIRP4 +ARGP4 +CNSTF4 0 +ARGF4 +CNSTI4 0 +ARGI4 +ADDRFP4 12 +INDIRI4 +ARGI4 +ADDRGP4 Text_Paint +CALLV +pop +line 1626 +;1626:} +LABELV $1282 +endproc UI_DrawOpponentName 8 32 +proc UI_OwnerDrawWidth 112 12 +line 1629 +;1627: +;1628: +;1629:static int UI_OwnerDrawWidth(int ownerDraw, float scale) { +line 1632 +;1630: int i, h, value; +;1631: const char *text; +;1632: const char *s = NULL; +ADDRLP4 0 +CNSTP4 0 +ASGNP4 +line 1634 +;1633: +;1634: switch (ownerDraw) { +ADDRLP4 20 +ADDRFP4 0 +INDIRI4 +ASGNI4 +ADDRLP4 20 +INDIRI4 +CNSTI4 200 +LTI4 $1285 +ADDRLP4 20 +INDIRI4 +CNSTI4 247 +GTI4 $1355 +ADDRLP4 20 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 $1356-800 +ADDP4 +INDIRP4 +JUMPV +lit +align 4 +LABELV $1356 +address $1286 +address $1285 +address $1285 +address $1287 +address $1285 +address $1288 +address $1285 +address $1291 +address $1296 +address $1301 +address $1306 +address $1306 +address $1306 +address $1306 +address $1306 +address $1316 +address $1316 +address $1316 +address $1316 +address $1316 +address $1325 +address $1285 +address $1334 +address $1285 +address $1285 +address $1285 +address $1285 +address $1285 +address $1285 +address $1285 +address $1285 +address $1285 +address $1285 +address $1285 +address $1285 +address $1285 +address $1285 +address $1285 +address $1285 +address $1285 +address $1285 +address $1285 +address $1285 +address $1285 +address $1285 +address $1285 +address $1285 +address $1352 +code +LABELV $1355 +ADDRFP4 0 +INDIRI4 +CNSTI4 250 +EQI4 $1347 +ADDRGP4 $1285 +JUMPV +LABELV $1286 +line 1636 +;1635: case UI_HANDICAP: +;1636: h = Com_Clamp( 5, 100, trap_Cvar_VariableValue("handicap") ); +ADDRGP4 $699 +ARGP4 +ADDRLP4 24 +ADDRGP4 trap_Cvar_VariableValue +CALLF4 +ASGNF4 +CNSTF4 1084227584 +ARGF4 +CNSTF4 1120403456 +ARGF4 +ADDRLP4 24 +INDIRF4 +ARGF4 +ADDRLP4 28 +ADDRGP4 Com_Clamp +CALLF4 +ASGNF4 +ADDRLP4 16 +ADDRLP4 28 +INDIRF4 +CVFI4 4 +ASGNI4 +line 1637 +;1637: i = 20 - h / 5; +ADDRLP4 4 +CNSTI4 20 +ADDRLP4 16 +INDIRI4 +CNSTI4 5 +DIVI4 +SUBI4 +ASGNI4 +line 1638 +;1638: s = handicapValues[i]; +ADDRLP4 0 +ADDRLP4 4 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 handicapValues +ADDP4 +INDIRP4 +ASGNP4 +line 1639 +;1639: break; +ADDRGP4 $1285 +JUMPV +LABELV $1287 +line 1641 +;1640: case UI_CLANNAME: +;1641: s = UI_Cvar_VariableString("ui_teamName"); +ADDRGP4 $701 +ARGP4 +ADDRLP4 32 +ADDRGP4 UI_Cvar_VariableString +CALLP4 +ASGNP4 +ADDRLP4 0 +ADDRLP4 32 +INDIRP4 +ASGNP4 +line 1642 +;1642: break; +ADDRGP4 $1285 +JUMPV +LABELV $1288 +line 1644 +;1643: case UI_GAMETYPE: +;1644: s = uiInfo.gameTypes[ui_gameType.integer].gameType; +ADDRLP4 0 +ADDRGP4 ui_gameType+12 +INDIRI4 +CNSTI4 3 +LSHI4 +ADDRGP4 uiInfo+78580 +ADDP4 +INDIRP4 +ASGNP4 +line 1645 +;1645: break; +ADDRGP4 $1285 +JUMPV +LABELV $1291 +line 1647 +;1646: case UI_SKILL: +;1647: i = trap_Cvar_VariableValue( "g_spSkill" ); +ADDRGP4 $827 +ARGP4 +ADDRLP4 36 +ADDRGP4 trap_Cvar_VariableValue +CALLF4 +ASGNF4 +ADDRLP4 4 +ADDRLP4 36 +INDIRF4 +CVFI4 4 +ASGNI4 +line 1648 +;1648: if (i < 1 || i > numSkillLevels) { +ADDRLP4 40 +ADDRLP4 4 +INDIRI4 +ASGNI4 +ADDRLP4 40 +INDIRI4 +CNSTI4 1 +LTI4 $1294 +ADDRLP4 40 +INDIRI4 +ADDRGP4 numSkillLevels +INDIRI4 +LEI4 $1292 +LABELV $1294 +line 1649 +;1649: i = 1; +ADDRLP4 4 +CNSTI4 1 +ASGNI4 +line 1650 +;1650: } +LABELV $1292 +line 1651 +;1651: s = skillLevels[i-1]; +ADDRLP4 0 +ADDRLP4 4 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 skillLevels-4 +ADDP4 +INDIRP4 +ASGNP4 +line 1652 +;1652: break; +ADDRGP4 $1285 +JUMPV +LABELV $1296 +line 1654 +;1653: case UI_BLUETEAMNAME: +;1654: i = UI_TeamIndexFromName(UI_Cvar_VariableString("ui_blueTeam")); +ADDRGP4 $833 +ARGP4 +ADDRLP4 44 +ADDRGP4 UI_Cvar_VariableString +CALLP4 +ASGNP4 +ADDRLP4 44 +INDIRP4 +ARGP4 +ADDRLP4 48 +ADDRGP4 UI_TeamIndexFromName +CALLI4 +ASGNI4 +ADDRLP4 4 +ADDRLP4 48 +INDIRI4 +ASGNI4 +line 1655 +;1655: if (i >= 0 && i < uiInfo.teamCount) { +ADDRLP4 52 +ADDRLP4 4 +INDIRI4 +ASGNI4 +ADDRLP4 52 +INDIRI4 +CNSTI4 0 +LTI4 $1285 +ADDRLP4 52 +INDIRI4 +ADDRGP4 uiInfo+75756 +INDIRI4 +GEI4 $1285 +line 1656 +;1656: s = va("%s: %s", "Blue", uiInfo.teamList[i].teamName); +ADDRGP4 $841 +ARGP4 +ADDRGP4 $842 +ARGP4 +CNSTI4 44 +ADDRLP4 4 +INDIRI4 +MULI4 +ADDRGP4 uiInfo+75760 +ADDP4 +INDIRP4 +ARGP4 +ADDRLP4 56 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRLP4 0 +ADDRLP4 56 +INDIRP4 +ASGNP4 +line 1657 +;1657: } +line 1658 +;1658: break; +ADDRGP4 $1285 +JUMPV +LABELV $1301 +line 1660 +;1659: case UI_REDTEAMNAME: +;1660: i = UI_TeamIndexFromName(UI_Cvar_VariableString("ui_redTeam")); +ADDRGP4 $834 +ARGP4 +ADDRLP4 56 +ADDRGP4 UI_Cvar_VariableString +CALLP4 +ASGNP4 +ADDRLP4 56 +INDIRP4 +ARGP4 +ADDRLP4 60 +ADDRGP4 UI_TeamIndexFromName +CALLI4 +ASGNI4 +ADDRLP4 4 +ADDRLP4 60 +INDIRI4 +ASGNI4 +line 1661 +;1661: if (i >= 0 && i < uiInfo.teamCount) { +ADDRLP4 64 +ADDRLP4 4 +INDIRI4 +ASGNI4 +ADDRLP4 64 +INDIRI4 +CNSTI4 0 +LTI4 $1285 +ADDRLP4 64 +INDIRI4 +ADDRGP4 uiInfo+75756 +INDIRI4 +GEI4 $1285 +line 1662 +;1662: s = va("%s: %s", "Red", uiInfo.teamList[i].teamName); +ADDRGP4 $841 +ARGP4 +ADDRGP4 $843 +ARGP4 +CNSTI4 44 +ADDRLP4 4 +INDIRI4 +MULI4 +ADDRGP4 uiInfo+75760 +ADDP4 +INDIRP4 +ARGP4 +ADDRLP4 68 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRLP4 0 +ADDRLP4 68 +INDIRP4 +ASGNP4 +line 1663 +;1663: } +line 1664 +;1664: break; +ADDRGP4 $1285 +JUMPV +LABELV $1306 +line 1670 +;1665: case UI_BLUETEAM1: +;1666: case UI_BLUETEAM2: +;1667: case UI_BLUETEAM3: +;1668: case UI_BLUETEAM4: +;1669: case UI_BLUETEAM5: +;1670: value = trap_Cvar_VariableValue(va("ui_blueteam%i", ownerDraw-UI_BLUETEAM1 + 1)); +ADDRGP4 $849 +ARGP4 +ADDRFP4 0 +INDIRI4 +CNSTI4 210 +SUBI4 +CNSTI4 1 +ADDI4 +ARGI4 +ADDRLP4 68 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRLP4 68 +INDIRP4 +ARGP4 +ADDRLP4 72 +ADDRGP4 trap_Cvar_VariableValue +CALLF4 +ASGNF4 +ADDRLP4 8 +ADDRLP4 72 +INDIRF4 +CVFI4 4 +ASGNI4 +line 1671 +;1671: if (value <= 0) { +ADDRLP4 8 +INDIRI4 +CNSTI4 0 +GTI4 $1307 +line 1672 +;1672: text = "Closed"; +ADDRLP4 12 +ADDRGP4 $856 +ASGNP4 +line 1673 +;1673: } else if (value == 1) { +ADDRGP4 $1308 +JUMPV +LABELV $1307 +ADDRLP4 8 +INDIRI4 +CNSTI4 1 +NEI4 $1309 +line 1674 +;1674: text = "Human"; +ADDRLP4 12 +ADDRGP4 $859 +ASGNP4 +line 1675 +;1675: } else { +ADDRGP4 $1310 +JUMPV +LABELV $1309 +line 1676 +;1676: value -= 2; +ADDRLP4 8 +ADDRLP4 8 +INDIRI4 +CNSTI4 2 +SUBI4 +ASGNI4 +line 1677 +;1677: if (value >= uiInfo.aliasCount) { +ADDRLP4 8 +INDIRI4 +ADDRGP4 uiInfo+74984 +INDIRI4 +LTI4 $1311 +line 1678 +;1678: value = 0; +ADDRLP4 8 +CNSTI4 0 +ASGNI4 +line 1679 +;1679: } +LABELV $1311 +line 1680 +;1680: text = uiInfo.aliasList[value].name; +ADDRLP4 12 +CNSTI4 12 +ADDRLP4 8 +INDIRI4 +MULI4 +ADDRGP4 uiInfo+74988 +ADDP4 +INDIRP4 +ASGNP4 +line 1681 +;1681: } +LABELV $1310 +LABELV $1308 +line 1682 +;1682: s = va("%i. %s", ownerDraw-UI_BLUETEAM1 + 1, text); +ADDRGP4 $1315 +ARGP4 +ADDRFP4 0 +INDIRI4 +CNSTI4 210 +SUBI4 +CNSTI4 1 +ADDI4 +ARGI4 +ADDRLP4 12 +INDIRP4 +ARGP4 +ADDRLP4 76 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRLP4 0 +ADDRLP4 76 +INDIRP4 +ASGNP4 +line 1683 +;1683: break; +ADDRGP4 $1285 +JUMPV +LABELV $1316 +line 1689 +;1684: case UI_REDTEAM1: +;1685: case UI_REDTEAM2: +;1686: case UI_REDTEAM3: +;1687: case UI_REDTEAM4: +;1688: case UI_REDTEAM5: +;1689: value = trap_Cvar_VariableValue(va("ui_redteam%i", ownerDraw-UI_REDTEAM1 + 1)); +ADDRGP4 $850 +ARGP4 +ADDRFP4 0 +INDIRI4 +CNSTI4 215 +SUBI4 +CNSTI4 1 +ADDI4 +ARGI4 +ADDRLP4 80 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRLP4 80 +INDIRP4 +ARGP4 +ADDRLP4 84 +ADDRGP4 trap_Cvar_VariableValue +CALLF4 +ASGNF4 +ADDRLP4 8 +ADDRLP4 84 +INDIRF4 +CVFI4 4 +ASGNI4 +line 1690 +;1690: if (value <= 0) { +ADDRLP4 8 +INDIRI4 +CNSTI4 0 +GTI4 $1317 +line 1691 +;1691: text = "Closed"; +ADDRLP4 12 +ADDRGP4 $856 +ASGNP4 +line 1692 +;1692: } else if (value == 1) { +ADDRGP4 $1318 +JUMPV +LABELV $1317 +ADDRLP4 8 +INDIRI4 +CNSTI4 1 +NEI4 $1319 +line 1693 +;1693: text = "Human"; +ADDRLP4 12 +ADDRGP4 $859 +ASGNP4 +line 1694 +;1694: } else { +ADDRGP4 $1320 +JUMPV +LABELV $1319 +line 1695 +;1695: value -= 2; +ADDRLP4 8 +ADDRLP4 8 +INDIRI4 +CNSTI4 2 +SUBI4 +ASGNI4 +line 1696 +;1696: if (value >= uiInfo.aliasCount) { +ADDRLP4 8 +INDIRI4 +ADDRGP4 uiInfo+74984 +INDIRI4 +LTI4 $1321 +line 1697 +;1697: value = 0; +ADDRLP4 8 +CNSTI4 0 +ASGNI4 +line 1698 +;1698: } +LABELV $1321 +line 1699 +;1699: text = uiInfo.aliasList[value].name; +ADDRLP4 12 +CNSTI4 12 +ADDRLP4 8 +INDIRI4 +MULI4 +ADDRGP4 uiInfo+74988 +ADDP4 +INDIRP4 +ASGNP4 +line 1700 +;1700: } +LABELV $1320 +LABELV $1318 +line 1701 +;1701: s = va("%i. %s", ownerDraw-UI_REDTEAM1 + 1, text); +ADDRGP4 $1315 +ARGP4 +ADDRFP4 0 +INDIRI4 +CNSTI4 215 +SUBI4 +CNSTI4 1 +ADDI4 +ARGI4 +ADDRLP4 12 +INDIRP4 +ARGP4 +ADDRLP4 88 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRLP4 0 +ADDRLP4 88 +INDIRP4 +ASGNP4 +line 1702 +;1702: break; +ADDRGP4 $1285 +JUMPV +LABELV $1325 +line 1704 +;1703: case UI_NETSOURCE: +;1704: if (ui_netSource.integer < 0 || ui_netSource.integer > uiInfo.numJoinGameTypes) { +ADDRGP4 ui_netSource+12 +INDIRI4 +CNSTI4 0 +LTI4 $1331 +ADDRGP4 ui_netSource+12 +INDIRI4 +ADDRGP4 uiInfo+78708 +INDIRI4 +LEI4 $1326 +LABELV $1331 +line 1705 +;1705: ui_netSource.integer = 0; +ADDRGP4 ui_netSource+12 +CNSTI4 0 +ASGNI4 +line 1706 +;1706: } +LABELV $1326 +line 1707 +;1707: s = va("Source: %s", netSources[ui_netSource.integer]); +ADDRGP4 $988 +ARGP4 +ADDRGP4 ui_netSource+12 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 netSources +ADDP4 +INDIRP4 +ARGP4 +ADDRLP4 92 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRLP4 0 +ADDRLP4 92 +INDIRP4 +ASGNP4 +line 1708 +;1708: break; +ADDRGP4 $1285 +JUMPV +LABELV $1334 +line 1710 +;1709: case UI_NETFILTER: +;1710: if (ui_serverFilterType.integer < 0 || ui_serverFilterType.integer > numServerFilters) { +ADDRGP4 ui_serverFilterType+12 +INDIRI4 +CNSTI4 0 +LTI4 $1339 +ADDRGP4 ui_serverFilterType+12 +INDIRI4 +ADDRGP4 numServerFilters +INDIRI4 +LEI4 $1335 +LABELV $1339 +line 1711 +;1711: ui_serverFilterType.integer = 0; +ADDRGP4 ui_serverFilterType+12 +CNSTI4 0 +ASGNI4 +line 1712 +;1712: } +LABELV $1335 +line 1713 +;1713: s = va("Filter: %s", serverFilters[ui_serverFilterType.integer].description ); +ADDRGP4 $1022 +ARGP4 +ADDRGP4 ui_serverFilterType+12 +INDIRI4 +CNSTI4 3 +LSHI4 +ADDRGP4 serverFilters +ADDP4 +INDIRP4 +ARGP4 +ADDRLP4 96 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRLP4 0 +ADDRLP4 96 +INDIRP4 +ASGNP4 +line 1714 +;1714: break; +ADDRGP4 $1285 +JUMPV +line 1716 +;1715: case UI_TIER: +;1716: break; +line 1718 +;1717: case UI_TIER_MAPNAME: +;1718: break; +line 1720 +;1719: case UI_TIER_GAMETYPE: +;1720: break; +line 1722 +;1721: case UI_ALLMAPS_SELECTION: +;1722: break; +line 1724 +;1723: case UI_OPPONENT_NAME: +;1724: break; +LABELV $1347 +line 1726 +;1725: case UI_KEYBINDSTATUS: +;1726: if (Display_KeyBindPending()) { +ADDRLP4 100 +ADDRGP4 Display_KeyBindPending +CALLI4 +ASGNI4 +ADDRLP4 100 +INDIRI4 +CNSTI4 0 +EQI4 $1348 +line 1727 +;1727: s = "Waiting for new key... Press ESCAPE to cancel"; +ADDRLP4 0 +ADDRGP4 $1350 +ASGNP4 +line 1728 +;1728: } else { +ADDRGP4 $1285 +JUMPV +LABELV $1348 +line 1729 +;1729: s = "Press ENTER or CLICK to change, Press BACKSPACE to clear"; +ADDRLP4 0 +ADDRGP4 $1351 +ASGNP4 +line 1730 +;1730: } +line 1731 +;1731: break; +ADDRGP4 $1285 +JUMPV +LABELV $1352 +line 1733 +;1732: case UI_SERVERREFRESHDATE: +;1733: s = UI_Cvar_VariableString(va("ui_lastServerRefresh_%i", ui_netSource.integer)); +ADDRGP4 $1353 +ARGP4 +ADDRGP4 ui_netSource+12 +INDIRI4 +ARGI4 +ADDRLP4 104 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRLP4 104 +INDIRP4 +ARGP4 +ADDRLP4 108 +ADDRGP4 UI_Cvar_VariableString +CALLP4 +ASGNP4 +ADDRLP4 0 +ADDRLP4 108 +INDIRP4 +ASGNP4 +line 1734 +;1734: break; +line 1736 +;1735: default: +;1736: break; +LABELV $1285 +line 1739 +;1737: } +;1738: +;1739: if (s) { +ADDRLP4 0 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $1358 +line 1740 +;1740: return Text_Width(s, scale, 0); +ADDRLP4 0 +INDIRP4 +ARGP4 +ADDRFP4 4 +INDIRF4 +ARGF4 +CNSTI4 0 +ARGI4 +ADDRLP4 24 +ADDRGP4 Text_Width +CALLI4 +ASGNI4 +ADDRLP4 24 +INDIRI4 +RETI4 +ADDRGP4 $1283 +JUMPV +LABELV $1358 +line 1742 +;1741: } +;1742: return 0; +CNSTI4 0 +RETI4 +LABELV $1283 +endproc UI_OwnerDrawWidth 112 12 +proc UI_DrawBotName 24 32 +line 1745 +;1743:} +;1744: +;1745:static void UI_DrawBotName(rectDef_t *rect, float scale, vec4_t color, int textStyle) { +line 1746 +;1746: int value = uiInfo.botIndex; +ADDRLP4 0 +ADDRGP4 uiInfo+73444 +INDIRI4 +ASGNI4 +line 1747 +;1747: int game = trap_Cvar_VariableValue("g_gametype"); +ADDRGP4 $1362 +ARGP4 +ADDRLP4 12 +ADDRGP4 trap_Cvar_VariableValue +CALLF4 +ASGNF4 +ADDRLP4 8 +ADDRLP4 12 +INDIRF4 +CVFI4 4 +ASGNI4 +line 1748 +;1748: const char *text = ""; +ADDRLP4 4 +ADDRGP4 $112 +ASGNP4 +line 1749 +;1749: if (game >= GT_TEAM) { +ADDRLP4 8 +INDIRI4 +CNSTI4 3 +LTI4 $1363 +line 1750 +;1750: if (value >= uiInfo.characterCount) { +ADDRLP4 0 +INDIRI4 +ADDRGP4 uiInfo+73440 +INDIRI4 +LTI4 $1365 +line 1751 +;1751: value = 0; +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +line 1752 +;1752: } +LABELV $1365 +line 1753 +;1753: text = uiInfo.characterList[value].name; +ADDRLP4 4 +CNSTI4 24 +ADDRLP4 0 +INDIRI4 +MULI4 +ADDRGP4 uiInfo+73448 +ADDP4 +INDIRP4 +ASGNP4 +line 1754 +;1754: } else { +ADDRGP4 $1364 +JUMPV +LABELV $1363 +line 1755 +;1755: if (value >= UI_GetNumBots()) { +ADDRLP4 16 +ADDRGP4 UI_GetNumBots +CALLI4 +ASGNI4 +ADDRLP4 0 +INDIRI4 +ADDRLP4 16 +INDIRI4 +LTI4 $1369 +line 1756 +;1756: value = 0; +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +line 1757 +;1757: } +LABELV $1369 +line 1758 +;1758: text = UI_GetBotNameByNumber(value); +ADDRLP4 0 +INDIRI4 +ARGI4 +ADDRLP4 20 +ADDRGP4 UI_GetBotNameByNumber +CALLP4 +ASGNP4 +ADDRLP4 4 +ADDRLP4 20 +INDIRP4 +ASGNP4 +line 1759 +;1759: } +LABELV $1364 +line 1760 +;1760: Text_Paint(rect->x, rect->y, scale, color, text, 0, 0, textStyle); +ADDRLP4 16 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 16 +INDIRP4 +INDIRF4 +ARGF4 +ADDRLP4 16 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRF4 +ARGF4 +ADDRFP4 4 +INDIRF4 +ARGF4 +ADDRFP4 8 +INDIRP4 +ARGP4 +ADDRLP4 4 +INDIRP4 +ARGP4 +CNSTF4 0 +ARGF4 +CNSTI4 0 +ARGI4 +ADDRFP4 12 +INDIRI4 +ARGI4 +ADDRGP4 Text_Paint +CALLV +pop +line 1761 +;1761:} +LABELV $1360 +endproc UI_DrawBotName 24 32 +proc UI_DrawBotSkill 4 32 +line 1763 +;1762: +;1763:static void UI_DrawBotSkill(rectDef_t *rect, float scale, vec4_t color, int textStyle) { +line 1764 +;1764: if (uiInfo.skillIndex >= 0 && uiInfo.skillIndex < numSkillLevels) { +ADDRGP4 uiInfo+96672 +INDIRI4 +CNSTI4 0 +LTI4 $1372 +ADDRGP4 uiInfo+96672 +INDIRI4 +ADDRGP4 numSkillLevels +INDIRI4 +GEI4 $1372 +line 1765 +;1765: Text_Paint(rect->x, rect->y, scale, color, skillLevels[uiInfo.skillIndex], 0, 0, textStyle); +ADDRLP4 0 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 0 +INDIRP4 +INDIRF4 +ARGF4 +ADDRLP4 0 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRF4 +ARGF4 +ADDRFP4 4 +INDIRF4 +ARGF4 +ADDRFP4 8 +INDIRP4 +ARGP4 +ADDRGP4 uiInfo+96672 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 skillLevels +ADDP4 +INDIRP4 +ARGP4 +CNSTF4 0 +ARGF4 +CNSTI4 0 +ARGI4 +ADDRFP4 12 +INDIRI4 +ARGI4 +ADDRGP4 Text_Paint +CALLV +pop +line 1766 +;1766: } +LABELV $1372 +line 1767 +;1767:} +LABELV $1371 +endproc UI_DrawBotSkill 4 32 +proc UI_DrawRedBlue 8 32 +line 1769 +;1768: +;1769:static void UI_DrawRedBlue(rectDef_t *rect, float scale, vec4_t color, int textStyle) { +line 1770 +;1770: Text_Paint(rect->x, rect->y, scale, color, (uiInfo.redBlue == 0) ? "Red" : "Blue", 0, 0, textStyle); +ADDRLP4 4 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 4 +INDIRP4 +INDIRF4 +ARGF4 +ADDRLP4 4 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRF4 +ARGF4 +ADDRFP4 4 +INDIRF4 +ARGF4 +ADDRFP4 8 +INDIRP4 +ARGP4 +ADDRGP4 uiInfo+78840 +INDIRI4 +CNSTI4 0 +NEI4 $1380 +ADDRLP4 0 +ADDRGP4 $843 +ASGNP4 +ADDRGP4 $1381 +JUMPV +LABELV $1380 +ADDRLP4 0 +ADDRGP4 $842 +ASGNP4 +LABELV $1381 +ADDRLP4 0 +INDIRP4 +ARGP4 +CNSTF4 0 +ARGF4 +CNSTI4 0 +ARGI4 +ADDRFP4 12 +INDIRI4 +ARGI4 +ADDRGP4 Text_Paint +CALLV +pop +line 1771 +;1771:} +LABELV $1377 +endproc UI_DrawRedBlue 8 32 +proc UI_DrawCrosshair 8 20 +line 1773 +;1772: +;1773:static void UI_DrawCrosshair(rectDef_t *rect, float scale, vec4_t color) { +line 1774 +;1774: trap_R_SetColor( color ); +ADDRFP4 8 +INDIRP4 +ARGP4 +ADDRGP4 trap_R_SetColor +CALLV +pop +line 1775 +;1775: if (uiInfo.currentCrosshair < 0 || uiInfo.currentCrosshair >= NUM_CROSSHAIRS) { +ADDRGP4 uiInfo+119476 +INDIRI4 +CNSTI4 0 +LTI4 $1387 +ADDRGP4 uiInfo+119476 +INDIRI4 +CNSTI4 10 +LTI4 $1383 +LABELV $1387 +line 1776 +;1776: uiInfo.currentCrosshair = 0; +ADDRGP4 uiInfo+119476 +CNSTI4 0 +ASGNI4 +line 1777 +;1777: } +LABELV $1383 +line 1778 +;1778: UI_DrawHandlePic( rect->x, rect->y - rect->h, rect->w, rect->h, uiInfo.uiDC.Assets.crosshairShader[uiInfo.currentCrosshair]); +ADDRLP4 0 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 0 +INDIRP4 +INDIRF4 +ARGF4 +ADDRLP4 4 +ADDRLP4 0 +INDIRP4 +CNSTI4 12 +ADDP4 +INDIRF4 +ASGNF4 +ADDRLP4 0 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRF4 +ADDRLP4 4 +INDIRF4 +SUBF4 +ARGF4 +ADDRLP4 0 +INDIRP4 +CNSTI4 8 +ADDP4 +INDIRF4 +ARGF4 +ADDRLP4 4 +INDIRF4 +ARGF4 +ADDRGP4 uiInfo+119476 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 uiInfo+228+61800 +ADDP4 +INDIRI4 +ARGI4 +ADDRGP4 UI_DrawHandlePic +CALLV +pop +line 1779 +;1779: trap_R_SetColor( NULL ); +CNSTP4 0 +ARGP4 +ADDRGP4 trap_R_SetColor +CALLV +pop +line 1780 +;1780:} +LABELV $1382 +endproc UI_DrawCrosshair 8 20 +proc UI_BuildPlayerList 4176 12 +line 1787 +;1781: +;1782:/* +;1783:=============== +;1784:UI_BuildPlayerList +;1785:=============== +;1786:*/ +;1787:static void UI_BuildPlayerList() { +line 1792 +;1788: uiClientState_t cs; +;1789: int n, count, team, team2, playerTeamNumber; +;1790: char info[MAX_INFO_STRING]; +;1791: +;1792: trap_GetClientState( &cs ); +ADDRLP4 1040 +ARGP4 +ADDRGP4 trap_GetClientState +CALLV +pop +line 1793 +;1793: trap_GetConfigString( CS_PLAYERS + cs.clientNum, info, MAX_INFO_STRING ); +ADDRLP4 1040+8 +INDIRI4 +CNSTI4 544 +ADDI4 +ARGI4 +ADDRLP4 4 +ARGP4 +CNSTI4 1024 +ARGI4 +ADDRGP4 trap_GetConfigString +CALLI4 +pop +line 1794 +;1794: uiInfo.playerNumber = cs.clientNum; +ADDRGP4 uiInfo+78864 +ADDRLP4 1040+8 +INDIRI4 +ASGNI4 +line 1795 +;1795: uiInfo.teamLeader = atoi(Info_ValueForKey(info, "tl")); +ADDRLP4 4 +ARGP4 +ADDRGP4 $1397 +ARGP4 +ADDRLP4 4128 +ADDRGP4 Info_ValueForKey +CALLP4 +ASGNP4 +ADDRLP4 4128 +INDIRP4 +ARGP4 +ADDRLP4 4132 +ADDRGP4 atoi +CALLI4 +ASGNI4 +ADDRGP4 uiInfo+78868 +ADDRLP4 4132 +INDIRI4 +ASGNI4 +line 1796 +;1796: team = atoi(Info_ValueForKey(info, "t")); +ADDRLP4 4 +ARGP4 +ADDRGP4 $1398 +ARGP4 +ADDRLP4 4136 +ADDRGP4 Info_ValueForKey +CALLP4 +ASGNP4 +ADDRLP4 4136 +INDIRP4 +ARGP4 +ADDRLP4 4140 +ADDRGP4 atoi +CALLI4 +ASGNI4 +ADDRLP4 1036 +ADDRLP4 4140 +INDIRI4 +ASGNI4 +line 1797 +;1797: trap_GetConfigString( CS_SERVERINFO, info, sizeof(info) ); +CNSTI4 0 +ARGI4 +ADDRLP4 4 +ARGP4 +CNSTI4 1024 +ARGI4 +ADDRGP4 trap_GetConfigString +CALLI4 +pop +line 1798 +;1798: count = atoi( Info_ValueForKey( info, "sv_maxclients" ) ); +ADDRLP4 4 +ARGP4 +ADDRGP4 $1399 +ARGP4 +ADDRLP4 4144 +ADDRGP4 Info_ValueForKey +CALLP4 +ASGNP4 +ADDRLP4 4144 +INDIRP4 +ARGP4 +ADDRLP4 4148 +ADDRGP4 atoi +CALLI4 +ASGNI4 +ADDRLP4 1028 +ADDRLP4 4148 +INDIRI4 +ASGNI4 +line 1799 +;1799: uiInfo.playerCount = 0; +ADDRGP4 uiInfo+78844 +CNSTI4 0 +ASGNI4 +line 1800 +;1800: uiInfo.myTeamCount = 0; +ADDRGP4 uiInfo+78848 +CNSTI4 0 +ASGNI4 +line 1801 +;1801: playerTeamNumber = 0; +ADDRLP4 4124 +CNSTI4 0 +ASGNI4 +line 1802 +;1802: for( n = 0; n < count; n++ ) { +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +ADDRGP4 $1405 +JUMPV +LABELV $1402 +line 1803 +;1803: trap_GetConfigString( CS_PLAYERS + n, info, MAX_INFO_STRING ); +ADDRLP4 0 +INDIRI4 +CNSTI4 544 +ADDI4 +ARGI4 +ADDRLP4 4 +ARGP4 +CNSTI4 1024 +ARGI4 +ADDRGP4 trap_GetConfigString +CALLI4 +pop +line 1805 +;1804: +;1805: if (info[0]) { +ADDRLP4 4 +INDIRI1 +CVII4 1 +CNSTI4 0 +EQI4 $1406 +line 1806 +;1806: Q_strncpyz( uiInfo.playerNames[uiInfo.playerCount], Info_ValueForKey( info, "n" ), MAX_NAME_LENGTH ); +ADDRLP4 4 +ARGP4 +ADDRGP4 $1410 +ARGP4 +ADDRLP4 4152 +ADDRGP4 Info_ValueForKey +CALLP4 +ASGNP4 +ADDRGP4 uiInfo+78844 +INDIRI4 +CNSTI4 5 +LSHI4 +ADDRGP4 uiInfo+78872 +ADDP4 +ARGP4 +ADDRLP4 4152 +INDIRP4 +ARGP4 +CNSTI4 32 +ARGI4 +ADDRGP4 Q_strncpyz +CALLV +pop +line 1807 +;1807: Q_CleanStr( uiInfo.playerNames[uiInfo.playerCount] ); +ADDRGP4 uiInfo+78844 +INDIRI4 +CNSTI4 5 +LSHI4 +ADDRGP4 uiInfo+78872 +ADDP4 +ARGP4 +ADDRGP4 Q_CleanStr +CALLP4 +pop +line 1808 +;1808: uiInfo.playerCount++; +ADDRLP4 4156 +ADDRGP4 uiInfo+78844 +ASGNP4 +ADDRLP4 4156 +INDIRP4 +ADDRLP4 4156 +INDIRP4 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 1809 +;1809: team2 = atoi(Info_ValueForKey(info, "t")); +ADDRLP4 4 +ARGP4 +ADDRGP4 $1398 +ARGP4 +ADDRLP4 4160 +ADDRGP4 Info_ValueForKey +CALLP4 +ASGNP4 +ADDRLP4 4160 +INDIRP4 +ARGP4 +ADDRLP4 4164 +ADDRGP4 atoi +CALLI4 +ASGNI4 +ADDRLP4 1032 +ADDRLP4 4164 +INDIRI4 +ASGNI4 +line 1810 +;1810: if (team2 == team) { +ADDRLP4 1032 +INDIRI4 +ADDRLP4 1036 +INDIRI4 +NEI4 $1414 +line 1811 +;1811: Q_strncpyz( uiInfo.teamNames[uiInfo.myTeamCount], Info_ValueForKey( info, "n" ), MAX_NAME_LENGTH ); +ADDRLP4 4 +ARGP4 +ADDRGP4 $1410 +ARGP4 +ADDRLP4 4168 +ADDRGP4 Info_ValueForKey +CALLP4 +ASGNP4 +ADDRGP4 uiInfo+78848 +INDIRI4 +CNSTI4 5 +LSHI4 +ADDRGP4 uiInfo+80920 +ADDP4 +ARGP4 +ADDRLP4 4168 +INDIRP4 +ARGP4 +CNSTI4 32 +ARGI4 +ADDRGP4 Q_strncpyz +CALLV +pop +line 1812 +;1812: Q_CleanStr( uiInfo.teamNames[uiInfo.myTeamCount] ); +ADDRGP4 uiInfo+78848 +INDIRI4 +CNSTI4 5 +LSHI4 +ADDRGP4 uiInfo+80920 +ADDP4 +ARGP4 +ADDRGP4 Q_CleanStr +CALLP4 +pop +line 1813 +;1813: uiInfo.teamClientNums[uiInfo.myTeamCount] = n; +ADDRGP4 uiInfo+78848 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 uiInfo+82968 +ADDP4 +ADDRLP4 0 +INDIRI4 +ASGNI4 +line 1814 +;1814: if (uiInfo.playerNumber == n) { +ADDRGP4 uiInfo+78864 +INDIRI4 +ADDRLP4 0 +INDIRI4 +NEI4 $1422 +line 1815 +;1815: playerTeamNumber = uiInfo.myTeamCount; +ADDRLP4 4124 +ADDRGP4 uiInfo+78848 +INDIRI4 +ASGNI4 +line 1816 +;1816: } +LABELV $1422 +line 1817 +;1817: uiInfo.myTeamCount++; +ADDRLP4 4172 +ADDRGP4 uiInfo+78848 +ASGNP4 +ADDRLP4 4172 +INDIRP4 +ADDRLP4 4172 +INDIRP4 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 1818 +;1818: } +LABELV $1414 +line 1819 +;1819: } +LABELV $1406 +line 1820 +;1820: } +LABELV $1403 +line 1802 +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +LABELV $1405 +ADDRLP4 0 +INDIRI4 +ADDRLP4 1028 +INDIRI4 +LTI4 $1402 +line 1822 +;1821: +;1822: if (!uiInfo.teamLeader) { +ADDRGP4 uiInfo+78868 +INDIRI4 +CNSTI4 0 +NEI4 $1427 +line 1823 +;1823: trap_Cvar_Set("cg_selectedPlayer", va("%d", playerTeamNumber)); +ADDRGP4 $716 +ARGP4 +ADDRLP4 4124 +INDIRI4 +ARGI4 +ADDRLP4 4152 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRGP4 $1430 +ARGP4 +ADDRLP4 4152 +INDIRP4 +ARGP4 +ADDRGP4 trap_Cvar_Set +CALLV +pop +line 1824 +;1824: } +LABELV $1427 +line 1826 +;1825: +;1826: n = trap_Cvar_VariableValue("cg_selectedPlayer"); +ADDRGP4 $1430 +ARGP4 +ADDRLP4 4152 +ADDRGP4 trap_Cvar_VariableValue +CALLF4 +ASGNF4 +ADDRLP4 0 +ADDRLP4 4152 +INDIRF4 +CVFI4 4 +ASGNI4 +line 1827 +;1827: if (n < 0 || n > uiInfo.myTeamCount) { +ADDRLP4 0 +INDIRI4 +CNSTI4 0 +LTI4 $1434 +ADDRLP4 0 +INDIRI4 +ADDRGP4 uiInfo+78848 +INDIRI4 +LEI4 $1431 +LABELV $1434 +line 1828 +;1828: n = 0; +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +line 1829 +;1829: } +LABELV $1431 +line 1830 +;1830: if (n < uiInfo.myTeamCount) { +ADDRLP4 0 +INDIRI4 +ADDRGP4 uiInfo+78848 +INDIRI4 +GEI4 $1435 +line 1831 +;1831: trap_Cvar_Set("cg_selectedPlayerName", uiInfo.teamNames[n]); +ADDRGP4 $1438 +ARGP4 +ADDRLP4 0 +INDIRI4 +CNSTI4 5 +LSHI4 +ADDRGP4 uiInfo+80920 +ADDP4 +ARGP4 +ADDRGP4 trap_Cvar_Set +CALLV +pop +line 1832 +;1832: } +LABELV $1435 +line 1833 +;1833:} +LABELV $1392 +endproc UI_BuildPlayerList 4176 12 +proc UI_DrawSelectedPlayer 16 32 +line 1836 +;1834: +;1835: +;1836:static void UI_DrawSelectedPlayer(rectDef_t *rect, float scale, vec4_t color, int textStyle) { +line 1837 +;1837: if (uiInfo.uiDC.realTime > uiInfo.playerRefresh) { +ADDRGP4 uiInfo+208 +INDIRI4 +ADDRGP4 uiInfo+78856 +INDIRI4 +LEI4 $1441 +line 1838 +;1838: uiInfo.playerRefresh = uiInfo.uiDC.realTime + 3000; +ADDRGP4 uiInfo+78856 +ADDRGP4 uiInfo+208 +INDIRI4 +CNSTI4 3000 +ADDI4 +ASGNI4 +line 1839 +;1839: UI_BuildPlayerList(); +ADDRGP4 UI_BuildPlayerList +CALLV +pop +line 1840 +;1840: } +LABELV $1441 +line 1841 +;1841: Text_Paint(rect->x, rect->y, scale, color, (uiInfo.teamLeader) ? UI_Cvar_VariableString("cg_selectedPlayerName") : UI_Cvar_VariableString("name") , 0, 0, textStyle); +ADDRGP4 uiInfo+78868 +INDIRI4 +CNSTI4 0 +EQI4 $1450 +ADDRGP4 $1438 +ARGP4 +ADDRLP4 4 +ADDRGP4 UI_Cvar_VariableString +CALLP4 +ASGNP4 +ADDRLP4 0 +ADDRLP4 4 +INDIRP4 +ASGNP4 +ADDRGP4 $1451 +JUMPV +LABELV $1450 +ADDRGP4 $1448 +ARGP4 +ADDRLP4 8 +ADDRGP4 UI_Cvar_VariableString +CALLP4 +ASGNP4 +ADDRLP4 0 +ADDRLP4 8 +INDIRP4 +ASGNP4 +LABELV $1451 +ADDRLP4 12 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 12 +INDIRP4 +INDIRF4 +ARGF4 +ADDRLP4 12 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRF4 +ARGF4 +ADDRFP4 4 +INDIRF4 +ARGF4 +ADDRFP4 8 +INDIRP4 +ARGP4 +ADDRLP4 0 +INDIRP4 +ARGP4 +CNSTF4 0 +ARGF4 +CNSTI4 0 +ARGI4 +ADDRFP4 12 +INDIRI4 +ARGI4 +ADDRGP4 Text_Paint +CALLV +pop +line 1842 +;1842:} +LABELV $1440 +endproc UI_DrawSelectedPlayer 16 32 +proc UI_DrawServerRefreshDate 80 32 +line 1844 +;1843: +;1844:static void UI_DrawServerRefreshDate(rectDef_t *rect, float scale, vec4_t color, int textStyle) { +line 1845 +;1845: if (uiInfo.serverStatus.refreshActive) { +ADDRGP4 uiInfo+99264+2212 +INDIRI4 +CNSTI4 0 +EQI4 $1453 +line 1847 +;1846: vec4_t lowLight, newColor; +;1847: lowLight[0] = 0.8 * color[0]; +ADDRLP4 0 +CNSTF4 1061997773 +ADDRFP4 8 +INDIRP4 +INDIRF4 +MULF4 +ASGNF4 +line 1848 +;1848: lowLight[1] = 0.8 * color[1]; +ADDRLP4 0+4 +CNSTF4 1061997773 +ADDRFP4 8 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRF4 +MULF4 +ASGNF4 +line 1849 +;1849: lowLight[2] = 0.8 * color[2]; +ADDRLP4 0+8 +CNSTF4 1061997773 +ADDRFP4 8 +INDIRP4 +CNSTI4 8 +ADDP4 +INDIRF4 +MULF4 +ASGNF4 +line 1850 +;1850: lowLight[3] = 0.8 * color[3]; +ADDRLP4 0+12 +CNSTF4 1061997773 +ADDRFP4 8 +INDIRP4 +CNSTI4 12 +ADDP4 +INDIRF4 +MULF4 +ASGNF4 +line 1851 +;1851: LerpColor(color,lowLight,newColor,0.5+0.5*sin(uiInfo.uiDC.realTime / PULSE_DIVISOR)); +ADDRGP4 uiInfo+208 +INDIRI4 +CNSTI4 75 +DIVI4 +CVIF4 4 +ARGF4 +ADDRLP4 32 +ADDRGP4 sin +CALLF4 +ASGNF4 +ADDRFP4 8 +INDIRP4 +ARGP4 +ADDRLP4 0 +ARGP4 +ADDRLP4 16 +ARGP4 +CNSTF4 1056964608 +ADDRLP4 32 +INDIRF4 +MULF4 +CNSTF4 1056964608 +ADDF4 +ARGF4 +ADDRGP4 LerpColor +CALLV +pop +line 1852 +;1852: Text_Paint(rect->x, rect->y, scale, newColor, va("Getting info for %d servers (ESC to cancel)", trap_LAN_GetServerCount(ui_netSource.integer)), 0, 0, textStyle); +ADDRGP4 ui_netSource+12 +INDIRI4 +ARGI4 +ADDRLP4 36 +ADDRGP4 trap_LAN_GetServerCount +CALLI4 +ASGNI4 +ADDRGP4 $1461 +ARGP4 +ADDRLP4 36 +INDIRI4 +ARGI4 +ADDRLP4 40 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRLP4 44 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 44 +INDIRP4 +INDIRF4 +ARGF4 +ADDRLP4 44 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRF4 +ARGF4 +ADDRFP4 4 +INDIRF4 +ARGF4 +ADDRLP4 16 +ARGP4 +ADDRLP4 40 +INDIRP4 +ARGP4 +CNSTF4 0 +ARGF4 +CNSTI4 0 +ARGI4 +ADDRFP4 12 +INDIRI4 +ARGI4 +ADDRGP4 Text_Paint +CALLV +pop +line 1853 +;1853: } else { +ADDRGP4 $1454 +JUMPV +LABELV $1453 +line 1855 +;1854: char buff[64]; +;1855: Q_strncpyz(buff, UI_Cvar_VariableString(va("ui_lastServerRefresh_%i", ui_netSource.integer)), 64); +ADDRGP4 $1353 +ARGP4 +ADDRGP4 ui_netSource+12 +INDIRI4 +ARGI4 +ADDRLP4 64 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRLP4 64 +INDIRP4 +ARGP4 +ADDRLP4 68 +ADDRGP4 UI_Cvar_VariableString +CALLP4 +ASGNP4 +ADDRLP4 0 +ARGP4 +ADDRLP4 68 +INDIRP4 +ARGP4 +CNSTI4 64 +ARGI4 +ADDRGP4 Q_strncpyz +CALLV +pop +line 1856 +;1856: Text_Paint(rect->x, rect->y, scale, color, va("Refresh Time: %s", buff), 0, 0, textStyle); +ADDRGP4 $1464 +ARGP4 +ADDRLP4 0 +ARGP4 +ADDRLP4 72 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRLP4 76 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 76 +INDIRP4 +INDIRF4 +ARGF4 +ADDRLP4 76 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRF4 +ARGF4 +ADDRFP4 4 +INDIRF4 +ARGF4 +ADDRFP4 8 +INDIRP4 +ARGP4 +ADDRLP4 72 +INDIRP4 +ARGP4 +CNSTF4 0 +ARGF4 +CNSTI4 0 +ARGI4 +ADDRFP4 12 +INDIRI4 +ARGI4 +ADDRGP4 Text_Paint +CALLV +pop +line 1857 +;1857: } +LABELV $1454 +line 1858 +;1858:} +LABELV $1452 +endproc UI_DrawServerRefreshDate 80 32 +proc UI_DrawServerMOTD 24 32 +line 1860 +;1859: +;1860:static void UI_DrawServerMOTD(rectDef_t *rect, float scale, vec4_t color) { +line 1861 +;1861: if (uiInfo.serverStatus.motdLen) { +ADDRGP4 uiInfo+99264+10436 +INDIRI4 +CNSTI4 0 +EQI4 $1466 +line 1864 +;1862: float maxX; +;1863: +;1864: if (uiInfo.serverStatus.motdWidth == -1) { +ADDRGP4 uiInfo+99264+10440 +INDIRI4 +CNSTI4 -1 +NEI4 $1470 +line 1865 +;1865: uiInfo.serverStatus.motdWidth = 0; +ADDRGP4 uiInfo+99264+10440 +CNSTI4 0 +ASGNI4 +line 1866 +;1866: uiInfo.serverStatus.motdPaintX = rect->x + 1; +ADDRGP4 uiInfo+99264+10444 +ADDRFP4 0 +INDIRP4 +INDIRF4 +CNSTF4 1065353216 +ADDF4 +CVFI4 4 +ASGNI4 +line 1867 +;1867: uiInfo.serverStatus.motdPaintX2 = -1; +ADDRGP4 uiInfo+99264+10448 +CNSTI4 -1 +ASGNI4 +line 1868 +;1868: } +LABELV $1470 +line 1870 +;1869: +;1870: if (uiInfo.serverStatus.motdOffset > uiInfo.serverStatus.motdLen) { +ADDRGP4 uiInfo+99264+10452 +INDIRI4 +ADDRGP4 uiInfo+99264+10436 +INDIRI4 +LEI4 $1480 +line 1871 +;1871: uiInfo.serverStatus.motdOffset = 0; +ADDRGP4 uiInfo+99264+10452 +CNSTI4 0 +ASGNI4 +line 1872 +;1872: uiInfo.serverStatus.motdPaintX = rect->x + 1; +ADDRGP4 uiInfo+99264+10444 +ADDRFP4 0 +INDIRP4 +INDIRF4 +CNSTF4 1065353216 +ADDF4 +CVFI4 4 +ASGNI4 +line 1873 +;1873: uiInfo.serverStatus.motdPaintX2 = -1; +ADDRGP4 uiInfo+99264+10448 +CNSTI4 -1 +ASGNI4 +line 1874 +;1874: } +LABELV $1480 +line 1876 +;1875: +;1876: if (uiInfo.uiDC.realTime > uiInfo.serverStatus.motdTime) { +ADDRGP4 uiInfo+208 +INDIRI4 +ADDRGP4 uiInfo+99264+10456 +INDIRI4 +LEI4 $1492 +line 1877 +;1877: uiInfo.serverStatus.motdTime = uiInfo.uiDC.realTime + 10; +ADDRGP4 uiInfo+99264+10456 +ADDRGP4 uiInfo+208 +INDIRI4 +CNSTI4 10 +ADDI4 +ASGNI4 +line 1878 +;1878: if (uiInfo.serverStatus.motdPaintX <= rect->x + 2) { +ADDRGP4 uiInfo+99264+10444 +INDIRI4 +CVIF4 4 +ADDRFP4 0 +INDIRP4 +INDIRF4 +CNSTF4 1073741824 +ADDF4 +GTF4 $1500 +line 1879 +;1879: if (uiInfo.serverStatus.motdOffset < uiInfo.serverStatus.motdLen) { +ADDRGP4 uiInfo+99264+10452 +INDIRI4 +ADDRGP4 uiInfo+99264+10436 +INDIRI4 +GEI4 $1504 +line 1880 +;1880: uiInfo.serverStatus.motdPaintX += Text_Width(&uiInfo.serverStatus.motd[uiInfo.serverStatus.motdOffset], scale, 1) - 1; +ADDRGP4 uiInfo+99264+10452 +INDIRI4 +ADDRGP4 uiInfo+99264+10460 +ADDP4 +ARGP4 +ADDRFP4 4 +INDIRF4 +ARGF4 +CNSTI4 1 +ARGI4 +ADDRLP4 4 +ADDRGP4 Text_Width +CALLI4 +ASGNI4 +ADDRLP4 8 +ADDRGP4 uiInfo+99264+10444 +ASGNP4 +ADDRLP4 8 +INDIRP4 +ADDRLP4 8 +INDIRP4 +INDIRI4 +ADDRLP4 4 +INDIRI4 +CNSTI4 1 +SUBI4 +ADDI4 +ASGNI4 +line 1881 +;1881: uiInfo.serverStatus.motdOffset++; +ADDRLP4 12 +ADDRGP4 uiInfo+99264+10452 +ASGNP4 +ADDRLP4 12 +INDIRP4 +ADDRLP4 12 +INDIRP4 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 1882 +;1882: } else { +ADDRGP4 $1501 +JUMPV +LABELV $1504 +line 1883 +;1883: uiInfo.serverStatus.motdOffset = 0; +ADDRGP4 uiInfo+99264+10452 +CNSTI4 0 +ASGNI4 +line 1884 +;1884: if (uiInfo.serverStatus.motdPaintX2 >= 0) { +ADDRGP4 uiInfo+99264+10448 +INDIRI4 +CNSTI4 0 +LTI4 $1520 +line 1885 +;1885: uiInfo.serverStatus.motdPaintX = uiInfo.serverStatus.motdPaintX2; +ADDRGP4 uiInfo+99264+10444 +ADDRGP4 uiInfo+99264+10448 +INDIRI4 +ASGNI4 +line 1886 +;1886: } else { +ADDRGP4 $1521 +JUMPV +LABELV $1520 +line 1887 +;1887: uiInfo.serverStatus.motdPaintX = rect->x + rect->w - 2; +ADDRLP4 4 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRGP4 uiInfo+99264+10444 +ADDRLP4 4 +INDIRP4 +INDIRF4 +ADDRLP4 4 +INDIRP4 +CNSTI4 8 +ADDP4 +INDIRF4 +ADDF4 +CNSTF4 1073741824 +SUBF4 +CVFI4 4 +ASGNI4 +line 1888 +;1888: } +LABELV $1521 +line 1889 +;1889: uiInfo.serverStatus.motdPaintX2 = -1; +ADDRGP4 uiInfo+99264+10448 +CNSTI4 -1 +ASGNI4 +line 1890 +;1890: } +line 1891 +;1891: } else { +ADDRGP4 $1501 +JUMPV +LABELV $1500 +line 1893 +;1892: //serverStatus.motdPaintX--; +;1893: uiInfo.serverStatus.motdPaintX -= 2; +ADDRLP4 4 +ADDRGP4 uiInfo+99264+10444 +ASGNP4 +ADDRLP4 4 +INDIRP4 +ADDRLP4 4 +INDIRP4 +INDIRI4 +CNSTI4 2 +SUBI4 +ASGNI4 +line 1894 +;1894: if (uiInfo.serverStatus.motdPaintX2 >= 0) { +ADDRGP4 uiInfo+99264+10448 +INDIRI4 +CNSTI4 0 +LTI4 $1534 +line 1896 +;1895: //serverStatus.motdPaintX2--; +;1896: uiInfo.serverStatus.motdPaintX2 -= 2; +ADDRLP4 8 +ADDRGP4 uiInfo+99264+10448 +ASGNP4 +ADDRLP4 8 +INDIRP4 +ADDRLP4 8 +INDIRP4 +INDIRI4 +CNSTI4 2 +SUBI4 +ASGNI4 +line 1897 +;1897: } +LABELV $1534 +line 1898 +;1898: } +LABELV $1501 +line 1899 +;1899: } +LABELV $1492 +line 1901 +;1900: +;1901: maxX = rect->x + rect->w - 2; +ADDRLP4 4 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 0 +ADDRLP4 4 +INDIRP4 +INDIRF4 +ADDRLP4 4 +INDIRP4 +CNSTI4 8 +ADDP4 +INDIRF4 +ADDF4 +CNSTF4 1073741824 +SUBF4 +ASGNF4 +line 1902 +;1902: Text_Paint_Limit(&maxX, uiInfo.serverStatus.motdPaintX, rect->y + rect->h - 3, scale, color, &uiInfo.serverStatus.motd[uiInfo.serverStatus.motdOffset], 0, 0); +ADDRLP4 0 +ARGP4 +ADDRGP4 uiInfo+99264+10444 +INDIRI4 +CVIF4 4 +ARGF4 +ADDRLP4 8 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 8 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRF4 +ADDRLP4 8 +INDIRP4 +CNSTI4 12 +ADDP4 +INDIRF4 +ADDF4 +CNSTF4 1077936128 +SUBF4 +ARGF4 +ADDRFP4 4 +INDIRF4 +ARGF4 +ADDRFP4 8 +INDIRP4 +ARGP4 +ADDRGP4 uiInfo+99264+10452 +INDIRI4 +ADDRGP4 uiInfo+99264+10460 +ADDP4 +ARGP4 +CNSTF4 0 +ARGF4 +CNSTI4 0 +ARGI4 +ADDRGP4 Text_Paint_Limit +CALLV +pop +line 1903 +;1903: if (uiInfo.serverStatus.motdPaintX2 >= 0) { +ADDRGP4 uiInfo+99264+10448 +INDIRI4 +CNSTI4 0 +LTI4 $1546 +line 1904 +;1904: float maxX2 = rect->x + rect->w - 2; +ADDRLP4 16 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 12 +ADDRLP4 16 +INDIRP4 +INDIRF4 +ADDRLP4 16 +INDIRP4 +CNSTI4 8 +ADDP4 +INDIRF4 +ADDF4 +CNSTF4 1073741824 +SUBF4 +ASGNF4 +line 1905 +;1905: Text_Paint_Limit(&maxX2, uiInfo.serverStatus.motdPaintX2, rect->y + rect->h - 3, scale, color, uiInfo.serverStatus.motd, 0, uiInfo.serverStatus.motdOffset); +ADDRLP4 12 +ARGP4 +ADDRGP4 uiInfo+99264+10448 +INDIRI4 +CVIF4 4 +ARGF4 +ADDRLP4 20 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 20 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRF4 +ADDRLP4 20 +INDIRP4 +CNSTI4 12 +ADDP4 +INDIRF4 +ADDF4 +CNSTF4 1077936128 +SUBF4 +ARGF4 +ADDRFP4 4 +INDIRF4 +ARGF4 +ADDRFP4 8 +INDIRP4 +ARGP4 +ADDRGP4 uiInfo+99264+10460 +ARGP4 +CNSTF4 0 +ARGF4 +ADDRGP4 uiInfo+99264+10452 +INDIRI4 +ARGI4 +ADDRGP4 Text_Paint_Limit +CALLV +pop +line 1906 +;1906: } +LABELV $1546 +line 1907 +;1907: if (uiInfo.serverStatus.motdOffset && maxX > 0) { +ADDRGP4 uiInfo+99264+10452 +INDIRI4 +CNSTI4 0 +EQI4 $1556 +ADDRLP4 0 +INDIRF4 +CNSTF4 0 +LEF4 $1556 +line 1909 +;1908: // if we have an offset ( we are skipping the first part of the string ) and we fit the string +;1909: if (uiInfo.serverStatus.motdPaintX2 == -1) { +ADDRGP4 uiInfo+99264+10448 +INDIRI4 +CNSTI4 -1 +NEI4 $1557 +line 1910 +;1910: uiInfo.serverStatus.motdPaintX2 = rect->x + rect->w - 2; +ADDRLP4 12 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRGP4 uiInfo+99264+10448 +ADDRLP4 12 +INDIRP4 +INDIRF4 +ADDRLP4 12 +INDIRP4 +CNSTI4 8 +ADDP4 +INDIRF4 +ADDF4 +CNSTF4 1073741824 +SUBF4 +CVFI4 4 +ASGNI4 +line 1911 +;1911: } +line 1912 +;1912: } else { +ADDRGP4 $1557 +JUMPV +LABELV $1556 +line 1913 +;1913: uiInfo.serverStatus.motdPaintX2 = -1; +ADDRGP4 uiInfo+99264+10448 +CNSTI4 -1 +ASGNI4 +line 1914 +;1914: } +LABELV $1557 +line 1916 +;1915: +;1916: } +LABELV $1466 +line 1917 +;1917:} +LABELV $1465 +endproc UI_DrawServerMOTD 24 32 +proc UI_DrawKeyBindStatus 8 32 +line 1919 +;1918: +;1919:static void UI_DrawKeyBindStatus(rectDef_t *rect, float scale, vec4_t color, int textStyle) { +line 1921 +;1920:// int ofs = 0; TTimo: unused +;1921: if (Display_KeyBindPending()) { +ADDRLP4 0 +ADDRGP4 Display_KeyBindPending +CALLI4 +ASGNI4 +ADDRLP4 0 +INDIRI4 +CNSTI4 0 +EQI4 $1569 +line 1922 +;1922: Text_Paint(rect->x, rect->y, scale, color, "Waiting for new key... Press ESCAPE to cancel", 0, 0, textStyle); +ADDRLP4 4 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 4 +INDIRP4 +INDIRF4 +ARGF4 +ADDRLP4 4 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRF4 +ARGF4 +ADDRFP4 4 +INDIRF4 +ARGF4 +ADDRFP4 8 +INDIRP4 +ARGP4 +ADDRGP4 $1350 +ARGP4 +CNSTF4 0 +ARGF4 +CNSTI4 0 +ARGI4 +ADDRFP4 12 +INDIRI4 +ARGI4 +ADDRGP4 Text_Paint +CALLV +pop +line 1923 +;1923: } else { +ADDRGP4 $1570 +JUMPV +LABELV $1569 +line 1924 +;1924: Text_Paint(rect->x, rect->y, scale, color, "Press ENTER or CLICK to change, Press BACKSPACE to clear", 0, 0, textStyle); +ADDRLP4 4 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 4 +INDIRP4 +INDIRF4 +ARGF4 +ADDRLP4 4 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRF4 +ARGF4 +ADDRFP4 4 +INDIRF4 +ARGF4 +ADDRFP4 8 +INDIRP4 +ARGP4 +ADDRGP4 $1351 +ARGP4 +CNSTF4 0 +ARGF4 +CNSTI4 0 +ARGI4 +ADDRFP4 12 +INDIRI4 +ARGI4 +ADDRGP4 Text_Paint +CALLV +pop +line 1925 +;1925: } +LABELV $1570 +line 1926 +;1926:} +LABELV $1568 +endproc UI_DrawKeyBindStatus 8 32 +proc UI_DrawGLInfo 4408 32 +line 1928 +;1927: +;1928:static void UI_DrawGLInfo(rectDef_t *rect, float scale, vec4_t color, int textStyle) { +line 1934 +;1929: char * eptr; +;1930: char buff[4096]; +;1931: const char *lines[64]; +;1932: int y, numLines, i; +;1933: +;1934: Text_Paint(rect->x + 2, rect->y, scale, color, va("VENDOR: %s", uiInfo.uiDC.glconfig.vendor_string), 0, 30, textStyle); +ADDRGP4 $1572 +ARGP4 +ADDRGP4 uiInfo+62068+1024 +ARGP4 +ADDRLP4 4368 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRLP4 4372 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 4372 +INDIRP4 +INDIRF4 +CNSTF4 1073741824 +ADDF4 +ARGF4 +ADDRLP4 4372 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRF4 +ARGF4 +ADDRFP4 4 +INDIRF4 +ARGF4 +ADDRFP4 8 +INDIRP4 +ARGP4 +ADDRLP4 4368 +INDIRP4 +ARGP4 +CNSTF4 0 +ARGF4 +CNSTI4 30 +ARGI4 +ADDRFP4 12 +INDIRI4 +ARGI4 +ADDRGP4 Text_Paint +CALLV +pop +line 1935 +;1935: Text_Paint(rect->x + 2, rect->y + 15, scale, color, va("VERSION: %s: %s", uiInfo.uiDC.glconfig.version_string,uiInfo.uiDC.glconfig.renderer_string), 0, 30, textStyle); +ADDRGP4 $1575 +ARGP4 +ADDRGP4 uiInfo+62068+2048 +ARGP4 +ADDRGP4 uiInfo+62068 +ARGP4 +ADDRLP4 4376 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRLP4 4380 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 4380 +INDIRP4 +INDIRF4 +CNSTF4 1073741824 +ADDF4 +ARGF4 +ADDRLP4 4380 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRF4 +CNSTF4 1097859072 +ADDF4 +ARGF4 +ADDRFP4 4 +INDIRF4 +ARGF4 +ADDRFP4 8 +INDIRP4 +ARGP4 +ADDRLP4 4376 +INDIRP4 +ARGP4 +CNSTF4 0 +ARGF4 +CNSTI4 30 +ARGI4 +ADDRFP4 12 +INDIRI4 +ARGI4 +ADDRGP4 Text_Paint +CALLV +pop +line 1936 +;1936: Text_Paint(rect->x + 2, rect->y + 30, scale, color, va ("PIXELFORMAT: color(%d-bits) Z(%d-bits) stencil(%d-bits)", uiInfo.uiDC.glconfig.colorBits, uiInfo.uiDC.glconfig.depthBits, uiInfo.uiDC.glconfig.stencilBits), 0, 30, textStyle); +ADDRGP4 $1579 +ARGP4 +ADDRGP4 uiInfo+62068+11272 +INDIRI4 +ARGI4 +ADDRGP4 uiInfo+62068+11276 +INDIRI4 +ARGI4 +ADDRGP4 uiInfo+62068+11280 +INDIRI4 +ARGI4 +ADDRLP4 4384 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRLP4 4388 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 4388 +INDIRP4 +INDIRF4 +CNSTF4 1073741824 +ADDF4 +ARGF4 +ADDRLP4 4388 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRF4 +CNSTF4 1106247680 +ADDF4 +ARGF4 +ADDRFP4 4 +INDIRF4 +ARGF4 +ADDRFP4 8 +INDIRP4 +ARGP4 +ADDRLP4 4384 +INDIRP4 +ARGP4 +CNSTF4 0 +ARGF4 +CNSTI4 30 +ARGI4 +ADDRFP4 12 +INDIRI4 +ARGI4 +ADDRGP4 Text_Paint +CALLV +pop +line 1939 +;1937: +;1938: // build null terminated extension strings +;1939: Q_strncpyz(buff, uiInfo.uiDC.glconfig.extensions_string, 4096); +ADDRLP4 272 +ARGP4 +ADDRGP4 uiInfo+62068+3072 +ARGP4 +CNSTI4 4096 +ARGI4 +ADDRGP4 Q_strncpyz +CALLV +pop +line 1940 +;1940: eptr = buff; +ADDRLP4 0 +ADDRLP4 272 +ASGNP4 +line 1941 +;1941: y = rect->y + 45; +ADDRLP4 4 +ADDRFP4 0 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRF4 +CNSTF4 1110704128 +ADDF4 +CVFI4 4 +ASGNI4 +line 1942 +;1942: numLines = 0; +ADDRLP4 12 +CNSTI4 0 +ASGNI4 +ADDRGP4 $1589 +JUMPV +line 1944 +;1943: while ( y < rect->y + rect->h && *eptr ) +;1944: { +LABELV $1591 +line 1946 +;1945: while ( *eptr && *eptr == ' ' ) +;1946: *eptr++ = '\0'; +ADDRLP4 4392 +ADDRLP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 0 +ADDRLP4 4392 +INDIRP4 +CNSTI4 1 +ADDP4 +ASGNP4 +ADDRLP4 4392 +INDIRP4 +CNSTI1 0 +ASGNI1 +LABELV $1592 +line 1945 +ADDRLP4 4396 +ADDRLP4 0 +INDIRP4 +INDIRI1 +CVII4 1 +ASGNI4 +ADDRLP4 4396 +INDIRI4 +CNSTI4 0 +EQI4 $1594 +ADDRLP4 4396 +INDIRI4 +CNSTI4 32 +EQI4 $1591 +LABELV $1594 +line 1949 +;1947: +;1948: // track start of valid string +;1949: if (*eptr && *eptr != ' ') { +ADDRLP4 4400 +ADDRLP4 0 +INDIRP4 +INDIRI1 +CVII4 1 +ASGNI4 +ADDRLP4 4400 +INDIRI4 +CNSTI4 0 +EQI4 $1598 +ADDRLP4 4400 +INDIRI4 +CNSTI4 32 +EQI4 $1598 +line 1950 +;1950: lines[numLines++] = eptr; +ADDRLP4 4404 +ADDRLP4 12 +INDIRI4 +ASGNI4 +ADDRLP4 12 +ADDRLP4 4404 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +ADDRLP4 4404 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRLP4 16 +ADDP4 +ADDRLP4 0 +INDIRP4 +ASGNP4 +line 1951 +;1951: } +ADDRGP4 $1598 +JUMPV +LABELV $1597 +line 1954 +;1952: +;1953: while ( *eptr && *eptr != ' ' ) +;1954: eptr++; +ADDRLP4 0 +ADDRLP4 0 +INDIRP4 +CNSTI4 1 +ADDP4 +ASGNP4 +LABELV $1598 +line 1953 +ADDRLP4 4404 +ADDRLP4 0 +INDIRP4 +INDIRI1 +CVII4 1 +ASGNI4 +ADDRLP4 4404 +INDIRI4 +CNSTI4 0 +EQI4 $1600 +ADDRLP4 4404 +INDIRI4 +CNSTI4 32 +NEI4 $1597 +LABELV $1600 +line 1955 +;1955: } +LABELV $1589 +line 1943 +ADDRLP4 4392 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 4 +INDIRI4 +CVIF4 4 +ADDRLP4 4392 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRF4 +ADDRLP4 4392 +INDIRP4 +CNSTI4 12 +ADDP4 +INDIRF4 +ADDF4 +GEF4 $1601 +ADDRLP4 0 +INDIRP4 +INDIRI1 +CVII4 1 +CNSTI4 0 +NEI4 $1592 +LABELV $1601 +line 1957 +;1956: +;1957: i = 0; +ADDRLP4 8 +CNSTI4 0 +ASGNI4 +ADDRGP4 $1603 +JUMPV +LABELV $1602 +line 1958 +;1958: while (i < numLines) { +line 1959 +;1959: Text_Paint(rect->x + 2, y, scale, color, lines[i++], 0, 20, textStyle); +ADDRFP4 0 +INDIRP4 +INDIRF4 +CNSTF4 1073741824 +ADDF4 +ARGF4 +ADDRLP4 4 +INDIRI4 +CVIF4 4 +ARGF4 +ADDRFP4 4 +INDIRF4 +ARGF4 +ADDRFP4 8 +INDIRP4 +ARGP4 +ADDRLP4 4396 +ADDRLP4 8 +INDIRI4 +ASGNI4 +ADDRLP4 8 +ADDRLP4 4396 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +ADDRLP4 4396 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRLP4 16 +ADDP4 +INDIRP4 +ARGP4 +CNSTF4 0 +ARGF4 +CNSTI4 20 +ARGI4 +ADDRFP4 12 +INDIRI4 +ARGI4 +ADDRGP4 Text_Paint +CALLV +pop +line 1960 +;1960: if (i < numLines) { +ADDRLP4 8 +INDIRI4 +ADDRLP4 12 +INDIRI4 +GEI4 $1605 +line 1961 +;1961: Text_Paint(rect->x + rect->w / 2, y, scale, color, lines[i++], 0, 20, textStyle); +ADDRLP4 4404 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 4404 +INDIRP4 +INDIRF4 +ADDRLP4 4404 +INDIRP4 +CNSTI4 8 +ADDP4 +INDIRF4 +CNSTF4 1073741824 +DIVF4 +ADDF4 +ARGF4 +ADDRLP4 4 +INDIRI4 +CVIF4 4 +ARGF4 +ADDRFP4 4 +INDIRF4 +ARGF4 +ADDRFP4 8 +INDIRP4 +ARGP4 +ADDRLP4 4400 +ADDRLP4 8 +INDIRI4 +ASGNI4 +ADDRLP4 8 +ADDRLP4 4400 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +ADDRLP4 4400 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRLP4 16 +ADDP4 +INDIRP4 +ARGP4 +CNSTF4 0 +ARGF4 +CNSTI4 20 +ARGI4 +ADDRFP4 12 +INDIRI4 +ARGI4 +ADDRGP4 Text_Paint +CALLV +pop +line 1962 +;1962: } +LABELV $1605 +line 1963 +;1963: y += 10; +ADDRLP4 4 +ADDRLP4 4 +INDIRI4 +CNSTI4 10 +ADDI4 +ASGNI4 +line 1964 +;1964: if (y > rect->y + rect->h - 11) { +ADDRLP4 4400 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 4 +INDIRI4 +CVIF4 4 +ADDRLP4 4400 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRF4 +ADDRLP4 4400 +INDIRP4 +CNSTI4 12 +ADDP4 +INDIRF4 +ADDF4 +CNSTF4 1093664768 +SUBF4 +LEF4 $1607 +line 1965 +;1965: break; +ADDRGP4 $1604 +JUMPV +LABELV $1607 +line 1967 +;1966: } +;1967: } +LABELV $1603 +line 1958 +ADDRLP4 8 +INDIRI4 +ADDRLP4 12 +INDIRI4 +LTI4 $1602 +LABELV $1604 +line 1970 +;1968: +;1969: +;1970:} +LABELV $1571 +endproc UI_DrawGLInfo 4408 32 +proc UI_OwnerDraw 24 24 +line 1974 +;1971: +;1972:// FIXME: table drive +;1973:// +;1974:static void UI_OwnerDraw(float x, float y, float w, float h, float text_x, float text_y, int ownerDraw, int ownerDrawFlags, int align, float special, float scale, vec4_t color, qhandle_t shader, int textStyle) { +line 1977 +;1975: rectDef_t rect; +;1976: +;1977: rect.x = x + text_x; +ADDRLP4 0 +ADDRFP4 0 +INDIRF4 +ADDRFP4 16 +INDIRF4 +ADDF4 +ASGNF4 +line 1978 +;1978: rect.y = y + text_y; +ADDRLP4 0+4 +ADDRFP4 4 +INDIRF4 +ADDRFP4 20 +INDIRF4 +ADDF4 +ASGNF4 +line 1979 +;1979: rect.w = w; +ADDRLP4 0+8 +ADDRFP4 8 +INDIRF4 +ASGNF4 +line 1980 +;1980: rect.h = h; +ADDRLP4 0+12 +ADDRFP4 12 +INDIRF4 +ASGNF4 +line 1982 +;1981: +;1982: switch (ownerDraw) { +ADDRLP4 16 +ADDRFP4 24 +INDIRI4 +ASGNI4 +ADDRLP4 16 +INDIRI4 +CNSTI4 200 +LTI4 $1614 +ADDRLP4 16 +INDIRI4 +CNSTI4 256 +GTI4 $1614 +ADDRLP4 16 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 $1663-800 +ADDP4 +INDIRP4 +JUMPV +lit +align 4 +LABELV $1663 +address $1615 +address $1616 +address $1617 +address $1618 +address $1619 +address $1622 +address $1625 +address $1629 +address $1630 +address $1631 +address $1632 +address $1632 +address $1632 +address $1632 +address $1632 +address $1633 +address $1633 +address $1633 +address $1633 +address $1633 +address $1634 +address $1635 +address $1637 +address $1638 +address $1639 +address $1640 +address $1641 +address $1642 +address $1643 +address $1646 +address $1644 +address $1647 +address $1645 +address $1648 +address $1649 +address $1650 +address $1651 +address $1653 +address $1614 +address $1654 +address $1655 +address $1656 +address $1657 +address $1658 +address $1627 +address $1623 +address $1636 +address $1659 +address $1660 +address $1661 +address $1662 +address $1620 +address $1626 +address $1624 +address $1621 +address $1628 +address $1652 +code +LABELV $1615 +line 1984 +;1983: case UI_HANDICAP: +;1984: UI_DrawHandicap(&rect, scale, color, textStyle); +ADDRLP4 0 +ARGP4 +ADDRFP4 40 +INDIRF4 +ARGF4 +ADDRFP4 44 +INDIRP4 +ARGP4 +ADDRFP4 52 +INDIRI4 +ARGI4 +ADDRGP4 UI_DrawHandicap +CALLV +pop +line 1985 +;1985: break; +ADDRGP4 $1614 +JUMPV +LABELV $1616 +line 1987 +;1986: case UI_EFFECTS: +;1987: UI_DrawEffects(&rect, scale, color); +ADDRLP4 0 +ARGP4 +ADDRFP4 40 +INDIRF4 +ARGF4 +ADDRFP4 44 +INDIRP4 +ARGP4 +ADDRGP4 UI_DrawEffects +CALLV +pop +line 1988 +;1988: break; +ADDRGP4 $1614 +JUMPV +LABELV $1617 +line 1990 +;1989: case UI_PLAYERMODEL: +;1990: UI_DrawPlayerModel(&rect); +ADDRLP4 0 +ARGP4 +ADDRGP4 UI_DrawPlayerModel +CALLV +pop +line 1991 +;1991: break; +ADDRGP4 $1614 +JUMPV +LABELV $1618 +line 1993 +;1992: case UI_CLANNAME: +;1993: UI_DrawClanName(&rect, scale, color, textStyle); +ADDRLP4 0 +ARGP4 +ADDRFP4 40 +INDIRF4 +ARGF4 +ADDRFP4 44 +INDIRP4 +ARGP4 +ADDRFP4 52 +INDIRI4 +ARGI4 +ADDRGP4 UI_DrawClanName +CALLV +pop +line 1994 +;1994: break; +ADDRGP4 $1614 +JUMPV +LABELV $1619 +line 1996 +;1995: case UI_CLANLOGO: +;1996: UI_DrawClanLogo(&rect, scale, color); +ADDRLP4 0 +ARGP4 +ADDRFP4 40 +INDIRF4 +ARGF4 +ADDRFP4 44 +INDIRP4 +ARGP4 +ADDRGP4 UI_DrawClanLogo +CALLV +pop +line 1997 +;1997: break; +ADDRGP4 $1614 +JUMPV +LABELV $1620 +line 1999 +;1998: case UI_CLANCINEMATIC: +;1999: UI_DrawClanCinematic(&rect, scale, color); +ADDRLP4 0 +ARGP4 +ADDRFP4 40 +INDIRF4 +ARGF4 +ADDRFP4 44 +INDIRP4 +ARGP4 +ADDRGP4 UI_DrawClanCinematic +CALLV +pop +line 2000 +;2000: break; +ADDRGP4 $1614 +JUMPV +LABELV $1621 +line 2002 +;2001: case UI_PREVIEWCINEMATIC: +;2002: UI_DrawPreviewCinematic(&rect, scale, color); +ADDRLP4 0 +ARGP4 +ADDRFP4 40 +INDIRF4 +ARGF4 +ADDRFP4 44 +INDIRP4 +ARGP4 +ADDRGP4 UI_DrawPreviewCinematic +CALLV +pop +line 2003 +;2003: break; +ADDRGP4 $1614 +JUMPV +LABELV $1622 +line 2005 +;2004: case UI_GAMETYPE: +;2005: UI_DrawGameType(&rect, scale, color, textStyle); +ADDRLP4 0 +ARGP4 +ADDRFP4 40 +INDIRF4 +ARGF4 +ADDRFP4 44 +INDIRP4 +ARGP4 +ADDRFP4 52 +INDIRI4 +ARGI4 +ADDRGP4 UI_DrawGameType +CALLV +pop +line 2006 +;2006: break; +ADDRGP4 $1614 +JUMPV +LABELV $1623 +line 2008 +;2007: case UI_NETGAMETYPE: +;2008: UI_DrawNetGameType(&rect, scale, color, textStyle); +ADDRLP4 0 +ARGP4 +ADDRFP4 40 +INDIRF4 +ARGF4 +ADDRFP4 44 +INDIRP4 +ARGP4 +ADDRFP4 52 +INDIRI4 +ARGI4 +ADDRGP4 UI_DrawNetGameType +CALLV +pop +line 2009 +;2009: break; +ADDRGP4 $1614 +JUMPV +LABELV $1624 +line 2011 +;2010: case UI_JOINGAMETYPE: +;2011: UI_DrawJoinGameType(&rect, scale, color, textStyle); +ADDRLP4 0 +ARGP4 +ADDRFP4 40 +INDIRF4 +ARGF4 +ADDRFP4 44 +INDIRP4 +ARGP4 +ADDRFP4 52 +INDIRI4 +ARGI4 +ADDRGP4 UI_DrawJoinGameType +CALLV +pop +line 2012 +;2012: break; +ADDRGP4 $1614 +JUMPV +LABELV $1625 +line 2014 +;2013: case UI_MAPPREVIEW: +;2014: UI_DrawMapPreview(&rect, scale, color, qtrue); +ADDRLP4 0 +ARGP4 +ADDRFP4 40 +INDIRF4 +ARGF4 +ADDRFP4 44 +INDIRP4 +ARGP4 +CNSTI4 1 +ARGI4 +ADDRGP4 UI_DrawMapPreview +CALLV +pop +line 2015 +;2015: break; +ADDRGP4 $1614 +JUMPV +LABELV $1626 +line 2017 +;2016: case UI_MAP_TIMETOBEAT: +;2017: UI_DrawMapTimeToBeat(&rect, scale, color, textStyle); +ADDRLP4 0 +ARGP4 +ADDRFP4 40 +INDIRF4 +ARGF4 +ADDRFP4 44 +INDIRP4 +ARGP4 +ADDRFP4 52 +INDIRI4 +ARGI4 +ADDRGP4 UI_DrawMapTimeToBeat +CALLV +pop +line 2018 +;2018: break; +ADDRGP4 $1614 +JUMPV +LABELV $1627 +line 2020 +;2019: case UI_MAPCINEMATIC: +;2020: UI_DrawMapCinematic(&rect, scale, color, qfalse); +ADDRLP4 0 +ARGP4 +ADDRFP4 40 +INDIRF4 +ARGF4 +ADDRFP4 44 +INDIRP4 +ARGP4 +CNSTI4 0 +ARGI4 +ADDRGP4 UI_DrawMapCinematic +CALLV +pop +line 2021 +;2021: break; +ADDRGP4 $1614 +JUMPV +LABELV $1628 +line 2023 +;2022: case UI_STARTMAPCINEMATIC: +;2023: UI_DrawMapCinematic(&rect, scale, color, qtrue); +ADDRLP4 0 +ARGP4 +ADDRFP4 40 +INDIRF4 +ARGF4 +ADDRFP4 44 +INDIRP4 +ARGP4 +CNSTI4 1 +ARGI4 +ADDRGP4 UI_DrawMapCinematic +CALLV +pop +line 2024 +;2024: break; +ADDRGP4 $1614 +JUMPV +LABELV $1629 +line 2026 +;2025: case UI_SKILL: +;2026: UI_DrawSkill(&rect, scale, color, textStyle); +ADDRLP4 0 +ARGP4 +ADDRFP4 40 +INDIRF4 +ARGF4 +ADDRFP4 44 +INDIRP4 +ARGP4 +ADDRFP4 52 +INDIRI4 +ARGI4 +ADDRGP4 UI_DrawSkill +CALLV +pop +line 2027 +;2027: break; +ADDRGP4 $1614 +JUMPV +LABELV $1630 +line 2029 +;2028: case UI_BLUETEAMNAME: +;2029: UI_DrawTeamName(&rect, scale, color, qtrue, textStyle); +ADDRLP4 0 +ARGP4 +ADDRFP4 40 +INDIRF4 +ARGF4 +ADDRFP4 44 +INDIRP4 +ARGP4 +CNSTI4 1 +ARGI4 +ADDRFP4 52 +INDIRI4 +ARGI4 +ADDRGP4 UI_DrawTeamName +CALLV +pop +line 2030 +;2030: break; +ADDRGP4 $1614 +JUMPV +LABELV $1631 +line 2032 +;2031: case UI_REDTEAMNAME: +;2032: UI_DrawTeamName(&rect, scale, color, qfalse, textStyle); +ADDRLP4 0 +ARGP4 +ADDRFP4 40 +INDIRF4 +ARGF4 +ADDRFP4 44 +INDIRP4 +ARGP4 +CNSTI4 0 +ARGI4 +ADDRFP4 52 +INDIRI4 +ARGI4 +ADDRGP4 UI_DrawTeamName +CALLV +pop +line 2033 +;2033: break; +ADDRGP4 $1614 +JUMPV +LABELV $1632 +line 2039 +;2034: case UI_BLUETEAM1: +;2035: case UI_BLUETEAM2: +;2036: case UI_BLUETEAM3: +;2037: case UI_BLUETEAM4: +;2038: case UI_BLUETEAM5: +;2039: UI_DrawTeamMember(&rect, scale, color, qtrue, ownerDraw - UI_BLUETEAM1 + 1, textStyle); +ADDRLP4 0 +ARGP4 +ADDRFP4 40 +INDIRF4 +ARGF4 +ADDRFP4 44 +INDIRP4 +ARGP4 +ADDRLP4 20 +CNSTI4 1 +ASGNI4 +ADDRLP4 20 +INDIRI4 +ARGI4 +ADDRFP4 24 +INDIRI4 +CNSTI4 210 +SUBI4 +ADDRLP4 20 +INDIRI4 +ADDI4 +ARGI4 +ADDRFP4 52 +INDIRI4 +ARGI4 +ADDRGP4 UI_DrawTeamMember +CALLV +pop +line 2040 +;2040: break; +ADDRGP4 $1614 +JUMPV +LABELV $1633 +line 2046 +;2041: case UI_REDTEAM1: +;2042: case UI_REDTEAM2: +;2043: case UI_REDTEAM3: +;2044: case UI_REDTEAM4: +;2045: case UI_REDTEAM5: +;2046: UI_DrawTeamMember(&rect, scale, color, qfalse, ownerDraw - UI_REDTEAM1 + 1, textStyle); +ADDRLP4 0 +ARGP4 +ADDRFP4 40 +INDIRF4 +ARGF4 +ADDRFP4 44 +INDIRP4 +ARGP4 +CNSTI4 0 +ARGI4 +ADDRFP4 24 +INDIRI4 +CNSTI4 215 +SUBI4 +CNSTI4 1 +ADDI4 +ARGI4 +ADDRFP4 52 +INDIRI4 +ARGI4 +ADDRGP4 UI_DrawTeamMember +CALLV +pop +line 2047 +;2047: break; +ADDRGP4 $1614 +JUMPV +LABELV $1634 +line 2049 +;2048: case UI_NETSOURCE: +;2049: UI_DrawNetSource(&rect, scale, color, textStyle); +ADDRLP4 0 +ARGP4 +ADDRFP4 40 +INDIRF4 +ARGF4 +ADDRFP4 44 +INDIRP4 +ARGP4 +ADDRFP4 52 +INDIRI4 +ARGI4 +ADDRGP4 UI_DrawNetSource +CALLV +pop +line 2050 +;2050: break; +ADDRGP4 $1614 +JUMPV +LABELV $1635 +line 2052 +;2051: case UI_NETMAPPREVIEW: +;2052: UI_DrawNetMapPreview(&rect, scale, color); +ADDRLP4 0 +ARGP4 +ADDRFP4 40 +INDIRF4 +ARGF4 +ADDRFP4 44 +INDIRP4 +ARGP4 +ADDRGP4 UI_DrawNetMapPreview +CALLV +pop +line 2053 +;2053: break; +ADDRGP4 $1614 +JUMPV +LABELV $1636 +line 2055 +;2054: case UI_NETMAPCINEMATIC: +;2055: UI_DrawNetMapCinematic(&rect, scale, color); +ADDRLP4 0 +ARGP4 +ADDRFP4 40 +INDIRF4 +ARGF4 +ADDRFP4 44 +INDIRP4 +ARGP4 +ADDRGP4 UI_DrawNetMapCinematic +CALLV +pop +line 2056 +;2056: break; +ADDRGP4 $1614 +JUMPV +LABELV $1637 +line 2058 +;2057: case UI_NETFILTER: +;2058: UI_DrawNetFilter(&rect, scale, color, textStyle); +ADDRLP4 0 +ARGP4 +ADDRFP4 40 +INDIRF4 +ARGF4 +ADDRFP4 44 +INDIRP4 +ARGP4 +ADDRFP4 52 +INDIRI4 +ARGI4 +ADDRGP4 UI_DrawNetFilter +CALLV +pop +line 2059 +;2059: break; +ADDRGP4 $1614 +JUMPV +LABELV $1638 +line 2061 +;2060: case UI_TIER: +;2061: UI_DrawTier(&rect, scale, color, textStyle); +ADDRLP4 0 +ARGP4 +ADDRFP4 40 +INDIRF4 +ARGF4 +ADDRFP4 44 +INDIRP4 +ARGP4 +ADDRFP4 52 +INDIRI4 +ARGI4 +ADDRGP4 UI_DrawTier +CALLV +pop +line 2062 +;2062: break; +ADDRGP4 $1614 +JUMPV +LABELV $1639 +line 2064 +;2063: case UI_OPPONENTMODEL: +;2064: UI_DrawOpponent(&rect); +ADDRLP4 0 +ARGP4 +ADDRGP4 UI_DrawOpponent +CALLV +pop +line 2065 +;2065: break; +ADDRGP4 $1614 +JUMPV +LABELV $1640 +line 2067 +;2066: case UI_TIERMAP1: +;2067: UI_DrawTierMap(&rect, 0); +ADDRLP4 0 +ARGP4 +CNSTI4 0 +ARGI4 +ADDRGP4 UI_DrawTierMap +CALLV +pop +line 2068 +;2068: break; +ADDRGP4 $1614 +JUMPV +LABELV $1641 +line 2070 +;2069: case UI_TIERMAP2: +;2070: UI_DrawTierMap(&rect, 1); +ADDRLP4 0 +ARGP4 +CNSTI4 1 +ARGI4 +ADDRGP4 UI_DrawTierMap +CALLV +pop +line 2071 +;2071: break; +ADDRGP4 $1614 +JUMPV +LABELV $1642 +line 2073 +;2072: case UI_TIERMAP3: +;2073: UI_DrawTierMap(&rect, 2); +ADDRLP4 0 +ARGP4 +CNSTI4 2 +ARGI4 +ADDRGP4 UI_DrawTierMap +CALLV +pop +line 2074 +;2074: break; +ADDRGP4 $1614 +JUMPV +LABELV $1643 +line 2076 +;2075: case UI_PLAYERLOGO: +;2076: UI_DrawPlayerLogo(&rect, color); +ADDRLP4 0 +ARGP4 +ADDRFP4 44 +INDIRP4 +ARGP4 +ADDRGP4 UI_DrawPlayerLogo +CALLV +pop +line 2077 +;2077: break; +ADDRGP4 $1614 +JUMPV +LABELV $1644 +line 2079 +;2078: case UI_PLAYERLOGO_METAL: +;2079: UI_DrawPlayerLogoMetal(&rect, color); +ADDRLP4 0 +ARGP4 +ADDRFP4 44 +INDIRP4 +ARGP4 +ADDRGP4 UI_DrawPlayerLogoMetal +CALLV +pop +line 2080 +;2080: break; +ADDRGP4 $1614 +JUMPV +LABELV $1645 +line 2082 +;2081: case UI_PLAYERLOGO_NAME: +;2082: UI_DrawPlayerLogoName(&rect, color); +ADDRLP4 0 +ARGP4 +ADDRFP4 44 +INDIRP4 +ARGP4 +ADDRGP4 UI_DrawPlayerLogoName +CALLV +pop +line 2083 +;2083: break; +ADDRGP4 $1614 +JUMPV +LABELV $1646 +line 2085 +;2084: case UI_OPPONENTLOGO: +;2085: UI_DrawOpponentLogo(&rect, color); +ADDRLP4 0 +ARGP4 +ADDRFP4 44 +INDIRP4 +ARGP4 +ADDRGP4 UI_DrawOpponentLogo +CALLV +pop +line 2086 +;2086: break; +ADDRGP4 $1614 +JUMPV +LABELV $1647 +line 2088 +;2087: case UI_OPPONENTLOGO_METAL: +;2088: UI_DrawOpponentLogoMetal(&rect, color); +ADDRLP4 0 +ARGP4 +ADDRFP4 44 +INDIRP4 +ARGP4 +ADDRGP4 UI_DrawOpponentLogoMetal +CALLV +pop +line 2089 +;2089: break; +ADDRGP4 $1614 +JUMPV +LABELV $1648 +line 2091 +;2090: case UI_OPPONENTLOGO_NAME: +;2091: UI_DrawOpponentLogoName(&rect, color); +ADDRLP4 0 +ARGP4 +ADDRFP4 44 +INDIRP4 +ARGP4 +ADDRGP4 UI_DrawOpponentLogoName +CALLV +pop +line 2092 +;2092: break; +ADDRGP4 $1614 +JUMPV +LABELV $1649 +line 2094 +;2093: case UI_TIER_MAPNAME: +;2094: UI_DrawTierMapName(&rect, scale, color, textStyle); +ADDRLP4 0 +ARGP4 +ADDRFP4 40 +INDIRF4 +ARGF4 +ADDRFP4 44 +INDIRP4 +ARGP4 +ADDRFP4 52 +INDIRI4 +ARGI4 +ADDRGP4 UI_DrawTierMapName +CALLV +pop +line 2095 +;2095: break; +ADDRGP4 $1614 +JUMPV +LABELV $1650 +line 2097 +;2096: case UI_TIER_GAMETYPE: +;2097: UI_DrawTierGameType(&rect, scale, color, textStyle); +ADDRLP4 0 +ARGP4 +ADDRFP4 40 +INDIRF4 +ARGF4 +ADDRFP4 44 +INDIRP4 +ARGP4 +ADDRFP4 52 +INDIRI4 +ARGI4 +ADDRGP4 UI_DrawTierGameType +CALLV +pop +line 2098 +;2098: break; +ADDRGP4 $1614 +JUMPV +LABELV $1651 +line 2100 +;2099: case UI_ALLMAPS_SELECTION: +;2100: UI_DrawAllMapsSelection(&rect, scale, color, textStyle, qtrue); +ADDRLP4 0 +ARGP4 +ADDRFP4 40 +INDIRF4 +ARGF4 +ADDRFP4 44 +INDIRP4 +ARGP4 +ADDRFP4 52 +INDIRI4 +ARGI4 +CNSTI4 1 +ARGI4 +ADDRGP4 UI_DrawAllMapsSelection +CALLV +pop +line 2101 +;2101: break; +ADDRGP4 $1614 +JUMPV +LABELV $1652 +line 2103 +;2102: case UI_MAPS_SELECTION: +;2103: UI_DrawAllMapsSelection(&rect, scale, color, textStyle, qfalse); +ADDRLP4 0 +ARGP4 +ADDRFP4 40 +INDIRF4 +ARGF4 +ADDRFP4 44 +INDIRP4 +ARGP4 +ADDRFP4 52 +INDIRI4 +ARGI4 +CNSTI4 0 +ARGI4 +ADDRGP4 UI_DrawAllMapsSelection +CALLV +pop +line 2104 +;2104: break; +ADDRGP4 $1614 +JUMPV +LABELV $1653 +line 2106 +;2105: case UI_OPPONENT_NAME: +;2106: UI_DrawOpponentName(&rect, scale, color, textStyle); +ADDRLP4 0 +ARGP4 +ADDRFP4 40 +INDIRF4 +ARGF4 +ADDRFP4 44 +INDIRP4 +ARGP4 +ADDRFP4 52 +INDIRI4 +ARGI4 +ADDRGP4 UI_DrawOpponentName +CALLV +pop +line 2107 +;2107: break; +ADDRGP4 $1614 +JUMPV +LABELV $1654 +line 2109 +;2108: case UI_BOTNAME: +;2109: UI_DrawBotName(&rect, scale, color, textStyle); +ADDRLP4 0 +ARGP4 +ADDRFP4 40 +INDIRF4 +ARGF4 +ADDRFP4 44 +INDIRP4 +ARGP4 +ADDRFP4 52 +INDIRI4 +ARGI4 +ADDRGP4 UI_DrawBotName +CALLV +pop +line 2110 +;2110: break; +ADDRGP4 $1614 +JUMPV +LABELV $1655 +line 2112 +;2111: case UI_BOTSKILL: +;2112: UI_DrawBotSkill(&rect, scale, color, textStyle); +ADDRLP4 0 +ARGP4 +ADDRFP4 40 +INDIRF4 +ARGF4 +ADDRFP4 44 +INDIRP4 +ARGP4 +ADDRFP4 52 +INDIRI4 +ARGI4 +ADDRGP4 UI_DrawBotSkill +CALLV +pop +line 2113 +;2113: break; +ADDRGP4 $1614 +JUMPV +LABELV $1656 +line 2115 +;2114: case UI_REDBLUE: +;2115: UI_DrawRedBlue(&rect, scale, color, textStyle); +ADDRLP4 0 +ARGP4 +ADDRFP4 40 +INDIRF4 +ARGF4 +ADDRFP4 44 +INDIRP4 +ARGP4 +ADDRFP4 52 +INDIRI4 +ARGI4 +ADDRGP4 UI_DrawRedBlue +CALLV +pop +line 2116 +;2116: break; +ADDRGP4 $1614 +JUMPV +LABELV $1657 +line 2118 +;2117: case UI_CROSSHAIR: +;2118: UI_DrawCrosshair(&rect, scale, color); +ADDRLP4 0 +ARGP4 +ADDRFP4 40 +INDIRF4 +ARGF4 +ADDRFP4 44 +INDIRP4 +ARGP4 +ADDRGP4 UI_DrawCrosshair +CALLV +pop +line 2119 +;2119: break; +ADDRGP4 $1614 +JUMPV +LABELV $1658 +line 2121 +;2120: case UI_SELECTEDPLAYER: +;2121: UI_DrawSelectedPlayer(&rect, scale, color, textStyle); +ADDRLP4 0 +ARGP4 +ADDRFP4 40 +INDIRF4 +ARGF4 +ADDRFP4 44 +INDIRP4 +ARGP4 +ADDRFP4 52 +INDIRI4 +ARGI4 +ADDRGP4 UI_DrawSelectedPlayer +CALLV +pop +line 2122 +;2122: break; +ADDRGP4 $1614 +JUMPV +LABELV $1659 +line 2124 +;2123: case UI_SERVERREFRESHDATE: +;2124: UI_DrawServerRefreshDate(&rect, scale, color, textStyle); +ADDRLP4 0 +ARGP4 +ADDRFP4 40 +INDIRF4 +ARGF4 +ADDRFP4 44 +INDIRP4 +ARGP4 +ADDRFP4 52 +INDIRI4 +ARGI4 +ADDRGP4 UI_DrawServerRefreshDate +CALLV +pop +line 2125 +;2125: break; +ADDRGP4 $1614 +JUMPV +LABELV $1660 +line 2127 +;2126: case UI_SERVERMOTD: +;2127: UI_DrawServerMOTD(&rect, scale, color); +ADDRLP4 0 +ARGP4 +ADDRFP4 40 +INDIRF4 +ARGF4 +ADDRFP4 44 +INDIRP4 +ARGP4 +ADDRGP4 UI_DrawServerMOTD +CALLV +pop +line 2128 +;2128: break; +ADDRGP4 $1614 +JUMPV +LABELV $1661 +line 2130 +;2129: case UI_GLINFO: +;2130: UI_DrawGLInfo(&rect,scale, color, textStyle); +ADDRLP4 0 +ARGP4 +ADDRFP4 40 +INDIRF4 +ARGF4 +ADDRFP4 44 +INDIRP4 +ARGP4 +ADDRFP4 52 +INDIRI4 +ARGI4 +ADDRGP4 UI_DrawGLInfo +CALLV +pop +line 2131 +;2131: break; +ADDRGP4 $1614 +JUMPV +LABELV $1662 +line 2133 +;2132: case UI_KEYBINDSTATUS: +;2133: UI_DrawKeyBindStatus(&rect,scale, color, textStyle); +ADDRLP4 0 +ARGP4 +ADDRFP4 40 +INDIRF4 +ARGF4 +ADDRFP4 44 +INDIRP4 +ARGP4 +ADDRFP4 52 +INDIRI4 +ARGI4 +ADDRGP4 UI_DrawKeyBindStatus +CALLV +pop +line 2134 +;2134: break; +line 2136 +;2135: default: +;2136: break; +LABELV $1614 +line 2139 +;2137: } +;2138: +;2139:} +LABELV $1609 +endproc UI_OwnerDraw 24 24 +proc UI_OwnerDrawVisible 8 8 +line 2141 +;2140: +;2141:static qboolean UI_OwnerDrawVisible(int flags) { +line 2142 +;2142: qboolean vis = qtrue; +ADDRLP4 0 +CNSTI4 1 +ASGNI4 +ADDRGP4 $1667 +JUMPV +LABELV $1666 +line 2144 +;2143: +;2144: while (flags) { +line 2146 +;2145: +;2146: if (flags & UI_SHOW_FFA) { +ADDRFP4 0 +INDIRI4 +CNSTI4 256 +BANDI4 +CNSTI4 0 +EQI4 $1669 +line 2147 +;2147: if (trap_Cvar_VariableValue("g_gametype") != GT_FFA) { +ADDRGP4 $1362 +ARGP4 +ADDRLP4 4 +ADDRGP4 trap_Cvar_VariableValue +CALLF4 +ASGNF4 +ADDRLP4 4 +INDIRF4 +CNSTF4 0 +EQF4 $1671 +line 2148 +;2148: vis = qfalse; +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +line 2149 +;2149: } +LABELV $1671 +line 2150 +;2150: flags &= ~UI_SHOW_FFA; +ADDRFP4 0 +ADDRFP4 0 +INDIRI4 +CNSTI4 -257 +BANDI4 +ASGNI4 +line 2151 +;2151: } +LABELV $1669 +line 2153 +;2152: +;2153: if (flags & UI_SHOW_NOTFFA) { +ADDRFP4 0 +INDIRI4 +CNSTI4 512 +BANDI4 +CNSTI4 0 +EQI4 $1673 +line 2154 +;2154: if (trap_Cvar_VariableValue("g_gametype") == GT_FFA) { +ADDRGP4 $1362 +ARGP4 +ADDRLP4 4 +ADDRGP4 trap_Cvar_VariableValue +CALLF4 +ASGNF4 +ADDRLP4 4 +INDIRF4 +CNSTF4 0 +NEF4 $1675 +line 2155 +;2155: vis = qfalse; +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +line 2156 +;2156: } +LABELV $1675 +line 2157 +;2157: flags &= ~UI_SHOW_NOTFFA; +ADDRFP4 0 +ADDRFP4 0 +INDIRI4 +CNSTI4 -513 +BANDI4 +ASGNI4 +line 2158 +;2158: } +LABELV $1673 +line 2160 +;2159: +;2160: if (flags & UI_SHOW_LEADER) { +ADDRFP4 0 +INDIRI4 +CNSTI4 1 +BANDI4 +CNSTI4 0 +EQI4 $1677 +line 2162 +;2161: // these need to show when this client can give orders to a player or a group +;2162: if (!uiInfo.teamLeader) { +ADDRGP4 uiInfo+78868 +INDIRI4 +CNSTI4 0 +NEI4 $1679 +line 2163 +;2163: vis = qfalse; +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +line 2164 +;2164: } else { +ADDRGP4 $1680 +JUMPV +LABELV $1679 +line 2166 +;2165: // if showing yourself +;2166: if (ui_selectedPlayer.integer < uiInfo.myTeamCount && uiInfo.teamClientNums[ui_selectedPlayer.integer] == uiInfo.playerNumber) { +ADDRGP4 ui_selectedPlayer+12 +INDIRI4 +ADDRGP4 uiInfo+78848 +INDIRI4 +GEI4 $1682 +ADDRGP4 ui_selectedPlayer+12 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 uiInfo+82968 +ADDP4 +INDIRI4 +ADDRGP4 uiInfo+78864 +INDIRI4 +NEI4 $1682 +line 2167 +;2167: vis = qfalse; +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +line 2168 +;2168: } +LABELV $1682 +line 2169 +;2169: } +LABELV $1680 +line 2170 +;2170: flags &= ~UI_SHOW_LEADER; +ADDRFP4 0 +ADDRFP4 0 +INDIRI4 +CNSTI4 -2 +BANDI4 +ASGNI4 +line 2171 +;2171: } +LABELV $1677 +line 2172 +;2172: if (flags & UI_SHOW_NOTLEADER) { +ADDRFP4 0 +INDIRI4 +CNSTI4 2 +BANDI4 +CNSTI4 0 +EQI4 $1689 +line 2174 +;2173: // these need to show when this client is assigning their own status or they are NOT the leader +;2174: if (uiInfo.teamLeader) { +ADDRGP4 uiInfo+78868 +INDIRI4 +CNSTI4 0 +EQI4 $1691 +line 2176 +;2175: // if not showing yourself +;2176: if (!(ui_selectedPlayer.integer < uiInfo.myTeamCount && uiInfo.teamClientNums[ui_selectedPlayer.integer] == uiInfo.playerNumber)) { +ADDRGP4 ui_selectedPlayer+12 +INDIRI4 +ADDRGP4 uiInfo+78848 +INDIRI4 +GEI4 $1701 +ADDRGP4 ui_selectedPlayer+12 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 uiInfo+82968 +ADDP4 +INDIRI4 +ADDRGP4 uiInfo+78864 +INDIRI4 +EQI4 $1694 +LABELV $1701 +line 2177 +;2177: vis = qfalse; +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +line 2178 +;2178: } +LABELV $1694 +line 2180 +;2179: // these need to show when this client can give orders to a player or a group +;2180: } +LABELV $1691 +line 2181 +;2181: flags &= ~UI_SHOW_NOTLEADER; +ADDRFP4 0 +ADDRFP4 0 +INDIRI4 +CNSTI4 -3 +BANDI4 +ASGNI4 +line 2182 +;2182: } +LABELV $1689 +line 2183 +;2183: if (flags & UI_SHOW_FAVORITESERVERS) { +ADDRFP4 0 +INDIRI4 +CNSTI4 4 +BANDI4 +CNSTI4 0 +EQI4 $1702 +line 2185 +;2184: // this assumes you only put this type of display flag on something showing in the proper context +;2185: if (ui_netSource.integer != AS_FAVORITES) { +ADDRGP4 ui_netSource+12 +INDIRI4 +CNSTI4 3 +EQI4 $1704 +line 2186 +;2186: vis = qfalse; +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +line 2187 +;2187: } +LABELV $1704 +line 2188 +;2188: flags &= ~UI_SHOW_FAVORITESERVERS; +ADDRFP4 0 +ADDRFP4 0 +INDIRI4 +CNSTI4 -5 +BANDI4 +ASGNI4 +line 2189 +;2189: } +LABELV $1702 +line 2190 +;2190: if (flags & UI_SHOW_NOTFAVORITESERVERS) { +ADDRFP4 0 +INDIRI4 +CNSTI4 4096 +BANDI4 +CNSTI4 0 +EQI4 $1707 +line 2192 +;2191: // this assumes you only put this type of display flag on something showing in the proper context +;2192: if (ui_netSource.integer == AS_FAVORITES) { +ADDRGP4 ui_netSource+12 +INDIRI4 +CNSTI4 3 +NEI4 $1709 +line 2193 +;2193: vis = qfalse; +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +line 2194 +;2194: } +LABELV $1709 +line 2195 +;2195: flags &= ~UI_SHOW_NOTFAVORITESERVERS; +ADDRFP4 0 +ADDRFP4 0 +INDIRI4 +CNSTI4 -4097 +BANDI4 +ASGNI4 +line 2196 +;2196: } +LABELV $1707 +line 2197 +;2197: if (flags & UI_SHOW_ANYTEAMGAME) { +ADDRFP4 0 +INDIRI4 +CNSTI4 16 +BANDI4 +CNSTI4 0 +EQI4 $1712 +line 2198 +;2198: if (uiInfo.gameTypes[ui_gameType.integer].gtEnum <= GT_TEAM ) { +ADDRLP4 4 +CNSTI4 3 +ASGNI4 +ADDRGP4 ui_gameType+12 +INDIRI4 +ADDRLP4 4 +INDIRI4 +LSHI4 +ADDRGP4 uiInfo+78580+4 +ADDP4 +INDIRI4 +ADDRLP4 4 +INDIRI4 +GTI4 $1714 +line 2199 +;2199: vis = qfalse; +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +line 2200 +;2200: } +LABELV $1714 +line 2201 +;2201: flags &= ~UI_SHOW_ANYTEAMGAME; +ADDRFP4 0 +ADDRFP4 0 +INDIRI4 +CNSTI4 -17 +BANDI4 +ASGNI4 +line 2202 +;2202: } +LABELV $1712 +line 2203 +;2203: if (flags & UI_SHOW_ANYNONTEAMGAME) { +ADDRFP4 0 +INDIRI4 +CNSTI4 8 +BANDI4 +CNSTI4 0 +EQI4 $1719 +line 2204 +;2204: if (uiInfo.gameTypes[ui_gameType.integer].gtEnum > GT_TEAM ) { +ADDRLP4 4 +CNSTI4 3 +ASGNI4 +ADDRGP4 ui_gameType+12 +INDIRI4 +ADDRLP4 4 +INDIRI4 +LSHI4 +ADDRGP4 uiInfo+78580+4 +ADDP4 +INDIRI4 +ADDRLP4 4 +INDIRI4 +LEI4 $1721 +line 2205 +;2205: vis = qfalse; +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +line 2206 +;2206: } +LABELV $1721 +line 2207 +;2207: flags &= ~UI_SHOW_ANYNONTEAMGAME; +ADDRFP4 0 +ADDRFP4 0 +INDIRI4 +CNSTI4 -9 +BANDI4 +ASGNI4 +line 2208 +;2208: } +LABELV $1719 +line 2209 +;2209: if (flags & UI_SHOW_NETANYTEAMGAME) { +ADDRFP4 0 +INDIRI4 +CNSTI4 2048 +BANDI4 +CNSTI4 0 +EQI4 $1726 +line 2210 +;2210: if (uiInfo.gameTypes[ui_netGameType.integer].gtEnum <= GT_TEAM ) { +ADDRLP4 4 +CNSTI4 3 +ASGNI4 +ADDRGP4 ui_netGameType+12 +INDIRI4 +ADDRLP4 4 +INDIRI4 +LSHI4 +ADDRGP4 uiInfo+78580+4 +ADDP4 +INDIRI4 +ADDRLP4 4 +INDIRI4 +GTI4 $1728 +line 2211 +;2211: vis = qfalse; +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +line 2212 +;2212: } +LABELV $1728 +line 2213 +;2213: flags &= ~UI_SHOW_NETANYTEAMGAME; +ADDRFP4 0 +ADDRFP4 0 +INDIRI4 +CNSTI4 -2049 +BANDI4 +ASGNI4 +line 2214 +;2214: } +LABELV $1726 +line 2215 +;2215: if (flags & UI_SHOW_NETANYNONTEAMGAME) { +ADDRFP4 0 +INDIRI4 +CNSTI4 1024 +BANDI4 +CNSTI4 0 +EQI4 $1733 +line 2216 +;2216: if (uiInfo.gameTypes[ui_netGameType.integer].gtEnum > GT_TEAM ) { +ADDRLP4 4 +CNSTI4 3 +ASGNI4 +ADDRGP4 ui_netGameType+12 +INDIRI4 +ADDRLP4 4 +INDIRI4 +LSHI4 +ADDRGP4 uiInfo+78580+4 +ADDP4 +INDIRI4 +ADDRLP4 4 +INDIRI4 +LEI4 $1735 +line 2217 +;2217: vis = qfalse; +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +line 2218 +;2218: } +LABELV $1735 +line 2219 +;2219: flags &= ~UI_SHOW_NETANYNONTEAMGAME; +ADDRFP4 0 +ADDRFP4 0 +INDIRI4 +CNSTI4 -1025 +BANDI4 +ASGNI4 +line 2220 +;2220: } +LABELV $1733 +line 2221 +;2221: if (flags & UI_SHOW_NEWHIGHSCORE) { +ADDRFP4 0 +INDIRI4 +CNSTI4 32 +BANDI4 +CNSTI4 0 +EQI4 $1740 +line 2222 +;2222: if (uiInfo.newHighScoreTime < uiInfo.uiDC.realTime) { +ADDRGP4 uiInfo+73416 +INDIRI4 +ADDRGP4 uiInfo+208 +INDIRI4 +GEI4 $1742 +line 2223 +;2223: vis = qfalse; +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +line 2224 +;2224: } else { +ADDRGP4 $1743 +JUMPV +LABELV $1742 +line 2225 +;2225: if (uiInfo.soundHighScore) { +ADDRGP4 uiInfo+73436 +INDIRI4 +CNSTI4 0 +EQI4 $1746 +line 2226 +;2226: if (trap_Cvar_VariableValue("sv_killserver") == 0) { +ADDRGP4 $397 +ARGP4 +ADDRLP4 4 +ADDRGP4 trap_Cvar_VariableValue +CALLF4 +ASGNF4 +ADDRLP4 4 +INDIRF4 +CNSTF4 0 +NEF4 $1749 +line 2228 +;2227: // wait on server to go down before playing sound +;2228: trap_S_StartLocalSound(uiInfo.newHighScoreSound, CHAN_ANNOUNCER); +ADDRGP4 uiInfo+119484 +INDIRI4 +ARGI4 +CNSTI4 7 +ARGI4 +ADDRGP4 trap_S_StartLocalSound +CALLV +pop +line 2229 +;2229: uiInfo.soundHighScore = qfalse; +ADDRGP4 uiInfo+73436 +CNSTI4 0 +ASGNI4 +line 2230 +;2230: } +LABELV $1749 +line 2231 +;2231: } +LABELV $1746 +line 2232 +;2232: } +LABELV $1743 +line 2233 +;2233: flags &= ~UI_SHOW_NEWHIGHSCORE; +ADDRFP4 0 +ADDRFP4 0 +INDIRI4 +CNSTI4 -33 +BANDI4 +ASGNI4 +line 2234 +;2234: } +LABELV $1740 +line 2235 +;2235: if (flags & UI_SHOW_NEWBESTTIME) { +ADDRFP4 0 +INDIRI4 +CNSTI4 128 +BANDI4 +CNSTI4 0 +EQI4 $1753 +line 2236 +;2236: if (uiInfo.newBestTime < uiInfo.uiDC.realTime) { +ADDRGP4 uiInfo+73420 +INDIRI4 +ADDRGP4 uiInfo+208 +INDIRI4 +GEI4 $1755 +line 2237 +;2237: vis = qfalse; +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +line 2238 +;2238: } +LABELV $1755 +line 2239 +;2239: flags &= ~UI_SHOW_NEWBESTTIME; +ADDRFP4 0 +ADDRFP4 0 +INDIRI4 +CNSTI4 -129 +BANDI4 +ASGNI4 +line 2240 +;2240: } +LABELV $1753 +line 2241 +;2241: if (flags & UI_SHOW_DEMOAVAILABLE) { +ADDRFP4 0 +INDIRI4 +CNSTI4 64 +BANDI4 +CNSTI4 0 +EQI4 $1759 +line 2242 +;2242: if (!uiInfo.demoAvailable) { +ADDRGP4 uiInfo+73432 +INDIRI4 +CNSTI4 0 +NEI4 $1761 +line 2243 +;2243: vis = qfalse; +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +line 2244 +;2244: } +LABELV $1761 +line 2245 +;2245: flags &= ~UI_SHOW_DEMOAVAILABLE; +ADDRFP4 0 +ADDRFP4 0 +INDIRI4 +CNSTI4 -65 +BANDI4 +ASGNI4 +line 2246 +;2246: } else { +ADDRGP4 $1760 +JUMPV +LABELV $1759 +line 2247 +;2247: flags = 0; +ADDRFP4 0 +CNSTI4 0 +ASGNI4 +line 2248 +;2248: } +LABELV $1760 +line 2249 +;2249: } +LABELV $1667 +line 2144 +ADDRFP4 0 +INDIRI4 +CNSTI4 0 +NEI4 $1666 +line 2250 +;2250: return vis; +ADDRLP4 0 +INDIRI4 +RETI4 +LABELV $1665 +endproc UI_OwnerDrawVisible 8 8 +proc UI_Handicap_HandleKey 20 12 +line 2253 +;2251:} +;2252: +;2253:static qboolean UI_Handicap_HandleKey(int flags, float *special, int key) { +line 2254 +;2254: if (key == K_MOUSE1 || key == K_MOUSE2 || key == K_ENTER || key == K_KP_ENTER) { +ADDRLP4 0 +ADDRFP4 8 +INDIRI4 +ASGNI4 +ADDRLP4 0 +INDIRI4 +CNSTI4 178 +EQI4 $1769 +ADDRLP4 0 +INDIRI4 +CNSTI4 179 +EQI4 $1769 +ADDRLP4 0 +INDIRI4 +CNSTI4 13 +EQI4 $1769 +ADDRLP4 0 +INDIRI4 +CNSTI4 169 +NEI4 $1765 +LABELV $1769 +line 2256 +;2255: int h; +;2256: h = Com_Clamp( 5, 100, trap_Cvar_VariableValue("handicap") ); +ADDRGP4 $699 +ARGP4 +ADDRLP4 8 +ADDRGP4 trap_Cvar_VariableValue +CALLF4 +ASGNF4 +CNSTF4 1084227584 +ARGF4 +CNSTF4 1120403456 +ARGF4 +ADDRLP4 8 +INDIRF4 +ARGF4 +ADDRLP4 12 +ADDRGP4 Com_Clamp +CALLF4 +ASGNF4 +ADDRLP4 4 +ADDRLP4 12 +INDIRF4 +CVFI4 4 +ASGNI4 +line 2257 +;2257: if (key == K_MOUSE2) { +ADDRFP4 8 +INDIRI4 +CNSTI4 179 +NEI4 $1770 +line 2258 +;2258: h -= 5; +ADDRLP4 4 +ADDRLP4 4 +INDIRI4 +CNSTI4 5 +SUBI4 +ASGNI4 +line 2259 +;2259: } else { +ADDRGP4 $1771 +JUMPV +LABELV $1770 +line 2260 +;2260: h += 5; +ADDRLP4 4 +ADDRLP4 4 +INDIRI4 +CNSTI4 5 +ADDI4 +ASGNI4 +line 2261 +;2261: } +LABELV $1771 +line 2262 +;2262: if (h > 100) { +ADDRLP4 4 +INDIRI4 +CNSTI4 100 +LEI4 $1772 +line 2263 +;2263: h = 5; +ADDRLP4 4 +CNSTI4 5 +ASGNI4 +line 2264 +;2264: } else if (h < 0) { +ADDRGP4 $1773 +JUMPV +LABELV $1772 +ADDRLP4 4 +INDIRI4 +CNSTI4 0 +GEI4 $1774 +line 2265 +;2265: h = 100; +ADDRLP4 4 +CNSTI4 100 +ASGNI4 +line 2266 +;2266: } +LABELV $1774 +LABELV $1773 +line 2267 +;2267: trap_Cvar_Set( "handicap", va( "%i", h) ); +ADDRGP4 $1776 +ARGP4 +ADDRLP4 4 +INDIRI4 +ARGI4 +ADDRLP4 16 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRGP4 $699 +ARGP4 +ADDRLP4 16 +INDIRP4 +ARGP4 +ADDRGP4 trap_Cvar_Set +CALLV +pop +line 2268 +;2268: return qtrue; +CNSTI4 1 +RETI4 +ADDRGP4 $1764 +JUMPV +LABELV $1765 +line 2270 +;2269: } +;2270: return qfalse; +CNSTI4 0 +RETI4 +LABELV $1764 +endproc UI_Handicap_HandleKey 20 12 +proc UI_Effects_HandleKey 8 8 +line 2273 +;2271:} +;2272: +;2273:static qboolean UI_Effects_HandleKey(int flags, float *special, int key) { +line 2274 +;2274: if (key == K_MOUSE1 || key == K_MOUSE2 || key == K_ENTER || key == K_KP_ENTER) { +ADDRLP4 0 +ADDRFP4 8 +INDIRI4 +ASGNI4 +ADDRLP4 0 +INDIRI4 +CNSTI4 178 +EQI4 $1782 +ADDRLP4 0 +INDIRI4 +CNSTI4 179 +EQI4 $1782 +ADDRLP4 0 +INDIRI4 +CNSTI4 13 +EQI4 $1782 +ADDRLP4 0 +INDIRI4 +CNSTI4 169 +NEI4 $1778 +LABELV $1782 +line 2276 +;2275: +;2276: if (key == K_MOUSE2) { +ADDRFP4 8 +INDIRI4 +CNSTI4 179 +NEI4 $1783 +line 2277 +;2277: uiInfo.effectsColor--; +ADDRLP4 4 +ADDRGP4 uiInfo+136904 +ASGNP4 +ADDRLP4 4 +INDIRP4 +ADDRLP4 4 +INDIRP4 +INDIRI4 +CNSTI4 1 +SUBI4 +ASGNI4 +line 2278 +;2278: } else { +ADDRGP4 $1784 +JUMPV +LABELV $1783 +line 2279 +;2279: uiInfo.effectsColor++; +ADDRLP4 4 +ADDRGP4 uiInfo+136904 +ASGNP4 +ADDRLP4 4 +INDIRP4 +ADDRLP4 4 +INDIRP4 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 2280 +;2280: } +LABELV $1784 +line 2282 +;2281: +;2282: if( uiInfo.effectsColor > 6 ) { +ADDRGP4 uiInfo+136904 +INDIRI4 +CNSTI4 6 +LEI4 $1787 +line 2283 +;2283: uiInfo.effectsColor = 0; +ADDRGP4 uiInfo+136904 +CNSTI4 0 +ASGNI4 +line 2284 +;2284: } else if (uiInfo.effectsColor < 0) { +ADDRGP4 $1788 +JUMPV +LABELV $1787 +ADDRGP4 uiInfo+136904 +INDIRI4 +CNSTI4 0 +GEI4 $1791 +line 2285 +;2285: uiInfo.effectsColor = 6; +ADDRGP4 uiInfo+136904 +CNSTI4 6 +ASGNI4 +line 2286 +;2286: } +LABELV $1791 +LABELV $1788 +line 2288 +;2287: +;2288: trap_Cvar_SetValue( "color1", uitogamecode[uiInfo.effectsColor] ); +ADDRGP4 $1795 +ARGP4 +ADDRGP4 uiInfo+136904 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 uitogamecode +ADDP4 +INDIRI4 +CVIF4 4 +ARGF4 +ADDRGP4 trap_Cvar_SetValue +CALLV +pop +line 2289 +;2289: return qtrue; +CNSTI4 1 +RETI4 +ADDRGP4 $1777 +JUMPV +LABELV $1778 +line 2291 +;2290: } +;2291: return qfalse; +CNSTI4 0 +RETI4 +LABELV $1777 +endproc UI_Effects_HandleKey 8 8 +proc UI_ClanName_HandleKey 16 8 +line 2294 +;2292:} +;2293: +;2294:static qboolean UI_ClanName_HandleKey(int flags, float *special, int key) { +line 2295 +;2295: if (key == K_MOUSE1 || key == K_MOUSE2 || key == K_ENTER || key == K_KP_ENTER) { +ADDRLP4 0 +ADDRFP4 8 +INDIRI4 +ASGNI4 +ADDRLP4 0 +INDIRI4 +CNSTI4 178 +EQI4 $1802 +ADDRLP4 0 +INDIRI4 +CNSTI4 179 +EQI4 $1802 +ADDRLP4 0 +INDIRI4 +CNSTI4 13 +EQI4 $1802 +ADDRLP4 0 +INDIRI4 +CNSTI4 169 +NEI4 $1798 +LABELV $1802 +line 2297 +;2296: int i; +;2297: i = UI_TeamIndexFromName(UI_Cvar_VariableString("ui_teamName")); +ADDRGP4 $701 +ARGP4 +ADDRLP4 8 +ADDRGP4 UI_Cvar_VariableString +CALLP4 +ASGNP4 +ADDRLP4 8 +INDIRP4 +ARGP4 +ADDRLP4 12 +ADDRGP4 UI_TeamIndexFromName +CALLI4 +ASGNI4 +ADDRLP4 4 +ADDRLP4 12 +INDIRI4 +ASGNI4 +line 2298 +;2298: if (uiInfo.teamList[i].cinematic >= 0) { +CNSTI4 44 +ADDRLP4 4 +INDIRI4 +MULI4 +ADDRGP4 uiInfo+75760+40 +ADDP4 +INDIRI4 +CNSTI4 0 +LTI4 $1803 +line 2299 +;2299: trap_CIN_StopCinematic(uiInfo.teamList[i].cinematic); +CNSTI4 44 +ADDRLP4 4 +INDIRI4 +MULI4 +ADDRGP4 uiInfo+75760+40 +ADDP4 +INDIRI4 +ARGI4 +ADDRGP4 trap_CIN_StopCinematic +CALLI4 +pop +line 2300 +;2300: uiInfo.teamList[i].cinematic = -1; +CNSTI4 44 +ADDRLP4 4 +INDIRI4 +MULI4 +ADDRGP4 uiInfo+75760+40 +ADDP4 +CNSTI4 -1 +ASGNI4 +line 2301 +;2301: } +LABELV $1803 +line 2302 +;2302: if (key == K_MOUSE2) { +ADDRFP4 8 +INDIRI4 +CNSTI4 179 +NEI4 $1811 +line 2303 +;2303: i--; +ADDRLP4 4 +ADDRLP4 4 +INDIRI4 +CNSTI4 1 +SUBI4 +ASGNI4 +line 2304 +;2304: } else { +ADDRGP4 $1812 +JUMPV +LABELV $1811 +line 2305 +;2305: i++; +ADDRLP4 4 +ADDRLP4 4 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 2306 +;2306: } +LABELV $1812 +line 2307 +;2307: if (i >= uiInfo.teamCount) { +ADDRLP4 4 +INDIRI4 +ADDRGP4 uiInfo+75756 +INDIRI4 +LTI4 $1813 +line 2308 +;2308: i = 0; +ADDRLP4 4 +CNSTI4 0 +ASGNI4 +line 2309 +;2309: } else if (i < 0) { +ADDRGP4 $1814 +JUMPV +LABELV $1813 +ADDRLP4 4 +INDIRI4 +CNSTI4 0 +GEI4 $1816 +line 2310 +;2310: i = uiInfo.teamCount - 1; +ADDRLP4 4 +ADDRGP4 uiInfo+75756 +INDIRI4 +CNSTI4 1 +SUBI4 +ASGNI4 +line 2311 +;2311: } +LABELV $1816 +LABELV $1814 +line 2312 +;2312: trap_Cvar_Set( "ui_teamName", uiInfo.teamList[i].teamName); +ADDRGP4 $701 +ARGP4 +CNSTI4 44 +ADDRLP4 4 +INDIRI4 +MULI4 +ADDRGP4 uiInfo+75760 +ADDP4 +INDIRP4 +ARGP4 +ADDRGP4 trap_Cvar_Set +CALLV +pop +line 2313 +;2313: UI_HeadCountByTeam(); +ADDRGP4 UI_HeadCountByTeam +CALLI4 +pop +line 2314 +;2314: UI_FeederSelection(FEEDER_HEADS, 0); +CNSTF4 0 +ARGF4 +CNSTI4 0 +ARGI4 +ADDRGP4 UI_FeederSelection +CALLV +pop +line 2315 +;2315: updateModel = qtrue; +ADDRGP4 updateModel +CNSTI4 1 +ASGNI4 +line 2316 +;2316: return qtrue; +CNSTI4 1 +RETI4 +ADDRGP4 $1797 +JUMPV +LABELV $1798 +line 2318 +;2317: } +;2318: return qfalse; +CNSTI4 0 +RETI4 +LABELV $1797 +endproc UI_ClanName_HandleKey 16 8 +proc UI_GameType_HandleKey 20 16 +line 2321 +;2319:} +;2320: +;2321:static qboolean UI_GameType_HandleKey(int flags, float *special, int key, qboolean resetMap) { +line 2322 +;2322: if (key == K_MOUSE1 || key == K_MOUSE2 || key == K_ENTER || key == K_KP_ENTER) { +ADDRLP4 0 +ADDRFP4 8 +INDIRI4 +ASGNI4 +ADDRLP4 0 +INDIRI4 +CNSTI4 178 +EQI4 $1825 +ADDRLP4 0 +INDIRI4 +CNSTI4 179 +EQI4 $1825 +ADDRLP4 0 +INDIRI4 +CNSTI4 13 +EQI4 $1825 +ADDRLP4 0 +INDIRI4 +CNSTI4 169 +NEI4 $1821 +LABELV $1825 +line 2323 +;2323: int oldCount = UI_MapCountByGameType(qtrue); +CNSTI4 1 +ARGI4 +ADDRLP4 8 +ADDRGP4 UI_MapCountByGameType +CALLI4 +ASGNI4 +ADDRLP4 4 +ADDRLP4 8 +INDIRI4 +ASGNI4 +line 2326 +;2324: +;2325: // hard coded mess here +;2326: if (key == K_MOUSE2) { +ADDRFP4 8 +INDIRI4 +CNSTI4 179 +NEI4 $1826 +line 2327 +;2327: ui_gameType.integer--; +ADDRLP4 12 +ADDRGP4 ui_gameType+12 +ASGNP4 +ADDRLP4 12 +INDIRP4 +ADDRLP4 12 +INDIRP4 +INDIRI4 +CNSTI4 1 +SUBI4 +ASGNI4 +line 2328 +;2328: if (ui_gameType.integer == 2) { +ADDRGP4 ui_gameType+12 +INDIRI4 +CNSTI4 2 +NEI4 $1829 +line 2329 +;2329: ui_gameType.integer = 1; +ADDRGP4 ui_gameType+12 +CNSTI4 1 +ASGNI4 +line 2330 +;2330: } else if (ui_gameType.integer < 2) { +ADDRGP4 $1827 +JUMPV +LABELV $1829 +ADDRGP4 ui_gameType+12 +INDIRI4 +CNSTI4 2 +GEI4 $1827 +line 2331 +;2331: ui_gameType.integer = uiInfo.numGameTypes - 1; +ADDRGP4 ui_gameType+12 +ADDRGP4 uiInfo+78576 +INDIRI4 +CNSTI4 1 +SUBI4 +ASGNI4 +line 2332 +;2332: } +line 2333 +;2333: } else { +ADDRGP4 $1827 +JUMPV +LABELV $1826 +line 2334 +;2334: ui_gameType.integer++; +ADDRLP4 12 +ADDRGP4 ui_gameType+12 +ASGNP4 +ADDRLP4 12 +INDIRP4 +ADDRLP4 12 +INDIRP4 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 2335 +;2335: if (ui_gameType.integer >= uiInfo.numGameTypes) { +ADDRGP4 ui_gameType+12 +INDIRI4 +ADDRGP4 uiInfo+78576 +INDIRI4 +LTI4 $1839 +line 2336 +;2336: ui_gameType.integer = 1; +ADDRGP4 ui_gameType+12 +CNSTI4 1 +ASGNI4 +line 2337 +;2337: } else if (ui_gameType.integer == 2) { +ADDRGP4 $1840 +JUMPV +LABELV $1839 +ADDRGP4 ui_gameType+12 +INDIRI4 +CNSTI4 2 +NEI4 $1844 +line 2338 +;2338: ui_gameType.integer = 3; +ADDRGP4 ui_gameType+12 +CNSTI4 3 +ASGNI4 +line 2339 +;2339: } +LABELV $1844 +LABELV $1840 +line 2340 +;2340: } +LABELV $1827 +line 2342 +;2341: +;2342: if (uiInfo.gameTypes[ui_gameType.integer].gtEnum == GT_TOURNAMENT) { +ADDRGP4 ui_gameType+12 +INDIRI4 +CNSTI4 3 +LSHI4 +ADDRGP4 uiInfo+78580+4 +ADDP4 +INDIRI4 +CNSTI4 1 +NEI4 $1848 +line 2343 +;2343: trap_Cvar_Set("ui_Q3Model", "1"); +ADDRGP4 $964 +ARGP4 +ADDRGP4 $398 +ARGP4 +ADDRGP4 trap_Cvar_Set +CALLV +pop +line 2344 +;2344: } else { +ADDRGP4 $1849 +JUMPV +LABELV $1848 +line 2345 +;2345: trap_Cvar_Set("ui_Q3Model", "0"); +ADDRGP4 $964 +ARGP4 +ADDRGP4 $395 +ARGP4 +ADDRGP4 trap_Cvar_Set +CALLV +pop +line 2346 +;2346: } +LABELV $1849 +line 2348 +;2347: +;2348: trap_Cvar_Set("ui_gameType", va("%d", ui_gameType.integer)); +ADDRGP4 $716 +ARGP4 +ADDRGP4 ui_gameType+12 +INDIRI4 +ARGI4 +ADDRLP4 12 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRGP4 $1853 +ARGP4 +ADDRLP4 12 +INDIRP4 +ARGP4 +ADDRGP4 trap_Cvar_Set +CALLV +pop +line 2349 +;2349: UI_SetCapFragLimits(qtrue); +CNSTI4 1 +ARGI4 +ADDRGP4 UI_SetCapFragLimits +CALLV +pop +line 2350 +;2350: UI_LoadBestScores(uiInfo.mapList[ui_currentMap.integer].mapLoadName, uiInfo.gameTypes[ui_gameType.integer].gtEnum); +CNSTI4 100 +ADDRGP4 ui_currentMap+12 +INDIRI4 +MULI4 +ADDRGP4 uiInfo+83228+4 +ADDP4 +INDIRP4 +ARGP4 +ADDRGP4 ui_gameType+12 +INDIRI4 +CNSTI4 3 +LSHI4 +ADDRGP4 uiInfo+78580+4 +ADDP4 +INDIRI4 +ARGI4 +ADDRGP4 UI_LoadBestScores +CALLV +pop +line 2351 +;2351: if (resetMap && oldCount != UI_MapCountByGameType(qtrue)) { +ADDRFP4 12 +INDIRI4 +CNSTI4 0 +EQI4 $1861 +CNSTI4 1 +ARGI4 +ADDRLP4 16 +ADDRGP4 UI_MapCountByGameType +CALLI4 +ASGNI4 +ADDRLP4 4 +INDIRI4 +ADDRLP4 16 +INDIRI4 +EQI4 $1861 +line 2352 +;2352: trap_Cvar_Set( "ui_currentMap", "0"); +ADDRGP4 $891 +ARGP4 +ADDRGP4 $395 +ARGP4 +ADDRGP4 trap_Cvar_Set +CALLV +pop +line 2353 +;2353: Menu_SetFeederSelection(NULL, FEEDER_MAPS, 0, NULL); +CNSTP4 0 +ARGP4 +CNSTI4 1 +ARGI4 +CNSTI4 0 +ARGI4 +CNSTP4 0 +ARGP4 +ADDRGP4 Menu_SetFeederSelection +CALLV +pop +line 2354 +;2354: } +LABELV $1861 +line 2355 +;2355: return qtrue; +CNSTI4 1 +RETI4 +ADDRGP4 $1820 +JUMPV +LABELV $1821 +line 2357 +;2356: } +;2357: return qfalse; +CNSTI4 0 +RETI4 +LABELV $1820 +endproc UI_GameType_HandleKey 20 16 +proc UI_NetGameType_HandleKey 12 16 +line 2360 +;2358:} +;2359: +;2360:static qboolean UI_NetGameType_HandleKey(int flags, float *special, int key) { +line 2361 +;2361: if (key == K_MOUSE1 || key == K_MOUSE2 || key == K_ENTER || key == K_KP_ENTER) { +ADDRLP4 0 +ADDRFP4 8 +INDIRI4 +ASGNI4 +ADDRLP4 0 +INDIRI4 +CNSTI4 178 +EQI4 $1868 +ADDRLP4 0 +INDIRI4 +CNSTI4 179 +EQI4 $1868 +ADDRLP4 0 +INDIRI4 +CNSTI4 13 +EQI4 $1868 +ADDRLP4 0 +INDIRI4 +CNSTI4 169 +NEI4 $1864 +LABELV $1868 +line 2363 +;2362: +;2363: if (key == K_MOUSE2) { +ADDRFP4 8 +INDIRI4 +CNSTI4 179 +NEI4 $1869 +line 2364 +;2364: ui_netGameType.integer--; +ADDRLP4 4 +ADDRGP4 ui_netGameType+12 +ASGNP4 +ADDRLP4 4 +INDIRP4 +ADDRLP4 4 +INDIRP4 +INDIRI4 +CNSTI4 1 +SUBI4 +ASGNI4 +line 2365 +;2365: } else { +ADDRGP4 $1870 +JUMPV +LABELV $1869 +line 2366 +;2366: ui_netGameType.integer++; +ADDRLP4 4 +ADDRGP4 ui_netGameType+12 +ASGNP4 +ADDRLP4 4 +INDIRP4 +ADDRLP4 4 +INDIRP4 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 2367 +;2367: } +LABELV $1870 +line 2369 +;2368: +;2369: if (ui_netGameType.integer < 0) { +ADDRGP4 ui_netGameType+12 +INDIRI4 +CNSTI4 0 +GEI4 $1873 +line 2370 +;2370: ui_netGameType.integer = uiInfo.numGameTypes - 1; +ADDRGP4 ui_netGameType+12 +ADDRGP4 uiInfo+78576 +INDIRI4 +CNSTI4 1 +SUBI4 +ASGNI4 +line 2371 +;2371: } else if (ui_netGameType.integer >= uiInfo.numGameTypes) { +ADDRGP4 $1874 +JUMPV +LABELV $1873 +ADDRGP4 ui_netGameType+12 +INDIRI4 +ADDRGP4 uiInfo+78576 +INDIRI4 +LTI4 $1878 +line 2372 +;2372: ui_netGameType.integer = 0; +ADDRGP4 ui_netGameType+12 +CNSTI4 0 +ASGNI4 +line 2373 +;2373: } +LABELV $1878 +LABELV $1874 +line 2375 +;2374: +;2375: trap_Cvar_Set( "ui_netGameType", va("%d", ui_netGameType.integer)); +ADDRGP4 $716 +ARGP4 +ADDRGP4 ui_netGameType+12 +INDIRI4 +ARGI4 +ADDRLP4 4 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRGP4 $730 +ARGP4 +ADDRLP4 4 +INDIRP4 +ARGP4 +ADDRGP4 trap_Cvar_Set +CALLV +pop +line 2376 +;2376: trap_Cvar_Set( "ui_actualnetGameType", va("%d", uiInfo.gameTypes[ui_netGameType.integer].gtEnum)); +ADDRGP4 $716 +ARGP4 +ADDRGP4 ui_netGameType+12 +INDIRI4 +CNSTI4 3 +LSHI4 +ADDRGP4 uiInfo+78580+4 +ADDP4 +INDIRI4 +ARGI4 +ADDRLP4 8 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRGP4 $1884 +ARGP4 +ADDRLP4 8 +INDIRP4 +ARGP4 +ADDRGP4 trap_Cvar_Set +CALLV +pop +line 2377 +;2377: trap_Cvar_Set( "ui_currentNetMap", "0"); +ADDRGP4 $889 +ARGP4 +ADDRGP4 $395 +ARGP4 +ADDRGP4 trap_Cvar_Set +CALLV +pop +line 2378 +;2378: UI_MapCountByGameType(qfalse); +CNSTI4 0 +ARGI4 +ADDRGP4 UI_MapCountByGameType +CALLI4 +pop +line 2379 +;2379: Menu_SetFeederSelection(NULL, FEEDER_ALLMAPS, 0, NULL); +CNSTP4 0 +ARGP4 +CNSTI4 4 +ARGI4 +CNSTI4 0 +ARGI4 +CNSTP4 0 +ARGP4 +ADDRGP4 Menu_SetFeederSelection +CALLV +pop +line 2380 +;2380: return qtrue; +CNSTI4 1 +RETI4 +ADDRGP4 $1863 +JUMPV +LABELV $1864 +line 2382 +;2381: } +;2382: return qfalse; +CNSTI4 0 +RETI4 +LABELV $1863 +endproc UI_NetGameType_HandleKey 12 16 +proc UI_JoinGameType_HandleKey 8 8 +line 2385 +;2383:} +;2384: +;2385:static qboolean UI_JoinGameType_HandleKey(int flags, float *special, int key) { +line 2386 +;2386: if (key == K_MOUSE1 || key == K_MOUSE2 || key == K_ENTER || key == K_KP_ENTER) { +ADDRLP4 0 +ADDRFP4 8 +INDIRI4 +ASGNI4 +ADDRLP4 0 +INDIRI4 +CNSTI4 178 +EQI4 $1893 +ADDRLP4 0 +INDIRI4 +CNSTI4 179 +EQI4 $1893 +ADDRLP4 0 +INDIRI4 +CNSTI4 13 +EQI4 $1893 +ADDRLP4 0 +INDIRI4 +CNSTI4 169 +NEI4 $1889 +LABELV $1893 +line 2388 +;2387: +;2388: if (key == K_MOUSE2) { +ADDRFP4 8 +INDIRI4 +CNSTI4 179 +NEI4 $1894 +line 2389 +;2389: ui_joinGameType.integer--; +ADDRLP4 4 +ADDRGP4 ui_joinGameType+12 +ASGNP4 +ADDRLP4 4 +INDIRP4 +ADDRLP4 4 +INDIRP4 +INDIRI4 +CNSTI4 1 +SUBI4 +ASGNI4 +line 2390 +;2390: } else { +ADDRGP4 $1895 +JUMPV +LABELV $1894 +line 2391 +;2391: ui_joinGameType.integer++; +ADDRLP4 4 +ADDRGP4 ui_joinGameType+12 +ASGNP4 +ADDRLP4 4 +INDIRP4 +ADDRLP4 4 +INDIRP4 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 2392 +;2392: } +LABELV $1895 +line 2394 +;2393: +;2394: if (ui_joinGameType.integer < 0) { +ADDRGP4 ui_joinGameType+12 +INDIRI4 +CNSTI4 0 +GEI4 $1898 +line 2395 +;2395: ui_joinGameType.integer = uiInfo.numJoinGameTypes - 1; +ADDRGP4 ui_joinGameType+12 +ADDRGP4 uiInfo+78708 +INDIRI4 +CNSTI4 1 +SUBI4 +ASGNI4 +line 2396 +;2396: } else if (ui_joinGameType.integer >= uiInfo.numJoinGameTypes) { +ADDRGP4 $1899 +JUMPV +LABELV $1898 +ADDRGP4 ui_joinGameType+12 +INDIRI4 +ADDRGP4 uiInfo+78708 +INDIRI4 +LTI4 $1903 +line 2397 +;2397: ui_joinGameType.integer = 0; +ADDRGP4 ui_joinGameType+12 +CNSTI4 0 +ASGNI4 +line 2398 +;2398: } +LABELV $1903 +LABELV $1899 +line 2400 +;2399: +;2400: trap_Cvar_Set( "ui_joinGameType", va("%d", ui_joinGameType.integer)); +ADDRGP4 $716 +ARGP4 +ADDRGP4 ui_joinGameType+12 +INDIRI4 +ARGI4 +ADDRLP4 4 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRGP4 $741 +ARGP4 +ADDRLP4 4 +INDIRP4 +ARGP4 +ADDRGP4 trap_Cvar_Set +CALLV +pop +line 2401 +;2401: UI_BuildServerDisplayList(qtrue); +CNSTI4 1 +ARGI4 +ADDRGP4 UI_BuildServerDisplayList +CALLV +pop +line 2402 +;2402: return qtrue; +CNSTI4 1 +RETI4 +ADDRGP4 $1888 +JUMPV +LABELV $1889 +line 2404 +;2403: } +;2404: return qfalse; +CNSTI4 0 +RETI4 +LABELV $1888 +endproc UI_JoinGameType_HandleKey 8 8 +proc UI_Skill_HandleKey 16 8 +line 2409 +;2405:} +;2406: +;2407: +;2408: +;2409:static qboolean UI_Skill_HandleKey(int flags, float *special, int key) { +line 2410 +;2410: if (key == K_MOUSE1 || key == K_MOUSE2 || key == K_ENTER || key == K_KP_ENTER) { +ADDRLP4 0 +ADDRFP4 8 +INDIRI4 +ASGNI4 +ADDRLP4 0 +INDIRI4 +CNSTI4 178 +EQI4 $1914 +ADDRLP4 0 +INDIRI4 +CNSTI4 179 +EQI4 $1914 +ADDRLP4 0 +INDIRI4 +CNSTI4 13 +EQI4 $1914 +ADDRLP4 0 +INDIRI4 +CNSTI4 169 +NEI4 $1910 +LABELV $1914 +line 2411 +;2411: int i = trap_Cvar_VariableValue( "g_spSkill" ); +ADDRGP4 $827 +ARGP4 +ADDRLP4 8 +ADDRGP4 trap_Cvar_VariableValue +CALLF4 +ASGNF4 +ADDRLP4 4 +ADDRLP4 8 +INDIRF4 +CVFI4 4 +ASGNI4 +line 2413 +;2412: +;2413: if (key == K_MOUSE2) { +ADDRFP4 8 +INDIRI4 +CNSTI4 179 +NEI4 $1915 +line 2414 +;2414: i--; +ADDRLP4 4 +ADDRLP4 4 +INDIRI4 +CNSTI4 1 +SUBI4 +ASGNI4 +line 2415 +;2415: } else { +ADDRGP4 $1916 +JUMPV +LABELV $1915 +line 2416 +;2416: i++; +ADDRLP4 4 +ADDRLP4 4 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 2417 +;2417: } +LABELV $1916 +line 2419 +;2418: +;2419: if (i < 1) { +ADDRLP4 4 +INDIRI4 +CNSTI4 1 +GEI4 $1917 +line 2420 +;2420: i = numSkillLevels; +ADDRLP4 4 +ADDRGP4 numSkillLevels +INDIRI4 +ASGNI4 +line 2421 +;2421: } else if (i > numSkillLevels) { +ADDRGP4 $1918 +JUMPV +LABELV $1917 +ADDRLP4 4 +INDIRI4 +ADDRGP4 numSkillLevels +INDIRI4 +LEI4 $1919 +line 2422 +;2422: i = 1; +ADDRLP4 4 +CNSTI4 1 +ASGNI4 +line 2423 +;2423: } +LABELV $1919 +LABELV $1918 +line 2425 +;2424: +;2425: trap_Cvar_Set("g_spSkill", va("%i", i)); +ADDRGP4 $1776 +ARGP4 +ADDRLP4 4 +INDIRI4 +ARGI4 +ADDRLP4 12 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRGP4 $827 +ARGP4 +ADDRLP4 12 +INDIRP4 +ARGP4 +ADDRGP4 trap_Cvar_Set +CALLV +pop +line 2426 +;2426: return qtrue; +CNSTI4 1 +RETI4 +ADDRGP4 $1909 +JUMPV +LABELV $1910 +line 2428 +;2427: } +;2428: return qfalse; +CNSTI4 0 +RETI4 +LABELV $1909 +endproc UI_Skill_HandleKey 16 8 +proc UI_TeamName_HandleKey 24 8 +line 2431 +;2429:} +;2430: +;2431:static qboolean UI_TeamName_HandleKey(int flags, float *special, int key, qboolean blue) { +line 2432 +;2432: if (key == K_MOUSE1 || key == K_MOUSE2 || key == K_ENTER || key == K_KP_ENTER) { +ADDRLP4 0 +ADDRFP4 8 +INDIRI4 +ASGNI4 +ADDRLP4 0 +INDIRI4 +CNSTI4 178 +EQI4 $1926 +ADDRLP4 0 +INDIRI4 +CNSTI4 179 +EQI4 $1926 +ADDRLP4 0 +INDIRI4 +CNSTI4 13 +EQI4 $1926 +ADDRLP4 0 +INDIRI4 +CNSTI4 169 +NEI4 $1922 +LABELV $1926 +line 2434 +;2433: int i; +;2434: i = UI_TeamIndexFromName(UI_Cvar_VariableString((blue) ? "ui_blueTeam" : "ui_redTeam")); +ADDRFP4 12 +INDIRI4 +CNSTI4 0 +EQI4 $1928 +ADDRLP4 8 +ADDRGP4 $833 +ASGNP4 +ADDRGP4 $1929 +JUMPV +LABELV $1928 +ADDRLP4 8 +ADDRGP4 $834 +ASGNP4 +LABELV $1929 +ADDRLP4 8 +INDIRP4 +ARGP4 +ADDRLP4 12 +ADDRGP4 UI_Cvar_VariableString +CALLP4 +ASGNP4 +ADDRLP4 12 +INDIRP4 +ARGP4 +ADDRLP4 16 +ADDRGP4 UI_TeamIndexFromName +CALLI4 +ASGNI4 +ADDRLP4 4 +ADDRLP4 16 +INDIRI4 +ASGNI4 +line 2436 +;2435: +;2436: if (key == K_MOUSE2) { +ADDRFP4 8 +INDIRI4 +CNSTI4 179 +NEI4 $1930 +line 2437 +;2437: i--; +ADDRLP4 4 +ADDRLP4 4 +INDIRI4 +CNSTI4 1 +SUBI4 +ASGNI4 +line 2438 +;2438: } else { +ADDRGP4 $1931 +JUMPV +LABELV $1930 +line 2439 +;2439: i++; +ADDRLP4 4 +ADDRLP4 4 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 2440 +;2440: } +LABELV $1931 +line 2442 +;2441: +;2442: if (i >= uiInfo.teamCount) { +ADDRLP4 4 +INDIRI4 +ADDRGP4 uiInfo+75756 +INDIRI4 +LTI4 $1932 +line 2443 +;2443: i = 0; +ADDRLP4 4 +CNSTI4 0 +ASGNI4 +line 2444 +;2444: } else if (i < 0) { +ADDRGP4 $1933 +JUMPV +LABELV $1932 +ADDRLP4 4 +INDIRI4 +CNSTI4 0 +GEI4 $1935 +line 2445 +;2445: i = uiInfo.teamCount - 1; +ADDRLP4 4 +ADDRGP4 uiInfo+75756 +INDIRI4 +CNSTI4 1 +SUBI4 +ASGNI4 +line 2446 +;2446: } +LABELV $1935 +LABELV $1933 +line 2448 +;2447: +;2448: trap_Cvar_Set( (blue) ? "ui_blueTeam" : "ui_redTeam", uiInfo.teamList[i].teamName); +ADDRFP4 12 +INDIRI4 +CNSTI4 0 +EQI4 $1940 +ADDRLP4 20 +ADDRGP4 $833 +ASGNP4 +ADDRGP4 $1941 +JUMPV +LABELV $1940 +ADDRLP4 20 +ADDRGP4 $834 +ASGNP4 +LABELV $1941 +ADDRLP4 20 +INDIRP4 +ARGP4 +CNSTI4 44 +ADDRLP4 4 +INDIRI4 +MULI4 +ADDRGP4 uiInfo+75760 +ADDP4 +INDIRP4 +ARGP4 +ADDRGP4 trap_Cvar_Set +CALLV +pop +line 2450 +;2449: +;2450: return qtrue; +CNSTI4 1 +RETI4 +ADDRGP4 $1921 +JUMPV +LABELV $1922 +line 2452 +;2451: } +;2452: return qfalse; +CNSTI4 0 +RETI4 +LABELV $1921 +endproc UI_TeamName_HandleKey 24 8 +proc UI_TeamMember_HandleKey 32 8 +line 2455 +;2453:} +;2454: +;2455:static qboolean UI_TeamMember_HandleKey(int flags, float *special, int key, qboolean blue, int num) { +line 2456 +;2456: if (key == K_MOUSE1 || key == K_MOUSE2 || key == K_ENTER || key == K_KP_ENTER) { +ADDRLP4 0 +ADDRFP4 8 +INDIRI4 +ASGNI4 +ADDRLP4 0 +INDIRI4 +CNSTI4 178 +EQI4 $1947 +ADDRLP4 0 +INDIRI4 +CNSTI4 179 +EQI4 $1947 +ADDRLP4 0 +INDIRI4 +CNSTI4 13 +EQI4 $1947 +ADDRLP4 0 +INDIRI4 +CNSTI4 169 +NEI4 $1943 +LABELV $1947 +line 2460 +;2457: // 0 - None +;2458: // 1 - Human +;2459: // 2..NumCharacters - Bot +;2460: char *cvar = va(blue ? "ui_blueteam%i" : "ui_redteam%i", num); +ADDRFP4 12 +INDIRI4 +CNSTI4 0 +EQI4 $1949 +ADDRLP4 12 +ADDRGP4 $849 +ASGNP4 +ADDRGP4 $1950 +JUMPV +LABELV $1949 +ADDRLP4 12 +ADDRGP4 $850 +ASGNP4 +LABELV $1950 +ADDRLP4 12 +INDIRP4 +ARGP4 +ADDRFP4 16 +INDIRI4 +ARGI4 +ADDRLP4 16 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRLP4 8 +ADDRLP4 16 +INDIRP4 +ASGNP4 +line 2461 +;2461: int value = trap_Cvar_VariableValue(cvar); +ADDRLP4 8 +INDIRP4 +ARGP4 +ADDRLP4 20 +ADDRGP4 trap_Cvar_VariableValue +CALLF4 +ASGNF4 +ADDRLP4 4 +ADDRLP4 20 +INDIRF4 +CVFI4 4 +ASGNI4 +line 2463 +;2462: +;2463: if (key == K_MOUSE2) { +ADDRFP4 8 +INDIRI4 +CNSTI4 179 +NEI4 $1951 +line 2464 +;2464: value--; +ADDRLP4 4 +ADDRLP4 4 +INDIRI4 +CNSTI4 1 +SUBI4 +ASGNI4 +line 2465 +;2465: } else { +ADDRGP4 $1952 +JUMPV +LABELV $1951 +line 2466 +;2466: value++; +ADDRLP4 4 +ADDRLP4 4 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 2467 +;2467: } +LABELV $1952 +line 2469 +;2468: +;2469: if (ui_actualNetGameType.integer >= GT_TEAM) { +ADDRGP4 ui_actualNetGameType+12 +INDIRI4 +CNSTI4 3 +LTI4 $1953 +line 2470 +;2470: if (value >= uiInfo.characterCount + 2) { +ADDRLP4 4 +INDIRI4 +ADDRGP4 uiInfo+73440 +INDIRI4 +CNSTI4 2 +ADDI4 +LTI4 $1956 +line 2471 +;2471: value = 0; +ADDRLP4 4 +CNSTI4 0 +ASGNI4 +line 2472 +;2472: } else if (value < 0) { +ADDRGP4 $1954 +JUMPV +LABELV $1956 +ADDRLP4 4 +INDIRI4 +CNSTI4 0 +GEI4 $1954 +line 2473 +;2473: value = uiInfo.characterCount + 2 - 1; +ADDRLP4 4 +ADDRGP4 uiInfo+73440 +INDIRI4 +CNSTI4 2 +ADDI4 +CNSTI4 1 +SUBI4 +ASGNI4 +line 2474 +;2474: } +line 2475 +;2475: } else { +ADDRGP4 $1954 +JUMPV +LABELV $1953 +line 2476 +;2476: if (value >= UI_GetNumBots() + 2) { +ADDRLP4 24 +ADDRGP4 UI_GetNumBots +CALLI4 +ASGNI4 +ADDRLP4 4 +INDIRI4 +ADDRLP4 24 +INDIRI4 +CNSTI4 2 +ADDI4 +LTI4 $1962 +line 2477 +;2477: value = 0; +ADDRLP4 4 +CNSTI4 0 +ASGNI4 +line 2478 +;2478: } else if (value < 0) { +ADDRGP4 $1963 +JUMPV +LABELV $1962 +ADDRLP4 4 +INDIRI4 +CNSTI4 0 +GEI4 $1964 +line 2479 +;2479: value = UI_GetNumBots() + 2 - 1; +ADDRLP4 28 +ADDRGP4 UI_GetNumBots +CALLI4 +ASGNI4 +ADDRLP4 4 +ADDRLP4 28 +INDIRI4 +CNSTI4 2 +ADDI4 +CNSTI4 1 +SUBI4 +ASGNI4 +line 2480 +;2480: } +LABELV $1964 +LABELV $1963 +line 2481 +;2481: } +LABELV $1954 +line 2483 +;2482: +;2483: trap_Cvar_Set(cvar, va("%i", value)); +ADDRGP4 $1776 +ARGP4 +ADDRLP4 4 +INDIRI4 +ARGI4 +ADDRLP4 24 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRLP4 8 +INDIRP4 +ARGP4 +ADDRLP4 24 +INDIRP4 +ARGP4 +ADDRGP4 trap_Cvar_Set +CALLV +pop +line 2484 +;2484: return qtrue; +CNSTI4 1 +RETI4 +ADDRGP4 $1942 +JUMPV +LABELV $1943 +line 2486 +;2485: } +;2486: return qfalse; +CNSTI4 0 +RETI4 +LABELV $1942 +endproc UI_TeamMember_HandleKey 32 8 +proc UI_NetSource_HandleKey 8 8 +line 2489 +;2487:} +;2488: +;2489:static qboolean UI_NetSource_HandleKey(int flags, float *special, int key) { +line 2490 +;2490: if (key == K_MOUSE1 || key == K_MOUSE2 || key == K_ENTER || key == K_KP_ENTER) { +ADDRLP4 0 +ADDRFP4 8 +INDIRI4 +ASGNI4 +ADDRLP4 0 +INDIRI4 +CNSTI4 178 +EQI4 $1971 +ADDRLP4 0 +INDIRI4 +CNSTI4 179 +EQI4 $1971 +ADDRLP4 0 +INDIRI4 +CNSTI4 13 +EQI4 $1971 +ADDRLP4 0 +INDIRI4 +CNSTI4 169 +NEI4 $1967 +LABELV $1971 +line 2492 +;2491: +;2492: if (key == K_MOUSE2) { +ADDRFP4 8 +INDIRI4 +CNSTI4 179 +NEI4 $1972 +line 2493 +;2493: ui_netSource.integer--; +ADDRLP4 4 +ADDRGP4 ui_netSource+12 +ASGNP4 +ADDRLP4 4 +INDIRP4 +ADDRLP4 4 +INDIRP4 +INDIRI4 +CNSTI4 1 +SUBI4 +ASGNI4 +line 2494 +;2494: } else { +ADDRGP4 $1973 +JUMPV +LABELV $1972 +line 2495 +;2495: ui_netSource.integer++; +ADDRLP4 4 +ADDRGP4 ui_netSource+12 +ASGNP4 +ADDRLP4 4 +INDIRP4 +ADDRLP4 4 +INDIRP4 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 2496 +;2496: } +LABELV $1973 +line 2498 +;2497: +;2498: if (ui_netSource.integer >= numNetSources) { +ADDRGP4 ui_netSource+12 +INDIRI4 +ADDRGP4 numNetSources +INDIRI4 +LTI4 $1976 +line 2499 +;2499: ui_netSource.integer = 0; +ADDRGP4 ui_netSource+12 +CNSTI4 0 +ASGNI4 +line 2500 +;2500: } else if (ui_netSource.integer < 0) { +ADDRGP4 $1977 +JUMPV +LABELV $1976 +ADDRGP4 ui_netSource+12 +INDIRI4 +CNSTI4 0 +GEI4 $1980 +line 2501 +;2501: ui_netSource.integer = numNetSources - 1; +ADDRGP4 ui_netSource+12 +ADDRGP4 numNetSources +INDIRI4 +CNSTI4 1 +SUBI4 +ASGNI4 +line 2502 +;2502: } +LABELV $1980 +LABELV $1977 +line 2504 +;2503: +;2504: UI_BuildServerDisplayList(qtrue); +CNSTI4 1 +ARGI4 +ADDRGP4 UI_BuildServerDisplayList +CALLV +pop +line 2505 +;2505: if (ui_netSource.integer != AS_GLOBAL) { +ADDRGP4 ui_netSource+12 +INDIRI4 +CNSTI4 2 +EQI4 $1984 +line 2506 +;2506: UI_StartServerRefresh(qtrue); +CNSTI4 1 +ARGI4 +ADDRGP4 UI_StartServerRefresh +CALLV +pop +line 2507 +;2507: } +LABELV $1984 +line 2508 +;2508: trap_Cvar_Set( "ui_netSource", va("%d", ui_netSource.integer)); +ADDRGP4 $716 +ARGP4 +ADDRGP4 ui_netSource+12 +INDIRI4 +ARGI4 +ADDRLP4 4 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRGP4 $1987 +ARGP4 +ADDRLP4 4 +INDIRP4 +ARGP4 +ADDRGP4 trap_Cvar_Set +CALLV +pop +line 2509 +;2509: return qtrue; +CNSTI4 1 +RETI4 +ADDRGP4 $1966 +JUMPV +LABELV $1967 +line 2511 +;2510: } +;2511: return qfalse; +CNSTI4 0 +RETI4 +LABELV $1966 +endproc UI_NetSource_HandleKey 8 8 +proc UI_NetFilter_HandleKey 8 4 +line 2514 +;2512:} +;2513: +;2514:static qboolean UI_NetFilter_HandleKey(int flags, float *special, int key) { +line 2515 +;2515: if (key == K_MOUSE1 || key == K_MOUSE2 || key == K_ENTER || key == K_KP_ENTER) { +ADDRLP4 0 +ADDRFP4 8 +INDIRI4 +ASGNI4 +ADDRLP4 0 +INDIRI4 +CNSTI4 178 +EQI4 $1994 +ADDRLP4 0 +INDIRI4 +CNSTI4 179 +EQI4 $1994 +ADDRLP4 0 +INDIRI4 +CNSTI4 13 +EQI4 $1994 +ADDRLP4 0 +INDIRI4 +CNSTI4 169 +NEI4 $1990 +LABELV $1994 +line 2517 +;2516: +;2517: if (key == K_MOUSE2) { +ADDRFP4 8 +INDIRI4 +CNSTI4 179 +NEI4 $1995 +line 2518 +;2518: ui_serverFilterType.integer--; +ADDRLP4 4 +ADDRGP4 ui_serverFilterType+12 +ASGNP4 +ADDRLP4 4 +INDIRP4 +ADDRLP4 4 +INDIRP4 +INDIRI4 +CNSTI4 1 +SUBI4 +ASGNI4 +line 2519 +;2519: } else { +ADDRGP4 $1996 +JUMPV +LABELV $1995 +line 2520 +;2520: ui_serverFilterType.integer++; +ADDRLP4 4 +ADDRGP4 ui_serverFilterType+12 +ASGNP4 +ADDRLP4 4 +INDIRP4 +ADDRLP4 4 +INDIRP4 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 2521 +;2521: } +LABELV $1996 +line 2523 +;2522: +;2523: if (ui_serverFilterType.integer >= numServerFilters) { +ADDRGP4 ui_serverFilterType+12 +INDIRI4 +ADDRGP4 numServerFilters +INDIRI4 +LTI4 $1999 +line 2524 +;2524: ui_serverFilterType.integer = 0; +ADDRGP4 ui_serverFilterType+12 +CNSTI4 0 +ASGNI4 +line 2525 +;2525: } else if (ui_serverFilterType.integer < 0) { +ADDRGP4 $2000 +JUMPV +LABELV $1999 +ADDRGP4 ui_serverFilterType+12 +INDIRI4 +CNSTI4 0 +GEI4 $2003 +line 2526 +;2526: ui_serverFilterType.integer = numServerFilters - 1; +ADDRGP4 ui_serverFilterType+12 +ADDRGP4 numServerFilters +INDIRI4 +CNSTI4 1 +SUBI4 +ASGNI4 +line 2527 +;2527: } +LABELV $2003 +LABELV $2000 +line 2528 +;2528: UI_BuildServerDisplayList(qtrue); +CNSTI4 1 +ARGI4 +ADDRGP4 UI_BuildServerDisplayList +CALLV +pop +line 2529 +;2529: return qtrue; +CNSTI4 1 +RETI4 +ADDRGP4 $1989 +JUMPV +LABELV $1990 +line 2531 +;2530: } +;2531: return qfalse; +CNSTI4 0 +RETI4 +LABELV $1989 +endproc UI_NetFilter_HandleKey 8 4 +proc UI_OpponentName_HandleKey 4 0 +line 2534 +;2532:} +;2533: +;2534:static qboolean UI_OpponentName_HandleKey(int flags, float *special, int key) { +line 2535 +;2535: if (key == K_MOUSE1 || key == K_MOUSE2 || key == K_ENTER || key == K_KP_ENTER) { +ADDRLP4 0 +ADDRFP4 8 +INDIRI4 +ASGNI4 +ADDRLP4 0 +INDIRI4 +CNSTI4 178 +EQI4 $2012 +ADDRLP4 0 +INDIRI4 +CNSTI4 179 +EQI4 $2012 +ADDRLP4 0 +INDIRI4 +CNSTI4 13 +EQI4 $2012 +ADDRLP4 0 +INDIRI4 +CNSTI4 169 +NEI4 $2008 +LABELV $2012 +line 2536 +;2536: if (key == K_MOUSE2) { +ADDRFP4 8 +INDIRI4 +CNSTI4 179 +NEI4 $2013 +line 2537 +;2537: UI_PriorOpponent(); +ADDRGP4 UI_PriorOpponent +CALLV +pop +line 2538 +;2538: } else { +ADDRGP4 $2014 +JUMPV +LABELV $2013 +line 2539 +;2539: UI_NextOpponent(); +ADDRGP4 UI_NextOpponent +CALLV +pop +line 2540 +;2540: } +LABELV $2014 +line 2541 +;2541: return qtrue; +CNSTI4 1 +RETI4 +ADDRGP4 $2007 +JUMPV +LABELV $2008 +line 2543 +;2542: } +;2543: return qfalse; +CNSTI4 0 +RETI4 +LABELV $2007 +endproc UI_OpponentName_HandleKey 4 0 +proc UI_BotName_HandleKey 24 4 +line 2546 +;2544:} +;2545: +;2546:static qboolean UI_BotName_HandleKey(int flags, float *special, int key) { +line 2547 +;2547: if (key == K_MOUSE1 || key == K_MOUSE2 || key == K_ENTER || key == K_KP_ENTER) { +ADDRLP4 0 +ADDRFP4 8 +INDIRI4 +ASGNI4 +ADDRLP4 0 +INDIRI4 +CNSTI4 178 +EQI4 $2020 +ADDRLP4 0 +INDIRI4 +CNSTI4 179 +EQI4 $2020 +ADDRLP4 0 +INDIRI4 +CNSTI4 13 +EQI4 $2020 +ADDRLP4 0 +INDIRI4 +CNSTI4 169 +NEI4 $2016 +LABELV $2020 +line 2548 +;2548: int game = trap_Cvar_VariableValue("g_gametype"); +ADDRGP4 $1362 +ARGP4 +ADDRLP4 12 +ADDRGP4 trap_Cvar_VariableValue +CALLF4 +ASGNF4 +ADDRLP4 8 +ADDRLP4 12 +INDIRF4 +CVFI4 4 +ASGNI4 +line 2549 +;2549: int value = uiInfo.botIndex; +ADDRLP4 4 +ADDRGP4 uiInfo+73444 +INDIRI4 +ASGNI4 +line 2551 +;2550: +;2551: if (key == K_MOUSE2) { +ADDRFP4 8 +INDIRI4 +CNSTI4 179 +NEI4 $2022 +line 2552 +;2552: value--; +ADDRLP4 4 +ADDRLP4 4 +INDIRI4 +CNSTI4 1 +SUBI4 +ASGNI4 +line 2553 +;2553: } else { +ADDRGP4 $2023 +JUMPV +LABELV $2022 +line 2554 +;2554: value++; +ADDRLP4 4 +ADDRLP4 4 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 2555 +;2555: } +LABELV $2023 +line 2557 +;2556: +;2557: if (game >= GT_TEAM) { +ADDRLP4 8 +INDIRI4 +CNSTI4 3 +LTI4 $2024 +line 2558 +;2558: if (value >= uiInfo.characterCount + 2) { +ADDRLP4 4 +INDIRI4 +ADDRGP4 uiInfo+73440 +INDIRI4 +CNSTI4 2 +ADDI4 +LTI4 $2026 +line 2559 +;2559: value = 0; +ADDRLP4 4 +CNSTI4 0 +ASGNI4 +line 2560 +;2560: } else if (value < 0) { +ADDRGP4 $2025 +JUMPV +LABELV $2026 +ADDRLP4 4 +INDIRI4 +CNSTI4 0 +GEI4 $2025 +line 2561 +;2561: value = uiInfo.characterCount + 2 - 1; +ADDRLP4 4 +ADDRGP4 uiInfo+73440 +INDIRI4 +CNSTI4 2 +ADDI4 +CNSTI4 1 +SUBI4 +ASGNI4 +line 2562 +;2562: } +line 2563 +;2563: } else { +ADDRGP4 $2025 +JUMPV +LABELV $2024 +line 2564 +;2564: if (value >= UI_GetNumBots() + 2) { +ADDRLP4 16 +ADDRGP4 UI_GetNumBots +CALLI4 +ASGNI4 +ADDRLP4 4 +INDIRI4 +ADDRLP4 16 +INDIRI4 +CNSTI4 2 +ADDI4 +LTI4 $2032 +line 2565 +;2565: value = 0; +ADDRLP4 4 +CNSTI4 0 +ASGNI4 +line 2566 +;2566: } else if (value < 0) { +ADDRGP4 $2033 +JUMPV +LABELV $2032 +ADDRLP4 4 +INDIRI4 +CNSTI4 0 +GEI4 $2034 +line 2567 +;2567: value = UI_GetNumBots() + 2 - 1; +ADDRLP4 20 +ADDRGP4 UI_GetNumBots +CALLI4 +ASGNI4 +ADDRLP4 4 +ADDRLP4 20 +INDIRI4 +CNSTI4 2 +ADDI4 +CNSTI4 1 +SUBI4 +ASGNI4 +line 2568 +;2568: } +LABELV $2034 +LABELV $2033 +line 2569 +;2569: } +LABELV $2025 +line 2570 +;2570: uiInfo.botIndex = value; +ADDRGP4 uiInfo+73444 +ADDRLP4 4 +INDIRI4 +ASGNI4 +line 2571 +;2571: return qtrue; +CNSTI4 1 +RETI4 +ADDRGP4 $2015 +JUMPV +LABELV $2016 +line 2573 +;2572: } +;2573: return qfalse; +CNSTI4 0 +RETI4 +LABELV $2015 +endproc UI_BotName_HandleKey 24 4 +proc UI_BotSkill_HandleKey 8 0 +line 2576 +;2574:} +;2575: +;2576:static qboolean UI_BotSkill_HandleKey(int flags, float *special, int key) { +line 2577 +;2577: if (key == K_MOUSE1 || key == K_MOUSE2 || key == K_ENTER || key == K_KP_ENTER) { +ADDRLP4 0 +ADDRFP4 8 +INDIRI4 +ASGNI4 +ADDRLP4 0 +INDIRI4 +CNSTI4 178 +EQI4 $2042 +ADDRLP4 0 +INDIRI4 +CNSTI4 179 +EQI4 $2042 +ADDRLP4 0 +INDIRI4 +CNSTI4 13 +EQI4 $2042 +ADDRLP4 0 +INDIRI4 +CNSTI4 169 +NEI4 $2038 +LABELV $2042 +line 2578 +;2578: if (key == K_MOUSE2) { +ADDRFP4 8 +INDIRI4 +CNSTI4 179 +NEI4 $2043 +line 2579 +;2579: uiInfo.skillIndex--; +ADDRLP4 4 +ADDRGP4 uiInfo+96672 +ASGNP4 +ADDRLP4 4 +INDIRP4 +ADDRLP4 4 +INDIRP4 +INDIRI4 +CNSTI4 1 +SUBI4 +ASGNI4 +line 2580 +;2580: } else { +ADDRGP4 $2044 +JUMPV +LABELV $2043 +line 2581 +;2581: uiInfo.skillIndex++; +ADDRLP4 4 +ADDRGP4 uiInfo+96672 +ASGNP4 +ADDRLP4 4 +INDIRP4 +ADDRLP4 4 +INDIRP4 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 2582 +;2582: } +LABELV $2044 +line 2583 +;2583: if (uiInfo.skillIndex >= numSkillLevels) { +ADDRGP4 uiInfo+96672 +INDIRI4 +ADDRGP4 numSkillLevels +INDIRI4 +LTI4 $2047 +line 2584 +;2584: uiInfo.skillIndex = 0; +ADDRGP4 uiInfo+96672 +CNSTI4 0 +ASGNI4 +line 2585 +;2585: } else if (uiInfo.skillIndex < 0) { +ADDRGP4 $2048 +JUMPV +LABELV $2047 +ADDRGP4 uiInfo+96672 +INDIRI4 +CNSTI4 0 +GEI4 $2051 +line 2586 +;2586: uiInfo.skillIndex = numSkillLevels-1; +ADDRGP4 uiInfo+96672 +ADDRGP4 numSkillLevels +INDIRI4 +CNSTI4 1 +SUBI4 +ASGNI4 +line 2587 +;2587: } +LABELV $2051 +LABELV $2048 +line 2588 +;2588: return qtrue; +CNSTI4 1 +RETI4 +ADDRGP4 $2037 +JUMPV +LABELV $2038 +line 2590 +;2589: } +;2590: return qfalse; +CNSTI4 0 +RETI4 +LABELV $2037 +endproc UI_BotSkill_HandleKey 8 0 +proc UI_RedBlue_HandleKey 8 0 +line 2593 +;2591:} +;2592: +;2593:static qboolean UI_RedBlue_HandleKey(int flags, float *special, int key) { +line 2594 +;2594: if (key == K_MOUSE1 || key == K_MOUSE2 || key == K_ENTER || key == K_KP_ENTER) { +ADDRLP4 0 +ADDRFP4 8 +INDIRI4 +ASGNI4 +ADDRLP4 0 +INDIRI4 +CNSTI4 178 +EQI4 $2060 +ADDRLP4 0 +INDIRI4 +CNSTI4 179 +EQI4 $2060 +ADDRLP4 0 +INDIRI4 +CNSTI4 13 +EQI4 $2060 +ADDRLP4 0 +INDIRI4 +CNSTI4 169 +NEI4 $2056 +LABELV $2060 +line 2595 +;2595: uiInfo.redBlue ^= 1; +ADDRLP4 4 +ADDRGP4 uiInfo+78840 +ASGNP4 +ADDRLP4 4 +INDIRP4 +ADDRLP4 4 +INDIRP4 +INDIRI4 +CNSTI4 1 +BXORI4 +ASGNI4 +line 2596 +;2596: return qtrue; +CNSTI4 1 +RETI4 +ADDRGP4 $2055 +JUMPV +LABELV $2056 +line 2598 +;2597: } +;2598: return qfalse; +CNSTI4 0 +RETI4 +LABELV $2055 +endproc UI_RedBlue_HandleKey 8 0 +proc UI_Crosshair_HandleKey 8 8 +line 2601 +;2599:} +;2600: +;2601:static qboolean UI_Crosshair_HandleKey(int flags, float *special, int key) { +line 2602 +;2602: if (key == K_MOUSE1 || key == K_MOUSE2 || key == K_ENTER || key == K_KP_ENTER) { +ADDRLP4 0 +ADDRFP4 8 +INDIRI4 +ASGNI4 +ADDRLP4 0 +INDIRI4 +CNSTI4 178 +EQI4 $2067 +ADDRLP4 0 +INDIRI4 +CNSTI4 179 +EQI4 $2067 +ADDRLP4 0 +INDIRI4 +CNSTI4 13 +EQI4 $2067 +ADDRLP4 0 +INDIRI4 +CNSTI4 169 +NEI4 $2063 +LABELV $2067 +line 2603 +;2603: if (key == K_MOUSE2) { +ADDRFP4 8 +INDIRI4 +CNSTI4 179 +NEI4 $2068 +line 2604 +;2604: uiInfo.currentCrosshair--; +ADDRLP4 4 +ADDRGP4 uiInfo+119476 +ASGNP4 +ADDRLP4 4 +INDIRP4 +ADDRLP4 4 +INDIRP4 +INDIRI4 +CNSTI4 1 +SUBI4 +ASGNI4 +line 2605 +;2605: } else { +ADDRGP4 $2069 +JUMPV +LABELV $2068 +line 2606 +;2606: uiInfo.currentCrosshair++; +ADDRLP4 4 +ADDRGP4 uiInfo+119476 +ASGNP4 +ADDRLP4 4 +INDIRP4 +ADDRLP4 4 +INDIRP4 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 2607 +;2607: } +LABELV $2069 +line 2609 +;2608: +;2609: if (uiInfo.currentCrosshair >= NUM_CROSSHAIRS) { +ADDRGP4 uiInfo+119476 +INDIRI4 +CNSTI4 10 +LTI4 $2072 +line 2610 +;2610: uiInfo.currentCrosshair = 0; +ADDRGP4 uiInfo+119476 +CNSTI4 0 +ASGNI4 +line 2611 +;2611: } else if (uiInfo.currentCrosshair < 0) { +ADDRGP4 $2073 +JUMPV +LABELV $2072 +ADDRGP4 uiInfo+119476 +INDIRI4 +CNSTI4 0 +GEI4 $2076 +line 2612 +;2612: uiInfo.currentCrosshair = NUM_CROSSHAIRS - 1; +ADDRGP4 uiInfo+119476 +CNSTI4 9 +ASGNI4 +line 2613 +;2613: } +LABELV $2076 +LABELV $2073 +line 2614 +;2614: trap_Cvar_Set("cg_drawCrosshair", va("%d", uiInfo.currentCrosshair)); +ADDRGP4 $716 +ARGP4 +ADDRGP4 uiInfo+119476 +INDIRI4 +ARGI4 +ADDRLP4 4 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRGP4 $2080 +ARGP4 +ADDRLP4 4 +INDIRP4 +ARGP4 +ADDRGP4 trap_Cvar_Set +CALLV +pop +line 2615 +;2615: return qtrue; +CNSTI4 1 +RETI4 +ADDRGP4 $2062 +JUMPV +LABELV $2063 +line 2617 +;2616: } +;2617: return qfalse; +CNSTI4 0 +RETI4 +LABELV $2062 +endproc UI_Crosshair_HandleKey 8 8 +proc UI_SelectedPlayer_HandleKey 16 8 +line 2622 +;2618:} +;2619: +;2620: +;2621: +;2622:static qboolean UI_SelectedPlayer_HandleKey(int flags, float *special, int key) { +line 2623 +;2623: if (key == K_MOUSE1 || key == K_MOUSE2 || key == K_ENTER || key == K_KP_ENTER) { +ADDRLP4 0 +ADDRFP4 8 +INDIRI4 +ASGNI4 +ADDRLP4 0 +INDIRI4 +CNSTI4 178 +EQI4 $2087 +ADDRLP4 0 +INDIRI4 +CNSTI4 179 +EQI4 $2087 +ADDRLP4 0 +INDIRI4 +CNSTI4 13 +EQI4 $2087 +ADDRLP4 0 +INDIRI4 +CNSTI4 169 +NEI4 $2083 +LABELV $2087 +line 2626 +;2624: int selected; +;2625: +;2626: UI_BuildPlayerList(); +ADDRGP4 UI_BuildPlayerList +CALLV +pop +line 2627 +;2627: if (!uiInfo.teamLeader) { +ADDRGP4 uiInfo+78868 +INDIRI4 +CNSTI4 0 +NEI4 $2088 +line 2628 +;2628: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $2082 +JUMPV +LABELV $2088 +line 2630 +;2629: } +;2630: selected = trap_Cvar_VariableValue("cg_selectedPlayer"); +ADDRGP4 $1430 +ARGP4 +ADDRLP4 8 +ADDRGP4 trap_Cvar_VariableValue +CALLF4 +ASGNF4 +ADDRLP4 4 +ADDRLP4 8 +INDIRF4 +CVFI4 4 +ASGNI4 +line 2632 +;2631: +;2632: if (key == K_MOUSE2) { +ADDRFP4 8 +INDIRI4 +CNSTI4 179 +NEI4 $2091 +line 2633 +;2633: selected--; +ADDRLP4 4 +ADDRLP4 4 +INDIRI4 +CNSTI4 1 +SUBI4 +ASGNI4 +line 2634 +;2634: } else { +ADDRGP4 $2092 +JUMPV +LABELV $2091 +line 2635 +;2635: selected++; +ADDRLP4 4 +ADDRLP4 4 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 2636 +;2636: } +LABELV $2092 +line 2638 +;2637: +;2638: if (selected > uiInfo.myTeamCount) { +ADDRLP4 4 +INDIRI4 +ADDRGP4 uiInfo+78848 +INDIRI4 +LEI4 $2093 +line 2639 +;2639: selected = 0; +ADDRLP4 4 +CNSTI4 0 +ASGNI4 +line 2640 +;2640: } else if (selected < 0) { +ADDRGP4 $2094 +JUMPV +LABELV $2093 +ADDRLP4 4 +INDIRI4 +CNSTI4 0 +GEI4 $2096 +line 2641 +;2641: selected = uiInfo.myTeamCount; +ADDRLP4 4 +ADDRGP4 uiInfo+78848 +INDIRI4 +ASGNI4 +line 2642 +;2642: } +LABELV $2096 +LABELV $2094 +line 2644 +;2643: +;2644: if (selected == uiInfo.myTeamCount) { +ADDRLP4 4 +INDIRI4 +ADDRGP4 uiInfo+78848 +INDIRI4 +NEI4 $2099 +line 2645 +;2645: trap_Cvar_Set( "cg_selectedPlayerName", "Everyone"); +ADDRGP4 $1438 +ARGP4 +ADDRGP4 $2102 +ARGP4 +ADDRGP4 trap_Cvar_Set +CALLV +pop +line 2646 +;2646: } else { +ADDRGP4 $2100 +JUMPV +LABELV $2099 +line 2647 +;2647: trap_Cvar_Set( "cg_selectedPlayerName", uiInfo.teamNames[selected]); +ADDRGP4 $1438 +ARGP4 +ADDRLP4 4 +INDIRI4 +CNSTI4 5 +LSHI4 +ADDRGP4 uiInfo+80920 +ADDP4 +ARGP4 +ADDRGP4 trap_Cvar_Set +CALLV +pop +line 2648 +;2648: } +LABELV $2100 +line 2649 +;2649: trap_Cvar_Set( "cg_selectedPlayer", va("%d", selected)); +ADDRGP4 $716 +ARGP4 +ADDRLP4 4 +INDIRI4 +ARGI4 +ADDRLP4 12 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRGP4 $1430 +ARGP4 +ADDRLP4 12 +INDIRP4 +ARGP4 +ADDRGP4 trap_Cvar_Set +CALLV +pop +line 2650 +;2650: } +LABELV $2083 +line 2651 +;2651: return qfalse; +CNSTI4 0 +RETI4 +LABELV $2082 +endproc UI_SelectedPlayer_HandleKey 16 8 +proc UI_OwnerDrawHandleKey 52 20 +line 2655 +;2652:} +;2653: +;2654: +;2655:static qboolean UI_OwnerDrawHandleKey(int ownerDraw, int flags, float *special, int key) { +line 2656 +;2656: switch (ownerDraw) { +ADDRLP4 0 +ADDRFP4 0 +INDIRI4 +ASGNI4 +ADDRLP4 0 +INDIRI4 +CNSTI4 200 +LTI4 $2106 +ADDRLP4 0 +INDIRI4 +CNSTI4 253 +GTI4 $2106 +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 $2126-800 +ADDP4 +INDIRP4 +JUMPV +lit +align 4 +LABELV $2126 +address $2107 +address $2108 +address $2106 +address $2109 +address $2106 +address $2110 +address $2106 +address $2113 +address $2114 +address $2115 +address $2116 +address $2116 +address $2116 +address $2116 +address $2116 +address $2117 +address $2117 +address $2117 +address $2117 +address $2117 +address $2118 +address $2106 +address $2119 +address $2106 +address $2106 +address $2106 +address $2106 +address $2106 +address $2106 +address $2106 +address $2106 +address $2106 +address $2106 +address $2106 +address $2106 +address $2106 +address $2106 +address $2120 +address $2106 +address $2121 +address $2122 +address $2123 +address $2124 +address $2125 +address $2106 +address $2111 +address $2106 +address $2106 +address $2106 +address $2106 +address $2106 +address $2106 +address $2106 +address $2112 +code +LABELV $2107 +line 2658 +;2657: case UI_HANDICAP: +;2658: return UI_Handicap_HandleKey(flags, special, key); +ADDRFP4 4 +INDIRI4 +ARGI4 +ADDRFP4 8 +INDIRP4 +ARGP4 +ADDRFP4 12 +INDIRI4 +ARGI4 +ADDRLP4 4 +ADDRGP4 UI_Handicap_HandleKey +CALLI4 +ASGNI4 +ADDRLP4 4 +INDIRI4 +RETI4 +ADDRGP4 $2104 +JUMPV +line 2659 +;2659: break; +LABELV $2108 +line 2661 +;2660: case UI_EFFECTS: +;2661: return UI_Effects_HandleKey(flags, special, key); +ADDRFP4 4 +INDIRI4 +ARGI4 +ADDRFP4 8 +INDIRP4 +ARGP4 +ADDRFP4 12 +INDIRI4 +ARGI4 +ADDRLP4 8 +ADDRGP4 UI_Effects_HandleKey +CALLI4 +ASGNI4 +ADDRLP4 8 +INDIRI4 +RETI4 +ADDRGP4 $2104 +JUMPV +line 2662 +;2662: break; +LABELV $2109 +line 2664 +;2663: case UI_CLANNAME: +;2664: return UI_ClanName_HandleKey(flags, special, key); +ADDRFP4 4 +INDIRI4 +ARGI4 +ADDRFP4 8 +INDIRP4 +ARGP4 +ADDRFP4 12 +INDIRI4 +ARGI4 +ADDRLP4 12 +ADDRGP4 UI_ClanName_HandleKey +CALLI4 +ASGNI4 +ADDRLP4 12 +INDIRI4 +RETI4 +ADDRGP4 $2104 +JUMPV +line 2665 +;2665: break; +LABELV $2110 +line 2667 +;2666: case UI_GAMETYPE: +;2667: return UI_GameType_HandleKey(flags, special, key, qtrue); +ADDRFP4 4 +INDIRI4 +ARGI4 +ADDRFP4 8 +INDIRP4 +ARGP4 +ADDRFP4 12 +INDIRI4 +ARGI4 +CNSTI4 1 +ARGI4 +ADDRLP4 16 +ADDRGP4 UI_GameType_HandleKey +CALLI4 +ASGNI4 +ADDRLP4 16 +INDIRI4 +RETI4 +ADDRGP4 $2104 +JUMPV +line 2668 +;2668: break; +LABELV $2111 +line 2670 +;2669: case UI_NETGAMETYPE: +;2670: return UI_NetGameType_HandleKey(flags, special, key); +ADDRFP4 4 +INDIRI4 +ARGI4 +ADDRFP4 8 +INDIRP4 +ARGP4 +ADDRFP4 12 +INDIRI4 +ARGI4 +ADDRLP4 20 +ADDRGP4 UI_NetGameType_HandleKey +CALLI4 +ASGNI4 +ADDRLP4 20 +INDIRI4 +RETI4 +ADDRGP4 $2104 +JUMPV +line 2671 +;2671: break; +LABELV $2112 +line 2673 +;2672: case UI_JOINGAMETYPE: +;2673: return UI_JoinGameType_HandleKey(flags, special, key); +ADDRFP4 4 +INDIRI4 +ARGI4 +ADDRFP4 8 +INDIRP4 +ARGP4 +ADDRFP4 12 +INDIRI4 +ARGI4 +ADDRLP4 24 +ADDRGP4 UI_JoinGameType_HandleKey +CALLI4 +ASGNI4 +ADDRLP4 24 +INDIRI4 +RETI4 +ADDRGP4 $2104 +JUMPV +line 2674 +;2674: break; +LABELV $2113 +line 2676 +;2675: case UI_SKILL: +;2676: return UI_Skill_HandleKey(flags, special, key); +ADDRFP4 4 +INDIRI4 +ARGI4 +ADDRFP4 8 +INDIRP4 +ARGP4 +ADDRFP4 12 +INDIRI4 +ARGI4 +ADDRLP4 28 +ADDRGP4 UI_Skill_HandleKey +CALLI4 +ASGNI4 +ADDRLP4 28 +INDIRI4 +RETI4 +ADDRGP4 $2104 +JUMPV +line 2677 +;2677: break; +LABELV $2114 +line 2679 +;2678: case UI_BLUETEAMNAME: +;2679: return UI_TeamName_HandleKey(flags, special, key, qtrue); +ADDRFP4 4 +INDIRI4 +ARGI4 +ADDRFP4 8 +INDIRP4 +ARGP4 +ADDRFP4 12 +INDIRI4 +ARGI4 +CNSTI4 1 +ARGI4 +ADDRLP4 32 +ADDRGP4 UI_TeamName_HandleKey +CALLI4 +ASGNI4 +ADDRLP4 32 +INDIRI4 +RETI4 +ADDRGP4 $2104 +JUMPV +line 2680 +;2680: break; +LABELV $2115 +line 2682 +;2681: case UI_REDTEAMNAME: +;2682: return UI_TeamName_HandleKey(flags, special, key, qfalse); +ADDRFP4 4 +INDIRI4 +ARGI4 +ADDRFP4 8 +INDIRP4 +ARGP4 +ADDRFP4 12 +INDIRI4 +ARGI4 +CNSTI4 0 +ARGI4 +ADDRLP4 36 +ADDRGP4 UI_TeamName_HandleKey +CALLI4 +ASGNI4 +ADDRLP4 36 +INDIRI4 +RETI4 +ADDRGP4 $2104 +JUMPV +line 2683 +;2683: break; +LABELV $2116 +line 2689 +;2684: case UI_BLUETEAM1: +;2685: case UI_BLUETEAM2: +;2686: case UI_BLUETEAM3: +;2687: case UI_BLUETEAM4: +;2688: case UI_BLUETEAM5: +;2689: UI_TeamMember_HandleKey(flags, special, key, qtrue, ownerDraw - UI_BLUETEAM1 + 1); +ADDRFP4 4 +INDIRI4 +ARGI4 +ADDRFP4 8 +INDIRP4 +ARGP4 +ADDRFP4 12 +INDIRI4 +ARGI4 +ADDRLP4 40 +CNSTI4 1 +ASGNI4 +ADDRLP4 40 +INDIRI4 +ARGI4 +ADDRFP4 0 +INDIRI4 +CNSTI4 210 +SUBI4 +ADDRLP4 40 +INDIRI4 +ADDI4 +ARGI4 +ADDRGP4 UI_TeamMember_HandleKey +CALLI4 +pop +line 2690 +;2690: break; +ADDRGP4 $2106 +JUMPV +LABELV $2117 +line 2696 +;2691: case UI_REDTEAM1: +;2692: case UI_REDTEAM2: +;2693: case UI_REDTEAM3: +;2694: case UI_REDTEAM4: +;2695: case UI_REDTEAM5: +;2696: UI_TeamMember_HandleKey(flags, special, key, qfalse, ownerDraw - UI_REDTEAM1 + 1); +ADDRFP4 4 +INDIRI4 +ARGI4 +ADDRFP4 8 +INDIRP4 +ARGP4 +ADDRFP4 12 +INDIRI4 +ARGI4 +CNSTI4 0 +ARGI4 +ADDRFP4 0 +INDIRI4 +CNSTI4 215 +SUBI4 +CNSTI4 1 +ADDI4 +ARGI4 +ADDRGP4 UI_TeamMember_HandleKey +CALLI4 +pop +line 2697 +;2697: break; +ADDRGP4 $2106 +JUMPV +LABELV $2118 +line 2699 +;2698: case UI_NETSOURCE: +;2699: UI_NetSource_HandleKey(flags, special, key); +ADDRFP4 4 +INDIRI4 +ARGI4 +ADDRFP4 8 +INDIRP4 +ARGP4 +ADDRFP4 12 +INDIRI4 +ARGI4 +ADDRGP4 UI_NetSource_HandleKey +CALLI4 +pop +line 2700 +;2700: break; +ADDRGP4 $2106 +JUMPV +LABELV $2119 +line 2702 +;2701: case UI_NETFILTER: +;2702: UI_NetFilter_HandleKey(flags, special, key); +ADDRFP4 4 +INDIRI4 +ARGI4 +ADDRFP4 8 +INDIRP4 +ARGP4 +ADDRFP4 12 +INDIRI4 +ARGI4 +ADDRGP4 UI_NetFilter_HandleKey +CALLI4 +pop +line 2703 +;2703: break; +ADDRGP4 $2106 +JUMPV +LABELV $2120 +line 2705 +;2704: case UI_OPPONENT_NAME: +;2705: UI_OpponentName_HandleKey(flags, special, key); +ADDRFP4 4 +INDIRI4 +ARGI4 +ADDRFP4 8 +INDIRP4 +ARGP4 +ADDRFP4 12 +INDIRI4 +ARGI4 +ADDRGP4 UI_OpponentName_HandleKey +CALLI4 +pop +line 2706 +;2706: break; +ADDRGP4 $2106 +JUMPV +LABELV $2121 +line 2708 +;2707: case UI_BOTNAME: +;2708: return UI_BotName_HandleKey(flags, special, key); +ADDRFP4 4 +INDIRI4 +ARGI4 +ADDRFP4 8 +INDIRP4 +ARGP4 +ADDRFP4 12 +INDIRI4 +ARGI4 +ADDRLP4 44 +ADDRGP4 UI_BotName_HandleKey +CALLI4 +ASGNI4 +ADDRLP4 44 +INDIRI4 +RETI4 +ADDRGP4 $2104 +JUMPV +line 2709 +;2709: break; +LABELV $2122 +line 2711 +;2710: case UI_BOTSKILL: +;2711: return UI_BotSkill_HandleKey(flags, special, key); +ADDRFP4 4 +INDIRI4 +ARGI4 +ADDRFP4 8 +INDIRP4 +ARGP4 +ADDRFP4 12 +INDIRI4 +ARGI4 +ADDRLP4 48 +ADDRGP4 UI_BotSkill_HandleKey +CALLI4 +ASGNI4 +ADDRLP4 48 +INDIRI4 +RETI4 +ADDRGP4 $2104 +JUMPV +line 2712 +;2712: break; +LABELV $2123 +line 2714 +;2713: case UI_REDBLUE: +;2714: UI_RedBlue_HandleKey(flags, special, key); +ADDRFP4 4 +INDIRI4 +ARGI4 +ADDRFP4 8 +INDIRP4 +ARGP4 +ADDRFP4 12 +INDIRI4 +ARGI4 +ADDRGP4 UI_RedBlue_HandleKey +CALLI4 +pop +line 2715 +;2715: break; +ADDRGP4 $2106 +JUMPV +LABELV $2124 +line 2717 +;2716: case UI_CROSSHAIR: +;2717: UI_Crosshair_HandleKey(flags, special, key); +ADDRFP4 4 +INDIRI4 +ARGI4 +ADDRFP4 8 +INDIRP4 +ARGP4 +ADDRFP4 12 +INDIRI4 +ARGI4 +ADDRGP4 UI_Crosshair_HandleKey +CALLI4 +pop +line 2718 +;2718: break; +ADDRGP4 $2106 +JUMPV +LABELV $2125 +line 2720 +;2719: case UI_SELECTEDPLAYER: +;2720: UI_SelectedPlayer_HandleKey(flags, special, key); +ADDRFP4 4 +INDIRI4 +ARGI4 +ADDRFP4 8 +INDIRP4 +ARGP4 +ADDRFP4 12 +INDIRI4 +ARGI4 +ADDRGP4 UI_SelectedPlayer_HandleKey +CALLI4 +pop +line 2721 +;2721: break; +line 2723 +;2722: default: +;2723: break; +LABELV $2106 +line 2726 +;2724: } +;2725: +;2726: return qfalse; +CNSTI4 0 +RETI4 +LABELV $2104 +endproc UI_OwnerDrawHandleKey 52 20 +proc UI_GetValue 0 0 +line 2730 +;2727:} +;2728: +;2729: +;2730:static float UI_GetValue(int ownerDraw) { +line 2731 +;2731: return 0; +CNSTF4 0 +RETF4 +LABELV $2128 +endproc UI_GetValue 0 0 +proc UI_ServersQsortCompare 4 20 +line 2739 +;2732:} +;2733: +;2734:/* +;2735:================= +;2736:UI_ServersQsortCompare +;2737:================= +;2738:*/ +;2739:static int QDECL UI_ServersQsortCompare( const void *arg1, const void *arg2 ) { +line 2740 +;2740: return trap_LAN_CompareServers( ui_netSource.integer, uiInfo.serverStatus.sortKey, uiInfo.serverStatus.sortDir, *(int*)arg1, *(int*)arg2); +ADDRGP4 ui_netSource+12 +INDIRI4 +ARGI4 +ADDRGP4 uiInfo+99264+2200 +INDIRI4 +ARGI4 +ADDRGP4 uiInfo+99264+2204 +INDIRI4 +ARGI4 +ADDRFP4 0 +INDIRP4 +INDIRI4 +ARGI4 +ADDRFP4 4 +INDIRP4 +INDIRI4 +ARGI4 +ADDRLP4 0 +ADDRGP4 trap_LAN_CompareServers +CALLI4 +ASGNI4 +ADDRLP4 0 +INDIRI4 +RETI4 +LABELV $2129 +endproc UI_ServersQsortCompare 4 20 +export UI_ServersSort +proc UI_ServersSort 0 16 +line 2749 +;2741:} +;2742: +;2743: +;2744:/* +;2745:================= +;2746:UI_ServersSort +;2747:================= +;2748:*/ +;2749:void UI_ServersSort(int column, qboolean force) { +line 2751 +;2750: +;2751: if ( !force ) { +ADDRFP4 4 +INDIRI4 +CNSTI4 0 +NEI4 $2136 +line 2752 +;2752: if ( uiInfo.serverStatus.sortKey == column ) { +ADDRGP4 uiInfo+99264+2200 +INDIRI4 +ADDRFP4 0 +INDIRI4 +NEI4 $2138 +line 2753 +;2753: return; +ADDRGP4 $2135 +JUMPV +LABELV $2138 +line 2755 +;2754: } +;2755: } +LABELV $2136 +line 2757 +;2756: +;2757: uiInfo.serverStatus.sortKey = column; +ADDRGP4 uiInfo+99264+2200 +ADDRFP4 0 +INDIRI4 +ASGNI4 +line 2758 +;2758: qsort( &uiInfo.serverStatus.displayServers[0], uiInfo.serverStatus.numDisplayServers, sizeof(int), UI_ServersQsortCompare); +ADDRGP4 uiInfo+99264+2220 +ARGP4 +ADDRGP4 uiInfo+99264+10412 +INDIRI4 +ARGI4 +CNSTI4 4 +ARGI4 +ADDRGP4 UI_ServersQsortCompare +ARGP4 +ADDRGP4 qsort +CALLV +pop +line 2759 +;2759:} +LABELV $2135 +endproc UI_ServersSort 0 16 +proc UI_LoadMods 2092 16 +line 2806 +;2760: +;2761:/* +;2762:static void UI_StartSinglePlayer() { +;2763: int i,j, k, skill; +;2764: char buff[1024]; +;2765: i = trap_Cvar_VariableValue( "ui_currentTier" ); +;2766: if (i < 0 || i >= tierCount) { +;2767: i = 0; +;2768: } +;2769: j = trap_Cvar_VariableValue("ui_currentMap"); +;2770: if (j < 0 || j > MAPS_PER_TIER) { +;2771: j = 0; +;2772: } +;2773: +;2774: trap_Cvar_SetValue( "singleplayer", 1 ); +;2775: trap_Cvar_SetValue( "g_gametype", Com_Clamp( 0, 7, tierList[i].gameTypes[j] ) ); +;2776: trap_Cmd_ExecuteText( EXEC_APPEND, va( "wait ; wait ; map %s\n", tierList[i].maps[j] ) ); +;2777: skill = trap_Cvar_VariableValue( "g_spSkill" ); +;2778: +;2779: if (j == MAPS_PER_TIER-1) { +;2780: k = UI_TeamIndexFromName(UI_Cvar_VariableString("ui_opponentName")); +;2781: Com_sprintf( buff, sizeof(buff), "wait ; addbot %s %i %s 250 %s\n", UI_AIFromName(teamList[k].teamMembers[0]), skill, "", teamList[k].teamMembers[0]); +;2782: } else { +;2783: k = UI_TeamIndexFromName(UI_Cvar_VariableString("ui_opponentName")); +;2784: for (i = 0; i < PLAYERS_PER_TEAM; i++) { +;2785: Com_sprintf( buff, sizeof(buff), "wait ; addbot %s %i %s 250 %s\n", UI_AIFromName(teamList[k].teamMembers[i]), skill, "Blue", teamList[k].teamMembers[i]); +;2786: trap_Cmd_ExecuteText( EXEC_APPEND, buff ); +;2787: } +;2788: +;2789: k = UI_TeamIndexFromName(UI_Cvar_VariableString("ui_teamName")); +;2790: for (i = 1; i < PLAYERS_PER_TEAM; i++) { +;2791: Com_sprintf( buff, sizeof(buff), "wait ; addbot %s %i %s 250 %s\n", UI_AIFromName(teamList[k].teamMembers[i]), skill, "Red", teamList[k].teamMembers[i]); +;2792: trap_Cmd_ExecuteText( EXEC_APPEND, buff ); +;2793: } +;2794: trap_Cmd_ExecuteText( EXEC_APPEND, "wait 5; team Red\n" ); +;2795: } +;2796: +;2797: +;2798:} +;2799:*/ +;2800: +;2801:/* +;2802:=============== +;2803:UI_LoadMods +;2804:=============== +;2805:*/ +;2806:static void UI_LoadMods() { +line 2814 +;2807: int numdirs; +;2808: char dirlist[2048]; +;2809: char *dirptr; +;2810: char *descptr; +;2811: int i; +;2812: int dirlen; +;2813: +;2814: uiInfo.modCount = 0; +ADDRGP4 uiInfo+97188 +CNSTI4 0 +ASGNI4 +line 2815 +;2815: numdirs = trap_FS_GetFileList( "$modlist", "", dirlist, sizeof(dirlist) ); +ADDRGP4 $2150 +ARGP4 +ADDRGP4 $112 +ARGP4 +ADDRLP4 20 +ARGP4 +CNSTI4 2048 +ARGI4 +ADDRLP4 2068 +ADDRGP4 trap_FS_GetFileList +CALLI4 +ASGNI4 +ADDRLP4 16 +ADDRLP4 2068 +INDIRI4 +ASGNI4 +line 2816 +;2816: dirptr = dirlist; +ADDRLP4 0 +ADDRLP4 20 +ASGNP4 +line 2817 +;2817: for( i = 0; i < numdirs; i++ ) { +ADDRLP4 12 +CNSTI4 0 +ASGNI4 +ADDRGP4 $2154 +JUMPV +LABELV $2151 +line 2818 +;2818: dirlen = strlen( dirptr ) + 1; +ADDRLP4 0 +INDIRP4 +ARGP4 +ADDRLP4 2072 +ADDRGP4 strlen +CALLI4 +ASGNI4 +ADDRLP4 8 +ADDRLP4 2072 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 2819 +;2819: descptr = dirptr + dirlen; +ADDRLP4 4 +ADDRLP4 8 +INDIRI4 +ADDRLP4 0 +INDIRP4 +ADDP4 +ASGNP4 +line 2820 +;2820: uiInfo.modList[uiInfo.modCount].modName = String_Alloc(dirptr); +ADDRLP4 0 +INDIRP4 +ARGP4 +ADDRLP4 2076 +ADDRGP4 String_Alloc +CALLP4 +ASGNP4 +ADDRGP4 uiInfo+97188 +INDIRI4 +CNSTI4 3 +LSHI4 +ADDRGP4 uiInfo+96676 +ADDP4 +ADDRLP4 2076 +INDIRP4 +ASGNP4 +line 2821 +;2821: uiInfo.modList[uiInfo.modCount].modDescr = String_Alloc(descptr); +ADDRLP4 4 +INDIRP4 +ARGP4 +ADDRLP4 2080 +ADDRGP4 String_Alloc +CALLP4 +ASGNP4 +ADDRGP4 uiInfo+97188 +INDIRI4 +CNSTI4 3 +LSHI4 +ADDRGP4 uiInfo+96676+4 +ADDP4 +ADDRLP4 2080 +INDIRP4 +ASGNP4 +line 2822 +;2822: dirptr += dirlen + strlen(descptr) + 1; +ADDRLP4 4 +INDIRP4 +ARGP4 +ADDRLP4 2084 +ADDRGP4 strlen +CALLI4 +ASGNI4 +ADDRLP4 0 +ADDRLP4 8 +INDIRI4 +ADDRLP4 2084 +INDIRI4 +ADDI4 +CNSTI4 1 +ADDI4 +ADDRLP4 0 +INDIRP4 +ADDP4 +ASGNP4 +line 2823 +;2823: uiInfo.modCount++; +ADDRLP4 2088 +ADDRGP4 uiInfo+97188 +ASGNP4 +ADDRLP4 2088 +INDIRP4 +ADDRLP4 2088 +INDIRP4 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 2824 +;2824: if (uiInfo.modCount >= MAX_MODS) { +ADDRGP4 uiInfo+97188 +INDIRI4 +CNSTI4 64 +LTI4 $2161 +line 2825 +;2825: break; +ADDRGP4 $2153 +JUMPV +LABELV $2161 +line 2827 +;2826: } +;2827: } +LABELV $2152 +line 2817 +ADDRLP4 12 +ADDRLP4 12 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +LABELV $2154 +ADDRLP4 12 +INDIRI4 +ADDRLP4 16 +INDIRI4 +LTI4 $2151 +LABELV $2153 +line 2829 +;2828: +;2829:} +LABELV $2148 +endproc UI_LoadMods 2092 16 +proc UI_LoadTeams 4120 16 +line 2837 +;2830: +;2831: +;2832:/* +;2833:=============== +;2834:UI_LoadTeams +;2835:=============== +;2836:*/ +;2837:static void UI_LoadTeams() { +line 2842 +;2838: char teamList[4096]; +;2839: char *teamName; +;2840: int i, len, count; +;2841: +;2842: count = trap_FS_GetFileList( "", "team", teamList, 4096 ); +ADDRGP4 $112 +ARGP4 +ADDRGP4 $2165 +ARGP4 +ADDRLP4 16 +ARGP4 +CNSTI4 4096 +ARGI4 +ADDRLP4 4112 +ADDRGP4 trap_FS_GetFileList +CALLI4 +ASGNI4 +ADDRLP4 12 +ADDRLP4 4112 +INDIRI4 +ASGNI4 +line 2844 +;2843: +;2844: if (count) { +ADDRLP4 12 +INDIRI4 +CNSTI4 0 +EQI4 $2166 +line 2845 +;2845: teamName = teamList; +ADDRLP4 0 +ADDRLP4 16 +ASGNP4 +line 2846 +;2846: for ( i = 0; i < count; i++ ) { +ADDRLP4 4 +CNSTI4 0 +ASGNI4 +ADDRGP4 $2171 +JUMPV +LABELV $2168 +line 2847 +;2847: len = strlen( teamName ); +ADDRLP4 0 +INDIRP4 +ARGP4 +ADDRLP4 4116 +ADDRGP4 strlen +CALLI4 +ASGNI4 +ADDRLP4 8 +ADDRLP4 4116 +INDIRI4 +ASGNI4 +line 2848 +;2848: UI_ParseTeamInfo(teamName); +ADDRLP4 0 +INDIRP4 +ARGP4 +ADDRGP4 UI_ParseTeamInfo +CALLV +pop +line 2849 +;2849: teamName += len + 1; +ADDRLP4 0 +ADDRLP4 8 +INDIRI4 +CNSTI4 1 +ADDI4 +ADDRLP4 0 +INDIRP4 +ADDP4 +ASGNP4 +line 2850 +;2850: } +LABELV $2169 +line 2846 +ADDRLP4 4 +ADDRLP4 4 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +LABELV $2171 +ADDRLP4 4 +INDIRI4 +ADDRLP4 12 +INDIRI4 +LTI4 $2168 +line 2851 +;2851: } +LABELV $2166 +line 2853 +;2852: +;2853:} +LABELV $2164 +endproc UI_LoadTeams 4120 16 +proc UI_LoadMovies 4124 16 +line 2861 +;2854: +;2855: +;2856:/* +;2857:=============== +;2858:UI_LoadMovies +;2859:=============== +;2860:*/ +;2861:static void UI_LoadMovies() { +line 2866 +;2862: char movielist[4096]; +;2863: char *moviename; +;2864: int i, len; +;2865: +;2866: uiInfo.movieCount = trap_FS_GetFileList( "video", "roq", movielist, 4096 ); +ADDRGP4 $2174 +ARGP4 +ADDRGP4 $2175 +ARGP4 +ADDRLP4 12 +ARGP4 +CNSTI4 4096 +ARGI4 +ADDRLP4 4108 +ADDRGP4 trap_FS_GetFileList +CALLI4 +ASGNI4 +ADDRGP4 uiInfo+99252 +ADDRLP4 4108 +INDIRI4 +ASGNI4 +line 2868 +;2867: +;2868: if (uiInfo.movieCount) { +ADDRGP4 uiInfo+99252 +INDIRI4 +CNSTI4 0 +EQI4 $2176 +line 2869 +;2869: if (uiInfo.movieCount > MAX_MOVIES) { +ADDRGP4 uiInfo+99252 +INDIRI4 +CNSTI4 256 +LEI4 $2179 +line 2870 +;2870: uiInfo.movieCount = MAX_MOVIES; +ADDRGP4 uiInfo+99252 +CNSTI4 256 +ASGNI4 +line 2871 +;2871: } +LABELV $2179 +line 2872 +;2872: moviename = movielist; +ADDRLP4 0 +ADDRLP4 12 +ASGNP4 +line 2873 +;2873: for ( i = 0; i < uiInfo.movieCount; i++ ) { +ADDRLP4 8 +CNSTI4 0 +ASGNI4 +ADDRGP4 $2186 +JUMPV +LABELV $2183 +line 2874 +;2874: len = strlen( moviename ); +ADDRLP4 0 +INDIRP4 +ARGP4 +ADDRLP4 4112 +ADDRGP4 strlen +CALLI4 +ASGNI4 +ADDRLP4 4 +ADDRLP4 4112 +INDIRI4 +ASGNI4 +line 2875 +;2875: if (!Q_stricmp(moviename + len - 4,".roq")) { +ADDRLP4 4 +INDIRI4 +ADDRLP4 0 +INDIRP4 +ADDP4 +CNSTI4 -4 +ADDP4 +ARGP4 +ADDRGP4 $2190 +ARGP4 +ADDRLP4 4116 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 4116 +INDIRI4 +CNSTI4 0 +NEI4 $2188 +line 2876 +;2876: moviename[len-4] = '\0'; +ADDRLP4 4 +INDIRI4 +CNSTI4 4 +SUBI4 +ADDRLP4 0 +INDIRP4 +ADDP4 +CNSTI1 0 +ASGNI1 +line 2877 +;2877: } +LABELV $2188 +line 2878 +;2878: Q_strupr(moviename); +ADDRLP4 0 +INDIRP4 +ARGP4 +ADDRGP4 Q_strupr +CALLP4 +pop +line 2879 +;2879: uiInfo.movieList[i] = String_Alloc(moviename); +ADDRLP4 0 +INDIRP4 +ARGP4 +ADDRLP4 4120 +ADDRGP4 String_Alloc +CALLP4 +ASGNP4 +ADDRLP4 8 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 uiInfo+98228 +ADDP4 +ADDRLP4 4120 +INDIRP4 +ASGNP4 +line 2880 +;2880: moviename += len + 1; +ADDRLP4 0 +ADDRLP4 4 +INDIRI4 +CNSTI4 1 +ADDI4 +ADDRLP4 0 +INDIRP4 +ADDP4 +ASGNP4 +line 2881 +;2881: } +LABELV $2184 +line 2873 +ADDRLP4 8 +ADDRLP4 8 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +LABELV $2186 +ADDRLP4 8 +INDIRI4 +ADDRGP4 uiInfo+99252 +INDIRI4 +LTI4 $2183 +line 2882 +;2882: } +LABELV $2176 +line 2884 +;2883: +;2884:} +LABELV $2172 +endproc UI_LoadMovies 4124 16 +proc UI_LoadDemos 4168 16 +line 2893 +;2885: +;2886: +;2887: +;2888:/* +;2889:=============== +;2890:UI_LoadDemos +;2891:=============== +;2892:*/ +;2893:static void UI_LoadDemos() { +line 2899 +;2894: char demolist[4096]; +;2895: char demoExt[32]; +;2896: char *demoname; +;2897: int i, len; +;2898: +;2899: Com_sprintf(demoExt, sizeof(demoExt), "dm_%d", (int)trap_Cvar_VariableValue("protocol")); +ADDRGP4 $2194 +ARGP4 +ADDRLP4 4140 +ADDRGP4 trap_Cvar_VariableValue +CALLF4 +ASGNF4 +ADDRLP4 4 +ARGP4 +CNSTI4 32 +ARGI4 +ADDRGP4 $2193 +ARGP4 +ADDRLP4 4140 +INDIRF4 +CVFI4 4 +ARGI4 +ADDRGP4 Com_sprintf +CALLV +pop +line 2901 +;2900: +;2901: uiInfo.demoCount = trap_FS_GetFileList( "demos", demoExt, demolist, 4096 ); +ADDRGP4 $2196 +ARGP4 +ADDRLP4 4 +ARGP4 +ADDRLP4 44 +ARGP4 +CNSTI4 4096 +ARGI4 +ADDRLP4 4144 +ADDRGP4 trap_FS_GetFileList +CALLI4 +ASGNI4 +ADDRGP4 uiInfo+98220 +ADDRLP4 4144 +INDIRI4 +ASGNI4 +line 2903 +;2902: +;2903: Com_sprintf(demoExt, sizeof(demoExt), ".dm_%d", (int)trap_Cvar_VariableValue("protocol")); +ADDRGP4 $2194 +ARGP4 +ADDRLP4 4148 +ADDRGP4 trap_Cvar_VariableValue +CALLF4 +ASGNF4 +ADDRLP4 4 +ARGP4 +CNSTI4 32 +ARGI4 +ADDRGP4 $2197 +ARGP4 +ADDRLP4 4148 +INDIRF4 +CVFI4 4 +ARGI4 +ADDRGP4 Com_sprintf +CALLV +pop +line 2905 +;2904: +;2905: if (uiInfo.demoCount) { +ADDRGP4 uiInfo+98220 +INDIRI4 +CNSTI4 0 +EQI4 $2198 +line 2906 +;2906: if (uiInfo.demoCount > MAX_DEMOS) { +ADDRGP4 uiInfo+98220 +INDIRI4 +CNSTI4 256 +LEI4 $2201 +line 2907 +;2907: uiInfo.demoCount = MAX_DEMOS; +ADDRGP4 uiInfo+98220 +CNSTI4 256 +ASGNI4 +line 2908 +;2908: } +LABELV $2201 +line 2909 +;2909: demoname = demolist; +ADDRLP4 0 +ADDRLP4 44 +ASGNP4 +line 2910 +;2910: for ( i = 0; i < uiInfo.demoCount; i++ ) { +ADDRLP4 40 +CNSTI4 0 +ASGNI4 +ADDRGP4 $2208 +JUMPV +LABELV $2205 +line 2911 +;2911: len = strlen( demoname ); +ADDRLP4 0 +INDIRP4 +ARGP4 +ADDRLP4 4152 +ADDRGP4 strlen +CALLI4 +ASGNI4 +ADDRLP4 36 +ADDRLP4 4152 +INDIRI4 +ASGNI4 +line 2912 +;2912: if (!Q_stricmp(demoname + len - strlen(demoExt), demoExt)) { +ADDRLP4 4 +ARGP4 +ADDRLP4 4156 +ADDRGP4 strlen +CALLI4 +ASGNI4 +ADDRLP4 36 +INDIRI4 +ADDRLP4 0 +INDIRP4 +ADDP4 +ADDRLP4 4156 +INDIRI4 +SUBP4 +ARGP4 +ADDRLP4 4 +ARGP4 +ADDRLP4 4160 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 4160 +INDIRI4 +CNSTI4 0 +NEI4 $2210 +line 2913 +;2913: demoname[len-strlen(demoExt)] = '\0'; +ADDRLP4 4 +ARGP4 +ADDRLP4 4164 +ADDRGP4 strlen +CALLI4 +ASGNI4 +ADDRLP4 36 +INDIRI4 +ADDRLP4 4164 +INDIRI4 +SUBI4 +ADDRLP4 0 +INDIRP4 +ADDP4 +CNSTI1 0 +ASGNI1 +line 2914 +;2914: } +LABELV $2210 +line 2915 +;2915: Q_strupr(demoname); +ADDRLP4 0 +INDIRP4 +ARGP4 +ADDRGP4 Q_strupr +CALLP4 +pop +line 2916 +;2916: uiInfo.demoList[i] = String_Alloc(demoname); +ADDRLP4 0 +INDIRP4 +ARGP4 +ADDRLP4 4164 +ADDRGP4 String_Alloc +CALLP4 +ASGNP4 +ADDRLP4 40 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 uiInfo+97196 +ADDP4 +ADDRLP4 4164 +INDIRP4 +ASGNP4 +line 2917 +;2917: demoname += len + 1; +ADDRLP4 0 +ADDRLP4 36 +INDIRI4 +CNSTI4 1 +ADDI4 +ADDRLP4 0 +INDIRP4 +ADDP4 +ASGNP4 +line 2918 +;2918: } +LABELV $2206 +line 2910 +ADDRLP4 40 +ADDRLP4 40 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +LABELV $2208 +ADDRLP4 40 +INDIRI4 +ADDRGP4 uiInfo+98220 +INDIRI4 +LTI4 $2205 +line 2919 +;2919: } +LABELV $2198 +line 2921 +;2920: +;2921:} +LABELV $2192 +endproc UI_LoadDemos 4168 16 +proc UI_SetNextMap 8 16 +line 2924 +;2922: +;2923: +;2924:static qboolean UI_SetNextMap(int actual, int index) { +line 2926 +;2925: int i; +;2926: for (i = actual + 1; i < uiInfo.mapCount; i++) { +ADDRLP4 0 +ADDRFP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +ADDRGP4 $2217 +JUMPV +LABELV $2214 +line 2927 +;2927: if (uiInfo.mapList[i].active) { +CNSTI4 100 +ADDRLP4 0 +INDIRI4 +MULI4 +ADDRGP4 uiInfo+83228+96 +ADDP4 +INDIRI4 +CNSTI4 0 +EQI4 $2219 +line 2928 +;2928: Menu_SetFeederSelection(NULL, FEEDER_MAPS, index + 1, "skirmish"); +CNSTP4 0 +ARGP4 +ADDRLP4 4 +CNSTI4 1 +ASGNI4 +ADDRLP4 4 +INDIRI4 +ARGI4 +ADDRFP4 4 +INDIRI4 +ADDRLP4 4 +INDIRI4 +ADDI4 +ARGI4 +ADDRGP4 $2223 +ARGP4 +ADDRGP4 Menu_SetFeederSelection +CALLV +pop +line 2929 +;2929: return qtrue; +CNSTI4 1 +RETI4 +ADDRGP4 $2213 +JUMPV +LABELV $2219 +line 2931 +;2930: } +;2931: } +LABELV $2215 +line 2926 +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +LABELV $2217 +ADDRLP4 0 +INDIRI4 +ADDRGP4 uiInfo+83224 +INDIRI4 +LTI4 $2214 +line 2932 +;2932: return qfalse; +CNSTI4 0 +RETI4 +LABELV $2213 +endproc UI_SetNextMap 8 16 +proc UI_StartSkirmish 1160 32 +line 2936 +;2933:} +;2934: +;2935: +;2936:static void UI_StartSkirmish(qboolean next) { +line 2941 +;2937: int i, k, g, delay, temp; +;2938: float skill; +;2939: char buff[MAX_STRING_CHARS]; +;2940: +;2941: if (next) { +ADDRFP4 0 +INDIRI4 +CNSTI4 0 +EQI4 $2225 +line 2943 +;2942: int actual; +;2943: int index = trap_Cvar_VariableValue("ui_mapIndex"); +ADDRGP4 $2227 +ARGP4 +ADDRLP4 1056 +ADDRGP4 trap_Cvar_VariableValue +CALLF4 +ASGNF4 +ADDRLP4 1048 +ADDRLP4 1056 +INDIRF4 +CVFI4 4 +ASGNI4 +line 2944 +;2944: UI_MapCountByGameType(qtrue); +CNSTI4 1 +ARGI4 +ADDRGP4 UI_MapCountByGameType +CALLI4 +pop +line 2945 +;2945: UI_SelectedMap(index, &actual); +ADDRLP4 1048 +INDIRI4 +ARGI4 +ADDRLP4 1052 +ARGP4 +ADDRGP4 UI_SelectedMap +CALLP4 +pop +line 2946 +;2946: if (UI_SetNextMap(actual, index)) { +ADDRLP4 1052 +INDIRI4 +ARGI4 +ADDRLP4 1048 +INDIRI4 +ARGI4 +ADDRLP4 1060 +ADDRGP4 UI_SetNextMap +CALLI4 +ASGNI4 +ADDRLP4 1060 +INDIRI4 +CNSTI4 0 +EQI4 $2228 +line 2947 +;2947: } else { +ADDRGP4 $2229 +JUMPV +LABELV $2228 +line 2948 +;2948: UI_GameType_HandleKey(0, 0, K_MOUSE1, qfalse); +ADDRLP4 1064 +CNSTI4 0 +ASGNI4 +ADDRLP4 1064 +INDIRI4 +ARGI4 +CNSTP4 0 +ARGP4 +CNSTI4 178 +ARGI4 +ADDRLP4 1064 +INDIRI4 +ARGI4 +ADDRGP4 UI_GameType_HandleKey +CALLI4 +pop +line 2949 +;2949: UI_MapCountByGameType(qtrue); +CNSTI4 1 +ARGI4 +ADDRGP4 UI_MapCountByGameType +CALLI4 +pop +line 2950 +;2950: Menu_SetFeederSelection(NULL, FEEDER_MAPS, 0, "skirmish"); +CNSTP4 0 +ARGP4 +CNSTI4 1 +ARGI4 +CNSTI4 0 +ARGI4 +ADDRGP4 $2223 +ARGP4 +ADDRGP4 Menu_SetFeederSelection +CALLV +pop +line 2951 +;2951: } +LABELV $2229 +line 2952 +;2952: } +LABELV $2225 +line 2954 +;2953: +;2954: g = uiInfo.gameTypes[ui_gameType.integer].gtEnum; +ADDRLP4 1040 +ADDRGP4 ui_gameType+12 +INDIRI4 +CNSTI4 3 +LSHI4 +ADDRGP4 uiInfo+78580+4 +ADDP4 +INDIRI4 +ASGNI4 +line 2955 +;2955: trap_Cvar_SetValue( "g_gametype", g ); +ADDRGP4 $1362 +ARGP4 +ADDRLP4 1040 +INDIRI4 +CVIF4 4 +ARGF4 +ADDRGP4 trap_Cvar_SetValue +CALLV +pop +line 2956 +;2956: trap_Cmd_ExecuteText( EXEC_APPEND, va( "wait ; wait ; map %s\n", uiInfo.mapList[ui_currentMap.integer].mapLoadName) ); +ADDRGP4 $2233 +ARGP4 +CNSTI4 100 +ADDRGP4 ui_currentMap+12 +INDIRI4 +MULI4 +ADDRGP4 uiInfo+83228+4 +ADDP4 +INDIRP4 +ARGP4 +ADDRLP4 1048 +ADDRGP4 va +CALLP4 +ASGNP4 +CNSTI4 2 +ARGI4 +ADDRLP4 1048 +INDIRP4 +ARGP4 +ADDRGP4 trap_Cmd_ExecuteText +CALLV +pop +line 2957 +;2957: skill = trap_Cvar_VariableValue( "g_spSkill" ); +ADDRGP4 $827 +ARGP4 +ADDRLP4 1052 +ADDRGP4 trap_Cvar_VariableValue +CALLF4 +ASGNF4 +ADDRLP4 1044 +ADDRLP4 1052 +INDIRF4 +ASGNF4 +line 2958 +;2958: trap_Cvar_Set("ui_scoreMap", uiInfo.mapList[ui_currentMap.integer].mapName); +ADDRGP4 $2237 +ARGP4 +CNSTI4 100 +ADDRGP4 ui_currentMap+12 +INDIRI4 +MULI4 +ADDRGP4 uiInfo+83228 +ADDP4 +INDIRP4 +ARGP4 +ADDRGP4 trap_Cvar_Set +CALLV +pop +line 2960 +;2959: +;2960: k = UI_TeamIndexFromName(UI_Cvar_VariableString("ui_opponentName")); +ADDRGP4 $1081 +ARGP4 +ADDRLP4 1056 +ADDRGP4 UI_Cvar_VariableString +CALLP4 +ASGNP4 +ADDRLP4 1056 +INDIRP4 +ARGP4 +ADDRLP4 1060 +ADDRGP4 UI_TeamIndexFromName +CALLI4 +ASGNI4 +ADDRLP4 1028 +ADDRLP4 1060 +INDIRI4 +ASGNI4 +line 2962 +;2961: +;2962: trap_Cvar_Set("ui_singlePlayerActive", "1"); +ADDRGP4 $2240 +ARGP4 +ADDRGP4 $398 +ARGP4 +ADDRGP4 trap_Cvar_Set +CALLV +pop +line 2965 +;2963: +;2964: // set up sp overrides, will be replaced on postgame +;2965: temp = trap_Cvar_VariableValue( "capturelimit" ); +ADDRGP4 $718 +ARGP4 +ADDRLP4 1064 +ADDRGP4 trap_Cvar_VariableValue +CALLF4 +ASGNF4 +ADDRLP4 1036 +ADDRLP4 1064 +INDIRF4 +CVFI4 4 +ASGNI4 +line 2966 +;2966: trap_Cvar_Set("ui_saveCaptureLimit", va("%i", temp)); +ADDRGP4 $1776 +ARGP4 +ADDRLP4 1036 +INDIRI4 +ARGI4 +ADDRLP4 1068 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRGP4 $2241 +ARGP4 +ADDRLP4 1068 +INDIRP4 +ARGP4 +ADDRGP4 trap_Cvar_Set +CALLV +pop +line 2967 +;2967: temp = trap_Cvar_VariableValue( "fraglimit" ); +ADDRGP4 $719 +ARGP4 +ADDRLP4 1072 +ADDRGP4 trap_Cvar_VariableValue +CALLF4 +ASGNF4 +ADDRLP4 1036 +ADDRLP4 1072 +INDIRF4 +CVFI4 4 +ASGNI4 +line 2968 +;2968: trap_Cvar_Set("ui_saveFragLimit", va("%i", temp)); +ADDRGP4 $1776 +ARGP4 +ADDRLP4 1036 +INDIRI4 +ARGI4 +ADDRLP4 1076 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRGP4 $2242 +ARGP4 +ADDRLP4 1076 +INDIRP4 +ARGP4 +ADDRGP4 trap_Cvar_Set +CALLV +pop +line 2970 +;2969: +;2970: UI_SetCapFragLimits(qfalse); +CNSTI4 0 +ARGI4 +ADDRGP4 UI_SetCapFragLimits +CALLV +pop +line 2972 +;2971: +;2972: temp = trap_Cvar_VariableValue( "cg_drawTimer" ); +ADDRGP4 $2243 +ARGP4 +ADDRLP4 1080 +ADDRGP4 trap_Cvar_VariableValue +CALLF4 +ASGNF4 +ADDRLP4 1036 +ADDRLP4 1080 +INDIRF4 +CVFI4 4 +ASGNI4 +line 2973 +;2973: trap_Cvar_Set("ui_drawTimer", va("%i", temp)); +ADDRGP4 $1776 +ARGP4 +ADDRLP4 1036 +INDIRI4 +ARGI4 +ADDRLP4 1084 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRGP4 $2244 +ARGP4 +ADDRLP4 1084 +INDIRP4 +ARGP4 +ADDRGP4 trap_Cvar_Set +CALLV +pop +line 2974 +;2974: temp = trap_Cvar_VariableValue( "g_doWarmup" ); +ADDRGP4 $2245 +ARGP4 +ADDRLP4 1088 +ADDRGP4 trap_Cvar_VariableValue +CALLF4 +ASGNF4 +ADDRLP4 1036 +ADDRLP4 1088 +INDIRF4 +CVFI4 4 +ASGNI4 +line 2975 +;2975: trap_Cvar_Set("ui_doWarmup", va("%i", temp)); +ADDRGP4 $1776 +ARGP4 +ADDRLP4 1036 +INDIRI4 +ARGI4 +ADDRLP4 1092 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRGP4 $2246 +ARGP4 +ADDRLP4 1092 +INDIRP4 +ARGP4 +ADDRGP4 trap_Cvar_Set +CALLV +pop +line 2976 +;2976: temp = trap_Cvar_VariableValue( "g_friendlyFire" ); +ADDRGP4 $2247 +ARGP4 +ADDRLP4 1096 +ADDRGP4 trap_Cvar_VariableValue +CALLF4 +ASGNF4 +ADDRLP4 1036 +ADDRLP4 1096 +INDIRF4 +CVFI4 4 +ASGNI4 +line 2977 +;2977: trap_Cvar_Set("ui_friendlyFire", va("%i", temp)); +ADDRGP4 $1776 +ARGP4 +ADDRLP4 1036 +INDIRI4 +ARGI4 +ADDRLP4 1100 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRGP4 $2248 +ARGP4 +ADDRLP4 1100 +INDIRP4 +ARGP4 +ADDRGP4 trap_Cvar_Set +CALLV +pop +line 2978 +;2978: temp = trap_Cvar_VariableValue( "sv_maxClients" ); +ADDRGP4 $2249 +ARGP4 +ADDRLP4 1104 +ADDRGP4 trap_Cvar_VariableValue +CALLF4 +ASGNF4 +ADDRLP4 1036 +ADDRLP4 1104 +INDIRF4 +CVFI4 4 +ASGNI4 +line 2979 +;2979: trap_Cvar_Set("ui_maxClients", va("%i", temp)); +ADDRGP4 $1776 +ARGP4 +ADDRLP4 1036 +INDIRI4 +ARGI4 +ADDRLP4 1108 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRGP4 $2250 +ARGP4 +ADDRLP4 1108 +INDIRP4 +ARGP4 +ADDRGP4 trap_Cvar_Set +CALLV +pop +line 2980 +;2980: temp = trap_Cvar_VariableValue( "g_warmup" ); +ADDRGP4 $2251 +ARGP4 +ADDRLP4 1112 +ADDRGP4 trap_Cvar_VariableValue +CALLF4 +ASGNF4 +ADDRLP4 1036 +ADDRLP4 1112 +INDIRF4 +CVFI4 4 +ASGNI4 +line 2981 +;2981: trap_Cvar_Set("ui_Warmup", va("%i", temp)); +ADDRGP4 $1776 +ARGP4 +ADDRLP4 1036 +INDIRI4 +ARGI4 +ADDRLP4 1116 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRGP4 $2252 +ARGP4 +ADDRLP4 1116 +INDIRP4 +ARGP4 +ADDRGP4 trap_Cvar_Set +CALLV +pop +line 2982 +;2982: temp = trap_Cvar_VariableValue( "sv_pure" ); +ADDRGP4 $2253 +ARGP4 +ADDRLP4 1120 +ADDRGP4 trap_Cvar_VariableValue +CALLF4 +ASGNF4 +ADDRLP4 1036 +ADDRLP4 1120 +INDIRF4 +CVFI4 4 +ASGNI4 +line 2983 +;2983: trap_Cvar_Set("ui_pure", va("%i", temp)); +ADDRGP4 $1776 +ARGP4 +ADDRLP4 1036 +INDIRI4 +ARGI4 +ADDRLP4 1124 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRGP4 $2254 +ARGP4 +ADDRLP4 1124 +INDIRP4 +ARGP4 +ADDRGP4 trap_Cvar_Set +CALLV +pop +line 2985 +;2984: +;2985: trap_Cvar_Set("cg_cameraOrbit", "0"); +ADDRGP4 $394 +ARGP4 +ADDRGP4 $395 +ARGP4 +ADDRGP4 trap_Cvar_Set +CALLV +pop +line 2986 +;2986: trap_Cvar_Set("cg_thirdPerson", "0"); +ADDRGP4 $396 +ARGP4 +ADDRGP4 $395 +ARGP4 +ADDRGP4 trap_Cvar_Set +CALLV +pop +line 2987 +;2987: trap_Cvar_Set("cg_drawTimer", "1"); +ADDRGP4 $2243 +ARGP4 +ADDRGP4 $398 +ARGP4 +ADDRGP4 trap_Cvar_Set +CALLV +pop +line 2988 +;2988: trap_Cvar_Set("g_doWarmup", "1"); +ADDRGP4 $2245 +ARGP4 +ADDRGP4 $398 +ARGP4 +ADDRGP4 trap_Cvar_Set +CALLV +pop +line 2989 +;2989: trap_Cvar_Set("g_warmup", "15"); +ADDRGP4 $2251 +ARGP4 +ADDRGP4 $695 +ARGP4 +ADDRGP4 trap_Cvar_Set +CALLV +pop +line 2990 +;2990: trap_Cvar_Set("sv_pure", "0"); +ADDRGP4 $2253 +ARGP4 +ADDRGP4 $395 +ARGP4 +ADDRGP4 trap_Cvar_Set +CALLV +pop +line 2991 +;2991: trap_Cvar_Set("g_friendlyFire", "0"); +ADDRGP4 $2247 +ARGP4 +ADDRGP4 $395 +ARGP4 +ADDRGP4 trap_Cvar_Set +CALLV +pop +line 2992 +;2992: trap_Cvar_Set("g_redTeam", UI_Cvar_VariableString("ui_teamName")); +ADDRGP4 $701 +ARGP4 +ADDRLP4 1128 +ADDRGP4 UI_Cvar_VariableString +CALLP4 +ASGNP4 +ADDRGP4 $2255 +ARGP4 +ADDRLP4 1128 +INDIRP4 +ARGP4 +ADDRGP4 trap_Cvar_Set +CALLV +pop +line 2993 +;2993: trap_Cvar_Set("g_blueTeam", UI_Cvar_VariableString("ui_opponentName")); +ADDRGP4 $1081 +ARGP4 +ADDRLP4 1132 +ADDRGP4 UI_Cvar_VariableString +CALLP4 +ASGNP4 +ADDRGP4 $2256 +ARGP4 +ADDRLP4 1132 +INDIRP4 +ARGP4 +ADDRGP4 trap_Cvar_Set +CALLV +pop +line 2995 +;2994: +;2995: if (trap_Cvar_VariableValue("ui_recordSPDemo")) { +ADDRGP4 $2259 +ARGP4 +ADDRLP4 1136 +ADDRGP4 trap_Cvar_VariableValue +CALLF4 +ASGNF4 +ADDRLP4 1136 +INDIRF4 +CNSTF4 0 +EQF4 $2257 +line 2996 +;2996: Com_sprintf(buff, MAX_STRING_CHARS, "%s_%i", uiInfo.mapList[ui_currentMap.integer].mapLoadName, g); +ADDRLP4 4 +ARGP4 +CNSTI4 1024 +ARGI4 +ADDRGP4 $2260 +ARGP4 +CNSTI4 100 +ADDRGP4 ui_currentMap+12 +INDIRI4 +MULI4 +ADDRGP4 uiInfo+83228+4 +ADDP4 +INDIRP4 +ARGP4 +ADDRLP4 1040 +INDIRI4 +ARGI4 +ADDRGP4 Com_sprintf +CALLV +pop +line 2997 +;2997: trap_Cvar_Set("ui_recordSPDemoName", buff); +ADDRGP4 $2264 +ARGP4 +ADDRLP4 4 +ARGP4 +ADDRGP4 trap_Cvar_Set +CALLV +pop +line 2998 +;2998: } +LABELV $2257 +line 3000 +;2999: +;3000: delay = 500; +ADDRLP4 1032 +CNSTI4 500 +ASGNI4 +line 3002 +;3001: +;3002: if (g == GT_TOURNAMENT) { +ADDRLP4 1040 +INDIRI4 +CNSTI4 1 +NEI4 $2265 +line 3003 +;3003: trap_Cvar_Set("sv_maxClients", "2"); +ADDRGP4 $2249 +ARGP4 +ADDRGP4 $2267 +ARGP4 +ADDRGP4 trap_Cvar_Set +CALLV +pop +line 3004 +;3004: Com_sprintf( buff, sizeof(buff), "wait ; addbot %s %f "", %i \n", uiInfo.mapList[ui_currentMap.integer].opponentName, skill, delay); +ADDRLP4 4 +ARGP4 +CNSTI4 1024 +ARGI4 +ADDRGP4 $2268 +ARGP4 +CNSTI4 100 +ADDRGP4 ui_currentMap+12 +INDIRI4 +MULI4 +ADDRGP4 uiInfo+83228+12 +ADDP4 +INDIRP4 +ARGP4 +ADDRLP4 1044 +INDIRF4 +ARGF4 +ADDRLP4 1032 +INDIRI4 +ARGI4 +ADDRGP4 Com_sprintf +CALLV +pop +line 3005 +;3005: trap_Cmd_ExecuteText( EXEC_APPEND, buff ); +CNSTI4 2 +ARGI4 +ADDRLP4 4 +ARGP4 +ADDRGP4 trap_Cmd_ExecuteText +CALLV +pop +line 3006 +;3006: } else { +ADDRGP4 $2266 +JUMPV +LABELV $2265 +line 3007 +;3007: temp = uiInfo.mapList[ui_currentMap.integer].teamMembers * 2; +ADDRLP4 1036 +CNSTI4 100 +ADDRGP4 ui_currentMap+12 +INDIRI4 +MULI4 +ADDRGP4 uiInfo+83228+16 +ADDP4 +INDIRI4 +CNSTI4 1 +LSHI4 +ASGNI4 +line 3008 +;3008: trap_Cvar_Set("sv_maxClients", va("%d", temp)); +ADDRGP4 $716 +ARGP4 +ADDRLP4 1036 +INDIRI4 +ARGI4 +ADDRLP4 1140 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRGP4 $2249 +ARGP4 +ADDRLP4 1140 +INDIRP4 +ARGP4 +ADDRGP4 trap_Cvar_Set +CALLV +pop +line 3009 +;3009: for (i =0; i < uiInfo.mapList[ui_currentMap.integer].teamMembers; i++) { +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +ADDRGP4 $2278 +JUMPV +LABELV $2275 +line 3010 +;3010: Com_sprintf( buff, sizeof(buff), "addbot %s %f %s %i %s\n", UI_AIFromName(uiInfo.teamList[k].teamMembers[i]), skill, (g == GT_FFA) ? "" : "Blue", delay, uiInfo.teamList[k].teamMembers[i]); +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +CNSTI4 44 +ADDRLP4 1028 +INDIRI4 +MULI4 +ADDRGP4 uiInfo+75760+8 +ADDP4 +ADDP4 +INDIRP4 +ARGP4 +ADDRLP4 1148 +ADDRGP4 UI_AIFromName +CALLP4 +ASGNP4 +ADDRLP4 4 +ARGP4 +CNSTI4 1024 +ARGI4 +ADDRGP4 $2282 +ARGP4 +ADDRLP4 1148 +INDIRP4 +ARGP4 +ADDRLP4 1044 +INDIRF4 +ARGF4 +ADDRLP4 1040 +INDIRI4 +CNSTI4 0 +NEI4 $2288 +ADDRLP4 1144 +ADDRGP4 $112 +ASGNP4 +ADDRGP4 $2289 +JUMPV +LABELV $2288 +ADDRLP4 1144 +ADDRGP4 $842 +ASGNP4 +LABELV $2289 +ADDRLP4 1144 +INDIRP4 +ARGP4 +ADDRLP4 1032 +INDIRI4 +ARGI4 +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +CNSTI4 44 +ADDRLP4 1028 +INDIRI4 +MULI4 +ADDRGP4 uiInfo+75760+8 +ADDP4 +ADDP4 +INDIRP4 +ARGP4 +ADDRGP4 Com_sprintf +CALLV +pop +line 3011 +;3011: trap_Cmd_ExecuteText( EXEC_APPEND, buff ); +CNSTI4 2 +ARGI4 +ADDRLP4 4 +ARGP4 +ADDRGP4 trap_Cmd_ExecuteText +CALLV +pop +line 3012 +;3012: delay += 500; +ADDRLP4 1032 +ADDRLP4 1032 +INDIRI4 +CNSTI4 500 +ADDI4 +ASGNI4 +line 3013 +;3013: } +LABELV $2276 +line 3009 +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +LABELV $2278 +ADDRLP4 0 +INDIRI4 +CNSTI4 100 +ADDRGP4 ui_currentMap+12 +INDIRI4 +MULI4 +ADDRGP4 uiInfo+83228+16 +ADDP4 +INDIRI4 +LTI4 $2275 +line 3014 +;3014: k = UI_TeamIndexFromName(UI_Cvar_VariableString("ui_teamName")); +ADDRGP4 $701 +ARGP4 +ADDRLP4 1144 +ADDRGP4 UI_Cvar_VariableString +CALLP4 +ASGNP4 +ADDRLP4 1144 +INDIRP4 +ARGP4 +ADDRLP4 1148 +ADDRGP4 UI_TeamIndexFromName +CALLI4 +ASGNI4 +ADDRLP4 1028 +ADDRLP4 1148 +INDIRI4 +ASGNI4 +line 3015 +;3015: for (i =0; i < uiInfo.mapList[ui_currentMap.integer].teamMembers-1; i++) { +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +ADDRGP4 $2293 +JUMPV +LABELV $2290 +line 3016 +;3016: Com_sprintf( buff, sizeof(buff), "addbot %s %f %s %i %s\n", UI_AIFromName(uiInfo.teamList[k].teamMembers[i]), skill, (g == GT_FFA) ? "" : "Red", delay, uiInfo.teamList[k].teamMembers[i]); +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +CNSTI4 44 +ADDRLP4 1028 +INDIRI4 +MULI4 +ADDRGP4 uiInfo+75760+8 +ADDP4 +ADDP4 +INDIRP4 +ARGP4 +ADDRLP4 1156 +ADDRGP4 UI_AIFromName +CALLP4 +ASGNP4 +ADDRLP4 4 +ARGP4 +CNSTI4 1024 +ARGI4 +ADDRGP4 $2282 +ARGP4 +ADDRLP4 1156 +INDIRP4 +ARGP4 +ADDRLP4 1044 +INDIRF4 +ARGF4 +ADDRLP4 1040 +INDIRI4 +CNSTI4 0 +NEI4 $2302 +ADDRLP4 1152 +ADDRGP4 $112 +ASGNP4 +ADDRGP4 $2303 +JUMPV +LABELV $2302 +ADDRLP4 1152 +ADDRGP4 $843 +ASGNP4 +LABELV $2303 +ADDRLP4 1152 +INDIRP4 +ARGP4 +ADDRLP4 1032 +INDIRI4 +ARGI4 +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +CNSTI4 44 +ADDRLP4 1028 +INDIRI4 +MULI4 +ADDRGP4 uiInfo+75760+8 +ADDP4 +ADDP4 +INDIRP4 +ARGP4 +ADDRGP4 Com_sprintf +CALLV +pop +line 3017 +;3017: trap_Cmd_ExecuteText( EXEC_APPEND, buff ); +CNSTI4 2 +ARGI4 +ADDRLP4 4 +ARGP4 +ADDRGP4 trap_Cmd_ExecuteText +CALLV +pop +line 3018 +;3018: delay += 500; +ADDRLP4 1032 +ADDRLP4 1032 +INDIRI4 +CNSTI4 500 +ADDI4 +ASGNI4 +line 3019 +;3019: } +LABELV $2291 +line 3015 +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +LABELV $2293 +ADDRLP4 0 +INDIRI4 +CNSTI4 100 +ADDRGP4 ui_currentMap+12 +INDIRI4 +MULI4 +ADDRGP4 uiInfo+83228+16 +ADDP4 +INDIRI4 +CNSTI4 1 +SUBI4 +LTI4 $2290 +line 3020 +;3020: } +LABELV $2266 +line 3021 +;3021: if (g >= GT_TEAM ) { +ADDRLP4 1040 +INDIRI4 +CNSTI4 3 +LTI4 $2304 +line 3022 +;3022: trap_Cmd_ExecuteText( EXEC_APPEND, "wait 5; team Red\n" ); +CNSTI4 2 +ARGI4 +ADDRGP4 $2306 +ARGP4 +ADDRGP4 trap_Cmd_ExecuteText +CALLV +pop +line 3023 +;3023: } +LABELV $2304 +line 3024 +;3024:} +LABELV $2224 +endproc UI_StartSkirmish 1160 32 +proc UI_Update 36 8 +line 3026 +;3025: +;3026:static void UI_Update(const char *name) { +line 3027 +;3027: int val = trap_Cvar_VariableValue(name); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRLP4 4 +ADDRGP4 trap_Cvar_VariableValue +CALLF4 +ASGNF4 +ADDRLP4 0 +ADDRLP4 4 +INDIRF4 +CVFI4 4 +ASGNI4 +line 3029 +;3028: +;3029: if (Q_stricmp(name, "ui_SetName") == 0) { +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRGP4 $2310 +ARGP4 +ADDRLP4 8 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 8 +INDIRI4 +CNSTI4 0 +NEI4 $2308 +line 3030 +;3030: trap_Cvar_Set( "name", UI_Cvar_VariableString("ui_Name")); +ADDRGP4 $2311 +ARGP4 +ADDRLP4 12 +ADDRGP4 UI_Cvar_VariableString +CALLP4 +ASGNP4 +ADDRGP4 $1448 +ARGP4 +ADDRLP4 12 +INDIRP4 +ARGP4 +ADDRGP4 trap_Cvar_Set +CALLV +pop +line 3031 +;3031: } else if (Q_stricmp(name, "ui_setRate") == 0) { +ADDRGP4 $2309 +JUMPV +LABELV $2308 +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRGP4 $2314 +ARGP4 +ADDRLP4 12 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 12 +INDIRI4 +CNSTI4 0 +NEI4 $2312 +line 3032 +;3032: float rate = trap_Cvar_VariableValue("rate"); +ADDRGP4 $2315 +ARGP4 +ADDRLP4 20 +ADDRGP4 trap_Cvar_VariableValue +CALLF4 +ASGNF4 +ADDRLP4 16 +ADDRLP4 20 +INDIRF4 +ASGNF4 +line 3033 +;3033: if (rate >= 5000) { +ADDRLP4 16 +INDIRF4 +CNSTF4 1167867904 +LTF4 $2316 +line 3034 +;3034: trap_Cvar_Set("cl_maxpackets", "30"); +ADDRGP4 $2318 +ARGP4 +ADDRGP4 $692 +ARGP4 +ADDRGP4 trap_Cvar_Set +CALLV +pop +line 3035 +;3035: trap_Cvar_Set("cl_packetdup", "1"); +ADDRGP4 $2319 +ARGP4 +ADDRGP4 $398 +ARGP4 +ADDRGP4 trap_Cvar_Set +CALLV +pop +line 3036 +;3036: } else if (rate >= 4000) { +ADDRGP4 $2313 +JUMPV +LABELV $2316 +ADDRLP4 16 +INDIRF4 +CNSTF4 1165623296 +LTF4 $2320 +line 3037 +;3037: trap_Cvar_Set("cl_maxpackets", "15"); +ADDRGP4 $2318 +ARGP4 +ADDRGP4 $695 +ARGP4 +ADDRGP4 trap_Cvar_Set +CALLV +pop +line 3038 +;3038: trap_Cvar_Set("cl_packetdup", "2"); // favor less prediction errors when there's packet loss +ADDRGP4 $2319 +ARGP4 +ADDRGP4 $2267 +ARGP4 +ADDRGP4 trap_Cvar_Set +CALLV +pop +line 3039 +;3039: } else { +ADDRGP4 $2313 +JUMPV +LABELV $2320 +line 3040 +;3040: trap_Cvar_Set("cl_maxpackets", "15"); +ADDRGP4 $2318 +ARGP4 +ADDRGP4 $695 +ARGP4 +ADDRGP4 trap_Cvar_Set +CALLV +pop +line 3041 +;3041: trap_Cvar_Set("cl_packetdup", "1"); // favor lower bandwidth +ADDRGP4 $2319 +ARGP4 +ADDRGP4 $398 +ARGP4 +ADDRGP4 trap_Cvar_Set +CALLV +pop +line 3042 +;3042: } +line 3043 +;3043: } else if (Q_stricmp(name, "ui_GetName") == 0) { +ADDRGP4 $2313 +JUMPV +LABELV $2312 +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRGP4 $2324 +ARGP4 +ADDRLP4 16 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 16 +INDIRI4 +CNSTI4 0 +NEI4 $2322 +line 3044 +;3044: trap_Cvar_Set( "ui_Name", UI_Cvar_VariableString("name")); +ADDRGP4 $1448 +ARGP4 +ADDRLP4 20 +ADDRGP4 UI_Cvar_VariableString +CALLP4 +ASGNP4 +ADDRGP4 $2311 +ARGP4 +ADDRLP4 20 +INDIRP4 +ARGP4 +ADDRGP4 trap_Cvar_Set +CALLV +pop +line 3045 +;3045: } else if (Q_stricmp(name, "r_colorbits") == 0) { +ADDRGP4 $2323 +JUMPV +LABELV $2322 +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRGP4 $2327 +ARGP4 +ADDRLP4 20 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 20 +INDIRI4 +CNSTI4 0 +NEI4 $2325 +line 3046 +;3046: switch (val) { +ADDRLP4 24 +ADDRLP4 0 +INDIRI4 +ASGNI4 +ADDRLP4 28 +CNSTI4 16 +ASGNI4 +ADDRLP4 24 +INDIRI4 +ADDRLP4 28 +INDIRI4 +EQI4 $2333 +ADDRLP4 24 +INDIRI4 +ADDRLP4 28 +INDIRI4 +GTI4 $2336 +LABELV $2335 +ADDRLP4 0 +INDIRI4 +CNSTI4 0 +EQI4 $2330 +ADDRGP4 $2326 +JUMPV +LABELV $2336 +ADDRLP4 0 +INDIRI4 +CNSTI4 32 +EQI4 $2334 +ADDRGP4 $2326 +JUMPV +LABELV $2330 +line 3048 +;3047: case 0: +;3048: trap_Cvar_SetValue( "r_depthbits", 0 ); +ADDRGP4 $2331 +ARGP4 +CNSTF4 0 +ARGF4 +ADDRGP4 trap_Cvar_SetValue +CALLV +pop +line 3049 +;3049: trap_Cvar_SetValue( "r_stencilbits", 0 ); +ADDRGP4 $2332 +ARGP4 +CNSTF4 0 +ARGF4 +ADDRGP4 trap_Cvar_SetValue +CALLV +pop +line 3050 +;3050: break; +ADDRGP4 $2326 +JUMPV +LABELV $2333 +line 3052 +;3051: case 16: +;3052: trap_Cvar_SetValue( "r_depthbits", 16 ); +ADDRGP4 $2331 +ARGP4 +CNSTF4 1098907648 +ARGF4 +ADDRGP4 trap_Cvar_SetValue +CALLV +pop +line 3053 +;3053: trap_Cvar_SetValue( "r_stencilbits", 0 ); +ADDRGP4 $2332 +ARGP4 +CNSTF4 0 +ARGF4 +ADDRGP4 trap_Cvar_SetValue +CALLV +pop +line 3054 +;3054: break; +ADDRGP4 $2326 +JUMPV +LABELV $2334 +line 3056 +;3055: case 32: +;3056: trap_Cvar_SetValue( "r_depthbits", 24 ); +ADDRGP4 $2331 +ARGP4 +CNSTF4 1103101952 +ARGF4 +ADDRGP4 trap_Cvar_SetValue +CALLV +pop +line 3057 +;3057: break; +line 3059 +;3058: } +;3059: } else if (Q_stricmp(name, "r_lodbias") == 0) { +ADDRGP4 $2326 +JUMPV +LABELV $2325 +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRGP4 $2339 +ARGP4 +ADDRLP4 24 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 24 +INDIRI4 +CNSTI4 0 +NEI4 $2337 +line 3060 +;3060: switch (val) { +ADDRLP4 28 +ADDRLP4 0 +INDIRI4 +ASGNI4 +ADDRLP4 28 +INDIRI4 +CNSTI4 0 +EQI4 $2342 +ADDRLP4 28 +INDIRI4 +CNSTI4 1 +EQI4 $2344 +ADDRLP4 28 +INDIRI4 +CNSTI4 2 +EQI4 $2345 +ADDRGP4 $2338 +JUMPV +LABELV $2342 +line 3062 +;3061: case 0: +;3062: trap_Cvar_SetValue( "r_subdivisions", 4 ); +ADDRGP4 $2343 +ARGP4 +CNSTF4 1082130432 +ARGF4 +ADDRGP4 trap_Cvar_SetValue +CALLV +pop +line 3063 +;3063: break; +ADDRGP4 $2338 +JUMPV +LABELV $2344 +line 3065 +;3064: case 1: +;3065: trap_Cvar_SetValue( "r_subdivisions", 12 ); +ADDRGP4 $2343 +ARGP4 +CNSTF4 1094713344 +ARGF4 +ADDRGP4 trap_Cvar_SetValue +CALLV +pop +line 3066 +;3066: break; +ADDRGP4 $2338 +JUMPV +LABELV $2345 +line 3068 +;3067: case 2: +;3068: trap_Cvar_SetValue( "r_subdivisions", 20 ); +ADDRGP4 $2343 +ARGP4 +CNSTF4 1101004800 +ARGF4 +ADDRGP4 trap_Cvar_SetValue +CALLV +pop +line 3069 +;3069: break; +line 3071 +;3070: } +;3071: } else if (Q_stricmp(name, "ui_glCustom") == 0) { +ADDRGP4 $2338 +JUMPV +LABELV $2337 +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRGP4 $2348 +ARGP4 +ADDRLP4 28 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 28 +INDIRI4 +CNSTI4 0 +NEI4 $2346 +line 3072 +;3072: switch (val) { +ADDRLP4 32 +ADDRLP4 0 +INDIRI4 +ASGNI4 +ADDRLP4 32 +INDIRI4 +CNSTI4 0 +LTI4 $2347 +ADDRLP4 32 +INDIRI4 +CNSTI4 3 +GTI4 $2347 +ADDRLP4 32 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 $2367 +ADDP4 +INDIRP4 +JUMPV +lit +align 4 +LABELV $2367 +address $2351 +address $2363 +address $2364 +address $2366 +code +LABELV $2351 +line 3074 +;3073: case 0: // high quality +;3074: trap_Cvar_SetValue( "r_fullScreen", 1 ); +ADDRGP4 $2352 +ARGP4 +CNSTF4 1065353216 +ARGF4 +ADDRGP4 trap_Cvar_SetValue +CALLV +pop +line 3075 +;3075: trap_Cvar_SetValue( "r_subdivisions", 4 ); +ADDRGP4 $2343 +ARGP4 +CNSTF4 1082130432 +ARGF4 +ADDRGP4 trap_Cvar_SetValue +CALLV +pop +line 3076 +;3076: trap_Cvar_SetValue( "r_vertexlight", 0 ); +ADDRGP4 $2353 +ARGP4 +CNSTF4 0 +ARGF4 +ADDRGP4 trap_Cvar_SetValue +CALLV +pop +line 3077 +;3077: trap_Cvar_SetValue( "r_lodbias", 0 ); +ADDRGP4 $2339 +ARGP4 +CNSTF4 0 +ARGF4 +ADDRGP4 trap_Cvar_SetValue +CALLV +pop +line 3078 +;3078: trap_Cvar_SetValue( "r_colorbits", 32 ); +ADDRGP4 $2327 +ARGP4 +CNSTF4 1107296256 +ARGF4 +ADDRGP4 trap_Cvar_SetValue +CALLV +pop +line 3079 +;3079: trap_Cvar_SetValue( "r_depthbits", 24 ); +ADDRGP4 $2331 +ARGP4 +CNSTF4 1103101952 +ARGF4 +ADDRGP4 trap_Cvar_SetValue +CALLV +pop +line 3080 +;3080: trap_Cvar_SetValue( "r_picmip", 0 ); +ADDRGP4 $2354 +ARGP4 +CNSTF4 0 +ARGF4 +ADDRGP4 trap_Cvar_SetValue +CALLV +pop +line 3081 +;3081: trap_Cvar_SetValue( "r_mode", 4 ); +ADDRGP4 $2355 +ARGP4 +CNSTF4 1082130432 +ARGF4 +ADDRGP4 trap_Cvar_SetValue +CALLV +pop +line 3082 +;3082: trap_Cvar_SetValue( "r_texturebits", 32 ); +ADDRGP4 $2356 +ARGP4 +CNSTF4 1107296256 +ARGF4 +ADDRGP4 trap_Cvar_SetValue +CALLV +pop +line 3083 +;3083: trap_Cvar_SetValue( "r_fastSky", 0 ); +ADDRGP4 $2357 +ARGP4 +CNSTF4 0 +ARGF4 +ADDRGP4 trap_Cvar_SetValue +CALLV +pop +line 3084 +;3084: trap_Cvar_SetValue( "r_inGameVideo", 1 ); +ADDRGP4 $2358 +ARGP4 +CNSTF4 1065353216 +ARGF4 +ADDRGP4 trap_Cvar_SetValue +CALLV +pop +line 3085 +;3085: trap_Cvar_SetValue( "cg_shadows", 1 ); +ADDRGP4 $2359 +ARGP4 +CNSTF4 1065353216 +ARGF4 +ADDRGP4 trap_Cvar_SetValue +CALLV +pop +line 3086 +;3086: trap_Cvar_SetValue( "cg_brassTime", 2500 ); +ADDRGP4 $2360 +ARGP4 +CNSTF4 1159479296 +ARGF4 +ADDRGP4 trap_Cvar_SetValue +CALLV +pop +line 3087 +;3087: trap_Cvar_Set( "r_texturemode", "GL_LINEAR_MIPMAP_LINEAR" ); +ADDRGP4 $2361 +ARGP4 +ADDRGP4 $2362 +ARGP4 +ADDRGP4 trap_Cvar_Set +CALLV +pop +line 3088 +;3088: break; +ADDRGP4 $2347 +JUMPV +LABELV $2363 +line 3090 +;3089: case 1: // normal +;3090: trap_Cvar_SetValue( "r_fullScreen", 1 ); +ADDRGP4 $2352 +ARGP4 +CNSTF4 1065353216 +ARGF4 +ADDRGP4 trap_Cvar_SetValue +CALLV +pop +line 3091 +;3091: trap_Cvar_SetValue( "r_subdivisions", 12 ); +ADDRGP4 $2343 +ARGP4 +CNSTF4 1094713344 +ARGF4 +ADDRGP4 trap_Cvar_SetValue +CALLV +pop +line 3092 +;3092: trap_Cvar_SetValue( "r_vertexlight", 0 ); +ADDRGP4 $2353 +ARGP4 +CNSTF4 0 +ARGF4 +ADDRGP4 trap_Cvar_SetValue +CALLV +pop +line 3093 +;3093: trap_Cvar_SetValue( "r_lodbias", 0 ); +ADDRGP4 $2339 +ARGP4 +CNSTF4 0 +ARGF4 +ADDRGP4 trap_Cvar_SetValue +CALLV +pop +line 3094 +;3094: trap_Cvar_SetValue( "r_colorbits", 0 ); +ADDRGP4 $2327 +ARGP4 +CNSTF4 0 +ARGF4 +ADDRGP4 trap_Cvar_SetValue +CALLV +pop +line 3095 +;3095: trap_Cvar_SetValue( "r_depthbits", 24 ); +ADDRGP4 $2331 +ARGP4 +CNSTF4 1103101952 +ARGF4 +ADDRGP4 trap_Cvar_SetValue +CALLV +pop +line 3096 +;3096: trap_Cvar_SetValue( "r_picmip", 1 ); +ADDRGP4 $2354 +ARGP4 +CNSTF4 1065353216 +ARGF4 +ADDRGP4 trap_Cvar_SetValue +CALLV +pop +line 3097 +;3097: trap_Cvar_SetValue( "r_mode", 3 ); +ADDRGP4 $2355 +ARGP4 +CNSTF4 1077936128 +ARGF4 +ADDRGP4 trap_Cvar_SetValue +CALLV +pop +line 3098 +;3098: trap_Cvar_SetValue( "r_texturebits", 0 ); +ADDRGP4 $2356 +ARGP4 +CNSTF4 0 +ARGF4 +ADDRGP4 trap_Cvar_SetValue +CALLV +pop +line 3099 +;3099: trap_Cvar_SetValue( "r_fastSky", 0 ); +ADDRGP4 $2357 +ARGP4 +CNSTF4 0 +ARGF4 +ADDRGP4 trap_Cvar_SetValue +CALLV +pop +line 3100 +;3100: trap_Cvar_SetValue( "r_inGameVideo", 1 ); +ADDRGP4 $2358 +ARGP4 +CNSTF4 1065353216 +ARGF4 +ADDRGP4 trap_Cvar_SetValue +CALLV +pop +line 3101 +;3101: trap_Cvar_SetValue( "cg_brassTime", 2500 ); +ADDRGP4 $2360 +ARGP4 +CNSTF4 1159479296 +ARGF4 +ADDRGP4 trap_Cvar_SetValue +CALLV +pop +line 3102 +;3102: trap_Cvar_Set( "r_texturemode", "GL_LINEAR_MIPMAP_LINEAR" ); +ADDRGP4 $2361 +ARGP4 +ADDRGP4 $2362 +ARGP4 +ADDRGP4 trap_Cvar_Set +CALLV +pop +line 3103 +;3103: trap_Cvar_SetValue( "cg_shadows", 0 ); +ADDRGP4 $2359 +ARGP4 +CNSTF4 0 +ARGF4 +ADDRGP4 trap_Cvar_SetValue +CALLV +pop +line 3104 +;3104: break; +ADDRGP4 $2347 +JUMPV +LABELV $2364 +line 3106 +;3105: case 2: // fast +;3106: trap_Cvar_SetValue( "r_fullScreen", 1 ); +ADDRGP4 $2352 +ARGP4 +CNSTF4 1065353216 +ARGF4 +ADDRGP4 trap_Cvar_SetValue +CALLV +pop +line 3107 +;3107: trap_Cvar_SetValue( "r_subdivisions", 8 ); +ADDRGP4 $2343 +ARGP4 +CNSTF4 1090519040 +ARGF4 +ADDRGP4 trap_Cvar_SetValue +CALLV +pop +line 3108 +;3108: trap_Cvar_SetValue( "r_vertexlight", 0 ); +ADDRGP4 $2353 +ARGP4 +CNSTF4 0 +ARGF4 +ADDRGP4 trap_Cvar_SetValue +CALLV +pop +line 3109 +;3109: trap_Cvar_SetValue( "r_lodbias", 1 ); +ADDRGP4 $2339 +ARGP4 +CNSTF4 1065353216 +ARGF4 +ADDRGP4 trap_Cvar_SetValue +CALLV +pop +line 3110 +;3110: trap_Cvar_SetValue( "r_colorbits", 0 ); +ADDRGP4 $2327 +ARGP4 +CNSTF4 0 +ARGF4 +ADDRGP4 trap_Cvar_SetValue +CALLV +pop +line 3111 +;3111: trap_Cvar_SetValue( "r_depthbits", 0 ); +ADDRGP4 $2331 +ARGP4 +CNSTF4 0 +ARGF4 +ADDRGP4 trap_Cvar_SetValue +CALLV +pop +line 3112 +;3112: trap_Cvar_SetValue( "r_picmip", 1 ); +ADDRGP4 $2354 +ARGP4 +CNSTF4 1065353216 +ARGF4 +ADDRGP4 trap_Cvar_SetValue +CALLV +pop +line 3113 +;3113: trap_Cvar_SetValue( "r_mode", 3 ); +ADDRGP4 $2355 +ARGP4 +CNSTF4 1077936128 +ARGF4 +ADDRGP4 trap_Cvar_SetValue +CALLV +pop +line 3114 +;3114: trap_Cvar_SetValue( "r_texturebits", 0 ); +ADDRGP4 $2356 +ARGP4 +CNSTF4 0 +ARGF4 +ADDRGP4 trap_Cvar_SetValue +CALLV +pop +line 3115 +;3115: trap_Cvar_SetValue( "cg_shadows", 0 ); +ADDRGP4 $2359 +ARGP4 +CNSTF4 0 +ARGF4 +ADDRGP4 trap_Cvar_SetValue +CALLV +pop +line 3116 +;3116: trap_Cvar_SetValue( "r_fastSky", 1 ); +ADDRGP4 $2357 +ARGP4 +CNSTF4 1065353216 +ARGF4 +ADDRGP4 trap_Cvar_SetValue +CALLV +pop +line 3117 +;3117: trap_Cvar_SetValue( "r_inGameVideo", 0 ); +ADDRGP4 $2358 +ARGP4 +CNSTF4 0 +ARGF4 +ADDRGP4 trap_Cvar_SetValue +CALLV +pop +line 3118 +;3118: trap_Cvar_SetValue( "cg_brassTime", 0 ); +ADDRGP4 $2360 +ARGP4 +CNSTF4 0 +ARGF4 +ADDRGP4 trap_Cvar_SetValue +CALLV +pop +line 3119 +;3119: trap_Cvar_Set( "r_texturemode", "GL_LINEAR_MIPMAP_NEAREST" ); +ADDRGP4 $2361 +ARGP4 +ADDRGP4 $2365 +ARGP4 +ADDRGP4 trap_Cvar_Set +CALLV +pop +line 3120 +;3120: break; +ADDRGP4 $2347 +JUMPV +LABELV $2366 +line 3122 +;3121: case 3: // fastest +;3122: trap_Cvar_SetValue( "r_fullScreen", 1 ); +ADDRGP4 $2352 +ARGP4 +CNSTF4 1065353216 +ARGF4 +ADDRGP4 trap_Cvar_SetValue +CALLV +pop +line 3123 +;3123: trap_Cvar_SetValue( "r_subdivisions", 20 ); +ADDRGP4 $2343 +ARGP4 +CNSTF4 1101004800 +ARGF4 +ADDRGP4 trap_Cvar_SetValue +CALLV +pop +line 3124 +;3124: trap_Cvar_SetValue( "r_vertexlight", 1 ); +ADDRGP4 $2353 +ARGP4 +CNSTF4 1065353216 +ARGF4 +ADDRGP4 trap_Cvar_SetValue +CALLV +pop +line 3125 +;3125: trap_Cvar_SetValue( "r_lodbias", 2 ); +ADDRGP4 $2339 +ARGP4 +CNSTF4 1073741824 +ARGF4 +ADDRGP4 trap_Cvar_SetValue +CALLV +pop +line 3126 +;3126: trap_Cvar_SetValue( "r_colorbits", 16 ); +ADDRGP4 $2327 +ARGP4 +CNSTF4 1098907648 +ARGF4 +ADDRGP4 trap_Cvar_SetValue +CALLV +pop +line 3127 +;3127: trap_Cvar_SetValue( "r_depthbits", 16 ); +ADDRGP4 $2331 +ARGP4 +CNSTF4 1098907648 +ARGF4 +ADDRGP4 trap_Cvar_SetValue +CALLV +pop +line 3128 +;3128: trap_Cvar_SetValue( "r_mode", 3 ); +ADDRGP4 $2355 +ARGP4 +CNSTF4 1077936128 +ARGF4 +ADDRGP4 trap_Cvar_SetValue +CALLV +pop +line 3129 +;3129: trap_Cvar_SetValue( "r_picmip", 2 ); +ADDRGP4 $2354 +ARGP4 +CNSTF4 1073741824 +ARGF4 +ADDRGP4 trap_Cvar_SetValue +CALLV +pop +line 3130 +;3130: trap_Cvar_SetValue( "r_texturebits", 16 ); +ADDRGP4 $2356 +ARGP4 +CNSTF4 1098907648 +ARGF4 +ADDRGP4 trap_Cvar_SetValue +CALLV +pop +line 3131 +;3131: trap_Cvar_SetValue( "cg_shadows", 0 ); +ADDRGP4 $2359 +ARGP4 +CNSTF4 0 +ARGF4 +ADDRGP4 trap_Cvar_SetValue +CALLV +pop +line 3132 +;3132: trap_Cvar_SetValue( "cg_brassTime", 0 ); +ADDRGP4 $2360 +ARGP4 +CNSTF4 0 +ARGF4 +ADDRGP4 trap_Cvar_SetValue +CALLV +pop +line 3133 +;3133: trap_Cvar_SetValue( "r_fastSky", 1 ); +ADDRGP4 $2357 +ARGP4 +CNSTF4 1065353216 +ARGF4 +ADDRGP4 trap_Cvar_SetValue +CALLV +pop +line 3134 +;3134: trap_Cvar_SetValue( "r_inGameVideo", 0 ); +ADDRGP4 $2358 +ARGP4 +CNSTF4 0 +ARGF4 +ADDRGP4 trap_Cvar_SetValue +CALLV +pop +line 3135 +;3135: trap_Cvar_Set( "r_texturemode", "GL_LINEAR_MIPMAP_NEAREST" ); +ADDRGP4 $2361 +ARGP4 +ADDRGP4 $2365 +ARGP4 +ADDRGP4 trap_Cvar_Set +CALLV +pop +line 3136 +;3136: break; +line 3138 +;3137: } +;3138: } else if (Q_stricmp(name, "ui_mousePitch") == 0) { +ADDRGP4 $2347 +JUMPV +LABELV $2346 +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRGP4 $2370 +ARGP4 +ADDRLP4 32 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 32 +INDIRI4 +CNSTI4 0 +NEI4 $2368 +line 3139 +;3139: if (val == 0) { +ADDRLP4 0 +INDIRI4 +CNSTI4 0 +NEI4 $2371 +line 3140 +;3140: trap_Cvar_SetValue( "m_pitch", 0.022f ); +ADDRGP4 $2373 +ARGP4 +CNSTF4 1018444120 +ARGF4 +ADDRGP4 trap_Cvar_SetValue +CALLV +pop +line 3141 +;3141: } else { +ADDRGP4 $2372 +JUMPV +LABELV $2371 +line 3142 +;3142: trap_Cvar_SetValue( "m_pitch", -0.022f ); +ADDRGP4 $2373 +ARGP4 +CNSTF4 3165927768 +ARGF4 +ADDRGP4 trap_Cvar_SetValue +CALLV +pop +line 3143 +;3143: } +LABELV $2372 +line 3144 +;3144: } +LABELV $2368 +LABELV $2347 +LABELV $2338 +LABELV $2326 +LABELV $2323 +LABELV $2313 +LABELV $2309 +line 3145 +;3145:} +LABELV $2307 +endproc UI_Update 36 8 +proc UI_RunMenuScript 1304 24 +line 3147 +;3146: +;3147:static void UI_RunMenuScript(char **args) { +line 3151 +;3148: const char *name, *name2; +;3149: char buff[1024]; +;3150: +;3151: if (String_Parse(args, &name)) { +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRLP4 1024 +ARGP4 +ADDRLP4 1032 +ADDRGP4 String_Parse +CALLI4 +ASGNI4 +ADDRLP4 1032 +INDIRI4 +CNSTI4 0 +EQI4 $2375 +line 3152 +;3152: if (Q_stricmp(name, "StartServer") == 0) { +ADDRLP4 1024 +INDIRP4 +ARGP4 +ADDRGP4 $2379 +ARGP4 +ADDRLP4 1036 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 1036 +INDIRI4 +CNSTI4 0 +NEI4 $2377 +line 3155 +;3153: int i, clients, oldclients; +;3154: float skill; +;3155: trap_Cvar_Set("cg_thirdPerson", "0"); +ADDRGP4 $396 +ARGP4 +ADDRGP4 $395 +ARGP4 +ADDRGP4 trap_Cvar_Set +CALLV +pop +line 3156 +;3156: trap_Cvar_Set("cg_cameraOrbit", "0"); +ADDRGP4 $394 +ARGP4 +ADDRGP4 $395 +ARGP4 +ADDRGP4 trap_Cvar_Set +CALLV +pop +line 3157 +;3157: trap_Cvar_Set("ui_singlePlayerActive", "0"); +ADDRGP4 $2240 +ARGP4 +ADDRGP4 $395 +ARGP4 +ADDRGP4 trap_Cvar_Set +CALLV +pop +line 3158 +;3158: trap_Cvar_SetValue( "dedicated", Com_Clamp( 0, 2, ui_dedicated.integer ) ); +CNSTF4 0 +ARGF4 +CNSTF4 1073741824 +ARGF4 +ADDRGP4 ui_dedicated+12 +INDIRI4 +CVIF4 4 +ARGF4 +ADDRLP4 1056 +ADDRGP4 Com_Clamp +CALLF4 +ASGNF4 +ADDRGP4 $2380 +ARGP4 +ADDRLP4 1056 +INDIRF4 +ARGF4 +ADDRGP4 trap_Cvar_SetValue +CALLV +pop +line 3159 +;3159: trap_Cvar_SetValue( "g_gametype", Com_Clamp( 0, 8, uiInfo.gameTypes[ui_netGameType.integer].gtEnum ) ); +CNSTF4 0 +ARGF4 +CNSTF4 1090519040 +ARGF4 +ADDRGP4 ui_netGameType+12 +INDIRI4 +CNSTI4 3 +LSHI4 +ADDRGP4 uiInfo+78580+4 +ADDP4 +INDIRI4 +CVIF4 4 +ARGF4 +ADDRLP4 1060 +ADDRGP4 Com_Clamp +CALLF4 +ASGNF4 +ADDRGP4 $1362 +ARGP4 +ADDRLP4 1060 +INDIRF4 +ARGF4 +ADDRGP4 trap_Cvar_SetValue +CALLV +pop +line 3160 +;3160: trap_Cvar_Set("g_redTeam", UI_Cvar_VariableString("ui_teamName")); +ADDRGP4 $701 +ARGP4 +ADDRLP4 1064 +ADDRGP4 UI_Cvar_VariableString +CALLP4 +ASGNP4 +ADDRGP4 $2255 +ARGP4 +ADDRLP4 1064 +INDIRP4 +ARGP4 +ADDRGP4 trap_Cvar_Set +CALLV +pop +line 3161 +;3161: trap_Cvar_Set("g_blueTeam", UI_Cvar_VariableString("ui_opponentName")); +ADDRGP4 $1081 +ARGP4 +ADDRLP4 1068 +ADDRGP4 UI_Cvar_VariableString +CALLP4 +ASGNP4 +ADDRGP4 $2256 +ARGP4 +ADDRLP4 1068 +INDIRP4 +ARGP4 +ADDRGP4 trap_Cvar_Set +CALLV +pop +line 3162 +;3162: trap_Cmd_ExecuteText( EXEC_APPEND, va( "wait ; wait ; map %s\n", uiInfo.mapList[ui_currentNetMap.integer].mapLoadName ) ); +ADDRGP4 $2233 +ARGP4 +CNSTI4 100 +ADDRGP4 ui_currentNetMap+12 +INDIRI4 +MULI4 +ADDRGP4 uiInfo+83228+4 +ADDP4 +INDIRP4 +ARGP4 +ADDRLP4 1072 +ADDRGP4 va +CALLP4 +ASGNP4 +CNSTI4 2 +ARGI4 +ADDRLP4 1072 +INDIRP4 +ARGP4 +ADDRGP4 trap_Cmd_ExecuteText +CALLV +pop +line 3163 +;3163: skill = trap_Cvar_VariableValue( "g_spSkill" ); +ADDRGP4 $827 +ARGP4 +ADDRLP4 1076 +ADDRGP4 trap_Cvar_VariableValue +CALLF4 +ASGNF4 +ADDRLP4 1048 +ADDRLP4 1076 +INDIRF4 +ASGNF4 +line 3165 +;3164: // set max clients based on spots +;3165: oldclients = trap_Cvar_VariableValue( "sv_maxClients" ); +ADDRGP4 $2249 +ARGP4 +ADDRLP4 1080 +ADDRGP4 trap_Cvar_VariableValue +CALLF4 +ASGNF4 +ADDRLP4 1052 +ADDRLP4 1080 +INDIRF4 +CVFI4 4 +ASGNI4 +line 3166 +;3166: clients = 0; +ADDRLP4 1044 +CNSTI4 0 +ASGNI4 +line 3167 +;3167: for (i = 0; i < PLAYERS_PER_TEAM; i++) { +ADDRLP4 1040 +CNSTI4 0 +ASGNI4 +LABELV $2388 +line 3168 +;3168: int bot = trap_Cvar_VariableValue( va("ui_blueteam%i", i+1)); +ADDRGP4 $849 +ARGP4 +ADDRLP4 1040 +INDIRI4 +CNSTI4 1 +ADDI4 +ARGI4 +ADDRLP4 1088 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRLP4 1088 +INDIRP4 +ARGP4 +ADDRLP4 1092 +ADDRGP4 trap_Cvar_VariableValue +CALLF4 +ASGNF4 +ADDRLP4 1084 +ADDRLP4 1092 +INDIRF4 +CVFI4 4 +ASGNI4 +line 3169 +;3169: if (bot >= 0) { +ADDRLP4 1084 +INDIRI4 +CNSTI4 0 +LTI4 $2392 +line 3170 +;3170: clients++; +ADDRLP4 1044 +ADDRLP4 1044 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 3171 +;3171: } +LABELV $2392 +line 3172 +;3172: bot = trap_Cvar_VariableValue( va("ui_redteam%i", i+1)); +ADDRGP4 $850 +ARGP4 +ADDRLP4 1040 +INDIRI4 +CNSTI4 1 +ADDI4 +ARGI4 +ADDRLP4 1096 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRLP4 1096 +INDIRP4 +ARGP4 +ADDRLP4 1100 +ADDRGP4 trap_Cvar_VariableValue +CALLF4 +ASGNF4 +ADDRLP4 1084 +ADDRLP4 1100 +INDIRF4 +CVFI4 4 +ASGNI4 +line 3173 +;3173: if (bot >= 0) { +ADDRLP4 1084 +INDIRI4 +CNSTI4 0 +LTI4 $2394 +line 3174 +;3174: clients++; +ADDRLP4 1044 +ADDRLP4 1044 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 3175 +;3175: } +LABELV $2394 +line 3176 +;3176: } +LABELV $2389 +line 3167 +ADDRLP4 1040 +ADDRLP4 1040 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +ADDRLP4 1040 +INDIRI4 +CNSTI4 5 +LTI4 $2388 +line 3177 +;3177: if (clients == 0) { +ADDRLP4 1044 +INDIRI4 +CNSTI4 0 +NEI4 $2396 +line 3178 +;3178: clients = 8; +ADDRLP4 1044 +CNSTI4 8 +ASGNI4 +line 3179 +;3179: } +LABELV $2396 +line 3181 +;3180: +;3181: if (oldclients > clients) { +ADDRLP4 1052 +INDIRI4 +ADDRLP4 1044 +INDIRI4 +LEI4 $2398 +line 3182 +;3182: clients = oldclients; +ADDRLP4 1044 +ADDRLP4 1052 +INDIRI4 +ASGNI4 +line 3183 +;3183: } +LABELV $2398 +line 3185 +;3184: +;3185: trap_Cvar_Set("sv_maxClients", va("%d",clients)); +ADDRGP4 $716 +ARGP4 +ADDRLP4 1044 +INDIRI4 +ARGI4 +ADDRLP4 1084 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRGP4 $2249 +ARGP4 +ADDRLP4 1084 +INDIRP4 +ARGP4 +ADDRGP4 trap_Cvar_Set +CALLV +pop +line 3187 +;3186: +;3187: for (i = 0; i < PLAYERS_PER_TEAM; i++) { +ADDRLP4 1040 +CNSTI4 0 +ASGNI4 +LABELV $2400 +line 3188 +;3188: int bot = trap_Cvar_VariableValue( va("ui_blueteam%i", i+1)); +ADDRGP4 $849 +ARGP4 +ADDRLP4 1040 +INDIRI4 +CNSTI4 1 +ADDI4 +ARGI4 +ADDRLP4 1092 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRLP4 1092 +INDIRP4 +ARGP4 +ADDRLP4 1096 +ADDRGP4 trap_Cvar_VariableValue +CALLF4 +ASGNF4 +ADDRLP4 1088 +ADDRLP4 1096 +INDIRF4 +CVFI4 4 +ASGNI4 +line 3189 +;3189: if (bot > 1) { +ADDRLP4 1088 +INDIRI4 +CNSTI4 1 +LEI4 $2404 +line 3190 +;3190: if (ui_actualNetGameType.integer >= GT_TEAM) { +ADDRGP4 ui_actualNetGameType+12 +INDIRI4 +CNSTI4 3 +LTI4 $2406 +line 3191 +;3191: Com_sprintf( buff, sizeof(buff), "addbot %s %f %s\n", uiInfo.characterList[bot-2].name, skill, "Blue"); +ADDRLP4 0 +ARGP4 +CNSTI4 1024 +ARGI4 +ADDRGP4 $2409 +ARGP4 +CNSTI4 24 +ADDRLP4 1088 +INDIRI4 +MULI4 +ADDRGP4 uiInfo+73448-48 +ADDP4 +INDIRP4 +ARGP4 +ADDRLP4 1048 +INDIRF4 +ARGF4 +ADDRGP4 $842 +ARGP4 +ADDRGP4 Com_sprintf +CALLV +pop +line 3192 +;3192: } else { +ADDRGP4 $2407 +JUMPV +LABELV $2406 +line 3193 +;3193: Com_sprintf( buff, sizeof(buff), "addbot %s %f \n", UI_GetBotNameByNumber(bot-2), skill); +ADDRLP4 1088 +INDIRI4 +CNSTI4 2 +SUBI4 +ARGI4 +ADDRLP4 1100 +ADDRGP4 UI_GetBotNameByNumber +CALLP4 +ASGNP4 +ADDRLP4 0 +ARGP4 +CNSTI4 1024 +ARGI4 +ADDRGP4 $2412 +ARGP4 +ADDRLP4 1100 +INDIRP4 +ARGP4 +ADDRLP4 1048 +INDIRF4 +ARGF4 +ADDRGP4 Com_sprintf +CALLV +pop +line 3194 +;3194: } +LABELV $2407 +line 3195 +;3195: trap_Cmd_ExecuteText( EXEC_APPEND, buff ); +CNSTI4 2 +ARGI4 +ADDRLP4 0 +ARGP4 +ADDRGP4 trap_Cmd_ExecuteText +CALLV +pop +line 3196 +;3196: } +LABELV $2404 +line 3197 +;3197: bot = trap_Cvar_VariableValue( va("ui_redteam%i", i+1)); +ADDRGP4 $850 +ARGP4 +ADDRLP4 1040 +INDIRI4 +CNSTI4 1 +ADDI4 +ARGI4 +ADDRLP4 1100 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRLP4 1100 +INDIRP4 +ARGP4 +ADDRLP4 1104 +ADDRGP4 trap_Cvar_VariableValue +CALLF4 +ASGNF4 +ADDRLP4 1088 +ADDRLP4 1104 +INDIRF4 +CVFI4 4 +ASGNI4 +line 3198 +;3198: if (bot > 1) { +ADDRLP4 1088 +INDIRI4 +CNSTI4 1 +LEI4 $2413 +line 3199 +;3199: if (ui_actualNetGameType.integer >= GT_TEAM) { +ADDRGP4 ui_actualNetGameType+12 +INDIRI4 +CNSTI4 3 +LTI4 $2415 +line 3200 +;3200: Com_sprintf( buff, sizeof(buff), "addbot %s %f %s\n", uiInfo.characterList[bot-2].name, skill, "Red"); +ADDRLP4 0 +ARGP4 +CNSTI4 1024 +ARGI4 +ADDRGP4 $2409 +ARGP4 +CNSTI4 24 +ADDRLP4 1088 +INDIRI4 +MULI4 +ADDRGP4 uiInfo+73448-48 +ADDP4 +INDIRP4 +ARGP4 +ADDRLP4 1048 +INDIRF4 +ARGF4 +ADDRGP4 $843 +ARGP4 +ADDRGP4 Com_sprintf +CALLV +pop +line 3201 +;3201: } else { +ADDRGP4 $2416 +JUMPV +LABELV $2415 +line 3202 +;3202: Com_sprintf( buff, sizeof(buff), "addbot %s %f \n", UI_GetBotNameByNumber(bot-2), skill); +ADDRLP4 1088 +INDIRI4 +CNSTI4 2 +SUBI4 +ARGI4 +ADDRLP4 1108 +ADDRGP4 UI_GetBotNameByNumber +CALLP4 +ASGNP4 +ADDRLP4 0 +ARGP4 +CNSTI4 1024 +ARGI4 +ADDRGP4 $2412 +ARGP4 +ADDRLP4 1108 +INDIRP4 +ARGP4 +ADDRLP4 1048 +INDIRF4 +ARGF4 +ADDRGP4 Com_sprintf +CALLV +pop +line 3203 +;3203: } +LABELV $2416 +line 3204 +;3204: trap_Cmd_ExecuteText( EXEC_APPEND, buff ); +CNSTI4 2 +ARGI4 +ADDRLP4 0 +ARGP4 +ADDRGP4 trap_Cmd_ExecuteText +CALLV +pop +line 3205 +;3205: } +LABELV $2413 +line 3206 +;3206: } +LABELV $2401 +line 3187 +ADDRLP4 1040 +ADDRLP4 1040 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +ADDRLP4 1040 +INDIRI4 +CNSTI4 5 +LTI4 $2400 +line 3207 +;3207: } else if (Q_stricmp(name, "updateSPMenu") == 0) { +ADDRGP4 $2378 +JUMPV +LABELV $2377 +ADDRLP4 1024 +INDIRP4 +ARGP4 +ADDRGP4 $2422 +ARGP4 +ADDRLP4 1040 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 1040 +INDIRI4 +CNSTI4 0 +NEI4 $2420 +line 3208 +;3208: UI_SetCapFragLimits(qtrue); +CNSTI4 1 +ARGI4 +ADDRGP4 UI_SetCapFragLimits +CALLV +pop +line 3209 +;3209: UI_MapCountByGameType(qtrue); +CNSTI4 1 +ARGI4 +ADDRGP4 UI_MapCountByGameType +CALLI4 +pop +line 3210 +;3210: ui_mapIndex.integer = UI_GetIndexFromSelection(ui_currentMap.integer); +ADDRGP4 ui_currentMap+12 +INDIRI4 +ARGI4 +ADDRLP4 1044 +ADDRGP4 UI_GetIndexFromSelection +CALLI4 +ASGNI4 +ADDRGP4 ui_mapIndex+12 +ADDRLP4 1044 +INDIRI4 +ASGNI4 +line 3211 +;3211: trap_Cvar_Set("ui_mapIndex", va("%d", ui_mapIndex.integer)); +ADDRGP4 $716 +ARGP4 +ADDRGP4 ui_mapIndex+12 +INDIRI4 +ARGI4 +ADDRLP4 1048 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRGP4 $2227 +ARGP4 +ADDRLP4 1048 +INDIRP4 +ARGP4 +ADDRGP4 trap_Cvar_Set +CALLV +pop +line 3212 +;3212: Menu_SetFeederSelection(NULL, FEEDER_MAPS, ui_mapIndex.integer, "skirmish"); +CNSTP4 0 +ARGP4 +CNSTI4 1 +ARGI4 +ADDRGP4 ui_mapIndex+12 +INDIRI4 +ARGI4 +ADDRGP4 $2223 +ARGP4 +ADDRGP4 Menu_SetFeederSelection +CALLV +pop +line 3213 +;3213: UI_GameType_HandleKey(0, 0, K_MOUSE1, qfalse); +ADDRLP4 1052 +CNSTI4 0 +ASGNI4 +ADDRLP4 1052 +INDIRI4 +ARGI4 +CNSTP4 0 +ARGP4 +CNSTI4 178 +ARGI4 +ADDRLP4 1052 +INDIRI4 +ARGI4 +ADDRGP4 UI_GameType_HandleKey +CALLI4 +pop +line 3214 +;3214: UI_GameType_HandleKey(0, 0, K_MOUSE2, qfalse); +ADDRLP4 1056 +CNSTI4 0 +ASGNI4 +ADDRLP4 1056 +INDIRI4 +ARGI4 +CNSTP4 0 +ARGP4 +CNSTI4 179 +ARGI4 +ADDRLP4 1056 +INDIRI4 +ARGI4 +ADDRGP4 UI_GameType_HandleKey +CALLI4 +pop +line 3215 +;3215: } else if (Q_stricmp(name, "resetDefaults") == 0) { +ADDRGP4 $2421 +JUMPV +LABELV $2420 +ADDRLP4 1024 +INDIRP4 +ARGP4 +ADDRGP4 $2429 +ARGP4 +ADDRLP4 1044 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 1044 +INDIRI4 +CNSTI4 0 +NEI4 $2427 +line 3216 +;3216: trap_Cmd_ExecuteText( EXEC_APPEND, "exec default.cfg\n"); +CNSTI4 2 +ARGI4 +ADDRGP4 $2430 +ARGP4 +ADDRGP4 trap_Cmd_ExecuteText +CALLV +pop +line 3217 +;3217: trap_Cmd_ExecuteText( EXEC_APPEND, "cvar_restart\n"); +CNSTI4 2 +ARGI4 +ADDRGP4 $2431 +ARGP4 +ADDRGP4 trap_Cmd_ExecuteText +CALLV +pop +line 3218 +;3218: Controls_SetDefaults(); +ADDRGP4 Controls_SetDefaults +CALLV +pop +line 3219 +;3219: trap_Cvar_Set("com_introPlayed", "1" ); +ADDRGP4 $2432 +ARGP4 +ADDRGP4 $398 +ARGP4 +ADDRGP4 trap_Cvar_Set +CALLV +pop +line 3220 +;3220: trap_Cmd_ExecuteText( EXEC_APPEND, "vid_restart\n" ); +CNSTI4 2 +ARGI4 +ADDRGP4 $2433 +ARGP4 +ADDRGP4 trap_Cmd_ExecuteText +CALLV +pop +line 3221 +;3221: } else if (Q_stricmp(name, "getCDKey") == 0) { +ADDRGP4 $2428 +JUMPV +LABELV $2427 +ADDRLP4 1024 +INDIRP4 +ARGP4 +ADDRGP4 $2436 +ARGP4 +ADDRLP4 1048 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 1048 +INDIRI4 +CNSTI4 0 +NEI4 $2434 +line 3223 +;3222: char out[17]; +;3223: trap_GetCDKey(buff, 17); +ADDRLP4 0 +ARGP4 +CNSTI4 17 +ARGI4 +ADDRGP4 trap_GetCDKey +CALLV +pop +line 3224 +;3224: trap_Cvar_Set("cdkey1", ""); +ADDRGP4 $2437 +ARGP4 +ADDRGP4 $112 +ARGP4 +ADDRGP4 trap_Cvar_Set +CALLV +pop +line 3225 +;3225: trap_Cvar_Set("cdkey2", ""); +ADDRGP4 $2438 +ARGP4 +ADDRGP4 $112 +ARGP4 +ADDRGP4 trap_Cvar_Set +CALLV +pop +line 3226 +;3226: trap_Cvar_Set("cdkey3", ""); +ADDRGP4 $2439 +ARGP4 +ADDRGP4 $112 +ARGP4 +ADDRGP4 trap_Cvar_Set +CALLV +pop +line 3227 +;3227: trap_Cvar_Set("cdkey4", ""); +ADDRGP4 $2440 +ARGP4 +ADDRGP4 $112 +ARGP4 +ADDRGP4 trap_Cvar_Set +CALLV +pop +line 3228 +;3228: if (strlen(buff) == CDKEY_LEN) { +ADDRLP4 0 +ARGP4 +ADDRLP4 1072 +ADDRGP4 strlen +CALLI4 +ASGNI4 +ADDRLP4 1072 +INDIRI4 +CNSTI4 16 +NEI4 $2435 +line 3229 +;3229: Q_strncpyz(out, buff, 5); +ADDRLP4 1052 +ARGP4 +ADDRLP4 0 +ARGP4 +CNSTI4 5 +ARGI4 +ADDRGP4 Q_strncpyz +CALLV +pop +line 3230 +;3230: trap_Cvar_Set("cdkey1", out); +ADDRGP4 $2437 +ARGP4 +ADDRLP4 1052 +ARGP4 +ADDRGP4 trap_Cvar_Set +CALLV +pop +line 3231 +;3231: Q_strncpyz(out, buff + 4, 5); +ADDRLP4 1052 +ARGP4 +ADDRLP4 0+4 +ARGP4 +CNSTI4 5 +ARGI4 +ADDRGP4 Q_strncpyz +CALLV +pop +line 3232 +;3232: trap_Cvar_Set("cdkey2", out); +ADDRGP4 $2438 +ARGP4 +ADDRLP4 1052 +ARGP4 +ADDRGP4 trap_Cvar_Set +CALLV +pop +line 3233 +;3233: Q_strncpyz(out, buff + 8, 5); +ADDRLP4 1052 +ARGP4 +ADDRLP4 0+8 +ARGP4 +CNSTI4 5 +ARGI4 +ADDRGP4 Q_strncpyz +CALLV +pop +line 3234 +;3234: trap_Cvar_Set("cdkey3", out); +ADDRGP4 $2439 +ARGP4 +ADDRLP4 1052 +ARGP4 +ADDRGP4 trap_Cvar_Set +CALLV +pop +line 3235 +;3235: Q_strncpyz(out, buff + 12, 5); +ADDRLP4 1052 +ARGP4 +ADDRLP4 0+12 +ARGP4 +CNSTI4 5 +ARGI4 +ADDRGP4 Q_strncpyz +CALLV +pop +line 3236 +;3236: trap_Cvar_Set("cdkey4", out); +ADDRGP4 $2440 +ARGP4 +ADDRLP4 1052 +ARGP4 +ADDRGP4 trap_Cvar_Set +CALLV +pop +line 3237 +;3237: } +line 3239 +;3238: +;3239: } else if (Q_stricmp(name, "verifyCDKey") == 0) { +ADDRGP4 $2435 +JUMPV +LABELV $2434 +ADDRLP4 1024 +INDIRP4 +ARGP4 +ADDRGP4 $2448 +ARGP4 +ADDRLP4 1052 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 1052 +INDIRI4 +CNSTI4 0 +NEI4 $2446 +line 3240 +;3240: buff[0] = '\0'; +ADDRLP4 0 +CNSTI1 0 +ASGNI1 +line 3241 +;3241: Q_strcat(buff, 1024, UI_Cvar_VariableString("cdkey1")); +ADDRGP4 $2437 +ARGP4 +ADDRLP4 1056 +ADDRGP4 UI_Cvar_VariableString +CALLP4 +ASGNP4 +ADDRLP4 0 +ARGP4 +CNSTI4 1024 +ARGI4 +ADDRLP4 1056 +INDIRP4 +ARGP4 +ADDRGP4 Q_strcat +CALLV +pop +line 3242 +;3242: Q_strcat(buff, 1024, UI_Cvar_VariableString("cdkey2")); +ADDRGP4 $2438 +ARGP4 +ADDRLP4 1060 +ADDRGP4 UI_Cvar_VariableString +CALLP4 +ASGNP4 +ADDRLP4 0 +ARGP4 +CNSTI4 1024 +ARGI4 +ADDRLP4 1060 +INDIRP4 +ARGP4 +ADDRGP4 Q_strcat +CALLV +pop +line 3243 +;3243: Q_strcat(buff, 1024, UI_Cvar_VariableString("cdkey3")); +ADDRGP4 $2439 +ARGP4 +ADDRLP4 1064 +ADDRGP4 UI_Cvar_VariableString +CALLP4 +ASGNP4 +ADDRLP4 0 +ARGP4 +CNSTI4 1024 +ARGI4 +ADDRLP4 1064 +INDIRP4 +ARGP4 +ADDRGP4 Q_strcat +CALLV +pop +line 3244 +;3244: Q_strcat(buff, 1024, UI_Cvar_VariableString("cdkey4")); +ADDRGP4 $2440 +ARGP4 +ADDRLP4 1068 +ADDRGP4 UI_Cvar_VariableString +CALLP4 +ASGNP4 +ADDRLP4 0 +ARGP4 +CNSTI4 1024 +ARGI4 +ADDRLP4 1068 +INDIRP4 +ARGP4 +ADDRGP4 Q_strcat +CALLV +pop +line 3245 +;3245: trap_Cvar_Set("cdkey", buff); +ADDRGP4 $2449 +ARGP4 +ADDRLP4 0 +ARGP4 +ADDRGP4 trap_Cvar_Set +CALLV +pop +line 3246 +;3246: if (trap_VerifyCDKey(buff, UI_Cvar_VariableString("cdkeychecksum"))) { +ADDRGP4 $2452 +ARGP4 +ADDRLP4 1072 +ADDRGP4 UI_Cvar_VariableString +CALLP4 +ASGNP4 +ADDRLP4 0 +ARGP4 +ADDRLP4 1072 +INDIRP4 +ARGP4 +ADDRLP4 1076 +ADDRGP4 trap_VerifyCDKey +CALLI4 +ASGNI4 +ADDRLP4 1076 +INDIRI4 +CNSTI4 0 +EQI4 $2450 +line 3247 +;3247: trap_Cvar_Set("ui_cdkeyvalid", "CD Key Appears to be valid."); +ADDRGP4 $2453 +ARGP4 +ADDRGP4 $2454 +ARGP4 +ADDRGP4 trap_Cvar_Set +CALLV +pop +line 3248 +;3248: trap_SetCDKey(buff); +ADDRLP4 0 +ARGP4 +ADDRGP4 trap_SetCDKey +CALLV +pop +line 3249 +;3249: } else { +ADDRGP4 $2447 +JUMPV +LABELV $2450 +line 3250 +;3250: trap_Cvar_Set("ui_cdkeyvalid", "CD Key does not appear to be valid."); +ADDRGP4 $2453 +ARGP4 +ADDRGP4 $2455 +ARGP4 +ADDRGP4 trap_Cvar_Set +CALLV +pop +line 3251 +;3251: } +line 3252 +;3252: } else if (Q_stricmp(name, "loadArenas") == 0) { +ADDRGP4 $2447 +JUMPV +LABELV $2446 +ADDRLP4 1024 +INDIRP4 +ARGP4 +ADDRGP4 $2458 +ARGP4 +ADDRLP4 1056 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 1056 +INDIRI4 +CNSTI4 0 +NEI4 $2456 +line 3253 +;3253: UI_LoadArenas(); +ADDRGP4 UI_LoadArenas +CALLV +pop +line 3254 +;3254: UI_MapCountByGameType(qfalse); +CNSTI4 0 +ARGI4 +ADDRGP4 UI_MapCountByGameType +CALLI4 +pop +line 3255 +;3255: Menu_SetFeederSelection(NULL, FEEDER_ALLMAPS, 0, "createserver"); +CNSTP4 0 +ARGP4 +CNSTI4 4 +ARGI4 +CNSTI4 0 +ARGI4 +ADDRGP4 $2459 +ARGP4 +ADDRGP4 Menu_SetFeederSelection +CALLV +pop +line 3256 +;3256: } else if (Q_stricmp(name, "saveControls") == 0) { +ADDRGP4 $2457 +JUMPV +LABELV $2456 +ADDRLP4 1024 +INDIRP4 +ARGP4 +ADDRGP4 $2462 +ARGP4 +ADDRLP4 1060 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 1060 +INDIRI4 +CNSTI4 0 +NEI4 $2460 +line 3257 +;3257: Controls_SetConfig(qtrue); +CNSTI4 1 +ARGI4 +ADDRGP4 Controls_SetConfig +CALLV +pop +line 3258 +;3258: } else if (Q_stricmp(name, "loadControls") == 0) { +ADDRGP4 $2461 +JUMPV +LABELV $2460 +ADDRLP4 1024 +INDIRP4 +ARGP4 +ADDRGP4 $2465 +ARGP4 +ADDRLP4 1064 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 1064 +INDIRI4 +CNSTI4 0 +NEI4 $2463 +line 3259 +;3259: Controls_GetConfig(); +ADDRGP4 Controls_GetConfig +CALLV +pop +line 3260 +;3260: } else if (Q_stricmp(name, "clearError") == 0) { +ADDRGP4 $2464 +JUMPV +LABELV $2463 +ADDRLP4 1024 +INDIRP4 +ARGP4 +ADDRGP4 $2468 +ARGP4 +ADDRLP4 1068 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 1068 +INDIRI4 +CNSTI4 0 +NEI4 $2466 +line 3261 +;3261: trap_Cvar_Set("com_errorMessage", ""); +ADDRGP4 $2469 +ARGP4 +ADDRGP4 $112 +ARGP4 +ADDRGP4 trap_Cvar_Set +CALLV +pop +line 3262 +;3262: } else if (Q_stricmp(name, "loadGameInfo") == 0) { +ADDRGP4 $2467 +JUMPV +LABELV $2466 +ADDRLP4 1024 +INDIRP4 +ARGP4 +ADDRGP4 $2472 +ARGP4 +ADDRLP4 1072 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 1072 +INDIRI4 +CNSTI4 0 +NEI4 $2470 +line 3266 +;3263:#ifdef PRE_RELEASE_TADEMO +;3264: UI_ParseGameInfo("demogameinfo.txt"); +;3265:#else +;3266: UI_ParseGameInfo("gameinfo.txt"); +ADDRGP4 $677 +ARGP4 +ADDRGP4 UI_ParseGameInfo +CALLV +pop +line 3268 +;3267:#endif +;3268: UI_LoadBestScores(uiInfo.mapList[ui_currentMap.integer].mapLoadName, uiInfo.gameTypes[ui_gameType.integer].gtEnum); +CNSTI4 100 +ADDRGP4 ui_currentMap+12 +INDIRI4 +MULI4 +ADDRGP4 uiInfo+83228+4 +ADDP4 +INDIRP4 +ARGP4 +ADDRGP4 ui_gameType+12 +INDIRI4 +CNSTI4 3 +LSHI4 +ADDRGP4 uiInfo+78580+4 +ADDP4 +INDIRI4 +ARGI4 +ADDRGP4 UI_LoadBestScores +CALLV +pop +line 3269 +;3269: } else if (Q_stricmp(name, "resetScores") == 0) { +ADDRGP4 $2471 +JUMPV +LABELV $2470 +ADDRLP4 1024 +INDIRP4 +ARGP4 +ADDRGP4 $2481 +ARGP4 +ADDRLP4 1076 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 1076 +INDIRI4 +CNSTI4 0 +NEI4 $2479 +line 3270 +;3270: UI_ClearScores(); +ADDRGP4 UI_ClearScores +CALLV +pop +line 3271 +;3271: } else if (Q_stricmp(name, "RefreshServers") == 0) { +ADDRGP4 $2480 +JUMPV +LABELV $2479 +ADDRLP4 1024 +INDIRP4 +ARGP4 +ADDRGP4 $2484 +ARGP4 +ADDRLP4 1080 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 1080 +INDIRI4 +CNSTI4 0 +NEI4 $2482 +line 3272 +;3272: UI_StartServerRefresh(qtrue); +CNSTI4 1 +ARGI4 +ADDRGP4 UI_StartServerRefresh +CALLV +pop +line 3273 +;3273: UI_BuildServerDisplayList(qtrue); +CNSTI4 1 +ARGI4 +ADDRGP4 UI_BuildServerDisplayList +CALLV +pop +line 3274 +;3274: } else if (Q_stricmp(name, "RefreshFilter") == 0) { +ADDRGP4 $2483 +JUMPV +LABELV $2482 +ADDRLP4 1024 +INDIRP4 +ARGP4 +ADDRGP4 $2487 +ARGP4 +ADDRLP4 1084 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 1084 +INDIRI4 +CNSTI4 0 +NEI4 $2485 +line 3275 +;3275: UI_StartServerRefresh(qfalse); +CNSTI4 0 +ARGI4 +ADDRGP4 UI_StartServerRefresh +CALLV +pop +line 3276 +;3276: UI_BuildServerDisplayList(qtrue); +CNSTI4 1 +ARGI4 +ADDRGP4 UI_BuildServerDisplayList +CALLV +pop +line 3277 +;3277: } else if (Q_stricmp(name, "RunSPDemo") == 0) { +ADDRGP4 $2486 +JUMPV +LABELV $2485 +ADDRLP4 1024 +INDIRP4 +ARGP4 +ADDRGP4 $2490 +ARGP4 +ADDRLP4 1088 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 1088 +INDIRI4 +CNSTI4 0 +NEI4 $2488 +line 3278 +;3278: if (uiInfo.demoAvailable) { +ADDRGP4 uiInfo+73432 +INDIRI4 +CNSTI4 0 +EQI4 $2489 +line 3279 +;3279: trap_Cmd_ExecuteText( EXEC_APPEND, va("demo %s_%i\n", uiInfo.mapList[ui_currentMap.integer].mapLoadName, uiInfo.gameTypes[ui_gameType.integer].gtEnum)); +ADDRGP4 $2494 +ARGP4 +CNSTI4 100 +ADDRGP4 ui_currentMap+12 +INDIRI4 +MULI4 +ADDRGP4 uiInfo+83228+4 +ADDP4 +INDIRP4 +ARGP4 +ADDRGP4 ui_gameType+12 +INDIRI4 +CNSTI4 3 +LSHI4 +ADDRGP4 uiInfo+78580+4 +ADDP4 +INDIRI4 +ARGI4 +ADDRLP4 1092 +ADDRGP4 va +CALLP4 +ASGNP4 +CNSTI4 2 +ARGI4 +ADDRLP4 1092 +INDIRP4 +ARGP4 +ADDRGP4 trap_Cmd_ExecuteText +CALLV +pop +line 3280 +;3280: } +line 3281 +;3281: } else if (Q_stricmp(name, "LoadDemos") == 0) { +ADDRGP4 $2489 +JUMPV +LABELV $2488 +ADDRLP4 1024 +INDIRP4 +ARGP4 +ADDRGP4 $2503 +ARGP4 +ADDRLP4 1092 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 1092 +INDIRI4 +CNSTI4 0 +NEI4 $2501 +line 3282 +;3282: UI_LoadDemos(); +ADDRGP4 UI_LoadDemos +CALLV +pop +line 3283 +;3283: } else if (Q_stricmp(name, "LoadMovies") == 0) { +ADDRGP4 $2502 +JUMPV +LABELV $2501 +ADDRLP4 1024 +INDIRP4 +ARGP4 +ADDRGP4 $2506 +ARGP4 +ADDRLP4 1096 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 1096 +INDIRI4 +CNSTI4 0 +NEI4 $2504 +line 3284 +;3284: UI_LoadMovies(); +ADDRGP4 UI_LoadMovies +CALLV +pop +line 3285 +;3285: } else if (Q_stricmp(name, "LoadMods") == 0) { +ADDRGP4 $2505 +JUMPV +LABELV $2504 +ADDRLP4 1024 +INDIRP4 +ARGP4 +ADDRGP4 $2509 +ARGP4 +ADDRLP4 1100 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 1100 +INDIRI4 +CNSTI4 0 +NEI4 $2507 +line 3286 +;3286: UI_LoadMods(); +ADDRGP4 UI_LoadMods +CALLV +pop +line 3287 +;3287: } else if (Q_stricmp(name, "playMovie") == 0) { +ADDRGP4 $2508 +JUMPV +LABELV $2507 +ADDRLP4 1024 +INDIRP4 +ARGP4 +ADDRGP4 $2512 +ARGP4 +ADDRLP4 1104 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 1104 +INDIRI4 +CNSTI4 0 +NEI4 $2510 +line 3288 +;3288: if (uiInfo.previewMovie >= 0) { +ADDRGP4 uiInfo+99260 +INDIRI4 +CNSTI4 0 +LTI4 $2513 +line 3289 +;3289: trap_CIN_StopCinematic(uiInfo.previewMovie); +ADDRGP4 uiInfo+99260 +INDIRI4 +ARGI4 +ADDRGP4 trap_CIN_StopCinematic +CALLI4 +pop +line 3290 +;3290: } +LABELV $2513 +line 3291 +;3291: trap_Cmd_ExecuteText( EXEC_APPEND, va("cinematic %s.roq 2\n", uiInfo.movieList[uiInfo.movieIndex])); +ADDRGP4 $2517 +ARGP4 +ADDRGP4 uiInfo+99256 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 uiInfo+98228 +ADDP4 +INDIRP4 +ARGP4 +ADDRLP4 1108 +ADDRGP4 va +CALLP4 +ASGNP4 +CNSTI4 2 +ARGI4 +ADDRLP4 1108 +INDIRP4 +ARGP4 +ADDRGP4 trap_Cmd_ExecuteText +CALLV +pop +line 3292 +;3292: } else if (Q_stricmp(name, "RunMod") == 0) { +ADDRGP4 $2511 +JUMPV +LABELV $2510 +ADDRLP4 1024 +INDIRP4 +ARGP4 +ADDRGP4 $2522 +ARGP4 +ADDRLP4 1108 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 1108 +INDIRI4 +CNSTI4 0 +NEI4 $2520 +line 3293 +;3293: trap_Cvar_Set( "fs_game", uiInfo.modList[uiInfo.modIndex].modName); +ADDRGP4 $2523 +ARGP4 +ADDRGP4 uiInfo+97192 +INDIRI4 +CNSTI4 3 +LSHI4 +ADDRGP4 uiInfo+96676 +ADDP4 +INDIRP4 +ARGP4 +ADDRGP4 trap_Cvar_Set +CALLV +pop +line 3294 +;3294: trap_Cmd_ExecuteText( EXEC_APPEND, "vid_restart;" ); +CNSTI4 2 +ARGI4 +ADDRGP4 $2526 +ARGP4 +ADDRGP4 trap_Cmd_ExecuteText +CALLV +pop +line 3295 +;3295: } else if (Q_stricmp(name, "RunDemo") == 0) { +ADDRGP4 $2521 +JUMPV +LABELV $2520 +ADDRLP4 1024 +INDIRP4 +ARGP4 +ADDRGP4 $2529 +ARGP4 +ADDRLP4 1112 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 1112 +INDIRI4 +CNSTI4 0 +NEI4 $2527 +line 3296 +;3296: trap_Cmd_ExecuteText( EXEC_APPEND, va("demo %s\n", uiInfo.demoList[uiInfo.demoIndex])); +ADDRGP4 $2530 +ARGP4 +ADDRGP4 uiInfo+98224 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 uiInfo+97196 +ADDP4 +INDIRP4 +ARGP4 +ADDRLP4 1116 +ADDRGP4 va +CALLP4 +ASGNP4 +CNSTI4 2 +ARGI4 +ADDRLP4 1116 +INDIRP4 +ARGP4 +ADDRGP4 trap_Cmd_ExecuteText +CALLV +pop +line 3297 +;3297: } else if (Q_stricmp(name, "Quake3") == 0) { +ADDRGP4 $2528 +JUMPV +LABELV $2527 +ADDRLP4 1024 +INDIRP4 +ARGP4 +ADDRGP4 $2535 +ARGP4 +ADDRLP4 1116 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 1116 +INDIRI4 +CNSTI4 0 +NEI4 $2533 +line 3298 +;3298: trap_Cvar_Set( "fs_game", ""); +ADDRGP4 $2523 +ARGP4 +ADDRGP4 $112 +ARGP4 +ADDRGP4 trap_Cvar_Set +CALLV +pop +line 3299 +;3299: trap_Cmd_ExecuteText( EXEC_APPEND, "vid_restart;" ); +CNSTI4 2 +ARGI4 +ADDRGP4 $2526 +ARGP4 +ADDRGP4 trap_Cmd_ExecuteText +CALLV +pop +line 3300 +;3300: } else if (Q_stricmp(name, "closeJoin") == 0) { +ADDRGP4 $2534 +JUMPV +LABELV $2533 +ADDRLP4 1024 +INDIRP4 +ARGP4 +ADDRGP4 $2538 +ARGP4 +ADDRLP4 1120 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 1120 +INDIRI4 +CNSTI4 0 +NEI4 $2536 +line 3301 +;3301: if (uiInfo.serverStatus.refreshActive) { +ADDRGP4 uiInfo+99264+2212 +INDIRI4 +CNSTI4 0 +EQI4 $2539 +line 3302 +;3302: UI_StopServerRefresh(); +ADDRGP4 UI_StopServerRefresh +CALLV +pop +line 3303 +;3303: uiInfo.serverStatus.nextDisplayRefresh = 0; +ADDRGP4 uiInfo+99264+10420 +CNSTI4 0 +ASGNI4 +line 3304 +;3304: uiInfo.nextServerStatusRefresh = 0; +ADDRGP4 uiInfo+114144 +CNSTI4 0 +ASGNI4 +line 3305 +;3305: uiInfo.nextFindPlayerRefresh = 0; +ADDRGP4 uiInfo+119472 +CNSTI4 0 +ASGNI4 +line 3306 +;3306: UI_BuildServerDisplayList(qtrue); +CNSTI4 1 +ARGI4 +ADDRGP4 UI_BuildServerDisplayList +CALLV +pop +line 3307 +;3307: } else { +ADDRGP4 $2537 +JUMPV +LABELV $2539 +line 3308 +;3308: Menus_CloseByName("joinserver"); +ADDRGP4 $2547 +ARGP4 +ADDRGP4 Menus_CloseByName +CALLV +pop +line 3309 +;3309: Menus_OpenByName("main"); +ADDRGP4 $2548 +ARGP4 +ADDRGP4 Menus_OpenByName +CALLV +pop +line 3310 +;3310: } +line 3311 +;3311: } else if (Q_stricmp(name, "StopRefresh") == 0) { +ADDRGP4 $2537 +JUMPV +LABELV $2536 +ADDRLP4 1024 +INDIRP4 +ARGP4 +ADDRGP4 $2551 +ARGP4 +ADDRLP4 1124 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 1124 +INDIRI4 +CNSTI4 0 +NEI4 $2549 +line 3312 +;3312: UI_StopServerRefresh(); +ADDRGP4 UI_StopServerRefresh +CALLV +pop +line 3313 +;3313: uiInfo.serverStatus.nextDisplayRefresh = 0; +ADDRGP4 uiInfo+99264+10420 +CNSTI4 0 +ASGNI4 +line 3314 +;3314: uiInfo.nextServerStatusRefresh = 0; +ADDRGP4 uiInfo+114144 +CNSTI4 0 +ASGNI4 +line 3315 +;3315: uiInfo.nextFindPlayerRefresh = 0; +ADDRGP4 uiInfo+119472 +CNSTI4 0 +ASGNI4 +line 3316 +;3316: } else if (Q_stricmp(name, "UpdateFilter") == 0) { +ADDRGP4 $2550 +JUMPV +LABELV $2549 +ADDRLP4 1024 +INDIRP4 +ARGP4 +ADDRGP4 $2558 +ARGP4 +ADDRLP4 1128 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 1128 +INDIRI4 +CNSTI4 0 +NEI4 $2556 +line 3317 +;3317: if (ui_netSource.integer == AS_LOCAL) { +ADDRGP4 ui_netSource+12 +INDIRI4 +CNSTI4 0 +NEI4 $2559 +line 3318 +;3318: UI_StartServerRefresh(qtrue); +CNSTI4 1 +ARGI4 +ADDRGP4 UI_StartServerRefresh +CALLV +pop +line 3319 +;3319: } +LABELV $2559 +line 3320 +;3320: UI_BuildServerDisplayList(qtrue); +CNSTI4 1 +ARGI4 +ADDRGP4 UI_BuildServerDisplayList +CALLV +pop +line 3321 +;3321: UI_FeederSelection(FEEDER_SERVERS, 0); +CNSTF4 1073741824 +ARGF4 +CNSTI4 0 +ARGI4 +ADDRGP4 UI_FeederSelection +CALLV +pop +line 3322 +;3322: } else if (Q_stricmp(name, "ServerStatus") == 0) { +ADDRGP4 $2557 +JUMPV +LABELV $2556 +ADDRLP4 1024 +INDIRP4 +ARGP4 +ADDRGP4 $2564 +ARGP4 +ADDRLP4 1132 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 1132 +INDIRI4 +CNSTI4 0 +NEI4 $2562 +line 3323 +;3323: trap_LAN_GetServerAddressString(ui_netSource.integer, uiInfo.serverStatus.displayServers[uiInfo.serverStatus.currentServer], uiInfo.serverStatusAddress, sizeof(uiInfo.serverStatusAddress)); +ADDRGP4 ui_netSource+12 +INDIRI4 +ARGI4 +ADDRGP4 uiInfo+99264+2216 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 uiInfo+99264+2220 +ADDP4 +INDIRI4 +ARGI4 +ADDRGP4 uiInfo+110748 +ARGP4 +CNSTI4 64 +ARGI4 +ADDRGP4 trap_LAN_GetServerAddressString +CALLV +pop +line 3324 +;3324: UI_BuildServerStatus(qtrue); +CNSTI4 1 +ARGI4 +ADDRGP4 UI_BuildServerStatus +CALLV +pop +line 3325 +;3325: } else if (Q_stricmp(name, "FoundPlayerServerStatus") == 0) { +ADDRGP4 $2563 +JUMPV +LABELV $2562 +ADDRLP4 1024 +INDIRP4 +ARGP4 +ADDRGP4 $2574 +ARGP4 +ADDRLP4 1136 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 1136 +INDIRI4 +CNSTI4 0 +NEI4 $2572 +line 3326 +;3326: Q_strncpyz(uiInfo.serverStatusAddress, uiInfo.foundPlayerServerAddresses[uiInfo.currentFoundPlayerServer], sizeof(uiInfo.serverStatusAddress)); +ADDRGP4 uiInfo+110748 +ARGP4 +ADDRGP4 uiInfo+119464 +INDIRI4 +CNSTI4 6 +LSHI4 +ADDRGP4 uiInfo+117416 +ADDP4 +ARGP4 +CNSTI4 64 +ARGI4 +ADDRGP4 Q_strncpyz +CALLV +pop +line 3327 +;3327: UI_BuildServerStatus(qtrue); +CNSTI4 1 +ARGI4 +ADDRGP4 UI_BuildServerStatus +CALLV +pop +line 3328 +;3328: Menu_SetFeederSelection(NULL, FEEDER_FINDPLAYER, 0, NULL); +CNSTP4 0 +ARGP4 +CNSTI4 14 +ARGI4 +CNSTI4 0 +ARGI4 +CNSTP4 0 +ARGP4 +ADDRGP4 Menu_SetFeederSelection +CALLV +pop +line 3329 +;3329: } else if (Q_stricmp(name, "FindPlayer") == 0) { +ADDRGP4 $2573 +JUMPV +LABELV $2572 +ADDRLP4 1024 +INDIRP4 +ARGP4 +ADDRGP4 $2581 +ARGP4 +ADDRLP4 1140 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 1140 +INDIRI4 +CNSTI4 0 +NEI4 $2579 +line 3330 +;3330: UI_BuildFindPlayerList(qtrue); +CNSTI4 1 +ARGI4 +ADDRGP4 UI_BuildFindPlayerList +CALLV +pop +line 3332 +;3331: // clear the displayed server status info +;3332: uiInfo.serverStatusInfo.numLines = 0; +ADDRGP4 uiInfo+110812+3328 +CNSTI4 0 +ASGNI4 +line 3333 +;3333: Menu_SetFeederSelection(NULL, FEEDER_FINDPLAYER, 0, NULL); +CNSTP4 0 +ARGP4 +CNSTI4 14 +ARGI4 +CNSTI4 0 +ARGI4 +CNSTP4 0 +ARGP4 +ADDRGP4 Menu_SetFeederSelection +CALLV +pop +line 3334 +;3334: } else if (Q_stricmp(name, "JoinServer") == 0) { +ADDRGP4 $2580 +JUMPV +LABELV $2579 +ADDRLP4 1024 +INDIRP4 +ARGP4 +ADDRGP4 $2586 +ARGP4 +ADDRLP4 1144 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 1144 +INDIRI4 +CNSTI4 0 +NEI4 $2584 +line 3335 +;3335: trap_Cvar_Set("cg_thirdPerson", "0"); +ADDRGP4 $396 +ARGP4 +ADDRGP4 $395 +ARGP4 +ADDRGP4 trap_Cvar_Set +CALLV +pop +line 3336 +;3336: trap_Cvar_Set("cg_cameraOrbit", "0"); +ADDRGP4 $394 +ARGP4 +ADDRGP4 $395 +ARGP4 +ADDRGP4 trap_Cvar_Set +CALLV +pop +line 3337 +;3337: trap_Cvar_Set("ui_singlePlayerActive", "0"); +ADDRGP4 $2240 +ARGP4 +ADDRGP4 $395 +ARGP4 +ADDRGP4 trap_Cvar_Set +CALLV +pop +line 3338 +;3338: if (uiInfo.serverStatus.currentServer >= 0 && uiInfo.serverStatus.currentServer < uiInfo.serverStatus.numDisplayServers) { +ADDRGP4 uiInfo+99264+2216 +INDIRI4 +CNSTI4 0 +LTI4 $2585 +ADDRGP4 uiInfo+99264+2216 +INDIRI4 +ADDRGP4 uiInfo+99264+10412 +INDIRI4 +GEI4 $2585 +line 3339 +;3339: trap_LAN_GetServerAddressString(ui_netSource.integer, uiInfo.serverStatus.displayServers[uiInfo.serverStatus.currentServer], buff, 1024); +ADDRGP4 ui_netSource+12 +INDIRI4 +ARGI4 +ADDRGP4 uiInfo+99264+2216 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 uiInfo+99264+2220 +ADDP4 +INDIRI4 +ARGI4 +ADDRLP4 0 +ARGP4 +CNSTI4 1024 +ARGI4 +ADDRGP4 trap_LAN_GetServerAddressString +CALLV +pop +line 3340 +;3340: trap_Cmd_ExecuteText( EXEC_APPEND, va( "connect %s\n", buff ) ); +ADDRGP4 $2600 +ARGP4 +ADDRLP4 0 +ARGP4 +ADDRLP4 1148 +ADDRGP4 va +CALLP4 +ASGNP4 +CNSTI4 2 +ARGI4 +ADDRLP4 1148 +INDIRP4 +ARGP4 +ADDRGP4 trap_Cmd_ExecuteText +CALLV +pop +line 3341 +;3341: } +line 3342 +;3342: } else if (Q_stricmp(name, "FoundPlayerJoinServer") == 0) { +ADDRGP4 $2585 +JUMPV +LABELV $2584 +ADDRLP4 1024 +INDIRP4 +ARGP4 +ADDRGP4 $2603 +ARGP4 +ADDRLP4 1148 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 1148 +INDIRI4 +CNSTI4 0 +NEI4 $2601 +line 3343 +;3343: trap_Cvar_Set("ui_singlePlayerActive", "0"); +ADDRGP4 $2240 +ARGP4 +ADDRGP4 $395 +ARGP4 +ADDRGP4 trap_Cvar_Set +CALLV +pop +line 3344 +;3344: if (uiInfo.currentFoundPlayerServer >= 0 && uiInfo.currentFoundPlayerServer < uiInfo.numFoundPlayerServers) { +ADDRGP4 uiInfo+119464 +INDIRI4 +CNSTI4 0 +LTI4 $2602 +ADDRGP4 uiInfo+119464 +INDIRI4 +ADDRGP4 uiInfo+119468 +INDIRI4 +GEI4 $2602 +line 3345 +;3345: trap_Cmd_ExecuteText( EXEC_APPEND, va( "connect %s\n", uiInfo.foundPlayerServerAddresses[uiInfo.currentFoundPlayerServer] ) ); +ADDRGP4 $2600 +ARGP4 +ADDRGP4 uiInfo+119464 +INDIRI4 +CNSTI4 6 +LSHI4 +ADDRGP4 uiInfo+117416 +ADDP4 +ARGP4 +ADDRLP4 1152 +ADDRGP4 va +CALLP4 +ASGNP4 +CNSTI4 2 +ARGI4 +ADDRLP4 1152 +INDIRP4 +ARGP4 +ADDRGP4 trap_Cmd_ExecuteText +CALLV +pop +line 3346 +;3346: } +line 3347 +;3347: } else if (Q_stricmp(name, "Quit") == 0) { +ADDRGP4 $2602 +JUMPV +LABELV $2601 +ADDRLP4 1024 +INDIRP4 +ARGP4 +ADDRGP4 $2613 +ARGP4 +ADDRLP4 1152 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 1152 +INDIRI4 +CNSTI4 0 +NEI4 $2611 +line 3348 +;3348: trap_Cvar_Set("ui_singlePlayerActive", "0"); +ADDRGP4 $2240 +ARGP4 +ADDRGP4 $395 +ARGP4 +ADDRGP4 trap_Cvar_Set +CALLV +pop +line 3349 +;3349: trap_Cmd_ExecuteText( EXEC_NOW, "quit"); +CNSTI4 0 +ARGI4 +ADDRGP4 $2614 +ARGP4 +ADDRGP4 trap_Cmd_ExecuteText +CALLV +pop +line 3350 +;3350: } else if (Q_stricmp(name, "Controls") == 0) { +ADDRGP4 $2612 +JUMPV +LABELV $2611 +ADDRLP4 1024 +INDIRP4 +ARGP4 +ADDRGP4 $2617 +ARGP4 +ADDRLP4 1156 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 1156 +INDIRI4 +CNSTI4 0 +NEI4 $2615 +line 3351 +;3351: trap_Cvar_Set( "cl_paused", "1" ); +ADDRGP4 $2618 +ARGP4 +ADDRGP4 $398 +ARGP4 +ADDRGP4 trap_Cvar_Set +CALLV +pop +line 3352 +;3352: trap_Key_SetCatcher( KEYCATCH_UI ); +CNSTI4 2 +ARGI4 +ADDRGP4 trap_Key_SetCatcher +CALLV +pop +line 3353 +;3353: Menus_CloseAll(); +ADDRGP4 Menus_CloseAll +CALLV +pop +line 3354 +;3354: Menus_ActivateByName("setup_menu2"); +ADDRGP4 $2619 +ARGP4 +ADDRGP4 Menus_ActivateByName +CALLP4 +pop +line 3355 +;3355: } else if (Q_stricmp(name, "Leave") == 0) { +ADDRGP4 $2616 +JUMPV +LABELV $2615 +ADDRLP4 1024 +INDIRP4 +ARGP4 +ADDRGP4 $2622 +ARGP4 +ADDRLP4 1160 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 1160 +INDIRI4 +CNSTI4 0 +NEI4 $2620 +line 3356 +;3356: trap_Cmd_ExecuteText( EXEC_APPEND, "disconnect\n" ); +CNSTI4 2 +ARGI4 +ADDRGP4 $2623 +ARGP4 +ADDRGP4 trap_Cmd_ExecuteText +CALLV +pop +line 3357 +;3357: trap_Key_SetCatcher( KEYCATCH_UI ); +CNSTI4 2 +ARGI4 +ADDRGP4 trap_Key_SetCatcher +CALLV +pop +line 3358 +;3358: Menus_CloseAll(); +ADDRGP4 Menus_CloseAll +CALLV +pop +line 3359 +;3359: Menus_ActivateByName("main"); +ADDRGP4 $2548 +ARGP4 +ADDRGP4 Menus_ActivateByName +CALLP4 +pop +line 3360 +;3360: } else if (Q_stricmp(name, "ServerSort") == 0) { +ADDRGP4 $2621 +JUMPV +LABELV $2620 +ADDRLP4 1024 +INDIRP4 +ARGP4 +ADDRGP4 $2626 +ARGP4 +ADDRLP4 1164 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 1164 +INDIRI4 +CNSTI4 0 +NEI4 $2624 +line 3362 +;3361: int sortColumn; +;3362: if (Int_Parse(args, &sortColumn)) { +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRLP4 1168 +ARGP4 +ADDRLP4 1172 +ADDRGP4 Int_Parse +CALLI4 +ASGNI4 +ADDRLP4 1172 +INDIRI4 +CNSTI4 0 +EQI4 $2625 +line 3364 +;3363: // if same column we're already sorting on then flip the direction +;3364: if (sortColumn == uiInfo.serverStatus.sortKey) { +ADDRLP4 1168 +INDIRI4 +ADDRGP4 uiInfo+99264+2200 +INDIRI4 +NEI4 $2629 +line 3365 +;3365: uiInfo.serverStatus.sortDir = !uiInfo.serverStatus.sortDir; +ADDRGP4 uiInfo+99264+2204 +INDIRI4 +CNSTI4 0 +NEI4 $2638 +ADDRLP4 1176 +CNSTI4 1 +ASGNI4 +ADDRGP4 $2639 +JUMPV +LABELV $2638 +ADDRLP4 1176 +CNSTI4 0 +ASGNI4 +LABELV $2639 +ADDRGP4 uiInfo+99264+2204 +ADDRLP4 1176 +INDIRI4 +ASGNI4 +line 3366 +;3366: } +LABELV $2629 +line 3368 +;3367: // make sure we sort again +;3368: UI_ServersSort(sortColumn, qtrue); +ADDRLP4 1168 +INDIRI4 +ARGI4 +CNSTI4 1 +ARGI4 +ADDRGP4 UI_ServersSort +CALLV +pop +line 3369 +;3369: } +line 3370 +;3370: } else if (Q_stricmp(name, "nextSkirmish") == 0) { +ADDRGP4 $2625 +JUMPV +LABELV $2624 +ADDRLP4 1024 +INDIRP4 +ARGP4 +ADDRGP4 $2642 +ARGP4 +ADDRLP4 1168 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 1168 +INDIRI4 +CNSTI4 0 +NEI4 $2640 +line 3371 +;3371: UI_StartSkirmish(qtrue); +CNSTI4 1 +ARGI4 +ADDRGP4 UI_StartSkirmish +CALLV +pop +line 3372 +;3372: } else if (Q_stricmp(name, "SkirmishStart") == 0) { +ADDRGP4 $2641 +JUMPV +LABELV $2640 +ADDRLP4 1024 +INDIRP4 +ARGP4 +ADDRGP4 $2645 +ARGP4 +ADDRLP4 1172 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 1172 +INDIRI4 +CNSTI4 0 +NEI4 $2643 +line 3373 +;3373: UI_StartSkirmish(qfalse); +CNSTI4 0 +ARGI4 +ADDRGP4 UI_StartSkirmish +CALLV +pop +line 3374 +;3374: } else if (Q_stricmp(name, "closeingame") == 0) { +ADDRGP4 $2644 +JUMPV +LABELV $2643 +ADDRLP4 1024 +INDIRP4 +ARGP4 +ADDRGP4 $2648 +ARGP4 +ADDRLP4 1176 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 1176 +INDIRI4 +CNSTI4 0 +NEI4 $2646 +line 3375 +;3375: trap_Key_SetCatcher( trap_Key_GetCatcher() & ~KEYCATCH_UI ); +ADDRLP4 1180 +ADDRGP4 trap_Key_GetCatcher +CALLI4 +ASGNI4 +ADDRLP4 1180 +INDIRI4 +CNSTI4 -3 +BANDI4 +ARGI4 +ADDRGP4 trap_Key_SetCatcher +CALLV +pop +line 3376 +;3376: trap_Key_ClearStates(); +ADDRGP4 trap_Key_ClearStates +CALLV +pop +line 3377 +;3377: trap_Cvar_Set( "cl_paused", "0" ); +ADDRGP4 $2618 +ARGP4 +ADDRGP4 $395 +ARGP4 +ADDRGP4 trap_Cvar_Set +CALLV +pop +line 3378 +;3378: Menus_CloseAll(); +ADDRGP4 Menus_CloseAll +CALLV +pop +line 3379 +;3379: } else if (Q_stricmp(name, "voteMap") == 0) { +ADDRGP4 $2647 +JUMPV +LABELV $2646 +ADDRLP4 1024 +INDIRP4 +ARGP4 +ADDRGP4 $2651 +ARGP4 +ADDRLP4 1180 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 1180 +INDIRI4 +CNSTI4 0 +NEI4 $2649 +line 3380 +;3380: if (ui_currentNetMap.integer >=0 && ui_currentNetMap.integer < uiInfo.mapCount) { +ADDRGP4 ui_currentNetMap+12 +INDIRI4 +CNSTI4 0 +LTI4 $2650 +ADDRGP4 ui_currentNetMap+12 +INDIRI4 +ADDRGP4 uiInfo+83224 +INDIRI4 +GEI4 $2650 +line 3381 +;3381: trap_Cmd_ExecuteText( EXEC_APPEND, va("callvote map %s\n",uiInfo.mapList[ui_currentNetMap.integer].mapLoadName) ); +ADDRGP4 $2657 +ARGP4 +CNSTI4 100 +ADDRGP4 ui_currentNetMap+12 +INDIRI4 +MULI4 +ADDRGP4 uiInfo+83228+4 +ADDP4 +INDIRP4 +ARGP4 +ADDRLP4 1184 +ADDRGP4 va +CALLP4 +ASGNP4 +CNSTI4 2 +ARGI4 +ADDRLP4 1184 +INDIRP4 +ARGP4 +ADDRGP4 trap_Cmd_ExecuteText +CALLV +pop +line 3382 +;3382: } +line 3383 +;3383: } else if (Q_stricmp(name, "voteKick") == 0) { +ADDRGP4 $2650 +JUMPV +LABELV $2649 +ADDRLP4 1024 +INDIRP4 +ARGP4 +ADDRGP4 $2663 +ARGP4 +ADDRLP4 1184 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 1184 +INDIRI4 +CNSTI4 0 +NEI4 $2661 +line 3384 +;3384: if (uiInfo.playerIndex >= 0 && uiInfo.playerIndex < uiInfo.playerCount) { +ADDRGP4 uiInfo+78860 +INDIRI4 +CNSTI4 0 +LTI4 $2662 +ADDRGP4 uiInfo+78860 +INDIRI4 +ADDRGP4 uiInfo+78844 +INDIRI4 +GEI4 $2662 +line 3385 +;3385: trap_Cmd_ExecuteText( EXEC_APPEND, va("callvote kick %s\n",uiInfo.playerNames[uiInfo.playerIndex]) ); +ADDRGP4 $2669 +ARGP4 +ADDRGP4 uiInfo+78860 +INDIRI4 +CNSTI4 5 +LSHI4 +ADDRGP4 uiInfo+78872 +ADDP4 +ARGP4 +ADDRLP4 1188 +ADDRGP4 va +CALLP4 +ASGNP4 +CNSTI4 2 +ARGI4 +ADDRLP4 1188 +INDIRP4 +ARGP4 +ADDRGP4 trap_Cmd_ExecuteText +CALLV +pop +line 3386 +;3386: } +line 3387 +;3387: } else if (Q_stricmp(name, "voteGame") == 0) { +ADDRGP4 $2662 +JUMPV +LABELV $2661 +ADDRLP4 1024 +INDIRP4 +ARGP4 +ADDRGP4 $2674 +ARGP4 +ADDRLP4 1188 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 1188 +INDIRI4 +CNSTI4 0 +NEI4 $2672 +line 3388 +;3388: if (ui_netGameType.integer >= 0 && ui_netGameType.integer < uiInfo.numGameTypes) { +ADDRGP4 ui_netGameType+12 +INDIRI4 +CNSTI4 0 +LTI4 $2673 +ADDRGP4 ui_netGameType+12 +INDIRI4 +ADDRGP4 uiInfo+78576 +INDIRI4 +GEI4 $2673 +line 3389 +;3389: trap_Cmd_ExecuteText( EXEC_APPEND, va("callvote g_gametype %i\n",uiInfo.gameTypes[ui_netGameType.integer].gtEnum) ); +ADDRGP4 $2680 +ARGP4 +ADDRGP4 ui_netGameType+12 +INDIRI4 +CNSTI4 3 +LSHI4 +ADDRGP4 uiInfo+78580+4 +ADDP4 +INDIRI4 +ARGI4 +ADDRLP4 1192 +ADDRGP4 va +CALLP4 +ASGNP4 +CNSTI4 2 +ARGI4 +ADDRLP4 1192 +INDIRP4 +ARGP4 +ADDRGP4 trap_Cmd_ExecuteText +CALLV +pop +line 3390 +;3390: } +line 3391 +;3391: } else if (Q_stricmp(name, "voteLeader") == 0) { +ADDRGP4 $2673 +JUMPV +LABELV $2672 +ADDRLP4 1024 +INDIRP4 +ARGP4 +ADDRGP4 $2686 +ARGP4 +ADDRLP4 1192 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 1192 +INDIRI4 +CNSTI4 0 +NEI4 $2684 +line 3392 +;3392: if (uiInfo.teamIndex >= 0 && uiInfo.teamIndex < uiInfo.myTeamCount) { +ADDRGP4 uiInfo+78852 +INDIRI4 +CNSTI4 0 +LTI4 $2685 +ADDRGP4 uiInfo+78852 +INDIRI4 +ADDRGP4 uiInfo+78848 +INDIRI4 +GEI4 $2685 +line 3393 +;3393: trap_Cmd_ExecuteText( EXEC_APPEND, va("callteamvote leader %s\n",uiInfo.teamNames[uiInfo.teamIndex]) ); +ADDRGP4 $2692 +ARGP4 +ADDRGP4 uiInfo+78852 +INDIRI4 +CNSTI4 5 +LSHI4 +ADDRGP4 uiInfo+80920 +ADDP4 +ARGP4 +ADDRLP4 1196 +ADDRGP4 va +CALLP4 +ASGNP4 +CNSTI4 2 +ARGI4 +ADDRLP4 1196 +INDIRP4 +ARGP4 +ADDRGP4 trap_Cmd_ExecuteText +CALLV +pop +line 3394 +;3394: } +line 3395 +;3395: } else if (Q_stricmp(name, "addBot") == 0) { +ADDRGP4 $2685 +JUMPV +LABELV $2684 +ADDRLP4 1024 +INDIRP4 +ARGP4 +ADDRGP4 $2697 +ARGP4 +ADDRLP4 1196 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 1196 +INDIRI4 +CNSTI4 0 +NEI4 $2695 +line 3396 +;3396: if (trap_Cvar_VariableValue("g_gametype") >= GT_TEAM) { +ADDRGP4 $1362 +ARGP4 +ADDRLP4 1200 +ADDRGP4 trap_Cvar_VariableValue +CALLF4 +ASGNF4 +ADDRLP4 1200 +INDIRF4 +CNSTF4 1077936128 +LTF4 $2698 +line 3397 +;3397: trap_Cmd_ExecuteText( EXEC_APPEND, va("addbot %s %i %s\n", uiInfo.characterList[uiInfo.botIndex].name, uiInfo.skillIndex+1, (uiInfo.redBlue == 0) ? "Red" : "Blue") ); +ADDRGP4 $2700 +ARGP4 +CNSTI4 24 +ADDRGP4 uiInfo+73444 +INDIRI4 +MULI4 +ADDRGP4 uiInfo+73448 +ADDP4 +INDIRP4 +ARGP4 +ADDRGP4 uiInfo+96672 +INDIRI4 +CNSTI4 1 +ADDI4 +ARGI4 +ADDRGP4 uiInfo+78840 +INDIRI4 +CNSTI4 0 +NEI4 $2706 +ADDRLP4 1204 +ADDRGP4 $843 +ASGNP4 +ADDRGP4 $2707 +JUMPV +LABELV $2706 +ADDRLP4 1204 +ADDRGP4 $842 +ASGNP4 +LABELV $2707 +ADDRLP4 1204 +INDIRP4 +ARGP4 +ADDRLP4 1208 +ADDRGP4 va +CALLP4 +ASGNP4 +CNSTI4 2 +ARGI4 +ADDRLP4 1208 +INDIRP4 +ARGP4 +ADDRGP4 trap_Cmd_ExecuteText +CALLV +pop +line 3398 +;3398: } else { +ADDRGP4 $2696 +JUMPV +LABELV $2698 +line 3399 +;3399: trap_Cmd_ExecuteText( EXEC_APPEND, va("addbot %s %i %s\n", UI_GetBotNameByNumber(uiInfo.botIndex), uiInfo.skillIndex+1, (uiInfo.redBlue == 0) ? "Red" : "Blue") ); +ADDRGP4 uiInfo+73444 +INDIRI4 +ARGI4 +ADDRLP4 1208 +ADDRGP4 UI_GetBotNameByNumber +CALLP4 +ASGNP4 +ADDRGP4 $2700 +ARGP4 +ADDRLP4 1208 +INDIRP4 +ARGP4 +ADDRGP4 uiInfo+96672 +INDIRI4 +CNSTI4 1 +ADDI4 +ARGI4 +ADDRGP4 uiInfo+78840 +INDIRI4 +CNSTI4 0 +NEI4 $2712 +ADDRLP4 1204 +ADDRGP4 $843 +ASGNP4 +ADDRGP4 $2713 +JUMPV +LABELV $2712 +ADDRLP4 1204 +ADDRGP4 $842 +ASGNP4 +LABELV $2713 +ADDRLP4 1204 +INDIRP4 +ARGP4 +ADDRLP4 1212 +ADDRGP4 va +CALLP4 +ASGNP4 +CNSTI4 2 +ARGI4 +ADDRLP4 1212 +INDIRP4 +ARGP4 +ADDRGP4 trap_Cmd_ExecuteText +CALLV +pop +line 3400 +;3400: } +line 3401 +;3401: } else if (Q_stricmp(name, "addFavorite") == 0) { +ADDRGP4 $2696 +JUMPV +LABELV $2695 +ADDRLP4 1024 +INDIRP4 +ARGP4 +ADDRGP4 $2716 +ARGP4 +ADDRLP4 1200 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 1200 +INDIRI4 +CNSTI4 0 +NEI4 $2714 +line 3402 +;3402: if (ui_netSource.integer != AS_FAVORITES) { +ADDRGP4 ui_netSource+12 +INDIRI4 +CNSTI4 3 +EQI4 $2715 +line 3407 +;3403: char name[MAX_NAME_LENGTH]; +;3404: char addr[MAX_NAME_LENGTH]; +;3405: int res; +;3406: +;3407: trap_LAN_GetServerInfo(ui_netSource.integer, uiInfo.serverStatus.displayServers[uiInfo.serverStatus.currentServer], buff, MAX_STRING_CHARS); +ADDRGP4 ui_netSource+12 +INDIRI4 +ARGI4 +ADDRGP4 uiInfo+99264+2216 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 uiInfo+99264+2220 +ADDP4 +INDIRI4 +ARGI4 +ADDRLP4 0 +ARGP4 +CNSTI4 1024 +ARGI4 +ADDRGP4 trap_LAN_GetServerInfo +CALLV +pop +line 3408 +;3408: name[0] = addr[0] = '\0'; +ADDRLP4 1272 +CNSTI1 0 +ASGNI1 +ADDRLP4 1204 +ADDRLP4 1272 +INDIRI1 +ASGNI1 +ADDRLP4 1236 +ADDRLP4 1272 +INDIRI1 +ASGNI1 +line 3409 +;3409: Q_strncpyz(name, Info_ValueForKey(buff, "hostname"), MAX_NAME_LENGTH); +ADDRLP4 0 +ARGP4 +ADDRGP4 $2725 +ARGP4 +ADDRLP4 1276 +ADDRGP4 Info_ValueForKey +CALLP4 +ASGNP4 +ADDRLP4 1236 +ARGP4 +ADDRLP4 1276 +INDIRP4 +ARGP4 +CNSTI4 32 +ARGI4 +ADDRGP4 Q_strncpyz +CALLV +pop +line 3410 +;3410: Q_strncpyz(addr, Info_ValueForKey(buff, "addr"), MAX_NAME_LENGTH); +ADDRLP4 0 +ARGP4 +ADDRGP4 $2726 +ARGP4 +ADDRLP4 1280 +ADDRGP4 Info_ValueForKey +CALLP4 +ASGNP4 +ADDRLP4 1204 +ARGP4 +ADDRLP4 1280 +INDIRP4 +ARGP4 +CNSTI4 32 +ARGI4 +ADDRGP4 Q_strncpyz +CALLV +pop +line 3411 +;3411: if (strlen(name) > 0 && strlen(addr) > 0) { +ADDRLP4 1236 +ARGP4 +ADDRLP4 1284 +ADDRGP4 strlen +CALLI4 +ASGNI4 +ADDRLP4 1284 +INDIRI4 +CNSTI4 0 +LEI4 $2715 +ADDRLP4 1204 +ARGP4 +ADDRLP4 1288 +ADDRGP4 strlen +CALLI4 +ASGNI4 +ADDRLP4 1288 +INDIRI4 +CNSTI4 0 +LEI4 $2715 +line 3412 +;3412: res = trap_LAN_AddServer(AS_FAVORITES, name, addr); +CNSTI4 3 +ARGI4 +ADDRLP4 1236 +ARGP4 +ADDRLP4 1204 +ARGP4 +ADDRLP4 1292 +ADDRGP4 trap_LAN_AddServer +CALLI4 +ASGNI4 +ADDRLP4 1268 +ADDRLP4 1292 +INDIRI4 +ASGNI4 +line 3413 +;3413: if (res == 0) { +ADDRLP4 1268 +INDIRI4 +CNSTI4 0 +NEI4 $2729 +line 3415 +;3414: // server already in the list +;3415: Com_Printf("Favorite already in list\n"); +ADDRGP4 $2731 +ARGP4 +ADDRGP4 Com_Printf +CALLV +pop +line 3416 +;3416: } +ADDRGP4 $2715 +JUMPV +LABELV $2729 +line 3417 +;3417: else if (res == -1) { +ADDRLP4 1268 +INDIRI4 +CNSTI4 -1 +NEI4 $2732 +line 3419 +;3418: // list full +;3419: Com_Printf("Favorite list full\n"); +ADDRGP4 $2734 +ARGP4 +ADDRGP4 Com_Printf +CALLV +pop +line 3420 +;3420: } +ADDRGP4 $2715 +JUMPV +LABELV $2732 +line 3421 +;3421: else { +line 3423 +;3422: // successfully added +;3423: Com_Printf("Added favorite server %s\n", addr); +ADDRGP4 $2735 +ARGP4 +ADDRLP4 1204 +ARGP4 +ADDRGP4 Com_Printf +CALLV +pop +line 3424 +;3424: } +line 3425 +;3425: } +line 3426 +;3426: } +line 3427 +;3427: } else if (Q_stricmp(name, "deleteFavorite") == 0) { +ADDRGP4 $2715 +JUMPV +LABELV $2714 +ADDRLP4 1024 +INDIRP4 +ARGP4 +ADDRGP4 $2738 +ARGP4 +ADDRLP4 1204 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 1204 +INDIRI4 +CNSTI4 0 +NEI4 $2736 +line 3428 +;3428: if (ui_netSource.integer == AS_FAVORITES) { +ADDRGP4 ui_netSource+12 +INDIRI4 +CNSTI4 3 +NEI4 $2737 +line 3430 +;3429: char addr[MAX_NAME_LENGTH]; +;3430: trap_LAN_GetServerInfo(ui_netSource.integer, uiInfo.serverStatus.displayServers[uiInfo.serverStatus.currentServer], buff, MAX_STRING_CHARS); +ADDRGP4 ui_netSource+12 +INDIRI4 +ARGI4 +ADDRGP4 uiInfo+99264+2216 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 uiInfo+99264+2220 +ADDP4 +INDIRI4 +ARGI4 +ADDRLP4 0 +ARGP4 +CNSTI4 1024 +ARGI4 +ADDRGP4 trap_LAN_GetServerInfo +CALLV +pop +line 3431 +;3431: addr[0] = '\0'; +ADDRLP4 1208 +CNSTI1 0 +ASGNI1 +line 3432 +;3432: Q_strncpyz(addr, Info_ValueForKey(buff, "addr"), MAX_NAME_LENGTH); +ADDRLP4 0 +ARGP4 +ADDRGP4 $2726 +ARGP4 +ADDRLP4 1240 +ADDRGP4 Info_ValueForKey +CALLP4 +ASGNP4 +ADDRLP4 1208 +ARGP4 +ADDRLP4 1240 +INDIRP4 +ARGP4 +CNSTI4 32 +ARGI4 +ADDRGP4 Q_strncpyz +CALLV +pop +line 3433 +;3433: if (strlen(addr) > 0) { +ADDRLP4 1208 +ARGP4 +ADDRLP4 1244 +ADDRGP4 strlen +CALLI4 +ASGNI4 +ADDRLP4 1244 +INDIRI4 +CNSTI4 0 +LEI4 $2737 +line 3434 +;3434: trap_LAN_RemoveServer(AS_FAVORITES, addr); +CNSTI4 3 +ARGI4 +ADDRLP4 1208 +ARGP4 +ADDRGP4 trap_LAN_RemoveServer +CALLV +pop +line 3435 +;3435: } +line 3436 +;3436: } +line 3437 +;3437: } else if (Q_stricmp(name, "createFavorite") == 0) { +ADDRGP4 $2737 +JUMPV +LABELV $2736 +ADDRLP4 1024 +INDIRP4 +ARGP4 +ADDRGP4 $2751 +ARGP4 +ADDRLP4 1208 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 1208 +INDIRI4 +CNSTI4 0 +NEI4 $2749 +line 3438 +;3438: if (ui_netSource.integer == AS_FAVORITES) { +ADDRGP4 ui_netSource+12 +INDIRI4 +CNSTI4 3 +NEI4 $2750 +line 3443 +;3439: char name[MAX_NAME_LENGTH]; +;3440: char addr[MAX_NAME_LENGTH]; +;3441: int res; +;3442: +;3443: name[0] = addr[0] = '\0'; +ADDRLP4 1280 +CNSTI1 0 +ASGNI1 +ADDRLP4 1212 +ADDRLP4 1280 +INDIRI1 +ASGNI1 +ADDRLP4 1244 +ADDRLP4 1280 +INDIRI1 +ASGNI1 +line 3444 +;3444: Q_strncpyz(name, UI_Cvar_VariableString("ui_favoriteName"), MAX_NAME_LENGTH); +ADDRGP4 $2755 +ARGP4 +ADDRLP4 1284 +ADDRGP4 UI_Cvar_VariableString +CALLP4 +ASGNP4 +ADDRLP4 1244 +ARGP4 +ADDRLP4 1284 +INDIRP4 +ARGP4 +CNSTI4 32 +ARGI4 +ADDRGP4 Q_strncpyz +CALLV +pop +line 3445 +;3445: Q_strncpyz(addr, UI_Cvar_VariableString("ui_favoriteAddress"), MAX_NAME_LENGTH); +ADDRGP4 $2756 +ARGP4 +ADDRLP4 1288 +ADDRGP4 UI_Cvar_VariableString +CALLP4 +ASGNP4 +ADDRLP4 1212 +ARGP4 +ADDRLP4 1288 +INDIRP4 +ARGP4 +CNSTI4 32 +ARGI4 +ADDRGP4 Q_strncpyz +CALLV +pop +line 3446 +;3446: if (strlen(name) > 0 && strlen(addr) > 0) { +ADDRLP4 1244 +ARGP4 +ADDRLP4 1292 +ADDRGP4 strlen +CALLI4 +ASGNI4 +ADDRLP4 1292 +INDIRI4 +CNSTI4 0 +LEI4 $2750 +ADDRLP4 1212 +ARGP4 +ADDRLP4 1296 +ADDRGP4 strlen +CALLI4 +ASGNI4 +ADDRLP4 1296 +INDIRI4 +CNSTI4 0 +LEI4 $2750 +line 3447 +;3447: res = trap_LAN_AddServer(AS_FAVORITES, name, addr); +CNSTI4 3 +ARGI4 +ADDRLP4 1244 +ARGP4 +ADDRLP4 1212 +ARGP4 +ADDRLP4 1300 +ADDRGP4 trap_LAN_AddServer +CALLI4 +ASGNI4 +ADDRLP4 1276 +ADDRLP4 1300 +INDIRI4 +ASGNI4 +line 3448 +;3448: if (res == 0) { +ADDRLP4 1276 +INDIRI4 +CNSTI4 0 +NEI4 $2759 +line 3450 +;3449: // server already in the list +;3450: Com_Printf("Favorite already in list\n"); +ADDRGP4 $2731 +ARGP4 +ADDRGP4 Com_Printf +CALLV +pop +line 3451 +;3451: } +ADDRGP4 $2750 +JUMPV +LABELV $2759 +line 3452 +;3452: else if (res == -1) { +ADDRLP4 1276 +INDIRI4 +CNSTI4 -1 +NEI4 $2761 +line 3454 +;3453: // list full +;3454: Com_Printf("Favorite list full\n"); +ADDRGP4 $2734 +ARGP4 +ADDRGP4 Com_Printf +CALLV +pop +line 3455 +;3455: } +ADDRGP4 $2750 +JUMPV +LABELV $2761 +line 3456 +;3456: else { +line 3458 +;3457: // successfully added +;3458: Com_Printf("Added favorite server %s\n", addr); +ADDRGP4 $2735 +ARGP4 +ADDRLP4 1212 +ARGP4 +ADDRGP4 Com_Printf +CALLV +pop +line 3459 +;3459: } +line 3460 +;3460: } +line 3461 +;3461: } +line 3462 +;3462: } else if (Q_stricmp(name, "orders") == 0) { +ADDRGP4 $2750 +JUMPV +LABELV $2749 +ADDRLP4 1024 +INDIRP4 +ARGP4 +ADDRGP4 $2765 +ARGP4 +ADDRLP4 1212 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 1212 +INDIRI4 +CNSTI4 0 +NEI4 $2763 +line 3464 +;3463: const char *orders; +;3464: if (String_Parse(args, &orders)) { +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRLP4 1216 +ARGP4 +ADDRLP4 1220 +ADDRGP4 String_Parse +CALLI4 +ASGNI4 +ADDRLP4 1220 +INDIRI4 +CNSTI4 0 +EQI4 $2764 +line 3465 +;3465: int selectedPlayer = trap_Cvar_VariableValue("cg_selectedPlayer"); +ADDRGP4 $1430 +ARGP4 +ADDRLP4 1228 +ADDRGP4 trap_Cvar_VariableValue +CALLF4 +ASGNF4 +ADDRLP4 1224 +ADDRLP4 1228 +INDIRF4 +CVFI4 4 +ASGNI4 +line 3466 +;3466: if (selectedPlayer < uiInfo.myTeamCount) { +ADDRLP4 1224 +INDIRI4 +ADDRGP4 uiInfo+78848 +INDIRI4 +GEI4 $2768 +line 3467 +;3467: strcpy(buff, orders); +ADDRLP4 0 +ARGP4 +ADDRLP4 1216 +INDIRP4 +ARGP4 +ADDRGP4 strcpy +CALLP4 +pop +line 3468 +;3468: trap_Cmd_ExecuteText( EXEC_APPEND, va(buff, uiInfo.teamClientNums[selectedPlayer]) ); +ADDRLP4 0 +ARGP4 +ADDRLP4 1224 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 uiInfo+82968 +ADDP4 +INDIRI4 +ARGI4 +ADDRLP4 1232 +ADDRGP4 va +CALLP4 +ASGNP4 +CNSTI4 2 +ARGI4 +ADDRLP4 1232 +INDIRP4 +ARGP4 +ADDRGP4 trap_Cmd_ExecuteText +CALLV +pop +line 3469 +;3469: trap_Cmd_ExecuteText( EXEC_APPEND, "\n" ); +CNSTI4 2 +ARGI4 +ADDRGP4 $2772 +ARGP4 +ADDRGP4 trap_Cmd_ExecuteText +CALLV +pop +line 3470 +;3470: } else { +ADDRGP4 $2769 +JUMPV +LABELV $2768 +line 3472 +;3471: int i; +;3472: for (i = 0; i < uiInfo.myTeamCount; i++) { +ADDRLP4 1232 +CNSTI4 0 +ASGNI4 +ADDRGP4 $2776 +JUMPV +LABELV $2773 +line 3473 +;3473: if (Q_stricmp(UI_Cvar_VariableString("name"), uiInfo.teamNames[i]) == 0) { +ADDRGP4 $1448 +ARGP4 +ADDRLP4 1236 +ADDRGP4 UI_Cvar_VariableString +CALLP4 +ASGNP4 +ADDRLP4 1236 +INDIRP4 +ARGP4 +ADDRLP4 1232 +INDIRI4 +CNSTI4 5 +LSHI4 +ADDRGP4 uiInfo+80920 +ADDP4 +ARGP4 +ADDRLP4 1240 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 1240 +INDIRI4 +CNSTI4 0 +NEI4 $2778 +line 3474 +;3474: continue; +ADDRGP4 $2774 +JUMPV +LABELV $2778 +line 3476 +;3475: } +;3476: strcpy(buff, orders); +ADDRLP4 0 +ARGP4 +ADDRLP4 1216 +INDIRP4 +ARGP4 +ADDRGP4 strcpy +CALLP4 +pop +line 3477 +;3477: trap_Cmd_ExecuteText( EXEC_APPEND, va(buff, uiInfo.teamNames[i]) ); +ADDRLP4 0 +ARGP4 +ADDRLP4 1232 +INDIRI4 +CNSTI4 5 +LSHI4 +ADDRGP4 uiInfo+80920 +ADDP4 +ARGP4 +ADDRLP4 1244 +ADDRGP4 va +CALLP4 +ASGNP4 +CNSTI4 2 +ARGI4 +ADDRLP4 1244 +INDIRP4 +ARGP4 +ADDRGP4 trap_Cmd_ExecuteText +CALLV +pop +line 3478 +;3478: trap_Cmd_ExecuteText( EXEC_APPEND, "\n" ); +CNSTI4 2 +ARGI4 +ADDRGP4 $2772 +ARGP4 +ADDRGP4 trap_Cmd_ExecuteText +CALLV +pop +line 3479 +;3479: } +LABELV $2774 +line 3472 +ADDRLP4 1232 +ADDRLP4 1232 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +LABELV $2776 +ADDRLP4 1232 +INDIRI4 +ADDRGP4 uiInfo+78848 +INDIRI4 +LTI4 $2773 +line 3480 +;3480: } +LABELV $2769 +line 3481 +;3481: trap_Key_SetCatcher( trap_Key_GetCatcher() & ~KEYCATCH_UI ); +ADDRLP4 1232 +ADDRGP4 trap_Key_GetCatcher +CALLI4 +ASGNI4 +ADDRLP4 1232 +INDIRI4 +CNSTI4 -3 +BANDI4 +ARGI4 +ADDRGP4 trap_Key_SetCatcher +CALLV +pop +line 3482 +;3482: trap_Key_ClearStates(); +ADDRGP4 trap_Key_ClearStates +CALLV +pop +line 3483 +;3483: trap_Cvar_Set( "cl_paused", "0" ); +ADDRGP4 $2618 +ARGP4 +ADDRGP4 $395 +ARGP4 +ADDRGP4 trap_Cvar_Set +CALLV +pop +line 3484 +;3484: Menus_CloseAll(); +ADDRGP4 Menus_CloseAll +CALLV +pop +line 3485 +;3485: } +line 3486 +;3486: } else if (Q_stricmp(name, "voiceOrdersTeam") == 0) { +ADDRGP4 $2764 +JUMPV +LABELV $2763 +ADDRLP4 1024 +INDIRP4 +ARGP4 +ADDRGP4 $2784 +ARGP4 +ADDRLP4 1216 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 1216 +INDIRI4 +CNSTI4 0 +NEI4 $2782 +line 3488 +;3487: const char *orders; +;3488: if (String_Parse(args, &orders)) { +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRLP4 1220 +ARGP4 +ADDRLP4 1224 +ADDRGP4 String_Parse +CALLI4 +ASGNI4 +ADDRLP4 1224 +INDIRI4 +CNSTI4 0 +EQI4 $2783 +line 3489 +;3489: int selectedPlayer = trap_Cvar_VariableValue("cg_selectedPlayer"); +ADDRGP4 $1430 +ARGP4 +ADDRLP4 1232 +ADDRGP4 trap_Cvar_VariableValue +CALLF4 +ASGNF4 +ADDRLP4 1228 +ADDRLP4 1232 +INDIRF4 +CVFI4 4 +ASGNI4 +line 3490 +;3490: if (selectedPlayer == uiInfo.myTeamCount) { +ADDRLP4 1228 +INDIRI4 +ADDRGP4 uiInfo+78848 +INDIRI4 +NEI4 $2787 +line 3491 +;3491: trap_Cmd_ExecuteText( EXEC_APPEND, orders ); +CNSTI4 2 +ARGI4 +ADDRLP4 1220 +INDIRP4 +ARGP4 +ADDRGP4 trap_Cmd_ExecuteText +CALLV +pop +line 3492 +;3492: trap_Cmd_ExecuteText( EXEC_APPEND, "\n" ); +CNSTI4 2 +ARGI4 +ADDRGP4 $2772 +ARGP4 +ADDRGP4 trap_Cmd_ExecuteText +CALLV +pop +line 3493 +;3493: } +LABELV $2787 +line 3494 +;3494: trap_Key_SetCatcher( trap_Key_GetCatcher() & ~KEYCATCH_UI ); +ADDRLP4 1236 +ADDRGP4 trap_Key_GetCatcher +CALLI4 +ASGNI4 +ADDRLP4 1236 +INDIRI4 +CNSTI4 -3 +BANDI4 +ARGI4 +ADDRGP4 trap_Key_SetCatcher +CALLV +pop +line 3495 +;3495: trap_Key_ClearStates(); +ADDRGP4 trap_Key_ClearStates +CALLV +pop +line 3496 +;3496: trap_Cvar_Set( "cl_paused", "0" ); +ADDRGP4 $2618 +ARGP4 +ADDRGP4 $395 +ARGP4 +ADDRGP4 trap_Cvar_Set +CALLV +pop +line 3497 +;3497: Menus_CloseAll(); +ADDRGP4 Menus_CloseAll +CALLV +pop +line 3498 +;3498: } +line 3499 +;3499: } else if (Q_stricmp(name, "voiceOrders") == 0) { +ADDRGP4 $2783 +JUMPV +LABELV $2782 +ADDRLP4 1024 +INDIRP4 +ARGP4 +ADDRGP4 $2792 +ARGP4 +ADDRLP4 1220 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 1220 +INDIRI4 +CNSTI4 0 +NEI4 $2790 +line 3501 +;3500: const char *orders; +;3501: if (String_Parse(args, &orders)) { +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRLP4 1224 +ARGP4 +ADDRLP4 1228 +ADDRGP4 String_Parse +CALLI4 +ASGNI4 +ADDRLP4 1228 +INDIRI4 +CNSTI4 0 +EQI4 $2791 +line 3502 +;3502: int selectedPlayer = trap_Cvar_VariableValue("cg_selectedPlayer"); +ADDRGP4 $1430 +ARGP4 +ADDRLP4 1236 +ADDRGP4 trap_Cvar_VariableValue +CALLF4 +ASGNF4 +ADDRLP4 1232 +ADDRLP4 1236 +INDIRF4 +CVFI4 4 +ASGNI4 +line 3503 +;3503: if (selectedPlayer < uiInfo.myTeamCount) { +ADDRLP4 1232 +INDIRI4 +ADDRGP4 uiInfo+78848 +INDIRI4 +GEI4 $2795 +line 3504 +;3504: strcpy(buff, orders); +ADDRLP4 0 +ARGP4 +ADDRLP4 1224 +INDIRP4 +ARGP4 +ADDRGP4 strcpy +CALLP4 +pop +line 3505 +;3505: trap_Cmd_ExecuteText( EXEC_APPEND, va(buff, uiInfo.teamClientNums[selectedPlayer]) ); +ADDRLP4 0 +ARGP4 +ADDRLP4 1232 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 uiInfo+82968 +ADDP4 +INDIRI4 +ARGI4 +ADDRLP4 1240 +ADDRGP4 va +CALLP4 +ASGNP4 +CNSTI4 2 +ARGI4 +ADDRLP4 1240 +INDIRP4 +ARGP4 +ADDRGP4 trap_Cmd_ExecuteText +CALLV +pop +line 3506 +;3506: trap_Cmd_ExecuteText( EXEC_APPEND, "\n" ); +CNSTI4 2 +ARGI4 +ADDRGP4 $2772 +ARGP4 +ADDRGP4 trap_Cmd_ExecuteText +CALLV +pop +line 3507 +;3507: } +LABELV $2795 +line 3508 +;3508: trap_Key_SetCatcher( trap_Key_GetCatcher() & ~KEYCATCH_UI ); +ADDRLP4 1240 +ADDRGP4 trap_Key_GetCatcher +CALLI4 +ASGNI4 +ADDRLP4 1240 +INDIRI4 +CNSTI4 -3 +BANDI4 +ARGI4 +ADDRGP4 trap_Key_SetCatcher +CALLV +pop +line 3509 +;3509: trap_Key_ClearStates(); +ADDRGP4 trap_Key_ClearStates +CALLV +pop +line 3510 +;3510: trap_Cvar_Set( "cl_paused", "0" ); +ADDRGP4 $2618 +ARGP4 +ADDRGP4 $395 +ARGP4 +ADDRGP4 trap_Cvar_Set +CALLV +pop +line 3511 +;3511: Menus_CloseAll(); +ADDRGP4 Menus_CloseAll +CALLV +pop +line 3512 +;3512: } +line 3513 +;3513: } else if (Q_stricmp(name, "glCustom") == 0) { +ADDRGP4 $2791 +JUMPV +LABELV $2790 +ADDRLP4 1024 +INDIRP4 +ARGP4 +ADDRGP4 $2801 +ARGP4 +ADDRLP4 1224 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 1224 +INDIRI4 +CNSTI4 0 +NEI4 $2799 +line 3514 +;3514: trap_Cvar_Set("ui_glCustom", "4"); +ADDRGP4 $2348 +ARGP4 +ADDRGP4 $2802 +ARGP4 +ADDRGP4 trap_Cvar_Set +CALLV +pop +line 3515 +;3515: } else if (Q_stricmp(name, "update") == 0) { +ADDRGP4 $2800 +JUMPV +LABELV $2799 +ADDRLP4 1024 +INDIRP4 +ARGP4 +ADDRGP4 $2805 +ARGP4 +ADDRLP4 1228 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 1228 +INDIRI4 +CNSTI4 0 +NEI4 $2803 +line 3516 +;3516: if (String_Parse(args, &name2)) { +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRLP4 1028 +ARGP4 +ADDRLP4 1232 +ADDRGP4 String_Parse +CALLI4 +ASGNI4 +ADDRLP4 1232 +INDIRI4 +CNSTI4 0 +EQI4 $2806 +line 3517 +;3517: UI_Update(name2); +ADDRLP4 1028 +INDIRP4 +ARGP4 +ADDRGP4 UI_Update +CALLV +pop +line 3518 +;3518: } +ADDRGP4 $2807 +JUMPV +LABELV $2806 +line 3519 +;3519: else { +line 3520 +;3520: Com_Printf("unknown UI script %s\n", name); +ADDRGP4 $2808 +ARGP4 +ADDRLP4 1024 +INDIRP4 +ARGP4 +ADDRGP4 Com_Printf +CALLV +pop +line 3521 +;3521: } +LABELV $2807 +line 3522 +;3522: } +LABELV $2803 +LABELV $2800 +LABELV $2791 +LABELV $2783 +LABELV $2764 +LABELV $2750 +LABELV $2737 +LABELV $2715 +LABELV $2696 +LABELV $2685 +LABELV $2673 +LABELV $2662 +LABELV $2650 +LABELV $2647 +LABELV $2644 +LABELV $2641 +LABELV $2625 +LABELV $2621 +LABELV $2616 +LABELV $2612 +LABELV $2602 +LABELV $2585 +LABELV $2580 +LABELV $2573 +LABELV $2563 +LABELV $2557 +LABELV $2550 +LABELV $2537 +LABELV $2534 +LABELV $2528 +LABELV $2521 +LABELV $2511 +LABELV $2508 +LABELV $2505 +LABELV $2502 +LABELV $2489 +LABELV $2486 +LABELV $2483 +LABELV $2480 +LABELV $2471 +LABELV $2467 +LABELV $2464 +LABELV $2461 +LABELV $2457 +LABELV $2447 +LABELV $2435 +LABELV $2428 +LABELV $2421 +LABELV $2378 +line 3523 +;3523: } +LABELV $2375 +line 3524 +;3524:} +LABELV $2374 +endproc UI_RunMenuScript 1304 24 +proc UI_GetTeamColor 0 0 +line 3526 +;3525: +;3526:static void UI_GetTeamColor(vec4_t *color) { +line 3527 +;3527:} +LABELV $2809 +endproc UI_GetTeamColor 0 0 +proc UI_MapCountByGameType 16 0 +line 3534 +;3528: +;3529:/* +;3530:================== +;3531:UI_MapCountByGameType +;3532:================== +;3533:*/ +;3534:static int UI_MapCountByGameType(qboolean singlePlayer) { +line 3536 +;3535: int i, c, game; +;3536: c = 0; +ADDRLP4 8 +CNSTI4 0 +ASGNI4 +line 3537 +;3537: game = singlePlayer ? uiInfo.gameTypes[ui_gameType.integer].gtEnum : uiInfo.gameTypes[ui_netGameType.integer].gtEnum; +ADDRFP4 0 +INDIRI4 +CNSTI4 0 +EQI4 $2818 +ADDRLP4 12 +ADDRGP4 ui_gameType+12 +INDIRI4 +CNSTI4 3 +LSHI4 +ADDRGP4 uiInfo+78580+4 +ADDP4 +INDIRI4 +ASGNI4 +ADDRGP4 $2819 +JUMPV +LABELV $2818 +ADDRLP4 12 +ADDRGP4 ui_netGameType+12 +INDIRI4 +CNSTI4 3 +LSHI4 +ADDRGP4 uiInfo+78580+4 +ADDP4 +INDIRI4 +ASGNI4 +LABELV $2819 +ADDRLP4 4 +ADDRLP4 12 +INDIRI4 +ASGNI4 +line 3538 +;3538: if (game == GT_SINGLE_PLAYER) { +ADDRLP4 4 +INDIRI4 +CNSTI4 2 +NEI4 $2820 +line 3539 +;3539: game++; +ADDRLP4 4 +ADDRLP4 4 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 3540 +;3540: } +LABELV $2820 +line 3541 +;3541: if (game == GT_TEAM) { +ADDRLP4 4 +INDIRI4 +CNSTI4 3 +NEI4 $2822 +line 3542 +;3542: game = GT_FFA; +ADDRLP4 4 +CNSTI4 0 +ASGNI4 +line 3543 +;3543: } +LABELV $2822 +line 3545 +;3544: +;3545: for (i = 0; i < uiInfo.mapCount; i++) { +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +ADDRGP4 $2827 +JUMPV +LABELV $2824 +line 3546 +;3546: uiInfo.mapList[i].active = qfalse; +CNSTI4 100 +ADDRLP4 0 +INDIRI4 +MULI4 +ADDRGP4 uiInfo+83228+96 +ADDP4 +CNSTI4 0 +ASGNI4 +line 3547 +;3547: if ( uiInfo.mapList[i].typeBits & (1 << game)) { +CNSTI4 100 +ADDRLP4 0 +INDIRI4 +MULI4 +ADDRGP4 uiInfo+83228+20 +ADDP4 +INDIRI4 +CNSTI4 1 +ADDRLP4 4 +INDIRI4 +LSHI4 +BANDI4 +CNSTI4 0 +EQI4 $2831 +line 3548 +;3548: if (singlePlayer) { +ADDRFP4 0 +INDIRI4 +CNSTI4 0 +EQI4 $2835 +line 3549 +;3549: if (!(uiInfo.mapList[i].typeBits & (1 << GT_SINGLE_PLAYER))) { +CNSTI4 100 +ADDRLP4 0 +INDIRI4 +MULI4 +ADDRGP4 uiInfo+83228+20 +ADDP4 +INDIRI4 +CNSTI4 4 +BANDI4 +CNSTI4 0 +NEI4 $2837 +line 3550 +;3550: continue; +ADDRGP4 $2825 +JUMPV +LABELV $2837 +line 3552 +;3551: } +;3552: } +LABELV $2835 +line 3553 +;3553: c++; +ADDRLP4 8 +ADDRLP4 8 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 3554 +;3554: uiInfo.mapList[i].active = qtrue; +CNSTI4 100 +ADDRLP4 0 +INDIRI4 +MULI4 +ADDRGP4 uiInfo+83228+96 +ADDP4 +CNSTI4 1 +ASGNI4 +line 3555 +;3555: } +LABELV $2831 +line 3556 +;3556: } +LABELV $2825 +line 3545 +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +LABELV $2827 +ADDRLP4 0 +INDIRI4 +ADDRGP4 uiInfo+83224 +INDIRI4 +LTI4 $2824 +line 3557 +;3557: return c; +ADDRLP4 8 +INDIRI4 +RETI4 +LABELV $2810 +endproc UI_MapCountByGameType 16 0 +export UI_hasSkinForBase +proc UI_hasSkinForBase 1032 20 +line 3560 +;3558:} +;3559: +;3560:qboolean UI_hasSkinForBase(const char *base, const char *team) { +line 3563 +;3561: char test[1024]; +;3562: +;3563: Com_sprintf( test, sizeof( test ), "models/players/%s/%s/lower_default.skin", base, team ); +ADDRLP4 0 +ARGP4 +CNSTI4 1024 +ARGI4 +ADDRGP4 $2844 +ARGP4 +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRFP4 4 +INDIRP4 +ARGP4 +ADDRGP4 Com_sprintf +CALLV +pop +line 3565 +;3564: +;3565: if (trap_FS_FOpenFile(test, 0, FS_READ)) { +ADDRLP4 0 +ARGP4 +CNSTP4 0 +ARGP4 +CNSTI4 0 +ARGI4 +ADDRLP4 1024 +ADDRGP4 trap_FS_FOpenFile +CALLI4 +ASGNI4 +ADDRLP4 1024 +INDIRI4 +CNSTI4 0 +EQI4 $2845 +line 3566 +;3566: return qtrue; +CNSTI4 1 +RETI4 +ADDRGP4 $2843 +JUMPV +LABELV $2845 +line 3568 +;3567: } +;3568: Com_sprintf( test, sizeof( test ), "models/players/characters/%s/%s/lower_default.skin", base, team ); +ADDRLP4 0 +ARGP4 +CNSTI4 1024 +ARGI4 +ADDRGP4 $2847 +ARGP4 +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRFP4 4 +INDIRP4 +ARGP4 +ADDRGP4 Com_sprintf +CALLV +pop +line 3570 +;3569: +;3570: if (trap_FS_FOpenFile(test, 0, FS_READ)) { +ADDRLP4 0 +ARGP4 +CNSTP4 0 +ARGP4 +CNSTI4 0 +ARGI4 +ADDRLP4 1028 +ADDRGP4 trap_FS_FOpenFile +CALLI4 +ASGNI4 +ADDRLP4 1028 +INDIRI4 +CNSTI4 0 +EQI4 $2848 +line 3571 +;3571: return qtrue; +CNSTI4 1 +RETI4 +ADDRGP4 $2843 +JUMPV +LABELV $2848 +line 3573 +;3572: } +;3573: return qfalse; +CNSTI4 0 +RETI4 +LABELV $2843 +endproc UI_hasSkinForBase 1032 20 +data +align 4 +LABELV $2851 +byte 4 0 +code +proc UI_HeadCountByTeam 40 8 +line 3581 +;3574:} +;3575: +;3576:/* +;3577:================== +;3578:UI_MapCountByTeam +;3579:================== +;3580:*/ +;3581:static int UI_HeadCountByTeam() { +line 3585 +;3582: static int init = 0; +;3583: int i, j, k, c, tIndex; +;3584: +;3585: c = 0; +ADDRLP4 16 +CNSTI4 0 +ASGNI4 +line 3586 +;3586: if (!init) { +ADDRGP4 $2851 +INDIRI4 +CNSTI4 0 +NEI4 $2852 +line 3587 +;3587: for (i = 0; i < uiInfo.characterCount; i++) { +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +ADDRGP4 $2857 +JUMPV +LABELV $2854 +line 3588 +;3588: uiInfo.characterList[i].reference = 0; +CNSTI4 24 +ADDRLP4 0 +INDIRI4 +MULI4 +ADDRGP4 uiInfo+73448+20 +ADDP4 +CNSTI4 0 +ASGNI4 +line 3589 +;3589: for (j = 0; j < uiInfo.teamCount; j++) { +ADDRLP4 8 +CNSTI4 0 +ASGNI4 +ADDRGP4 $2864 +JUMPV +LABELV $2861 +line 3590 +;3590: if (UI_hasSkinForBase(uiInfo.characterList[i].base, uiInfo.teamList[j].teamName)) { +CNSTI4 24 +ADDRLP4 0 +INDIRI4 +MULI4 +ADDRGP4 uiInfo+73448+12 +ADDP4 +INDIRP4 +ARGP4 +CNSTI4 44 +ADDRLP4 8 +INDIRI4 +MULI4 +ADDRGP4 uiInfo+75760 +ADDP4 +INDIRP4 +ARGP4 +ADDRLP4 20 +ADDRGP4 UI_hasSkinForBase +CALLI4 +ASGNI4 +ADDRLP4 20 +INDIRI4 +CNSTI4 0 +EQI4 $2866 +line 3591 +;3591: uiInfo.characterList[i].reference |= (1< uiInfo.serverStatus.numDisplayServers ) { +ADDRLP4 4 +ADDRFP4 4 +INDIRI4 +ASGNI4 +ADDRLP4 4 +INDIRI4 +CNSTI4 0 +LTI4 $2936 +ADDRLP4 4 +INDIRI4 +ADDRGP4 uiInfo+99264+10412 +INDIRI4 +LEI4 $2932 +LABELV $2936 +line 3644 +;3644: return; +ADDRGP4 $2931 +JUMPV +LABELV $2932 +line 3647 +;3645: } +;3646: // +;3647: uiInfo.serverStatus.numDisplayServers++; +ADDRLP4 8 +ADDRGP4 uiInfo+99264+10412 +ASGNP4 +ADDRLP4 8 +INDIRP4 +ADDRLP4 8 +INDIRP4 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 3648 +;3648: for (i = uiInfo.serverStatus.numDisplayServers; i > position; i--) { +ADDRLP4 0 +ADDRGP4 uiInfo+99264+10412 +INDIRI4 +ASGNI4 +ADDRGP4 $2942 +JUMPV +LABELV $2939 +line 3649 +;3649: uiInfo.serverStatus.displayServers[i] = uiInfo.serverStatus.displayServers[i-1]; +ADDRLP4 12 +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ASGNI4 +ADDRLP4 12 +INDIRI4 +ADDRGP4 uiInfo+99264+2220 +ADDP4 +ADDRLP4 12 +INDIRI4 +ADDRGP4 uiInfo+99264+2220-4 +ADDP4 +INDIRI4 +ASGNI4 +line 3650 +;3650: } +LABELV $2940 +line 3648 +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +SUBI4 +ASGNI4 +LABELV $2942 +ADDRLP4 0 +INDIRI4 +ADDRFP4 4 +INDIRI4 +GTI4 $2939 +line 3651 +;3651: uiInfo.serverStatus.displayServers[position] = num; +ADDRFP4 4 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 uiInfo+99264+2220 +ADDP4 +ADDRFP4 0 +INDIRI4 +ASGNI4 +line 3652 +;3652:} +LABELV $2931 +endproc UI_InsertServerIntoDisplayList 16 0 +proc UI_RemoveServerFromDisplayList 16 0 +line 3659 +;3653: +;3654:/* +;3655:================== +;3656:UI_RemoveServerFromDisplayList +;3657:================== +;3658:*/ +;3659:static void UI_RemoveServerFromDisplayList(int num) { +line 3662 +;3660: int i, j; +;3661: +;3662: for (i = 0; i < uiInfo.serverStatus.numDisplayServers; i++) { +ADDRLP4 4 +CNSTI4 0 +ASGNI4 +ADDRGP4 $2956 +JUMPV +LABELV $2953 +line 3663 +;3663: if (uiInfo.serverStatus.displayServers[i] == num) { +ADDRLP4 4 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 uiInfo+99264+2220 +ADDP4 +INDIRI4 +ADDRFP4 0 +INDIRI4 +NEI4 $2959 +line 3664 +;3664: uiInfo.serverStatus.numDisplayServers--; +ADDRLP4 8 +ADDRGP4 uiInfo+99264+10412 +ASGNP4 +ADDRLP4 8 +INDIRP4 +ADDRLP4 8 +INDIRP4 +INDIRI4 +CNSTI4 1 +SUBI4 +ASGNI4 +line 3665 +;3665: for (j = i; j < uiInfo.serverStatus.numDisplayServers; j++) { +ADDRLP4 0 +ADDRLP4 4 +INDIRI4 +ASGNI4 +ADDRGP4 $2968 +JUMPV +LABELV $2965 +line 3666 +;3666: uiInfo.serverStatus.displayServers[j] = uiInfo.serverStatus.displayServers[j+1]; +ADDRLP4 12 +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ASGNI4 +ADDRLP4 12 +INDIRI4 +ADDRGP4 uiInfo+99264+2220 +ADDP4 +ADDRLP4 12 +INDIRI4 +ADDRGP4 uiInfo+99264+2220+4 +ADDP4 +INDIRI4 +ASGNI4 +line 3667 +;3667: } +LABELV $2966 +line 3665 +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +LABELV $2968 +ADDRLP4 0 +INDIRI4 +ADDRGP4 uiInfo+99264+10412 +INDIRI4 +LTI4 $2965 +line 3668 +;3668: return; +ADDRGP4 $2952 +JUMPV +LABELV $2959 +line 3670 +;3669: } +;3670: } +LABELV $2954 +line 3662 +ADDRLP4 4 +ADDRLP4 4 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +LABELV $2956 +ADDRLP4 4 +INDIRI4 +ADDRGP4 uiInfo+99264+10412 +INDIRI4 +LTI4 $2953 +line 3671 +;3671:} +LABELV $2952 +endproc UI_RemoveServerFromDisplayList 16 0 +proc UI_BinaryServerInsertion 20 20 +line 3678 +;3672: +;3673:/* +;3674:================== +;3675:UI_BinaryServerInsertion +;3676:================== +;3677:*/ +;3678:static void UI_BinaryServerInsertion(int num) { +line 3682 +;3679: int mid, offset, res, len; +;3680: +;3681: // use binary search to insert server +;3682: len = uiInfo.serverStatus.numDisplayServers; +ADDRLP4 12 +ADDRGP4 uiInfo+99264+10412 +INDIRI4 +ASGNI4 +line 3683 +;3683: mid = len; +ADDRLP4 0 +ADDRLP4 12 +INDIRI4 +ASGNI4 +line 3684 +;3684: offset = 0; +ADDRLP4 8 +CNSTI4 0 +ASGNI4 +line 3685 +;3685: res = 0; +ADDRLP4 4 +CNSTI4 0 +ASGNI4 +ADDRGP4 $2980 +JUMPV +LABELV $2979 +line 3686 +;3686: while(mid > 0) { +line 3687 +;3687: mid = len >> 1; +ADDRLP4 0 +ADDRLP4 12 +INDIRI4 +CNSTI4 1 +RSHI4 +ASGNI4 +line 3689 +;3688: // +;3689: res = trap_LAN_CompareServers( ui_netSource.integer, uiInfo.serverStatus.sortKey, +ADDRGP4 ui_netSource+12 +INDIRI4 +ARGI4 +ADDRGP4 uiInfo+99264+2200 +INDIRI4 +ARGI4 +ADDRGP4 uiInfo+99264+2204 +INDIRI4 +ARGI4 +ADDRFP4 0 +INDIRI4 +ARGI4 +ADDRLP4 8 +INDIRI4 +ADDRLP4 0 +INDIRI4 +ADDI4 +CNSTI4 2 +LSHI4 +ADDRGP4 uiInfo+99264+2220 +ADDP4 +INDIRI4 +ARGI4 +ADDRLP4 16 +ADDRGP4 trap_LAN_CompareServers +CALLI4 +ASGNI4 +ADDRLP4 4 +ADDRLP4 16 +INDIRI4 +ASGNI4 +line 3692 +;3690: uiInfo.serverStatus.sortDir, num, uiInfo.serverStatus.displayServers[offset+mid]); +;3691: // if equal +;3692: if (res == 0) { +ADDRLP4 4 +INDIRI4 +CNSTI4 0 +NEI4 $2989 +line 3693 +;3693: UI_InsertServerIntoDisplayList(num, offset+mid); +ADDRFP4 0 +INDIRI4 +ARGI4 +ADDRLP4 8 +INDIRI4 +ADDRLP4 0 +INDIRI4 +ADDI4 +ARGI4 +ADDRGP4 UI_InsertServerIntoDisplayList +CALLV +pop +line 3694 +;3694: return; +ADDRGP4 $2976 +JUMPV +LABELV $2989 +line 3697 +;3695: } +;3696: // if larger +;3697: else if (res == 1) { +ADDRLP4 4 +INDIRI4 +CNSTI4 1 +NEI4 $2991 +line 3698 +;3698: offset += mid; +ADDRLP4 8 +ADDRLP4 8 +INDIRI4 +ADDRLP4 0 +INDIRI4 +ADDI4 +ASGNI4 +line 3699 +;3699: len -= mid; +ADDRLP4 12 +ADDRLP4 12 +INDIRI4 +ADDRLP4 0 +INDIRI4 +SUBI4 +ASGNI4 +line 3700 +;3700: } +ADDRGP4 $2992 +JUMPV +LABELV $2991 +line 3702 +;3701: // if smaller +;3702: else { +line 3703 +;3703: len -= mid; +ADDRLP4 12 +ADDRLP4 12 +INDIRI4 +ADDRLP4 0 +INDIRI4 +SUBI4 +ASGNI4 +line 3704 +;3704: } +LABELV $2992 +line 3705 +;3705: } +LABELV $2980 +line 3686 +ADDRLP4 0 +INDIRI4 +CNSTI4 0 +GTI4 $2979 +line 3706 +;3706: if (res == 1) { +ADDRLP4 4 +INDIRI4 +CNSTI4 1 +NEI4 $2993 +line 3707 +;3707: offset++; +ADDRLP4 8 +ADDRLP4 8 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 3708 +;3708: } +LABELV $2993 +line 3709 +;3709: UI_InsertServerIntoDisplayList(num, offset); +ADDRFP4 0 +INDIRI4 +ARGI4 +ADDRLP4 8 +INDIRI4 +ARGI4 +ADDRGP4 UI_InsertServerIntoDisplayList +CALLV +pop +line 3710 +;3710:} +LABELV $2976 +endproc UI_BinaryServerInsertion 20 20 +bss +align 4 +LABELV $2996 +skip 4 +code +proc UI_BuildServerDisplayList 1100 16 +line 3717 +;3711: +;3712:/* +;3713:================== +;3714:UI_BuildServerDisplayList +;3715:================== +;3716:*/ +;3717:static void UI_BuildServerDisplayList(qboolean force) { +line 3723 +;3718: int i, count, clients, maxClients, ping, game, len, visible; +;3719: char info[MAX_STRING_CHARS]; +;3720:// qboolean startRefresh = qtrue; TTimo: unused +;3721: static int numinvisible; +;3722: +;3723: if (!(force || uiInfo.uiDC.realTime > uiInfo.serverStatus.nextDisplayRefresh)) { +ADDRFP4 0 +INDIRI4 +CNSTI4 0 +NEI4 $2997 +ADDRGP4 uiInfo+208 +INDIRI4 +ADDRGP4 uiInfo+99264+10420 +INDIRI4 +GTI4 $2997 +line 3724 +;3724: return; +ADDRGP4 $2995 +JUMPV +LABELV $2997 +line 3727 +;3725: } +;3726: // if we shouldn't reset +;3727: if ( force == 2 ) { +ADDRFP4 0 +INDIRI4 +CNSTI4 2 +NEI4 $3002 +line 3728 +;3728: force = 0; +ADDRFP4 0 +CNSTI4 0 +ASGNI4 +line 3729 +;3729: } +LABELV $3002 +line 3732 +;3730: +;3731: // do motd updates here too +;3732: trap_Cvar_VariableStringBuffer( "cl_motdString", uiInfo.serverStatus.motd, sizeof(uiInfo.serverStatus.motd) ); +ADDRGP4 $3004 +ARGP4 +ADDRGP4 uiInfo+99264+10460 +ARGP4 +CNSTI4 1024 +ARGI4 +ADDRGP4 trap_Cvar_VariableStringBuffer +CALLV +pop +line 3733 +;3733: len = strlen(uiInfo.serverStatus.motd); +ADDRGP4 uiInfo+99264+10460 +ARGP4 +ADDRLP4 1056 +ADDRGP4 strlen +CALLI4 +ASGNI4 +ADDRLP4 1052 +ADDRLP4 1056 +INDIRI4 +ASGNI4 +line 3734 +;3734: if (len == 0) { +ADDRLP4 1052 +INDIRI4 +CNSTI4 0 +NEI4 $3011 +line 3735 +;3735: strcpy(uiInfo.serverStatus.motd, "Welcome to Team Arena!"); +ADDRGP4 uiInfo+99264+10460 +ARGP4 +ADDRGP4 $3015 +ARGP4 +ADDRGP4 strcpy +CALLP4 +pop +line 3736 +;3736: len = strlen(uiInfo.serverStatus.motd); +ADDRGP4 uiInfo+99264+10460 +ARGP4 +ADDRLP4 1060 +ADDRGP4 strlen +CALLI4 +ASGNI4 +ADDRLP4 1052 +ADDRLP4 1060 +INDIRI4 +ASGNI4 +line 3737 +;3737: } +LABELV $3011 +line 3738 +;3738: if (len != uiInfo.serverStatus.motdLen) { +ADDRLP4 1052 +INDIRI4 +ADDRGP4 uiInfo+99264+10436 +INDIRI4 +EQI4 $3018 +line 3739 +;3739: uiInfo.serverStatus.motdLen = len; +ADDRGP4 uiInfo+99264+10436 +ADDRLP4 1052 +INDIRI4 +ASGNI4 +line 3740 +;3740: uiInfo.serverStatus.motdWidth = -1; +ADDRGP4 uiInfo+99264+10440 +CNSTI4 -1 +ASGNI4 +line 3741 +;3741: } +LABELV $3018 +line 3743 +;3742: +;3743: if (force) { +ADDRFP4 0 +INDIRI4 +CNSTI4 0 +EQI4 $3026 +line 3744 +;3744: numinvisible = 0; +ADDRGP4 $2996 +CNSTI4 0 +ASGNI4 +line 3746 +;3745: // clear number of displayed servers +;3746: uiInfo.serverStatus.numDisplayServers = 0; +ADDRGP4 uiInfo+99264+10412 +CNSTI4 0 +ASGNI4 +line 3747 +;3747: uiInfo.serverStatus.numPlayersOnServers = 0; +ADDRGP4 uiInfo+99264+10416 +CNSTI4 0 +ASGNI4 +line 3749 +;3748: // set list box index to zero +;3749: Menu_SetFeederSelection(NULL, FEEDER_SERVERS, 0, NULL); +CNSTP4 0 +ARGP4 +CNSTI4 2 +ARGI4 +CNSTI4 0 +ARGI4 +CNSTP4 0 +ARGP4 +ADDRGP4 Menu_SetFeederSelection +CALLV +pop +line 3751 +;3750: // mark all servers as visible so we store ping updates for them +;3751: trap_LAN_MarkServerVisible(ui_netSource.integer, -1, qtrue); +ADDRGP4 ui_netSource+12 +INDIRI4 +ARGI4 +CNSTI4 -1 +ARGI4 +CNSTI4 1 +ARGI4 +ADDRGP4 trap_LAN_MarkServerVisible +CALLV +pop +line 3752 +;3752: } +LABELV $3026 +line 3755 +;3753: +;3754: // get the server count (comes from the master) +;3755: count = trap_LAN_GetServerCount(ui_netSource.integer); +ADDRGP4 ui_netSource+12 +INDIRI4 +ARGI4 +ADDRLP4 1060 +ADDRGP4 trap_LAN_GetServerCount +CALLI4 +ASGNI4 +ADDRLP4 1036 +ADDRLP4 1060 +INDIRI4 +ASGNI4 +line 3756 +;3756: if (count == -1 || (ui_netSource.integer == AS_LOCAL && count == 0) ) { +ADDRLP4 1036 +INDIRI4 +CNSTI4 -1 +EQI4 $3037 +ADDRLP4 1068 +CNSTI4 0 +ASGNI4 +ADDRGP4 ui_netSource+12 +INDIRI4 +ADDRLP4 1068 +INDIRI4 +NEI4 $3034 +ADDRLP4 1036 +INDIRI4 +ADDRLP4 1068 +INDIRI4 +NEI4 $3034 +LABELV $3037 +line 3758 +;3757: // still waiting on a response from the master +;3758: uiInfo.serverStatus.numDisplayServers = 0; +ADDRGP4 uiInfo+99264+10412 +CNSTI4 0 +ASGNI4 +line 3759 +;3759: uiInfo.serverStatus.numPlayersOnServers = 0; +ADDRGP4 uiInfo+99264+10416 +CNSTI4 0 +ASGNI4 +line 3760 +;3760: uiInfo.serverStatus.nextDisplayRefresh = uiInfo.uiDC.realTime + 500; +ADDRGP4 uiInfo+99264+10420 +ADDRGP4 uiInfo+208 +INDIRI4 +CNSTI4 500 +ADDI4 +ASGNI4 +line 3761 +;3761: return; +ADDRGP4 $2995 +JUMPV +LABELV $3034 +line 3764 +;3762: } +;3763: +;3764: visible = qfalse; +ADDRLP4 1040 +CNSTI4 0 +ASGNI4 +line 3765 +;3765: for (i = 0; i < count; i++) { +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +ADDRGP4 $3048 +JUMPV +LABELV $3045 +line 3767 +;3766: // if we already got info for this server +;3767: if (!trap_LAN_ServerIsVisible(ui_netSource.integer, i)) { +ADDRGP4 ui_netSource+12 +INDIRI4 +ARGI4 +ADDRLP4 0 +INDIRI4 +ARGI4 +ADDRLP4 1072 +ADDRGP4 trap_LAN_ServerIsVisible +CALLI4 +ASGNI4 +ADDRLP4 1072 +INDIRI4 +CNSTI4 0 +NEI4 $3049 +line 3768 +;3768: continue; +ADDRGP4 $3046 +JUMPV +LABELV $3049 +line 3770 +;3769: } +;3770: visible = qtrue; +ADDRLP4 1040 +CNSTI4 1 +ASGNI4 +line 3772 +;3771: // get the ping for this server +;3772: ping = trap_LAN_GetServerPing(ui_netSource.integer, i); +ADDRGP4 ui_netSource+12 +INDIRI4 +ARGI4 +ADDRLP4 0 +INDIRI4 +ARGI4 +ADDRLP4 1076 +ADDRGP4 trap_LAN_GetServerPing +CALLI4 +ASGNI4 +ADDRLP4 4 +ADDRLP4 1076 +INDIRI4 +ASGNI4 +line 3773 +;3773: if (ping > 0 || ui_netSource.integer == AS_FAVORITES) { +ADDRLP4 4 +INDIRI4 +CNSTI4 0 +GTI4 $3056 +ADDRGP4 ui_netSource+12 +INDIRI4 +CNSTI4 3 +NEI4 $3053 +LABELV $3056 +line 3775 +;3774: +;3775: trap_LAN_GetServerInfo(ui_netSource.integer, i, info, MAX_STRING_CHARS); +ADDRGP4 ui_netSource+12 +INDIRI4 +ARGI4 +ADDRLP4 0 +INDIRI4 +ARGI4 +ADDRLP4 8 +ARGP4 +CNSTI4 1024 +ARGI4 +ADDRGP4 trap_LAN_GetServerInfo +CALLV +pop +line 3777 +;3776: +;3777: clients = atoi(Info_ValueForKey(info, "clients")); +ADDRLP4 8 +ARGP4 +ADDRGP4 $3058 +ARGP4 +ADDRLP4 1080 +ADDRGP4 Info_ValueForKey +CALLP4 +ASGNP4 +ADDRLP4 1080 +INDIRP4 +ARGP4 +ADDRLP4 1084 +ADDRGP4 atoi +CALLI4 +ASGNI4 +ADDRLP4 1032 +ADDRLP4 1084 +INDIRI4 +ASGNI4 +line 3778 +;3778: uiInfo.serverStatus.numPlayersOnServers += clients; +ADDRLP4 1088 +ADDRGP4 uiInfo+99264+10416 +ASGNP4 +ADDRLP4 1088 +INDIRP4 +ADDRLP4 1088 +INDIRP4 +INDIRI4 +ADDRLP4 1032 +INDIRI4 +ADDI4 +ASGNI4 +line 3780 +;3779: +;3780: if (ui_browserShowEmpty.integer == 0) { +ADDRGP4 ui_browserShowEmpty+12 +INDIRI4 +CNSTI4 0 +NEI4 $3061 +line 3781 +;3781: if (clients == 0) { +ADDRLP4 1032 +INDIRI4 +CNSTI4 0 +NEI4 $3064 +line 3782 +;3782: trap_LAN_MarkServerVisible(ui_netSource.integer, i, qfalse); +ADDRGP4 ui_netSource+12 +INDIRI4 +ARGI4 +ADDRLP4 0 +INDIRI4 +ARGI4 +CNSTI4 0 +ARGI4 +ADDRGP4 trap_LAN_MarkServerVisible +CALLV +pop +line 3783 +;3783: continue; +ADDRGP4 $3046 +JUMPV +LABELV $3064 +line 3785 +;3784: } +;3785: } +LABELV $3061 +line 3787 +;3786: +;3787: if (ui_browserShowFull.integer == 0) { +ADDRGP4 ui_browserShowFull+12 +INDIRI4 +CNSTI4 0 +NEI4 $3067 +line 3788 +;3788: maxClients = atoi(Info_ValueForKey(info, "sv_maxclients")); +ADDRLP4 8 +ARGP4 +ADDRGP4 $1399 +ARGP4 +ADDRLP4 1092 +ADDRGP4 Info_ValueForKey +CALLP4 +ASGNP4 +ADDRLP4 1092 +INDIRP4 +ARGP4 +ADDRLP4 1096 +ADDRGP4 atoi +CALLI4 +ASGNI4 +ADDRLP4 1044 +ADDRLP4 1096 +INDIRI4 +ASGNI4 +line 3789 +;3789: if (clients == maxClients) { +ADDRLP4 1032 +INDIRI4 +ADDRLP4 1044 +INDIRI4 +NEI4 $3070 +line 3790 +;3790: trap_LAN_MarkServerVisible(ui_netSource.integer, i, qfalse); +ADDRGP4 ui_netSource+12 +INDIRI4 +ARGI4 +ADDRLP4 0 +INDIRI4 +ARGI4 +CNSTI4 0 +ARGI4 +ADDRGP4 trap_LAN_MarkServerVisible +CALLV +pop +line 3791 +;3791: continue; +ADDRGP4 $3046 +JUMPV +LABELV $3070 +line 3793 +;3792: } +;3793: } +LABELV $3067 +line 3795 +;3794: +;3795: if (uiInfo.joinGameTypes[ui_joinGameType.integer].gtEnum != -1) { +ADDRGP4 ui_joinGameType+12 +INDIRI4 +CNSTI4 3 +LSHI4 +ADDRGP4 uiInfo+78712+4 +ADDP4 +INDIRI4 +CNSTI4 -1 +EQI4 $3073 +line 3796 +;3796: game = atoi(Info_ValueForKey(info, "gametype")); +ADDRLP4 8 +ARGP4 +ADDRGP4 $3078 +ARGP4 +ADDRLP4 1092 +ADDRGP4 Info_ValueForKey +CALLP4 +ASGNP4 +ADDRLP4 1092 +INDIRP4 +ARGP4 +ADDRLP4 1096 +ADDRGP4 atoi +CALLI4 +ASGNI4 +ADDRLP4 1048 +ADDRLP4 1096 +INDIRI4 +ASGNI4 +line 3797 +;3797: if (game != uiInfo.joinGameTypes[ui_joinGameType.integer].gtEnum) { +ADDRLP4 1048 +INDIRI4 +ADDRGP4 ui_joinGameType+12 +INDIRI4 +CNSTI4 3 +LSHI4 +ADDRGP4 uiInfo+78712+4 +ADDP4 +INDIRI4 +EQI4 $3079 +line 3798 +;3798: trap_LAN_MarkServerVisible(ui_netSource.integer, i, qfalse); +ADDRGP4 ui_netSource+12 +INDIRI4 +ARGI4 +ADDRLP4 0 +INDIRI4 +ARGI4 +CNSTI4 0 +ARGI4 +ADDRGP4 trap_LAN_MarkServerVisible +CALLV +pop +line 3799 +;3799: continue; +ADDRGP4 $3046 +JUMPV +LABELV $3079 +line 3801 +;3800: } +;3801: } +LABELV $3073 +line 3803 +;3802: +;3803: if (ui_serverFilterType.integer > 0) { +ADDRGP4 ui_serverFilterType+12 +INDIRI4 +CNSTI4 0 +LEI4 $3085 +line 3804 +;3804: if (Q_stricmp(Info_ValueForKey(info, "game"), serverFilters[ui_serverFilterType.integer].basedir) != 0) { +ADDRLP4 8 +ARGP4 +ADDRGP4 $3090 +ARGP4 +ADDRLP4 1092 +ADDRGP4 Info_ValueForKey +CALLP4 +ASGNP4 +ADDRLP4 1092 +INDIRP4 +ARGP4 +ADDRGP4 ui_serverFilterType+12 +INDIRI4 +CNSTI4 3 +LSHI4 +ADDRGP4 serverFilters+4 +ADDP4 +INDIRP4 +ARGP4 +ADDRLP4 1096 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 1096 +INDIRI4 +CNSTI4 0 +EQI4 $3088 +line 3805 +;3805: trap_LAN_MarkServerVisible(ui_netSource.integer, i, qfalse); +ADDRGP4 ui_netSource+12 +INDIRI4 +ARGI4 +ADDRLP4 0 +INDIRI4 +ARGI4 +CNSTI4 0 +ARGI4 +ADDRGP4 trap_LAN_MarkServerVisible +CALLV +pop +line 3806 +;3806: continue; +ADDRGP4 $3046 +JUMPV +LABELV $3088 +line 3808 +;3807: } +;3808: } +LABELV $3085 +line 3810 +;3809: // make sure we never add a favorite server twice +;3810: if (ui_netSource.integer == AS_FAVORITES) { +ADDRGP4 ui_netSource+12 +INDIRI4 +CNSTI4 3 +NEI4 $3094 +line 3811 +;3811: UI_RemoveServerFromDisplayList(i); +ADDRLP4 0 +INDIRI4 +ARGI4 +ADDRGP4 UI_RemoveServerFromDisplayList +CALLV +pop +line 3812 +;3812: } +LABELV $3094 +line 3814 +;3813: // insert the server into the list +;3814: UI_BinaryServerInsertion(i); +ADDRLP4 0 +INDIRI4 +ARGI4 +ADDRGP4 UI_BinaryServerInsertion +CALLV +pop +line 3816 +;3815: // done with this server +;3816: if (ping > 0) { +ADDRLP4 4 +INDIRI4 +CNSTI4 0 +LEI4 $3097 +line 3817 +;3817: trap_LAN_MarkServerVisible(ui_netSource.integer, i, qfalse); +ADDRGP4 ui_netSource+12 +INDIRI4 +ARGI4 +ADDRLP4 0 +INDIRI4 +ARGI4 +CNSTI4 0 +ARGI4 +ADDRGP4 trap_LAN_MarkServerVisible +CALLV +pop +line 3818 +;3818: numinvisible++; +ADDRLP4 1092 +ADDRGP4 $2996 +ASGNP4 +ADDRLP4 1092 +INDIRP4 +ADDRLP4 1092 +INDIRP4 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 3819 +;3819: } +LABELV $3097 +line 3820 +;3820: } +LABELV $3053 +line 3821 +;3821: } +LABELV $3046 +line 3765 +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +LABELV $3048 +ADDRLP4 0 +INDIRI4 +ADDRLP4 1036 +INDIRI4 +LTI4 $3045 +line 3823 +;3822: +;3823: uiInfo.serverStatus.refreshtime = uiInfo.uiDC.realTime; +ADDRGP4 uiInfo+99264+2192 +ADDRGP4 uiInfo+208 +INDIRI4 +ASGNI4 +line 3826 +;3824: +;3825: // if there were no servers visible for ping updates +;3826: if (!visible) { +ADDRLP4 1040 +INDIRI4 +CNSTI4 0 +NEI4 $3103 +line 3829 +;3827:// UI_StopServerRefresh(); +;3828:// uiInfo.serverStatus.nextDisplayRefresh = 0; +;3829: } +LABELV $3103 +line 3830 +;3830:} +LABELV $2995 +endproc UI_BuildServerDisplayList 1100 16 +data +export serverStatusCvars +align 4 +LABELV serverStatusCvars +address $3106 +address $3107 +address $3108 +address $112 +address $3109 +address $3110 +address $1362 +address $3111 +address $3112 +address $3113 +address $3114 +address $112 +address $2194 +address $112 +address $3115 +address $112 +address $719 +address $112 +byte 4 0 +byte 4 0 +code +proc UI_SortServerStatusInfo 56 8 +line 3855 +;3831: +;3832:typedef struct +;3833:{ +;3834: char *name, *altName; +;3835:} serverStatusCvar_t; +;3836: +;3837:serverStatusCvar_t serverStatusCvars[] = { +;3838: {"sv_hostname", "Name"}, +;3839: {"Address", ""}, +;3840: {"gamename", "Game name"}, +;3841: {"g_gametype", "Game type"}, +;3842: {"mapname", "Map"}, +;3843: {"version", ""}, +;3844: {"protocol", ""}, +;3845: {"timelimit", ""}, +;3846: {"fraglimit", ""}, +;3847: {NULL, NULL} +;3848:}; +;3849: +;3850:/* +;3851:================== +;3852:UI_SortServerStatusInfo +;3853:================== +;3854:*/ +;3855:static void UI_SortServerStatusInfo( serverStatusInfo_t *info ) { +line 3862 +;3856: int i, j, index; +;3857: char *tmp1, *tmp2; +;3858: +;3859: // FIXME: if "gamename" == "baseq3" or "missionpack" then +;3860: // replace the gametype number by FFA, CTF etc. +;3861: // +;3862: index = 0; +ADDRLP4 4 +CNSTI4 0 +ASGNI4 +line 3863 +;3863: for (i = 0; serverStatusCvars[i].name; i++) { +ADDRLP4 8 +CNSTI4 0 +ASGNI4 +ADDRGP4 $3120 +JUMPV +LABELV $3117 +line 3864 +;3864: for (j = 0; j < info->numLines; j++) { +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +ADDRGP4 $3124 +JUMPV +LABELV $3121 +line 3865 +;3865: if ( !info->lines[j][1] || info->lines[j][1][0] ) { +ADDRLP4 20 +CNSTI4 4 +ASGNI4 +ADDRLP4 24 +ADDRLP4 0 +INDIRI4 +ADDRLP4 20 +INDIRI4 +LSHI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 64 +ADDP4 +ADDP4 +ADDRLP4 20 +INDIRI4 +ADDP4 +INDIRP4 +ASGNP4 +ADDRLP4 24 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $3127 +ADDRLP4 24 +INDIRP4 +INDIRI1 +CVII4 1 +CNSTI4 0 +EQI4 $3125 +LABELV $3127 +line 3866 +;3866: continue; +ADDRGP4 $3122 +JUMPV +LABELV $3125 +line 3868 +;3867: } +;3868: if ( !Q_stricmp(serverStatusCvars[i].name, info->lines[j][0]) ) { +ADDRLP4 8 +INDIRI4 +CNSTI4 3 +LSHI4 +ADDRGP4 serverStatusCvars +ADDP4 +INDIRP4 +ARGP4 +ADDRLP4 0 +INDIRI4 +CNSTI4 4 +LSHI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 64 +ADDP4 +ADDP4 +INDIRP4 +ARGP4 +ADDRLP4 28 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 28 +INDIRI4 +CNSTI4 0 +NEI4 $3128 +line 3870 +;3869: // swap lines +;3870: tmp1 = info->lines[index][0]; +ADDRLP4 12 +ADDRLP4 4 +INDIRI4 +CNSTI4 4 +LSHI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 64 +ADDP4 +ADDP4 +INDIRP4 +ASGNP4 +line 3871 +;3871: tmp2 = info->lines[index][3]; +ADDRLP4 16 +ADDRLP4 4 +INDIRI4 +CNSTI4 4 +LSHI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 64 +ADDP4 +ADDP4 +CNSTI4 12 +ADDP4 +INDIRP4 +ASGNP4 +line 3872 +;3872: info->lines[index][0] = info->lines[j][0]; +ADDRLP4 32 +CNSTI4 4 +ASGNI4 +ADDRLP4 36 +ADDRFP4 0 +INDIRP4 +CNSTI4 64 +ADDP4 +ASGNP4 +ADDRLP4 4 +INDIRI4 +ADDRLP4 32 +INDIRI4 +LSHI4 +ADDRLP4 36 +INDIRP4 +ADDP4 +ADDRLP4 0 +INDIRI4 +ADDRLP4 32 +INDIRI4 +LSHI4 +ADDRLP4 36 +INDIRP4 +ADDP4 +INDIRP4 +ASGNP4 +line 3873 +;3873: info->lines[index][3] = info->lines[j][3]; +ADDRLP4 40 +CNSTI4 4 +ASGNI4 +ADDRLP4 44 +ADDRFP4 0 +INDIRP4 +CNSTI4 64 +ADDP4 +ASGNP4 +ADDRLP4 48 +CNSTI4 12 +ASGNI4 +ADDRLP4 4 +INDIRI4 +ADDRLP4 40 +INDIRI4 +LSHI4 +ADDRLP4 44 +INDIRP4 +ADDP4 +ADDRLP4 48 +INDIRI4 +ADDP4 +ADDRLP4 0 +INDIRI4 +ADDRLP4 40 +INDIRI4 +LSHI4 +ADDRLP4 44 +INDIRP4 +ADDP4 +ADDRLP4 48 +INDIRI4 +ADDP4 +INDIRP4 +ASGNP4 +line 3874 +;3874: info->lines[j][0] = tmp1; +ADDRLP4 0 +INDIRI4 +CNSTI4 4 +LSHI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 64 +ADDP4 +ADDP4 +ADDRLP4 12 +INDIRP4 +ASGNP4 +line 3875 +;3875: info->lines[j][3] = tmp2; +ADDRLP4 0 +INDIRI4 +CNSTI4 4 +LSHI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 64 +ADDP4 +ADDP4 +CNSTI4 12 +ADDP4 +ADDRLP4 16 +INDIRP4 +ASGNP4 +line 3877 +;3876: // +;3877: if ( strlen(serverStatusCvars[i].altName) ) { +ADDRLP4 8 +INDIRI4 +CNSTI4 3 +LSHI4 +ADDRGP4 serverStatusCvars+4 +ADDP4 +INDIRP4 +ARGP4 +ADDRLP4 52 +ADDRGP4 strlen +CALLI4 +ASGNI4 +ADDRLP4 52 +INDIRI4 +CNSTI4 0 +EQI4 $3130 +line 3878 +;3878: info->lines[index][0] = serverStatusCvars[i].altName; +ADDRLP4 4 +INDIRI4 +CNSTI4 4 +LSHI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 64 +ADDP4 +ADDP4 +ADDRLP4 8 +INDIRI4 +CNSTI4 3 +LSHI4 +ADDRGP4 serverStatusCvars+4 +ADDP4 +INDIRP4 +ASGNP4 +line 3879 +;3879: } +LABELV $3130 +line 3880 +;3880: index++; +ADDRLP4 4 +ADDRLP4 4 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 3881 +;3881: } +LABELV $3128 +line 3882 +;3882: } +LABELV $3122 +line 3864 +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +LABELV $3124 +ADDRLP4 0 +INDIRI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 3328 +ADDP4 +INDIRI4 +LTI4 $3121 +line 3883 +;3883: } +LABELV $3118 +line 3863 +ADDRLP4 8 +ADDRLP4 8 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +LABELV $3120 +ADDRLP4 8 +INDIRI4 +CNSTI4 3 +LSHI4 +ADDRGP4 serverStatusCvars +ADDP4 +INDIRP4 +CVPU4 4 +CNSTU4 0 +NEU4 $3117 +line 3884 +;3884:} +LABELV $3116 +endproc UI_SortServerStatusInfo 56 8 +proc UI_GetServerStatusInfo 168 16 +line 3891 +;3885: +;3886:/* +;3887:================== +;3888:UI_GetServerStatusInfo +;3889:================== +;3890:*/ +;3891:static int UI_GetServerStatusInfo( const char *serverAddress, serverStatusInfo_t *info ) { +line 3895 +;3892: char *p, *score, *ping, *name; +;3893: int i, len; +;3894: +;3895: if (!info) { +ADDRFP4 4 +INDIRP4 +CVPU4 4 +CNSTU4 0 +NEU4 $3135 +line 3896 +;3896: trap_LAN_ServerStatus( serverAddress, NULL, 0); +ADDRFP4 0 +INDIRP4 +ARGP4 +CNSTP4 0 +ARGP4 +CNSTI4 0 +ARGI4 +ADDRGP4 trap_LAN_ServerStatus +CALLI4 +pop +line 3897 +;3897: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $3134 +JUMPV +LABELV $3135 +line 3899 +;3898: } +;3899: memset(info, 0, sizeof(*info)); +ADDRFP4 4 +INDIRP4 +ARGP4 +CNSTI4 0 +ARGI4 +CNSTI4 3332 +ARGI4 +ADDRGP4 memset +CALLP4 +pop +line 3900 +;3900: if ( trap_LAN_ServerStatus( serverAddress, info->text, sizeof(info->text)) ) { +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRFP4 4 +INDIRP4 +CNSTI4 2112 +ADDP4 +ARGP4 +CNSTI4 1024 +ARGI4 +ADDRLP4 24 +ADDRGP4 trap_LAN_ServerStatus +CALLI4 +ASGNI4 +ADDRLP4 24 +INDIRI4 +CNSTI4 0 +EQI4 $3137 +line 3901 +;3901: Q_strncpyz(info->address, serverAddress, sizeof(info->address)); +ADDRFP4 4 +INDIRP4 +ARGP4 +ADDRFP4 0 +INDIRP4 +ARGP4 +CNSTI4 64 +ARGI4 +ADDRGP4 Q_strncpyz +CALLV +pop +line 3902 +;3902: p = info->text; +ADDRLP4 0 +ADDRFP4 4 +INDIRP4 +CNSTI4 2112 +ADDP4 +ASGNP4 +line 3903 +;3903: info->numLines = 0; +ADDRFP4 4 +INDIRP4 +CNSTI4 3328 +ADDP4 +CNSTI4 0 +ASGNI4 +line 3904 +;3904: info->lines[info->numLines][0] = "Address"; +ADDRLP4 28 +ADDRFP4 4 +INDIRP4 +ASGNP4 +ADDRLP4 28 +INDIRP4 +CNSTI4 3328 +ADDP4 +INDIRI4 +CNSTI4 4 +LSHI4 +ADDRLP4 28 +INDIRP4 +CNSTI4 64 +ADDP4 +ADDP4 +ADDRGP4 $3108 +ASGNP4 +line 3905 +;3905: info->lines[info->numLines][1] = ""; +ADDRLP4 32 +ADDRFP4 4 +INDIRP4 +ASGNP4 +ADDRLP4 36 +CNSTI4 4 +ASGNI4 +ADDRLP4 32 +INDIRP4 +CNSTI4 3328 +ADDP4 +INDIRI4 +ADDRLP4 36 +INDIRI4 +LSHI4 +ADDRLP4 32 +INDIRP4 +CNSTI4 64 +ADDP4 +ADDP4 +ADDRLP4 36 +INDIRI4 +ADDP4 +ADDRGP4 $112 +ASGNP4 +line 3906 +;3906: info->lines[info->numLines][2] = ""; +ADDRLP4 40 +ADDRFP4 4 +INDIRP4 +ASGNP4 +ADDRLP4 40 +INDIRP4 +CNSTI4 3328 +ADDP4 +INDIRI4 +CNSTI4 4 +LSHI4 +ADDRLP4 40 +INDIRP4 +CNSTI4 64 +ADDP4 +ADDP4 +CNSTI4 8 +ADDP4 +ADDRGP4 $112 +ASGNP4 +line 3907 +;3907: info->lines[info->numLines][3] = info->address; +ADDRLP4 44 +ADDRFP4 4 +INDIRP4 +ASGNP4 +ADDRLP4 44 +INDIRP4 +CNSTI4 3328 +ADDP4 +INDIRI4 +CNSTI4 4 +LSHI4 +ADDRLP4 44 +INDIRP4 +CNSTI4 64 +ADDP4 +ADDP4 +CNSTI4 12 +ADDP4 +ADDRLP4 44 +INDIRP4 +ASGNP4 +line 3908 +;3908: info->numLines++; +ADDRLP4 48 +ADDRFP4 4 +INDIRP4 +CNSTI4 3328 +ADDP4 +ASGNP4 +ADDRLP4 48 +INDIRP4 +ADDRLP4 48 +INDIRP4 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +ADDRGP4 $3140 +JUMPV +LABELV $3139 +line 3910 +;3909: // get the cvars +;3910: while (p && *p) { +line 3911 +;3911: p = strchr(p, '\\'); +ADDRLP4 0 +INDIRP4 +ARGP4 +CNSTI4 92 +ARGI4 +ADDRLP4 52 +ADDRGP4 strchr +CALLP4 +ASGNP4 +ADDRLP4 0 +ADDRLP4 52 +INDIRP4 +ASGNP4 +line 3912 +;3912: if (!p) break; +ADDRLP4 0 +INDIRP4 +CVPU4 4 +CNSTU4 0 +NEU4 $3142 +ADDRGP4 $3141 +JUMPV +LABELV $3142 +line 3913 +;3913: *p++ = '\0'; +ADDRLP4 56 +ADDRLP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 0 +ADDRLP4 56 +INDIRP4 +CNSTI4 1 +ADDP4 +ASGNP4 +ADDRLP4 56 +INDIRP4 +CNSTI1 0 +ASGNI1 +line 3914 +;3914: if (*p == '\\') +ADDRLP4 0 +INDIRP4 +INDIRI1 +CVII4 1 +CNSTI4 92 +NEI4 $3144 +line 3915 +;3915: break; +ADDRGP4 $3141 +JUMPV +LABELV $3144 +line 3916 +;3916: info->lines[info->numLines][0] = p; +ADDRLP4 60 +ADDRFP4 4 +INDIRP4 +ASGNP4 +ADDRLP4 60 +INDIRP4 +CNSTI4 3328 +ADDP4 +INDIRI4 +CNSTI4 4 +LSHI4 +ADDRLP4 60 +INDIRP4 +CNSTI4 64 +ADDP4 +ADDP4 +ADDRLP4 0 +INDIRP4 +ASGNP4 +line 3917 +;3917: info->lines[info->numLines][1] = ""; +ADDRLP4 64 +ADDRFP4 4 +INDIRP4 +ASGNP4 +ADDRLP4 68 +CNSTI4 4 +ASGNI4 +ADDRLP4 64 +INDIRP4 +CNSTI4 3328 +ADDP4 +INDIRI4 +ADDRLP4 68 +INDIRI4 +LSHI4 +ADDRLP4 64 +INDIRP4 +CNSTI4 64 +ADDP4 +ADDP4 +ADDRLP4 68 +INDIRI4 +ADDP4 +ADDRGP4 $112 +ASGNP4 +line 3918 +;3918: info->lines[info->numLines][2] = ""; +ADDRLP4 72 +ADDRFP4 4 +INDIRP4 +ASGNP4 +ADDRLP4 72 +INDIRP4 +CNSTI4 3328 +ADDP4 +INDIRI4 +CNSTI4 4 +LSHI4 +ADDRLP4 72 +INDIRP4 +CNSTI4 64 +ADDP4 +ADDP4 +CNSTI4 8 +ADDP4 +ADDRGP4 $112 +ASGNP4 +line 3919 +;3919: p = strchr(p, '\\'); +ADDRLP4 0 +INDIRP4 +ARGP4 +CNSTI4 92 +ARGI4 +ADDRLP4 76 +ADDRGP4 strchr +CALLP4 +ASGNP4 +ADDRLP4 0 +ADDRLP4 76 +INDIRP4 +ASGNP4 +line 3920 +;3920: if (!p) break; +ADDRLP4 0 +INDIRP4 +CVPU4 4 +CNSTU4 0 +NEU4 $3146 +ADDRGP4 $3141 +JUMPV +LABELV $3146 +line 3921 +;3921: *p++ = '\0'; +ADDRLP4 80 +ADDRLP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 0 +ADDRLP4 80 +INDIRP4 +CNSTI4 1 +ADDP4 +ASGNP4 +ADDRLP4 80 +INDIRP4 +CNSTI1 0 +ASGNI1 +line 3922 +;3922: info->lines[info->numLines][3] = p; +ADDRLP4 84 +ADDRFP4 4 +INDIRP4 +ASGNP4 +ADDRLP4 84 +INDIRP4 +CNSTI4 3328 +ADDP4 +INDIRI4 +CNSTI4 4 +LSHI4 +ADDRLP4 84 +INDIRP4 +CNSTI4 64 +ADDP4 +ADDP4 +CNSTI4 12 +ADDP4 +ADDRLP4 0 +INDIRP4 +ASGNP4 +line 3924 +;3923: +;3924: info->numLines++; +ADDRLP4 88 +ADDRFP4 4 +INDIRP4 +CNSTI4 3328 +ADDP4 +ASGNP4 +ADDRLP4 88 +INDIRP4 +ADDRLP4 88 +INDIRP4 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 3925 +;3925: if (info->numLines >= MAX_SERVERSTATUS_LINES) +ADDRFP4 4 +INDIRP4 +CNSTI4 3328 +ADDP4 +INDIRI4 +CNSTI4 128 +LTI4 $3148 +line 3926 +;3926: break; +ADDRGP4 $3141 +JUMPV +LABELV $3148 +line 3927 +;3927: } +LABELV $3140 +line 3910 +ADDRLP4 0 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $3150 +ADDRLP4 0 +INDIRP4 +INDIRI1 +CVII4 1 +CNSTI4 0 +NEI4 $3139 +LABELV $3150 +LABELV $3141 +line 3929 +;3928: // get the player list +;3929: if (info->numLines < MAX_SERVERSTATUS_LINES-3) { +ADDRFP4 4 +INDIRP4 +CNSTI4 3328 +ADDP4 +INDIRI4 +CNSTI4 125 +GEI4 $3151 +line 3931 +;3930: // empty line +;3931: info->lines[info->numLines][0] = ""; +ADDRLP4 56 +ADDRFP4 4 +INDIRP4 +ASGNP4 +ADDRLP4 56 +INDIRP4 +CNSTI4 3328 +ADDP4 +INDIRI4 +CNSTI4 4 +LSHI4 +ADDRLP4 56 +INDIRP4 +CNSTI4 64 +ADDP4 +ADDP4 +ADDRGP4 $112 +ASGNP4 +line 3932 +;3932: info->lines[info->numLines][1] = ""; +ADDRLP4 60 +ADDRFP4 4 +INDIRP4 +ASGNP4 +ADDRLP4 64 +CNSTI4 4 +ASGNI4 +ADDRLP4 60 +INDIRP4 +CNSTI4 3328 +ADDP4 +INDIRI4 +ADDRLP4 64 +INDIRI4 +LSHI4 +ADDRLP4 60 +INDIRP4 +CNSTI4 64 +ADDP4 +ADDP4 +ADDRLP4 64 +INDIRI4 +ADDP4 +ADDRGP4 $112 +ASGNP4 +line 3933 +;3933: info->lines[info->numLines][2] = ""; +ADDRLP4 68 +ADDRFP4 4 +INDIRP4 +ASGNP4 +ADDRLP4 68 +INDIRP4 +CNSTI4 3328 +ADDP4 +INDIRI4 +CNSTI4 4 +LSHI4 +ADDRLP4 68 +INDIRP4 +CNSTI4 64 +ADDP4 +ADDP4 +CNSTI4 8 +ADDP4 +ADDRGP4 $112 +ASGNP4 +line 3934 +;3934: info->lines[info->numLines][3] = ""; +ADDRLP4 72 +ADDRFP4 4 +INDIRP4 +ASGNP4 +ADDRLP4 72 +INDIRP4 +CNSTI4 3328 +ADDP4 +INDIRI4 +CNSTI4 4 +LSHI4 +ADDRLP4 72 +INDIRP4 +CNSTI4 64 +ADDP4 +ADDP4 +CNSTI4 12 +ADDP4 +ADDRGP4 $112 +ASGNP4 +line 3935 +;3935: info->numLines++; +ADDRLP4 76 +ADDRFP4 4 +INDIRP4 +CNSTI4 3328 +ADDP4 +ASGNP4 +ADDRLP4 76 +INDIRP4 +ADDRLP4 76 +INDIRP4 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 3937 +;3936: // header +;3937: info->lines[info->numLines][0] = "num"; +ADDRLP4 80 +ADDRFP4 4 +INDIRP4 +ASGNP4 +ADDRLP4 80 +INDIRP4 +CNSTI4 3328 +ADDP4 +INDIRI4 +CNSTI4 4 +LSHI4 +ADDRLP4 80 +INDIRP4 +CNSTI4 64 +ADDP4 +ADDP4 +ADDRGP4 $3153 +ASGNP4 +line 3938 +;3938: info->lines[info->numLines][1] = "score"; +ADDRLP4 84 +ADDRFP4 4 +INDIRP4 +ASGNP4 +ADDRLP4 88 +CNSTI4 4 +ASGNI4 +ADDRLP4 84 +INDIRP4 +CNSTI4 3328 +ADDP4 +INDIRI4 +ADDRLP4 88 +INDIRI4 +LSHI4 +ADDRLP4 84 +INDIRP4 +CNSTI4 64 +ADDP4 +ADDP4 +ADDRLP4 88 +INDIRI4 +ADDP4 +ADDRGP4 $3154 +ASGNP4 +line 3939 +;3939: info->lines[info->numLines][2] = "ping"; +ADDRLP4 92 +ADDRFP4 4 +INDIRP4 +ASGNP4 +ADDRLP4 92 +INDIRP4 +CNSTI4 3328 +ADDP4 +INDIRI4 +CNSTI4 4 +LSHI4 +ADDRLP4 92 +INDIRP4 +CNSTI4 64 +ADDP4 +ADDP4 +CNSTI4 8 +ADDP4 +ADDRGP4 $3155 +ASGNP4 +line 3940 +;3940: info->lines[info->numLines][3] = "name"; +ADDRLP4 96 +ADDRFP4 4 +INDIRP4 +ASGNP4 +ADDRLP4 96 +INDIRP4 +CNSTI4 3328 +ADDP4 +INDIRI4 +CNSTI4 4 +LSHI4 +ADDRLP4 96 +INDIRP4 +CNSTI4 64 +ADDP4 +ADDP4 +CNSTI4 12 +ADDP4 +ADDRGP4 $1448 +ASGNP4 +line 3941 +;3941: info->numLines++; +ADDRLP4 100 +ADDRFP4 4 +INDIRP4 +CNSTI4 3328 +ADDP4 +ASGNP4 +ADDRLP4 100 +INDIRP4 +ADDRLP4 100 +INDIRP4 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 3943 +;3942: // parse players +;3943: i = 0; +ADDRLP4 8 +CNSTI4 0 +ASGNI4 +line 3944 +;3944: len = 0; +ADDRLP4 4 +CNSTI4 0 +ASGNI4 +ADDRGP4 $3157 +JUMPV +LABELV $3156 +line 3945 +;3945: while (p && *p) { +line 3946 +;3946: if (*p == '\\') +ADDRLP4 0 +INDIRP4 +INDIRI1 +CVII4 1 +CNSTI4 92 +NEI4 $3159 +line 3947 +;3947: *p++ = '\0'; +ADDRLP4 104 +ADDRLP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 0 +ADDRLP4 104 +INDIRP4 +CNSTI4 1 +ADDP4 +ASGNP4 +ADDRLP4 104 +INDIRP4 +CNSTI1 0 +ASGNI1 +LABELV $3159 +line 3948 +;3948: if (!p) +ADDRLP4 0 +INDIRP4 +CVPU4 4 +CNSTU4 0 +NEU4 $3161 +line 3949 +;3949: break; +ADDRGP4 $3158 +JUMPV +LABELV $3161 +line 3950 +;3950: score = p; +ADDRLP4 12 +ADDRLP4 0 +INDIRP4 +ASGNP4 +line 3951 +;3951: p = strchr(p, ' '); +ADDRLP4 0 +INDIRP4 +ARGP4 +CNSTI4 32 +ARGI4 +ADDRLP4 108 +ADDRGP4 strchr +CALLP4 +ASGNP4 +ADDRLP4 0 +ADDRLP4 108 +INDIRP4 +ASGNP4 +line 3952 +;3952: if (!p) +ADDRLP4 0 +INDIRP4 +CVPU4 4 +CNSTU4 0 +NEU4 $3163 +line 3953 +;3953: break; +ADDRGP4 $3158 +JUMPV +LABELV $3163 +line 3954 +;3954: *p++ = '\0'; +ADDRLP4 112 +ADDRLP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 0 +ADDRLP4 112 +INDIRP4 +CNSTI4 1 +ADDP4 +ASGNP4 +ADDRLP4 112 +INDIRP4 +CNSTI1 0 +ASGNI1 +line 3955 +;3955: ping = p; +ADDRLP4 16 +ADDRLP4 0 +INDIRP4 +ASGNP4 +line 3956 +;3956: p = strchr(p, ' '); +ADDRLP4 0 +INDIRP4 +ARGP4 +CNSTI4 32 +ARGI4 +ADDRLP4 116 +ADDRGP4 strchr +CALLP4 +ASGNP4 +ADDRLP4 0 +ADDRLP4 116 +INDIRP4 +ASGNP4 +line 3957 +;3957: if (!p) +ADDRLP4 0 +INDIRP4 +CVPU4 4 +CNSTU4 0 +NEU4 $3165 +line 3958 +;3958: break; +ADDRGP4 $3158 +JUMPV +LABELV $3165 +line 3959 +;3959: *p++ = '\0'; +ADDRLP4 120 +ADDRLP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 0 +ADDRLP4 120 +INDIRP4 +CNSTI4 1 +ADDP4 +ASGNP4 +ADDRLP4 120 +INDIRP4 +CNSTI1 0 +ASGNI1 +line 3960 +;3960: name = p; +ADDRLP4 20 +ADDRLP4 0 +INDIRP4 +ASGNP4 +line 3961 +;3961: Com_sprintf(&info->pings[len], sizeof(info->pings)-len, "%d", i); +ADDRLP4 4 +INDIRI4 +ADDRFP4 4 +INDIRP4 +CNSTI4 3136 +ADDP4 +ADDP4 +ARGP4 +CNSTU4 192 +ADDRLP4 4 +INDIRI4 +CVIU4 4 +SUBU4 +CVUI4 4 +ARGI4 +ADDRGP4 $716 +ARGP4 +ADDRLP4 8 +INDIRI4 +ARGI4 +ADDRGP4 Com_sprintf +CALLV +pop +line 3962 +;3962: info->lines[info->numLines][0] = &info->pings[len]; +ADDRLP4 128 +ADDRFP4 4 +INDIRP4 +ASGNP4 +ADDRLP4 128 +INDIRP4 +CNSTI4 3328 +ADDP4 +INDIRI4 +CNSTI4 4 +LSHI4 +ADDRLP4 128 +INDIRP4 +CNSTI4 64 +ADDP4 +ADDP4 +ADDRLP4 4 +INDIRI4 +ADDRLP4 128 +INDIRP4 +CNSTI4 3136 +ADDP4 +ADDP4 +ASGNP4 +line 3963 +;3963: len += strlen(&info->pings[len]) + 1; +ADDRLP4 4 +INDIRI4 +ADDRFP4 4 +INDIRP4 +CNSTI4 3136 +ADDP4 +ADDP4 +ARGP4 +ADDRLP4 136 +ADDRGP4 strlen +CALLI4 +ASGNI4 +ADDRLP4 4 +ADDRLP4 4 +INDIRI4 +ADDRLP4 136 +INDIRI4 +CNSTI4 1 +ADDI4 +ADDI4 +ASGNI4 +line 3964 +;3964: info->lines[info->numLines][1] = score; +ADDRLP4 140 +ADDRFP4 4 +INDIRP4 +ASGNP4 +ADDRLP4 144 +CNSTI4 4 +ASGNI4 +ADDRLP4 140 +INDIRP4 +CNSTI4 3328 +ADDP4 +INDIRI4 +ADDRLP4 144 +INDIRI4 +LSHI4 +ADDRLP4 140 +INDIRP4 +CNSTI4 64 +ADDP4 +ADDP4 +ADDRLP4 144 +INDIRI4 +ADDP4 +ADDRLP4 12 +INDIRP4 +ASGNP4 +line 3965 +;3965: info->lines[info->numLines][2] = ping; +ADDRLP4 148 +ADDRFP4 4 +INDIRP4 +ASGNP4 +ADDRLP4 148 +INDIRP4 +CNSTI4 3328 +ADDP4 +INDIRI4 +CNSTI4 4 +LSHI4 +ADDRLP4 148 +INDIRP4 +CNSTI4 64 +ADDP4 +ADDP4 +CNSTI4 8 +ADDP4 +ADDRLP4 16 +INDIRP4 +ASGNP4 +line 3966 +;3966: info->lines[info->numLines][3] = name; +ADDRLP4 152 +ADDRFP4 4 +INDIRP4 +ASGNP4 +ADDRLP4 152 +INDIRP4 +CNSTI4 3328 +ADDP4 +INDIRI4 +CNSTI4 4 +LSHI4 +ADDRLP4 152 +INDIRP4 +CNSTI4 64 +ADDP4 +ADDP4 +CNSTI4 12 +ADDP4 +ADDRLP4 20 +INDIRP4 +ASGNP4 +line 3967 +;3967: info->numLines++; +ADDRLP4 156 +ADDRFP4 4 +INDIRP4 +CNSTI4 3328 +ADDP4 +ASGNP4 +ADDRLP4 156 +INDIRP4 +ADDRLP4 156 +INDIRP4 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 3968 +;3968: if (info->numLines >= MAX_SERVERSTATUS_LINES) +ADDRFP4 4 +INDIRP4 +CNSTI4 3328 +ADDP4 +INDIRI4 +CNSTI4 128 +LTI4 $3167 +line 3969 +;3969: break; +ADDRGP4 $3158 +JUMPV +LABELV $3167 +line 3970 +;3970: p = strchr(p, '\\'); +ADDRLP4 0 +INDIRP4 +ARGP4 +CNSTI4 92 +ARGI4 +ADDRLP4 160 +ADDRGP4 strchr +CALLP4 +ASGNP4 +ADDRLP4 0 +ADDRLP4 160 +INDIRP4 +ASGNP4 +line 3971 +;3971: if (!p) +ADDRLP4 0 +INDIRP4 +CVPU4 4 +CNSTU4 0 +NEU4 $3169 +line 3972 +;3972: break; +ADDRGP4 $3158 +JUMPV +LABELV $3169 +line 3973 +;3973: *p++ = '\0'; +ADDRLP4 164 +ADDRLP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 0 +ADDRLP4 164 +INDIRP4 +CNSTI4 1 +ADDP4 +ASGNP4 +ADDRLP4 164 +INDIRP4 +CNSTI1 0 +ASGNI1 +line 3975 +;3974: // +;3975: i++; +ADDRLP4 8 +ADDRLP4 8 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 3976 +;3976: } +LABELV $3157 +line 3945 +ADDRLP4 0 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $3171 +ADDRLP4 0 +INDIRP4 +INDIRI1 +CVII4 1 +CNSTI4 0 +NEI4 $3156 +LABELV $3171 +LABELV $3158 +line 3977 +;3977: } +LABELV $3151 +line 3978 +;3978: UI_SortServerStatusInfo( info ); +ADDRFP4 4 +INDIRP4 +ARGP4 +ADDRGP4 UI_SortServerStatusInfo +CALLV +pop +line 3979 +;3979: return qtrue; +CNSTI4 1 +RETI4 +ADDRGP4 $3134 +JUMPV +LABELV $3137 +line 3981 +;3980: } +;3981: return qfalse; +CNSTI4 0 +RETI4 +LABELV $3134 +endproc UI_GetServerStatusInfo 168 16 +proc stristr 12 4 +line 3989 +;3982:} +;3983: +;3984:/* +;3985:================== +;3986:stristr +;3987:================== +;3988:*/ +;3989:static char *stristr(char *str, char *charset) { +ADDRGP4 $3174 +JUMPV +LABELV $3173 +line 3992 +;3990: int i; +;3991: +;3992: while(*str) { +line 3993 +;3993: for (i = 0; charset[i] && str[i]; i++) { +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +ADDRGP4 $3179 +JUMPV +LABELV $3176 +line 3994 +;3994: if (toupper(charset[i]) != toupper(str[i])) break; +ADDRLP4 0 +INDIRI4 +ADDRFP4 4 +INDIRP4 +ADDP4 +INDIRI1 +CVII4 1 +ARGI4 +ADDRLP4 4 +ADDRGP4 toupper +CALLI4 +ASGNI4 +ADDRLP4 0 +INDIRI4 +ADDRFP4 0 +INDIRP4 +ADDP4 +INDIRI1 +CVII4 1 +ARGI4 +ADDRLP4 8 +ADDRGP4 toupper +CALLI4 +ASGNI4 +ADDRLP4 4 +INDIRI4 +ADDRLP4 8 +INDIRI4 +EQI4 $3180 +ADDRGP4 $3178 +JUMPV +LABELV $3180 +line 3995 +;3995: } +LABELV $3177 +line 3993 +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +LABELV $3179 +ADDRLP4 8 +CNSTI4 0 +ASGNI4 +ADDRLP4 0 +INDIRI4 +ADDRFP4 4 +INDIRP4 +ADDP4 +INDIRI1 +CVII4 1 +ADDRLP4 8 +INDIRI4 +EQI4 $3182 +ADDRLP4 0 +INDIRI4 +ADDRFP4 0 +INDIRP4 +ADDP4 +INDIRI1 +CVII4 1 +ADDRLP4 8 +INDIRI4 +NEI4 $3176 +LABELV $3182 +LABELV $3178 +line 3996 +;3996: if (!charset[i]) return str; +ADDRLP4 0 +INDIRI4 +ADDRFP4 4 +INDIRP4 +ADDP4 +INDIRI1 +CVII4 1 +CNSTI4 0 +NEI4 $3183 +ADDRFP4 0 +INDIRP4 +RETP4 +ADDRGP4 $3172 +JUMPV +LABELV $3183 +line 3997 +;3997: str++; +ADDRFP4 0 +ADDRFP4 0 +INDIRP4 +CNSTI4 1 +ADDP4 +ASGNP4 +line 3998 +;3998: } +LABELV $3174 +line 3992 +ADDRFP4 0 +INDIRP4 +INDIRI1 +CVII4 1 +CNSTI4 0 +NEI4 $3173 +line 3999 +;3999: return NULL; +CNSTP4 0 +RETP4 +LABELV $3172 +endproc stristr 12 4 +bss +align 4 +LABELV $3186 +skip 4 +align 4 +LABELV $3187 +skip 4 +code +proc UI_BuildFindPlayerList 4424 24 +line 4007 +;4000:} +;4001: +;4002:/* +;4003:================== +;4004:UI_BuildFindPlayerList +;4005:================== +;4006:*/ +;4007:static void UI_BuildFindPlayerList(qboolean force) { +line 4014 +;4008: static int numFound, numTimeOuts; +;4009: int i, j, resend; +;4010: serverStatusInfo_t info; +;4011: char name[MAX_NAME_LENGTH+2]; +;4012: char infoString[MAX_STRING_CHARS]; +;4013: +;4014: if (!force) { +ADDRFP4 0 +INDIRI4 +CNSTI4 0 +NEI4 $3188 +line 4015 +;4015: if (!uiInfo.nextFindPlayerRefresh || uiInfo.nextFindPlayerRefresh > uiInfo.uiDC.realTime) { +ADDRGP4 uiInfo+119472 +INDIRI4 +CNSTI4 0 +EQI4 $3195 +ADDRGP4 uiInfo+119472 +INDIRI4 +ADDRGP4 uiInfo+208 +INDIRI4 +LEI4 $3189 +LABELV $3195 +line 4016 +;4016: return; +ADDRGP4 $3185 +JUMPV +line 4018 +;4017: } +;4018: } +LABELV $3188 +line 4019 +;4019: else { +line 4020 +;4020: memset(&uiInfo.pendingServerStatus, 0, sizeof(uiInfo.pendingServerStatus)); +ADDRGP4 uiInfo+114148 +ARGP4 +CNSTI4 0 +ARGI4 +CNSTI4 2244 +ARGI4 +ADDRGP4 memset +CALLP4 +pop +line 4021 +;4021: uiInfo.numFoundPlayerServers = 0; +ADDRGP4 uiInfo+119468 +CNSTI4 0 +ASGNI4 +line 4022 +;4022: uiInfo.currentFoundPlayerServer = 0; +ADDRGP4 uiInfo+119464 +CNSTI4 0 +ASGNI4 +line 4023 +;4023: trap_Cvar_VariableStringBuffer( "ui_findPlayer", uiInfo.findPlayerName, sizeof(uiInfo.findPlayerName)); +ADDRGP4 $3200 +ARGP4 +ADDRGP4 uiInfo+116392 +ARGP4 +CNSTI4 1024 +ARGI4 +ADDRGP4 trap_Cvar_VariableStringBuffer +CALLV +pop +line 4024 +;4024: Q_CleanStr(uiInfo.findPlayerName); +ADDRGP4 uiInfo+116392 +ARGP4 +ADDRGP4 Q_CleanStr +CALLP4 +pop +line 4026 +;4025: // should have a string of some length +;4026: if (!strlen(uiInfo.findPlayerName)) { +ADDRGP4 uiInfo+116392 +ARGP4 +ADDRLP4 4404 +ADDRGP4 strlen +CALLI4 +ASGNI4 +ADDRLP4 4404 +INDIRI4 +CNSTI4 0 +NEI4 $3204 +line 4027 +;4027: uiInfo.nextFindPlayerRefresh = 0; +ADDRGP4 uiInfo+119472 +CNSTI4 0 +ASGNI4 +line 4028 +;4028: return; +ADDRGP4 $3185 +JUMPV +LABELV $3204 +line 4031 +;4029: } +;4030: // set resend time +;4031: resend = ui_serverStatusTimeOut.integer / 2 - 10; +ADDRLP4 4400 +ADDRGP4 ui_serverStatusTimeOut+12 +INDIRI4 +CNSTI4 2 +DIVI4 +CNSTI4 10 +SUBI4 +ASGNI4 +line 4032 +;4032: if (resend < 50) { +ADDRLP4 4400 +INDIRI4 +CNSTI4 50 +GEI4 $3209 +line 4033 +;4033: resend = 50; +ADDRLP4 4400 +CNSTI4 50 +ASGNI4 +line 4034 +;4034: } +LABELV $3209 +line 4035 +;4035: trap_Cvar_Set("cl_serverStatusResendTime", va("%d", resend)); +ADDRGP4 $716 +ARGP4 +ADDRLP4 4400 +INDIRI4 +ARGI4 +ADDRLP4 4408 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRGP4 $3211 +ARGP4 +ADDRLP4 4408 +INDIRP4 +ARGP4 +ADDRGP4 trap_Cvar_Set +CALLV +pop +line 4037 +;4036: // reset all server status requests +;4037: trap_LAN_ServerStatus( NULL, NULL, 0); +CNSTP4 0 +ARGP4 +CNSTP4 0 +ARGP4 +CNSTI4 0 +ARGI4 +ADDRGP4 trap_LAN_ServerStatus +CALLI4 +pop +line 4039 +;4038: // +;4039: uiInfo.numFoundPlayerServers = 1; +ADDRGP4 uiInfo+119468 +CNSTI4 1 +ASGNI4 +line 4040 +;4040: Com_sprintf(uiInfo.foundPlayerServerNames[uiInfo.numFoundPlayerServers-1], +ADDRGP4 uiInfo+119468 +INDIRI4 +CNSTI4 6 +LSHI4 +ADDRGP4 uiInfo+118440-64 +ADDP4 +ARGP4 +CNSTI4 64 +ARGI4 +ADDRGP4 $3219 +ARGP4 +ADDRGP4 uiInfo+114148 +INDIRI4 +ARGI4 +ADDRGP4 Com_sprintf +CALLV +pop +line 4043 +;4041: sizeof(uiInfo.foundPlayerServerNames[uiInfo.numFoundPlayerServers-1]), +;4042: "searching %d...", uiInfo.pendingServerStatus.num); +;4043: numFound = 0; +ADDRGP4 $3186 +CNSTI4 0 +ASGNI4 +line 4044 +;4044: numTimeOuts++; +ADDRLP4 4412 +ADDRGP4 $3187 +ASGNP4 +ADDRLP4 4412 +INDIRP4 +ADDRLP4 4412 +INDIRP4 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 4045 +;4045: } +LABELV $3189 +line 4046 +;4046: for (i = 0; i < MAX_SERVERSTATUSREQUESTS; i++) { +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +LABELV $3221 +line 4048 +;4047: // if this pending server is valid +;4048: if (uiInfo.pendingServerStatus.server[i].valid) { +CNSTI4 140 +ADDRLP4 0 +INDIRI4 +MULI4 +ADDRGP4 uiInfo+114148+4+136 +ADDP4 +INDIRI4 +CNSTI4 0 +EQI4 $3225 +line 4050 +;4049: // try to get the server status for this server +;4050: if (UI_GetServerStatusInfo( uiInfo.pendingServerStatus.server[i].adrstr, &info ) ) { +CNSTI4 140 +ADDRLP4 0 +INDIRI4 +MULI4 +ADDRGP4 uiInfo+114148+4 +ADDP4 +ARGP4 +ADDRLP4 8 +ARGP4 +ADDRLP4 4404 +ADDRGP4 UI_GetServerStatusInfo +CALLI4 +ASGNI4 +ADDRLP4 4404 +INDIRI4 +CNSTI4 0 +EQI4 $3230 +line 4052 +;4051: // +;4052: numFound++; +ADDRLP4 4408 +ADDRGP4 $3186 +ASGNP4 +ADDRLP4 4408 +INDIRP4 +ADDRLP4 4408 +INDIRP4 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 4054 +;4053: // parse through the server status lines +;4054: for (j = 0; j < info.numLines; j++) { +ADDRLP4 4 +CNSTI4 0 +ASGNI4 +ADDRGP4 $3237 +JUMPV +LABELV $3234 +line 4056 +;4055: // should have ping info +;4056: if ( !info.lines[j][2] || !info.lines[j][2][0] ) { +ADDRLP4 4412 +ADDRLP4 4 +INDIRI4 +CNSTI4 4 +LSHI4 +ASGNI4 +ADDRLP4 4412 +INDIRI4 +ADDRLP4 8+64+8 +ADDP4 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $3245 +ADDRLP4 4412 +INDIRI4 +ADDRLP4 8+64+8 +ADDP4 +INDIRP4 +INDIRI1 +CVII4 1 +CNSTI4 0 +NEI4 $3239 +LABELV $3245 +line 4057 +;4057: continue; +ADDRGP4 $3235 +JUMPV +LABELV $3239 +line 4060 +;4058: } +;4059: // clean string first +;4060: Q_strncpyz(name, info.lines[j][3], sizeof(name)); +ADDRLP4 3340 +ARGP4 +ADDRLP4 4 +INDIRI4 +CNSTI4 4 +LSHI4 +ADDRLP4 8+64+12 +ADDP4 +INDIRP4 +ARGP4 +CNSTI4 34 +ARGI4 +ADDRGP4 Q_strncpyz +CALLV +pop +line 4061 +;4061: Q_CleanStr(name); +ADDRLP4 3340 +ARGP4 +ADDRGP4 Q_CleanStr +CALLP4 +pop +line 4063 +;4062: // if the player name is a substring +;4063: if (stristr(name, uiInfo.findPlayerName)) { +ADDRLP4 3340 +ARGP4 +ADDRGP4 uiInfo+116392 +ARGP4 +ADDRLP4 4416 +ADDRGP4 stristr +CALLP4 +ASGNP4 +ADDRLP4 4416 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $3248 +line 4065 +;4064: // add to found server list if we have space (always leave space for a line with the number found) +;4065: if (uiInfo.numFoundPlayerServers < MAX_FOUNDPLAYER_SERVERS-1) { +ADDRGP4 uiInfo+119468 +INDIRI4 +CNSTI4 15 +GEI4 $3251 +line 4067 +;4066: // +;4067: Q_strncpyz(uiInfo.foundPlayerServerAddresses[uiInfo.numFoundPlayerServers-1], +ADDRGP4 uiInfo+119468 +INDIRI4 +CNSTI4 6 +LSHI4 +ADDRGP4 uiInfo+117416-64 +ADDP4 +ARGP4 +CNSTI4 140 +ADDRLP4 0 +INDIRI4 +MULI4 +ADDRGP4 uiInfo+114148+4 +ADDP4 +ARGP4 +CNSTI4 64 +ARGI4 +ADDRGP4 Q_strncpyz +CALLV +pop +line 4070 +;4068: uiInfo.pendingServerStatus.server[i].adrstr, +;4069: sizeof(uiInfo.foundPlayerServerAddresses[0])); +;4070: Q_strncpyz(uiInfo.foundPlayerServerNames[uiInfo.numFoundPlayerServers-1], +ADDRGP4 uiInfo+119468 +INDIRI4 +CNSTI4 6 +LSHI4 +ADDRGP4 uiInfo+118440-64 +ADDP4 +ARGP4 +CNSTI4 140 +ADDRLP4 0 +INDIRI4 +MULI4 +ADDRGP4 uiInfo+114148+4+64 +ADDP4 +ARGP4 +CNSTI4 64 +ARGI4 +ADDRGP4 Q_strncpyz +CALLV +pop +line 4073 +;4071: uiInfo.pendingServerStatus.server[i].name, +;4072: sizeof(uiInfo.foundPlayerServerNames[0])); +;4073: uiInfo.numFoundPlayerServers++; +ADDRLP4 4420 +ADDRGP4 uiInfo+119468 +ASGNP4 +ADDRLP4 4420 +INDIRP4 +ADDRLP4 4420 +INDIRP4 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 4074 +;4074: } +ADDRGP4 $3252 +JUMPV +LABELV $3251 +line 4075 +;4075: else { +line 4077 +;4076: // can't add any more so we're done +;4077: uiInfo.pendingServerStatus.num = uiInfo.serverStatus.numDisplayServers; +ADDRGP4 uiInfo+114148 +ADDRGP4 uiInfo+99264+10412 +INDIRI4 +ASGNI4 +line 4078 +;4078: } +LABELV $3252 +line 4079 +;4079: } +LABELV $3248 +line 4080 +;4080: } +LABELV $3235 +line 4054 +ADDRLP4 4 +ADDRLP4 4 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +LABELV $3237 +ADDRLP4 4 +INDIRI4 +ADDRLP4 8+3328 +INDIRI4 +LTI4 $3234 +line 4081 +;4081: Com_sprintf(uiInfo.foundPlayerServerNames[uiInfo.numFoundPlayerServers-1], +ADDRGP4 uiInfo+119468 +INDIRI4 +CNSTI4 6 +LSHI4 +ADDRGP4 uiInfo+118440-64 +ADDP4 +ARGP4 +CNSTI4 64 +ARGI4 +ADDRGP4 $3277 +ARGP4 +ADDRGP4 uiInfo+114148 +INDIRI4 +ARGI4 +ADDRGP4 $3186 +INDIRI4 +ARGI4 +ADDRGP4 Com_sprintf +CALLV +pop +line 4085 +;4082: sizeof(uiInfo.foundPlayerServerNames[uiInfo.numFoundPlayerServers-1]), +;4083: "searching %d/%d...", uiInfo.pendingServerStatus.num, numFound); +;4084: // retrieved the server status so reuse this spot +;4085: uiInfo.pendingServerStatus.server[i].valid = qfalse; +CNSTI4 140 +ADDRLP4 0 +INDIRI4 +MULI4 +ADDRGP4 uiInfo+114148+4+136 +ADDP4 +CNSTI4 0 +ASGNI4 +line 4086 +;4086: } +LABELV $3230 +line 4087 +;4087: } +LABELV $3225 +line 4089 +;4088: // if empty pending slot or timed out +;4089: if (!uiInfo.pendingServerStatus.server[i].valid || +ADDRLP4 4404 +CNSTI4 140 +ADDRLP4 0 +INDIRI4 +MULI4 +ASGNI4 +ADDRLP4 4404 +INDIRI4 +ADDRGP4 uiInfo+114148+4+136 +ADDP4 +INDIRI4 +CNSTI4 0 +EQI4 $3292 +ADDRLP4 4404 +INDIRI4 +ADDRGP4 uiInfo+114148+4+128 +ADDP4 +INDIRI4 +ADDRGP4 uiInfo+208 +INDIRI4 +ADDRGP4 ui_serverStatusTimeOut+12 +INDIRI4 +SUBI4 +GEI4 $3282 +LABELV $3292 +line 4090 +;4090: uiInfo.pendingServerStatus.server[i].startTime < uiInfo.uiDC.realTime - ui_serverStatusTimeOut.integer) { +line 4091 +;4091: if (uiInfo.pendingServerStatus.server[i].valid) { +CNSTI4 140 +ADDRLP4 0 +INDIRI4 +MULI4 +ADDRGP4 uiInfo+114148+4+136 +ADDP4 +INDIRI4 +CNSTI4 0 +EQI4 $3293 +line 4092 +;4092: numTimeOuts++; +ADDRLP4 4408 +ADDRGP4 $3187 +ASGNP4 +ADDRLP4 4408 +INDIRP4 +ADDRLP4 4408 +INDIRP4 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 4093 +;4093: } +LABELV $3293 +line 4095 +;4094: // reset server status request for this address +;4095: UI_GetServerStatusInfo( uiInfo.pendingServerStatus.server[i].adrstr, NULL ); +CNSTI4 140 +ADDRLP4 0 +INDIRI4 +MULI4 +ADDRGP4 uiInfo+114148+4 +ADDP4 +ARGP4 +CNSTP4 0 +ARGP4 +ADDRGP4 UI_GetServerStatusInfo +CALLI4 +pop +line 4097 +;4096: // reuse pending slot +;4097: uiInfo.pendingServerStatus.server[i].valid = qfalse; +CNSTI4 140 +ADDRLP4 0 +INDIRI4 +MULI4 +ADDRGP4 uiInfo+114148+4+136 +ADDP4 +CNSTI4 0 +ASGNI4 +line 4099 +;4098: // if we didn't try to get the status of all servers in the main browser yet +;4099: if (uiInfo.pendingServerStatus.num < uiInfo.serverStatus.numDisplayServers) { +ADDRGP4 uiInfo+114148 +INDIRI4 +ADDRGP4 uiInfo+99264+10412 +INDIRI4 +GEI4 $3303 +line 4100 +;4100: uiInfo.pendingServerStatus.server[i].startTime = uiInfo.uiDC.realTime; +CNSTI4 140 +ADDRLP4 0 +INDIRI4 +MULI4 +ADDRGP4 uiInfo+114148+4+128 +ADDP4 +ADDRGP4 uiInfo+208 +INDIRI4 +ASGNI4 +line 4101 +;4101: trap_LAN_GetServerAddressString(ui_netSource.integer, uiInfo.serverStatus.displayServers[uiInfo.pendingServerStatus.num], +ADDRGP4 ui_netSource+12 +INDIRI4 +ARGI4 +ADDRGP4 uiInfo+114148 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 uiInfo+99264+2220 +ADDP4 +INDIRI4 +ARGI4 +CNSTI4 140 +ADDRLP4 0 +INDIRI4 +MULI4 +ADDRGP4 uiInfo+114148+4 +ADDP4 +ARGP4 +CNSTI4 64 +ARGI4 +ADDRGP4 trap_LAN_GetServerAddressString +CALLV +pop +line 4103 +;4102: uiInfo.pendingServerStatus.server[i].adrstr, sizeof(uiInfo.pendingServerStatus.server[i].adrstr)); +;4103: trap_LAN_GetServerInfo(ui_netSource.integer, uiInfo.serverStatus.displayServers[uiInfo.pendingServerStatus.num], infoString, sizeof(infoString)); +ADDRGP4 ui_netSource+12 +INDIRI4 +ARGI4 +ADDRGP4 uiInfo+114148 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 uiInfo+99264+2220 +ADDP4 +INDIRI4 +ARGI4 +ADDRLP4 3374 +ARGP4 +CNSTI4 1024 +ARGI4 +ADDRGP4 trap_LAN_GetServerInfo +CALLV +pop +line 4104 +;4104: Q_strncpyz(uiInfo.pendingServerStatus.server[i].name, Info_ValueForKey(infoString, "hostname"), sizeof(uiInfo.pendingServerStatus.server[0].name)); +ADDRLP4 3374 +ARGP4 +ADDRGP4 $2725 +ARGP4 +ADDRLP4 4408 +ADDRGP4 Info_ValueForKey +CALLP4 +ASGNP4 +CNSTI4 140 +ADDRLP4 0 +INDIRI4 +MULI4 +ADDRGP4 uiInfo+114148+4+64 +ADDP4 +ARGP4 +ADDRLP4 4408 +INDIRP4 +ARGP4 +CNSTI4 64 +ARGI4 +ADDRGP4 Q_strncpyz +CALLV +pop +line 4105 +;4105: uiInfo.pendingServerStatus.server[i].valid = qtrue; +CNSTI4 140 +ADDRLP4 0 +INDIRI4 +MULI4 +ADDRGP4 uiInfo+114148+4+136 +ADDP4 +CNSTI4 1 +ASGNI4 +line 4106 +;4106: uiInfo.pendingServerStatus.num++; +ADDRLP4 4412 +ADDRGP4 uiInfo+114148 +ASGNP4 +ADDRLP4 4412 +INDIRP4 +ADDRLP4 4412 +INDIRP4 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 4107 +;4107: Com_sprintf(uiInfo.foundPlayerServerNames[uiInfo.numFoundPlayerServers-1], +ADDRGP4 uiInfo+119468 +INDIRI4 +CNSTI4 6 +LSHI4 +ADDRGP4 uiInfo+118440-64 +ADDP4 +ARGP4 +CNSTI4 64 +ARGI4 +ADDRGP4 $3277 +ARGP4 +ADDRGP4 uiInfo+114148 +INDIRI4 +ARGI4 +ADDRGP4 $3186 +INDIRI4 +ARGI4 +ADDRGP4 Com_sprintf +CALLV +pop +line 4110 +;4108: sizeof(uiInfo.foundPlayerServerNames[uiInfo.numFoundPlayerServers-1]), +;4109: "searching %d/%d...", uiInfo.pendingServerStatus.num, numFound); +;4110: } +LABELV $3303 +line 4111 +;4111: } +LABELV $3282 +line 4112 +;4112: } +LABELV $3222 +line 4046 +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +ADDRLP4 0 +INDIRI4 +CNSTI4 16 +LTI4 $3221 +line 4113 +;4113: for (i = 0; i < MAX_SERVERSTATUSREQUESTS; i++) { +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +LABELV $3341 +line 4114 +;4114: if (uiInfo.pendingServerStatus.server[i].valid) { +CNSTI4 140 +ADDRLP4 0 +INDIRI4 +MULI4 +ADDRGP4 uiInfo+114148+4+136 +ADDP4 +INDIRI4 +CNSTI4 0 +EQI4 $3345 +line 4115 +;4115: break; +ADDRGP4 $3343 +JUMPV +LABELV $3345 +line 4117 +;4116: } +;4117: } +LABELV $3342 +line 4113 +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +ADDRLP4 0 +INDIRI4 +CNSTI4 16 +LTI4 $3341 +LABELV $3343 +line 4119 +;4118: // if still trying to retrieve server status info +;4119: if (i < MAX_SERVERSTATUSREQUESTS) { +ADDRLP4 0 +INDIRI4 +CNSTI4 16 +GEI4 $3350 +line 4120 +;4120: uiInfo.nextFindPlayerRefresh = uiInfo.uiDC.realTime + 25; +ADDRGP4 uiInfo+119472 +ADDRGP4 uiInfo+208 +INDIRI4 +CNSTI4 25 +ADDI4 +ASGNI4 +line 4121 +;4121: } +ADDRGP4 $3351 +JUMPV +LABELV $3350 +line 4122 +;4122: else { +line 4124 +;4123: // add a line that shows the number of servers found +;4124: if (!uiInfo.numFoundPlayerServers) { +ADDRGP4 uiInfo+119468 +INDIRI4 +CNSTI4 0 +NEI4 $3354 +line 4125 +;4125: Com_sprintf(uiInfo.foundPlayerServerNames[uiInfo.numFoundPlayerServers-1], sizeof(uiInfo.foundPlayerServerAddresses[0]), "no servers found"); +ADDRGP4 uiInfo+119468 +INDIRI4 +CNSTI4 6 +LSHI4 +ADDRGP4 uiInfo+118440-64 +ADDP4 +ARGP4 +CNSTI4 64 +ARGI4 +ADDRGP4 $3361 +ARGP4 +ADDRGP4 Com_sprintf +CALLV +pop +line 4126 +;4126: } +ADDRGP4 $3355 +JUMPV +LABELV $3354 +line 4127 +;4127: else { +line 4128 +;4128: Com_sprintf(uiInfo.foundPlayerServerNames[uiInfo.numFoundPlayerServers-1], sizeof(uiInfo.foundPlayerServerAddresses[0]), +ADDRGP4 uiInfo+119468 +INDIRI4 +CNSTI4 6 +LSHI4 +ADDRGP4 uiInfo+118440-64 +ADDP4 +ARGP4 +CNSTI4 64 +ARGI4 +ADDRGP4 $3366 +ARGP4 +ADDRGP4 uiInfo+119468 +INDIRI4 +CNSTI4 1 +SUBI4 +ARGI4 +ADDRGP4 uiInfo+119468 +INDIRI4 +CNSTI4 2 +NEI4 $3372 +ADDRLP4 4404 +ADDRGP4 $112 +ASGNP4 +ADDRGP4 $3373 +JUMPV +LABELV $3372 +ADDRLP4 4404 +ADDRGP4 $3369 +ASGNP4 +LABELV $3373 +ADDRLP4 4404 +INDIRP4 +ARGP4 +ADDRGP4 uiInfo+116392 +ARGP4 +ADDRGP4 Com_sprintf +CALLV +pop +line 4131 +;4129: "%d server%s found with player %s", uiInfo.numFoundPlayerServers-1, +;4130: uiInfo.numFoundPlayerServers == 2 ? "":"s", uiInfo.findPlayerName); +;4131: } +LABELV $3355 +line 4132 +;4132: uiInfo.nextFindPlayerRefresh = 0; +ADDRGP4 uiInfo+119472 +CNSTI4 0 +ASGNI4 +line 4134 +;4133: // show the server status info for the selected server +;4134: UI_FeederSelection(FEEDER_FINDPLAYER, uiInfo.currentFoundPlayerServer); +CNSTF4 1096810496 +ARGF4 +ADDRGP4 uiInfo+119464 +INDIRI4 +ARGI4 +ADDRGP4 UI_FeederSelection +CALLV +pop +line 4135 +;4135: } +LABELV $3351 +line 4136 +;4136:} +LABELV $3185 +endproc UI_BuildFindPlayerList 4424 24 +proc UI_BuildServerStatus 8 16 +line 4143 +;4137: +;4138:/* +;4139:================== +;4140:UI_BuildServerStatus +;4141:================== +;4142:*/ +;4143:static void UI_BuildServerStatus(qboolean force) { +line 4145 +;4144: +;4145: if (uiInfo.nextFindPlayerRefresh) { +ADDRGP4 uiInfo+119472 +INDIRI4 +CNSTI4 0 +EQI4 $3377 +line 4146 +;4146: return; +ADDRGP4 $3376 +JUMPV +LABELV $3377 +line 4148 +;4147: } +;4148: if (!force) { +ADDRFP4 0 +INDIRI4 +CNSTI4 0 +NEI4 $3380 +line 4149 +;4149: if (!uiInfo.nextServerStatusRefresh || uiInfo.nextServerStatusRefresh > uiInfo.uiDC.realTime) { +ADDRGP4 uiInfo+114144 +INDIRI4 +CNSTI4 0 +EQI4 $3387 +ADDRGP4 uiInfo+114144 +INDIRI4 +ADDRGP4 uiInfo+208 +INDIRI4 +LEI4 $3381 +LABELV $3387 +line 4150 +;4150: return; +ADDRGP4 $3376 +JUMPV +line 4152 +;4151: } +;4152: } +LABELV $3380 +line 4153 +;4153: else { +line 4154 +;4154: Menu_SetFeederSelection(NULL, FEEDER_SERVERSTATUS, 0, NULL); +CNSTP4 0 +ARGP4 +CNSTI4 13 +ARGI4 +CNSTI4 0 +ARGI4 +CNSTP4 0 +ARGP4 +ADDRGP4 Menu_SetFeederSelection +CALLV +pop +line 4155 +;4155: uiInfo.serverStatusInfo.numLines = 0; +ADDRGP4 uiInfo+110812+3328 +CNSTI4 0 +ASGNI4 +line 4157 +;4156: // reset all server status requests +;4157: trap_LAN_ServerStatus( NULL, NULL, 0); +CNSTP4 0 +ARGP4 +CNSTP4 0 +ARGP4 +CNSTI4 0 +ARGI4 +ADDRGP4 trap_LAN_ServerStatus +CALLI4 +pop +line 4158 +;4158: } +LABELV $3381 +line 4159 +;4159: if (uiInfo.serverStatus.currentServer < 0 || uiInfo.serverStatus.currentServer > uiInfo.serverStatus.numDisplayServers || uiInfo.serverStatus.numDisplayServers == 0) { +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +ADDRGP4 uiInfo+99264+2216 +INDIRI4 +ADDRLP4 0 +INDIRI4 +LTI4 $3401 +ADDRGP4 uiInfo+99264+2216 +INDIRI4 +ADDRGP4 uiInfo+99264+10412 +INDIRI4 +GTI4 $3401 +ADDRGP4 uiInfo+99264+10412 +INDIRI4 +ADDRLP4 0 +INDIRI4 +NEI4 $3390 +LABELV $3401 +line 4160 +;4160: return; +ADDRGP4 $3376 +JUMPV +LABELV $3390 +line 4162 +;4161: } +;4162: if (UI_GetServerStatusInfo( uiInfo.serverStatusAddress, &uiInfo.serverStatusInfo ) ) { +ADDRGP4 uiInfo+110748 +ARGP4 +ADDRGP4 uiInfo+110812 +ARGP4 +ADDRLP4 4 +ADDRGP4 UI_GetServerStatusInfo +CALLI4 +ASGNI4 +ADDRLP4 4 +INDIRI4 +CNSTI4 0 +EQI4 $3402 +line 4163 +;4163: uiInfo.nextServerStatusRefresh = 0; +ADDRGP4 uiInfo+114144 +CNSTI4 0 +ASGNI4 +line 4164 +;4164: UI_GetServerStatusInfo( uiInfo.serverStatusAddress, NULL ); +ADDRGP4 uiInfo+110748 +ARGP4 +CNSTP4 0 +ARGP4 +ADDRGP4 UI_GetServerStatusInfo +CALLI4 +pop +line 4165 +;4165: } +ADDRGP4 $3403 +JUMPV +LABELV $3402 +line 4166 +;4166: else { +line 4167 +;4167: uiInfo.nextServerStatusRefresh = uiInfo.uiDC.realTime + 500; +ADDRGP4 uiInfo+114144 +ADDRGP4 uiInfo+208 +INDIRI4 +CNSTI4 500 +ADDI4 +ASGNI4 +line 4168 +;4168: } +LABELV $3403 +line 4169 +;4169:} +LABELV $3376 +endproc UI_BuildServerStatus 8 16 +proc UI_FeederCount 12 4 +line 4176 +;4170: +;4171:/* +;4172:================== +;4173:UI_FeederCount +;4174:================== +;4175:*/ +;4176:static int UI_FeederCount(float feederID) { +line 4177 +;4177: if (feederID == FEEDER_HEADS) { +ADDRFP4 0 +INDIRF4 +CNSTF4 0 +NEF4 $3411 +line 4178 +;4178: return UI_HeadCountByTeam(); +ADDRLP4 0 +ADDRGP4 UI_HeadCountByTeam +CALLI4 +ASGNI4 +ADDRLP4 0 +INDIRI4 +RETI4 +ADDRGP4 $3410 +JUMPV +LABELV $3411 +line 4179 +;4179: } else if (feederID == FEEDER_Q3HEADS) { +ADDRFP4 0 +INDIRF4 +CNSTF4 1094713344 +NEF4 $3413 +line 4180 +;4180: return uiInfo.q3HeadCount; +ADDRGP4 uiInfo+119488 +INDIRI4 +RETI4 +ADDRGP4 $3410 +JUMPV +LABELV $3413 +line 4181 +;4181: } else if (feederID == FEEDER_CINEMATICS) { +ADDRFP4 0 +INDIRF4 +CNSTF4 1097859072 +NEF4 $3416 +line 4182 +;4182: return uiInfo.movieCount; +ADDRGP4 uiInfo+99252 +INDIRI4 +RETI4 +ADDRGP4 $3410 +JUMPV +LABELV $3416 +line 4183 +;4183: } else if (feederID == FEEDER_MAPS || feederID == FEEDER_ALLMAPS) { +ADDRLP4 0 +ADDRFP4 0 +INDIRF4 +ASGNF4 +ADDRLP4 0 +INDIRF4 +CNSTF4 1065353216 +EQF4 $3421 +ADDRLP4 0 +INDIRF4 +CNSTF4 1082130432 +NEF4 $3419 +LABELV $3421 +line 4184 +;4184: return UI_MapCountByGameType(feederID == FEEDER_MAPS ? qtrue : qfalse); +ADDRFP4 0 +INDIRF4 +CNSTF4 1065353216 +NEF4 $3423 +ADDRLP4 4 +CNSTI4 1 +ASGNI4 +ADDRGP4 $3424 +JUMPV +LABELV $3423 +ADDRLP4 4 +CNSTI4 0 +ASGNI4 +LABELV $3424 +ADDRLP4 4 +INDIRI4 +ARGI4 +ADDRLP4 8 +ADDRGP4 UI_MapCountByGameType +CALLI4 +ASGNI4 +ADDRLP4 8 +INDIRI4 +RETI4 +ADDRGP4 $3410 +JUMPV +LABELV $3419 +line 4185 +;4185: } else if (feederID == FEEDER_SERVERS) { +ADDRFP4 0 +INDIRF4 +CNSTF4 1073741824 +NEF4 $3425 +line 4186 +;4186: return uiInfo.serverStatus.numDisplayServers; +ADDRGP4 uiInfo+99264+10412 +INDIRI4 +RETI4 +ADDRGP4 $3410 +JUMPV +LABELV $3425 +line 4187 +;4187: } else if (feederID == FEEDER_SERVERSTATUS) { +ADDRFP4 0 +INDIRF4 +CNSTF4 1095761920 +NEF4 $3429 +line 4188 +;4188: return uiInfo.serverStatusInfo.numLines; +ADDRGP4 uiInfo+110812+3328 +INDIRI4 +RETI4 +ADDRGP4 $3410 +JUMPV +LABELV $3429 +line 4189 +;4189: } else if (feederID == FEEDER_FINDPLAYER) { +ADDRFP4 0 +INDIRF4 +CNSTF4 1096810496 +NEF4 $3433 +line 4190 +;4190: return uiInfo.numFoundPlayerServers; +ADDRGP4 uiInfo+119468 +INDIRI4 +RETI4 +ADDRGP4 $3410 +JUMPV +LABELV $3433 +line 4191 +;4191: } else if (feederID == FEEDER_PLAYER_LIST) { +ADDRFP4 0 +INDIRF4 +CNSTF4 1088421888 +NEF4 $3436 +line 4192 +;4192: if (uiInfo.uiDC.realTime > uiInfo.playerRefresh) { +ADDRGP4 uiInfo+208 +INDIRI4 +ADDRGP4 uiInfo+78856 +INDIRI4 +LEI4 $3438 +line 4193 +;4193: uiInfo.playerRefresh = uiInfo.uiDC.realTime + 3000; +ADDRGP4 uiInfo+78856 +ADDRGP4 uiInfo+208 +INDIRI4 +CNSTI4 3000 +ADDI4 +ASGNI4 +line 4194 +;4194: UI_BuildPlayerList(); +ADDRGP4 UI_BuildPlayerList +CALLV +pop +line 4195 +;4195: } +LABELV $3438 +line 4196 +;4196: return uiInfo.playerCount; +ADDRGP4 uiInfo+78844 +INDIRI4 +RETI4 +ADDRGP4 $3410 +JUMPV +LABELV $3436 +line 4197 +;4197: } else if (feederID == FEEDER_TEAM_LIST) { +ADDRFP4 0 +INDIRF4 +CNSTF4 1090519040 +NEF4 $3445 +line 4198 +;4198: if (uiInfo.uiDC.realTime > uiInfo.playerRefresh) { +ADDRGP4 uiInfo+208 +INDIRI4 +ADDRGP4 uiInfo+78856 +INDIRI4 +LEI4 $3447 +line 4199 +;4199: uiInfo.playerRefresh = uiInfo.uiDC.realTime + 3000; +ADDRGP4 uiInfo+78856 +ADDRGP4 uiInfo+208 +INDIRI4 +CNSTI4 3000 +ADDI4 +ASGNI4 +line 4200 +;4200: UI_BuildPlayerList(); +ADDRGP4 UI_BuildPlayerList +CALLV +pop +line 4201 +;4201: } +LABELV $3447 +line 4202 +;4202: return uiInfo.myTeamCount; +ADDRGP4 uiInfo+78848 +INDIRI4 +RETI4 +ADDRGP4 $3410 +JUMPV +LABELV $3445 +line 4203 +;4203: } else if (feederID == FEEDER_MODS) { +ADDRFP4 0 +INDIRF4 +CNSTF4 1091567616 +NEF4 $3454 +line 4204 +;4204: return uiInfo.modCount; +ADDRGP4 uiInfo+97188 +INDIRI4 +RETI4 +ADDRGP4 $3410 +JUMPV +LABELV $3454 +line 4205 +;4205: } else if (feederID == FEEDER_DEMOS) { +ADDRFP4 0 +INDIRF4 +CNSTF4 1092616192 +NEF4 $3457 +line 4206 +;4206: return uiInfo.demoCount; +ADDRGP4 uiInfo+98220 +INDIRI4 +RETI4 +ADDRGP4 $3410 +JUMPV +LABELV $3457 +line 4208 +;4207: } +;4208: return 0; +CNSTI4 0 +RETI4 +LABELV $3410 +endproc UI_FeederCount 12 4 +proc UI_SelectedMap 8 0 +line 4211 +;4209:} +;4210: +;4211:static const char *UI_SelectedMap(int index, int *actual) { +line 4213 +;4212: int i, c; +;4213: c = 0; +ADDRLP4 4 +CNSTI4 0 +ASGNI4 +line 4214 +;4214: *actual = 0; +ADDRFP4 4 +INDIRP4 +CNSTI4 0 +ASGNI4 +line 4215 +;4215: for (i = 0; i < uiInfo.mapCount; i++) { +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +ADDRGP4 $3464 +JUMPV +LABELV $3461 +line 4216 +;4216: if (uiInfo.mapList[i].active) { +CNSTI4 100 +ADDRLP4 0 +INDIRI4 +MULI4 +ADDRGP4 uiInfo+83228+96 +ADDP4 +INDIRI4 +CNSTI4 0 +EQI4 $3466 +line 4217 +;4217: if (c == index) { +ADDRLP4 4 +INDIRI4 +ADDRFP4 0 +INDIRI4 +NEI4 $3470 +line 4218 +;4218: *actual = i; +ADDRFP4 4 +INDIRP4 +ADDRLP4 0 +INDIRI4 +ASGNI4 +line 4219 +;4219: return uiInfo.mapList[i].mapName; +CNSTI4 100 +ADDRLP4 0 +INDIRI4 +MULI4 +ADDRGP4 uiInfo+83228 +ADDP4 +INDIRP4 +RETP4 +ADDRGP4 $3460 +JUMPV +LABELV $3470 +line 4220 +;4220: } else { +line 4221 +;4221: c++; +ADDRLP4 4 +ADDRLP4 4 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 4222 +;4222: } +line 4223 +;4223: } +LABELV $3466 +line 4224 +;4224: } +LABELV $3462 +line 4215 +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +LABELV $3464 +ADDRLP4 0 +INDIRI4 +ADDRGP4 uiInfo+83224 +INDIRI4 +LTI4 $3461 +line 4225 +;4225: return ""; +ADDRGP4 $112 +RETP4 +LABELV $3460 +endproc UI_SelectedMap 8 0 +proc UI_SelectedHead 8 0 +line 4228 +;4226:} +;4227: +;4228:static const char *UI_SelectedHead(int index, int *actual) { +line 4230 +;4229: int i, c; +;4230: c = 0; +ADDRLP4 4 +CNSTI4 0 +ASGNI4 +line 4231 +;4231: *actual = 0; +ADDRFP4 4 +INDIRP4 +CNSTI4 0 +ASGNI4 +line 4232 +;4232: for (i = 0; i < uiInfo.characterCount; i++) { +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +ADDRGP4 $3477 +JUMPV +LABELV $3474 +line 4233 +;4233: if (uiInfo.characterList[i].active) { +CNSTI4 24 +ADDRLP4 0 +INDIRI4 +MULI4 +ADDRGP4 uiInfo+73448+16 +ADDP4 +INDIRI4 +CNSTI4 0 +EQI4 $3479 +line 4234 +;4234: if (c == index) { +ADDRLP4 4 +INDIRI4 +ADDRFP4 0 +INDIRI4 +NEI4 $3483 +line 4235 +;4235: *actual = i; +ADDRFP4 4 +INDIRP4 +ADDRLP4 0 +INDIRI4 +ASGNI4 +line 4236 +;4236: return uiInfo.characterList[i].name; +CNSTI4 24 +ADDRLP4 0 +INDIRI4 +MULI4 +ADDRGP4 uiInfo+73448 +ADDP4 +INDIRP4 +RETP4 +ADDRGP4 $3473 +JUMPV +LABELV $3483 +line 4237 +;4237: } else { +line 4238 +;4238: c++; +ADDRLP4 4 +ADDRLP4 4 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 4239 +;4239: } +line 4240 +;4240: } +LABELV $3479 +line 4241 +;4241: } +LABELV $3475 +line 4232 +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +LABELV $3477 +ADDRLP4 0 +INDIRI4 +ADDRGP4 uiInfo+73440 +INDIRI4 +LTI4 $3474 +line 4242 +;4242: return ""; +ADDRGP4 $112 +RETP4 +LABELV $3473 +endproc UI_SelectedHead 8 0 +proc UI_GetIndexFromSelection 8 0 +line 4245 +;4243:} +;4244: +;4245:static int UI_GetIndexFromSelection(int actual) { +line 4247 +;4246: int i, c; +;4247: c = 0; +ADDRLP4 4 +CNSTI4 0 +ASGNI4 +line 4248 +;4248: for (i = 0; i < uiInfo.mapCount; i++) { +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +ADDRGP4 $3490 +JUMPV +LABELV $3487 +line 4249 +;4249: if (uiInfo.mapList[i].active) { +CNSTI4 100 +ADDRLP4 0 +INDIRI4 +MULI4 +ADDRGP4 uiInfo+83228+96 +ADDP4 +INDIRI4 +CNSTI4 0 +EQI4 $3492 +line 4250 +;4250: if (i == actual) { +ADDRLP4 0 +INDIRI4 +ADDRFP4 0 +INDIRI4 +NEI4 $3496 +line 4251 +;4251: return c; +ADDRLP4 4 +INDIRI4 +RETI4 +ADDRGP4 $3486 +JUMPV +LABELV $3496 +line 4253 +;4252: } +;4253: c++; +ADDRLP4 4 +ADDRLP4 4 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 4254 +;4254: } +LABELV $3492 +line 4255 +;4255: } +LABELV $3488 +line 4248 +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +LABELV $3490 +ADDRLP4 0 +INDIRI4 +ADDRGP4 uiInfo+83224 +INDIRI4 +LTI4 $3487 +line 4256 +;4256: return 0; +CNSTI4 0 +RETI4 +LABELV $3486 +endproc UI_GetIndexFromSelection 8 0 +proc UI_UpdatePendingPings 0 4 +line 4259 +;4257:} +;4258: +;4259:static void UI_UpdatePendingPings() { +line 4260 +;4260: trap_LAN_ResetPings(ui_netSource.integer); +ADDRGP4 ui_netSource+12 +INDIRI4 +ARGI4 +ADDRGP4 trap_LAN_ResetPings +CALLV +pop +line 4261 +;4261: uiInfo.serverStatus.refreshActive = qtrue; +ADDRGP4 uiInfo+99264+2212 +CNSTI4 1 +ASGNI4 +line 4262 +;4262: uiInfo.serverStatus.refreshtime = uiInfo.uiDC.realTime + 1000; +ADDRGP4 uiInfo+99264+2192 +ADDRGP4 uiInfo+208 +INDIRI4 +CNSTI4 1000 +ADDI4 +ASGNI4 +line 4264 +;4263: +;4264:} +LABELV $3498 +endproc UI_UpdatePendingPings 0 4 +bss +align 1 +LABELV $3506 +skip 1024 +align 1 +LABELV $3507 +skip 1024 +align 1 +LABELV $3508 +skip 32 +data +align 4 +LABELV $3509 +byte 4 -1 +align 4 +LABELV $3510 +byte 4 0 +code +proc UI_FeederItemText 56 20 +line 4266 +;4265: +;4266:static const char *UI_FeederItemText(float feederID, int index, int column, qhandle_t *handle) { +line 4272 +;4267: static char info[MAX_STRING_CHARS]; +;4268: static char hostname[1024]; +;4269: static char clientBuff[32]; +;4270: static int lastColumn = -1; +;4271: static int lastTime = 0; +;4272: *handle = -1; +ADDRFP4 12 +INDIRP4 +CNSTI4 -1 +ASGNI4 +line 4273 +;4273: if (feederID == FEEDER_HEADS) { +ADDRFP4 0 +INDIRF4 +CNSTF4 0 +NEF4 $3511 +line 4275 +;4274: int actual; +;4275: return UI_SelectedHead(index, &actual); +ADDRFP4 4 +INDIRI4 +ARGI4 +ADDRLP4 0 +ARGP4 +ADDRLP4 4 +ADDRGP4 UI_SelectedHead +CALLP4 +ASGNP4 +ADDRLP4 4 +INDIRP4 +RETP4 +ADDRGP4 $3505 +JUMPV +LABELV $3511 +line 4276 +;4276: } else if (feederID == FEEDER_Q3HEADS) { +ADDRFP4 0 +INDIRF4 +CNSTF4 1094713344 +NEF4 $3513 +line 4277 +;4277: if (index >= 0 && index < uiInfo.q3HeadCount) { +ADDRLP4 0 +ADDRFP4 4 +INDIRI4 +ASGNI4 +ADDRLP4 0 +INDIRI4 +CNSTI4 0 +LTI4 $3514 +ADDRLP4 0 +INDIRI4 +ADDRGP4 uiInfo+119488 +INDIRI4 +GEI4 $3514 +line 4278 +;4278: return uiInfo.q3HeadNames[index]; +ADDRFP4 4 +INDIRI4 +CNSTI4 6 +LSHI4 +ADDRGP4 uiInfo+119492 +ADDP4 +RETP4 +ADDRGP4 $3505 +JUMPV +line 4280 +;4279: } +;4280: } else if (feederID == FEEDER_MAPS || feederID == FEEDER_ALLMAPS) { +LABELV $3513 +ADDRLP4 0 +ADDRFP4 0 +INDIRF4 +ASGNF4 +ADDRLP4 0 +INDIRF4 +CNSTF4 1065353216 +EQF4 $3521 +ADDRLP4 0 +INDIRF4 +CNSTF4 1082130432 +NEF4 $3519 +LABELV $3521 +line 4282 +;4281: int actual; +;4282: return UI_SelectedMap(index, &actual); +ADDRFP4 4 +INDIRI4 +ARGI4 +ADDRLP4 4 +ARGP4 +ADDRLP4 8 +ADDRGP4 UI_SelectedMap +CALLP4 +ASGNP4 +ADDRLP4 8 +INDIRP4 +RETP4 +ADDRGP4 $3505 +JUMPV +LABELV $3519 +line 4283 +;4283: } else if (feederID == FEEDER_SERVERS) { +ADDRFP4 0 +INDIRF4 +CNSTF4 1073741824 +NEF4 $3522 +line 4284 +;4284: if (index >= 0 && index < uiInfo.serverStatus.numDisplayServers) { +ADDRLP4 4 +ADDRFP4 4 +INDIRI4 +ASGNI4 +ADDRLP4 4 +INDIRI4 +CNSTI4 0 +LTI4 $3523 +ADDRLP4 4 +INDIRI4 +ADDRGP4 uiInfo+99264+10412 +INDIRI4 +GEI4 $3523 +line 4286 +;4285: int ping, game; +;4286: if (lastColumn != column || lastTime > uiInfo.uiDC.realTime + 5000) { +ADDRGP4 $3509 +INDIRI4 +ADDRFP4 8 +INDIRI4 +NEI4 $3531 +ADDRGP4 $3510 +INDIRI4 +ADDRGP4 uiInfo+208 +INDIRI4 +CNSTI4 5000 +ADDI4 +LEI4 $3528 +LABELV $3531 +line 4287 +;4287: trap_LAN_GetServerInfo(ui_netSource.integer, uiInfo.serverStatus.displayServers[index], info, MAX_STRING_CHARS); +ADDRGP4 ui_netSource+12 +INDIRI4 +ARGI4 +ADDRFP4 4 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 uiInfo+99264+2220 +ADDP4 +INDIRI4 +ARGI4 +ADDRGP4 $3506 +ARGP4 +CNSTI4 1024 +ARGI4 +ADDRGP4 trap_LAN_GetServerInfo +CALLV +pop +line 4288 +;4288: lastColumn = column; +ADDRGP4 $3509 +ADDRFP4 8 +INDIRI4 +ASGNI4 +line 4289 +;4289: lastTime = uiInfo.uiDC.realTime; +ADDRGP4 $3510 +ADDRGP4 uiInfo+208 +INDIRI4 +ASGNI4 +line 4290 +;4290: } +LABELV $3528 +line 4291 +;4291: ping = atoi(Info_ValueForKey(info, "ping")); +ADDRGP4 $3506 +ARGP4 +ADDRGP4 $3155 +ARGP4 +ADDRLP4 16 +ADDRGP4 Info_ValueForKey +CALLP4 +ASGNP4 +ADDRLP4 16 +INDIRP4 +ARGP4 +ADDRLP4 20 +ADDRGP4 atoi +CALLI4 +ASGNI4 +ADDRLP4 8 +ADDRLP4 20 +INDIRI4 +ASGNI4 +line 4292 +;4292: if (ping == -1) { +ADDRLP4 8 +INDIRI4 +CNSTI4 -1 +NEI4 $3536 +line 4295 +;4293: // if we ever see a ping that is out of date, do a server refresh +;4294: // UI_UpdatePendingPings(); +;4295: } +LABELV $3536 +line 4296 +;4296: switch (column) { +ADDRLP4 24 +ADDRFP4 8 +INDIRI4 +ASGNI4 +ADDRLP4 24 +INDIRI4 +CNSTI4 0 +LTI4 $3523 +ADDRLP4 24 +INDIRI4 +CNSTI4 4 +GTI4 $3523 +ADDRLP4 24 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 $3564 +ADDP4 +INDIRP4 +JUMPV +lit +align 4 +LABELV $3564 +address $3540 +address $3553 +address $3554 +address $3556 +address $3560 +code +LABELV $3540 +line 4298 +;4297: case SORT_HOST : +;4298: if (ping <= 0) { +ADDRLP4 8 +INDIRI4 +CNSTI4 0 +GTI4 $3541 +line 4299 +;4299: return Info_ValueForKey(info, "addr"); +ADDRGP4 $3506 +ARGP4 +ADDRGP4 $2726 +ARGP4 +ADDRLP4 28 +ADDRGP4 Info_ValueForKey +CALLP4 +ASGNP4 +ADDRLP4 28 +INDIRP4 +RETP4 +ADDRGP4 $3505 +JUMPV +LABELV $3541 +line 4300 +;4300: } else { +line 4301 +;4301: if ( ui_netSource.integer == AS_LOCAL ) { +ADDRGP4 ui_netSource+12 +INDIRI4 +CNSTI4 0 +NEI4 $3543 +line 4302 +;4302: Com_sprintf( hostname, sizeof(hostname), "%s [%s]", +ADDRGP4 $3506 +ARGP4 +ADDRGP4 $2725 +ARGP4 +ADDRLP4 28 +ADDRGP4 Info_ValueForKey +CALLP4 +ASGNP4 +ADDRGP4 $3506 +ARGP4 +ADDRGP4 $3547 +ARGP4 +ADDRLP4 32 +ADDRGP4 Info_ValueForKey +CALLP4 +ASGNP4 +ADDRLP4 32 +INDIRP4 +ARGP4 +ADDRLP4 36 +ADDRGP4 atoi +CALLI4 +ASGNI4 +ADDRGP4 $3507 +ARGP4 +CNSTI4 1024 +ARGI4 +ADDRGP4 $3546 +ARGP4 +ADDRLP4 28 +INDIRP4 +ARGP4 +ADDRLP4 36 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 netnames +ADDP4 +INDIRP4 +ARGP4 +ADDRGP4 Com_sprintf +CALLV +pop +line 4305 +;4303: Info_ValueForKey(info, "hostname"), +;4304: netnames[atoi(Info_ValueForKey(info, "nettype"))] ); +;4305: return hostname; +ADDRGP4 $3507 +RETP4 +ADDRGP4 $3505 +JUMPV +LABELV $3543 +line 4307 +;4306: } +;4307: else { +line 4308 +;4308: if (atoi(Info_ValueForKey(info, "sv_allowAnonymous")) != 0) { // anonymous server +ADDRGP4 $3506 +ARGP4 +ADDRGP4 $3550 +ARGP4 +ADDRLP4 28 +ADDRGP4 Info_ValueForKey +CALLP4 +ASGNP4 +ADDRLP4 28 +INDIRP4 +ARGP4 +ADDRLP4 32 +ADDRGP4 atoi +CALLI4 +ASGNI4 +ADDRLP4 32 +INDIRI4 +CNSTI4 0 +EQI4 $3548 +line 4309 +;4309: Com_sprintf( hostname, sizeof(hostname), "(A) %s", +ADDRGP4 $3506 +ARGP4 +ADDRGP4 $2725 +ARGP4 +ADDRLP4 36 +ADDRGP4 Info_ValueForKey +CALLP4 +ASGNP4 +ADDRGP4 $3507 +ARGP4 +CNSTI4 1024 +ARGI4 +ADDRGP4 $3551 +ARGP4 +ADDRLP4 36 +INDIRP4 +ARGP4 +ADDRGP4 Com_sprintf +CALLV +pop +line 4311 +;4310: Info_ValueForKey(info, "hostname")); +;4311: } else { +ADDRGP4 $3549 +JUMPV +LABELV $3548 +line 4312 +;4312: Com_sprintf( hostname, sizeof(hostname), "%s", +ADDRGP4 $3506 +ARGP4 +ADDRGP4 $2725 +ARGP4 +ADDRLP4 36 +ADDRGP4 Info_ValueForKey +CALLP4 +ASGNP4 +ADDRGP4 $3507 +ARGP4 +CNSTI4 1024 +ARGI4 +ADDRGP4 $3552 +ARGP4 +ADDRLP4 36 +INDIRP4 +ARGP4 +ADDRGP4 Com_sprintf +CALLV +pop +line 4314 +;4313: Info_ValueForKey(info, "hostname")); +;4314: } +LABELV $3549 +line 4315 +;4315: return hostname; +ADDRGP4 $3507 +RETP4 +ADDRGP4 $3505 +JUMPV +LABELV $3553 +line 4318 +;4316: } +;4317: } +;4318: case SORT_MAP : return Info_ValueForKey(info, "mapname"); +ADDRGP4 $3506 +ARGP4 +ADDRGP4 $3112 +ARGP4 +ADDRLP4 28 +ADDRGP4 Info_ValueForKey +CALLP4 +ASGNP4 +ADDRLP4 28 +INDIRP4 +RETP4 +ADDRGP4 $3505 +JUMPV +LABELV $3554 +line 4320 +;4319: case SORT_CLIENTS : +;4320: Com_sprintf( clientBuff, sizeof(clientBuff), "%s (%s)", Info_ValueForKey(info, "clients"), Info_ValueForKey(info, "sv_maxclients")); +ADDRGP4 $3506 +ARGP4 +ADDRGP4 $3058 +ARGP4 +ADDRLP4 32 +ADDRGP4 Info_ValueForKey +CALLP4 +ASGNP4 +ADDRGP4 $3506 +ARGP4 +ADDRGP4 $1399 +ARGP4 +ADDRLP4 36 +ADDRGP4 Info_ValueForKey +CALLP4 +ASGNP4 +ADDRGP4 $3508 +ARGP4 +CNSTI4 32 +ARGI4 +ADDRGP4 $3555 +ARGP4 +ADDRLP4 32 +INDIRP4 +ARGP4 +ADDRLP4 36 +INDIRP4 +ARGP4 +ADDRGP4 Com_sprintf +CALLV +pop +line 4321 +;4321: return clientBuff; +ADDRGP4 $3508 +RETP4 +ADDRGP4 $3505 +JUMPV +LABELV $3556 +line 4323 +;4322: case SORT_GAME : +;4323: game = atoi(Info_ValueForKey(info, "gametype")); +ADDRGP4 $3506 +ARGP4 +ADDRGP4 $3078 +ARGP4 +ADDRLP4 40 +ADDRGP4 Info_ValueForKey +CALLP4 +ASGNP4 +ADDRLP4 40 +INDIRP4 +ARGP4 +ADDRLP4 44 +ADDRGP4 atoi +CALLI4 +ASGNI4 +ADDRLP4 12 +ADDRLP4 44 +INDIRI4 +ASGNI4 +line 4324 +;4324: if (game >= 0 && game < numTeamArenaGameTypes) { +ADDRLP4 48 +ADDRLP4 12 +INDIRI4 +ASGNI4 +ADDRLP4 48 +INDIRI4 +CNSTI4 0 +LTI4 $3557 +ADDRLP4 48 +INDIRI4 +ADDRGP4 numTeamArenaGameTypes +INDIRI4 +GEI4 $3557 +line 4325 +;4325: return teamArenaGameTypes[game]; +ADDRLP4 12 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 teamArenaGameTypes +ADDP4 +INDIRP4 +RETP4 +ADDRGP4 $3505 +JUMPV +LABELV $3557 +line 4326 +;4326: } else { +line 4327 +;4327: return "Unknown"; +ADDRGP4 $3559 +RETP4 +ADDRGP4 $3505 +JUMPV +LABELV $3560 +line 4330 +;4328: } +;4329: case SORT_PING : +;4330: if (ping <= 0) { +ADDRLP4 8 +INDIRI4 +CNSTI4 0 +GTI4 $3561 +line 4331 +;4331: return "..."; +ADDRGP4 $3563 +RETP4 +ADDRGP4 $3505 +JUMPV +LABELV $3561 +line 4332 +;4332: } else { +line 4333 +;4333: return Info_ValueForKey(info, "ping"); +ADDRGP4 $3506 +ARGP4 +ADDRGP4 $3155 +ARGP4 +ADDRLP4 52 +ADDRGP4 Info_ValueForKey +CALLP4 +ASGNP4 +ADDRLP4 52 +INDIRP4 +RETP4 +ADDRGP4 $3505 +JUMPV +line 4336 +;4334: } +;4335: } +;4336: } +line 4337 +;4337: } else if (feederID == FEEDER_SERVERSTATUS) { +LABELV $3522 +ADDRFP4 0 +INDIRF4 +CNSTF4 1095761920 +NEF4 $3565 +line 4338 +;4338: if ( index >= 0 && index < uiInfo.serverStatusInfo.numLines ) { +ADDRLP4 4 +ADDRFP4 4 +INDIRI4 +ASGNI4 +ADDRLP4 4 +INDIRI4 +CNSTI4 0 +LTI4 $3566 +ADDRLP4 4 +INDIRI4 +ADDRGP4 uiInfo+110812+3328 +INDIRI4 +GEI4 $3566 +line 4339 +;4339: if ( column >= 0 && column < 4 ) { +ADDRLP4 8 +ADDRFP4 8 +INDIRI4 +ASGNI4 +ADDRLP4 8 +INDIRI4 +CNSTI4 0 +LTI4 $3566 +ADDRLP4 8 +INDIRI4 +CNSTI4 4 +GEI4 $3566 +line 4340 +;4340: return uiInfo.serverStatusInfo.lines[index][column]; +ADDRFP4 8 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRFP4 4 +INDIRI4 +CNSTI4 4 +LSHI4 +ADDRGP4 uiInfo+110812+64 +ADDP4 +ADDP4 +INDIRP4 +RETP4 +ADDRGP4 $3505 +JUMPV +line 4342 +;4341: } +;4342: } +line 4343 +;4343: } else if (feederID == FEEDER_FINDPLAYER) { +LABELV $3565 +ADDRFP4 0 +INDIRF4 +CNSTF4 1096810496 +NEF4 $3575 +line 4344 +;4344: if ( index >= 0 && index < uiInfo.numFoundPlayerServers ) { +ADDRLP4 4 +ADDRFP4 4 +INDIRI4 +ASGNI4 +ADDRLP4 4 +INDIRI4 +CNSTI4 0 +LTI4 $3576 +ADDRLP4 4 +INDIRI4 +ADDRGP4 uiInfo+119468 +INDIRI4 +GEI4 $3576 +line 4346 +;4345: //return uiInfo.foundPlayerServerAddresses[index]; +;4346: return uiInfo.foundPlayerServerNames[index]; +ADDRFP4 4 +INDIRI4 +CNSTI4 6 +LSHI4 +ADDRGP4 uiInfo+118440 +ADDP4 +RETP4 +ADDRGP4 $3505 +JUMPV +line 4348 +;4347: } +;4348: } else if (feederID == FEEDER_PLAYER_LIST) { +LABELV $3575 +ADDRFP4 0 +INDIRF4 +CNSTF4 1088421888 +NEF4 $3581 +line 4349 +;4349: if (index >= 0 && index < uiInfo.playerCount) { +ADDRLP4 4 +ADDRFP4 4 +INDIRI4 +ASGNI4 +ADDRLP4 4 +INDIRI4 +CNSTI4 0 +LTI4 $3582 +ADDRLP4 4 +INDIRI4 +ADDRGP4 uiInfo+78844 +INDIRI4 +GEI4 $3582 +line 4350 +;4350: return uiInfo.playerNames[index]; +ADDRFP4 4 +INDIRI4 +CNSTI4 5 +LSHI4 +ADDRGP4 uiInfo+78872 +ADDP4 +RETP4 +ADDRGP4 $3505 +JUMPV +line 4352 +;4351: } +;4352: } else if (feederID == FEEDER_TEAM_LIST) { +LABELV $3581 +ADDRFP4 0 +INDIRF4 +CNSTF4 1090519040 +NEF4 $3587 +line 4353 +;4353: if (index >= 0 && index < uiInfo.myTeamCount) { +ADDRLP4 4 +ADDRFP4 4 +INDIRI4 +ASGNI4 +ADDRLP4 4 +INDIRI4 +CNSTI4 0 +LTI4 $3588 +ADDRLP4 4 +INDIRI4 +ADDRGP4 uiInfo+78848 +INDIRI4 +GEI4 $3588 +line 4354 +;4354: return uiInfo.teamNames[index]; +ADDRFP4 4 +INDIRI4 +CNSTI4 5 +LSHI4 +ADDRGP4 uiInfo+80920 +ADDP4 +RETP4 +ADDRGP4 $3505 +JUMPV +line 4356 +;4355: } +;4356: } else if (feederID == FEEDER_MODS) { +LABELV $3587 +ADDRFP4 0 +INDIRF4 +CNSTF4 1091567616 +NEF4 $3593 +line 4357 +;4357: if (index >= 0 && index < uiInfo.modCount) { +ADDRLP4 4 +ADDRFP4 4 +INDIRI4 +ASGNI4 +ADDRLP4 4 +INDIRI4 +CNSTI4 0 +LTI4 $3594 +ADDRLP4 4 +INDIRI4 +ADDRGP4 uiInfo+97188 +INDIRI4 +GEI4 $3594 +line 4358 +;4358: if (uiInfo.modList[index].modDescr && *uiInfo.modList[index].modDescr) { +ADDRLP4 8 +ADDRFP4 4 +INDIRI4 +CNSTI4 3 +LSHI4 +ASGNI4 +ADDRLP4 8 +INDIRI4 +ADDRGP4 uiInfo+96676+4 +ADDP4 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $3598 +ADDRLP4 8 +INDIRI4 +ADDRGP4 uiInfo+96676+4 +ADDP4 +INDIRP4 +INDIRI1 +CVII4 1 +CNSTI4 0 +EQI4 $3598 +line 4359 +;4359: return uiInfo.modList[index].modDescr; +ADDRFP4 4 +INDIRI4 +CNSTI4 3 +LSHI4 +ADDRGP4 uiInfo+96676+4 +ADDP4 +INDIRP4 +RETP4 +ADDRGP4 $3505 +JUMPV +LABELV $3598 +line 4360 +;4360: } else { +line 4361 +;4361: return uiInfo.modList[index].modName; +ADDRFP4 4 +INDIRI4 +CNSTI4 3 +LSHI4 +ADDRGP4 uiInfo+96676 +ADDP4 +INDIRP4 +RETP4 +ADDRGP4 $3505 +JUMPV +line 4364 +;4362: } +;4363: } +;4364: } else if (feederID == FEEDER_CINEMATICS) { +LABELV $3593 +ADDRFP4 0 +INDIRF4 +CNSTF4 1097859072 +NEF4 $3607 +line 4365 +;4365: if (index >= 0 && index < uiInfo.movieCount) { +ADDRLP4 4 +ADDRFP4 4 +INDIRI4 +ASGNI4 +ADDRLP4 4 +INDIRI4 +CNSTI4 0 +LTI4 $3608 +ADDRLP4 4 +INDIRI4 +ADDRGP4 uiInfo+99252 +INDIRI4 +GEI4 $3608 +line 4366 +;4366: return uiInfo.movieList[index]; +ADDRFP4 4 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 uiInfo+98228 +ADDP4 +INDIRP4 +RETP4 +ADDRGP4 $3505 +JUMPV +line 4368 +;4367: } +;4368: } else if (feederID == FEEDER_DEMOS) { +LABELV $3607 +ADDRFP4 0 +INDIRF4 +CNSTF4 1092616192 +NEF4 $3613 +line 4369 +;4369: if (index >= 0 && index < uiInfo.demoCount) { +ADDRLP4 4 +ADDRFP4 4 +INDIRI4 +ASGNI4 +ADDRLP4 4 +INDIRI4 +CNSTI4 0 +LTI4 $3615 +ADDRLP4 4 +INDIRI4 +ADDRGP4 uiInfo+98220 +INDIRI4 +GEI4 $3615 +line 4370 +;4370: return uiInfo.demoList[index]; +ADDRFP4 4 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 uiInfo+97196 +ADDP4 +INDIRP4 +RETP4 +ADDRGP4 $3505 +JUMPV +LABELV $3615 +line 4372 +;4371: } +;4372: } +LABELV $3613 +LABELV $3608 +LABELV $3594 +LABELV $3588 +LABELV $3582 +LABELV $3576 +LABELV $3566 +LABELV $3523 +LABELV $3514 +line 4373 +;4373: return ""; +ADDRGP4 $112 +RETP4 +LABELV $3505 +endproc UI_FeederItemText 56 20 +proc UI_FeederItemImage 20 8 +line 4377 +;4374:} +;4375: +;4376: +;4377:static qhandle_t UI_FeederItemImage(float feederID, int index) { +line 4378 +;4378: if (feederID == FEEDER_HEADS) { +ADDRFP4 0 +INDIRF4 +CNSTF4 0 +NEF4 $3620 +line 4380 +;4379: int actual; +;4380: UI_SelectedHead(index, &actual); +ADDRFP4 4 +INDIRI4 +ARGI4 +ADDRLP4 0 +ARGP4 +ADDRGP4 UI_SelectedHead +CALLP4 +pop +line 4381 +;4381: index = actual; +ADDRFP4 4 +ADDRLP4 0 +INDIRI4 +ASGNI4 +line 4382 +;4382: if (index >= 0 && index < uiInfo.characterCount) { +ADDRLP4 4 +ADDRFP4 4 +INDIRI4 +ASGNI4 +ADDRLP4 4 +INDIRI4 +CNSTI4 0 +LTI4 $3621 +ADDRLP4 4 +INDIRI4 +ADDRGP4 uiInfo+73440 +INDIRI4 +GEI4 $3621 +line 4383 +;4383: if (uiInfo.characterList[index].headImage == -1) { +CNSTI4 24 +ADDRFP4 4 +INDIRI4 +MULI4 +ADDRGP4 uiInfo+73448+8 +ADDP4 +INDIRI4 +CNSTI4 -1 +NEI4 $3625 +line 4384 +;4384: uiInfo.characterList[index].headImage = trap_R_RegisterShaderNoMip(uiInfo.characterList[index].imageName); +ADDRLP4 8 +CNSTI4 24 +ADDRFP4 4 +INDIRI4 +MULI4 +ASGNI4 +ADDRLP4 8 +INDIRI4 +ADDRGP4 uiInfo+73448+4 +ADDP4 +INDIRP4 +ARGP4 +ADDRLP4 12 +ADDRGP4 trap_R_RegisterShaderNoMip +CALLI4 +ASGNI4 +ADDRLP4 8 +INDIRI4 +ADDRGP4 uiInfo+73448+8 +ADDP4 +ADDRLP4 12 +INDIRI4 +ASGNI4 +line 4385 +;4385: } +LABELV $3625 +line 4386 +;4386: return uiInfo.characterList[index].headImage; +CNSTI4 24 +ADDRFP4 4 +INDIRI4 +MULI4 +ADDRGP4 uiInfo+73448+8 +ADDP4 +INDIRI4 +RETI4 +ADDRGP4 $3619 +JUMPV +line 4388 +;4387: } +;4388: } else if (feederID == FEEDER_Q3HEADS) { +LABELV $3620 +ADDRFP4 0 +INDIRF4 +CNSTF4 1094713344 +NEF4 $3635 +line 4389 +;4389: if (index >= 0 && index < uiInfo.q3HeadCount) { +ADDRLP4 0 +ADDRFP4 4 +INDIRI4 +ASGNI4 +ADDRLP4 0 +INDIRI4 +CNSTI4 0 +LTI4 $3636 +ADDRLP4 0 +INDIRI4 +ADDRGP4 uiInfo+119488 +INDIRI4 +GEI4 $3636 +line 4390 +;4390: return uiInfo.q3HeadIcons[index]; +ADDRFP4 4 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 uiInfo+135876 +ADDP4 +INDIRI4 +RETI4 +ADDRGP4 $3619 +JUMPV +line 4392 +;4391: } +;4392: } else if (feederID == FEEDER_ALLMAPS || feederID == FEEDER_MAPS) { +LABELV $3635 +ADDRLP4 0 +ADDRFP4 0 +INDIRF4 +ASGNF4 +ADDRLP4 0 +INDIRF4 +CNSTF4 1082130432 +EQF4 $3643 +ADDRLP4 0 +INDIRF4 +CNSTF4 1065353216 +NEF4 $3641 +LABELV $3643 +line 4394 +;4393: int actual; +;4394: UI_SelectedMap(index, &actual); +ADDRFP4 4 +INDIRI4 +ARGI4 +ADDRLP4 4 +ARGP4 +ADDRGP4 UI_SelectedMap +CALLP4 +pop +line 4395 +;4395: index = actual; +ADDRFP4 4 +ADDRLP4 4 +INDIRI4 +ASGNI4 +line 4396 +;4396: if (index >= 0 && index < uiInfo.mapCount) { +ADDRLP4 8 +ADDRFP4 4 +INDIRI4 +ASGNI4 +ADDRLP4 8 +INDIRI4 +CNSTI4 0 +LTI4 $3644 +ADDRLP4 8 +INDIRI4 +ADDRGP4 uiInfo+83224 +INDIRI4 +GEI4 $3644 +line 4397 +;4397: if (uiInfo.mapList[index].levelShot == -1) { +CNSTI4 100 +ADDRFP4 4 +INDIRI4 +MULI4 +ADDRGP4 uiInfo+83228+92 +ADDP4 +INDIRI4 +CNSTI4 -1 +NEI4 $3647 +line 4398 +;4398: uiInfo.mapList[index].levelShot = trap_R_RegisterShaderNoMip(uiInfo.mapList[index].imageName); +ADDRLP4 12 +CNSTI4 100 +ADDRFP4 4 +INDIRI4 +MULI4 +ASGNI4 +ADDRLP4 12 +INDIRI4 +ADDRGP4 uiInfo+83228+8 +ADDP4 +INDIRP4 +ARGP4 +ADDRLP4 16 +ADDRGP4 trap_R_RegisterShaderNoMip +CALLI4 +ASGNI4 +ADDRLP4 12 +INDIRI4 +ADDRGP4 uiInfo+83228+92 +ADDP4 +ADDRLP4 16 +INDIRI4 +ASGNI4 +line 4399 +;4399: } +LABELV $3647 +line 4400 +;4400: return uiInfo.mapList[index].levelShot; +CNSTI4 100 +ADDRFP4 4 +INDIRI4 +MULI4 +ADDRGP4 uiInfo+83228+92 +ADDP4 +INDIRI4 +RETI4 +ADDRGP4 $3619 +JUMPV +LABELV $3644 +line 4402 +;4401: } +;4402: } +LABELV $3641 +LABELV $3636 +LABELV $3621 +line 4403 +;4403: return 0; +CNSTI4 0 +RETI4 +LABELV $3619 +endproc UI_FeederItemImage 20 8 +bss +align 1 +LABELV $3658 +skip 1024 +code +proc UI_FeederSelection 40 24 +line 4406 +;4404:} +;4405: +;4406:static void UI_FeederSelection(float feederID, int index) { +line 4408 +;4407: static char info[MAX_STRING_CHARS]; +;4408: if (feederID == FEEDER_HEADS) { +ADDRFP4 0 +INDIRF4 +CNSTF4 0 +NEF4 $3659 +line 4410 +;4409: int actual; +;4410: UI_SelectedHead(index, &actual); +ADDRFP4 4 +INDIRI4 +ARGI4 +ADDRLP4 0 +ARGP4 +ADDRGP4 UI_SelectedHead +CALLP4 +pop +line 4411 +;4411: index = actual; +ADDRFP4 4 +ADDRLP4 0 +INDIRI4 +ASGNI4 +line 4412 +;4412: if (index >= 0 && index < uiInfo.characterCount) { +ADDRLP4 4 +ADDRFP4 4 +INDIRI4 +ASGNI4 +ADDRLP4 4 +INDIRI4 +CNSTI4 0 +LTI4 $3660 +ADDRLP4 4 +INDIRI4 +ADDRGP4 uiInfo+73440 +INDIRI4 +GEI4 $3660 +line 4413 +;4413: trap_Cvar_Set( "team_model", va("%s", uiInfo.characterList[index].base)); +ADDRGP4 $3552 +ARGP4 +CNSTI4 24 +ADDRFP4 4 +INDIRI4 +MULI4 +ADDRGP4 uiInfo+73448+12 +ADDP4 +INDIRP4 +ARGP4 +ADDRLP4 8 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRGP4 $969 +ARGP4 +ADDRLP4 8 +INDIRP4 +ARGP4 +ADDRGP4 trap_Cvar_Set +CALLV +pop +line 4414 +;4414: trap_Cvar_Set( "team_headmodel", va("*%s", uiInfo.characterList[index].name)); +ADDRGP4 $3666 +ARGP4 +CNSTI4 24 +ADDRFP4 4 +INDIRI4 +MULI4 +ADDRGP4 uiInfo+73448 +ADDP4 +INDIRP4 +ARGP4 +ADDRLP4 12 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRGP4 $970 +ARGP4 +ADDRLP4 12 +INDIRP4 +ARGP4 +ADDRGP4 trap_Cvar_Set +CALLV +pop +line 4415 +;4415: updateModel = qtrue; +ADDRGP4 updateModel +CNSTI4 1 +ASGNI4 +line 4416 +;4416: } +line 4417 +;4417: } else if (feederID == FEEDER_Q3HEADS) { +ADDRGP4 $3660 +JUMPV +LABELV $3659 +ADDRFP4 0 +INDIRF4 +CNSTF4 1094713344 +NEF4 $3668 +line 4418 +;4418: if (index >= 0 && index < uiInfo.q3HeadCount) { +ADDRLP4 0 +ADDRFP4 4 +INDIRI4 +ASGNI4 +ADDRLP4 0 +INDIRI4 +CNSTI4 0 +LTI4 $3669 +ADDRLP4 0 +INDIRI4 +ADDRGP4 uiInfo+119488 +INDIRI4 +GEI4 $3669 +line 4419 +;4419: trap_Cvar_Set( "model", uiInfo.q3HeadNames[index]); +ADDRGP4 $965 +ARGP4 +ADDRFP4 4 +INDIRI4 +CNSTI4 6 +LSHI4 +ADDRGP4 uiInfo+119492 +ADDP4 +ARGP4 +ADDRGP4 trap_Cvar_Set +CALLV +pop +line 4420 +;4420: trap_Cvar_Set( "headmodel", uiInfo.q3HeadNames[index]); +ADDRGP4 $966 +ARGP4 +ADDRFP4 4 +INDIRI4 +CNSTI4 6 +LSHI4 +ADDRGP4 uiInfo+119492 +ADDP4 +ARGP4 +ADDRGP4 trap_Cvar_Set +CALLV +pop +line 4421 +;4421: updateModel = qtrue; +ADDRGP4 updateModel +CNSTI4 1 +ASGNI4 +line 4422 +;4422: } +line 4423 +;4423: } else if (feederID == FEEDER_MAPS || feederID == FEEDER_ALLMAPS) { +ADDRGP4 $3669 +JUMPV +LABELV $3668 +ADDRLP4 0 +ADDRFP4 0 +INDIRF4 +ASGNF4 +ADDRLP4 0 +INDIRF4 +CNSTF4 1065353216 +EQF4 $3677 +ADDRLP4 0 +INDIRF4 +CNSTF4 1082130432 +NEF4 $3675 +LABELV $3677 +line 4425 +;4424: int actual, map; +;4425: map = (feederID == FEEDER_ALLMAPS) ? ui_currentNetMap.integer : ui_currentMap.integer; +ADDRFP4 0 +INDIRF4 +CNSTF4 1082130432 +NEF4 $3681 +ADDRLP4 12 +ADDRGP4 ui_currentNetMap+12 +INDIRI4 +ASGNI4 +ADDRGP4 $3682 +JUMPV +LABELV $3681 +ADDRLP4 12 +ADDRGP4 ui_currentMap+12 +INDIRI4 +ASGNI4 +LABELV $3682 +ADDRLP4 8 +ADDRLP4 12 +INDIRI4 +ASGNI4 +line 4426 +;4426: if (uiInfo.mapList[map].cinematic >= 0) { +CNSTI4 100 +ADDRLP4 8 +INDIRI4 +MULI4 +ADDRGP4 uiInfo+83228+24 +ADDP4 +INDIRI4 +CNSTI4 0 +LTI4 $3683 +line 4427 +;4427: trap_CIN_StopCinematic(uiInfo.mapList[map].cinematic); +CNSTI4 100 +ADDRLP4 8 +INDIRI4 +MULI4 +ADDRGP4 uiInfo+83228+24 +ADDP4 +INDIRI4 +ARGI4 +ADDRGP4 trap_CIN_StopCinematic +CALLI4 +pop +line 4428 +;4428: uiInfo.mapList[map].cinematic = -1; +CNSTI4 100 +ADDRLP4 8 +INDIRI4 +MULI4 +ADDRGP4 uiInfo+83228+24 +ADDP4 +CNSTI4 -1 +ASGNI4 +line 4429 +;4429: } +LABELV $3683 +line 4430 +;4430: UI_SelectedMap(index, &actual); +ADDRFP4 4 +INDIRI4 +ARGI4 +ADDRLP4 4 +ARGP4 +ADDRGP4 UI_SelectedMap +CALLP4 +pop +line 4431 +;4431: trap_Cvar_Set("ui_mapIndex", va("%d", index)); +ADDRGP4 $716 +ARGP4 +ADDRFP4 4 +INDIRI4 +ARGI4 +ADDRLP4 16 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRGP4 $2227 +ARGP4 +ADDRLP4 16 +INDIRP4 +ARGP4 +ADDRGP4 trap_Cvar_Set +CALLV +pop +line 4432 +;4432: ui_mapIndex.integer = index; +ADDRGP4 ui_mapIndex+12 +ADDRFP4 4 +INDIRI4 +ASGNI4 +line 4434 +;4433: +;4434: if (feederID == FEEDER_MAPS) { +ADDRFP4 0 +INDIRF4 +CNSTF4 1065353216 +NEF4 $3692 +line 4435 +;4435: ui_currentMap.integer = actual; +ADDRGP4 ui_currentMap+12 +ADDRLP4 4 +INDIRI4 +ASGNI4 +line 4436 +;4436: trap_Cvar_Set("ui_currentMap", va("%d", actual)); +ADDRGP4 $716 +ARGP4 +ADDRLP4 4 +INDIRI4 +ARGI4 +ADDRLP4 20 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRGP4 $891 +ARGP4 +ADDRLP4 20 +INDIRP4 +ARGP4 +ADDRGP4 trap_Cvar_Set +CALLV +pop +line 4437 +;4437: uiInfo.mapList[ui_currentMap.integer].cinematic = trap_CIN_PlayCinematic(va("%s.roq", uiInfo.mapList[ui_currentMap.integer].mapLoadName), 0, 0, 0, 0, (CIN_loop | CIN_silent) ); +ADDRGP4 $793 +ARGP4 +ADDRLP4 24 +CNSTI4 100 +ASGNI4 +ADDRLP4 24 +INDIRI4 +ADDRGP4 ui_currentMap+12 +INDIRI4 +MULI4 +ADDRGP4 uiInfo+83228+4 +ADDP4 +INDIRP4 +ARGP4 +ADDRLP4 28 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRLP4 28 +INDIRP4 +ARGP4 +ADDRLP4 32 +CNSTI4 0 +ASGNI4 +ADDRLP4 32 +INDIRI4 +ARGI4 +ADDRLP4 32 +INDIRI4 +ARGI4 +ADDRLP4 32 +INDIRI4 +ARGI4 +ADDRLP4 32 +INDIRI4 +ARGI4 +CNSTI4 10 +ARGI4 +ADDRLP4 36 +ADDRGP4 trap_CIN_PlayCinematic +CALLI4 +ASGNI4 +ADDRLP4 24 +INDIRI4 +ADDRGP4 ui_currentMap+12 +INDIRI4 +MULI4 +ADDRGP4 uiInfo+83228+24 +ADDP4 +ADDRLP4 36 +INDIRI4 +ASGNI4 +line 4438 +;4438: UI_LoadBestScores(uiInfo.mapList[ui_currentMap.integer].mapLoadName, uiInfo.gameTypes[ui_gameType.integer].gtEnum); +CNSTI4 100 +ADDRGP4 ui_currentMap+12 +INDIRI4 +MULI4 +ADDRGP4 uiInfo+83228+4 +ADDP4 +INDIRP4 +ARGP4 +ADDRGP4 ui_gameType+12 +INDIRI4 +CNSTI4 3 +LSHI4 +ADDRGP4 uiInfo+78580+4 +ADDP4 +INDIRI4 +ARGI4 +ADDRGP4 UI_LoadBestScores +CALLV +pop +line 4439 +;4439: trap_Cvar_Set("ui_opponentModel", uiInfo.mapList[ui_currentMap.integer].opponentName); +ADDRGP4 $1132 +ARGP4 +CNSTI4 100 +ADDRGP4 ui_currentMap+12 +INDIRI4 +MULI4 +ADDRGP4 uiInfo+83228+12 +ADDP4 +INDIRP4 +ARGP4 +ADDRGP4 trap_Cvar_Set +CALLV +pop +line 4440 +;4440: updateOpponentModel = qtrue; +ADDRGP4 updateOpponentModel +CNSTI4 1 +ASGNI4 +line 4441 +;4441: } else { +ADDRGP4 $3676 +JUMPV +LABELV $3692 +line 4442 +;4442: ui_currentNetMap.integer = actual; +ADDRGP4 ui_currentNetMap+12 +ADDRLP4 4 +INDIRI4 +ASGNI4 +line 4443 +;4443: trap_Cvar_Set("ui_currentNetMap", va("%d", actual)); +ADDRGP4 $716 +ARGP4 +ADDRLP4 4 +INDIRI4 +ARGI4 +ADDRLP4 20 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRGP4 $889 +ARGP4 +ADDRLP4 20 +INDIRP4 +ARGP4 +ADDRGP4 trap_Cvar_Set +CALLV +pop +line 4444 +;4444: uiInfo.mapList[ui_currentNetMap.integer].cinematic = trap_CIN_PlayCinematic(va("%s.roq", uiInfo.mapList[ui_currentNetMap.integer].mapLoadName), 0, 0, 0, 0, (CIN_loop | CIN_silent) ); +ADDRGP4 $793 +ARGP4 +ADDRLP4 24 +CNSTI4 100 +ASGNI4 +ADDRLP4 24 +INDIRI4 +ADDRGP4 ui_currentNetMap+12 +INDIRI4 +MULI4 +ADDRGP4 uiInfo+83228+4 +ADDP4 +INDIRP4 +ARGP4 +ADDRLP4 28 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRLP4 28 +INDIRP4 +ARGP4 +ADDRLP4 32 +CNSTI4 0 +ASGNI4 +ADDRLP4 32 +INDIRI4 +ARGI4 +ADDRLP4 32 +INDIRI4 +ARGI4 +ADDRLP4 32 +INDIRI4 +ARGI4 +ADDRLP4 32 +INDIRI4 +ARGI4 +CNSTI4 10 +ARGI4 +ADDRLP4 36 +ADDRGP4 trap_CIN_PlayCinematic +CALLI4 +ASGNI4 +ADDRLP4 24 +INDIRI4 +ADDRGP4 ui_currentNetMap+12 +INDIRI4 +MULI4 +ADDRGP4 uiInfo+83228+24 +ADDP4 +ADDRLP4 36 +INDIRI4 +ASGNI4 +line 4445 +;4445: } +line 4447 +;4446: +;4447: } else if (feederID == FEEDER_SERVERS) { +ADDRGP4 $3676 +JUMPV +LABELV $3675 +ADDRFP4 0 +INDIRF4 +CNSTF4 1073741824 +NEF4 $3717 +line 4448 +;4448: const char *mapName = NULL; +ADDRLP4 4 +CNSTP4 0 +ASGNP4 +line 4449 +;4449: uiInfo.serverStatus.currentServer = index; +ADDRGP4 uiInfo+99264+2216 +ADDRFP4 4 +INDIRI4 +ASGNI4 +line 4450 +;4450: trap_LAN_GetServerInfo(ui_netSource.integer, uiInfo.serverStatus.displayServers[index], info, MAX_STRING_CHARS); +ADDRGP4 ui_netSource+12 +INDIRI4 +ARGI4 +ADDRFP4 4 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 uiInfo+99264+2220 +ADDP4 +INDIRI4 +ARGI4 +ADDRGP4 $3658 +ARGP4 +CNSTI4 1024 +ARGI4 +ADDRGP4 trap_LAN_GetServerInfo +CALLV +pop +line 4451 +;4451: uiInfo.serverStatus.currentServerPreview = trap_R_RegisterShaderNoMip(va("levelshots/%s", Info_ValueForKey(info, "mapname"))); +ADDRGP4 $3658 +ARGP4 +ADDRGP4 $3112 +ARGP4 +ADDRLP4 8 +ADDRGP4 Info_ValueForKey +CALLP4 +ASGNP4 +ADDRGP4 $1043 +ARGP4 +ADDRLP4 8 +INDIRP4 +ARGP4 +ADDRLP4 12 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRLP4 12 +INDIRP4 +ARGP4 +ADDRLP4 16 +ADDRGP4 trap_R_RegisterShaderNoMip +CALLI4 +ASGNI4 +ADDRGP4 uiInfo+99264+10428 +ADDRLP4 16 +INDIRI4 +ASGNI4 +line 4452 +;4452: if (uiInfo.serverStatus.currentServerCinematic >= 0) { +ADDRGP4 uiInfo+99264+10432 +INDIRI4 +CNSTI4 0 +LTI4 $3726 +line 4453 +;4453: trap_CIN_StopCinematic(uiInfo.serverStatus.currentServerCinematic); +ADDRGP4 uiInfo+99264+10432 +INDIRI4 +ARGI4 +ADDRGP4 trap_CIN_StopCinematic +CALLI4 +pop +line 4454 +;4454: uiInfo.serverStatus.currentServerCinematic = -1; +ADDRGP4 uiInfo+99264+10432 +CNSTI4 -1 +ASGNI4 +line 4455 +;4455: } +LABELV $3726 +line 4456 +;4456: mapName = Info_ValueForKey(info, "mapname"); +ADDRGP4 $3658 +ARGP4 +ADDRGP4 $3112 +ARGP4 +ADDRLP4 20 +ADDRGP4 Info_ValueForKey +CALLP4 +ASGNP4 +ADDRLP4 4 +ADDRLP4 20 +INDIRP4 +ASGNP4 +line 4457 +;4457: if (mapName && *mapName) { +ADDRLP4 24 +ADDRLP4 4 +INDIRP4 +ASGNP4 +ADDRLP4 24 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $3718 +ADDRLP4 24 +INDIRP4 +INDIRI1 +CVII4 1 +CNSTI4 0 +EQI4 $3718 +line 4458 +;4458: uiInfo.serverStatus.currentServerCinematic = trap_CIN_PlayCinematic(va("%s.roq", mapName), 0, 0, 0, 0, (CIN_loop | CIN_silent) ); +ADDRGP4 $793 +ARGP4 +ADDRLP4 4 +INDIRP4 +ARGP4 +ADDRLP4 28 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRLP4 28 +INDIRP4 +ARGP4 +ADDRLP4 32 +CNSTI4 0 +ASGNI4 +ADDRLP4 32 +INDIRI4 +ARGI4 +ADDRLP4 32 +INDIRI4 +ARGI4 +ADDRLP4 32 +INDIRI4 +ARGI4 +ADDRLP4 32 +INDIRI4 +ARGI4 +CNSTI4 10 +ARGI4 +ADDRLP4 36 +ADDRGP4 trap_CIN_PlayCinematic +CALLI4 +ASGNI4 +ADDRGP4 uiInfo+99264+10432 +ADDRLP4 36 +INDIRI4 +ASGNI4 +line 4459 +;4459: } +line 4460 +;4460: } else if (feederID == FEEDER_SERVERSTATUS) { +ADDRGP4 $3718 +JUMPV +LABELV $3717 +ADDRFP4 0 +INDIRF4 +CNSTF4 1095761920 +NEF4 $3738 +line 4462 +;4461: // +;4462: } else if (feederID == FEEDER_FINDPLAYER) { +ADDRGP4 $3739 +JUMPV +LABELV $3738 +ADDRFP4 0 +INDIRF4 +CNSTF4 1096810496 +NEF4 $3740 +line 4463 +;4463: uiInfo.currentFoundPlayerServer = index; +ADDRGP4 uiInfo+119464 +ADDRFP4 4 +INDIRI4 +ASGNI4 +line 4465 +;4464: // +;4465: if ( index < uiInfo.numFoundPlayerServers-1) { +ADDRFP4 4 +INDIRI4 +ADDRGP4 uiInfo+119468 +INDIRI4 +CNSTI4 1 +SUBI4 +GEI4 $3741 +line 4467 +;4466: // build a new server status for this server +;4467: Q_strncpyz(uiInfo.serverStatusAddress, uiInfo.foundPlayerServerAddresses[uiInfo.currentFoundPlayerServer], sizeof(uiInfo.serverStatusAddress)); +ADDRGP4 uiInfo+110748 +ARGP4 +ADDRGP4 uiInfo+119464 +INDIRI4 +CNSTI4 6 +LSHI4 +ADDRGP4 uiInfo+117416 +ADDP4 +ARGP4 +CNSTI4 64 +ARGI4 +ADDRGP4 Q_strncpyz +CALLV +pop +line 4468 +;4468: Menu_SetFeederSelection(NULL, FEEDER_SERVERSTATUS, 0, NULL); +CNSTP4 0 +ARGP4 +CNSTI4 13 +ARGI4 +CNSTI4 0 +ARGI4 +CNSTP4 0 +ARGP4 +ADDRGP4 Menu_SetFeederSelection +CALLV +pop +line 4469 +;4469: UI_BuildServerStatus(qtrue); +CNSTI4 1 +ARGI4 +ADDRGP4 UI_BuildServerStatus +CALLV +pop +line 4470 +;4470: } +line 4471 +;4471: } else if (feederID == FEEDER_PLAYER_LIST) { +ADDRGP4 $3741 +JUMPV +LABELV $3740 +ADDRFP4 0 +INDIRF4 +CNSTF4 1088421888 +NEF4 $3750 +line 4472 +;4472: uiInfo.playerIndex = index; +ADDRGP4 uiInfo+78860 +ADDRFP4 4 +INDIRI4 +ASGNI4 +line 4473 +;4473: } else if (feederID == FEEDER_TEAM_LIST) { +ADDRGP4 $3751 +JUMPV +LABELV $3750 +ADDRFP4 0 +INDIRF4 +CNSTF4 1090519040 +NEF4 $3753 +line 4474 +;4474: uiInfo.teamIndex = index; +ADDRGP4 uiInfo+78852 +ADDRFP4 4 +INDIRI4 +ASGNI4 +line 4475 +;4475: } else if (feederID == FEEDER_MODS) { +ADDRGP4 $3754 +JUMPV +LABELV $3753 +ADDRFP4 0 +INDIRF4 +CNSTF4 1091567616 +NEF4 $3756 +line 4476 +;4476: uiInfo.modIndex = index; +ADDRGP4 uiInfo+97192 +ADDRFP4 4 +INDIRI4 +ASGNI4 +line 4477 +;4477: } else if (feederID == FEEDER_CINEMATICS) { +ADDRGP4 $3757 +JUMPV +LABELV $3756 +ADDRFP4 0 +INDIRF4 +CNSTF4 1097859072 +NEF4 $3759 +line 4478 +;4478: uiInfo.movieIndex = index; +ADDRGP4 uiInfo+99256 +ADDRFP4 4 +INDIRI4 +ASGNI4 +line 4479 +;4479: if (uiInfo.previewMovie >= 0) { +ADDRGP4 uiInfo+99260 +INDIRI4 +CNSTI4 0 +LTI4 $3762 +line 4480 +;4480: trap_CIN_StopCinematic(uiInfo.previewMovie); +ADDRGP4 uiInfo+99260 +INDIRI4 +ARGI4 +ADDRGP4 trap_CIN_StopCinematic +CALLI4 +pop +line 4481 +;4481: } +LABELV $3762 +line 4482 +;4482: uiInfo.previewMovie = -1; +ADDRGP4 uiInfo+99260 +CNSTI4 -1 +ASGNI4 +line 4483 +;4483: } else if (feederID == FEEDER_DEMOS) { +ADDRGP4 $3760 +JUMPV +LABELV $3759 +ADDRFP4 0 +INDIRF4 +CNSTF4 1092616192 +NEF4 $3767 +line 4484 +;4484: uiInfo.demoIndex = index; +ADDRGP4 uiInfo+98224 +ADDRFP4 4 +INDIRI4 +ASGNI4 +line 4485 +;4485: } +LABELV $3767 +LABELV $3760 +LABELV $3757 +LABELV $3754 +LABELV $3751 +LABELV $3741 +LABELV $3739 +LABELV $3718 +LABELV $3676 +LABELV $3669 +LABELV $3660 +line 4486 +;4486:} +LABELV $3657 +endproc UI_FeederSelection 40 24 +proc Team_Parse 72 12 +line 4488 +;4487: +;4488:static qboolean Team_Parse(char **p) { +line 4493 +;4489: char *token; +;4490: const char *tempStr; +;4491: int i; +;4492: +;4493: token = COM_ParseExt(p, qtrue); +ADDRFP4 0 +INDIRP4 +ARGP4 +CNSTI4 1 +ARGI4 +ADDRLP4 12 +ADDRGP4 COM_ParseExt +CALLP4 +ASGNP4 +ADDRLP4 4 +ADDRLP4 12 +INDIRP4 +ASGNP4 +line 4495 +;4494: +;4495: if (token[0] != '{') { +ADDRLP4 4 +INDIRP4 +INDIRI1 +CVII4 1 +CNSTI4 123 +EQI4 $3774 +line 4496 +;4496: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $3770 +JUMPV +LABELV $3773 +line 4499 +;4497: } +;4498: +;4499: while ( 1 ) { +line 4501 +;4500: +;4501: token = COM_ParseExt(p, qtrue); +ADDRFP4 0 +INDIRP4 +ARGP4 +CNSTI4 1 +ARGI4 +ADDRLP4 16 +ADDRGP4 COM_ParseExt +CALLP4 +ASGNP4 +ADDRLP4 4 +ADDRLP4 16 +INDIRP4 +ASGNP4 +line 4503 +;4502: +;4503: if (Q_stricmp(token, "}") == 0) { +ADDRLP4 4 +INDIRP4 +ARGP4 +ADDRGP4 $452 +ARGP4 +ADDRLP4 20 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 20 +INDIRI4 +CNSTI4 0 +NEI4 $3776 +line 4504 +;4504: return qtrue; +CNSTI4 1 +RETI4 +ADDRGP4 $3770 +JUMPV +LABELV $3776 +line 4507 +;4505: } +;4506: +;4507: if ( !token || token[0] == 0 ) { +ADDRLP4 4 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $3780 +ADDRLP4 4 +INDIRP4 +INDIRI1 +CVII4 1 +CNSTI4 0 +NEI4 $3778 +LABELV $3780 +line 4508 +;4508: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $3770 +JUMPV +LABELV $3778 +line 4511 +;4509: } +;4510: +;4511: if (token[0] == '{') { +ADDRLP4 4 +INDIRP4 +INDIRI1 +CVII4 1 +CNSTI4 123 +NEI4 $3781 +line 4513 +;4512: // seven tokens per line, team name and icon, and 5 team member names +;4513: if (!String_Parse(p, &uiInfo.teamList[uiInfo.teamCount].teamName) || !String_Parse(p, &tempStr)) { +ADDRFP4 0 +INDIRP4 +ARGP4 +CNSTI4 44 +ADDRGP4 uiInfo+75756 +INDIRI4 +MULI4 +ADDRGP4 uiInfo+75760 +ADDP4 +ARGP4 +ADDRLP4 28 +ADDRGP4 String_Parse +CALLI4 +ASGNI4 +ADDRLP4 28 +INDIRI4 +CNSTI4 0 +EQI4 $3787 +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRLP4 8 +ARGP4 +ADDRLP4 32 +ADDRGP4 String_Parse +CALLI4 +ASGNI4 +ADDRLP4 32 +INDIRI4 +CNSTI4 0 +NEI4 $3783 +LABELV $3787 +line 4514 +;4514: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $3770 +JUMPV +LABELV $3783 +line 4518 +;4515: } +;4516: +;4517: +;4518: uiInfo.teamList[uiInfo.teamCount].imageName = tempStr; +CNSTI4 44 +ADDRGP4 uiInfo+75756 +INDIRI4 +MULI4 +ADDRGP4 uiInfo+75760+4 +ADDP4 +ADDRLP4 8 +INDIRP4 +ASGNP4 +line 4519 +;4519: uiInfo.teamList[uiInfo.teamCount].teamIcon = trap_R_RegisterShaderNoMip(uiInfo.teamList[uiInfo.teamCount].imageName); +ADDRLP4 36 +CNSTI4 44 +ASGNI4 +ADDRLP4 36 +INDIRI4 +ADDRGP4 uiInfo+75756 +INDIRI4 +MULI4 +ADDRGP4 uiInfo+75760+4 +ADDP4 +INDIRP4 +ARGP4 +ADDRLP4 40 +ADDRGP4 trap_R_RegisterShaderNoMip +CALLI4 +ASGNI4 +ADDRLP4 36 +INDIRI4 +ADDRGP4 uiInfo+75756 +INDIRI4 +MULI4 +ADDRGP4 uiInfo+75760+28 +ADDP4 +ADDRLP4 40 +INDIRI4 +ASGNI4 +line 4520 +;4520: uiInfo.teamList[uiInfo.teamCount].teamIcon_Metal = trap_R_RegisterShaderNoMip(va("%s_metal",uiInfo.teamList[uiInfo.teamCount].imageName)); +ADDRGP4 $769 +ARGP4 +ADDRLP4 44 +CNSTI4 44 +ASGNI4 +ADDRLP4 44 +INDIRI4 +ADDRGP4 uiInfo+75756 +INDIRI4 +MULI4 +ADDRGP4 uiInfo+75760+4 +ADDP4 +INDIRP4 +ARGP4 +ADDRLP4 48 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRLP4 48 +INDIRP4 +ARGP4 +ADDRLP4 52 +ADDRGP4 trap_R_RegisterShaderNoMip +CALLI4 +ASGNI4 +ADDRLP4 44 +INDIRI4 +ADDRGP4 uiInfo+75756 +INDIRI4 +MULI4 +ADDRGP4 uiInfo+75760+32 +ADDP4 +ADDRLP4 52 +INDIRI4 +ASGNI4 +line 4521 +;4521: uiInfo.teamList[uiInfo.teamCount].teamIcon_Name = trap_R_RegisterShaderNoMip(va("%s_name", uiInfo.teamList[uiInfo.teamCount].imageName)); +ADDRGP4 $774 +ARGP4 +ADDRLP4 56 +CNSTI4 44 +ASGNI4 +ADDRLP4 56 +INDIRI4 +ADDRGP4 uiInfo+75756 +INDIRI4 +MULI4 +ADDRGP4 uiInfo+75760+4 +ADDP4 +INDIRP4 +ARGP4 +ADDRLP4 60 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRLP4 60 +INDIRP4 +ARGP4 +ADDRLP4 64 +ADDRGP4 trap_R_RegisterShaderNoMip +CALLI4 +ASGNI4 +ADDRLP4 56 +INDIRI4 +ADDRGP4 uiInfo+75756 +INDIRI4 +MULI4 +ADDRGP4 uiInfo+75760+36 +ADDP4 +ADDRLP4 64 +INDIRI4 +ASGNI4 +line 4523 +;4522: +;4523: uiInfo.teamList[uiInfo.teamCount].cinematic = -1; +CNSTI4 44 +ADDRGP4 uiInfo+75756 +INDIRI4 +MULI4 +ADDRGP4 uiInfo+75760+40 +ADDP4 +CNSTI4 -1 +ASGNI4 +line 4525 +;4524: +;4525: for (i = 0; i < TEAM_MEMBERS; i++) { +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +LABELV $3812 +line 4526 +;4526: uiInfo.teamList[uiInfo.teamCount].teamMembers[i] = NULL; +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +CNSTI4 44 +ADDRGP4 uiInfo+75756 +INDIRI4 +MULI4 +ADDRGP4 uiInfo+75760+8 +ADDP4 +ADDP4 +CNSTP4 0 +ASGNP4 +line 4527 +;4527: if (!String_Parse(p, &uiInfo.teamList[uiInfo.teamCount].teamMembers[i])) { +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +CNSTI4 44 +ADDRGP4 uiInfo+75756 +INDIRI4 +MULI4 +ADDRGP4 uiInfo+75760+8 +ADDP4 +ADDP4 +ARGP4 +ADDRLP4 68 +ADDRGP4 String_Parse +CALLI4 +ASGNI4 +ADDRLP4 68 +INDIRI4 +CNSTI4 0 +NEI4 $3819 +line 4528 +;4528: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $3770 +JUMPV +LABELV $3819 +line 4530 +;4529: } +;4530: } +LABELV $3813 +line 4525 +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +ADDRLP4 0 +INDIRI4 +CNSTI4 5 +LTI4 $3812 +line 4532 +;4531: +;4532: Com_Printf("Loaded team %s with team icon %s.\n", uiInfo.teamList[uiInfo.teamCount].teamName, tempStr); +ADDRGP4 $3824 +ARGP4 +CNSTI4 44 +ADDRGP4 uiInfo+75756 +INDIRI4 +MULI4 +ADDRGP4 uiInfo+75760 +ADDP4 +INDIRP4 +ARGP4 +ADDRLP4 8 +INDIRP4 +ARGP4 +ADDRGP4 Com_Printf +CALLV +pop +line 4533 +;4533: if (uiInfo.teamCount < MAX_TEAMS) { +ADDRGP4 uiInfo+75756 +INDIRI4 +CNSTI4 64 +GEI4 $3827 +line 4534 +;4534: uiInfo.teamCount++; +ADDRLP4 68 +ADDRGP4 uiInfo+75756 +ASGNP4 +ADDRLP4 68 +INDIRP4 +ADDRLP4 68 +INDIRP4 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 4535 +;4535: } else { +ADDRGP4 $3828 +JUMPV +LABELV $3827 +line 4536 +;4536: Com_Printf("Too many teams, last team replaced!\n"); +ADDRGP4 $3831 +ARGP4 +ADDRGP4 Com_Printf +CALLV +pop +line 4537 +;4537: } +LABELV $3828 +line 4538 +;4538: token = COM_ParseExt(p, qtrue); +ADDRFP4 0 +INDIRP4 +ARGP4 +CNSTI4 1 +ARGI4 +ADDRLP4 68 +ADDRGP4 COM_ParseExt +CALLP4 +ASGNP4 +ADDRLP4 4 +ADDRLP4 68 +INDIRP4 +ASGNP4 +line 4539 +;4539: if (token[0] != '}') { +ADDRLP4 4 +INDIRP4 +INDIRI1 +CVII4 1 +CNSTI4 125 +EQI4 $3832 +line 4540 +;4540: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $3770 +JUMPV +LABELV $3832 +line 4542 +;4541: } +;4542: } +LABELV $3781 +line 4543 +;4543: } +LABELV $3774 +line 4499 +ADDRGP4 $3773 +JUMPV +line 4545 +;4544: +;4545: return qfalse; +CNSTI4 0 +RETI4 +LABELV $3770 +endproc Team_Parse 72 12 +proc Character_Parse 68 12 +line 4548 +;4546:} +;4547: +;4548:static qboolean Character_Parse(char **p) { +line 4552 +;4549: char *token; +;4550: const char *tempStr; +;4551: +;4552: token = COM_ParseExt(p, qtrue); +ADDRFP4 0 +INDIRP4 +ARGP4 +CNSTI4 1 +ARGI4 +ADDRLP4 8 +ADDRGP4 COM_ParseExt +CALLP4 +ASGNP4 +ADDRLP4 0 +ADDRLP4 8 +INDIRP4 +ASGNP4 +line 4554 +;4553: +;4554: if (token[0] != '{') { +ADDRLP4 0 +INDIRP4 +INDIRI1 +CVII4 1 +CNSTI4 123 +EQI4 $3838 +line 4555 +;4555: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $3834 +JUMPV +LABELV $3837 +line 4559 +;4556: } +;4557: +;4558: +;4559: while ( 1 ) { +line 4560 +;4560: token = COM_ParseExt(p, qtrue); +ADDRFP4 0 +INDIRP4 +ARGP4 +CNSTI4 1 +ARGI4 +ADDRLP4 12 +ADDRGP4 COM_ParseExt +CALLP4 +ASGNP4 +ADDRLP4 0 +ADDRLP4 12 +INDIRP4 +ASGNP4 +line 4562 +;4561: +;4562: if (Q_stricmp(token, "}") == 0) { +ADDRLP4 0 +INDIRP4 +ARGP4 +ADDRGP4 $452 +ARGP4 +ADDRLP4 16 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 16 +INDIRI4 +CNSTI4 0 +NEI4 $3840 +line 4563 +;4563: return qtrue; +CNSTI4 1 +RETI4 +ADDRGP4 $3834 +JUMPV +LABELV $3840 +line 4566 +;4564: } +;4565: +;4566: if ( !token || token[0] == 0 ) { +ADDRLP4 0 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $3844 +ADDRLP4 0 +INDIRP4 +INDIRI1 +CVII4 1 +CNSTI4 0 +NEI4 $3842 +LABELV $3844 +line 4567 +;4567: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $3834 +JUMPV +LABELV $3842 +line 4570 +;4568: } +;4569: +;4570: if (token[0] == '{') { +ADDRLP4 0 +INDIRP4 +INDIRI1 +CVII4 1 +CNSTI4 123 +NEI4 $3845 +line 4572 +;4571: // two tokens per line, character name and sex +;4572: if (!String_Parse(p, &uiInfo.characterList[uiInfo.characterCount].name) || !String_Parse(p, &tempStr)) { +ADDRFP4 0 +INDIRP4 +ARGP4 +CNSTI4 24 +ADDRGP4 uiInfo+73440 +INDIRI4 +MULI4 +ADDRGP4 uiInfo+73448 +ADDP4 +ARGP4 +ADDRLP4 24 +ADDRGP4 String_Parse +CALLI4 +ASGNI4 +ADDRLP4 24 +INDIRI4 +CNSTI4 0 +EQI4 $3851 +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRLP4 4 +ARGP4 +ADDRLP4 28 +ADDRGP4 String_Parse +CALLI4 +ASGNI4 +ADDRLP4 28 +INDIRI4 +CNSTI4 0 +NEI4 $3847 +LABELV $3851 +line 4573 +;4573: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $3834 +JUMPV +LABELV $3847 +line 4576 +;4574: } +;4575: +;4576: uiInfo.characterList[uiInfo.characterCount].headImage = -1; +CNSTI4 24 +ADDRGP4 uiInfo+73440 +INDIRI4 +MULI4 +ADDRGP4 uiInfo+73448+8 +ADDP4 +CNSTI4 -1 +ASGNI4 +line 4577 +;4577: uiInfo.characterList[uiInfo.characterCount].imageName = String_Alloc(va("models/players/heads/%s/icon_default.tga", uiInfo.characterList[uiInfo.characterCount].name)); +ADDRGP4 $3858 +ARGP4 +ADDRLP4 32 +CNSTI4 24 +ASGNI4 +ADDRLP4 32 +INDIRI4 +ADDRGP4 uiInfo+73440 +INDIRI4 +MULI4 +ADDRGP4 uiInfo+73448 +ADDP4 +INDIRP4 +ARGP4 +ADDRLP4 36 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRLP4 36 +INDIRP4 +ARGP4 +ADDRLP4 40 +ADDRGP4 String_Alloc +CALLP4 +ASGNP4 +ADDRLP4 32 +INDIRI4 +ADDRGP4 uiInfo+73440 +INDIRI4 +MULI4 +ADDRGP4 uiInfo+73448+4 +ADDP4 +ADDRLP4 40 +INDIRP4 +ASGNP4 +line 4579 +;4578: +;4579: if (tempStr && (!Q_stricmp(tempStr, "female"))) { +ADDRLP4 44 +ADDRLP4 4 +INDIRP4 +ASGNP4 +ADDRLP4 44 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $3861 +ADDRLP4 44 +INDIRP4 +ARGP4 +ADDRGP4 $3863 +ARGP4 +ADDRLP4 48 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 48 +INDIRI4 +CNSTI4 0 +NEI4 $3861 +line 4580 +;4580: uiInfo.characterList[uiInfo.characterCount].base = String_Alloc(va("Janet")); +ADDRGP4 $3867 +ARGP4 +ADDRLP4 52 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRLP4 52 +INDIRP4 +ARGP4 +ADDRLP4 56 +ADDRGP4 String_Alloc +CALLP4 +ASGNP4 +CNSTI4 24 +ADDRGP4 uiInfo+73440 +INDIRI4 +MULI4 +ADDRGP4 uiInfo+73448+12 +ADDP4 +ADDRLP4 56 +INDIRP4 +ASGNP4 +line 4581 +;4581: } else if (tempStr && (!Q_stricmp(tempStr, "male"))) { +ADDRGP4 $3862 +JUMPV +LABELV $3861 +ADDRLP4 52 +ADDRLP4 4 +INDIRP4 +ASGNP4 +ADDRLP4 52 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $3868 +ADDRLP4 52 +INDIRP4 +ARGP4 +ADDRGP4 $3870 +ARGP4 +ADDRLP4 56 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 56 +INDIRI4 +CNSTI4 0 +NEI4 $3868 +line 4582 +;4582: uiInfo.characterList[uiInfo.characterCount].base = String_Alloc(va("James")); +ADDRGP4 $1095 +ARGP4 +ADDRLP4 60 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRLP4 60 +INDIRP4 +ARGP4 +ADDRLP4 64 +ADDRGP4 String_Alloc +CALLP4 +ASGNP4 +CNSTI4 24 +ADDRGP4 uiInfo+73440 +INDIRI4 +MULI4 +ADDRGP4 uiInfo+73448+12 +ADDP4 +ADDRLP4 64 +INDIRP4 +ASGNP4 +line 4583 +;4583: } else { +ADDRGP4 $3869 +JUMPV +LABELV $3868 +line 4584 +;4584: uiInfo.characterList[uiInfo.characterCount].base = String_Alloc(va("%s",tempStr)); +ADDRGP4 $3552 +ARGP4 +ADDRLP4 4 +INDIRP4 +ARGP4 +ADDRLP4 60 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRLP4 60 +INDIRP4 +ARGP4 +ADDRLP4 64 +ADDRGP4 String_Alloc +CALLP4 +ASGNP4 +CNSTI4 24 +ADDRGP4 uiInfo+73440 +INDIRI4 +MULI4 +ADDRGP4 uiInfo+73448+12 +ADDP4 +ADDRLP4 64 +INDIRP4 +ASGNP4 +line 4585 +;4585: } +LABELV $3869 +LABELV $3862 +line 4587 +;4586: +;4587: Com_Printf("Loaded %s character %s.\n", uiInfo.characterList[uiInfo.characterCount].base, uiInfo.characterList[uiInfo.characterCount].name); +ADDRGP4 $3877 +ARGP4 +ADDRLP4 60 +CNSTI4 24 +ASGNI4 +ADDRLP4 60 +INDIRI4 +ADDRGP4 uiInfo+73440 +INDIRI4 +MULI4 +ADDRGP4 uiInfo+73448+12 +ADDP4 +INDIRP4 +ARGP4 +ADDRLP4 60 +INDIRI4 +ADDRGP4 uiInfo+73440 +INDIRI4 +MULI4 +ADDRGP4 uiInfo+73448 +ADDP4 +INDIRP4 +ARGP4 +ADDRGP4 Com_Printf +CALLV +pop +line 4588 +;4588: if (uiInfo.characterCount < MAX_HEADS) { +ADDRGP4 uiInfo+73440 +INDIRI4 +CNSTI4 64 +GEI4 $3883 +line 4589 +;4589: uiInfo.characterCount++; +ADDRLP4 64 +ADDRGP4 uiInfo+73440 +ASGNP4 +ADDRLP4 64 +INDIRP4 +ADDRLP4 64 +INDIRP4 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 4590 +;4590: } else { +ADDRGP4 $3884 +JUMPV +LABELV $3883 +line 4591 +;4591: Com_Printf("Too many characters, last character replaced!\n"); +ADDRGP4 $3887 +ARGP4 +ADDRGP4 Com_Printf +CALLV +pop +line 4592 +;4592: } +LABELV $3884 +line 4594 +;4593: +;4594: token = COM_ParseExt(p, qtrue); +ADDRFP4 0 +INDIRP4 +ARGP4 +CNSTI4 1 +ARGI4 +ADDRLP4 64 +ADDRGP4 COM_ParseExt +CALLP4 +ASGNP4 +ADDRLP4 0 +ADDRLP4 64 +INDIRP4 +ASGNP4 +line 4595 +;4595: if (token[0] != '}') { +ADDRLP4 0 +INDIRP4 +INDIRI1 +CVII4 1 +CNSTI4 125 +EQI4 $3888 +line 4596 +;4596: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $3834 +JUMPV +LABELV $3888 +line 4598 +;4597: } +;4598: } +LABELV $3845 +line 4599 +;4599: } +LABELV $3838 +line 4559 +ADDRGP4 $3837 +JUMPV +line 4601 +;4600: +;4601: return qfalse; +CNSTI4 0 +RETI4 +LABELV $3834 +endproc Character_Parse 68 12 +proc Alias_Parse 40 12 +line 4605 +;4602:} +;4603: +;4604: +;4605:static qboolean Alias_Parse(char **p) { +line 4608 +;4606: char *token; +;4607: +;4608: token = COM_ParseExt(p, qtrue); +ADDRFP4 0 +INDIRP4 +ARGP4 +CNSTI4 1 +ARGI4 +ADDRLP4 4 +ADDRGP4 COM_ParseExt +CALLP4 +ASGNP4 +ADDRLP4 0 +ADDRLP4 4 +INDIRP4 +ASGNP4 +line 4610 +;4609: +;4610: if (token[0] != '{') { +ADDRLP4 0 +INDIRP4 +INDIRI1 +CVII4 1 +CNSTI4 123 +EQI4 $3894 +line 4611 +;4611: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $3890 +JUMPV +LABELV $3893 +line 4614 +;4612: } +;4613: +;4614: while ( 1 ) { +line 4615 +;4615: token = COM_ParseExt(p, qtrue); +ADDRFP4 0 +INDIRP4 +ARGP4 +CNSTI4 1 +ARGI4 +ADDRLP4 8 +ADDRGP4 COM_ParseExt +CALLP4 +ASGNP4 +ADDRLP4 0 +ADDRLP4 8 +INDIRP4 +ASGNP4 +line 4617 +;4616: +;4617: if (Q_stricmp(token, "}") == 0) { +ADDRLP4 0 +INDIRP4 +ARGP4 +ADDRGP4 $452 +ARGP4 +ADDRLP4 12 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 12 +INDIRI4 +CNSTI4 0 +NEI4 $3896 +line 4618 +;4618: return qtrue; +CNSTI4 1 +RETI4 +ADDRGP4 $3890 +JUMPV +LABELV $3896 +line 4621 +;4619: } +;4620: +;4621: if ( !token || token[0] == 0 ) { +ADDRLP4 0 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $3900 +ADDRLP4 0 +INDIRP4 +INDIRI1 +CVII4 1 +CNSTI4 0 +NEI4 $3898 +LABELV $3900 +line 4622 +;4622: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $3890 +JUMPV +LABELV $3898 +line 4625 +;4623: } +;4624: +;4625: if (token[0] == '{') { +ADDRLP4 0 +INDIRP4 +INDIRI1 +CVII4 1 +CNSTI4 123 +NEI4 $3901 +line 4627 +;4626: // three tokens per line, character name, bot alias, and preferred action a - all purpose, d - defense, o - offense +;4627: if (!String_Parse(p, &uiInfo.aliasList[uiInfo.aliasCount].name) || !String_Parse(p, &uiInfo.aliasList[uiInfo.aliasCount].ai) || !String_Parse(p, &uiInfo.aliasList[uiInfo.aliasCount].action)) { +ADDRFP4 0 +INDIRP4 +ARGP4 +CNSTI4 12 +ADDRGP4 uiInfo+74984 +INDIRI4 +MULI4 +ADDRGP4 uiInfo+74988 +ADDP4 +ARGP4 +ADDRLP4 20 +ADDRGP4 String_Parse +CALLI4 +ASGNI4 +ADDRLP4 20 +INDIRI4 +CNSTI4 0 +EQI4 $3914 +ADDRFP4 0 +INDIRP4 +ARGP4 +CNSTI4 12 +ADDRGP4 uiInfo+74984 +INDIRI4 +MULI4 +ADDRGP4 uiInfo+74988+4 +ADDP4 +ARGP4 +ADDRLP4 24 +ADDRGP4 String_Parse +CALLI4 +ASGNI4 +ADDRLP4 24 +INDIRI4 +CNSTI4 0 +EQI4 $3914 +ADDRFP4 0 +INDIRP4 +ARGP4 +CNSTI4 12 +ADDRGP4 uiInfo+74984 +INDIRI4 +MULI4 +ADDRGP4 uiInfo+74988+8 +ADDP4 +ARGP4 +ADDRLP4 28 +ADDRGP4 String_Parse +CALLI4 +ASGNI4 +ADDRLP4 28 +INDIRI4 +CNSTI4 0 +NEI4 $3903 +LABELV $3914 +line 4628 +;4628: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $3890 +JUMPV +LABELV $3903 +line 4631 +;4629: } +;4630: +;4631: Com_Printf("Loaded character alias %s using character ai %s.\n", uiInfo.aliasList[uiInfo.aliasCount].name, uiInfo.aliasList[uiInfo.aliasCount].ai); +ADDRGP4 $3915 +ARGP4 +ADDRLP4 32 +CNSTI4 12 +ASGNI4 +ADDRLP4 32 +INDIRI4 +ADDRGP4 uiInfo+74984 +INDIRI4 +MULI4 +ADDRGP4 uiInfo+74988 +ADDP4 +INDIRP4 +ARGP4 +ADDRLP4 32 +INDIRI4 +ADDRGP4 uiInfo+74984 +INDIRI4 +MULI4 +ADDRGP4 uiInfo+74988+4 +ADDP4 +INDIRP4 +ARGP4 +ADDRGP4 Com_Printf +CALLV +pop +line 4632 +;4632: if (uiInfo.aliasCount < MAX_ALIASES) { +ADDRGP4 uiInfo+74984 +INDIRI4 +CNSTI4 64 +GEI4 $3921 +line 4633 +;4633: uiInfo.aliasCount++; +ADDRLP4 36 +ADDRGP4 uiInfo+74984 +ASGNP4 +ADDRLP4 36 +INDIRP4 +ADDRLP4 36 +INDIRP4 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 4634 +;4634: } else { +ADDRGP4 $3922 +JUMPV +LABELV $3921 +line 4635 +;4635: Com_Printf("Too many aliases, last alias replaced!\n"); +ADDRGP4 $3925 +ARGP4 +ADDRGP4 Com_Printf +CALLV +pop +line 4636 +;4636: } +LABELV $3922 +line 4638 +;4637: +;4638: token = COM_ParseExt(p, qtrue); +ADDRFP4 0 +INDIRP4 +ARGP4 +CNSTI4 1 +ARGI4 +ADDRLP4 36 +ADDRGP4 COM_ParseExt +CALLP4 +ASGNP4 +ADDRLP4 0 +ADDRLP4 36 +INDIRP4 +ASGNP4 +line 4639 +;4639: if (token[0] != '}') { +ADDRLP4 0 +INDIRP4 +INDIRI1 +CVII4 1 +CNSTI4 125 +EQI4 $3926 +line 4640 +;4640: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $3890 +JUMPV +LABELV $3926 +line 4642 +;4641: } +;4642: } +LABELV $3901 +line 4643 +;4643: } +LABELV $3894 +line 4614 +ADDRGP4 $3893 +JUMPV +line 4645 +;4644: +;4645: return qfalse; +CNSTI4 0 +RETI4 +LABELV $3890 +endproc Alias_Parse 40 12 +proc UI_ParseTeamInfo 44 8 +line 4654 +;4646:} +;4647: +;4648: +;4649: +;4650:// mode +;4651:// 0 - high level parsing +;4652:// 1 - team parsing +;4653:// 2 - character parsing +;4654:static void UI_ParseTeamInfo(const char *teamFile) { +line 4657 +;4655: char *token; +;4656: char *p; +;4657: char *buff = NULL; +ADDRLP4 8 +CNSTP4 0 +ASGNP4 +line 4660 +;4658: //static int mode = 0; TTimo: unused +;4659: +;4660: buff = GetMenuBuffer(teamFile); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRLP4 12 +ADDRGP4 GetMenuBuffer +CALLP4 +ASGNP4 +ADDRLP4 8 +ADDRLP4 12 +INDIRP4 +ASGNP4 +line 4661 +;4661: if (!buff) { +ADDRLP4 8 +INDIRP4 +CVPU4 4 +CNSTU4 0 +NEU4 $3929 +line 4662 +;4662: return; +ADDRGP4 $3928 +JUMPV +LABELV $3929 +line 4665 +;4663: } +;4664: +;4665: p = buff; +ADDRLP4 4 +ADDRLP4 8 +INDIRP4 +ASGNP4 +ADDRGP4 $3932 +JUMPV +LABELV $3931 +line 4667 +;4666: +;4667: while ( 1 ) { +line 4668 +;4668: token = COM_ParseExt( &p, qtrue ); +ADDRLP4 4 +ARGP4 +CNSTI4 1 +ARGI4 +ADDRLP4 16 +ADDRGP4 COM_ParseExt +CALLP4 +ASGNP4 +ADDRLP4 0 +ADDRLP4 16 +INDIRP4 +ASGNP4 +line 4669 +;4669: if( !token || token[0] == 0 || token[0] == '}') { +ADDRLP4 0 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $3937 +ADDRLP4 24 +ADDRLP4 0 +INDIRP4 +INDIRI1 +CVII4 1 +ASGNI4 +ADDRLP4 24 +INDIRI4 +CNSTI4 0 +EQI4 $3937 +ADDRLP4 24 +INDIRI4 +CNSTI4 125 +NEI4 $3934 +LABELV $3937 +line 4670 +;4670: break; +ADDRGP4 $3933 +JUMPV +LABELV $3934 +line 4673 +;4671: } +;4672: +;4673: if ( Q_stricmp( token, "}" ) == 0 ) { +ADDRLP4 0 +INDIRP4 +ARGP4 +ADDRGP4 $452 +ARGP4 +ADDRLP4 28 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 28 +INDIRI4 +CNSTI4 0 +NEI4 $3938 +line 4674 +;4674: break; +ADDRGP4 $3933 +JUMPV +LABELV $3938 +line 4677 +;4675: } +;4676: +;4677: if (Q_stricmp(token, "teams") == 0) { +ADDRLP4 0 +INDIRP4 +ARGP4 +ADDRGP4 $3942 +ARGP4 +ADDRLP4 32 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 32 +INDIRI4 +CNSTI4 0 +NEI4 $3940 +line 4679 +;4678: +;4679: if (Team_Parse(&p)) { +ADDRLP4 4 +ARGP4 +ADDRLP4 36 +ADDRGP4 Team_Parse +CALLI4 +ASGNI4 +ADDRLP4 36 +INDIRI4 +CNSTI4 0 +EQI4 $3933 +line 4680 +;4680: continue; +ADDRGP4 $3932 +JUMPV +line 4681 +;4681: } else { +line 4682 +;4682: break; +LABELV $3940 +line 4686 +;4683: } +;4684: } +;4685: +;4686: if (Q_stricmp(token, "characters") == 0) { +ADDRLP4 0 +INDIRP4 +ARGP4 +ADDRGP4 $3947 +ARGP4 +ADDRLP4 36 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 36 +INDIRI4 +CNSTI4 0 +NEI4 $3945 +line 4687 +;4687: Character_Parse(&p); +ADDRLP4 4 +ARGP4 +ADDRGP4 Character_Parse +CALLI4 +pop +line 4688 +;4688: } +LABELV $3945 +line 4690 +;4689: +;4690: if (Q_stricmp(token, "aliases") == 0) { +ADDRLP4 0 +INDIRP4 +ARGP4 +ADDRGP4 $3950 +ARGP4 +ADDRLP4 40 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 40 +INDIRI4 +CNSTI4 0 +NEI4 $3948 +line 4691 +;4691: Alias_Parse(&p); +ADDRLP4 4 +ARGP4 +ADDRGP4 Alias_Parse +CALLI4 +pop +line 4692 +;4692: } +LABELV $3948 +line 4694 +;4693: +;4694: } +LABELV $3932 +line 4667 +ADDRGP4 $3931 +JUMPV +LABELV $3933 +line 4696 +;4695: +;4696:} +LABELV $3928 +endproc UI_ParseTeamInfo 44 8 +proc GameType_Parse 28 8 +line 4699 +;4697: +;4698: +;4699:static qboolean GameType_Parse(char **p, qboolean join) { +line 4702 +;4700: char *token; +;4701: +;4702: token = COM_ParseExt(p, qtrue); +ADDRFP4 0 +INDIRP4 +ARGP4 +CNSTI4 1 +ARGI4 +ADDRLP4 4 +ADDRGP4 COM_ParseExt +CALLP4 +ASGNP4 +ADDRLP4 0 +ADDRLP4 4 +INDIRP4 +ASGNP4 +line 4704 +;4703: +;4704: if (token[0] != '{') { +ADDRLP4 0 +INDIRP4 +INDIRI1 +CVII4 1 +CNSTI4 123 +EQI4 $3952 +line 4705 +;4705: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $3951 +JUMPV +LABELV $3952 +line 4708 +;4706: } +;4707: +;4708: if (join) { +ADDRFP4 4 +INDIRI4 +CNSTI4 0 +EQI4 $3954 +line 4709 +;4709: uiInfo.numJoinGameTypes = 0; +ADDRGP4 uiInfo+78708 +CNSTI4 0 +ASGNI4 +line 4710 +;4710: } else { +ADDRGP4 $3959 +JUMPV +LABELV $3954 +line 4711 +;4711: uiInfo.numGameTypes = 0; +ADDRGP4 uiInfo+78576 +CNSTI4 0 +ASGNI4 +line 4712 +;4712: } +ADDRGP4 $3959 +JUMPV +LABELV $3958 +line 4714 +;4713: +;4714: while ( 1 ) { +line 4715 +;4715: token = COM_ParseExt(p, qtrue); +ADDRFP4 0 +INDIRP4 +ARGP4 +CNSTI4 1 +ARGI4 +ADDRLP4 8 +ADDRGP4 COM_ParseExt +CALLP4 +ASGNP4 +ADDRLP4 0 +ADDRLP4 8 +INDIRP4 +ASGNP4 +line 4717 +;4716: +;4717: if (Q_stricmp(token, "}") == 0) { +ADDRLP4 0 +INDIRP4 +ARGP4 +ADDRGP4 $452 +ARGP4 +ADDRLP4 12 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 12 +INDIRI4 +CNSTI4 0 +NEI4 $3961 +line 4718 +;4718: return qtrue; +CNSTI4 1 +RETI4 +ADDRGP4 $3951 +JUMPV +LABELV $3961 +line 4721 +;4719: } +;4720: +;4721: if ( !token || token[0] == 0 ) { +ADDRLP4 0 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $3965 +ADDRLP4 0 +INDIRP4 +INDIRI1 +CVII4 1 +CNSTI4 0 +NEI4 $3963 +LABELV $3965 +line 4722 +;4722: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $3951 +JUMPV +LABELV $3963 +line 4725 +;4723: } +;4724: +;4725: if (token[0] == '{') { +ADDRLP4 0 +INDIRP4 +INDIRI1 +CVII4 1 +CNSTI4 123 +NEI4 $3966 +line 4727 +;4726: // two tokens per line, character name and sex +;4727: if (join) { +ADDRFP4 4 +INDIRI4 +CNSTI4 0 +EQI4 $3968 +line 4728 +;4728: if (!String_Parse(p, &uiInfo.joinGameTypes[uiInfo.numJoinGameTypes].gameType) || !Int_Parse(p, &uiInfo.joinGameTypes[uiInfo.numJoinGameTypes].gtEnum)) { +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRGP4 uiInfo+78708 +INDIRI4 +CNSTI4 3 +LSHI4 +ADDRGP4 uiInfo+78712 +ADDP4 +ARGP4 +ADDRLP4 20 +ADDRGP4 String_Parse +CALLI4 +ASGNI4 +ADDRLP4 20 +INDIRI4 +CNSTI4 0 +EQI4 $3977 +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRGP4 uiInfo+78708 +INDIRI4 +CNSTI4 3 +LSHI4 +ADDRGP4 uiInfo+78712+4 +ADDP4 +ARGP4 +ADDRLP4 24 +ADDRGP4 Int_Parse +CALLI4 +ASGNI4 +ADDRLP4 24 +INDIRI4 +CNSTI4 0 +NEI4 $3969 +LABELV $3977 +line 4729 +;4729: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $3951 +JUMPV +line 4731 +;4730: } +;4731: } else { +LABELV $3968 +line 4732 +;4732: if (!String_Parse(p, &uiInfo.gameTypes[uiInfo.numGameTypes].gameType) || !Int_Parse(p, &uiInfo.gameTypes[uiInfo.numGameTypes].gtEnum)) { +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRGP4 uiInfo+78576 +INDIRI4 +CNSTI4 3 +LSHI4 +ADDRGP4 uiInfo+78580 +ADDP4 +ARGP4 +ADDRLP4 20 +ADDRGP4 String_Parse +CALLI4 +ASGNI4 +ADDRLP4 20 +INDIRI4 +CNSTI4 0 +EQI4 $3985 +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRGP4 uiInfo+78576 +INDIRI4 +CNSTI4 3 +LSHI4 +ADDRGP4 uiInfo+78580+4 +ADDP4 +ARGP4 +ADDRLP4 24 +ADDRGP4 Int_Parse +CALLI4 +ASGNI4 +ADDRLP4 24 +INDIRI4 +CNSTI4 0 +NEI4 $3978 +LABELV $3985 +line 4733 +;4733: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $3951 +JUMPV +LABELV $3978 +line 4735 +;4734: } +;4735: } +LABELV $3969 +line 4737 +;4736: +;4737: if (join) { +ADDRFP4 4 +INDIRI4 +CNSTI4 0 +EQI4 $3986 +line 4738 +;4738: if (uiInfo.numJoinGameTypes < MAX_GAMETYPES) { +ADDRGP4 uiInfo+78708 +INDIRI4 +CNSTI4 16 +GEI4 $3988 +line 4739 +;4739: uiInfo.numJoinGameTypes++; +ADDRLP4 20 +ADDRGP4 uiInfo+78708 +ASGNP4 +ADDRLP4 20 +INDIRP4 +ADDRLP4 20 +INDIRP4 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 4740 +;4740: } else { +ADDRGP4 $3987 +JUMPV +LABELV $3988 +line 4741 +;4741: Com_Printf("Too many net game types, last one replace!\n"); +ADDRGP4 $3992 +ARGP4 +ADDRGP4 Com_Printf +CALLV +pop +line 4742 +;4742: } +line 4743 +;4743: } else { +ADDRGP4 $3987 +JUMPV +LABELV $3986 +line 4744 +;4744: if (uiInfo.numGameTypes < MAX_GAMETYPES) { +ADDRGP4 uiInfo+78576 +INDIRI4 +CNSTI4 16 +GEI4 $3993 +line 4745 +;4745: uiInfo.numGameTypes++; +ADDRLP4 20 +ADDRGP4 uiInfo+78576 +ASGNP4 +ADDRLP4 20 +INDIRP4 +ADDRLP4 20 +INDIRP4 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 4746 +;4746: } else { +ADDRGP4 $3994 +JUMPV +LABELV $3993 +line 4747 +;4747: Com_Printf("Too many game types, last one replace!\n"); +ADDRGP4 $3997 +ARGP4 +ADDRGP4 Com_Printf +CALLV +pop +line 4748 +;4748: } +LABELV $3994 +line 4749 +;4749: } +LABELV $3987 +line 4751 +;4750: +;4751: token = COM_ParseExt(p, qtrue); +ADDRFP4 0 +INDIRP4 +ARGP4 +CNSTI4 1 +ARGI4 +ADDRLP4 20 +ADDRGP4 COM_ParseExt +CALLP4 +ASGNP4 +ADDRLP4 0 +ADDRLP4 20 +INDIRP4 +ASGNP4 +line 4752 +;4752: if (token[0] != '}') { +ADDRLP4 0 +INDIRP4 +INDIRI1 +CVII4 1 +CNSTI4 125 +EQI4 $3998 +line 4753 +;4753: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $3951 +JUMPV +LABELV $3998 +line 4755 +;4754: } +;4755: } +LABELV $3966 +line 4756 +;4756: } +LABELV $3959 +line 4714 +ADDRGP4 $3958 +JUMPV +line 4757 +;4757: return qfalse; +CNSTI4 0 +RETI4 +LABELV $3951 +endproc GameType_Parse 28 8 +proc MapList_Parse 52 8 +line 4760 +;4758:} +;4759: +;4760:static qboolean MapList_Parse(char **p) { +line 4763 +;4761: char *token; +;4762: +;4763: token = COM_ParseExt(p, qtrue); +ADDRFP4 0 +INDIRP4 +ARGP4 +CNSTI4 1 +ARGI4 +ADDRLP4 4 +ADDRGP4 COM_ParseExt +CALLP4 +ASGNP4 +ADDRLP4 0 +ADDRLP4 4 +INDIRP4 +ASGNP4 +line 4765 +;4764: +;4765: if (token[0] != '{') { +ADDRLP4 0 +INDIRP4 +INDIRI1 +CVII4 1 +CNSTI4 123 +EQI4 $4001 +line 4766 +;4766: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $4000 +JUMPV +LABELV $4001 +line 4769 +;4767: } +;4768: +;4769: uiInfo.mapCount = 0; +ADDRGP4 uiInfo+83224 +CNSTI4 0 +ASGNI4 +ADDRGP4 $4005 +JUMPV +LABELV $4004 +line 4771 +;4770: +;4771: while ( 1 ) { +line 4772 +;4772: token = COM_ParseExt(p, qtrue); +ADDRFP4 0 +INDIRP4 +ARGP4 +CNSTI4 1 +ARGI4 +ADDRLP4 8 +ADDRGP4 COM_ParseExt +CALLP4 +ASGNP4 +ADDRLP4 0 +ADDRLP4 8 +INDIRP4 +ASGNP4 +line 4774 +;4773: +;4774: if (Q_stricmp(token, "}") == 0) { +ADDRLP4 0 +INDIRP4 +ARGP4 +ADDRGP4 $452 +ARGP4 +ADDRLP4 12 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 12 +INDIRI4 +CNSTI4 0 +NEI4 $4007 +line 4775 +;4775: return qtrue; +CNSTI4 1 +RETI4 +ADDRGP4 $4000 +JUMPV +LABELV $4007 +line 4778 +;4776: } +;4777: +;4778: if ( !token || token[0] == 0 ) { +ADDRLP4 0 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $4011 +ADDRLP4 0 +INDIRP4 +INDIRI1 +CVII4 1 +CNSTI4 0 +NEI4 $4009 +LABELV $4011 +line 4779 +;4779: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $4000 +JUMPV +LABELV $4009 +line 4782 +;4780: } +;4781: +;4782: if (token[0] == '{') { +ADDRLP4 0 +INDIRP4 +INDIRI1 +CVII4 1 +CNSTI4 123 +NEI4 $4012 +line 4783 +;4783: if (!String_Parse(p, &uiInfo.mapList[uiInfo.mapCount].mapName) || !String_Parse(p, &uiInfo.mapList[uiInfo.mapCount].mapLoadName) +ADDRFP4 0 +INDIRP4 +ARGP4 +CNSTI4 100 +ADDRGP4 uiInfo+83224 +INDIRI4 +MULI4 +ADDRGP4 uiInfo+83228 +ADDP4 +ARGP4 +ADDRLP4 20 +ADDRGP4 String_Parse +CALLI4 +ASGNI4 +ADDRLP4 20 +INDIRI4 +CNSTI4 0 +EQI4 $4025 +ADDRFP4 0 +INDIRP4 +ARGP4 +CNSTI4 100 +ADDRGP4 uiInfo+83224 +INDIRI4 +MULI4 +ADDRGP4 uiInfo+83228+4 +ADDP4 +ARGP4 +ADDRLP4 24 +ADDRGP4 String_Parse +CALLI4 +ASGNI4 +ADDRLP4 24 +INDIRI4 +CNSTI4 0 +EQI4 $4025 +ADDRFP4 0 +INDIRP4 +ARGP4 +CNSTI4 100 +ADDRGP4 uiInfo+83224 +INDIRI4 +MULI4 +ADDRGP4 uiInfo+83228+16 +ADDP4 +ARGP4 +ADDRLP4 28 +ADDRGP4 Int_Parse +CALLI4 +ASGNI4 +ADDRLP4 28 +INDIRI4 +CNSTI4 0 +NEI4 $4014 +LABELV $4025 +line 4784 +;4784: ||!Int_Parse(p, &uiInfo.mapList[uiInfo.mapCount].teamMembers) ) { +line 4785 +;4785: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $4000 +JUMPV +LABELV $4014 +line 4788 +;4786: } +;4787: +;4788: if (!String_Parse(p, &uiInfo.mapList[uiInfo.mapCount].opponentName)) { +ADDRFP4 0 +INDIRP4 +ARGP4 +CNSTI4 100 +ADDRGP4 uiInfo+83224 +INDIRI4 +MULI4 +ADDRGP4 uiInfo+83228+12 +ADDP4 +ARGP4 +ADDRLP4 32 +ADDRGP4 String_Parse +CALLI4 +ASGNI4 +ADDRLP4 32 +INDIRI4 +CNSTI4 0 +NEI4 $4026 +line 4789 +;4789: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $4000 +JUMPV +LABELV $4026 +line 4792 +;4790: } +;4791: +;4792: uiInfo.mapList[uiInfo.mapCount].typeBits = 0; +CNSTI4 100 +ADDRGP4 uiInfo+83224 +INDIRI4 +MULI4 +ADDRGP4 uiInfo+83228+20 +ADDP4 +CNSTI4 0 +ASGNI4 +ADDRGP4 $4035 +JUMPV +LABELV $4034 +line 4794 +;4793: +;4794: while (1) { +line 4795 +;4795: token = COM_ParseExt(p, qtrue); +ADDRFP4 0 +INDIRP4 +ARGP4 +CNSTI4 1 +ARGI4 +ADDRLP4 36 +ADDRGP4 COM_ParseExt +CALLP4 +ASGNP4 +ADDRLP4 0 +ADDRLP4 36 +INDIRP4 +ASGNP4 +line 4796 +;4796: if (token[0] >= '0' && token[0] <= '9') { +ADDRLP4 40 +ADDRLP4 0 +INDIRP4 +INDIRI1 +CVII4 1 +ASGNI4 +ADDRLP4 40 +INDIRI4 +CNSTI4 48 +LTI4 $4036 +ADDRLP4 40 +INDIRI4 +CNSTI4 57 +GTI4 $4036 +line 4797 +;4797: uiInfo.mapList[uiInfo.mapCount].typeBits |= (1 << (token[0] - 0x030)); +ADDRLP4 44 +CNSTI4 100 +ADDRGP4 uiInfo+83224 +INDIRI4 +MULI4 +ADDRGP4 uiInfo+83228+20 +ADDP4 +ASGNP4 +ADDRLP4 44 +INDIRP4 +ADDRLP4 44 +INDIRP4 +INDIRI4 +CNSTI4 1 +ADDRLP4 0 +INDIRP4 +INDIRI1 +CVII4 1 +CNSTI4 48 +SUBI4 +LSHI4 +BORI4 +ASGNI4 +line 4798 +;4798: if (!Int_Parse(p, &uiInfo.mapList[uiInfo.mapCount].timeToBeat[token[0] - 0x30])) { +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRLP4 0 +INDIRP4 +INDIRI1 +CVII4 1 +CNSTI4 2 +LSHI4 +CNSTI4 192 +SUBI4 +CNSTI4 100 +ADDRGP4 uiInfo+83224 +INDIRI4 +MULI4 +ADDRGP4 uiInfo+83228+28 +ADDP4 +ADDP4 +ARGP4 +ADDRLP4 48 +ADDRGP4 Int_Parse +CALLI4 +ASGNI4 +ADDRLP4 48 +INDIRI4 +CNSTI4 0 +NEI4 $4038 +line 4799 +;4799: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $4000 +JUMPV +line 4801 +;4800: } +;4801: } else { +line 4802 +;4802: break; +LABELV $4038 +line 4804 +;4803: } +;4804: } +LABELV $4035 +line 4794 +ADDRGP4 $4034 +JUMPV +LABELV $4036 +line 4811 +;4805: +;4806: //mapList[mapCount].imageName = String_Alloc(va("levelshots/%s", mapList[mapCount].mapLoadName)); +;4807: //if (uiInfo.mapCount == 0) { +;4808: // only load the first cinematic, selection loads the others +;4809: // uiInfo.mapList[uiInfo.mapCount].cinematic = trap_CIN_PlayCinematic(va("%s.roq",uiInfo.mapList[uiInfo.mapCount].mapLoadName), qfalse, qfalse, qtrue, 0, 0, 0, 0); +;4810: //} +;4811: uiInfo.mapList[uiInfo.mapCount].cinematic = -1; +CNSTI4 100 +ADDRGP4 uiInfo+83224 +INDIRI4 +MULI4 +ADDRGP4 uiInfo+83228+24 +ADDP4 +CNSTI4 -1 +ASGNI4 +line 4812 +;4812: uiInfo.mapList[uiInfo.mapCount].levelShot = trap_R_RegisterShaderNoMip(va("levelshots/%s_small", uiInfo.mapList[uiInfo.mapCount].mapLoadName)); +ADDRGP4 $4053 +ARGP4 +ADDRLP4 36 +CNSTI4 100 +ASGNI4 +ADDRLP4 36 +INDIRI4 +ADDRGP4 uiInfo+83224 +INDIRI4 +MULI4 +ADDRGP4 uiInfo+83228+4 +ADDP4 +INDIRP4 +ARGP4 +ADDRLP4 40 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRLP4 40 +INDIRP4 +ARGP4 +ADDRLP4 44 +ADDRGP4 trap_R_RegisterShaderNoMip +CALLI4 +ASGNI4 +ADDRLP4 36 +INDIRI4 +ADDRGP4 uiInfo+83224 +INDIRI4 +MULI4 +ADDRGP4 uiInfo+83228+92 +ADDP4 +ADDRLP4 44 +INDIRI4 +ASGNI4 +line 4814 +;4813: +;4814: if (uiInfo.mapCount < MAX_MAPS) { +ADDRGP4 uiInfo+83224 +INDIRI4 +CNSTI4 128 +GEI4 $4057 +line 4815 +;4815: uiInfo.mapCount++; +ADDRLP4 48 +ADDRGP4 uiInfo+83224 +ASGNP4 +ADDRLP4 48 +INDIRP4 +ADDRLP4 48 +INDIRP4 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 4816 +;4816: } else { +ADDRGP4 $4058 +JUMPV +LABELV $4057 +line 4817 +;4817: Com_Printf("Too many maps, last one replaced!\n"); +ADDRGP4 $4061 +ARGP4 +ADDRGP4 Com_Printf +CALLV +pop +line 4818 +;4818: } +LABELV $4058 +line 4819 +;4819: } +LABELV $4012 +line 4820 +;4820: } +LABELV $4005 +line 4771 +ADDRGP4 $4004 +JUMPV +line 4821 +;4821: return qfalse; +CNSTI4 0 +RETI4 +LABELV $4000 +endproc MapList_Parse 52 8 +proc UI_ParseGameInfo 44 8 +line 4824 +;4822:} +;4823: +;4824:static void UI_ParseGameInfo(const char *teamFile) { +line 4827 +;4825: char *token; +;4826: char *p; +;4827: char *buff = NULL; +ADDRLP4 8 +CNSTP4 0 +ASGNP4 +line 4830 +;4828: //int mode = 0; TTimo: unused +;4829: +;4830: buff = GetMenuBuffer(teamFile); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRLP4 12 +ADDRGP4 GetMenuBuffer +CALLP4 +ASGNP4 +ADDRLP4 8 +ADDRLP4 12 +INDIRP4 +ASGNP4 +line 4831 +;4831: if (!buff) { +ADDRLP4 8 +INDIRP4 +CVPU4 4 +CNSTU4 0 +NEU4 $4063 +line 4832 +;4832: return; +ADDRGP4 $4062 +JUMPV +LABELV $4063 +line 4835 +;4833: } +;4834: +;4835: p = buff; +ADDRLP4 4 +ADDRLP4 8 +INDIRP4 +ASGNP4 +ADDRGP4 $4066 +JUMPV +LABELV $4065 +line 4837 +;4836: +;4837: while ( 1 ) { +line 4838 +;4838: token = COM_ParseExt( &p, qtrue ); +ADDRLP4 4 +ARGP4 +CNSTI4 1 +ARGI4 +ADDRLP4 16 +ADDRGP4 COM_ParseExt +CALLP4 +ASGNP4 +ADDRLP4 0 +ADDRLP4 16 +INDIRP4 +ASGNP4 +line 4839 +;4839: if( !token || token[0] == 0 || token[0] == '}') { +ADDRLP4 0 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $4071 +ADDRLP4 24 +ADDRLP4 0 +INDIRP4 +INDIRI1 +CVII4 1 +ASGNI4 +ADDRLP4 24 +INDIRI4 +CNSTI4 0 +EQI4 $4071 +ADDRLP4 24 +INDIRI4 +CNSTI4 125 +NEI4 $4068 +LABELV $4071 +line 4840 +;4840: break; +ADDRGP4 $4067 +JUMPV +LABELV $4068 +line 4843 +;4841: } +;4842: +;4843: if ( Q_stricmp( token, "}" ) == 0 ) { +ADDRLP4 0 +INDIRP4 +ARGP4 +ADDRGP4 $452 +ARGP4 +ADDRLP4 28 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 28 +INDIRI4 +CNSTI4 0 +NEI4 $4072 +line 4844 +;4844: break; +ADDRGP4 $4067 +JUMPV +LABELV $4072 +line 4847 +;4845: } +;4846: +;4847: if (Q_stricmp(token, "gametypes") == 0) { +ADDRLP4 0 +INDIRP4 +ARGP4 +ADDRGP4 $4076 +ARGP4 +ADDRLP4 32 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 32 +INDIRI4 +CNSTI4 0 +NEI4 $4074 +line 4849 +;4848: +;4849: if (GameType_Parse(&p, qfalse)) { +ADDRLP4 4 +ARGP4 +CNSTI4 0 +ARGI4 +ADDRLP4 36 +ADDRGP4 GameType_Parse +CALLI4 +ASGNI4 +ADDRLP4 36 +INDIRI4 +CNSTI4 0 +EQI4 $4067 +line 4850 +;4850: continue; +ADDRGP4 $4066 +JUMPV +line 4851 +;4851: } else { +line 4852 +;4852: break; +LABELV $4074 +line 4856 +;4853: } +;4854: } +;4855: +;4856: if (Q_stricmp(token, "joingametypes") == 0) { +ADDRLP4 0 +INDIRP4 +ARGP4 +ADDRGP4 $4081 +ARGP4 +ADDRLP4 36 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 36 +INDIRI4 +CNSTI4 0 +NEI4 $4079 +line 4858 +;4857: +;4858: if (GameType_Parse(&p, qtrue)) { +ADDRLP4 4 +ARGP4 +CNSTI4 1 +ARGI4 +ADDRLP4 40 +ADDRGP4 GameType_Parse +CALLI4 +ASGNI4 +ADDRLP4 40 +INDIRI4 +CNSTI4 0 +EQI4 $4067 +line 4859 +;4859: continue; +ADDRGP4 $4066 +JUMPV +line 4860 +;4860: } else { +line 4861 +;4861: break; +LABELV $4079 +line 4865 +;4862: } +;4863: } +;4864: +;4865: if (Q_stricmp(token, "maps") == 0) { +ADDRLP4 0 +INDIRP4 +ARGP4 +ADDRGP4 $4086 +ARGP4 +ADDRLP4 40 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 40 +INDIRI4 +CNSTI4 0 +NEI4 $4084 +line 4867 +;4866: // start a new menu +;4867: MapList_Parse(&p); +ADDRLP4 4 +ARGP4 +ADDRGP4 MapList_Parse +CALLI4 +pop +line 4868 +;4868: } +LABELV $4084 +line 4870 +;4869: +;4870: } +LABELV $4066 +line 4837 +ADDRGP4 $4065 +JUMPV +LABELV $4067 +line 4871 +;4871:} +LABELV $4062 +endproc UI_ParseGameInfo 44 8 +proc UI_Pause 4 8 +line 4873 +;4872: +;4873:static void UI_Pause(qboolean b) { +line 4874 +;4874: if (b) { +ADDRFP4 0 +INDIRI4 +CNSTI4 0 +EQI4 $4088 +line 4876 +;4875: // pause the game and set the ui keycatcher +;4876: trap_Cvar_Set( "cl_paused", "1" ); +ADDRGP4 $2618 +ARGP4 +ADDRGP4 $398 +ARGP4 +ADDRGP4 trap_Cvar_Set +CALLV +pop +line 4877 +;4877: trap_Key_SetCatcher( KEYCATCH_UI ); +CNSTI4 2 +ARGI4 +ADDRGP4 trap_Key_SetCatcher +CALLV +pop +line 4878 +;4878: } else { +ADDRGP4 $4089 +JUMPV +LABELV $4088 +line 4880 +;4879: // unpause the game and clear the ui keycatcher +;4880: trap_Key_SetCatcher( trap_Key_GetCatcher() & ~KEYCATCH_UI ); +ADDRLP4 0 +ADDRGP4 trap_Key_GetCatcher +CALLI4 +ASGNI4 +ADDRLP4 0 +INDIRI4 +CNSTI4 -3 +BANDI4 +ARGI4 +ADDRGP4 trap_Key_SetCatcher +CALLV +pop +line 4881 +;4881: trap_Key_ClearStates(); +ADDRGP4 trap_Key_ClearStates +CALLV +pop +line 4882 +;4882: trap_Cvar_Set( "cl_paused", "0" ); +ADDRGP4 $2618 +ARGP4 +ADDRGP4 $395 +ARGP4 +ADDRGP4 trap_Cvar_Set +CALLV +pop +line 4883 +;4883: } +LABELV $4089 +line 4884 +;4884:} +LABELV $4087 +endproc UI_Pause 4 8 +proc UI_OwnerDraw_Width 0 0 +line 4887 +;4885: +;4886:#ifndef MISSIONPACK // bk001206 +;4887:static int UI_OwnerDraw_Width(int ownerDraw) { +line 4889 +;4888: // bk001205 - LCC missing return value +;4889: return 0; +CNSTI4 0 +RETI4 +LABELV $4090 +endproc UI_OwnerDraw_Width 0 0 +proc UI_PlayCinematic 4 24 +line 4893 +;4890:} +;4891:#endif +;4892: +;4893:static int UI_PlayCinematic(const char *name, float x, float y, float w, float h) { +line 4894 +;4894: return trap_CIN_PlayCinematic(name, x, y, w, h, (CIN_loop | CIN_silent)); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRFP4 4 +INDIRF4 +CVFI4 4 +ARGI4 +ADDRFP4 8 +INDIRF4 +CVFI4 4 +ARGI4 +ADDRFP4 12 +INDIRF4 +CVFI4 4 +ARGI4 +ADDRFP4 16 +INDIRF4 +CVFI4 4 +ARGI4 +CNSTI4 10 +ARGI4 +ADDRLP4 0 +ADDRGP4 trap_CIN_PlayCinematic +CALLI4 +ASGNI4 +ADDRLP4 0 +INDIRI4 +RETI4 +LABELV $4091 +endproc UI_PlayCinematic 4 24 +proc UI_StopCinematic 20 4 +line 4897 +;4895:} +;4896: +;4897:static void UI_StopCinematic(int handle) { +line 4898 +;4898: if (handle >= 0) { +ADDRFP4 0 +INDIRI4 +CNSTI4 0 +LTI4 $4093 +line 4899 +;4899: trap_CIN_StopCinematic(handle); +ADDRFP4 0 +INDIRI4 +ARGI4 +ADDRGP4 trap_CIN_StopCinematic +CALLI4 +pop +line 4900 +;4900: } else { +ADDRGP4 $4094 +JUMPV +LABELV $4093 +line 4901 +;4901: handle = abs(handle); +ADDRFP4 0 +INDIRI4 +ARGI4 +ADDRLP4 0 +ADDRGP4 abs +CALLI4 +ASGNI4 +ADDRFP4 0 +ADDRLP4 0 +INDIRI4 +ASGNI4 +line 4902 +;4902: if (handle == UI_MAPCINEMATIC) { +ADDRFP4 0 +INDIRI4 +CNSTI4 244 +NEI4 $4095 +line 4903 +;4903: if (uiInfo.mapList[ui_currentMap.integer].cinematic >= 0) { +CNSTI4 100 +ADDRGP4 ui_currentMap+12 +INDIRI4 +MULI4 +ADDRGP4 uiInfo+83228+24 +ADDP4 +INDIRI4 +CNSTI4 0 +LTI4 $4096 +line 4904 +;4904: trap_CIN_StopCinematic(uiInfo.mapList[ui_currentMap.integer].cinematic); +CNSTI4 100 +ADDRGP4 ui_currentMap+12 +INDIRI4 +MULI4 +ADDRGP4 uiInfo+83228+24 +ADDP4 +INDIRI4 +ARGI4 +ADDRGP4 trap_CIN_StopCinematic +CALLI4 +pop +line 4905 +;4905: uiInfo.mapList[ui_currentMap.integer].cinematic = -1; +CNSTI4 100 +ADDRGP4 ui_currentMap+12 +INDIRI4 +MULI4 +ADDRGP4 uiInfo+83228+24 +ADDP4 +CNSTI4 -1 +ASGNI4 +line 4906 +;4906: } +line 4907 +;4907: } else if (handle == UI_NETMAPCINEMATIC) { +ADDRGP4 $4096 +JUMPV +LABELV $4095 +ADDRFP4 0 +INDIRI4 +CNSTI4 246 +NEI4 $4108 +line 4908 +;4908: if (uiInfo.serverStatus.currentServerCinematic >= 0) { +ADDRGP4 uiInfo+99264+10432 +INDIRI4 +CNSTI4 0 +LTI4 $4109 +line 4909 +;4909: trap_CIN_StopCinematic(uiInfo.serverStatus.currentServerCinematic); +ADDRGP4 uiInfo+99264+10432 +INDIRI4 +ARGI4 +ADDRGP4 trap_CIN_StopCinematic +CALLI4 +pop +line 4910 +;4910: uiInfo.serverStatus.currentServerCinematic = -1; +ADDRGP4 uiInfo+99264+10432 +CNSTI4 -1 +ASGNI4 +line 4911 +;4911: } +line 4912 +;4912: } else if (handle == UI_CLANCINEMATIC) { +ADDRGP4 $4109 +JUMPV +LABELV $4108 +ADDRFP4 0 +INDIRI4 +CNSTI4 251 +NEI4 $4118 +line 4913 +;4913: int i = UI_TeamIndexFromName(UI_Cvar_VariableString("ui_teamName")); +ADDRGP4 $701 +ARGP4 +ADDRLP4 8 +ADDRGP4 UI_Cvar_VariableString +CALLP4 +ASGNP4 +ADDRLP4 8 +INDIRP4 +ARGP4 +ADDRLP4 12 +ADDRGP4 UI_TeamIndexFromName +CALLI4 +ASGNI4 +ADDRLP4 4 +ADDRLP4 12 +INDIRI4 +ASGNI4 +line 4914 +;4914: if (i >= 0 && i < uiInfo.teamCount) { +ADDRLP4 16 +ADDRLP4 4 +INDIRI4 +ASGNI4 +ADDRLP4 16 +INDIRI4 +CNSTI4 0 +LTI4 $4120 +ADDRLP4 16 +INDIRI4 +ADDRGP4 uiInfo+75756 +INDIRI4 +GEI4 $4120 +line 4915 +;4915: if (uiInfo.teamList[i].cinematic >= 0) { +CNSTI4 44 +ADDRLP4 4 +INDIRI4 +MULI4 +ADDRGP4 uiInfo+75760+40 +ADDP4 +INDIRI4 +CNSTI4 0 +LTI4 $4123 +line 4916 +;4916: trap_CIN_StopCinematic(uiInfo.teamList[i].cinematic); +CNSTI4 44 +ADDRLP4 4 +INDIRI4 +MULI4 +ADDRGP4 uiInfo+75760+40 +ADDP4 +INDIRI4 +ARGI4 +ADDRGP4 trap_CIN_StopCinematic +CALLI4 +pop +line 4917 +;4917: uiInfo.teamList[i].cinematic = -1; +CNSTI4 44 +ADDRLP4 4 +INDIRI4 +MULI4 +ADDRGP4 uiInfo+75760+40 +ADDP4 +CNSTI4 -1 +ASGNI4 +line 4918 +;4918: } +LABELV $4123 +line 4919 +;4919: } +LABELV $4120 +line 4920 +;4920: } +LABELV $4118 +LABELV $4109 +LABELV $4096 +line 4921 +;4921: } +LABELV $4094 +line 4922 +;4922:} +LABELV $4092 +endproc UI_StopCinematic 20 4 +proc UI_DrawCinematic 0 20 +line 4924 +;4923: +;4924:static void UI_DrawCinematic(int handle, float x, float y, float w, float h) { +line 4925 +;4925: trap_CIN_SetExtents(handle, x, y, w, h); +ADDRFP4 0 +INDIRI4 +ARGI4 +ADDRFP4 4 +INDIRF4 +CVFI4 4 +ARGI4 +ADDRFP4 8 +INDIRF4 +CVFI4 4 +ARGI4 +ADDRFP4 12 +INDIRF4 +CVFI4 4 +ARGI4 +ADDRFP4 16 +INDIRF4 +CVFI4 4 +ARGI4 +ADDRGP4 trap_CIN_SetExtents +CALLV +pop +line 4926 +;4926: trap_CIN_DrawCinematic(handle); +ADDRFP4 0 +INDIRI4 +ARGI4 +ADDRGP4 trap_CIN_DrawCinematic +CALLV +pop +line 4927 +;4927:} +LABELV $4131 +endproc UI_DrawCinematic 0 20 +proc UI_RunCinematicFrame 0 4 +line 4929 +;4928: +;4929:static void UI_RunCinematicFrame(int handle) { +line 4930 +;4930: trap_CIN_RunCinematic(handle); +ADDRFP4 0 +INDIRI4 +ARGI4 +ADDRGP4 trap_CIN_RunCinematic +CALLI4 +pop +line 4931 +;4931:} +LABELV $4132 +endproc UI_RunCinematicFrame 0 4 +proc UI_BuildQ3Model_List 4520 20 +line 4941 +;4932: +;4933: +;4934: +;4935:/* +;4936:================= +;4937:PlayerModel_BuildList +;4938:================= +;4939:*/ +;4940:static void UI_BuildQ3Model_List( void ) +;4941:{ +line 4955 +;4942: int numdirs; +;4943: int numfiles; +;4944: char dirlist[2048]; +;4945: char filelist[2048]; +;4946: char skinname[64]; +;4947: char scratch[256]; +;4948: char* dirptr; +;4949: char* fileptr; +;4950: int i; +;4951: int j, k, dirty; +;4952: int dirlen; +;4953: int filelen; +;4954: +;4955: uiInfo.q3HeadCount = 0; +ADDRGP4 uiInfo+119488 +CNSTI4 0 +ASGNI4 +line 4958 +;4956: +;4957: // iterate directory of all player models +;4958: numdirs = trap_FS_GetFileList("models/players", "/", dirlist, 2048 ); +ADDRGP4 $4135 +ARGP4 +ADDRGP4 $4136 +ARGP4 +ADDRLP4 2408 +ARGP4 +CNSTI4 2048 +ARGI4 +ADDRLP4 4456 +ADDRGP4 trap_FS_GetFileList +CALLI4 +ASGNI4 +ADDRLP4 2404 +ADDRLP4 4456 +INDIRI4 +ASGNI4 +line 4959 +;4959: dirptr = dirlist; +ADDRLP4 340 +ADDRLP4 2408 +ASGNP4 +line 4960 +;4960: for (i=0; i uiInfo.uiDC.glconfig.vidHeight * 640 ) { +CNSTI4 480 +ADDRGP4 uiInfo+62068+11304 +INDIRI4 +MULI4 +CNSTI4 640 +ADDRGP4 uiInfo+62068+11308 +INDIRI4 +MULI4 +LEI4 $4194 +line 5028 +;5027: // wide screen +;5028: uiInfo.uiDC.bias = 0.5 * ( uiInfo.uiDC.glconfig.vidWidth - ( uiInfo.uiDC.glconfig.vidHeight * (640.0/480.0) ) ); +ADDRGP4 uiInfo+204 +CNSTF4 1056964608 +ADDRGP4 uiInfo+62068+11304 +INDIRI4 +CVIF4 4 +CNSTF4 1068149419 +ADDRGP4 uiInfo+62068+11308 +INDIRI4 +CVIF4 4 +MULF4 +SUBF4 +MULF4 +ASGNF4 +line 5029 +;5029: } +ADDRGP4 $4195 +JUMPV +LABELV $4194 +line 5030 +;5030: else { +line 5032 +;5031: // no wide screen +;5032: uiInfo.uiDC.bias = 0; +ADDRGP4 uiInfo+204 +CNSTF4 0 +ASGNF4 +line 5033 +;5033: } +LABELV $4195 +line 5037 +;5034: +;5035: +;5036: //UI_Load(); +;5037: uiInfo.uiDC.registerShaderNoMip = &trap_R_RegisterShaderNoMip; +ADDRGP4 uiInfo +ADDRGP4 trap_R_RegisterShaderNoMip +ASGNP4 +line 5038 +;5038: uiInfo.uiDC.setColor = &UI_SetColor; +ADDRGP4 uiInfo+4 +ADDRGP4 UI_SetColor +ASGNP4 +line 5039 +;5039: uiInfo.uiDC.drawHandlePic = &UI_DrawHandlePic; +ADDRGP4 uiInfo+8 +ADDRGP4 UI_DrawHandlePic +ASGNP4 +line 5040 +;5040: uiInfo.uiDC.drawStretchPic = &trap_R_DrawStretchPic; +ADDRGP4 uiInfo+12 +ADDRGP4 trap_R_DrawStretchPic +ASGNP4 +line 5041 +;5041: uiInfo.uiDC.drawText = &Text_Paint; +ADDRGP4 uiInfo+16 +ADDRGP4 Text_Paint +ASGNP4 +line 5042 +;5042: uiInfo.uiDC.textWidth = &Text_Width; +ADDRGP4 uiInfo+20 +ADDRGP4 Text_Width +ASGNP4 +line 5043 +;5043: uiInfo.uiDC.textHeight = &Text_Height; +ADDRGP4 uiInfo+24 +ADDRGP4 Text_Height +ASGNP4 +line 5044 +;5044: uiInfo.uiDC.registerModel = &trap_R_RegisterModel; +ADDRGP4 uiInfo+28 +ADDRGP4 trap_R_RegisterModel +ASGNP4 +line 5045 +;5045: uiInfo.uiDC.modelBounds = &trap_R_ModelBounds; +ADDRGP4 uiInfo+32 +ADDRGP4 trap_R_ModelBounds +ASGNP4 +line 5046 +;5046: uiInfo.uiDC.fillRect = &UI_FillRect; +ADDRGP4 uiInfo+36 +ADDRGP4 UI_FillRect +ASGNP4 +line 5047 +;5047: uiInfo.uiDC.drawRect = &_UI_DrawRect; +ADDRGP4 uiInfo+40 +ADDRGP4 _UI_DrawRect +ASGNP4 +line 5048 +;5048: uiInfo.uiDC.drawSides = &_UI_DrawSides; +ADDRGP4 uiInfo+44 +ADDRGP4 _UI_DrawSides +ASGNP4 +line 5049 +;5049: uiInfo.uiDC.drawTopBottom = &_UI_DrawTopBottom; +ADDRGP4 uiInfo+48 +ADDRGP4 _UI_DrawTopBottom +ASGNP4 +line 5050 +;5050: uiInfo.uiDC.clearScene = &trap_R_ClearScene; +ADDRGP4 uiInfo+52 +ADDRGP4 trap_R_ClearScene +ASGNP4 +line 5051 +;5051: uiInfo.uiDC.drawSides = &_UI_DrawSides; +ADDRGP4 uiInfo+44 +ADDRGP4 _UI_DrawSides +ASGNP4 +line 5052 +;5052: uiInfo.uiDC.addRefEntityToScene = &trap_R_AddRefEntityToScene; +ADDRGP4 uiInfo+56 +ADDRGP4 trap_R_AddRefEntityToScene +ASGNP4 +line 5053 +;5053: uiInfo.uiDC.renderScene = &trap_R_RenderScene; +ADDRGP4 uiInfo+60 +ADDRGP4 trap_R_RenderScene +ASGNP4 +line 5054 +;5054: uiInfo.uiDC.registerFont = &trap_R_RegisterFont; +ADDRGP4 uiInfo+64 +ADDRGP4 trap_R_RegisterFont +ASGNP4 +line 5055 +;5055: uiInfo.uiDC.ownerDrawItem = &UI_OwnerDraw; +ADDRGP4 uiInfo+68 +ADDRGP4 UI_OwnerDraw +ASGNP4 +line 5056 +;5056: uiInfo.uiDC.getValue = &UI_GetValue; +ADDRGP4 uiInfo+72 +ADDRGP4 UI_GetValue +ASGNP4 +line 5057 +;5057: uiInfo.uiDC.ownerDrawVisible = &UI_OwnerDrawVisible; +ADDRGP4 uiInfo+76 +ADDRGP4 UI_OwnerDrawVisible +ASGNP4 +line 5058 +;5058: uiInfo.uiDC.runScript = &UI_RunMenuScript; +ADDRGP4 uiInfo+80 +ADDRGP4 UI_RunMenuScript +ASGNP4 +line 5059 +;5059: uiInfo.uiDC.getTeamColor = &UI_GetTeamColor; +ADDRGP4 uiInfo+84 +ADDRGP4 UI_GetTeamColor +ASGNP4 +line 5060 +;5060: uiInfo.uiDC.setCVar = trap_Cvar_Set; +ADDRGP4 uiInfo+96 +ADDRGP4 trap_Cvar_Set +ASGNP4 +line 5061 +;5061: uiInfo.uiDC.getCVarString = trap_Cvar_VariableStringBuffer; +ADDRGP4 uiInfo+88 +ADDRGP4 trap_Cvar_VariableStringBuffer +ASGNP4 +line 5062 +;5062: uiInfo.uiDC.getCVarValue = trap_Cvar_VariableValue; +ADDRGP4 uiInfo+92 +ADDRGP4 trap_Cvar_VariableValue +ASGNP4 +line 5063 +;5063: uiInfo.uiDC.drawTextWithCursor = &Text_PaintWithCursor; +ADDRGP4 uiInfo+100 +ADDRGP4 Text_PaintWithCursor +ASGNP4 +line 5064 +;5064: uiInfo.uiDC.setOverstrikeMode = &trap_Key_SetOverstrikeMode; +ADDRGP4 uiInfo+104 +ADDRGP4 trap_Key_SetOverstrikeMode +ASGNP4 +line 5065 +;5065: uiInfo.uiDC.getOverstrikeMode = &trap_Key_GetOverstrikeMode; +ADDRGP4 uiInfo+108 +ADDRGP4 trap_Key_GetOverstrikeMode +ASGNP4 +line 5066 +;5066: uiInfo.uiDC.startLocalSound = &trap_S_StartLocalSound; +ADDRGP4 uiInfo+112 +ADDRGP4 trap_S_StartLocalSound +ASGNP4 +line 5067 +;5067: uiInfo.uiDC.ownerDrawHandleKey = &UI_OwnerDrawHandleKey; +ADDRGP4 uiInfo+116 +ADDRGP4 UI_OwnerDrawHandleKey +ASGNP4 +line 5068 +;5068: uiInfo.uiDC.feederCount = &UI_FeederCount; +ADDRGP4 uiInfo+120 +ADDRGP4 UI_FeederCount +ASGNP4 +line 5069 +;5069: uiInfo.uiDC.feederItemImage = &UI_FeederItemImage; +ADDRGP4 uiInfo+128 +ADDRGP4 UI_FeederItemImage +ASGNP4 +line 5070 +;5070: uiInfo.uiDC.feederItemText = &UI_FeederItemText; +ADDRGP4 uiInfo+124 +ADDRGP4 UI_FeederItemText +ASGNP4 +line 5071 +;5071: uiInfo.uiDC.feederSelection = &UI_FeederSelection; +ADDRGP4 uiInfo+132 +ADDRGP4 UI_FeederSelection +ASGNP4 +line 5072 +;5072: uiInfo.uiDC.setBinding = &trap_Key_SetBinding; +ADDRGP4 uiInfo+144 +ADDRGP4 trap_Key_SetBinding +ASGNP4 +line 5073 +;5073: uiInfo.uiDC.getBindingBuf = &trap_Key_GetBindingBuf; +ADDRGP4 uiInfo+140 +ADDRGP4 trap_Key_GetBindingBuf +ASGNP4 +line 5074 +;5074: uiInfo.uiDC.keynumToStringBuf = &trap_Key_KeynumToStringBuf; +ADDRGP4 uiInfo+136 +ADDRGP4 trap_Key_KeynumToStringBuf +ASGNP4 +line 5075 +;5075: uiInfo.uiDC.executeText = &trap_Cmd_ExecuteText; +ADDRGP4 uiInfo+148 +ADDRGP4 trap_Cmd_ExecuteText +ASGNP4 +line 5076 +;5076: uiInfo.uiDC.Error = &Com_Error; +ADDRGP4 uiInfo+152 +ADDRGP4 Com_Error +ASGNP4 +line 5077 +;5077: uiInfo.uiDC.Print = &Com_Printf; +ADDRGP4 uiInfo+156 +ADDRGP4 Com_Printf +ASGNP4 +line 5078 +;5078: uiInfo.uiDC.Pause = &UI_Pause; +ADDRGP4 uiInfo+160 +ADDRGP4 UI_Pause +ASGNP4 +line 5079 +;5079: uiInfo.uiDC.ownerDrawWidth = &UI_OwnerDrawWidth; +ADDRGP4 uiInfo+164 +ADDRGP4 UI_OwnerDrawWidth +ASGNP4 +line 5080 +;5080: uiInfo.uiDC.registerSound = &trap_S_RegisterSound; +ADDRGP4 uiInfo+168 +ADDRGP4 trap_S_RegisterSound +ASGNP4 +line 5081 +;5081: uiInfo.uiDC.startBackgroundTrack = &trap_S_StartBackgroundTrack; +ADDRGP4 uiInfo+172 +ADDRGP4 trap_S_StartBackgroundTrack +ASGNP4 +line 5082 +;5082: uiInfo.uiDC.stopBackgroundTrack = &trap_S_StopBackgroundTrack; +ADDRGP4 uiInfo+176 +ADDRGP4 trap_S_StopBackgroundTrack +ASGNP4 +line 5083 +;5083: uiInfo.uiDC.playCinematic = &UI_PlayCinematic; +ADDRGP4 uiInfo+180 +ADDRGP4 UI_PlayCinematic +ASGNP4 +line 5084 +;5084: uiInfo.uiDC.stopCinematic = &UI_StopCinematic; +ADDRGP4 uiInfo+184 +ADDRGP4 UI_StopCinematic +ASGNP4 +line 5085 +;5085: uiInfo.uiDC.drawCinematic = &UI_DrawCinematic; +ADDRGP4 uiInfo+188 +ADDRGP4 UI_DrawCinematic +ASGNP4 +line 5086 +;5086: uiInfo.uiDC.runCinematicFrame = &UI_RunCinematicFrame; +ADDRGP4 uiInfo+192 +ADDRGP4 UI_RunCinematicFrame +ASGNP4 +line 5088 +;5087: +;5088: Init_Display(&uiInfo.uiDC); +ADDRGP4 uiInfo +ARGP4 +ADDRGP4 Init_Display +CALLV +pop +line 5090 +;5089: +;5090: String_Init(); +ADDRGP4 String_Init +CALLV +pop +line 5092 +;5091: +;5092: uiInfo.uiDC.cursor = trap_R_RegisterShaderNoMip( "menu/art/3_cursor2" ); +ADDRGP4 $4256 +ARGP4 +ADDRLP4 8 +ADDRGP4 trap_R_RegisterShaderNoMip +CALLI4 +ASGNI4 +ADDRGP4 uiInfo+73408 +ADDRLP4 8 +INDIRI4 +ASGNI4 +line 5093 +;5093: uiInfo.uiDC.whiteShader = trap_R_RegisterShaderNoMip( "white" ); +ADDRGP4 $4258 +ARGP4 +ADDRLP4 12 +ADDRGP4 trap_R_RegisterShaderNoMip +CALLI4 +ASGNI4 +ADDRGP4 uiInfo+73400 +ADDRLP4 12 +INDIRI4 +ASGNI4 +line 5095 +;5094: +;5095: AssetCache(); +ADDRGP4 AssetCache +CALLV +pop +line 5097 +;5096: +;5097: start = trap_Milliseconds(); +ADDRLP4 16 +ADDRGP4 trap_Milliseconds +CALLI4 +ASGNI4 +ADDRLP4 4 +ADDRLP4 16 +INDIRI4 +ASGNI4 +line 5099 +;5098: +;5099: uiInfo.teamCount = 0; +ADDRGP4 uiInfo+75756 +CNSTI4 0 +ASGNI4 +line 5100 +;5100: uiInfo.characterCount = 0; +ADDRGP4 uiInfo+73440 +CNSTI4 0 +ASGNI4 +line 5101 +;5101: uiInfo.aliasCount = 0; +ADDRGP4 uiInfo+74984 +CNSTI4 0 +ASGNI4 +line 5107 +;5102: +;5103:#ifdef PRE_RELEASE_TADEMO +;5104: UI_ParseTeamInfo("demoteaminfo.txt"); +;5105: UI_ParseGameInfo("demogameinfo.txt"); +;5106:#else +;5107: UI_ParseTeamInfo("teaminfo.txt"); +ADDRGP4 $4262 +ARGP4 +ADDRGP4 UI_ParseTeamInfo +CALLV +pop +line 5108 +;5108: UI_LoadTeams(); +ADDRGP4 UI_LoadTeams +CALLV +pop +line 5109 +;5109: UI_ParseGameInfo("gameinfo.txt"); +ADDRGP4 $677 +ARGP4 +ADDRGP4 UI_ParseGameInfo +CALLV +pop +line 5112 +;5110:#endif +;5111: +;5112: menuSet = UI_Cvar_VariableString("ui_menuFiles"); +ADDRGP4 $671 +ARGP4 +ADDRLP4 20 +ADDRGP4 UI_Cvar_VariableString +CALLP4 +ASGNP4 +ADDRLP4 0 +ADDRLP4 20 +INDIRP4 +ASGNP4 +line 5113 +;5113: if (menuSet == NULL || menuSet[0] == '\0') { +ADDRLP4 0 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $4265 +ADDRLP4 0 +INDIRP4 +INDIRI1 +CVII4 1 +CNSTI4 0 +NEI4 $4263 +LABELV $4265 +line 5114 +;5114: menuSet = "ui/menus.txt"; +ADDRLP4 0 +ADDRGP4 $643 +ASGNP4 +line 5115 +;5115: } +LABELV $4263 +line 5123 +;5116: +;5117:#if 0 +;5118: if (uiInfo.inGameLoad) { +;5119: UI_LoadMenus("ui/ingame.txt", qtrue); +;5120: } else { // bk010222: left this: UI_LoadMenus(menuSet, qtrue); +;5121: } +;5122:#else +;5123: UI_LoadMenus(menuSet, qtrue); +ADDRLP4 0 +INDIRP4 +ARGP4 +CNSTI4 1 +ARGI4 +ADDRGP4 UI_LoadMenus +CALLV +pop +line 5124 +;5124: UI_LoadMenus("ui/ingame.txt", qfalse); +ADDRGP4 $4266 +ARGP4 +CNSTI4 0 +ARGI4 +ADDRGP4 UI_LoadMenus +CALLV +pop +line 5127 +;5125:#endif +;5126: +;5127: Menus_CloseAll(); +ADDRGP4 Menus_CloseAll +CALLV +pop +line 5129 +;5128: +;5129: trap_LAN_LoadCachedServers(); +ADDRGP4 trap_LAN_LoadCachedServers +CALLV +pop +line 5130 +;5130: UI_LoadBestScores(uiInfo.mapList[ui_currentMap.integer].mapLoadName, uiInfo.gameTypes[ui_gameType.integer].gtEnum); +CNSTI4 100 +ADDRGP4 ui_currentMap+12 +INDIRI4 +MULI4 +ADDRGP4 uiInfo+83228+4 +ADDP4 +INDIRP4 +ARGP4 +ADDRGP4 ui_gameType+12 +INDIRI4 +CNSTI4 3 +LSHI4 +ADDRGP4 uiInfo+78580+4 +ADDP4 +INDIRI4 +ARGI4 +ADDRGP4 UI_LoadBestScores +CALLV +pop +line 5132 +;5131: +;5132: UI_BuildQ3Model_List(); +ADDRGP4 UI_BuildQ3Model_List +CALLV +pop +line 5133 +;5133: UI_LoadBots(); +ADDRGP4 UI_LoadBots +CALLV +pop +line 5136 +;5134: +;5135: // sets defaults for ui temp cvars +;5136: uiInfo.effectsColor = gamecodetoui[(int)trap_Cvar_VariableValue("color1")-1]; +ADDRGP4 $1795 +ARGP4 +ADDRLP4 28 +ADDRGP4 trap_Cvar_VariableValue +CALLF4 +ASGNF4 +ADDRGP4 uiInfo+136904 +ADDRLP4 28 +INDIRF4 +CVFI4 4 +CNSTI4 2 +LSHI4 +ADDRGP4 gamecodetoui-4 +ADDP4 +INDIRI4 +ASGNI4 +line 5137 +;5137: uiInfo.currentCrosshair = (int)trap_Cvar_VariableValue("cg_drawCrosshair"); +ADDRGP4 $2080 +ARGP4 +ADDRLP4 32 +ADDRGP4 trap_Cvar_VariableValue +CALLF4 +ASGNF4 +ADDRGP4 uiInfo+119476 +ADDRLP4 32 +INDIRF4 +CVFI4 4 +ASGNI4 +line 5138 +;5138: trap_Cvar_Set("ui_mousePitch", (trap_Cvar_VariableValue("m_pitch") >= 0) ? "0" : "1"); +ADDRGP4 $2373 +ARGP4 +ADDRLP4 40 +ADDRGP4 trap_Cvar_VariableValue +CALLF4 +ASGNF4 +ADDRLP4 40 +INDIRF4 +CNSTF4 0 +LTF4 $4277 +ADDRLP4 36 +ADDRGP4 $395 +ASGNP4 +ADDRGP4 $4278 +JUMPV +LABELV $4277 +ADDRLP4 36 +ADDRGP4 $398 +ASGNP4 +LABELV $4278 +ADDRGP4 $2370 +ARGP4 +ADDRLP4 36 +INDIRP4 +ARGP4 +ADDRGP4 trap_Cvar_Set +CALLV +pop +line 5140 +;5139: +;5140: uiInfo.serverStatus.currentServerCinematic = -1; +ADDRGP4 uiInfo+99264+10432 +CNSTI4 -1 +ASGNI4 +line 5141 +;5141: uiInfo.previewMovie = -1; +ADDRGP4 uiInfo+99260 +CNSTI4 -1 +ASGNI4 +line 5143 +;5142: +;5143: if (trap_Cvar_VariableValue("ui_TeamArenaFirstRun") == 0) { +ADDRGP4 $4284 +ARGP4 +ADDRLP4 44 +ADDRGP4 trap_Cvar_VariableValue +CALLF4 +ASGNF4 +ADDRLP4 44 +INDIRF4 +CNSTF4 0 +NEF4 $4282 +line 5144 +;5144: trap_Cvar_Set("s_volume", "0.8"); +ADDRGP4 $4285 +ARGP4 +ADDRGP4 $4286 +ARGP4 +ADDRGP4 trap_Cvar_Set +CALLV +pop +line 5145 +;5145: trap_Cvar_Set("s_musicvolume", "0.5"); +ADDRGP4 $4287 +ARGP4 +ADDRGP4 $4288 +ARGP4 +ADDRGP4 trap_Cvar_Set +CALLV +pop +line 5146 +;5146: trap_Cvar_Set("ui_TeamArenaFirstRun", "1"); +ADDRGP4 $4284 +ARGP4 +ADDRGP4 $398 +ARGP4 +ADDRGP4 trap_Cvar_Set +CALLV +pop +line 5147 +;5147: } +LABELV $4282 +line 5149 +;5148: +;5149: trap_Cvar_Register(NULL, "debug_protocol", "", 0 ); +CNSTP4 0 +ARGP4 +ADDRGP4 $4289 +ARGP4 +ADDRGP4 $112 +ARGP4 +CNSTI4 0 +ARGI4 +ADDRGP4 trap_Cvar_Register +CALLV +pop +line 5151 +;5150: +;5151: trap_Cvar_Set("ui_actualNetGameType", va("%d", ui_netGameType.integer)); +ADDRGP4 $716 +ARGP4 +ADDRGP4 ui_netGameType+12 +INDIRI4 +ARGI4 +ADDRLP4 48 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRGP4 $731 +ARGP4 +ADDRLP4 48 +INDIRP4 +ARGP4 +ADDRGP4 trap_Cvar_Set +CALLV +pop +line 5152 +;5152:} +LABELV $4186 +endproc _UI_Init 52 16 +export _UI_KeyEvent +proc _UI_KeyEvent 16 12 +line 5160 +;5153: +;5154: +;5155:/* +;5156:================= +;5157:UI_KeyEvent +;5158:================= +;5159:*/ +;5160:void _UI_KeyEvent( int key, qboolean down ) { +line 5162 +;5161: +;5162: if (Menu_Count() > 0) { +ADDRLP4 0 +ADDRGP4 Menu_Count +CALLI4 +ASGNI4 +ADDRLP4 0 +INDIRI4 +CNSTI4 0 +LEI4 $4292 +line 5163 +;5163: menuDef_t *menu = Menu_GetFocused(); +ADDRLP4 8 +ADDRGP4 Menu_GetFocused +CALLP4 +ASGNP4 +ADDRLP4 4 +ADDRLP4 8 +INDIRP4 +ASGNP4 +line 5164 +;5164: if (menu) { +ADDRLP4 4 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $4294 +line 5165 +;5165: if (key == K_ESCAPE && down && !Menus_AnyFullScreenVisible()) { +ADDRFP4 0 +INDIRI4 +CNSTI4 27 +NEI4 $4296 +ADDRFP4 4 +INDIRI4 +CNSTI4 0 +EQI4 $4296 +ADDRLP4 12 +ADDRGP4 Menus_AnyFullScreenVisible +CALLI4 +ASGNI4 +ADDRLP4 12 +INDIRI4 +CNSTI4 0 +NEI4 $4296 +line 5166 +;5166: Menus_CloseAll(); +ADDRGP4 Menus_CloseAll +CALLV +pop +line 5167 +;5167: } else { +ADDRGP4 $4295 +JUMPV +LABELV $4296 +line 5168 +;5168: Menu_HandleKey(menu, key, down ); +ADDRLP4 4 +INDIRP4 +ARGP4 +ADDRFP4 0 +INDIRI4 +ARGI4 +ADDRFP4 4 +INDIRI4 +ARGI4 +ADDRGP4 Menu_HandleKey +CALLV +pop +line 5169 +;5169: } +line 5170 +;5170: } else { +ADDRGP4 $4295 +JUMPV +LABELV $4294 +line 5171 +;5171: trap_Key_SetCatcher( trap_Key_GetCatcher() & ~KEYCATCH_UI ); +ADDRLP4 12 +ADDRGP4 trap_Key_GetCatcher +CALLI4 +ASGNI4 +ADDRLP4 12 +INDIRI4 +CNSTI4 -3 +BANDI4 +ARGI4 +ADDRGP4 trap_Key_SetCatcher +CALLV +pop +line 5172 +;5172: trap_Key_ClearStates(); +ADDRGP4 trap_Key_ClearStates +CALLV +pop +line 5173 +;5173: trap_Cvar_Set( "cl_paused", "0" ); +ADDRGP4 $2618 +ARGP4 +ADDRGP4 $395 +ARGP4 +ADDRGP4 trap_Cvar_Set +CALLV +pop +line 5174 +;5174: } +LABELV $4295 +line 5175 +;5175: } +LABELV $4292 +line 5180 +;5176: +;5177: //if ((s > 0) && (s != menu_null_sound)) { +;5178: // trap_S_StartLocalSound( s, CHAN_LOCAL_SOUND ); +;5179: //} +;5180:} +LABELV $4291 +endproc _UI_KeyEvent 16 12 +export _UI_MouseEvent +proc _UI_MouseEvent 12 12 +line 5188 +;5181: +;5182:/* +;5183:================= +;5184:UI_MouseEvent +;5185:================= +;5186:*/ +;5187:void _UI_MouseEvent( int dx, int dy ) +;5188:{ +line 5190 +;5189: // update mouse screen position +;5190: uiInfo.uiDC.cursorx += dx; +ADDRLP4 0 +ADDRGP4 uiInfo+216 +ASGNP4 +ADDRLP4 0 +INDIRP4 +ADDRLP4 0 +INDIRP4 +INDIRI4 +ADDRFP4 0 +INDIRI4 +ADDI4 +ASGNI4 +line 5191 +;5191: if (uiInfo.uiDC.cursorx < 0) +ADDRGP4 uiInfo+216 +INDIRI4 +CNSTI4 0 +GEI4 $4300 +line 5192 +;5192: uiInfo.uiDC.cursorx = 0; +ADDRGP4 uiInfo+216 +CNSTI4 0 +ASGNI4 +ADDRGP4 $4301 +JUMPV +LABELV $4300 +line 5193 +;5193: else if (uiInfo.uiDC.cursorx > SCREEN_WIDTH) +ADDRGP4 uiInfo+216 +INDIRI4 +CNSTI4 640 +LEI4 $4304 +line 5194 +;5194: uiInfo.uiDC.cursorx = SCREEN_WIDTH; +ADDRGP4 uiInfo+216 +CNSTI4 640 +ASGNI4 +LABELV $4304 +LABELV $4301 +line 5196 +;5195: +;5196: uiInfo.uiDC.cursory += dy; +ADDRLP4 4 +ADDRGP4 uiInfo+220 +ASGNP4 +ADDRLP4 4 +INDIRP4 +ADDRLP4 4 +INDIRP4 +INDIRI4 +ADDRFP4 4 +INDIRI4 +ADDI4 +ASGNI4 +line 5197 +;5197: if (uiInfo.uiDC.cursory < 0) +ADDRGP4 uiInfo+220 +INDIRI4 +CNSTI4 0 +GEI4 $4309 +line 5198 +;5198: uiInfo.uiDC.cursory = 0; +ADDRGP4 uiInfo+220 +CNSTI4 0 +ASGNI4 +ADDRGP4 $4310 +JUMPV +LABELV $4309 +line 5199 +;5199: else if (uiInfo.uiDC.cursory > SCREEN_HEIGHT) +ADDRGP4 uiInfo+220 +INDIRI4 +CNSTI4 480 +LEI4 $4313 +line 5200 +;5200: uiInfo.uiDC.cursory = SCREEN_HEIGHT; +ADDRGP4 uiInfo+220 +CNSTI4 480 +ASGNI4 +LABELV $4313 +LABELV $4310 +line 5202 +;5201: +;5202: if (Menu_Count() > 0) { +ADDRLP4 8 +ADDRGP4 Menu_Count +CALLI4 +ASGNI4 +ADDRLP4 8 +INDIRI4 +CNSTI4 0 +LEI4 $4317 +line 5205 +;5203: //menuDef_t *menu = Menu_GetFocused(); +;5204: //Menu_HandleMouseMove(menu, uiInfo.uiDC.cursorx, uiInfo.uiDC.cursory); +;5205: Display_MouseMove(NULL, uiInfo.uiDC.cursorx, uiInfo.uiDC.cursory); +CNSTP4 0 +ARGP4 +ADDRGP4 uiInfo+216 +INDIRI4 +ARGI4 +ADDRGP4 uiInfo+220 +INDIRI4 +ARGI4 +ADDRGP4 Display_MouseMove +CALLI4 +pop +line 5206 +;5206: } +LABELV $4317 +line 5208 +;5207: +;5208:} +LABELV $4298 +endproc _UI_MouseEvent 12 12 +export UI_LoadNonIngame +proc UI_LoadNonIngame 12 8 +line 5210 +;5209: +;5210:void UI_LoadNonIngame() { +line 5211 +;5211: const char *menuSet = UI_Cvar_VariableString("ui_menuFiles"); +ADDRGP4 $671 +ARGP4 +ADDRLP4 4 +ADDRGP4 UI_Cvar_VariableString +CALLP4 +ASGNP4 +ADDRLP4 0 +ADDRLP4 4 +INDIRP4 +ASGNP4 +line 5212 +;5212: if (menuSet == NULL || menuSet[0] == '\0') { +ADDRLP4 0 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $4324 +ADDRLP4 0 +INDIRP4 +INDIRI1 +CVII4 1 +CNSTI4 0 +NEI4 $4322 +LABELV $4324 +line 5213 +;5213: menuSet = "ui/menus.txt"; +ADDRLP4 0 +ADDRGP4 $643 +ASGNP4 +line 5214 +;5214: } +LABELV $4322 +line 5215 +;5215: UI_LoadMenus(menuSet, qfalse); +ADDRLP4 0 +INDIRP4 +ARGP4 +CNSTI4 0 +ARGI4 +ADDRGP4 UI_LoadMenus +CALLV +pop +line 5216 +;5216: uiInfo.inGameLoad = qfalse; +ADDRGP4 uiInfo+136908 +CNSTI4 0 +ASGNI4 +line 5217 +;5217:} +LABELV $4321 +endproc UI_LoadNonIngame 12 8 +export _UI_SetActiveMenu +proc _UI_SetActiveMenu 292 12 +line 5219 +;5218: +;5219:void _UI_SetActiveMenu( uiMenuCommand_t menu ) { +line 5224 +;5220: char buf[256]; +;5221: +;5222: // this should be the ONLY way the menu system is brought up +;5223: // enusure minumum menu data is cached +;5224: if (Menu_Count() > 0) { +ADDRLP4 256 +ADDRGP4 Menu_Count +CALLI4 +ASGNI4 +ADDRLP4 256 +INDIRI4 +CNSTI4 0 +LEI4 $4327 +line 5226 +;5225: vec3_t v; +;5226: v[0] = v[1] = v[2] = 0; +ADDRLP4 272 +CNSTF4 0 +ASGNF4 +ADDRLP4 260+8 +ADDRLP4 272 +INDIRF4 +ASGNF4 +ADDRLP4 260+4 +ADDRLP4 272 +INDIRF4 +ASGNF4 +ADDRLP4 260 +ADDRLP4 272 +INDIRF4 +ASGNF4 +line 5227 +;5227: switch ( menu ) { +ADDRLP4 276 +ADDRFP4 0 +INDIRI4 +ASGNI4 +ADDRLP4 276 +INDIRI4 +CNSTI4 0 +LTI4 $4331 +ADDRLP4 276 +INDIRI4 +CNSTI4 6 +GTI4 $4331 +ADDRLP4 276 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 $4355 +ADDP4 +INDIRP4 +JUMPV +lit +align 4 +LABELV $4355 +address $4334 +address $4335 +address $4353 +address $4326 +address $4326 +address $4345 +address $4348 +code +LABELV $4334 +line 5229 +;5228: case UIMENU_NONE: +;5229: trap_Key_SetCatcher( trap_Key_GetCatcher() & ~KEYCATCH_UI ); +ADDRLP4 284 +ADDRGP4 trap_Key_GetCatcher +CALLI4 +ASGNI4 +ADDRLP4 284 +INDIRI4 +CNSTI4 -3 +BANDI4 +ARGI4 +ADDRGP4 trap_Key_SetCatcher +CALLV +pop +line 5230 +;5230: trap_Key_ClearStates(); +ADDRGP4 trap_Key_ClearStates +CALLV +pop +line 5231 +;5231: trap_Cvar_Set( "cl_paused", "0" ); +ADDRGP4 $2618 +ARGP4 +ADDRGP4 $395 +ARGP4 +ADDRGP4 trap_Cvar_Set +CALLV +pop +line 5232 +;5232: Menus_CloseAll(); +ADDRGP4 Menus_CloseAll +CALLV +pop +line 5234 +;5233: +;5234: return; +ADDRGP4 $4326 +JUMPV +LABELV $4335 +line 5237 +;5235: case UIMENU_MAIN: +;5236: //trap_Cvar_Set( "sv_killserver", "1" ); +;5237: trap_Key_SetCatcher( KEYCATCH_UI ); +CNSTI4 2 +ARGI4 +ADDRGP4 trap_Key_SetCatcher +CALLV +pop +line 5240 +;5238: //trap_S_StartLocalSound( trap_S_RegisterSound("sound/misc/menu_background.wav", qfalse) , CHAN_LOCAL_SOUND ); +;5239: //trap_S_StartBackgroundTrack("sound/misc/menu_background.wav", NULL); +;5240: if (uiInfo.inGameLoad) { +ADDRGP4 uiInfo+136908 +INDIRI4 +CNSTI4 0 +EQI4 $4336 +line 5241 +;5241: UI_LoadNonIngame(); +ADDRGP4 UI_LoadNonIngame +CALLV +pop +line 5242 +;5242: } +LABELV $4336 +line 5243 +;5243: Menus_CloseAll(); +ADDRGP4 Menus_CloseAll +CALLV +pop +line 5244 +;5244: Menus_ActivateByName("main"); +ADDRGP4 $2548 +ARGP4 +ADDRGP4 Menus_ActivateByName +CALLP4 +pop +line 5245 +;5245: trap_Cvar_VariableStringBuffer("com_errorMessage", buf, sizeof(buf)); +ADDRGP4 $2469 +ARGP4 +ADDRLP4 0 +ARGP4 +CNSTI4 256 +ARGI4 +ADDRGP4 trap_Cvar_VariableStringBuffer +CALLV +pop +line 5246 +;5246: if (strlen(buf)) { +ADDRLP4 0 +ARGP4 +ADDRLP4 288 +ADDRGP4 strlen +CALLI4 +ASGNI4 +ADDRLP4 288 +INDIRI4 +CNSTI4 0 +EQI4 $4326 +line 5247 +;5247: if (!ui_singlePlayerActive.integer) { +ADDRGP4 ui_singlePlayerActive+12 +INDIRI4 +CNSTI4 0 +NEI4 $4341 +line 5248 +;5248: Menus_ActivateByName("error_popmenu"); +ADDRGP4 $4344 +ARGP4 +ADDRGP4 Menus_ActivateByName +CALLP4 +pop +line 5249 +;5249: } else { +ADDRGP4 $4326 +JUMPV +LABELV $4341 +line 5250 +;5250: trap_Cvar_Set("com_errorMessage", ""); +ADDRGP4 $2469 +ARGP4 +ADDRGP4 $112 +ARGP4 +ADDRGP4 trap_Cvar_Set +CALLV +pop +line 5251 +;5251: } +line 5252 +;5252: } +line 5253 +;5253: return; +ADDRGP4 $4326 +JUMPV +LABELV $4345 +line 5255 +;5254: case UIMENU_TEAM: +;5255: trap_Key_SetCatcher( KEYCATCH_UI ); +CNSTI4 2 +ARGI4 +ADDRGP4 trap_Key_SetCatcher +CALLV +pop +line 5256 +;5256: Menus_ActivateByName("team"); +ADDRGP4 $2165 +ARGP4 +ADDRGP4 Menus_ActivateByName +CALLP4 +pop +line 5257 +;5257: return; +ADDRGP4 $4326 +JUMPV +line 5263 +;5258: case UIMENU_NEED_CD: +;5259: // no cd check in TA +;5260: //trap_Key_SetCatcher( KEYCATCH_UI ); +;5261: //Menus_ActivateByName("needcd"); +;5262: //UI_ConfirmMenu( "Insert the CD", NULL, NeedCDAction ); +;5263: return; +line 5269 +;5264: case UIMENU_BAD_CD_KEY: +;5265: // no cd check in TA +;5266: //trap_Key_SetCatcher( KEYCATCH_UI ); +;5267: //Menus_ActivateByName("badcd"); +;5268: //UI_ConfirmMenu( "Bad CD Key", NULL, NeedCDKeyAction ); +;5269: return; +LABELV $4348 +line 5272 +;5270: case UIMENU_POSTGAME: +;5271: //trap_Cvar_Set( "sv_killserver", "1" ); +;5272: trap_Key_SetCatcher( KEYCATCH_UI ); +CNSTI4 2 +ARGI4 +ADDRGP4 trap_Key_SetCatcher +CALLV +pop +line 5273 +;5273: if (uiInfo.inGameLoad) { +ADDRGP4 uiInfo+136908 +INDIRI4 +CNSTI4 0 +EQI4 $4349 +line 5274 +;5274: UI_LoadNonIngame(); +ADDRGP4 UI_LoadNonIngame +CALLV +pop +line 5275 +;5275: } +LABELV $4349 +line 5276 +;5276: Menus_CloseAll(); +ADDRGP4 Menus_CloseAll +CALLV +pop +line 5277 +;5277: Menus_ActivateByName("endofgame"); +ADDRGP4 $4352 +ARGP4 +ADDRGP4 Menus_ActivateByName +CALLP4 +pop +line 5279 +;5278: //UI_ConfirmMenu( "Bad CD Key", NULL, NeedCDKeyAction ); +;5279: return; +ADDRGP4 $4326 +JUMPV +LABELV $4353 +line 5281 +;5280: case UIMENU_INGAME: +;5281: trap_Cvar_Set( "cl_paused", "1" ); +ADDRGP4 $2618 +ARGP4 +ADDRGP4 $398 +ARGP4 +ADDRGP4 trap_Cvar_Set +CALLV +pop +line 5282 +;5282: trap_Key_SetCatcher( KEYCATCH_UI ); +CNSTI4 2 +ARGI4 +ADDRGP4 trap_Key_SetCatcher +CALLV +pop +line 5283 +;5283: UI_BuildPlayerList(); +ADDRGP4 UI_BuildPlayerList +CALLV +pop +line 5284 +;5284: Menus_CloseAll(); +ADDRGP4 Menus_CloseAll +CALLV +pop +line 5285 +;5285: Menus_ActivateByName("ingame"); +ADDRGP4 $4354 +ARGP4 +ADDRGP4 Menus_ActivateByName +CALLP4 +pop +line 5286 +;5286: return; +LABELV $4331 +line 5288 +;5287: } +;5288: } +LABELV $4327 +line 5289 +;5289:} +LABELV $4326 +endproc _UI_SetActiveMenu 292 12 +export _UI_IsFullscreen +proc _UI_IsFullscreen 4 0 +line 5291 +;5290: +;5291:qboolean _UI_IsFullscreen( void ) { +line 5292 +;5292: return Menus_AnyFullScreenVisible(); +ADDRLP4 0 +ADDRGP4 Menus_AnyFullScreenVisible +CALLI4 +ASGNI4 +ADDRLP4 0 +INDIRI4 +RETI4 +LABELV $4356 +endproc _UI_IsFullscreen 4 0 +proc UI_ReadableSize 16 16 +line 5301 +;5293:} +;5294: +;5295: +;5296: +;5297:static connstate_t lastConnState; +;5298:static char lastLoadingText[MAX_INFO_VALUE]; +;5299: +;5300:static void UI_ReadableSize ( char *buf, int bufsize, int value ) +;5301:{ +line 5302 +;5302: if (value > 1024*1024*1024 ) { // gigs +ADDRFP4 8 +INDIRI4 +CNSTI4 1073741824 +LEI4 $4358 +line 5303 +;5303: Com_sprintf( buf, bufsize, "%d", value / (1024*1024*1024) ); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRFP4 4 +INDIRI4 +ARGI4 +ADDRGP4 $716 +ARGP4 +ADDRFP4 8 +INDIRI4 +CNSTI4 1073741824 +DIVI4 +ARGI4 +ADDRGP4 Com_sprintf +CALLV +pop +line 5304 +;5304: Com_sprintf( buf+strlen(buf), bufsize-strlen(buf), ".%02d GB", +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRLP4 0 +ADDRGP4 strlen +CALLI4 +ASGNI4 +ADDRLP4 4 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 4 +INDIRP4 +ARGP4 +ADDRLP4 8 +ADDRGP4 strlen +CALLI4 +ASGNI4 +ADDRLP4 0 +INDIRI4 +ADDRLP4 4 +INDIRP4 +ADDP4 +ARGP4 +ADDRFP4 4 +INDIRI4 +ADDRLP4 8 +INDIRI4 +SUBI4 +ARGI4 +ADDRGP4 $4360 +ARGP4 +ADDRLP4 12 +CNSTI4 1073741824 +ASGNI4 +CNSTI4 100 +ADDRFP4 8 +INDIRI4 +ADDRLP4 12 +INDIRI4 +MODI4 +MULI4 +ADDRLP4 12 +INDIRI4 +DIVI4 +ARGI4 +ADDRGP4 Com_sprintf +CALLV +pop +line 5306 +;5305: (value % (1024*1024*1024))*100 / (1024*1024*1024) ); +;5306: } else if (value > 1024*1024 ) { // megs +ADDRGP4 $4359 +JUMPV +LABELV $4358 +ADDRFP4 8 +INDIRI4 +CNSTI4 1048576 +LEI4 $4361 +line 5307 +;5307: Com_sprintf( buf, bufsize, "%d", value / (1024*1024) ); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRFP4 4 +INDIRI4 +ARGI4 +ADDRGP4 $716 +ARGP4 +ADDRFP4 8 +INDIRI4 +CNSTI4 1048576 +DIVI4 +ARGI4 +ADDRGP4 Com_sprintf +CALLV +pop +line 5308 +;5308: Com_sprintf( buf+strlen(buf), bufsize-strlen(buf), ".%02d MB", +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRLP4 0 +ADDRGP4 strlen +CALLI4 +ASGNI4 +ADDRLP4 4 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 4 +INDIRP4 +ARGP4 +ADDRLP4 8 +ADDRGP4 strlen +CALLI4 +ASGNI4 +ADDRLP4 0 +INDIRI4 +ADDRLP4 4 +INDIRP4 +ADDP4 +ARGP4 +ADDRFP4 4 +INDIRI4 +ADDRLP4 8 +INDIRI4 +SUBI4 +ARGI4 +ADDRGP4 $4363 +ARGP4 +ADDRLP4 12 +CNSTI4 1048576 +ASGNI4 +CNSTI4 100 +ADDRFP4 8 +INDIRI4 +ADDRLP4 12 +INDIRI4 +MODI4 +MULI4 +ADDRLP4 12 +INDIRI4 +DIVI4 +ARGI4 +ADDRGP4 Com_sprintf +CALLV +pop +line 5310 +;5309: (value % (1024*1024))*100 / (1024*1024) ); +;5310: } else if (value > 1024 ) { // kilos +ADDRGP4 $4362 +JUMPV +LABELV $4361 +ADDRFP4 8 +INDIRI4 +CNSTI4 1024 +LEI4 $4364 +line 5311 +;5311: Com_sprintf( buf, bufsize, "%d KB", value / 1024 ); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRFP4 4 +INDIRI4 +ARGI4 +ADDRGP4 $4366 +ARGP4 +ADDRFP4 8 +INDIRI4 +CNSTI4 1024 +DIVI4 +ARGI4 +ADDRGP4 Com_sprintf +CALLV +pop +line 5312 +;5312: } else { // bytes +ADDRGP4 $4365 +JUMPV +LABELV $4364 +line 5313 +;5313: Com_sprintf( buf, bufsize, "%d bytes", value ); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRFP4 4 +INDIRI4 +ARGI4 +ADDRGP4 $4367 +ARGP4 +ADDRFP4 8 +INDIRI4 +ARGI4 +ADDRGP4 Com_sprintf +CALLV +pop +line 5314 +;5314: } +LABELV $4365 +LABELV $4362 +LABELV $4359 +line 5315 +;5315:} +LABELV $4357 +endproc UI_ReadableSize 16 16 +proc UI_PrintTime 8 20 +line 5318 +;5316: +;5317:// Assumes time is in msec +;5318:static void UI_PrintTime ( char *buf, int bufsize, int time ) { +line 5319 +;5319: time /= 1000; // change to seconds +ADDRFP4 8 +ADDRFP4 8 +INDIRI4 +CNSTI4 1000 +DIVI4 +ASGNI4 +line 5321 +;5320: +;5321: if (time > 3600) { // in the hours range +ADDRFP4 8 +INDIRI4 +CNSTI4 3600 +LEI4 $4369 +line 5322 +;5322: Com_sprintf( buf, bufsize, "%d hr %d min", time / 3600, (time % 3600) / 60 ); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRFP4 4 +INDIRI4 +ARGI4 +ADDRGP4 $4371 +ARGP4 +ADDRLP4 0 +ADDRFP4 8 +INDIRI4 +ASGNI4 +ADDRLP4 4 +CNSTI4 3600 +ASGNI4 +ADDRLP4 0 +INDIRI4 +ADDRLP4 4 +INDIRI4 +DIVI4 +ARGI4 +ADDRLP4 0 +INDIRI4 +ADDRLP4 4 +INDIRI4 +MODI4 +CNSTI4 60 +DIVI4 +ARGI4 +ADDRGP4 Com_sprintf +CALLV +pop +line 5323 +;5323: } else if (time > 60) { // mins +ADDRGP4 $4370 +JUMPV +LABELV $4369 +ADDRFP4 8 +INDIRI4 +CNSTI4 60 +LEI4 $4372 +line 5324 +;5324: Com_sprintf( buf, bufsize, "%d min %d sec", time / 60, time % 60 ); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRFP4 4 +INDIRI4 +ARGI4 +ADDRGP4 $4374 +ARGP4 +ADDRLP4 0 +ADDRFP4 8 +INDIRI4 +ASGNI4 +ADDRLP4 4 +CNSTI4 60 +ASGNI4 +ADDRLP4 0 +INDIRI4 +ADDRLP4 4 +INDIRI4 +DIVI4 +ARGI4 +ADDRLP4 0 +INDIRI4 +ADDRLP4 4 +INDIRI4 +MODI4 +ARGI4 +ADDRGP4 Com_sprintf +CALLV +pop +line 5325 +;5325: } else { // secs +ADDRGP4 $4373 +JUMPV +LABELV $4372 +line 5326 +;5326: Com_sprintf( buf, bufsize, "%d sec", time ); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRFP4 4 +INDIRI4 +ARGI4 +ADDRGP4 $4375 +ARGP4 +ADDRFP4 8 +INDIRI4 +ARGI4 +ADDRGP4 Com_sprintf +CALLV +pop +line 5327 +;5327: } +LABELV $4373 +LABELV $4370 +line 5328 +;5328:} +LABELV $4368 +endproc UI_PrintTime 8 20 +export Text_PaintCenter +proc Text_PaintCenter 8 32 +line 5330 +;5329: +;5330:void Text_PaintCenter(float x, float y, float scale, vec4_t color, const char *text, float adjust) { +line 5331 +;5331: int len = Text_Width(text, scale, 0); +ADDRFP4 16 +INDIRP4 +ARGP4 +ADDRFP4 8 +INDIRF4 +ARGF4 +CNSTI4 0 +ARGI4 +ADDRLP4 4 +ADDRGP4 Text_Width +CALLI4 +ASGNI4 +ADDRLP4 0 +ADDRLP4 4 +INDIRI4 +ASGNI4 +line 5332 +;5332: Text_Paint(x - len / 2, y, scale, color, text, 0, 0, ITEM_TEXTSTYLE_SHADOWEDMORE); +ADDRFP4 0 +INDIRF4 +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +DIVI4 +CVIF4 4 +SUBF4 +ARGF4 +ADDRFP4 4 +INDIRF4 +ARGF4 +ADDRFP4 8 +INDIRF4 +ARGF4 +ADDRFP4 12 +INDIRP4 +ARGP4 +ADDRFP4 16 +INDIRP4 +ARGP4 +CNSTF4 0 +ARGF4 +CNSTI4 0 +ARGI4 +CNSTI4 6 +ARGI4 +ADDRGP4 Text_Paint +CALLV +pop +line 5333 +;5333:} +LABELV $4376 +endproc Text_PaintCenter 8 32 +data +align 1 +LABELV $4378 +byte 1 68 +byte 1 111 +byte 1 119 +byte 1 110 +byte 1 108 +byte 1 111 +byte 1 97 +byte 1 100 +byte 1 105 +byte 1 110 +byte 1 103 +byte 1 58 +byte 1 0 +align 1 +LABELV $4379 +byte 1 69 +byte 1 115 +byte 1 116 +byte 1 105 +byte 1 109 +byte 1 97 +byte 1 116 +byte 1 101 +byte 1 100 +byte 1 32 +byte 1 116 +byte 1 105 +byte 1 109 +byte 1 101 +byte 1 32 +byte 1 108 +byte 1 101 +byte 1 102 +byte 1 116 +byte 1 58 +byte 1 0 +align 1 +LABELV $4380 +byte 1 84 +byte 1 114 +byte 1 97 +byte 1 110 +byte 1 115 +byte 1 102 +byte 1 101 +byte 1 114 +byte 1 32 +byte 1 114 +byte 1 97 +byte 1 116 +byte 1 101 +byte 1 58 +byte 1 0 +code +proc UI_DisplayDownloadInfo 312 24 +line 5336 +;5334: +;5335: +;5336:static void UI_DisplayDownloadInfo( const char *downloadName, float centerPoint, float yStart, float scale ) { +line 5347 +;5337: static char dlText[] = "Downloading:"; +;5338: static char etaText[] = "Estimated time left:"; +;5339: static char xferText[] = "Transfer rate:"; +;5340: +;5341: int downloadSize, downloadCount, downloadTime; +;5342: char dlSizeBuf[64], totalSizeBuf[64], xferRateBuf[64], dlTimeBuf[64]; +;5343: int xferRate; +;5344: int leftWidth; +;5345: const char *s; +;5346: +;5347: downloadSize = trap_Cvar_VariableValue( "cl_downloadSize" ); +ADDRGP4 $4381 +ARGP4 +ADDRLP4 280 +ADDRGP4 trap_Cvar_VariableValue +CALLF4 +ASGNF4 +ADDRLP4 0 +ADDRLP4 280 +INDIRF4 +CVFI4 4 +ASGNI4 +line 5348 +;5348: downloadCount = trap_Cvar_VariableValue( "cl_downloadCount" ); +ADDRGP4 $4382 +ARGP4 +ADDRLP4 284 +ADDRGP4 trap_Cvar_VariableValue +CALLF4 +ASGNF4 +ADDRLP4 4 +ADDRLP4 284 +INDIRF4 +CVFI4 4 +ASGNI4 +line 5349 +;5349: downloadTime = trap_Cvar_VariableValue( "cl_downloadTime" ); +ADDRGP4 $4383 +ARGP4 +ADDRLP4 288 +ADDRGP4 trap_Cvar_VariableValue +CALLF4 +ASGNF4 +ADDRLP4 140 +ADDRLP4 288 +INDIRF4 +CVFI4 4 +ASGNI4 +line 5351 +;5350: +;5351: leftWidth = 320; +ADDRLP4 8 +CNSTI4 320 +ASGNI4 +line 5353 +;5352: +;5353: UI_SetColor(colorWhite); +ADDRGP4 colorWhite +ARGP4 +ADDRGP4 UI_SetColor +CALLV +pop +line 5354 +;5354: Text_PaintCenter(centerPoint, yStart + 112, scale, colorWhite, dlText, 0); +ADDRFP4 4 +INDIRF4 +ARGF4 +ADDRFP4 8 +INDIRF4 +CNSTF4 1121976320 +ADDF4 +ARGF4 +ADDRFP4 12 +INDIRF4 +ARGF4 +ADDRGP4 colorWhite +ARGP4 +ADDRGP4 $4378 +ARGP4 +CNSTF4 0 +ARGF4 +ADDRGP4 Text_PaintCenter +CALLV +pop +line 5355 +;5355: Text_PaintCenter(centerPoint, yStart + 192, scale, colorWhite, etaText, 0); +ADDRFP4 4 +INDIRF4 +ARGF4 +ADDRFP4 8 +INDIRF4 +CNSTF4 1128267776 +ADDF4 +ARGF4 +ADDRFP4 12 +INDIRF4 +ARGF4 +ADDRGP4 colorWhite +ARGP4 +ADDRGP4 $4379 +ARGP4 +CNSTF4 0 +ARGF4 +ADDRGP4 Text_PaintCenter +CALLV +pop +line 5356 +;5356: Text_PaintCenter(centerPoint, yStart + 248, scale, colorWhite, xferText, 0); +ADDRFP4 4 +INDIRF4 +ARGF4 +ADDRFP4 8 +INDIRF4 +CNSTF4 1131937792 +ADDF4 +ARGF4 +ADDRFP4 12 +INDIRF4 +ARGF4 +ADDRGP4 colorWhite +ARGP4 +ADDRGP4 $4380 +ARGP4 +CNSTF4 0 +ARGF4 +ADDRGP4 Text_PaintCenter +CALLV +pop +line 5358 +;5357: +;5358: if (downloadSize > 0) { +ADDRLP4 0 +INDIRI4 +CNSTI4 0 +LEI4 $4384 +line 5359 +;5359: s = va( "%s (%d%%)", downloadName, downloadCount * 100 / downloadSize ); +ADDRGP4 $4386 +ARGP4 +ADDRFP4 0 +INDIRP4 +ARGP4 +CNSTI4 100 +ADDRLP4 4 +INDIRI4 +MULI4 +ADDRLP4 0 +INDIRI4 +DIVI4 +ARGI4 +ADDRLP4 292 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRLP4 148 +ADDRLP4 292 +INDIRP4 +ASGNP4 +line 5360 +;5360: } else { +ADDRGP4 $4385 +JUMPV +LABELV $4384 +line 5361 +;5361: s = downloadName; +ADDRLP4 148 +ADDRFP4 0 +INDIRP4 +ASGNP4 +line 5362 +;5362: } +LABELV $4385 +line 5364 +;5363: +;5364: Text_PaintCenter(centerPoint, yStart+136, scale, colorWhite, s, 0); +ADDRFP4 4 +INDIRF4 +ARGF4 +ADDRFP4 8 +INDIRF4 +CNSTF4 1124597760 +ADDF4 +ARGF4 +ADDRFP4 12 +INDIRF4 +ARGF4 +ADDRGP4 colorWhite +ARGP4 +ADDRLP4 148 +INDIRP4 +ARGP4 +CNSTF4 0 +ARGF4 +ADDRGP4 Text_PaintCenter +CALLV +pop +line 5366 +;5365: +;5366: UI_ReadableSize( dlSizeBuf, sizeof dlSizeBuf, downloadCount ); +ADDRLP4 12 +ARGP4 +CNSTI4 64 +ARGI4 +ADDRLP4 4 +INDIRI4 +ARGI4 +ADDRGP4 UI_ReadableSize +CALLV +pop +line 5367 +;5367: UI_ReadableSize( totalSizeBuf, sizeof totalSizeBuf, downloadSize ); +ADDRLP4 76 +ARGP4 +CNSTI4 64 +ARGI4 +ADDRLP4 0 +INDIRI4 +ARGI4 +ADDRGP4 UI_ReadableSize +CALLV +pop +line 5369 +;5368: +;5369: if (downloadCount < 4096 || !downloadTime) { +ADDRLP4 4 +INDIRI4 +CNSTI4 4096 +LTI4 $4389 +ADDRLP4 140 +INDIRI4 +CNSTI4 0 +NEI4 $4387 +LABELV $4389 +line 5370 +;5370: Text_PaintCenter(leftWidth, yStart+216, scale, colorWhite, "estimating", 0); +ADDRLP4 8 +INDIRI4 +CVIF4 4 +ARGF4 +ADDRFP4 8 +INDIRF4 +CNSTF4 1129840640 +ADDF4 +ARGF4 +ADDRFP4 12 +INDIRF4 +ARGF4 +ADDRGP4 colorWhite +ARGP4 +ADDRGP4 $4390 +ARGP4 +CNSTF4 0 +ARGF4 +ADDRGP4 Text_PaintCenter +CALLV +pop +line 5371 +;5371: Text_PaintCenter(leftWidth, yStart+160, scale, colorWhite, va("(%s of %s copied)", dlSizeBuf, totalSizeBuf), 0); +ADDRGP4 $4391 +ARGP4 +ADDRLP4 12 +ARGP4 +ADDRLP4 76 +ARGP4 +ADDRLP4 292 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRLP4 8 +INDIRI4 +CVIF4 4 +ARGF4 +ADDRFP4 8 +INDIRF4 +CNSTF4 1126170624 +ADDF4 +ARGF4 +ADDRFP4 12 +INDIRF4 +ARGF4 +ADDRGP4 colorWhite +ARGP4 +ADDRLP4 292 +INDIRP4 +ARGP4 +CNSTF4 0 +ARGF4 +ADDRGP4 Text_PaintCenter +CALLV +pop +line 5372 +;5372: } else { +ADDRGP4 $4388 +JUMPV +LABELV $4387 +line 5373 +;5373: if ((uiInfo.uiDC.realTime - downloadTime) / 1000) { +ADDRGP4 uiInfo+208 +INDIRI4 +ADDRLP4 140 +INDIRI4 +SUBI4 +CNSTI4 1000 +DIVI4 +CNSTI4 0 +EQI4 $4392 +line 5374 +;5374: xferRate = downloadCount / ((uiInfo.uiDC.realTime - downloadTime) / 1000); +ADDRLP4 144 +ADDRLP4 4 +INDIRI4 +ADDRGP4 uiInfo+208 +INDIRI4 +ADDRLP4 140 +INDIRI4 +SUBI4 +CNSTI4 1000 +DIVI4 +DIVI4 +ASGNI4 +line 5375 +;5375: } else { +ADDRGP4 $4393 +JUMPV +LABELV $4392 +line 5376 +;5376: xferRate = 0; +ADDRLP4 144 +CNSTI4 0 +ASGNI4 +line 5377 +;5377: } +LABELV $4393 +line 5378 +;5378: UI_ReadableSize( xferRateBuf, sizeof xferRateBuf, xferRate ); +ADDRLP4 152 +ARGP4 +CNSTI4 64 +ARGI4 +ADDRLP4 144 +INDIRI4 +ARGI4 +ADDRGP4 UI_ReadableSize +CALLV +pop +line 5381 +;5379: +;5380: // Extrapolate estimated completion time +;5381: if (downloadSize && xferRate) { +ADDRLP4 292 +CNSTI4 0 +ASGNI4 +ADDRLP4 0 +INDIRI4 +ADDRLP4 292 +INDIRI4 +EQI4 $4396 +ADDRLP4 144 +INDIRI4 +ADDRLP4 292 +INDIRI4 +EQI4 $4396 +line 5382 +;5382: int n = downloadSize / xferRate; // estimated time for entire d/l in secs +ADDRLP4 296 +ADDRLP4 0 +INDIRI4 +ADDRLP4 144 +INDIRI4 +DIVI4 +ASGNI4 +line 5385 +;5383: +;5384: // We do it in K (/1024) because we'd overflow around 4MB +;5385: UI_PrintTime ( dlTimeBuf, sizeof dlTimeBuf, +ADDRLP4 216 +ARGP4 +CNSTI4 64 +ARGI4 +ADDRLP4 300 +ADDRLP4 296 +INDIRI4 +ASGNI4 +ADDRLP4 304 +CNSTI4 1024 +ASGNI4 +CNSTI4 1000 +ADDRLP4 300 +INDIRI4 +ADDRLP4 4 +INDIRI4 +ADDRLP4 304 +INDIRI4 +DIVI4 +ADDRLP4 300 +INDIRI4 +MULI4 +ADDRLP4 0 +INDIRI4 +ADDRLP4 304 +INDIRI4 +DIVI4 +DIVI4 +SUBI4 +MULI4 +ARGI4 +ADDRGP4 UI_PrintTime +CALLV +pop +line 5388 +;5386: (n - (((downloadCount/1024) * n) / (downloadSize/1024))) * 1000); +;5387: +;5388: Text_PaintCenter(leftWidth, yStart+216, scale, colorWhite, dlTimeBuf, 0); +ADDRLP4 8 +INDIRI4 +CVIF4 4 +ARGF4 +ADDRFP4 8 +INDIRF4 +CNSTF4 1129840640 +ADDF4 +ARGF4 +ADDRFP4 12 +INDIRF4 +ARGF4 +ADDRGP4 colorWhite +ARGP4 +ADDRLP4 216 +ARGP4 +CNSTF4 0 +ARGF4 +ADDRGP4 Text_PaintCenter +CALLV +pop +line 5389 +;5389: Text_PaintCenter(leftWidth, yStart+160, scale, colorWhite, va("(%s of %s copied)", dlSizeBuf, totalSizeBuf), 0); +ADDRGP4 $4391 +ARGP4 +ADDRLP4 12 +ARGP4 +ADDRLP4 76 +ARGP4 +ADDRLP4 308 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRLP4 8 +INDIRI4 +CVIF4 4 +ARGF4 +ADDRFP4 8 +INDIRF4 +CNSTF4 1126170624 +ADDF4 +ARGF4 +ADDRFP4 12 +INDIRF4 +ARGF4 +ADDRGP4 colorWhite +ARGP4 +ADDRLP4 308 +INDIRP4 +ARGP4 +CNSTF4 0 +ARGF4 +ADDRGP4 Text_PaintCenter +CALLV +pop +line 5390 +;5390: } else { +ADDRGP4 $4397 +JUMPV +LABELV $4396 +line 5391 +;5391: Text_PaintCenter(leftWidth, yStart+216, scale, colorWhite, "estimating", 0); +ADDRLP4 8 +INDIRI4 +CVIF4 4 +ARGF4 +ADDRFP4 8 +INDIRF4 +CNSTF4 1129840640 +ADDF4 +ARGF4 +ADDRFP4 12 +INDIRF4 +ARGF4 +ADDRGP4 colorWhite +ARGP4 +ADDRGP4 $4390 +ARGP4 +CNSTF4 0 +ARGF4 +ADDRGP4 Text_PaintCenter +CALLV +pop +line 5392 +;5392: if (downloadSize) { +ADDRLP4 0 +INDIRI4 +CNSTI4 0 +EQI4 $4398 +line 5393 +;5393: Text_PaintCenter(leftWidth, yStart+160, scale, colorWhite, va("(%s of %s copied)", dlSizeBuf, totalSizeBuf), 0); +ADDRGP4 $4391 +ARGP4 +ADDRLP4 12 +ARGP4 +ADDRLP4 76 +ARGP4 +ADDRLP4 296 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRLP4 8 +INDIRI4 +CVIF4 4 +ARGF4 +ADDRFP4 8 +INDIRF4 +CNSTF4 1126170624 +ADDF4 +ARGF4 +ADDRFP4 12 +INDIRF4 +ARGF4 +ADDRGP4 colorWhite +ARGP4 +ADDRLP4 296 +INDIRP4 +ARGP4 +CNSTF4 0 +ARGF4 +ADDRGP4 Text_PaintCenter +CALLV +pop +line 5394 +;5394: } else { +ADDRGP4 $4399 +JUMPV +LABELV $4398 +line 5395 +;5395: Text_PaintCenter(leftWidth, yStart+160, scale, colorWhite, va("(%s copied)", dlSizeBuf), 0); +ADDRGP4 $4400 +ARGP4 +ADDRLP4 12 +ARGP4 +ADDRLP4 296 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRLP4 8 +INDIRI4 +CVIF4 4 +ARGF4 +ADDRFP4 8 +INDIRF4 +CNSTF4 1126170624 +ADDF4 +ARGF4 +ADDRFP4 12 +INDIRF4 +ARGF4 +ADDRGP4 colorWhite +ARGP4 +ADDRLP4 296 +INDIRP4 +ARGP4 +CNSTF4 0 +ARGF4 +ADDRGP4 Text_PaintCenter +CALLV +pop +line 5396 +;5396: } +LABELV $4399 +line 5397 +;5397: } +LABELV $4397 +line 5399 +;5398: +;5399: if (xferRate) { +ADDRLP4 144 +INDIRI4 +CNSTI4 0 +EQI4 $4401 +line 5400 +;5400: Text_PaintCenter(leftWidth, yStart+272, scale, colorWhite, va("%s/Sec", xferRateBuf), 0); +ADDRGP4 $4403 +ARGP4 +ADDRLP4 152 +ARGP4 +ADDRLP4 296 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRLP4 8 +INDIRI4 +CVIF4 4 +ARGF4 +ADDRFP4 8 +INDIRF4 +CNSTF4 1132986368 +ADDF4 +ARGF4 +ADDRFP4 12 +INDIRF4 +ARGF4 +ADDRGP4 colorWhite +ARGP4 +ADDRLP4 296 +INDIRP4 +ARGP4 +CNSTF4 0 +ARGF4 +ADDRGP4 Text_PaintCenter +CALLV +pop +line 5401 +;5401: } +LABELV $4401 +line 5402 +;5402: } +LABELV $4388 +line 5403 +;5403:} +LABELV $4377 +endproc UI_DisplayDownloadInfo 312 24 +export UI_DrawConnectScreen +proc UI_DrawConnectScreen 5440 24 +line 5413 +;5404: +;5405:/* +;5406:======================== +;5407:UI_DrawConnectScreen +;5408: +;5409:This will also be overlaid on the cgame info screen during loading +;5410:to prevent it from blinking away too rapidly on local or lan games. +;5411:======================== +;5412:*/ +;5413:void UI_DrawConnectScreen( qboolean overlay ) { +line 5420 +;5414: char *s; +;5415: uiClientState_t cstate; +;5416: char info[MAX_INFO_VALUE]; +;5417: char text[256]; +;5418: float centerPoint, yStart, scale; +;5419: +;5420: menuDef_t *menu = Menus_FindByName("Connect"); +ADDRGP4 $4405 +ARGP4 +ADDRLP4 4384 +ADDRGP4 Menus_FindByName +CALLP4 +ASGNP4 +ADDRLP4 4120 +ADDRLP4 4384 +INDIRP4 +ASGNP4 +line 5423 +;5421: +;5422: +;5423: if ( !overlay && menu ) { +ADDRFP4 0 +INDIRI4 +CNSTI4 0 +NEI4 $4406 +ADDRLP4 4120 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $4406 +line 5424 +;5424: Menu_Paint(menu, qtrue); +ADDRLP4 4120 +INDIRP4 +ARGP4 +CNSTI4 1 +ARGI4 +ADDRGP4 Menu_Paint +CALLV +pop +line 5425 +;5425: } +LABELV $4406 +line 5427 +;5426: +;5427: if (!overlay) { +ADDRFP4 0 +INDIRI4 +CNSTI4 0 +NEI4 $4408 +line 5428 +;5428: centerPoint = 320; +ADDRLP4 3084 +CNSTF4 1134559232 +ASGNF4 +line 5429 +;5429: yStart = 130; +ADDRLP4 3092 +CNSTF4 1124204544 +ASGNF4 +line 5430 +;5430: scale = 0.5f; +ADDRLP4 3088 +CNSTF4 1056964608 +ASGNF4 +line 5431 +;5431: } else { +ADDRGP4 $4409 +JUMPV +LABELV $4408 +line 5432 +;5432: centerPoint = 320; +ADDRLP4 3084 +CNSTF4 1134559232 +ASGNF4 +line 5433 +;5433: yStart = 32; +ADDRLP4 3092 +CNSTF4 1107296256 +ASGNF4 +line 5434 +;5434: scale = 0.6f; +ADDRLP4 3088 +CNSTF4 1058642330 +ASGNF4 +line 5435 +;5435: return; +ADDRGP4 $4404 +JUMPV +LABELV $4409 +line 5439 +;5436: } +;5437: +;5438: // see what information we should display +;5439: trap_GetClientState( &cstate ); +ADDRLP4 0 +ARGP4 +ADDRGP4 trap_GetClientState +CALLV +pop +line 5441 +;5440: +;5441: info[0] = '\0'; +ADDRLP4 3096 +CNSTI1 0 +ASGNI1 +line 5442 +;5442: if( trap_GetConfigString( CS_SERVERINFO, info, sizeof(info) ) ) { +CNSTI4 0 +ARGI4 +ADDRLP4 3096 +ARGP4 +CNSTI4 1024 +ARGI4 +ADDRLP4 4388 +ADDRGP4 trap_GetConfigString +CALLI4 +ASGNI4 +ADDRLP4 4388 +INDIRI4 +CNSTI4 0 +EQI4 $4410 +line 5443 +;5443: Text_PaintCenter(centerPoint, yStart, scale, colorWhite, va( "Loading %s", Info_ValueForKey( info, "mapname" )), 0); +ADDRLP4 3096 +ARGP4 +ADDRGP4 $3112 +ARGP4 +ADDRLP4 4392 +ADDRGP4 Info_ValueForKey +CALLP4 +ASGNP4 +ADDRGP4 $4412 +ARGP4 +ADDRLP4 4392 +INDIRP4 +ARGP4 +ADDRLP4 4396 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRLP4 3084 +INDIRF4 +ARGF4 +ADDRLP4 3092 +INDIRF4 +ARGF4 +ADDRLP4 3088 +INDIRF4 +ARGF4 +ADDRGP4 colorWhite +ARGP4 +ADDRLP4 4396 +INDIRP4 +ARGP4 +CNSTF4 0 +ARGF4 +ADDRGP4 Text_PaintCenter +CALLV +pop +line 5444 +;5444: } +LABELV $4410 +line 5446 +;5445: +;5446: if (!Q_stricmp(cstate.servername,"localhost")) { +ADDRLP4 0+12 +ARGP4 +ADDRGP4 $4416 +ARGP4 +ADDRLP4 4392 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 4392 +INDIRI4 +CNSTI4 0 +NEI4 $4413 +line 5447 +;5447: Text_PaintCenter(centerPoint, yStart + 48, scale, colorWhite, va("Starting up..."), ITEM_TEXTSTYLE_SHADOWEDMORE); +ADDRGP4 $4417 +ARGP4 +ADDRLP4 4396 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRLP4 3084 +INDIRF4 +ARGF4 +ADDRLP4 3092 +INDIRF4 +CNSTF4 1111490560 +ADDF4 +ARGF4 +ADDRLP4 3088 +INDIRF4 +ARGF4 +ADDRGP4 colorWhite +ARGP4 +ADDRLP4 4396 +INDIRP4 +ARGP4 +CNSTF4 1086324736 +ARGF4 +ADDRGP4 Text_PaintCenter +CALLV +pop +line 5448 +;5448: } else { +ADDRGP4 $4414 +JUMPV +LABELV $4413 +line 5449 +;5449: strcpy(text, va("Connecting to %s", cstate.servername)); +ADDRGP4 $4418 +ARGP4 +ADDRLP4 0+12 +ARGP4 +ADDRLP4 4396 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRLP4 4124 +ARGP4 +ADDRLP4 4396 +INDIRP4 +ARGP4 +ADDRGP4 strcpy +CALLP4 +pop +line 5450 +;5450: Text_PaintCenter(centerPoint, yStart + 48, scale, colorWhite,text , ITEM_TEXTSTYLE_SHADOWEDMORE); +ADDRLP4 3084 +INDIRF4 +ARGF4 +ADDRLP4 3092 +INDIRF4 +CNSTF4 1111490560 +ADDF4 +ARGF4 +ADDRLP4 3088 +INDIRF4 +ARGF4 +ADDRGP4 colorWhite +ARGP4 +ADDRLP4 4124 +ARGP4 +CNSTF4 1086324736 +ARGF4 +ADDRGP4 Text_PaintCenter +CALLV +pop +line 5451 +;5451: } +LABELV $4414 +line 5456 +;5452: +;5453: //UI_DrawProportionalString( 320, 96, "Press Esc to abort", UI_CENTER|UI_SMALLFONT|UI_DROPSHADOW, menu_text_color ); +;5454: +;5455: // display global MOTD at bottom +;5456: Text_PaintCenter(centerPoint, 600, scale, colorWhite, Info_ValueForKey( cstate.updateInfoString, "motd" ), 0); +ADDRLP4 0+1036 +ARGP4 +ADDRGP4 $4421 +ARGP4 +ADDRLP4 4396 +ADDRGP4 Info_ValueForKey +CALLP4 +ASGNP4 +ADDRLP4 3084 +INDIRF4 +ARGF4 +CNSTF4 1142292480 +ARGF4 +ADDRLP4 3088 +INDIRF4 +ARGF4 +ADDRGP4 colorWhite +ARGP4 +ADDRLP4 4396 +INDIRP4 +ARGP4 +CNSTF4 0 +ARGF4 +ADDRGP4 Text_PaintCenter +CALLV +pop +line 5458 +;5457: // print any server info (server full, bad version, etc) +;5458: if ( cstate.connState < CA_CONNECTED ) { +ADDRLP4 0 +INDIRI4 +CNSTI4 5 +GEI4 $4422 +line 5459 +;5459: Text_PaintCenter(centerPoint, yStart + 176, scale, colorWhite, cstate.messageString, 0); +ADDRLP4 3084 +INDIRF4 +ARGF4 +ADDRLP4 3092 +INDIRF4 +CNSTF4 1127219200 +ADDF4 +ARGF4 +ADDRLP4 3088 +INDIRF4 +ARGF4 +ADDRGP4 colorWhite +ARGP4 +ADDRLP4 0+2060 +ARGP4 +CNSTF4 0 +ARGF4 +ADDRGP4 Text_PaintCenter +CALLV +pop +line 5460 +;5460: } +LABELV $4422 +line 5462 +;5461: +;5462: if ( lastConnState > cstate.connState ) { +ADDRGP4 lastConnState +INDIRI4 +ADDRLP4 0 +INDIRI4 +LEI4 $4425 +line 5463 +;5463: lastLoadingText[0] = '\0'; +ADDRGP4 lastLoadingText +CNSTI1 0 +ASGNI1 +line 5464 +;5464: } +LABELV $4425 +line 5465 +;5465: lastConnState = cstate.connState; +ADDRGP4 lastConnState +ADDRLP4 0 +INDIRI4 +ASGNI4 +line 5467 +;5466: +;5467: switch ( cstate.connState ) { +ADDRLP4 4400 +ADDRLP4 0 +INDIRI4 +ASGNI4 +ADDRLP4 4400 +INDIRI4 +CNSTI4 3 +LTI4 $4404 +ADDRLP4 4400 +INDIRI4 +CNSTI4 7 +GTI4 $4404 +ADDRLP4 4400 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 $4443-12 +ADDP4 +INDIRP4 +JUMPV +lit +align 4 +LABELV $4443 +address $4430 +address $4433 +address $4436 +address $4404 +address $4404 +code +LABELV $4430 +line 5469 +;5468: case CA_CONNECTING: +;5469: s = va("Awaiting connection...%i", cstate.connectPacketCount); +ADDRGP4 $4431 +ARGP4 +ADDRLP4 0+4 +INDIRI4 +ARGI4 +ADDRLP4 4408 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRLP4 4380 +ADDRLP4 4408 +INDIRP4 +ASGNP4 +line 5470 +;5470: break; +ADDRGP4 $4428 +JUMPV +LABELV $4433 +line 5472 +;5471: case CA_CHALLENGING: +;5472: s = va("Awaiting challenge...%i", cstate.connectPacketCount); +ADDRGP4 $4434 +ARGP4 +ADDRLP4 0+4 +INDIRI4 +ARGI4 +ADDRLP4 4412 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRLP4 4380 +ADDRLP4 4412 +INDIRP4 +ASGNP4 +line 5473 +;5473: break; +ADDRGP4 $4428 +JUMPV +LABELV $4436 +line 5474 +;5474: case CA_CONNECTED: { +line 5477 +;5475: char downloadName[MAX_INFO_VALUE]; +;5476: +;5477: trap_Cvar_VariableStringBuffer( "cl_downloadName", downloadName, sizeof(downloadName) ); +ADDRGP4 $4437 +ARGP4 +ADDRLP4 4416 +ARGP4 +CNSTI4 1024 +ARGI4 +ADDRGP4 trap_Cvar_VariableStringBuffer +CALLV +pop +line 5478 +;5478: if (*downloadName) { +ADDRLP4 4416 +INDIRI1 +CVII4 1 +CNSTI4 0 +EQI4 $4438 +line 5479 +;5479: UI_DisplayDownloadInfo( downloadName, centerPoint, yStart, scale ); +ADDRLP4 4416 +ARGP4 +ADDRLP4 3084 +INDIRF4 +ARGF4 +ADDRLP4 3092 +INDIRF4 +ARGF4 +ADDRLP4 3088 +INDIRF4 +ARGF4 +ADDRGP4 UI_DisplayDownloadInfo +CALLV +pop +line 5480 +;5480: return; +ADDRGP4 $4404 +JUMPV +LABELV $4438 +line 5482 +;5481: } +;5482: } +line 5483 +;5483: s = "Awaiting gamestate..."; +ADDRLP4 4380 +ADDRGP4 $4440 +ASGNP4 +line 5484 +;5484: break; +line 5486 +;5485: case CA_LOADING: +;5486: return; +line 5488 +;5487: case CA_PRIMED: +;5488: return; +line 5490 +;5489: default: +;5490: return; +LABELV $4428 +line 5494 +;5491: } +;5492: +;5493: +;5494: if (Q_stricmp(cstate.servername,"localhost")) { +ADDRLP4 0+12 +ARGP4 +ADDRGP4 $4416 +ARGP4 +ADDRLP4 4408 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 4408 +INDIRI4 +CNSTI4 0 +EQI4 $4445 +line 5495 +;5495: Text_PaintCenter(centerPoint, yStart + 80, scale, colorWhite, s, 0); +ADDRLP4 3084 +INDIRF4 +ARGF4 +ADDRLP4 3092 +INDIRF4 +CNSTF4 1117782016 +ADDF4 +ARGF4 +ADDRLP4 3088 +INDIRF4 +ARGF4 +ADDRGP4 colorWhite +ARGP4 +ADDRLP4 4380 +INDIRP4 +ARGP4 +CNSTF4 0 +ARGF4 +ADDRGP4 Text_PaintCenter +CALLV +pop +line 5496 +;5496: } +LABELV $4445 +line 5499 +;5497: +;5498: // password required / connection rejected information goes here +;5499:} +LABELV $4404 +endproc UI_DrawConnectScreen 5440 24 +data +align 4 +LABELV cvarTable +address ui_ffa_fraglimit +address $4449 +address $694 +byte 4 1 +address ui_ffa_timelimit +address $4450 +address $395 +byte 4 1 +address ui_tourney_fraglimit +address $4451 +address $395 +byte 4 1 +address ui_tourney_timelimit +address $4452 +address $695 +byte 4 1 +address ui_team_fraglimit +address $4453 +address $395 +byte 4 1 +address ui_team_timelimit +address $4454 +address $694 +byte 4 1 +address ui_team_friendly +address $4455 +address $398 +byte 4 1 +address ui_ctf_capturelimit +address $4456 +address $4457 +byte 4 1 +address ui_ctf_timelimit +address $4458 +address $692 +byte 4 1 +address ui_ctf_friendly +address $4459 +address $395 +byte 4 1 +address ui_arenasFile +address $4460 +address $112 +byte 4 80 +address ui_botsFile +address $4461 +address $112 +byte 4 80 +address ui_spScores1 +address $4462 +address $112 +byte 4 65 +address ui_spScores2 +address $4463 +address $112 +byte 4 65 +address ui_spScores3 +address $4464 +address $112 +byte 4 65 +address ui_spScores4 +address $4465 +address $112 +byte 4 65 +address ui_spScores5 +address $4466 +address $112 +byte 4 65 +address ui_spAwards +address $4467 +address $112 +byte 4 65 +address ui_spVideos +address $4468 +address $112 +byte 4 65 +address ui_spSkill +address $827 +address $2267 +byte 4 1 +address ui_spSelection +address $4469 +address $112 +byte 4 64 +address ui_browserMaster +address $4470 +address $395 +byte 4 1 +address ui_browserGameType +address $4471 +address $395 +byte 4 1 +address ui_browserSortKey +address $4472 +address $2802 +byte 4 1 +address ui_browserShowFull +address $4473 +address $398 +byte 4 1 +address ui_browserShowEmpty +address $4474 +address $398 +byte 4 1 +address ui_brassTime +address $2360 +address $4475 +byte 4 1 +address ui_drawCrosshair +address $2080 +address $2802 +byte 4 1 +address ui_drawCrosshairNames +address $4476 +address $398 +byte 4 1 +address ui_marks +address $4477 +address $398 +byte 4 1 +address ui_server1 +address $4478 +address $112 +byte 4 1 +address ui_server2 +address $4479 +address $112 +byte 4 1 +address ui_server3 +address $4480 +address $112 +byte 4 1 +address ui_server4 +address $4481 +address $112 +byte 4 1 +address ui_server5 +address $4482 +address $112 +byte 4 1 +address ui_server6 +address $4483 +address $112 +byte 4 1 +address ui_server7 +address $4484 +address $112 +byte 4 1 +address ui_server8 +address $4485 +address $112 +byte 4 1 +address ui_server9 +address $4486 +address $112 +byte 4 1 +address ui_server10 +address $4487 +address $112 +byte 4 1 +address ui_server11 +address $4488 +address $112 +byte 4 1 +address ui_server12 +address $4489 +address $112 +byte 4 1 +address ui_server13 +address $4490 +address $112 +byte 4 1 +address ui_server14 +address $4491 +address $112 +byte 4 1 +address ui_server15 +address $4492 +address $112 +byte 4 1 +address ui_server16 +address $4493 +address $112 +byte 4 1 +address ui_cdkeychecked +address $4494 +address $395 +byte 4 64 +address ui_new +address $4495 +address $395 +byte 4 256 +address ui_debug +address $4496 +address $395 +byte 4 256 +address ui_initialized +address $4497 +address $395 +byte 4 256 +address ui_teamName +address $701 +address $4498 +byte 4 1 +address ui_opponentName +address $1081 +address $4499 +byte 4 1 +address ui_redteam +address $4500 +address $4498 +byte 4 1 +address ui_blueteam +address $4501 +address $4499 +byte 4 1 +address ui_dedicated +address $4502 +address $395 +byte 4 1 +address ui_gameType +address $4503 +address $4504 +byte 4 1 +address ui_joinGameType +address $4505 +address $395 +byte 4 1 +address ui_netGameType +address $4506 +address $4504 +byte 4 1 +address ui_actualNetGameType +address $4507 +address $4504 +byte 4 1 +address ui_redteam1 +address $4508 +address $395 +byte 4 1 +address ui_redteam2 +address $4509 +address $395 +byte 4 1 +address ui_redteam3 +address $4510 +address $395 +byte 4 1 +address ui_redteam4 +address $4511 +address $395 +byte 4 1 +address ui_redteam5 +address $4512 +address $395 +byte 4 1 +address ui_blueteam1 +address $4513 +address $395 +byte 4 1 +address ui_blueteam2 +address $4514 +address $395 +byte 4 1 +address ui_blueteam3 +address $4515 +address $395 +byte 4 1 +address ui_blueteam4 +address $4516 +address $395 +byte 4 1 +address ui_blueteam5 +address $4517 +address $395 +byte 4 1 +address ui_netSource +address $1987 +address $395 +byte 4 1 +address ui_menuFiles +address $671 +address $643 +byte 4 1 +address ui_currentTier +address $1025 +address $395 +byte 4 1 +address ui_currentMap +address $891 +address $395 +byte 4 1 +address ui_currentNetMap +address $889 +address $395 +byte 4 1 +address ui_mapIndex +address $2227 +address $395 +byte 4 1 +address ui_currentOpponent +address $4518 +address $395 +byte 4 1 +address ui_selectedPlayer +address $1430 +address $395 +byte 4 1 +address ui_selectedPlayerName +address $1438 +address $112 +byte 4 1 +address ui_lastServerRefresh_0 +address $4519 +address $112 +byte 4 1 +address ui_lastServerRefresh_1 +address $4520 +address $112 +byte 4 1 +address ui_lastServerRefresh_2 +address $4521 +address $112 +byte 4 1 +address ui_lastServerRefresh_3 +address $4522 +address $112 +byte 4 1 +address ui_singlePlayerActive +address $2240 +address $395 +byte 4 0 +address ui_scoreAccuracy +address $4523 +address $395 +byte 4 1 +address ui_scoreImpressives +address $4524 +address $395 +byte 4 1 +address ui_scoreExcellents +address $4525 +address $395 +byte 4 1 +address ui_scoreCaptures +address $4526 +address $395 +byte 4 1 +address ui_scoreDefends +address $4527 +address $395 +byte 4 1 +address ui_scoreAssists +address $4528 +address $395 +byte 4 1 +address ui_scoreGauntlets +address $4529 +address $395 +byte 4 1 +address ui_scoreScore +address $4530 +address $395 +byte 4 1 +address ui_scorePerfect +address $4531 +address $395 +byte 4 1 +address ui_scoreTeam +address $4532 +address $4533 +byte 4 1 +address ui_scoreBase +address $4534 +address $395 +byte 4 1 +address ui_scoreTime +address $4535 +address $4536 +byte 4 1 +address ui_scoreTimeBonus +address $4537 +address $395 +byte 4 1 +address ui_scoreSkillBonus +address $4538 +address $395 +byte 4 1 +address ui_scoreShutoutBonus +address $4539 +address $395 +byte 4 1 +address ui_fragLimit +address $717 +address $696 +byte 4 0 +address ui_captureLimit +address $715 +address $697 +byte 4 0 +address ui_smallFont +address $4540 +address $4541 +byte 4 1 +address ui_bigFont +address $4542 +address $4543 +byte 4 1 +address ui_findPlayer +address $3200 +address $4544 +byte 4 1 +address ui_Q3Model +address $4545 +address $395 +byte 4 1 +address ui_hudFiles +address $4546 +address $4547 +byte 4 1 +address ui_recordSPDemo +address $2259 +address $395 +byte 4 1 +address ui_teamArenaFirstRun +address $4548 +address $395 +byte 4 1 +address ui_realWarmUp +address $2251 +address $694 +byte 4 1 +address ui_realCaptureLimit +address $718 +address $4457 +byte 4 1029 +address ui_serverStatusTimeOut +address $4549 +address $4550 +byte 4 1 +align 4 +LABELV cvarTableSize +byte 4 110 +export UI_RegisterCvars +code +proc UI_RegisterCvars 12 16 +line 5766 +;5500: +;5501: +;5502:/* +;5503:================ +;5504:cvars +;5505:================ +;5506:*/ +;5507: +;5508:typedef struct { +;5509: vmCvar_t *vmCvar; +;5510: char *cvarName; +;5511: char *defaultString; +;5512: int cvarFlags; +;5513:} cvarTable_t; +;5514: +;5515:vmCvar_t ui_ffa_fraglimit; +;5516:vmCvar_t ui_ffa_timelimit; +;5517: +;5518:vmCvar_t ui_tourney_fraglimit; +;5519:vmCvar_t ui_tourney_timelimit; +;5520: +;5521:vmCvar_t ui_team_fraglimit; +;5522:vmCvar_t ui_team_timelimit; +;5523:vmCvar_t ui_team_friendly; +;5524: +;5525:vmCvar_t ui_ctf_capturelimit; +;5526:vmCvar_t ui_ctf_timelimit; +;5527:vmCvar_t ui_ctf_friendly; +;5528: +;5529:vmCvar_t ui_arenasFile; +;5530:vmCvar_t ui_botsFile; +;5531:vmCvar_t ui_spScores1; +;5532:vmCvar_t ui_spScores2; +;5533:vmCvar_t ui_spScores3; +;5534:vmCvar_t ui_spScores4; +;5535:vmCvar_t ui_spScores5; +;5536:vmCvar_t ui_spAwards; +;5537:vmCvar_t ui_spVideos; +;5538:vmCvar_t ui_spSkill; +;5539: +;5540:vmCvar_t ui_spSelection; +;5541: +;5542:vmCvar_t ui_browserMaster; +;5543:vmCvar_t ui_browserGameType; +;5544:vmCvar_t ui_browserSortKey; +;5545:vmCvar_t ui_browserShowFull; +;5546:vmCvar_t ui_browserShowEmpty; +;5547: +;5548:vmCvar_t ui_brassTime; +;5549:vmCvar_t ui_drawCrosshair; +;5550:vmCvar_t ui_drawCrosshairNames; +;5551:vmCvar_t ui_marks; +;5552: +;5553:vmCvar_t ui_server1; +;5554:vmCvar_t ui_server2; +;5555:vmCvar_t ui_server3; +;5556:vmCvar_t ui_server4; +;5557:vmCvar_t ui_server5; +;5558:vmCvar_t ui_server6; +;5559:vmCvar_t ui_server7; +;5560:vmCvar_t ui_server8; +;5561:vmCvar_t ui_server9; +;5562:vmCvar_t ui_server10; +;5563:vmCvar_t ui_server11; +;5564:vmCvar_t ui_server12; +;5565:vmCvar_t ui_server13; +;5566:vmCvar_t ui_server14; +;5567:vmCvar_t ui_server15; +;5568:vmCvar_t ui_server16; +;5569: +;5570:vmCvar_t ui_cdkeychecked; +;5571: +;5572:vmCvar_t ui_redteam; +;5573:vmCvar_t ui_redteam1; +;5574:vmCvar_t ui_redteam2; +;5575:vmCvar_t ui_redteam3; +;5576:vmCvar_t ui_redteam4; +;5577:vmCvar_t ui_redteam5; +;5578:vmCvar_t ui_blueteam; +;5579:vmCvar_t ui_blueteam1; +;5580:vmCvar_t ui_blueteam2; +;5581:vmCvar_t ui_blueteam3; +;5582:vmCvar_t ui_blueteam4; +;5583:vmCvar_t ui_blueteam5; +;5584:vmCvar_t ui_teamName; +;5585:vmCvar_t ui_dedicated; +;5586:vmCvar_t ui_gameType; +;5587:vmCvar_t ui_netGameType; +;5588:vmCvar_t ui_actualNetGameType; +;5589:vmCvar_t ui_joinGameType; +;5590:vmCvar_t ui_netSource; +;5591:vmCvar_t ui_serverFilterType; +;5592:vmCvar_t ui_opponentName; +;5593:vmCvar_t ui_menuFiles; +;5594:vmCvar_t ui_currentTier; +;5595:vmCvar_t ui_currentMap; +;5596:vmCvar_t ui_currentNetMap; +;5597:vmCvar_t ui_mapIndex; +;5598:vmCvar_t ui_currentOpponent; +;5599:vmCvar_t ui_selectedPlayer; +;5600:vmCvar_t ui_selectedPlayerName; +;5601:vmCvar_t ui_lastServerRefresh_0; +;5602:vmCvar_t ui_lastServerRefresh_1; +;5603:vmCvar_t ui_lastServerRefresh_2; +;5604:vmCvar_t ui_lastServerRefresh_3; +;5605:vmCvar_t ui_singlePlayerActive; +;5606:vmCvar_t ui_scoreAccuracy; +;5607:vmCvar_t ui_scoreImpressives; +;5608:vmCvar_t ui_scoreExcellents; +;5609:vmCvar_t ui_scoreCaptures; +;5610:vmCvar_t ui_scoreDefends; +;5611:vmCvar_t ui_scoreAssists; +;5612:vmCvar_t ui_scoreGauntlets; +;5613:vmCvar_t ui_scoreScore; +;5614:vmCvar_t ui_scorePerfect; +;5615:vmCvar_t ui_scoreTeam; +;5616:vmCvar_t ui_scoreBase; +;5617:vmCvar_t ui_scoreTimeBonus; +;5618:vmCvar_t ui_scoreSkillBonus; +;5619:vmCvar_t ui_scoreShutoutBonus; +;5620:vmCvar_t ui_scoreTime; +;5621:vmCvar_t ui_captureLimit; +;5622:vmCvar_t ui_fragLimit; +;5623:vmCvar_t ui_smallFont; +;5624:vmCvar_t ui_bigFont; +;5625:vmCvar_t ui_findPlayer; +;5626:vmCvar_t ui_Q3Model; +;5627:vmCvar_t ui_hudFiles; +;5628:vmCvar_t ui_recordSPDemo; +;5629:vmCvar_t ui_realCaptureLimit; +;5630:vmCvar_t ui_realWarmUp; +;5631:vmCvar_t ui_serverStatusTimeOut; +;5632: +;5633: +;5634:// bk001129 - made static to avoid aliasing +;5635:static cvarTable_t cvarTable[] = { +;5636: { &ui_ffa_fraglimit, "ui_ffa_fraglimit", "20", CVAR_ARCHIVE }, +;5637: { &ui_ffa_timelimit, "ui_ffa_timelimit", "0", CVAR_ARCHIVE }, +;5638: +;5639: { &ui_tourney_fraglimit, "ui_tourney_fraglimit", "0", CVAR_ARCHIVE }, +;5640: { &ui_tourney_timelimit, "ui_tourney_timelimit", "15", CVAR_ARCHIVE }, +;5641: +;5642: { &ui_team_fraglimit, "ui_team_fraglimit", "0", CVAR_ARCHIVE }, +;5643: { &ui_team_timelimit, "ui_team_timelimit", "20", CVAR_ARCHIVE }, +;5644: { &ui_team_friendly, "ui_team_friendly", "1", CVAR_ARCHIVE }, +;5645: +;5646: { &ui_ctf_capturelimit, "ui_ctf_capturelimit", "8", CVAR_ARCHIVE }, +;5647: { &ui_ctf_timelimit, "ui_ctf_timelimit", "30", CVAR_ARCHIVE }, +;5648: { &ui_ctf_friendly, "ui_ctf_friendly", "0", CVAR_ARCHIVE }, +;5649: +;5650: { &ui_arenasFile, "g_arenasFile", "", CVAR_INIT|CVAR_ROM }, +;5651: { &ui_botsFile, "g_botsFile", "", CVAR_INIT|CVAR_ROM }, +;5652: { &ui_spScores1, "g_spScores1", "", CVAR_ARCHIVE | CVAR_ROM }, +;5653: { &ui_spScores2, "g_spScores2", "", CVAR_ARCHIVE | CVAR_ROM }, +;5654: { &ui_spScores3, "g_spScores3", "", CVAR_ARCHIVE | CVAR_ROM }, +;5655: { &ui_spScores4, "g_spScores4", "", CVAR_ARCHIVE | CVAR_ROM }, +;5656: { &ui_spScores5, "g_spScores5", "", CVAR_ARCHIVE | CVAR_ROM }, +;5657: { &ui_spAwards, "g_spAwards", "", CVAR_ARCHIVE | CVAR_ROM }, +;5658: { &ui_spVideos, "g_spVideos", "", CVAR_ARCHIVE | CVAR_ROM }, +;5659: { &ui_spSkill, "g_spSkill", "2", CVAR_ARCHIVE }, +;5660: +;5661: { &ui_spSelection, "ui_spSelection", "", CVAR_ROM }, +;5662: +;5663: { &ui_browserMaster, "ui_browserMaster", "0", CVAR_ARCHIVE }, +;5664: { &ui_browserGameType, "ui_browserGameType", "0", CVAR_ARCHIVE }, +;5665: { &ui_browserSortKey, "ui_browserSortKey", "4", CVAR_ARCHIVE }, +;5666: { &ui_browserShowFull, "ui_browserShowFull", "1", CVAR_ARCHIVE }, +;5667: { &ui_browserShowEmpty, "ui_browserShowEmpty", "1", CVAR_ARCHIVE }, +;5668: +;5669: { &ui_brassTime, "cg_brassTime", "2500", CVAR_ARCHIVE }, +;5670: { &ui_drawCrosshair, "cg_drawCrosshair", "4", CVAR_ARCHIVE }, +;5671: { &ui_drawCrosshairNames, "cg_drawCrosshairNames", "1", CVAR_ARCHIVE }, +;5672: { &ui_marks, "cg_marks", "1", CVAR_ARCHIVE }, +;5673: +;5674: { &ui_server1, "server1", "", CVAR_ARCHIVE }, +;5675: { &ui_server2, "server2", "", CVAR_ARCHIVE }, +;5676: { &ui_server3, "server3", "", CVAR_ARCHIVE }, +;5677: { &ui_server4, "server4", "", CVAR_ARCHIVE }, +;5678: { &ui_server5, "server5", "", CVAR_ARCHIVE }, +;5679: { &ui_server6, "server6", "", CVAR_ARCHIVE }, +;5680: { &ui_server7, "server7", "", CVAR_ARCHIVE }, +;5681: { &ui_server8, "server8", "", CVAR_ARCHIVE }, +;5682: { &ui_server9, "server9", "", CVAR_ARCHIVE }, +;5683: { &ui_server10, "server10", "", CVAR_ARCHIVE }, +;5684: { &ui_server11, "server11", "", CVAR_ARCHIVE }, +;5685: { &ui_server12, "server12", "", CVAR_ARCHIVE }, +;5686: { &ui_server13, "server13", "", CVAR_ARCHIVE }, +;5687: { &ui_server14, "server14", "", CVAR_ARCHIVE }, +;5688: { &ui_server15, "server15", "", CVAR_ARCHIVE }, +;5689: { &ui_server16, "server16", "", CVAR_ARCHIVE }, +;5690: { &ui_cdkeychecked, "ui_cdkeychecked", "0", CVAR_ROM }, +;5691: { &ui_new, "ui_new", "0", CVAR_TEMP }, +;5692: { &ui_debug, "ui_debug", "0", CVAR_TEMP }, +;5693: { &ui_initialized, "ui_initialized", "0", CVAR_TEMP }, +;5694: { &ui_teamName, "ui_teamName", "Pagans", CVAR_ARCHIVE }, +;5695: { &ui_opponentName, "ui_opponentName", "Stroggs", CVAR_ARCHIVE }, +;5696: { &ui_redteam, "ui_redteam", "Pagans", CVAR_ARCHIVE }, +;5697: { &ui_blueteam, "ui_blueteam", "Stroggs", CVAR_ARCHIVE }, +;5698: { &ui_dedicated, "ui_dedicated", "0", CVAR_ARCHIVE }, +;5699: { &ui_gameType, "ui_gametype", "3", CVAR_ARCHIVE }, +;5700: { &ui_joinGameType, "ui_joinGametype", "0", CVAR_ARCHIVE }, +;5701: { &ui_netGameType, "ui_netGametype", "3", CVAR_ARCHIVE }, +;5702: { &ui_actualNetGameType, "ui_actualNetGametype", "3", CVAR_ARCHIVE }, +;5703: { &ui_redteam1, "ui_redteam1", "0", CVAR_ARCHIVE }, +;5704: { &ui_redteam2, "ui_redteam2", "0", CVAR_ARCHIVE }, +;5705: { &ui_redteam3, "ui_redteam3", "0", CVAR_ARCHIVE }, +;5706: { &ui_redteam4, "ui_redteam4", "0", CVAR_ARCHIVE }, +;5707: { &ui_redteam5, "ui_redteam5", "0", CVAR_ARCHIVE }, +;5708: { &ui_blueteam1, "ui_blueteam1", "0", CVAR_ARCHIVE }, +;5709: { &ui_blueteam2, "ui_blueteam2", "0", CVAR_ARCHIVE }, +;5710: { &ui_blueteam3, "ui_blueteam3", "0", CVAR_ARCHIVE }, +;5711: { &ui_blueteam4, "ui_blueteam4", "0", CVAR_ARCHIVE }, +;5712: { &ui_blueteam5, "ui_blueteam5", "0", CVAR_ARCHIVE }, +;5713: { &ui_netSource, "ui_netSource", "0", CVAR_ARCHIVE }, +;5714: { &ui_menuFiles, "ui_menuFiles", "ui/menus.txt", CVAR_ARCHIVE }, +;5715: { &ui_currentTier, "ui_currentTier", "0", CVAR_ARCHIVE }, +;5716: { &ui_currentMap, "ui_currentMap", "0", CVAR_ARCHIVE }, +;5717: { &ui_currentNetMap, "ui_currentNetMap", "0", CVAR_ARCHIVE }, +;5718: { &ui_mapIndex, "ui_mapIndex", "0", CVAR_ARCHIVE }, +;5719: { &ui_currentOpponent, "ui_currentOpponent", "0", CVAR_ARCHIVE }, +;5720: { &ui_selectedPlayer, "cg_selectedPlayer", "0", CVAR_ARCHIVE}, +;5721: { &ui_selectedPlayerName, "cg_selectedPlayerName", "", CVAR_ARCHIVE}, +;5722: { &ui_lastServerRefresh_0, "ui_lastServerRefresh_0", "", CVAR_ARCHIVE}, +;5723: { &ui_lastServerRefresh_1, "ui_lastServerRefresh_1", "", CVAR_ARCHIVE}, +;5724: { &ui_lastServerRefresh_2, "ui_lastServerRefresh_2", "", CVAR_ARCHIVE}, +;5725: { &ui_lastServerRefresh_3, "ui_lastServerRefresh_3", "", CVAR_ARCHIVE}, +;5726: { &ui_singlePlayerActive, "ui_singlePlayerActive", "0", 0}, +;5727: { &ui_scoreAccuracy, "ui_scoreAccuracy", "0", CVAR_ARCHIVE}, +;5728: { &ui_scoreImpressives, "ui_scoreImpressives", "0", CVAR_ARCHIVE}, +;5729: { &ui_scoreExcellents, "ui_scoreExcellents", "0", CVAR_ARCHIVE}, +;5730: { &ui_scoreCaptures, "ui_scoreCaptures", "0", CVAR_ARCHIVE}, +;5731: { &ui_scoreDefends, "ui_scoreDefends", "0", CVAR_ARCHIVE}, +;5732: { &ui_scoreAssists, "ui_scoreAssists", "0", CVAR_ARCHIVE}, +;5733: { &ui_scoreGauntlets, "ui_scoreGauntlets", "0",CVAR_ARCHIVE}, +;5734: { &ui_scoreScore, "ui_scoreScore", "0", CVAR_ARCHIVE}, +;5735: { &ui_scorePerfect, "ui_scorePerfect", "0", CVAR_ARCHIVE}, +;5736: { &ui_scoreTeam, "ui_scoreTeam", "0 to 0", CVAR_ARCHIVE}, +;5737: { &ui_scoreBase, "ui_scoreBase", "0", CVAR_ARCHIVE}, +;5738: { &ui_scoreTime, "ui_scoreTime", "00:00", CVAR_ARCHIVE}, +;5739: { &ui_scoreTimeBonus, "ui_scoreTimeBonus", "0", CVAR_ARCHIVE}, +;5740: { &ui_scoreSkillBonus, "ui_scoreSkillBonus", "0", CVAR_ARCHIVE}, +;5741: { &ui_scoreShutoutBonus, "ui_scoreShutoutBonus", "0", CVAR_ARCHIVE}, +;5742: { &ui_fragLimit, "ui_fragLimit", "10", 0}, +;5743: { &ui_captureLimit, "ui_captureLimit", "5", 0}, +;5744: { &ui_smallFont, "ui_smallFont", "0.25", CVAR_ARCHIVE}, +;5745: { &ui_bigFont, "ui_bigFont", "0.4", CVAR_ARCHIVE}, +;5746: { &ui_findPlayer, "ui_findPlayer", "Sarge", CVAR_ARCHIVE}, +;5747: { &ui_Q3Model, "ui_q3model", "0", CVAR_ARCHIVE}, +;5748: { &ui_hudFiles, "cg_hudFiles", "ui/hud.txt", CVAR_ARCHIVE}, +;5749: { &ui_recordSPDemo, "ui_recordSPDemo", "0", CVAR_ARCHIVE}, +;5750: { &ui_teamArenaFirstRun, "ui_teamArenaFirstRun", "0", CVAR_ARCHIVE}, +;5751: { &ui_realWarmUp, "g_warmup", "20", CVAR_ARCHIVE}, +;5752: { &ui_realCaptureLimit, "capturelimit", "8", CVAR_SERVERINFO | CVAR_ARCHIVE | CVAR_NORESTART}, +;5753: { &ui_serverStatusTimeOut, "ui_serverStatusTimeOut", "7000", CVAR_ARCHIVE}, +;5754: +;5755:}; +;5756: +;5757:// bk001129 - made static to avoid aliasing +;5758:static int cvarTableSize = sizeof(cvarTable) / sizeof(cvarTable[0]); +;5759: +;5760: +;5761:/* +;5762:================= +;5763:UI_RegisterCvars +;5764:================= +;5765:*/ +;5766:void UI_RegisterCvars( void ) { +line 5770 +;5767: int i; +;5768: cvarTable_t *cv; +;5769: +;5770: for ( i = 0, cv = cvarTable ; i < cvarTableSize ; i++, cv++ ) { +ADDRLP4 4 +CNSTI4 0 +ASGNI4 +ADDRLP4 0 +ADDRGP4 cvarTable +ASGNP4 +ADDRGP4 $4555 +JUMPV +LABELV $4552 +line 5771 +;5771: trap_Cvar_Register( cv->vmCvar, cv->cvarName, cv->defaultString, cv->cvarFlags ); +ADDRLP4 0 +INDIRP4 +INDIRP4 +ARGP4 +ADDRLP4 0 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRP4 +ARGP4 +ADDRLP4 0 +INDIRP4 +CNSTI4 8 +ADDP4 +INDIRP4 +ARGP4 +ADDRLP4 0 +INDIRP4 +CNSTI4 12 +ADDP4 +INDIRI4 +ARGI4 +ADDRGP4 trap_Cvar_Register +CALLV +pop +line 5772 +;5772: } +LABELV $4553 +line 5770 +ADDRLP4 4 +ADDRLP4 4 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +ADDRLP4 0 +ADDRLP4 0 +INDIRP4 +CNSTI4 16 +ADDP4 +ASGNP4 +LABELV $4555 +ADDRLP4 4 +INDIRI4 +ADDRGP4 cvarTableSize +INDIRI4 +LTI4 $4552 +line 5773 +;5773:} +LABELV $4551 +endproc UI_RegisterCvars 12 16 +export UI_UpdateCvars +proc UI_UpdateCvars 8 4 +line 5780 +;5774: +;5775:/* +;5776:================= +;5777:UI_UpdateCvars +;5778:================= +;5779:*/ +;5780:void UI_UpdateCvars( void ) { +line 5784 +;5781: int i; +;5782: cvarTable_t *cv; +;5783: +;5784: for ( i = 0, cv = cvarTable ; i < cvarTableSize ; i++, cv++ ) { +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +ADDRLP4 4 +ADDRGP4 cvarTable +ASGNP4 +ADDRGP4 $4560 +JUMPV +LABELV $4557 +line 5785 +;5785: trap_Cvar_Update( cv->vmCvar ); +ADDRLP4 4 +INDIRP4 +INDIRP4 +ARGP4 +ADDRGP4 trap_Cvar_Update +CALLV +pop +line 5786 +;5786: } +LABELV $4558 +line 5784 +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +ADDRLP4 4 +ADDRLP4 4 +INDIRP4 +CNSTI4 16 +ADDP4 +ASGNP4 +LABELV $4560 +ADDRLP4 0 +INDIRI4 +ADDRGP4 cvarTableSize +INDIRI4 +LTI4 $4557 +line 5787 +;5787:} +LABELV $4556 +endproc UI_UpdateCvars 8 4 +proc UI_StopServerRefresh 12 12 +line 5796 +;5788: +;5789: +;5790:/* +;5791:================= +;5792:ArenaServers_StopRefresh +;5793:================= +;5794:*/ +;5795:static void UI_StopServerRefresh( void ) +;5796:{ +line 5799 +;5797: int count; +;5798: +;5799: if (!uiInfo.serverStatus.refreshActive) { +ADDRGP4 uiInfo+99264+2212 +INDIRI4 +CNSTI4 0 +NEI4 $4562 +line 5801 +;5800: // not currently refreshing +;5801: return; +ADDRGP4 $4561 +JUMPV +LABELV $4562 +line 5803 +;5802: } +;5803: uiInfo.serverStatus.refreshActive = qfalse; +ADDRGP4 uiInfo+99264+2212 +CNSTI4 0 +ASGNI4 +line 5804 +;5804: Com_Printf("%d servers listed in browser with %d players.\n", +ADDRGP4 $4568 +ARGP4 +ADDRGP4 uiInfo+99264+10412 +INDIRI4 +ARGI4 +ADDRGP4 uiInfo+99264+10416 +INDIRI4 +ARGI4 +ADDRGP4 Com_Printf +CALLV +pop +line 5807 +;5805: uiInfo.serverStatus.numDisplayServers, +;5806: uiInfo.serverStatus.numPlayersOnServers); +;5807: count = trap_LAN_GetServerCount(ui_netSource.integer); +ADDRGP4 ui_netSource+12 +INDIRI4 +ARGI4 +ADDRLP4 4 +ADDRGP4 trap_LAN_GetServerCount +CALLI4 +ASGNI4 +ADDRLP4 0 +ADDRLP4 4 +INDIRI4 +ASGNI4 +line 5808 +;5808: if (count - uiInfo.serverStatus.numDisplayServers > 0) { +ADDRLP4 0 +INDIRI4 +ADDRGP4 uiInfo+99264+10412 +INDIRI4 +SUBI4 +CNSTI4 0 +LEI4 $4574 +line 5809 +;5809: Com_Printf("%d servers not listed due to packet loss or pings higher than %d\n", +ADDRGP4 $4581 +ARGP4 +ADDRLP4 8 +ADDRGP4 trap_Cvar_VariableValue +CALLF4 +ASGNF4 +ADDRGP4 $4578 +ARGP4 +ADDRLP4 0 +INDIRI4 +ADDRGP4 uiInfo+99264+10412 +INDIRI4 +SUBI4 +ARGI4 +ADDRLP4 8 +INDIRF4 +CVFI4 4 +ARGI4 +ADDRGP4 Com_Printf +CALLV +pop +line 5812 +;5810: count - uiInfo.serverStatus.numDisplayServers, +;5811: (int) trap_Cvar_VariableValue("cl_maxPing")); +;5812: } +LABELV $4574 +line 5814 +;5813: +;5814:} +LABELV $4561 +endproc UI_StopServerRefresh 12 12 +proc ArenaServers_MaxPing 8 4 +line 5822 +;5815: +;5816:/* +;5817:================= +;5818:ArenaServers_MaxPing +;5819:================= +;5820:*/ +;5821:#ifndef MISSIONPACK // bk001206 +;5822:static int ArenaServers_MaxPing( void ) { +line 5825 +;5823: int maxPing; +;5824: +;5825: maxPing = (int)trap_Cvar_VariableValue( "cl_maxPing" ); +ADDRGP4 $4581 +ARGP4 +ADDRLP4 4 +ADDRGP4 trap_Cvar_VariableValue +CALLF4 +ASGNF4 +ADDRLP4 0 +ADDRLP4 4 +INDIRF4 +CVFI4 4 +ASGNI4 +line 5826 +;5826: if( maxPing < 100 ) { +ADDRLP4 0 +INDIRI4 +CNSTI4 100 +GEI4 $4583 +line 5827 +;5827: maxPing = 100; +ADDRLP4 0 +CNSTI4 100 +ASGNI4 +line 5828 +;5828: } +LABELV $4583 +line 5829 +;5829: return maxPing; +ADDRLP4 0 +INDIRI4 +RETI4 +LABELV $4582 +endproc ArenaServers_MaxPing 8 4 +proc UI_DoServerRefresh 8 4 +line 5839 +;5830:} +;5831:#endif +;5832: +;5833:/* +;5834:================= +;5835:UI_DoServerRefresh +;5836:================= +;5837:*/ +;5838:static void UI_DoServerRefresh( void ) +;5839:{ +line 5840 +;5840: qboolean wait = qfalse; +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +line 5842 +;5841: +;5842: if (!uiInfo.serverStatus.refreshActive) { +ADDRGP4 uiInfo+99264+2212 +INDIRI4 +CNSTI4 0 +NEI4 $4586 +line 5843 +;5843: return; +ADDRGP4 $4585 +JUMPV +LABELV $4586 +line 5845 +;5844: } +;5845: if (ui_netSource.integer != AS_FAVORITES) { +ADDRGP4 ui_netSource+12 +INDIRI4 +CNSTI4 3 +EQI4 $4590 +line 5846 +;5846: if (ui_netSource.integer == AS_LOCAL) { +ADDRGP4 ui_netSource+12 +INDIRI4 +CNSTI4 0 +NEI4 $4593 +line 5847 +;5847: if (!trap_LAN_GetServerCount(ui_netSource.integer)) { +ADDRGP4 ui_netSource+12 +INDIRI4 +ARGI4 +ADDRLP4 4 +ADDRGP4 trap_LAN_GetServerCount +CALLI4 +ASGNI4 +ADDRLP4 4 +INDIRI4 +CNSTI4 0 +NEI4 $4594 +line 5848 +;5848: wait = qtrue; +ADDRLP4 0 +CNSTI4 1 +ASGNI4 +line 5849 +;5849: } +line 5850 +;5850: } else { +ADDRGP4 $4594 +JUMPV +LABELV $4593 +line 5851 +;5851: if (trap_LAN_GetServerCount(ui_netSource.integer) < 0) { +ADDRGP4 ui_netSource+12 +INDIRI4 +ARGI4 +ADDRLP4 4 +ADDRGP4 trap_LAN_GetServerCount +CALLI4 +ASGNI4 +ADDRLP4 4 +INDIRI4 +CNSTI4 0 +GEI4 $4599 +line 5852 +;5852: wait = qtrue; +ADDRLP4 0 +CNSTI4 1 +ASGNI4 +line 5853 +;5853: } +LABELV $4599 +line 5854 +;5854: } +LABELV $4594 +line 5855 +;5855: } +LABELV $4590 +line 5857 +;5856: +;5857: if (uiInfo.uiDC.realTime < uiInfo.serverStatus.refreshtime) { +ADDRGP4 uiInfo+208 +INDIRI4 +ADDRGP4 uiInfo+99264+2192 +INDIRI4 +GEI4 $4602 +line 5858 +;5858: if (wait) { +ADDRLP4 0 +INDIRI4 +CNSTI4 0 +EQI4 $4607 +line 5859 +;5859: return; +ADDRGP4 $4585 +JUMPV +LABELV $4607 +line 5861 +;5860: } +;5861: } +LABELV $4602 +line 5864 +;5862: +;5863: // if still trying to retrieve pings +;5864: if (trap_LAN_UpdateVisiblePings(ui_netSource.integer)) { +ADDRGP4 ui_netSource+12 +INDIRI4 +ARGI4 +ADDRLP4 4 +ADDRGP4 trap_LAN_UpdateVisiblePings +CALLI4 +ASGNI4 +ADDRLP4 4 +INDIRI4 +CNSTI4 0 +EQI4 $4609 +line 5865 +;5865: uiInfo.serverStatus.refreshtime = uiInfo.uiDC.realTime + 1000; +ADDRGP4 uiInfo+99264+2192 +ADDRGP4 uiInfo+208 +INDIRI4 +CNSTI4 1000 +ADDI4 +ASGNI4 +line 5866 +;5866: } else if (!wait) { +ADDRGP4 $4610 +JUMPV +LABELV $4609 +ADDRLP4 0 +INDIRI4 +CNSTI4 0 +NEI4 $4615 +line 5868 +;5867: // get the last servers in the list +;5868: UI_BuildServerDisplayList(2); +CNSTI4 2 +ARGI4 +ADDRGP4 UI_BuildServerDisplayList +CALLV +pop +line 5870 +;5869: // stop the refresh +;5870: UI_StopServerRefresh(); +ADDRGP4 UI_StopServerRefresh +CALLV +pop +line 5871 +;5871: } +LABELV $4615 +LABELV $4610 +line 5873 +;5872: // +;5873: UI_BuildServerDisplayList(qfalse); +CNSTI4 0 +ARGI4 +ADDRGP4 UI_BuildServerDisplayList +CALLV +pop +line 5874 +;5874:} +LABELV $4585 +endproc UI_DoServerRefresh 8 4 +proc UI_StartServerRefresh 68 24 +line 5882 +;5875: +;5876:/* +;5877:================= +;5878:UI_StartServerRefresh +;5879:================= +;5880:*/ +;5881:static void UI_StartServerRefresh(qboolean full) +;5882:{ +line 5887 +;5883: int i; +;5884: char *ptr; +;5885: +;5886: qtime_t q; +;5887: trap_RealTime(&q); +ADDRLP4 0 +ARGP4 +ADDRGP4 trap_RealTime +CALLI4 +pop +line 5888 +;5888: trap_Cvar_Set( va("ui_lastServerRefresh_%i", ui_netSource.integer), va("%s-%i, %i at %i:%i", MonthAbbrev[q.tm_mon],q.tm_mday, 1900+q.tm_year,q.tm_hour,q.tm_min)); +ADDRGP4 $1353 +ARGP4 +ADDRGP4 ui_netSource+12 +INDIRI4 +ARGI4 +ADDRLP4 44 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRGP4 $4619 +ARGP4 +ADDRLP4 0+16 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 MonthAbbrev +ADDP4 +INDIRP4 +ARGP4 +ADDRLP4 0+12 +INDIRI4 +ARGI4 +ADDRLP4 0+20 +INDIRI4 +CNSTI4 1900 +ADDI4 +ARGI4 +ADDRLP4 0+8 +INDIRI4 +ARGI4 +ADDRLP4 0+4 +INDIRI4 +ARGI4 +ADDRLP4 48 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRLP4 44 +INDIRP4 +ARGP4 +ADDRLP4 48 +INDIRP4 +ARGP4 +ADDRGP4 trap_Cvar_Set +CALLV +pop +line 5890 +;5889: +;5890: if (!full) { +ADDRFP4 0 +INDIRI4 +CNSTI4 0 +NEI4 $4625 +line 5891 +;5891: UI_UpdatePendingPings(); +ADDRGP4 UI_UpdatePendingPings +CALLV +pop +line 5892 +;5892: return; +ADDRGP4 $4617 +JUMPV +LABELV $4625 +line 5895 +;5893: } +;5894: +;5895: uiInfo.serverStatus.refreshActive = qtrue; +ADDRGP4 uiInfo+99264+2212 +CNSTI4 1 +ASGNI4 +line 5896 +;5896: uiInfo.serverStatus.nextDisplayRefresh = uiInfo.uiDC.realTime + 1000; +ADDRGP4 uiInfo+99264+10420 +ADDRGP4 uiInfo+208 +INDIRI4 +CNSTI4 1000 +ADDI4 +ASGNI4 +line 5898 +;5897: // clear number of displayed servers +;5898: uiInfo.serverStatus.numDisplayServers = 0; +ADDRGP4 uiInfo+99264+10412 +CNSTI4 0 +ASGNI4 +line 5899 +;5899: uiInfo.serverStatus.numPlayersOnServers = 0; +ADDRGP4 uiInfo+99264+10416 +CNSTI4 0 +ASGNI4 +line 5901 +;5900: // mark all servers as visible so we store ping updates for them +;5901: trap_LAN_MarkServerVisible(ui_netSource.integer, -1, qtrue); +ADDRGP4 ui_netSource+12 +INDIRI4 +ARGI4 +CNSTI4 -1 +ARGI4 +CNSTI4 1 +ARGI4 +ADDRGP4 trap_LAN_MarkServerVisible +CALLV +pop +line 5903 +;5902: // reset all the pings +;5903: trap_LAN_ResetPings(ui_netSource.integer); +ADDRGP4 ui_netSource+12 +INDIRI4 +ARGI4 +ADDRGP4 trap_LAN_ResetPings +CALLV +pop +line 5905 +;5904: // +;5905: if( ui_netSource.integer == AS_LOCAL ) { +ADDRGP4 ui_netSource+12 +INDIRI4 +CNSTI4 0 +NEI4 $4638 +line 5906 +;5906: trap_Cmd_ExecuteText( EXEC_NOW, "localservers\n" ); +CNSTI4 0 +ARGI4 +ADDRGP4 $4641 +ARGP4 +ADDRGP4 trap_Cmd_ExecuteText +CALLV +pop +line 5907 +;5907: uiInfo.serverStatus.refreshtime = uiInfo.uiDC.realTime + 1000; +ADDRGP4 uiInfo+99264+2192 +ADDRGP4 uiInfo+208 +INDIRI4 +CNSTI4 1000 +ADDI4 +ASGNI4 +line 5908 +;5908: return; +ADDRGP4 $4617 +JUMPV +LABELV $4638 +line 5911 +;5909: } +;5910: +;5911: uiInfo.serverStatus.refreshtime = uiInfo.uiDC.realTime + 5000; +ADDRGP4 uiInfo+99264+2192 +ADDRGP4 uiInfo+208 +INDIRI4 +CNSTI4 5000 +ADDI4 +ASGNI4 +line 5912 +;5912: if( ui_netSource.integer == AS_GLOBAL || ui_netSource.integer == AS_MPLAYER ) { +ADDRGP4 ui_netSource+12 +INDIRI4 +CNSTI4 2 +EQI4 $4652 +ADDRGP4 ui_netSource+12 +INDIRI4 +CNSTI4 1 +NEI4 $4648 +LABELV $4652 +line 5913 +;5913: if( ui_netSource.integer == AS_GLOBAL ) { +ADDRGP4 ui_netSource+12 +INDIRI4 +CNSTI4 2 +NEI4 $4653 +line 5914 +;5914: i = 0; +ADDRLP4 40 +CNSTI4 0 +ASGNI4 +line 5915 +;5915: } +ADDRGP4 $4654 +JUMPV +LABELV $4653 +line 5916 +;5916: else { +line 5917 +;5917: i = 1; +ADDRLP4 40 +CNSTI4 1 +ASGNI4 +line 5918 +;5918: } +LABELV $4654 +line 5920 +;5919: +;5920: ptr = UI_Cvar_VariableString("debug_protocol"); +ADDRGP4 $4289 +ARGP4 +ADDRLP4 52 +ADDRGP4 UI_Cvar_VariableString +CALLP4 +ASGNP4 +ADDRLP4 36 +ADDRLP4 52 +INDIRP4 +ASGNP4 +line 5921 +;5921: if (strlen(ptr)) { +ADDRLP4 36 +INDIRP4 +ARGP4 +ADDRLP4 56 +ADDRGP4 strlen +CALLI4 +ASGNI4 +ADDRLP4 56 +INDIRI4 +CNSTI4 0 +EQI4 $4656 +line 5922 +;5922: trap_Cmd_ExecuteText( EXEC_NOW, va( "globalservers %d %s full empty\n", i, ptr)); +ADDRGP4 $4658 +ARGP4 +ADDRLP4 40 +INDIRI4 +ARGI4 +ADDRLP4 36 +INDIRP4 +ARGP4 +ADDRLP4 60 +ADDRGP4 va +CALLP4 +ASGNP4 +CNSTI4 0 +ARGI4 +ADDRLP4 60 +INDIRP4 +ARGP4 +ADDRGP4 trap_Cmd_ExecuteText +CALLV +pop +line 5923 +;5923: } +ADDRGP4 $4657 +JUMPV +LABELV $4656 +line 5924 +;5924: else { +line 5925 +;5925: trap_Cmd_ExecuteText( EXEC_NOW, va( "globalservers %d %d full empty\n", i, (int)trap_Cvar_VariableValue( "protocol" ) ) ); +ADDRGP4 $2194 +ARGP4 +ADDRLP4 60 +ADDRGP4 trap_Cvar_VariableValue +CALLF4 +ASGNF4 +ADDRGP4 $4659 +ARGP4 +ADDRLP4 40 +INDIRI4 +ARGI4 +ADDRLP4 60 +INDIRF4 +CVFI4 4 +ARGI4 +ADDRLP4 64 +ADDRGP4 va +CALLP4 +ASGNP4 +CNSTI4 0 +ARGI4 +ADDRLP4 64 +INDIRP4 +ARGP4 +ADDRGP4 trap_Cmd_ExecuteText +CALLV +pop +line 5926 +;5926: } +LABELV $4657 +line 5927 +;5927: } +LABELV $4648 +line 5928 +;5928:} +LABELV $4617 +endproc UI_StartServerRefresh 68 24 +bss +export ui_realWarmUp +align 4 +LABELV ui_realWarmUp +skip 272 +export ui_realCaptureLimit +align 4 +LABELV ui_realCaptureLimit +skip 272 +export ui_recordSPDemo +align 4 +LABELV ui_recordSPDemo +skip 272 +export ui_hudFiles +align 4 +LABELV ui_hudFiles +skip 272 +export ui_Q3Model +align 4 +LABELV ui_Q3Model +skip 272 +export ui_findPlayer +align 4 +LABELV ui_findPlayer +skip 272 +export ui_scoreCaptures +align 4 +LABELV ui_scoreCaptures +skip 272 +export ui_teamName +align 4 +LABELV ui_teamName +skip 272 +export ui_blueteam5 +align 4 +LABELV ui_blueteam5 +skip 272 +export ui_blueteam4 +align 4 +LABELV ui_blueteam4 +skip 272 +export ui_blueteam3 +align 4 +LABELV ui_blueteam3 +skip 272 +export ui_blueteam2 +align 4 +LABELV ui_blueteam2 +skip 272 +export ui_blueteam1 +align 4 +LABELV ui_blueteam1 +skip 272 +export ui_blueteam +align 4 +LABELV ui_blueteam +skip 272 +export ui_redteam5 +align 4 +LABELV ui_redteam5 +skip 272 +export ui_redteam4 +align 4 +LABELV ui_redteam4 +skip 272 +export ui_redteam3 +align 4 +LABELV ui_redteam3 +skip 272 +export ui_redteam2 +align 4 +LABELV ui_redteam2 +skip 272 +export ui_redteam1 +align 4 +LABELV ui_redteam1 +skip 272 +export ui_redteam +align 4 +LABELV ui_redteam +skip 272 +align 1 +LABELV lastLoadingText +skip 1024 +align 4 +LABELV lastConnState +skip 4 +export startTime +align 4 +LABELV startTime +skip 4 +export ui_teamArenaFirstRun +align 4 +LABELV ui_teamArenaFirstRun +skip 272 +export ui_initialized +align 4 +LABELV ui_initialized +skip 272 +export ui_debug +align 4 +LABELV ui_debug +skip 272 +export ui_new +align 4 +LABELV ui_new +skip 272 +import ProcessNewUI +import UI_RankStatusMenu +import RankStatus_Cache +import UI_SignupMenu +import Signup_Cache +import UI_LoginMenu +import Login_Cache +import UI_InitGameinfo +import UI_SPUnlockMedals_f +import UI_SPUnlock_f +import UI_GetAwardLevel +import UI_LogAwardData +import UI_NewGame +import UI_GetCurrentGame +import UI_CanShowTierVideo +import UI_ShowTierVideo +import UI_TierCompleted +import UI_SetBestScore +import UI_GetBestScore +import UI_GetBotNameByNumber +import UI_LoadBots +import UI_GetNumBots +import UI_GetBotInfoByName +import UI_GetBotInfoByNumber +import UI_GetNumSPTiers +import UI_GetNumSPArenas +import UI_GetNumArenas +import UI_GetSpecialArenaInfo +import UI_GetArenaInfoByMap +import UI_GetArenaInfoByNumber +import UI_NetworkOptionsMenu +import UI_NetworkOptionsMenu_Cache +import UI_SoundOptionsMenu +import UI_SoundOptionsMenu_Cache +import UI_DisplayOptionsMenu +import UI_DisplayOptionsMenu_Cache +import UI_SaveConfigMenu +import UI_SaveConfigMenu_Cache +import UI_LoadConfigMenu +import UI_LoadConfig_Cache +import UI_TeamOrdersMenu_Cache +import UI_TeamOrdersMenu_f +import UI_TeamOrdersMenu +import UI_RemoveBotsMenu +import UI_RemoveBots_Cache +import UI_AddBotsMenu +import UI_AddBots_Cache +import trap_VerifyCDKey +import trap_R_RemapShader +import trap_RealTime +import trap_CIN_SetExtents +import trap_CIN_DrawCinematic +import trap_CIN_RunCinematic +import trap_CIN_StopCinematic +import trap_CIN_PlayCinematic +import trap_S_StartBackgroundTrack +import trap_S_StopBackgroundTrack +import trap_R_RegisterFont +import trap_SetCDKey +import trap_GetCDKey +import trap_MemoryRemaining +import trap_LAN_CompareServers +import trap_LAN_ServerStatus +import trap_LAN_ResetPings +import trap_LAN_RemoveServer +import trap_LAN_AddServer +import trap_LAN_UpdateVisiblePings +import trap_LAN_ServerIsVisible +import trap_LAN_MarkServerVisible +import trap_LAN_SaveCachedServers +import trap_LAN_LoadCachedServers +import trap_LAN_GetPingInfo +import trap_LAN_GetPing +import trap_LAN_ClearPing +import trap_LAN_GetPingQueueCount +import trap_LAN_GetServerPing +import trap_LAN_GetServerInfo +import trap_LAN_GetServerAddressString +import trap_LAN_GetServerCount +import trap_GetConfigString +import trap_GetGlconfig +import trap_GetClientState +import trap_GetClipboardData +import trap_Key_SetCatcher +import trap_Key_GetCatcher +import trap_Key_ClearStates +import trap_Key_SetOverstrikeMode +import trap_Key_GetOverstrikeMode +import trap_Key_IsDown +import trap_Key_SetBinding +import trap_Key_GetBindingBuf +import trap_Key_KeynumToStringBuf +import trap_S_RegisterSound +import trap_S_StartLocalSound +import trap_CM_LerpTag +import trap_UpdateScreen +import trap_R_ModelBounds +import trap_R_DrawStretchPic +import trap_R_SetColor +import trap_R_RenderScene +import trap_R_AddLightToScene +import trap_R_AddPolyToScene +import trap_R_AddRefEntityToScene +import trap_R_ClearScene +import trap_R_RegisterShaderNoMip +import trap_R_RegisterSkin +import trap_R_RegisterModel +import trap_FS_GetFileList +import trap_FS_FCloseFile +import trap_FS_Write +import trap_FS_Read +import trap_FS_FOpenFile +import trap_Cmd_ExecuteText +import trap_Argv +import trap_Argc +import trap_Cvar_InfoStringBuffer +import trap_Cvar_Create +import trap_Cvar_Reset +import trap_Cvar_SetValue +import trap_Cvar_VariableStringBuffer +import trap_Cvar_VariableValue +import trap_Cvar_Set +import trap_Cvar_Update +import trap_Cvar_Register +import trap_Milliseconds +import trap_Error +import trap_Print +import UI_SPSkillMenu_Cache +import UI_SPSkillMenu +import UI_SPPostgameMenu_f +import UI_SPPostgameMenu_Cache +import UI_SPArena_Start +import UI_SPLevelMenu_ReInit +import UI_SPLevelMenu_f +import UI_SPLevelMenu +import UI_SPLevelMenu_Cache +import uis +import UI_LoadBestScores +import m_entersound +import UI_StartDemoLoop +import UI_Cvar_VariableString +import UI_Argv +import UI_ForceMenuOff +import UI_PopMenu +import UI_PushMenu +import UI_SetActiveMenu +import UI_IsFullscreen +import UI_DrawTextBox +import UI_AdjustFrom640 +import UI_CursorInRect +import UI_DrawChar +import UI_DrawString +import UI_ProportionalStringWidth +import UI_DrawProportionalString +import UI_ProportionalSizeScale +import UI_DrawBannerString +import UI_LerpColor +import UI_SetColor +import UI_UpdateScreen +import UI_DrawSides +import UI_DrawTopBottom +import UI_DrawRect +import UI_FillRect +import UI_DrawHandlePic +import UI_DrawNamedPic +import UI_ClampCvar +import UI_ConsoleCommand +import UI_Refresh +import UI_MouseEvent +import UI_KeyEvent +import UI_Shutdown +import UI_Init +export uiInfo +align 4 +LABELV uiInfo +skip 136912 +import UI_RegisterClientModelname +import UI_PlayerInfo_SetInfo +import UI_PlayerInfo_SetModel +import UI_DrawPlayer +import DriverInfo_Cache +import GraphicsOptions_Cache +import UI_GraphicsOptionsMenu +import ServerInfo_Cache +import UI_ServerInfoMenu +import UI_BotSelectMenu_Cache +import UI_BotSelectMenu +import ServerOptions_Cache +import StartServer_Cache +import UI_StartServerMenu +import ArenaServers_Cache +import UI_ArenaServersMenu +import SpecifyServer_Cache +import UI_SpecifyServerMenu +import SpecifyLeague_Cache +import UI_SpecifyLeagueMenu +import Preferences_Cache +import UI_PreferencesMenu +import PlayerSettings_Cache +import UI_PlayerSettingsMenu +import PlayerModel_Cache +import UI_PlayerModelMenu +import UI_CDKeyMenu_f +import UI_CDKeyMenu_Cache +import UI_CDKeyMenu +import UI_ModsMenu_Cache +import UI_ModsMenu +import UI_CinematicsMenu_Cache +import UI_CinematicsMenu_f +import UI_CinematicsMenu +import Demos_Cache +import UI_DemosMenu +import Controls_Cache +import UI_ControlsMenu +import TeamMain_Cache +import UI_TeamMainMenu +import UI_SetupMenu +import UI_SetupMenu_Cache +import UI_ConfirmMenu +import ConfirmMenu_Cache +import UI_InGameMenu +import InGame_Cache +import UI_CreditMenu +import UI_MainMenu +import MainMenu_Cache +import UI_LoadArenas +import UI_ClearScores +import UI_AdjustTimeByGame +import MenuField_Key +import MenuField_Draw +import MenuField_Init +import MField_Draw +import MField_CharEvent +import MField_KeyDownEvent +import MField_Clear +import ui_medalSounds +import ui_medalPicNames +import ui_medalNames +import text_color_highlight +import text_color_normal +import text_color_disabled +import listbar_color +import list_color +import name_color +import color_dim +import color_red +import color_orange +import color_blue +import color_yellow +import color_white +import color_black +import menu_dim_color +import menu_black_color +import menu_red_color +import menu_highlight_color +import menu_dark_color +import menu_grayed_color +import menu_text_color +import weaponChangeSound +import menu_null_sound +import menu_buzz_sound +import menu_out_sound +import menu_move_sound +import menu_in_sound +import ScrollList_Key +import ScrollList_Draw +import Bitmap_Draw +import Bitmap_Init +import Menu_DefaultKey +import Menu_SetCursorToItem +import Menu_SetCursor +import Menu_ActivateItem +import Menu_ItemAtCursor +import Menu_Draw +import Menu_AdjustCursor +import Menu_AddItem +import Menu_Focus +import Menu_Cache +export ui_serverStatusTimeOut +align 4 +LABELV ui_serverStatusTimeOut +skip 272 +export ui_bigFont +align 4 +LABELV ui_bigFont +skip 272 +export ui_smallFont +align 4 +LABELV ui_smallFont +skip 272 +export ui_scoreTime +align 4 +LABELV ui_scoreTime +skip 272 +export ui_scoreShutoutBonus +align 4 +LABELV ui_scoreShutoutBonus +skip 272 +export ui_scoreSkillBonus +align 4 +LABELV ui_scoreSkillBonus +skip 272 +export ui_scoreTimeBonus +align 4 +LABELV ui_scoreTimeBonus +skip 272 +export ui_scoreBase +align 4 +LABELV ui_scoreBase +skip 272 +export ui_scoreTeam +align 4 +LABELV ui_scoreTeam +skip 272 +export ui_scorePerfect +align 4 +LABELV ui_scorePerfect +skip 272 +export ui_scoreScore +align 4 +LABELV ui_scoreScore +skip 272 +export ui_scoreGauntlets +align 4 +LABELV ui_scoreGauntlets +skip 272 +export ui_scoreAssists +align 4 +LABELV ui_scoreAssists +skip 272 +export ui_scoreDefends +align 4 +LABELV ui_scoreDefends +skip 272 +export ui_scoreExcellents +align 4 +LABELV ui_scoreExcellents +skip 272 +export ui_scoreImpressives +align 4 +LABELV ui_scoreImpressives +skip 272 +export ui_scoreAccuracy +align 4 +LABELV ui_scoreAccuracy +skip 272 +export ui_singlePlayerActive +align 4 +LABELV ui_singlePlayerActive +skip 272 +export ui_lastServerRefresh_3 +align 4 +LABELV ui_lastServerRefresh_3 +skip 272 +export ui_lastServerRefresh_2 +align 4 +LABELV ui_lastServerRefresh_2 +skip 272 +export ui_lastServerRefresh_1 +align 4 +LABELV ui_lastServerRefresh_1 +skip 272 +export ui_lastServerRefresh_0 +align 4 +LABELV ui_lastServerRefresh_0 +skip 272 +export ui_selectedPlayerName +align 4 +LABELV ui_selectedPlayerName +skip 272 +export ui_selectedPlayer +align 4 +LABELV ui_selectedPlayer +skip 272 +export ui_currentOpponent +align 4 +LABELV ui_currentOpponent +skip 272 +export ui_mapIndex +align 4 +LABELV ui_mapIndex +skip 272 +export ui_currentNetMap +align 4 +LABELV ui_currentNetMap +skip 272 +export ui_currentMap +align 4 +LABELV ui_currentMap +skip 272 +export ui_currentTier +align 4 +LABELV ui_currentTier +skip 272 +export ui_menuFiles +align 4 +LABELV ui_menuFiles +skip 272 +export ui_opponentName +align 4 +LABELV ui_opponentName +skip 272 +export ui_dedicated +align 4 +LABELV ui_dedicated +skip 272 +export ui_serverFilterType +align 4 +LABELV ui_serverFilterType +skip 272 +export ui_netSource +align 4 +LABELV ui_netSource +skip 272 +export ui_joinGameType +align 4 +LABELV ui_joinGameType +skip 272 +export ui_actualNetGameType +align 4 +LABELV ui_actualNetGameType +skip 272 +export ui_netGameType +align 4 +LABELV ui_netGameType +skip 272 +export ui_gameType +align 4 +LABELV ui_gameType +skip 272 +export ui_fragLimit +align 4 +LABELV ui_fragLimit +skip 272 +export ui_captureLimit +align 4 +LABELV ui_captureLimit +skip 272 +export ui_cdkeychecked +align 4 +LABELV ui_cdkeychecked +skip 272 +import ui_cdkey +export ui_server16 +align 4 +LABELV ui_server16 +skip 272 +export ui_server15 +align 4 +LABELV ui_server15 +skip 272 +export ui_server14 +align 4 +LABELV ui_server14 +skip 272 +export ui_server13 +align 4 +LABELV ui_server13 +skip 272 +export ui_server12 +align 4 +LABELV ui_server12 +skip 272 +export ui_server11 +align 4 +LABELV ui_server11 +skip 272 +export ui_server10 +align 4 +LABELV ui_server10 +skip 272 +export ui_server9 +align 4 +LABELV ui_server9 +skip 272 +export ui_server8 +align 4 +LABELV ui_server8 +skip 272 +export ui_server7 +align 4 +LABELV ui_server7 +skip 272 +export ui_server6 +align 4 +LABELV ui_server6 +skip 272 +export ui_server5 +align 4 +LABELV ui_server5 +skip 272 +export ui_server4 +align 4 +LABELV ui_server4 +skip 272 +export ui_server3 +align 4 +LABELV ui_server3 +skip 272 +export ui_server2 +align 4 +LABELV ui_server2 +skip 272 +export ui_server1 +align 4 +LABELV ui_server1 +skip 272 +export ui_marks +align 4 +LABELV ui_marks +skip 272 +export ui_drawCrosshairNames +align 4 +LABELV ui_drawCrosshairNames +skip 272 +export ui_drawCrosshair +align 4 +LABELV ui_drawCrosshair +skip 272 +export ui_brassTime +align 4 +LABELV ui_brassTime +skip 272 +export ui_browserShowEmpty +align 4 +LABELV ui_browserShowEmpty +skip 272 +export ui_browserShowFull +align 4 +LABELV ui_browserShowFull +skip 272 +export ui_browserSortKey +align 4 +LABELV ui_browserSortKey +skip 272 +export ui_browserGameType +align 4 +LABELV ui_browserGameType +skip 272 +export ui_browserMaster +align 4 +LABELV ui_browserMaster +skip 272 +export ui_spSelection +align 4 +LABELV ui_spSelection +skip 272 +export ui_spSkill +align 4 +LABELV ui_spSkill +skip 272 +export ui_spVideos +align 4 +LABELV ui_spVideos +skip 272 +export ui_spAwards +align 4 +LABELV ui_spAwards +skip 272 +export ui_spScores5 +align 4 +LABELV ui_spScores5 +skip 272 +export ui_spScores4 +align 4 +LABELV ui_spScores4 +skip 272 +export ui_spScores3 +align 4 +LABELV ui_spScores3 +skip 272 +export ui_spScores2 +align 4 +LABELV ui_spScores2 +skip 272 +export ui_spScores1 +align 4 +LABELV ui_spScores1 +skip 272 +export ui_botsFile +align 4 +LABELV ui_botsFile +skip 272 +export ui_arenasFile +align 4 +LABELV ui_arenasFile +skip 272 +export ui_ctf_friendly +align 4 +LABELV ui_ctf_friendly +skip 272 +export ui_ctf_timelimit +align 4 +LABELV ui_ctf_timelimit +skip 272 +export ui_ctf_capturelimit +align 4 +LABELV ui_ctf_capturelimit +skip 272 +export ui_team_friendly +align 4 +LABELV ui_team_friendly +skip 272 +export ui_team_timelimit +align 4 +LABELV ui_team_timelimit +skip 272 +export ui_team_fraglimit +align 4 +LABELV ui_team_fraglimit +skip 272 +export ui_tourney_timelimit +align 4 +LABELV ui_tourney_timelimit +skip 272 +export ui_tourney_fraglimit +align 4 +LABELV ui_tourney_fraglimit +skip 272 +export ui_ffa_timelimit +align 4 +LABELV ui_ffa_timelimit +skip 272 +export ui_ffa_fraglimit +align 4 +LABELV ui_ffa_fraglimit +skip 272 +import trap_PC_SourceFileAndLine +import trap_PC_ReadToken +import trap_PC_FreeSource +import trap_PC_LoadSource +import trap_PC_AddGlobalDefine +import Controls_SetDefaults +import Controls_SetConfig +import Controls_GetConfig +import UI_OutOfMemory +import UI_InitMemory +import UI_Alloc +import Display_CacheAll +import Menu_SetFeederSelection +import Menu_Paint +import Menus_CloseAll +import LerpColor +import Display_HandleKey +import Menus_CloseByName +import Menus_ShowByName +import Menus_FindByName +import Menus_OpenByName +import Display_KeyBindPending +import Display_CursorType +import Display_MouseMove +import Display_CaptureItem +import Display_GetContext +import Menus_Activate +import Menus_AnyFullScreenVisible +import Menu_Reset +import Menus_ActivateByName +import Menu_PaintAll +import Menu_New +import Menu_Count +import PC_Script_Parse +import PC_String_Parse +import PC_Rect_Parse +import PC_Int_Parse +import PC_Color_Parse +import PC_Float_Parse +import Script_Parse +import String_Parse +import Rect_Parse +import Int_Parse +import Color_Parse +import Float_Parse +import Menu_ScrollFeeder +import Menu_HandleMouseMove +import Menu_HandleKey +import Menu_GetFocused +import Menu_PostParse +import Item_Init +import Menu_Init +import Display_ExpandMacros +import Init_Display +import String_Report +import String_Init +import String_Alloc +import BG_PlayerTouchesItem +import BG_PlayerStateToEntityStateExtraPolate +import BG_PlayerStateToEntityState +import BG_TouchJumpPad +import BG_AddPredictableEventToPlayerstate +import BG_EvaluateTrajectoryDelta +import BG_EvaluateTrajectory +import BG_CanItemBeGrabbed +import BG_FindItemForHoldable +import BG_FindItemForPowerup +import BG_FindItemForWeapon +import BG_FindItem +import bg_numItems +import bg_itemlist +import ClipAmountForAmmo +import ClipAmountForReload +import Pmove +import PM_UpdateViewAngles +import Com_Printf +import Com_Error +import Info_NextPair +import Info_Validate +import Info_SetValueForKey_Big +import Info_SetValueForKey +import Info_RemoveKey_big +import Info_RemoveKey +import Info_ValueForKey +import va +import Q_CleanStr +import Q_PrintStrlen +import Q_strcat +import Q_strncpyz +import Q_strrchr +import Q_strupr +import Q_strlwr +import Q_stricmpn +import Q_strncmp +import Q_stricmp +import Q_isalpha +import Q_isupper +import Q_islower +import Q_isprint +import Com_sprintf +import Parse3DMatrix +import Parse2DMatrix +import Parse1DMatrix +import SkipRestOfLine +import SkipBracedSection +import COM_MatchToken +import COM_ParseWarning +import COM_ParseError +import COM_Compress +import COM_ParseExt +import COM_Parse +import COM_GetCurrentParseLine +import COM_BeginParseSession +import COM_DefaultExtension +import COM_StripExtension +import COM_SkipPath +import Com_Clamp +import PerpendicularVector +import AngleVectors +import MatrixMultiply +import MakeNormalVectors +import RotateAroundDirection +import RotatePointAroundVector +import ProjectPointOnPlane +import PlaneFromPoints +import AngleDelta +import AngleNormalize180 +import AngleNormalize360 +import AnglesSubtract +import AngleSubtract +import LerpAngle +import AngleMod +import BoxOnPlaneSide +import SetPlaneSignbits +import AxisCopy +import AxisClear +import AnglesToAxis +import vectoangles +import Q_crandom +import Q_random +import Q_rand +import Q_acos +import Q_log2 +import VectorRotate +import Vector4Scale +import VectorNormalize2 +import VectorNormalize +import CrossProduct +import VectorInverse +import VectorNormalizeFast +import DistanceSquared +import Distance +import VectorLengthSquared +import VectorLength +import VectorCompare +import AddPointToBounds +import ClearBounds +import RadiusFromBounds +import NormalizeColor +import ColorBytes4 +import ColorBytes3 +import _VectorMA +import _VectorScale +import _VectorCopy +import _VectorAdd +import _VectorSubtract +import _DotProduct +import ByteToDir +import DirToByte +import ClampShort +import ClampChar +import Q_rsqrt +import Q_fabs +import axisDefault +import vec3_origin +import g_color_table +import colorDkGrey +import colorMdGrey +import colorLtGrey +import colorWhite +import colorCyan +import colorMagenta +import colorYellow +import colorBlue +import colorGreen +import colorRed +import colorBlack +import bytedirs +import Com_Memcpy +import Com_Memset +import Hunk_Alloc +import FloatSwap +import LongSwap +import ShortSwap +import acos +import fabs +import abs +import tan +import atan2 +import cos +import sin +import sqrt +import floor +import ceil +import memcpy +import memset +import memmove +import sscanf +import vsprintf +import _atoi +import atoi +import _atof +import atof +import toupper +import tolower +import strncpy +import strstr +import strchr +import strcmp +import strcpy +import strcat +import strlen +import rand +import srand +import qsort +lit +align 1 +LABELV $4659 +byte 1 103 +byte 1 108 +byte 1 111 +byte 1 98 +byte 1 97 +byte 1 108 +byte 1 115 +byte 1 101 +byte 1 114 +byte 1 118 +byte 1 101 +byte 1 114 +byte 1 115 +byte 1 32 +byte 1 37 +byte 1 100 +byte 1 32 +byte 1 37 +byte 1 100 +byte 1 32 +byte 1 102 +byte 1 117 +byte 1 108 +byte 1 108 +byte 1 32 +byte 1 101 +byte 1 109 +byte 1 112 +byte 1 116 +byte 1 121 +byte 1 10 +byte 1 0 +align 1 +LABELV $4658 +byte 1 103 +byte 1 108 +byte 1 111 +byte 1 98 +byte 1 97 +byte 1 108 +byte 1 115 +byte 1 101 +byte 1 114 +byte 1 118 +byte 1 101 +byte 1 114 +byte 1 115 +byte 1 32 +byte 1 37 +byte 1 100 +byte 1 32 +byte 1 37 +byte 1 115 +byte 1 32 +byte 1 102 +byte 1 117 +byte 1 108 +byte 1 108 +byte 1 32 +byte 1 101 +byte 1 109 +byte 1 112 +byte 1 116 +byte 1 121 +byte 1 10 +byte 1 0 +align 1 +LABELV $4641 +byte 1 108 +byte 1 111 +byte 1 99 +byte 1 97 +byte 1 108 +byte 1 115 +byte 1 101 +byte 1 114 +byte 1 118 +byte 1 101 +byte 1 114 +byte 1 115 +byte 1 10 +byte 1 0 +align 1 +LABELV $4619 +byte 1 37 +byte 1 115 +byte 1 45 +byte 1 37 +byte 1 105 +byte 1 44 +byte 1 32 +byte 1 37 +byte 1 105 +byte 1 32 +byte 1 97 +byte 1 116 +byte 1 32 +byte 1 37 +byte 1 105 +byte 1 58 +byte 1 37 +byte 1 105 +byte 1 0 +align 1 +LABELV $4581 +byte 1 99 +byte 1 108 +byte 1 95 +byte 1 109 +byte 1 97 +byte 1 120 +byte 1 80 +byte 1 105 +byte 1 110 +byte 1 103 +byte 1 0 +align 1 +LABELV $4578 +byte 1 37 +byte 1 100 +byte 1 32 +byte 1 115 +byte 1 101 +byte 1 114 +byte 1 118 +byte 1 101 +byte 1 114 +byte 1 115 +byte 1 32 +byte 1 110 +byte 1 111 +byte 1 116 +byte 1 32 +byte 1 108 +byte 1 105 +byte 1 115 +byte 1 116 +byte 1 101 +byte 1 100 +byte 1 32 +byte 1 100 +byte 1 117 +byte 1 101 +byte 1 32 +byte 1 116 +byte 1 111 +byte 1 32 +byte 1 112 +byte 1 97 +byte 1 99 +byte 1 107 +byte 1 101 +byte 1 116 +byte 1 32 +byte 1 108 +byte 1 111 +byte 1 115 +byte 1 115 +byte 1 32 +byte 1 111 +byte 1 114 +byte 1 32 +byte 1 112 +byte 1 105 +byte 1 110 +byte 1 103 +byte 1 115 +byte 1 32 +byte 1 104 +byte 1 105 +byte 1 103 +byte 1 104 +byte 1 101 +byte 1 114 +byte 1 32 +byte 1 116 +byte 1 104 +byte 1 97 +byte 1 110 +byte 1 32 +byte 1 37 +byte 1 100 +byte 1 10 +byte 1 0 +align 1 +LABELV $4568 +byte 1 37 +byte 1 100 +byte 1 32 +byte 1 115 +byte 1 101 +byte 1 114 +byte 1 118 +byte 1 101 +byte 1 114 +byte 1 115 +byte 1 32 +byte 1 108 +byte 1 105 +byte 1 115 +byte 1 116 +byte 1 101 +byte 1 100 +byte 1 32 +byte 1 105 +byte 1 110 +byte 1 32 +byte 1 98 +byte 1 114 +byte 1 111 +byte 1 119 +byte 1 115 +byte 1 101 +byte 1 114 +byte 1 32 +byte 1 119 +byte 1 105 +byte 1 116 +byte 1 104 +byte 1 32 +byte 1 37 +byte 1 100 +byte 1 32 +byte 1 112 +byte 1 108 +byte 1 97 +byte 1 121 +byte 1 101 +byte 1 114 +byte 1 115 +byte 1 46 +byte 1 10 +byte 1 0 +align 1 +LABELV $4550 +byte 1 55 +byte 1 48 +byte 1 48 +byte 1 48 +byte 1 0 +align 1 +LABELV $4549 +byte 1 117 +byte 1 105 +byte 1 95 +byte 1 115 +byte 1 101 +byte 1 114 +byte 1 118 +byte 1 101 +byte 1 114 +byte 1 83 +byte 1 116 +byte 1 97 +byte 1 116 +byte 1 117 +byte 1 115 +byte 1 84 +byte 1 105 +byte 1 109 +byte 1 101 +byte 1 79 +byte 1 117 +byte 1 116 +byte 1 0 +align 1 +LABELV $4548 +byte 1 117 +byte 1 105 +byte 1 95 +byte 1 116 +byte 1 101 +byte 1 97 +byte 1 109 +byte 1 65 +byte 1 114 +byte 1 101 +byte 1 110 +byte 1 97 +byte 1 70 +byte 1 105 +byte 1 114 +byte 1 115 +byte 1 116 +byte 1 82 +byte 1 117 +byte 1 110 +byte 1 0 +align 1 +LABELV $4547 +byte 1 117 +byte 1 105 +byte 1 47 +byte 1 104 +byte 1 117 +byte 1 100 +byte 1 46 +byte 1 116 +byte 1 120 +byte 1 116 +byte 1 0 +align 1 +LABELV $4546 +byte 1 99 +byte 1 103 +byte 1 95 +byte 1 104 +byte 1 117 +byte 1 100 +byte 1 70 +byte 1 105 +byte 1 108 +byte 1 101 +byte 1 115 +byte 1 0 +align 1 +LABELV $4545 +byte 1 117 +byte 1 105 +byte 1 95 +byte 1 113 +byte 1 51 +byte 1 109 +byte 1 111 +byte 1 100 +byte 1 101 +byte 1 108 +byte 1 0 +align 1 +LABELV $4544 +byte 1 83 +byte 1 97 +byte 1 114 +byte 1 103 +byte 1 101 +byte 1 0 +align 1 +LABELV $4543 +byte 1 48 +byte 1 46 +byte 1 52 +byte 1 0 +align 1 +LABELV $4542 +byte 1 117 +byte 1 105 +byte 1 95 +byte 1 98 +byte 1 105 +byte 1 103 +byte 1 70 +byte 1 111 +byte 1 110 +byte 1 116 +byte 1 0 +align 1 +LABELV $4541 +byte 1 48 +byte 1 46 +byte 1 50 +byte 1 53 +byte 1 0 +align 1 +LABELV $4540 +byte 1 117 +byte 1 105 +byte 1 95 +byte 1 115 +byte 1 109 +byte 1 97 +byte 1 108 +byte 1 108 +byte 1 70 +byte 1 111 +byte 1 110 +byte 1 116 +byte 1 0 +align 1 +LABELV $4539 +byte 1 117 +byte 1 105 +byte 1 95 +byte 1 115 +byte 1 99 +byte 1 111 +byte 1 114 +byte 1 101 +byte 1 83 +byte 1 104 +byte 1 117 +byte 1 116 +byte 1 111 +byte 1 117 +byte 1 116 +byte 1 66 +byte 1 111 +byte 1 110 +byte 1 117 +byte 1 115 +byte 1 0 +align 1 +LABELV $4538 +byte 1 117 +byte 1 105 +byte 1 95 +byte 1 115 +byte 1 99 +byte 1 111 +byte 1 114 +byte 1 101 +byte 1 83 +byte 1 107 +byte 1 105 +byte 1 108 +byte 1 108 +byte 1 66 +byte 1 111 +byte 1 110 +byte 1 117 +byte 1 115 +byte 1 0 +align 1 +LABELV $4537 +byte 1 117 +byte 1 105 +byte 1 95 +byte 1 115 +byte 1 99 +byte 1 111 +byte 1 114 +byte 1 101 +byte 1 84 +byte 1 105 +byte 1 109 +byte 1 101 +byte 1 66 +byte 1 111 +byte 1 110 +byte 1 117 +byte 1 115 +byte 1 0 +align 1 +LABELV $4536 +byte 1 48 +byte 1 48 +byte 1 58 +byte 1 48 +byte 1 48 +byte 1 0 +align 1 +LABELV $4535 +byte 1 117 +byte 1 105 +byte 1 95 +byte 1 115 +byte 1 99 +byte 1 111 +byte 1 114 +byte 1 101 +byte 1 84 +byte 1 105 +byte 1 109 +byte 1 101 +byte 1 0 +align 1 +LABELV $4534 +byte 1 117 +byte 1 105 +byte 1 95 +byte 1 115 +byte 1 99 +byte 1 111 +byte 1 114 +byte 1 101 +byte 1 66 +byte 1 97 +byte 1 115 +byte 1 101 +byte 1 0 +align 1 +LABELV $4533 +byte 1 48 +byte 1 32 +byte 1 116 +byte 1 111 +byte 1 32 +byte 1 48 +byte 1 0 +align 1 +LABELV $4532 +byte 1 117 +byte 1 105 +byte 1 95 +byte 1 115 +byte 1 99 +byte 1 111 +byte 1 114 +byte 1 101 +byte 1 84 +byte 1 101 +byte 1 97 +byte 1 109 +byte 1 0 +align 1 +LABELV $4531 +byte 1 117 +byte 1 105 +byte 1 95 +byte 1 115 +byte 1 99 +byte 1 111 +byte 1 114 +byte 1 101 +byte 1 80 +byte 1 101 +byte 1 114 +byte 1 102 +byte 1 101 +byte 1 99 +byte 1 116 +byte 1 0 +align 1 +LABELV $4530 +byte 1 117 +byte 1 105 +byte 1 95 +byte 1 115 +byte 1 99 +byte 1 111 +byte 1 114 +byte 1 101 +byte 1 83 +byte 1 99 +byte 1 111 +byte 1 114 +byte 1 101 +byte 1 0 +align 1 +LABELV $4529 +byte 1 117 +byte 1 105 +byte 1 95 +byte 1 115 +byte 1 99 +byte 1 111 +byte 1 114 +byte 1 101 +byte 1 71 +byte 1 97 +byte 1 117 +byte 1 110 +byte 1 116 +byte 1 108 +byte 1 101 +byte 1 116 +byte 1 115 +byte 1 0 +align 1 +LABELV $4528 +byte 1 117 +byte 1 105 +byte 1 95 +byte 1 115 +byte 1 99 +byte 1 111 +byte 1 114 +byte 1 101 +byte 1 65 +byte 1 115 +byte 1 115 +byte 1 105 +byte 1 115 +byte 1 116 +byte 1 115 +byte 1 0 +align 1 +LABELV $4527 +byte 1 117 +byte 1 105 +byte 1 95 +byte 1 115 +byte 1 99 +byte 1 111 +byte 1 114 +byte 1 101 +byte 1 68 +byte 1 101 +byte 1 102 +byte 1 101 +byte 1 110 +byte 1 100 +byte 1 115 +byte 1 0 +align 1 +LABELV $4526 +byte 1 117 +byte 1 105 +byte 1 95 +byte 1 115 +byte 1 99 +byte 1 111 +byte 1 114 +byte 1 101 +byte 1 67 +byte 1 97 +byte 1 112 +byte 1 116 +byte 1 117 +byte 1 114 +byte 1 101 +byte 1 115 +byte 1 0 +align 1 +LABELV $4525 +byte 1 117 +byte 1 105 +byte 1 95 +byte 1 115 +byte 1 99 +byte 1 111 +byte 1 114 +byte 1 101 +byte 1 69 +byte 1 120 +byte 1 99 +byte 1 101 +byte 1 108 +byte 1 108 +byte 1 101 +byte 1 110 +byte 1 116 +byte 1 115 +byte 1 0 +align 1 +LABELV $4524 +byte 1 117 +byte 1 105 +byte 1 95 +byte 1 115 +byte 1 99 +byte 1 111 +byte 1 114 +byte 1 101 +byte 1 73 +byte 1 109 +byte 1 112 +byte 1 114 +byte 1 101 +byte 1 115 +byte 1 115 +byte 1 105 +byte 1 118 +byte 1 101 +byte 1 115 +byte 1 0 +align 1 +LABELV $4523 +byte 1 117 +byte 1 105 +byte 1 95 +byte 1 115 +byte 1 99 +byte 1 111 +byte 1 114 +byte 1 101 +byte 1 65 +byte 1 99 +byte 1 99 +byte 1 117 +byte 1 114 +byte 1 97 +byte 1 99 +byte 1 121 +byte 1 0 +align 1 +LABELV $4522 +byte 1 117 +byte 1 105 +byte 1 95 +byte 1 108 +byte 1 97 +byte 1 115 +byte 1 116 +byte 1 83 +byte 1 101 +byte 1 114 +byte 1 118 +byte 1 101 +byte 1 114 +byte 1 82 +byte 1 101 +byte 1 102 +byte 1 114 +byte 1 101 +byte 1 115 +byte 1 104 +byte 1 95 +byte 1 51 +byte 1 0 +align 1 +LABELV $4521 +byte 1 117 +byte 1 105 +byte 1 95 +byte 1 108 +byte 1 97 +byte 1 115 +byte 1 116 +byte 1 83 +byte 1 101 +byte 1 114 +byte 1 118 +byte 1 101 +byte 1 114 +byte 1 82 +byte 1 101 +byte 1 102 +byte 1 114 +byte 1 101 +byte 1 115 +byte 1 104 +byte 1 95 +byte 1 50 +byte 1 0 +align 1 +LABELV $4520 +byte 1 117 +byte 1 105 +byte 1 95 +byte 1 108 +byte 1 97 +byte 1 115 +byte 1 116 +byte 1 83 +byte 1 101 +byte 1 114 +byte 1 118 +byte 1 101 +byte 1 114 +byte 1 82 +byte 1 101 +byte 1 102 +byte 1 114 +byte 1 101 +byte 1 115 +byte 1 104 +byte 1 95 +byte 1 49 +byte 1 0 +align 1 +LABELV $4519 +byte 1 117 +byte 1 105 +byte 1 95 +byte 1 108 +byte 1 97 +byte 1 115 +byte 1 116 +byte 1 83 +byte 1 101 +byte 1 114 +byte 1 118 +byte 1 101 +byte 1 114 +byte 1 82 +byte 1 101 +byte 1 102 +byte 1 114 +byte 1 101 +byte 1 115 +byte 1 104 +byte 1 95 +byte 1 48 +byte 1 0 +align 1 +LABELV $4518 +byte 1 117 +byte 1 105 +byte 1 95 +byte 1 99 +byte 1 117 +byte 1 114 +byte 1 114 +byte 1 101 +byte 1 110 +byte 1 116 +byte 1 79 +byte 1 112 +byte 1 112 +byte 1 111 +byte 1 110 +byte 1 101 +byte 1 110 +byte 1 116 +byte 1 0 +align 1 +LABELV $4517 +byte 1 117 +byte 1 105 +byte 1 95 +byte 1 98 +byte 1 108 +byte 1 117 +byte 1 101 +byte 1 116 +byte 1 101 +byte 1 97 +byte 1 109 +byte 1 53 +byte 1 0 +align 1 +LABELV $4516 +byte 1 117 +byte 1 105 +byte 1 95 +byte 1 98 +byte 1 108 +byte 1 117 +byte 1 101 +byte 1 116 +byte 1 101 +byte 1 97 +byte 1 109 +byte 1 52 +byte 1 0 +align 1 +LABELV $4515 +byte 1 117 +byte 1 105 +byte 1 95 +byte 1 98 +byte 1 108 +byte 1 117 +byte 1 101 +byte 1 116 +byte 1 101 +byte 1 97 +byte 1 109 +byte 1 51 +byte 1 0 +align 1 +LABELV $4514 +byte 1 117 +byte 1 105 +byte 1 95 +byte 1 98 +byte 1 108 +byte 1 117 +byte 1 101 +byte 1 116 +byte 1 101 +byte 1 97 +byte 1 109 +byte 1 50 +byte 1 0 +align 1 +LABELV $4513 +byte 1 117 +byte 1 105 +byte 1 95 +byte 1 98 +byte 1 108 +byte 1 117 +byte 1 101 +byte 1 116 +byte 1 101 +byte 1 97 +byte 1 109 +byte 1 49 +byte 1 0 +align 1 +LABELV $4512 +byte 1 117 +byte 1 105 +byte 1 95 +byte 1 114 +byte 1 101 +byte 1 100 +byte 1 116 +byte 1 101 +byte 1 97 +byte 1 109 +byte 1 53 +byte 1 0 +align 1 +LABELV $4511 +byte 1 117 +byte 1 105 +byte 1 95 +byte 1 114 +byte 1 101 +byte 1 100 +byte 1 116 +byte 1 101 +byte 1 97 +byte 1 109 +byte 1 52 +byte 1 0 +align 1 +LABELV $4510 +byte 1 117 +byte 1 105 +byte 1 95 +byte 1 114 +byte 1 101 +byte 1 100 +byte 1 116 +byte 1 101 +byte 1 97 +byte 1 109 +byte 1 51 +byte 1 0 +align 1 +LABELV $4509 +byte 1 117 +byte 1 105 +byte 1 95 +byte 1 114 +byte 1 101 +byte 1 100 +byte 1 116 +byte 1 101 +byte 1 97 +byte 1 109 +byte 1 50 +byte 1 0 +align 1 +LABELV $4508 +byte 1 117 +byte 1 105 +byte 1 95 +byte 1 114 +byte 1 101 +byte 1 100 +byte 1 116 +byte 1 101 +byte 1 97 +byte 1 109 +byte 1 49 +byte 1 0 +align 1 +LABELV $4507 +byte 1 117 +byte 1 105 +byte 1 95 +byte 1 97 +byte 1 99 +byte 1 116 +byte 1 117 +byte 1 97 +byte 1 108 +byte 1 78 +byte 1 101 +byte 1 116 +byte 1 71 +byte 1 97 +byte 1 109 +byte 1 101 +byte 1 116 +byte 1 121 +byte 1 112 +byte 1 101 +byte 1 0 +align 1 +LABELV $4506 +byte 1 117 +byte 1 105 +byte 1 95 +byte 1 110 +byte 1 101 +byte 1 116 +byte 1 71 +byte 1 97 +byte 1 109 +byte 1 101 +byte 1 116 +byte 1 121 +byte 1 112 +byte 1 101 +byte 1 0 +align 1 +LABELV $4505 +byte 1 117 +byte 1 105 +byte 1 95 +byte 1 106 +byte 1 111 +byte 1 105 +byte 1 110 +byte 1 71 +byte 1 97 +byte 1 109 +byte 1 101 +byte 1 116 +byte 1 121 +byte 1 112 +byte 1 101 +byte 1 0 +align 1 +LABELV $4504 +byte 1 51 +byte 1 0 +align 1 +LABELV $4503 +byte 1 117 +byte 1 105 +byte 1 95 +byte 1 103 +byte 1 97 +byte 1 109 +byte 1 101 +byte 1 116 +byte 1 121 +byte 1 112 +byte 1 101 +byte 1 0 +align 1 +LABELV $4502 +byte 1 117 +byte 1 105 +byte 1 95 +byte 1 100 +byte 1 101 +byte 1 100 +byte 1 105 +byte 1 99 +byte 1 97 +byte 1 116 +byte 1 101 +byte 1 100 +byte 1 0 +align 1 +LABELV $4501 +byte 1 117 +byte 1 105 +byte 1 95 +byte 1 98 +byte 1 108 +byte 1 117 +byte 1 101 +byte 1 116 +byte 1 101 +byte 1 97 +byte 1 109 +byte 1 0 +align 1 +LABELV $4500 +byte 1 117 +byte 1 105 +byte 1 95 +byte 1 114 +byte 1 101 +byte 1 100 +byte 1 116 +byte 1 101 +byte 1 97 +byte 1 109 +byte 1 0 +align 1 +LABELV $4499 +byte 1 83 +byte 1 116 +byte 1 114 +byte 1 111 +byte 1 103 +byte 1 103 +byte 1 115 +byte 1 0 +align 1 +LABELV $4498 +byte 1 80 +byte 1 97 +byte 1 103 +byte 1 97 +byte 1 110 +byte 1 115 +byte 1 0 +align 1 +LABELV $4497 +byte 1 117 +byte 1 105 +byte 1 95 +byte 1 105 +byte 1 110 +byte 1 105 +byte 1 116 +byte 1 105 +byte 1 97 +byte 1 108 +byte 1 105 +byte 1 122 +byte 1 101 +byte 1 100 +byte 1 0 +align 1 +LABELV $4496 +byte 1 117 +byte 1 105 +byte 1 95 +byte 1 100 +byte 1 101 +byte 1 98 +byte 1 117 +byte 1 103 +byte 1 0 +align 1 +LABELV $4495 +byte 1 117 +byte 1 105 +byte 1 95 +byte 1 110 +byte 1 101 +byte 1 119 +byte 1 0 +align 1 +LABELV $4494 +byte 1 117 +byte 1 105 +byte 1 95 +byte 1 99 +byte 1 100 +byte 1 107 +byte 1 101 +byte 1 121 +byte 1 99 +byte 1 104 +byte 1 101 +byte 1 99 +byte 1 107 +byte 1 101 +byte 1 100 +byte 1 0 +align 1 +LABELV $4493 +byte 1 115 +byte 1 101 +byte 1 114 +byte 1 118 +byte 1 101 +byte 1 114 +byte 1 49 +byte 1 54 +byte 1 0 +align 1 +LABELV $4492 +byte 1 115 +byte 1 101 +byte 1 114 +byte 1 118 +byte 1 101 +byte 1 114 +byte 1 49 +byte 1 53 +byte 1 0 +align 1 +LABELV $4491 +byte 1 115 +byte 1 101 +byte 1 114 +byte 1 118 +byte 1 101 +byte 1 114 +byte 1 49 +byte 1 52 +byte 1 0 +align 1 +LABELV $4490 +byte 1 115 +byte 1 101 +byte 1 114 +byte 1 118 +byte 1 101 +byte 1 114 +byte 1 49 +byte 1 51 +byte 1 0 +align 1 +LABELV $4489 +byte 1 115 +byte 1 101 +byte 1 114 +byte 1 118 +byte 1 101 +byte 1 114 +byte 1 49 +byte 1 50 +byte 1 0 +align 1 +LABELV $4488 +byte 1 115 +byte 1 101 +byte 1 114 +byte 1 118 +byte 1 101 +byte 1 114 +byte 1 49 +byte 1 49 +byte 1 0 +align 1 +LABELV $4487 +byte 1 115 +byte 1 101 +byte 1 114 +byte 1 118 +byte 1 101 +byte 1 114 +byte 1 49 +byte 1 48 +byte 1 0 +align 1 +LABELV $4486 +byte 1 115 +byte 1 101 +byte 1 114 +byte 1 118 +byte 1 101 +byte 1 114 +byte 1 57 +byte 1 0 +align 1 +LABELV $4485 +byte 1 115 +byte 1 101 +byte 1 114 +byte 1 118 +byte 1 101 +byte 1 114 +byte 1 56 +byte 1 0 +align 1 +LABELV $4484 +byte 1 115 +byte 1 101 +byte 1 114 +byte 1 118 +byte 1 101 +byte 1 114 +byte 1 55 +byte 1 0 +align 1 +LABELV $4483 +byte 1 115 +byte 1 101 +byte 1 114 +byte 1 118 +byte 1 101 +byte 1 114 +byte 1 54 +byte 1 0 +align 1 +LABELV $4482 +byte 1 115 +byte 1 101 +byte 1 114 +byte 1 118 +byte 1 101 +byte 1 114 +byte 1 53 +byte 1 0 +align 1 +LABELV $4481 +byte 1 115 +byte 1 101 +byte 1 114 +byte 1 118 +byte 1 101 +byte 1 114 +byte 1 52 +byte 1 0 +align 1 +LABELV $4480 +byte 1 115 +byte 1 101 +byte 1 114 +byte 1 118 +byte 1 101 +byte 1 114 +byte 1 51 +byte 1 0 +align 1 +LABELV $4479 +byte 1 115 +byte 1 101 +byte 1 114 +byte 1 118 +byte 1 101 +byte 1 114 +byte 1 50 +byte 1 0 +align 1 +LABELV $4478 +byte 1 115 +byte 1 101 +byte 1 114 +byte 1 118 +byte 1 101 +byte 1 114 +byte 1 49 +byte 1 0 +align 1 +LABELV $4477 +byte 1 99 +byte 1 103 +byte 1 95 +byte 1 109 +byte 1 97 +byte 1 114 +byte 1 107 +byte 1 115 +byte 1 0 +align 1 +LABELV $4476 +byte 1 99 +byte 1 103 +byte 1 95 +byte 1 100 +byte 1 114 +byte 1 97 +byte 1 119 +byte 1 67 +byte 1 114 +byte 1 111 +byte 1 115 +byte 1 115 +byte 1 104 +byte 1 97 +byte 1 105 +byte 1 114 +byte 1 78 +byte 1 97 +byte 1 109 +byte 1 101 +byte 1 115 +byte 1 0 +align 1 +LABELV $4475 +byte 1 50 +byte 1 53 +byte 1 48 +byte 1 48 +byte 1 0 +align 1 +LABELV $4474 +byte 1 117 +byte 1 105 +byte 1 95 +byte 1 98 +byte 1 114 +byte 1 111 +byte 1 119 +byte 1 115 +byte 1 101 +byte 1 114 +byte 1 83 +byte 1 104 +byte 1 111 +byte 1 119 +byte 1 69 +byte 1 109 +byte 1 112 +byte 1 116 +byte 1 121 +byte 1 0 +align 1 +LABELV $4473 +byte 1 117 +byte 1 105 +byte 1 95 +byte 1 98 +byte 1 114 +byte 1 111 +byte 1 119 +byte 1 115 +byte 1 101 +byte 1 114 +byte 1 83 +byte 1 104 +byte 1 111 +byte 1 119 +byte 1 70 +byte 1 117 +byte 1 108 +byte 1 108 +byte 1 0 +align 1 +LABELV $4472 +byte 1 117 +byte 1 105 +byte 1 95 +byte 1 98 +byte 1 114 +byte 1 111 +byte 1 119 +byte 1 115 +byte 1 101 +byte 1 114 +byte 1 83 +byte 1 111 +byte 1 114 +byte 1 116 +byte 1 75 +byte 1 101 +byte 1 121 +byte 1 0 +align 1 +LABELV $4471 +byte 1 117 +byte 1 105 +byte 1 95 +byte 1 98 +byte 1 114 +byte 1 111 +byte 1 119 +byte 1 115 +byte 1 101 +byte 1 114 +byte 1 71 +byte 1 97 +byte 1 109 +byte 1 101 +byte 1 84 +byte 1 121 +byte 1 112 +byte 1 101 +byte 1 0 +align 1 +LABELV $4470 +byte 1 117 +byte 1 105 +byte 1 95 +byte 1 98 +byte 1 114 +byte 1 111 +byte 1 119 +byte 1 115 +byte 1 101 +byte 1 114 +byte 1 77 +byte 1 97 +byte 1 115 +byte 1 116 +byte 1 101 +byte 1 114 +byte 1 0 +align 1 +LABELV $4469 +byte 1 117 +byte 1 105 +byte 1 95 +byte 1 115 +byte 1 112 +byte 1 83 +byte 1 101 +byte 1 108 +byte 1 101 +byte 1 99 +byte 1 116 +byte 1 105 +byte 1 111 +byte 1 110 +byte 1 0 +align 1 +LABELV $4468 +byte 1 103 +byte 1 95 +byte 1 115 +byte 1 112 +byte 1 86 +byte 1 105 +byte 1 100 +byte 1 101 +byte 1 111 +byte 1 115 +byte 1 0 +align 1 +LABELV $4467 +byte 1 103 +byte 1 95 +byte 1 115 +byte 1 112 +byte 1 65 +byte 1 119 +byte 1 97 +byte 1 114 +byte 1 100 +byte 1 115 +byte 1 0 +align 1 +LABELV $4466 +byte 1 103 +byte 1 95 +byte 1 115 +byte 1 112 +byte 1 83 +byte 1 99 +byte 1 111 +byte 1 114 +byte 1 101 +byte 1 115 +byte 1 53 +byte 1 0 +align 1 +LABELV $4465 +byte 1 103 +byte 1 95 +byte 1 115 +byte 1 112 +byte 1 83 +byte 1 99 +byte 1 111 +byte 1 114 +byte 1 101 +byte 1 115 +byte 1 52 +byte 1 0 +align 1 +LABELV $4464 +byte 1 103 +byte 1 95 +byte 1 115 +byte 1 112 +byte 1 83 +byte 1 99 +byte 1 111 +byte 1 114 +byte 1 101 +byte 1 115 +byte 1 51 +byte 1 0 +align 1 +LABELV $4463 +byte 1 103 +byte 1 95 +byte 1 115 +byte 1 112 +byte 1 83 +byte 1 99 +byte 1 111 +byte 1 114 +byte 1 101 +byte 1 115 +byte 1 50 +byte 1 0 +align 1 +LABELV $4462 +byte 1 103 +byte 1 95 +byte 1 115 +byte 1 112 +byte 1 83 +byte 1 99 +byte 1 111 +byte 1 114 +byte 1 101 +byte 1 115 +byte 1 49 +byte 1 0 +align 1 +LABELV $4461 +byte 1 103 +byte 1 95 +byte 1 98 +byte 1 111 +byte 1 116 +byte 1 115 +byte 1 70 +byte 1 105 +byte 1 108 +byte 1 101 +byte 1 0 +align 1 +LABELV $4460 +byte 1 103 +byte 1 95 +byte 1 97 +byte 1 114 +byte 1 101 +byte 1 110 +byte 1 97 +byte 1 115 +byte 1 70 +byte 1 105 +byte 1 108 +byte 1 101 +byte 1 0 +align 1 +LABELV $4459 +byte 1 117 +byte 1 105 +byte 1 95 +byte 1 99 +byte 1 116 +byte 1 102 +byte 1 95 +byte 1 102 +byte 1 114 +byte 1 105 +byte 1 101 +byte 1 110 +byte 1 100 +byte 1 108 +byte 1 121 +byte 1 0 +align 1 +LABELV $4458 +byte 1 117 +byte 1 105 +byte 1 95 +byte 1 99 +byte 1 116 +byte 1 102 +byte 1 95 +byte 1 116 +byte 1 105 +byte 1 109 +byte 1 101 +byte 1 108 +byte 1 105 +byte 1 109 +byte 1 105 +byte 1 116 +byte 1 0 +align 1 +LABELV $4457 +byte 1 56 +byte 1 0 +align 1 +LABELV $4456 +byte 1 117 +byte 1 105 +byte 1 95 +byte 1 99 +byte 1 116 +byte 1 102 +byte 1 95 +byte 1 99 +byte 1 97 +byte 1 112 +byte 1 116 +byte 1 117 +byte 1 114 +byte 1 101 +byte 1 108 +byte 1 105 +byte 1 109 +byte 1 105 +byte 1 116 +byte 1 0 +align 1 +LABELV $4455 +byte 1 117 +byte 1 105 +byte 1 95 +byte 1 116 +byte 1 101 +byte 1 97 +byte 1 109 +byte 1 95 +byte 1 102 +byte 1 114 +byte 1 105 +byte 1 101 +byte 1 110 +byte 1 100 +byte 1 108 +byte 1 121 +byte 1 0 +align 1 +LABELV $4454 +byte 1 117 +byte 1 105 +byte 1 95 +byte 1 116 +byte 1 101 +byte 1 97 +byte 1 109 +byte 1 95 +byte 1 116 +byte 1 105 +byte 1 109 +byte 1 101 +byte 1 108 +byte 1 105 +byte 1 109 +byte 1 105 +byte 1 116 +byte 1 0 +align 1 +LABELV $4453 +byte 1 117 +byte 1 105 +byte 1 95 +byte 1 116 +byte 1 101 +byte 1 97 +byte 1 109 +byte 1 95 +byte 1 102 +byte 1 114 +byte 1 97 +byte 1 103 +byte 1 108 +byte 1 105 +byte 1 109 +byte 1 105 +byte 1 116 +byte 1 0 +align 1 +LABELV $4452 +byte 1 117 +byte 1 105 +byte 1 95 +byte 1 116 +byte 1 111 +byte 1 117 +byte 1 114 +byte 1 110 +byte 1 101 +byte 1 121 +byte 1 95 +byte 1 116 +byte 1 105 +byte 1 109 +byte 1 101 +byte 1 108 +byte 1 105 +byte 1 109 +byte 1 105 +byte 1 116 +byte 1 0 +align 1 +LABELV $4451 +byte 1 117 +byte 1 105 +byte 1 95 +byte 1 116 +byte 1 111 +byte 1 117 +byte 1 114 +byte 1 110 +byte 1 101 +byte 1 121 +byte 1 95 +byte 1 102 +byte 1 114 +byte 1 97 +byte 1 103 +byte 1 108 +byte 1 105 +byte 1 109 +byte 1 105 +byte 1 116 +byte 1 0 +align 1 +LABELV $4450 +byte 1 117 +byte 1 105 +byte 1 95 +byte 1 102 +byte 1 102 +byte 1 97 +byte 1 95 +byte 1 116 +byte 1 105 +byte 1 109 +byte 1 101 +byte 1 108 +byte 1 105 +byte 1 109 +byte 1 105 +byte 1 116 +byte 1 0 +align 1 +LABELV $4449 +byte 1 117 +byte 1 105 +byte 1 95 +byte 1 102 +byte 1 102 +byte 1 97 +byte 1 95 +byte 1 102 +byte 1 114 +byte 1 97 +byte 1 103 +byte 1 108 +byte 1 105 +byte 1 109 +byte 1 105 +byte 1 116 +byte 1 0 +align 1 +LABELV $4440 +byte 1 65 +byte 1 119 +byte 1 97 +byte 1 105 +byte 1 116 +byte 1 105 +byte 1 110 +byte 1 103 +byte 1 32 +byte 1 103 +byte 1 97 +byte 1 109 +byte 1 101 +byte 1 115 +byte 1 116 +byte 1 97 +byte 1 116 +byte 1 101 +byte 1 46 +byte 1 46 +byte 1 46 +byte 1 0 +align 1 +LABELV $4437 +byte 1 99 +byte 1 108 +byte 1 95 +byte 1 100 +byte 1 111 +byte 1 119 +byte 1 110 +byte 1 108 +byte 1 111 +byte 1 97 +byte 1 100 +byte 1 78 +byte 1 97 +byte 1 109 +byte 1 101 +byte 1 0 +align 1 +LABELV $4434 +byte 1 65 +byte 1 119 +byte 1 97 +byte 1 105 +byte 1 116 +byte 1 105 +byte 1 110 +byte 1 103 +byte 1 32 +byte 1 99 +byte 1 104 +byte 1 97 +byte 1 108 +byte 1 108 +byte 1 101 +byte 1 110 +byte 1 103 +byte 1 101 +byte 1 46 +byte 1 46 +byte 1 46 +byte 1 37 +byte 1 105 +byte 1 0 +align 1 +LABELV $4431 +byte 1 65 +byte 1 119 +byte 1 97 +byte 1 105 +byte 1 116 +byte 1 105 +byte 1 110 +byte 1 103 +byte 1 32 +byte 1 99 +byte 1 111 +byte 1 110 +byte 1 110 +byte 1 101 +byte 1 99 +byte 1 116 +byte 1 105 +byte 1 111 +byte 1 110 +byte 1 46 +byte 1 46 +byte 1 46 +byte 1 37 +byte 1 105 +byte 1 0 +align 1 +LABELV $4421 +byte 1 109 +byte 1 111 +byte 1 116 +byte 1 100 +byte 1 0 +align 1 +LABELV $4418 +byte 1 67 +byte 1 111 +byte 1 110 +byte 1 110 +byte 1 101 +byte 1 99 +byte 1 116 +byte 1 105 +byte 1 110 +byte 1 103 +byte 1 32 +byte 1 116 +byte 1 111 +byte 1 32 +byte 1 37 +byte 1 115 +byte 1 0 +align 1 +LABELV $4417 +byte 1 83 +byte 1 116 +byte 1 97 +byte 1 114 +byte 1 116 +byte 1 105 +byte 1 110 +byte 1 103 +byte 1 32 +byte 1 117 +byte 1 112 +byte 1 46 +byte 1 46 +byte 1 46 +byte 1 0 +align 1 +LABELV $4416 +byte 1 108 +byte 1 111 +byte 1 99 +byte 1 97 +byte 1 108 +byte 1 104 +byte 1 111 +byte 1 115 +byte 1 116 +byte 1 0 +align 1 +LABELV $4412 +byte 1 76 +byte 1 111 +byte 1 97 +byte 1 100 +byte 1 105 +byte 1 110 +byte 1 103 +byte 1 32 +byte 1 37 +byte 1 115 +byte 1 0 +align 1 +LABELV $4405 +byte 1 67 +byte 1 111 +byte 1 110 +byte 1 110 +byte 1 101 +byte 1 99 +byte 1 116 +byte 1 0 +align 1 +LABELV $4403 +byte 1 37 +byte 1 115 +byte 1 47 +byte 1 83 +byte 1 101 +byte 1 99 +byte 1 0 +align 1 +LABELV $4400 +byte 1 40 +byte 1 37 +byte 1 115 +byte 1 32 +byte 1 99 +byte 1 111 +byte 1 112 +byte 1 105 +byte 1 101 +byte 1 100 +byte 1 41 +byte 1 0 +align 1 +LABELV $4391 +byte 1 40 +byte 1 37 +byte 1 115 +byte 1 32 +byte 1 111 +byte 1 102 +byte 1 32 +byte 1 37 +byte 1 115 +byte 1 32 +byte 1 99 +byte 1 111 +byte 1 112 +byte 1 105 +byte 1 101 +byte 1 100 +byte 1 41 +byte 1 0 +align 1 +LABELV $4390 +byte 1 101 +byte 1 115 +byte 1 116 +byte 1 105 +byte 1 109 +byte 1 97 +byte 1 116 +byte 1 105 +byte 1 110 +byte 1 103 +byte 1 0 +align 1 +LABELV $4386 +byte 1 37 +byte 1 115 +byte 1 32 +byte 1 40 +byte 1 37 +byte 1 100 +byte 1 37 +byte 1 37 +byte 1 41 +byte 1 0 +align 1 +LABELV $4383 +byte 1 99 +byte 1 108 +byte 1 95 +byte 1 100 +byte 1 111 +byte 1 119 +byte 1 110 +byte 1 108 +byte 1 111 +byte 1 97 +byte 1 100 +byte 1 84 +byte 1 105 +byte 1 109 +byte 1 101 +byte 1 0 +align 1 +LABELV $4382 +byte 1 99 +byte 1 108 +byte 1 95 +byte 1 100 +byte 1 111 +byte 1 119 +byte 1 110 +byte 1 108 +byte 1 111 +byte 1 97 +byte 1 100 +byte 1 67 +byte 1 111 +byte 1 117 +byte 1 110 +byte 1 116 +byte 1 0 +align 1 +LABELV $4381 +byte 1 99 +byte 1 108 +byte 1 95 +byte 1 100 +byte 1 111 +byte 1 119 +byte 1 110 +byte 1 108 +byte 1 111 +byte 1 97 +byte 1 100 +byte 1 83 +byte 1 105 +byte 1 122 +byte 1 101 +byte 1 0 +align 1 +LABELV $4375 +byte 1 37 +byte 1 100 +byte 1 32 +byte 1 115 +byte 1 101 +byte 1 99 +byte 1 0 +align 1 +LABELV $4374 +byte 1 37 +byte 1 100 +byte 1 32 +byte 1 109 +byte 1 105 +byte 1 110 +byte 1 32 +byte 1 37 +byte 1 100 +byte 1 32 +byte 1 115 +byte 1 101 +byte 1 99 +byte 1 0 +align 1 +LABELV $4371 +byte 1 37 +byte 1 100 +byte 1 32 +byte 1 104 +byte 1 114 +byte 1 32 +byte 1 37 +byte 1 100 +byte 1 32 +byte 1 109 +byte 1 105 +byte 1 110 +byte 1 0 +align 1 +LABELV $4367 +byte 1 37 +byte 1 100 +byte 1 32 +byte 1 98 +byte 1 121 +byte 1 116 +byte 1 101 +byte 1 115 +byte 1 0 +align 1 +LABELV $4366 +byte 1 37 +byte 1 100 +byte 1 32 +byte 1 75 +byte 1 66 +byte 1 0 +align 1 +LABELV $4363 +byte 1 46 +byte 1 37 +byte 1 48 +byte 1 50 +byte 1 100 +byte 1 32 +byte 1 77 +byte 1 66 +byte 1 0 +align 1 +LABELV $4360 +byte 1 46 +byte 1 37 +byte 1 48 +byte 1 50 +byte 1 100 +byte 1 32 +byte 1 71 +byte 1 66 +byte 1 0 +align 1 +LABELV $4354 +byte 1 105 +byte 1 110 +byte 1 103 +byte 1 97 +byte 1 109 +byte 1 101 +byte 1 0 +align 1 +LABELV $4352 +byte 1 101 +byte 1 110 +byte 1 100 +byte 1 111 +byte 1 102 +byte 1 103 +byte 1 97 +byte 1 109 +byte 1 101 +byte 1 0 +align 1 +LABELV $4344 +byte 1 101 +byte 1 114 +byte 1 114 +byte 1 111 +byte 1 114 +byte 1 95 +byte 1 112 +byte 1 111 +byte 1 112 +byte 1 109 +byte 1 101 +byte 1 110 +byte 1 117 +byte 1 0 +align 1 +LABELV $4289 +byte 1 100 +byte 1 101 +byte 1 98 +byte 1 117 +byte 1 103 +byte 1 95 +byte 1 112 +byte 1 114 +byte 1 111 +byte 1 116 +byte 1 111 +byte 1 99 +byte 1 111 +byte 1 108 +byte 1 0 +align 1 +LABELV $4288 +byte 1 48 +byte 1 46 +byte 1 53 +byte 1 0 +align 1 +LABELV $4287 +byte 1 115 +byte 1 95 +byte 1 109 +byte 1 117 +byte 1 115 +byte 1 105 +byte 1 99 +byte 1 118 +byte 1 111 +byte 1 108 +byte 1 117 +byte 1 109 +byte 1 101 +byte 1 0 +align 1 +LABELV $4286 +byte 1 48 +byte 1 46 +byte 1 56 +byte 1 0 +align 1 +LABELV $4285 +byte 1 115 +byte 1 95 +byte 1 118 +byte 1 111 +byte 1 108 +byte 1 117 +byte 1 109 +byte 1 101 +byte 1 0 +align 1 +LABELV $4284 +byte 1 117 +byte 1 105 +byte 1 95 +byte 1 84 +byte 1 101 +byte 1 97 +byte 1 109 +byte 1 65 +byte 1 114 +byte 1 101 +byte 1 110 +byte 1 97 +byte 1 70 +byte 1 105 +byte 1 114 +byte 1 115 +byte 1 116 +byte 1 82 +byte 1 117 +byte 1 110 +byte 1 0 +align 1 +LABELV $4266 +byte 1 117 +byte 1 105 +byte 1 47 +byte 1 105 +byte 1 110 +byte 1 103 +byte 1 97 +byte 1 109 +byte 1 101 +byte 1 46 +byte 1 116 +byte 1 120 +byte 1 116 +byte 1 0 +align 1 +LABELV $4262 +byte 1 116 +byte 1 101 +byte 1 97 +byte 1 109 +byte 1 105 +byte 1 110 +byte 1 102 +byte 1 111 +byte 1 46 +byte 1 116 +byte 1 120 +byte 1 116 +byte 1 0 +align 1 +LABELV $4258 +byte 1 119 +byte 1 104 +byte 1 105 +byte 1 116 +byte 1 101 +byte 1 0 +align 1 +LABELV $4256 +byte 1 109 +byte 1 101 +byte 1 110 +byte 1 117 +byte 1 47 +byte 1 97 +byte 1 114 +byte 1 116 +byte 1 47 +byte 1 51 +byte 1 95 +byte 1 99 +byte 1 117 +byte 1 114 +byte 1 115 +byte 1 111 +byte 1 114 +byte 1 50 +byte 1 0 +align 1 +LABELV $4183 +byte 1 109 +byte 1 111 +byte 1 100 +byte 1 101 +byte 1 108 +byte 1 115 +byte 1 47 +byte 1 112 +byte 1 108 +byte 1 97 +byte 1 121 +byte 1 101 +byte 1 114 +byte 1 115 +byte 1 47 +byte 1 37 +byte 1 115 +byte 1 47 +byte 1 37 +byte 1 115 +byte 1 0 +align 1 +LABELV $4164 +byte 1 37 +byte 1 115 +byte 1 47 +byte 1 37 +byte 1 115 +byte 1 0 +align 1 +LABELV $4163 +byte 1 105 +byte 1 99 +byte 1 111 +byte 1 110 +byte 1 95 +byte 1 100 +byte 1 101 +byte 1 102 +byte 1 97 +byte 1 117 +byte 1 108 +byte 1 116 +byte 1 0 +align 1 +LABELV $4160 +byte 1 105 +byte 1 99 +byte 1 111 +byte 1 110 +byte 1 95 +byte 1 114 +byte 1 101 +byte 1 100 +byte 1 0 +align 1 +LABELV $4159 +byte 1 105 +byte 1 99 +byte 1 111 +byte 1 110 +byte 1 95 +byte 1 98 +byte 1 108 +byte 1 117 +byte 1 101 +byte 1 0 +align 1 +LABELV $4158 +byte 1 105 +byte 1 99 +byte 1 111 +byte 1 110 +byte 1 95 +byte 1 0 +align 1 +LABELV $4150 +byte 1 116 +byte 1 103 +byte 1 97 +byte 1 0 +align 1 +LABELV $4149 +byte 1 109 +byte 1 111 +byte 1 100 +byte 1 101 +byte 1 108 +byte 1 115 +byte 1 47 +byte 1 112 +byte 1 108 +byte 1 97 +byte 1 121 +byte 1 101 +byte 1 114 +byte 1 115 +byte 1 47 +byte 1 37 +byte 1 115 +byte 1 0 +align 1 +LABELV $4147 +byte 1 46 +byte 1 46 +byte 1 0 +align 1 +LABELV $4146 +byte 1 46 +byte 1 0 +align 1 +LABELV $4136 +byte 1 47 +byte 1 0 +align 1 +LABELV $4135 +byte 1 109 +byte 1 111 +byte 1 100 +byte 1 101 +byte 1 108 +byte 1 115 +byte 1 47 +byte 1 112 +byte 1 108 +byte 1 97 +byte 1 121 +byte 1 101 +byte 1 114 +byte 1 115 +byte 1 0 +align 1 +LABELV $4086 +byte 1 109 +byte 1 97 +byte 1 112 +byte 1 115 +byte 1 0 +align 1 +LABELV $4081 +byte 1 106 +byte 1 111 +byte 1 105 +byte 1 110 +byte 1 103 +byte 1 97 +byte 1 109 +byte 1 101 +byte 1 116 +byte 1 121 +byte 1 112 +byte 1 101 +byte 1 115 +byte 1 0 +align 1 +LABELV $4076 +byte 1 103 +byte 1 97 +byte 1 109 +byte 1 101 +byte 1 116 +byte 1 121 +byte 1 112 +byte 1 101 +byte 1 115 +byte 1 0 +align 1 +LABELV $4061 +byte 1 84 +byte 1 111 +byte 1 111 +byte 1 32 +byte 1 109 +byte 1 97 +byte 1 110 +byte 1 121 +byte 1 32 +byte 1 109 +byte 1 97 +byte 1 112 +byte 1 115 +byte 1 44 +byte 1 32 +byte 1 108 +byte 1 97 +byte 1 115 +byte 1 116 +byte 1 32 +byte 1 111 +byte 1 110 +byte 1 101 +byte 1 32 +byte 1 114 +byte 1 101 +byte 1 112 +byte 1 108 +byte 1 97 +byte 1 99 +byte 1 101 +byte 1 100 +byte 1 33 +byte 1 10 +byte 1 0 +align 1 +LABELV $4053 +byte 1 108 +byte 1 101 +byte 1 118 +byte 1 101 +byte 1 108 +byte 1 115 +byte 1 104 +byte 1 111 +byte 1 116 +byte 1 115 +byte 1 47 +byte 1 37 +byte 1 115 +byte 1 95 +byte 1 115 +byte 1 109 +byte 1 97 +byte 1 108 +byte 1 108 +byte 1 0 +align 1 +LABELV $3997 +byte 1 84 +byte 1 111 +byte 1 111 +byte 1 32 +byte 1 109 +byte 1 97 +byte 1 110 +byte 1 121 +byte 1 32 +byte 1 103 +byte 1 97 +byte 1 109 +byte 1 101 +byte 1 32 +byte 1 116 +byte 1 121 +byte 1 112 +byte 1 101 +byte 1 115 +byte 1 44 +byte 1 32 +byte 1 108 +byte 1 97 +byte 1 115 +byte 1 116 +byte 1 32 +byte 1 111 +byte 1 110 +byte 1 101 +byte 1 32 +byte 1 114 +byte 1 101 +byte 1 112 +byte 1 108 +byte 1 97 +byte 1 99 +byte 1 101 +byte 1 33 +byte 1 10 +byte 1 0 +align 1 +LABELV $3992 +byte 1 84 +byte 1 111 +byte 1 111 +byte 1 32 +byte 1 109 +byte 1 97 +byte 1 110 +byte 1 121 +byte 1 32 +byte 1 110 +byte 1 101 +byte 1 116 +byte 1 32 +byte 1 103 +byte 1 97 +byte 1 109 +byte 1 101 +byte 1 32 +byte 1 116 +byte 1 121 +byte 1 112 +byte 1 101 +byte 1 115 +byte 1 44 +byte 1 32 +byte 1 108 +byte 1 97 +byte 1 115 +byte 1 116 +byte 1 32 +byte 1 111 +byte 1 110 +byte 1 101 +byte 1 32 +byte 1 114 +byte 1 101 +byte 1 112 +byte 1 108 +byte 1 97 +byte 1 99 +byte 1 101 +byte 1 33 +byte 1 10 +byte 1 0 +align 1 +LABELV $3950 +byte 1 97 +byte 1 108 +byte 1 105 +byte 1 97 +byte 1 115 +byte 1 101 +byte 1 115 +byte 1 0 +align 1 +LABELV $3947 +byte 1 99 +byte 1 104 +byte 1 97 +byte 1 114 +byte 1 97 +byte 1 99 +byte 1 116 +byte 1 101 +byte 1 114 +byte 1 115 +byte 1 0 +align 1 +LABELV $3942 +byte 1 116 +byte 1 101 +byte 1 97 +byte 1 109 +byte 1 115 +byte 1 0 +align 1 +LABELV $3925 +byte 1 84 +byte 1 111 +byte 1 111 +byte 1 32 +byte 1 109 +byte 1 97 +byte 1 110 +byte 1 121 +byte 1 32 +byte 1 97 +byte 1 108 +byte 1 105 +byte 1 97 +byte 1 115 +byte 1 101 +byte 1 115 +byte 1 44 +byte 1 32 +byte 1 108 +byte 1 97 +byte 1 115 +byte 1 116 +byte 1 32 +byte 1 97 +byte 1 108 +byte 1 105 +byte 1 97 +byte 1 115 +byte 1 32 +byte 1 114 +byte 1 101 +byte 1 112 +byte 1 108 +byte 1 97 +byte 1 99 +byte 1 101 +byte 1 100 +byte 1 33 +byte 1 10 +byte 1 0 +align 1 +LABELV $3915 +byte 1 76 +byte 1 111 +byte 1 97 +byte 1 100 +byte 1 101 +byte 1 100 +byte 1 32 +byte 1 99 +byte 1 104 +byte 1 97 +byte 1 114 +byte 1 97 +byte 1 99 +byte 1 116 +byte 1 101 +byte 1 114 +byte 1 32 +byte 1 97 +byte 1 108 +byte 1 105 +byte 1 97 +byte 1 115 +byte 1 32 +byte 1 37 +byte 1 115 +byte 1 32 +byte 1 117 +byte 1 115 +byte 1 105 +byte 1 110 +byte 1 103 +byte 1 32 +byte 1 99 +byte 1 104 +byte 1 97 +byte 1 114 +byte 1 97 +byte 1 99 +byte 1 116 +byte 1 101 +byte 1 114 +byte 1 32 +byte 1 97 +byte 1 105 +byte 1 32 +byte 1 37 +byte 1 115 +byte 1 46 +byte 1 10 +byte 1 0 +align 1 +LABELV $3887 +byte 1 84 +byte 1 111 +byte 1 111 +byte 1 32 +byte 1 109 +byte 1 97 +byte 1 110 +byte 1 121 +byte 1 32 +byte 1 99 +byte 1 104 +byte 1 97 +byte 1 114 +byte 1 97 +byte 1 99 +byte 1 116 +byte 1 101 +byte 1 114 +byte 1 115 +byte 1 44 +byte 1 32 +byte 1 108 +byte 1 97 +byte 1 115 +byte 1 116 +byte 1 32 +byte 1 99 +byte 1 104 +byte 1 97 +byte 1 114 +byte 1 97 +byte 1 99 +byte 1 116 +byte 1 101 +byte 1 114 +byte 1 32 +byte 1 114 +byte 1 101 +byte 1 112 +byte 1 108 +byte 1 97 +byte 1 99 +byte 1 101 +byte 1 100 +byte 1 33 +byte 1 10 +byte 1 0 +align 1 +LABELV $3877 +byte 1 76 +byte 1 111 +byte 1 97 +byte 1 100 +byte 1 101 +byte 1 100 +byte 1 32 +byte 1 37 +byte 1 115 +byte 1 32 +byte 1 99 +byte 1 104 +byte 1 97 +byte 1 114 +byte 1 97 +byte 1 99 +byte 1 116 +byte 1 101 +byte 1 114 +byte 1 32 +byte 1 37 +byte 1 115 +byte 1 46 +byte 1 10 +byte 1 0 +align 1 +LABELV $3870 +byte 1 109 +byte 1 97 +byte 1 108 +byte 1 101 +byte 1 0 +align 1 +LABELV $3867 +byte 1 74 +byte 1 97 +byte 1 110 +byte 1 101 +byte 1 116 +byte 1 0 +align 1 +LABELV $3863 +byte 1 102 +byte 1 101 +byte 1 109 +byte 1 97 +byte 1 108 +byte 1 101 +byte 1 0 +align 1 +LABELV $3858 +byte 1 109 +byte 1 111 +byte 1 100 +byte 1 101 +byte 1 108 +byte 1 115 +byte 1 47 +byte 1 112 +byte 1 108 +byte 1 97 +byte 1 121 +byte 1 101 +byte 1 114 +byte 1 115 +byte 1 47 +byte 1 104 +byte 1 101 +byte 1 97 +byte 1 100 +byte 1 115 +byte 1 47 +byte 1 37 +byte 1 115 +byte 1 47 +byte 1 105 +byte 1 99 +byte 1 111 +byte 1 110 +byte 1 95 +byte 1 100 +byte 1 101 +byte 1 102 +byte 1 97 +byte 1 117 +byte 1 108 +byte 1 116 +byte 1 46 +byte 1 116 +byte 1 103 +byte 1 97 +byte 1 0 +align 1 +LABELV $3831 +byte 1 84 +byte 1 111 +byte 1 111 +byte 1 32 +byte 1 109 +byte 1 97 +byte 1 110 +byte 1 121 +byte 1 32 +byte 1 116 +byte 1 101 +byte 1 97 +byte 1 109 +byte 1 115 +byte 1 44 +byte 1 32 +byte 1 108 +byte 1 97 +byte 1 115 +byte 1 116 +byte 1 32 +byte 1 116 +byte 1 101 +byte 1 97 +byte 1 109 +byte 1 32 +byte 1 114 +byte 1 101 +byte 1 112 +byte 1 108 +byte 1 97 +byte 1 99 +byte 1 101 +byte 1 100 +byte 1 33 +byte 1 10 +byte 1 0 +align 1 +LABELV $3824 +byte 1 76 +byte 1 111 +byte 1 97 +byte 1 100 +byte 1 101 +byte 1 100 +byte 1 32 +byte 1 116 +byte 1 101 +byte 1 97 +byte 1 109 +byte 1 32 +byte 1 37 +byte 1 115 +byte 1 32 +byte 1 119 +byte 1 105 +byte 1 116 +byte 1 104 +byte 1 32 +byte 1 116 +byte 1 101 +byte 1 97 +byte 1 109 +byte 1 32 +byte 1 105 +byte 1 99 +byte 1 111 +byte 1 110 +byte 1 32 +byte 1 37 +byte 1 115 +byte 1 46 +byte 1 10 +byte 1 0 +align 1 +LABELV $3666 +byte 1 42 +byte 1 37 +byte 1 115 +byte 1 0 +align 1 +LABELV $3563 +byte 1 46 +byte 1 46 +byte 1 46 +byte 1 0 +align 1 +LABELV $3559 +byte 1 85 +byte 1 110 +byte 1 107 +byte 1 110 +byte 1 111 +byte 1 119 +byte 1 110 +byte 1 0 +align 1 +LABELV $3555 +byte 1 37 +byte 1 115 +byte 1 32 +byte 1 40 +byte 1 37 +byte 1 115 +byte 1 41 +byte 1 0 +align 1 +LABELV $3552 +byte 1 37 +byte 1 115 +byte 1 0 +align 1 +LABELV $3551 +byte 1 40 +byte 1 65 +byte 1 41 +byte 1 32 +byte 1 37 +byte 1 115 +byte 1 0 +align 1 +LABELV $3550 +byte 1 115 +byte 1 118 +byte 1 95 +byte 1 97 +byte 1 108 +byte 1 108 +byte 1 111 +byte 1 119 +byte 1 65 +byte 1 110 +byte 1 111 +byte 1 110 +byte 1 121 +byte 1 109 +byte 1 111 +byte 1 117 +byte 1 115 +byte 1 0 +align 1 +LABELV $3547 +byte 1 110 +byte 1 101 +byte 1 116 +byte 1 116 +byte 1 121 +byte 1 112 +byte 1 101 +byte 1 0 +align 1 +LABELV $3546 +byte 1 37 +byte 1 115 +byte 1 32 +byte 1 91 +byte 1 37 +byte 1 115 +byte 1 93 +byte 1 0 +align 1 +LABELV $3369 +byte 1 115 +byte 1 0 +align 1 +LABELV $3366 +byte 1 37 +byte 1 100 +byte 1 32 +byte 1 115 +byte 1 101 +byte 1 114 +byte 1 118 +byte 1 101 +byte 1 114 +byte 1 37 +byte 1 115 +byte 1 32 +byte 1 102 +byte 1 111 +byte 1 117 +byte 1 110 +byte 1 100 +byte 1 32 +byte 1 119 +byte 1 105 +byte 1 116 +byte 1 104 +byte 1 32 +byte 1 112 +byte 1 108 +byte 1 97 +byte 1 121 +byte 1 101 +byte 1 114 +byte 1 32 +byte 1 37 +byte 1 115 +byte 1 0 +align 1 +LABELV $3361 +byte 1 110 +byte 1 111 +byte 1 32 +byte 1 115 +byte 1 101 +byte 1 114 +byte 1 118 +byte 1 101 +byte 1 114 +byte 1 115 +byte 1 32 +byte 1 102 +byte 1 111 +byte 1 117 +byte 1 110 +byte 1 100 +byte 1 0 +align 1 +LABELV $3277 +byte 1 115 +byte 1 101 +byte 1 97 +byte 1 114 +byte 1 99 +byte 1 104 +byte 1 105 +byte 1 110 +byte 1 103 +byte 1 32 +byte 1 37 +byte 1 100 +byte 1 47 +byte 1 37 +byte 1 100 +byte 1 46 +byte 1 46 +byte 1 46 +byte 1 0 +align 1 +LABELV $3219 +byte 1 115 +byte 1 101 +byte 1 97 +byte 1 114 +byte 1 99 +byte 1 104 +byte 1 105 +byte 1 110 +byte 1 103 +byte 1 32 +byte 1 37 +byte 1 100 +byte 1 46 +byte 1 46 +byte 1 46 +byte 1 0 +align 1 +LABELV $3211 +byte 1 99 +byte 1 108 +byte 1 95 +byte 1 115 +byte 1 101 +byte 1 114 +byte 1 118 +byte 1 101 +byte 1 114 +byte 1 83 +byte 1 116 +byte 1 97 +byte 1 116 +byte 1 117 +byte 1 115 +byte 1 82 +byte 1 101 +byte 1 115 +byte 1 101 +byte 1 110 +byte 1 100 +byte 1 84 +byte 1 105 +byte 1 109 +byte 1 101 +byte 1 0 +align 1 +LABELV $3200 +byte 1 117 +byte 1 105 +byte 1 95 +byte 1 102 +byte 1 105 +byte 1 110 +byte 1 100 +byte 1 80 +byte 1 108 +byte 1 97 +byte 1 121 +byte 1 101 +byte 1 114 +byte 1 0 +align 1 +LABELV $3155 +byte 1 112 +byte 1 105 +byte 1 110 +byte 1 103 +byte 1 0 +align 1 +LABELV $3154 +byte 1 115 +byte 1 99 +byte 1 111 +byte 1 114 +byte 1 101 +byte 1 0 +align 1 +LABELV $3153 +byte 1 110 +byte 1 117 +byte 1 109 +byte 1 0 +align 1 +LABELV $3115 +byte 1 116 +byte 1 105 +byte 1 109 +byte 1 101 +byte 1 108 +byte 1 105 +byte 1 109 +byte 1 105 +byte 1 116 +byte 1 0 +align 1 +LABELV $3114 +byte 1 118 +byte 1 101 +byte 1 114 +byte 1 115 +byte 1 105 +byte 1 111 +byte 1 110 +byte 1 0 +align 1 +LABELV $3113 +byte 1 77 +byte 1 97 +byte 1 112 +byte 1 0 +align 1 +LABELV $3112 +byte 1 109 +byte 1 97 +byte 1 112 +byte 1 110 +byte 1 97 +byte 1 109 +byte 1 101 +byte 1 0 +align 1 +LABELV $3111 +byte 1 71 +byte 1 97 +byte 1 109 +byte 1 101 +byte 1 32 +byte 1 116 +byte 1 121 +byte 1 112 +byte 1 101 +byte 1 0 +align 1 +LABELV $3110 +byte 1 71 +byte 1 97 +byte 1 109 +byte 1 101 +byte 1 32 +byte 1 110 +byte 1 97 +byte 1 109 +byte 1 101 +byte 1 0 +align 1 +LABELV $3109 +byte 1 103 +byte 1 97 +byte 1 109 +byte 1 101 +byte 1 110 +byte 1 97 +byte 1 109 +byte 1 101 +byte 1 0 +align 1 +LABELV $3108 +byte 1 65 +byte 1 100 +byte 1 100 +byte 1 114 +byte 1 101 +byte 1 115 +byte 1 115 +byte 1 0 +align 1 +LABELV $3107 +byte 1 78 +byte 1 97 +byte 1 109 +byte 1 101 +byte 1 0 +align 1 +LABELV $3106 +byte 1 115 +byte 1 118 +byte 1 95 +byte 1 104 +byte 1 111 +byte 1 115 +byte 1 116 +byte 1 110 +byte 1 97 +byte 1 109 +byte 1 101 +byte 1 0 +align 1 +LABELV $3090 +byte 1 103 +byte 1 97 +byte 1 109 +byte 1 101 +byte 1 0 +align 1 +LABELV $3078 +byte 1 103 +byte 1 97 +byte 1 109 +byte 1 101 +byte 1 116 +byte 1 121 +byte 1 112 +byte 1 101 +byte 1 0 +align 1 +LABELV $3058 +byte 1 99 +byte 1 108 +byte 1 105 +byte 1 101 +byte 1 110 +byte 1 116 +byte 1 115 +byte 1 0 +align 1 +LABELV $3015 +byte 1 87 +byte 1 101 +byte 1 108 +byte 1 99 +byte 1 111 +byte 1 109 +byte 1 101 +byte 1 32 +byte 1 116 +byte 1 111 +byte 1 32 +byte 1 84 +byte 1 101 +byte 1 97 +byte 1 109 +byte 1 32 +byte 1 65 +byte 1 114 +byte 1 101 +byte 1 110 +byte 1 97 +byte 1 33 +byte 1 0 +align 1 +LABELV $3004 +byte 1 99 +byte 1 108 +byte 1 95 +byte 1 109 +byte 1 111 +byte 1 116 +byte 1 100 +byte 1 83 +byte 1 116 +byte 1 114 +byte 1 105 +byte 1 110 +byte 1 103 +byte 1 0 +align 1 +LABELV $2847 +byte 1 109 +byte 1 111 +byte 1 100 +byte 1 101 +byte 1 108 +byte 1 115 +byte 1 47 +byte 1 112 +byte 1 108 +byte 1 97 +byte 1 121 +byte 1 101 +byte 1 114 +byte 1 115 +byte 1 47 +byte 1 99 +byte 1 104 +byte 1 97 +byte 1 114 +byte 1 97 +byte 1 99 +byte 1 116 +byte 1 101 +byte 1 114 +byte 1 115 +byte 1 47 +byte 1 37 +byte 1 115 +byte 1 47 +byte 1 37 +byte 1 115 +byte 1 47 +byte 1 108 +byte 1 111 +byte 1 119 +byte 1 101 +byte 1 114 +byte 1 95 +byte 1 100 +byte 1 101 +byte 1 102 +byte 1 97 +byte 1 117 +byte 1 108 +byte 1 116 +byte 1 46 +byte 1 115 +byte 1 107 +byte 1 105 +byte 1 110 +byte 1 0 +align 1 +LABELV $2844 +byte 1 109 +byte 1 111 +byte 1 100 +byte 1 101 +byte 1 108 +byte 1 115 +byte 1 47 +byte 1 112 +byte 1 108 +byte 1 97 +byte 1 121 +byte 1 101 +byte 1 114 +byte 1 115 +byte 1 47 +byte 1 37 +byte 1 115 +byte 1 47 +byte 1 37 +byte 1 115 +byte 1 47 +byte 1 108 +byte 1 111 +byte 1 119 +byte 1 101 +byte 1 114 +byte 1 95 +byte 1 100 +byte 1 101 +byte 1 102 +byte 1 97 +byte 1 117 +byte 1 108 +byte 1 116 +byte 1 46 +byte 1 115 +byte 1 107 +byte 1 105 +byte 1 110 +byte 1 0 +align 1 +LABELV $2808 +byte 1 117 +byte 1 110 +byte 1 107 +byte 1 110 +byte 1 111 +byte 1 119 +byte 1 110 +byte 1 32 +byte 1 85 +byte 1 73 +byte 1 32 +byte 1 115 +byte 1 99 +byte 1 114 +byte 1 105 +byte 1 112 +byte 1 116 +byte 1 32 +byte 1 37 +byte 1 115 +byte 1 10 +byte 1 0 +align 1 +LABELV $2805 +byte 1 117 +byte 1 112 +byte 1 100 +byte 1 97 +byte 1 116 +byte 1 101 +byte 1 0 +align 1 +LABELV $2802 +byte 1 52 +byte 1 0 +align 1 +LABELV $2801 +byte 1 103 +byte 1 108 +byte 1 67 +byte 1 117 +byte 1 115 +byte 1 116 +byte 1 111 +byte 1 109 +byte 1 0 +align 1 +LABELV $2792 +byte 1 118 +byte 1 111 +byte 1 105 +byte 1 99 +byte 1 101 +byte 1 79 +byte 1 114 +byte 1 100 +byte 1 101 +byte 1 114 +byte 1 115 +byte 1 0 +align 1 +LABELV $2784 +byte 1 118 +byte 1 111 +byte 1 105 +byte 1 99 +byte 1 101 +byte 1 79 +byte 1 114 +byte 1 100 +byte 1 101 +byte 1 114 +byte 1 115 +byte 1 84 +byte 1 101 +byte 1 97 +byte 1 109 +byte 1 0 +align 1 +LABELV $2772 +byte 1 10 +byte 1 0 +align 1 +LABELV $2765 +byte 1 111 +byte 1 114 +byte 1 100 +byte 1 101 +byte 1 114 +byte 1 115 +byte 1 0 +align 1 +LABELV $2756 +byte 1 117 +byte 1 105 +byte 1 95 +byte 1 102 +byte 1 97 +byte 1 118 +byte 1 111 +byte 1 114 +byte 1 105 +byte 1 116 +byte 1 101 +byte 1 65 +byte 1 100 +byte 1 100 +byte 1 114 +byte 1 101 +byte 1 115 +byte 1 115 +byte 1 0 +align 1 +LABELV $2755 +byte 1 117 +byte 1 105 +byte 1 95 +byte 1 102 +byte 1 97 +byte 1 118 +byte 1 111 +byte 1 114 +byte 1 105 +byte 1 116 +byte 1 101 +byte 1 78 +byte 1 97 +byte 1 109 +byte 1 101 +byte 1 0 +align 1 +LABELV $2751 +byte 1 99 +byte 1 114 +byte 1 101 +byte 1 97 +byte 1 116 +byte 1 101 +byte 1 70 +byte 1 97 +byte 1 118 +byte 1 111 +byte 1 114 +byte 1 105 +byte 1 116 +byte 1 101 +byte 1 0 +align 1 +LABELV $2738 +byte 1 100 +byte 1 101 +byte 1 108 +byte 1 101 +byte 1 116 +byte 1 101 +byte 1 70 +byte 1 97 +byte 1 118 +byte 1 111 +byte 1 114 +byte 1 105 +byte 1 116 +byte 1 101 +byte 1 0 +align 1 +LABELV $2735 +byte 1 65 +byte 1 100 +byte 1 100 +byte 1 101 +byte 1 100 +byte 1 32 +byte 1 102 +byte 1 97 +byte 1 118 +byte 1 111 +byte 1 114 +byte 1 105 +byte 1 116 +byte 1 101 +byte 1 32 +byte 1 115 +byte 1 101 +byte 1 114 +byte 1 118 +byte 1 101 +byte 1 114 +byte 1 32 +byte 1 37 +byte 1 115 +byte 1 10 +byte 1 0 +align 1 +LABELV $2734 +byte 1 70 +byte 1 97 +byte 1 118 +byte 1 111 +byte 1 114 +byte 1 105 +byte 1 116 +byte 1 101 +byte 1 32 +byte 1 108 +byte 1 105 +byte 1 115 +byte 1 116 +byte 1 32 +byte 1 102 +byte 1 117 +byte 1 108 +byte 1 108 +byte 1 10 +byte 1 0 +align 1 +LABELV $2731 +byte 1 70 +byte 1 97 +byte 1 118 +byte 1 111 +byte 1 114 +byte 1 105 +byte 1 116 +byte 1 101 +byte 1 32 +byte 1 97 +byte 1 108 +byte 1 114 +byte 1 101 +byte 1 97 +byte 1 100 +byte 1 121 +byte 1 32 +byte 1 105 +byte 1 110 +byte 1 32 +byte 1 108 +byte 1 105 +byte 1 115 +byte 1 116 +byte 1 10 +byte 1 0 +align 1 +LABELV $2726 +byte 1 97 +byte 1 100 +byte 1 100 +byte 1 114 +byte 1 0 +align 1 +LABELV $2725 +byte 1 104 +byte 1 111 +byte 1 115 +byte 1 116 +byte 1 110 +byte 1 97 +byte 1 109 +byte 1 101 +byte 1 0 +align 1 +LABELV $2716 +byte 1 97 +byte 1 100 +byte 1 100 +byte 1 70 +byte 1 97 +byte 1 118 +byte 1 111 +byte 1 114 +byte 1 105 +byte 1 116 +byte 1 101 +byte 1 0 +align 1 +LABELV $2700 +byte 1 97 +byte 1 100 +byte 1 100 +byte 1 98 +byte 1 111 +byte 1 116 +byte 1 32 +byte 1 37 +byte 1 115 +byte 1 32 +byte 1 37 +byte 1 105 +byte 1 32 +byte 1 37 +byte 1 115 +byte 1 10 +byte 1 0 +align 1 +LABELV $2697 +byte 1 97 +byte 1 100 +byte 1 100 +byte 1 66 +byte 1 111 +byte 1 116 +byte 1 0 +align 1 +LABELV $2692 +byte 1 99 +byte 1 97 +byte 1 108 +byte 1 108 +byte 1 116 +byte 1 101 +byte 1 97 +byte 1 109 +byte 1 118 +byte 1 111 +byte 1 116 +byte 1 101 +byte 1 32 +byte 1 108 +byte 1 101 +byte 1 97 +byte 1 100 +byte 1 101 +byte 1 114 +byte 1 32 +byte 1 37 +byte 1 115 +byte 1 10 +byte 1 0 +align 1 +LABELV $2686 +byte 1 118 +byte 1 111 +byte 1 116 +byte 1 101 +byte 1 76 +byte 1 101 +byte 1 97 +byte 1 100 +byte 1 101 +byte 1 114 +byte 1 0 +align 1 +LABELV $2680 +byte 1 99 +byte 1 97 +byte 1 108 +byte 1 108 +byte 1 118 +byte 1 111 +byte 1 116 +byte 1 101 +byte 1 32 +byte 1 103 +byte 1 95 +byte 1 103 +byte 1 97 +byte 1 109 +byte 1 101 +byte 1 116 +byte 1 121 +byte 1 112 +byte 1 101 +byte 1 32 +byte 1 37 +byte 1 105 +byte 1 10 +byte 1 0 +align 1 +LABELV $2674 +byte 1 118 +byte 1 111 +byte 1 116 +byte 1 101 +byte 1 71 +byte 1 97 +byte 1 109 +byte 1 101 +byte 1 0 +align 1 +LABELV $2669 +byte 1 99 +byte 1 97 +byte 1 108 +byte 1 108 +byte 1 118 +byte 1 111 +byte 1 116 +byte 1 101 +byte 1 32 +byte 1 107 +byte 1 105 +byte 1 99 +byte 1 107 +byte 1 32 +byte 1 37 +byte 1 115 +byte 1 10 +byte 1 0 +align 1 +LABELV $2663 +byte 1 118 +byte 1 111 +byte 1 116 +byte 1 101 +byte 1 75 +byte 1 105 +byte 1 99 +byte 1 107 +byte 1 0 +align 1 +LABELV $2657 +byte 1 99 +byte 1 97 +byte 1 108 +byte 1 108 +byte 1 118 +byte 1 111 +byte 1 116 +byte 1 101 +byte 1 32 +byte 1 109 +byte 1 97 +byte 1 112 +byte 1 32 +byte 1 37 +byte 1 115 +byte 1 10 +byte 1 0 +align 1 +LABELV $2651 +byte 1 118 +byte 1 111 +byte 1 116 +byte 1 101 +byte 1 77 +byte 1 97 +byte 1 112 +byte 1 0 +align 1 +LABELV $2648 +byte 1 99 +byte 1 108 +byte 1 111 +byte 1 115 +byte 1 101 +byte 1 105 +byte 1 110 +byte 1 103 +byte 1 97 +byte 1 109 +byte 1 101 +byte 1 0 +align 1 +LABELV $2645 +byte 1 83 +byte 1 107 +byte 1 105 +byte 1 114 +byte 1 109 +byte 1 105 +byte 1 115 +byte 1 104 +byte 1 83 +byte 1 116 +byte 1 97 +byte 1 114 +byte 1 116 +byte 1 0 +align 1 +LABELV $2642 +byte 1 110 +byte 1 101 +byte 1 120 +byte 1 116 +byte 1 83 +byte 1 107 +byte 1 105 +byte 1 114 +byte 1 109 +byte 1 105 +byte 1 115 +byte 1 104 +byte 1 0 +align 1 +LABELV $2626 +byte 1 83 +byte 1 101 +byte 1 114 +byte 1 118 +byte 1 101 +byte 1 114 +byte 1 83 +byte 1 111 +byte 1 114 +byte 1 116 +byte 1 0 +align 1 +LABELV $2623 +byte 1 100 +byte 1 105 +byte 1 115 +byte 1 99 +byte 1 111 +byte 1 110 +byte 1 110 +byte 1 101 +byte 1 99 +byte 1 116 +byte 1 10 +byte 1 0 +align 1 +LABELV $2622 +byte 1 76 +byte 1 101 +byte 1 97 +byte 1 118 +byte 1 101 +byte 1 0 +align 1 +LABELV $2619 +byte 1 115 +byte 1 101 +byte 1 116 +byte 1 117 +byte 1 112 +byte 1 95 +byte 1 109 +byte 1 101 +byte 1 110 +byte 1 117 +byte 1 50 +byte 1 0 +align 1 +LABELV $2618 +byte 1 99 +byte 1 108 +byte 1 95 +byte 1 112 +byte 1 97 +byte 1 117 +byte 1 115 +byte 1 101 +byte 1 100 +byte 1 0 +align 1 +LABELV $2617 +byte 1 67 +byte 1 111 +byte 1 110 +byte 1 116 +byte 1 114 +byte 1 111 +byte 1 108 +byte 1 115 +byte 1 0 +align 1 +LABELV $2614 +byte 1 113 +byte 1 117 +byte 1 105 +byte 1 116 +byte 1 0 +align 1 +LABELV $2613 +byte 1 81 +byte 1 117 +byte 1 105 +byte 1 116 +byte 1 0 +align 1 +LABELV $2603 +byte 1 70 +byte 1 111 +byte 1 117 +byte 1 110 +byte 1 100 +byte 1 80 +byte 1 108 +byte 1 97 +byte 1 121 +byte 1 101 +byte 1 114 +byte 1 74 +byte 1 111 +byte 1 105 +byte 1 110 +byte 1 83 +byte 1 101 +byte 1 114 +byte 1 118 +byte 1 101 +byte 1 114 +byte 1 0 +align 1 +LABELV $2600 +byte 1 99 +byte 1 111 +byte 1 110 +byte 1 110 +byte 1 101 +byte 1 99 +byte 1 116 +byte 1 32 +byte 1 37 +byte 1 115 +byte 1 10 +byte 1 0 +align 1 +LABELV $2586 +byte 1 74 +byte 1 111 +byte 1 105 +byte 1 110 +byte 1 83 +byte 1 101 +byte 1 114 +byte 1 118 +byte 1 101 +byte 1 114 +byte 1 0 +align 1 +LABELV $2581 +byte 1 70 +byte 1 105 +byte 1 110 +byte 1 100 +byte 1 80 +byte 1 108 +byte 1 97 +byte 1 121 +byte 1 101 +byte 1 114 +byte 1 0 +align 1 +LABELV $2574 +byte 1 70 +byte 1 111 +byte 1 117 +byte 1 110 +byte 1 100 +byte 1 80 +byte 1 108 +byte 1 97 +byte 1 121 +byte 1 101 +byte 1 114 +byte 1 83 +byte 1 101 +byte 1 114 +byte 1 118 +byte 1 101 +byte 1 114 +byte 1 83 +byte 1 116 +byte 1 97 +byte 1 116 +byte 1 117 +byte 1 115 +byte 1 0 +align 1 +LABELV $2564 +byte 1 83 +byte 1 101 +byte 1 114 +byte 1 118 +byte 1 101 +byte 1 114 +byte 1 83 +byte 1 116 +byte 1 97 +byte 1 116 +byte 1 117 +byte 1 115 +byte 1 0 +align 1 +LABELV $2558 +byte 1 85 +byte 1 112 +byte 1 100 +byte 1 97 +byte 1 116 +byte 1 101 +byte 1 70 +byte 1 105 +byte 1 108 +byte 1 116 +byte 1 101 +byte 1 114 +byte 1 0 +align 1 +LABELV $2551 +byte 1 83 +byte 1 116 +byte 1 111 +byte 1 112 +byte 1 82 +byte 1 101 +byte 1 102 +byte 1 114 +byte 1 101 +byte 1 115 +byte 1 104 +byte 1 0 +align 1 +LABELV $2548 +byte 1 109 +byte 1 97 +byte 1 105 +byte 1 110 +byte 1 0 +align 1 +LABELV $2547 +byte 1 106 +byte 1 111 +byte 1 105 +byte 1 110 +byte 1 115 +byte 1 101 +byte 1 114 +byte 1 118 +byte 1 101 +byte 1 114 +byte 1 0 +align 1 +LABELV $2538 +byte 1 99 +byte 1 108 +byte 1 111 +byte 1 115 +byte 1 101 +byte 1 74 +byte 1 111 +byte 1 105 +byte 1 110 +byte 1 0 +align 1 +LABELV $2535 +byte 1 81 +byte 1 117 +byte 1 97 +byte 1 107 +byte 1 101 +byte 1 51 +byte 1 0 +align 1 +LABELV $2530 +byte 1 100 +byte 1 101 +byte 1 109 +byte 1 111 +byte 1 32 +byte 1 37 +byte 1 115 +byte 1 10 +byte 1 0 +align 1 +LABELV $2529 +byte 1 82 +byte 1 117 +byte 1 110 +byte 1 68 +byte 1 101 +byte 1 109 +byte 1 111 +byte 1 0 +align 1 +LABELV $2526 +byte 1 118 +byte 1 105 +byte 1 100 +byte 1 95 +byte 1 114 +byte 1 101 +byte 1 115 +byte 1 116 +byte 1 97 +byte 1 114 +byte 1 116 +byte 1 59 +byte 1 0 +align 1 +LABELV $2523 +byte 1 102 +byte 1 115 +byte 1 95 +byte 1 103 +byte 1 97 +byte 1 109 +byte 1 101 +byte 1 0 +align 1 +LABELV $2522 +byte 1 82 +byte 1 117 +byte 1 110 +byte 1 77 +byte 1 111 +byte 1 100 +byte 1 0 +align 1 +LABELV $2517 +byte 1 99 +byte 1 105 +byte 1 110 +byte 1 101 +byte 1 109 +byte 1 97 +byte 1 116 +byte 1 105 +byte 1 99 +byte 1 32 +byte 1 37 +byte 1 115 +byte 1 46 +byte 1 114 +byte 1 111 +byte 1 113 +byte 1 32 +byte 1 50 +byte 1 10 +byte 1 0 +align 1 +LABELV $2512 +byte 1 112 +byte 1 108 +byte 1 97 +byte 1 121 +byte 1 77 +byte 1 111 +byte 1 118 +byte 1 105 +byte 1 101 +byte 1 0 +align 1 +LABELV $2509 +byte 1 76 +byte 1 111 +byte 1 97 +byte 1 100 +byte 1 77 +byte 1 111 +byte 1 100 +byte 1 115 +byte 1 0 +align 1 +LABELV $2506 +byte 1 76 +byte 1 111 +byte 1 97 +byte 1 100 +byte 1 77 +byte 1 111 +byte 1 118 +byte 1 105 +byte 1 101 +byte 1 115 +byte 1 0 +align 1 +LABELV $2503 +byte 1 76 +byte 1 111 +byte 1 97 +byte 1 100 +byte 1 68 +byte 1 101 +byte 1 109 +byte 1 111 +byte 1 115 +byte 1 0 +align 1 +LABELV $2494 +byte 1 100 +byte 1 101 +byte 1 109 +byte 1 111 +byte 1 32 +byte 1 37 +byte 1 115 +byte 1 95 +byte 1 37 +byte 1 105 +byte 1 10 +byte 1 0 +align 1 +LABELV $2490 +byte 1 82 +byte 1 117 +byte 1 110 +byte 1 83 +byte 1 80 +byte 1 68 +byte 1 101 +byte 1 109 +byte 1 111 +byte 1 0 +align 1 +LABELV $2487 +byte 1 82 +byte 1 101 +byte 1 102 +byte 1 114 +byte 1 101 +byte 1 115 +byte 1 104 +byte 1 70 +byte 1 105 +byte 1 108 +byte 1 116 +byte 1 101 +byte 1 114 +byte 1 0 +align 1 +LABELV $2484 +byte 1 82 +byte 1 101 +byte 1 102 +byte 1 114 +byte 1 101 +byte 1 115 +byte 1 104 +byte 1 83 +byte 1 101 +byte 1 114 +byte 1 118 +byte 1 101 +byte 1 114 +byte 1 115 +byte 1 0 +align 1 +LABELV $2481 +byte 1 114 +byte 1 101 +byte 1 115 +byte 1 101 +byte 1 116 +byte 1 83 +byte 1 99 +byte 1 111 +byte 1 114 +byte 1 101 +byte 1 115 +byte 1 0 +align 1 +LABELV $2472 +byte 1 108 +byte 1 111 +byte 1 97 +byte 1 100 +byte 1 71 +byte 1 97 +byte 1 109 +byte 1 101 +byte 1 73 +byte 1 110 +byte 1 102 +byte 1 111 +byte 1 0 +align 1 +LABELV $2469 +byte 1 99 +byte 1 111 +byte 1 109 +byte 1 95 +byte 1 101 +byte 1 114 +byte 1 114 +byte 1 111 +byte 1 114 +byte 1 77 +byte 1 101 +byte 1 115 +byte 1 115 +byte 1 97 +byte 1 103 +byte 1 101 +byte 1 0 +align 1 +LABELV $2468 +byte 1 99 +byte 1 108 +byte 1 101 +byte 1 97 +byte 1 114 +byte 1 69 +byte 1 114 +byte 1 114 +byte 1 111 +byte 1 114 +byte 1 0 +align 1 +LABELV $2465 +byte 1 108 +byte 1 111 +byte 1 97 +byte 1 100 +byte 1 67 +byte 1 111 +byte 1 110 +byte 1 116 +byte 1 114 +byte 1 111 +byte 1 108 +byte 1 115 +byte 1 0 +align 1 +LABELV $2462 +byte 1 115 +byte 1 97 +byte 1 118 +byte 1 101 +byte 1 67 +byte 1 111 +byte 1 110 +byte 1 116 +byte 1 114 +byte 1 111 +byte 1 108 +byte 1 115 +byte 1 0 +align 1 +LABELV $2459 +byte 1 99 +byte 1 114 +byte 1 101 +byte 1 97 +byte 1 116 +byte 1 101 +byte 1 115 +byte 1 101 +byte 1 114 +byte 1 118 +byte 1 101 +byte 1 114 +byte 1 0 +align 1 +LABELV $2458 +byte 1 108 +byte 1 111 +byte 1 97 +byte 1 100 +byte 1 65 +byte 1 114 +byte 1 101 +byte 1 110 +byte 1 97 +byte 1 115 +byte 1 0 +align 1 +LABELV $2455 +byte 1 67 +byte 1 68 +byte 1 32 +byte 1 75 +byte 1 101 +byte 1 121 +byte 1 32 +byte 1 100 +byte 1 111 +byte 1 101 +byte 1 115 +byte 1 32 +byte 1 110 +byte 1 111 +byte 1 116 +byte 1 32 +byte 1 97 +byte 1 112 +byte 1 112 +byte 1 101 +byte 1 97 +byte 1 114 +byte 1 32 +byte 1 116 +byte 1 111 +byte 1 32 +byte 1 98 +byte 1 101 +byte 1 32 +byte 1 118 +byte 1 97 +byte 1 108 +byte 1 105 +byte 1 100 +byte 1 46 +byte 1 0 +align 1 +LABELV $2454 +byte 1 67 +byte 1 68 +byte 1 32 +byte 1 75 +byte 1 101 +byte 1 121 +byte 1 32 +byte 1 65 +byte 1 112 +byte 1 112 +byte 1 101 +byte 1 97 +byte 1 114 +byte 1 115 +byte 1 32 +byte 1 116 +byte 1 111 +byte 1 32 +byte 1 98 +byte 1 101 +byte 1 32 +byte 1 118 +byte 1 97 +byte 1 108 +byte 1 105 +byte 1 100 +byte 1 46 +byte 1 0 +align 1 +LABELV $2453 +byte 1 117 +byte 1 105 +byte 1 95 +byte 1 99 +byte 1 100 +byte 1 107 +byte 1 101 +byte 1 121 +byte 1 118 +byte 1 97 +byte 1 108 +byte 1 105 +byte 1 100 +byte 1 0 +align 1 +LABELV $2452 +byte 1 99 +byte 1 100 +byte 1 107 +byte 1 101 +byte 1 121 +byte 1 99 +byte 1 104 +byte 1 101 +byte 1 99 +byte 1 107 +byte 1 115 +byte 1 117 +byte 1 109 +byte 1 0 +align 1 +LABELV $2449 +byte 1 99 +byte 1 100 +byte 1 107 +byte 1 101 +byte 1 121 +byte 1 0 +align 1 +LABELV $2448 +byte 1 118 +byte 1 101 +byte 1 114 +byte 1 105 +byte 1 102 +byte 1 121 +byte 1 67 +byte 1 68 +byte 1 75 +byte 1 101 +byte 1 121 +byte 1 0 +align 1 +LABELV $2440 +byte 1 99 +byte 1 100 +byte 1 107 +byte 1 101 +byte 1 121 +byte 1 52 +byte 1 0 +align 1 +LABELV $2439 +byte 1 99 +byte 1 100 +byte 1 107 +byte 1 101 +byte 1 121 +byte 1 51 +byte 1 0 +align 1 +LABELV $2438 +byte 1 99 +byte 1 100 +byte 1 107 +byte 1 101 +byte 1 121 +byte 1 50 +byte 1 0 +align 1 +LABELV $2437 +byte 1 99 +byte 1 100 +byte 1 107 +byte 1 101 +byte 1 121 +byte 1 49 +byte 1 0 +align 1 +LABELV $2436 +byte 1 103 +byte 1 101 +byte 1 116 +byte 1 67 +byte 1 68 +byte 1 75 +byte 1 101 +byte 1 121 +byte 1 0 +align 1 +LABELV $2433 +byte 1 118 +byte 1 105 +byte 1 100 +byte 1 95 +byte 1 114 +byte 1 101 +byte 1 115 +byte 1 116 +byte 1 97 +byte 1 114 +byte 1 116 +byte 1 10 +byte 1 0 +align 1 +LABELV $2432 +byte 1 99 +byte 1 111 +byte 1 109 +byte 1 95 +byte 1 105 +byte 1 110 +byte 1 116 +byte 1 114 +byte 1 111 +byte 1 80 +byte 1 108 +byte 1 97 +byte 1 121 +byte 1 101 +byte 1 100 +byte 1 0 +align 1 +LABELV $2431 +byte 1 99 +byte 1 118 +byte 1 97 +byte 1 114 +byte 1 95 +byte 1 114 +byte 1 101 +byte 1 115 +byte 1 116 +byte 1 97 +byte 1 114 +byte 1 116 +byte 1 10 +byte 1 0 +align 1 +LABELV $2430 +byte 1 101 +byte 1 120 +byte 1 101 +byte 1 99 +byte 1 32 +byte 1 100 +byte 1 101 +byte 1 102 +byte 1 97 +byte 1 117 +byte 1 108 +byte 1 116 +byte 1 46 +byte 1 99 +byte 1 102 +byte 1 103 +byte 1 10 +byte 1 0 +align 1 +LABELV $2429 +byte 1 114 +byte 1 101 +byte 1 115 +byte 1 101 +byte 1 116 +byte 1 68 +byte 1 101 +byte 1 102 +byte 1 97 +byte 1 117 +byte 1 108 +byte 1 116 +byte 1 115 +byte 1 0 +align 1 +LABELV $2422 +byte 1 117 +byte 1 112 +byte 1 100 +byte 1 97 +byte 1 116 +byte 1 101 +byte 1 83 +byte 1 80 +byte 1 77 +byte 1 101 +byte 1 110 +byte 1 117 +byte 1 0 +align 1 +LABELV $2412 +byte 1 97 +byte 1 100 +byte 1 100 +byte 1 98 +byte 1 111 +byte 1 116 +byte 1 32 +byte 1 37 +byte 1 115 +byte 1 32 +byte 1 37 +byte 1 102 +byte 1 32 +byte 1 10 +byte 1 0 +align 1 +LABELV $2409 +byte 1 97 +byte 1 100 +byte 1 100 +byte 1 98 +byte 1 111 +byte 1 116 +byte 1 32 +byte 1 37 +byte 1 115 +byte 1 32 +byte 1 37 +byte 1 102 +byte 1 32 +byte 1 37 +byte 1 115 +byte 1 10 +byte 1 0 +align 1 +LABELV $2380 +byte 1 100 +byte 1 101 +byte 1 100 +byte 1 105 +byte 1 99 +byte 1 97 +byte 1 116 +byte 1 101 +byte 1 100 +byte 1 0 +align 1 +LABELV $2379 +byte 1 83 +byte 1 116 +byte 1 97 +byte 1 114 +byte 1 116 +byte 1 83 +byte 1 101 +byte 1 114 +byte 1 118 +byte 1 101 +byte 1 114 +byte 1 0 +align 1 +LABELV $2373 +byte 1 109 +byte 1 95 +byte 1 112 +byte 1 105 +byte 1 116 +byte 1 99 +byte 1 104 +byte 1 0 +align 1 +LABELV $2370 +byte 1 117 +byte 1 105 +byte 1 95 +byte 1 109 +byte 1 111 +byte 1 117 +byte 1 115 +byte 1 101 +byte 1 80 +byte 1 105 +byte 1 116 +byte 1 99 +byte 1 104 +byte 1 0 +align 1 +LABELV $2365 +byte 1 71 +byte 1 76 +byte 1 95 +byte 1 76 +byte 1 73 +byte 1 78 +byte 1 69 +byte 1 65 +byte 1 82 +byte 1 95 +byte 1 77 +byte 1 73 +byte 1 80 +byte 1 77 +byte 1 65 +byte 1 80 +byte 1 95 +byte 1 78 +byte 1 69 +byte 1 65 +byte 1 82 +byte 1 69 +byte 1 83 +byte 1 84 +byte 1 0 +align 1 +LABELV $2362 +byte 1 71 +byte 1 76 +byte 1 95 +byte 1 76 +byte 1 73 +byte 1 78 +byte 1 69 +byte 1 65 +byte 1 82 +byte 1 95 +byte 1 77 +byte 1 73 +byte 1 80 +byte 1 77 +byte 1 65 +byte 1 80 +byte 1 95 +byte 1 76 +byte 1 73 +byte 1 78 +byte 1 69 +byte 1 65 +byte 1 82 +byte 1 0 +align 1 +LABELV $2361 +byte 1 114 +byte 1 95 +byte 1 116 +byte 1 101 +byte 1 120 +byte 1 116 +byte 1 117 +byte 1 114 +byte 1 101 +byte 1 109 +byte 1 111 +byte 1 100 +byte 1 101 +byte 1 0 +align 1 +LABELV $2360 +byte 1 99 +byte 1 103 +byte 1 95 +byte 1 98 +byte 1 114 +byte 1 97 +byte 1 115 +byte 1 115 +byte 1 84 +byte 1 105 +byte 1 109 +byte 1 101 +byte 1 0 +align 1 +LABELV $2359 +byte 1 99 +byte 1 103 +byte 1 95 +byte 1 115 +byte 1 104 +byte 1 97 +byte 1 100 +byte 1 111 +byte 1 119 +byte 1 115 +byte 1 0 +align 1 +LABELV $2358 +byte 1 114 +byte 1 95 +byte 1 105 +byte 1 110 +byte 1 71 +byte 1 97 +byte 1 109 +byte 1 101 +byte 1 86 +byte 1 105 +byte 1 100 +byte 1 101 +byte 1 111 +byte 1 0 +align 1 +LABELV $2357 +byte 1 114 +byte 1 95 +byte 1 102 +byte 1 97 +byte 1 115 +byte 1 116 +byte 1 83 +byte 1 107 +byte 1 121 +byte 1 0 +align 1 +LABELV $2356 +byte 1 114 +byte 1 95 +byte 1 116 +byte 1 101 +byte 1 120 +byte 1 116 +byte 1 117 +byte 1 114 +byte 1 101 +byte 1 98 +byte 1 105 +byte 1 116 +byte 1 115 +byte 1 0 +align 1 +LABELV $2355 +byte 1 114 +byte 1 95 +byte 1 109 +byte 1 111 +byte 1 100 +byte 1 101 +byte 1 0 +align 1 +LABELV $2354 +byte 1 114 +byte 1 95 +byte 1 112 +byte 1 105 +byte 1 99 +byte 1 109 +byte 1 105 +byte 1 112 +byte 1 0 +align 1 +LABELV $2353 +byte 1 114 +byte 1 95 +byte 1 118 +byte 1 101 +byte 1 114 +byte 1 116 +byte 1 101 +byte 1 120 +byte 1 108 +byte 1 105 +byte 1 103 +byte 1 104 +byte 1 116 +byte 1 0 +align 1 +LABELV $2352 +byte 1 114 +byte 1 95 +byte 1 102 +byte 1 117 +byte 1 108 +byte 1 108 +byte 1 83 +byte 1 99 +byte 1 114 +byte 1 101 +byte 1 101 +byte 1 110 +byte 1 0 +align 1 +LABELV $2348 +byte 1 117 +byte 1 105 +byte 1 95 +byte 1 103 +byte 1 108 +byte 1 67 +byte 1 117 +byte 1 115 +byte 1 116 +byte 1 111 +byte 1 109 +byte 1 0 +align 1 +LABELV $2343 +byte 1 114 +byte 1 95 +byte 1 115 +byte 1 117 +byte 1 98 +byte 1 100 +byte 1 105 +byte 1 118 +byte 1 105 +byte 1 115 +byte 1 105 +byte 1 111 +byte 1 110 +byte 1 115 +byte 1 0 +align 1 +LABELV $2339 +byte 1 114 +byte 1 95 +byte 1 108 +byte 1 111 +byte 1 100 +byte 1 98 +byte 1 105 +byte 1 97 +byte 1 115 +byte 1 0 +align 1 +LABELV $2332 +byte 1 114 +byte 1 95 +byte 1 115 +byte 1 116 +byte 1 101 +byte 1 110 +byte 1 99 +byte 1 105 +byte 1 108 +byte 1 98 +byte 1 105 +byte 1 116 +byte 1 115 +byte 1 0 +align 1 +LABELV $2331 +byte 1 114 +byte 1 95 +byte 1 100 +byte 1 101 +byte 1 112 +byte 1 116 +byte 1 104 +byte 1 98 +byte 1 105 +byte 1 116 +byte 1 115 +byte 1 0 +align 1 +LABELV $2327 +byte 1 114 +byte 1 95 +byte 1 99 +byte 1 111 +byte 1 108 +byte 1 111 +byte 1 114 +byte 1 98 +byte 1 105 +byte 1 116 +byte 1 115 +byte 1 0 +align 1 +LABELV $2324 +byte 1 117 +byte 1 105 +byte 1 95 +byte 1 71 +byte 1 101 +byte 1 116 +byte 1 78 +byte 1 97 +byte 1 109 +byte 1 101 +byte 1 0 +align 1 +LABELV $2319 +byte 1 99 +byte 1 108 +byte 1 95 +byte 1 112 +byte 1 97 +byte 1 99 +byte 1 107 +byte 1 101 +byte 1 116 +byte 1 100 +byte 1 117 +byte 1 112 +byte 1 0 +align 1 +LABELV $2318 +byte 1 99 +byte 1 108 +byte 1 95 +byte 1 109 +byte 1 97 +byte 1 120 +byte 1 112 +byte 1 97 +byte 1 99 +byte 1 107 +byte 1 101 +byte 1 116 +byte 1 115 +byte 1 0 +align 1 +LABELV $2315 +byte 1 114 +byte 1 97 +byte 1 116 +byte 1 101 +byte 1 0 +align 1 +LABELV $2314 +byte 1 117 +byte 1 105 +byte 1 95 +byte 1 115 +byte 1 101 +byte 1 116 +byte 1 82 +byte 1 97 +byte 1 116 +byte 1 101 +byte 1 0 +align 1 +LABELV $2311 +byte 1 117 +byte 1 105 +byte 1 95 +byte 1 78 +byte 1 97 +byte 1 109 +byte 1 101 +byte 1 0 +align 1 +LABELV $2310 +byte 1 117 +byte 1 105 +byte 1 95 +byte 1 83 +byte 1 101 +byte 1 116 +byte 1 78 +byte 1 97 +byte 1 109 +byte 1 101 +byte 1 0 +align 1 +LABELV $2306 +byte 1 119 +byte 1 97 +byte 1 105 +byte 1 116 +byte 1 32 +byte 1 53 +byte 1 59 +byte 1 32 +byte 1 116 +byte 1 101 +byte 1 97 +byte 1 109 +byte 1 32 +byte 1 82 +byte 1 101 +byte 1 100 +byte 1 10 +byte 1 0 +align 1 +LABELV $2282 +byte 1 97 +byte 1 100 +byte 1 100 +byte 1 98 +byte 1 111 +byte 1 116 +byte 1 32 +byte 1 37 +byte 1 115 +byte 1 32 +byte 1 37 +byte 1 102 +byte 1 32 +byte 1 37 +byte 1 115 +byte 1 32 +byte 1 37 +byte 1 105 +byte 1 32 +byte 1 37 +byte 1 115 +byte 1 10 +byte 1 0 +align 1 +LABELV $2268 +byte 1 119 +byte 1 97 +byte 1 105 +byte 1 116 +byte 1 32 +byte 1 59 +byte 1 32 +byte 1 97 +byte 1 100 +byte 1 100 +byte 1 98 +byte 1 111 +byte 1 116 +byte 1 32 +byte 1 37 +byte 1 115 +byte 1 32 +byte 1 37 +byte 1 102 +byte 1 32 +byte 1 44 +byte 1 32 +byte 1 37 +byte 1 105 +byte 1 32 +byte 1 10 +byte 1 0 +align 1 +LABELV $2267 +byte 1 50 +byte 1 0 +align 1 +LABELV $2264 +byte 1 117 +byte 1 105 +byte 1 95 +byte 1 114 +byte 1 101 +byte 1 99 +byte 1 111 +byte 1 114 +byte 1 100 +byte 1 83 +byte 1 80 +byte 1 68 +byte 1 101 +byte 1 109 +byte 1 111 +byte 1 78 +byte 1 97 +byte 1 109 +byte 1 101 +byte 1 0 +align 1 +LABELV $2260 +byte 1 37 +byte 1 115 +byte 1 95 +byte 1 37 +byte 1 105 +byte 1 0 +align 1 +LABELV $2259 +byte 1 117 +byte 1 105 +byte 1 95 +byte 1 114 +byte 1 101 +byte 1 99 +byte 1 111 +byte 1 114 +byte 1 100 +byte 1 83 +byte 1 80 +byte 1 68 +byte 1 101 +byte 1 109 +byte 1 111 +byte 1 0 +align 1 +LABELV $2256 +byte 1 103 +byte 1 95 +byte 1 98 +byte 1 108 +byte 1 117 +byte 1 101 +byte 1 84 +byte 1 101 +byte 1 97 +byte 1 109 +byte 1 0 +align 1 +LABELV $2255 +byte 1 103 +byte 1 95 +byte 1 114 +byte 1 101 +byte 1 100 +byte 1 84 +byte 1 101 +byte 1 97 +byte 1 109 +byte 1 0 +align 1 +LABELV $2254 +byte 1 117 +byte 1 105 +byte 1 95 +byte 1 112 +byte 1 117 +byte 1 114 +byte 1 101 +byte 1 0 +align 1 +LABELV $2253 +byte 1 115 +byte 1 118 +byte 1 95 +byte 1 112 +byte 1 117 +byte 1 114 +byte 1 101 +byte 1 0 +align 1 +LABELV $2252 +byte 1 117 +byte 1 105 +byte 1 95 +byte 1 87 +byte 1 97 +byte 1 114 +byte 1 109 +byte 1 117 +byte 1 112 +byte 1 0 +align 1 +LABELV $2251 +byte 1 103 +byte 1 95 +byte 1 119 +byte 1 97 +byte 1 114 +byte 1 109 +byte 1 117 +byte 1 112 +byte 1 0 +align 1 +LABELV $2250 +byte 1 117 +byte 1 105 +byte 1 95 +byte 1 109 +byte 1 97 +byte 1 120 +byte 1 67 +byte 1 108 +byte 1 105 +byte 1 101 +byte 1 110 +byte 1 116 +byte 1 115 +byte 1 0 +align 1 +LABELV $2249 +byte 1 115 +byte 1 118 +byte 1 95 +byte 1 109 +byte 1 97 +byte 1 120 +byte 1 67 +byte 1 108 +byte 1 105 +byte 1 101 +byte 1 110 +byte 1 116 +byte 1 115 +byte 1 0 +align 1 +LABELV $2248 +byte 1 117 +byte 1 105 +byte 1 95 +byte 1 102 +byte 1 114 +byte 1 105 +byte 1 101 +byte 1 110 +byte 1 100 +byte 1 108 +byte 1 121 +byte 1 70 +byte 1 105 +byte 1 114 +byte 1 101 +byte 1 0 +align 1 +LABELV $2247 +byte 1 103 +byte 1 95 +byte 1 102 +byte 1 114 +byte 1 105 +byte 1 101 +byte 1 110 +byte 1 100 +byte 1 108 +byte 1 121 +byte 1 70 +byte 1 105 +byte 1 114 +byte 1 101 +byte 1 0 +align 1 +LABELV $2246 +byte 1 117 +byte 1 105 +byte 1 95 +byte 1 100 +byte 1 111 +byte 1 87 +byte 1 97 +byte 1 114 +byte 1 109 +byte 1 117 +byte 1 112 +byte 1 0 +align 1 +LABELV $2245 +byte 1 103 +byte 1 95 +byte 1 100 +byte 1 111 +byte 1 87 +byte 1 97 +byte 1 114 +byte 1 109 +byte 1 117 +byte 1 112 +byte 1 0 +align 1 +LABELV $2244 +byte 1 117 +byte 1 105 +byte 1 95 +byte 1 100 +byte 1 114 +byte 1 97 +byte 1 119 +byte 1 84 +byte 1 105 +byte 1 109 +byte 1 101 +byte 1 114 +byte 1 0 +align 1 +LABELV $2243 +byte 1 99 +byte 1 103 +byte 1 95 +byte 1 100 +byte 1 114 +byte 1 97 +byte 1 119 +byte 1 84 +byte 1 105 +byte 1 109 +byte 1 101 +byte 1 114 +byte 1 0 +align 1 +LABELV $2242 +byte 1 117 +byte 1 105 +byte 1 95 +byte 1 115 +byte 1 97 +byte 1 118 +byte 1 101 +byte 1 70 +byte 1 114 +byte 1 97 +byte 1 103 +byte 1 76 +byte 1 105 +byte 1 109 +byte 1 105 +byte 1 116 +byte 1 0 +align 1 +LABELV $2241 +byte 1 117 +byte 1 105 +byte 1 95 +byte 1 115 +byte 1 97 +byte 1 118 +byte 1 101 +byte 1 67 +byte 1 97 +byte 1 112 +byte 1 116 +byte 1 117 +byte 1 114 +byte 1 101 +byte 1 76 +byte 1 105 +byte 1 109 +byte 1 105 +byte 1 116 +byte 1 0 +align 1 +LABELV $2240 +byte 1 117 +byte 1 105 +byte 1 95 +byte 1 115 +byte 1 105 +byte 1 110 +byte 1 103 +byte 1 108 +byte 1 101 +byte 1 80 +byte 1 108 +byte 1 97 +byte 1 121 +byte 1 101 +byte 1 114 +byte 1 65 +byte 1 99 +byte 1 116 +byte 1 105 +byte 1 118 +byte 1 101 +byte 1 0 +align 1 +LABELV $2237 +byte 1 117 +byte 1 105 +byte 1 95 +byte 1 115 +byte 1 99 +byte 1 111 +byte 1 114 +byte 1 101 +byte 1 77 +byte 1 97 +byte 1 112 +byte 1 0 +align 1 +LABELV $2233 +byte 1 119 +byte 1 97 +byte 1 105 +byte 1 116 +byte 1 32 +byte 1 59 +byte 1 32 +byte 1 119 +byte 1 97 +byte 1 105 +byte 1 116 +byte 1 32 +byte 1 59 +byte 1 32 +byte 1 109 +byte 1 97 +byte 1 112 +byte 1 32 +byte 1 37 +byte 1 115 +byte 1 10 +byte 1 0 +align 1 +LABELV $2227 +byte 1 117 +byte 1 105 +byte 1 95 +byte 1 109 +byte 1 97 +byte 1 112 +byte 1 73 +byte 1 110 +byte 1 100 +byte 1 101 +byte 1 120 +byte 1 0 +align 1 +LABELV $2223 +byte 1 115 +byte 1 107 +byte 1 105 +byte 1 114 +byte 1 109 +byte 1 105 +byte 1 115 +byte 1 104 +byte 1 0 +align 1 +LABELV $2197 +byte 1 46 +byte 1 100 +byte 1 109 +byte 1 95 +byte 1 37 +byte 1 100 +byte 1 0 +align 1 +LABELV $2196 +byte 1 100 +byte 1 101 +byte 1 109 +byte 1 111 +byte 1 115 +byte 1 0 +align 1 +LABELV $2194 +byte 1 112 +byte 1 114 +byte 1 111 +byte 1 116 +byte 1 111 +byte 1 99 +byte 1 111 +byte 1 108 +byte 1 0 +align 1 +LABELV $2193 +byte 1 100 +byte 1 109 +byte 1 95 +byte 1 37 +byte 1 100 +byte 1 0 +align 1 +LABELV $2190 +byte 1 46 +byte 1 114 +byte 1 111 +byte 1 113 +byte 1 0 +align 1 +LABELV $2175 +byte 1 114 +byte 1 111 +byte 1 113 +byte 1 0 +align 1 +LABELV $2174 +byte 1 118 +byte 1 105 +byte 1 100 +byte 1 101 +byte 1 111 +byte 1 0 +align 1 +LABELV $2165 +byte 1 116 +byte 1 101 +byte 1 97 +byte 1 109 +byte 1 0 +align 1 +LABELV $2150 +byte 1 36 +byte 1 109 +byte 1 111 +byte 1 100 +byte 1 108 +byte 1 105 +byte 1 115 +byte 1 116 +byte 1 0 +align 1 +LABELV $2102 +byte 1 69 +byte 1 118 +byte 1 101 +byte 1 114 +byte 1 121 +byte 1 111 +byte 1 110 +byte 1 101 +byte 1 0 +align 1 +LABELV $2080 +byte 1 99 +byte 1 103 +byte 1 95 +byte 1 100 +byte 1 114 +byte 1 97 +byte 1 119 +byte 1 67 +byte 1 114 +byte 1 111 +byte 1 115 +byte 1 115 +byte 1 104 +byte 1 97 +byte 1 105 +byte 1 114 +byte 1 0 +align 1 +LABELV $1987 +byte 1 117 +byte 1 105 +byte 1 95 +byte 1 110 +byte 1 101 +byte 1 116 +byte 1 83 +byte 1 111 +byte 1 117 +byte 1 114 +byte 1 99 +byte 1 101 +byte 1 0 +align 1 +LABELV $1884 +byte 1 117 +byte 1 105 +byte 1 95 +byte 1 97 +byte 1 99 +byte 1 116 +byte 1 117 +byte 1 97 +byte 1 108 +byte 1 110 +byte 1 101 +byte 1 116 +byte 1 71 +byte 1 97 +byte 1 109 +byte 1 101 +byte 1 84 +byte 1 121 +byte 1 112 +byte 1 101 +byte 1 0 +align 1 +LABELV $1853 +byte 1 117 +byte 1 105 +byte 1 95 +byte 1 103 +byte 1 97 +byte 1 109 +byte 1 101 +byte 1 84 +byte 1 121 +byte 1 112 +byte 1 101 +byte 1 0 +align 1 +LABELV $1795 +byte 1 99 +byte 1 111 +byte 1 108 +byte 1 111 +byte 1 114 +byte 1 49 +byte 1 0 +align 1 +LABELV $1776 +byte 1 37 +byte 1 105 +byte 1 0 +align 1 +LABELV $1579 +byte 1 80 +byte 1 73 +byte 1 88 +byte 1 69 +byte 1 76 +byte 1 70 +byte 1 79 +byte 1 82 +byte 1 77 +byte 1 65 +byte 1 84 +byte 1 58 +byte 1 32 +byte 1 99 +byte 1 111 +byte 1 108 +byte 1 111 +byte 1 114 +byte 1 40 +byte 1 37 +byte 1 100 +byte 1 45 +byte 1 98 +byte 1 105 +byte 1 116 +byte 1 115 +byte 1 41 +byte 1 32 +byte 1 90 +byte 1 40 +byte 1 37 +byte 1 100 +byte 1 45 +byte 1 98 +byte 1 105 +byte 1 116 +byte 1 115 +byte 1 41 +byte 1 32 +byte 1 115 +byte 1 116 +byte 1 101 +byte 1 110 +byte 1 99 +byte 1 105 +byte 1 108 +byte 1 40 +byte 1 37 +byte 1 100 +byte 1 45 +byte 1 98 +byte 1 105 +byte 1 116 +byte 1 115 +byte 1 41 +byte 1 0 +align 1 +LABELV $1575 +byte 1 86 +byte 1 69 +byte 1 82 +byte 1 83 +byte 1 73 +byte 1 79 +byte 1 78 +byte 1 58 +byte 1 32 +byte 1 37 +byte 1 115 +byte 1 58 +byte 1 32 +byte 1 37 +byte 1 115 +byte 1 0 +align 1 +LABELV $1572 +byte 1 86 +byte 1 69 +byte 1 78 +byte 1 68 +byte 1 79 +byte 1 82 +byte 1 58 +byte 1 32 +byte 1 37 +byte 1 115 +byte 1 0 +align 1 +LABELV $1464 +byte 1 82 +byte 1 101 +byte 1 102 +byte 1 114 +byte 1 101 +byte 1 115 +byte 1 104 +byte 1 32 +byte 1 84 +byte 1 105 +byte 1 109 +byte 1 101 +byte 1 58 +byte 1 32 +byte 1 37 +byte 1 115 +byte 1 0 +align 1 +LABELV $1461 +byte 1 71 +byte 1 101 +byte 1 116 +byte 1 116 +byte 1 105 +byte 1 110 +byte 1 103 +byte 1 32 +byte 1 105 +byte 1 110 +byte 1 102 +byte 1 111 +byte 1 32 +byte 1 102 +byte 1 111 +byte 1 114 +byte 1 32 +byte 1 37 +byte 1 100 +byte 1 32 +byte 1 115 +byte 1 101 +byte 1 114 +byte 1 118 +byte 1 101 +byte 1 114 +byte 1 115 +byte 1 32 +byte 1 40 +byte 1 69 +byte 1 83 +byte 1 67 +byte 1 32 +byte 1 116 +byte 1 111 +byte 1 32 +byte 1 99 +byte 1 97 +byte 1 110 +byte 1 99 +byte 1 101 +byte 1 108 +byte 1 41 +byte 1 0 +align 1 +LABELV $1448 +byte 1 110 +byte 1 97 +byte 1 109 +byte 1 101 +byte 1 0 +align 1 +LABELV $1438 +byte 1 99 +byte 1 103 +byte 1 95 +byte 1 115 +byte 1 101 +byte 1 108 +byte 1 101 +byte 1 99 +byte 1 116 +byte 1 101 +byte 1 100 +byte 1 80 +byte 1 108 +byte 1 97 +byte 1 121 +byte 1 101 +byte 1 114 +byte 1 78 +byte 1 97 +byte 1 109 +byte 1 101 +byte 1 0 +align 1 +LABELV $1430 +byte 1 99 +byte 1 103 +byte 1 95 +byte 1 115 +byte 1 101 +byte 1 108 +byte 1 101 +byte 1 99 +byte 1 116 +byte 1 101 +byte 1 100 +byte 1 80 +byte 1 108 +byte 1 97 +byte 1 121 +byte 1 101 +byte 1 114 +byte 1 0 +align 1 +LABELV $1410 +byte 1 110 +byte 1 0 +align 1 +LABELV $1399 +byte 1 115 +byte 1 118 +byte 1 95 +byte 1 109 +byte 1 97 +byte 1 120 +byte 1 99 +byte 1 108 +byte 1 105 +byte 1 101 +byte 1 110 +byte 1 116 +byte 1 115 +byte 1 0 +align 1 +LABELV $1398 +byte 1 116 +byte 1 0 +align 1 +LABELV $1397 +byte 1 116 +byte 1 108 +byte 1 0 +align 1 +LABELV $1362 +byte 1 103 +byte 1 95 +byte 1 103 +byte 1 97 +byte 1 109 +byte 1 101 +byte 1 116 +byte 1 121 +byte 1 112 +byte 1 101 +byte 1 0 +align 1 +LABELV $1353 +byte 1 117 +byte 1 105 +byte 1 95 +byte 1 108 +byte 1 97 +byte 1 115 +byte 1 116 +byte 1 83 +byte 1 101 +byte 1 114 +byte 1 118 +byte 1 101 +byte 1 114 +byte 1 82 +byte 1 101 +byte 1 102 +byte 1 114 +byte 1 101 +byte 1 115 +byte 1 104 +byte 1 95 +byte 1 37 +byte 1 105 +byte 1 0 +align 1 +LABELV $1351 +byte 1 80 +byte 1 114 +byte 1 101 +byte 1 115 +byte 1 115 +byte 1 32 +byte 1 69 +byte 1 78 +byte 1 84 +byte 1 69 +byte 1 82 +byte 1 32 +byte 1 111 +byte 1 114 +byte 1 32 +byte 1 67 +byte 1 76 +byte 1 73 +byte 1 67 +byte 1 75 +byte 1 32 +byte 1 116 +byte 1 111 +byte 1 32 +byte 1 99 +byte 1 104 +byte 1 97 +byte 1 110 +byte 1 103 +byte 1 101 +byte 1 44 +byte 1 32 +byte 1 80 +byte 1 114 +byte 1 101 +byte 1 115 +byte 1 115 +byte 1 32 +byte 1 66 +byte 1 65 +byte 1 67 +byte 1 75 +byte 1 83 +byte 1 80 +byte 1 65 +byte 1 67 +byte 1 69 +byte 1 32 +byte 1 116 +byte 1 111 +byte 1 32 +byte 1 99 +byte 1 108 +byte 1 101 +byte 1 97 +byte 1 114 +byte 1 0 +align 1 +LABELV $1350 +byte 1 87 +byte 1 97 +byte 1 105 +byte 1 116 +byte 1 105 +byte 1 110 +byte 1 103 +byte 1 32 +byte 1 102 +byte 1 111 +byte 1 114 +byte 1 32 +byte 1 110 +byte 1 101 +byte 1 119 +byte 1 32 +byte 1 107 +byte 1 101 +byte 1 121 +byte 1 46 +byte 1 46 +byte 1 46 +byte 1 32 +byte 1 80 +byte 1 114 +byte 1 101 +byte 1 115 +byte 1 115 +byte 1 32 +byte 1 69 +byte 1 83 +byte 1 67 +byte 1 65 +byte 1 80 +byte 1 69 +byte 1 32 +byte 1 116 +byte 1 111 +byte 1 32 +byte 1 99 +byte 1 97 +byte 1 110 +byte 1 99 +byte 1 101 +byte 1 108 +byte 1 0 +align 1 +LABELV $1315 +byte 1 37 +byte 1 105 +byte 1 46 +byte 1 32 +byte 1 37 +byte 1 115 +byte 1 0 +align 1 +LABELV $1132 +byte 1 117 +byte 1 105 +byte 1 95 +byte 1 111 +byte 1 112 +byte 1 112 +byte 1 111 +byte 1 110 +byte 1 101 +byte 1 110 +byte 1 116 +byte 1 77 +byte 1 111 +byte 1 100 +byte 1 101 +byte 1 108 +byte 1 0 +align 1 +LABELV $1095 +byte 1 74 +byte 1 97 +byte 1 109 +byte 1 101 +byte 1 115 +byte 1 0 +align 1 +LABELV $1081 +byte 1 117 +byte 1 105 +byte 1 95 +byte 1 111 +byte 1 112 +byte 1 112 +byte 1 111 +byte 1 110 +byte 1 101 +byte 1 110 +byte 1 116 +byte 1 78 +byte 1 97 +byte 1 109 +byte 1 101 +byte 1 0 +align 1 +LABELV $1043 +byte 1 108 +byte 1 101 +byte 1 118 +byte 1 101 +byte 1 108 +byte 1 115 +byte 1 104 +byte 1 111 +byte 1 116 +byte 1 115 +byte 1 47 +byte 1 37 +byte 1 115 +byte 1 0 +align 1 +LABELV $1030 +byte 1 84 +byte 1 105 +byte 1 101 +byte 1 114 +byte 1 58 +byte 1 32 +byte 1 37 +byte 1 115 +byte 1 0 +align 1 +LABELV $1025 +byte 1 117 +byte 1 105 +byte 1 95 +byte 1 99 +byte 1 117 +byte 1 114 +byte 1 114 +byte 1 101 +byte 1 110 +byte 1 116 +byte 1 84 +byte 1 105 +byte 1 101 +byte 1 114 +byte 1 0 +align 1 +LABELV $1022 +byte 1 70 +byte 1 105 +byte 1 108 +byte 1 116 +byte 1 101 +byte 1 114 +byte 1 58 +byte 1 32 +byte 1 37 +byte 1 115 +byte 1 0 +align 1 +LABELV $988 +byte 1 83 +byte 1 111 +byte 1 117 +byte 1 114 +byte 1 99 +byte 1 101 +byte 1 58 +byte 1 32 +byte 1 37 +byte 1 115 +byte 1 0 +align 1 +LABELV $970 +byte 1 116 +byte 1 101 +byte 1 97 +byte 1 109 +byte 1 95 +byte 1 104 +byte 1 101 +byte 1 97 +byte 1 100 +byte 1 109 +byte 1 111 +byte 1 100 +byte 1 101 +byte 1 108 +byte 1 0 +align 1 +LABELV $969 +byte 1 116 +byte 1 101 +byte 1 97 +byte 1 109 +byte 1 95 +byte 1 109 +byte 1 111 +byte 1 100 +byte 1 101 +byte 1 108 +byte 1 0 +align 1 +LABELV $966 +byte 1 104 +byte 1 101 +byte 1 97 +byte 1 100 +byte 1 109 +byte 1 111 +byte 1 100 +byte 1 101 +byte 1 108 +byte 1 0 +align 1 +LABELV $965 +byte 1 109 +byte 1 111 +byte 1 100 +byte 1 101 +byte 1 108 +byte 1 0 +align 1 +LABELV $964 +byte 1 117 +byte 1 105 +byte 1 95 +byte 1 81 +byte 1 51 +byte 1 77 +byte 1 111 +byte 1 100 +byte 1 101 +byte 1 108 +byte 1 0 +align 1 +LABELV $921 +byte 1 37 +byte 1 48 +byte 1 50 +byte 1 105 +byte 1 58 +byte 1 37 +byte 1 48 +byte 1 50 +byte 1 105 +byte 1 0 +align 1 +LABELV $906 +byte 1 109 +byte 1 101 +byte 1 110 +byte 1 117 +byte 1 47 +byte 1 97 +byte 1 114 +byte 1 116 +byte 1 47 +byte 1 117 +byte 1 110 +byte 1 107 +byte 1 110 +byte 1 111 +byte 1 119 +byte 1 110 +byte 1 109 +byte 1 97 +byte 1 112 +byte 1 0 +align 1 +LABELV $891 +byte 1 117 +byte 1 105 +byte 1 95 +byte 1 99 +byte 1 117 +byte 1 114 +byte 1 114 +byte 1 101 +byte 1 110 +byte 1 116 +byte 1 77 +byte 1 97 +byte 1 112 +byte 1 0 +align 1 +LABELV $889 +byte 1 117 +byte 1 105 +byte 1 95 +byte 1 99 +byte 1 117 +byte 1 114 +byte 1 114 +byte 1 101 +byte 1 110 +byte 1 116 +byte 1 78 +byte 1 101 +byte 1 116 +byte 1 77 +byte 1 97 +byte 1 112 +byte 1 0 +align 1 +LABELV $859 +byte 1 72 +byte 1 117 +byte 1 109 +byte 1 97 +byte 1 110 +byte 1 0 +align 1 +LABELV $856 +byte 1 67 +byte 1 108 +byte 1 111 +byte 1 115 +byte 1 101 +byte 1 100 +byte 1 0 +align 1 +LABELV $850 +byte 1 117 +byte 1 105 +byte 1 95 +byte 1 114 +byte 1 101 +byte 1 100 +byte 1 116 +byte 1 101 +byte 1 97 +byte 1 109 +byte 1 37 +byte 1 105 +byte 1 0 +align 1 +LABELV $849 +byte 1 117 +byte 1 105 +byte 1 95 +byte 1 98 +byte 1 108 +byte 1 117 +byte 1 101 +byte 1 116 +byte 1 101 +byte 1 97 +byte 1 109 +byte 1 37 +byte 1 105 +byte 1 0 +align 1 +LABELV $843 +byte 1 82 +byte 1 101 +byte 1 100 +byte 1 0 +align 1 +LABELV $842 +byte 1 66 +byte 1 108 +byte 1 117 +byte 1 101 +byte 1 0 +align 1 +LABELV $841 +byte 1 37 +byte 1 115 +byte 1 58 +byte 1 32 +byte 1 37 +byte 1 115 +byte 1 0 +align 1 +LABELV $834 +byte 1 117 +byte 1 105 +byte 1 95 +byte 1 114 +byte 1 101 +byte 1 100 +byte 1 84 +byte 1 101 +byte 1 97 +byte 1 109 +byte 1 0 +align 1 +LABELV $833 +byte 1 117 +byte 1 105 +byte 1 95 +byte 1 98 +byte 1 108 +byte 1 117 +byte 1 101 +byte 1 84 +byte 1 101 +byte 1 97 +byte 1 109 +byte 1 0 +align 1 +LABELV $827 +byte 1 103 +byte 1 95 +byte 1 115 +byte 1 112 +byte 1 83 +byte 1 107 +byte 1 105 +byte 1 108 +byte 1 108 +byte 1 0 +align 1 +LABELV $793 +byte 1 37 +byte 1 115 +byte 1 46 +byte 1 114 +byte 1 111 +byte 1 113 +byte 1 0 +align 1 +LABELV $774 +byte 1 37 +byte 1 115 +byte 1 95 +byte 1 110 +byte 1 97 +byte 1 109 +byte 1 101 +byte 1 0 +align 1 +LABELV $769 +byte 1 37 +byte 1 115 +byte 1 95 +byte 1 109 +byte 1 101 +byte 1 116 +byte 1 97 +byte 1 108 +byte 1 0 +align 1 +LABELV $741 +byte 1 117 +byte 1 105 +byte 1 95 +byte 1 106 +byte 1 111 +byte 1 105 +byte 1 110 +byte 1 71 +byte 1 97 +byte 1 109 +byte 1 101 +byte 1 84 +byte 1 121 +byte 1 112 +byte 1 101 +byte 1 0 +align 1 +LABELV $731 +byte 1 117 +byte 1 105 +byte 1 95 +byte 1 97 +byte 1 99 +byte 1 116 +byte 1 117 +byte 1 97 +byte 1 108 +byte 1 78 +byte 1 101 +byte 1 116 +byte 1 71 +byte 1 97 +byte 1 109 +byte 1 101 +byte 1 84 +byte 1 121 +byte 1 112 +byte 1 101 +byte 1 0 +align 1 +LABELV $730 +byte 1 117 +byte 1 105 +byte 1 95 +byte 1 110 +byte 1 101 +byte 1 116 +byte 1 71 +byte 1 97 +byte 1 109 +byte 1 101 +byte 1 84 +byte 1 121 +byte 1 112 +byte 1 101 +byte 1 0 +align 1 +LABELV $719 +byte 1 102 +byte 1 114 +byte 1 97 +byte 1 103 +byte 1 108 +byte 1 105 +byte 1 109 +byte 1 105 +byte 1 116 +byte 1 0 +align 1 +LABELV $718 +byte 1 99 +byte 1 97 +byte 1 112 +byte 1 116 +byte 1 117 +byte 1 114 +byte 1 101 +byte 1 108 +byte 1 105 +byte 1 109 +byte 1 105 +byte 1 116 +byte 1 0 +align 1 +LABELV $717 +byte 1 117 +byte 1 105 +byte 1 95 +byte 1 102 +byte 1 114 +byte 1 97 +byte 1 103 +byte 1 76 +byte 1 105 +byte 1 109 +byte 1 105 +byte 1 116 +byte 1 0 +align 1 +LABELV $716 +byte 1 37 +byte 1 100 +byte 1 0 +align 1 +LABELV $715 +byte 1 117 +byte 1 105 +byte 1 95 +byte 1 99 +byte 1 97 +byte 1 112 +byte 1 116 +byte 1 117 +byte 1 114 +byte 1 101 +byte 1 76 +byte 1 105 +byte 1 109 +byte 1 105 +byte 1 116 +byte 1 0 +align 1 +LABELV $701 +byte 1 117 +byte 1 105 +byte 1 95 +byte 1 116 +byte 1 101 +byte 1 97 +byte 1 109 +byte 1 78 +byte 1 97 +byte 1 109 +byte 1 101 +byte 1 0 +align 1 +LABELV $699 +byte 1 104 +byte 1 97 +byte 1 110 +byte 1 100 +byte 1 105 +byte 1 99 +byte 1 97 +byte 1 112 +byte 1 0 +align 1 +LABELV $697 +byte 1 53 +byte 1 0 +align 1 +LABELV $696 +byte 1 49 +byte 1 48 +byte 1 0 +align 1 +LABELV $695 +byte 1 49 +byte 1 53 +byte 1 0 +align 1 +LABELV $694 +byte 1 50 +byte 1 48 +byte 1 0 +align 1 +LABELV $693 +byte 1 50 +byte 1 53 +byte 1 0 +align 1 +LABELV $692 +byte 1 51 +byte 1 48 +byte 1 0 +align 1 +LABELV $691 +byte 1 51 +byte 1 53 +byte 1 0 +align 1 +LABELV $690 +byte 1 52 +byte 1 48 +byte 1 0 +align 1 +LABELV $689 +byte 1 52 +byte 1 53 +byte 1 0 +align 1 +LABELV $688 +byte 1 53 +byte 1 48 +byte 1 0 +align 1 +LABELV $687 +byte 1 53 +byte 1 53 +byte 1 0 +align 1 +LABELV $686 +byte 1 54 +byte 1 48 +byte 1 0 +align 1 +LABELV $685 +byte 1 54 +byte 1 53 +byte 1 0 +align 1 +LABELV $684 +byte 1 55 +byte 1 48 +byte 1 0 +align 1 +LABELV $683 +byte 1 55 +byte 1 53 +byte 1 0 +align 1 +LABELV $682 +byte 1 56 +byte 1 48 +byte 1 0 +align 1 +LABELV $681 +byte 1 56 +byte 1 53 +byte 1 0 +align 1 +LABELV $680 +byte 1 57 +byte 1 48 +byte 1 0 +align 1 +LABELV $679 +byte 1 57 +byte 1 53 +byte 1 0 +align 1 +LABELV $678 +byte 1 78 +byte 1 111 +byte 1 110 +byte 1 101 +byte 1 0 +align 1 +LABELV $677 +byte 1 103 +byte 1 97 +byte 1 109 +byte 1 101 +byte 1 105 +byte 1 110 +byte 1 102 +byte 1 111 +byte 1 46 +byte 1 116 +byte 1 120 +byte 1 116 +byte 1 0 +align 1 +LABELV $671 +byte 1 117 +byte 1 105 +byte 1 95 +byte 1 109 +byte 1 101 +byte 1 110 +byte 1 117 +byte 1 70 +byte 1 105 +byte 1 108 +byte 1 101 +byte 1 115 +byte 1 0 +align 1 +LABELV $669 +byte 1 85 +byte 1 73 +byte 1 32 +byte 1 109 +byte 1 101 +byte 1 110 +byte 1 117 +byte 1 32 +byte 1 108 +byte 1 111 +byte 1 97 +byte 1 100 +byte 1 32 +byte 1 116 +byte 1 105 +byte 1 109 +byte 1 101 +byte 1 32 +byte 1 61 +byte 1 32 +byte 1 37 +byte 1 100 +byte 1 32 +byte 1 109 +byte 1 105 +byte 1 108 +byte 1 108 +byte 1 105 +byte 1 32 +byte 1 115 +byte 1 101 +byte 1 99 +byte 1 111 +byte 1 110 +byte 1 100 +byte 1 115 +byte 1 10 +byte 1 0 +align 1 +LABELV $666 +byte 1 108 +byte 1 111 +byte 1 97 +byte 1 100 +byte 1 109 +byte 1 101 +byte 1 110 +byte 1 117 +byte 1 0 +align 1 +LABELV $646 +byte 1 94 +byte 1 49 +byte 1 100 +byte 1 101 +byte 1 102 +byte 1 97 +byte 1 117 +byte 1 108 +byte 1 116 +byte 1 32 +byte 1 109 +byte 1 101 +byte 1 110 +byte 1 117 +byte 1 32 +byte 1 102 +byte 1 105 +byte 1 108 +byte 1 101 +byte 1 32 +byte 1 110 +byte 1 111 +byte 1 116 +byte 1 32 +byte 1 102 +byte 1 111 +byte 1 117 +byte 1 110 +byte 1 100 +byte 1 58 +byte 1 32 +byte 1 117 +byte 1 105 +byte 1 47 +byte 1 109 +byte 1 101 +byte 1 110 +byte 1 117 +byte 1 115 +byte 1 46 +byte 1 116 +byte 1 120 +byte 1 116 +byte 1 44 +byte 1 32 +byte 1 117 +byte 1 110 +byte 1 97 +byte 1 98 +byte 1 108 +byte 1 101 +byte 1 32 +byte 1 116 +byte 1 111 +byte 1 32 +byte 1 99 +byte 1 111 +byte 1 110 +byte 1 116 +byte 1 105 +byte 1 110 +byte 1 117 +byte 1 101 +byte 1 33 +byte 1 10 +byte 1 0 +align 1 +LABELV $643 +byte 1 117 +byte 1 105 +byte 1 47 +byte 1 109 +byte 1 101 +byte 1 110 +byte 1 117 +byte 1 115 +byte 1 46 +byte 1 116 +byte 1 120 +byte 1 116 +byte 1 0 +align 1 +LABELV $642 +byte 1 94 +byte 1 51 +byte 1 109 +byte 1 101 +byte 1 110 +byte 1 117 +byte 1 32 +byte 1 102 +byte 1 105 +byte 1 108 +byte 1 101 +byte 1 32 +byte 1 110 +byte 1 111 +byte 1 116 +byte 1 32 +byte 1 102 +byte 1 111 +byte 1 117 +byte 1 110 +byte 1 100 +byte 1 58 +byte 1 32 +byte 1 37 +byte 1 115 +byte 1 44 +byte 1 32 +byte 1 117 +byte 1 115 +byte 1 105 +byte 1 110 +byte 1 103 +byte 1 32 +byte 1 100 +byte 1 101 +byte 1 102 +byte 1 97 +byte 1 117 +byte 1 108 +byte 1 116 +byte 1 10 +byte 1 0 +align 1 +LABELV $620 +byte 1 109 +byte 1 101 +byte 1 110 +byte 1 117 +byte 1 100 +byte 1 101 +byte 1 102 +byte 1 0 +align 1 +LABELV $614 +byte 1 97 +byte 1 115 +byte 1 115 +byte 1 101 +byte 1 116 +byte 1 71 +byte 1 108 +byte 1 111 +byte 1 98 +byte 1 97 +byte 1 108 +byte 1 68 +byte 1 101 +byte 1 102 +byte 1 0 +align 1 +LABELV $600 +byte 1 80 +byte 1 97 +byte 1 114 +byte 1 115 +byte 1 105 +byte 1 110 +byte 1 103 +byte 1 32 +byte 1 109 +byte 1 101 +byte 1 110 +byte 1 117 +byte 1 32 +byte 1 102 +byte 1 105 +byte 1 108 +byte 1 101 +byte 1 58 +byte 1 37 +byte 1 115 +byte 1 10 +byte 1 0 +align 1 +LABELV $594 +byte 1 71 +byte 1 108 +byte 1 121 +byte 1 112 +byte 1 104 +byte 1 32 +byte 1 104 +byte 1 97 +byte 1 110 +byte 1 100 +byte 1 108 +byte 1 101 +byte 1 32 +byte 1 37 +byte 1 105 +byte 1 58 +byte 1 32 +byte 1 37 +byte 1 105 +byte 1 10 +byte 1 0 +align 1 +LABELV $589 +byte 1 61 +byte 1 61 +byte 1 61 +byte 1 61 +byte 1 61 +byte 1 61 +byte 1 61 +byte 1 61 +byte 1 61 +byte 1 10 +byte 1 0 +align 1 +LABELV $588 +byte 1 70 +byte 1 111 +byte 1 110 +byte 1 116 +byte 1 32 +byte 1 73 +byte 1 110 +byte 1 102 +byte 1 111 +byte 1 10 +byte 1 0 +align 1 +LABELV $577 +byte 1 115 +byte 1 104 +byte 1 97 +byte 1 100 +byte 1 111 +byte 1 119 +byte 1 67 +byte 1 111 +byte 1 108 +byte 1 111 +byte 1 114 +byte 1 0 +align 1 +LABELV $569 +byte 1 115 +byte 1 104 +byte 1 97 +byte 1 100 +byte 1 111 +byte 1 119 +byte 1 89 +byte 1 0 +align 1 +LABELV $561 +byte 1 115 +byte 1 104 +byte 1 97 +byte 1 100 +byte 1 111 +byte 1 119 +byte 1 88 +byte 1 0 +align 1 +LABELV $553 +byte 1 102 +byte 1 97 +byte 1 100 +byte 1 101 +byte 1 65 +byte 1 109 +byte 1 111 +byte 1 117 +byte 1 110 +byte 1 116 +byte 1 0 +align 1 +LABELV $545 +byte 1 102 +byte 1 97 +byte 1 100 +byte 1 101 +byte 1 67 +byte 1 121 +byte 1 99 +byte 1 108 +byte 1 101 +byte 1 0 +align 1 +LABELV $537 +byte 1 102 +byte 1 97 +byte 1 100 +byte 1 101 +byte 1 67 +byte 1 108 +byte 1 97 +byte 1 109 +byte 1 112 +byte 1 0 +align 1 +LABELV $525 +byte 1 99 +byte 1 117 +byte 1 114 +byte 1 115 +byte 1 111 +byte 1 114 +byte 1 0 +align 1 +LABELV $517 +byte 1 109 +byte 1 101 +byte 1 110 +byte 1 117 +byte 1 66 +byte 1 117 +byte 1 122 +byte 1 122 +byte 1 83 +byte 1 111 +byte 1 117 +byte 1 110 +byte 1 100 +byte 1 0 +align 1 +LABELV $509 +byte 1 105 +byte 1 116 +byte 1 101 +byte 1 109 +byte 1 70 +byte 1 111 +byte 1 99 +byte 1 117 +byte 1 115 +byte 1 83 +byte 1 111 +byte 1 117 +byte 1 110 +byte 1 100 +byte 1 0 +align 1 +LABELV $501 +byte 1 109 +byte 1 101 +byte 1 110 +byte 1 117 +byte 1 69 +byte 1 120 +byte 1 105 +byte 1 116 +byte 1 83 +byte 1 111 +byte 1 117 +byte 1 110 +byte 1 100 +byte 1 0 +align 1 +LABELV $493 +byte 1 109 +byte 1 101 +byte 1 110 +byte 1 117 +byte 1 69 +byte 1 110 +byte 1 116 +byte 1 101 +byte 1 114 +byte 1 83 +byte 1 111 +byte 1 117 +byte 1 110 +byte 1 100 +byte 1 0 +align 1 +LABELV $485 +byte 1 103 +byte 1 114 +byte 1 97 +byte 1 100 +byte 1 105 +byte 1 101 +byte 1 110 +byte 1 116 +byte 1 98 +byte 1 97 +byte 1 114 +byte 1 0 +align 1 +LABELV $476 +byte 1 98 +byte 1 105 +byte 1 103 +byte 1 70 +byte 1 111 +byte 1 110 +byte 1 116 +byte 1 0 +align 1 +LABELV $467 +byte 1 115 +byte 1 109 +byte 1 97 +byte 1 108 +byte 1 108 +byte 1 70 +byte 1 111 +byte 1 110 +byte 1 116 +byte 1 0 +align 1 +LABELV $456 +byte 1 102 +byte 1 111 +byte 1 110 +byte 1 116 +byte 1 0 +align 1 +LABELV $452 +byte 1 125 +byte 1 0 +align 1 +LABELV $443 +byte 1 123 +byte 1 0 +align 1 +LABELV $436 +byte 1 94 +byte 1 49 +byte 1 109 +byte 1 101 +byte 1 110 +byte 1 117 +byte 1 32 +byte 1 102 +byte 1 105 +byte 1 108 +byte 1 101 +byte 1 32 +byte 1 116 +byte 1 111 +byte 1 111 +byte 1 32 +byte 1 108 +byte 1 97 +byte 1 114 +byte 1 103 +byte 1 101 +byte 1 58 +byte 1 32 +byte 1 37 +byte 1 115 +byte 1 32 +byte 1 105 +byte 1 115 +byte 1 32 +byte 1 37 +byte 1 105 +byte 1 44 +byte 1 32 +byte 1 109 +byte 1 97 +byte 1 120 +byte 1 32 +byte 1 97 +byte 1 108 +byte 1 108 +byte 1 111 +byte 1 119 +byte 1 101 +byte 1 100 +byte 1 32 +byte 1 105 +byte 1 115 +byte 1 32 +byte 1 37 +byte 1 105 +byte 1 0 +align 1 +LABELV $433 +byte 1 94 +byte 1 49 +byte 1 109 +byte 1 101 +byte 1 110 +byte 1 117 +byte 1 32 +byte 1 102 +byte 1 105 +byte 1 108 +byte 1 101 +byte 1 32 +byte 1 110 +byte 1 111 +byte 1 116 +byte 1 32 +byte 1 102 +byte 1 111 +byte 1 117 +byte 1 110 +byte 1 100 +byte 1 58 +byte 1 32 +byte 1 37 +byte 1 115 +byte 1 44 +byte 1 32 +byte 1 117 +byte 1 115 +byte 1 105 +byte 1 110 +byte 1 103 +byte 1 32 +byte 1 100 +byte 1 101 +byte 1 102 +byte 1 97 +byte 1 117 +byte 1 108 +byte 1 116 +byte 1 10 +byte 1 0 +align 1 +LABELV $398 +byte 1 49 +byte 1 0 +align 1 +LABELV $397 +byte 1 115 +byte 1 118 +byte 1 95 +byte 1 107 +byte 1 105 +byte 1 108 +byte 1 108 +byte 1 115 +byte 1 101 +byte 1 114 +byte 1 118 +byte 1 101 +byte 1 114 +byte 1 0 +align 1 +LABELV $396 +byte 1 99 +byte 1 103 +byte 1 95 +byte 1 116 +byte 1 104 +byte 1 105 +byte 1 114 +byte 1 100 +byte 1 80 +byte 1 101 +byte 1 114 +byte 1 115 +byte 1 111 +byte 1 110 +byte 1 0 +align 1 +LABELV $395 +byte 1 48 +byte 1 0 +align 1 +LABELV $394 +byte 1 99 +byte 1 103 +byte 1 95 +byte 1 99 +byte 1 97 +byte 1 109 +byte 1 101 +byte 1 114 +byte 1 97 +byte 1 79 +byte 1 114 +byte 1 98 +byte 1 105 +byte 1 116 +byte 1 0 +align 1 +LABELV $231 +byte 1 115 +byte 1 111 +byte 1 117 +byte 1 110 +byte 1 100 +byte 1 47 +byte 1 102 +byte 1 101 +byte 1 101 +byte 1 100 +byte 1 98 +byte 1 97 +byte 1 99 +byte 1 107 +byte 1 47 +byte 1 118 +byte 1 111 +byte 1 99 +byte 1 95 +byte 1 110 +byte 1 101 +byte 1 119 +byte 1 104 +byte 1 105 +byte 1 103 +byte 1 104 +byte 1 115 +byte 1 99 +byte 1 111 +byte 1 114 +byte 1 101 +byte 1 46 +byte 1 119 +byte 1 97 +byte 1 118 +byte 1 0 +align 1 +LABELV $229 +byte 1 103 +byte 1 102 +byte 1 120 +byte 1 47 +byte 1 50 +byte 1 100 +byte 1 47 +byte 1 99 +byte 1 114 +byte 1 111 +byte 1 115 +byte 1 115 +byte 1 104 +byte 1 97 +byte 1 105 +byte 1 114 +byte 1 37 +byte 1 99 +byte 1 0 +align 1 +LABELV $222 +byte 1 117 +byte 1 105 +byte 1 47 +byte 1 97 +byte 1 115 +byte 1 115 +byte 1 101 +byte 1 116 +byte 1 115 +byte 1 47 +byte 1 115 +byte 1 108 +byte 1 105 +byte 1 100 +byte 1 101 +byte 1 114 +byte 1 98 +byte 1 117 +byte 1 116 +byte 1 116 +byte 1 95 +byte 1 49 +byte 1 46 +byte 1 116 +byte 1 103 +byte 1 97 +byte 1 0 +align 1 +LABELV $219 +byte 1 117 +byte 1 105 +byte 1 47 +byte 1 97 +byte 1 115 +byte 1 115 +byte 1 101 +byte 1 116 +byte 1 115 +byte 1 47 +byte 1 115 +byte 1 108 +byte 1 105 +byte 1 100 +byte 1 101 +byte 1 114 +byte 1 50 +byte 1 46 +byte 1 116 +byte 1 103 +byte 1 97 +byte 1 0 +align 1 +LABELV $216 +byte 1 117 +byte 1 105 +byte 1 47 +byte 1 97 +byte 1 115 +byte 1 115 +byte 1 101 +byte 1 116 +byte 1 115 +byte 1 47 +byte 1 115 +byte 1 99 +byte 1 114 +byte 1 111 +byte 1 108 +byte 1 108 +byte 1 98 +byte 1 97 +byte 1 114 +byte 1 95 +byte 1 116 +byte 1 104 +byte 1 117 +byte 1 109 +byte 1 98 +byte 1 46 +byte 1 116 +byte 1 103 +byte 1 97 +byte 1 0 +align 1 +LABELV $213 +byte 1 117 +byte 1 105 +byte 1 47 +byte 1 97 +byte 1 115 +byte 1 115 +byte 1 101 +byte 1 116 +byte 1 115 +byte 1 47 +byte 1 115 +byte 1 99 +byte 1 114 +byte 1 111 +byte 1 108 +byte 1 108 +byte 1 98 +byte 1 97 +byte 1 114 +byte 1 95 +byte 1 97 +byte 1 114 +byte 1 114 +byte 1 111 +byte 1 119 +byte 1 95 +byte 1 114 +byte 1 105 +byte 1 103 +byte 1 104 +byte 1 116 +byte 1 46 +byte 1 116 +byte 1 103 +byte 1 97 +byte 1 0 +align 1 +LABELV $210 +byte 1 117 +byte 1 105 +byte 1 47 +byte 1 97 +byte 1 115 +byte 1 115 +byte 1 101 +byte 1 116 +byte 1 115 +byte 1 47 +byte 1 115 +byte 1 99 +byte 1 114 +byte 1 111 +byte 1 108 +byte 1 108 +byte 1 98 +byte 1 97 +byte 1 114 +byte 1 95 +byte 1 97 +byte 1 114 +byte 1 114 +byte 1 111 +byte 1 119 +byte 1 95 +byte 1 108 +byte 1 101 +byte 1 102 +byte 1 116 +byte 1 46 +byte 1 116 +byte 1 103 +byte 1 97 +byte 1 0 +align 1 +LABELV $207 +byte 1 117 +byte 1 105 +byte 1 47 +byte 1 97 +byte 1 115 +byte 1 115 +byte 1 101 +byte 1 116 +byte 1 115 +byte 1 47 +byte 1 115 +byte 1 99 +byte 1 114 +byte 1 111 +byte 1 108 +byte 1 108 +byte 1 98 +byte 1 97 +byte 1 114 +byte 1 95 +byte 1 97 +byte 1 114 +byte 1 114 +byte 1 111 +byte 1 119 +byte 1 95 +byte 1 117 +byte 1 112 +byte 1 95 +byte 1 97 +byte 1 46 +byte 1 116 +byte 1 103 +byte 1 97 +byte 1 0 +align 1 +LABELV $204 +byte 1 117 +byte 1 105 +byte 1 47 +byte 1 97 +byte 1 115 +byte 1 115 +byte 1 101 +byte 1 116 +byte 1 115 +byte 1 47 +byte 1 115 +byte 1 99 +byte 1 114 +byte 1 111 +byte 1 108 +byte 1 108 +byte 1 98 +byte 1 97 +byte 1 114 +byte 1 95 +byte 1 97 +byte 1 114 +byte 1 114 +byte 1 111 +byte 1 119 +byte 1 95 +byte 1 100 +byte 1 119 +byte 1 110 +byte 1 95 +byte 1 97 +byte 1 46 +byte 1 116 +byte 1 103 +byte 1 97 +byte 1 0 +align 1 +LABELV $201 +byte 1 117 +byte 1 105 +byte 1 47 +byte 1 97 +byte 1 115 +byte 1 115 +byte 1 101 +byte 1 116 +byte 1 115 +byte 1 47 +byte 1 115 +byte 1 99 +byte 1 114 +byte 1 111 +byte 1 108 +byte 1 108 +byte 1 98 +byte 1 97 +byte 1 114 +byte 1 46 +byte 1 116 +byte 1 103 +byte 1 97 +byte 1 0 +align 1 +LABELV $198 +byte 1 109 +byte 1 101 +byte 1 110 +byte 1 117 +byte 1 47 +byte 1 97 +byte 1 114 +byte 1 116 +byte 1 47 +byte 1 102 +byte 1 120 +byte 1 95 +byte 1 119 +byte 1 104 +byte 1 105 +byte 1 116 +byte 1 101 +byte 1 0 +align 1 +LABELV $194 +byte 1 109 +byte 1 101 +byte 1 110 +byte 1 117 +byte 1 47 +byte 1 97 +byte 1 114 +byte 1 116 +byte 1 47 +byte 1 102 +byte 1 120 +byte 1 95 +byte 1 99 +byte 1 121 +byte 1 97 +byte 1 110 +byte 1 0 +align 1 +LABELV $190 +byte 1 109 +byte 1 101 +byte 1 110 +byte 1 117 +byte 1 47 +byte 1 97 +byte 1 114 +byte 1 116 +byte 1 47 +byte 1 102 +byte 1 120 +byte 1 95 +byte 1 98 +byte 1 108 +byte 1 117 +byte 1 101 +byte 1 0 +align 1 +LABELV $186 +byte 1 109 +byte 1 101 +byte 1 110 +byte 1 117 +byte 1 47 +byte 1 97 +byte 1 114 +byte 1 116 +byte 1 47 +byte 1 102 +byte 1 120 +byte 1 95 +byte 1 116 +byte 1 101 +byte 1 97 +byte 1 108 +byte 1 0 +align 1 +LABELV $182 +byte 1 109 +byte 1 101 +byte 1 110 +byte 1 117 +byte 1 47 +byte 1 97 +byte 1 114 +byte 1 116 +byte 1 47 +byte 1 102 +byte 1 120 +byte 1 95 +byte 1 103 +byte 1 114 +byte 1 110 +byte 1 0 +align 1 +LABELV $178 +byte 1 109 +byte 1 101 +byte 1 110 +byte 1 117 +byte 1 47 +byte 1 97 +byte 1 114 +byte 1 116 +byte 1 47 +byte 1 102 +byte 1 120 +byte 1 95 +byte 1 121 +byte 1 101 +byte 1 108 +byte 1 0 +align 1 +LABELV $174 +byte 1 109 +byte 1 101 +byte 1 110 +byte 1 117 +byte 1 47 +byte 1 97 +byte 1 114 +byte 1 116 +byte 1 47 +byte 1 102 +byte 1 120 +byte 1 95 +byte 1 114 +byte 1 101 +byte 1 100 +byte 1 0 +align 1 +LABELV $171 +byte 1 109 +byte 1 101 +byte 1 110 +byte 1 117 +byte 1 47 +byte 1 97 +byte 1 114 +byte 1 116 +byte 1 47 +byte 1 102 +byte 1 120 +byte 1 95 +byte 1 98 +byte 1 97 +byte 1 115 +byte 1 101 +byte 1 0 +align 1 +LABELV $168 +byte 1 117 +byte 1 105 +byte 1 47 +byte 1 97 +byte 1 115 +byte 1 115 +byte 1 101 +byte 1 116 +byte 1 115 +byte 1 47 +byte 1 103 +byte 1 114 +byte 1 97 +byte 1 100 +byte 1 105 +byte 1 101 +byte 1 110 +byte 1 116 +byte 1 98 +byte 1 97 +byte 1 114 +byte 1 50 +byte 1 46 +byte 1 116 +byte 1 103 +byte 1 97 +byte 1 0 +align 1 +LABELV $149 +byte 1 73 +byte 1 80 +byte 1 88 +byte 1 0 +align 1 +LABELV $148 +byte 1 85 +byte 1 68 +byte 1 80 +byte 1 0 +align 1 +LABELV $147 +byte 1 63 +byte 1 63 +byte 1 63 +byte 1 0 +align 1 +LABELV $146 +byte 1 80 +byte 1 105 +byte 1 110 +byte 1 103 +byte 1 32 +byte 1 84 +byte 1 105 +byte 1 109 +byte 1 101 +byte 1 0 +align 1 +LABELV $145 +byte 1 71 +byte 1 97 +byte 1 109 +byte 1 101 +byte 1 32 +byte 1 84 +byte 1 121 +byte 1 112 +byte 1 101 +byte 1 0 +align 1 +LABELV $144 +byte 1 79 +byte 1 112 +byte 1 101 +byte 1 110 +byte 1 32 +byte 1 80 +byte 1 108 +byte 1 97 +byte 1 121 +byte 1 101 +byte 1 114 +byte 1 32 +byte 1 83 +byte 1 112 +byte 1 111 +byte 1 116 +byte 1 115 +byte 1 0 +align 1 +LABELV $143 +byte 1 77 +byte 1 97 +byte 1 112 +byte 1 32 +byte 1 78 +byte 1 97 +byte 1 109 +byte 1 101 +byte 1 0 +align 1 +LABELV $142 +byte 1 83 +byte 1 101 +byte 1 114 +byte 1 118 +byte 1 101 +byte 1 114 +byte 1 32 +byte 1 78 +byte 1 97 +byte 1 109 +byte 1 101 +byte 1 0 +align 1 +LABELV $141 +byte 1 84 +byte 1 101 +byte 1 97 +byte 1 109 +byte 1 32 +byte 1 84 +byte 1 111 +byte 1 117 +byte 1 114 +byte 1 110 +byte 1 97 +byte 1 109 +byte 1 101 +byte 1 110 +byte 1 116 +byte 1 0 +align 1 +LABELV $140 +byte 1 72 +byte 1 97 +byte 1 114 +byte 1 118 +byte 1 101 +byte 1 115 +byte 1 116 +byte 1 101 +byte 1 114 +byte 1 0 +align 1 +LABELV $139 +byte 1 79 +byte 1 118 +byte 1 101 +byte 1 114 +byte 1 108 +byte 1 111 +byte 1 97 +byte 1 100 +byte 1 0 +align 1 +LABELV $138 +byte 1 79 +byte 1 110 +byte 1 101 +byte 1 32 +byte 1 70 +byte 1 108 +byte 1 97 +byte 1 103 +byte 1 32 +byte 1 67 +byte 1 84 +byte 1 70 +byte 1 0 +align 1 +LABELV $137 +byte 1 67 +byte 1 97 +byte 1 112 +byte 1 116 +byte 1 117 +byte 1 114 +byte 1 101 +byte 1 32 +byte 1 116 +byte 1 104 +byte 1 101 +byte 1 32 +byte 1 70 +byte 1 108 +byte 1 97 +byte 1 103 +byte 1 0 +align 1 +LABELV $136 +byte 1 84 +byte 1 101 +byte 1 97 +byte 1 109 +byte 1 32 +byte 1 68 +byte 1 101 +byte 1 97 +byte 1 116 +byte 1 104 +byte 1 109 +byte 1 97 +byte 1 116 +byte 1 99 +byte 1 104 +byte 1 0 +align 1 +LABELV $135 +byte 1 83 +byte 1 105 +byte 1 110 +byte 1 103 +byte 1 108 +byte 1 101 +byte 1 32 +byte 1 80 +byte 1 108 +byte 1 97 +byte 1 121 +byte 1 101 +byte 1 114 +byte 1 0 +align 1 +LABELV $134 +byte 1 84 +byte 1 111 +byte 1 117 +byte 1 114 +byte 1 110 +byte 1 97 +byte 1 109 +byte 1 101 +byte 1 110 +byte 1 116 +byte 1 0 +align 1 +LABELV $133 +byte 1 70 +byte 1 114 +byte 1 101 +byte 1 101 +byte 1 32 +byte 1 70 +byte 1 111 +byte 1 114 +byte 1 32 +byte 1 65 +byte 1 108 +byte 1 108 +byte 1 0 +align 1 +LABELV $132 +byte 1 84 +byte 1 69 +byte 1 65 +byte 1 77 +byte 1 84 +byte 1 79 +byte 1 85 +byte 1 82 +byte 1 78 +byte 1 65 +byte 1 77 +byte 1 69 +byte 1 78 +byte 1 84 +byte 1 0 +align 1 +LABELV $131 +byte 1 72 +byte 1 65 +byte 1 82 +byte 1 86 +byte 1 69 +byte 1 83 +byte 1 84 +byte 1 69 +byte 1 82 +byte 1 0 +align 1 +LABELV $130 +byte 1 79 +byte 1 86 +byte 1 69 +byte 1 82 +byte 1 76 +byte 1 79 +byte 1 65 +byte 1 68 +byte 1 0 +align 1 +LABELV $129 +byte 1 49 +byte 1 70 +byte 1 67 +byte 1 84 +byte 1 70 +byte 1 0 +align 1 +LABELV $128 +byte 1 67 +byte 1 84 +byte 1 70 +byte 1 0 +align 1 +LABELV $127 +byte 1 84 +byte 1 69 +byte 1 65 +byte 1 77 +byte 1 32 +byte 1 68 +byte 1 77 +byte 1 0 +align 1 +LABELV $126 +byte 1 83 +byte 1 80 +byte 1 0 +align 1 +LABELV $125 +byte 1 84 +byte 1 79 +byte 1 85 +byte 1 82 +byte 1 78 +byte 1 65 +byte 1 77 +byte 1 69 +byte 1 78 +byte 1 84 +byte 1 0 +align 1 +LABELV $124 +byte 1 70 +byte 1 70 +byte 1 65 +byte 1 0 +align 1 +LABELV $123 +byte 1 111 +byte 1 115 +byte 1 112 +byte 1 0 +align 1 +LABELV $122 +byte 1 79 +byte 1 83 +byte 1 80 +byte 1 0 +align 1 +LABELV $121 +byte 1 119 +byte 1 102 +byte 1 97 +byte 1 0 +align 1 +LABELV $120 +byte 1 87 +byte 1 101 +byte 1 97 +byte 1 112 +byte 1 111 +byte 1 110 +byte 1 115 +byte 1 32 +byte 1 70 +byte 1 97 +byte 1 99 +byte 1 116 +byte 1 111 +byte 1 114 +byte 1 121 +byte 1 32 +byte 1 65 +byte 1 114 +byte 1 101 +byte 1 110 +byte 1 97 +byte 1 0 +align 1 +LABELV $119 +byte 1 97 +byte 1 108 +byte 1 108 +byte 1 105 +byte 1 97 +byte 1 110 +byte 1 99 +byte 1 101 +byte 1 50 +byte 1 48 +byte 1 0 +align 1 +LABELV $118 +byte 1 65 +byte 1 108 +byte 1 108 +byte 1 105 +byte 1 97 +byte 1 110 +byte 1 99 +byte 1 101 +byte 1 0 +align 1 +LABELV $117 +byte 1 97 +byte 1 114 +byte 1 101 +byte 1 110 +byte 1 97 +byte 1 0 +align 1 +LABELV $116 +byte 1 82 +byte 1 111 +byte 1 99 +byte 1 107 +byte 1 101 +byte 1 116 +byte 1 32 +byte 1 65 +byte 1 114 +byte 1 101 +byte 1 110 +byte 1 97 +byte 1 0 +align 1 +LABELV $115 +byte 1 109 +byte 1 105 +byte 1 115 +byte 1 115 +byte 1 105 +byte 1 111 +byte 1 110 +byte 1 112 +byte 1 97 +byte 1 99 +byte 1 107 +byte 1 0 +align 1 +LABELV $114 +byte 1 84 +byte 1 101 +byte 1 97 +byte 1 109 +byte 1 32 +byte 1 65 +byte 1 114 +byte 1 101 +byte 1 110 +byte 1 97 +byte 1 0 +align 1 +LABELV $113 +byte 1 81 +byte 1 117 +byte 1 97 +byte 1 107 +byte 1 101 +byte 1 32 +byte 1 51 +byte 1 32 +byte 1 65 +byte 1 114 +byte 1 101 +byte 1 110 +byte 1 97 +byte 1 0 +align 1 +LABELV $112 +byte 1 0 +align 1 +LABELV $111 +byte 1 65 +byte 1 108 +byte 1 108 +byte 1 0 +align 1 +LABELV $110 +byte 1 70 +byte 1 97 +byte 1 118 +byte 1 111 +byte 1 114 +byte 1 105 +byte 1 116 +byte 1 101 +byte 1 115 +byte 1 0 +align 1 +LABELV $109 +byte 1 73 +byte 1 110 +byte 1 116 +byte 1 101 +byte 1 114 +byte 1 110 +byte 1 101 +byte 1 116 +byte 1 0 +align 1 +LABELV $108 +byte 1 77 +byte 1 112 +byte 1 108 +byte 1 97 +byte 1 121 +byte 1 101 +byte 1 114 +byte 1 0 +align 1 +LABELV $107 +byte 1 76 +byte 1 111 +byte 1 99 +byte 1 97 +byte 1 108 +byte 1 0 +align 1 +LABELV $106 +byte 1 78 +byte 1 105 +byte 1 103 +byte 1 104 +byte 1 116 +byte 1 109 +byte 1 97 +byte 1 114 +byte 1 101 +byte 1 0 +align 1 +LABELV $105 +byte 1 72 +byte 1 97 +byte 1 114 +byte 1 100 +byte 1 99 +byte 1 111 +byte 1 114 +byte 1 101 +byte 1 0 +align 1 +LABELV $104 +byte 1 72 +byte 1 117 +byte 1 114 +byte 1 116 +byte 1 32 +byte 1 77 +byte 1 101 +byte 1 32 +byte 1 80 +byte 1 108 +byte 1 101 +byte 1 110 +byte 1 116 +byte 1 121 +byte 1 0 +align 1 +LABELV $103 +byte 1 66 +byte 1 114 +byte 1 105 +byte 1 110 +byte 1 103 +byte 1 32 +byte 1 73 +byte 1 116 +byte 1 32 +byte 1 79 +byte 1 110 +byte 1 0 +align 1 +LABELV $102 +byte 1 73 +byte 1 32 +byte 1 67 +byte 1 97 +byte 1 110 +byte 1 32 +byte 1 87 +byte 1 105 +byte 1 110 +byte 1 0 +align 1 +LABELV $101 +byte 1 68 +byte 1 101 +byte 1 99 +byte 1 0 +align 1 +LABELV $100 +byte 1 78 +byte 1 111 +byte 1 118 +byte 1 0 +align 1 +LABELV $99 +byte 1 79 +byte 1 99 +byte 1 116 +byte 1 0 +align 1 +LABELV $98 +byte 1 83 +byte 1 101 +byte 1 112 +byte 1 0 +align 1 +LABELV $97 +byte 1 65 +byte 1 117 +byte 1 103 +byte 1 0 +align 1 +LABELV $96 +byte 1 74 +byte 1 117 +byte 1 108 +byte 1 0 +align 1 +LABELV $95 +byte 1 74 +byte 1 117 +byte 1 110 +byte 1 0 +align 1 +LABELV $94 +byte 1 77 +byte 1 97 +byte 1 121 +byte 1 0 +align 1 +LABELV $93 +byte 1 65 +byte 1 112 +byte 1 114 +byte 1 0 +align 1 +LABELV $92 +byte 1 77 +byte 1 97 +byte 1 114 +byte 1 0 +align 1 +LABELV $91 +byte 1 70 +byte 1 101 +byte 1 98 +byte 1 0 +align 1 +LABELV $90 +byte 1 74 +byte 1 97 +byte 1 110 +byte 1 0 diff --git a/ta_ui/vm/ui_players.asm b/ta_ui/vm/ui_players.asm new file mode 100644 index 00000000..c8f0d8b9 --- /dev/null +++ b/ta_ui/vm/ui_players.asm @@ -0,0 +1,9817 @@ +code +proc UI_PlayerInfo_SetWeapon 80 8 +file "../ui_players.c" +line 34 +;1:// Copyright (C) 1999-2000 Id Software, Inc. +;2:// +;3:// ui_players.c +;4: +;5:#include "ui_local.h" +;6: +;7: +;8:#define UI_TIMER_GESTURE 2300 +;9:#define UI_TIMER_JUMP 1000 +;10:#define UI_TIMER_LAND 130 +;11:#define UI_TIMER_WEAPON_SWITCH 300 +;12:#define UI_TIMER_ATTACK 500 +;13:#define UI_TIMER_MUZZLE_FLASH 20 +;14:#define UI_TIMER_WEAPON_DELAY 250 +;15: +;16:#define JUMP_HEIGHT 56 +;17: +;18:#define SWINGSPEED 0.3f +;19: +;20:#define SPIN_SPEED 0.9f +;21:#define COAST_TIME 1000 +;22: +;23: +;24:static int dp_realtime; +;25:static float jumpHeight; +;26:sfxHandle_t weaponChangeSound; +;27: +;28: +;29:/* +;30:=============== +;31:UI_PlayerInfo_SetWeapon +;32:=============== +;33:*/ +;34:static void UI_PlayerInfo_SetWeapon( playerInfo_t *pi, weapon_t weaponNum ) { +line 38 +;35: gitem_t * item; +;36: char path[MAX_QPATH]; +;37: +;38: pi->currentWeapon = weaponNum; +ADDRFP4 0 +INDIRP4 +CNSTI4 1208 +ADDP4 +ADDRFP4 4 +INDIRI4 +ASGNI4 +LABELV $91 +line 40 +;39:tryagain: +;40: pi->realWeapon = weaponNum; +ADDRFP4 0 +INDIRP4 +CNSTI4 1272 +ADDP4 +ADDRFP4 4 +INDIRI4 +ASGNI4 +line 41 +;41: pi->weaponModel = 0; +ADDRFP4 0 +INDIRP4 +CNSTI4 1156 +ADDP4 +CNSTI4 0 +ASGNI4 +line 42 +;42: pi->barrelModel = 0; +ADDRFP4 0 +INDIRP4 +CNSTI4 1160 +ADDP4 +CNSTI4 0 +ASGNI4 +line 43 +;43: pi->flashModel = 0; +ADDRFP4 0 +INDIRP4 +CNSTI4 1164 +ADDP4 +CNSTI4 0 +ASGNI4 +line 45 +;44: +;45: if ( weaponNum == WP_NONE ) { +ADDRFP4 4 +INDIRI4 +CNSTI4 0 +NEI4 $92 +line 46 +;46: return; +ADDRGP4 $90 +JUMPV +LABELV $92 +line 49 +;47: } +;48: +;49: for ( item = bg_itemlist + 1; item->classname ; item++ ) { +ADDRLP4 0 +ADDRGP4 bg_itemlist+52 +ASGNP4 +ADDRGP4 $97 +JUMPV +LABELV $94 +line 50 +;50: if ( item->giType != IT_WEAPON ) { +ADDRLP4 0 +INDIRP4 +CNSTI4 36 +ADDP4 +INDIRI4 +CNSTI4 1 +EQI4 $99 +line 51 +;51: continue; +ADDRGP4 $95 +JUMPV +LABELV $99 +line 53 +;52: } +;53: if ( item->giTag == weaponNum ) { +ADDRLP4 0 +INDIRP4 +CNSTI4 40 +ADDP4 +INDIRI4 +ADDRFP4 4 +INDIRI4 +NEI4 $101 +line 54 +;54: break; +ADDRGP4 $96 +JUMPV +LABELV $101 +line 56 +;55: } +;56: } +LABELV $95 +line 49 +ADDRLP4 0 +ADDRLP4 0 +INDIRP4 +CNSTI4 52 +ADDP4 +ASGNP4 +LABELV $97 +ADDRLP4 0 +INDIRP4 +INDIRP4 +CVPU4 4 +CNSTU4 0 +NEU4 $94 +LABELV $96 +line 58 +;57: +;58: if ( item->classname ) { +ADDRLP4 0 +INDIRP4 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $103 +line 59 +;59: pi->weaponModel = trap_R_RegisterModel( item->world_model[0] ); +ADDRLP4 0 +INDIRP4 +CNSTI4 8 +ADDP4 +INDIRP4 +ARGP4 +ADDRLP4 68 +ADDRGP4 trap_R_RegisterModel +CALLI4 +ASGNI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 1156 +ADDP4 +ADDRLP4 68 +INDIRI4 +ASGNI4 +line 60 +;60: } +LABELV $103 +line 62 +;61: +;62: if( pi->weaponModel == 0 ) { +ADDRFP4 0 +INDIRP4 +CNSTI4 1156 +ADDP4 +INDIRI4 +CNSTI4 0 +NEI4 $105 +line 64 +;63: //Blaze: Changed from WP_MACHINEGUN to WP_PISTOL +;64: if( weaponNum == WP_PISTOL ) { +ADDRFP4 4 +INDIRI4 +CNSTI4 1 +NEI4 $107 +line 65 +;65: weaponNum = WP_NONE; +ADDRFP4 4 +CNSTI4 0 +ASGNI4 +line 66 +;66: goto tryagain; +ADDRGP4 $91 +JUMPV +LABELV $107 +line 69 +;67: } +;68: //Blaze: Changed from WP_MACHINEGUN to WP_PISTOL +;69: weaponNum = WP_PISTOL; +ADDRFP4 4 +CNSTI4 1 +ASGNI4 +line 70 +;70: goto tryagain; +ADDRGP4 $91 +JUMPV +LABELV $105 +line 80 +;71: } +;72: //Blaze: none of our weapons have barrel models +;73: /*if ( weaponNum == WP_PISTOL || weaponNum == WP_GAUNTLET || weaponNum == WP_BFG ) { +;74: strcpy( path, item->world_model[0] ); +;75: COM_StripExtension( path, path ); +;76: strcat( path, "_barrel.md3" ); +;77: pi->barrelModel = trap_R_RegisterModel( path ); +;78: }*/ +;79: +;80: strcpy( path, item->world_model[0] ); +ADDRLP4 4 +ARGP4 +ADDRLP4 0 +INDIRP4 +CNSTI4 8 +ADDP4 +INDIRP4 +ARGP4 +ADDRGP4 strcpy +CALLP4 +pop +line 81 +;81: COM_StripExtension( path, path ); +ADDRLP4 4 +ARGP4 +ADDRLP4 4 +ARGP4 +ADDRGP4 COM_StripExtension +CALLV +pop +line 82 +;82: strcat( path, "_flash.md3" ); +ADDRLP4 4 +ARGP4 +ADDRGP4 $109 +ARGP4 +ADDRGP4 strcat +CALLP4 +pop +line 83 +;83: pi->flashModel = trap_R_RegisterModel( path ); +ADDRLP4 4 +ARGP4 +ADDRLP4 68 +ADDRGP4 trap_R_RegisterModel +CALLI4 +ASGNI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 1164 +ADDP4 +ADDRLP4 68 +INDIRI4 +ASGNI4 +line 88 +;84: +;85: +;86://Blaze: I think this makes some funky colors or something, I dont really know ;) +;87://Blaze: Reaction Weapons +;88: switch( weaponNum ) { +ADDRLP4 72 +ADDRFP4 4 +INDIRI4 +ASGNI4 +ADDRLP4 72 +INDIRI4 +CNSTI4 1 +LTI4 $110 +ADDRLP4 72 +INDIRI4 +CNSTI4 9 +GTI4 $110 +ADDRLP4 72 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 $122-4 +ADDP4 +INDIRP4 +JUMPV +lit +align 4 +LABELV $122 +address $114 +address $119 +address $117 +address $118 +address $116 +address $115 +address $120 +address $113 +address $121 +code +LABELV $113 +line 90 +;89: case WP_KNIFE: +;90: MAKERGB( pi->flashDlightColor, 0.6f, 0.6f, 1 ); +ADDRFP4 0 +INDIRP4 +CNSTI4 1168 +ADDP4 +CNSTF4 1058642330 +ASGNF4 +ADDRFP4 0 +INDIRP4 +CNSTI4 1172 +ADDP4 +CNSTF4 1058642330 +ASGNF4 +ADDRFP4 0 +INDIRP4 +CNSTI4 1176 +ADDP4 +CNSTF4 1065353216 +ASGNF4 +line 91 +;91: break; +ADDRGP4 $111 +JUMPV +LABELV $114 +line 94 +;92: +;93: case WP_PISTOL: +;94: MAKERGB( pi->flashDlightColor, 1, 1, 0 ); +ADDRFP4 0 +INDIRP4 +CNSTI4 1168 +ADDP4 +CNSTF4 1065353216 +ASGNF4 +ADDRFP4 0 +INDIRP4 +CNSTI4 1172 +ADDP4 +CNSTF4 1065353216 +ASGNF4 +ADDRFP4 0 +INDIRP4 +CNSTI4 1176 +ADDP4 +CNSTF4 0 +ASGNF4 +line 95 +;95: break; +ADDRGP4 $111 +JUMPV +LABELV $115 +line 98 +;96: +;97: case WP_M4: +;98: MAKERGB( pi->flashDlightColor, 1, 1, 0 ); +ADDRFP4 0 +INDIRP4 +CNSTI4 1168 +ADDP4 +CNSTF4 1065353216 +ASGNF4 +ADDRFP4 0 +INDIRP4 +CNSTI4 1172 +ADDP4 +CNSTF4 1065353216 +ASGNF4 +ADDRFP4 0 +INDIRP4 +CNSTI4 1176 +ADDP4 +CNSTF4 0 +ASGNF4 +line 99 +;99: break; +ADDRGP4 $111 +JUMPV +LABELV $116 +line 102 +;100: +;101: case WP_SSG3000: +;102: MAKERGB( pi->flashDlightColor, 1, 0.7f, 0.5f ); +ADDRFP4 0 +INDIRP4 +CNSTI4 1168 +ADDP4 +CNSTF4 1065353216 +ASGNF4 +ADDRFP4 0 +INDIRP4 +CNSTI4 1172 +ADDP4 +CNSTF4 1060320051 +ASGNF4 +ADDRFP4 0 +INDIRP4 +CNSTI4 1176 +ADDP4 +CNSTF4 1056964608 +ASGNF4 +line 103 +;103: break; +ADDRGP4 $111 +JUMPV +LABELV $117 +line 106 +;104: +;105: case WP_MP5: +;106: MAKERGB( pi->flashDlightColor, 1, 0.75f, 0 ); +ADDRFP4 0 +INDIRP4 +CNSTI4 1168 +ADDP4 +CNSTF4 1065353216 +ASGNF4 +ADDRFP4 0 +INDIRP4 +CNSTI4 1172 +ADDP4 +CNSTF4 1061158912 +ASGNF4 +ADDRFP4 0 +INDIRP4 +CNSTI4 1176 +ADDP4 +CNSTF4 0 +ASGNF4 +line 107 +;107: break; +ADDRGP4 $111 +JUMPV +LABELV $118 +line 110 +;108: +;109: case WP_HANDCANNON: +;110: MAKERGB( pi->flashDlightColor, 0.6f, 0.6f, 1 ); +ADDRFP4 0 +INDIRP4 +CNSTI4 1168 +ADDP4 +CNSTF4 1058642330 +ASGNF4 +ADDRFP4 0 +INDIRP4 +CNSTI4 1172 +ADDP4 +CNSTF4 1058642330 +ASGNF4 +ADDRFP4 0 +INDIRP4 +CNSTI4 1176 +ADDP4 +CNSTF4 1065353216 +ASGNF4 +line 111 +;111: break; +ADDRGP4 $111 +JUMPV +LABELV $119 +line 114 +;112: +;113: case WP_M3: +;114: MAKERGB( pi->flashDlightColor, 1, 0.5f, 0 ); +ADDRFP4 0 +INDIRP4 +CNSTI4 1168 +ADDP4 +CNSTF4 1065353216 +ASGNF4 +ADDRFP4 0 +INDIRP4 +CNSTI4 1172 +ADDP4 +CNSTF4 1056964608 +ASGNF4 +ADDRFP4 0 +INDIRP4 +CNSTI4 1176 +ADDP4 +CNSTF4 0 +ASGNF4 +line 115 +;115: break; +ADDRGP4 $111 +JUMPV +LABELV $120 +line 118 +;116: +;117: case WP_AKIMBO: +;118: MAKERGB( pi->flashDlightColor, 0.6f, 0.6f, 1 ); +ADDRFP4 0 +INDIRP4 +CNSTI4 1168 +ADDP4 +CNSTF4 1058642330 +ASGNF4 +ADDRFP4 0 +INDIRP4 +CNSTI4 1172 +ADDP4 +CNSTF4 1058642330 +ASGNF4 +ADDRFP4 0 +INDIRP4 +CNSTI4 1176 +ADDP4 +CNSTF4 1065353216 +ASGNF4 +line 119 +;119: break; +ADDRGP4 $111 +JUMPV +LABELV $121 +line 122 +;120: +;121: case WP_GRENADE: +;122: MAKERGB( pi->flashDlightColor, 1, 0.7f, 1 ); +ADDRFP4 0 +INDIRP4 +CNSTI4 1168 +ADDP4 +CNSTF4 1065353216 +ASGNF4 +ADDRFP4 0 +INDIRP4 +CNSTI4 1172 +ADDP4 +CNSTF4 1060320051 +ASGNF4 +ADDRFP4 0 +INDIRP4 +CNSTI4 1176 +ADDP4 +CNSTF4 1065353216 +ASGNF4 +line 123 +;123: break; +ADDRGP4 $111 +JUMPV +LABELV $110 +line 126 +;124: +;125: default: +;126: MAKERGB( pi->flashDlightColor, 1, 1, 1 ); +ADDRFP4 0 +INDIRP4 +CNSTI4 1168 +ADDP4 +CNSTF4 1065353216 +ASGNF4 +ADDRFP4 0 +INDIRP4 +CNSTI4 1172 +ADDP4 +CNSTF4 1065353216 +ASGNF4 +ADDRFP4 0 +INDIRP4 +CNSTI4 1176 +ADDP4 +CNSTF4 1065353216 +ASGNF4 +line 127 +;127: break; +LABELV $111 +line 129 +;128: } +;129:} +LABELV $90 +endproc UI_PlayerInfo_SetWeapon 80 8 +proc UI_ForceLegsAnim 8 0 +line 137 +;130: +;131: +;132:/* +;133:=============== +;134:UI_ForceLegsAnim +;135:=============== +;136:*/ +;137:static void UI_ForceLegsAnim( playerInfo_t *pi, int anim ) { +line 138 +;138: pi->legsAnim = ( ( pi->legsAnim & ANIM_TOGGLEBIT ) ^ ANIM_TOGGLEBIT ) | anim; +ADDRLP4 0 +ADDRFP4 0 +INDIRP4 +CNSTI4 1212 +ADDP4 +ASGNP4 +ADDRLP4 4 +CNSTI4 128 +ASGNI4 +ADDRLP4 0 +INDIRP4 +ADDRLP4 0 +INDIRP4 +INDIRI4 +ADDRLP4 4 +INDIRI4 +BANDI4 +ADDRLP4 4 +INDIRI4 +BXORI4 +ADDRFP4 4 +INDIRI4 +BORI4 +ASGNI4 +line 140 +;139: +;140: if ( anim == LEGS_JUMP ) { +ADDRFP4 4 +INDIRI4 +CNSTI4 18 +NEI4 $125 +line 141 +;141: pi->legsAnimationTimer = UI_TIMER_JUMP; +ADDRFP4 0 +INDIRP4 +CNSTI4 1248 +ADDP4 +CNSTI4 1000 +ASGNI4 +line 142 +;142: } +LABELV $125 +line 143 +;143:} +LABELV $124 +endproc UI_ForceLegsAnim 8 0 +proc UI_SetLegsAnim 0 8 +line 151 +;144: +;145: +;146:/* +;147:=============== +;148:UI_SetLegsAnim +;149:=============== +;150:*/ +;151:static void UI_SetLegsAnim( playerInfo_t *pi, int anim ) { +line 152 +;152: if ( pi->pendingLegsAnim ) { +ADDRFP4 0 +INDIRP4 +CNSTI4 1236 +ADDP4 +INDIRI4 +CNSTI4 0 +EQI4 $128 +line 153 +;153: anim = pi->pendingLegsAnim; +ADDRFP4 4 +ADDRFP4 0 +INDIRP4 +CNSTI4 1236 +ADDP4 +INDIRI4 +ASGNI4 +line 154 +;154: pi->pendingLegsAnim = 0; +ADDRFP4 0 +INDIRP4 +CNSTI4 1236 +ADDP4 +CNSTI4 0 +ASGNI4 +line 155 +;155: } +LABELV $128 +line 156 +;156: UI_ForceLegsAnim( pi, anim ); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRFP4 4 +INDIRI4 +ARGI4 +ADDRGP4 UI_ForceLegsAnim +CALLV +pop +line 157 +;157:} +LABELV $127 +endproc UI_SetLegsAnim 0 8 +proc UI_ForceTorsoAnim 12 0 +line 165 +;158: +;159: +;160:/* +;161:=============== +;162:UI_ForceTorsoAnim +;163:=============== +;164:*/ +;165:static void UI_ForceTorsoAnim( playerInfo_t *pi, int anim ) { +line 166 +;166: pi->torsoAnim = ( ( pi->torsoAnim & ANIM_TOGGLEBIT ) ^ ANIM_TOGGLEBIT ) | anim; +ADDRLP4 0 +ADDRFP4 0 +INDIRP4 +CNSTI4 1216 +ADDP4 +ASGNP4 +ADDRLP4 4 +CNSTI4 128 +ASGNI4 +ADDRLP4 0 +INDIRP4 +ADDRLP4 0 +INDIRP4 +INDIRI4 +ADDRLP4 4 +INDIRI4 +BANDI4 +ADDRLP4 4 +INDIRI4 +BXORI4 +ADDRFP4 4 +INDIRI4 +BORI4 +ASGNI4 +line 168 +;167: +;168: if ( anim == TORSO_GESTURE ) { +ADDRFP4 4 +INDIRI4 +CNSTI4 6 +NEI4 $131 +line 169 +;169: pi->torsoAnimationTimer = UI_TIMER_GESTURE; +ADDRFP4 0 +INDIRP4 +CNSTI4 1240 +ADDP4 +CNSTI4 2300 +ASGNI4 +line 170 +;170: } +LABELV $131 +line 172 +;171: +;172: if ( anim == TORSO_ATTACK || anim == TORSO_ATTACK2 ) { +ADDRLP4 8 +ADDRFP4 4 +INDIRI4 +ASGNI4 +ADDRLP4 8 +INDIRI4 +CNSTI4 7 +EQI4 $135 +ADDRLP4 8 +INDIRI4 +CNSTI4 8 +NEI4 $133 +LABELV $135 +line 173 +;173: pi->torsoAnimationTimer = UI_TIMER_ATTACK; +ADDRFP4 0 +INDIRP4 +CNSTI4 1240 +ADDP4 +CNSTI4 500 +ASGNI4 +line 174 +;174: } +LABELV $133 +line 175 +;175:} +LABELV $130 +endproc UI_ForceTorsoAnim 12 0 +proc UI_SetTorsoAnim 0 8 +line 183 +;176: +;177: +;178:/* +;179:=============== +;180:UI_SetTorsoAnim +;181:=============== +;182:*/ +;183:static void UI_SetTorsoAnim( playerInfo_t *pi, int anim ) { +line 184 +;184: if ( pi->pendingTorsoAnim ) { +ADDRFP4 0 +INDIRP4 +CNSTI4 1244 +ADDP4 +INDIRI4 +CNSTI4 0 +EQI4 $137 +line 185 +;185: anim = pi->pendingTorsoAnim; +ADDRFP4 4 +ADDRFP4 0 +INDIRP4 +CNSTI4 1244 +ADDP4 +INDIRI4 +ASGNI4 +line 186 +;186: pi->pendingTorsoAnim = 0; +ADDRFP4 0 +INDIRP4 +CNSTI4 1244 +ADDP4 +CNSTI4 0 +ASGNI4 +line 187 +;187: } +LABELV $137 +line 189 +;188: +;189: UI_ForceTorsoAnim( pi, anim ); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRFP4 4 +INDIRI4 +ARGI4 +ADDRGP4 UI_ForceTorsoAnim +CALLV +pop +line 190 +;190:} +LABELV $136 +endproc UI_SetTorsoAnim 0 8 +proc UI_TorsoSequencing 16 8 +line 198 +;191: +;192: +;193:/* +;194:=============== +;195:UI_TorsoSequencing +;196:=============== +;197:*/ +;198:static void UI_TorsoSequencing( playerInfo_t *pi ) { +line 201 +;199: int currentAnim; +;200: +;201: currentAnim = pi->torsoAnim & ~ANIM_TOGGLEBIT; +ADDRLP4 0 +ADDRFP4 0 +INDIRP4 +CNSTI4 1216 +ADDP4 +INDIRI4 +CNSTI4 -129 +BANDI4 +ASGNI4 +line 203 +;202: +;203: if ( pi->weapon != pi->currentWeapon ) { +ADDRLP4 4 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 4 +INDIRP4 +CNSTI4 1220 +ADDP4 +INDIRI4 +ADDRLP4 4 +INDIRP4 +CNSTI4 1208 +ADDP4 +INDIRI4 +EQI4 $140 +line 204 +;204: if ( currentAnim != TORSO_DROP ) { +ADDRLP4 0 +INDIRI4 +CNSTI4 9 +EQI4 $142 +line 205 +;205: pi->torsoAnimationTimer = UI_TIMER_WEAPON_SWITCH; +ADDRFP4 0 +INDIRP4 +CNSTI4 1240 +ADDP4 +CNSTI4 300 +ASGNI4 +line 206 +;206: UI_ForceTorsoAnim( pi, TORSO_DROP ); +ADDRFP4 0 +INDIRP4 +ARGP4 +CNSTI4 9 +ARGI4 +ADDRGP4 UI_ForceTorsoAnim +CALLV +pop +line 207 +;207: } +LABELV $142 +line 208 +;208: } +LABELV $140 +line 210 +;209: +;210: if ( pi->torsoAnimationTimer > 0 ) { +ADDRFP4 0 +INDIRP4 +CNSTI4 1240 +ADDP4 +INDIRI4 +CNSTI4 0 +LEI4 $144 +line 211 +;211: return; +ADDRGP4 $139 +JUMPV +LABELV $144 +line 214 +;212: } +;213: +;214: if( currentAnim == TORSO_GESTURE ) { +ADDRLP4 0 +INDIRI4 +CNSTI4 6 +NEI4 $146 +line 215 +;215: UI_SetTorsoAnim( pi, TORSO_STAND ); +ADDRFP4 0 +INDIRP4 +ARGP4 +CNSTI4 11 +ARGI4 +ADDRGP4 UI_SetTorsoAnim +CALLV +pop +line 216 +;216: return; +ADDRGP4 $139 +JUMPV +LABELV $146 +line 219 +;217: } +;218: +;219: if( currentAnim == TORSO_ATTACK || currentAnim == TORSO_ATTACK2 ) { +ADDRLP4 0 +INDIRI4 +CNSTI4 7 +EQI4 $150 +ADDRLP4 0 +INDIRI4 +CNSTI4 8 +NEI4 $148 +LABELV $150 +line 220 +;220: UI_SetTorsoAnim( pi, TORSO_STAND ); +ADDRFP4 0 +INDIRP4 +ARGP4 +CNSTI4 11 +ARGI4 +ADDRGP4 UI_SetTorsoAnim +CALLV +pop +line 221 +;221: return; +ADDRGP4 $139 +JUMPV +LABELV $148 +line 224 +;222: } +;223: +;224: if ( currentAnim == TORSO_DROP ) { +ADDRLP4 0 +INDIRI4 +CNSTI4 9 +NEI4 $151 +line 225 +;225: UI_PlayerInfo_SetWeapon( pi, pi->weapon ); +ADDRLP4 12 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 12 +INDIRP4 +ARGP4 +ADDRLP4 12 +INDIRP4 +CNSTI4 1220 +ADDP4 +INDIRI4 +ARGI4 +ADDRGP4 UI_PlayerInfo_SetWeapon +CALLV +pop +line 226 +;226: pi->torsoAnimationTimer = UI_TIMER_WEAPON_SWITCH; +ADDRFP4 0 +INDIRP4 +CNSTI4 1240 +ADDP4 +CNSTI4 300 +ASGNI4 +line 227 +;227: UI_ForceTorsoAnim( pi, TORSO_RAISE ); +ADDRFP4 0 +INDIRP4 +ARGP4 +CNSTI4 10 +ARGI4 +ADDRGP4 UI_ForceTorsoAnim +CALLV +pop +line 228 +;228: return; +ADDRGP4 $139 +JUMPV +LABELV $151 +line 231 +;229: } +;230: +;231: if ( currentAnim == TORSO_RAISE ) { +ADDRLP4 0 +INDIRI4 +CNSTI4 10 +NEI4 $153 +line 232 +;232: UI_SetTorsoAnim( pi, TORSO_STAND ); +ADDRFP4 0 +INDIRP4 +ARGP4 +CNSTI4 11 +ARGI4 +ADDRGP4 UI_SetTorsoAnim +CALLV +pop +line 233 +;233: return; +LABELV $153 +line 235 +;234: } +;235:} +LABELV $139 +endproc UI_TorsoSequencing 16 8 +proc UI_LegsSequencing 8 8 +line 243 +;236: +;237: +;238:/* +;239:=============== +;240:UI_LegsSequencing +;241:=============== +;242:*/ +;243:static void UI_LegsSequencing( playerInfo_t *pi ) { +line 246 +;244: int currentAnim; +;245: +;246: currentAnim = pi->legsAnim & ~ANIM_TOGGLEBIT; +ADDRLP4 0 +ADDRFP4 0 +INDIRP4 +CNSTI4 1212 +ADDP4 +INDIRI4 +CNSTI4 -129 +BANDI4 +ASGNI4 +line 248 +;247: +;248: if ( pi->legsAnimationTimer > 0 ) { +ADDRFP4 0 +INDIRP4 +CNSTI4 1248 +ADDP4 +INDIRI4 +CNSTI4 0 +LEI4 $156 +line 249 +;249: if ( currentAnim == LEGS_JUMP ) { +ADDRLP4 0 +INDIRI4 +CNSTI4 18 +NEI4 $155 +line 250 +;250: jumpHeight = JUMP_HEIGHT * sin( M_PI * ( UI_TIMER_JUMP - pi->legsAnimationTimer ) / UI_TIMER_JUMP ); +CNSTF4 1078530011 +CNSTI4 1000 +ADDRFP4 0 +INDIRP4 +CNSTI4 1248 +ADDP4 +INDIRI4 +SUBI4 +CVIF4 4 +MULF4 +CNSTF4 1148846080 +DIVF4 +ARGF4 +ADDRLP4 4 +ADDRGP4 sin +CALLF4 +ASGNF4 +ADDRGP4 jumpHeight +CNSTF4 1113587712 +ADDRLP4 4 +INDIRF4 +MULF4 +ASGNF4 +line 251 +;251: } +line 252 +;252: return; +ADDRGP4 $155 +JUMPV +LABELV $156 +line 255 +;253: } +;254: +;255: if ( currentAnim == LEGS_JUMP ) { +ADDRLP4 0 +INDIRI4 +CNSTI4 18 +NEI4 $160 +line 256 +;256: UI_ForceLegsAnim( pi, LEGS_LAND ); +ADDRFP4 0 +INDIRP4 +ARGP4 +CNSTI4 19 +ARGI4 +ADDRGP4 UI_ForceLegsAnim +CALLV +pop +line 257 +;257: pi->legsAnimationTimer = UI_TIMER_LAND; +ADDRFP4 0 +INDIRP4 +CNSTI4 1248 +ADDP4 +CNSTI4 130 +ASGNI4 +line 258 +;258: jumpHeight = 0; +ADDRGP4 jumpHeight +CNSTF4 0 +ASGNF4 +line 259 +;259: return; +ADDRGP4 $155 +JUMPV +LABELV $160 +line 262 +;260: } +;261: +;262: if ( currentAnim == LEGS_LAND ) { +ADDRLP4 0 +INDIRI4 +CNSTI4 19 +NEI4 $162 +line 263 +;263: UI_SetLegsAnim( pi, LEGS_IDLE ); +ADDRFP4 0 +INDIRP4 +ARGP4 +CNSTI4 22 +ARGI4 +ADDRGP4 UI_SetLegsAnim +CALLV +pop +line 264 +;264: return; +LABELV $162 +line 266 +;265: } +;266:} +LABELV $155 +endproc UI_LegsSequencing 8 8 +proc UI_PositionEntityOnTag 84 24 +line 275 +;267: +;268: +;269:/* +;270:====================== +;271:UI_PositionEntityOnTag +;272:====================== +;273:*/ +;274:static void UI_PositionEntityOnTag( refEntity_t *entity, const refEntity_t *parent, +;275: clipHandle_t parentModel, char *tagName ) { +line 280 +;276: int i; +;277: orientation_t lerped; +;278: +;279: // lerp the tag +;280: trap_CM_LerpTag( &lerped, parentModel, parent->oldframe, parent->frame, +ADDRLP4 4 +ARGP4 +ADDRFP4 8 +INDIRI4 +ARGI4 +ADDRLP4 52 +ADDRFP4 4 +INDIRP4 +ASGNP4 +ADDRLP4 52 +INDIRP4 +CNSTI4 96 +ADDP4 +INDIRI4 +ARGI4 +ADDRLP4 52 +INDIRP4 +CNSTI4 80 +ADDP4 +INDIRI4 +ARGI4 +CNSTF4 1065353216 +ADDRLP4 52 +INDIRP4 +CNSTI4 100 +ADDP4 +INDIRF4 +SUBF4 +ARGF4 +ADDRFP4 12 +INDIRP4 +ARGP4 +ADDRGP4 trap_CM_LerpTag +CALLI4 +pop +line 284 +;281: 1.0 - parent->backlerp, tagName ); +;282: +;283: // FIXME: allow origin offsets along tag? +;284: VectorCopy( parent->origin, entity->origin ); +ADDRLP4 56 +CNSTI4 68 +ASGNI4 +ADDRFP4 0 +INDIRP4 +ADDRLP4 56 +INDIRI4 +ADDP4 +ADDRFP4 4 +INDIRP4 +ADDRLP4 56 +INDIRI4 +ADDP4 +INDIRB +ASGNB 12 +line 285 +;285: for ( i = 0 ; i < 3 ; i++ ) { +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +LABELV $165 +line 286 +;286: VectorMA( entity->origin, lerped.origin[i], parent->axis[i], entity->origin ); +ADDRLP4 60 +ADDRFP4 0 +INDIRP4 +CNSTI4 68 +ADDP4 +ASGNP4 +ADDRLP4 60 +INDIRP4 +ADDRLP4 60 +INDIRP4 +INDIRF4 +CNSTI4 12 +ADDRLP4 0 +INDIRI4 +MULI4 +ADDRFP4 4 +INDIRP4 +CNSTI4 28 +ADDP4 +ADDP4 +INDIRF4 +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRLP4 4 +ADDP4 +INDIRF4 +MULF4 +ADDF4 +ASGNF4 +ADDRLP4 68 +ADDRFP4 0 +INDIRP4 +CNSTI4 72 +ADDP4 +ASGNP4 +ADDRLP4 68 +INDIRP4 +ADDRLP4 68 +INDIRP4 +INDIRF4 +CNSTI4 12 +ADDRLP4 0 +INDIRI4 +MULI4 +ADDRFP4 4 +INDIRP4 +CNSTI4 28 +ADDP4 +ADDP4 +CNSTI4 4 +ADDP4 +INDIRF4 +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRLP4 4 +ADDP4 +INDIRF4 +MULF4 +ADDF4 +ASGNF4 +ADDRLP4 76 +ADDRFP4 0 +INDIRP4 +CNSTI4 76 +ADDP4 +ASGNP4 +ADDRLP4 76 +INDIRP4 +ADDRLP4 76 +INDIRP4 +INDIRF4 +CNSTI4 12 +ADDRLP4 0 +INDIRI4 +MULI4 +ADDRFP4 4 +INDIRP4 +CNSTI4 28 +ADDP4 +ADDP4 +CNSTI4 8 +ADDP4 +INDIRF4 +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRLP4 4 +ADDP4 +INDIRF4 +MULF4 +ADDF4 +ASGNF4 +line 287 +;287: } +LABELV $166 +line 285 +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +ADDRLP4 0 +INDIRI4 +CNSTI4 3 +LTI4 $165 +line 290 +;288: +;289: // cast away const because of compiler problems +;290: MatrixMultiply( lerped.axis, ((refEntity_t*)parent)->axis, entity->axis ); +ADDRLP4 4+12 +ARGP4 +ADDRLP4 60 +CNSTI4 28 +ASGNI4 +ADDRFP4 4 +INDIRP4 +ADDRLP4 60 +INDIRI4 +ADDP +ARGP4 +ADDRFP4 0 +INDIRP4 +ADDRLP4 60 +INDIRI4 +ADDP4 +ARGP4 +ADDRGP4 MatrixMultiply +CALLV +pop +line 291 +;291: entity->backlerp = parent->backlerp; +ADDRLP4 64 +CNSTI4 100 +ASGNI4 +ADDRFP4 0 +INDIRP4 +ADDRLP4 64 +INDIRI4 +ADDP4 +ADDRFP4 4 +INDIRP4 +ADDRLP4 64 +INDIRI4 +ADDP4 +INDIRF4 +ASGNF4 +line 292 +;292:} +LABELV $164 +endproc UI_PositionEntityOnTag 84 24 +proc UI_PositionRotatedEntityOnTag 120 24 +line 301 +;293: +;294: +;295:/* +;296:====================== +;297:UI_PositionRotatedEntityOnTag +;298:====================== +;299:*/ +;300:static void UI_PositionRotatedEntityOnTag( refEntity_t *entity, const refEntity_t *parent, +;301: clipHandle_t parentModel, char *tagName ) { +line 307 +;302: int i; +;303: orientation_t lerped; +;304: vec3_t tempAxis[3]; +;305: +;306: // lerp the tag +;307: trap_CM_LerpTag( &lerped, parentModel, parent->oldframe, parent->frame, +ADDRLP4 4 +ARGP4 +ADDRFP4 8 +INDIRI4 +ARGI4 +ADDRLP4 88 +ADDRFP4 4 +INDIRP4 +ASGNP4 +ADDRLP4 88 +INDIRP4 +CNSTI4 96 +ADDP4 +INDIRI4 +ARGI4 +ADDRLP4 88 +INDIRP4 +CNSTI4 80 +ADDP4 +INDIRI4 +ARGI4 +CNSTF4 1065353216 +ADDRLP4 88 +INDIRP4 +CNSTI4 100 +ADDP4 +INDIRF4 +SUBF4 +ARGF4 +ADDRFP4 12 +INDIRP4 +ARGP4 +ADDRGP4 trap_CM_LerpTag +CALLI4 +pop +line 311 +;308: 1.0 - parent->backlerp, tagName ); +;309: +;310: // FIXME: allow origin offsets along tag? +;311: VectorCopy( parent->origin, entity->origin ); +ADDRLP4 92 +CNSTI4 68 +ASGNI4 +ADDRFP4 0 +INDIRP4 +ADDRLP4 92 +INDIRI4 +ADDP4 +ADDRFP4 4 +INDIRP4 +ADDRLP4 92 +INDIRI4 +ADDP4 +INDIRB +ASGNB 12 +line 312 +;312: for ( i = 0 ; i < 3 ; i++ ) { +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +LABELV $171 +line 313 +;313: VectorMA( entity->origin, lerped.origin[i], parent->axis[i], entity->origin ); +ADDRLP4 96 +ADDRFP4 0 +INDIRP4 +CNSTI4 68 +ADDP4 +ASGNP4 +ADDRLP4 96 +INDIRP4 +ADDRLP4 96 +INDIRP4 +INDIRF4 +CNSTI4 12 +ADDRLP4 0 +INDIRI4 +MULI4 +ADDRFP4 4 +INDIRP4 +CNSTI4 28 +ADDP4 +ADDP4 +INDIRF4 +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRLP4 4 +ADDP4 +INDIRF4 +MULF4 +ADDF4 +ASGNF4 +ADDRLP4 104 +ADDRFP4 0 +INDIRP4 +CNSTI4 72 +ADDP4 +ASGNP4 +ADDRLP4 104 +INDIRP4 +ADDRLP4 104 +INDIRP4 +INDIRF4 +CNSTI4 12 +ADDRLP4 0 +INDIRI4 +MULI4 +ADDRFP4 4 +INDIRP4 +CNSTI4 28 +ADDP4 +ADDP4 +CNSTI4 4 +ADDP4 +INDIRF4 +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRLP4 4 +ADDP4 +INDIRF4 +MULF4 +ADDF4 +ASGNF4 +ADDRLP4 112 +ADDRFP4 0 +INDIRP4 +CNSTI4 76 +ADDP4 +ASGNP4 +ADDRLP4 112 +INDIRP4 +ADDRLP4 112 +INDIRP4 +INDIRF4 +CNSTI4 12 +ADDRLP4 0 +INDIRI4 +MULI4 +ADDRFP4 4 +INDIRP4 +CNSTI4 28 +ADDP4 +ADDP4 +CNSTI4 8 +ADDP4 +INDIRF4 +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRLP4 4 +ADDP4 +INDIRF4 +MULF4 +ADDF4 +ASGNF4 +line 314 +;314: } +LABELV $172 +line 312 +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +ADDRLP4 0 +INDIRI4 +CNSTI4 3 +LTI4 $171 +line 317 +;315: +;316: // cast away const because of compiler problems +;317: MatrixMultiply( entity->axis, ((refEntity_t *)parent)->axis, tempAxis ); +ADDRLP4 96 +CNSTI4 28 +ASGNI4 +ADDRFP4 0 +INDIRP4 +ADDRLP4 96 +INDIRI4 +ADDP4 +ARGP4 +ADDRFP4 4 +INDIRP4 +ADDRLP4 96 +INDIRI4 +ADDP +ARGP4 +ADDRLP4 52 +ARGP4 +ADDRGP4 MatrixMultiply +CALLV +pop +line 318 +;318: MatrixMultiply( lerped.axis, tempAxis, entity->axis ); +ADDRLP4 4+12 +ARGP4 +ADDRLP4 52 +ARGP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 28 +ADDP4 +ARGP4 +ADDRGP4 MatrixMultiply +CALLV +pop +line 319 +;319:} +LABELV $170 +endproc UI_PositionRotatedEntityOnTag 120 24 +proc UI_SetLerpFrameAnimation 12 8 +line 327 +;320: +;321: +;322:/* +;323:=============== +;324:UI_SetLerpFrameAnimation +;325:=============== +;326:*/ +;327:static void UI_SetLerpFrameAnimation( playerInfo_t *ci, lerpFrame_t *lf, int newAnimation ) { +line 330 +;328: animation_t *anim; +;329: +;330: lf->animationNumber = newAnimation; +ADDRFP4 4 +INDIRP4 +CNSTI4 36 +ADDP4 +ADDRFP4 8 +INDIRI4 +ASGNI4 +line 331 +;331: newAnimation &= ~ANIM_TOGGLEBIT; +ADDRFP4 8 +ADDRFP4 8 +INDIRI4 +CNSTI4 -129 +BANDI4 +ASGNI4 +line 333 +;332: +;333: if ( newAnimation < 0 || newAnimation >= MAX_ANIMATIONS ) { +ADDRLP4 4 +ADDRFP4 8 +INDIRI4 +ASGNI4 +ADDRLP4 4 +INDIRI4 +CNSTI4 0 +LTI4 $179 +ADDRLP4 4 +INDIRI4 +CNSTI4 31 +LTI4 $177 +LABELV $179 +line 334 +;334: trap_Error( va("Bad animation number: %i", newAnimation) ); +ADDRGP4 $180 +ARGP4 +ADDRFP4 8 +INDIRI4 +ARGI4 +ADDRLP4 8 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRLP4 8 +INDIRP4 +ARGP4 +ADDRGP4 trap_Error +CALLV +pop +line 335 +;335: } +LABELV $177 +line 337 +;336: +;337: anim = &ci->animations[ newAnimation ]; +ADDRLP4 0 +CNSTI4 28 +ADDRFP4 8 +INDIRI4 +MULI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 120 +ADDP4 +ADDP4 +ASGNP4 +line 339 +;338: +;339: lf->animation = anim; +ADDRFP4 4 +INDIRP4 +CNSTI4 40 +ADDP4 +ADDRLP4 0 +INDIRP4 +ASGNP4 +line 340 +;340: lf->animationTime = lf->frameTime + anim->initialLerp; +ADDRLP4 8 +ADDRFP4 4 +INDIRP4 +ASGNP4 +ADDRLP4 8 +INDIRP4 +CNSTI4 44 +ADDP4 +ADDRLP4 8 +INDIRP4 +CNSTI4 12 +ADDP4 +INDIRI4 +ADDRLP4 0 +INDIRP4 +CNSTI4 16 +ADDP4 +INDIRI4 +ADDI4 +ASGNI4 +line 341 +;341:} +LABELV $176 +endproc UI_SetLerpFrameAnimation 12 8 +proc UI_RunLerpFrame 32 12 +line 349 +;342: +;343: +;344:/* +;345:=============== +;346:UI_RunLerpFrame +;347:=============== +;348:*/ +;349:static void UI_RunLerpFrame( playerInfo_t *ci, lerpFrame_t *lf, int newAnimation ) { +line 354 +;350: int f; +;351: animation_t *anim; +;352: +;353: // see if the animation sequence is switching +;354: if ( newAnimation != lf->animationNumber || !lf->animation ) { +ADDRLP4 8 +ADDRFP4 4 +INDIRP4 +ASGNP4 +ADDRFP4 8 +INDIRI4 +ADDRLP4 8 +INDIRP4 +CNSTI4 36 +ADDP4 +INDIRI4 +NEI4 $184 +ADDRLP4 8 +INDIRP4 +CNSTI4 40 +ADDP4 +INDIRP4 +CVPU4 4 +CNSTU4 0 +NEU4 $182 +LABELV $184 +line 355 +;355: UI_SetLerpFrameAnimation( ci, lf, newAnimation ); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRFP4 4 +INDIRP4 +ARGP4 +ADDRFP4 8 +INDIRI4 +ARGI4 +ADDRGP4 UI_SetLerpFrameAnimation +CALLV +pop +line 356 +;356: } +LABELV $182 +line 360 +;357: +;358: // if we have passed the current frame, move it to +;359: // oldFrame and calculate a new frame +;360: if ( dp_realtime >= lf->frameTime ) { +ADDRGP4 dp_realtime +INDIRI4 +ADDRFP4 4 +INDIRP4 +CNSTI4 12 +ADDP4 +INDIRI4 +LTI4 $185 +line 361 +;361: lf->oldFrame = lf->frame; +ADDRLP4 12 +ADDRFP4 4 +INDIRP4 +ASGNP4 +ADDRLP4 12 +INDIRP4 +ADDRLP4 12 +INDIRP4 +CNSTI4 8 +ADDP4 +INDIRI4 +ASGNI4 +line 362 +;362: lf->oldFrameTime = lf->frameTime; +ADDRLP4 16 +ADDRFP4 4 +INDIRP4 +ASGNP4 +ADDRLP4 16 +INDIRP4 +CNSTI4 4 +ADDP4 +ADDRLP4 16 +INDIRP4 +CNSTI4 12 +ADDP4 +INDIRI4 +ASGNI4 +line 365 +;363: +;364: // get the next frame based on the animation +;365: anim = lf->animation; +ADDRLP4 0 +ADDRFP4 4 +INDIRP4 +CNSTI4 40 +ADDP4 +INDIRP4 +ASGNP4 +line 366 +;366: if ( dp_realtime < lf->animationTime ) { +ADDRGP4 dp_realtime +INDIRI4 +ADDRFP4 4 +INDIRP4 +CNSTI4 44 +ADDP4 +INDIRI4 +GEI4 $187 +line 367 +;367: lf->frameTime = lf->animationTime; // initial lerp +ADDRLP4 20 +ADDRFP4 4 +INDIRP4 +ASGNP4 +ADDRLP4 20 +INDIRP4 +CNSTI4 12 +ADDP4 +ADDRLP4 20 +INDIRP4 +CNSTI4 44 +ADDP4 +INDIRI4 +ASGNI4 +line 368 +;368: } else { +ADDRGP4 $188 +JUMPV +LABELV $187 +line 369 +;369: lf->frameTime = lf->oldFrameTime + anim->frameLerp; +ADDRLP4 20 +ADDRFP4 4 +INDIRP4 +ASGNP4 +ADDRLP4 24 +CNSTI4 12 +ASGNI4 +ADDRLP4 20 +INDIRP4 +ADDRLP4 24 +INDIRI4 +ADDP4 +ADDRLP4 20 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRI4 +ADDRLP4 0 +INDIRP4 +ADDRLP4 24 +INDIRI4 +ADDP4 +INDIRI4 +ADDI4 +ASGNI4 +line 370 +;370: } +LABELV $188 +line 371 +;371: f = ( lf->frameTime - lf->animationTime ) / anim->frameLerp; +ADDRLP4 20 +ADDRFP4 4 +INDIRP4 +ASGNP4 +ADDRLP4 24 +CNSTI4 12 +ASGNI4 +ADDRLP4 4 +ADDRLP4 20 +INDIRP4 +ADDRLP4 24 +INDIRI4 +ADDP4 +INDIRI4 +ADDRLP4 20 +INDIRP4 +CNSTI4 44 +ADDP4 +INDIRI4 +SUBI4 +ADDRLP4 0 +INDIRP4 +ADDRLP4 24 +INDIRI4 +ADDP4 +INDIRI4 +DIVI4 +ASGNI4 +line 372 +;372: if ( f >= anim->numFrames ) { +ADDRLP4 4 +INDIRI4 +ADDRLP4 0 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRI4 +LTI4 $189 +line 373 +;373: f -= anim->numFrames; +ADDRLP4 4 +ADDRLP4 4 +INDIRI4 +ADDRLP4 0 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRI4 +SUBI4 +ASGNI4 +line 374 +;374: if ( anim->loopFrames ) { +ADDRLP4 0 +INDIRP4 +CNSTI4 8 +ADDP4 +INDIRI4 +CNSTI4 0 +EQI4 $191 +line 375 +;375: f %= anim->loopFrames; +ADDRLP4 4 +ADDRLP4 4 +INDIRI4 +ADDRLP4 0 +INDIRP4 +CNSTI4 8 +ADDP4 +INDIRI4 +MODI4 +ASGNI4 +line 376 +;376: f += anim->numFrames - anim->loopFrames; +ADDRLP4 4 +ADDRLP4 4 +INDIRI4 +ADDRLP4 0 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRI4 +ADDRLP4 0 +INDIRP4 +CNSTI4 8 +ADDP4 +INDIRI4 +SUBI4 +ADDI4 +ASGNI4 +line 377 +;377: } else { +ADDRGP4 $192 +JUMPV +LABELV $191 +line 378 +;378: f = anim->numFrames - 1; +ADDRLP4 4 +ADDRLP4 0 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRI4 +CNSTI4 1 +SUBI4 +ASGNI4 +line 381 +;379: // the animation is stuck at the end, so it +;380: // can immediately transition to another sequence +;381: lf->frameTime = dp_realtime; +ADDRFP4 4 +INDIRP4 +CNSTI4 12 +ADDP4 +ADDRGP4 dp_realtime +INDIRI4 +ASGNI4 +line 382 +;382: } +LABELV $192 +line 383 +;383: } +LABELV $189 +line 384 +;384: lf->frame = anim->firstFrame + f; +ADDRFP4 4 +INDIRP4 +CNSTI4 8 +ADDP4 +ADDRLP4 0 +INDIRP4 +INDIRI4 +ADDRLP4 4 +INDIRI4 +ADDI4 +ASGNI4 +line 385 +;385: if ( dp_realtime > lf->frameTime ) { +ADDRGP4 dp_realtime +INDIRI4 +ADDRFP4 4 +INDIRP4 +CNSTI4 12 +ADDP4 +INDIRI4 +LEI4 $193 +line 386 +;386: lf->frameTime = dp_realtime; +ADDRFP4 4 +INDIRP4 +CNSTI4 12 +ADDP4 +ADDRGP4 dp_realtime +INDIRI4 +ASGNI4 +line 387 +;387: } +LABELV $193 +line 388 +;388: } +LABELV $185 +line 390 +;389: +;390: if ( lf->frameTime > dp_realtime + 200 ) { +ADDRFP4 4 +INDIRP4 +CNSTI4 12 +ADDP4 +INDIRI4 +ADDRGP4 dp_realtime +INDIRI4 +CNSTI4 200 +ADDI4 +LEI4 $195 +line 391 +;391: lf->frameTime = dp_realtime; +ADDRFP4 4 +INDIRP4 +CNSTI4 12 +ADDP4 +ADDRGP4 dp_realtime +INDIRI4 +ASGNI4 +line 392 +;392: } +LABELV $195 +line 394 +;393: +;394: if ( lf->oldFrameTime > dp_realtime ) { +ADDRFP4 4 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRI4 +ADDRGP4 dp_realtime +INDIRI4 +LEI4 $197 +line 395 +;395: lf->oldFrameTime = dp_realtime; +ADDRFP4 4 +INDIRP4 +CNSTI4 4 +ADDP4 +ADDRGP4 dp_realtime +INDIRI4 +ASGNI4 +line 396 +;396: } +LABELV $197 +line 398 +;397: // calculate current lerp value +;398: if ( lf->frameTime == lf->oldFrameTime ) { +ADDRLP4 12 +ADDRFP4 4 +INDIRP4 +ASGNP4 +ADDRLP4 12 +INDIRP4 +CNSTI4 12 +ADDP4 +INDIRI4 +ADDRLP4 12 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRI4 +NEI4 $199 +line 399 +;399: lf->backlerp = 0; +ADDRFP4 4 +INDIRP4 +CNSTI4 16 +ADDP4 +CNSTF4 0 +ASGNF4 +line 400 +;400: } else { +ADDRGP4 $200 +JUMPV +LABELV $199 +line 401 +;401: lf->backlerp = 1.0 - (float)( dp_realtime - lf->oldFrameTime ) / ( lf->frameTime - lf->oldFrameTime ); +ADDRLP4 16 +ADDRFP4 4 +INDIRP4 +ASGNP4 +ADDRLP4 20 +ADDRLP4 16 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRI4 +ASGNI4 +ADDRLP4 16 +INDIRP4 +CNSTI4 16 +ADDP4 +CNSTF4 1065353216 +ADDRGP4 dp_realtime +INDIRI4 +ADDRLP4 20 +INDIRI4 +SUBI4 +CVIF4 4 +ADDRLP4 16 +INDIRP4 +CNSTI4 12 +ADDP4 +INDIRI4 +ADDRLP4 20 +INDIRI4 +SUBI4 +CVIF4 4 +DIVF4 +SUBF4 +ASGNF4 +line 402 +;402: } +LABELV $200 +line 403 +;403:} +LABELV $181 +endproc UI_RunLerpFrame 32 12 +proc UI_PlayerAnimation 16 12 +line 412 +;404: +;405: +;406:/* +;407:=============== +;408:UI_PlayerAnimation +;409:=============== +;410:*/ +;411:static void UI_PlayerAnimation( playerInfo_t *pi, int *legsOld, int *legs, float *legsBackLerp, +;412: int *torsoOld, int *torso, float *torsoBackLerp ) { +line 415 +;413: +;414: // legs animation +;415: pi->legsAnimationTimer -= uiInfo.uiDC.frameTime; +ADDRLP4 0 +ADDRFP4 0 +INDIRP4 +CNSTI4 1248 +ADDP4 +ASGNP4 +ADDRLP4 0 +INDIRP4 +ADDRLP4 0 +INDIRP4 +INDIRI4 +ADDRGP4 uiInfo+212 +INDIRI4 +SUBI4 +ASGNI4 +line 416 +;416: if ( pi->legsAnimationTimer < 0 ) { +ADDRFP4 0 +INDIRP4 +CNSTI4 1248 +ADDP4 +INDIRI4 +CNSTI4 0 +GEI4 $203 +line 417 +;417: pi->legsAnimationTimer = 0; +ADDRFP4 0 +INDIRP4 +CNSTI4 1248 +ADDP4 +CNSTI4 0 +ASGNI4 +line 418 +;418: } +LABELV $203 +line 420 +;419: +;420: UI_LegsSequencing( pi ); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRGP4 UI_LegsSequencing +CALLV +pop +line 422 +;421: +;422: if ( pi->legs.yawing && ( pi->legsAnim & ~ANIM_TOGGLEBIT ) == LEGS_IDLE ) { +ADDRLP4 4 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 4 +INDIRP4 +CNSTI4 32 +ADDP4 +INDIRI4 +CNSTI4 0 +EQI4 $205 +ADDRLP4 4 +INDIRP4 +CNSTI4 1212 +ADDP4 +INDIRI4 +CNSTI4 -129 +BANDI4 +CNSTI4 22 +NEI4 $205 +line 423 +;423: UI_RunLerpFrame( pi, &pi->legs, LEGS_TURN ); +ADDRLP4 8 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 8 +INDIRP4 +ARGP4 +ADDRLP4 8 +INDIRP4 +CNSTI4 8 +ADDP4 +ARGP4 +CNSTI4 24 +ARGI4 +ADDRGP4 UI_RunLerpFrame +CALLV +pop +line 424 +;424: } else { +ADDRGP4 $206 +JUMPV +LABELV $205 +line 425 +;425: UI_RunLerpFrame( pi, &pi->legs, pi->legsAnim ); +ADDRLP4 8 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 8 +INDIRP4 +ARGP4 +ADDRLP4 8 +INDIRP4 +CNSTI4 8 +ADDP4 +ARGP4 +ADDRLP4 8 +INDIRP4 +CNSTI4 1212 +ADDP4 +INDIRI4 +ARGI4 +ADDRGP4 UI_RunLerpFrame +CALLV +pop +line 426 +;426: } +LABELV $206 +line 427 +;427: *legsOld = pi->legs.oldFrame; +ADDRFP4 4 +INDIRP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 8 +ADDP4 +INDIRI4 +ASGNI4 +line 428 +;428: *legs = pi->legs.frame; +ADDRFP4 8 +INDIRP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 16 +ADDP4 +INDIRI4 +ASGNI4 +line 429 +;429: *legsBackLerp = pi->legs.backlerp; +ADDRFP4 12 +INDIRP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 24 +ADDP4 +INDIRF4 +ASGNF4 +line 432 +;430: +;431: // torso animation +;432: pi->torsoAnimationTimer -= uiInfo.uiDC.frameTime; +ADDRLP4 8 +ADDRFP4 0 +INDIRP4 +CNSTI4 1240 +ADDP4 +ASGNP4 +ADDRLP4 8 +INDIRP4 +ADDRLP4 8 +INDIRP4 +INDIRI4 +ADDRGP4 uiInfo+212 +INDIRI4 +SUBI4 +ASGNI4 +line 433 +;433: if ( pi->torsoAnimationTimer < 0 ) { +ADDRFP4 0 +INDIRP4 +CNSTI4 1240 +ADDP4 +INDIRI4 +CNSTI4 0 +GEI4 $208 +line 434 +;434: pi->torsoAnimationTimer = 0; +ADDRFP4 0 +INDIRP4 +CNSTI4 1240 +ADDP4 +CNSTI4 0 +ASGNI4 +line 435 +;435: } +LABELV $208 +line 437 +;436: +;437: UI_TorsoSequencing( pi ); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRGP4 UI_TorsoSequencing +CALLV +pop +line 439 +;438: +;439: UI_RunLerpFrame( pi, &pi->torso, pi->torsoAnim ); +ADDRLP4 12 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 12 +INDIRP4 +ARGP4 +ADDRLP4 12 +INDIRP4 +CNSTI4 64 +ADDP4 +ARGP4 +ADDRLP4 12 +INDIRP4 +CNSTI4 1216 +ADDP4 +INDIRI4 +ARGI4 +ADDRGP4 UI_RunLerpFrame +CALLV +pop +line 440 +;440: *torsoOld = pi->torso.oldFrame; +ADDRFP4 16 +INDIRP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 64 +ADDP4 +INDIRI4 +ASGNI4 +line 441 +;441: *torso = pi->torso.frame; +ADDRFP4 20 +INDIRP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 72 +ADDP4 +INDIRI4 +ASGNI4 +line 442 +;442: *torsoBackLerp = pi->torso.backlerp; +ADDRFP4 24 +INDIRP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 80 +ADDP4 +INDIRF4 +ASGNF4 +line 443 +;443:} +LABELV $201 +endproc UI_PlayerAnimation 16 12 +proc UI_SwingAngles 28 8 +line 452 +;444: +;445: +;446:/* +;447:================== +;448:UI_SwingAngles +;449:================== +;450:*/ +;451:static void UI_SwingAngles( float destination, float swingTolerance, float clampTolerance, +;452: float speed, float *angle, qboolean *swinging ) { +line 457 +;453: float swing; +;454: float move; +;455: float scale; +;456: +;457: if ( !*swinging ) { +ADDRFP4 20 +INDIRP4 +INDIRI4 +CNSTI4 0 +NEI4 $211 +line 459 +;458: // see if a swing should be started +;459: swing = AngleSubtract( *angle, destination ); +ADDRFP4 16 +INDIRP4 +INDIRF4 +ARGF4 +ADDRFP4 0 +INDIRF4 +ARGF4 +ADDRLP4 12 +ADDRGP4 AngleSubtract +CALLF4 +ASGNF4 +ADDRLP4 0 +ADDRLP4 12 +INDIRF4 +ASGNF4 +line 460 +;460: if ( swing > swingTolerance || swing < -swingTolerance ) { +ADDRLP4 20 +ADDRFP4 4 +INDIRF4 +ASGNF4 +ADDRLP4 0 +INDIRF4 +ADDRLP4 20 +INDIRF4 +GTF4 $215 +ADDRLP4 0 +INDIRF4 +ADDRLP4 20 +INDIRF4 +NEGF4 +GEF4 $213 +LABELV $215 +line 461 +;461: *swinging = qtrue; +ADDRFP4 20 +INDIRP4 +CNSTI4 1 +ASGNI4 +line 462 +;462: } +LABELV $213 +line 463 +;463: } +LABELV $211 +line 465 +;464: +;465: if ( !*swinging ) { +ADDRFP4 20 +INDIRP4 +INDIRI4 +CNSTI4 0 +NEI4 $216 +line 466 +;466: return; +ADDRGP4 $210 +JUMPV +LABELV $216 +line 471 +;467: } +;468: +;469: // modify the speed depending on the delta +;470: // so it doesn't seem so linear +;471: swing = AngleSubtract( destination, *angle ); +ADDRFP4 0 +INDIRF4 +ARGF4 +ADDRFP4 16 +INDIRP4 +INDIRF4 +ARGF4 +ADDRLP4 12 +ADDRGP4 AngleSubtract +CALLF4 +ASGNF4 +ADDRLP4 0 +ADDRLP4 12 +INDIRF4 +ASGNF4 +line 472 +;472: scale = fabs( swing ); +ADDRLP4 0 +INDIRF4 +ARGF4 +ADDRLP4 16 +ADDRGP4 fabs +CALLF4 +ASGNF4 +ADDRLP4 4 +ADDRLP4 16 +INDIRF4 +ASGNF4 +line 473 +;473: if ( scale < swingTolerance * 0.5 ) { +ADDRLP4 4 +INDIRF4 +CNSTF4 1056964608 +ADDRFP4 4 +INDIRF4 +MULF4 +GEF4 $218 +line 474 +;474: scale = 0.5; +ADDRLP4 4 +CNSTF4 1056964608 +ASGNF4 +line 475 +;475: } else if ( scale < swingTolerance ) { +ADDRGP4 $219 +JUMPV +LABELV $218 +ADDRLP4 4 +INDIRF4 +ADDRFP4 4 +INDIRF4 +GEF4 $220 +line 476 +;476: scale = 1.0; +ADDRLP4 4 +CNSTF4 1065353216 +ASGNF4 +line 477 +;477: } else { +ADDRGP4 $221 +JUMPV +LABELV $220 +line 478 +;478: scale = 2.0; +ADDRLP4 4 +CNSTF4 1073741824 +ASGNF4 +line 479 +;479: } +LABELV $221 +LABELV $219 +line 482 +;480: +;481: // swing towards the destination angle +;482: if ( swing >= 0 ) { +ADDRLP4 0 +INDIRF4 +CNSTF4 0 +LTF4 $222 +line 483 +;483: move = uiInfo.uiDC.frameTime * scale * speed; +ADDRLP4 8 +ADDRGP4 uiInfo+212 +INDIRI4 +CVIF4 4 +ADDRLP4 4 +INDIRF4 +MULF4 +ADDRFP4 12 +INDIRF4 +MULF4 +ASGNF4 +line 484 +;484: if ( move >= swing ) { +ADDRLP4 8 +INDIRF4 +ADDRLP4 0 +INDIRF4 +LTF4 $225 +line 485 +;485: move = swing; +ADDRLP4 8 +ADDRLP4 0 +INDIRF4 +ASGNF4 +line 486 +;486: *swinging = qfalse; +ADDRFP4 20 +INDIRP4 +CNSTI4 0 +ASGNI4 +line 487 +;487: } +LABELV $225 +line 488 +;488: *angle = AngleMod( *angle + move ); +ADDRLP4 20 +ADDRFP4 16 +INDIRP4 +ASGNP4 +ADDRLP4 20 +INDIRP4 +INDIRF4 +ADDRLP4 8 +INDIRF4 +ADDF4 +ARGF4 +ADDRLP4 24 +ADDRGP4 AngleMod +CALLF4 +ASGNF4 +ADDRLP4 20 +INDIRP4 +ADDRLP4 24 +INDIRF4 +ASGNF4 +line 489 +;489: } else if ( swing < 0 ) { +ADDRGP4 $223 +JUMPV +LABELV $222 +ADDRLP4 0 +INDIRF4 +CNSTF4 0 +GEF4 $227 +line 490 +;490: move = uiInfo.uiDC.frameTime * scale * -speed; +ADDRLP4 8 +ADDRGP4 uiInfo+212 +INDIRI4 +CVIF4 4 +ADDRLP4 4 +INDIRF4 +MULF4 +ADDRFP4 12 +INDIRF4 +NEGF4 +MULF4 +ASGNF4 +line 491 +;491: if ( move <= swing ) { +ADDRLP4 8 +INDIRF4 +ADDRLP4 0 +INDIRF4 +GTF4 $230 +line 492 +;492: move = swing; +ADDRLP4 8 +ADDRLP4 0 +INDIRF4 +ASGNF4 +line 493 +;493: *swinging = qfalse; +ADDRFP4 20 +INDIRP4 +CNSTI4 0 +ASGNI4 +line 494 +;494: } +LABELV $230 +line 495 +;495: *angle = AngleMod( *angle + move ); +ADDRLP4 20 +ADDRFP4 16 +INDIRP4 +ASGNP4 +ADDRLP4 20 +INDIRP4 +INDIRF4 +ADDRLP4 8 +INDIRF4 +ADDF4 +ARGF4 +ADDRLP4 24 +ADDRGP4 AngleMod +CALLF4 +ASGNF4 +ADDRLP4 20 +INDIRP4 +ADDRLP4 24 +INDIRF4 +ASGNF4 +line 496 +;496: } +LABELV $227 +LABELV $223 +line 499 +;497: +;498: // clamp to no more than tolerance +;499: swing = AngleSubtract( destination, *angle ); +ADDRFP4 0 +INDIRF4 +ARGF4 +ADDRFP4 16 +INDIRP4 +INDIRF4 +ARGF4 +ADDRLP4 20 +ADDRGP4 AngleSubtract +CALLF4 +ASGNF4 +ADDRLP4 0 +ADDRLP4 20 +INDIRF4 +ASGNF4 +line 500 +;500: if ( swing > clampTolerance ) { +ADDRLP4 0 +INDIRF4 +ADDRFP4 8 +INDIRF4 +LEF4 $232 +line 501 +;501: *angle = AngleMod( destination - (clampTolerance - 1) ); +ADDRFP4 0 +INDIRF4 +ADDRFP4 8 +INDIRF4 +CNSTF4 1065353216 +SUBF4 +SUBF4 +ARGF4 +ADDRLP4 24 +ADDRGP4 AngleMod +CALLF4 +ASGNF4 +ADDRFP4 16 +INDIRP4 +ADDRLP4 24 +INDIRF4 +ASGNF4 +line 502 +;502: } else if ( swing < -clampTolerance ) { +ADDRGP4 $233 +JUMPV +LABELV $232 +ADDRLP4 0 +INDIRF4 +ADDRFP4 8 +INDIRF4 +NEGF4 +GEF4 $234 +line 503 +;503: *angle = AngleMod( destination + (clampTolerance - 1) ); +ADDRFP4 0 +INDIRF4 +ADDRFP4 8 +INDIRF4 +CNSTF4 1065353216 +SUBF4 +ADDF4 +ARGF4 +ADDRLP4 24 +ADDRGP4 AngleMod +CALLF4 +ASGNF4 +ADDRFP4 16 +INDIRP4 +ADDRLP4 24 +INDIRF4 +ASGNF4 +line 504 +;504: } +LABELV $234 +LABELV $233 +line 505 +;505:} +LABELV $210 +endproc UI_SwingAngles 28 8 +proc UI_MovedirAdjustment 72 16 +line 513 +;506: +;507: +;508:/* +;509:====================== +;510:UI_MovedirAdjustment +;511:====================== +;512:*/ +;513:static float UI_MovedirAdjustment( playerInfo_t *pi ) { +line 517 +;514: vec3_t relativeAngles; +;515: vec3_t moveVector; +;516: +;517: VectorSubtract( pi->viewAngles, pi->moveAngles, relativeAngles ); +ADDRLP4 24 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 12 +ADDRLP4 24 +INDIRP4 +CNSTI4 1184 +ADDP4 +INDIRF4 +ADDRLP4 24 +INDIRP4 +CNSTI4 1196 +ADDP4 +INDIRF4 +SUBF4 +ASGNF4 +ADDRLP4 12+4 +ADDRLP4 24 +INDIRP4 +CNSTI4 1188 +ADDP4 +INDIRF4 +ADDRLP4 24 +INDIRP4 +CNSTI4 1200 +ADDP4 +INDIRF4 +SUBF4 +ASGNF4 +ADDRLP4 28 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 12+8 +ADDRLP4 28 +INDIRP4 +CNSTI4 1192 +ADDP4 +INDIRF4 +ADDRLP4 28 +INDIRP4 +CNSTI4 1204 +ADDP4 +INDIRF4 +SUBF4 +ASGNF4 +line 518 +;518: AngleVectors( relativeAngles, moveVector, NULL, NULL ); +ADDRLP4 12 +ARGP4 +ADDRLP4 0 +ARGP4 +ADDRLP4 32 +CNSTP4 0 +ASGNP4 +ADDRLP4 32 +INDIRP4 +ARGP4 +ADDRLP4 32 +INDIRP4 +ARGP4 +ADDRGP4 AngleVectors +CALLV +pop +line 519 +;519: if ( Q_fabs( moveVector[0] ) < 0.01 ) { +ADDRLP4 0 +INDIRF4 +ARGF4 +ADDRLP4 36 +ADDRGP4 Q_fabs +CALLF4 +ASGNF4 +ADDRLP4 36 +INDIRF4 +CNSTF4 1008981770 +GEF4 $239 +line 520 +;520: moveVector[0] = 0.0; +ADDRLP4 0 +CNSTF4 0 +ASGNF4 +line 521 +;521: } +LABELV $239 +line 522 +;522: if ( Q_fabs( moveVector[1] ) < 0.01 ) { +ADDRLP4 0+4 +INDIRF4 +ARGF4 +ADDRLP4 40 +ADDRGP4 Q_fabs +CALLF4 +ASGNF4 +ADDRLP4 40 +INDIRF4 +CNSTF4 1008981770 +GEF4 $241 +line 523 +;523: moveVector[1] = 0.0; +ADDRLP4 0+4 +CNSTF4 0 +ASGNF4 +line 524 +;524: } +LABELV $241 +line 526 +;525: +;526: if ( moveVector[1] == 0 && moveVector[0] > 0 ) { +ADDRLP4 44 +CNSTF4 0 +ASGNF4 +ADDRLP4 0+4 +INDIRF4 +ADDRLP4 44 +INDIRF4 +NEF4 $245 +ADDRLP4 0 +INDIRF4 +ADDRLP4 44 +INDIRF4 +LEF4 $245 +line 527 +;527: return 0; +CNSTF4 0 +RETF4 +ADDRGP4 $236 +JUMPV +LABELV $245 +line 529 +;528: } +;529: if ( moveVector[1] < 0 && moveVector[0] > 0 ) { +ADDRLP4 48 +CNSTF4 0 +ASGNF4 +ADDRLP4 0+4 +INDIRF4 +ADDRLP4 48 +INDIRF4 +GEF4 $248 +ADDRLP4 0 +INDIRF4 +ADDRLP4 48 +INDIRF4 +LEF4 $248 +line 530 +;530: return 22; +CNSTF4 1102053376 +RETF4 +ADDRGP4 $236 +JUMPV +LABELV $248 +line 532 +;531: } +;532: if ( moveVector[1] < 0 && moveVector[0] == 0 ) { +ADDRLP4 52 +CNSTF4 0 +ASGNF4 +ADDRLP4 0+4 +INDIRF4 +ADDRLP4 52 +INDIRF4 +GEF4 $251 +ADDRLP4 0 +INDIRF4 +ADDRLP4 52 +INDIRF4 +NEF4 $251 +line 533 +;533: return 45; +CNSTF4 1110704128 +RETF4 +ADDRGP4 $236 +JUMPV +LABELV $251 +line 535 +;534: } +;535: if ( moveVector[1] < 0 && moveVector[0] < 0 ) { +ADDRLP4 56 +CNSTF4 0 +ASGNF4 +ADDRLP4 0+4 +INDIRF4 +ADDRLP4 56 +INDIRF4 +GEF4 $254 +ADDRLP4 0 +INDIRF4 +ADDRLP4 56 +INDIRF4 +GEF4 $254 +line 536 +;536: return -22; +CNSTF4 3249537024 +RETF4 +ADDRGP4 $236 +JUMPV +LABELV $254 +line 538 +;537: } +;538: if ( moveVector[1] == 0 && moveVector[0] < 0 ) { +ADDRLP4 60 +CNSTF4 0 +ASGNF4 +ADDRLP4 0+4 +INDIRF4 +ADDRLP4 60 +INDIRF4 +NEF4 $257 +ADDRLP4 0 +INDIRF4 +ADDRLP4 60 +INDIRF4 +GEF4 $257 +line 539 +;539: return 0; +CNSTF4 0 +RETF4 +ADDRGP4 $236 +JUMPV +LABELV $257 +line 541 +;540: } +;541: if ( moveVector[1] > 0 && moveVector[0] < 0 ) { +ADDRLP4 64 +CNSTF4 0 +ASGNF4 +ADDRLP4 0+4 +INDIRF4 +ADDRLP4 64 +INDIRF4 +LEF4 $260 +ADDRLP4 0 +INDIRF4 +ADDRLP4 64 +INDIRF4 +GEF4 $260 +line 542 +;542: return 22; +CNSTF4 1102053376 +RETF4 +ADDRGP4 $236 +JUMPV +LABELV $260 +line 544 +;543: } +;544: if ( moveVector[1] > 0 && moveVector[0] == 0 ) { +ADDRLP4 68 +CNSTF4 0 +ASGNF4 +ADDRLP4 0+4 +INDIRF4 +ADDRLP4 68 +INDIRF4 +LEF4 $263 +ADDRLP4 0 +INDIRF4 +ADDRLP4 68 +INDIRF4 +NEF4 $263 +line 545 +;545: return -45; +CNSTF4 3258187776 +RETF4 +ADDRGP4 $236 +JUMPV +LABELV $263 +line 548 +;546: } +;547: +;548: return -22; +CNSTF4 3249537024 +RETF4 +LABELV $236 +endproc UI_MovedirAdjustment 72 16 +proc UI_PlayerAngles 80 24 +line 557 +;549:} +;550: +;551: +;552:/* +;553:=============== +;554:UI_PlayerAngles +;555:=============== +;556:*/ +;557:static void UI_PlayerAngles( playerInfo_t *pi, vec3_t legs[3], vec3_t torso[3], vec3_t head[3] ) { +line 562 +;558: vec3_t legsAngles, torsoAngles, headAngles; +;559: float dest; +;560: float adjust; +;561: +;562: VectorCopy( pi->viewAngles, headAngles ); +ADDRLP4 12 +ADDRFP4 0 +INDIRP4 +CNSTI4 1184 +ADDP4 +INDIRB +ASGNB 12 +line 563 +;563: headAngles[YAW] = AngleMod( headAngles[YAW] ); +ADDRLP4 12+4 +INDIRF4 +ARGF4 +ADDRLP4 44 +ADDRGP4 AngleMod +CALLF4 +ASGNF4 +ADDRLP4 12+4 +ADDRLP4 44 +INDIRF4 +ASGNF4 +line 564 +;564: VectorClear( legsAngles ); +ADDRLP4 48 +CNSTF4 0 +ASGNF4 +ADDRLP4 24+8 +ADDRLP4 48 +INDIRF4 +ASGNF4 +ADDRLP4 24+4 +ADDRLP4 48 +INDIRF4 +ASGNF4 +ADDRLP4 24 +ADDRLP4 48 +INDIRF4 +ASGNF4 +line 565 +;565: VectorClear( torsoAngles ); +ADDRLP4 52 +CNSTF4 0 +ASGNF4 +ADDRLP4 0+8 +ADDRLP4 52 +INDIRF4 +ASGNF4 +ADDRLP4 0+4 +ADDRLP4 52 +INDIRF4 +ASGNF4 +ADDRLP4 0 +ADDRLP4 52 +INDIRF4 +ASGNF4 +line 570 +;566: +;567: // --------- yaw ------------- +;568: +;569: // allow yaw to drift a bit +;570: if ( ( pi->legsAnim & ~ANIM_TOGGLEBIT ) != LEGS_IDLE +ADDRLP4 56 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 60 +CNSTI4 -129 +ASGNI4 +ADDRLP4 56 +INDIRP4 +CNSTI4 1212 +ADDP4 +INDIRI4 +ADDRLP4 60 +INDIRI4 +BANDI4 +CNSTI4 22 +NEI4 $275 +ADDRLP4 56 +INDIRP4 +CNSTI4 1216 +ADDP4 +INDIRI4 +ADDRLP4 60 +INDIRI4 +BANDI4 +CNSTI4 11 +EQI4 $273 +LABELV $275 +line 571 +;571: || ( pi->torsoAnim & ~ANIM_TOGGLEBIT ) != TORSO_STAND ) { +line 573 +;572: // if not standing still, always point all in the same direction +;573: pi->torso.yawing = qtrue; // always center +ADDRFP4 0 +INDIRP4 +CNSTI4 88 +ADDP4 +CNSTI4 1 +ASGNI4 +line 574 +;574: pi->torso.pitching = qtrue; // always center +ADDRFP4 0 +INDIRP4 +CNSTI4 96 +ADDP4 +CNSTI4 1 +ASGNI4 +line 575 +;575: pi->legs.yawing = qtrue; // always center +ADDRFP4 0 +INDIRP4 +CNSTI4 32 +ADDP4 +CNSTI4 1 +ASGNI4 +line 576 +;576: } +LABELV $273 +line 579 +;577: +;578: // adjust legs for movement dir +;579: adjust = UI_MovedirAdjustment( pi ); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRLP4 64 +ADDRGP4 UI_MovedirAdjustment +CALLF4 +ASGNF4 +ADDRLP4 36 +ADDRLP4 64 +INDIRF4 +ASGNF4 +line 580 +;580: legsAngles[YAW] = headAngles[YAW] + adjust; +ADDRLP4 24+4 +ADDRLP4 12+4 +INDIRF4 +ADDRLP4 36 +INDIRF4 +ADDF4 +ASGNF4 +line 581 +;581: torsoAngles[YAW] = headAngles[YAW] + 0.25 * adjust; +ADDRLP4 0+4 +ADDRLP4 12+4 +INDIRF4 +CNSTF4 1048576000 +ADDRLP4 36 +INDIRF4 +MULF4 +ADDF4 +ASGNF4 +line 585 +;582: +;583: +;584: // torso +;585: UI_SwingAngles( torsoAngles[YAW], 25, 90, SWINGSPEED, &pi->torso.yawAngle, &pi->torso.yawing ); +ADDRLP4 0+4 +INDIRF4 +ARGF4 +CNSTF4 1103626240 +ARGF4 +CNSTF4 1119092736 +ARGF4 +CNSTF4 1050253722 +ARGF4 +ADDRLP4 68 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 68 +INDIRP4 +CNSTI4 84 +ADDP4 +ARGP4 +ADDRLP4 68 +INDIRP4 +CNSTI4 88 +ADDP4 +ARGP4 +ADDRGP4 UI_SwingAngles +CALLV +pop +line 586 +;586: UI_SwingAngles( legsAngles[YAW], 40, 90, SWINGSPEED, &pi->legs.yawAngle, &pi->legs.yawing ); +ADDRLP4 24+4 +INDIRF4 +ARGF4 +CNSTF4 1109393408 +ARGF4 +CNSTF4 1119092736 +ARGF4 +CNSTF4 1050253722 +ARGF4 +ADDRLP4 72 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 72 +INDIRP4 +CNSTI4 28 +ADDP4 +ARGP4 +ADDRLP4 72 +INDIRP4 +CNSTI4 32 +ADDP4 +ARGP4 +ADDRGP4 UI_SwingAngles +CALLV +pop +line 588 +;587: +;588: torsoAngles[YAW] = pi->torso.yawAngle; +ADDRLP4 0+4 +ADDRFP4 0 +INDIRP4 +CNSTI4 84 +ADDP4 +INDIRF4 +ASGNF4 +line 589 +;589: legsAngles[YAW] = pi->legs.yawAngle; +ADDRLP4 24+4 +ADDRFP4 0 +INDIRP4 +CNSTI4 28 +ADDP4 +INDIRF4 +ASGNF4 +line 594 +;590: +;591: // --------- pitch ------------- +;592: +;593: // only show a fraction of the pitch angle in the torso +;594: if ( headAngles[PITCH] > 180 ) { +ADDRLP4 12 +INDIRF4 +CNSTF4 1127481344 +LEF4 $284 +line 595 +;595: dest = (-360 + headAngles[PITCH]) * 0.75; +ADDRLP4 40 +CNSTF4 1061158912 +ADDRLP4 12 +INDIRF4 +CNSTF4 3283353600 +ADDF4 +MULF4 +ASGNF4 +line 596 +;596: } else { +ADDRGP4 $285 +JUMPV +LABELV $284 +line 597 +;597: dest = headAngles[PITCH] * 0.75; +ADDRLP4 40 +CNSTF4 1061158912 +ADDRLP4 12 +INDIRF4 +MULF4 +ASGNF4 +line 598 +;598: } +LABELV $285 +line 599 +;599: UI_SwingAngles( dest, 15, 30, 0.1f, &pi->torso.pitchAngle, &pi->torso.pitching ); +ADDRLP4 40 +INDIRF4 +ARGF4 +CNSTF4 1097859072 +ARGF4 +CNSTF4 1106247680 +ARGF4 +CNSTF4 1036831949 +ARGF4 +ADDRLP4 76 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 76 +INDIRP4 +CNSTI4 92 +ADDP4 +ARGP4 +ADDRLP4 76 +INDIRP4 +CNSTI4 96 +ADDP4 +ARGP4 +ADDRGP4 UI_SwingAngles +CALLV +pop +line 600 +;600: torsoAngles[PITCH] = pi->torso.pitchAngle; +ADDRLP4 0 +ADDRFP4 0 +INDIRP4 +CNSTI4 92 +ADDP4 +INDIRF4 +ASGNF4 +line 603 +;601: +;602: // pull the angles back out of the hierarchial chain +;603: AnglesSubtract( headAngles, torsoAngles, headAngles ); +ADDRLP4 12 +ARGP4 +ADDRLP4 0 +ARGP4 +ADDRLP4 12 +ARGP4 +ADDRGP4 AnglesSubtract +CALLV +pop +line 604 +;604: AnglesSubtract( torsoAngles, legsAngles, torsoAngles ); +ADDRLP4 0 +ARGP4 +ADDRLP4 24 +ARGP4 +ADDRLP4 0 +ARGP4 +ADDRGP4 AnglesSubtract +CALLV +pop +line 605 +;605: AnglesToAxis( legsAngles, legs ); +ADDRLP4 24 +ARGP4 +ADDRFP4 4 +INDIRP4 +ARGP4 +ADDRGP4 AnglesToAxis +CALLV +pop +line 606 +;606: AnglesToAxis( torsoAngles, torso ); +ADDRLP4 0 +ARGP4 +ADDRFP4 8 +INDIRP4 +ARGP4 +ADDRGP4 AnglesToAxis +CALLV +pop +line 607 +;607: AnglesToAxis( headAngles, head ); +ADDRLP4 12 +ARGP4 +ADDRFP4 12 +INDIRP4 +ARGP4 +ADDRGP4 AnglesToAxis +CALLV +pop +line 608 +;608:} +LABELV $266 +endproc UI_PlayerAngles 80 24 +proc UI_PlayerFloatSprite 140 12 +line 616 +;609: +;610: +;611:/* +;612:=============== +;613:UI_PlayerFloatSprite +;614:=============== +;615:*/ +;616:static void UI_PlayerFloatSprite( playerInfo_t *pi, vec3_t origin, qhandle_t shader ) { +line 619 +;617: refEntity_t ent; +;618: +;619: memset( &ent, 0, sizeof( ent ) ); +ADDRLP4 0 +ARGP4 +CNSTI4 0 +ARGI4 +CNSTI4 140 +ARGI4 +ADDRGP4 memset +CALLP4 +pop +line 620 +;620: VectorCopy( origin, ent.origin ); +ADDRLP4 0+68 +ADDRFP4 4 +INDIRP4 +INDIRB +ASGNB 12 +line 621 +;621: ent.origin[2] += 48; +ADDRLP4 0+68+8 +ADDRLP4 0+68+8 +INDIRF4 +CNSTF4 1111490560 +ADDF4 +ASGNF4 +line 622 +;622: ent.reType = RT_SPRITE; +ADDRLP4 0 +CNSTI4 2 +ASGNI4 +line 623 +;623: ent.customShader = shader; +ADDRLP4 0+112 +ADDRFP4 8 +INDIRI4 +ASGNI4 +line 624 +;624: ent.radius = 10; +ADDRLP4 0+132 +CNSTF4 1092616192 +ASGNF4 +line 625 +;625: ent.renderfx = 0; +ADDRLP4 0+4 +CNSTI4 0 +ASGNI4 +line 626 +;626: trap_R_AddRefEntityToScene( &ent ); +ADDRLP4 0 +ARGP4 +ADDRGP4 trap_R_AddRefEntityToScene +CALLV +pop +line 627 +;627:} +LABELV $286 +endproc UI_PlayerFloatSprite 140 12 +export UI_MachinegunSpinAngle +proc UI_MachinegunSpinAngle 28 4 +line 635 +;628: +;629: +;630:/* +;631:====================== +;632:UI_MachinegunSpinAngle +;633:====================== +;634:*/ +;635:float UI_MachinegunSpinAngle( playerInfo_t *pi ) { +line 641 +;636: int delta; +;637: float angle; +;638: float speed; +;639: int torsoAnim; +;640: +;641: delta = dp_realtime - pi->barrelTime; +ADDRLP4 4 +ADDRGP4 dp_realtime +INDIRI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 1268 +ADDP4 +INDIRI4 +SUBI4 +ASGNI4 +line 642 +;642: if ( pi->barrelSpinning ) { +ADDRFP4 0 +INDIRP4 +CNSTI4 1260 +ADDP4 +INDIRI4 +CNSTI4 0 +EQI4 $294 +line 643 +;643: angle = pi->barrelAngle + delta * SPIN_SPEED; +ADDRLP4 8 +ADDRFP4 0 +INDIRP4 +CNSTI4 1264 +ADDP4 +INDIRF4 +CNSTF4 1063675494 +ADDRLP4 4 +INDIRI4 +CVIF4 4 +MULF4 +ADDF4 +ASGNF4 +line 644 +;644: } else { +ADDRGP4 $295 +JUMPV +LABELV $294 +line 645 +;645: if ( delta > COAST_TIME ) { +ADDRLP4 4 +INDIRI4 +CNSTI4 1000 +LEI4 $296 +line 646 +;646: delta = COAST_TIME; +ADDRLP4 4 +CNSTI4 1000 +ASGNI4 +line 647 +;647: } +LABELV $296 +line 649 +;648: +;649: speed = 0.5 * ( SPIN_SPEED + (float)( COAST_TIME - delta ) / COAST_TIME ); +ADDRLP4 12 +CNSTF4 1056964608 +CNSTI4 1000 +ADDRLP4 4 +INDIRI4 +SUBI4 +CVIF4 4 +CNSTF4 1148846080 +DIVF4 +CNSTF4 1063675494 +ADDF4 +MULF4 +ASGNF4 +line 650 +;650: angle = pi->barrelAngle + delta * speed; +ADDRLP4 8 +ADDRFP4 0 +INDIRP4 +CNSTI4 1264 +ADDP4 +INDIRF4 +ADDRLP4 4 +INDIRI4 +CVIF4 4 +ADDRLP4 12 +INDIRF4 +MULF4 +ADDF4 +ASGNF4 +line 651 +;651: } +LABELV $295 +line 653 +;652: +;653: torsoAnim = pi->torsoAnim & ~ANIM_TOGGLEBIT; +ADDRLP4 0 +ADDRFP4 0 +INDIRP4 +CNSTI4 1216 +ADDP4 +INDIRI4 +CNSTI4 -129 +BANDI4 +ASGNI4 +line 654 +;654: if( torsoAnim == TORSO_ATTACK2 ) { +ADDRLP4 0 +INDIRI4 +CNSTI4 8 +NEI4 $298 +line 655 +;655: torsoAnim = TORSO_ATTACK; +ADDRLP4 0 +CNSTI4 7 +ASGNI4 +line 656 +;656: } +LABELV $298 +line 657 +;657: if ( pi->barrelSpinning == !(torsoAnim == TORSO_ATTACK) ) { +ADDRLP4 0 +INDIRI4 +CNSTI4 7 +EQI4 $303 +ADDRLP4 16 +CNSTI4 1 +ASGNI4 +ADDRGP4 $304 +JUMPV +LABELV $303 +ADDRLP4 16 +CNSTI4 0 +ASGNI4 +LABELV $304 +ADDRFP4 0 +INDIRP4 +CNSTI4 1260 +ADDP4 +INDIRI4 +ADDRLP4 16 +INDIRI4 +NEI4 $300 +line 658 +;658: pi->barrelTime = dp_realtime; +ADDRFP4 0 +INDIRP4 +CNSTI4 1268 +ADDP4 +ADDRGP4 dp_realtime +INDIRI4 +ASGNI4 +line 659 +;659: pi->barrelAngle = AngleMod( angle ); +ADDRLP4 8 +INDIRF4 +ARGF4 +ADDRLP4 20 +ADDRGP4 AngleMod +CALLF4 +ASGNF4 +ADDRFP4 0 +INDIRP4 +CNSTI4 1264 +ADDP4 +ADDRLP4 20 +INDIRF4 +ASGNF4 +line 660 +;660: pi->barrelSpinning = !!(torsoAnim == TORSO_ATTACK); +ADDRLP4 0 +INDIRI4 +CNSTI4 7 +NEI4 $306 +ADDRLP4 24 +CNSTI4 1 +ASGNI4 +ADDRGP4 $307 +JUMPV +LABELV $306 +ADDRLP4 24 +CNSTI4 0 +ASGNI4 +LABELV $307 +ADDRFP4 0 +INDIRP4 +CNSTI4 1260 +ADDP4 +ADDRLP4 24 +INDIRI4 +ASGNI4 +line 661 +;661: } +LABELV $300 +line 663 +;662: +;663: return angle; +ADDRLP4 8 +INDIRF4 +RETF4 +LABELV $293 +endproc UI_MachinegunSpinAngle 28 4 +lit +align 4 +LABELV $309 +byte 4 3246391296 +byte 4 3246391296 +byte 4 3250585600 +align 4 +LABELV $310 +byte 4 1098907648 +byte 4 1098907648 +byte 4 1107296256 +export UI_DrawPlayer +code +proc UI_DrawPlayer 1300 28 +line 672 +;664:} +;665: +;666: +;667:/* +;668:=============== +;669:UI_DrawPlayer +;670:=============== +;671:*/ +;672:void UI_DrawPlayer( float x, float y, float w, float h, playerInfo_t *pi, int time ) { +line 682 +;673: refdef_t refdef; +;674: refEntity_t legs; +;675: refEntity_t torso; +;676: refEntity_t head; +;677: refEntity_t gun; +;678: refEntity_t barrel; +;679: refEntity_t flash; +;680: vec3_t origin; +;681: int renderfx; +;682: vec3_t mins = {-16, -16, -24}; +ADDRLP4 804 +ADDRGP4 $309 +INDIRB +ASGNB 12 +line 683 +;683: vec3_t maxs = {16, 16, 32}; +ADDRLP4 816 +ADDRGP4 $310 +INDIRB +ASGNB 12 +line 687 +;684: float len; +;685: float xx; +;686: +;687: if ( !pi->legsModel || !pi->torsoModel || !pi->headModel || !pi->animations[0].numFrames ) { +ADDRLP4 1256 +ADDRFP4 16 +INDIRP4 +ASGNP4 +ADDRLP4 1260 +CNSTI4 0 +ASGNI4 +ADDRLP4 1256 +INDIRP4 +INDIRI4 +ADDRLP4 1260 +INDIRI4 +EQI4 $315 +ADDRLP4 1256 +INDIRP4 +CNSTI4 56 +ADDP4 +INDIRI4 +ADDRLP4 1260 +INDIRI4 +EQI4 $315 +ADDRLP4 1256 +INDIRP4 +CNSTI4 112 +ADDP4 +INDIRI4 +ADDRLP4 1260 +INDIRI4 +EQI4 $315 +ADDRLP4 1256 +INDIRP4 +CNSTI4 124 +ADDP4 +INDIRI4 +ADDRLP4 1260 +INDIRI4 +NEI4 $311 +LABELV $315 +line 688 +;688: return; +ADDRGP4 $308 +JUMPV +LABELV $311 +line 692 +;689: } +;690: +;691: // this allows the ui to cache the player model on the main menu +;692: if (w == 0 || h == 0) { +ADDRLP4 1264 +CNSTF4 0 +ASGNF4 +ADDRFP4 8 +INDIRF4 +ADDRLP4 1264 +INDIRF4 +EQF4 $318 +ADDRFP4 12 +INDIRF4 +ADDRLP4 1264 +INDIRF4 +NEF4 $316 +LABELV $318 +line 693 +;693: return; +ADDRGP4 $308 +JUMPV +LABELV $316 +line 696 +;694: } +;695: +;696: dp_realtime = time; +ADDRGP4 dp_realtime +ADDRFP4 20 +INDIRI4 +ASGNI4 +line 698 +;697: +;698: if ( pi->pendingWeapon != -1 && dp_realtime > pi->weaponTimer ) { +ADDRLP4 1268 +ADDRFP4 16 +INDIRP4 +ASGNP4 +ADDRLP4 1268 +INDIRP4 +CNSTI4 1228 +ADDP4 +INDIRI4 +CNSTI4 -1 +EQI4 $319 +ADDRGP4 dp_realtime +INDIRI4 +ADDRLP4 1268 +INDIRP4 +CNSTI4 1232 +ADDP4 +INDIRI4 +LEI4 $319 +line 699 +;699: pi->weapon = pi->pendingWeapon; +ADDRLP4 1272 +ADDRFP4 16 +INDIRP4 +ASGNP4 +ADDRLP4 1272 +INDIRP4 +CNSTI4 1220 +ADDP4 +ADDRLP4 1272 +INDIRP4 +CNSTI4 1228 +ADDP4 +INDIRI4 +ASGNI4 +line 700 +;700: pi->lastWeapon = pi->pendingWeapon; +ADDRLP4 1276 +ADDRFP4 16 +INDIRP4 +ASGNP4 +ADDRLP4 1276 +INDIRP4 +CNSTI4 1224 +ADDP4 +ADDRLP4 1276 +INDIRP4 +CNSTI4 1228 +ADDP4 +INDIRI4 +ASGNI4 +line 701 +;701: pi->pendingWeapon = -1; +ADDRFP4 16 +INDIRP4 +CNSTI4 1228 +ADDP4 +CNSTI4 -1 +ASGNI4 +line 702 +;702: pi->weaponTimer = 0; +ADDRFP4 16 +INDIRP4 +CNSTI4 1232 +ADDP4 +CNSTI4 0 +ASGNI4 +line 703 +;703: if( pi->currentWeapon != pi->weapon ) { +ADDRLP4 1280 +ADDRFP4 16 +INDIRP4 +ASGNP4 +ADDRLP4 1280 +INDIRP4 +CNSTI4 1208 +ADDP4 +INDIRI4 +ADDRLP4 1280 +INDIRP4 +CNSTI4 1220 +ADDP4 +INDIRI4 +EQI4 $321 +line 704 +;704: trap_S_StartLocalSound( weaponChangeSound, CHAN_LOCAL ); +ADDRGP4 weaponChangeSound +INDIRI4 +ARGI4 +CNSTI4 1 +ARGI4 +ADDRGP4 trap_S_StartLocalSound +CALLV +pop +line 705 +;705: } +LABELV $321 +line 706 +;706: } +LABELV $319 +line 708 +;707: +;708: UI_AdjustFrom640( &x, &y, &w, &h ); +ADDRFP4 0 +ARGP4 +ADDRFP4 4 +ARGP4 +ADDRFP4 8 +ARGP4 +ADDRFP4 12 +ARGP4 +ADDRGP4 UI_AdjustFrom640 +CALLV +pop +line 710 +;709: +;710: y -= jumpHeight; +ADDRFP4 4 +ADDRFP4 4 +INDIRF4 +ADDRGP4 jumpHeight +INDIRF4 +SUBF4 +ASGNF4 +line 712 +;711: +;712: memset( &refdef, 0, sizeof( refdef ) ); +ADDRLP4 0 +ARGP4 +CNSTI4 0 +ARGI4 +CNSTI4 368 +ARGI4 +ADDRGP4 memset +CALLP4 +pop +line 713 +;713: memset( &legs, 0, sizeof(legs) ); +ADDRLP4 380 +ARGP4 +CNSTI4 0 +ARGI4 +CNSTI4 140 +ARGI4 +ADDRGP4 memset +CALLP4 +pop +line 714 +;714: memset( &torso, 0, sizeof(torso) ); +ADDRLP4 520 +ARGP4 +CNSTI4 0 +ARGI4 +CNSTI4 140 +ARGI4 +ADDRGP4 memset +CALLP4 +pop +line 715 +;715: memset( &head, 0, sizeof(head) ); +ADDRLP4 660 +ARGP4 +CNSTI4 0 +ARGI4 +CNSTI4 140 +ARGI4 +ADDRGP4 memset +CALLP4 +pop +line 717 +;716: +;717: refdef.rdflags = RDF_NOWORLDMODEL; +ADDRLP4 0+76 +CNSTI4 1 +ASGNI4 +line 719 +;718: +;719: AxisClear( refdef.viewaxis ); +ADDRLP4 0+36 +ARGP4 +ADDRGP4 AxisClear +CALLV +pop +line 721 +;720: +;721: refdef.x = x; +ADDRLP4 0 +ADDRFP4 0 +INDIRF4 +CVFI4 4 +ASGNI4 +line 722 +;722: refdef.y = y; +ADDRLP4 0+4 +ADDRFP4 4 +INDIRF4 +CVFI4 4 +ASGNI4 +line 723 +;723: refdef.width = w; +ADDRLP4 0+8 +ADDRFP4 8 +INDIRF4 +CVFI4 4 +ASGNI4 +line 724 +;724: refdef.height = h; +ADDRLP4 0+12 +ADDRFP4 12 +INDIRF4 +CVFI4 4 +ASGNI4 +line 726 +;725: +;726: refdef.fov_x = (int)((float)refdef.width / 640.0f * 90.0f); +ADDRLP4 0+16 +CNSTF4 1119092736 +ADDRLP4 0+8 +INDIRI4 +CVIF4 4 +CNSTF4 1142947840 +DIVF4 +MULF4 +CVFI4 4 +CVIF4 4 +ASGNF4 +line 727 +;727: xx = refdef.width / tan( refdef.fov_x / 360 * M_PI ); +CNSTF4 1078530011 +ADDRLP4 0+16 +INDIRF4 +CNSTF4 1135869952 +DIVF4 +MULF4 +ARGF4 +ADDRLP4 1272 +ADDRGP4 tan +CALLF4 +ASGNF4 +ADDRLP4 1112 +ADDRLP4 0+8 +INDIRI4 +CVIF4 4 +ADDRLP4 1272 +INDIRF4 +DIVF4 +ASGNF4 +line 728 +;728: refdef.fov_y = atan2( refdef.height, xx ); +ADDRLP4 0+12 +INDIRI4 +CVIF4 4 +ARGF4 +ADDRLP4 1112 +INDIRF4 +ARGF4 +ADDRLP4 1276 +ADDRGP4 atan2 +CALLF4 +ASGNF4 +ADDRLP4 0+20 +ADDRLP4 1276 +INDIRF4 +ASGNF4 +line 729 +;729: refdef.fov_y *= ( 360 / (float)M_PI ); +ADDRLP4 0+20 +CNSTF4 1122316001 +ADDRLP4 0+20 +INDIRF4 +MULF4 +ASGNF4 +line 732 +;730: +;731: // calculate distance so the player nearly fills the box +;732: len = 0.7 * ( maxs[2] - mins[2] ); +ADDRLP4 1108 +CNSTF4 1060320051 +ADDRLP4 816+8 +INDIRF4 +ADDRLP4 804+8 +INDIRF4 +SUBF4 +MULF4 +ASGNF4 +line 733 +;733: origin[0] = len / tan( DEG2RAD(refdef.fov_x) * 0.5 ); +CNSTF4 1056964608 +CNSTF4 1078530011 +ADDRLP4 0+16 +INDIRF4 +MULF4 +CNSTF4 1127481344 +DIVF4 +MULF4 +ARGF4 +ADDRLP4 1280 +ADDRGP4 tan +CALLF4 +ASGNF4 +ADDRLP4 368 +ADDRLP4 1108 +INDIRF4 +ADDRLP4 1280 +INDIRF4 +DIVF4 +ASGNF4 +line 734 +;734: origin[1] = 0.5 * ( mins[1] + maxs[1] ); +ADDRLP4 368+4 +CNSTF4 1056964608 +ADDRLP4 804+4 +INDIRF4 +ADDRLP4 816+4 +INDIRF4 +ADDF4 +MULF4 +ASGNF4 +line 735 +;735: origin[2] = -0.5 * ( mins[2] + maxs[2] ); +ADDRLP4 368+8 +CNSTF4 3204448256 +ADDRLP4 804+8 +INDIRF4 +ADDRLP4 816+8 +INDIRF4 +ADDF4 +MULF4 +ASGNF4 +line 737 +;736: +;737: refdef.time = dp_realtime; +ADDRLP4 0+72 +ADDRGP4 dp_realtime +INDIRI4 +ASGNI4 +line 739 +;738: +;739: trap_R_ClearScene(); +ADDRGP4 trap_R_ClearScene +CALLV +pop +line 742 +;740: +;741: // get the rotation information +;742: UI_PlayerAngles( pi, legs.axis, torso.axis, head.axis ); +ADDRFP4 16 +INDIRP4 +ARGP4 +ADDRLP4 380+28 +ARGP4 +ADDRLP4 520+28 +ARGP4 +ADDRLP4 660+28 +ARGP4 +ADDRGP4 UI_PlayerAngles +CALLV +pop +line 745 +;743: +;744: // get the animation state (after rotation, to allow feet shuffle) +;745: UI_PlayerAnimation( pi, &legs.oldframe, &legs.frame, &legs.backlerp, +ADDRFP4 16 +INDIRP4 +ARGP4 +ADDRLP4 380+96 +ARGP4 +ADDRLP4 380+80 +ARGP4 +ADDRLP4 380+100 +ARGP4 +ADDRLP4 520+96 +ARGP4 +ADDRLP4 520+80 +ARGP4 +ADDRLP4 520+100 +ARGP4 +ADDRGP4 UI_PlayerAnimation +CALLV +pop +line 748 +;746: &torso.oldframe, &torso.frame, &torso.backlerp ); +;747: +;748: renderfx = RF_LIGHTING_ORIGIN | RF_NOSHADOW; +ADDRLP4 800 +CNSTI4 192 +ASGNI4 +line 753 +;749: +;750: // +;751: // add the legs +;752: // +;753: legs.hModel = pi->legsModel; +ADDRLP4 380+8 +ADDRFP4 16 +INDIRP4 +INDIRI4 +ASGNI4 +line 754 +;754: legs.customSkin = pi->legsSkin; +ADDRLP4 380+108 +ADDRFP4 16 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRI4 +ASGNI4 +line 756 +;755: +;756: VectorCopy( origin, legs.origin ); +ADDRLP4 380+68 +ADDRLP4 368 +INDIRB +ASGNB 12 +line 758 +;757: +;758: VectorCopy( origin, legs.lightingOrigin ); +ADDRLP4 380+12 +ADDRLP4 368 +INDIRB +ASGNB 12 +line 759 +;759: legs.renderfx = renderfx; +ADDRLP4 380+4 +ADDRLP4 800 +INDIRI4 +ASGNI4 +line 760 +;760: VectorCopy (legs.origin, legs.oldorigin); +ADDRLP4 380+84 +ADDRLP4 380+68 +INDIRB +ASGNB 12 +line 762 +;761: +;762: trap_R_AddRefEntityToScene( &legs ); +ADDRLP4 380 +ARGP4 +ADDRGP4 trap_R_AddRefEntityToScene +CALLV +pop +line 764 +;763: +;764: if (!legs.hModel) { +ADDRLP4 380+8 +INDIRI4 +CNSTI4 0 +NEI4 $361 +line 765 +;765: return; +ADDRGP4 $308 +JUMPV +LABELV $361 +line 771 +;766: } +;767: +;768: // +;769: // add the torso +;770: // +;771: torso.hModel = pi->torsoModel; +ADDRLP4 520+8 +ADDRFP4 16 +INDIRP4 +CNSTI4 56 +ADDP4 +INDIRI4 +ASGNI4 +line 772 +;772: if (!torso.hModel) { +ADDRLP4 520+8 +INDIRI4 +CNSTI4 0 +NEI4 $365 +line 773 +;773: return; +ADDRGP4 $308 +JUMPV +LABELV $365 +line 776 +;774: } +;775: +;776: torso.customSkin = pi->torsoSkin; +ADDRLP4 520+108 +ADDRFP4 16 +INDIRP4 +CNSTI4 60 +ADDP4 +INDIRI4 +ASGNI4 +line 778 +;777: +;778: VectorCopy( origin, torso.lightingOrigin ); +ADDRLP4 520+12 +ADDRLP4 368 +INDIRB +ASGNB 12 +line 780 +;779: +;780: UI_PositionRotatedEntityOnTag( &torso, &legs, pi->legsModel, "tag_torso"); +ADDRLP4 520 +ARGP4 +ADDRLP4 380 +ARGP4 +ADDRFP4 16 +INDIRP4 +INDIRI4 +ARGI4 +ADDRGP4 $370 +ARGP4 +ADDRGP4 UI_PositionRotatedEntityOnTag +CALLV +pop +line 782 +;781: +;782: torso.renderfx = renderfx; +ADDRLP4 520+4 +ADDRLP4 800 +INDIRI4 +ASGNI4 +line 784 +;783: +;784: trap_R_AddRefEntityToScene( &torso ); +ADDRLP4 520 +ARGP4 +ADDRGP4 trap_R_AddRefEntityToScene +CALLV +pop +line 789 +;785: +;786: // +;787: // add the head +;788: // +;789: head.hModel = pi->headModel; +ADDRLP4 660+8 +ADDRFP4 16 +INDIRP4 +CNSTI4 112 +ADDP4 +INDIRI4 +ASGNI4 +line 790 +;790: if (!head.hModel) { +ADDRLP4 660+8 +INDIRI4 +CNSTI4 0 +NEI4 $373 +line 791 +;791: return; +ADDRGP4 $308 +JUMPV +LABELV $373 +line 793 +;792: } +;793: head.customSkin = pi->headSkin; +ADDRLP4 660+108 +ADDRFP4 16 +INDIRP4 +CNSTI4 116 +ADDP4 +INDIRI4 +ASGNI4 +line 795 +;794: +;795: VectorCopy( origin, head.lightingOrigin ); +ADDRLP4 660+12 +ADDRLP4 368 +INDIRB +ASGNB 12 +line 797 +;796: +;797: UI_PositionRotatedEntityOnTag( &head, &torso, pi->torsoModel, "tag_head"); +ADDRLP4 660 +ARGP4 +ADDRLP4 520 +ARGP4 +ADDRFP4 16 +INDIRP4 +CNSTI4 56 +ADDP4 +INDIRI4 +ARGI4 +ADDRGP4 $378 +ARGP4 +ADDRGP4 UI_PositionRotatedEntityOnTag +CALLV +pop +line 799 +;798: +;799: head.renderfx = renderfx; +ADDRLP4 660+4 +ADDRLP4 800 +INDIRI4 +ASGNI4 +line 801 +;800: +;801: trap_R_AddRefEntityToScene( &head ); +ADDRLP4 660 +ARGP4 +ADDRGP4 trap_R_AddRefEntityToScene +CALLV +pop +line 806 +;802: +;803: // +;804: // add the gun +;805: // +;806: if ( pi->currentWeapon != WP_NONE ) { +ADDRFP4 16 +INDIRP4 +CNSTI4 1208 +ADDP4 +INDIRI4 +CNSTI4 0 +EQI4 $380 +line 807 +;807: memset( &gun, 0, sizeof(gun) ); +ADDRLP4 828 +ARGP4 +CNSTI4 0 +ARGI4 +CNSTI4 140 +ARGI4 +ADDRGP4 memset +CALLP4 +pop +line 808 +;808: gun.hModel = pi->weaponModel; +ADDRLP4 828+8 +ADDRFP4 16 +INDIRP4 +CNSTI4 1156 +ADDP4 +INDIRI4 +ASGNI4 +line 809 +;809: VectorCopy( origin, gun.lightingOrigin ); +ADDRLP4 828+12 +ADDRLP4 368 +INDIRB +ASGNB 12 +line 810 +;810: UI_PositionEntityOnTag( &gun, &torso, pi->torsoModel, "tag_weapon"); +ADDRLP4 828 +ARGP4 +ADDRLP4 520 +ARGP4 +ADDRFP4 16 +INDIRP4 +CNSTI4 56 +ADDP4 +INDIRI4 +ARGI4 +ADDRGP4 $384 +ARGP4 +ADDRGP4 UI_PositionEntityOnTag +CALLV +pop +line 811 +;811: gun.renderfx = renderfx; +ADDRLP4 828+4 +ADDRLP4 800 +INDIRI4 +ASGNI4 +line 812 +;812: trap_R_AddRefEntityToScene( &gun ); +ADDRLP4 828 +ARGP4 +ADDRGP4 trap_R_AddRefEntityToScene +CALLV +pop +line 813 +;813: } +LABELV $380 +line 846 +;814: +;815: // +;816: // add the spinning barrel +;817: // +;818: //Blaze: No spinning barrels in rq3 +;819: /* +;820: if ( pi->realWeapon == WP_MACHINEGUN || pi->realWeapon == WP_GAUNTLET || pi->realWeapon == WP_BFG ) { +;821: vec3_t angles; +;822: +;823: memset( &barrel, 0, sizeof(barrel) ); +;824: VectorCopy( origin, barrel.lightingOrigin ); +;825: barrel.renderfx = renderfx; +;826: +;827: barrel.hModel = pi->barrelModel; +;828: angles[YAW] = 0; +;829: angles[PITCH] = 0; +;830: angles[ROLL] = UI_MachinegunSpinAngle( pi ); +;831: if( pi->realWeapon == WP_GAUNTLET || pi->realWeapon == WP_BFG ) { +;832: angles[PITCH] = angles[ROLL]; +;833: angles[ROLL] = 0; +;834: } +;835: AnglesToAxis( angles, barrel.axis ); +;836: +;837: UI_PositionRotatedEntityOnTag( &barrel, &gun, pi->weaponModel, "tag_barrel"); +;838: +;839: trap_R_AddRefEntityToScene( &barrel ); +;840: } +;841: */ +;842: +;843: // +;844: // add muzzle flash +;845: // +;846: if ( dp_realtime <= pi->muzzleFlashTime ) { +ADDRGP4 dp_realtime +INDIRI4 +ADDRFP4 16 +INDIRP4 +CNSTI4 1180 +ADDP4 +INDIRI4 +GTI4 $386 +line 847 +;847: if ( pi->flashModel ) { +ADDRFP4 16 +INDIRP4 +CNSTI4 1164 +ADDP4 +INDIRI4 +CNSTI4 0 +EQI4 $388 +line 848 +;848: memset( &flash, 0, sizeof(flash) ); +ADDRLP4 968 +ARGP4 +CNSTI4 0 +ARGI4 +CNSTI4 140 +ARGI4 +ADDRGP4 memset +CALLP4 +pop +line 849 +;849: flash.hModel = pi->flashModel; +ADDRLP4 968+8 +ADDRFP4 16 +INDIRP4 +CNSTI4 1164 +ADDP4 +INDIRI4 +ASGNI4 +line 850 +;850: VectorCopy( origin, flash.lightingOrigin ); +ADDRLP4 968+12 +ADDRLP4 368 +INDIRB +ASGNB 12 +line 851 +;851: UI_PositionEntityOnTag( &flash, &gun, pi->weaponModel, "tag_flash"); +ADDRLP4 968 +ARGP4 +ADDRLP4 828 +ARGP4 +ADDRFP4 16 +INDIRP4 +CNSTI4 1156 +ADDP4 +INDIRI4 +ARGI4 +ADDRGP4 $392 +ARGP4 +ADDRGP4 UI_PositionEntityOnTag +CALLV +pop +line 852 +;852: flash.renderfx = renderfx; +ADDRLP4 968+4 +ADDRLP4 800 +INDIRI4 +ASGNI4 +line 853 +;853: trap_R_AddRefEntityToScene( &flash ); +ADDRLP4 968 +ARGP4 +ADDRGP4 trap_R_AddRefEntityToScene +CALLV +pop +line 854 +;854: } +LABELV $388 +line 857 +;855: +;856: // make a dlight for the flash +;857: if ( pi->flashDlightColor[0] || pi->flashDlightColor[1] || pi->flashDlightColor[2] ) { +ADDRLP4 1284 +ADDRFP4 16 +INDIRP4 +ASGNP4 +ADDRLP4 1288 +CNSTF4 0 +ASGNF4 +ADDRLP4 1284 +INDIRP4 +CNSTI4 1168 +ADDP4 +INDIRF4 +ADDRLP4 1288 +INDIRF4 +NEF4 $397 +ADDRLP4 1284 +INDIRP4 +CNSTI4 1172 +ADDP4 +INDIRF4 +ADDRLP4 1288 +INDIRF4 +NEF4 $397 +ADDRLP4 1284 +INDIRP4 +CNSTI4 1176 +ADDP4 +INDIRF4 +ADDRLP4 1288 +INDIRF4 +EQF4 $394 +LABELV $397 +line 858 +;858: trap_R_AddLightToScene( flash.origin, 200 + (rand()&31), pi->flashDlightColor[0], +ADDRLP4 1292 +ADDRGP4 rand +CALLI4 +ASGNI4 +ADDRLP4 968+68 +ARGP4 +ADDRLP4 1292 +INDIRI4 +CNSTI4 31 +BANDI4 +CNSTI4 200 +ADDI4 +CVIF4 4 +ARGF4 +ADDRLP4 1296 +ADDRFP4 16 +INDIRP4 +ASGNP4 +ADDRLP4 1296 +INDIRP4 +CNSTI4 1168 +ADDP4 +INDIRF4 +ARGF4 +ADDRLP4 1296 +INDIRP4 +CNSTI4 1172 +ADDP4 +INDIRF4 +ARGF4 +ADDRLP4 1296 +INDIRP4 +CNSTI4 1176 +ADDP4 +INDIRF4 +ARGF4 +ADDRGP4 trap_R_AddLightToScene +CALLV +pop +line 860 +;859: pi->flashDlightColor[1], pi->flashDlightColor[2] ); +;860: } +LABELV $394 +line 861 +;861: } +LABELV $386 +line 866 +;862: +;863: // +;864: // add the chat icon +;865: // +;866: if ( pi->chat ) { +ADDRFP4 16 +INDIRP4 +CNSTI4 1252 +ADDP4 +INDIRI4 +CNSTI4 0 +EQI4 $399 +line 867 +;867: UI_PlayerFloatSprite( pi, origin, trap_R_RegisterShaderNoMip( "sprites/balloon3" ) ); +ADDRGP4 $401 +ARGP4 +ADDRLP4 1284 +ADDRGP4 trap_R_RegisterShaderNoMip +CALLI4 +ASGNI4 +ADDRFP4 16 +INDIRP4 +ARGP4 +ADDRLP4 368 +ARGP4 +ADDRLP4 1284 +INDIRI4 +ARGI4 +ADDRGP4 UI_PlayerFloatSprite +CALLV +pop +line 868 +;868: } +LABELV $399 +line 873 +;869: +;870: // +;871: // add an accent light +;872: // +;873: origin[0] -= 100; // + = behind, - = in front +ADDRLP4 368 +ADDRLP4 368 +INDIRF4 +CNSTF4 1120403456 +SUBF4 +ASGNF4 +line 874 +;874: origin[1] += 100; // + = left, - = right +ADDRLP4 368+4 +ADDRLP4 368+4 +INDIRF4 +CNSTF4 1120403456 +ADDF4 +ASGNF4 +line 875 +;875: origin[2] += 100; // + = above, - = below +ADDRLP4 368+8 +ADDRLP4 368+8 +INDIRF4 +CNSTF4 1120403456 +ADDF4 +ASGNF4 +line 876 +;876: trap_R_AddLightToScene( origin, 500, 1.0, 1.0, 1.0 ); +ADDRLP4 368 +ARGP4 +CNSTF4 1140457472 +ARGF4 +ADDRLP4 1284 +CNSTF4 1065353216 +ASGNF4 +ADDRLP4 1284 +INDIRF4 +ARGF4 +ADDRLP4 1284 +INDIRF4 +ARGF4 +ADDRLP4 1284 +INDIRF4 +ARGF4 +ADDRGP4 trap_R_AddLightToScene +CALLV +pop +line 878 +;877: +;878: origin[0] -= 100; +ADDRLP4 368 +ADDRLP4 368 +INDIRF4 +CNSTF4 1120403456 +SUBF4 +ASGNF4 +line 879 +;879: origin[1] -= 100; +ADDRLP4 368+4 +ADDRLP4 368+4 +INDIRF4 +CNSTF4 1120403456 +SUBF4 +ASGNF4 +line 880 +;880: origin[2] -= 100; +ADDRLP4 368+8 +ADDRLP4 368+8 +INDIRF4 +CNSTF4 1120403456 +SUBF4 +ASGNF4 +line 881 +;881: trap_R_AddLightToScene( origin, 500, 1.0, 0.0, 0.0 ); +ADDRLP4 368 +ARGP4 +CNSTF4 1140457472 +ARGF4 +CNSTF4 1065353216 +ARGF4 +ADDRLP4 1288 +CNSTF4 0 +ASGNF4 +ADDRLP4 1288 +INDIRF4 +ARGF4 +ADDRLP4 1288 +INDIRF4 +ARGF4 +ADDRGP4 trap_R_AddLightToScene +CALLV +pop +line 883 +;882: +;883: trap_R_RenderScene( &refdef ); +ADDRLP4 0 +ARGP4 +ADDRGP4 trap_R_RenderScene +CALLV +pop +line 884 +;884:} +LABELV $308 +endproc UI_DrawPlayer 1300 28 +proc UI_FileExists 8 12 +line 891 +;885: +;886:/* +;887:========================== +;888:UI_FileExists +;889:========================== +;890:*/ +;891:static qboolean UI_FileExists(const char *filename) { +line 894 +;892: int len; +;893: +;894: len = trap_FS_FOpenFile( filename, 0, FS_READ ); +ADDRFP4 0 +INDIRP4 +ARGP4 +CNSTP4 0 +ARGP4 +CNSTI4 0 +ARGI4 +ADDRLP4 4 +ADDRGP4 trap_FS_FOpenFile +CALLI4 +ASGNI4 +ADDRLP4 0 +ADDRLP4 4 +INDIRI4 +ASGNI4 +line 895 +;895: if (len>0) { +ADDRLP4 0 +INDIRI4 +CNSTI4 0 +LEI4 $407 +line 896 +;896: return qtrue; +CNSTI4 1 +RETI4 +ADDRGP4 $406 +JUMPV +LABELV $407 +line 898 +;897: } +;898: return qfalse; +CNSTI4 0 +RETI4 +LABELV $406 +endproc UI_FileExists 8 12 +proc UI_FindClientHeadFile 40 40 +line 906 +;899:} +;900: +;901:/* +;902:========================== +;903:UI_FindClientHeadFile +;904:========================== +;905:*/ +;906:static qboolean UI_FindClientHeadFile( char *filename, int length, const char *teamName, const char *headModelName, const char *headSkinName, const char *base, const char *ext ) { +line 910 +;907: char *team, *headsFolder; +;908: int i; +;909: +;910: team = "default"; +ADDRLP4 8 +ADDRGP4 $410 +ASGNP4 +line 912 +;911: +;912: if ( headModelName[0] == '*' ) { +ADDRFP4 12 +INDIRP4 +INDIRI1 +CVII4 1 +CNSTI4 42 +NEI4 $411 +line 913 +;913: headsFolder = "heads/"; +ADDRLP4 4 +ADDRGP4 $413 +ASGNP4 +line 914 +;914: headModelName++; +ADDRFP4 12 +ADDRFP4 12 +INDIRP4 +CNSTI4 1 +ADDP4 +ASGNP4 +line 915 +;915: } +ADDRGP4 $416 +JUMPV +LABELV $411 +line 916 +;916: else { +line 917 +;917: headsFolder = ""; +ADDRLP4 4 +ADDRGP4 $414 +ASGNP4 +line 918 +;918: } +ADDRGP4 $416 +JUMPV +LABELV $415 +line 919 +;919: while(1) { +line 920 +;920: for ( i = 0; i < 2; i++ ) { +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +LABELV $418 +line 921 +;921: if ( i == 0 && teamName && *teamName ) { +ADDRLP4 12 +CNSTI4 0 +ASGNI4 +ADDRLP4 0 +INDIRI4 +ADDRLP4 12 +INDIRI4 +NEI4 $422 +ADDRLP4 16 +ADDRFP4 8 +INDIRP4 +ASGNP4 +ADDRLP4 16 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $422 +ADDRLP4 16 +INDIRP4 +INDIRI1 +CVII4 1 +ADDRLP4 12 +INDIRI4 +EQI4 $422 +line 922 +;922: Com_sprintf( filename, length, "models/players/%s%s/%s/%s%s_%s.%s", headsFolder, headModelName, headSkinName, teamName, base, team, ext ); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRFP4 4 +INDIRI4 +ARGI4 +ADDRGP4 $424 +ARGP4 +ADDRLP4 4 +INDIRP4 +ARGP4 +ADDRFP4 12 +INDIRP4 +ARGP4 +ADDRFP4 16 +INDIRP4 +ARGP4 +ADDRFP4 8 +INDIRP4 +ARGP4 +ADDRFP4 20 +INDIRP4 +ARGP4 +ADDRLP4 8 +INDIRP4 +ARGP4 +ADDRFP4 24 +INDIRP4 +ARGP4 +ADDRGP4 Com_sprintf +CALLV +pop +line 923 +;923: } +ADDRGP4 $423 +JUMPV +LABELV $422 +line 924 +;924: else { +line 925 +;925: Com_sprintf( filename, length, "models/players/%s%s/%s/%s_%s.%s", headsFolder, headModelName, headSkinName, base, team, ext ); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRFP4 4 +INDIRI4 +ARGI4 +ADDRGP4 $425 +ARGP4 +ADDRLP4 4 +INDIRP4 +ARGP4 +ADDRFP4 12 +INDIRP4 +ARGP4 +ADDRFP4 16 +INDIRP4 +ARGP4 +ADDRFP4 20 +INDIRP4 +ARGP4 +ADDRLP4 8 +INDIRP4 +ARGP4 +ADDRFP4 24 +INDIRP4 +ARGP4 +ADDRGP4 Com_sprintf +CALLV +pop +line 926 +;926: } +LABELV $423 +line 927 +;927: if ( UI_FileExists( filename ) ) { +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRLP4 20 +ADDRGP4 UI_FileExists +CALLI4 +ASGNI4 +ADDRLP4 20 +INDIRI4 +CNSTI4 0 +EQI4 $426 +line 928 +;928: return qtrue; +CNSTI4 1 +RETI4 +ADDRGP4 $409 +JUMPV +LABELV $426 +line 930 +;929: } +;930: if ( i == 0 && teamName && *teamName ) { +ADDRLP4 24 +CNSTI4 0 +ASGNI4 +ADDRLP4 0 +INDIRI4 +ADDRLP4 24 +INDIRI4 +NEI4 $428 +ADDRLP4 28 +ADDRFP4 8 +INDIRP4 +ASGNP4 +ADDRLP4 28 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $428 +ADDRLP4 28 +INDIRP4 +INDIRI1 +CVII4 1 +ADDRLP4 24 +INDIRI4 +EQI4 $428 +line 931 +;931: Com_sprintf( filename, length, "models/players/%s%s/%s%s_%s.%s", headsFolder, headModelName, teamName, base, headSkinName, ext ); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRFP4 4 +INDIRI4 +ARGI4 +ADDRGP4 $430 +ARGP4 +ADDRLP4 4 +INDIRP4 +ARGP4 +ADDRFP4 12 +INDIRP4 +ARGP4 +ADDRFP4 8 +INDIRP4 +ARGP4 +ADDRFP4 20 +INDIRP4 +ARGP4 +ADDRFP4 16 +INDIRP4 +ARGP4 +ADDRFP4 24 +INDIRP4 +ARGP4 +ADDRGP4 Com_sprintf +CALLV +pop +line 932 +;932: } +ADDRGP4 $429 +JUMPV +LABELV $428 +line 933 +;933: else { +line 934 +;934: Com_sprintf( filename, length, "models/players/%s%s/%s_%s.%s", headsFolder, headModelName, base, headSkinName, ext ); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRFP4 4 +INDIRI4 +ARGI4 +ADDRGP4 $431 +ARGP4 +ADDRLP4 4 +INDIRP4 +ARGP4 +ADDRFP4 12 +INDIRP4 +ARGP4 +ADDRFP4 20 +INDIRP4 +ARGP4 +ADDRFP4 16 +INDIRP4 +ARGP4 +ADDRFP4 24 +INDIRP4 +ARGP4 +ADDRGP4 Com_sprintf +CALLV +pop +line 935 +;935: } +LABELV $429 +line 936 +;936: if ( UI_FileExists( filename ) ) { +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRLP4 32 +ADDRGP4 UI_FileExists +CALLI4 +ASGNI4 +ADDRLP4 32 +INDIRI4 +CNSTI4 0 +EQI4 $432 +line 937 +;937: return qtrue; +CNSTI4 1 +RETI4 +ADDRGP4 $409 +JUMPV +LABELV $432 +line 939 +;938: } +;939: if ( !teamName || !*teamName ) { +ADDRLP4 36 +ADDRFP4 8 +INDIRP4 +ASGNP4 +ADDRLP4 36 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $436 +ADDRLP4 36 +INDIRP4 +INDIRI1 +CVII4 1 +CNSTI4 0 +NEI4 $434 +LABELV $436 +line 940 +;940: break; +ADDRGP4 $420 +JUMPV +LABELV $434 +line 942 +;941: } +;942: } +LABELV $419 +line 920 +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LTI4 $418 +LABELV $420 +line 944 +;943: // if tried the heads folder first +;944: if ( headsFolder[0] ) { +ADDRLP4 4 +INDIRP4 +INDIRI1 +CVII4 1 +CNSTI4 0 +EQI4 $437 +line 945 +;945: break; +ADDRGP4 $417 +JUMPV +LABELV $437 +line 947 +;946: } +;947: headsFolder = "heads/"; +ADDRLP4 4 +ADDRGP4 $413 +ASGNP4 +line 948 +;948: } +LABELV $416 +line 919 +ADDRGP4 $415 +JUMPV +LABELV $417 +line 950 +;949: +;950: return qfalse; +CNSTI4 0 +RETI4 +LABELV $409 +endproc UI_FindClientHeadFile 40 40 +proc UI_RegisterClientSkin 156 28 +line 958 +;951:} +;952: +;953:/* +;954:========================== +;955:UI_RegisterClientSkin +;956:========================== +;957:*/ +;958:static qboolean UI_RegisterClientSkin( playerInfo_t *pi, const char *modelName, const char *skinName, const char *headModelName, const char *headSkinName , const char *teamName) { +line 961 +;959: char filename[MAX_QPATH*2]; +;960: +;961: if (teamName && *teamName) { +ADDRLP4 128 +ADDRFP4 20 +INDIRP4 +ASGNP4 +ADDRLP4 128 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $440 +ADDRLP4 128 +INDIRP4 +INDIRI1 +CVII4 1 +CNSTI4 0 +EQI4 $440 +line 962 +;962: Com_sprintf( filename, sizeof( filename ), "models/players/%s/%s/lower_%s.skin", modelName, teamName, skinName ); +ADDRLP4 0 +ARGP4 +CNSTI4 128 +ARGI4 +ADDRGP4 $442 +ARGP4 +ADDRFP4 4 +INDIRP4 +ARGP4 +ADDRFP4 20 +INDIRP4 +ARGP4 +ADDRFP4 8 +INDIRP4 +ARGP4 +ADDRGP4 Com_sprintf +CALLV +pop +line 963 +;963: } else { +ADDRGP4 $441 +JUMPV +LABELV $440 +line 964 +;964: Com_sprintf( filename, sizeof( filename ), "models/players/%s/lower_%s.skin", modelName, skinName ); +ADDRLP4 0 +ARGP4 +CNSTI4 128 +ARGI4 +ADDRGP4 $443 +ARGP4 +ADDRFP4 4 +INDIRP4 +ARGP4 +ADDRFP4 8 +INDIRP4 +ARGP4 +ADDRGP4 Com_sprintf +CALLV +pop +line 965 +;965: } +LABELV $441 +line 966 +;966: pi->legsSkin = trap_R_RegisterSkin( filename ); +ADDRLP4 0 +ARGP4 +ADDRLP4 132 +ADDRGP4 trap_R_RegisterSkin +CALLI4 +ASGNI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 4 +ADDP4 +ADDRLP4 132 +INDIRI4 +ASGNI4 +line 967 +;967: if (!pi->legsSkin) { +ADDRFP4 0 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRI4 +CNSTI4 0 +NEI4 $444 +line 968 +;968: if (teamName && *teamName) { +ADDRLP4 136 +ADDRFP4 20 +INDIRP4 +ASGNP4 +ADDRLP4 136 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $446 +ADDRLP4 136 +INDIRP4 +INDIRI1 +CVII4 1 +CNSTI4 0 +EQI4 $446 +line 969 +;969: Com_sprintf( filename, sizeof( filename ), "models/players/characters/%s/%s/lower_%s.skin", modelName, teamName, skinName ); +ADDRLP4 0 +ARGP4 +CNSTI4 128 +ARGI4 +ADDRGP4 $448 +ARGP4 +ADDRFP4 4 +INDIRP4 +ARGP4 +ADDRFP4 20 +INDIRP4 +ARGP4 +ADDRFP4 8 +INDIRP4 +ARGP4 +ADDRGP4 Com_sprintf +CALLV +pop +line 970 +;970: } else { +ADDRGP4 $447 +JUMPV +LABELV $446 +line 971 +;971: Com_sprintf( filename, sizeof( filename ), "models/players/characters/%s/lower_%s.skin", modelName, skinName ); +ADDRLP4 0 +ARGP4 +CNSTI4 128 +ARGI4 +ADDRGP4 $449 +ARGP4 +ADDRFP4 4 +INDIRP4 +ARGP4 +ADDRFP4 8 +INDIRP4 +ARGP4 +ADDRGP4 Com_sprintf +CALLV +pop +line 972 +;972: } +LABELV $447 +line 973 +;973: pi->legsSkin = trap_R_RegisterSkin( filename ); +ADDRLP4 0 +ARGP4 +ADDRLP4 140 +ADDRGP4 trap_R_RegisterSkin +CALLI4 +ASGNI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 4 +ADDP4 +ADDRLP4 140 +INDIRI4 +ASGNI4 +line 974 +;974: } +LABELV $444 +line 976 +;975: +;976: if (teamName && *teamName) { +ADDRLP4 136 +ADDRFP4 20 +INDIRP4 +ASGNP4 +ADDRLP4 136 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $450 +ADDRLP4 136 +INDIRP4 +INDIRI1 +CVII4 1 +CNSTI4 0 +EQI4 $450 +line 977 +;977: Com_sprintf( filename, sizeof( filename ), "models/players/%s/%s/upper_%s.skin", modelName, teamName, skinName ); +ADDRLP4 0 +ARGP4 +CNSTI4 128 +ARGI4 +ADDRGP4 $452 +ARGP4 +ADDRFP4 4 +INDIRP4 +ARGP4 +ADDRFP4 20 +INDIRP4 +ARGP4 +ADDRFP4 8 +INDIRP4 +ARGP4 +ADDRGP4 Com_sprintf +CALLV +pop +line 978 +;978: } else { +ADDRGP4 $451 +JUMPV +LABELV $450 +line 979 +;979: Com_sprintf( filename, sizeof( filename ), "models/players/%s/upper_%s.skin", modelName, skinName ); +ADDRLP4 0 +ARGP4 +CNSTI4 128 +ARGI4 +ADDRGP4 $453 +ARGP4 +ADDRFP4 4 +INDIRP4 +ARGP4 +ADDRFP4 8 +INDIRP4 +ARGP4 +ADDRGP4 Com_sprintf +CALLV +pop +line 980 +;980: } +LABELV $451 +line 981 +;981: pi->torsoSkin = trap_R_RegisterSkin( filename ); +ADDRLP4 0 +ARGP4 +ADDRLP4 140 +ADDRGP4 trap_R_RegisterSkin +CALLI4 +ASGNI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 60 +ADDP4 +ADDRLP4 140 +INDIRI4 +ASGNI4 +line 982 +;982: if (!pi->torsoSkin) { +ADDRFP4 0 +INDIRP4 +CNSTI4 60 +ADDP4 +INDIRI4 +CNSTI4 0 +NEI4 $454 +line 983 +;983: if (teamName && *teamName) { +ADDRLP4 144 +ADDRFP4 20 +INDIRP4 +ASGNP4 +ADDRLP4 144 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $456 +ADDRLP4 144 +INDIRP4 +INDIRI1 +CVII4 1 +CNSTI4 0 +EQI4 $456 +line 984 +;984: Com_sprintf( filename, sizeof( filename ), "models/players/characters/%s/%s/upper_%s.skin", modelName, teamName, skinName ); +ADDRLP4 0 +ARGP4 +CNSTI4 128 +ARGI4 +ADDRGP4 $458 +ARGP4 +ADDRFP4 4 +INDIRP4 +ARGP4 +ADDRFP4 20 +INDIRP4 +ARGP4 +ADDRFP4 8 +INDIRP4 +ARGP4 +ADDRGP4 Com_sprintf +CALLV +pop +line 985 +;985: } else { +ADDRGP4 $457 +JUMPV +LABELV $456 +line 986 +;986: Com_sprintf( filename, sizeof( filename ), "models/players/characters/%s/upper_%s.skin", modelName, skinName ); +ADDRLP4 0 +ARGP4 +CNSTI4 128 +ARGI4 +ADDRGP4 $459 +ARGP4 +ADDRFP4 4 +INDIRP4 +ARGP4 +ADDRFP4 8 +INDIRP4 +ARGP4 +ADDRGP4 Com_sprintf +CALLV +pop +line 987 +;987: } +LABELV $457 +line 988 +;988: pi->torsoSkin = trap_R_RegisterSkin( filename ); +ADDRLP4 0 +ARGP4 +ADDRLP4 148 +ADDRGP4 trap_R_RegisterSkin +CALLI4 +ASGNI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 60 +ADDP4 +ADDRLP4 148 +INDIRI4 +ASGNI4 +line 989 +;989: } +LABELV $454 +line 991 +;990: +;991: if ( UI_FindClientHeadFile( filename, sizeof(filename), teamName, headModelName, headSkinName, "head", "skin" ) ) { +ADDRLP4 0 +ARGP4 +CNSTI4 128 +ARGI4 +ADDRFP4 20 +INDIRP4 +ARGP4 +ADDRFP4 12 +INDIRP4 +ARGP4 +ADDRFP4 16 +INDIRP4 +ARGP4 +ADDRGP4 $462 +ARGP4 +ADDRGP4 $463 +ARGP4 +ADDRLP4 144 +ADDRGP4 UI_FindClientHeadFile +CALLI4 +ASGNI4 +ADDRLP4 144 +INDIRI4 +CNSTI4 0 +EQI4 $460 +line 992 +;992: pi->headSkin = trap_R_RegisterSkin( filename ); +ADDRLP4 0 +ARGP4 +ADDRLP4 148 +ADDRGP4 trap_R_RegisterSkin +CALLI4 +ASGNI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 116 +ADDP4 +ADDRLP4 148 +INDIRI4 +ASGNI4 +line 993 +;993: } +LABELV $460 +line 995 +;994: +;995: if ( !pi->legsSkin || !pi->torsoSkin || !pi->headSkin ) { +ADDRLP4 148 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 152 +CNSTI4 0 +ASGNI4 +ADDRLP4 148 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRI4 +ADDRLP4 152 +INDIRI4 +EQI4 $467 +ADDRLP4 148 +INDIRP4 +CNSTI4 60 +ADDP4 +INDIRI4 +ADDRLP4 152 +INDIRI4 +EQI4 $467 +ADDRLP4 148 +INDIRP4 +CNSTI4 116 +ADDP4 +INDIRI4 +ADDRLP4 152 +INDIRI4 +NEI4 $464 +LABELV $467 +line 996 +;996: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $439 +JUMPV +LABELV $464 +line 999 +;997: } +;998: +;999: return qtrue; +CNSTI4 1 +RETI4 +LABELV $439 +endproc UI_RegisterClientSkin 156 28 +proc UI_ParseAnimationFile 20068 12 +line 1008 +;1000:} +;1001: +;1002: +;1003:/* +;1004:====================== +;1005:UI_ParseAnimationFile +;1006:====================== +;1007:*/ +;1008:static qboolean UI_ParseAnimationFile( const char *filename, animation_t *animations ) { +line 1018 +;1009: char *text_p, *prev; +;1010: int len; +;1011: int i; +;1012: char *token; +;1013: float fps; +;1014: int skip; +;1015: char text[20000]; +;1016: fileHandle_t f; +;1017: +;1018: memset( animations, 0, sizeof( animation_t ) * MAX_ANIMATIONS ); +ADDRFP4 4 +INDIRP4 +ARGP4 +CNSTI4 0 +ARGI4 +CNSTI4 868 +ARGI4 +ADDRGP4 memset +CALLP4 +pop +line 1021 +;1019: +;1020: // load the file +;1021: len = trap_FS_FOpenFile( filename, &f, FS_READ ); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRLP4 20028 +ARGP4 +CNSTI4 0 +ARGI4 +ADDRLP4 20032 +ADDRGP4 trap_FS_FOpenFile +CALLI4 +ASGNI4 +ADDRLP4 24 +ADDRLP4 20032 +INDIRI4 +ASGNI4 +line 1022 +;1022: if ( len <= 0 ) { +ADDRLP4 24 +INDIRI4 +CNSTI4 0 +GTI4 $469 +line 1023 +;1023: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $468 +JUMPV +LABELV $469 +line 1025 +;1024: } +;1025: if ( len >= ( sizeof( text ) - 1 ) ) { +ADDRLP4 24 +INDIRI4 +CVIU4 4 +CNSTU4 19999 +LTU4 $471 +line 1026 +;1026: Com_Printf( "File %s too long\n", filename ); +ADDRGP4 $473 +ARGP4 +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRGP4 Com_Printf +CALLV +pop +line 1027 +;1027: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $468 +JUMPV +LABELV $471 +line 1029 +;1028: } +;1029: trap_FS_Read( text, len, f ); +ADDRLP4 28 +ARGP4 +ADDRLP4 24 +INDIRI4 +ARGI4 +ADDRLP4 20028 +INDIRI4 +ARGI4 +ADDRGP4 trap_FS_Read +CALLV +pop +line 1030 +;1030: text[len] = 0; +ADDRLP4 24 +INDIRI4 +ADDRLP4 28 +ADDP4 +CNSTI1 0 +ASGNI1 +line 1031 +;1031: trap_FS_FCloseFile( f ); +ADDRLP4 20028 +INDIRI4 +ARGI4 +ADDRGP4 trap_FS_FCloseFile +CALLV +pop +line 1033 +;1032: +;1033: COM_Compress(text); +ADDRLP4 28 +ARGP4 +ADDRGP4 COM_Compress +CALLI4 +pop +line 1036 +;1034: +;1035: // parse the text +;1036: text_p = text; +ADDRLP4 8 +ADDRLP4 28 +ASGNP4 +line 1037 +;1037: skip = 0; // quite the compiler warning +ADDRLP4 20 +CNSTI4 0 +ASGNI4 +ADDRGP4 $475 +JUMPV +LABELV $474 +line 1040 +;1038: +;1039: // read optional parameters +;1040: while ( 1 ) { +line 1041 +;1041: prev = text_p; // so we can unget +ADDRLP4 16 +ADDRLP4 8 +INDIRP4 +ASGNP4 +line 1042 +;1042: token = COM_Parse( &text_p ); +ADDRLP4 8 +ARGP4 +ADDRLP4 20036 +ADDRGP4 COM_Parse +CALLP4 +ASGNP4 +ADDRLP4 0 +ADDRLP4 20036 +INDIRP4 +ASGNP4 +line 1043 +;1043: if ( !token ) { +ADDRLP4 0 +INDIRP4 +CVPU4 4 +CNSTU4 0 +NEU4 $477 +line 1044 +;1044: break; +ADDRGP4 $476 +JUMPV +LABELV $477 +line 1046 +;1045: } +;1046: if ( !Q_stricmp( token, "footsteps" ) ) { +ADDRLP4 0 +INDIRP4 +ARGP4 +ADDRGP4 $481 +ARGP4 +ADDRLP4 20040 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 20040 +INDIRI4 +CNSTI4 0 +NEI4 $479 +line 1047 +;1047: token = COM_Parse( &text_p ); +ADDRLP4 8 +ARGP4 +ADDRLP4 20044 +ADDRGP4 COM_Parse +CALLP4 +ASGNP4 +ADDRLP4 0 +ADDRLP4 20044 +INDIRP4 +ASGNP4 +line 1048 +;1048: if ( !token ) { +ADDRLP4 0 +INDIRP4 +CVPU4 4 +CNSTU4 0 +NEU4 $475 +line 1049 +;1049: break; +ADDRGP4 $476 +JUMPV +line 1051 +;1050: } +;1051: continue; +LABELV $479 +line 1052 +;1052: } else if ( !Q_stricmp( token, "headoffset" ) ) { +ADDRLP4 0 +INDIRP4 +ARGP4 +ADDRGP4 $486 +ARGP4 +ADDRLP4 20044 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 20044 +INDIRI4 +CNSTI4 0 +NEI4 $484 +line 1053 +;1053: for ( i = 0 ; i < 3 ; i++ ) { +ADDRLP4 4 +CNSTI4 0 +ASGNI4 +LABELV $487 +line 1054 +;1054: token = COM_Parse( &text_p ); +ADDRLP4 8 +ARGP4 +ADDRLP4 20048 +ADDRGP4 COM_Parse +CALLP4 +ASGNP4 +ADDRLP4 0 +ADDRLP4 20048 +INDIRP4 +ASGNP4 +line 1055 +;1055: if ( !token ) { +ADDRLP4 0 +INDIRP4 +CVPU4 4 +CNSTU4 0 +NEU4 $491 +line 1056 +;1056: break; +ADDRGP4 $475 +JUMPV +LABELV $491 +line 1058 +;1057: } +;1058: } +LABELV $488 +line 1053 +ADDRLP4 4 +ADDRLP4 4 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +ADDRLP4 4 +INDIRI4 +CNSTI4 3 +LTI4 $487 +line 1059 +;1059: continue; +ADDRGP4 $475 +JUMPV +LABELV $484 +line 1060 +;1060: } else if ( !Q_stricmp( token, "sex" ) ) { +ADDRLP4 0 +INDIRP4 +ARGP4 +ADDRGP4 $495 +ARGP4 +ADDRLP4 20048 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 20048 +INDIRI4 +CNSTI4 0 +NEI4 $493 +line 1061 +;1061: token = COM_Parse( &text_p ); +ADDRLP4 8 +ARGP4 +ADDRLP4 20052 +ADDRGP4 COM_Parse +CALLP4 +ASGNP4 +ADDRLP4 0 +ADDRLP4 20052 +INDIRP4 +ASGNP4 +line 1062 +;1062: if ( !token ) { +ADDRLP4 0 +INDIRP4 +CVPU4 4 +CNSTU4 0 +NEU4 $475 +line 1063 +;1063: break; +ADDRGP4 $476 +JUMPV +line 1065 +;1064: } +;1065: continue; +LABELV $493 +line 1069 +;1066: } +;1067: +;1068: // if it is a number, start parsing animations +;1069: if ( token[0] >= '0' && token[0] <= '9' ) { +ADDRLP4 20052 +ADDRLP4 0 +INDIRP4 +INDIRI1 +CVII4 1 +ASGNI4 +ADDRLP4 20052 +INDIRI4 +CNSTI4 48 +LTI4 $498 +ADDRLP4 20052 +INDIRI4 +CNSTI4 57 +GTI4 $498 +line 1070 +;1070: text_p = prev; // unget the token +ADDRLP4 8 +ADDRLP4 16 +INDIRP4 +ASGNP4 +line 1071 +;1071: break; +ADDRGP4 $476 +JUMPV +LABELV $498 +line 1074 +;1072: } +;1073: +;1074: Com_Printf( "unknown token '%s' is %s\n", token, filename ); +ADDRGP4 $500 +ARGP4 +ADDRLP4 0 +INDIRP4 +ARGP4 +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRGP4 Com_Printf +CALLV +pop +line 1075 +;1075: } +LABELV $475 +line 1040 +ADDRGP4 $474 +JUMPV +LABELV $476 +line 1078 +;1076: +;1077: // read information for each frame +;1078: for ( i = 0 ; i < MAX_ANIMATIONS ; i++ ) { +ADDRLP4 4 +CNSTI4 0 +ASGNI4 +LABELV $501 +line 1080 +;1079: +;1080: token = COM_Parse( &text_p ); +ADDRLP4 8 +ARGP4 +ADDRLP4 20036 +ADDRGP4 COM_Parse +CALLP4 +ASGNP4 +ADDRLP4 0 +ADDRLP4 20036 +INDIRP4 +ASGNP4 +line 1081 +;1081: if ( !token ) { +ADDRLP4 0 +INDIRP4 +CVPU4 4 +CNSTU4 0 +NEU4 $505 +line 1082 +;1082: break; +ADDRGP4 $503 +JUMPV +LABELV $505 +line 1084 +;1083: } +;1084: animations[i].firstFrame = atoi( token ); +ADDRLP4 0 +INDIRP4 +ARGP4 +ADDRLP4 20040 +ADDRGP4 atoi +CALLI4 +ASGNI4 +CNSTI4 28 +ADDRLP4 4 +INDIRI4 +MULI4 +ADDRFP4 4 +INDIRP4 +ADDP4 +ADDRLP4 20040 +INDIRI4 +ASGNI4 +line 1086 +;1085: // leg only frames are adjusted to not count the upper body only frames +;1086: if ( i == LEGS_WALKCR ) { +ADDRLP4 4 +INDIRI4 +CNSTI4 13 +NEI4 $507 +line 1087 +;1087: skip = animations[LEGS_WALKCR].firstFrame - animations[TORSO_GESTURE].firstFrame; +ADDRLP4 20044 +ADDRFP4 4 +INDIRP4 +ASGNP4 +ADDRLP4 20 +ADDRLP4 20044 +INDIRP4 +CNSTI4 364 +ADDP4 +INDIRI4 +ADDRLP4 20044 +INDIRP4 +CNSTI4 168 +ADDP4 +INDIRI4 +SUBI4 +ASGNI4 +line 1088 +;1088: } +LABELV $507 +line 1089 +;1089: if ( i >= LEGS_WALKCR ) { +ADDRLP4 4 +INDIRI4 +CNSTI4 13 +LTI4 $509 +line 1090 +;1090: animations[i].firstFrame -= skip; +ADDRLP4 20044 +CNSTI4 28 +ADDRLP4 4 +INDIRI4 +MULI4 +ADDRFP4 4 +INDIRP4 +ADDP4 +ASGNP4 +ADDRLP4 20044 +INDIRP4 +ADDRLP4 20044 +INDIRP4 +INDIRI4 +ADDRLP4 20 +INDIRI4 +SUBI4 +ASGNI4 +line 1091 +;1091: } +LABELV $509 +line 1093 +;1092: +;1093: token = COM_Parse( &text_p ); +ADDRLP4 8 +ARGP4 +ADDRLP4 20044 +ADDRGP4 COM_Parse +CALLP4 +ASGNP4 +ADDRLP4 0 +ADDRLP4 20044 +INDIRP4 +ASGNP4 +line 1094 +;1094: if ( !token ) { +ADDRLP4 0 +INDIRP4 +CVPU4 4 +CNSTU4 0 +NEU4 $511 +line 1095 +;1095: break; +ADDRGP4 $503 +JUMPV +LABELV $511 +line 1097 +;1096: } +;1097: animations[i].numFrames = atoi( token ); +ADDRLP4 0 +INDIRP4 +ARGP4 +ADDRLP4 20048 +ADDRGP4 atoi +CALLI4 +ASGNI4 +CNSTI4 28 +ADDRLP4 4 +INDIRI4 +MULI4 +ADDRFP4 4 +INDIRP4 +ADDP4 +CNSTI4 4 +ADDP4 +ADDRLP4 20048 +INDIRI4 +ASGNI4 +line 1099 +;1098: +;1099: token = COM_Parse( &text_p ); +ADDRLP4 8 +ARGP4 +ADDRLP4 20052 +ADDRGP4 COM_Parse +CALLP4 +ASGNP4 +ADDRLP4 0 +ADDRLP4 20052 +INDIRP4 +ASGNP4 +line 1100 +;1100: if ( !token ) { +ADDRLP4 0 +INDIRP4 +CVPU4 4 +CNSTU4 0 +NEU4 $513 +line 1101 +;1101: break; +ADDRGP4 $503 +JUMPV +LABELV $513 +line 1103 +;1102: } +;1103: animations[i].loopFrames = atoi( token ); +ADDRLP4 0 +INDIRP4 +ARGP4 +ADDRLP4 20056 +ADDRGP4 atoi +CALLI4 +ASGNI4 +CNSTI4 28 +ADDRLP4 4 +INDIRI4 +MULI4 +ADDRFP4 4 +INDIRP4 +ADDP4 +CNSTI4 8 +ADDP4 +ADDRLP4 20056 +INDIRI4 +ASGNI4 +line 1105 +;1104: +;1105: token = COM_Parse( &text_p ); +ADDRLP4 8 +ARGP4 +ADDRLP4 20060 +ADDRGP4 COM_Parse +CALLP4 +ASGNP4 +ADDRLP4 0 +ADDRLP4 20060 +INDIRP4 +ASGNP4 +line 1106 +;1106: if ( !token ) { +ADDRLP4 0 +INDIRP4 +CVPU4 4 +CNSTU4 0 +NEU4 $515 +line 1107 +;1107: break; +ADDRGP4 $503 +JUMPV +LABELV $515 +line 1109 +;1108: } +;1109: fps = atof( token ); +ADDRLP4 0 +INDIRP4 +ARGP4 +ADDRLP4 20064 +ADDRGP4 atof +CALLF4 +ASGNF4 +ADDRLP4 12 +ADDRLP4 20064 +INDIRF4 +ASGNF4 +line 1110 +;1110: if ( fps == 0 ) { +ADDRLP4 12 +INDIRF4 +CNSTF4 0 +NEF4 $517 +line 1111 +;1111: fps = 1; +ADDRLP4 12 +CNSTF4 1065353216 +ASGNF4 +line 1112 +;1112: } +LABELV $517 +line 1113 +;1113: animations[i].frameLerp = 1000 / fps; +CNSTI4 28 +ADDRLP4 4 +INDIRI4 +MULI4 +ADDRFP4 4 +INDIRP4 +ADDP4 +CNSTI4 12 +ADDP4 +CNSTF4 1148846080 +ADDRLP4 12 +INDIRF4 +DIVF4 +CVFI4 4 +ASGNI4 +line 1114 +;1114: animations[i].initialLerp = 1000 / fps; +CNSTI4 28 +ADDRLP4 4 +INDIRI4 +MULI4 +ADDRFP4 4 +INDIRP4 +ADDP4 +CNSTI4 16 +ADDP4 +CNSTF4 1148846080 +ADDRLP4 12 +INDIRF4 +DIVF4 +CVFI4 4 +ASGNI4 +line 1115 +;1115: } +LABELV $502 +line 1078 +ADDRLP4 4 +ADDRLP4 4 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +ADDRLP4 4 +INDIRI4 +CNSTI4 31 +LTI4 $501 +LABELV $503 +line 1117 +;1116: +;1117: if ( i != MAX_ANIMATIONS ) { +ADDRLP4 4 +INDIRI4 +CNSTI4 31 +EQI4 $519 +line 1118 +;1118: Com_Printf( "Error parsing animation file: %s", filename ); +ADDRGP4 $521 +ARGP4 +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRGP4 Com_Printf +CALLV +pop +line 1119 +;1119: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $468 +JUMPV +LABELV $519 +line 1122 +;1120: } +;1121: +;1122: return qtrue; +CNSTI4 1 +RETI4 +LABELV $468 +endproc UI_ParseAnimationFile 20068 12 +export UI_RegisterClientModelname +proc UI_RegisterClientModelname 356 24 +line 1130 +;1123:} +;1124: +;1125:/* +;1126:========================== +;1127:UI_RegisterClientModelname +;1128:========================== +;1129:*/ +;1130:qboolean UI_RegisterClientModelname( playerInfo_t *pi, const char *modelSkinName, const char *headModelSkinName, const char *teamName ) { +line 1138 +;1131: char modelName[MAX_QPATH]; +;1132: char skinName[MAX_QPATH]; +;1133: char headModelName[MAX_QPATH]; +;1134: char headSkinName[MAX_QPATH]; +;1135: char filename[MAX_QPATH]; +;1136: char *slash; +;1137: +;1138: pi->torsoModel = 0; +ADDRFP4 0 +INDIRP4 +CNSTI4 56 +ADDP4 +CNSTI4 0 +ASGNI4 +line 1139 +;1139: pi->headModel = 0; +ADDRFP4 0 +INDIRP4 +CNSTI4 112 +ADDP4 +CNSTI4 0 +ASGNI4 +line 1141 +;1140: +;1141: if ( !modelSkinName[0] ) { +ADDRFP4 4 +INDIRP4 +INDIRI1 +CVII4 1 +CNSTI4 0 +NEI4 $523 +line 1142 +;1142: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $522 +JUMPV +LABELV $523 +line 1145 +;1143: } +;1144: +;1145: Q_strncpyz( modelName, modelSkinName, sizeof( modelName ) ); +ADDRLP4 128 +ARGP4 +ADDRFP4 4 +INDIRP4 +ARGP4 +CNSTI4 64 +ARGI4 +ADDRGP4 Q_strncpyz +CALLV +pop +line 1147 +;1146: +;1147: slash = strchr( modelName, '/' ); +ADDRLP4 128 +ARGP4 +CNSTI4 47 +ARGI4 +ADDRLP4 324 +ADDRGP4 strchr +CALLP4 +ASGNP4 +ADDRLP4 192 +ADDRLP4 324 +INDIRP4 +ASGNP4 +line 1148 +;1148: if ( !slash ) { +ADDRLP4 192 +INDIRP4 +CVPU4 4 +CNSTU4 0 +NEU4 $525 +line 1150 +;1149: // modelName did not include a skin name +;1150: Q_strncpyz( skinName, "default", sizeof( skinName ) ); +ADDRLP4 196 +ARGP4 +ADDRGP4 $410 +ARGP4 +CNSTI4 64 +ARGI4 +ADDRGP4 Q_strncpyz +CALLV +pop +line 1151 +;1151: } else { +ADDRGP4 $526 +JUMPV +LABELV $525 +line 1152 +;1152: Q_strncpyz( skinName, slash + 1, sizeof( skinName ) ); +ADDRLP4 196 +ARGP4 +ADDRLP4 192 +INDIRP4 +CNSTI4 1 +ADDP4 +ARGP4 +CNSTI4 64 +ARGI4 +ADDRGP4 Q_strncpyz +CALLV +pop +line 1153 +;1153: *slash = '\0'; +ADDRLP4 192 +INDIRP4 +CNSTI1 0 +ASGNI1 +line 1154 +;1154: } +LABELV $526 +line 1156 +;1155: +;1156: Q_strncpyz( headModelName, headModelSkinName, sizeof( headModelName ) ); +ADDRLP4 64 +ARGP4 +ADDRFP4 8 +INDIRP4 +ARGP4 +CNSTI4 64 +ARGI4 +ADDRGP4 Q_strncpyz +CALLV +pop +line 1157 +;1157: slash = strchr( headModelName, '/' ); +ADDRLP4 64 +ARGP4 +CNSTI4 47 +ARGI4 +ADDRLP4 328 +ADDRGP4 strchr +CALLP4 +ASGNP4 +ADDRLP4 192 +ADDRLP4 328 +INDIRP4 +ASGNP4 +line 1158 +;1158: if ( !slash ) { +ADDRLP4 192 +INDIRP4 +CVPU4 4 +CNSTU4 0 +NEU4 $527 +line 1160 +;1159: // modelName did not include a skin name +;1160: Q_strncpyz( headSkinName, "default", sizeof( skinName ) ); +ADDRLP4 260 +ARGP4 +ADDRGP4 $410 +ARGP4 +CNSTI4 64 +ARGI4 +ADDRGP4 Q_strncpyz +CALLV +pop +line 1161 +;1161: } else { +ADDRGP4 $528 +JUMPV +LABELV $527 +line 1162 +;1162: Q_strncpyz( headSkinName, slash + 1, sizeof( skinName ) ); +ADDRLP4 260 +ARGP4 +ADDRLP4 192 +INDIRP4 +CNSTI4 1 +ADDP4 +ARGP4 +CNSTI4 64 +ARGI4 +ADDRGP4 Q_strncpyz +CALLV +pop +line 1163 +;1163: *slash = '\0'; +ADDRLP4 192 +INDIRP4 +CNSTI1 0 +ASGNI1 +line 1164 +;1164: } +LABELV $528 +line 1168 +;1165: +;1166: // load cmodels before models so filecache works +;1167: +;1168: Com_sprintf( filename, sizeof( filename ), "models/players/%s/lower.md3", modelName ); +ADDRLP4 0 +ARGP4 +CNSTI4 64 +ARGI4 +ADDRGP4 $529 +ARGP4 +ADDRLP4 128 +ARGP4 +ADDRGP4 Com_sprintf +CALLV +pop +line 1169 +;1169: pi->legsModel = trap_R_RegisterModel( filename ); +ADDRLP4 0 +ARGP4 +ADDRLP4 332 +ADDRGP4 trap_R_RegisterModel +CALLI4 +ASGNI4 +ADDRFP4 0 +INDIRP4 +ADDRLP4 332 +INDIRI4 +ASGNI4 +line 1170 +;1170: if ( !pi->legsModel ) { +ADDRFP4 0 +INDIRP4 +INDIRI4 +CNSTI4 0 +NEI4 $530 +line 1171 +;1171: Com_sprintf( filename, sizeof( filename ), "models/players/characters/%s/lower.md3", modelName ); +ADDRLP4 0 +ARGP4 +CNSTI4 64 +ARGI4 +ADDRGP4 $532 +ARGP4 +ADDRLP4 128 +ARGP4 +ADDRGP4 Com_sprintf +CALLV +pop +line 1172 +;1172: pi->legsModel = trap_R_RegisterModel( filename ); +ADDRLP4 0 +ARGP4 +ADDRLP4 336 +ADDRGP4 trap_R_RegisterModel +CALLI4 +ASGNI4 +ADDRFP4 0 +INDIRP4 +ADDRLP4 336 +INDIRI4 +ASGNI4 +line 1173 +;1173: if ( !pi->legsModel ) { +ADDRFP4 0 +INDIRP4 +INDIRI4 +CNSTI4 0 +NEI4 $533 +line 1174 +;1174: Com_Printf( "Failed to load model file %s\n", filename ); +ADDRGP4 $535 +ARGP4 +ADDRLP4 0 +ARGP4 +ADDRGP4 Com_Printf +CALLV +pop +line 1175 +;1175: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $522 +JUMPV +LABELV $533 +line 1177 +;1176: } +;1177: } +LABELV $530 +line 1179 +;1178: +;1179: Com_sprintf( filename, sizeof( filename ), "models/players/%s/upper.md3", modelName ); +ADDRLP4 0 +ARGP4 +CNSTI4 64 +ARGI4 +ADDRGP4 $536 +ARGP4 +ADDRLP4 128 +ARGP4 +ADDRGP4 Com_sprintf +CALLV +pop +line 1180 +;1180: pi->torsoModel = trap_R_RegisterModel( filename ); +ADDRLP4 0 +ARGP4 +ADDRLP4 336 +ADDRGP4 trap_R_RegisterModel +CALLI4 +ASGNI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 56 +ADDP4 +ADDRLP4 336 +INDIRI4 +ASGNI4 +line 1181 +;1181: if ( !pi->torsoModel ) { +ADDRFP4 0 +INDIRP4 +CNSTI4 56 +ADDP4 +INDIRI4 +CNSTI4 0 +NEI4 $537 +line 1182 +;1182: Com_sprintf( filename, sizeof( filename ), "models/players/characters/%s/upper.md3", modelName ); +ADDRLP4 0 +ARGP4 +CNSTI4 64 +ARGI4 +ADDRGP4 $539 +ARGP4 +ADDRLP4 128 +ARGP4 +ADDRGP4 Com_sprintf +CALLV +pop +line 1183 +;1183: pi->torsoModel = trap_R_RegisterModel( filename ); +ADDRLP4 0 +ARGP4 +ADDRLP4 340 +ADDRGP4 trap_R_RegisterModel +CALLI4 +ASGNI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 56 +ADDP4 +ADDRLP4 340 +INDIRI4 +ASGNI4 +line 1184 +;1184: if ( !pi->torsoModel ) { +ADDRFP4 0 +INDIRP4 +CNSTI4 56 +ADDP4 +INDIRI4 +CNSTI4 0 +NEI4 $540 +line 1185 +;1185: Com_Printf( "Failed to load model file %s\n", filename ); +ADDRGP4 $535 +ARGP4 +ADDRLP4 0 +ARGP4 +ADDRGP4 Com_Printf +CALLV +pop +line 1186 +;1186: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $522 +JUMPV +LABELV $540 +line 1188 +;1187: } +;1188: } +LABELV $537 +line 1190 +;1189: +;1190: if (headModelName && headModelName[0] == '*' ) { +ADDRLP4 64 +CVPU4 4 +CNSTU4 0 +EQU4 $542 +ADDRLP4 64 +INDIRI1 +CVII4 1 +CNSTI4 42 +NEI4 $542 +line 1191 +;1191: Com_sprintf( filename, sizeof( filename ), "models/players/heads/%s/%s.md3", &headModelName[1], &headModelName[1] ); +ADDRLP4 0 +ARGP4 +CNSTI4 64 +ARGI4 +ADDRGP4 $544 +ARGP4 +ADDRLP4 64+1 +ARGP4 +ADDRLP4 64+1 +ARGP4 +ADDRGP4 Com_sprintf +CALLV +pop +line 1192 +;1192: } +ADDRGP4 $543 +JUMPV +LABELV $542 +line 1193 +;1193: else { +line 1194 +;1194: Com_sprintf( filename, sizeof( filename ), "models/players/%s/head.md3", headModelName ); +ADDRLP4 0 +ARGP4 +CNSTI4 64 +ARGI4 +ADDRGP4 $547 +ARGP4 +ADDRLP4 64 +ARGP4 +ADDRGP4 Com_sprintf +CALLV +pop +line 1195 +;1195: } +LABELV $543 +line 1196 +;1196: pi->headModel = trap_R_RegisterModel( filename ); +ADDRLP4 0 +ARGP4 +ADDRLP4 340 +ADDRGP4 trap_R_RegisterModel +CALLI4 +ASGNI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 112 +ADDP4 +ADDRLP4 340 +INDIRI4 +ASGNI4 +line 1197 +;1197: if ( !pi->headModel && headModelName[0] != '*') { +ADDRFP4 0 +INDIRP4 +CNSTI4 112 +ADDP4 +INDIRI4 +CNSTI4 0 +NEI4 $548 +ADDRLP4 64 +INDIRI1 +CVII4 1 +CNSTI4 42 +EQI4 $548 +line 1198 +;1198: Com_sprintf( filename, sizeof( filename ), "models/players/heads/%s/%s.md3", headModelName, headModelName ); +ADDRLP4 0 +ARGP4 +CNSTI4 64 +ARGI4 +ADDRGP4 $544 +ARGP4 +ADDRLP4 64 +ARGP4 +ADDRLP4 64 +ARGP4 +ADDRGP4 Com_sprintf +CALLV +pop +line 1199 +;1199: pi->headModel = trap_R_RegisterModel( filename ); +ADDRLP4 0 +ARGP4 +ADDRLP4 344 +ADDRGP4 trap_R_RegisterModel +CALLI4 +ASGNI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 112 +ADDP4 +ADDRLP4 344 +INDIRI4 +ASGNI4 +line 1200 +;1200: } +LABELV $548 +line 1202 +;1201: +;1202: if (!pi->headModel) { +ADDRFP4 0 +INDIRP4 +CNSTI4 112 +ADDP4 +INDIRI4 +CNSTI4 0 +NEI4 $550 +line 1203 +;1203: Com_Printf( "Failed to load model file %s\n", filename ); +ADDRGP4 $535 +ARGP4 +ADDRLP4 0 +ARGP4 +ADDRGP4 Com_Printf +CALLV +pop +line 1204 +;1204: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $522 +JUMPV +LABELV $550 +line 1208 +;1205: } +;1206: +;1207: // if any skins failed to load, fall back to default +;1208: if ( !UI_RegisterClientSkin( pi, modelName, skinName, headModelName, headSkinName, teamName) ) { +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRLP4 128 +ARGP4 +ADDRLP4 196 +ARGP4 +ADDRLP4 64 +ARGP4 +ADDRLP4 260 +ARGP4 +ADDRFP4 12 +INDIRP4 +ARGP4 +ADDRLP4 344 +ADDRGP4 UI_RegisterClientSkin +CALLI4 +ASGNI4 +ADDRLP4 344 +INDIRI4 +CNSTI4 0 +NEI4 $552 +line 1209 +;1209: if ( !UI_RegisterClientSkin( pi, modelName, "default", headModelName, "default", teamName ) ) { +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRLP4 128 +ARGP4 +ADDRLP4 348 +ADDRGP4 $410 +ASGNP4 +ADDRLP4 348 +INDIRP4 +ARGP4 +ADDRLP4 64 +ARGP4 +ADDRLP4 348 +INDIRP4 +ARGP4 +ADDRFP4 12 +INDIRP4 +ARGP4 +ADDRLP4 352 +ADDRGP4 UI_RegisterClientSkin +CALLI4 +ASGNI4 +ADDRLP4 352 +INDIRI4 +CNSTI4 0 +NEI4 $554 +line 1210 +;1210: Com_Printf( "Failed to load skin file: %s : %s\n", modelName, skinName ); +ADDRGP4 $556 +ARGP4 +ADDRLP4 128 +ARGP4 +ADDRLP4 196 +ARGP4 +ADDRGP4 Com_Printf +CALLV +pop +line 1211 +;1211: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $522 +JUMPV +LABELV $554 +line 1213 +;1212: } +;1213: } +LABELV $552 +line 1216 +;1214: +;1215: // load the animations +;1216: Com_sprintf( filename, sizeof( filename ), "models/players/%s/animation.cfg", modelName ); +ADDRLP4 0 +ARGP4 +CNSTI4 64 +ARGI4 +ADDRGP4 $557 +ARGP4 +ADDRLP4 128 +ARGP4 +ADDRGP4 Com_sprintf +CALLV +pop +line 1217 +;1217: if ( !UI_ParseAnimationFile( filename, pi->animations ) ) { +ADDRLP4 0 +ARGP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 120 +ADDP4 +ARGP4 +ADDRLP4 348 +ADDRGP4 UI_ParseAnimationFile +CALLI4 +ASGNI4 +ADDRLP4 348 +INDIRI4 +CNSTI4 0 +NEI4 $558 +line 1218 +;1218: Com_sprintf( filename, sizeof( filename ), "models/players/characters/%s/animation.cfg", modelName ); +ADDRLP4 0 +ARGP4 +CNSTI4 64 +ARGI4 +ADDRGP4 $560 +ARGP4 +ADDRLP4 128 +ARGP4 +ADDRGP4 Com_sprintf +CALLV +pop +line 1219 +;1219: if ( !UI_ParseAnimationFile( filename, pi->animations ) ) { +ADDRLP4 0 +ARGP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 120 +ADDP4 +ARGP4 +ADDRLP4 352 +ADDRGP4 UI_ParseAnimationFile +CALLI4 +ASGNI4 +ADDRLP4 352 +INDIRI4 +CNSTI4 0 +NEI4 $561 +line 1220 +;1220: Com_Printf( "Failed to load animation file %s\n", filename ); +ADDRGP4 $563 +ARGP4 +ADDRLP4 0 +ARGP4 +ADDRGP4 Com_Printf +CALLV +pop +line 1221 +;1221: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $522 +JUMPV +LABELV $561 +line 1223 +;1222: } +;1223: } +LABELV $558 +line 1225 +;1224: +;1225: return qtrue; +CNSTI4 1 +RETI4 +LABELV $522 +endproc UI_RegisterClientModelname 356 24 +export UI_PlayerInfo_SetModel +proc UI_PlayerInfo_SetModel 12 16 +line 1234 +;1226:} +;1227: +;1228: +;1229:/* +;1230:=============== +;1231:UI_PlayerInfo_SetModel +;1232:=============== +;1233:*/ +;1234:void UI_PlayerInfo_SetModel( playerInfo_t *pi, const char *model, const char *headmodel, char *teamName ) { +line 1235 +;1235: memset( pi, 0, sizeof(*pi) ); +ADDRFP4 0 +INDIRP4 +ARGP4 +CNSTI4 0 +ARGI4 +CNSTI4 1276 +ARGI4 +ADDRGP4 memset +CALLP4 +pop +line 1236 +;1236: UI_RegisterClientModelname( pi, model, headmodel, teamName ); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRFP4 4 +INDIRP4 +ARGP4 +ADDRFP4 8 +INDIRP4 +ARGP4 +ADDRFP4 12 +INDIRP4 +ARGP4 +ADDRGP4 UI_RegisterClientModelname +CALLI4 +pop +line 1238 +;1237: //Blaze: Changed from WP_MACHINEGUN to WP_PISTOL +;1238: pi->weapon = WP_PISTOL; +ADDRFP4 0 +INDIRP4 +CNSTI4 1220 +ADDP4 +CNSTI4 1 +ASGNI4 +line 1239 +;1239: pi->currentWeapon = pi->weapon; +ADDRLP4 0 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 0 +INDIRP4 +CNSTI4 1208 +ADDP4 +ADDRLP4 0 +INDIRP4 +CNSTI4 1220 +ADDP4 +INDIRI4 +ASGNI4 +line 1240 +;1240: pi->lastWeapon = pi->weapon; +ADDRLP4 4 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 4 +INDIRP4 +CNSTI4 1224 +ADDP4 +ADDRLP4 4 +INDIRP4 +CNSTI4 1220 +ADDP4 +INDIRI4 +ASGNI4 +line 1241 +;1241: pi->pendingWeapon = -1; +ADDRFP4 0 +INDIRP4 +CNSTI4 1228 +ADDP4 +CNSTI4 -1 +ASGNI4 +line 1242 +;1242: pi->weaponTimer = 0; +ADDRFP4 0 +INDIRP4 +CNSTI4 1232 +ADDP4 +CNSTI4 0 +ASGNI4 +line 1243 +;1243: pi->chat = qfalse; +ADDRFP4 0 +INDIRP4 +CNSTI4 1252 +ADDP4 +CNSTI4 0 +ASGNI4 +line 1244 +;1244: pi->newModel = qtrue; +ADDRFP4 0 +INDIRP4 +CNSTI4 1256 +ADDP4 +CNSTI4 1 +ASGNI4 +line 1245 +;1245: UI_PlayerInfo_SetWeapon( pi, pi->weapon ); +ADDRLP4 8 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 8 +INDIRP4 +ARGP4 +ADDRLP4 8 +INDIRP4 +CNSTI4 1220 +ADDP4 +INDIRI4 +ARGI4 +ADDRGP4 UI_PlayerInfo_SetWeapon +CALLV +pop +line 1246 +;1246:} +LABELV $564 +endproc UI_PlayerInfo_SetModel 12 16 +export UI_PlayerInfo_SetInfo +proc UI_PlayerInfo_SetInfo 36 8 +line 1254 +;1247: +;1248: +;1249:/* +;1250:=============== +;1251:UI_PlayerInfo_SetInfo +;1252:=============== +;1253:*/ +;1254:void UI_PlayerInfo_SetInfo( playerInfo_t *pi, int legsAnim, int torsoAnim, vec3_t viewAngles, vec3_t moveAngles, weapon_t weaponNumber, qboolean chat ) { +line 1258 +;1255: int currentAnim; +;1256: weapon_t weaponNum; +;1257: +;1258: pi->chat = chat; +ADDRFP4 0 +INDIRP4 +CNSTI4 1252 +ADDP4 +ADDRFP4 24 +INDIRI4 +ASGNI4 +line 1261 +;1259: +;1260: // view angles +;1261: VectorCopy( viewAngles, pi->viewAngles ); +ADDRFP4 0 +INDIRP4 +CNSTI4 1184 +ADDP4 +ADDRFP4 12 +INDIRP4 +INDIRB +ASGNB 12 +line 1264 +;1262: +;1263: // move angles +;1264: VectorCopy( moveAngles, pi->moveAngles ); +ADDRFP4 0 +INDIRP4 +CNSTI4 1196 +ADDP4 +ADDRFP4 16 +INDIRP4 +INDIRB +ASGNB 12 +line 1266 +;1265: +;1266: if ( pi->newModel ) { +ADDRFP4 0 +INDIRP4 +CNSTI4 1256 +ADDP4 +INDIRI4 +CNSTI4 0 +EQI4 $566 +line 1267 +;1267: pi->newModel = qfalse; +ADDRFP4 0 +INDIRP4 +CNSTI4 1256 +ADDP4 +CNSTI4 0 +ASGNI4 +line 1269 +;1268: +;1269: jumpHeight = 0; +ADDRGP4 jumpHeight +CNSTF4 0 +ASGNF4 +line 1270 +;1270: pi->pendingLegsAnim = 0; +ADDRFP4 0 +INDIRP4 +CNSTI4 1236 +ADDP4 +CNSTI4 0 +ASGNI4 +line 1271 +;1271: UI_ForceLegsAnim( pi, legsAnim ); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRFP4 4 +INDIRI4 +ARGI4 +ADDRGP4 UI_ForceLegsAnim +CALLV +pop +line 1272 +;1272: pi->legs.yawAngle = viewAngles[YAW]; +ADDRFP4 0 +INDIRP4 +CNSTI4 28 +ADDP4 +ADDRFP4 12 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRF4 +ASGNF4 +line 1273 +;1273: pi->legs.yawing = qfalse; +ADDRFP4 0 +INDIRP4 +CNSTI4 32 +ADDP4 +CNSTI4 0 +ASGNI4 +line 1275 +;1274: +;1275: pi->pendingTorsoAnim = 0; +ADDRFP4 0 +INDIRP4 +CNSTI4 1244 +ADDP4 +CNSTI4 0 +ASGNI4 +line 1276 +;1276: UI_ForceTorsoAnim( pi, torsoAnim ); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRFP4 8 +INDIRI4 +ARGI4 +ADDRGP4 UI_ForceTorsoAnim +CALLV +pop +line 1277 +;1277: pi->torso.yawAngle = viewAngles[YAW]; +ADDRFP4 0 +INDIRP4 +CNSTI4 84 +ADDP4 +ADDRFP4 12 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRF4 +ASGNF4 +line 1278 +;1278: pi->torso.yawing = qfalse; +ADDRFP4 0 +INDIRP4 +CNSTI4 88 +ADDP4 +CNSTI4 0 +ASGNI4 +line 1280 +;1279: +;1280: if ( weaponNumber != -1 ) { +ADDRFP4 20 +INDIRI4 +CNSTI4 -1 +EQI4 $565 +line 1281 +;1281: pi->weapon = weaponNumber; +ADDRFP4 0 +INDIRP4 +CNSTI4 1220 +ADDP4 +ADDRFP4 20 +INDIRI4 +ASGNI4 +line 1282 +;1282: pi->currentWeapon = weaponNumber; +ADDRFP4 0 +INDIRP4 +CNSTI4 1208 +ADDP4 +ADDRFP4 20 +INDIRI4 +ASGNI4 +line 1283 +;1283: pi->lastWeapon = weaponNumber; +ADDRFP4 0 +INDIRP4 +CNSTI4 1224 +ADDP4 +ADDRFP4 20 +INDIRI4 +ASGNI4 +line 1284 +;1284: pi->pendingWeapon = -1; +ADDRFP4 0 +INDIRP4 +CNSTI4 1228 +ADDP4 +CNSTI4 -1 +ASGNI4 +line 1285 +;1285: pi->weaponTimer = 0; +ADDRFP4 0 +INDIRP4 +CNSTI4 1232 +ADDP4 +CNSTI4 0 +ASGNI4 +line 1286 +;1286: UI_PlayerInfo_SetWeapon( pi, pi->weapon ); +ADDRLP4 8 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 8 +INDIRP4 +ARGP4 +ADDRLP4 8 +INDIRP4 +CNSTI4 1220 +ADDP4 +INDIRI4 +ARGI4 +ADDRGP4 UI_PlayerInfo_SetWeapon +CALLV +pop +line 1287 +;1287: } +line 1289 +;1288: +;1289: return; +ADDRGP4 $565 +JUMPV +LABELV $566 +line 1293 +;1290: } +;1291: +;1292: // weapon +;1293: if ( weaponNumber == -1 ) { +ADDRFP4 20 +INDIRI4 +CNSTI4 -1 +NEI4 $570 +line 1294 +;1294: pi->pendingWeapon = -1; +ADDRFP4 0 +INDIRP4 +CNSTI4 1228 +ADDP4 +CNSTI4 -1 +ASGNI4 +line 1295 +;1295: pi->weaponTimer = 0; +ADDRFP4 0 +INDIRP4 +CNSTI4 1232 +ADDP4 +CNSTI4 0 +ASGNI4 +line 1296 +;1296: } +ADDRGP4 $571 +JUMPV +LABELV $570 +line 1297 +;1297: else if ( weaponNumber != WP_NONE ) { +ADDRFP4 20 +INDIRI4 +CNSTI4 0 +EQI4 $572 +line 1298 +;1298: pi->pendingWeapon = weaponNumber; +ADDRFP4 0 +INDIRP4 +CNSTI4 1228 +ADDP4 +ADDRFP4 20 +INDIRI4 +ASGNI4 +line 1299 +;1299: pi->weaponTimer = dp_realtime + UI_TIMER_WEAPON_DELAY; +ADDRFP4 0 +INDIRP4 +CNSTI4 1232 +ADDP4 +ADDRGP4 dp_realtime +INDIRI4 +CNSTI4 250 +ADDI4 +ASGNI4 +line 1300 +;1300: } +LABELV $572 +LABELV $571 +line 1301 +;1301: weaponNum = pi->lastWeapon; +ADDRLP4 4 +ADDRFP4 0 +INDIRP4 +CNSTI4 1224 +ADDP4 +INDIRI4 +ASGNI4 +line 1302 +;1302: pi->weapon = weaponNum; +ADDRFP4 0 +INDIRP4 +CNSTI4 1220 +ADDP4 +ADDRLP4 4 +INDIRI4 +ASGNI4 +line 1304 +;1303: +;1304: if ( torsoAnim == BOTH_DEATH1 || legsAnim == BOTH_DEATH1 ) { +ADDRLP4 8 +CNSTI4 0 +ASGNI4 +ADDRFP4 8 +INDIRI4 +ADDRLP4 8 +INDIRI4 +EQI4 $576 +ADDRFP4 4 +INDIRI4 +ADDRLP4 8 +INDIRI4 +NEI4 $574 +LABELV $576 +line 1305 +;1305: torsoAnim = legsAnim = BOTH_DEATH1; +ADDRLP4 12 +CNSTI4 0 +ASGNI4 +ADDRFP4 4 +ADDRLP4 12 +INDIRI4 +ASGNI4 +ADDRFP4 8 +ADDRLP4 12 +INDIRI4 +ASGNI4 +line 1306 +;1306: pi->weapon = pi->currentWeapon = WP_NONE; +ADDRLP4 16 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 20 +CNSTI4 0 +ASGNI4 +ADDRLP4 16 +INDIRP4 +CNSTI4 1208 +ADDP4 +ADDRLP4 20 +INDIRI4 +ASGNI4 +ADDRLP4 16 +INDIRP4 +CNSTI4 1220 +ADDP4 +ADDRLP4 20 +INDIRI4 +ASGNI4 +line 1307 +;1307: UI_PlayerInfo_SetWeapon( pi, pi->weapon ); +ADDRLP4 24 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 24 +INDIRP4 +ARGP4 +ADDRLP4 24 +INDIRP4 +CNSTI4 1220 +ADDP4 +INDIRI4 +ARGI4 +ADDRGP4 UI_PlayerInfo_SetWeapon +CALLV +pop +line 1309 +;1308: +;1309: jumpHeight = 0; +ADDRGP4 jumpHeight +CNSTF4 0 +ASGNF4 +line 1310 +;1310: pi->pendingLegsAnim = 0; +ADDRFP4 0 +INDIRP4 +CNSTI4 1236 +ADDP4 +CNSTI4 0 +ASGNI4 +line 1311 +;1311: UI_ForceLegsAnim( pi, legsAnim ); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRFP4 4 +INDIRI4 +ARGI4 +ADDRGP4 UI_ForceLegsAnim +CALLV +pop +line 1313 +;1312: +;1313: pi->pendingTorsoAnim = 0; +ADDRFP4 0 +INDIRP4 +CNSTI4 1244 +ADDP4 +CNSTI4 0 +ASGNI4 +line 1314 +;1314: UI_ForceTorsoAnim( pi, torsoAnim ); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRFP4 8 +INDIRI4 +ARGI4 +ADDRGP4 UI_ForceTorsoAnim +CALLV +pop +line 1316 +;1315: +;1316: return; +ADDRGP4 $565 +JUMPV +LABELV $574 +line 1320 +;1317: } +;1318: +;1319: // leg animation +;1320: currentAnim = pi->legsAnim & ~ANIM_TOGGLEBIT; +ADDRLP4 0 +ADDRFP4 0 +INDIRP4 +CNSTI4 1212 +ADDP4 +INDIRI4 +CNSTI4 -129 +BANDI4 +ASGNI4 +line 1321 +;1321: if ( legsAnim != LEGS_JUMP && ( currentAnim == LEGS_JUMP || currentAnim == LEGS_LAND ) ) { +ADDRLP4 12 +CNSTI4 18 +ASGNI4 +ADDRFP4 4 +INDIRI4 +ADDRLP4 12 +INDIRI4 +EQI4 $577 +ADDRLP4 0 +INDIRI4 +ADDRLP4 12 +INDIRI4 +EQI4 $579 +ADDRLP4 0 +INDIRI4 +CNSTI4 19 +NEI4 $577 +LABELV $579 +line 1322 +;1322: pi->pendingLegsAnim = legsAnim; +ADDRFP4 0 +INDIRP4 +CNSTI4 1236 +ADDP4 +ADDRFP4 4 +INDIRI4 +ASGNI4 +line 1323 +;1323: } +ADDRGP4 $578 +JUMPV +LABELV $577 +line 1324 +;1324: else if ( legsAnim != currentAnim ) { +ADDRFP4 4 +INDIRI4 +ADDRLP4 0 +INDIRI4 +EQI4 $580 +line 1325 +;1325: jumpHeight = 0; +ADDRGP4 jumpHeight +CNSTF4 0 +ASGNF4 +line 1326 +;1326: pi->pendingLegsAnim = 0; +ADDRFP4 0 +INDIRP4 +CNSTI4 1236 +ADDP4 +CNSTI4 0 +ASGNI4 +line 1327 +;1327: UI_ForceLegsAnim( pi, legsAnim ); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRFP4 4 +INDIRI4 +ARGI4 +ADDRGP4 UI_ForceLegsAnim +CALLV +pop +line 1328 +;1328: } +LABELV $580 +LABELV $578 +line 1331 +;1329: +;1330: // torso animation +;1331: if ( torsoAnim == TORSO_STAND || torsoAnim == TORSO_STAND2 ) { +ADDRLP4 20 +ADDRFP4 8 +INDIRI4 +ASGNI4 +ADDRLP4 20 +INDIRI4 +CNSTI4 11 +EQI4 $584 +ADDRLP4 20 +INDIRI4 +CNSTI4 12 +NEI4 $582 +LABELV $584 +line 1333 +;1332: //Changed from WP_GAUNTLET to WP_KNIFE +;1333: if ( weaponNum == WP_NONE || weaponNum == WP_KNIFE ) { +ADDRLP4 4 +INDIRI4 +CNSTI4 0 +EQI4 $587 +ADDRLP4 4 +INDIRI4 +CNSTI4 8 +NEI4 $585 +LABELV $587 +line 1334 +;1334: torsoAnim = TORSO_STAND2; +ADDRFP4 8 +CNSTI4 12 +ASGNI4 +line 1335 +;1335: } +ADDRGP4 $586 +JUMPV +LABELV $585 +line 1336 +;1336: else { +line 1337 +;1337: torsoAnim = TORSO_STAND; +ADDRFP4 8 +CNSTI4 11 +ASGNI4 +line 1338 +;1338: } +LABELV $586 +line 1339 +;1339: } +LABELV $582 +line 1341 +;1340: +;1341: if ( torsoAnim == TORSO_ATTACK || torsoAnim == TORSO_ATTACK2 ) { +ADDRLP4 24 +ADDRFP4 8 +INDIRI4 +ASGNI4 +ADDRLP4 24 +INDIRI4 +CNSTI4 7 +EQI4 $590 +ADDRLP4 24 +INDIRI4 +CNSTI4 8 +NEI4 $588 +LABELV $590 +line 1343 +;1342: //Changed from WP_GAUNTLET to WP_KNIFE +;1343: if ( weaponNum == WP_NONE || weaponNum == WP_KNIFE ) { +ADDRLP4 4 +INDIRI4 +CNSTI4 0 +EQI4 $593 +ADDRLP4 4 +INDIRI4 +CNSTI4 8 +NEI4 $591 +LABELV $593 +line 1344 +;1344: torsoAnim = TORSO_ATTACK2; +ADDRFP4 8 +CNSTI4 8 +ASGNI4 +line 1345 +;1345: } +ADDRGP4 $592 +JUMPV +LABELV $591 +line 1346 +;1346: else { +line 1347 +;1347: torsoAnim = TORSO_ATTACK; +ADDRFP4 8 +CNSTI4 7 +ASGNI4 +line 1348 +;1348: } +LABELV $592 +line 1349 +;1349: pi->muzzleFlashTime = dp_realtime + UI_TIMER_MUZZLE_FLASH; +ADDRFP4 0 +INDIRP4 +CNSTI4 1180 +ADDP4 +ADDRGP4 dp_realtime +INDIRI4 +CNSTI4 20 +ADDI4 +ASGNI4 +line 1351 +;1350: //FIXME play firing sound here +;1351: } +LABELV $588 +line 1353 +;1352: +;1353: currentAnim = pi->torsoAnim & ~ANIM_TOGGLEBIT; +ADDRLP4 0 +ADDRFP4 0 +INDIRP4 +CNSTI4 1216 +ADDP4 +INDIRI4 +CNSTI4 -129 +BANDI4 +ASGNI4 +line 1355 +;1354: +;1355: if ( weaponNum != pi->currentWeapon || currentAnim == TORSO_RAISE || currentAnim == TORSO_DROP ) { +ADDRLP4 4 +INDIRI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 1208 +ADDP4 +INDIRI4 +NEI4 $597 +ADDRLP4 0 +INDIRI4 +CNSTI4 10 +EQI4 $597 +ADDRLP4 0 +INDIRI4 +CNSTI4 9 +NEI4 $594 +LABELV $597 +line 1356 +;1356: pi->pendingTorsoAnim = torsoAnim; +ADDRFP4 0 +INDIRP4 +CNSTI4 1244 +ADDP4 +ADDRFP4 8 +INDIRI4 +ASGNI4 +line 1357 +;1357: } +ADDRGP4 $595 +JUMPV +LABELV $594 +line 1358 +;1358: else if ( ( currentAnim == TORSO_GESTURE || currentAnim == TORSO_ATTACK ) && ( torsoAnim != currentAnim ) ) { +ADDRLP4 0 +INDIRI4 +CNSTI4 6 +EQI4 $600 +ADDRLP4 0 +INDIRI4 +CNSTI4 7 +NEI4 $598 +LABELV $600 +ADDRFP4 8 +INDIRI4 +ADDRLP4 0 +INDIRI4 +EQI4 $598 +line 1359 +;1359: pi->pendingTorsoAnim = torsoAnim; +ADDRFP4 0 +INDIRP4 +CNSTI4 1244 +ADDP4 +ADDRFP4 8 +INDIRI4 +ASGNI4 +line 1360 +;1360: } +ADDRGP4 $599 +JUMPV +LABELV $598 +line 1361 +;1361: else if ( torsoAnim != currentAnim ) { +ADDRFP4 8 +INDIRI4 +ADDRLP4 0 +INDIRI4 +EQI4 $601 +line 1362 +;1362: pi->pendingTorsoAnim = 0; +ADDRFP4 0 +INDIRP4 +CNSTI4 1244 +ADDP4 +CNSTI4 0 +ASGNI4 +line 1363 +;1363: UI_ForceTorsoAnim( pi, torsoAnim ); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRFP4 8 +INDIRI4 +ARGI4 +ADDRGP4 UI_ForceTorsoAnim +CALLV +pop +line 1364 +;1364: } +LABELV $601 +LABELV $599 +LABELV $595 +line 1365 +;1365:} +LABELV $565 +endproc UI_PlayerInfo_SetInfo 36 8 +bss +align 4 +LABELV jumpHeight +skip 4 +align 4 +LABELV dp_realtime +skip 4 +import UI_RankStatusMenu +import RankStatus_Cache +import UI_SignupMenu +import Signup_Cache +import UI_LoginMenu +import Login_Cache +import UI_InitGameinfo +import UI_SPUnlockMedals_f +import UI_SPUnlock_f +import UI_GetAwardLevel +import UI_LogAwardData +import UI_NewGame +import UI_GetCurrentGame +import UI_CanShowTierVideo +import UI_ShowTierVideo +import UI_TierCompleted +import UI_SetBestScore +import UI_GetBestScore +import UI_GetBotNameByNumber +import UI_LoadBots +import UI_GetNumBots +import UI_GetBotInfoByName +import UI_GetBotInfoByNumber +import UI_GetNumSPTiers +import UI_GetNumSPArenas +import UI_GetNumArenas +import UI_GetSpecialArenaInfo +import UI_GetArenaInfoByMap +import UI_GetArenaInfoByNumber +import UI_NetworkOptionsMenu +import UI_NetworkOptionsMenu_Cache +import UI_SoundOptionsMenu +import UI_SoundOptionsMenu_Cache +import UI_DisplayOptionsMenu +import UI_DisplayOptionsMenu_Cache +import UI_SaveConfigMenu +import UI_SaveConfigMenu_Cache +import UI_LoadConfigMenu +import UI_LoadConfig_Cache +import UI_TeamOrdersMenu_Cache +import UI_TeamOrdersMenu_f +import UI_TeamOrdersMenu +import UI_RemoveBotsMenu +import UI_RemoveBots_Cache +import UI_AddBotsMenu +import UI_AddBots_Cache +import trap_VerifyCDKey +import trap_R_RemapShader +import trap_RealTime +import trap_CIN_SetExtents +import trap_CIN_DrawCinematic +import trap_CIN_RunCinematic +import trap_CIN_StopCinematic +import trap_CIN_PlayCinematic +import trap_S_StartBackgroundTrack +import trap_S_StopBackgroundTrack +import trap_R_RegisterFont +import trap_SetCDKey +import trap_GetCDKey +import trap_MemoryRemaining +import trap_LAN_CompareServers +import trap_LAN_ServerStatus +import trap_LAN_ResetPings +import trap_LAN_RemoveServer +import trap_LAN_AddServer +import trap_LAN_UpdateVisiblePings +import trap_LAN_ServerIsVisible +import trap_LAN_MarkServerVisible +import trap_LAN_SaveCachedServers +import trap_LAN_LoadCachedServers +import trap_LAN_GetPingInfo +import trap_LAN_GetPing +import trap_LAN_ClearPing +import trap_LAN_GetPingQueueCount +import trap_LAN_GetServerPing +import trap_LAN_GetServerInfo +import trap_LAN_GetServerAddressString +import trap_LAN_GetServerCount +import trap_GetConfigString +import trap_GetGlconfig +import trap_GetClientState +import trap_GetClipboardData +import trap_Key_SetCatcher +import trap_Key_GetCatcher +import trap_Key_ClearStates +import trap_Key_SetOverstrikeMode +import trap_Key_GetOverstrikeMode +import trap_Key_IsDown +import trap_Key_SetBinding +import trap_Key_GetBindingBuf +import trap_Key_KeynumToStringBuf +import trap_S_RegisterSound +import trap_S_StartLocalSound +import trap_CM_LerpTag +import trap_UpdateScreen +import trap_R_ModelBounds +import trap_R_DrawStretchPic +import trap_R_SetColor +import trap_R_RenderScene +import trap_R_AddLightToScene +import trap_R_AddPolyToScene +import trap_R_AddRefEntityToScene +import trap_R_ClearScene +import trap_R_RegisterShaderNoMip +import trap_R_RegisterSkin +import trap_R_RegisterModel +import trap_FS_GetFileList +import trap_FS_FCloseFile +import trap_FS_Write +import trap_FS_Read +import trap_FS_FOpenFile +import trap_Cmd_ExecuteText +import trap_Argv +import trap_Argc +import trap_Cvar_InfoStringBuffer +import trap_Cvar_Create +import trap_Cvar_Reset +import trap_Cvar_SetValue +import trap_Cvar_VariableStringBuffer +import trap_Cvar_VariableValue +import trap_Cvar_Set +import trap_Cvar_Update +import trap_Cvar_Register +import trap_Milliseconds +import trap_Error +import trap_Print +import UI_SPSkillMenu_Cache +import UI_SPSkillMenu +import UI_SPPostgameMenu_f +import UI_SPPostgameMenu_Cache +import UI_SPArena_Start +import UI_SPLevelMenu_ReInit +import UI_SPLevelMenu_f +import UI_SPLevelMenu +import UI_SPLevelMenu_Cache +import uis +import UI_LoadBestScores +import m_entersound +import UI_StartDemoLoop +import UI_Cvar_VariableString +import UI_Argv +import UI_ForceMenuOff +import UI_PopMenu +import UI_PushMenu +import UI_SetActiveMenu +import UI_IsFullscreen +import UI_DrawTextBox +import UI_AdjustFrom640 +import UI_CursorInRect +import UI_DrawChar +import UI_DrawString +import UI_ProportionalStringWidth +import UI_DrawProportionalString +import UI_ProportionalSizeScale +import UI_DrawBannerString +import UI_LerpColor +import UI_SetColor +import UI_UpdateScreen +import UI_DrawSides +import UI_DrawTopBottom +import UI_DrawRect +import UI_FillRect +import UI_DrawHandlePic +import UI_DrawNamedPic +import UI_ClampCvar +import UI_ConsoleCommand +import UI_Refresh +import UI_MouseEvent +import UI_KeyEvent +import UI_Shutdown +import UI_Init +import uiInfo +import DriverInfo_Cache +import GraphicsOptions_Cache +import UI_GraphicsOptionsMenu +import ServerInfo_Cache +import UI_ServerInfoMenu +import UI_BotSelectMenu_Cache +import UI_BotSelectMenu +import ServerOptions_Cache +import StartServer_Cache +import UI_StartServerMenu +import ArenaServers_Cache +import UI_ArenaServersMenu +import SpecifyServer_Cache +import UI_SpecifyServerMenu +import SpecifyLeague_Cache +import UI_SpecifyLeagueMenu +import Preferences_Cache +import UI_PreferencesMenu +import PlayerSettings_Cache +import UI_PlayerSettingsMenu +import PlayerModel_Cache +import UI_PlayerModelMenu +import UI_CDKeyMenu_f +import UI_CDKeyMenu_Cache +import UI_CDKeyMenu +import UI_ModsMenu_Cache +import UI_ModsMenu +import UI_CinematicsMenu_Cache +import UI_CinematicsMenu_f +import UI_CinematicsMenu +import Demos_Cache +import UI_DemosMenu +import Controls_Cache +import UI_ControlsMenu +import UI_DrawConnectScreen +import TeamMain_Cache +import UI_TeamMainMenu +import UI_SetupMenu +import UI_SetupMenu_Cache +import UI_ConfirmMenu +import ConfirmMenu_Cache +import UI_InGameMenu +import InGame_Cache +import UI_CreditMenu +import UI_UpdateCvars +import UI_RegisterCvars +import UI_MainMenu +import MainMenu_Cache +import UI_LoadArenas +import UI_ClearScores +import UI_ShowPostGame +import UI_AdjustTimeByGame +import _UI_SetActiveMenu +import UI_LoadMenus +import UI_Load +import UI_Report +import MenuField_Key +import MenuField_Draw +import MenuField_Init +import MField_Draw +import MField_CharEvent +import MField_KeyDownEvent +import MField_Clear +import ui_medalSounds +import ui_medalPicNames +import ui_medalNames +import text_color_highlight +import text_color_normal +import text_color_disabled +import listbar_color +import list_color +import name_color +import color_dim +import color_red +import color_orange +import color_blue +import color_yellow +import color_white +import color_black +import menu_dim_color +import menu_black_color +import menu_red_color +import menu_highlight_color +import menu_dark_color +import menu_grayed_color +import menu_text_color +export weaponChangeSound +align 4 +LABELV weaponChangeSound +skip 4 +import menu_null_sound +import menu_buzz_sound +import menu_out_sound +import menu_move_sound +import menu_in_sound +import ScrollList_Key +import ScrollList_Draw +import Bitmap_Draw +import Bitmap_Init +import Menu_DefaultKey +import Menu_SetCursorToItem +import Menu_SetCursor +import Menu_ActivateItem +import Menu_ItemAtCursor +import Menu_Draw +import Menu_AdjustCursor +import Menu_AddItem +import Menu_Focus +import Menu_Cache +import ui_serverStatusTimeOut +import ui_bigFont +import ui_smallFont +import ui_scoreTime +import ui_scoreShutoutBonus +import ui_scoreSkillBonus +import ui_scoreTimeBonus +import ui_scoreBase +import ui_scoreTeam +import ui_scorePerfect +import ui_scoreScore +import ui_scoreGauntlets +import ui_scoreAssists +import ui_scoreDefends +import ui_scoreExcellents +import ui_scoreImpressives +import ui_scoreAccuracy +import ui_singlePlayerActive +import ui_lastServerRefresh_3 +import ui_lastServerRefresh_2 +import ui_lastServerRefresh_1 +import ui_lastServerRefresh_0 +import ui_selectedPlayerName +import ui_selectedPlayer +import ui_currentOpponent +import ui_mapIndex +import ui_currentNetMap +import ui_currentMap +import ui_currentTier +import ui_menuFiles +import ui_opponentName +import ui_dedicated +import ui_serverFilterType +import ui_netSource +import ui_joinGameType +import ui_actualNetGameType +import ui_netGameType +import ui_gameType +import ui_fragLimit +import ui_captureLimit +import ui_cdkeychecked +import ui_cdkey +import ui_server16 +import ui_server15 +import ui_server14 +import ui_server13 +import ui_server12 +import ui_server11 +import ui_server10 +import ui_server9 +import ui_server8 +import ui_server7 +import ui_server6 +import ui_server5 +import ui_server4 +import ui_server3 +import ui_server2 +import ui_server1 +import ui_marks +import ui_drawCrosshairNames +import ui_drawCrosshair +import ui_brassTime +import ui_browserShowEmpty +import ui_browserShowFull +import ui_browserSortKey +import ui_browserGameType +import ui_browserMaster +import ui_spSelection +import ui_spSkill +import ui_spVideos +import ui_spAwards +import ui_spScores5 +import ui_spScores4 +import ui_spScores3 +import ui_spScores2 +import ui_spScores1 +import ui_botsFile +import ui_arenasFile +import ui_ctf_friendly +import ui_ctf_timelimit +import ui_ctf_capturelimit +import ui_team_friendly +import ui_team_timelimit +import ui_team_fraglimit +import ui_tourney_timelimit +import ui_tourney_fraglimit +import ui_ffa_timelimit +import ui_ffa_fraglimit +import trap_PC_SourceFileAndLine +import trap_PC_ReadToken +import trap_PC_FreeSource +import trap_PC_LoadSource +import trap_PC_AddGlobalDefine +import Controls_SetDefaults +import Controls_SetConfig +import Controls_GetConfig +import UI_OutOfMemory +import UI_InitMemory +import UI_Alloc +import Display_CacheAll +import Menu_SetFeederSelection +import Menu_Paint +import Menus_CloseAll +import LerpColor +import Display_HandleKey +import Menus_CloseByName +import Menus_ShowByName +import Menus_FindByName +import Menus_OpenByName +import Display_KeyBindPending +import Display_CursorType +import Display_MouseMove +import Display_CaptureItem +import Display_GetContext +import Menus_Activate +import Menus_AnyFullScreenVisible +import Menu_Reset +import Menus_ActivateByName +import Menu_PaintAll +import Menu_New +import Menu_Count +import PC_Script_Parse +import PC_String_Parse +import PC_Rect_Parse +import PC_Int_Parse +import PC_Color_Parse +import PC_Float_Parse +import Script_Parse +import String_Parse +import Rect_Parse +import Int_Parse +import Color_Parse +import Float_Parse +import Menu_ScrollFeeder +import Menu_HandleMouseMove +import Menu_HandleKey +import Menu_GetFocused +import Menu_PostParse +import Item_Init +import Menu_Init +import Display_ExpandMacros +import Init_Display +import String_Report +import String_Init +import String_Alloc +import BG_PlayerTouchesItem +import BG_PlayerStateToEntityStateExtraPolate +import BG_PlayerStateToEntityState +import BG_TouchJumpPad +import BG_AddPredictableEventToPlayerstate +import BG_EvaluateTrajectoryDelta +import BG_EvaluateTrajectory +import BG_CanItemBeGrabbed +import BG_FindItemForHoldable +import BG_FindItemForPowerup +import BG_FindItemForWeapon +import BG_FindItem +import bg_numItems +import bg_itemlist +import ClipAmountForAmmo +import ClipAmountForReload +import Pmove +import PM_UpdateViewAngles +import Com_Printf +import Com_Error +import Info_NextPair +import Info_Validate +import Info_SetValueForKey_Big +import Info_SetValueForKey +import Info_RemoveKey_big +import Info_RemoveKey +import Info_ValueForKey +import va +import Q_CleanStr +import Q_PrintStrlen +import Q_strcat +import Q_strncpyz +import Q_strrchr +import Q_strupr +import Q_strlwr +import Q_stricmpn +import Q_strncmp +import Q_stricmp +import Q_isalpha +import Q_isupper +import Q_islower +import Q_isprint +import Com_sprintf +import Parse3DMatrix +import Parse2DMatrix +import Parse1DMatrix +import SkipRestOfLine +import SkipBracedSection +import COM_MatchToken +import COM_ParseWarning +import COM_ParseError +import COM_Compress +import COM_ParseExt +import COM_Parse +import COM_GetCurrentParseLine +import COM_BeginParseSession +import COM_DefaultExtension +import COM_StripExtension +import COM_SkipPath +import Com_Clamp +import PerpendicularVector +import AngleVectors +import MatrixMultiply +import MakeNormalVectors +import RotateAroundDirection +import RotatePointAroundVector +import ProjectPointOnPlane +import PlaneFromPoints +import AngleDelta +import AngleNormalize180 +import AngleNormalize360 +import AnglesSubtract +import AngleSubtract +import LerpAngle +import AngleMod +import BoxOnPlaneSide +import SetPlaneSignbits +import AxisCopy +import AxisClear +import AnglesToAxis +import vectoangles +import Q_crandom +import Q_random +import Q_rand +import Q_acos +import Q_log2 +import VectorRotate +import Vector4Scale +import VectorNormalize2 +import VectorNormalize +import CrossProduct +import VectorInverse +import VectorNormalizeFast +import DistanceSquared +import Distance +import VectorLengthSquared +import VectorLength +import VectorCompare +import AddPointToBounds +import ClearBounds +import RadiusFromBounds +import NormalizeColor +import ColorBytes4 +import ColorBytes3 +import _VectorMA +import _VectorScale +import _VectorCopy +import _VectorAdd +import _VectorSubtract +import _DotProduct +import ByteToDir +import DirToByte +import ClampShort +import ClampChar +import Q_rsqrt +import Q_fabs +import axisDefault +import vec3_origin +import g_color_table +import colorDkGrey +import colorMdGrey +import colorLtGrey +import colorWhite +import colorCyan +import colorMagenta +import colorYellow +import colorBlue +import colorGreen +import colorRed +import colorBlack +import bytedirs +import Com_Memcpy +import Com_Memset +import Hunk_Alloc +import FloatSwap +import LongSwap +import ShortSwap +import acos +import fabs +import abs +import tan +import atan2 +import cos +import sin +import sqrt +import floor +import ceil +import memcpy +import memset +import memmove +import sscanf +import vsprintf +import _atoi +import atoi +import _atof +import atof +import toupper +import tolower +import strncpy +import strstr +import strchr +import strcmp +import strcpy +import strcat +import strlen +import rand +import srand +import qsort +lit +align 1 +LABELV $563 +byte 1 70 +byte 1 97 +byte 1 105 +byte 1 108 +byte 1 101 +byte 1 100 +byte 1 32 +byte 1 116 +byte 1 111 +byte 1 32 +byte 1 108 +byte 1 111 +byte 1 97 +byte 1 100 +byte 1 32 +byte 1 97 +byte 1 110 +byte 1 105 +byte 1 109 +byte 1 97 +byte 1 116 +byte 1 105 +byte 1 111 +byte 1 110 +byte 1 32 +byte 1 102 +byte 1 105 +byte 1 108 +byte 1 101 +byte 1 32 +byte 1 37 +byte 1 115 +byte 1 10 +byte 1 0 +align 1 +LABELV $560 +byte 1 109 +byte 1 111 +byte 1 100 +byte 1 101 +byte 1 108 +byte 1 115 +byte 1 47 +byte 1 112 +byte 1 108 +byte 1 97 +byte 1 121 +byte 1 101 +byte 1 114 +byte 1 115 +byte 1 47 +byte 1 99 +byte 1 104 +byte 1 97 +byte 1 114 +byte 1 97 +byte 1 99 +byte 1 116 +byte 1 101 +byte 1 114 +byte 1 115 +byte 1 47 +byte 1 37 +byte 1 115 +byte 1 47 +byte 1 97 +byte 1 110 +byte 1 105 +byte 1 109 +byte 1 97 +byte 1 116 +byte 1 105 +byte 1 111 +byte 1 110 +byte 1 46 +byte 1 99 +byte 1 102 +byte 1 103 +byte 1 0 +align 1 +LABELV $557 +byte 1 109 +byte 1 111 +byte 1 100 +byte 1 101 +byte 1 108 +byte 1 115 +byte 1 47 +byte 1 112 +byte 1 108 +byte 1 97 +byte 1 121 +byte 1 101 +byte 1 114 +byte 1 115 +byte 1 47 +byte 1 37 +byte 1 115 +byte 1 47 +byte 1 97 +byte 1 110 +byte 1 105 +byte 1 109 +byte 1 97 +byte 1 116 +byte 1 105 +byte 1 111 +byte 1 110 +byte 1 46 +byte 1 99 +byte 1 102 +byte 1 103 +byte 1 0 +align 1 +LABELV $556 +byte 1 70 +byte 1 97 +byte 1 105 +byte 1 108 +byte 1 101 +byte 1 100 +byte 1 32 +byte 1 116 +byte 1 111 +byte 1 32 +byte 1 108 +byte 1 111 +byte 1 97 +byte 1 100 +byte 1 32 +byte 1 115 +byte 1 107 +byte 1 105 +byte 1 110 +byte 1 32 +byte 1 102 +byte 1 105 +byte 1 108 +byte 1 101 +byte 1 58 +byte 1 32 +byte 1 37 +byte 1 115 +byte 1 32 +byte 1 58 +byte 1 32 +byte 1 37 +byte 1 115 +byte 1 10 +byte 1 0 +align 1 +LABELV $547 +byte 1 109 +byte 1 111 +byte 1 100 +byte 1 101 +byte 1 108 +byte 1 115 +byte 1 47 +byte 1 112 +byte 1 108 +byte 1 97 +byte 1 121 +byte 1 101 +byte 1 114 +byte 1 115 +byte 1 47 +byte 1 37 +byte 1 115 +byte 1 47 +byte 1 104 +byte 1 101 +byte 1 97 +byte 1 100 +byte 1 46 +byte 1 109 +byte 1 100 +byte 1 51 +byte 1 0 +align 1 +LABELV $544 +byte 1 109 +byte 1 111 +byte 1 100 +byte 1 101 +byte 1 108 +byte 1 115 +byte 1 47 +byte 1 112 +byte 1 108 +byte 1 97 +byte 1 121 +byte 1 101 +byte 1 114 +byte 1 115 +byte 1 47 +byte 1 104 +byte 1 101 +byte 1 97 +byte 1 100 +byte 1 115 +byte 1 47 +byte 1 37 +byte 1 115 +byte 1 47 +byte 1 37 +byte 1 115 +byte 1 46 +byte 1 109 +byte 1 100 +byte 1 51 +byte 1 0 +align 1 +LABELV $539 +byte 1 109 +byte 1 111 +byte 1 100 +byte 1 101 +byte 1 108 +byte 1 115 +byte 1 47 +byte 1 112 +byte 1 108 +byte 1 97 +byte 1 121 +byte 1 101 +byte 1 114 +byte 1 115 +byte 1 47 +byte 1 99 +byte 1 104 +byte 1 97 +byte 1 114 +byte 1 97 +byte 1 99 +byte 1 116 +byte 1 101 +byte 1 114 +byte 1 115 +byte 1 47 +byte 1 37 +byte 1 115 +byte 1 47 +byte 1 117 +byte 1 112 +byte 1 112 +byte 1 101 +byte 1 114 +byte 1 46 +byte 1 109 +byte 1 100 +byte 1 51 +byte 1 0 +align 1 +LABELV $536 +byte 1 109 +byte 1 111 +byte 1 100 +byte 1 101 +byte 1 108 +byte 1 115 +byte 1 47 +byte 1 112 +byte 1 108 +byte 1 97 +byte 1 121 +byte 1 101 +byte 1 114 +byte 1 115 +byte 1 47 +byte 1 37 +byte 1 115 +byte 1 47 +byte 1 117 +byte 1 112 +byte 1 112 +byte 1 101 +byte 1 114 +byte 1 46 +byte 1 109 +byte 1 100 +byte 1 51 +byte 1 0 +align 1 +LABELV $535 +byte 1 70 +byte 1 97 +byte 1 105 +byte 1 108 +byte 1 101 +byte 1 100 +byte 1 32 +byte 1 116 +byte 1 111 +byte 1 32 +byte 1 108 +byte 1 111 +byte 1 97 +byte 1 100 +byte 1 32 +byte 1 109 +byte 1 111 +byte 1 100 +byte 1 101 +byte 1 108 +byte 1 32 +byte 1 102 +byte 1 105 +byte 1 108 +byte 1 101 +byte 1 32 +byte 1 37 +byte 1 115 +byte 1 10 +byte 1 0 +align 1 +LABELV $532 +byte 1 109 +byte 1 111 +byte 1 100 +byte 1 101 +byte 1 108 +byte 1 115 +byte 1 47 +byte 1 112 +byte 1 108 +byte 1 97 +byte 1 121 +byte 1 101 +byte 1 114 +byte 1 115 +byte 1 47 +byte 1 99 +byte 1 104 +byte 1 97 +byte 1 114 +byte 1 97 +byte 1 99 +byte 1 116 +byte 1 101 +byte 1 114 +byte 1 115 +byte 1 47 +byte 1 37 +byte 1 115 +byte 1 47 +byte 1 108 +byte 1 111 +byte 1 119 +byte 1 101 +byte 1 114 +byte 1 46 +byte 1 109 +byte 1 100 +byte 1 51 +byte 1 0 +align 1 +LABELV $529 +byte 1 109 +byte 1 111 +byte 1 100 +byte 1 101 +byte 1 108 +byte 1 115 +byte 1 47 +byte 1 112 +byte 1 108 +byte 1 97 +byte 1 121 +byte 1 101 +byte 1 114 +byte 1 115 +byte 1 47 +byte 1 37 +byte 1 115 +byte 1 47 +byte 1 108 +byte 1 111 +byte 1 119 +byte 1 101 +byte 1 114 +byte 1 46 +byte 1 109 +byte 1 100 +byte 1 51 +byte 1 0 +align 1 +LABELV $521 +byte 1 69 +byte 1 114 +byte 1 114 +byte 1 111 +byte 1 114 +byte 1 32 +byte 1 112 +byte 1 97 +byte 1 114 +byte 1 115 +byte 1 105 +byte 1 110 +byte 1 103 +byte 1 32 +byte 1 97 +byte 1 110 +byte 1 105 +byte 1 109 +byte 1 97 +byte 1 116 +byte 1 105 +byte 1 111 +byte 1 110 +byte 1 32 +byte 1 102 +byte 1 105 +byte 1 108 +byte 1 101 +byte 1 58 +byte 1 32 +byte 1 37 +byte 1 115 +byte 1 0 +align 1 +LABELV $500 +byte 1 117 +byte 1 110 +byte 1 107 +byte 1 110 +byte 1 111 +byte 1 119 +byte 1 110 +byte 1 32 +byte 1 116 +byte 1 111 +byte 1 107 +byte 1 101 +byte 1 110 +byte 1 32 +byte 1 39 +byte 1 37 +byte 1 115 +byte 1 39 +byte 1 32 +byte 1 105 +byte 1 115 +byte 1 32 +byte 1 37 +byte 1 115 +byte 1 10 +byte 1 0 +align 1 +LABELV $495 +byte 1 115 +byte 1 101 +byte 1 120 +byte 1 0 +align 1 +LABELV $486 +byte 1 104 +byte 1 101 +byte 1 97 +byte 1 100 +byte 1 111 +byte 1 102 +byte 1 102 +byte 1 115 +byte 1 101 +byte 1 116 +byte 1 0 +align 1 +LABELV $481 +byte 1 102 +byte 1 111 +byte 1 111 +byte 1 116 +byte 1 115 +byte 1 116 +byte 1 101 +byte 1 112 +byte 1 115 +byte 1 0 +align 1 +LABELV $473 +byte 1 70 +byte 1 105 +byte 1 108 +byte 1 101 +byte 1 32 +byte 1 37 +byte 1 115 +byte 1 32 +byte 1 116 +byte 1 111 +byte 1 111 +byte 1 32 +byte 1 108 +byte 1 111 +byte 1 110 +byte 1 103 +byte 1 10 +byte 1 0 +align 1 +LABELV $463 +byte 1 115 +byte 1 107 +byte 1 105 +byte 1 110 +byte 1 0 +align 1 +LABELV $462 +byte 1 104 +byte 1 101 +byte 1 97 +byte 1 100 +byte 1 0 +align 1 +LABELV $459 +byte 1 109 +byte 1 111 +byte 1 100 +byte 1 101 +byte 1 108 +byte 1 115 +byte 1 47 +byte 1 112 +byte 1 108 +byte 1 97 +byte 1 121 +byte 1 101 +byte 1 114 +byte 1 115 +byte 1 47 +byte 1 99 +byte 1 104 +byte 1 97 +byte 1 114 +byte 1 97 +byte 1 99 +byte 1 116 +byte 1 101 +byte 1 114 +byte 1 115 +byte 1 47 +byte 1 37 +byte 1 115 +byte 1 47 +byte 1 117 +byte 1 112 +byte 1 112 +byte 1 101 +byte 1 114 +byte 1 95 +byte 1 37 +byte 1 115 +byte 1 46 +byte 1 115 +byte 1 107 +byte 1 105 +byte 1 110 +byte 1 0 +align 1 +LABELV $458 +byte 1 109 +byte 1 111 +byte 1 100 +byte 1 101 +byte 1 108 +byte 1 115 +byte 1 47 +byte 1 112 +byte 1 108 +byte 1 97 +byte 1 121 +byte 1 101 +byte 1 114 +byte 1 115 +byte 1 47 +byte 1 99 +byte 1 104 +byte 1 97 +byte 1 114 +byte 1 97 +byte 1 99 +byte 1 116 +byte 1 101 +byte 1 114 +byte 1 115 +byte 1 47 +byte 1 37 +byte 1 115 +byte 1 47 +byte 1 37 +byte 1 115 +byte 1 47 +byte 1 117 +byte 1 112 +byte 1 112 +byte 1 101 +byte 1 114 +byte 1 95 +byte 1 37 +byte 1 115 +byte 1 46 +byte 1 115 +byte 1 107 +byte 1 105 +byte 1 110 +byte 1 0 +align 1 +LABELV $453 +byte 1 109 +byte 1 111 +byte 1 100 +byte 1 101 +byte 1 108 +byte 1 115 +byte 1 47 +byte 1 112 +byte 1 108 +byte 1 97 +byte 1 121 +byte 1 101 +byte 1 114 +byte 1 115 +byte 1 47 +byte 1 37 +byte 1 115 +byte 1 47 +byte 1 117 +byte 1 112 +byte 1 112 +byte 1 101 +byte 1 114 +byte 1 95 +byte 1 37 +byte 1 115 +byte 1 46 +byte 1 115 +byte 1 107 +byte 1 105 +byte 1 110 +byte 1 0 +align 1 +LABELV $452 +byte 1 109 +byte 1 111 +byte 1 100 +byte 1 101 +byte 1 108 +byte 1 115 +byte 1 47 +byte 1 112 +byte 1 108 +byte 1 97 +byte 1 121 +byte 1 101 +byte 1 114 +byte 1 115 +byte 1 47 +byte 1 37 +byte 1 115 +byte 1 47 +byte 1 37 +byte 1 115 +byte 1 47 +byte 1 117 +byte 1 112 +byte 1 112 +byte 1 101 +byte 1 114 +byte 1 95 +byte 1 37 +byte 1 115 +byte 1 46 +byte 1 115 +byte 1 107 +byte 1 105 +byte 1 110 +byte 1 0 +align 1 +LABELV $449 +byte 1 109 +byte 1 111 +byte 1 100 +byte 1 101 +byte 1 108 +byte 1 115 +byte 1 47 +byte 1 112 +byte 1 108 +byte 1 97 +byte 1 121 +byte 1 101 +byte 1 114 +byte 1 115 +byte 1 47 +byte 1 99 +byte 1 104 +byte 1 97 +byte 1 114 +byte 1 97 +byte 1 99 +byte 1 116 +byte 1 101 +byte 1 114 +byte 1 115 +byte 1 47 +byte 1 37 +byte 1 115 +byte 1 47 +byte 1 108 +byte 1 111 +byte 1 119 +byte 1 101 +byte 1 114 +byte 1 95 +byte 1 37 +byte 1 115 +byte 1 46 +byte 1 115 +byte 1 107 +byte 1 105 +byte 1 110 +byte 1 0 +align 1 +LABELV $448 +byte 1 109 +byte 1 111 +byte 1 100 +byte 1 101 +byte 1 108 +byte 1 115 +byte 1 47 +byte 1 112 +byte 1 108 +byte 1 97 +byte 1 121 +byte 1 101 +byte 1 114 +byte 1 115 +byte 1 47 +byte 1 99 +byte 1 104 +byte 1 97 +byte 1 114 +byte 1 97 +byte 1 99 +byte 1 116 +byte 1 101 +byte 1 114 +byte 1 115 +byte 1 47 +byte 1 37 +byte 1 115 +byte 1 47 +byte 1 37 +byte 1 115 +byte 1 47 +byte 1 108 +byte 1 111 +byte 1 119 +byte 1 101 +byte 1 114 +byte 1 95 +byte 1 37 +byte 1 115 +byte 1 46 +byte 1 115 +byte 1 107 +byte 1 105 +byte 1 110 +byte 1 0 +align 1 +LABELV $443 +byte 1 109 +byte 1 111 +byte 1 100 +byte 1 101 +byte 1 108 +byte 1 115 +byte 1 47 +byte 1 112 +byte 1 108 +byte 1 97 +byte 1 121 +byte 1 101 +byte 1 114 +byte 1 115 +byte 1 47 +byte 1 37 +byte 1 115 +byte 1 47 +byte 1 108 +byte 1 111 +byte 1 119 +byte 1 101 +byte 1 114 +byte 1 95 +byte 1 37 +byte 1 115 +byte 1 46 +byte 1 115 +byte 1 107 +byte 1 105 +byte 1 110 +byte 1 0 +align 1 +LABELV $442 +byte 1 109 +byte 1 111 +byte 1 100 +byte 1 101 +byte 1 108 +byte 1 115 +byte 1 47 +byte 1 112 +byte 1 108 +byte 1 97 +byte 1 121 +byte 1 101 +byte 1 114 +byte 1 115 +byte 1 47 +byte 1 37 +byte 1 115 +byte 1 47 +byte 1 37 +byte 1 115 +byte 1 47 +byte 1 108 +byte 1 111 +byte 1 119 +byte 1 101 +byte 1 114 +byte 1 95 +byte 1 37 +byte 1 115 +byte 1 46 +byte 1 115 +byte 1 107 +byte 1 105 +byte 1 110 +byte 1 0 +align 1 +LABELV $431 +byte 1 109 +byte 1 111 +byte 1 100 +byte 1 101 +byte 1 108 +byte 1 115 +byte 1 47 +byte 1 112 +byte 1 108 +byte 1 97 +byte 1 121 +byte 1 101 +byte 1 114 +byte 1 115 +byte 1 47 +byte 1 37 +byte 1 115 +byte 1 37 +byte 1 115 +byte 1 47 +byte 1 37 +byte 1 115 +byte 1 95 +byte 1 37 +byte 1 115 +byte 1 46 +byte 1 37 +byte 1 115 +byte 1 0 +align 1 +LABELV $430 +byte 1 109 +byte 1 111 +byte 1 100 +byte 1 101 +byte 1 108 +byte 1 115 +byte 1 47 +byte 1 112 +byte 1 108 +byte 1 97 +byte 1 121 +byte 1 101 +byte 1 114 +byte 1 115 +byte 1 47 +byte 1 37 +byte 1 115 +byte 1 37 +byte 1 115 +byte 1 47 +byte 1 37 +byte 1 115 +byte 1 37 +byte 1 115 +byte 1 95 +byte 1 37 +byte 1 115 +byte 1 46 +byte 1 37 +byte 1 115 +byte 1 0 +align 1 +LABELV $425 +byte 1 109 +byte 1 111 +byte 1 100 +byte 1 101 +byte 1 108 +byte 1 115 +byte 1 47 +byte 1 112 +byte 1 108 +byte 1 97 +byte 1 121 +byte 1 101 +byte 1 114 +byte 1 115 +byte 1 47 +byte 1 37 +byte 1 115 +byte 1 37 +byte 1 115 +byte 1 47 +byte 1 37 +byte 1 115 +byte 1 47 +byte 1 37 +byte 1 115 +byte 1 95 +byte 1 37 +byte 1 115 +byte 1 46 +byte 1 37 +byte 1 115 +byte 1 0 +align 1 +LABELV $424 +byte 1 109 +byte 1 111 +byte 1 100 +byte 1 101 +byte 1 108 +byte 1 115 +byte 1 47 +byte 1 112 +byte 1 108 +byte 1 97 +byte 1 121 +byte 1 101 +byte 1 114 +byte 1 115 +byte 1 47 +byte 1 37 +byte 1 115 +byte 1 37 +byte 1 115 +byte 1 47 +byte 1 37 +byte 1 115 +byte 1 47 +byte 1 37 +byte 1 115 +byte 1 37 +byte 1 115 +byte 1 95 +byte 1 37 +byte 1 115 +byte 1 46 +byte 1 37 +byte 1 115 +byte 1 0 +align 1 +LABELV $414 +byte 1 0 +align 1 +LABELV $413 +byte 1 104 +byte 1 101 +byte 1 97 +byte 1 100 +byte 1 115 +byte 1 47 +byte 1 0 +align 1 +LABELV $410 +byte 1 100 +byte 1 101 +byte 1 102 +byte 1 97 +byte 1 117 +byte 1 108 +byte 1 116 +byte 1 0 +align 1 +LABELV $401 +byte 1 115 +byte 1 112 +byte 1 114 +byte 1 105 +byte 1 116 +byte 1 101 +byte 1 115 +byte 1 47 +byte 1 98 +byte 1 97 +byte 1 108 +byte 1 108 +byte 1 111 +byte 1 111 +byte 1 110 +byte 1 51 +byte 1 0 +align 1 +LABELV $392 +byte 1 116 +byte 1 97 +byte 1 103 +byte 1 95 +byte 1 102 +byte 1 108 +byte 1 97 +byte 1 115 +byte 1 104 +byte 1 0 +align 1 +LABELV $384 +byte 1 116 +byte 1 97 +byte 1 103 +byte 1 95 +byte 1 119 +byte 1 101 +byte 1 97 +byte 1 112 +byte 1 111 +byte 1 110 +byte 1 0 +align 1 +LABELV $378 +byte 1 116 +byte 1 97 +byte 1 103 +byte 1 95 +byte 1 104 +byte 1 101 +byte 1 97 +byte 1 100 +byte 1 0 +align 1 +LABELV $370 +byte 1 116 +byte 1 97 +byte 1 103 +byte 1 95 +byte 1 116 +byte 1 111 +byte 1 114 +byte 1 115 +byte 1 111 +byte 1 0 +align 1 +LABELV $180 +byte 1 66 +byte 1 97 +byte 1 100 +byte 1 32 +byte 1 97 +byte 1 110 +byte 1 105 +byte 1 109 +byte 1 97 +byte 1 116 +byte 1 105 +byte 1 111 +byte 1 110 +byte 1 32 +byte 1 110 +byte 1 117 +byte 1 109 +byte 1 98 +byte 1 101 +byte 1 114 +byte 1 58 +byte 1 32 +byte 1 37 +byte 1 105 +byte 1 0 +align 1 +LABELV $109 +byte 1 95 +byte 1 102 +byte 1 108 +byte 1 97 +byte 1 115 +byte 1 104 +byte 1 46 +byte 1 109 +byte 1 100 +byte 1 51 +byte 1 0 diff --git a/ta_ui/vm/ui_shared.asm b/ta_ui/vm/ui_shared.asm new file mode 100644 index 00000000..68658285 --- /dev/null +++ b/ta_ui/vm/ui_shared.asm @@ -0,0 +1,42810 @@ +data +align 4 +LABELV captureFunc +byte 4 0 +align 4 +LABELV captureData +byte 4 0 +align 4 +LABELV itemCapture +byte 4 0 +export DC +align 4 +LABELV DC +byte 4 0 +align 4 +LABELV g_waitingForKey +byte 4 0 +align 4 +LABELV g_editingField +byte 4 0 +align 4 +LABELV g_bindItem +byte 4 0 +align 4 +LABELV g_editItem +byte 4 0 +export menuCount +align 4 +LABELV menuCount +byte 4 0 +export openMenuCount +align 4 +LABELV openMenuCount +byte 4 0 +align 4 +LABELV debugMode +byte 4 0 +align 4 +LABELV lastListBoxClickTime +byte 4 0 +export UI_Alloc +code +proc UI_Alloc 8 4 +file "../ui_shared.c" +line 71 +;1:// +;2:// string allocation/managment +;3: +;4:#include "ui_shared.h" +;5: +;6:#define SCROLL_TIME_START 500 +;7:#define SCROLL_TIME_ADJUST 150 +;8:#define SCROLL_TIME_ADJUSTOFFSET 40 +;9:#define SCROLL_TIME_FLOOR 20 +;10: +;11:typedef struct scrollInfo_s { +;12: int nextScrollTime; +;13: int nextAdjustTime; +;14: int adjustValue; +;15: int scrollKey; +;16: float xStart; +;17: float yStart; +;18: itemDef_t *item; +;19: qboolean scrollDir; +;20:} scrollInfo_t; +;21: +;22:static scrollInfo_t scrollInfo; +;23: +;24:static void (*captureFunc) (void *p) = NULL; +;25:static void *captureData = NULL; +;26:static itemDef_t *itemCapture = NULL; // item that has the mouse captured ( if any ) +;27: +;28:displayContextDef_t *DC = NULL; +;29: +;30:static qboolean g_waitingForKey = qfalse; +;31:static qboolean g_editingField = qfalse; +;32: +;33:static itemDef_t *g_bindItem = NULL; +;34:static itemDef_t *g_editItem = NULL; +;35: +;36:menuDef_t Menus[MAX_MENUS]; // defined menus +;37:int menuCount = 0; // how many +;38: +;39:menuDef_t *menuStack[MAX_OPEN_MENUS]; +;40:int openMenuCount = 0; +;41: +;42:static qboolean debugMode = qfalse; +;43: +;44:#define DOUBLE_CLICK_DELAY 300 +;45:static int lastListBoxClickTime = 0; +;46: +;47:void Item_RunScript(itemDef_t *item, const char *s); +;48:void Item_SetupKeywordHash(void); +;49:void Menu_SetupKeywordHash(void); +;50:int BindingIDFromName(const char *name); +;51:qboolean Item_Bind_HandleKey(itemDef_t *item, int key, qboolean down); +;52:itemDef_t *Menu_SetPrevCursorItem(menuDef_t *menu); +;53:itemDef_t *Menu_SetNextCursorItem(menuDef_t *menu); +;54:static qboolean Menu_OverActiveItem(menuDef_t *menu, float x, float y); +;55: +;56:#ifdef CGAME +;57:#define MEM_POOL_SIZE 128 * 1024 +;58:#else +;59:#define MEM_POOL_SIZE 1024 * 1024 +;60:#endif +;61: +;62:static char memoryPool[MEM_POOL_SIZE]; +;63:static int allocPoint, outOfMemory; +;64: +;65: +;66:/* +;67:=============== +;68:UI_Alloc +;69:=============== +;70:*/ +;71:void *UI_Alloc( int size ) { +line 74 +;72: char *p; +;73: +;74: if ( allocPoint + size > MEM_POOL_SIZE ) { +ADDRGP4 allocPoint +INDIRI4 +ADDRFP4 0 +INDIRI4 +ADDI4 +CNSTI4 1048576 +LEI4 $41 +line 75 +;75: outOfMemory = qtrue; +ADDRGP4 outOfMemory +CNSTI4 1 +ASGNI4 +line 76 +;76: if (DC->Print) { +ADDRGP4 DC +INDIRP4 +CNSTI4 156 +ADDP4 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $43 +line 77 +;77: DC->Print("UI_Alloc: Failure. Out of memory!\n"); +ADDRGP4 $45 +ARGP4 +ADDRGP4 DC +INDIRP4 +CNSTI4 156 +ADDP4 +INDIRP4 +CALLV +pop +line 78 +;78: } +LABELV $43 +line 80 +;79: //DC->trap_Print(S_COLOR_YELLOW"WARNING: UI Out of Memory!\n"); +;80: return NULL; +CNSTP4 0 +RETP4 +ADDRGP4 $40 +JUMPV +LABELV $41 +line 83 +;81: } +;82: +;83: p = &memoryPool[allocPoint]; +ADDRLP4 0 +ADDRGP4 allocPoint +INDIRI4 +ADDRGP4 memoryPool +ADDP4 +ASGNP4 +line 85 +;84: +;85: allocPoint += ( size + 15 ) & ~15; +ADDRLP4 4 +ADDRGP4 allocPoint +ASGNP4 +ADDRLP4 4 +INDIRP4 +ADDRLP4 4 +INDIRP4 +INDIRI4 +ADDRFP4 0 +INDIRI4 +CNSTI4 15 +ADDI4 +CNSTI4 -16 +BANDI4 +ADDI4 +ASGNI4 +line 87 +;86: +;87: return p; +ADDRLP4 0 +INDIRP4 +RETP4 +LABELV $40 +endproc UI_Alloc 8 4 +export UI_InitMemory +proc UI_InitMemory 0 0 +line 95 +;88:} +;89: +;90:/* +;91:=============== +;92:UI_InitMemory +;93:=============== +;94:*/ +;95:void UI_InitMemory( void ) { +line 96 +;96: allocPoint = 0; +ADDRGP4 allocPoint +CNSTI4 0 +ASGNI4 +line 97 +;97: outOfMemory = qfalse; +ADDRGP4 outOfMemory +CNSTI4 0 +ASGNI4 +line 98 +;98:} +LABELV $46 +endproc UI_InitMemory 0 0 +export UI_OutOfMemory +proc UI_OutOfMemory 0 0 +line 100 +;99: +;100:qboolean UI_OutOfMemory() { +line 101 +;101: return outOfMemory; +ADDRGP4 outOfMemory +INDIRI4 +RETI4 +LABELV $47 +endproc UI_OutOfMemory 0 0 +proc hashForString 16 4 +line 114 +;102:} +;103: +;104: +;105: +;106: +;107: +;108:#define HASH_TABLE_SIZE 2048 +;109:/* +;110:================ +;111:return a hash value for the string +;112:================ +;113:*/ +;114:static long hashForString(const char *str) { +line 119 +;115: int i; +;116: long hash; +;117: char letter; +;118: +;119: hash = 0; +ADDRLP4 8 +CNSTI4 0 +ASGNI4 +line 120 +;120: i = 0; +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +ADDRGP4 $50 +JUMPV +LABELV $49 +line 121 +;121: while (str[i] != '\0') { +line 122 +;122: letter = tolower(str[i]); +ADDRLP4 0 +INDIRI4 +ADDRFP4 0 +INDIRP4 +ADDP4 +INDIRI1 +CVII4 1 +ARGI4 +ADDRLP4 12 +ADDRGP4 tolower +CALLI4 +ASGNI4 +ADDRLP4 4 +ADDRLP4 12 +INDIRI4 +CVII1 4 +ASGNI1 +line 123 +;123: hash+=(long)(letter)*(i+119); +ADDRLP4 8 +ADDRLP4 8 +INDIRI4 +ADDRLP4 4 +INDIRI1 +CVII4 1 +ADDRLP4 0 +INDIRI4 +CNSTI4 119 +ADDI4 +MULI4 +ADDI4 +ASGNI4 +line 124 +;124: i++; +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 125 +;125: } +LABELV $50 +line 121 +ADDRLP4 0 +INDIRI4 +ADDRFP4 0 +INDIRP4 +ADDP4 +INDIRI1 +CVII4 1 +CNSTI4 0 +NEI4 $49 +line 126 +;126: hash &= (HASH_TABLE_SIZE-1); +ADDRLP4 8 +ADDRLP4 8 +INDIRI4 +CNSTI4 2047 +BANDI4 +ASGNI4 +line 127 +;127: return hash; +ADDRLP4 8 +INDIRI4 +RETI4 +LABELV $48 +endproc hashForString 16 4 +data +align 4 +LABELV strPoolIndex +byte 4 0 +align 4 +LABELV strHandleCount +byte 4 0 +align 4 +LABELV $53 +address $54 +export String_Alloc +code +proc String_Alloc 44 8 +line 142 +;128:} +;129: +;130:typedef struct stringDef_s { +;131: struct stringDef_s *next; +;132: const char *str; +;133:} stringDef_t; +;134: +;135:static int strPoolIndex = 0; +;136:static char strPool[STRING_POOL_SIZE]; +;137: +;138:static int strHandleCount = 0; +;139:static stringDef_t *strHandle[HASH_TABLE_SIZE]; +;140: +;141: +;142:const char *String_Alloc(const char *p) { +line 148 +;143: int len; +;144: long hash; +;145: stringDef_t *str, *last; +;146: static const char *staticNULL = ""; +;147: +;148: if (p == NULL) { +ADDRFP4 0 +INDIRP4 +CVPU4 4 +CNSTU4 0 +NEU4 $55 +line 149 +;149: return NULL; +CNSTP4 0 +RETP4 +ADDRGP4 $52 +JUMPV +LABELV $55 +line 152 +;150: } +;151: +;152: if (*p == 0) { +ADDRFP4 0 +INDIRP4 +INDIRI1 +CVII4 1 +CNSTI4 0 +NEI4 $57 +line 153 +;153: return staticNULL; +ADDRGP4 $53 +INDIRP4 +RETP4 +ADDRGP4 $52 +JUMPV +LABELV $57 +line 156 +;154: } +;155: +;156: hash = hashForString(p); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRLP4 16 +ADDRGP4 hashForString +CALLI4 +ASGNI4 +ADDRLP4 8 +ADDRLP4 16 +INDIRI4 +ASGNI4 +line 158 +;157: +;158: str = strHandle[hash]; +ADDRLP4 0 +ADDRLP4 8 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 strHandle +ADDP4 +INDIRP4 +ASGNP4 +ADDRGP4 $60 +JUMPV +LABELV $59 +line 159 +;159: while (str) { +line 160 +;160: if (strcmp(p, str->str) == 0) { +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRLP4 0 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRP4 +ARGP4 +ADDRLP4 20 +ADDRGP4 strcmp +CALLI4 +ASGNI4 +ADDRLP4 20 +INDIRI4 +CNSTI4 0 +NEI4 $62 +line 161 +;161: return str->str; +ADDRLP4 0 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRP4 +RETP4 +ADDRGP4 $52 +JUMPV +LABELV $62 +line 163 +;162: } +;163: str = str->next; +ADDRLP4 0 +ADDRLP4 0 +INDIRP4 +INDIRP4 +ASGNP4 +line 164 +;164: } +LABELV $60 +line 159 +ADDRLP4 0 +INDIRP4 +CVPU4 4 +CNSTU4 0 +NEU4 $59 +line 166 +;165: +;166: len = strlen(p); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRLP4 20 +ADDRGP4 strlen +CALLI4 +ASGNI4 +ADDRLP4 12 +ADDRLP4 20 +INDIRI4 +ASGNI4 +line 167 +;167: if (len + strPoolIndex + 1 < STRING_POOL_SIZE) { +ADDRLP4 12 +INDIRI4 +ADDRGP4 strPoolIndex +INDIRI4 +ADDI4 +CNSTI4 1 +ADDI4 +CNSTI4 393216 +GEI4 $64 +line 168 +;168: int ph = strPoolIndex; +ADDRLP4 24 +ADDRGP4 strPoolIndex +INDIRI4 +ASGNI4 +line 169 +;169: strcpy(&strPool[strPoolIndex], p); +ADDRGP4 strPoolIndex +INDIRI4 +ADDRGP4 strPool +ADDP4 +ARGP4 +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRGP4 strcpy +CALLP4 +pop +line 170 +;170: strPoolIndex += len + 1; +ADDRLP4 28 +ADDRGP4 strPoolIndex +ASGNP4 +ADDRLP4 28 +INDIRP4 +ADDRLP4 28 +INDIRP4 +INDIRI4 +ADDRLP4 12 +INDIRI4 +CNSTI4 1 +ADDI4 +ADDI4 +ASGNI4 +line 172 +;171: +;172: str = strHandle[hash]; +ADDRLP4 0 +ADDRLP4 8 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 strHandle +ADDP4 +INDIRP4 +ASGNP4 +line 173 +;173: last = str; +ADDRLP4 4 +ADDRLP4 0 +INDIRP4 +ASGNP4 +ADDRGP4 $67 +JUMPV +LABELV $66 +line 174 +;174: while (str && str->next) { +line 175 +;175: last = str; +ADDRLP4 4 +ADDRLP4 0 +INDIRP4 +ASGNP4 +line 176 +;176: str = str->next; +ADDRLP4 0 +ADDRLP4 0 +INDIRP4 +INDIRP4 +ASGNP4 +line 177 +;177: } +LABELV $67 +line 174 +ADDRLP4 36 +CNSTU4 0 +ASGNU4 +ADDRLP4 0 +INDIRP4 +CVPU4 4 +ADDRLP4 36 +INDIRU4 +EQU4 $69 +ADDRLP4 0 +INDIRP4 +INDIRP4 +CVPU4 4 +ADDRLP4 36 +INDIRU4 +NEU4 $66 +LABELV $69 +line 179 +;178: +;179: str = UI_Alloc(sizeof(stringDef_t)); +CNSTI4 8 +ARGI4 +ADDRLP4 40 +ADDRGP4 UI_Alloc +CALLP4 +ASGNP4 +ADDRLP4 0 +ADDRLP4 40 +INDIRP4 +ASGNP4 +line 180 +;180: str->next = NULL; +ADDRLP4 0 +INDIRP4 +CNSTP4 0 +ASGNP4 +line 181 +;181: str->str = &strPool[ph]; +ADDRLP4 0 +INDIRP4 +CNSTI4 4 +ADDP4 +ADDRLP4 24 +INDIRI4 +ADDRGP4 strPool +ADDP4 +ASGNP4 +line 182 +;182: if (last) { +ADDRLP4 4 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $70 +line 183 +;183: last->next = str; +ADDRLP4 4 +INDIRP4 +ADDRLP4 0 +INDIRP4 +ASGNP4 +line 184 +;184: } else { +ADDRGP4 $71 +JUMPV +LABELV $70 +line 185 +;185: strHandle[hash] = str; +ADDRLP4 8 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 strHandle +ADDP4 +ADDRLP4 0 +INDIRP4 +ASGNP4 +line 186 +;186: } +LABELV $71 +line 187 +;187: return &strPool[ph]; +ADDRLP4 24 +INDIRI4 +ADDRGP4 strPool +ADDP4 +RETP4 +ADDRGP4 $52 +JUMPV +LABELV $64 +line 189 +;188: } +;189: return NULL; +CNSTP4 0 +RETP4 +LABELV $52 +endproc String_Alloc 44 8 +export String_Report +proc String_Report 4 16 +line 192 +;190:} +;191: +;192:void String_Report() { +line 194 +;193: float f; +;194: Com_Printf("Memory/String Pool Info\n"); +ADDRGP4 $73 +ARGP4 +ADDRGP4 Com_Printf +CALLV +pop +line 195 +;195: Com_Printf("----------------\n"); +ADDRGP4 $74 +ARGP4 +ADDRGP4 Com_Printf +CALLV +pop +line 196 +;196: f = strPoolIndex; +ADDRLP4 0 +ADDRGP4 strPoolIndex +INDIRI4 +CVIF4 4 +ASGNF4 +line 197 +;197: f /= STRING_POOL_SIZE; +ADDRLP4 0 +ADDRLP4 0 +INDIRF4 +CNSTF4 1220542464 +DIVF4 +ASGNF4 +line 198 +;198: f *= 100; +ADDRLP4 0 +CNSTF4 1120403456 +ADDRLP4 0 +INDIRF4 +MULF4 +ASGNF4 +line 199 +;199: Com_Printf("String Pool is %.1f%% full, %i bytes out of %i used.\n", f, strPoolIndex, STRING_POOL_SIZE); +ADDRGP4 $75 +ARGP4 +ADDRLP4 0 +INDIRF4 +ARGF4 +ADDRGP4 strPoolIndex +INDIRI4 +ARGI4 +CNSTI4 393216 +ARGI4 +ADDRGP4 Com_Printf +CALLV +pop +line 200 +;200: f = allocPoint; +ADDRLP4 0 +ADDRGP4 allocPoint +INDIRI4 +CVIF4 4 +ASGNF4 +line 201 +;201: f /= MEM_POOL_SIZE; +ADDRLP4 0 +ADDRLP4 0 +INDIRF4 +CNSTF4 1233125376 +DIVF4 +ASGNF4 +line 202 +;202: f *= 100; +ADDRLP4 0 +CNSTF4 1120403456 +ADDRLP4 0 +INDIRF4 +MULF4 +ASGNF4 +line 203 +;203: Com_Printf("Memory Pool is %.1f%% full, %i bytes out of %i used.\n", f, allocPoint, MEM_POOL_SIZE); +ADDRGP4 $76 +ARGP4 +ADDRLP4 0 +INDIRF4 +ARGF4 +ADDRGP4 allocPoint +INDIRI4 +ARGI4 +CNSTI4 1048576 +ARGI4 +ADDRGP4 Com_Printf +CALLV +pop +line 204 +;204:} +LABELV $72 +endproc String_Report 4 16 +export String_Init +proc String_Init 12 0 +line 211 +;205: +;206:/* +;207:================= +;208:String_Init +;209:================= +;210:*/ +;211:void String_Init() { +line 213 +;212: int i; +;213: for (i = 0; i < HASH_TABLE_SIZE; i++) { +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +LABELV $78 +line 214 +;214: strHandle[i] = 0; +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 strHandle +ADDP4 +CNSTP4 0 +ASGNP4 +line 215 +;215: } +LABELV $79 +line 213 +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +ADDRLP4 0 +INDIRI4 +CNSTI4 2048 +LTI4 $78 +line 216 +;216: strHandleCount = 0; +ADDRGP4 strHandleCount +CNSTI4 0 +ASGNI4 +line 217 +;217: strPoolIndex = 0; +ADDRGP4 strPoolIndex +CNSTI4 0 +ASGNI4 +line 218 +;218: menuCount = 0; +ADDRGP4 menuCount +CNSTI4 0 +ASGNI4 +line 219 +;219: openMenuCount = 0; +ADDRGP4 openMenuCount +CNSTI4 0 +ASGNI4 +line 220 +;220: UI_InitMemory(); +ADDRGP4 UI_InitMemory +CALLV +pop +line 221 +;221: Item_SetupKeywordHash(); +ADDRGP4 Item_SetupKeywordHash +CALLV +pop +line 222 +;222: Menu_SetupKeywordHash(); +ADDRGP4 Menu_SetupKeywordHash +CALLV +pop +line 223 +;223: if (DC && DC->getBindingBuf) { +ADDRLP4 4 +ADDRGP4 DC +INDIRP4 +ASGNP4 +ADDRLP4 8 +CNSTU4 0 +ASGNU4 +ADDRLP4 4 +INDIRP4 +CVPU4 4 +ADDRLP4 8 +INDIRU4 +EQU4 $82 +ADDRLP4 4 +INDIRP4 +CNSTI4 140 +ADDP4 +INDIRP4 +CVPU4 4 +ADDRLP4 8 +INDIRU4 +EQU4 $82 +line 224 +;224: Controls_GetConfig(); +ADDRGP4 Controls_GetConfig +CALLV +pop +line 225 +;225: } +LABELV $82 +line 226 +;226:} +LABELV $77 +endproc String_Init 12 0 +bss +align 1 +LABELV $85 +skip 4096 +export PC_SourceWarning +code +proc PC_SourceWarning 136 16 +line 233 +;227: +;228:/* +;229:================= +;230:PC_SourceWarning +;231:================= +;232:*/ +;233:void PC_SourceWarning(int handle, char *format, ...) { +line 239 +;234: int line; +;235: char filename[128]; +;236: va_list argptr; +;237: static char string[4096]; +;238: +;239: va_start (argptr, format); +ADDRLP4 132 +ADDRFP4 4+4 +ASGNP4 +line 240 +;240: vsprintf (string, format, argptr); +ADDRGP4 $85 +ARGP4 +ADDRFP4 4 +INDIRP4 +ARGP4 +ADDRLP4 132 +INDIRP4 +ARGP4 +ADDRGP4 vsprintf +CALLI4 +pop +line 241 +;241: va_end (argptr); +ADDRLP4 132 +CNSTP4 0 +ASGNP4 +line 243 +;242: +;243: filename[0] = '\0'; +ADDRLP4 4 +CNSTI1 0 +ASGNI1 +line 244 +;244: line = 0; +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +line 245 +;245: trap_PC_SourceFileAndLine(handle, filename, &line); +ADDRFP4 0 +INDIRI4 +ARGI4 +ADDRLP4 4 +ARGP4 +ADDRLP4 0 +ARGP4 +ADDRGP4 trap_PC_SourceFileAndLine +CALLI4 +pop +line 247 +;246: +;247: Com_Printf(S_COLOR_YELLOW "WARNING: %s, line %d: %s\n", filename, line, string); +ADDRGP4 $87 +ARGP4 +ADDRLP4 4 +ARGP4 +ADDRLP4 0 +INDIRI4 +ARGI4 +ADDRGP4 $85 +ARGP4 +ADDRGP4 Com_Printf +CALLV +pop +line 248 +;248:} +LABELV $84 +endproc PC_SourceWarning 136 16 +bss +align 1 +LABELV $89 +skip 4096 +export PC_SourceError +code +proc PC_SourceError 136 16 +line 255 +;249: +;250:/* +;251:================= +;252:PC_SourceError +;253:================= +;254:*/ +;255:void PC_SourceError(int handle, char *format, ...) { +line 261 +;256: int line; +;257: char filename[128]; +;258: va_list argptr; +;259: static char string[4096]; +;260: +;261: va_start (argptr, format); +ADDRLP4 132 +ADDRFP4 4+4 +ASGNP4 +line 262 +;262: vsprintf (string, format, argptr); +ADDRGP4 $89 +ARGP4 +ADDRFP4 4 +INDIRP4 +ARGP4 +ADDRLP4 132 +INDIRP4 +ARGP4 +ADDRGP4 vsprintf +CALLI4 +pop +line 263 +;263: va_end (argptr); +ADDRLP4 132 +CNSTP4 0 +ASGNP4 +line 265 +;264: +;265: filename[0] = '\0'; +ADDRLP4 4 +CNSTI1 0 +ASGNI1 +line 266 +;266: line = 0; +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +line 267 +;267: trap_PC_SourceFileAndLine(handle, filename, &line); +ADDRFP4 0 +INDIRI4 +ARGI4 +ADDRLP4 4 +ARGP4 +ADDRLP4 0 +ARGP4 +ADDRGP4 trap_PC_SourceFileAndLine +CALLI4 +pop +line 269 +;268: +;269: Com_Printf(S_COLOR_RED "ERROR: %s, line %d: %s\n", filename, line, string); +ADDRGP4 $91 +ARGP4 +ADDRLP4 4 +ARGP4 +ADDRLP4 0 +INDIRI4 +ARGI4 +ADDRGP4 $89 +ARGP4 +ADDRGP4 Com_Printf +CALLV +pop +line 270 +;270:} +LABELV $88 +endproc PC_SourceError 136 16 +export LerpColor +proc LerpColor 12 0 +line 278 +;271: +;272:/* +;273:================= +;274:LerpColor +;275:================= +;276:*/ +;277:void LerpColor(vec4_t a, vec4_t b, vec4_t c, float t) +;278:{ +line 282 +;279: int i; +;280: +;281: // lerp and clamp each component +;282: for (i=0; i<4; i++) +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +LABELV $93 +line 283 +;283: { +line 284 +;284: c[i] = a[i] + t*(b[i]-a[i]); +ADDRLP4 4 +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ASGNI4 +ADDRLP4 8 +ADDRLP4 4 +INDIRI4 +ADDRFP4 0 +INDIRP4 +ADDP4 +INDIRF4 +ASGNF4 +ADDRLP4 4 +INDIRI4 +ADDRFP4 8 +INDIRP4 +ADDP4 +ADDRLP4 8 +INDIRF4 +ADDRFP4 12 +INDIRF4 +ADDRLP4 4 +INDIRI4 +ADDRFP4 4 +INDIRP4 +ADDP4 +INDIRF4 +ADDRLP4 8 +INDIRF4 +SUBF4 +MULF4 +ADDF4 +ASGNF4 +line 285 +;285: if (c[i] < 0) +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRFP4 8 +INDIRP4 +ADDP4 +INDIRF4 +CNSTF4 0 +GEF4 $97 +line 286 +;286: c[i] = 0; +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRFP4 8 +INDIRP4 +ADDP4 +CNSTF4 0 +ASGNF4 +ADDRGP4 $98 +JUMPV +LABELV $97 +line 287 +;287: else if (c[i] > 1.0) +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRFP4 8 +INDIRP4 +ADDP4 +INDIRF4 +CNSTF4 1065353216 +LEF4 $99 +line 288 +;288: c[i] = 1.0; +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRFP4 8 +INDIRP4 +ADDP4 +CNSTF4 1065353216 +ASGNF4 +LABELV $99 +LABELV $98 +line 289 +;289: } +LABELV $94 +line 282 +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +ADDRLP4 0 +INDIRI4 +CNSTI4 4 +LTI4 $93 +line 290 +;290:} +LABELV $92 +endproc LerpColor 12 0 +export Float_Parse +proc Float_Parse 16 8 +line 297 +;291: +;292:/* +;293:================= +;294:Float_Parse +;295:================= +;296:*/ +;297:qboolean Float_Parse(char **p, float *f) { +line 299 +;298: char *token; +;299: token = COM_ParseExt(p, qfalse); +ADDRFP4 0 +INDIRP4 +ARGP4 +CNSTI4 0 +ARGI4 +ADDRLP4 4 +ADDRGP4 COM_ParseExt +CALLP4 +ASGNP4 +ADDRLP4 0 +ADDRLP4 4 +INDIRP4 +ASGNP4 +line 300 +;300: if (token && token[0] != 0) { +ADDRLP4 0 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $102 +ADDRLP4 0 +INDIRP4 +INDIRI1 +CVII4 1 +CNSTI4 0 +EQI4 $102 +line 301 +;301: *f = atof(token); +ADDRLP4 0 +INDIRP4 +ARGP4 +ADDRLP4 12 +ADDRGP4 atof +CALLF4 +ASGNF4 +ADDRFP4 4 +INDIRP4 +ADDRLP4 12 +INDIRF4 +ASGNF4 +line 302 +;302: return qtrue; +CNSTI4 1 +RETI4 +ADDRGP4 $101 +JUMPV +LABELV $102 +line 303 +;303: } else { +line 304 +;304: return qfalse; +CNSTI4 0 +RETI4 +LABELV $101 +endproc Float_Parse 16 8 +export PC_Float_Parse +proc PC_Float_Parse 1052 12 +line 313 +;305: } +;306:} +;307: +;308:/* +;309:================= +;310:PC_Float_Parse +;311:================= +;312:*/ +;313:qboolean PC_Float_Parse(int handle, float *f) { +line 315 +;314: pc_token_t token; +;315: int negative = qfalse; +ADDRLP4 1040 +CNSTI4 0 +ASGNI4 +line 317 +;316: +;317: if (!trap_PC_ReadToken(handle, &token)) +ADDRFP4 0 +INDIRI4 +ARGI4 +ADDRLP4 0 +ARGP4 +ADDRLP4 1044 +ADDRGP4 trap_PC_ReadToken +CALLI4 +ASGNI4 +ADDRLP4 1044 +INDIRI4 +CNSTI4 0 +NEI4 $105 +line 318 +;318: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $104 +JUMPV +LABELV $105 +line 319 +;319: if (token.string[0] == '-') { +ADDRLP4 0+16 +INDIRI1 +CVII4 1 +CNSTI4 45 +NEI4 $107 +line 320 +;320: if (!trap_PC_ReadToken(handle, &token)) +ADDRFP4 0 +INDIRI4 +ARGI4 +ADDRLP4 0 +ARGP4 +ADDRLP4 1048 +ADDRGP4 trap_PC_ReadToken +CALLI4 +ASGNI4 +ADDRLP4 1048 +INDIRI4 +CNSTI4 0 +NEI4 $110 +line 321 +;321: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $104 +JUMPV +LABELV $110 +line 322 +;322: negative = qtrue; +ADDRLP4 1040 +CNSTI4 1 +ASGNI4 +line 323 +;323: } +LABELV $107 +line 324 +;324: if (token.type != TT_NUMBER) { +ADDRLP4 0 +INDIRI4 +CNSTI4 3 +EQI4 $112 +line 325 +;325: PC_SourceError(handle, "expected float but found %s\n", token.string); +ADDRFP4 0 +INDIRI4 +ARGI4 +ADDRGP4 $114 +ARGP4 +ADDRLP4 0+16 +ARGP4 +ADDRGP4 PC_SourceError +CALLV +pop +line 326 +;326: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $104 +JUMPV +LABELV $112 +line 328 +;327: } +;328: if (negative) +ADDRLP4 1040 +INDIRI4 +CNSTI4 0 +EQI4 $116 +line 329 +;329: *f = -token.floatvalue; +ADDRFP4 4 +INDIRP4 +ADDRLP4 0+12 +INDIRF4 +NEGF4 +ASGNF4 +ADDRGP4 $117 +JUMPV +LABELV $116 +line 331 +;330: else +;331: *f = token.floatvalue; +ADDRFP4 4 +INDIRP4 +ADDRLP4 0+12 +INDIRF4 +ASGNF4 +LABELV $117 +line 332 +;332: return qtrue; +CNSTI4 1 +RETI4 +LABELV $104 +endproc PC_Float_Parse 1052 12 +export Color_Parse +proc Color_Parse 12 8 +line 340 +;333:} +;334: +;335:/* +;336:================= +;337:Color_Parse +;338:================= +;339:*/ +;340:qboolean Color_Parse(char **p, vec4_t *c) { +line 344 +;341: int i; +;342: float f; +;343: +;344: for (i = 0; i < 4; i++) { +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +LABELV $121 +line 345 +;345: if (!Float_Parse(p, &f)) { +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRLP4 4 +ARGP4 +ADDRLP4 8 +ADDRGP4 Float_Parse +CALLI4 +ASGNI4 +ADDRLP4 8 +INDIRI4 +CNSTI4 0 +NEI4 $125 +line 346 +;346: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $120 +JUMPV +LABELV $125 +line 348 +;347: } +;348: (*c)[i] = f; +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRFP4 4 +INDIRP4 +ADDP4 +ADDRLP4 4 +INDIRF4 +ASGNF4 +line 349 +;349: } +LABELV $122 +line 344 +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +ADDRLP4 0 +INDIRI4 +CNSTI4 4 +LTI4 $121 +line 350 +;350: return qtrue; +CNSTI4 1 +RETI4 +LABELV $120 +endproc Color_Parse 12 8 +export PC_Color_Parse +proc PC_Color_Parse 12 8 +line 358 +;351:} +;352: +;353:/* +;354:================= +;355:PC_Color_Parse +;356:================= +;357:*/ +;358:qboolean PC_Color_Parse(int handle, vec4_t *c) { +line 362 +;359: int i; +;360: float f; +;361: +;362: for (i = 0; i < 4; i++) { +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +LABELV $128 +line 363 +;363: if (!PC_Float_Parse(handle, &f)) { +ADDRFP4 0 +INDIRI4 +ARGI4 +ADDRLP4 4 +ARGP4 +ADDRLP4 8 +ADDRGP4 PC_Float_Parse +CALLI4 +ASGNI4 +ADDRLP4 8 +INDIRI4 +CNSTI4 0 +NEI4 $132 +line 364 +;364: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $127 +JUMPV +LABELV $132 +line 366 +;365: } +;366: (*c)[i] = f; +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRFP4 4 +INDIRP4 +ADDP4 +ADDRLP4 4 +INDIRF4 +ASGNF4 +line 367 +;367: } +LABELV $129 +line 362 +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +ADDRLP4 0 +INDIRI4 +CNSTI4 4 +LTI4 $128 +line 368 +;368: return qtrue; +CNSTI4 1 +RETI4 +LABELV $127 +endproc PC_Color_Parse 12 8 +export Int_Parse +proc Int_Parse 16 8 +line 376 +;369:} +;370: +;371:/* +;372:================= +;373:Int_Parse +;374:================= +;375:*/ +;376:qboolean Int_Parse(char **p, int *i) { +line 378 +;377: char *token; +;378: token = COM_ParseExt(p, qfalse); +ADDRFP4 0 +INDIRP4 +ARGP4 +CNSTI4 0 +ARGI4 +ADDRLP4 4 +ADDRGP4 COM_ParseExt +CALLP4 +ASGNP4 +ADDRLP4 0 +ADDRLP4 4 +INDIRP4 +ASGNP4 +line 380 +;379: +;380: if (token && token[0] != 0) { +ADDRLP4 0 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $135 +ADDRLP4 0 +INDIRP4 +INDIRI1 +CVII4 1 +CNSTI4 0 +EQI4 $135 +line 381 +;381: *i = atoi(token); +ADDRLP4 0 +INDIRP4 +ARGP4 +ADDRLP4 12 +ADDRGP4 atoi +CALLI4 +ASGNI4 +ADDRFP4 4 +INDIRP4 +ADDRLP4 12 +INDIRI4 +ASGNI4 +line 382 +;382: return qtrue; +CNSTI4 1 +RETI4 +ADDRGP4 $134 +JUMPV +LABELV $135 +line 383 +;383: } else { +line 384 +;384: return qfalse; +CNSTI4 0 +RETI4 +LABELV $134 +endproc Int_Parse 16 8 +export PC_Int_Parse +proc PC_Int_Parse 1052 12 +line 393 +;385: } +;386:} +;387: +;388:/* +;389:================= +;390:PC_Int_Parse +;391:================= +;392:*/ +;393:qboolean PC_Int_Parse(int handle, int *i) { +line 395 +;394: pc_token_t token; +;395: int negative = qfalse; +ADDRLP4 1040 +CNSTI4 0 +ASGNI4 +line 397 +;396: +;397: if (!trap_PC_ReadToken(handle, &token)) +ADDRFP4 0 +INDIRI4 +ARGI4 +ADDRLP4 0 +ARGP4 +ADDRLP4 1044 +ADDRGP4 trap_PC_ReadToken +CALLI4 +ASGNI4 +ADDRLP4 1044 +INDIRI4 +CNSTI4 0 +NEI4 $138 +line 398 +;398: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $137 +JUMPV +LABELV $138 +line 399 +;399: if (token.string[0] == '-') { +ADDRLP4 0+16 +INDIRI1 +CVII4 1 +CNSTI4 45 +NEI4 $140 +line 400 +;400: if (!trap_PC_ReadToken(handle, &token)) +ADDRFP4 0 +INDIRI4 +ARGI4 +ADDRLP4 0 +ARGP4 +ADDRLP4 1048 +ADDRGP4 trap_PC_ReadToken +CALLI4 +ASGNI4 +ADDRLP4 1048 +INDIRI4 +CNSTI4 0 +NEI4 $143 +line 401 +;401: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $137 +JUMPV +LABELV $143 +line 402 +;402: negative = qtrue; +ADDRLP4 1040 +CNSTI4 1 +ASGNI4 +line 403 +;403: } +LABELV $140 +line 404 +;404: if (token.type != TT_NUMBER) { +ADDRLP4 0 +INDIRI4 +CNSTI4 3 +EQI4 $145 +line 405 +;405: PC_SourceError(handle, "expected integer but found %s\n", token.string); +ADDRFP4 0 +INDIRI4 +ARGI4 +ADDRGP4 $147 +ARGP4 +ADDRLP4 0+16 +ARGP4 +ADDRGP4 PC_SourceError +CALLV +pop +line 406 +;406: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $137 +JUMPV +LABELV $145 +line 408 +;407: } +;408: *i = token.intvalue; +ADDRFP4 4 +INDIRP4 +ADDRLP4 0+8 +INDIRI4 +ASGNI4 +line 409 +;409: if (negative) +ADDRLP4 1040 +INDIRI4 +CNSTI4 0 +EQI4 $150 +line 410 +;410: *i = - *i; +ADDRLP4 1048 +ADDRFP4 4 +INDIRP4 +ASGNP4 +ADDRLP4 1048 +INDIRP4 +ADDRLP4 1048 +INDIRP4 +INDIRI4 +NEGI4 +ASGNI4 +LABELV $150 +line 411 +;411: return qtrue; +CNSTI4 1 +RETI4 +LABELV $137 +endproc PC_Int_Parse 1052 12 +export Rect_Parse +proc Rect_Parse 16 8 +line 419 +;412:} +;413: +;414:/* +;415:================= +;416:Rect_Parse +;417:================= +;418:*/ +;419:qboolean Rect_Parse(char **p, rectDef_t *r) { +line 420 +;420: if (Float_Parse(p, &r->x)) { +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRFP4 4 +INDIRP4 +ARGP4 +ADDRLP4 0 +ADDRGP4 Float_Parse +CALLI4 +ASGNI4 +ADDRLP4 0 +INDIRI4 +CNSTI4 0 +EQI4 $153 +line 421 +;421: if (Float_Parse(p, &r->y)) { +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRFP4 4 +INDIRP4 +CNSTI4 4 +ADDP4 +ARGP4 +ADDRLP4 4 +ADDRGP4 Float_Parse +CALLI4 +ASGNI4 +ADDRLP4 4 +INDIRI4 +CNSTI4 0 +EQI4 $155 +line 422 +;422: if (Float_Parse(p, &r->w)) { +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRFP4 4 +INDIRP4 +CNSTI4 8 +ADDP4 +ARGP4 +ADDRLP4 8 +ADDRGP4 Float_Parse +CALLI4 +ASGNI4 +ADDRLP4 8 +INDIRI4 +CNSTI4 0 +EQI4 $157 +line 423 +;423: if (Float_Parse(p, &r->h)) { +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRFP4 4 +INDIRP4 +CNSTI4 12 +ADDP4 +ARGP4 +ADDRLP4 12 +ADDRGP4 Float_Parse +CALLI4 +ASGNI4 +ADDRLP4 12 +INDIRI4 +CNSTI4 0 +EQI4 $159 +line 424 +;424: return qtrue; +CNSTI4 1 +RETI4 +ADDRGP4 $152 +JUMPV +LABELV $159 +line 426 +;425: } +;426: } +LABELV $157 +line 427 +;427: } +LABELV $155 +line 428 +;428: } +LABELV $153 +line 429 +;429: return qfalse; +CNSTI4 0 +RETI4 +LABELV $152 +endproc Rect_Parse 16 8 +export PC_Rect_Parse +proc PC_Rect_Parse 16 8 +line 437 +;430:} +;431: +;432:/* +;433:================= +;434:PC_Rect_Parse +;435:================= +;436:*/ +;437:qboolean PC_Rect_Parse(int handle, rectDef_t *r) { +line 438 +;438: if (PC_Float_Parse(handle, &r->x)) { +ADDRFP4 0 +INDIRI4 +ARGI4 +ADDRFP4 4 +INDIRP4 +ARGP4 +ADDRLP4 0 +ADDRGP4 PC_Float_Parse +CALLI4 +ASGNI4 +ADDRLP4 0 +INDIRI4 +CNSTI4 0 +EQI4 $162 +line 439 +;439: if (PC_Float_Parse(handle, &r->y)) { +ADDRFP4 0 +INDIRI4 +ARGI4 +ADDRFP4 4 +INDIRP4 +CNSTI4 4 +ADDP4 +ARGP4 +ADDRLP4 4 +ADDRGP4 PC_Float_Parse +CALLI4 +ASGNI4 +ADDRLP4 4 +INDIRI4 +CNSTI4 0 +EQI4 $164 +line 440 +;440: if (PC_Float_Parse(handle, &r->w)) { +ADDRFP4 0 +INDIRI4 +ARGI4 +ADDRFP4 4 +INDIRP4 +CNSTI4 8 +ADDP4 +ARGP4 +ADDRLP4 8 +ADDRGP4 PC_Float_Parse +CALLI4 +ASGNI4 +ADDRLP4 8 +INDIRI4 +CNSTI4 0 +EQI4 $166 +line 441 +;441: if (PC_Float_Parse(handle, &r->h)) { +ADDRFP4 0 +INDIRI4 +ARGI4 +ADDRFP4 4 +INDIRP4 +CNSTI4 12 +ADDP4 +ARGP4 +ADDRLP4 12 +ADDRGP4 PC_Float_Parse +CALLI4 +ASGNI4 +ADDRLP4 12 +INDIRI4 +CNSTI4 0 +EQI4 $168 +line 442 +;442: return qtrue; +CNSTI4 1 +RETI4 +ADDRGP4 $161 +JUMPV +LABELV $168 +line 444 +;443: } +;444: } +LABELV $166 +line 445 +;445: } +LABELV $164 +line 446 +;446: } +LABELV $162 +line 447 +;447: return qfalse; +CNSTI4 0 +RETI4 +LABELV $161 +endproc PC_Rect_Parse 16 8 +export String_Parse +proc String_Parse 16 8 +line 455 +;448:} +;449: +;450:/* +;451:================= +;452:String_Parse +;453:================= +;454:*/ +;455:qboolean String_Parse(char **p, const char **out) { +line 458 +;456: char *token; +;457: +;458: token = COM_ParseExt(p, qfalse); +ADDRFP4 0 +INDIRP4 +ARGP4 +CNSTI4 0 +ARGI4 +ADDRLP4 4 +ADDRGP4 COM_ParseExt +CALLP4 +ASGNP4 +ADDRLP4 0 +ADDRLP4 4 +INDIRP4 +ASGNP4 +line 459 +;459: if (token && token[0] != 0) { +ADDRLP4 0 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $171 +ADDRLP4 0 +INDIRP4 +INDIRI1 +CVII4 1 +CNSTI4 0 +EQI4 $171 +line 460 +;460: *(out) = String_Alloc(token); +ADDRLP4 0 +INDIRP4 +ARGP4 +ADDRLP4 12 +ADDRGP4 String_Alloc +CALLP4 +ASGNP4 +ADDRFP4 4 +INDIRP4 +ADDRLP4 12 +INDIRP4 +ASGNP4 +line 461 +;461: return qtrue; +CNSTI4 1 +RETI4 +ADDRGP4 $170 +JUMPV +LABELV $171 +line 463 +;462: } +;463: return qfalse; +CNSTI4 0 +RETI4 +LABELV $170 +endproc String_Parse 16 8 +export PC_String_Parse +proc PC_String_Parse 1048 8 +line 471 +;464:} +;465: +;466:/* +;467:================= +;468:PC_String_Parse +;469:================= +;470:*/ +;471:qboolean PC_String_Parse(int handle, const char **out) { +line 474 +;472: pc_token_t token; +;473: +;474: if (!trap_PC_ReadToken(handle, &token)) +ADDRFP4 0 +INDIRI4 +ARGI4 +ADDRLP4 0 +ARGP4 +ADDRLP4 1040 +ADDRGP4 trap_PC_ReadToken +CALLI4 +ASGNI4 +ADDRLP4 1040 +INDIRI4 +CNSTI4 0 +NEI4 $174 +line 475 +;475: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $173 +JUMPV +LABELV $174 +line 477 +;476: +;477: *(out) = String_Alloc(token.string); +ADDRLP4 0+16 +ARGP4 +ADDRLP4 1044 +ADDRGP4 String_Alloc +CALLP4 +ASGNP4 +ADDRFP4 4 +INDIRP4 +ADDRLP4 1044 +INDIRP4 +ASGNP4 +line 478 +;478: return qtrue; +CNSTI4 1 +RETI4 +LABELV $173 +endproc PC_String_Parse 1048 8 +export PC_Script_Parse +proc PC_Script_Parse 2084 12 +line 486 +;479:} +;480: +;481:/* +;482:================= +;483:PC_Script_Parse +;484:================= +;485:*/ +;486:qboolean PC_Script_Parse(int handle, const char **out) { +line 490 +;487: char script[1024]; +;488: pc_token_t token; +;489: +;490: memset(script, 0, sizeof(script)); +ADDRLP4 1040 +ARGP4 +CNSTI4 0 +ARGI4 +CNSTI4 1024 +ARGI4 +ADDRGP4 memset +CALLP4 +pop +line 494 +;491: // scripts start with { and have ; separated command lists.. commands are command, arg.. +;492: // basically we want everything between the { } as it will be interpreted at run time +;493: +;494: if (!trap_PC_ReadToken(handle, &token)) +ADDRFP4 0 +INDIRI4 +ARGI4 +ADDRLP4 0 +ARGP4 +ADDRLP4 2064 +ADDRGP4 trap_PC_ReadToken +CALLI4 +ASGNI4 +ADDRLP4 2064 +INDIRI4 +CNSTI4 0 +NEI4 $178 +line 495 +;495: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $177 +JUMPV +LABELV $178 +line 496 +;496: if (Q_stricmp(token.string, "{") != 0) { +ADDRLP4 0+16 +ARGP4 +ADDRGP4 $183 +ARGP4 +ADDRLP4 2068 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 2068 +INDIRI4 +CNSTI4 0 +EQI4 $185 +line 497 +;497: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $177 +JUMPV +LABELV $184 +line 500 +;498: } +;499: +;500: while ( 1 ) { +line 501 +;501: if (!trap_PC_ReadToken(handle, &token)) +ADDRFP4 0 +INDIRI4 +ARGI4 +ADDRLP4 0 +ARGP4 +ADDRLP4 2072 +ADDRGP4 trap_PC_ReadToken +CALLI4 +ASGNI4 +ADDRLP4 2072 +INDIRI4 +CNSTI4 0 +NEI4 $187 +line 502 +;502: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $177 +JUMPV +LABELV $187 +line 504 +;503: +;504: if (Q_stricmp(token.string, "}") == 0) { +ADDRLP4 0+16 +ARGP4 +ADDRGP4 $192 +ARGP4 +ADDRLP4 2076 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 2076 +INDIRI4 +CNSTI4 0 +NEI4 $189 +line 505 +;505: *out = String_Alloc(script); +ADDRLP4 1040 +ARGP4 +ADDRLP4 2080 +ADDRGP4 String_Alloc +CALLP4 +ASGNP4 +ADDRFP4 4 +INDIRP4 +ADDRLP4 2080 +INDIRP4 +ASGNP4 +line 506 +;506: return qtrue; +CNSTI4 1 +RETI4 +ADDRGP4 $177 +JUMPV +LABELV $189 +line 509 +;507: } +;508: +;509: if (token.string[1] != '\0') { +ADDRLP4 0+16+1 +INDIRI1 +CVII4 1 +CNSTI4 0 +EQI4 $193 +line 510 +;510: Q_strcat(script, 1024, va("\"%s\"", token.string)); +ADDRGP4 $197 +ARGP4 +ADDRLP4 0+16 +ARGP4 +ADDRLP4 2080 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRLP4 1040 +ARGP4 +CNSTI4 1024 +ARGI4 +ADDRLP4 2080 +INDIRP4 +ARGP4 +ADDRGP4 Q_strcat +CALLV +pop +line 511 +;511: } else { +ADDRGP4 $194 +JUMPV +LABELV $193 +line 512 +;512: Q_strcat(script, 1024, token.string); +ADDRLP4 1040 +ARGP4 +CNSTI4 1024 +ARGI4 +ADDRLP4 0+16 +ARGP4 +ADDRGP4 Q_strcat +CALLV +pop +line 513 +;513: } +LABELV $194 +line 514 +;514: Q_strcat(script, 1024, " "); +ADDRLP4 1040 +ARGP4 +CNSTI4 1024 +ARGI4 +ADDRGP4 $200 +ARGP4 +ADDRGP4 Q_strcat +CALLV +pop +line 515 +;515: } +LABELV $185 +line 500 +ADDRGP4 $184 +JUMPV +line 516 +;516: return qfalse; // bk001105 - LCC missing return value +CNSTI4 0 +RETI4 +LABELV $177 +endproc PC_Script_Parse 2084 12 +export Init_Display +proc Init_Display 0 0 +line 529 +;517:} +;518: +;519:// display, window, menu, item code +;520:// +;521: +;522:/* +;523:================== +;524:Init_Display +;525: +;526:Initializes the display with a structure to all the drawing routines +;527: ================== +;528:*/ +;529:void Init_Display(displayContextDef_t *dc) { +line 530 +;530: DC = dc; +ADDRGP4 DC +ADDRFP4 0 +INDIRP4 +ASGNP4 +line 531 +;531:} +LABELV $201 +endproc Init_Display 0 0 +export GradientBar_Paint +proc GradientBar_Paint 12 20 +line 537 +;532: +;533: +;534: +;535:// type and style painting +;536: +;537:void GradientBar_Paint(rectDef_t *rect, vec4_t color) { +line 539 +;538: // gradient bar takes two paints +;539: DC->setColor( color ); +ADDRFP4 4 +INDIRP4 +ARGP4 +ADDRGP4 DC +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRP4 +CALLV +pop +line 540 +;540: DC->drawHandlePic(rect->x, rect->y, rect->w, rect->h, DC->Assets.gradientBar); +ADDRLP4 0 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 0 +INDIRP4 +INDIRF4 +ARGF4 +ADDRLP4 0 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRF4 +ARGF4 +ADDRLP4 4 +CNSTI4 8 +ASGNI4 +ADDRLP4 0 +INDIRP4 +ADDRLP4 4 +INDIRI4 +ADDP4 +INDIRF4 +ARGF4 +ADDRLP4 0 +INDIRP4 +CNSTI4 12 +ADDP4 +INDIRF4 +ARGF4 +ADDRLP4 8 +ADDRGP4 DC +INDIRP4 +ASGNP4 +ADDRLP4 8 +INDIRP4 +CNSTI4 61888 +ADDP4 +INDIRI4 +ARGI4 +ADDRLP4 8 +INDIRP4 +ADDRLP4 4 +INDIRI4 +ADDP4 +INDIRP4 +CALLV +pop +line 541 +;541: DC->setColor( NULL ); +CNSTP4 0 +ARGP4 +ADDRGP4 DC +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRP4 +CALLV +pop +line 542 +;542:} +LABELV $202 +endproc GradientBar_Paint 12 20 +export Window_Init +proc Window_Init 8 12 +line 553 +;543: +;544: +;545:/* +;546:================== +;547:Window_Init +;548: +;549:Initializes a window structure ( windowDef_t ) with defaults +;550: +;551:================== +;552:*/ +;553:void Window_Init(Window *w) { +line 554 +;554: memset(w, 0, sizeof(windowDef_t)); +ADDRFP4 0 +INDIRP4 +ARGP4 +CNSTI4 0 +ARGI4 +CNSTI4 180 +ARGI4 +ADDRGP4 memset +CALLP4 +pop +line 555 +;555: w->borderSize = 1; +ADDRFP4 0 +INDIRP4 +CNSTI4 64 +ADDP4 +CNSTF4 1065353216 +ASGNF4 +line 556 +;556: w->foreColor[0] = w->foreColor[1] = w->foreColor[2] = w->foreColor[3] = 1.0; +ADDRLP4 0 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 4 +CNSTF4 1065353216 +ASGNF4 +ADDRLP4 0 +INDIRP4 +CNSTI4 124 +ADDP4 +ADDRLP4 4 +INDIRF4 +ASGNF4 +ADDRLP4 0 +INDIRP4 +CNSTI4 120 +ADDP4 +ADDRLP4 4 +INDIRF4 +ASGNF4 +ADDRLP4 0 +INDIRP4 +CNSTI4 116 +ADDP4 +ADDRLP4 4 +INDIRF4 +ASGNF4 +ADDRLP4 0 +INDIRP4 +CNSTI4 112 +ADDP4 +ADDRLP4 4 +INDIRF4 +ASGNF4 +line 557 +;557: w->cinematic = -1; +ADDRFP4 0 +INDIRP4 +CNSTI4 44 +ADDP4 +CNSTI4 -1 +ASGNI4 +line 558 +;558:} +LABELV $203 +endproc Window_Init 8 12 +export Fade +proc Fade 8 0 +line 560 +;559: +;560:void Fade(int *flags, float *f, float clamp, int *nextTime, int offsetTime, qboolean bFlags, float fadeAmount) { +line 561 +;561: if (*flags & (WINDOW_FADINGOUT | WINDOW_FADINGIN)) { +ADDRFP4 0 +INDIRP4 +INDIRI4 +CNSTI4 96 +BANDI4 +CNSTI4 0 +EQI4 $205 +line 562 +;562: if (DC->realTime > *nextTime) { +ADDRGP4 DC +INDIRP4 +CNSTI4 208 +ADDP4 +INDIRI4 +ADDRFP4 12 +INDIRP4 +INDIRI4 +LEI4 $207 +line 563 +;563: *nextTime = DC->realTime + offsetTime; +ADDRFP4 12 +INDIRP4 +ADDRGP4 DC +INDIRP4 +CNSTI4 208 +ADDP4 +INDIRI4 +ADDRFP4 16 +INDIRI4 +ADDI4 +ASGNI4 +line 564 +;564: if (*flags & WINDOW_FADINGOUT) { +ADDRFP4 0 +INDIRP4 +INDIRI4 +CNSTI4 32 +BANDI4 +CNSTI4 0 +EQI4 $209 +line 565 +;565: *f -= fadeAmount; +ADDRLP4 0 +ADDRFP4 4 +INDIRP4 +ASGNP4 +ADDRLP4 0 +INDIRP4 +ADDRLP4 0 +INDIRP4 +INDIRF4 +ADDRFP4 24 +INDIRF4 +SUBF4 +ASGNF4 +line 566 +;566: if (bFlags && *f <= 0.0) { +ADDRFP4 20 +INDIRI4 +CNSTI4 0 +EQI4 $210 +ADDRFP4 4 +INDIRP4 +INDIRF4 +CNSTF4 0 +GTF4 $210 +line 567 +;567: *flags &= ~(WINDOW_FADINGOUT | WINDOW_VISIBLE); +ADDRLP4 4 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 4 +INDIRP4 +ADDRLP4 4 +INDIRP4 +INDIRI4 +CNSTI4 -37 +BANDI4 +ASGNI4 +line 568 +;568: } +line 569 +;569: } else { +ADDRGP4 $210 +JUMPV +LABELV $209 +line 570 +;570: *f += fadeAmount; +ADDRLP4 0 +ADDRFP4 4 +INDIRP4 +ASGNP4 +ADDRLP4 0 +INDIRP4 +ADDRLP4 0 +INDIRP4 +INDIRF4 +ADDRFP4 24 +INDIRF4 +ADDF4 +ASGNF4 +line 571 +;571: if (*f >= clamp) { +ADDRFP4 4 +INDIRP4 +INDIRF4 +ADDRFP4 8 +INDIRF4 +LTF4 $213 +line 572 +;572: *f = clamp; +ADDRFP4 4 +INDIRP4 +ADDRFP4 8 +INDIRF4 +ASGNF4 +line 573 +;573: if (bFlags) { +ADDRFP4 20 +INDIRI4 +CNSTI4 0 +EQI4 $215 +line 574 +;574: *flags &= ~WINDOW_FADINGIN; +ADDRLP4 4 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 4 +INDIRP4 +ADDRLP4 4 +INDIRP4 +INDIRI4 +CNSTI4 -65 +BANDI4 +ASGNI4 +line 575 +;575: } +LABELV $215 +line 576 +;576: } +LABELV $213 +line 577 +;577: } +LABELV $210 +line 578 +;578: } +LABELV $207 +line 579 +;579: } +LABELV $205 +line 580 +;580:} +LABELV $204 +endproc Fade 8 0 +export Window_Paint +proc Window_Paint 60 28 +line 584 +;581: +;582: +;583: +;584:void Window_Paint(Window *w, float fadeAmount, float fadeClamp, float fadeCycle) { +line 587 +;585: //float bordersize = 0; +;586: vec4_t color; +;587: rectDef_t fillRect = w->rect; +ADDRLP4 0 +ADDRFP4 0 +INDIRP4 +INDIRB +ASGNB 16 +line 590 +;588: +;589: +;590: if (debugMode) { +ADDRGP4 debugMode +INDIRI4 +CNSTI4 0 +EQI4 $218 +line 591 +;591: color[0] = color[1] = color[2] = color[3] = 1; +ADDRLP4 32 +CNSTF4 1065353216 +ASGNF4 +ADDRLP4 16+12 +ADDRLP4 32 +INDIRF4 +ASGNF4 +ADDRLP4 16+8 +ADDRLP4 32 +INDIRF4 +ASGNF4 +ADDRLP4 16+4 +ADDRLP4 32 +INDIRF4 +ASGNF4 +ADDRLP4 16 +ADDRLP4 32 +INDIRF4 +ASGNF4 +line 592 +;592: DC->drawRect(w->rect.x, w->rect.y, w->rect.w, w->rect.h, 1, color); +ADDRLP4 36 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 36 +INDIRP4 +INDIRF4 +ARGF4 +ADDRLP4 36 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRF4 +ARGF4 +ADDRLP4 36 +INDIRP4 +CNSTI4 8 +ADDP4 +INDIRF4 +ARGF4 +ADDRLP4 36 +INDIRP4 +CNSTI4 12 +ADDP4 +INDIRF4 +ARGF4 +CNSTF4 1065353216 +ARGF4 +ADDRLP4 16 +ARGP4 +ADDRGP4 DC +INDIRP4 +CNSTI4 40 +ADDP4 +INDIRP4 +CALLV +pop +line 593 +;593: } +LABELV $218 +line 595 +;594: +;595: if (w == NULL || (w->style == 0 && w->border == 0)) { +ADDRLP4 32 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 32 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $225 +ADDRLP4 36 +CNSTI4 0 +ASGNI4 +ADDRLP4 32 +INDIRP4 +CNSTI4 48 +ADDP4 +INDIRI4 +ADDRLP4 36 +INDIRI4 +NEI4 $223 +ADDRLP4 32 +INDIRP4 +CNSTI4 52 +ADDP4 +INDIRI4 +ADDRLP4 36 +INDIRI4 +NEI4 $223 +LABELV $225 +line 596 +;596: return; +ADDRGP4 $217 +JUMPV +LABELV $223 +line 599 +;597: } +;598: +;599: if (w->border != 0) { +ADDRFP4 0 +INDIRP4 +CNSTI4 52 +ADDP4 +INDIRI4 +CNSTI4 0 +EQI4 $226 +line 600 +;600: fillRect.x += w->borderSize; +ADDRLP4 0 +ADDRLP4 0 +INDIRF4 +ADDRFP4 0 +INDIRP4 +CNSTI4 64 +ADDP4 +INDIRF4 +ADDF4 +ASGNF4 +line 601 +;601: fillRect.y += w->borderSize; +ADDRLP4 0+4 +ADDRLP4 0+4 +INDIRF4 +ADDRFP4 0 +INDIRP4 +CNSTI4 64 +ADDP4 +INDIRF4 +ADDF4 +ASGNF4 +line 602 +;602: fillRect.w -= w->borderSize + 1; +ADDRLP4 0+8 +ADDRLP4 0+8 +INDIRF4 +ADDRFP4 0 +INDIRP4 +CNSTI4 64 +ADDP4 +INDIRF4 +CNSTF4 1065353216 +ADDF4 +SUBF4 +ASGNF4 +line 603 +;603: fillRect.h -= w->borderSize + 1; +ADDRLP4 0+12 +ADDRLP4 0+12 +INDIRF4 +ADDRFP4 0 +INDIRP4 +CNSTI4 64 +ADDP4 +INDIRF4 +CNSTF4 1065353216 +ADDF4 +SUBF4 +ASGNF4 +line 604 +;604: } +LABELV $226 +line 606 +;605: +;606: if (w->style == WINDOW_STYLE_FILLED) { +ADDRFP4 0 +INDIRP4 +CNSTI4 48 +ADDP4 +INDIRI4 +CNSTI4 1 +NEI4 $231 +line 608 +;607: // box, but possible a shader that needs filled +;608: if (w->background) { +ADDRFP4 0 +INDIRP4 +CNSTI4 176 +ADDP4 +INDIRI4 +CNSTI4 0 +EQI4 $233 +line 609 +;609: Fade(&w->flags, &w->backColor[3], fadeClamp, &w->nextTime, fadeCycle, qtrue, fadeAmount); +ADDRLP4 40 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 40 +INDIRP4 +CNSTI4 68 +ADDP4 +ARGP4 +ADDRLP4 40 +INDIRP4 +CNSTI4 140 +ADDP4 +ARGP4 +ADDRFP4 8 +INDIRF4 +ARGF4 +ADDRLP4 40 +INDIRP4 +CNSTI4 108 +ADDP4 +ARGP4 +ADDRFP4 12 +INDIRF4 +CVFI4 4 +ARGI4 +CNSTI4 1 +ARGI4 +ADDRFP4 4 +INDIRF4 +ARGF4 +ADDRGP4 Fade +CALLV +pop +line 610 +;610: DC->setColor(w->backColor); +ADDRFP4 0 +INDIRP4 +CNSTI4 128 +ADDP4 +ARGP4 +ADDRGP4 DC +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRP4 +CALLV +pop +line 611 +;611: DC->drawHandlePic(fillRect.x, fillRect.y, fillRect.w, fillRect.h, w->background); +ADDRLP4 0 +INDIRF4 +ARGF4 +ADDRLP4 0+4 +INDIRF4 +ARGF4 +ADDRLP4 0+8 +INDIRF4 +ARGF4 +ADDRLP4 0+12 +INDIRF4 +ARGF4 +ADDRFP4 0 +INDIRP4 +CNSTI4 176 +ADDP4 +INDIRI4 +ARGI4 +ADDRGP4 DC +INDIRP4 +CNSTI4 8 +ADDP4 +INDIRP4 +CALLV +pop +line 612 +;612: DC->setColor(NULL); +CNSTP4 0 +ARGP4 +ADDRGP4 DC +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRP4 +CALLV +pop +line 613 +;613: } else { +ADDRGP4 $232 +JUMPV +LABELV $233 +line 614 +;614: DC->fillRect(fillRect.x, fillRect.y, fillRect.w, fillRect.h, w->backColor); +ADDRLP4 0 +INDIRF4 +ARGF4 +ADDRLP4 0+4 +INDIRF4 +ARGF4 +ADDRLP4 0+8 +INDIRF4 +ARGF4 +ADDRLP4 0+12 +INDIRF4 +ARGF4 +ADDRFP4 0 +INDIRP4 +CNSTI4 128 +ADDP4 +ARGP4 +ADDRGP4 DC +INDIRP4 +CNSTI4 36 +ADDP4 +INDIRP4 +CALLV +pop +line 615 +;615: } +line 616 +;616: } else if (w->style == WINDOW_STYLE_GRADIENT) { +ADDRGP4 $232 +JUMPV +LABELV $231 +ADDRFP4 0 +INDIRP4 +CNSTI4 48 +ADDP4 +INDIRI4 +CNSTI4 2 +NEI4 $241 +line 617 +;617: GradientBar_Paint(&fillRect, w->backColor); +ADDRLP4 0 +ARGP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 128 +ADDP4 +ARGP4 +ADDRGP4 GradientBar_Paint +CALLV +pop +line 619 +;618: // gradient bar +;619: } else if (w->style == WINDOW_STYLE_SHADER) { +ADDRGP4 $242 +JUMPV +LABELV $241 +ADDRFP4 0 +INDIRP4 +CNSTI4 48 +ADDP4 +INDIRI4 +CNSTI4 3 +NEI4 $243 +line 620 +;620: if (w->flags & WINDOW_FORECOLORSET) { +ADDRFP4 0 +INDIRP4 +CNSTI4 68 +ADDP4 +INDIRI4 +CNSTI4 512 +BANDI4 +CNSTI4 0 +EQI4 $245 +line 621 +;621: DC->setColor(w->foreColor); +ADDRFP4 0 +INDIRP4 +CNSTI4 112 +ADDP4 +ARGP4 +ADDRGP4 DC +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRP4 +CALLV +pop +line 622 +;622: } +LABELV $245 +line 623 +;623: DC->drawHandlePic(fillRect.x, fillRect.y, fillRect.w, fillRect.h, w->background); +ADDRLP4 0 +INDIRF4 +ARGF4 +ADDRLP4 0+4 +INDIRF4 +ARGF4 +ADDRLP4 0+8 +INDIRF4 +ARGF4 +ADDRLP4 0+12 +INDIRF4 +ARGF4 +ADDRFP4 0 +INDIRP4 +CNSTI4 176 +ADDP4 +INDIRI4 +ARGI4 +ADDRGP4 DC +INDIRP4 +CNSTI4 8 +ADDP4 +INDIRP4 +CALLV +pop +line 624 +;624: DC->setColor(NULL); +CNSTP4 0 +ARGP4 +ADDRGP4 DC +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRP4 +CALLV +pop +line 625 +;625: } else if (w->style == WINDOW_STYLE_TEAMCOLOR) { +ADDRGP4 $244 +JUMPV +LABELV $243 +ADDRFP4 0 +INDIRP4 +CNSTI4 48 +ADDP4 +INDIRI4 +CNSTI4 4 +NEI4 $250 +line 626 +;626: if (DC->getTeamColor) { +ADDRGP4 DC +INDIRP4 +CNSTI4 84 +ADDP4 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $251 +line 627 +;627: DC->getTeamColor(&color); +ADDRLP4 16 +ARGP4 +ADDRGP4 DC +INDIRP4 +CNSTI4 84 +ADDP4 +INDIRP4 +CALLV +pop +line 628 +;628: DC->fillRect(fillRect.x, fillRect.y, fillRect.w, fillRect.h, color); +ADDRLP4 0 +INDIRF4 +ARGF4 +ADDRLP4 0+4 +INDIRF4 +ARGF4 +ADDRLP4 0+8 +INDIRF4 +ARGF4 +ADDRLP4 0+12 +INDIRF4 +ARGF4 +ADDRLP4 16 +ARGP4 +ADDRGP4 DC +INDIRP4 +CNSTI4 36 +ADDP4 +INDIRP4 +CALLV +pop +line 629 +;629: } +line 630 +;630: } else if (w->style == WINDOW_STYLE_CINEMATIC) { +ADDRGP4 $251 +JUMPV +LABELV $250 +ADDRFP4 0 +INDIRP4 +CNSTI4 48 +ADDP4 +INDIRI4 +CNSTI4 5 +NEI4 $257 +line 631 +;631: if (w->cinematic == -1) { +ADDRFP4 0 +INDIRP4 +CNSTI4 44 +ADDP4 +INDIRI4 +CNSTI4 -1 +NEI4 $259 +line 632 +;632: w->cinematic = DC->playCinematic(w->cinematicName, fillRect.x, fillRect.y, fillRect.w, fillRect.h); +ADDRLP4 40 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 40 +INDIRP4 +CNSTI4 40 +ADDP4 +INDIRP4 +ARGP4 +ADDRLP4 0 +INDIRF4 +ARGF4 +ADDRLP4 0+4 +INDIRF4 +ARGF4 +ADDRLP4 0+8 +INDIRF4 +ARGF4 +ADDRLP4 0+12 +INDIRF4 +ARGF4 +ADDRLP4 44 +ADDRGP4 DC +INDIRP4 +CNSTI4 180 +ADDP4 +INDIRP4 +CALLI4 +ASGNI4 +ADDRLP4 40 +INDIRP4 +CNSTI4 44 +ADDP4 +ADDRLP4 44 +INDIRI4 +ASGNI4 +line 633 +;633: if (w->cinematic == -1) { +ADDRFP4 0 +INDIRP4 +CNSTI4 44 +ADDP4 +INDIRI4 +CNSTI4 -1 +NEI4 $264 +line 634 +;634: w->cinematic = -2; +ADDRFP4 0 +INDIRP4 +CNSTI4 44 +ADDP4 +CNSTI4 -2 +ASGNI4 +line 635 +;635: } +LABELV $264 +line 636 +;636: } +LABELV $259 +line 637 +;637: if (w->cinematic >= 0) { +ADDRFP4 0 +INDIRP4 +CNSTI4 44 +ADDP4 +INDIRI4 +CNSTI4 0 +LTI4 $266 +line 638 +;638: DC->runCinematicFrame(w->cinematic); +ADDRFP4 0 +INDIRP4 +CNSTI4 44 +ADDP4 +INDIRI4 +ARGI4 +ADDRGP4 DC +INDIRP4 +CNSTI4 192 +ADDP4 +INDIRP4 +CALLV +pop +line 639 +;639: DC->drawCinematic(w->cinematic, fillRect.x, fillRect.y, fillRect.w, fillRect.h); +ADDRFP4 0 +INDIRP4 +CNSTI4 44 +ADDP4 +INDIRI4 +ARGI4 +ADDRLP4 0 +INDIRF4 +ARGF4 +ADDRLP4 0+4 +INDIRF4 +ARGF4 +ADDRLP4 0+8 +INDIRF4 +ARGF4 +ADDRLP4 0+12 +INDIRF4 +ARGF4 +ADDRGP4 DC +INDIRP4 +CNSTI4 188 +ADDP4 +INDIRP4 +CALLV +pop +line 640 +;640: } +LABELV $266 +line 641 +;641: } +LABELV $257 +LABELV $251 +LABELV $244 +LABELV $242 +LABELV $232 +line 643 +;642: +;643: if (w->border == WINDOW_BORDER_FULL) { +ADDRFP4 0 +INDIRP4 +CNSTI4 52 +ADDP4 +INDIRI4 +CNSTI4 1 +NEI4 $271 +line 646 +;644: // full +;645: // HACK HACK HACK +;646: if (w->style == WINDOW_STYLE_TEAMCOLOR) { +ADDRFP4 0 +INDIRP4 +CNSTI4 48 +ADDP4 +INDIRI4 +CNSTI4 4 +NEI4 $273 +line 647 +;647: if (color[0] > 0) { +ADDRLP4 16 +INDIRF4 +CNSTF4 0 +LEF4 $275 +line 649 +;648: // red +;649: color[0] = 1; +ADDRLP4 16 +CNSTF4 1065353216 +ASGNF4 +line 650 +;650: color[1] = color[2] = .5; +ADDRLP4 40 +CNSTF4 1056964608 +ASGNF4 +ADDRLP4 16+8 +ADDRLP4 40 +INDIRF4 +ASGNF4 +ADDRLP4 16+4 +ADDRLP4 40 +INDIRF4 +ASGNF4 +line 652 +;651: +;652: } else { +ADDRGP4 $276 +JUMPV +LABELV $275 +line 653 +;653: color[2] = 1; +ADDRLP4 16+8 +CNSTF4 1065353216 +ASGNF4 +line 654 +;654: color[0] = color[1] = .5; +ADDRLP4 40 +CNSTF4 1056964608 +ASGNF4 +ADDRLP4 16+4 +ADDRLP4 40 +INDIRF4 +ASGNF4 +ADDRLP4 16 +ADDRLP4 40 +INDIRF4 +ASGNF4 +line 655 +;655: } +LABELV $276 +line 656 +;656: color[3] = 1; +ADDRLP4 16+12 +CNSTF4 1065353216 +ASGNF4 +line 657 +;657: DC->drawRect(w->rect.x, w->rect.y, w->rect.w, w->rect.h, w->borderSize, color); +ADDRLP4 40 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 40 +INDIRP4 +INDIRF4 +ARGF4 +ADDRLP4 40 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRF4 +ARGF4 +ADDRLP4 40 +INDIRP4 +CNSTI4 8 +ADDP4 +INDIRF4 +ARGF4 +ADDRLP4 40 +INDIRP4 +CNSTI4 12 +ADDP4 +INDIRF4 +ARGF4 +ADDRLP4 40 +INDIRP4 +CNSTI4 64 +ADDP4 +INDIRF4 +ARGF4 +ADDRLP4 16 +ARGP4 +ADDRGP4 DC +INDIRP4 +CNSTI4 40 +ADDP4 +INDIRP4 +CALLV +pop +line 658 +;658: } else { +ADDRGP4 $272 +JUMPV +LABELV $273 +line 659 +;659: DC->drawRect(w->rect.x, w->rect.y, w->rect.w, w->rect.h, w->borderSize, w->borderColor); +ADDRLP4 40 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 40 +INDIRP4 +INDIRF4 +ARGF4 +ADDRLP4 40 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRF4 +ARGF4 +ADDRLP4 40 +INDIRP4 +CNSTI4 8 +ADDP4 +INDIRF4 +ARGF4 +ADDRLP4 40 +INDIRP4 +CNSTI4 12 +ADDP4 +INDIRF4 +ARGF4 +ADDRLP4 40 +INDIRP4 +CNSTI4 64 +ADDP4 +INDIRF4 +ARGF4 +ADDRLP4 40 +INDIRP4 +CNSTI4 144 +ADDP4 +ARGP4 +ADDRGP4 DC +INDIRP4 +CNSTI4 40 +ADDP4 +INDIRP4 +CALLV +pop +line 660 +;660: } +line 661 +;661: } else if (w->border == WINDOW_BORDER_HORZ) { +ADDRGP4 $272 +JUMPV +LABELV $271 +ADDRFP4 0 +INDIRP4 +CNSTI4 52 +ADDP4 +INDIRI4 +CNSTI4 2 +NEI4 $282 +line 663 +;662: // top/bottom +;663: DC->setColor(w->borderColor); +ADDRFP4 0 +INDIRP4 +CNSTI4 144 +ADDP4 +ARGP4 +ADDRGP4 DC +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRP4 +CALLV +pop +line 664 +;664: DC->drawTopBottom(w->rect.x, w->rect.y, w->rect.w, w->rect.h, w->borderSize); +ADDRLP4 40 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 40 +INDIRP4 +INDIRF4 +ARGF4 +ADDRLP4 40 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRF4 +ARGF4 +ADDRLP4 40 +INDIRP4 +CNSTI4 8 +ADDP4 +INDIRF4 +ARGF4 +ADDRLP4 40 +INDIRP4 +CNSTI4 12 +ADDP4 +INDIRF4 +ARGF4 +ADDRLP4 40 +INDIRP4 +CNSTI4 64 +ADDP4 +INDIRF4 +ARGF4 +ADDRGP4 DC +INDIRP4 +CNSTI4 48 +ADDP4 +INDIRP4 +CALLV +pop +line 665 +;665: DC->setColor( NULL ); +CNSTP4 0 +ARGP4 +ADDRGP4 DC +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRP4 +CALLV +pop +line 666 +;666: } else if (w->border == WINDOW_BORDER_VERT) { +ADDRGP4 $283 +JUMPV +LABELV $282 +ADDRFP4 0 +INDIRP4 +CNSTI4 52 +ADDP4 +INDIRI4 +CNSTI4 3 +NEI4 $284 +line 668 +;667: // left right +;668: DC->setColor(w->borderColor); +ADDRFP4 0 +INDIRP4 +CNSTI4 144 +ADDP4 +ARGP4 +ADDRGP4 DC +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRP4 +CALLV +pop +line 669 +;669: DC->drawSides(w->rect.x, w->rect.y, w->rect.w, w->rect.h, w->borderSize); +ADDRLP4 40 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 40 +INDIRP4 +INDIRF4 +ARGF4 +ADDRLP4 40 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRF4 +ARGF4 +ADDRLP4 40 +INDIRP4 +CNSTI4 8 +ADDP4 +INDIRF4 +ARGF4 +ADDRLP4 40 +INDIRP4 +CNSTI4 12 +ADDP4 +INDIRF4 +ARGF4 +ADDRLP4 40 +INDIRP4 +CNSTI4 64 +ADDP4 +INDIRF4 +ARGF4 +ADDRGP4 DC +INDIRP4 +CNSTI4 44 +ADDP4 +INDIRP4 +CALLV +pop +line 670 +;670: DC->setColor( NULL ); +CNSTP4 0 +ARGP4 +ADDRGP4 DC +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRP4 +CALLV +pop +line 671 +;671: } else if (w->border == WINDOW_BORDER_KCGRADIENT) { +ADDRGP4 $285 +JUMPV +LABELV $284 +ADDRFP4 0 +INDIRP4 +CNSTI4 52 +ADDP4 +INDIRI4 +CNSTI4 4 +NEI4 $286 +line 673 +;672: // this is just two gradient bars along each horz edge +;673: rectDef_t r = w->rect; +ADDRLP4 40 +ADDRFP4 0 +INDIRP4 +INDIRB +ASGNB 16 +line 674 +;674: r.h = w->borderSize; +ADDRLP4 40+12 +ADDRFP4 0 +INDIRP4 +CNSTI4 64 +ADDP4 +INDIRF4 +ASGNF4 +line 675 +;675: GradientBar_Paint(&r, w->borderColor); +ADDRLP4 40 +ARGP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 144 +ADDP4 +ARGP4 +ADDRGP4 GradientBar_Paint +CALLV +pop +line 676 +;676: r.y = w->rect.y + w->rect.h - 1; +ADDRLP4 56 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 40+4 +ADDRLP4 56 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRF4 +ADDRLP4 56 +INDIRP4 +CNSTI4 12 +ADDP4 +INDIRF4 +ADDF4 +CNSTF4 1065353216 +SUBF4 +ASGNF4 +line 677 +;677: GradientBar_Paint(&r, w->borderColor); +ADDRLP4 40 +ARGP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 144 +ADDP4 +ARGP4 +ADDRGP4 GradientBar_Paint +CALLV +pop +line 678 +;678: } +LABELV $286 +LABELV $285 +LABELV $283 +LABELV $272 +line 680 +;679: +;680:} +LABELV $217 +endproc Window_Paint 60 28 +export Item_SetScreenCoords +proc Item_SetScreenCoords 16 0 +line 683 +;681: +;682: +;683:void Item_SetScreenCoords(itemDef_t *item, float x, float y) { +line 685 +;684: +;685: if (item == NULL) { +ADDRFP4 0 +INDIRP4 +CVPU4 4 +CNSTU4 0 +NEU4 $291 +line 686 +;686: return; +ADDRGP4 $290 +JUMPV +LABELV $291 +line 689 +;687: } +;688: +;689: if (item->window.border != 0) { +ADDRFP4 0 +INDIRP4 +CNSTI4 52 +ADDP4 +INDIRI4 +CNSTI4 0 +EQI4 $293 +line 690 +;690: x += item->window.borderSize; +ADDRFP4 4 +ADDRFP4 4 +INDIRF4 +ADDRFP4 0 +INDIRP4 +CNSTI4 64 +ADDP4 +INDIRF4 +ADDF4 +ASGNF4 +line 691 +;691: y += item->window.borderSize; +ADDRFP4 8 +ADDRFP4 8 +INDIRF4 +ADDRFP4 0 +INDIRP4 +CNSTI4 64 +ADDP4 +INDIRF4 +ADDF4 +ASGNF4 +line 692 +;692: } +LABELV $293 +line 694 +;693: +;694: item->window.rect.x = x + item->window.rectClient.x; +ADDRLP4 0 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 0 +INDIRP4 +ADDRFP4 4 +INDIRF4 +ADDRLP4 0 +INDIRP4 +CNSTI4 16 +ADDP4 +INDIRF4 +ADDF4 +ASGNF4 +line 695 +;695: item->window.rect.y = y + item->window.rectClient.y; +ADDRLP4 4 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 4 +INDIRP4 +CNSTI4 4 +ADDP4 +ADDRFP4 8 +INDIRF4 +ADDRLP4 4 +INDIRP4 +CNSTI4 20 +ADDP4 +INDIRF4 +ADDF4 +ASGNF4 +line 696 +;696: item->window.rect.w = item->window.rectClient.w; +ADDRLP4 8 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 8 +INDIRP4 +CNSTI4 8 +ADDP4 +ADDRLP4 8 +INDIRP4 +CNSTI4 24 +ADDP4 +INDIRF4 +ASGNF4 +line 697 +;697: item->window.rect.h = item->window.rectClient.h; +ADDRLP4 12 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 12 +INDIRP4 +CNSTI4 12 +ADDP4 +ADDRLP4 12 +INDIRP4 +CNSTI4 28 +ADDP4 +INDIRF4 +ASGNF4 +line 700 +;698: +;699: // force the text rects to recompute +;700: item->textRect.w = 0; +ADDRFP4 0 +INDIRP4 +CNSTI4 188 +ADDP4 +CNSTF4 0 +ASGNF4 +line 701 +;701: item->textRect.h = 0; +ADDRFP4 0 +INDIRP4 +CNSTI4 192 +ADDP4 +CNSTF4 0 +ASGNF4 +line 702 +;702:} +LABELV $290 +endproc Item_SetScreenCoords 16 0 +export Item_UpdatePosition +proc Item_UpdatePosition 20 12 +line 705 +;703: +;704:// FIXME: consolidate this with nearby stuff +;705:void Item_UpdatePosition(itemDef_t *item) { +line 709 +;706: float x, y; +;707: menuDef_t *menu; +;708: +;709: if (item == NULL || item->parent == NULL) { +ADDRLP4 12 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 16 +CNSTU4 0 +ASGNU4 +ADDRLP4 12 +INDIRP4 +CVPU4 4 +ADDRLP4 16 +INDIRU4 +EQU4 $298 +ADDRLP4 12 +INDIRP4 +CNSTI4 228 +ADDP4 +INDIRP4 +CVPU4 4 +ADDRLP4 16 +INDIRU4 +NEU4 $296 +LABELV $298 +line 710 +;710: return; +ADDRGP4 $295 +JUMPV +LABELV $296 +line 713 +;711: } +;712: +;713: menu = item->parent; +ADDRLP4 0 +ADDRFP4 0 +INDIRP4 +CNSTI4 228 +ADDP4 +INDIRP4 +ASGNP4 +line 715 +;714: +;715: x = menu->window.rect.x; +ADDRLP4 4 +ADDRLP4 0 +INDIRP4 +INDIRF4 +ASGNF4 +line 716 +;716: y = menu->window.rect.y; +ADDRLP4 8 +ADDRLP4 0 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRF4 +ASGNF4 +line 718 +;717: +;718: if (menu->window.border != 0) { +ADDRLP4 0 +INDIRP4 +CNSTI4 52 +ADDP4 +INDIRI4 +CNSTI4 0 +EQI4 $299 +line 719 +;719: x += menu->window.borderSize; +ADDRLP4 4 +ADDRLP4 4 +INDIRF4 +ADDRLP4 0 +INDIRP4 +CNSTI4 64 +ADDP4 +INDIRF4 +ADDF4 +ASGNF4 +line 720 +;720: y += menu->window.borderSize; +ADDRLP4 8 +ADDRLP4 8 +INDIRF4 +ADDRLP4 0 +INDIRP4 +CNSTI4 64 +ADDP4 +INDIRF4 +ADDF4 +ASGNF4 +line 721 +;721: } +LABELV $299 +line 723 +;722: +;723: Item_SetScreenCoords(item, x, y); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRLP4 4 +INDIRF4 +ARGF4 +ADDRLP4 8 +INDIRF4 +ARGF4 +ADDRGP4 Item_SetScreenCoords +CALLV +pop +line 725 +;724: +;725:} +LABELV $295 +endproc Item_UpdatePosition 20 12 +export Menu_UpdatePosition +proc Menu_UpdatePosition 12 12 +line 728 +;726: +;727:// menus +;728:void Menu_UpdatePosition(menuDef_t *menu) { +line 732 +;729: int i; +;730: float x, y; +;731: +;732: if (menu == NULL) { +ADDRFP4 0 +INDIRP4 +CVPU4 4 +CNSTU4 0 +NEU4 $302 +line 733 +;733: return; +ADDRGP4 $301 +JUMPV +LABELV $302 +line 736 +;734: } +;735: +;736: x = menu->window.rect.x; +ADDRLP4 4 +ADDRFP4 0 +INDIRP4 +INDIRF4 +ASGNF4 +line 737 +;737: y = menu->window.rect.y; +ADDRLP4 8 +ADDRFP4 0 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRF4 +ASGNF4 +line 738 +;738: if (menu->window.border != 0) { +ADDRFP4 0 +INDIRP4 +CNSTI4 52 +ADDP4 +INDIRI4 +CNSTI4 0 +EQI4 $304 +line 739 +;739: x += menu->window.borderSize; +ADDRLP4 4 +ADDRLP4 4 +INDIRF4 +ADDRFP4 0 +INDIRP4 +CNSTI4 64 +ADDP4 +INDIRF4 +ADDF4 +ASGNF4 +line 740 +;740: y += menu->window.borderSize; +ADDRLP4 8 +ADDRLP4 8 +INDIRF4 +ADDRFP4 0 +INDIRP4 +CNSTI4 64 +ADDP4 +INDIRF4 +ADDF4 +ASGNF4 +line 741 +;741: } +LABELV $304 +line 743 +;742: +;743: for (i = 0; i < menu->itemCount; i++) { +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +ADDRGP4 $309 +JUMPV +LABELV $306 +line 744 +;744: Item_SetScreenCoords(menu->items[i], x, y); +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 260 +ADDP4 +ADDP4 +INDIRP4 +ARGP4 +ADDRLP4 4 +INDIRF4 +ARGF4 +ADDRLP4 8 +INDIRF4 +ARGF4 +ADDRGP4 Item_SetScreenCoords +CALLV +pop +line 745 +;745: } +LABELV $307 +line 743 +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +LABELV $309 +ADDRLP4 0 +INDIRI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 188 +ADDP4 +INDIRI4 +LTI4 $306 +line 746 +;746:} +LABELV $301 +endproc Menu_UpdatePosition 12 12 +export Menu_PostParse +proc Menu_PostParse 0 4 +line 748 +;747: +;748:void Menu_PostParse(menuDef_t *menu) { +line 749 +;749: if (menu == NULL) { +ADDRFP4 0 +INDIRP4 +CVPU4 4 +CNSTU4 0 +NEU4 $311 +line 750 +;750: return; +ADDRGP4 $310 +JUMPV +LABELV $311 +line 752 +;751: } +;752: if (menu->fullScreen) { +ADDRFP4 0 +INDIRP4 +CNSTI4 184 +ADDP4 +INDIRI4 +CNSTI4 0 +EQI4 $313 +line 753 +;753: menu->window.rect.x = 0; +ADDRFP4 0 +INDIRP4 +CNSTF4 0 +ASGNF4 +line 754 +;754: menu->window.rect.y = 0; +ADDRFP4 0 +INDIRP4 +CNSTI4 4 +ADDP4 +CNSTF4 0 +ASGNF4 +line 755 +;755: menu->window.rect.w = 640; +ADDRFP4 0 +INDIRP4 +CNSTI4 8 +ADDP4 +CNSTF4 1142947840 +ASGNF4 +line 756 +;756: menu->window.rect.h = 480; +ADDRFP4 0 +INDIRP4 +CNSTI4 12 +ADDP4 +CNSTF4 1139802112 +ASGNF4 +line 757 +;757: } +LABELV $313 +line 758 +;758: Menu_UpdatePosition(menu); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRGP4 Menu_UpdatePosition +CALLV +pop +line 759 +;759:} +LABELV $310 +endproc Menu_PostParse 0 4 +export Menu_ClearFocus +proc Menu_ClearFocus 28 8 +line 761 +;760: +;761:itemDef_t *Menu_ClearFocus(menuDef_t *menu) { +line 763 +;762: int i; +;763: itemDef_t *ret = NULL; +ADDRLP4 4 +CNSTP4 0 +ASGNP4 +line 765 +;764: +;765: if (menu == NULL) { +ADDRFP4 0 +INDIRP4 +CVPU4 4 +CNSTU4 0 +NEU4 $316 +line 766 +;766: return NULL; +CNSTP4 0 +RETP4 +ADDRGP4 $315 +JUMPV +LABELV $316 +line 769 +;767: } +;768: +;769: for (i = 0; i < menu->itemCount; i++) { +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +ADDRGP4 $321 +JUMPV +LABELV $318 +line 770 +;770: if (menu->items[i]->window.flags & WINDOW_HASFOCUS) { +ADDRLP4 8 +CNSTI4 2 +ASGNI4 +ADDRLP4 0 +INDIRI4 +ADDRLP4 8 +INDIRI4 +LSHI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 260 +ADDP4 +ADDP4 +INDIRP4 +CNSTI4 68 +ADDP4 +INDIRI4 +ADDRLP4 8 +INDIRI4 +BANDI4 +CNSTI4 0 +EQI4 $322 +line 771 +;771: ret = menu->items[i]; +ADDRLP4 4 +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 260 +ADDP4 +ADDP4 +INDIRP4 +ASGNP4 +line 772 +;772: } +LABELV $322 +line 773 +;773: menu->items[i]->window.flags &= ~WINDOW_HASFOCUS; +ADDRLP4 12 +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 260 +ADDP4 +ADDP4 +INDIRP4 +CNSTI4 68 +ADDP4 +ASGNP4 +ADDRLP4 12 +INDIRP4 +ADDRLP4 12 +INDIRP4 +INDIRI4 +CNSTI4 -3 +BANDI4 +ASGNI4 +line 774 +;774: if (menu->items[i]->leaveFocus) { +ADDRLP4 16 +CNSTI4 260 +ASGNI4 +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRFP4 0 +INDIRP4 +ADDRLP4 16 +INDIRI4 +ADDP4 +ADDP4 +INDIRP4 +ADDRLP4 16 +INDIRI4 +ADDP4 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $324 +line 775 +;775: Item_RunScript(menu->items[i], menu->items[i]->leaveFocus); +ADDRLP4 20 +CNSTI4 260 +ASGNI4 +ADDRLP4 24 +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRFP4 0 +INDIRP4 +ADDRLP4 20 +INDIRI4 +ADDP4 +ADDP4 +INDIRP4 +ASGNP4 +ADDRLP4 24 +INDIRP4 +ARGP4 +ADDRLP4 24 +INDIRP4 +ADDRLP4 20 +INDIRI4 +ADDP4 +INDIRP4 +ARGP4 +ADDRGP4 Item_RunScript +CALLV +pop +line 776 +;776: } +LABELV $324 +line 777 +;777: } +LABELV $319 +line 769 +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +LABELV $321 +ADDRLP4 0 +INDIRI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 188 +ADDP4 +INDIRI4 +LTI4 $318 +line 779 +;778: +;779: return ret; +ADDRLP4 4 +INDIRP4 +RETP4 +LABELV $315 +endproc Menu_ClearFocus 28 8 +export IsVisible +proc IsVisible 12 0 +line 782 +;780:} +;781: +;782:qboolean IsVisible(int flags) { +line 783 +;783: return (flags & WINDOW_VISIBLE && !(flags & WINDOW_FADINGOUT)); +ADDRLP4 4 +ADDRFP4 0 +INDIRI4 +ASGNI4 +ADDRLP4 8 +CNSTI4 0 +ASGNI4 +ADDRLP4 4 +INDIRI4 +CNSTI4 4 +BANDI4 +ADDRLP4 8 +INDIRI4 +EQI4 $328 +ADDRLP4 4 +INDIRI4 +CNSTI4 32 +BANDI4 +ADDRLP4 8 +INDIRI4 +NEI4 $328 +ADDRLP4 0 +CNSTI4 1 +ASGNI4 +ADDRGP4 $329 +JUMPV +LABELV $328 +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +LABELV $329 +ADDRLP4 0 +INDIRI4 +RETI4 +LABELV $326 +endproc IsVisible 12 0 +export Rect_ContainsPoint +proc Rect_ContainsPoint 20 0 +line 786 +;784:} +;785: +;786:qboolean Rect_ContainsPoint(rectDef_t *rect, float x, float y) { +line 787 +;787: if (rect) { +ADDRFP4 0 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $331 +line 788 +;788: if (x > rect->x && x < rect->x + rect->w && y > rect->y && y < rect->y + rect->h) { +ADDRLP4 0 +ADDRFP4 4 +INDIRF4 +ASGNF4 +ADDRLP4 4 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 8 +ADDRLP4 4 +INDIRP4 +INDIRF4 +ASGNF4 +ADDRLP4 0 +INDIRF4 +ADDRLP4 8 +INDIRF4 +LEF4 $333 +ADDRLP4 0 +INDIRF4 +ADDRLP4 8 +INDIRF4 +ADDRLP4 4 +INDIRP4 +CNSTI4 8 +ADDP4 +INDIRF4 +ADDF4 +GEF4 $333 +ADDRLP4 12 +ADDRFP4 8 +INDIRF4 +ASGNF4 +ADDRLP4 16 +ADDRLP4 4 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRF4 +ASGNF4 +ADDRLP4 12 +INDIRF4 +ADDRLP4 16 +INDIRF4 +LEF4 $333 +ADDRLP4 12 +INDIRF4 +ADDRLP4 16 +INDIRF4 +ADDRLP4 4 +INDIRP4 +CNSTI4 12 +ADDP4 +INDIRF4 +ADDF4 +GEF4 $333 +line 789 +;789: return qtrue; +CNSTI4 1 +RETI4 +ADDRGP4 $330 +JUMPV +LABELV $333 +line 791 +;790: } +;791: } +LABELV $331 +line 792 +;792: return qfalse; +CNSTI4 0 +RETI4 +LABELV $330 +endproc Rect_ContainsPoint 20 0 +export Menu_ItemsMatchingGroup +proc Menu_ItemsMatchingGroup 20 8 +line 795 +;793:} +;794: +;795:int Menu_ItemsMatchingGroup(menuDef_t *menu, const char *name) { +line 797 +;796: int i; +;797: int count = 0; +ADDRLP4 4 +CNSTI4 0 +ASGNI4 +line 798 +;798: for (i = 0; i < menu->itemCount; i++) { +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +ADDRGP4 $339 +JUMPV +LABELV $336 +line 799 +;799: if (Q_stricmp(menu->items[i]->window.name, name) == 0 || (menu->items[i]->window.group && Q_stricmp(menu->items[i]->window.group, name) == 0)) { +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 260 +ADDP4 +ADDP4 +INDIRP4 +CNSTI4 32 +ADDP4 +INDIRP4 +ARGP4 +ADDRFP4 4 +INDIRP4 +ARGP4 +ADDRLP4 8 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 8 +INDIRI4 +CNSTI4 0 +EQI4 $342 +ADDRLP4 12 +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 260 +ADDP4 +ADDP4 +INDIRP4 +CNSTI4 36 +ADDP4 +INDIRP4 +ASGNP4 +ADDRLP4 12 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $340 +ADDRLP4 12 +INDIRP4 +ARGP4 +ADDRFP4 4 +INDIRP4 +ARGP4 +ADDRLP4 16 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 16 +INDIRI4 +CNSTI4 0 +NEI4 $340 +LABELV $342 +line 800 +;800: count++; +ADDRLP4 4 +ADDRLP4 4 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 801 +;801: } +LABELV $340 +line 802 +;802: } +LABELV $337 +line 798 +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +LABELV $339 +ADDRLP4 0 +INDIRI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 188 +ADDP4 +INDIRI4 +LTI4 $336 +line 803 +;803: return count; +ADDRLP4 4 +INDIRI4 +RETI4 +LABELV $335 +endproc Menu_ItemsMatchingGroup 20 8 +export Menu_GetMatchingItemByNumber +proc Menu_GetMatchingItemByNumber 20 8 +line 806 +;804:} +;805: +;806:itemDef_t *Menu_GetMatchingItemByNumber(menuDef_t *menu, int index, const char *name) { +line 808 +;807: int i; +;808: int count = 0; +ADDRLP4 4 +CNSTI4 0 +ASGNI4 +line 809 +;809: for (i = 0; i < menu->itemCount; i++) { +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +ADDRGP4 $347 +JUMPV +LABELV $344 +line 810 +;810: if (Q_stricmp(menu->items[i]->window.name, name) == 0 || (menu->items[i]->window.group && Q_stricmp(menu->items[i]->window.group, name) == 0)) { +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 260 +ADDP4 +ADDP4 +INDIRP4 +CNSTI4 32 +ADDP4 +INDIRP4 +ARGP4 +ADDRFP4 8 +INDIRP4 +ARGP4 +ADDRLP4 8 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 8 +INDIRI4 +CNSTI4 0 +EQI4 $350 +ADDRLP4 12 +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 260 +ADDP4 +ADDP4 +INDIRP4 +CNSTI4 36 +ADDP4 +INDIRP4 +ASGNP4 +ADDRLP4 12 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $348 +ADDRLP4 12 +INDIRP4 +ARGP4 +ADDRFP4 8 +INDIRP4 +ARGP4 +ADDRLP4 16 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 16 +INDIRI4 +CNSTI4 0 +NEI4 $348 +LABELV $350 +line 811 +;811: if (count == index) { +ADDRLP4 4 +INDIRI4 +ADDRFP4 4 +INDIRI4 +NEI4 $351 +line 812 +;812: return menu->items[i]; +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 260 +ADDP4 +ADDP4 +INDIRP4 +RETP4 +ADDRGP4 $343 +JUMPV +LABELV $351 +line 814 +;813: } +;814: count++; +ADDRLP4 4 +ADDRLP4 4 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 815 +;815: } +LABELV $348 +line 816 +;816: } +LABELV $345 +line 809 +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +LABELV $347 +ADDRLP4 0 +INDIRI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 188 +ADDP4 +INDIRI4 +LTI4 $344 +line 817 +;817: return NULL; +CNSTP4 0 +RETP4 +LABELV $343 +endproc Menu_GetMatchingItemByNumber 20 8 +export Script_SetColor +proc Script_SetColor 36 8 +line 822 +;818:} +;819: +;820: +;821: +;822:void Script_SetColor(itemDef_t *item, char **args) { +line 828 +;823: const char *name; +;824: int i; +;825: float f; +;826: vec4_t *out; +;827: // expecting type of color to set and 4 args for the color +;828: if (String_Parse(args, &name)) { +ADDRFP4 4 +INDIRP4 +ARGP4 +ADDRLP4 12 +ARGP4 +ADDRLP4 16 +ADDRGP4 String_Parse +CALLI4 +ASGNI4 +ADDRLP4 16 +INDIRI4 +CNSTI4 0 +EQI4 $354 +line 829 +;829: out = NULL; +ADDRLP4 8 +CNSTP4 0 +ASGNP4 +line 830 +;830: if (Q_stricmp(name, "backcolor") == 0) { +ADDRLP4 12 +INDIRP4 +ARGP4 +ADDRGP4 $358 +ARGP4 +ADDRLP4 20 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 20 +INDIRI4 +CNSTI4 0 +NEI4 $356 +line 831 +;831: out = &item->window.backColor; +ADDRLP4 8 +ADDRFP4 0 +INDIRP4 +CNSTI4 128 +ADDP4 +ASGNP4 +line 832 +;832: item->window.flags |= WINDOW_BACKCOLORSET; +ADDRLP4 24 +ADDRFP4 0 +INDIRP4 +CNSTI4 68 +ADDP4 +ASGNP4 +ADDRLP4 24 +INDIRP4 +ADDRLP4 24 +INDIRP4 +INDIRI4 +CNSTI4 4194304 +BORI4 +ASGNI4 +line 833 +;833: } else if (Q_stricmp(name, "forecolor") == 0) { +ADDRGP4 $357 +JUMPV +LABELV $356 +ADDRLP4 12 +INDIRP4 +ARGP4 +ADDRGP4 $361 +ARGP4 +ADDRLP4 24 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 24 +INDIRI4 +CNSTI4 0 +NEI4 $359 +line 834 +;834: out = &item->window.foreColor; +ADDRLP4 8 +ADDRFP4 0 +INDIRP4 +CNSTI4 112 +ADDP4 +ASGNP4 +line 835 +;835: item->window.flags |= WINDOW_FORECOLORSET; +ADDRLP4 28 +ADDRFP4 0 +INDIRP4 +CNSTI4 68 +ADDP4 +ASGNP4 +ADDRLP4 28 +INDIRP4 +ADDRLP4 28 +INDIRP4 +INDIRI4 +CNSTI4 512 +BORI4 +ASGNI4 +line 836 +;836: } else if (Q_stricmp(name, "bordercolor") == 0) { +ADDRGP4 $360 +JUMPV +LABELV $359 +ADDRLP4 12 +INDIRP4 +ARGP4 +ADDRGP4 $364 +ARGP4 +ADDRLP4 28 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 28 +INDIRI4 +CNSTI4 0 +NEI4 $362 +line 837 +;837: out = &item->window.borderColor; +ADDRLP4 8 +ADDRFP4 0 +INDIRP4 +CNSTI4 144 +ADDP4 +ASGNP4 +line 838 +;838: } +LABELV $362 +LABELV $360 +LABELV $357 +line 840 +;839: +;840: if (out) { +ADDRLP4 8 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $365 +line 841 +;841: for (i = 0; i < 4; i++) { +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +LABELV $367 +line 842 +;842: if (!Float_Parse(args, &f)) { +ADDRFP4 4 +INDIRP4 +ARGP4 +ADDRLP4 4 +ARGP4 +ADDRLP4 32 +ADDRGP4 Float_Parse +CALLI4 +ASGNI4 +ADDRLP4 32 +INDIRI4 +CNSTI4 0 +NEI4 $371 +line 843 +;843: return; +ADDRGP4 $353 +JUMPV +LABELV $371 +line 845 +;844: } +;845: (*out)[i] = f; +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRLP4 8 +INDIRP4 +ADDP4 +ADDRLP4 4 +INDIRF4 +ASGNF4 +line 846 +;846: } +LABELV $368 +line 841 +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +ADDRLP4 0 +INDIRI4 +CNSTI4 4 +LTI4 $367 +line 847 +;847: } +LABELV $365 +line 848 +;848: } +LABELV $354 +line 849 +;849:} +LABELV $353 +endproc Script_SetColor 36 8 +export Script_SetAsset +proc Script_SetAsset 8 8 +line 851 +;850: +;851:void Script_SetAsset(itemDef_t *item, char **args) { +line 854 +;852: const char *name; +;853: // expecting name to set asset to +;854: if (String_Parse(args, &name)) { +ADDRFP4 4 +INDIRP4 +ARGP4 +ADDRLP4 0 +ARGP4 +ADDRLP4 4 +ADDRGP4 String_Parse +CALLI4 +ASGNI4 +ADDRLP4 4 +INDIRI4 +CNSTI4 0 +EQI4 $374 +line 856 +;855: // check for a model +;856: if (item->type == ITEM_TYPE_MODEL) { +ADDRFP4 0 +INDIRP4 +CNSTI4 196 +ADDP4 +INDIRI4 +CNSTI4 7 +NEI4 $376 +line 857 +;857: } +LABELV $376 +line 858 +;858: } +LABELV $374 +line 859 +;859:} +LABELV $373 +endproc Script_SetAsset 8 8 +export Script_SetBackground +proc Script_SetBackground 12 8 +line 861 +;860: +;861:void Script_SetBackground(itemDef_t *item, char **args) { +line 864 +;862: const char *name; +;863: // expecting name to set asset to +;864: if (String_Parse(args, &name)) { +ADDRFP4 4 +INDIRP4 +ARGP4 +ADDRLP4 0 +ARGP4 +ADDRLP4 4 +ADDRGP4 String_Parse +CALLI4 +ASGNI4 +ADDRLP4 4 +INDIRI4 +CNSTI4 0 +EQI4 $379 +line 865 +;865: item->window.background = DC->registerShaderNoMip(name); +ADDRLP4 0 +INDIRP4 +ARGP4 +ADDRLP4 8 +ADDRGP4 DC +INDIRP4 +INDIRP4 +CALLI4 +ASGNI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 176 +ADDP4 +ADDRLP4 8 +INDIRI4 +ASGNI4 +line 866 +;866: } +LABELV $379 +line 867 +;867:} +LABELV $378 +endproc Script_SetBackground 12 8 +export Menu_FindItemByName +proc Menu_FindItemByName 12 8 +line 872 +;868: +;869: +;870: +;871: +;872:itemDef_t *Menu_FindItemByName(menuDef_t *menu, const char *p) { +line 874 +;873: int i; +;874: if (menu == NULL || p == NULL) { +ADDRLP4 4 +CNSTU4 0 +ASGNU4 +ADDRFP4 0 +INDIRP4 +CVPU4 4 +ADDRLP4 4 +INDIRU4 +EQU4 $384 +ADDRFP4 4 +INDIRP4 +CVPU4 4 +ADDRLP4 4 +INDIRU4 +NEU4 $382 +LABELV $384 +line 875 +;875: return NULL; +CNSTP4 0 +RETP4 +ADDRGP4 $381 +JUMPV +LABELV $382 +line 878 +;876: } +;877: +;878: for (i = 0; i < menu->itemCount; i++) { +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +ADDRGP4 $388 +JUMPV +LABELV $385 +line 879 +;879: if (Q_stricmp(p, menu->items[i]->window.name) == 0) { +ADDRFP4 4 +INDIRP4 +ARGP4 +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 260 +ADDP4 +ADDP4 +INDIRP4 +CNSTI4 32 +ADDP4 +INDIRP4 +ARGP4 +ADDRLP4 8 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 8 +INDIRI4 +CNSTI4 0 +NEI4 $389 +line 880 +;880: return menu->items[i]; +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 260 +ADDP4 +ADDP4 +INDIRP4 +RETP4 +ADDRGP4 $381 +JUMPV +LABELV $389 +line 882 +;881: } +;882: } +LABELV $386 +line 878 +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +LABELV $388 +ADDRLP4 0 +INDIRI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 188 +ADDP4 +INDIRI4 +LTI4 $385 +line 884 +;883: +;884: return NULL; +CNSTP4 0 +RETP4 +LABELV $381 +endproc Menu_FindItemByName 12 8 +export Script_SetTeamColor +proc Script_SetTeamColor 24 4 +line 887 +;885:} +;886: +;887:void Script_SetTeamColor(itemDef_t *item, char **args) { +line 888 +;888: if (DC->getTeamColor) { +ADDRGP4 DC +INDIRP4 +CNSTI4 84 +ADDP4 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $392 +line 891 +;889: int i; +;890: vec4_t color; +;891: DC->getTeamColor(&color); +ADDRLP4 4 +ARGP4 +ADDRGP4 DC +INDIRP4 +CNSTI4 84 +ADDP4 +INDIRP4 +CALLV +pop +line 892 +;892: for (i = 0; i < 4; i++) { +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +LABELV $394 +line 893 +;893: item->window.backColor[i] = color[i]; +ADDRLP4 20 +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ASGNI4 +ADDRLP4 20 +INDIRI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 128 +ADDP4 +ADDP4 +ADDRLP4 20 +INDIRI4 +ADDRLP4 4 +ADDP4 +INDIRF4 +ASGNF4 +line 894 +;894: } +LABELV $395 +line 892 +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +ADDRLP4 0 +INDIRI4 +CNSTI4 4 +LTI4 $394 +line 895 +;895: } +LABELV $392 +line 896 +;896:} +LABELV $391 +endproc Script_SetTeamColor 24 4 +export Script_SetItemColor +proc Script_SetItemColor 80 12 +line 898 +;897: +;898:void Script_SetItemColor(itemDef_t *item, char **args) { +line 905 +;899: const char *itemname; +;900: const char *name; +;901: vec4_t color; +;902: int i; +;903: vec4_t *out; +;904: // expecting type of color to set and 4 args for the color +;905: if (String_Parse(args, &itemname) && String_Parse(args, &name)) { +ADDRFP4 4 +INDIRP4 +ARGP4 +ADDRLP4 24 +ARGP4 +ADDRLP4 32 +ADDRGP4 String_Parse +CALLI4 +ASGNI4 +ADDRLP4 32 +INDIRI4 +CNSTI4 0 +EQI4 $399 +ADDRFP4 4 +INDIRP4 +ARGP4 +ADDRLP4 28 +ARGP4 +ADDRLP4 36 +ADDRGP4 String_Parse +CALLI4 +ASGNI4 +ADDRLP4 36 +INDIRI4 +CNSTI4 0 +EQI4 $399 +line 908 +;906: itemDef_t *item2; +;907: int j; +;908: int count = Menu_ItemsMatchingGroup(item->parent, itemname); +ADDRFP4 0 +INDIRP4 +CNSTI4 228 +ADDP4 +INDIRP4 +ARGP4 +ADDRLP4 24 +INDIRP4 +ARGP4 +ADDRLP4 52 +ADDRGP4 Menu_ItemsMatchingGroup +CALLI4 +ASGNI4 +ADDRLP4 48 +ADDRLP4 52 +INDIRI4 +ASGNI4 +line 910 +;909: +;910: if (!Color_Parse(args, &color)) { +ADDRFP4 4 +INDIRP4 +ARGP4 +ADDRLP4 8 +ARGP4 +ADDRLP4 56 +ADDRGP4 Color_Parse +CALLI4 +ASGNI4 +ADDRLP4 56 +INDIRI4 +CNSTI4 0 +NEI4 $401 +line 911 +;911: return; +ADDRGP4 $398 +JUMPV +LABELV $401 +line 914 +;912: } +;913: +;914: for (j = 0; j < count; j++) { +ADDRLP4 40 +CNSTI4 0 +ASGNI4 +ADDRGP4 $406 +JUMPV +LABELV $403 +line 915 +;915: item2 = Menu_GetMatchingItemByNumber(item->parent, j, itemname); +ADDRFP4 0 +INDIRP4 +CNSTI4 228 +ADDP4 +INDIRP4 +ARGP4 +ADDRLP4 40 +INDIRI4 +ARGI4 +ADDRLP4 24 +INDIRP4 +ARGP4 +ADDRLP4 60 +ADDRGP4 Menu_GetMatchingItemByNumber +CALLP4 +ASGNP4 +ADDRLP4 44 +ADDRLP4 60 +INDIRP4 +ASGNP4 +line 916 +;916: if (item2 != NULL) { +ADDRLP4 44 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $407 +line 917 +;917: out = NULL; +ADDRLP4 4 +CNSTP4 0 +ASGNP4 +line 918 +;918: if (Q_stricmp(name, "backcolor") == 0) { +ADDRLP4 28 +INDIRP4 +ARGP4 +ADDRGP4 $358 +ARGP4 +ADDRLP4 64 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 64 +INDIRI4 +CNSTI4 0 +NEI4 $409 +line 919 +;919: out = &item2->window.backColor; +ADDRLP4 4 +ADDRLP4 44 +INDIRP4 +CNSTI4 128 +ADDP4 +ASGNP4 +line 920 +;920: } else if (Q_stricmp(name, "forecolor") == 0) { +ADDRGP4 $410 +JUMPV +LABELV $409 +ADDRLP4 28 +INDIRP4 +ARGP4 +ADDRGP4 $361 +ARGP4 +ADDRLP4 68 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 68 +INDIRI4 +CNSTI4 0 +NEI4 $411 +line 921 +;921: out = &item2->window.foreColor; +ADDRLP4 4 +ADDRLP4 44 +INDIRP4 +CNSTI4 112 +ADDP4 +ASGNP4 +line 922 +;922: item2->window.flags |= WINDOW_FORECOLORSET; +ADDRLP4 72 +ADDRLP4 44 +INDIRP4 +CNSTI4 68 +ADDP4 +ASGNP4 +ADDRLP4 72 +INDIRP4 +ADDRLP4 72 +INDIRP4 +INDIRI4 +CNSTI4 512 +BORI4 +ASGNI4 +line 923 +;923: } else if (Q_stricmp(name, "bordercolor") == 0) { +ADDRGP4 $412 +JUMPV +LABELV $411 +ADDRLP4 28 +INDIRP4 +ARGP4 +ADDRGP4 $364 +ARGP4 +ADDRLP4 72 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 72 +INDIRI4 +CNSTI4 0 +NEI4 $413 +line 924 +;924: out = &item2->window.borderColor; +ADDRLP4 4 +ADDRLP4 44 +INDIRP4 +CNSTI4 144 +ADDP4 +ASGNP4 +line 925 +;925: } +LABELV $413 +LABELV $412 +LABELV $410 +line 927 +;926: +;927: if (out) { +ADDRLP4 4 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $415 +line 928 +;928: for (i = 0; i < 4; i++) { +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +LABELV $417 +line 929 +;929: (*out)[i] = color[i]; +ADDRLP4 76 +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ASGNI4 +ADDRLP4 76 +INDIRI4 +ADDRLP4 4 +INDIRP4 +ADDP4 +ADDRLP4 76 +INDIRI4 +ADDRLP4 8 +ADDP4 +INDIRF4 +ASGNF4 +line 930 +;930: } +LABELV $418 +line 928 +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +ADDRLP4 0 +INDIRI4 +CNSTI4 4 +LTI4 $417 +line 931 +;931: } +LABELV $415 +line 932 +;932: } +LABELV $407 +line 933 +;933: } +LABELV $404 +line 914 +ADDRLP4 40 +ADDRLP4 40 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +LABELV $406 +ADDRLP4 40 +INDIRI4 +ADDRLP4 48 +INDIRI4 +LTI4 $403 +line 934 +;934: } +LABELV $399 +line 935 +;935:} +LABELV $398 +endproc Script_SetItemColor 80 12 +export Menu_ShowItemByName +proc Menu_ShowItemByName 24 12 +line 938 +;936: +;937: +;938:void Menu_ShowItemByName(menuDef_t *menu, const char *p, qboolean bShow) { +line 941 +;939: itemDef_t *item; +;940: int i; +;941: int count = Menu_ItemsMatchingGroup(menu, p); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRFP4 4 +INDIRP4 +ARGP4 +ADDRLP4 12 +ADDRGP4 Menu_ItemsMatchingGroup +CALLI4 +ASGNI4 +ADDRLP4 8 +ADDRLP4 12 +INDIRI4 +ASGNI4 +line 942 +;942: for (i = 0; i < count; i++) { +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +ADDRGP4 $425 +JUMPV +LABELV $422 +line 943 +;943: item = Menu_GetMatchingItemByNumber(menu, i, p); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRLP4 0 +INDIRI4 +ARGI4 +ADDRFP4 4 +INDIRP4 +ARGP4 +ADDRLP4 16 +ADDRGP4 Menu_GetMatchingItemByNumber +CALLP4 +ASGNP4 +ADDRLP4 4 +ADDRLP4 16 +INDIRP4 +ASGNP4 +line 944 +;944: if (item != NULL) { +ADDRLP4 4 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $426 +line 945 +;945: if (bShow) { +ADDRFP4 8 +INDIRI4 +CNSTI4 0 +EQI4 $428 +line 946 +;946: item->window.flags |= WINDOW_VISIBLE; +ADDRLP4 20 +ADDRLP4 4 +INDIRP4 +CNSTI4 68 +ADDP4 +ASGNP4 +ADDRLP4 20 +INDIRP4 +ADDRLP4 20 +INDIRP4 +INDIRI4 +CNSTI4 4 +BORI4 +ASGNI4 +line 947 +;947: } else { +ADDRGP4 $429 +JUMPV +LABELV $428 +line 948 +;948: item->window.flags &= ~WINDOW_VISIBLE; +ADDRLP4 20 +ADDRLP4 4 +INDIRP4 +CNSTI4 68 +ADDP4 +ASGNP4 +ADDRLP4 20 +INDIRP4 +ADDRLP4 20 +INDIRP4 +INDIRI4 +CNSTI4 -5 +BANDI4 +ASGNI4 +line 950 +;949: // stop cinematics playing in the window +;950: if (item->window.cinematic >= 0) { +ADDRLP4 4 +INDIRP4 +CNSTI4 44 +ADDP4 +INDIRI4 +CNSTI4 0 +LTI4 $430 +line 951 +;951: DC->stopCinematic(item->window.cinematic); +ADDRLP4 4 +INDIRP4 +CNSTI4 44 +ADDP4 +INDIRI4 +ARGI4 +ADDRGP4 DC +INDIRP4 +CNSTI4 184 +ADDP4 +INDIRP4 +CALLV +pop +line 952 +;952: item->window.cinematic = -1; +ADDRLP4 4 +INDIRP4 +CNSTI4 44 +ADDP4 +CNSTI4 -1 +ASGNI4 +line 953 +;953: } +LABELV $430 +line 954 +;954: } +LABELV $429 +line 955 +;955: } +LABELV $426 +line 956 +;956: } +LABELV $423 +line 942 +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +LABELV $425 +ADDRLP4 0 +INDIRI4 +ADDRLP4 8 +INDIRI4 +LTI4 $422 +line 957 +;957:} +LABELV $421 +endproc Menu_ShowItemByName 24 12 +export Menu_FadeItemByName +proc Menu_FadeItemByName 32 12 +line 959 +;958: +;959:void Menu_FadeItemByName(menuDef_t *menu, const char *p, qboolean fadeOut) { +line 962 +;960: itemDef_t *item; +;961: int i; +;962: int count = Menu_ItemsMatchingGroup(menu, p); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRFP4 4 +INDIRP4 +ARGP4 +ADDRLP4 12 +ADDRGP4 Menu_ItemsMatchingGroup +CALLI4 +ASGNI4 +ADDRLP4 8 +ADDRLP4 12 +INDIRI4 +ASGNI4 +line 963 +;963: for (i = 0; i < count; i++) { +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +ADDRGP4 $436 +JUMPV +LABELV $433 +line 964 +;964: item = Menu_GetMatchingItemByNumber(menu, i, p); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRLP4 0 +INDIRI4 +ARGI4 +ADDRFP4 4 +INDIRP4 +ARGP4 +ADDRLP4 16 +ADDRGP4 Menu_GetMatchingItemByNumber +CALLP4 +ASGNP4 +ADDRLP4 4 +ADDRLP4 16 +INDIRP4 +ASGNP4 +line 965 +;965: if (item != NULL) { +ADDRLP4 4 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $437 +line 966 +;966: if (fadeOut) { +ADDRFP4 8 +INDIRI4 +CNSTI4 0 +EQI4 $439 +line 967 +;967: item->window.flags |= (WINDOW_FADINGOUT | WINDOW_VISIBLE); +ADDRLP4 20 +ADDRLP4 4 +INDIRP4 +CNSTI4 68 +ADDP4 +ASGNP4 +ADDRLP4 20 +INDIRP4 +ADDRLP4 20 +INDIRP4 +INDIRI4 +CNSTI4 36 +BORI4 +ASGNI4 +line 968 +;968: item->window.flags &= ~WINDOW_FADINGIN; +ADDRLP4 24 +ADDRLP4 4 +INDIRP4 +CNSTI4 68 +ADDP4 +ASGNP4 +ADDRLP4 24 +INDIRP4 +ADDRLP4 24 +INDIRP4 +INDIRI4 +CNSTI4 -65 +BANDI4 +ASGNI4 +line 969 +;969: } else { +ADDRGP4 $440 +JUMPV +LABELV $439 +line 970 +;970: item->window.flags |= (WINDOW_VISIBLE | WINDOW_FADINGIN); +ADDRLP4 20 +CNSTI4 68 +ASGNI4 +ADDRLP4 24 +ADDRLP4 4 +INDIRP4 +ADDRLP4 20 +INDIRI4 +ADDP4 +ASGNP4 +ADDRLP4 24 +INDIRP4 +ADDRLP4 24 +INDIRP4 +INDIRI4 +ADDRLP4 20 +INDIRI4 +BORI4 +ASGNI4 +line 971 +;971: item->window.flags &= ~WINDOW_FADINGOUT; +ADDRLP4 28 +ADDRLP4 4 +INDIRP4 +CNSTI4 68 +ADDP4 +ASGNP4 +ADDRLP4 28 +INDIRP4 +ADDRLP4 28 +INDIRP4 +INDIRI4 +CNSTI4 -33 +BANDI4 +ASGNI4 +line 972 +;972: } +LABELV $440 +line 973 +;973: } +LABELV $437 +line 974 +;974: } +LABELV $434 +line 963 +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +LABELV $436 +ADDRLP4 0 +INDIRI4 +ADDRLP4 8 +INDIRI4 +LTI4 $433 +line 975 +;975:} +LABELV $432 +endproc Menu_FadeItemByName 32 12 +export Menus_FindByName +proc Menus_FindByName 8 8 +line 977 +;976: +;977:menuDef_t *Menus_FindByName(const char *p) { +line 979 +;978: int i; +;979: for (i = 0; i < menuCount; i++) { +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +ADDRGP4 $445 +JUMPV +LABELV $442 +line 980 +;980: if (Q_stricmp(Menus[i].window.name, p) == 0) { +CNSTI4 644 +ADDRLP4 0 +INDIRI4 +MULI4 +ADDRGP4 Menus+32 +ADDP4 +INDIRP4 +ARGP4 +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRLP4 4 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 4 +INDIRI4 +CNSTI4 0 +NEI4 $446 +line 981 +;981: return &Menus[i]; +CNSTI4 644 +ADDRLP4 0 +INDIRI4 +MULI4 +ADDRGP4 Menus +ADDP4 +RETP4 +ADDRGP4 $441 +JUMPV +LABELV $446 +line 983 +;982: } +;983: } +LABELV $443 +line 979 +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +LABELV $445 +ADDRLP4 0 +INDIRI4 +ADDRGP4 menuCount +INDIRI4 +LTI4 $442 +line 984 +;984: return NULL; +CNSTP4 0 +RETP4 +LABELV $441 +endproc Menus_FindByName 8 8 +export Menus_ShowByName +proc Menus_ShowByName 8 4 +line 987 +;985:} +;986: +;987:void Menus_ShowByName(const char *p) { +line 988 +;988: menuDef_t *menu = Menus_FindByName(p); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRLP4 4 +ADDRGP4 Menus_FindByName +CALLP4 +ASGNP4 +ADDRLP4 0 +ADDRLP4 4 +INDIRP4 +ASGNP4 +line 989 +;989: if (menu) { +ADDRLP4 0 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $450 +line 990 +;990: Menus_Activate(menu); +ADDRLP4 0 +INDIRP4 +ARGP4 +ADDRGP4 Menus_Activate +CALLV +pop +line 991 +;991: } +LABELV $450 +line 992 +;992:} +LABELV $449 +endproc Menus_ShowByName 8 4 +export Menus_OpenByName +proc Menus_OpenByName 0 4 +line 994 +;993: +;994:void Menus_OpenByName(const char *p) { +line 995 +;995: Menus_ActivateByName(p); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRGP4 Menus_ActivateByName +CALLP4 +pop +line 996 +;996:} +LABELV $452 +endproc Menus_OpenByName 0 4 +proc Menu_RunCloseScript 548 8 +line 998 +;997: +;998:static void Menu_RunCloseScript(menuDef_t *menu) { +line 999 +;999: if (menu && menu->window.flags & WINDOW_VISIBLE && menu->onClose) { +ADDRLP4 0 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 4 +CNSTU4 0 +ASGNU4 +ADDRLP4 0 +INDIRP4 +CVPU4 4 +ADDRLP4 4 +INDIRU4 +EQU4 $454 +ADDRLP4 0 +INDIRP4 +CNSTI4 68 +ADDP4 +INDIRI4 +CNSTI4 4 +BANDI4 +CNSTI4 0 +EQI4 $454 +ADDRLP4 0 +INDIRP4 +CNSTI4 216 +ADDP4 +INDIRP4 +CVPU4 4 +ADDRLP4 4 +INDIRU4 +EQU4 $454 +line 1001 +;1000: itemDef_t item; +;1001: item.parent = menu; +ADDRLP4 8+228 +ADDRFP4 0 +INDIRP4 +ASGNP4 +line 1002 +;1002: Item_RunScript(&item, menu->onClose); +ADDRLP4 8 +ARGP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 216 +ADDP4 +INDIRP4 +ARGP4 +ADDRGP4 Item_RunScript +CALLV +pop +line 1003 +;1003: } +LABELV $454 +line 1004 +;1004:} +LABELV $453 +endproc Menu_RunCloseScript 548 8 +export Menus_CloseByName +proc Menus_CloseByName 12 4 +line 1006 +;1005: +;1006:void Menus_CloseByName(const char *p) { +line 1007 +;1007: menuDef_t *menu = Menus_FindByName(p); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRLP4 4 +ADDRGP4 Menus_FindByName +CALLP4 +ASGNP4 +ADDRLP4 0 +ADDRLP4 4 +INDIRP4 +ASGNP4 +line 1008 +;1008: if (menu != NULL) { +ADDRLP4 0 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $458 +line 1009 +;1009: Menu_RunCloseScript(menu); +ADDRLP4 0 +INDIRP4 +ARGP4 +ADDRGP4 Menu_RunCloseScript +CALLV +pop +line 1010 +;1010: menu->window.flags &= ~(WINDOW_VISIBLE | WINDOW_HASFOCUS); +ADDRLP4 8 +ADDRLP4 0 +INDIRP4 +CNSTI4 68 +ADDP4 +ASGNP4 +ADDRLP4 8 +INDIRP4 +ADDRLP4 8 +INDIRP4 +INDIRI4 +CNSTI4 -7 +BANDI4 +ASGNI4 +line 1011 +;1011: } +LABELV $458 +line 1012 +;1012:} +LABELV $457 +endproc Menus_CloseByName 12 4 +export Menus_CloseAll +proc Menus_CloseAll 8 4 +line 1014 +;1013: +;1014:void Menus_CloseAll() { +line 1016 +;1015: int i; +;1016: for (i = 0; i < menuCount; i++) { +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +ADDRGP4 $464 +JUMPV +LABELV $461 +line 1017 +;1017: Menu_RunCloseScript(&Menus[i]); +CNSTI4 644 +ADDRLP4 0 +INDIRI4 +MULI4 +ADDRGP4 Menus +ADDP4 +ARGP4 +ADDRGP4 Menu_RunCloseScript +CALLV +pop +line 1018 +;1018: Menus[i].window.flags &= ~(WINDOW_HASFOCUS | WINDOW_VISIBLE); +ADDRLP4 4 +CNSTI4 644 +ADDRLP4 0 +INDIRI4 +MULI4 +ADDRGP4 Menus+68 +ADDP4 +ASGNP4 +ADDRLP4 4 +INDIRP4 +ADDRLP4 4 +INDIRP4 +INDIRI4 +CNSTI4 -7 +BANDI4 +ASGNI4 +line 1019 +;1019: } +LABELV $462 +line 1016 +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +LABELV $464 +ADDRLP4 0 +INDIRI4 +ADDRGP4 menuCount +INDIRI4 +LTI4 $461 +line 1020 +;1020:} +LABELV $460 +endproc Menus_CloseAll 8 4 +export Script_Show +proc Script_Show 8 12 +line 1023 +;1021: +;1022: +;1023:void Script_Show(itemDef_t *item, char **args) { +line 1025 +;1024: const char *name; +;1025: if (String_Parse(args, &name)) { +ADDRFP4 4 +INDIRP4 +ARGP4 +ADDRLP4 0 +ARGP4 +ADDRLP4 4 +ADDRGP4 String_Parse +CALLI4 +ASGNI4 +ADDRLP4 4 +INDIRI4 +CNSTI4 0 +EQI4 $467 +line 1026 +;1026: Menu_ShowItemByName(item->parent, name, qtrue); +ADDRFP4 0 +INDIRP4 +CNSTI4 228 +ADDP4 +INDIRP4 +ARGP4 +ADDRLP4 0 +INDIRP4 +ARGP4 +CNSTI4 1 +ARGI4 +ADDRGP4 Menu_ShowItemByName +CALLV +pop +line 1027 +;1027: } +LABELV $467 +line 1028 +;1028:} +LABELV $466 +endproc Script_Show 8 12 +export Script_Hide +proc Script_Hide 8 12 +line 1030 +;1029: +;1030:void Script_Hide(itemDef_t *item, char **args) { +line 1032 +;1031: const char *name; +;1032: if (String_Parse(args, &name)) { +ADDRFP4 4 +INDIRP4 +ARGP4 +ADDRLP4 0 +ARGP4 +ADDRLP4 4 +ADDRGP4 String_Parse +CALLI4 +ASGNI4 +ADDRLP4 4 +INDIRI4 +CNSTI4 0 +EQI4 $470 +line 1033 +;1033: Menu_ShowItemByName(item->parent, name, qfalse); +ADDRFP4 0 +INDIRP4 +CNSTI4 228 +ADDP4 +INDIRP4 +ARGP4 +ADDRLP4 0 +INDIRP4 +ARGP4 +CNSTI4 0 +ARGI4 +ADDRGP4 Menu_ShowItemByName +CALLV +pop +line 1034 +;1034: } +LABELV $470 +line 1035 +;1035:} +LABELV $469 +endproc Script_Hide 8 12 +export Script_FadeIn +proc Script_FadeIn 8 12 +line 1037 +;1036: +;1037:void Script_FadeIn(itemDef_t *item, char **args) { +line 1039 +;1038: const char *name; +;1039: if (String_Parse(args, &name)) { +ADDRFP4 4 +INDIRP4 +ARGP4 +ADDRLP4 0 +ARGP4 +ADDRLP4 4 +ADDRGP4 String_Parse +CALLI4 +ASGNI4 +ADDRLP4 4 +INDIRI4 +CNSTI4 0 +EQI4 $473 +line 1040 +;1040: Menu_FadeItemByName(item->parent, name, qfalse); +ADDRFP4 0 +INDIRP4 +CNSTI4 228 +ADDP4 +INDIRP4 +ARGP4 +ADDRLP4 0 +INDIRP4 +ARGP4 +CNSTI4 0 +ARGI4 +ADDRGP4 Menu_FadeItemByName +CALLV +pop +line 1041 +;1041: } +LABELV $473 +line 1042 +;1042:} +LABELV $472 +endproc Script_FadeIn 8 12 +export Script_FadeOut +proc Script_FadeOut 8 12 +line 1044 +;1043: +;1044:void Script_FadeOut(itemDef_t *item, char **args) { +line 1046 +;1045: const char *name; +;1046: if (String_Parse(args, &name)) { +ADDRFP4 4 +INDIRP4 +ARGP4 +ADDRLP4 0 +ARGP4 +ADDRLP4 4 +ADDRGP4 String_Parse +CALLI4 +ASGNI4 +ADDRLP4 4 +INDIRI4 +CNSTI4 0 +EQI4 $476 +line 1047 +;1047: Menu_FadeItemByName(item->parent, name, qtrue); +ADDRFP4 0 +INDIRP4 +CNSTI4 228 +ADDP4 +INDIRP4 +ARGP4 +ADDRLP4 0 +INDIRP4 +ARGP4 +CNSTI4 1 +ARGI4 +ADDRGP4 Menu_FadeItemByName +CALLV +pop +line 1048 +;1048: } +LABELV $476 +line 1049 +;1049:} +LABELV $475 +endproc Script_FadeOut 8 12 +export Script_Open +proc Script_Open 8 8 +line 1053 +;1050: +;1051: +;1052: +;1053:void Script_Open(itemDef_t *item, char **args) { +line 1055 +;1054: const char *name; +;1055: if (String_Parse(args, &name)) { +ADDRFP4 4 +INDIRP4 +ARGP4 +ADDRLP4 0 +ARGP4 +ADDRLP4 4 +ADDRGP4 String_Parse +CALLI4 +ASGNI4 +ADDRLP4 4 +INDIRI4 +CNSTI4 0 +EQI4 $479 +line 1056 +;1056: Menus_OpenByName(name); +ADDRLP4 0 +INDIRP4 +ARGP4 +ADDRGP4 Menus_OpenByName +CALLV +pop +line 1057 +;1057: } +LABELV $479 +line 1058 +;1058:} +LABELV $478 +endproc Script_Open 8 8 +export Script_Close +proc Script_Close 8 8 +line 1060 +;1059: +;1060:void Script_Close(itemDef_t *item, char **args) { +line 1062 +;1061: const char *name; +;1062: if (String_Parse(args, &name)) { +ADDRFP4 4 +INDIRP4 +ARGP4 +ADDRLP4 0 +ARGP4 +ADDRLP4 4 +ADDRGP4 String_Parse +CALLI4 +ASGNI4 +ADDRLP4 4 +INDIRI4 +CNSTI4 0 +EQI4 $482 +line 1063 +;1063: Menus_CloseByName(name); +ADDRLP4 0 +INDIRP4 +ARGP4 +ADDRGP4 Menus_CloseByName +CALLV +pop +line 1064 +;1064: } +LABELV $482 +line 1065 +;1065:} +LABELV $481 +endproc Script_Close 8 8 +export Menu_TransitionItemByName +proc Menu_TransitionItemByName 56 12 +line 1067 +;1066: +;1067:void Menu_TransitionItemByName(menuDef_t *menu, const char *p, rectDef_t rectFrom, rectDef_t rectTo, int time, float amt) { +line 1070 +;1068: itemDef_t *item; +;1069: int i; +;1070: int count = Menu_ItemsMatchingGroup(menu, p); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRFP4 4 +INDIRP4 +ARGP4 +ADDRLP4 12 +ADDRGP4 Menu_ItemsMatchingGroup +CALLI4 +ASGNI4 +ADDRLP4 8 +ADDRLP4 12 +INDIRI4 +ASGNI4 +line 1071 +;1071: for (i = 0; i < count; i++) { +ADDRLP4 4 +CNSTI4 0 +ASGNI4 +ADDRGP4 $488 +JUMPV +LABELV $485 +line 1072 +;1072: item = Menu_GetMatchingItemByNumber(menu, i, p); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRLP4 4 +INDIRI4 +ARGI4 +ADDRFP4 4 +INDIRP4 +ARGP4 +ADDRLP4 16 +ADDRGP4 Menu_GetMatchingItemByNumber +CALLP4 +ASGNP4 +ADDRLP4 0 +ADDRLP4 16 +INDIRP4 +ASGNP4 +line 1073 +;1073: if (item != NULL) { +ADDRLP4 0 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $489 +line 1074 +;1074: item->window.flags |= (WINDOW_INTRANSITION | WINDOW_VISIBLE); +ADDRLP4 20 +ADDRLP4 0 +INDIRP4 +CNSTI4 68 +ADDP4 +ASGNP4 +ADDRLP4 20 +INDIRP4 +ADDRLP4 20 +INDIRP4 +INDIRI4 +CNSTI4 260 +BORI4 +ASGNI4 +line 1075 +;1075: item->window.offsetTime = time; +ADDRLP4 0 +INDIRP4 +CNSTI4 104 +ADDP4 +ADDRFP4 16 +INDIRI4 +ASGNI4 +line 1076 +;1076: memcpy(&item->window.rectClient, &rectFrom, sizeof(rectDef_t)); +ADDRLP4 24 +CNSTI4 16 +ASGNI4 +ADDRLP4 0 +INDIRP4 +ADDRLP4 24 +INDIRI4 +ADDP4 +ARGP4 +ADDRFP4 8 +INDIRP4 +ARGP4 +ADDRLP4 24 +INDIRI4 +ARGI4 +ADDRGP4 memcpy +CALLP4 +pop +line 1077 +;1077: memcpy(&item->window.rectEffects, &rectTo, sizeof(rectDef_t)); +ADDRLP4 0 +INDIRP4 +CNSTI4 72 +ADDP4 +ARGP4 +ADDRFP4 12 +INDIRP4 +ARGP4 +CNSTI4 16 +ARGI4 +ADDRGP4 memcpy +CALLP4 +pop +line 1078 +;1078: item->window.rectEffects2.x = abs(rectTo.x - rectFrom.x) / amt; +ADDRFP4 12 +INDIRP4 +INDIRF4 +ADDRFP4 8 +INDIRP4 +INDIRF4 +SUBF4 +CVFI4 4 +ARGI4 +ADDRLP4 28 +ADDRGP4 abs +CALLI4 +ASGNI4 +ADDRLP4 0 +INDIRP4 +CNSTI4 88 +ADDP4 +ADDRLP4 28 +INDIRI4 +CVIF4 4 +ADDRFP4 20 +INDIRF4 +DIVF4 +ASGNF4 +line 1079 +;1079: item->window.rectEffects2.y = abs(rectTo.y - rectFrom.y) / amt; +ADDRLP4 32 +CNSTI4 4 +ASGNI4 +ADDRFP4 12 +INDIRP4 +ADDRLP4 32 +INDIRI4 +ADDP4 +INDIRF4 +ADDRFP4 8 +INDIRP4 +ADDRLP4 32 +INDIRI4 +ADDP4 +INDIRF4 +SUBF4 +CVFI4 4 +ARGI4 +ADDRLP4 36 +ADDRGP4 abs +CALLI4 +ASGNI4 +ADDRLP4 0 +INDIRP4 +CNSTI4 92 +ADDP4 +ADDRLP4 36 +INDIRI4 +CVIF4 4 +ADDRFP4 20 +INDIRF4 +DIVF4 +ASGNF4 +line 1080 +;1080: item->window.rectEffects2.w = abs(rectTo.w - rectFrom.w) / amt; +ADDRLP4 40 +CNSTI4 8 +ASGNI4 +ADDRFP4 12 +INDIRP4 +ADDRLP4 40 +INDIRI4 +ADDP4 +INDIRF4 +ADDRFP4 8 +INDIRP4 +ADDRLP4 40 +INDIRI4 +ADDP4 +INDIRF4 +SUBF4 +CVFI4 4 +ARGI4 +ADDRLP4 44 +ADDRGP4 abs +CALLI4 +ASGNI4 +ADDRLP4 0 +INDIRP4 +CNSTI4 96 +ADDP4 +ADDRLP4 44 +INDIRI4 +CVIF4 4 +ADDRFP4 20 +INDIRF4 +DIVF4 +ASGNF4 +line 1081 +;1081: item->window.rectEffects2.h = abs(rectTo.h - rectFrom.h) / amt; +ADDRLP4 48 +CNSTI4 12 +ASGNI4 +ADDRFP4 12 +INDIRP4 +ADDRLP4 48 +INDIRI4 +ADDP4 +INDIRF4 +ADDRFP4 8 +INDIRP4 +ADDRLP4 48 +INDIRI4 +ADDP4 +INDIRF4 +SUBF4 +CVFI4 4 +ARGI4 +ADDRLP4 52 +ADDRGP4 abs +CALLI4 +ASGNI4 +ADDRLP4 0 +INDIRP4 +CNSTI4 100 +ADDP4 +ADDRLP4 52 +INDIRI4 +CVIF4 4 +ADDRFP4 20 +INDIRF4 +DIVF4 +ASGNF4 +line 1082 +;1082: Item_UpdatePosition(item); +ADDRLP4 0 +INDIRP4 +ARGP4 +ADDRGP4 Item_UpdatePosition +CALLV +pop +line 1083 +;1083: } +LABELV $489 +line 1084 +;1084: } +LABELV $486 +line 1071 +ADDRLP4 4 +ADDRLP4 4 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +LABELV $488 +ADDRLP4 4 +INDIRI4 +ADDRLP4 8 +INDIRI4 +LTI4 $485 +line 1085 +;1085:} +LABELV $484 +endproc Menu_TransitionItemByName 56 12 +export Script_Transition +proc Script_Transition 96 24 +line 1088 +;1086: +;1087: +;1088:void Script_Transition(itemDef_t *item, char **args) { +line 1094 +;1089: const char *name; +;1090: rectDef_t rectFrom, rectTo; +;1091: int time; +;1092: float amt; +;1093: +;1094: if (String_Parse(args, &name)) { +ADDRFP4 4 +INDIRP4 +ARGP4 +ADDRLP4 0 +ARGP4 +ADDRLP4 44 +ADDRGP4 String_Parse +CALLI4 +ASGNI4 +ADDRLP4 44 +INDIRI4 +CNSTI4 0 +EQI4 $492 +line 1095 +;1095: if ( Rect_Parse(args, &rectFrom) && Rect_Parse(args, &rectTo) && Int_Parse(args, &time) && Float_Parse(args, &amt)) { +ADDRFP4 4 +INDIRP4 +ARGP4 +ADDRLP4 4 +ARGP4 +ADDRLP4 48 +ADDRGP4 Rect_Parse +CALLI4 +ASGNI4 +ADDRLP4 48 +INDIRI4 +CNSTI4 0 +EQI4 $494 +ADDRFP4 4 +INDIRP4 +ARGP4 +ADDRLP4 20 +ARGP4 +ADDRLP4 52 +ADDRGP4 Rect_Parse +CALLI4 +ASGNI4 +ADDRLP4 52 +INDIRI4 +CNSTI4 0 +EQI4 $494 +ADDRFP4 4 +INDIRP4 +ARGP4 +ADDRLP4 36 +ARGP4 +ADDRLP4 56 +ADDRGP4 Int_Parse +CALLI4 +ASGNI4 +ADDRLP4 56 +INDIRI4 +CNSTI4 0 +EQI4 $494 +ADDRFP4 4 +INDIRP4 +ARGP4 +ADDRLP4 40 +ARGP4 +ADDRLP4 60 +ADDRGP4 Float_Parse +CALLI4 +ASGNI4 +ADDRLP4 60 +INDIRI4 +CNSTI4 0 +EQI4 $494 +line 1096 +;1096: Menu_TransitionItemByName(item->parent, name, rectFrom, rectTo, time, amt); +ADDRFP4 0 +INDIRP4 +CNSTI4 228 +ADDP4 +INDIRP4 +ARGP4 +ADDRLP4 0 +INDIRP4 +ARGP4 +ADDRLP4 64 +ADDRLP4 4 +INDIRB +ASGNB 16 +ADDRLP4 64 +ARGP4 +ADDRLP4 80 +ADDRLP4 20 +INDIRB +ASGNB 16 +ADDRLP4 80 +ARGP4 +ADDRLP4 36 +INDIRI4 +ARGI4 +ADDRLP4 40 +INDIRF4 +ARGF4 +ADDRGP4 Menu_TransitionItemByName +CALLV +pop +line 1097 +;1097: } +LABELV $494 +line 1098 +;1098: } +LABELV $492 +line 1099 +;1099:} +LABELV $491 +endproc Script_Transition 96 24 +export Menu_OrbitItemByName +proc Menu_OrbitItemByName 24 12 +line 1102 +;1100: +;1101: +;1102:void Menu_OrbitItemByName(menuDef_t *menu, const char *p, float x, float y, float cx, float cy, int time) { +line 1105 +;1103: itemDef_t *item; +;1104: int i; +;1105: int count = Menu_ItemsMatchingGroup(menu, p); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRFP4 4 +INDIRP4 +ARGP4 +ADDRLP4 12 +ADDRGP4 Menu_ItemsMatchingGroup +CALLI4 +ASGNI4 +ADDRLP4 8 +ADDRLP4 12 +INDIRI4 +ASGNI4 +line 1106 +;1106: for (i = 0; i < count; i++) { +ADDRLP4 4 +CNSTI4 0 +ASGNI4 +ADDRGP4 $500 +JUMPV +LABELV $497 +line 1107 +;1107: item = Menu_GetMatchingItemByNumber(menu, i, p); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRLP4 4 +INDIRI4 +ARGI4 +ADDRFP4 4 +INDIRP4 +ARGP4 +ADDRLP4 16 +ADDRGP4 Menu_GetMatchingItemByNumber +CALLP4 +ASGNP4 +ADDRLP4 0 +ADDRLP4 16 +INDIRP4 +ASGNP4 +line 1108 +;1108: if (item != NULL) { +ADDRLP4 0 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $501 +line 1109 +;1109: item->window.flags |= (WINDOW_ORBITING | WINDOW_VISIBLE); +ADDRLP4 20 +ADDRLP4 0 +INDIRP4 +CNSTI4 68 +ADDP4 +ASGNP4 +ADDRLP4 20 +INDIRP4 +ADDRLP4 20 +INDIRP4 +INDIRI4 +CNSTI4 65540 +BORI4 +ASGNI4 +line 1110 +;1110: item->window.offsetTime = time; +ADDRLP4 0 +INDIRP4 +CNSTI4 104 +ADDP4 +ADDRFP4 24 +INDIRI4 +ASGNI4 +line 1111 +;1111: item->window.rectEffects.x = cx; +ADDRLP4 0 +INDIRP4 +CNSTI4 72 +ADDP4 +ADDRFP4 16 +INDIRF4 +ASGNF4 +line 1112 +;1112: item->window.rectEffects.y = cy; +ADDRLP4 0 +INDIRP4 +CNSTI4 76 +ADDP4 +ADDRFP4 20 +INDIRF4 +ASGNF4 +line 1113 +;1113: item->window.rectClient.x = x; +ADDRLP4 0 +INDIRP4 +CNSTI4 16 +ADDP4 +ADDRFP4 8 +INDIRF4 +ASGNF4 +line 1114 +;1114: item->window.rectClient.y = y; +ADDRLP4 0 +INDIRP4 +CNSTI4 20 +ADDP4 +ADDRFP4 12 +INDIRF4 +ASGNF4 +line 1115 +;1115: Item_UpdatePosition(item); +ADDRLP4 0 +INDIRP4 +ARGP4 +ADDRGP4 Item_UpdatePosition +CALLV +pop +line 1116 +;1116: } +LABELV $501 +line 1117 +;1117: } +LABELV $498 +line 1106 +ADDRLP4 4 +ADDRLP4 4 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +LABELV $500 +ADDRLP4 4 +INDIRI4 +ADDRLP4 8 +INDIRI4 +LTI4 $497 +line 1118 +;1118:} +LABELV $496 +endproc Menu_OrbitItemByName 24 12 +export Script_Orbit +proc Script_Orbit 48 28 +line 1121 +;1119: +;1120: +;1121:void Script_Orbit(itemDef_t *item, char **args) { +line 1126 +;1122: const char *name; +;1123: float cx, cy, x, y; +;1124: int time; +;1125: +;1126: if (String_Parse(args, &name)) { +ADDRFP4 4 +INDIRP4 +ARGP4 +ADDRLP4 0 +ARGP4 +ADDRLP4 24 +ADDRGP4 String_Parse +CALLI4 +ASGNI4 +ADDRLP4 24 +INDIRI4 +CNSTI4 0 +EQI4 $504 +line 1127 +;1127: if ( Float_Parse(args, &x) && Float_Parse(args, &y) && Float_Parse(args, &cx) && Float_Parse(args, &cy) && Int_Parse(args, &time) ) { +ADDRFP4 4 +INDIRP4 +ARGP4 +ADDRLP4 12 +ARGP4 +ADDRLP4 28 +ADDRGP4 Float_Parse +CALLI4 +ASGNI4 +ADDRLP4 28 +INDIRI4 +CNSTI4 0 +EQI4 $506 +ADDRFP4 4 +INDIRP4 +ARGP4 +ADDRLP4 16 +ARGP4 +ADDRLP4 32 +ADDRGP4 Float_Parse +CALLI4 +ASGNI4 +ADDRLP4 32 +INDIRI4 +CNSTI4 0 +EQI4 $506 +ADDRFP4 4 +INDIRP4 +ARGP4 +ADDRLP4 4 +ARGP4 +ADDRLP4 36 +ADDRGP4 Float_Parse +CALLI4 +ASGNI4 +ADDRLP4 36 +INDIRI4 +CNSTI4 0 +EQI4 $506 +ADDRFP4 4 +INDIRP4 +ARGP4 +ADDRLP4 8 +ARGP4 +ADDRLP4 40 +ADDRGP4 Float_Parse +CALLI4 +ASGNI4 +ADDRLP4 40 +INDIRI4 +CNSTI4 0 +EQI4 $506 +ADDRFP4 4 +INDIRP4 +ARGP4 +ADDRLP4 20 +ARGP4 +ADDRLP4 44 +ADDRGP4 Int_Parse +CALLI4 +ASGNI4 +ADDRLP4 44 +INDIRI4 +CNSTI4 0 +EQI4 $506 +line 1128 +;1128: Menu_OrbitItemByName(item->parent, name, x, y, cx, cy, time); +ADDRFP4 0 +INDIRP4 +CNSTI4 228 +ADDP4 +INDIRP4 +ARGP4 +ADDRLP4 0 +INDIRP4 +ARGP4 +ADDRLP4 12 +INDIRF4 +ARGF4 +ADDRLP4 16 +INDIRF4 +ARGF4 +ADDRLP4 4 +INDIRF4 +ARGF4 +ADDRLP4 8 +INDIRF4 +ARGF4 +ADDRLP4 20 +INDIRI4 +ARGI4 +ADDRGP4 Menu_OrbitItemByName +CALLV +pop +line 1129 +;1129: } +LABELV $506 +line 1130 +;1130: } +LABELV $504 +line 1131 +;1131:} +LABELV $503 +endproc Script_Orbit 48 28 +export Script_SetFocus +proc Script_SetFocus 36 8 +line 1135 +;1132: +;1133: +;1134: +;1135:void Script_SetFocus(itemDef_t *item, char **args) { +line 1139 +;1136: const char *name; +;1137: itemDef_t *focusItem; +;1138: +;1139: if (String_Parse(args, &name)) { +ADDRFP4 4 +INDIRP4 +ARGP4 +ADDRLP4 4 +ARGP4 +ADDRLP4 8 +ADDRGP4 String_Parse +CALLI4 +ASGNI4 +ADDRLP4 8 +INDIRI4 +CNSTI4 0 +EQI4 $509 +line 1140 +;1140: focusItem = Menu_FindItemByName(item->parent, name); +ADDRFP4 0 +INDIRP4 +CNSTI4 228 +ADDP4 +INDIRP4 +ARGP4 +ADDRLP4 4 +INDIRP4 +ARGP4 +ADDRLP4 12 +ADDRGP4 Menu_FindItemByName +CALLP4 +ASGNP4 +ADDRLP4 0 +ADDRLP4 12 +INDIRP4 +ASGNP4 +line 1141 +;1141: if (focusItem && !(focusItem->window.flags & WINDOW_DECORATION) && !(focusItem->window.flags & WINDOW_HASFOCUS)) { +ADDRLP4 16 +ADDRLP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 16 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $511 +ADDRLP4 20 +ADDRLP4 16 +INDIRP4 +CNSTI4 68 +ADDP4 +INDIRI4 +ASGNI4 +ADDRLP4 24 +CNSTI4 0 +ASGNI4 +ADDRLP4 20 +INDIRI4 +CNSTI4 16 +BANDI4 +ADDRLP4 24 +INDIRI4 +NEI4 $511 +ADDRLP4 20 +INDIRI4 +CNSTI4 2 +BANDI4 +ADDRLP4 24 +INDIRI4 +NEI4 $511 +line 1142 +;1142: Menu_ClearFocus(item->parent); +ADDRFP4 0 +INDIRP4 +CNSTI4 228 +ADDP4 +INDIRP4 +ARGP4 +ADDRGP4 Menu_ClearFocus +CALLP4 +pop +line 1143 +;1143: focusItem->window.flags |= WINDOW_HASFOCUS; +ADDRLP4 28 +ADDRLP4 0 +INDIRP4 +CNSTI4 68 +ADDP4 +ASGNP4 +ADDRLP4 28 +INDIRP4 +ADDRLP4 28 +INDIRP4 +INDIRI4 +CNSTI4 2 +BORI4 +ASGNI4 +line 1144 +;1144: if (focusItem->onFocus) { +ADDRLP4 0 +INDIRP4 +CNSTI4 256 +ADDP4 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $513 +line 1145 +;1145: Item_RunScript(focusItem, focusItem->onFocus); +ADDRLP4 32 +ADDRLP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 32 +INDIRP4 +ARGP4 +ADDRLP4 32 +INDIRP4 +CNSTI4 256 +ADDP4 +INDIRP4 +ARGP4 +ADDRGP4 Item_RunScript +CALLV +pop +line 1146 +;1146: } +LABELV $513 +line 1147 +;1147: if (DC->Assets.itemFocusSound) { +ADDRGP4 DC +INDIRP4 +CNSTI4 61948 +ADDP4 +INDIRI4 +CNSTI4 0 +EQI4 $515 +line 1148 +;1148: DC->startLocalSound( DC->Assets.itemFocusSound, CHAN_LOCAL_SOUND ); +ADDRLP4 32 +ADDRGP4 DC +INDIRP4 +ASGNP4 +ADDRLP4 32 +INDIRP4 +CNSTI4 61948 +ADDP4 +INDIRI4 +ARGI4 +CNSTI4 6 +ARGI4 +ADDRLP4 32 +INDIRP4 +CNSTI4 112 +ADDP4 +INDIRP4 +CALLV +pop +line 1149 +;1149: } +LABELV $515 +line 1150 +;1150: } +LABELV $511 +line 1151 +;1151: } +LABELV $509 +line 1152 +;1152:} +LABELV $508 +endproc Script_SetFocus 36 8 +export Script_SetPlayerModel +proc Script_SetPlayerModel 8 8 +line 1154 +;1153: +;1154:void Script_SetPlayerModel(itemDef_t *item, char **args) { +line 1156 +;1155: const char *name; +;1156: if (String_Parse(args, &name)) { +ADDRFP4 4 +INDIRP4 +ARGP4 +ADDRLP4 0 +ARGP4 +ADDRLP4 4 +ADDRGP4 String_Parse +CALLI4 +ASGNI4 +ADDRLP4 4 +INDIRI4 +CNSTI4 0 +EQI4 $518 +line 1157 +;1157: DC->setCVar("team_model", name); +ADDRGP4 $520 +ARGP4 +ADDRLP4 0 +INDIRP4 +ARGP4 +ADDRGP4 DC +INDIRP4 +CNSTI4 96 +ADDP4 +INDIRP4 +CALLV +pop +line 1158 +;1158: } +LABELV $518 +line 1159 +;1159:} +LABELV $517 +endproc Script_SetPlayerModel 8 8 +export Script_SetPlayerHead +proc Script_SetPlayerHead 8 8 +line 1161 +;1160: +;1161:void Script_SetPlayerHead(itemDef_t *item, char **args) { +line 1163 +;1162: const char *name; +;1163: if (String_Parse(args, &name)) { +ADDRFP4 4 +INDIRP4 +ARGP4 +ADDRLP4 0 +ARGP4 +ADDRLP4 4 +ADDRGP4 String_Parse +CALLI4 +ASGNI4 +ADDRLP4 4 +INDIRI4 +CNSTI4 0 +EQI4 $522 +line 1164 +;1164: DC->setCVar("team_headmodel", name); +ADDRGP4 $524 +ARGP4 +ADDRLP4 0 +INDIRP4 +ARGP4 +ADDRGP4 DC +INDIRP4 +CNSTI4 96 +ADDP4 +INDIRP4 +CALLV +pop +line 1165 +;1165: } +LABELV $522 +line 1166 +;1166:} +LABELV $521 +endproc Script_SetPlayerHead 8 8 +export Script_SetCvar +proc Script_SetCvar 16 8 +line 1168 +;1167: +;1168:void Script_SetCvar(itemDef_t *item, char **args) { +line 1170 +;1169: const char *cvar, *val; +;1170: if (String_Parse(args, &cvar) && String_Parse(args, &val)) { +ADDRFP4 4 +INDIRP4 +ARGP4 +ADDRLP4 0 +ARGP4 +ADDRLP4 8 +ADDRGP4 String_Parse +CALLI4 +ASGNI4 +ADDRLP4 8 +INDIRI4 +CNSTI4 0 +EQI4 $526 +ADDRFP4 4 +INDIRP4 +ARGP4 +ADDRLP4 4 +ARGP4 +ADDRLP4 12 +ADDRGP4 String_Parse +CALLI4 +ASGNI4 +ADDRLP4 12 +INDIRI4 +CNSTI4 0 +EQI4 $526 +line 1171 +;1171: DC->setCVar(cvar, val); +ADDRLP4 0 +INDIRP4 +ARGP4 +ADDRLP4 4 +INDIRP4 +ARGP4 +ADDRGP4 DC +INDIRP4 +CNSTI4 96 +ADDP4 +INDIRP4 +CALLV +pop +line 1172 +;1172: } +LABELV $526 +line 1174 +;1173: +;1174:} +LABELV $525 +endproc Script_SetCvar 16 8 +export Script_Exec +proc Script_Exec 12 8 +line 1176 +;1175: +;1176:void Script_Exec(itemDef_t *item, char **args) { +line 1178 +;1177: const char *val; +;1178: if (String_Parse(args, &val)) { +ADDRFP4 4 +INDIRP4 +ARGP4 +ADDRLP4 0 +ARGP4 +ADDRLP4 4 +ADDRGP4 String_Parse +CALLI4 +ASGNI4 +ADDRLP4 4 +INDIRI4 +CNSTI4 0 +EQI4 $529 +line 1179 +;1179: DC->executeText(EXEC_APPEND, va("%s ; ", val)); +ADDRGP4 $531 +ARGP4 +ADDRLP4 0 +INDIRP4 +ARGP4 +ADDRLP4 8 +ADDRGP4 va +CALLP4 +ASGNP4 +CNSTI4 2 +ARGI4 +ADDRLP4 8 +INDIRP4 +ARGP4 +ADDRGP4 DC +INDIRP4 +CNSTI4 148 +ADDP4 +INDIRP4 +CALLV +pop +line 1180 +;1180: } +LABELV $529 +line 1181 +;1181:} +LABELV $528 +endproc Script_Exec 12 8 +export Script_Play +proc Script_Play 12 8 +line 1183 +;1182: +;1183:void Script_Play(itemDef_t *item, char **args) { +line 1185 +;1184: const char *val; +;1185: if (String_Parse(args, &val)) { +ADDRFP4 4 +INDIRP4 +ARGP4 +ADDRLP4 0 +ARGP4 +ADDRLP4 4 +ADDRGP4 String_Parse +CALLI4 +ASGNI4 +ADDRLP4 4 +INDIRI4 +CNSTI4 0 +EQI4 $533 +line 1186 +;1186: DC->startLocalSound(DC->registerSound(val, qfalse), CHAN_LOCAL_SOUND); +ADDRLP4 0 +INDIRP4 +ARGP4 +CNSTI4 0 +ARGI4 +ADDRLP4 8 +ADDRGP4 DC +INDIRP4 +CNSTI4 168 +ADDP4 +INDIRP4 +CALLI4 +ASGNI4 +ADDRLP4 8 +INDIRI4 +ARGI4 +CNSTI4 6 +ARGI4 +ADDRGP4 DC +INDIRP4 +CNSTI4 112 +ADDP4 +INDIRP4 +CALLV +pop +line 1187 +;1187: } +LABELV $533 +line 1188 +;1188:} +LABELV $532 +endproc Script_Play 12 8 +export Script_playLooped +proc Script_playLooped 12 8 +line 1190 +;1189: +;1190:void Script_playLooped(itemDef_t *item, char **args) { +line 1192 +;1191: const char *val; +;1192: if (String_Parse(args, &val)) { +ADDRFP4 4 +INDIRP4 +ARGP4 +ADDRLP4 0 +ARGP4 +ADDRLP4 4 +ADDRGP4 String_Parse +CALLI4 +ASGNI4 +ADDRLP4 4 +INDIRI4 +CNSTI4 0 +EQI4 $536 +line 1193 +;1193: DC->stopBackgroundTrack(); +ADDRGP4 DC +INDIRP4 +CNSTI4 176 +ADDP4 +INDIRP4 +CALLV +pop +line 1194 +;1194: DC->startBackgroundTrack(val, val); +ADDRLP4 8 +ADDRLP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 8 +INDIRP4 +ARGP4 +ADDRLP4 8 +INDIRP4 +ARGP4 +ADDRGP4 DC +INDIRP4 +CNSTI4 172 +ADDP4 +INDIRP4 +CALLV +pop +line 1195 +;1195: } +LABELV $536 +line 1196 +;1196:} +LABELV $535 +endproc Script_playLooped 12 8 +data +export commandList +align 4 +LABELV commandList +address $538 +address Script_FadeIn +address $539 +address Script_FadeOut +address $540 +address Script_Show +address $541 +address Script_Hide +address $542 +address Script_SetColor +address $543 +address Script_Open +address $544 +address Script_Close +address $545 +address Script_SetAsset +address $546 +address Script_SetBackground +address $547 +address Script_SetItemColor +address $548 +address Script_SetTeamColor +address $549 +address Script_SetFocus +address $550 +address Script_SetPlayerModel +address $551 +address Script_SetPlayerHead +address $552 +address Script_Transition +address $553 +address Script_SetCvar +address $554 +address Script_Exec +address $555 +address Script_Play +address $556 +address Script_playLooped +address $557 +address Script_Orbit +export scriptCommandCount +align 4 +LABELV scriptCommandCount +byte 4 20 +export Item_RunScript +code +proc Item_RunScript 1060 12 +line 1226 +;1197: +;1198: +;1199:commandDef_t commandList[] = +;1200:{ +;1201: {"fadein", &Script_FadeIn}, // group/name +;1202: {"fadeout", &Script_FadeOut}, // group/name +;1203: {"show", &Script_Show}, // group/name +;1204: {"hide", &Script_Hide}, // group/name +;1205: {"setcolor", &Script_SetColor}, // works on this +;1206: {"open", &Script_Open}, // nenu +;1207: {"close", &Script_Close}, // menu +;1208: {"setasset", &Script_SetAsset}, // works on this +;1209: {"setbackground", &Script_SetBackground}, // works on this +;1210: {"setitemcolor", &Script_SetItemColor}, // group/name +;1211: {"setteamcolor", &Script_SetTeamColor}, // sets this background color to team color +;1212: {"setfocus", &Script_SetFocus}, // sets this background color to team color +;1213: {"setplayermodel", &Script_SetPlayerModel}, // sets this background color to team color +;1214: {"setplayerhead", &Script_SetPlayerHead}, // sets this background color to team color +;1215: {"transition", &Script_Transition}, // group/name +;1216: {"setcvar", &Script_SetCvar}, // group/name +;1217: {"exec", &Script_Exec}, // group/name +;1218: {"play", &Script_Play}, // group/name +;1219: {"playlooped", &Script_playLooped}, // group/name +;1220: {"orbit", &Script_Orbit} // group/name +;1221:}; +;1222: +;1223:int scriptCommandCount = sizeof(commandList) / sizeof(commandDef_t); +;1224: +;1225: +;1226:void Item_RunScript(itemDef_t *item, const char *s) { +line 1230 +;1227: char script[1024], *p; +;1228: int i; +;1229: qboolean bRan; +;1230: memset(script, 0, sizeof(script)); +ADDRLP4 12 +ARGP4 +CNSTI4 0 +ARGI4 +CNSTI4 1024 +ARGI4 +ADDRGP4 memset +CALLP4 +pop +line 1231 +;1231: if (item && s && s[0]) { +ADDRLP4 1036 +CNSTU4 0 +ASGNU4 +ADDRFP4 0 +INDIRP4 +CVPU4 4 +ADDRLP4 1036 +INDIRU4 +EQU4 $559 +ADDRLP4 1040 +ADDRFP4 4 +INDIRP4 +ASGNP4 +ADDRLP4 1040 +INDIRP4 +CVPU4 4 +ADDRLP4 1036 +INDIRU4 +EQU4 $559 +ADDRLP4 1040 +INDIRP4 +INDIRI1 +CVII4 1 +CNSTI4 0 +EQI4 $559 +line 1232 +;1232: Q_strcat(script, 1024, s); +ADDRLP4 12 +ARGP4 +CNSTI4 1024 +ARGI4 +ADDRFP4 4 +INDIRP4 +ARGP4 +ADDRGP4 Q_strcat +CALLV +pop +line 1233 +;1233: p = script; +ADDRLP4 8 +ADDRLP4 12 +ASGNP4 +ADDRGP4 $562 +JUMPV +LABELV $561 +line 1234 +;1234: while (1) { +line 1237 +;1235: const char *command; +;1236: // expect command then arguments, ; ends command, NULL ends script +;1237: if (!String_Parse(&p, &command)) { +ADDRLP4 8 +ARGP4 +ADDRLP4 1044 +ARGP4 +ADDRLP4 1048 +ADDRGP4 String_Parse +CALLI4 +ASGNI4 +ADDRLP4 1048 +INDIRI4 +CNSTI4 0 +NEI4 $564 +line 1238 +;1238: return; +ADDRGP4 $558 +JUMPV +LABELV $564 +line 1241 +;1239: } +;1240: +;1241: if (command[0] == ';' && command[1] == '\0') { +ADDRLP4 1052 +ADDRLP4 1044 +INDIRP4 +ASGNP4 +ADDRLP4 1052 +INDIRP4 +INDIRI1 +CVII4 1 +CNSTI4 59 +NEI4 $566 +ADDRLP4 1052 +INDIRP4 +CNSTI4 1 +ADDP4 +INDIRI1 +CVII4 1 +CNSTI4 0 +NEI4 $566 +line 1242 +;1242: continue; +ADDRGP4 $562 +JUMPV +LABELV $566 +line 1245 +;1243: } +;1244: +;1245: bRan = qfalse; +ADDRLP4 4 +CNSTI4 0 +ASGNI4 +line 1246 +;1246: for (i = 0; i < scriptCommandCount; i++) { +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +ADDRGP4 $571 +JUMPV +LABELV $568 +line 1247 +;1247: if (Q_stricmp(command, commandList[i].name) == 0) { +ADDRLP4 1044 +INDIRP4 +ARGP4 +ADDRLP4 0 +INDIRI4 +CNSTI4 3 +LSHI4 +ADDRGP4 commandList +ADDP4 +INDIRP4 +ARGP4 +ADDRLP4 1056 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 1056 +INDIRI4 +CNSTI4 0 +NEI4 $572 +line 1248 +;1248: (commandList[i].handler(item, &p)); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRLP4 8 +ARGP4 +ADDRLP4 0 +INDIRI4 +CNSTI4 3 +LSHI4 +ADDRGP4 commandList+4 +ADDP4 +INDIRP4 +CALLV +pop +line 1249 +;1249: bRan = qtrue; +ADDRLP4 4 +CNSTI4 1 +ASGNI4 +line 1250 +;1250: break; +ADDRGP4 $570 +JUMPV +LABELV $572 +line 1252 +;1251: } +;1252: } +LABELV $569 +line 1246 +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +LABELV $571 +ADDRLP4 0 +INDIRI4 +ADDRGP4 scriptCommandCount +INDIRI4 +LTI4 $568 +LABELV $570 +line 1254 +;1253: // not in our auto list, pass to handler +;1254: if (!bRan) { +ADDRLP4 4 +INDIRI4 +CNSTI4 0 +NEI4 $575 +line 1255 +;1255: DC->runScript(&p); +ADDRLP4 8 +ARGP4 +ADDRGP4 DC +INDIRP4 +CNSTI4 80 +ADDP4 +INDIRP4 +CALLV +pop +line 1256 +;1256: } +LABELV $575 +line 1257 +;1257: } +LABELV $562 +line 1234 +ADDRGP4 $561 +JUMPV +line 1258 +;1258: } +LABELV $559 +line 1259 +;1259:} +LABELV $558 +endproc Item_RunScript 1060 12 +export Item_EnableShowViaCvar +proc Item_EnableShowViaCvar 2088 12 +line 1262 +;1260: +;1261: +;1262:qboolean Item_EnableShowViaCvar(itemDef_t *item, int flag) { +line 1264 +;1263: char script[1024], *p; +;1264: memset(script, 0, sizeof(script)); +ADDRLP4 4 +ARGP4 +CNSTI4 0 +ARGI4 +CNSTI4 1024 +ARGI4 +ADDRGP4 memset +CALLP4 +pop +line 1265 +;1265: if (item && item->enableCvar && *item->enableCvar && item->cvarTest && *item->cvarTest) { +ADDRLP4 1028 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 1032 +CNSTU4 0 +ASGNU4 +ADDRLP4 1028 +INDIRP4 +CVPU4 4 +ADDRLP4 1032 +INDIRU4 +EQU4 $578 +ADDRLP4 1036 +ADDRLP4 1028 +INDIRP4 +CNSTI4 272 +ADDP4 +INDIRP4 +ASGNP4 +ADDRLP4 1036 +INDIRP4 +CVPU4 4 +ADDRLP4 1032 +INDIRU4 +EQU4 $578 +ADDRLP4 1040 +CNSTI4 0 +ASGNI4 +ADDRLP4 1036 +INDIRP4 +INDIRI1 +CVII4 1 +ADDRLP4 1040 +INDIRI4 +EQI4 $578 +ADDRLP4 1044 +ADDRLP4 1028 +INDIRP4 +CNSTI4 268 +ADDP4 +INDIRP4 +ASGNP4 +ADDRLP4 1044 +INDIRP4 +CVPU4 4 +ADDRLP4 1032 +INDIRU4 +EQU4 $578 +ADDRLP4 1044 +INDIRP4 +INDIRI1 +CVII4 1 +ADDRLP4 1040 +INDIRI4 +EQI4 $578 +line 1267 +;1266: char buff[1024]; +;1267: DC->getCVarString(item->cvarTest, buff, sizeof(buff)); +ADDRFP4 0 +INDIRP4 +CNSTI4 268 +ADDP4 +INDIRP4 +ARGP4 +ADDRLP4 1048 +ARGP4 +CNSTI4 1024 +ARGI4 +ADDRGP4 DC +INDIRP4 +CNSTI4 88 +ADDP4 +INDIRP4 +CALLV +pop +line 1269 +;1268: +;1269: Q_strcat(script, 1024, item->enableCvar); +ADDRLP4 4 +ARGP4 +CNSTI4 1024 +ARGI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 272 +ADDP4 +INDIRP4 +ARGP4 +ADDRGP4 Q_strcat +CALLV +pop +line 1270 +;1270: p = script; +ADDRLP4 0 +ADDRLP4 4 +ASGNP4 +ADDRGP4 $581 +JUMPV +LABELV $580 +line 1271 +;1271: while (1) { +line 1274 +;1272: const char *val; +;1273: // expect value then ; or NULL, NULL ends list +;1274: if (!String_Parse(&p, &val)) { +ADDRLP4 0 +ARGP4 +ADDRLP4 2072 +ARGP4 +ADDRLP4 2076 +ADDRGP4 String_Parse +CALLI4 +ASGNI4 +ADDRLP4 2076 +INDIRI4 +CNSTI4 0 +NEI4 $583 +line 1275 +;1275: return (item->cvarFlags & flag) ? qfalse : qtrue; +ADDRFP4 0 +INDIRP4 +CNSTI4 276 +ADDP4 +INDIRI4 +ADDRFP4 4 +INDIRI4 +BANDI4 +CNSTI4 0 +EQI4 $586 +ADDRLP4 2080 +CNSTI4 0 +ASGNI4 +ADDRGP4 $587 +JUMPV +LABELV $586 +ADDRLP4 2080 +CNSTI4 1 +ASGNI4 +LABELV $587 +ADDRLP4 2080 +INDIRI4 +RETI4 +ADDRGP4 $577 +JUMPV +LABELV $583 +line 1278 +;1276: } +;1277: +;1278: if (val[0] == ';' && val[1] == '\0') { +ADDRLP4 2080 +ADDRLP4 2072 +INDIRP4 +ASGNP4 +ADDRLP4 2080 +INDIRP4 +INDIRI1 +CVII4 1 +CNSTI4 59 +NEI4 $588 +ADDRLP4 2080 +INDIRP4 +CNSTI4 1 +ADDP4 +INDIRI1 +CVII4 1 +CNSTI4 0 +NEI4 $588 +line 1279 +;1279: continue; +ADDRGP4 $581 +JUMPV +LABELV $588 +line 1283 +;1280: } +;1281: +;1282: // enable it if any of the values are true +;1283: if (item->cvarFlags & flag) { +ADDRFP4 0 +INDIRP4 +CNSTI4 276 +ADDP4 +INDIRI4 +ADDRFP4 4 +INDIRI4 +BANDI4 +CNSTI4 0 +EQI4 $590 +line 1284 +;1284: if (Q_stricmp(buff, val) == 0) { +ADDRLP4 1048 +ARGP4 +ADDRLP4 2072 +INDIRP4 +ARGP4 +ADDRLP4 2084 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 2084 +INDIRI4 +CNSTI4 0 +NEI4 $591 +line 1285 +;1285: return qtrue; +CNSTI4 1 +RETI4 +ADDRGP4 $577 +JUMPV +line 1287 +;1286: } +;1287: } else { +LABELV $590 +line 1289 +;1288: // disable it if any of the values are true +;1289: if (Q_stricmp(buff, val) == 0) { +ADDRLP4 1048 +ARGP4 +ADDRLP4 2072 +INDIRP4 +ARGP4 +ADDRLP4 2084 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 2084 +INDIRI4 +CNSTI4 0 +NEI4 $594 +line 1290 +;1290: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $577 +JUMPV +LABELV $594 +line 1292 +;1291: } +;1292: } +LABELV $591 +line 1294 +;1293: +;1294: } +LABELV $581 +line 1271 +ADDRGP4 $580 +JUMPV +line 1295 +;1295: return (item->cvarFlags & flag) ? qfalse : qtrue; +ADDRFP4 0 +INDIRP4 +CNSTI4 276 +ADDP4 +INDIRI4 +ADDRFP4 4 +INDIRI4 +BANDI4 +CNSTI4 0 +EQI4 $597 +ADDRLP4 2072 +CNSTI4 0 +ASGNI4 +ADDRGP4 $598 +JUMPV +LABELV $597 +ADDRLP4 2072 +CNSTI4 1 +ASGNI4 +LABELV $598 +ADDRLP4 2072 +INDIRI4 +RETI4 +ADDRGP4 $577 +JUMPV +LABELV $578 +line 1297 +;1296: } +;1297: return qtrue; +CNSTI4 1 +RETI4 +LABELV $577 +endproc Item_EnableShowViaCvar 2088 12 +export Item_SetFocus +proc Item_SetFocus 80 12 +line 1302 +;1298:} +;1299: +;1300: +;1301:// will optionaly set focus to this item +;1302:qboolean Item_SetFocus(itemDef_t *item, float x, float y) { +line 1305 +;1303: int i; +;1304: itemDef_t *oldFocus; +;1305: sfxHandle_t *sfx = &DC->Assets.itemFocusSound; +ADDRLP4 8 +ADDRGP4 DC +INDIRP4 +CNSTI4 61948 +ADDP4 +ASGNP4 +line 1306 +;1306: qboolean playSound = qfalse; +ADDRLP4 12 +CNSTI4 0 +ASGNI4 +line 1309 +;1307: menuDef_t *parent; // bk001206: = (menuDef_t*)item->parent; +;1308: // sanity check, non-null, not a decoration and does not already have the focus +;1309: if (item == NULL || item->window.flags & WINDOW_DECORATION || item->window.flags & WINDOW_HASFOCUS || !(item->window.flags & WINDOW_VISIBLE)) { +ADDRLP4 20 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 20 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $604 +ADDRLP4 24 +ADDRLP4 20 +INDIRP4 +CNSTI4 68 +ADDP4 +INDIRI4 +ASGNI4 +ADDRLP4 28 +CNSTI4 0 +ASGNI4 +ADDRLP4 24 +INDIRI4 +CNSTI4 16 +BANDI4 +ADDRLP4 28 +INDIRI4 +NEI4 $604 +ADDRLP4 24 +INDIRI4 +CNSTI4 2 +BANDI4 +ADDRLP4 28 +INDIRI4 +NEI4 $604 +ADDRLP4 24 +INDIRI4 +CNSTI4 4 +BANDI4 +ADDRLP4 28 +INDIRI4 +NEI4 $600 +LABELV $604 +line 1310 +;1310: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $599 +JUMPV +LABELV $600 +line 1314 +;1311: } +;1312: +;1313: // bk001206 - this can be NULL. +;1314: parent = (menuDef_t*)item->parent; +ADDRLP4 4 +ADDRFP4 0 +INDIRP4 +CNSTI4 228 +ADDP4 +INDIRP4 +ASGNP4 +line 1317 +;1315: +;1316: // items can be enabled and disabled based on cvars +;1317: if (item->cvarFlags & (CVAR_ENABLE | CVAR_DISABLE) && !Item_EnableShowViaCvar(item, CVAR_ENABLE)) { +ADDRLP4 32 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 32 +INDIRP4 +CNSTI4 276 +ADDP4 +INDIRI4 +CNSTI4 3 +BANDI4 +CNSTI4 0 +EQI4 $605 +ADDRLP4 32 +INDIRP4 +ARGP4 +CNSTI4 1 +ARGI4 +ADDRLP4 36 +ADDRGP4 Item_EnableShowViaCvar +CALLI4 +ASGNI4 +ADDRLP4 36 +INDIRI4 +CNSTI4 0 +NEI4 $605 +line 1318 +;1318: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $599 +JUMPV +LABELV $605 +line 1321 +;1319: } +;1320: +;1321: if (item->cvarFlags & (CVAR_SHOW | CVAR_HIDE) && !Item_EnableShowViaCvar(item, CVAR_SHOW)) { +ADDRLP4 40 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 40 +INDIRP4 +CNSTI4 276 +ADDP4 +INDIRI4 +CNSTI4 12 +BANDI4 +CNSTI4 0 +EQI4 $607 +ADDRLP4 40 +INDIRP4 +ARGP4 +CNSTI4 4 +ARGI4 +ADDRLP4 44 +ADDRGP4 Item_EnableShowViaCvar +CALLI4 +ASGNI4 +ADDRLP4 44 +INDIRI4 +CNSTI4 0 +NEI4 $607 +line 1322 +;1322: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $599 +JUMPV +LABELV $607 +line 1325 +;1323: } +;1324: +;1325: oldFocus = Menu_ClearFocus(item->parent); +ADDRFP4 0 +INDIRP4 +CNSTI4 228 +ADDP4 +INDIRP4 +ARGP4 +ADDRLP4 48 +ADDRGP4 Menu_ClearFocus +CALLP4 +ASGNP4 +ADDRLP4 16 +ADDRLP4 48 +INDIRP4 +ASGNP4 +line 1327 +;1326: +;1327: if (item->type == ITEM_TYPE_TEXT) { +ADDRFP4 0 +INDIRP4 +CNSTI4 196 +ADDP4 +INDIRI4 +CNSTI4 0 +NEI4 $609 +line 1329 +;1328: rectDef_t r; +;1329: r = item->textRect; +ADDRLP4 52 +ADDRFP4 0 +INDIRP4 +CNSTI4 180 +ADDP4 +INDIRB +ASGNB 16 +line 1330 +;1330: r.y -= r.h; +ADDRLP4 52+4 +ADDRLP4 52+4 +INDIRF4 +ADDRLP4 52+12 +INDIRF4 +SUBF4 +ASGNF4 +line 1331 +;1331: if (Rect_ContainsPoint(&r, x, y)) { +ADDRLP4 52 +ARGP4 +ADDRFP4 4 +INDIRF4 +ARGF4 +ADDRFP4 8 +INDIRF4 +ARGF4 +ADDRLP4 68 +ADDRGP4 Rect_ContainsPoint +CALLI4 +ASGNI4 +ADDRLP4 68 +INDIRI4 +CNSTI4 0 +EQI4 $613 +line 1332 +;1332: item->window.flags |= WINDOW_HASFOCUS; +ADDRLP4 72 +ADDRFP4 0 +INDIRP4 +CNSTI4 68 +ADDP4 +ASGNP4 +ADDRLP4 72 +INDIRP4 +ADDRLP4 72 +INDIRP4 +INDIRI4 +CNSTI4 2 +BORI4 +ASGNI4 +line 1333 +;1333: if (item->focusSound) { +ADDRFP4 0 +INDIRP4 +CNSTI4 280 +ADDP4 +INDIRI4 +CNSTI4 0 +EQI4 $615 +line 1334 +;1334: sfx = &item->focusSound; +ADDRLP4 8 +ADDRFP4 0 +INDIRP4 +CNSTI4 280 +ADDP4 +ASGNP4 +line 1335 +;1335: } +LABELV $615 +line 1336 +;1336: playSound = qtrue; +ADDRLP4 12 +CNSTI4 1 +ASGNI4 +line 1337 +;1337: } else { +ADDRGP4 $610 +JUMPV +LABELV $613 +line 1338 +;1338: if (oldFocus) { +ADDRLP4 16 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $610 +line 1339 +;1339: oldFocus->window.flags |= WINDOW_HASFOCUS; +ADDRLP4 72 +ADDRLP4 16 +INDIRP4 +CNSTI4 68 +ADDP4 +ASGNP4 +ADDRLP4 72 +INDIRP4 +ADDRLP4 72 +INDIRP4 +INDIRI4 +CNSTI4 2 +BORI4 +ASGNI4 +line 1340 +;1340: if (oldFocus->onFocus) { +ADDRLP4 16 +INDIRP4 +CNSTI4 256 +ADDP4 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $610 +line 1341 +;1341: Item_RunScript(oldFocus, oldFocus->onFocus); +ADDRLP4 76 +ADDRLP4 16 +INDIRP4 +ASGNP4 +ADDRLP4 76 +INDIRP4 +ARGP4 +ADDRLP4 76 +INDIRP4 +CNSTI4 256 +ADDP4 +INDIRP4 +ARGP4 +ADDRGP4 Item_RunScript +CALLV +pop +line 1342 +;1342: } +line 1343 +;1343: } +line 1344 +;1344: } +line 1345 +;1345: } else { +ADDRGP4 $610 +JUMPV +LABELV $609 +line 1346 +;1346: item->window.flags |= WINDOW_HASFOCUS; +ADDRLP4 52 +ADDRFP4 0 +INDIRP4 +CNSTI4 68 +ADDP4 +ASGNP4 +ADDRLP4 52 +INDIRP4 +ADDRLP4 52 +INDIRP4 +INDIRI4 +CNSTI4 2 +BORI4 +ASGNI4 +line 1347 +;1347: if (item->onFocus) { +ADDRFP4 0 +INDIRP4 +CNSTI4 256 +ADDP4 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $621 +line 1348 +;1348: Item_RunScript(item, item->onFocus); +ADDRLP4 56 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 56 +INDIRP4 +ARGP4 +ADDRLP4 56 +INDIRP4 +CNSTI4 256 +ADDP4 +INDIRP4 +ARGP4 +ADDRGP4 Item_RunScript +CALLV +pop +line 1349 +;1349: } +LABELV $621 +line 1350 +;1350: if (item->focusSound) { +ADDRFP4 0 +INDIRP4 +CNSTI4 280 +ADDP4 +INDIRI4 +CNSTI4 0 +EQI4 $623 +line 1351 +;1351: sfx = &item->focusSound; +ADDRLP4 8 +ADDRFP4 0 +INDIRP4 +CNSTI4 280 +ADDP4 +ASGNP4 +line 1352 +;1352: } +LABELV $623 +line 1353 +;1353: playSound = qtrue; +ADDRLP4 12 +CNSTI4 1 +ASGNI4 +line 1354 +;1354: } +LABELV $610 +line 1356 +;1355: +;1356: if (playSound && sfx) { +ADDRLP4 12 +INDIRI4 +CNSTI4 0 +EQI4 $625 +ADDRLP4 8 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $625 +line 1357 +;1357: DC->startLocalSound( *sfx, CHAN_LOCAL_SOUND ); +ADDRLP4 8 +INDIRP4 +INDIRI4 +ARGI4 +CNSTI4 6 +ARGI4 +ADDRGP4 DC +INDIRP4 +CNSTI4 112 +ADDP4 +INDIRP4 +CALLV +pop +line 1358 +;1358: } +LABELV $625 +line 1360 +;1359: +;1360: for (i = 0; i < parent->itemCount; i++) { +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +ADDRGP4 $630 +JUMPV +LABELV $627 +line 1361 +;1361: if (parent->items[i] == item) { +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRLP4 4 +INDIRP4 +CNSTI4 260 +ADDP4 +ADDP4 +INDIRP4 +CVPU4 4 +ADDRFP4 0 +INDIRP4 +CVPU4 4 +NEU4 $631 +line 1362 +;1362: parent->cursorItem = i; +ADDRLP4 4 +INDIRP4 +CNSTI4 196 +ADDP4 +ADDRLP4 0 +INDIRI4 +ASGNI4 +line 1363 +;1363: break; +ADDRGP4 $629 +JUMPV +LABELV $631 +line 1365 +;1364: } +;1365: } +LABELV $628 +line 1360 +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +LABELV $630 +ADDRLP4 0 +INDIRI4 +ADDRLP4 4 +INDIRP4 +CNSTI4 188 +ADDP4 +INDIRI4 +LTI4 $627 +LABELV $629 +line 1367 +;1366: +;1367: return qtrue; +CNSTI4 1 +RETI4 +LABELV $599 +endproc Item_SetFocus 80 12 +export Item_ListBox_MaxScroll +proc Item_ListBox_MaxScroll 16 4 +line 1370 +;1368:} +;1369: +;1370:int Item_ListBox_MaxScroll(itemDef_t *item) { +line 1371 +;1371: listBoxDef_t *listPtr = (listBoxDef_t*)item->typeData; +ADDRLP4 4 +ADDRFP4 0 +INDIRP4 +CNSTI4 536 +ADDP4 +INDIRP4 +ASGNP4 +line 1372 +;1372: int count = DC->feederCount(item->special); +ADDRFP4 0 +INDIRP4 +CNSTI4 528 +ADDP4 +INDIRF4 +ARGF4 +ADDRLP4 12 +ADDRGP4 DC +INDIRP4 +CNSTI4 120 +ADDP4 +INDIRP4 +CALLI4 +ASGNI4 +ADDRLP4 8 +ADDRLP4 12 +INDIRI4 +ASGNI4 +line 1375 +;1373: int max; +;1374: +;1375: if (item->window.flags & WINDOW_HORIZONTAL) { +ADDRFP4 0 +INDIRP4 +CNSTI4 68 +ADDP4 +INDIRI4 +CNSTI4 1024 +BANDI4 +CNSTI4 0 +EQI4 $634 +line 1376 +;1376: max = count - (item->window.rect.w / listPtr->elementWidth) + 1; +ADDRLP4 0 +ADDRLP4 8 +INDIRI4 +CVIF4 4 +ADDRFP4 0 +INDIRP4 +CNSTI4 8 +ADDP4 +INDIRF4 +ADDRLP4 4 +INDIRP4 +CNSTI4 16 +ADDP4 +INDIRF4 +DIVF4 +SUBF4 +CNSTF4 1065353216 +ADDF4 +CVFI4 4 +ASGNI4 +line 1377 +;1377: } +ADDRGP4 $635 +JUMPV +LABELV $634 +line 1378 +;1378: else { +line 1379 +;1379: max = count - (item->window.rect.h / listPtr->elementHeight) + 1; +ADDRLP4 0 +ADDRLP4 8 +INDIRI4 +CVIF4 4 +ADDRFP4 0 +INDIRP4 +CNSTI4 12 +ADDP4 +INDIRF4 +ADDRLP4 4 +INDIRP4 +CNSTI4 20 +ADDP4 +INDIRF4 +DIVF4 +SUBF4 +CNSTF4 1065353216 +ADDF4 +CVFI4 4 +ASGNI4 +line 1380 +;1380: } +LABELV $635 +line 1381 +;1381: if (max < 0) { +ADDRLP4 0 +INDIRI4 +CNSTI4 0 +GEI4 $636 +line 1382 +;1382: return 0; +CNSTI4 0 +RETI4 +ADDRGP4 $633 +JUMPV +LABELV $636 +line 1384 +;1383: } +;1384: return max; +ADDRLP4 0 +INDIRI4 +RETI4 +LABELV $633 +endproc Item_ListBox_MaxScroll 16 4 +export Item_ListBox_ThumbPosition +proc Item_ListBox_ThumbPosition 20 4 +line 1387 +;1385:} +;1386: +;1387:int Item_ListBox_ThumbPosition(itemDef_t *item) { +line 1389 +;1388: float max, pos, size; +;1389: listBoxDef_t *listPtr = (listBoxDef_t*)item->typeData; +ADDRLP4 8 +ADDRFP4 0 +INDIRP4 +CNSTI4 536 +ADDP4 +INDIRP4 +ASGNP4 +line 1391 +;1390: +;1391: max = Item_ListBox_MaxScroll(item); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRLP4 16 +ADDRGP4 Item_ListBox_MaxScroll +CALLI4 +ASGNI4 +ADDRLP4 4 +ADDRLP4 16 +INDIRI4 +CVIF4 4 +ASGNF4 +line 1392 +;1392: if (item->window.flags & WINDOW_HORIZONTAL) { +ADDRFP4 0 +INDIRP4 +CNSTI4 68 +ADDP4 +INDIRI4 +CNSTI4 1024 +BANDI4 +CNSTI4 0 +EQI4 $639 +line 1393 +;1393: size = item->window.rect.w - (SCROLLBAR_SIZE * 2) - 2; +ADDRLP4 12 +ADDRFP4 0 +INDIRP4 +CNSTI4 8 +ADDP4 +INDIRF4 +CNSTF4 1107296256 +SUBF4 +CNSTF4 1073741824 +SUBF4 +ASGNF4 +line 1394 +;1394: if (max > 0) { +ADDRLP4 4 +INDIRF4 +CNSTF4 0 +LEF4 $641 +line 1395 +;1395: pos = (size-SCROLLBAR_SIZE) / (float) max; +ADDRLP4 0 +ADDRLP4 12 +INDIRF4 +CNSTF4 1098907648 +SUBF4 +ADDRLP4 4 +INDIRF4 +DIVF4 +ASGNF4 +line 1396 +;1396: } else { +ADDRGP4 $642 +JUMPV +LABELV $641 +line 1397 +;1397: pos = 0; +ADDRLP4 0 +CNSTF4 0 +ASGNF4 +line 1398 +;1398: } +LABELV $642 +line 1399 +;1399: pos *= listPtr->startPos; +ADDRLP4 0 +ADDRLP4 0 +INDIRF4 +ADDRLP4 8 +INDIRP4 +INDIRI4 +CVIF4 4 +MULF4 +ASGNF4 +line 1400 +;1400: return item->window.rect.x + 1 + SCROLLBAR_SIZE + pos; +ADDRFP4 0 +INDIRP4 +INDIRF4 +CNSTF4 1065353216 +ADDF4 +CNSTF4 1098907648 +ADDF4 +ADDRLP4 0 +INDIRF4 +ADDF4 +CVFI4 4 +RETI4 +ADDRGP4 $638 +JUMPV +LABELV $639 +line 1402 +;1401: } +;1402: else { +line 1403 +;1403: size = item->window.rect.h - (SCROLLBAR_SIZE * 2) - 2; +ADDRLP4 12 +ADDRFP4 0 +INDIRP4 +CNSTI4 12 +ADDP4 +INDIRF4 +CNSTF4 1107296256 +SUBF4 +CNSTF4 1073741824 +SUBF4 +ASGNF4 +line 1404 +;1404: if (max > 0) { +ADDRLP4 4 +INDIRF4 +CNSTF4 0 +LEF4 $643 +line 1405 +;1405: pos = (size-SCROLLBAR_SIZE) / (float) max; +ADDRLP4 0 +ADDRLP4 12 +INDIRF4 +CNSTF4 1098907648 +SUBF4 +ADDRLP4 4 +INDIRF4 +DIVF4 +ASGNF4 +line 1406 +;1406: } else { +ADDRGP4 $644 +JUMPV +LABELV $643 +line 1407 +;1407: pos = 0; +ADDRLP4 0 +CNSTF4 0 +ASGNF4 +line 1408 +;1408: } +LABELV $644 +line 1409 +;1409: pos *= listPtr->startPos; +ADDRLP4 0 +ADDRLP4 0 +INDIRF4 +ADDRLP4 8 +INDIRP4 +INDIRI4 +CVIF4 4 +MULF4 +ASGNF4 +line 1410 +;1410: return item->window.rect.y + 1 + SCROLLBAR_SIZE + pos; +ADDRFP4 0 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRF4 +CNSTF4 1065353216 +ADDF4 +CNSTF4 1098907648 +ADDF4 +ADDRLP4 0 +INDIRF4 +ADDF4 +CVFI4 4 +RETI4 +LABELV $638 +endproc Item_ListBox_ThumbPosition 20 4 +export Item_ListBox_ThumbDrawPosition +proc Item_ListBox_ThumbDrawPosition 24 4 +line 1414 +;1411: } +;1412:} +;1413: +;1414:int Item_ListBox_ThumbDrawPosition(itemDef_t *item) { +line 1417 +;1415: int min, max; +;1416: +;1417: if (itemCapture == item) { +ADDRGP4 itemCapture +INDIRP4 +CVPU4 4 +ADDRFP4 0 +INDIRP4 +CVPU4 4 +NEU4 $646 +line 1418 +;1418: if (item->window.flags & WINDOW_HORIZONTAL) { +ADDRFP4 0 +INDIRP4 +CNSTI4 68 +ADDP4 +INDIRI4 +CNSTI4 1024 +BANDI4 +CNSTI4 0 +EQI4 $648 +line 1419 +;1419: min = item->window.rect.x + SCROLLBAR_SIZE + 1; +ADDRLP4 0 +ADDRFP4 0 +INDIRP4 +INDIRF4 +CNSTF4 1098907648 +ADDF4 +CNSTF4 1065353216 +ADDF4 +CVFI4 4 +ASGNI4 +line 1420 +;1420: max = item->window.rect.x + item->window.rect.w - 2*SCROLLBAR_SIZE - 1; +ADDRLP4 8 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 4 +ADDRLP4 8 +INDIRP4 +INDIRF4 +ADDRLP4 8 +INDIRP4 +CNSTI4 8 +ADDP4 +INDIRF4 +ADDF4 +CNSTF4 1107296256 +SUBF4 +CNSTF4 1065353216 +SUBF4 +CVFI4 4 +ASGNI4 +line 1421 +;1421: if (DC->cursorx >= min + SCROLLBAR_SIZE/2 && DC->cursorx <= max + SCROLLBAR_SIZE/2) { +ADDRLP4 12 +ADDRGP4 DC +INDIRP4 +CNSTI4 216 +ADDP4 +INDIRI4 +CVIF4 4 +ASGNF4 +ADDRLP4 16 +CNSTF4 1090519040 +ASGNF4 +ADDRLP4 12 +INDIRF4 +ADDRLP4 0 +INDIRI4 +CVIF4 4 +ADDRLP4 16 +INDIRF4 +ADDF4 +LTF4 $650 +ADDRLP4 12 +INDIRF4 +ADDRLP4 4 +INDIRI4 +CVIF4 4 +ADDRLP4 16 +INDIRF4 +ADDF4 +GTF4 $650 +line 1422 +;1422: return DC->cursorx - SCROLLBAR_SIZE/2; +ADDRGP4 DC +INDIRP4 +CNSTI4 216 +ADDP4 +INDIRI4 +CVIF4 4 +CNSTF4 1090519040 +SUBF4 +CVFI4 4 +RETI4 +ADDRGP4 $645 +JUMPV +LABELV $650 +line 1424 +;1423: } +;1424: else { +line 1425 +;1425: return Item_ListBox_ThumbPosition(item); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRLP4 20 +ADDRGP4 Item_ListBox_ThumbPosition +CALLI4 +ASGNI4 +ADDRLP4 20 +INDIRI4 +RETI4 +ADDRGP4 $645 +JUMPV +LABELV $648 +line 1428 +;1426: } +;1427: } +;1428: else { +line 1429 +;1429: min = item->window.rect.y + SCROLLBAR_SIZE + 1; +ADDRLP4 0 +ADDRFP4 0 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRF4 +CNSTF4 1098907648 +ADDF4 +CNSTF4 1065353216 +ADDF4 +CVFI4 4 +ASGNI4 +line 1430 +;1430: max = item->window.rect.y + item->window.rect.h - 2*SCROLLBAR_SIZE - 1; +ADDRLP4 8 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 4 +ADDRLP4 8 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRF4 +ADDRLP4 8 +INDIRP4 +CNSTI4 12 +ADDP4 +INDIRF4 +ADDF4 +CNSTF4 1107296256 +SUBF4 +CNSTF4 1065353216 +SUBF4 +CVFI4 4 +ASGNI4 +line 1431 +;1431: if (DC->cursory >= min + SCROLLBAR_SIZE/2 && DC->cursory <= max + SCROLLBAR_SIZE/2) { +ADDRLP4 12 +ADDRGP4 DC +INDIRP4 +CNSTI4 220 +ADDP4 +INDIRI4 +CVIF4 4 +ASGNF4 +ADDRLP4 16 +CNSTF4 1090519040 +ASGNF4 +ADDRLP4 12 +INDIRF4 +ADDRLP4 0 +INDIRI4 +CVIF4 4 +ADDRLP4 16 +INDIRF4 +ADDF4 +LTF4 $652 +ADDRLP4 12 +INDIRF4 +ADDRLP4 4 +INDIRI4 +CVIF4 4 +ADDRLP4 16 +INDIRF4 +ADDF4 +GTF4 $652 +line 1432 +;1432: return DC->cursory - SCROLLBAR_SIZE/2; +ADDRGP4 DC +INDIRP4 +CNSTI4 220 +ADDP4 +INDIRI4 +CVIF4 4 +CNSTF4 1090519040 +SUBF4 +CVFI4 4 +RETI4 +ADDRGP4 $645 +JUMPV +LABELV $652 +line 1434 +;1433: } +;1434: else { +line 1435 +;1435: return Item_ListBox_ThumbPosition(item); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRLP4 20 +ADDRGP4 Item_ListBox_ThumbPosition +CALLI4 +ASGNI4 +ADDRLP4 20 +INDIRI4 +RETI4 +ADDRGP4 $645 +JUMPV +LABELV $646 +line 1439 +;1436: } +;1437: } +;1438: } +;1439: else { +line 1440 +;1440: return Item_ListBox_ThumbPosition(item); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRLP4 8 +ADDRGP4 Item_ListBox_ThumbPosition +CALLI4 +ASGNI4 +ADDRLP4 8 +INDIRI4 +RETI4 +LABELV $645 +endproc Item_ListBox_ThumbDrawPosition 24 4 +export Item_Slider_ThumbPosition +proc Item_Slider_ThumbPosition 28 4 +line 1444 +;1441: } +;1442:} +;1443: +;1444:float Item_Slider_ThumbPosition(itemDef_t *item) { +line 1446 +;1445: float value, range, x; +;1446: editFieldDef_t *editDef = item->typeData; +ADDRLP4 4 +ADDRFP4 0 +INDIRP4 +CNSTI4 536 +ADDP4 +INDIRP4 +ASGNP4 +line 1448 +;1447: +;1448: if (item->text) { +ADDRFP4 0 +INDIRP4 +CNSTI4 224 +ADDP4 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $655 +line 1449 +;1449: x = item->textRect.x + item->textRect.w + 8; +ADDRLP4 16 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 8 +ADDRLP4 16 +INDIRP4 +CNSTI4 180 +ADDP4 +INDIRF4 +ADDRLP4 16 +INDIRP4 +CNSTI4 188 +ADDP4 +INDIRF4 +ADDF4 +CNSTF4 1090519040 +ADDF4 +ASGNF4 +line 1450 +;1450: } else { +ADDRGP4 $656 +JUMPV +LABELV $655 +line 1451 +;1451: x = item->window.rect.x; +ADDRLP4 8 +ADDRFP4 0 +INDIRP4 +INDIRF4 +ASGNF4 +line 1452 +;1452: } +LABELV $656 +line 1454 +;1453: +;1454: if (editDef == NULL && item->cvar) { +ADDRLP4 16 +CNSTU4 0 +ASGNU4 +ADDRLP4 4 +INDIRP4 +CVPU4 4 +ADDRLP4 16 +INDIRU4 +NEU4 $657 +ADDRFP4 0 +INDIRP4 +CNSTI4 264 +ADDP4 +INDIRP4 +CVPU4 4 +ADDRLP4 16 +INDIRU4 +EQU4 $657 +line 1455 +;1455: return x; +ADDRLP4 8 +INDIRF4 +RETF4 +ADDRGP4 $654 +JUMPV +LABELV $657 +line 1458 +;1456: } +;1457: +;1458: value = DC->getCVarValue(item->cvar); +ADDRFP4 0 +INDIRP4 +CNSTI4 264 +ADDP4 +INDIRP4 +ARGP4 +ADDRLP4 20 +ADDRGP4 DC +INDIRP4 +CNSTI4 92 +ADDP4 +INDIRP4 +CALLF4 +ASGNF4 +ADDRLP4 0 +ADDRLP4 20 +INDIRF4 +ASGNF4 +line 1460 +;1459: +;1460: if (value < editDef->minVal) { +ADDRLP4 0 +INDIRF4 +ADDRLP4 4 +INDIRP4 +INDIRF4 +GEF4 $659 +line 1461 +;1461: value = editDef->minVal; +ADDRLP4 0 +ADDRLP4 4 +INDIRP4 +INDIRF4 +ASGNF4 +line 1462 +;1462: } else if (value > editDef->maxVal) { +ADDRGP4 $660 +JUMPV +LABELV $659 +ADDRLP4 0 +INDIRF4 +ADDRLP4 4 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRF4 +LEF4 $661 +line 1463 +;1463: value = editDef->maxVal; +ADDRLP4 0 +ADDRLP4 4 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRF4 +ASGNF4 +line 1464 +;1464: } +LABELV $661 +LABELV $660 +line 1466 +;1465: +;1466: range = editDef->maxVal - editDef->minVal; +ADDRLP4 12 +ADDRLP4 4 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRF4 +ADDRLP4 4 +INDIRP4 +INDIRF4 +SUBF4 +ASGNF4 +line 1467 +;1467: value -= editDef->minVal; +ADDRLP4 0 +ADDRLP4 0 +INDIRF4 +ADDRLP4 4 +INDIRP4 +INDIRF4 +SUBF4 +ASGNF4 +line 1468 +;1468: value /= range; +ADDRLP4 0 +ADDRLP4 0 +INDIRF4 +ADDRLP4 12 +INDIRF4 +DIVF4 +ASGNF4 +line 1470 +;1469: //value /= (editDef->maxVal - editDef->minVal); +;1470: value *= SLIDER_WIDTH; +ADDRLP4 0 +CNSTF4 1119879168 +ADDRLP4 0 +INDIRF4 +MULF4 +ASGNF4 +line 1471 +;1471: x += value; +ADDRLP4 8 +ADDRLP4 8 +INDIRF4 +ADDRLP4 0 +INDIRF4 +ADDF4 +ASGNF4 +line 1474 +;1472: // vm fuckage +;1473: //x = x + (((float)value / editDef->maxVal) * SLIDER_WIDTH); +;1474: return x; +ADDRLP4 8 +INDIRF4 +RETF4 +LABELV $654 +endproc Item_Slider_ThumbPosition 28 4 +export Item_Slider_OverSlider +proc Item_Slider_OverSlider 24 12 +line 1477 +;1475:} +;1476: +;1477:int Item_Slider_OverSlider(itemDef_t *item, float x, float y) { +line 1480 +;1478: rectDef_t r; +;1479: +;1480: r.x = Item_Slider_ThumbPosition(item) - (SLIDER_THUMB_WIDTH / 2); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRLP4 16 +ADDRGP4 Item_Slider_ThumbPosition +CALLF4 +ASGNF4 +ADDRLP4 0 +ADDRLP4 16 +INDIRF4 +CNSTF4 1086324736 +SUBF4 +ASGNF4 +line 1481 +;1481: r.y = item->window.rect.y - 2; +ADDRLP4 0+4 +ADDRFP4 0 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRF4 +CNSTF4 1073741824 +SUBF4 +ASGNF4 +line 1482 +;1482: r.w = SLIDER_THUMB_WIDTH; +ADDRLP4 0+8 +CNSTF4 1094713344 +ASGNF4 +line 1483 +;1483: r.h = SLIDER_THUMB_HEIGHT; +ADDRLP4 0+12 +CNSTF4 1101004800 +ASGNF4 +line 1485 +;1484: +;1485: if (Rect_ContainsPoint(&r, x, y)) { +ADDRLP4 0 +ARGP4 +ADDRFP4 4 +INDIRF4 +ARGF4 +ADDRFP4 8 +INDIRF4 +ARGF4 +ADDRLP4 20 +ADDRGP4 Rect_ContainsPoint +CALLI4 +ASGNI4 +ADDRLP4 20 +INDIRI4 +CNSTI4 0 +EQI4 $667 +line 1486 +;1486: return WINDOW_LB_THUMB; +CNSTI4 8192 +RETI4 +ADDRGP4 $663 +JUMPV +LABELV $667 +line 1488 +;1487: } +;1488: return 0; +CNSTI4 0 +RETI4 +LABELV $663 +endproc Item_Slider_OverSlider 24 12 +export Item_ListBox_OverLB +proc Item_ListBox_OverLB 72 12 +line 1491 +;1489:} +;1490: +;1491:int Item_ListBox_OverLB(itemDef_t *item, float x, float y) { +line 1497 +;1492: rectDef_t r; +;1493: listBoxDef_t *listPtr; +;1494: int thumbstart; +;1495: int count; +;1496: +;1497: count = DC->feederCount(item->special); +ADDRFP4 0 +INDIRP4 +CNSTI4 528 +ADDP4 +INDIRF4 +ARGF4 +ADDRLP4 28 +ADDRGP4 DC +INDIRP4 +CNSTI4 120 +ADDP4 +INDIRP4 +CALLI4 +ASGNI4 +ADDRLP4 24 +ADDRLP4 28 +INDIRI4 +ASGNI4 +line 1498 +;1498: listPtr = (listBoxDef_t*)item->typeData; +ADDRLP4 20 +ADDRFP4 0 +INDIRP4 +CNSTI4 536 +ADDP4 +INDIRP4 +ASGNP4 +line 1499 +;1499: if (item->window.flags & WINDOW_HORIZONTAL) { +ADDRFP4 0 +INDIRP4 +CNSTI4 68 +ADDP4 +INDIRI4 +CNSTI4 1024 +BANDI4 +CNSTI4 0 +EQI4 $670 +line 1501 +;1500: // check if on left arrow +;1501: r.x = item->window.rect.x; +ADDRLP4 0 +ADDRFP4 0 +INDIRP4 +INDIRF4 +ASGNF4 +line 1502 +;1502: r.y = item->window.rect.y + item->window.rect.h - SCROLLBAR_SIZE; +ADDRLP4 32 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 0+4 +ADDRLP4 32 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRF4 +ADDRLP4 32 +INDIRP4 +CNSTI4 12 +ADDP4 +INDIRF4 +ADDF4 +CNSTF4 1098907648 +SUBF4 +ASGNF4 +line 1503 +;1503: r.h = r.w = SCROLLBAR_SIZE; +ADDRLP4 36 +CNSTF4 1098907648 +ASGNF4 +ADDRLP4 0+8 +ADDRLP4 36 +INDIRF4 +ASGNF4 +ADDRLP4 0+12 +ADDRLP4 36 +INDIRF4 +ASGNF4 +line 1504 +;1504: if (Rect_ContainsPoint(&r, x, y)) { +ADDRLP4 0 +ARGP4 +ADDRFP4 4 +INDIRF4 +ARGF4 +ADDRFP4 8 +INDIRF4 +ARGF4 +ADDRLP4 40 +ADDRGP4 Rect_ContainsPoint +CALLI4 +ASGNI4 +ADDRLP4 40 +INDIRI4 +CNSTI4 0 +EQI4 $675 +line 1505 +;1505: return WINDOW_LB_LEFTARROW; +CNSTI4 2048 +RETI4 +ADDRGP4 $669 +JUMPV +LABELV $675 +line 1508 +;1506: } +;1507: // check if on right arrow +;1508: r.x = item->window.rect.x + item->window.rect.w - SCROLLBAR_SIZE; +ADDRLP4 44 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 0 +ADDRLP4 44 +INDIRP4 +INDIRF4 +ADDRLP4 44 +INDIRP4 +CNSTI4 8 +ADDP4 +INDIRF4 +ADDF4 +CNSTF4 1098907648 +SUBF4 +ASGNF4 +line 1509 +;1509: if (Rect_ContainsPoint(&r, x, y)) { +ADDRLP4 0 +ARGP4 +ADDRFP4 4 +INDIRF4 +ARGF4 +ADDRFP4 8 +INDIRF4 +ARGF4 +ADDRLP4 48 +ADDRGP4 Rect_ContainsPoint +CALLI4 +ASGNI4 +ADDRLP4 48 +INDIRI4 +CNSTI4 0 +EQI4 $677 +line 1510 +;1510: return WINDOW_LB_RIGHTARROW; +CNSTI4 4096 +RETI4 +ADDRGP4 $669 +JUMPV +LABELV $677 +line 1513 +;1511: } +;1512: // check if on thumb +;1513: thumbstart = Item_ListBox_ThumbPosition(item); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRLP4 52 +ADDRGP4 Item_ListBox_ThumbPosition +CALLI4 +ASGNI4 +ADDRLP4 16 +ADDRLP4 52 +INDIRI4 +ASGNI4 +line 1514 +;1514: r.x = thumbstart; +ADDRLP4 0 +ADDRLP4 16 +INDIRI4 +CVIF4 4 +ASGNF4 +line 1515 +;1515: if (Rect_ContainsPoint(&r, x, y)) { +ADDRLP4 0 +ARGP4 +ADDRFP4 4 +INDIRF4 +ARGF4 +ADDRFP4 8 +INDIRF4 +ARGF4 +ADDRLP4 56 +ADDRGP4 Rect_ContainsPoint +CALLI4 +ASGNI4 +ADDRLP4 56 +INDIRI4 +CNSTI4 0 +EQI4 $679 +line 1516 +;1516: return WINDOW_LB_THUMB; +CNSTI4 8192 +RETI4 +ADDRGP4 $669 +JUMPV +LABELV $679 +line 1518 +;1517: } +;1518: r.x = item->window.rect.x + SCROLLBAR_SIZE; +ADDRLP4 0 +ADDRFP4 0 +INDIRP4 +INDIRF4 +CNSTF4 1098907648 +ADDF4 +ASGNF4 +line 1519 +;1519: r.w = thumbstart - r.x; +ADDRLP4 0+8 +ADDRLP4 16 +INDIRI4 +CVIF4 4 +ADDRLP4 0 +INDIRF4 +SUBF4 +ASGNF4 +line 1520 +;1520: if (Rect_ContainsPoint(&r, x, y)) { +ADDRLP4 0 +ARGP4 +ADDRFP4 4 +INDIRF4 +ARGF4 +ADDRFP4 8 +INDIRF4 +ARGF4 +ADDRLP4 60 +ADDRGP4 Rect_ContainsPoint +CALLI4 +ASGNI4 +ADDRLP4 60 +INDIRI4 +CNSTI4 0 +EQI4 $682 +line 1521 +;1521: return WINDOW_LB_PGUP; +CNSTI4 16384 +RETI4 +ADDRGP4 $669 +JUMPV +LABELV $682 +line 1523 +;1522: } +;1523: r.x = thumbstart + SCROLLBAR_SIZE; +ADDRLP4 0 +ADDRLP4 16 +INDIRI4 +CVIF4 4 +CNSTF4 1098907648 +ADDF4 +ASGNF4 +line 1524 +;1524: r.w = item->window.rect.x + item->window.rect.w - SCROLLBAR_SIZE; +ADDRLP4 64 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 0+8 +ADDRLP4 64 +INDIRP4 +INDIRF4 +ADDRLP4 64 +INDIRP4 +CNSTI4 8 +ADDP4 +INDIRF4 +ADDF4 +CNSTF4 1098907648 +SUBF4 +ASGNF4 +line 1525 +;1525: if (Rect_ContainsPoint(&r, x, y)) { +ADDRLP4 0 +ARGP4 +ADDRFP4 4 +INDIRF4 +ARGF4 +ADDRFP4 8 +INDIRF4 +ARGF4 +ADDRLP4 68 +ADDRGP4 Rect_ContainsPoint +CALLI4 +ASGNI4 +ADDRLP4 68 +INDIRI4 +CNSTI4 0 +EQI4 $671 +line 1526 +;1526: return WINDOW_LB_PGDN; +CNSTI4 32768 +RETI4 +ADDRGP4 $669 +JUMPV +line 1528 +;1527: } +;1528: } else { +LABELV $670 +line 1529 +;1529: r.x = item->window.rect.x + item->window.rect.w - SCROLLBAR_SIZE; +ADDRLP4 32 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 0 +ADDRLP4 32 +INDIRP4 +INDIRF4 +ADDRLP4 32 +INDIRP4 +CNSTI4 8 +ADDP4 +INDIRF4 +ADDF4 +CNSTF4 1098907648 +SUBF4 +ASGNF4 +line 1530 +;1530: r.y = item->window.rect.y; +ADDRLP4 0+4 +ADDRFP4 0 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRF4 +ASGNF4 +line 1531 +;1531: r.h = r.w = SCROLLBAR_SIZE; +ADDRLP4 36 +CNSTF4 1098907648 +ASGNF4 +ADDRLP4 0+8 +ADDRLP4 36 +INDIRF4 +ASGNF4 +ADDRLP4 0+12 +ADDRLP4 36 +INDIRF4 +ASGNF4 +line 1532 +;1532: if (Rect_ContainsPoint(&r, x, y)) { +ADDRLP4 0 +ARGP4 +ADDRFP4 4 +INDIRF4 +ARGF4 +ADDRFP4 8 +INDIRF4 +ARGF4 +ADDRLP4 40 +ADDRGP4 Rect_ContainsPoint +CALLI4 +ASGNI4 +ADDRLP4 40 +INDIRI4 +CNSTI4 0 +EQI4 $690 +line 1533 +;1533: return WINDOW_LB_LEFTARROW; +CNSTI4 2048 +RETI4 +ADDRGP4 $669 +JUMPV +LABELV $690 +line 1535 +;1534: } +;1535: r.y = item->window.rect.y + item->window.rect.h - SCROLLBAR_SIZE; +ADDRLP4 44 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 0+4 +ADDRLP4 44 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRF4 +ADDRLP4 44 +INDIRP4 +CNSTI4 12 +ADDP4 +INDIRF4 +ADDF4 +CNSTF4 1098907648 +SUBF4 +ASGNF4 +line 1536 +;1536: if (Rect_ContainsPoint(&r, x, y)) { +ADDRLP4 0 +ARGP4 +ADDRFP4 4 +INDIRF4 +ARGF4 +ADDRFP4 8 +INDIRF4 +ARGF4 +ADDRLP4 48 +ADDRGP4 Rect_ContainsPoint +CALLI4 +ASGNI4 +ADDRLP4 48 +INDIRI4 +CNSTI4 0 +EQI4 $693 +line 1537 +;1537: return WINDOW_LB_RIGHTARROW; +CNSTI4 4096 +RETI4 +ADDRGP4 $669 +JUMPV +LABELV $693 +line 1539 +;1538: } +;1539: thumbstart = Item_ListBox_ThumbPosition(item); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRLP4 52 +ADDRGP4 Item_ListBox_ThumbPosition +CALLI4 +ASGNI4 +ADDRLP4 16 +ADDRLP4 52 +INDIRI4 +ASGNI4 +line 1540 +;1540: r.y = thumbstart; +ADDRLP4 0+4 +ADDRLP4 16 +INDIRI4 +CVIF4 4 +ASGNF4 +line 1541 +;1541: if (Rect_ContainsPoint(&r, x, y)) { +ADDRLP4 0 +ARGP4 +ADDRFP4 4 +INDIRF4 +ARGF4 +ADDRFP4 8 +INDIRF4 +ARGF4 +ADDRLP4 56 +ADDRGP4 Rect_ContainsPoint +CALLI4 +ASGNI4 +ADDRLP4 56 +INDIRI4 +CNSTI4 0 +EQI4 $696 +line 1542 +;1542: return WINDOW_LB_THUMB; +CNSTI4 8192 +RETI4 +ADDRGP4 $669 +JUMPV +LABELV $696 +line 1544 +;1543: } +;1544: r.y = item->window.rect.y + SCROLLBAR_SIZE; +ADDRLP4 0+4 +ADDRFP4 0 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRF4 +CNSTF4 1098907648 +ADDF4 +ASGNF4 +line 1545 +;1545: r.h = thumbstart - r.y; +ADDRLP4 0+12 +ADDRLP4 16 +INDIRI4 +CVIF4 4 +ADDRLP4 0+4 +INDIRF4 +SUBF4 +ASGNF4 +line 1546 +;1546: if (Rect_ContainsPoint(&r, x, y)) { +ADDRLP4 0 +ARGP4 +ADDRFP4 4 +INDIRF4 +ARGF4 +ADDRFP4 8 +INDIRF4 +ARGF4 +ADDRLP4 60 +ADDRGP4 Rect_ContainsPoint +CALLI4 +ASGNI4 +ADDRLP4 60 +INDIRI4 +CNSTI4 0 +EQI4 $701 +line 1547 +;1547: return WINDOW_LB_PGUP; +CNSTI4 16384 +RETI4 +ADDRGP4 $669 +JUMPV +LABELV $701 +line 1549 +;1548: } +;1549: r.y = thumbstart + SCROLLBAR_SIZE; +ADDRLP4 0+4 +ADDRLP4 16 +INDIRI4 +CVIF4 4 +CNSTF4 1098907648 +ADDF4 +ASGNF4 +line 1550 +;1550: r.h = item->window.rect.y + item->window.rect.h - SCROLLBAR_SIZE; +ADDRLP4 64 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 0+12 +ADDRLP4 64 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRF4 +ADDRLP4 64 +INDIRP4 +CNSTI4 12 +ADDP4 +INDIRF4 +ADDF4 +CNSTF4 1098907648 +SUBF4 +ASGNF4 +line 1551 +;1551: if (Rect_ContainsPoint(&r, x, y)) { +ADDRLP4 0 +ARGP4 +ADDRFP4 4 +INDIRF4 +ARGF4 +ADDRFP4 8 +INDIRF4 +ARGF4 +ADDRLP4 68 +ADDRGP4 Rect_ContainsPoint +CALLI4 +ASGNI4 +ADDRLP4 68 +INDIRI4 +CNSTI4 0 +EQI4 $705 +line 1552 +;1552: return WINDOW_LB_PGDN; +CNSTI4 32768 +RETI4 +ADDRGP4 $669 +JUMPV +LABELV $705 +line 1554 +;1553: } +;1554: } +LABELV $671 +line 1555 +;1555: return 0; +CNSTI4 0 +RETI4 +LABELV $669 +endproc Item_ListBox_OverLB 72 12 +export Item_ListBox_MouseEnter +proc Item_ListBox_MouseEnter 56 12 +line 1560 +;1556:} +;1557: +;1558: +;1559:void Item_ListBox_MouseEnter(itemDef_t *item, float x, float y) +;1560:{ +line 1562 +;1561: rectDef_t r; +;1562: listBoxDef_t *listPtr = (listBoxDef_t*)item->typeData; +ADDRLP4 0 +ADDRFP4 0 +INDIRP4 +CNSTI4 536 +ADDP4 +INDIRP4 +ASGNP4 +line 1564 +;1563: +;1564: item->window.flags &= ~(WINDOW_LB_LEFTARROW | WINDOW_LB_RIGHTARROW | WINDOW_LB_THUMB | WINDOW_LB_PGUP | WINDOW_LB_PGDN); +ADDRLP4 20 +ADDRFP4 0 +INDIRP4 +CNSTI4 68 +ADDP4 +ASGNP4 +ADDRLP4 20 +INDIRP4 +ADDRLP4 20 +INDIRP4 +INDIRI4 +CNSTI4 -63489 +BANDI4 +ASGNI4 +line 1565 +;1565: item->window.flags |= Item_ListBox_OverLB(item, x, y); +ADDRLP4 24 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 24 +INDIRP4 +ARGP4 +ADDRFP4 4 +INDIRF4 +ARGF4 +ADDRFP4 8 +INDIRF4 +ARGF4 +ADDRLP4 28 +ADDRGP4 Item_ListBox_OverLB +CALLI4 +ASGNI4 +ADDRLP4 32 +ADDRLP4 24 +INDIRP4 +CNSTI4 68 +ADDP4 +ASGNP4 +ADDRLP4 32 +INDIRP4 +ADDRLP4 32 +INDIRP4 +INDIRI4 +ADDRLP4 28 +INDIRI4 +BORI4 +ASGNI4 +line 1567 +;1566: +;1567: if (item->window.flags & WINDOW_HORIZONTAL) { +ADDRFP4 0 +INDIRP4 +CNSTI4 68 +ADDP4 +INDIRI4 +CNSTI4 1024 +BANDI4 +CNSTI4 0 +EQI4 $708 +line 1568 +;1568: if (!(item->window.flags & (WINDOW_LB_LEFTARROW | WINDOW_LB_RIGHTARROW | WINDOW_LB_THUMB | WINDOW_LB_PGUP | WINDOW_LB_PGDN))) { +ADDRFP4 0 +INDIRP4 +CNSTI4 68 +ADDP4 +INDIRI4 +CNSTI4 63488 +BANDI4 +CNSTI4 0 +NEI4 $709 +line 1570 +;1569: // check for selection hit as we have exausted buttons and thumb +;1570: if (listPtr->elementStyle == LISTBOX_IMAGE) { +ADDRLP4 0 +INDIRP4 +CNSTI4 24 +ADDP4 +INDIRI4 +CNSTI4 1 +NEI4 $709 +line 1571 +;1571: r.x = item->window.rect.x; +ADDRLP4 4 +ADDRFP4 0 +INDIRP4 +INDIRF4 +ASGNF4 +line 1572 +;1572: r.y = item->window.rect.y; +ADDRLP4 4+4 +ADDRFP4 0 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRF4 +ASGNF4 +line 1573 +;1573: r.h = item->window.rect.h - SCROLLBAR_SIZE; +ADDRLP4 4+12 +ADDRFP4 0 +INDIRP4 +CNSTI4 12 +ADDP4 +INDIRF4 +CNSTF4 1098907648 +SUBF4 +ASGNF4 +line 1574 +;1574: r.w = item->window.rect.w - listPtr->drawPadding; +ADDRLP4 36 +CNSTI4 8 +ASGNI4 +ADDRLP4 4+8 +ADDRFP4 0 +INDIRP4 +ADDRLP4 36 +INDIRI4 +ADDP4 +INDIRF4 +ADDRLP4 0 +INDIRP4 +ADDRLP4 36 +INDIRI4 +ADDP4 +INDIRI4 +CVIF4 4 +SUBF4 +ASGNF4 +line 1575 +;1575: if (Rect_ContainsPoint(&r, x, y)) { +ADDRLP4 4 +ARGP4 +ADDRFP4 4 +INDIRF4 +ARGF4 +ADDRFP4 8 +INDIRF4 +ARGF4 +ADDRLP4 40 +ADDRGP4 Rect_ContainsPoint +CALLI4 +ASGNI4 +ADDRLP4 40 +INDIRI4 +CNSTI4 0 +EQI4 $709 +line 1576 +;1576: listPtr->cursorPos = (int)((x - r.x) / listPtr->elementWidth) + listPtr->startPos; +ADDRLP4 44 +ADDRLP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 44 +INDIRP4 +CNSTI4 12 +ADDP4 +ADDRFP4 4 +INDIRF4 +ADDRLP4 4 +INDIRF4 +SUBF4 +ADDRLP4 44 +INDIRP4 +CNSTI4 16 +ADDP4 +INDIRF4 +DIVF4 +CVFI4 4 +ADDRLP4 44 +INDIRP4 +INDIRI4 +ADDI4 +ASGNI4 +line 1577 +;1577: if (listPtr->cursorPos >= listPtr->endPos) { +ADDRLP4 48 +ADDRLP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 48 +INDIRP4 +CNSTI4 12 +ADDP4 +INDIRI4 +ADDRLP4 48 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRI4 +LTI4 $709 +line 1578 +;1578: listPtr->cursorPos = listPtr->endPos; +ADDRLP4 52 +ADDRLP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 52 +INDIRP4 +CNSTI4 12 +ADDP4 +ADDRLP4 52 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRI4 +ASGNI4 +line 1579 +;1579: } +line 1580 +;1580: } +line 1581 +;1581: } else { +line 1583 +;1582: // text hit.. +;1583: } +line 1584 +;1584: } +line 1585 +;1585: } else if (!(item->window.flags & (WINDOW_LB_LEFTARROW | WINDOW_LB_RIGHTARROW | WINDOW_LB_THUMB | WINDOW_LB_PGUP | WINDOW_LB_PGDN))) { +ADDRGP4 $709 +JUMPV +LABELV $708 +ADDRFP4 0 +INDIRP4 +CNSTI4 68 +ADDP4 +INDIRI4 +CNSTI4 63488 +BANDI4 +CNSTI4 0 +NEI4 $721 +line 1586 +;1586: r.x = item->window.rect.x; +ADDRLP4 4 +ADDRFP4 0 +INDIRP4 +INDIRF4 +ASGNF4 +line 1587 +;1587: r.y = item->window.rect.y; +ADDRLP4 4+4 +ADDRFP4 0 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRF4 +ASGNF4 +line 1588 +;1588: r.w = item->window.rect.w - SCROLLBAR_SIZE; +ADDRLP4 4+8 +ADDRFP4 0 +INDIRP4 +CNSTI4 8 +ADDP4 +INDIRF4 +CNSTF4 1098907648 +SUBF4 +ASGNF4 +line 1589 +;1589: r.h = item->window.rect.h - listPtr->drawPadding; +ADDRLP4 4+12 +ADDRFP4 0 +INDIRP4 +CNSTI4 12 +ADDP4 +INDIRF4 +ADDRLP4 0 +INDIRP4 +CNSTI4 8 +ADDP4 +INDIRI4 +CVIF4 4 +SUBF4 +ASGNF4 +line 1590 +;1590: if (Rect_ContainsPoint(&r, x, y)) { +ADDRLP4 4 +ARGP4 +ADDRFP4 4 +INDIRF4 +ARGF4 +ADDRFP4 8 +INDIRF4 +ARGF4 +ADDRLP4 36 +ADDRGP4 Rect_ContainsPoint +CALLI4 +ASGNI4 +ADDRLP4 36 +INDIRI4 +CNSTI4 0 +EQI4 $726 +line 1591 +;1591: listPtr->cursorPos = (int)((y - 2 - r.y) / listPtr->elementHeight) + listPtr->startPos; +ADDRLP4 40 +ADDRLP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 40 +INDIRP4 +CNSTI4 12 +ADDP4 +ADDRFP4 8 +INDIRF4 +CNSTF4 1073741824 +SUBF4 +ADDRLP4 4+4 +INDIRF4 +SUBF4 +ADDRLP4 40 +INDIRP4 +CNSTI4 20 +ADDP4 +INDIRF4 +DIVF4 +CVFI4 4 +ADDRLP4 40 +INDIRP4 +INDIRI4 +ADDI4 +ASGNI4 +line 1592 +;1592: if (listPtr->cursorPos > listPtr->endPos) { +ADDRLP4 44 +ADDRLP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 44 +INDIRP4 +CNSTI4 12 +ADDP4 +INDIRI4 +ADDRLP4 44 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRI4 +LEI4 $729 +line 1593 +;1593: listPtr->cursorPos = listPtr->endPos; +ADDRLP4 48 +ADDRLP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 48 +INDIRP4 +CNSTI4 12 +ADDP4 +ADDRLP4 48 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRI4 +ASGNI4 +line 1594 +;1594: } +LABELV $729 +line 1595 +;1595: } +LABELV $726 +line 1596 +;1596: } +LABELV $721 +LABELV $709 +line 1597 +;1597:} +LABELV $707 +endproc Item_ListBox_MouseEnter 56 12 +export Item_MouseEnter +proc Item_MouseEnter 44 12 +line 1599 +;1598: +;1599:void Item_MouseEnter(itemDef_t *item, float x, float y) { +line 1601 +;1600: rectDef_t r; +;1601: if (item) { +ADDRFP4 0 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $732 +line 1602 +;1602: r = item->textRect; +ADDRLP4 0 +ADDRFP4 0 +INDIRP4 +CNSTI4 180 +ADDP4 +INDIRB +ASGNB 16 +line 1603 +;1603: r.y -= r.h; +ADDRLP4 0+4 +ADDRLP4 0+4 +INDIRF4 +ADDRLP4 0+12 +INDIRF4 +SUBF4 +ASGNF4 +line 1607 +;1604: // in the text rect? +;1605: +;1606: // items can be enabled and disabled based on cvars +;1607: if (item->cvarFlags & (CVAR_ENABLE | CVAR_DISABLE) && !Item_EnableShowViaCvar(item, CVAR_ENABLE)) { +ADDRLP4 16 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 16 +INDIRP4 +CNSTI4 276 +ADDP4 +INDIRI4 +CNSTI4 3 +BANDI4 +CNSTI4 0 +EQI4 $736 +ADDRLP4 16 +INDIRP4 +ARGP4 +CNSTI4 1 +ARGI4 +ADDRLP4 20 +ADDRGP4 Item_EnableShowViaCvar +CALLI4 +ASGNI4 +ADDRLP4 20 +INDIRI4 +CNSTI4 0 +NEI4 $736 +line 1608 +;1608: return; +ADDRGP4 $731 +JUMPV +LABELV $736 +line 1611 +;1609: } +;1610: +;1611: if (item->cvarFlags & (CVAR_SHOW | CVAR_HIDE) && !Item_EnableShowViaCvar(item, CVAR_SHOW)) { +ADDRLP4 24 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 24 +INDIRP4 +CNSTI4 276 +ADDP4 +INDIRI4 +CNSTI4 12 +BANDI4 +CNSTI4 0 +EQI4 $738 +ADDRLP4 24 +INDIRP4 +ARGP4 +CNSTI4 4 +ARGI4 +ADDRLP4 28 +ADDRGP4 Item_EnableShowViaCvar +CALLI4 +ASGNI4 +ADDRLP4 28 +INDIRI4 +CNSTI4 0 +NEI4 $738 +line 1612 +;1612: return; +ADDRGP4 $731 +JUMPV +LABELV $738 +line 1615 +;1613: } +;1614: +;1615: if (Rect_ContainsPoint(&r, x, y)) { +ADDRLP4 0 +ARGP4 +ADDRFP4 4 +INDIRF4 +ARGF4 +ADDRFP4 8 +INDIRF4 +ARGF4 +ADDRLP4 32 +ADDRGP4 Rect_ContainsPoint +CALLI4 +ASGNI4 +ADDRLP4 32 +INDIRI4 +CNSTI4 0 +EQI4 $740 +line 1616 +;1616: if (!(item->window.flags & WINDOW_MOUSEOVERTEXT)) { +ADDRFP4 0 +INDIRP4 +CNSTI4 68 +ADDP4 +INDIRI4 +CNSTI4 128 +BANDI4 +CNSTI4 0 +NEI4 $742 +line 1617 +;1617: Item_RunScript(item, item->mouseEnterText); +ADDRLP4 36 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 36 +INDIRP4 +ARGP4 +ADDRLP4 36 +INDIRP4 +CNSTI4 236 +ADDP4 +INDIRP4 +ARGP4 +ADDRGP4 Item_RunScript +CALLV +pop +line 1618 +;1618: item->window.flags |= WINDOW_MOUSEOVERTEXT; +ADDRLP4 40 +ADDRFP4 0 +INDIRP4 +CNSTI4 68 +ADDP4 +ASGNP4 +ADDRLP4 40 +INDIRP4 +ADDRLP4 40 +INDIRP4 +INDIRI4 +CNSTI4 128 +BORI4 +ASGNI4 +line 1619 +;1619: } +LABELV $742 +line 1620 +;1620: if (!(item->window.flags & WINDOW_MOUSEOVER)) { +ADDRFP4 0 +INDIRP4 +CNSTI4 68 +ADDP4 +INDIRI4 +CNSTI4 1 +BANDI4 +CNSTI4 0 +NEI4 $741 +line 1621 +;1621: Item_RunScript(item, item->mouseEnter); +ADDRLP4 36 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 36 +INDIRP4 +ARGP4 +ADDRLP4 36 +INDIRP4 +CNSTI4 244 +ADDP4 +INDIRP4 +ARGP4 +ADDRGP4 Item_RunScript +CALLV +pop +line 1622 +;1622: item->window.flags |= WINDOW_MOUSEOVER; +ADDRLP4 40 +ADDRFP4 0 +INDIRP4 +CNSTI4 68 +ADDP4 +ASGNP4 +ADDRLP4 40 +INDIRP4 +ADDRLP4 40 +INDIRP4 +INDIRI4 +CNSTI4 1 +BORI4 +ASGNI4 +line 1623 +;1623: } +line 1625 +;1624: +;1625: } else { +ADDRGP4 $741 +JUMPV +LABELV $740 +line 1627 +;1626: // not in the text rect +;1627: if (item->window.flags & WINDOW_MOUSEOVERTEXT) { +ADDRFP4 0 +INDIRP4 +CNSTI4 68 +ADDP4 +INDIRI4 +CNSTI4 128 +BANDI4 +CNSTI4 0 +EQI4 $746 +line 1629 +;1628: // if we were +;1629: Item_RunScript(item, item->mouseExitText); +ADDRLP4 36 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 36 +INDIRP4 +ARGP4 +ADDRLP4 36 +INDIRP4 +CNSTI4 240 +ADDP4 +INDIRP4 +ARGP4 +ADDRGP4 Item_RunScript +CALLV +pop +line 1630 +;1630: item->window.flags &= ~WINDOW_MOUSEOVERTEXT; +ADDRLP4 40 +ADDRFP4 0 +INDIRP4 +CNSTI4 68 +ADDP4 +ASGNP4 +ADDRLP4 40 +INDIRP4 +ADDRLP4 40 +INDIRP4 +INDIRI4 +CNSTI4 -129 +BANDI4 +ASGNI4 +line 1631 +;1631: } +LABELV $746 +line 1632 +;1632: if (!(item->window.flags & WINDOW_MOUSEOVER)) { +ADDRFP4 0 +INDIRP4 +CNSTI4 68 +ADDP4 +INDIRI4 +CNSTI4 1 +BANDI4 +CNSTI4 0 +NEI4 $748 +line 1633 +;1633: Item_RunScript(item, item->mouseEnter); +ADDRLP4 36 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 36 +INDIRP4 +ARGP4 +ADDRLP4 36 +INDIRP4 +CNSTI4 244 +ADDP4 +INDIRP4 +ARGP4 +ADDRGP4 Item_RunScript +CALLV +pop +line 1634 +;1634: item->window.flags |= WINDOW_MOUSEOVER; +ADDRLP4 40 +ADDRFP4 0 +INDIRP4 +CNSTI4 68 +ADDP4 +ASGNP4 +ADDRLP4 40 +INDIRP4 +ADDRLP4 40 +INDIRP4 +INDIRI4 +CNSTI4 1 +BORI4 +ASGNI4 +line 1635 +;1635: } +LABELV $748 +line 1637 +;1636: +;1637: if (item->type == ITEM_TYPE_LISTBOX) { +ADDRFP4 0 +INDIRP4 +CNSTI4 196 +ADDP4 +INDIRI4 +CNSTI4 6 +NEI4 $750 +line 1638 +;1638: Item_ListBox_MouseEnter(item, x, y); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRFP4 4 +INDIRF4 +ARGF4 +ADDRFP4 8 +INDIRF4 +ARGF4 +ADDRGP4 Item_ListBox_MouseEnter +CALLV +pop +line 1639 +;1639: } +LABELV $750 +line 1640 +;1640: } +LABELV $741 +line 1641 +;1641: } +LABELV $732 +line 1642 +;1642:} +LABELV $731 +endproc Item_MouseEnter 44 12 +export Item_MouseLeave +proc Item_MouseLeave 8 8 +line 1644 +;1643: +;1644:void Item_MouseLeave(itemDef_t *item) { +line 1645 +;1645: if (item) { +ADDRFP4 0 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $753 +line 1646 +;1646: if (item->window.flags & WINDOW_MOUSEOVERTEXT) { +ADDRFP4 0 +INDIRP4 +CNSTI4 68 +ADDP4 +INDIRI4 +CNSTI4 128 +BANDI4 +CNSTI4 0 +EQI4 $755 +line 1647 +;1647: Item_RunScript(item, item->mouseExitText); +ADDRLP4 0 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 0 +INDIRP4 +ARGP4 +ADDRLP4 0 +INDIRP4 +CNSTI4 240 +ADDP4 +INDIRP4 +ARGP4 +ADDRGP4 Item_RunScript +CALLV +pop +line 1648 +;1648: item->window.flags &= ~WINDOW_MOUSEOVERTEXT; +ADDRLP4 4 +ADDRFP4 0 +INDIRP4 +CNSTI4 68 +ADDP4 +ASGNP4 +ADDRLP4 4 +INDIRP4 +ADDRLP4 4 +INDIRP4 +INDIRI4 +CNSTI4 -129 +BANDI4 +ASGNI4 +line 1649 +;1649: } +LABELV $755 +line 1650 +;1650: Item_RunScript(item, item->mouseExit); +ADDRLP4 0 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 0 +INDIRP4 +ARGP4 +ADDRLP4 0 +INDIRP4 +CNSTI4 248 +ADDP4 +INDIRP4 +ARGP4 +ADDRGP4 Item_RunScript +CALLV +pop +line 1651 +;1651: item->window.flags &= ~(WINDOW_LB_RIGHTARROW | WINDOW_LB_LEFTARROW); +ADDRLP4 4 +ADDRFP4 0 +INDIRP4 +CNSTI4 68 +ADDP4 +ASGNP4 +ADDRLP4 4 +INDIRP4 +ADDRLP4 4 +INDIRP4 +INDIRI4 +CNSTI4 -6145 +BANDI4 +ASGNI4 +line 1652 +;1652: } +LABELV $753 +line 1653 +;1653:} +LABELV $752 +endproc Item_MouseLeave 8 8 +export Menu_HitTest +proc Menu_HitTest 8 12 +line 1655 +;1654: +;1655:itemDef_t *Menu_HitTest(menuDef_t *menu, float x, float y) { +line 1657 +;1656: int i; +;1657: for (i = 0; i < menu->itemCount; i++) { +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +ADDRGP4 $761 +JUMPV +LABELV $758 +line 1658 +;1658: if (Rect_ContainsPoint(&menu->items[i]->window.rect, x, y)) { +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 260 +ADDP4 +ADDP4 +INDIRP4 +ARGP4 +ADDRFP4 4 +INDIRF4 +ARGF4 +ADDRFP4 8 +INDIRF4 +ARGF4 +ADDRLP4 4 +ADDRGP4 Rect_ContainsPoint +CALLI4 +ASGNI4 +ADDRLP4 4 +INDIRI4 +CNSTI4 0 +EQI4 $762 +line 1659 +;1659: return menu->items[i]; +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 260 +ADDP4 +ADDP4 +INDIRP4 +RETP4 +ADDRGP4 $757 +JUMPV +LABELV $762 +line 1661 +;1660: } +;1661: } +LABELV $759 +line 1657 +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +LABELV $761 +ADDRLP4 0 +INDIRI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 188 +ADDP4 +INDIRI4 +LTI4 $758 +line 1662 +;1662: return NULL; +CNSTP4 0 +RETP4 +LABELV $757 +endproc Menu_HitTest 8 12 +export Item_SetMouseOver +proc Item_SetMouseOver 4 0 +line 1665 +;1663:} +;1664: +;1665:void Item_SetMouseOver(itemDef_t *item, qboolean focus) { +line 1666 +;1666: if (item) { +ADDRFP4 0 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $765 +line 1667 +;1667: if (focus) { +ADDRFP4 4 +INDIRI4 +CNSTI4 0 +EQI4 $767 +line 1668 +;1668: item->window.flags |= WINDOW_MOUSEOVER; +ADDRLP4 0 +ADDRFP4 0 +INDIRP4 +CNSTI4 68 +ADDP4 +ASGNP4 +ADDRLP4 0 +INDIRP4 +ADDRLP4 0 +INDIRP4 +INDIRI4 +CNSTI4 1 +BORI4 +ASGNI4 +line 1669 +;1669: } else { +ADDRGP4 $768 +JUMPV +LABELV $767 +line 1670 +;1670: item->window.flags &= ~WINDOW_MOUSEOVER; +ADDRLP4 0 +ADDRFP4 0 +INDIRP4 +CNSTI4 68 +ADDP4 +ASGNP4 +ADDRLP4 0 +INDIRP4 +ADDRLP4 0 +INDIRP4 +INDIRI4 +CNSTI4 -2 +BANDI4 +ASGNI4 +line 1671 +;1671: } +LABELV $768 +line 1672 +;1672: } +LABELV $765 +line 1673 +;1673:} +LABELV $764 +endproc Item_SetMouseOver 4 0 +export Item_OwnerDraw_HandleKey +proc Item_OwnerDraw_HandleKey 12 16 +line 1676 +;1674: +;1675: +;1676:qboolean Item_OwnerDraw_HandleKey(itemDef_t *item, int key) { +line 1677 +;1677: if (item && DC->ownerDrawHandleKey) { +ADDRLP4 0 +CNSTU4 0 +ASGNU4 +ADDRFP4 0 +INDIRP4 +CVPU4 4 +ADDRLP4 0 +INDIRU4 +EQU4 $770 +ADDRGP4 DC +INDIRP4 +CNSTI4 116 +ADDP4 +INDIRP4 +CVPU4 4 +ADDRLP4 0 +INDIRU4 +EQU4 $770 +line 1678 +;1678: return DC->ownerDrawHandleKey(item->window.ownerDraw, item->window.ownerDrawFlags, &item->special, key); +ADDRLP4 4 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 4 +INDIRP4 +CNSTI4 56 +ADDP4 +INDIRI4 +ARGI4 +ADDRLP4 4 +INDIRP4 +CNSTI4 60 +ADDP4 +INDIRI4 +ARGI4 +ADDRLP4 4 +INDIRP4 +CNSTI4 528 +ADDP4 +ARGP4 +ADDRFP4 4 +INDIRI4 +ARGI4 +ADDRLP4 8 +ADDRGP4 DC +INDIRP4 +CNSTI4 116 +ADDP4 +INDIRP4 +CALLI4 +ASGNI4 +ADDRLP4 8 +INDIRI4 +RETI4 +ADDRGP4 $769 +JUMPV +LABELV $770 +line 1680 +;1679: } +;1680: return qfalse; +CNSTI4 0 +RETI4 +LABELV $769 +endproc Item_OwnerDraw_HandleKey 12 16 +export Item_ListBox_HandleKey +proc Item_ListBox_HandleKey 72 12 +line 1683 +;1681:} +;1682: +;1683:qboolean Item_ListBox_HandleKey(itemDef_t *item, int key, qboolean down, qboolean force) { +line 1684 +;1684: listBoxDef_t *listPtr = (listBoxDef_t*)item->typeData; +ADDRLP4 0 +ADDRFP4 0 +INDIRP4 +CNSTI4 536 +ADDP4 +INDIRP4 +ASGNP4 +line 1685 +;1685: int count = DC->feederCount(item->special); +ADDRFP4 0 +INDIRP4 +CNSTI4 528 +ADDP4 +INDIRF4 +ARGF4 +ADDRLP4 16 +ADDRGP4 DC +INDIRP4 +CNSTI4 120 +ADDP4 +INDIRP4 +CALLI4 +ASGNI4 +ADDRLP4 8 +ADDRLP4 16 +INDIRI4 +ASGNI4 +line 1688 +;1686: int max, viewmax; +;1687: +;1688: if (force || (Rect_ContainsPoint(&item->window.rect, DC->cursorx, DC->cursory) && item->window.flags & WINDOW_HASFOCUS)) { +ADDRFP4 12 +INDIRI4 +CNSTI4 0 +NEI4 $775 +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRLP4 20 +ADDRGP4 DC +INDIRP4 +ASGNP4 +ADDRLP4 20 +INDIRP4 +CNSTI4 216 +ADDP4 +INDIRI4 +CVIF4 4 +ARGF4 +ADDRLP4 20 +INDIRP4 +CNSTI4 220 +ADDP4 +INDIRI4 +CVIF4 4 +ARGF4 +ADDRLP4 24 +ADDRGP4 Rect_ContainsPoint +CALLI4 +ASGNI4 +ADDRLP4 28 +CNSTI4 0 +ASGNI4 +ADDRLP4 24 +INDIRI4 +ADDRLP4 28 +INDIRI4 +EQI4 $773 +ADDRFP4 0 +INDIRP4 +CNSTI4 68 +ADDP4 +INDIRI4 +CNSTI4 2 +BANDI4 +ADDRLP4 28 +INDIRI4 +EQI4 $773 +LABELV $775 +line 1689 +;1689: max = Item_ListBox_MaxScroll(item); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRLP4 32 +ADDRGP4 Item_ListBox_MaxScroll +CALLI4 +ASGNI4 +ADDRLP4 12 +ADDRLP4 32 +INDIRI4 +ASGNI4 +line 1690 +;1690: if (item->window.flags & WINDOW_HORIZONTAL) { +ADDRFP4 0 +INDIRP4 +CNSTI4 68 +ADDP4 +INDIRI4 +CNSTI4 1024 +BANDI4 +CNSTI4 0 +EQI4 $776 +line 1691 +;1691: viewmax = (item->window.rect.w / listPtr->elementWidth); +ADDRLP4 4 +ADDRFP4 0 +INDIRP4 +CNSTI4 8 +ADDP4 +INDIRF4 +ADDRLP4 0 +INDIRP4 +CNSTI4 16 +ADDP4 +INDIRF4 +DIVF4 +CVFI4 4 +ASGNI4 +line 1692 +;1692: if ( key == K_LEFTARROW || key == K_KP_LEFTARROW ) +ADDRLP4 36 +ADDRFP4 4 +INDIRI4 +ASGNI4 +ADDRLP4 36 +INDIRI4 +CNSTI4 134 +EQI4 $780 +ADDRLP4 36 +INDIRI4 +CNSTI4 163 +NEI4 $778 +LABELV $780 +line 1693 +;1693: { +line 1694 +;1694: if (!listPtr->notselectable) { +ADDRLP4 0 +INDIRP4 +CNSTI4 228 +ADDP4 +INDIRI4 +CNSTI4 0 +NEI4 $781 +line 1695 +;1695: listPtr->cursorPos--; +ADDRLP4 40 +ADDRLP4 0 +INDIRP4 +CNSTI4 12 +ADDP4 +ASGNP4 +ADDRLP4 40 +INDIRP4 +ADDRLP4 40 +INDIRP4 +INDIRI4 +CNSTI4 1 +SUBI4 +ASGNI4 +line 1696 +;1696: if (listPtr->cursorPos < 0) { +ADDRLP4 0 +INDIRP4 +CNSTI4 12 +ADDP4 +INDIRI4 +CNSTI4 0 +GEI4 $783 +line 1697 +;1697: listPtr->cursorPos = 0; +ADDRLP4 0 +INDIRP4 +CNSTI4 12 +ADDP4 +CNSTI4 0 +ASGNI4 +line 1698 +;1698: } +LABELV $783 +line 1699 +;1699: if (listPtr->cursorPos < listPtr->startPos) { +ADDRLP4 0 +INDIRP4 +CNSTI4 12 +ADDP4 +INDIRI4 +ADDRLP4 0 +INDIRP4 +INDIRI4 +GEI4 $785 +line 1700 +;1700: listPtr->startPos = listPtr->cursorPos; +ADDRLP4 0 +INDIRP4 +ADDRLP4 0 +INDIRP4 +CNSTI4 12 +ADDP4 +INDIRI4 +ASGNI4 +line 1701 +;1701: } +LABELV $785 +line 1702 +;1702: if (listPtr->cursorPos >= listPtr->startPos + viewmax) { +ADDRLP4 0 +INDIRP4 +CNSTI4 12 +ADDP4 +INDIRI4 +ADDRLP4 0 +INDIRP4 +INDIRI4 +ADDRLP4 4 +INDIRI4 +ADDI4 +LTI4 $787 +line 1703 +;1703: listPtr->startPos = listPtr->cursorPos - viewmax + 1; +ADDRLP4 0 +INDIRP4 +ADDRLP4 0 +INDIRP4 +CNSTI4 12 +ADDP4 +INDIRI4 +ADDRLP4 4 +INDIRI4 +SUBI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 1704 +;1704: } +LABELV $787 +line 1705 +;1705: item->cursorPos = listPtr->cursorPos; +ADDRFP4 0 +INDIRP4 +CNSTI4 532 +ADDP4 +ADDRLP4 0 +INDIRP4 +CNSTI4 12 +ADDP4 +INDIRI4 +ASGNI4 +line 1706 +;1706: DC->feederSelection(item->special, item->cursorPos); +ADDRLP4 52 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 52 +INDIRP4 +CNSTI4 528 +ADDP4 +INDIRF4 +ARGF4 +ADDRLP4 52 +INDIRP4 +CNSTI4 532 +ADDP4 +INDIRI4 +ARGI4 +ADDRGP4 DC +INDIRP4 +CNSTI4 132 +ADDP4 +INDIRP4 +CALLV +pop +line 1707 +;1707: } +ADDRGP4 $782 +JUMPV +LABELV $781 +line 1708 +;1708: else { +line 1709 +;1709: listPtr->startPos--; +ADDRLP4 0 +INDIRP4 +ADDRLP4 0 +INDIRP4 +INDIRI4 +CNSTI4 1 +SUBI4 +ASGNI4 +line 1710 +;1710: if (listPtr->startPos < 0) +ADDRLP4 0 +INDIRP4 +INDIRI4 +CNSTI4 0 +GEI4 $789 +line 1711 +;1711: listPtr->startPos = 0; +ADDRLP4 0 +INDIRP4 +CNSTI4 0 +ASGNI4 +LABELV $789 +line 1712 +;1712: } +LABELV $782 +line 1713 +;1713: return qtrue; +CNSTI4 1 +RETI4 +ADDRGP4 $772 +JUMPV +LABELV $778 +line 1715 +;1714: } +;1715: if ( key == K_RIGHTARROW || key == K_KP_RIGHTARROW ) +ADDRLP4 40 +ADDRFP4 4 +INDIRI4 +ASGNI4 +ADDRLP4 40 +INDIRI4 +CNSTI4 135 +EQI4 $793 +ADDRLP4 40 +INDIRI4 +CNSTI4 165 +NEI4 $777 +LABELV $793 +line 1716 +;1716: { +line 1717 +;1717: if (!listPtr->notselectable) { +ADDRLP4 0 +INDIRP4 +CNSTI4 228 +ADDP4 +INDIRI4 +CNSTI4 0 +NEI4 $794 +line 1718 +;1718: listPtr->cursorPos++; +ADDRLP4 44 +ADDRLP4 0 +INDIRP4 +CNSTI4 12 +ADDP4 +ASGNP4 +ADDRLP4 44 +INDIRP4 +ADDRLP4 44 +INDIRP4 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 1719 +;1719: if (listPtr->cursorPos < listPtr->startPos) { +ADDRLP4 0 +INDIRP4 +CNSTI4 12 +ADDP4 +INDIRI4 +ADDRLP4 0 +INDIRP4 +INDIRI4 +GEI4 $796 +line 1720 +;1720: listPtr->startPos = listPtr->cursorPos; +ADDRLP4 0 +INDIRP4 +ADDRLP4 0 +INDIRP4 +CNSTI4 12 +ADDP4 +INDIRI4 +ASGNI4 +line 1721 +;1721: } +LABELV $796 +line 1722 +;1722: if (listPtr->cursorPos >= count) { +ADDRLP4 0 +INDIRP4 +CNSTI4 12 +ADDP4 +INDIRI4 +ADDRLP4 8 +INDIRI4 +LTI4 $798 +line 1723 +;1723: listPtr->cursorPos = count-1; +ADDRLP4 0 +INDIRP4 +CNSTI4 12 +ADDP4 +ADDRLP4 8 +INDIRI4 +CNSTI4 1 +SUBI4 +ASGNI4 +line 1724 +;1724: } +LABELV $798 +line 1725 +;1725: if (listPtr->cursorPos >= listPtr->startPos + viewmax) { +ADDRLP4 0 +INDIRP4 +CNSTI4 12 +ADDP4 +INDIRI4 +ADDRLP4 0 +INDIRP4 +INDIRI4 +ADDRLP4 4 +INDIRI4 +ADDI4 +LTI4 $800 +line 1726 +;1726: listPtr->startPos = listPtr->cursorPos - viewmax + 1; +ADDRLP4 0 +INDIRP4 +ADDRLP4 0 +INDIRP4 +CNSTI4 12 +ADDP4 +INDIRI4 +ADDRLP4 4 +INDIRI4 +SUBI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 1727 +;1727: } +LABELV $800 +line 1728 +;1728: item->cursorPos = listPtr->cursorPos; +ADDRFP4 0 +INDIRP4 +CNSTI4 532 +ADDP4 +ADDRLP4 0 +INDIRP4 +CNSTI4 12 +ADDP4 +INDIRI4 +ASGNI4 +line 1729 +;1729: DC->feederSelection(item->special, item->cursorPos); +ADDRLP4 56 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 56 +INDIRP4 +CNSTI4 528 +ADDP4 +INDIRF4 +ARGF4 +ADDRLP4 56 +INDIRP4 +CNSTI4 532 +ADDP4 +INDIRI4 +ARGI4 +ADDRGP4 DC +INDIRP4 +CNSTI4 132 +ADDP4 +INDIRP4 +CALLV +pop +line 1730 +;1730: } +ADDRGP4 $795 +JUMPV +LABELV $794 +line 1731 +;1731: else { +line 1732 +;1732: listPtr->startPos++; +ADDRLP4 0 +INDIRP4 +ADDRLP4 0 +INDIRP4 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 1733 +;1733: if (listPtr->startPos >= count) +ADDRLP4 0 +INDIRP4 +INDIRI4 +ADDRLP4 8 +INDIRI4 +LTI4 $802 +line 1734 +;1734: listPtr->startPos = count-1; +ADDRLP4 0 +INDIRP4 +ADDRLP4 8 +INDIRI4 +CNSTI4 1 +SUBI4 +ASGNI4 +LABELV $802 +line 1735 +;1735: } +LABELV $795 +line 1736 +;1736: return qtrue; +CNSTI4 1 +RETI4 +ADDRGP4 $772 +JUMPV +line 1738 +;1737: } +;1738: } +LABELV $776 +line 1739 +;1739: else { +line 1740 +;1740: viewmax = (item->window.rect.h / listPtr->elementHeight); +ADDRLP4 4 +ADDRFP4 0 +INDIRP4 +CNSTI4 12 +ADDP4 +INDIRF4 +ADDRLP4 0 +INDIRP4 +CNSTI4 20 +ADDP4 +INDIRF4 +DIVF4 +CVFI4 4 +ASGNI4 +line 1741 +;1741: if ( key == K_UPARROW || key == K_KP_UPARROW ) +ADDRLP4 36 +ADDRFP4 4 +INDIRI4 +ASGNI4 +ADDRLP4 36 +INDIRI4 +CNSTI4 132 +EQI4 $806 +ADDRLP4 36 +INDIRI4 +CNSTI4 161 +NEI4 $804 +LABELV $806 +line 1742 +;1742: { +line 1743 +;1743: if (!listPtr->notselectable) { +ADDRLP4 0 +INDIRP4 +CNSTI4 228 +ADDP4 +INDIRI4 +CNSTI4 0 +NEI4 $807 +line 1744 +;1744: listPtr->cursorPos--; +ADDRLP4 40 +ADDRLP4 0 +INDIRP4 +CNSTI4 12 +ADDP4 +ASGNP4 +ADDRLP4 40 +INDIRP4 +ADDRLP4 40 +INDIRP4 +INDIRI4 +CNSTI4 1 +SUBI4 +ASGNI4 +line 1745 +;1745: if (listPtr->cursorPos < 0) { +ADDRLP4 0 +INDIRP4 +CNSTI4 12 +ADDP4 +INDIRI4 +CNSTI4 0 +GEI4 $809 +line 1746 +;1746: listPtr->cursorPos = 0; +ADDRLP4 0 +INDIRP4 +CNSTI4 12 +ADDP4 +CNSTI4 0 +ASGNI4 +line 1747 +;1747: } +LABELV $809 +line 1748 +;1748: if (listPtr->cursorPos < listPtr->startPos) { +ADDRLP4 0 +INDIRP4 +CNSTI4 12 +ADDP4 +INDIRI4 +ADDRLP4 0 +INDIRP4 +INDIRI4 +GEI4 $811 +line 1749 +;1749: listPtr->startPos = listPtr->cursorPos; +ADDRLP4 0 +INDIRP4 +ADDRLP4 0 +INDIRP4 +CNSTI4 12 +ADDP4 +INDIRI4 +ASGNI4 +line 1750 +;1750: } +LABELV $811 +line 1751 +;1751: if (listPtr->cursorPos >= listPtr->startPos + viewmax) { +ADDRLP4 0 +INDIRP4 +CNSTI4 12 +ADDP4 +INDIRI4 +ADDRLP4 0 +INDIRP4 +INDIRI4 +ADDRLP4 4 +INDIRI4 +ADDI4 +LTI4 $813 +line 1752 +;1752: listPtr->startPos = listPtr->cursorPos - viewmax + 1; +ADDRLP4 0 +INDIRP4 +ADDRLP4 0 +INDIRP4 +CNSTI4 12 +ADDP4 +INDIRI4 +ADDRLP4 4 +INDIRI4 +SUBI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 1753 +;1753: } +LABELV $813 +line 1754 +;1754: item->cursorPos = listPtr->cursorPos; +ADDRFP4 0 +INDIRP4 +CNSTI4 532 +ADDP4 +ADDRLP4 0 +INDIRP4 +CNSTI4 12 +ADDP4 +INDIRI4 +ASGNI4 +line 1755 +;1755: DC->feederSelection(item->special, item->cursorPos); +ADDRLP4 52 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 52 +INDIRP4 +CNSTI4 528 +ADDP4 +INDIRF4 +ARGF4 +ADDRLP4 52 +INDIRP4 +CNSTI4 532 +ADDP4 +INDIRI4 +ARGI4 +ADDRGP4 DC +INDIRP4 +CNSTI4 132 +ADDP4 +INDIRP4 +CALLV +pop +line 1756 +;1756: } +ADDRGP4 $808 +JUMPV +LABELV $807 +line 1757 +;1757: else { +line 1758 +;1758: listPtr->startPos--; +ADDRLP4 0 +INDIRP4 +ADDRLP4 0 +INDIRP4 +INDIRI4 +CNSTI4 1 +SUBI4 +ASGNI4 +line 1759 +;1759: if (listPtr->startPos < 0) +ADDRLP4 0 +INDIRP4 +INDIRI4 +CNSTI4 0 +GEI4 $815 +line 1760 +;1760: listPtr->startPos = 0; +ADDRLP4 0 +INDIRP4 +CNSTI4 0 +ASGNI4 +LABELV $815 +line 1761 +;1761: } +LABELV $808 +line 1762 +;1762: return qtrue; +CNSTI4 1 +RETI4 +ADDRGP4 $772 +JUMPV +LABELV $804 +line 1764 +;1763: } +;1764: if ( key == K_DOWNARROW || key == K_KP_DOWNARROW ) +ADDRLP4 40 +ADDRFP4 4 +INDIRI4 +ASGNI4 +ADDRLP4 40 +INDIRI4 +CNSTI4 133 +EQI4 $819 +ADDRLP4 40 +INDIRI4 +CNSTI4 167 +NEI4 $817 +LABELV $819 +line 1765 +;1765: { +line 1766 +;1766: if (!listPtr->notselectable) { +ADDRLP4 0 +INDIRP4 +CNSTI4 228 +ADDP4 +INDIRI4 +CNSTI4 0 +NEI4 $820 +line 1767 +;1767: listPtr->cursorPos++; +ADDRLP4 44 +ADDRLP4 0 +INDIRP4 +CNSTI4 12 +ADDP4 +ASGNP4 +ADDRLP4 44 +INDIRP4 +ADDRLP4 44 +INDIRP4 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 1768 +;1768: if (listPtr->cursorPos < listPtr->startPos) { +ADDRLP4 0 +INDIRP4 +CNSTI4 12 +ADDP4 +INDIRI4 +ADDRLP4 0 +INDIRP4 +INDIRI4 +GEI4 $822 +line 1769 +;1769: listPtr->startPos = listPtr->cursorPos; +ADDRLP4 0 +INDIRP4 +ADDRLP4 0 +INDIRP4 +CNSTI4 12 +ADDP4 +INDIRI4 +ASGNI4 +line 1770 +;1770: } +LABELV $822 +line 1771 +;1771: if (listPtr->cursorPos >= count) { +ADDRLP4 0 +INDIRP4 +CNSTI4 12 +ADDP4 +INDIRI4 +ADDRLP4 8 +INDIRI4 +LTI4 $824 +line 1772 +;1772: listPtr->cursorPos = count-1; +ADDRLP4 0 +INDIRP4 +CNSTI4 12 +ADDP4 +ADDRLP4 8 +INDIRI4 +CNSTI4 1 +SUBI4 +ASGNI4 +line 1773 +;1773: } +LABELV $824 +line 1774 +;1774: if (listPtr->cursorPos >= listPtr->startPos + viewmax) { +ADDRLP4 0 +INDIRP4 +CNSTI4 12 +ADDP4 +INDIRI4 +ADDRLP4 0 +INDIRP4 +INDIRI4 +ADDRLP4 4 +INDIRI4 +ADDI4 +LTI4 $826 +line 1775 +;1775: listPtr->startPos = listPtr->cursorPos - viewmax + 1; +ADDRLP4 0 +INDIRP4 +ADDRLP4 0 +INDIRP4 +CNSTI4 12 +ADDP4 +INDIRI4 +ADDRLP4 4 +INDIRI4 +SUBI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 1776 +;1776: } +LABELV $826 +line 1777 +;1777: item->cursorPos = listPtr->cursorPos; +ADDRFP4 0 +INDIRP4 +CNSTI4 532 +ADDP4 +ADDRLP4 0 +INDIRP4 +CNSTI4 12 +ADDP4 +INDIRI4 +ASGNI4 +line 1778 +;1778: DC->feederSelection(item->special, item->cursorPos); +ADDRLP4 56 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 56 +INDIRP4 +CNSTI4 528 +ADDP4 +INDIRF4 +ARGF4 +ADDRLP4 56 +INDIRP4 +CNSTI4 532 +ADDP4 +INDIRI4 +ARGI4 +ADDRGP4 DC +INDIRP4 +CNSTI4 132 +ADDP4 +INDIRP4 +CALLV +pop +line 1779 +;1779: } +ADDRGP4 $821 +JUMPV +LABELV $820 +line 1780 +;1780: else { +line 1781 +;1781: listPtr->startPos++; +ADDRLP4 0 +INDIRP4 +ADDRLP4 0 +INDIRP4 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 1782 +;1782: if (listPtr->startPos > max) +ADDRLP4 0 +INDIRP4 +INDIRI4 +ADDRLP4 12 +INDIRI4 +LEI4 $828 +line 1783 +;1783: listPtr->startPos = max; +ADDRLP4 0 +INDIRP4 +ADDRLP4 12 +INDIRI4 +ASGNI4 +LABELV $828 +line 1784 +;1784: } +LABELV $821 +line 1785 +;1785: return qtrue; +CNSTI4 1 +RETI4 +ADDRGP4 $772 +JUMPV +LABELV $817 +line 1787 +;1786: } +;1787: } +LABELV $777 +line 1789 +;1788: // mouse hit +;1789: if (key == K_MOUSE1 || key == K_MOUSE2) { +ADDRLP4 36 +ADDRFP4 4 +INDIRI4 +ASGNI4 +ADDRLP4 36 +INDIRI4 +CNSTI4 178 +EQI4 $832 +ADDRLP4 36 +INDIRI4 +CNSTI4 179 +NEI4 $830 +LABELV $832 +line 1790 +;1790: if (item->window.flags & WINDOW_LB_LEFTARROW) { +ADDRFP4 0 +INDIRP4 +CNSTI4 68 +ADDP4 +INDIRI4 +CNSTI4 2048 +BANDI4 +CNSTI4 0 +EQI4 $833 +line 1791 +;1791: listPtr->startPos--; +ADDRLP4 0 +INDIRP4 +ADDRLP4 0 +INDIRP4 +INDIRI4 +CNSTI4 1 +SUBI4 +ASGNI4 +line 1792 +;1792: if (listPtr->startPos < 0) { +ADDRLP4 0 +INDIRP4 +INDIRI4 +CNSTI4 0 +GEI4 $834 +line 1793 +;1793: listPtr->startPos = 0; +ADDRLP4 0 +INDIRP4 +CNSTI4 0 +ASGNI4 +line 1794 +;1794: } +line 1795 +;1795: } else if (item->window.flags & WINDOW_LB_RIGHTARROW) { +ADDRGP4 $834 +JUMPV +LABELV $833 +ADDRFP4 0 +INDIRP4 +CNSTI4 68 +ADDP4 +INDIRI4 +CNSTI4 4096 +BANDI4 +CNSTI4 0 +EQI4 $837 +line 1797 +;1796: // one down +;1797: listPtr->startPos++; +ADDRLP4 0 +INDIRP4 +ADDRLP4 0 +INDIRP4 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 1798 +;1798: if (listPtr->startPos > max) { +ADDRLP4 0 +INDIRP4 +INDIRI4 +ADDRLP4 12 +INDIRI4 +LEI4 $838 +line 1799 +;1799: listPtr->startPos = max; +ADDRLP4 0 +INDIRP4 +ADDRLP4 12 +INDIRI4 +ASGNI4 +line 1800 +;1800: } +line 1801 +;1801: } else if (item->window.flags & WINDOW_LB_PGUP) { +ADDRGP4 $838 +JUMPV +LABELV $837 +ADDRFP4 0 +INDIRP4 +CNSTI4 68 +ADDP4 +INDIRI4 +CNSTI4 16384 +BANDI4 +CNSTI4 0 +EQI4 $841 +line 1803 +;1802: // page up +;1803: listPtr->startPos -= viewmax; +ADDRLP4 0 +INDIRP4 +ADDRLP4 0 +INDIRP4 +INDIRI4 +ADDRLP4 4 +INDIRI4 +SUBI4 +ASGNI4 +line 1804 +;1804: if (listPtr->startPos < 0) { +ADDRLP4 0 +INDIRP4 +INDIRI4 +CNSTI4 0 +GEI4 $842 +line 1805 +;1805: listPtr->startPos = 0; +ADDRLP4 0 +INDIRP4 +CNSTI4 0 +ASGNI4 +line 1806 +;1806: } +line 1807 +;1807: } else if (item->window.flags & WINDOW_LB_PGDN) { +ADDRGP4 $842 +JUMPV +LABELV $841 +ADDRFP4 0 +INDIRP4 +CNSTI4 68 +ADDP4 +INDIRI4 +CNSTI4 32768 +BANDI4 +CNSTI4 0 +EQI4 $845 +line 1809 +;1808: // page down +;1809: listPtr->startPos += viewmax; +ADDRLP4 0 +INDIRP4 +ADDRLP4 0 +INDIRP4 +INDIRI4 +ADDRLP4 4 +INDIRI4 +ADDI4 +ASGNI4 +line 1810 +;1810: if (listPtr->startPos > max) { +ADDRLP4 0 +INDIRP4 +INDIRI4 +ADDRLP4 12 +INDIRI4 +LEI4 $846 +line 1811 +;1811: listPtr->startPos = max; +ADDRLP4 0 +INDIRP4 +ADDRLP4 12 +INDIRI4 +ASGNI4 +line 1812 +;1812: } +line 1813 +;1813: } else if (item->window.flags & WINDOW_LB_THUMB) { +ADDRGP4 $846 +JUMPV +LABELV $845 +ADDRFP4 0 +INDIRP4 +CNSTI4 68 +ADDP4 +INDIRI4 +CNSTI4 8192 +BANDI4 +CNSTI4 0 +EQI4 $849 +line 1815 +;1814: // Display_SetCaptureItem(item); +;1815: } else { +ADDRGP4 $850 +JUMPV +LABELV $849 +line 1817 +;1816: // select an item +;1817: if (DC->realTime < lastListBoxClickTime && listPtr->doubleClick) { +ADDRGP4 DC +INDIRP4 +CNSTI4 208 +ADDP4 +INDIRI4 +ADDRGP4 lastListBoxClickTime +INDIRI4 +GEI4 $851 +ADDRLP4 0 +INDIRP4 +CNSTI4 224 +ADDP4 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $851 +line 1818 +;1818: Item_RunScript(item, listPtr->doubleClick); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRLP4 0 +INDIRP4 +CNSTI4 224 +ADDP4 +INDIRP4 +ARGP4 +ADDRGP4 Item_RunScript +CALLV +pop +line 1819 +;1819: } +LABELV $851 +line 1820 +;1820: lastListBoxClickTime = DC->realTime + DOUBLE_CLICK_DELAY; +ADDRGP4 lastListBoxClickTime +ADDRGP4 DC +INDIRP4 +CNSTI4 208 +ADDP4 +INDIRI4 +CNSTI4 300 +ADDI4 +ASGNI4 +line 1821 +;1821: if (item->cursorPos != listPtr->cursorPos) { +ADDRFP4 0 +INDIRP4 +CNSTI4 532 +ADDP4 +INDIRI4 +ADDRLP4 0 +INDIRP4 +CNSTI4 12 +ADDP4 +INDIRI4 +EQI4 $853 +line 1822 +;1822: item->cursorPos = listPtr->cursorPos; +ADDRFP4 0 +INDIRP4 +CNSTI4 532 +ADDP4 +ADDRLP4 0 +INDIRP4 +CNSTI4 12 +ADDP4 +INDIRI4 +ASGNI4 +line 1823 +;1823: DC->feederSelection(item->special, item->cursorPos); +ADDRLP4 40 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 40 +INDIRP4 +CNSTI4 528 +ADDP4 +INDIRF4 +ARGF4 +ADDRLP4 40 +INDIRP4 +CNSTI4 532 +ADDP4 +INDIRI4 +ARGI4 +ADDRGP4 DC +INDIRP4 +CNSTI4 132 +ADDP4 +INDIRP4 +CALLV +pop +line 1824 +;1824: } +LABELV $853 +line 1825 +;1825: } +LABELV $850 +LABELV $846 +LABELV $842 +LABELV $838 +LABELV $834 +line 1826 +;1826: return qtrue; +CNSTI4 1 +RETI4 +ADDRGP4 $772 +JUMPV +LABELV $830 +line 1828 +;1827: } +;1828: if ( key == K_HOME || key == K_KP_HOME) { +ADDRLP4 40 +ADDRFP4 4 +INDIRI4 +ASGNI4 +ADDRLP4 40 +INDIRI4 +CNSTI4 143 +EQI4 $857 +ADDRLP4 40 +INDIRI4 +CNSTI4 160 +NEI4 $855 +LABELV $857 +line 1830 +;1829: // home +;1830: listPtr->startPos = 0; +ADDRLP4 0 +INDIRP4 +CNSTI4 0 +ASGNI4 +line 1831 +;1831: return qtrue; +CNSTI4 1 +RETI4 +ADDRGP4 $772 +JUMPV +LABELV $855 +line 1833 +;1832: } +;1833: if ( key == K_END || key == K_KP_END) { +ADDRLP4 44 +ADDRFP4 4 +INDIRI4 +ASGNI4 +ADDRLP4 44 +INDIRI4 +CNSTI4 144 +EQI4 $860 +ADDRLP4 44 +INDIRI4 +CNSTI4 166 +NEI4 $858 +LABELV $860 +line 1835 +;1834: // end +;1835: listPtr->startPos = max; +ADDRLP4 0 +INDIRP4 +ADDRLP4 12 +INDIRI4 +ASGNI4 +line 1836 +;1836: return qtrue; +CNSTI4 1 +RETI4 +ADDRGP4 $772 +JUMPV +LABELV $858 +line 1838 +;1837: } +;1838: if (key == K_PGUP || key == K_KP_PGUP ) { +ADDRLP4 48 +ADDRFP4 4 +INDIRI4 +ASGNI4 +ADDRLP4 48 +INDIRI4 +CNSTI4 142 +EQI4 $863 +ADDRLP4 48 +INDIRI4 +CNSTI4 162 +NEI4 $861 +LABELV $863 +line 1840 +;1839: // page up +;1840: if (!listPtr->notselectable) { +ADDRLP4 0 +INDIRP4 +CNSTI4 228 +ADDP4 +INDIRI4 +CNSTI4 0 +NEI4 $864 +line 1841 +;1841: listPtr->cursorPos -= viewmax; +ADDRLP4 52 +ADDRLP4 0 +INDIRP4 +CNSTI4 12 +ADDP4 +ASGNP4 +ADDRLP4 52 +INDIRP4 +ADDRLP4 52 +INDIRP4 +INDIRI4 +ADDRLP4 4 +INDIRI4 +SUBI4 +ASGNI4 +line 1842 +;1842: if (listPtr->cursorPos < 0) { +ADDRLP4 0 +INDIRP4 +CNSTI4 12 +ADDP4 +INDIRI4 +CNSTI4 0 +GEI4 $866 +line 1843 +;1843: listPtr->cursorPos = 0; +ADDRLP4 0 +INDIRP4 +CNSTI4 12 +ADDP4 +CNSTI4 0 +ASGNI4 +line 1844 +;1844: } +LABELV $866 +line 1845 +;1845: if (listPtr->cursorPos < listPtr->startPos) { +ADDRLP4 0 +INDIRP4 +CNSTI4 12 +ADDP4 +INDIRI4 +ADDRLP4 0 +INDIRP4 +INDIRI4 +GEI4 $868 +line 1846 +;1846: listPtr->startPos = listPtr->cursorPos; +ADDRLP4 0 +INDIRP4 +ADDRLP4 0 +INDIRP4 +CNSTI4 12 +ADDP4 +INDIRI4 +ASGNI4 +line 1847 +;1847: } +LABELV $868 +line 1848 +;1848: if (listPtr->cursorPos >= listPtr->startPos + viewmax) { +ADDRLP4 0 +INDIRP4 +CNSTI4 12 +ADDP4 +INDIRI4 +ADDRLP4 0 +INDIRP4 +INDIRI4 +ADDRLP4 4 +INDIRI4 +ADDI4 +LTI4 $870 +line 1849 +;1849: listPtr->startPos = listPtr->cursorPos - viewmax + 1; +ADDRLP4 0 +INDIRP4 +ADDRLP4 0 +INDIRP4 +CNSTI4 12 +ADDP4 +INDIRI4 +ADDRLP4 4 +INDIRI4 +SUBI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 1850 +;1850: } +LABELV $870 +line 1851 +;1851: item->cursorPos = listPtr->cursorPos; +ADDRFP4 0 +INDIRP4 +CNSTI4 532 +ADDP4 +ADDRLP4 0 +INDIRP4 +CNSTI4 12 +ADDP4 +INDIRI4 +ASGNI4 +line 1852 +;1852: DC->feederSelection(item->special, item->cursorPos); +ADDRLP4 64 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 64 +INDIRP4 +CNSTI4 528 +ADDP4 +INDIRF4 +ARGF4 +ADDRLP4 64 +INDIRP4 +CNSTI4 532 +ADDP4 +INDIRI4 +ARGI4 +ADDRGP4 DC +INDIRP4 +CNSTI4 132 +ADDP4 +INDIRP4 +CALLV +pop +line 1853 +;1853: } +ADDRGP4 $865 +JUMPV +LABELV $864 +line 1854 +;1854: else { +line 1855 +;1855: listPtr->startPos -= viewmax; +ADDRLP4 0 +INDIRP4 +ADDRLP4 0 +INDIRP4 +INDIRI4 +ADDRLP4 4 +INDIRI4 +SUBI4 +ASGNI4 +line 1856 +;1856: if (listPtr->startPos < 0) { +ADDRLP4 0 +INDIRP4 +INDIRI4 +CNSTI4 0 +GEI4 $872 +line 1857 +;1857: listPtr->startPos = 0; +ADDRLP4 0 +INDIRP4 +CNSTI4 0 +ASGNI4 +line 1858 +;1858: } +LABELV $872 +line 1859 +;1859: } +LABELV $865 +line 1860 +;1860: return qtrue; +CNSTI4 1 +RETI4 +ADDRGP4 $772 +JUMPV +LABELV $861 +line 1862 +;1861: } +;1862: if ( key == K_PGDN || key == K_KP_PGDN ) { +ADDRLP4 52 +ADDRFP4 4 +INDIRI4 +ASGNI4 +ADDRLP4 52 +INDIRI4 +CNSTI4 141 +EQI4 $876 +ADDRLP4 52 +INDIRI4 +CNSTI4 168 +NEI4 $874 +LABELV $876 +line 1864 +;1863: // page down +;1864: if (!listPtr->notselectable) { +ADDRLP4 0 +INDIRP4 +CNSTI4 228 +ADDP4 +INDIRI4 +CNSTI4 0 +NEI4 $877 +line 1865 +;1865: listPtr->cursorPos += viewmax; +ADDRLP4 56 +ADDRLP4 0 +INDIRP4 +CNSTI4 12 +ADDP4 +ASGNP4 +ADDRLP4 56 +INDIRP4 +ADDRLP4 56 +INDIRP4 +INDIRI4 +ADDRLP4 4 +INDIRI4 +ADDI4 +ASGNI4 +line 1866 +;1866: if (listPtr->cursorPos < listPtr->startPos) { +ADDRLP4 0 +INDIRP4 +CNSTI4 12 +ADDP4 +INDIRI4 +ADDRLP4 0 +INDIRP4 +INDIRI4 +GEI4 $879 +line 1867 +;1867: listPtr->startPos = listPtr->cursorPos; +ADDRLP4 0 +INDIRP4 +ADDRLP4 0 +INDIRP4 +CNSTI4 12 +ADDP4 +INDIRI4 +ASGNI4 +line 1868 +;1868: } +LABELV $879 +line 1869 +;1869: if (listPtr->cursorPos >= count) { +ADDRLP4 0 +INDIRP4 +CNSTI4 12 +ADDP4 +INDIRI4 +ADDRLP4 8 +INDIRI4 +LTI4 $881 +line 1870 +;1870: listPtr->cursorPos = count-1; +ADDRLP4 0 +INDIRP4 +CNSTI4 12 +ADDP4 +ADDRLP4 8 +INDIRI4 +CNSTI4 1 +SUBI4 +ASGNI4 +line 1871 +;1871: } +LABELV $881 +line 1872 +;1872: if (listPtr->cursorPos >= listPtr->startPos + viewmax) { +ADDRLP4 0 +INDIRP4 +CNSTI4 12 +ADDP4 +INDIRI4 +ADDRLP4 0 +INDIRP4 +INDIRI4 +ADDRLP4 4 +INDIRI4 +ADDI4 +LTI4 $883 +line 1873 +;1873: listPtr->startPos = listPtr->cursorPos - viewmax + 1; +ADDRLP4 0 +INDIRP4 +ADDRLP4 0 +INDIRP4 +CNSTI4 12 +ADDP4 +INDIRI4 +ADDRLP4 4 +INDIRI4 +SUBI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 1874 +;1874: } +LABELV $883 +line 1875 +;1875: item->cursorPos = listPtr->cursorPos; +ADDRFP4 0 +INDIRP4 +CNSTI4 532 +ADDP4 +ADDRLP4 0 +INDIRP4 +CNSTI4 12 +ADDP4 +INDIRI4 +ASGNI4 +line 1876 +;1876: DC->feederSelection(item->special, item->cursorPos); +ADDRLP4 68 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 68 +INDIRP4 +CNSTI4 528 +ADDP4 +INDIRF4 +ARGF4 +ADDRLP4 68 +INDIRP4 +CNSTI4 532 +ADDP4 +INDIRI4 +ARGI4 +ADDRGP4 DC +INDIRP4 +CNSTI4 132 +ADDP4 +INDIRP4 +CALLV +pop +line 1877 +;1877: } +ADDRGP4 $878 +JUMPV +LABELV $877 +line 1878 +;1878: else { +line 1879 +;1879: listPtr->startPos += viewmax; +ADDRLP4 0 +INDIRP4 +ADDRLP4 0 +INDIRP4 +INDIRI4 +ADDRLP4 4 +INDIRI4 +ADDI4 +ASGNI4 +line 1880 +;1880: if (listPtr->startPos > max) { +ADDRLP4 0 +INDIRP4 +INDIRI4 +ADDRLP4 12 +INDIRI4 +LEI4 $885 +line 1881 +;1881: listPtr->startPos = max; +ADDRLP4 0 +INDIRP4 +ADDRLP4 12 +INDIRI4 +ASGNI4 +line 1882 +;1882: } +LABELV $885 +line 1883 +;1883: } +LABELV $878 +line 1884 +;1884: return qtrue; +CNSTI4 1 +RETI4 +ADDRGP4 $772 +JUMPV +LABELV $874 +line 1886 +;1885: } +;1886: } +LABELV $773 +line 1887 +;1887: return qfalse; +CNSTI4 0 +RETI4 +LABELV $772 +endproc Item_ListBox_HandleKey 72 12 +export Item_YesNo_HandleKey +proc Item_YesNo_HandleKey 32 12 +line 1890 +;1888:} +;1889: +;1890:qboolean Item_YesNo_HandleKey(itemDef_t *item, int key) { +line 1892 +;1891: +;1892: if (Rect_ContainsPoint(&item->window.rect, DC->cursorx, DC->cursory) && item->window.flags & WINDOW_HASFOCUS && item->cvar) { +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRLP4 0 +ADDRGP4 DC +INDIRP4 +ASGNP4 +ADDRLP4 0 +INDIRP4 +CNSTI4 216 +ADDP4 +INDIRI4 +CVIF4 4 +ARGF4 +ADDRLP4 0 +INDIRP4 +CNSTI4 220 +ADDP4 +INDIRI4 +CVIF4 4 +ARGF4 +ADDRLP4 4 +ADDRGP4 Rect_ContainsPoint +CALLI4 +ASGNI4 +ADDRLP4 8 +CNSTI4 0 +ASGNI4 +ADDRLP4 4 +INDIRI4 +ADDRLP4 8 +INDIRI4 +EQI4 $888 +ADDRLP4 12 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 12 +INDIRP4 +CNSTI4 68 +ADDP4 +INDIRI4 +CNSTI4 2 +BANDI4 +ADDRLP4 8 +INDIRI4 +EQI4 $888 +ADDRLP4 12 +INDIRP4 +CNSTI4 264 +ADDP4 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $888 +line 1893 +;1893: if (key == K_MOUSE1 || key == K_ENTER || key == K_MOUSE2 || key == K_MOUSE3) { +ADDRLP4 16 +ADDRFP4 4 +INDIRI4 +ASGNI4 +ADDRLP4 16 +INDIRI4 +CNSTI4 178 +EQI4 $894 +ADDRLP4 16 +INDIRI4 +CNSTI4 13 +EQI4 $894 +ADDRLP4 16 +INDIRI4 +CNSTI4 179 +EQI4 $894 +ADDRLP4 16 +INDIRI4 +CNSTI4 180 +NEI4 $890 +LABELV $894 +line 1894 +;1894: DC->setCVar(item->cvar, va("%i", !DC->getCVarValue(item->cvar))); +ADDRFP4 0 +INDIRP4 +CNSTI4 264 +ADDP4 +INDIRP4 +ARGP4 +ADDRLP4 24 +ADDRGP4 DC +INDIRP4 +CNSTI4 92 +ADDP4 +INDIRP4 +CALLF4 +ASGNF4 +ADDRLP4 24 +INDIRF4 +CNSTF4 0 +NEF4 $897 +ADDRLP4 20 +CNSTI4 1 +ASGNI4 +ADDRGP4 $898 +JUMPV +LABELV $897 +ADDRLP4 20 +CNSTI4 0 +ASGNI4 +LABELV $898 +ADDRGP4 $895 +ARGP4 +ADDRLP4 20 +INDIRI4 +ARGI4 +ADDRLP4 28 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 264 +ADDP4 +INDIRP4 +ARGP4 +ADDRLP4 28 +INDIRP4 +ARGP4 +ADDRGP4 DC +INDIRP4 +CNSTI4 96 +ADDP4 +INDIRP4 +CALLV +pop +line 1895 +;1895: return qtrue; +CNSTI4 1 +RETI4 +ADDRGP4 $887 +JUMPV +LABELV $890 +line 1897 +;1896: } +;1897: } +LABELV $888 +line 1899 +;1898: +;1899: return qfalse; +CNSTI4 0 +RETI4 +LABELV $887 +endproc Item_YesNo_HandleKey 32 12 +export Item_Multi_CountSettings +proc Item_Multi_CountSettings 4 0 +line 1903 +;1900: +;1901:} +;1902: +;1903:int Item_Multi_CountSettings(itemDef_t *item) { +line 1904 +;1904: multiDef_t *multiPtr = (multiDef_t*)item->typeData; +ADDRLP4 0 +ADDRFP4 0 +INDIRP4 +CNSTI4 536 +ADDP4 +INDIRP4 +ASGNP4 +line 1905 +;1905: if (multiPtr == NULL) { +ADDRLP4 0 +INDIRP4 +CVPU4 4 +CNSTU4 0 +NEU4 $900 +line 1906 +;1906: return 0; +CNSTI4 0 +RETI4 +ADDRGP4 $899 +JUMPV +LABELV $900 +line 1908 +;1907: } +;1908: return multiPtr->count; +ADDRLP4 0 +INDIRP4 +CNSTI4 384 +ADDP4 +INDIRI4 +RETI4 +LABELV $899 +endproc Item_Multi_CountSettings 4 0 +export Item_Multi_FindCvarByValue +proc Item_Multi_FindCvarByValue 1040 12 +line 1911 +;1909:} +;1910: +;1911:int Item_Multi_FindCvarByValue(itemDef_t *item) { +line 1913 +;1912: char buff[1024]; +;1913: float value = 0; +ADDRLP4 8 +CNSTF4 0 +ASGNF4 +line 1915 +;1914: int i; +;1915: multiDef_t *multiPtr = (multiDef_t*)item->typeData; +ADDRLP4 4 +ADDRFP4 0 +INDIRP4 +CNSTI4 536 +ADDP4 +INDIRP4 +ASGNP4 +line 1916 +;1916: if (multiPtr) { +ADDRLP4 4 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $903 +line 1917 +;1917: if (multiPtr->strDef) { +ADDRLP4 4 +INDIRP4 +CNSTI4 388 +ADDP4 +INDIRI4 +CNSTI4 0 +EQI4 $905 +line 1918 +;1918: DC->getCVarString(item->cvar, buff, sizeof(buff)); +ADDRFP4 0 +INDIRP4 +CNSTI4 264 +ADDP4 +INDIRP4 +ARGP4 +ADDRLP4 12 +ARGP4 +CNSTI4 1024 +ARGI4 +ADDRGP4 DC +INDIRP4 +CNSTI4 88 +ADDP4 +INDIRP4 +CALLV +pop +line 1919 +;1919: } else { +ADDRGP4 $906 +JUMPV +LABELV $905 +line 1920 +;1920: value = DC->getCVarValue(item->cvar); +ADDRFP4 0 +INDIRP4 +CNSTI4 264 +ADDP4 +INDIRP4 +ARGP4 +ADDRLP4 1036 +ADDRGP4 DC +INDIRP4 +CNSTI4 92 +ADDP4 +INDIRP4 +CALLF4 +ASGNF4 +ADDRLP4 8 +ADDRLP4 1036 +INDIRF4 +ASGNF4 +line 1921 +;1921: } +LABELV $906 +line 1922 +;1922: for (i = 0; i < multiPtr->count; i++) { +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +ADDRGP4 $910 +JUMPV +LABELV $907 +line 1923 +;1923: if (multiPtr->strDef) { +ADDRLP4 4 +INDIRP4 +CNSTI4 388 +ADDP4 +INDIRI4 +CNSTI4 0 +EQI4 $911 +line 1924 +;1924: if (Q_stricmp(buff, multiPtr->cvarStr[i]) == 0) { +ADDRLP4 12 +ARGP4 +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRLP4 4 +INDIRP4 +CNSTI4 128 +ADDP4 +ADDP4 +INDIRP4 +ARGP4 +ADDRLP4 1036 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 1036 +INDIRI4 +CNSTI4 0 +NEI4 $912 +line 1925 +;1925: return i; +ADDRLP4 0 +INDIRI4 +RETI4 +ADDRGP4 $902 +JUMPV +line 1927 +;1926: } +;1927: } else { +LABELV $911 +line 1928 +;1928: if (multiPtr->cvarValue[i] == value) { +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRLP4 4 +INDIRP4 +CNSTI4 256 +ADDP4 +ADDP4 +INDIRF4 +ADDRLP4 8 +INDIRF4 +NEF4 $915 +line 1929 +;1929: return i; +ADDRLP4 0 +INDIRI4 +RETI4 +ADDRGP4 $902 +JUMPV +LABELV $915 +line 1931 +;1930: } +;1931: } +LABELV $912 +line 1932 +;1932: } +LABELV $908 +line 1922 +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +LABELV $910 +ADDRLP4 0 +INDIRI4 +ADDRLP4 4 +INDIRP4 +CNSTI4 384 +ADDP4 +INDIRI4 +LTI4 $907 +line 1933 +;1933: } +LABELV $903 +line 1934 +;1934: return 0; +CNSTI4 0 +RETI4 +LABELV $902 +endproc Item_Multi_FindCvarByValue 1040 12 +export Item_Multi_Setting +proc Item_Multi_Setting 1040 12 +line 1937 +;1935:} +;1936: +;1937:const char *Item_Multi_Setting(itemDef_t *item) { +line 1939 +;1938: char buff[1024]; +;1939: float value = 0; +ADDRLP4 8 +CNSTF4 0 +ASGNF4 +line 1941 +;1940: int i; +;1941: multiDef_t *multiPtr = (multiDef_t*)item->typeData; +ADDRLP4 0 +ADDRFP4 0 +INDIRP4 +CNSTI4 536 +ADDP4 +INDIRP4 +ASGNP4 +line 1942 +;1942: if (multiPtr) { +ADDRLP4 0 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $918 +line 1943 +;1943: if (multiPtr->strDef) { +ADDRLP4 0 +INDIRP4 +CNSTI4 388 +ADDP4 +INDIRI4 +CNSTI4 0 +EQI4 $920 +line 1944 +;1944: DC->getCVarString(item->cvar, buff, sizeof(buff)); +ADDRFP4 0 +INDIRP4 +CNSTI4 264 +ADDP4 +INDIRP4 +ARGP4 +ADDRLP4 12 +ARGP4 +CNSTI4 1024 +ARGI4 +ADDRGP4 DC +INDIRP4 +CNSTI4 88 +ADDP4 +INDIRP4 +CALLV +pop +line 1945 +;1945: } else { +ADDRGP4 $921 +JUMPV +LABELV $920 +line 1946 +;1946: value = DC->getCVarValue(item->cvar); +ADDRFP4 0 +INDIRP4 +CNSTI4 264 +ADDP4 +INDIRP4 +ARGP4 +ADDRLP4 1036 +ADDRGP4 DC +INDIRP4 +CNSTI4 92 +ADDP4 +INDIRP4 +CALLF4 +ASGNF4 +ADDRLP4 8 +ADDRLP4 1036 +INDIRF4 +ASGNF4 +line 1947 +;1947: } +LABELV $921 +line 1948 +;1948: for (i = 0; i < multiPtr->count; i++) { +ADDRLP4 4 +CNSTI4 0 +ASGNI4 +ADDRGP4 $925 +JUMPV +LABELV $922 +line 1949 +;1949: if (multiPtr->strDef) { +ADDRLP4 0 +INDIRP4 +CNSTI4 388 +ADDP4 +INDIRI4 +CNSTI4 0 +EQI4 $926 +line 1950 +;1950: if (Q_stricmp(buff, multiPtr->cvarStr[i]) == 0) { +ADDRLP4 12 +ARGP4 +ADDRLP4 4 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRLP4 0 +INDIRP4 +CNSTI4 128 +ADDP4 +ADDP4 +INDIRP4 +ARGP4 +ADDRLP4 1036 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 1036 +INDIRI4 +CNSTI4 0 +NEI4 $927 +line 1951 +;1951: return multiPtr->cvarList[i]; +ADDRLP4 4 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRLP4 0 +INDIRP4 +ADDP4 +INDIRP4 +RETP4 +ADDRGP4 $917 +JUMPV +line 1953 +;1952: } +;1953: } else { +LABELV $926 +line 1954 +;1954: if (multiPtr->cvarValue[i] == value) { +ADDRLP4 4 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRLP4 0 +INDIRP4 +CNSTI4 256 +ADDP4 +ADDP4 +INDIRF4 +ADDRLP4 8 +INDIRF4 +NEF4 $930 +line 1955 +;1955: return multiPtr->cvarList[i]; +ADDRLP4 4 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRLP4 0 +INDIRP4 +ADDP4 +INDIRP4 +RETP4 +ADDRGP4 $917 +JUMPV +LABELV $930 +line 1957 +;1956: } +;1957: } +LABELV $927 +line 1958 +;1958: } +LABELV $923 +line 1948 +ADDRLP4 4 +ADDRLP4 4 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +LABELV $925 +ADDRLP4 4 +INDIRI4 +ADDRLP4 0 +INDIRP4 +CNSTI4 384 +ADDP4 +INDIRI4 +LTI4 $922 +line 1959 +;1959: } +LABELV $918 +line 1960 +;1960: return ""; +ADDRGP4 $54 +RETP4 +LABELV $917 +endproc Item_Multi_Setting 1040 12 +export Item_Multi_HandleKey +proc Item_Multi_HandleKey 56 12 +line 1963 +;1961:} +;1962: +;1963:qboolean Item_Multi_HandleKey(itemDef_t *item, int key) { +line 1964 +;1964: multiDef_t *multiPtr = (multiDef_t*)item->typeData; +ADDRLP4 0 +ADDRFP4 0 +INDIRP4 +CNSTI4 536 +ADDP4 +INDIRP4 +ASGNP4 +line 1965 +;1965: if (multiPtr) { +ADDRLP4 0 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $933 +line 1966 +;1966: if (Rect_ContainsPoint(&item->window.rect, DC->cursorx, DC->cursory) && item->window.flags & WINDOW_HASFOCUS && item->cvar) { +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRLP4 4 +ADDRGP4 DC +INDIRP4 +ASGNP4 +ADDRLP4 4 +INDIRP4 +CNSTI4 216 +ADDP4 +INDIRI4 +CVIF4 4 +ARGF4 +ADDRLP4 4 +INDIRP4 +CNSTI4 220 +ADDP4 +INDIRI4 +CVIF4 4 +ARGF4 +ADDRLP4 8 +ADDRGP4 Rect_ContainsPoint +CALLI4 +ASGNI4 +ADDRLP4 12 +CNSTI4 0 +ASGNI4 +ADDRLP4 8 +INDIRI4 +ADDRLP4 12 +INDIRI4 +EQI4 $935 +ADDRLP4 16 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 16 +INDIRP4 +CNSTI4 68 +ADDP4 +INDIRI4 +CNSTI4 2 +BANDI4 +ADDRLP4 12 +INDIRI4 +EQI4 $935 +ADDRLP4 16 +INDIRP4 +CNSTI4 264 +ADDP4 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $935 +line 1967 +;1967: if (key == K_MOUSE1 || key == K_ENTER || key == K_MOUSE2 || key == K_MOUSE3) { +ADDRLP4 20 +ADDRFP4 4 +INDIRI4 +ASGNI4 +ADDRLP4 20 +INDIRI4 +CNSTI4 178 +EQI4 $941 +ADDRLP4 20 +INDIRI4 +CNSTI4 13 +EQI4 $941 +ADDRLP4 20 +INDIRI4 +CNSTI4 179 +EQI4 $941 +ADDRLP4 20 +INDIRI4 +CNSTI4 180 +NEI4 $937 +LABELV $941 +line 1968 +;1968: int current = Item_Multi_FindCvarByValue(item) + 1; +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRLP4 32 +ADDRGP4 Item_Multi_FindCvarByValue +CALLI4 +ASGNI4 +ADDRLP4 24 +ADDRLP4 32 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 1969 +;1969: int max = Item_Multi_CountSettings(item); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRLP4 36 +ADDRGP4 Item_Multi_CountSettings +CALLI4 +ASGNI4 +ADDRLP4 28 +ADDRLP4 36 +INDIRI4 +ASGNI4 +line 1970 +;1970: if ( current < 0 || current >= max ) { +ADDRLP4 40 +ADDRLP4 24 +INDIRI4 +ASGNI4 +ADDRLP4 40 +INDIRI4 +CNSTI4 0 +LTI4 $944 +ADDRLP4 40 +INDIRI4 +ADDRLP4 28 +INDIRI4 +LTI4 $942 +LABELV $944 +line 1971 +;1971: current = 0; +ADDRLP4 24 +CNSTI4 0 +ASGNI4 +line 1972 +;1972: } +LABELV $942 +line 1973 +;1973: if (multiPtr->strDef) { +ADDRLP4 0 +INDIRP4 +CNSTI4 388 +ADDP4 +INDIRI4 +CNSTI4 0 +EQI4 $945 +line 1974 +;1974: DC->setCVar(item->cvar, multiPtr->cvarStr[current]); +ADDRFP4 0 +INDIRP4 +CNSTI4 264 +ADDP4 +INDIRP4 +ARGP4 +ADDRLP4 24 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRLP4 0 +INDIRP4 +CNSTI4 128 +ADDP4 +ADDP4 +INDIRP4 +ARGP4 +ADDRGP4 DC +INDIRP4 +CNSTI4 96 +ADDP4 +INDIRP4 +CALLV +pop +line 1975 +;1975: } else { +ADDRGP4 $946 +JUMPV +LABELV $945 +line 1976 +;1976: float value = multiPtr->cvarValue[current]; +ADDRLP4 44 +ADDRLP4 24 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRLP4 0 +INDIRP4 +CNSTI4 256 +ADDP4 +ADDP4 +INDIRF4 +ASGNF4 +line 1977 +;1977: if (((float)((int) value)) == value) { +ADDRLP4 48 +ADDRLP4 44 +INDIRF4 +ASGNF4 +ADDRLP4 48 +INDIRF4 +CVFI4 4 +CVIF4 4 +ADDRLP4 48 +INDIRF4 +NEF4 $947 +line 1978 +;1978: DC->setCVar(item->cvar, va("%i", (int) value )); +ADDRGP4 $895 +ARGP4 +ADDRLP4 44 +INDIRF4 +CVFI4 4 +ARGI4 +ADDRLP4 52 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 264 +ADDP4 +INDIRP4 +ARGP4 +ADDRLP4 52 +INDIRP4 +ARGP4 +ADDRGP4 DC +INDIRP4 +CNSTI4 96 +ADDP4 +INDIRP4 +CALLV +pop +line 1979 +;1979: } +ADDRGP4 $948 +JUMPV +LABELV $947 +line 1980 +;1980: else { +line 1981 +;1981: DC->setCVar(item->cvar, va("%f", value )); +ADDRGP4 $949 +ARGP4 +ADDRLP4 44 +INDIRF4 +ARGF4 +ADDRLP4 52 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 264 +ADDP4 +INDIRP4 +ARGP4 +ADDRLP4 52 +INDIRP4 +ARGP4 +ADDRGP4 DC +INDIRP4 +CNSTI4 96 +ADDP4 +INDIRP4 +CALLV +pop +line 1982 +;1982: } +LABELV $948 +line 1983 +;1983: } +LABELV $946 +line 1984 +;1984: return qtrue; +CNSTI4 1 +RETI4 +ADDRGP4 $932 +JUMPV +LABELV $937 +line 1986 +;1985: } +;1986: } +LABELV $935 +line 1987 +;1987: } +LABELV $933 +line 1988 +;1988: return qfalse; +CNSTI4 0 +RETI4 +LABELV $932 +endproc Item_Multi_HandleKey 56 12 +export Item_TextField_HandleKey +proc Item_TextField_HandleKey 1076 12 +line 1991 +;1989:} +;1990: +;1991:qboolean Item_TextField_HandleKey(itemDef_t *item, int key) { +line 1994 +;1992: char buff[1024]; +;1993: int len; +;1994: itemDef_t *newItem = NULL; +ADDRLP4 1028 +CNSTP4 0 +ASGNP4 +line 1995 +;1995: editFieldDef_t *editPtr = (editFieldDef_t*)item->typeData; +ADDRLP4 0 +ADDRFP4 0 +INDIRP4 +CNSTI4 536 +ADDP4 +INDIRP4 +ASGNP4 +line 1997 +;1996: +;1997: if (item->cvar) { +ADDRFP4 0 +INDIRP4 +CNSTI4 264 +ADDP4 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $951 +line 1999 +;1998: +;1999: memset(buff, 0, sizeof(buff)); +ADDRLP4 4 +ARGP4 +CNSTI4 0 +ARGI4 +CNSTI4 1024 +ARGI4 +ADDRGP4 memset +CALLP4 +pop +line 2000 +;2000: DC->getCVarString(item->cvar, buff, sizeof(buff)); +ADDRFP4 0 +INDIRP4 +CNSTI4 264 +ADDP4 +INDIRP4 +ARGP4 +ADDRLP4 4 +ARGP4 +CNSTI4 1024 +ARGI4 +ADDRGP4 DC +INDIRP4 +CNSTI4 88 +ADDP4 +INDIRP4 +CALLV +pop +line 2001 +;2001: len = strlen(buff); +ADDRLP4 4 +ARGP4 +ADDRLP4 1036 +ADDRGP4 strlen +CALLI4 +ASGNI4 +ADDRLP4 1032 +ADDRLP4 1036 +INDIRI4 +ASGNI4 +line 2002 +;2002: if (editPtr->maxChars && len > editPtr->maxChars) { +ADDRLP4 1040 +ADDRLP4 0 +INDIRP4 +CNSTI4 16 +ADDP4 +INDIRI4 +ASGNI4 +ADDRLP4 1040 +INDIRI4 +CNSTI4 0 +EQI4 $953 +ADDRLP4 1032 +INDIRI4 +ADDRLP4 1040 +INDIRI4 +LEI4 $953 +line 2003 +;2003: len = editPtr->maxChars; +ADDRLP4 1032 +ADDRLP4 0 +INDIRP4 +CNSTI4 16 +ADDP4 +INDIRI4 +ASGNI4 +line 2004 +;2004: } +LABELV $953 +line 2005 +;2005: if ( key & K_CHAR_FLAG ) { +ADDRFP4 4 +INDIRI4 +CNSTI4 1024 +BANDI4 +CNSTI4 0 +EQI4 $955 +line 2006 +;2006: key &= ~K_CHAR_FLAG; +ADDRFP4 4 +ADDRFP4 4 +INDIRI4 +CNSTI4 -1025 +BANDI4 +ASGNI4 +line 2009 +;2007: +;2008: +;2009: if (key == 'h' - 'a' + 1 ) { // ctrl-h is backspace +ADDRFP4 4 +INDIRI4 +CNSTI4 8 +NEI4 $957 +line 2010 +;2010: if ( item->cursorPos > 0 ) { +ADDRFP4 0 +INDIRP4 +CNSTI4 532 +ADDP4 +INDIRI4 +CNSTI4 0 +LEI4 $959 +line 2011 +;2011: memmove( &buff[item->cursorPos - 1], &buff[item->cursorPos], len + 1 - item->cursorPos); +ADDRLP4 1044 +ADDRFP4 0 +INDIRP4 +CNSTI4 532 +ADDP4 +INDIRI4 +ASGNI4 +ADDRLP4 1044 +INDIRI4 +ADDRLP4 4-1 +ADDP4 +ARGP4 +ADDRLP4 1044 +INDIRI4 +ADDRLP4 4 +ADDP4 +ARGP4 +ADDRLP4 1032 +INDIRI4 +CNSTI4 1 +ADDI4 +ADDRLP4 1044 +INDIRI4 +SUBI4 +ARGI4 +ADDRGP4 memmove +CALLP4 +pop +line 2012 +;2012: item->cursorPos--; +ADDRLP4 1048 +ADDRFP4 0 +INDIRP4 +CNSTI4 532 +ADDP4 +ASGNP4 +ADDRLP4 1048 +INDIRP4 +ADDRLP4 1048 +INDIRP4 +INDIRI4 +CNSTI4 1 +SUBI4 +ASGNI4 +line 2013 +;2013: if (item->cursorPos < editPtr->paintOffset) { +ADDRFP4 0 +INDIRP4 +CNSTI4 532 +ADDP4 +INDIRI4 +ADDRLP4 0 +INDIRP4 +CNSTI4 24 +ADDP4 +INDIRI4 +GEI4 $962 +line 2014 +;2014: editPtr->paintOffset--; +ADDRLP4 1052 +ADDRLP4 0 +INDIRP4 +CNSTI4 24 +ADDP4 +ASGNP4 +ADDRLP4 1052 +INDIRP4 +ADDRLP4 1052 +INDIRP4 +INDIRI4 +CNSTI4 1 +SUBI4 +ASGNI4 +line 2015 +;2015: } +LABELV $962 +line 2016 +;2016: } +LABELV $959 +line 2017 +;2017: DC->setCVar(item->cvar, buff); +ADDRFP4 0 +INDIRP4 +CNSTI4 264 +ADDP4 +INDIRP4 +ARGP4 +ADDRLP4 4 +ARGP4 +ADDRGP4 DC +INDIRP4 +CNSTI4 96 +ADDP4 +INDIRP4 +CALLV +pop +line 2018 +;2018: return qtrue; +CNSTI4 1 +RETI4 +ADDRGP4 $950 +JUMPV +LABELV $957 +line 2025 +;2019: } +;2020: +;2021: +;2022: // +;2023: // ignore any non printable chars +;2024: // +;2025: if ( key < 32 || !item->cvar) { +ADDRFP4 4 +INDIRI4 +CNSTI4 32 +LTI4 $966 +ADDRFP4 0 +INDIRP4 +CNSTI4 264 +ADDP4 +INDIRP4 +CVPU4 4 +CNSTU4 0 +NEU4 $964 +LABELV $966 +line 2026 +;2026: return qtrue; +CNSTI4 1 +RETI4 +ADDRGP4 $950 +JUMPV +LABELV $964 +line 2029 +;2027: } +;2028: +;2029: if (item->type == ITEM_TYPE_NUMERICFIELD) { +ADDRFP4 0 +INDIRP4 +CNSTI4 196 +ADDP4 +INDIRI4 +CNSTI4 9 +NEI4 $967 +line 2030 +;2030: if (key < '0' || key > '9') { +ADDRLP4 1044 +ADDRFP4 4 +INDIRI4 +ASGNI4 +ADDRLP4 1044 +INDIRI4 +CNSTI4 48 +LTI4 $971 +ADDRLP4 1044 +INDIRI4 +CNSTI4 57 +LEI4 $969 +LABELV $971 +line 2031 +;2031: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $950 +JUMPV +LABELV $969 +line 2033 +;2032: } +;2033: } +LABELV $967 +line 2035 +;2034: +;2035: if (!DC->getOverstrikeMode()) { +ADDRLP4 1044 +ADDRGP4 DC +INDIRP4 +CNSTI4 108 +ADDP4 +INDIRP4 +CALLI4 +ASGNI4 +ADDRLP4 1044 +INDIRI4 +CNSTI4 0 +NEI4 $972 +line 2036 +;2036: if (( len == MAX_EDITFIELD - 1 ) || (editPtr->maxChars && len >= editPtr->maxChars)) { +ADDRLP4 1048 +ADDRLP4 1032 +INDIRI4 +ASGNI4 +ADDRLP4 1048 +INDIRI4 +CNSTI4 255 +EQI4 $976 +ADDRLP4 1052 +ADDRLP4 0 +INDIRP4 +CNSTI4 16 +ADDP4 +INDIRI4 +ASGNI4 +ADDRLP4 1052 +INDIRI4 +CNSTI4 0 +EQI4 $974 +ADDRLP4 1048 +INDIRI4 +ADDRLP4 1052 +INDIRI4 +LTI4 $974 +LABELV $976 +line 2037 +;2037: return qtrue; +CNSTI4 1 +RETI4 +ADDRGP4 $950 +JUMPV +LABELV $974 +line 2039 +;2038: } +;2039: memmove( &buff[item->cursorPos + 1], &buff[item->cursorPos], len + 1 - item->cursorPos ); +ADDRLP4 1056 +ADDRFP4 0 +INDIRP4 +CNSTI4 532 +ADDP4 +INDIRI4 +ASGNI4 +ADDRLP4 1056 +INDIRI4 +ADDRLP4 4+1 +ADDP4 +ARGP4 +ADDRLP4 1056 +INDIRI4 +ADDRLP4 4 +ADDP4 +ARGP4 +ADDRLP4 1032 +INDIRI4 +CNSTI4 1 +ADDI4 +ADDRLP4 1056 +INDIRI4 +SUBI4 +ARGI4 +ADDRGP4 memmove +CALLP4 +pop +line 2040 +;2040: } else { +ADDRGP4 $973 +JUMPV +LABELV $972 +line 2041 +;2041: if (editPtr->maxChars && item->cursorPos >= editPtr->maxChars) { +ADDRLP4 1048 +ADDRLP4 0 +INDIRP4 +CNSTI4 16 +ADDP4 +INDIRI4 +ASGNI4 +ADDRLP4 1048 +INDIRI4 +CNSTI4 0 +EQI4 $978 +ADDRFP4 0 +INDIRP4 +CNSTI4 532 +ADDP4 +INDIRI4 +ADDRLP4 1048 +INDIRI4 +LTI4 $978 +line 2042 +;2042: return qtrue; +CNSTI4 1 +RETI4 +ADDRGP4 $950 +JUMPV +LABELV $978 +line 2044 +;2043: } +;2044: } +LABELV $973 +line 2046 +;2045: +;2046: buff[item->cursorPos] = key; +ADDRFP4 0 +INDIRP4 +CNSTI4 532 +ADDP4 +INDIRI4 +ADDRLP4 4 +ADDP4 +ADDRFP4 4 +INDIRI4 +CVII1 4 +ASGNI1 +line 2048 +;2047: +;2048: DC->setCVar(item->cvar, buff); +ADDRFP4 0 +INDIRP4 +CNSTI4 264 +ADDP4 +INDIRP4 +ARGP4 +ADDRLP4 4 +ARGP4 +ADDRGP4 DC +INDIRP4 +CNSTI4 96 +ADDP4 +INDIRP4 +CALLV +pop +line 2050 +;2049: +;2050: if (item->cursorPos < len + 1) { +ADDRFP4 0 +INDIRP4 +CNSTI4 532 +ADDP4 +INDIRI4 +ADDRLP4 1032 +INDIRI4 +CNSTI4 1 +ADDI4 +GEI4 $956 +line 2051 +;2051: item->cursorPos++; +ADDRLP4 1048 +ADDRFP4 0 +INDIRP4 +CNSTI4 532 +ADDP4 +ASGNP4 +ADDRLP4 1048 +INDIRP4 +ADDRLP4 1048 +INDIRP4 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 2052 +;2052: if (editPtr->maxPaintChars && item->cursorPos > editPtr->maxPaintChars) { +ADDRLP4 1052 +ADDRLP4 0 +INDIRP4 +CNSTI4 20 +ADDP4 +INDIRI4 +ASGNI4 +ADDRLP4 1052 +INDIRI4 +CNSTI4 0 +EQI4 $956 +ADDRFP4 0 +INDIRP4 +CNSTI4 532 +ADDP4 +INDIRI4 +ADDRLP4 1052 +INDIRI4 +LEI4 $956 +line 2053 +;2053: editPtr->paintOffset++; +ADDRLP4 1056 +ADDRLP4 0 +INDIRP4 +CNSTI4 24 +ADDP4 +ASGNP4 +ADDRLP4 1056 +INDIRP4 +ADDRLP4 1056 +INDIRP4 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 2054 +;2054: } +line 2055 +;2055: } +line 2057 +;2056: +;2057: } else { +ADDRGP4 $956 +JUMPV +LABELV $955 +line 2059 +;2058: +;2059: if ( key == K_DEL || key == K_KP_DEL ) { +ADDRLP4 1044 +ADDRFP4 4 +INDIRI4 +ASGNI4 +ADDRLP4 1044 +INDIRI4 +CNSTI4 140 +EQI4 $986 +ADDRLP4 1044 +INDIRI4 +CNSTI4 171 +NEI4 $984 +LABELV $986 +line 2060 +;2060: if ( item->cursorPos < len ) { +ADDRFP4 0 +INDIRP4 +CNSTI4 532 +ADDP4 +INDIRI4 +ADDRLP4 1032 +INDIRI4 +GEI4 $987 +line 2061 +;2061: memmove( buff + item->cursorPos, buff + item->cursorPos + 1, len - item->cursorPos); +ADDRLP4 1048 +ADDRFP4 0 +INDIRP4 +CNSTI4 532 +ADDP4 +INDIRI4 +ASGNI4 +ADDRLP4 1048 +INDIRI4 +ADDRLP4 4 +ADDP4 +ARGP4 +ADDRLP4 1048 +INDIRI4 +ADDRLP4 4+1 +ADDP4 +ARGP4 +ADDRLP4 1032 +INDIRI4 +ADDRLP4 1048 +INDIRI4 +SUBI4 +ARGI4 +ADDRGP4 memmove +CALLP4 +pop +line 2062 +;2062: DC->setCVar(item->cvar, buff); +ADDRFP4 0 +INDIRP4 +CNSTI4 264 +ADDP4 +INDIRP4 +ARGP4 +ADDRLP4 4 +ARGP4 +ADDRGP4 DC +INDIRP4 +CNSTI4 96 +ADDP4 +INDIRP4 +CALLV +pop +line 2063 +;2063: } +LABELV $987 +line 2064 +;2064: return qtrue; +CNSTI4 1 +RETI4 +ADDRGP4 $950 +JUMPV +LABELV $984 +line 2067 +;2065: } +;2066: +;2067: if ( key == K_RIGHTARROW || key == K_KP_RIGHTARROW ) +ADDRLP4 1048 +ADDRFP4 4 +INDIRI4 +ASGNI4 +ADDRLP4 1048 +INDIRI4 +CNSTI4 135 +EQI4 $992 +ADDRLP4 1048 +INDIRI4 +CNSTI4 165 +NEI4 $990 +LABELV $992 +line 2068 +;2068: { +line 2069 +;2069: if (editPtr->maxPaintChars && item->cursorPos >= editPtr->maxPaintChars && item->cursorPos < len) { +ADDRLP4 1052 +ADDRLP4 0 +INDIRP4 +CNSTI4 20 +ADDP4 +INDIRI4 +ASGNI4 +ADDRLP4 1052 +INDIRI4 +CNSTI4 0 +EQI4 $993 +ADDRLP4 1056 +ADDRFP4 0 +INDIRP4 +CNSTI4 532 +ADDP4 +INDIRI4 +ASGNI4 +ADDRLP4 1056 +INDIRI4 +ADDRLP4 1052 +INDIRI4 +LTI4 $993 +ADDRLP4 1056 +INDIRI4 +ADDRLP4 1032 +INDIRI4 +GEI4 $993 +line 2070 +;2070: item->cursorPos++; +ADDRLP4 1060 +ADDRFP4 0 +INDIRP4 +CNSTI4 532 +ADDP4 +ASGNP4 +ADDRLP4 1060 +INDIRP4 +ADDRLP4 1060 +INDIRP4 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 2071 +;2071: editPtr->paintOffset++; +ADDRLP4 1064 +ADDRLP4 0 +INDIRP4 +CNSTI4 24 +ADDP4 +ASGNP4 +ADDRLP4 1064 +INDIRP4 +ADDRLP4 1064 +INDIRP4 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 2072 +;2072: return qtrue; +CNSTI4 1 +RETI4 +ADDRGP4 $950 +JUMPV +LABELV $993 +line 2074 +;2073: } +;2074: if (item->cursorPos < len) { +ADDRFP4 0 +INDIRP4 +CNSTI4 532 +ADDP4 +INDIRI4 +ADDRLP4 1032 +INDIRI4 +GEI4 $995 +line 2075 +;2075: item->cursorPos++; +ADDRLP4 1060 +ADDRFP4 0 +INDIRP4 +CNSTI4 532 +ADDP4 +ASGNP4 +ADDRLP4 1060 +INDIRP4 +ADDRLP4 1060 +INDIRP4 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 2076 +;2076: } +LABELV $995 +line 2077 +;2077: return qtrue; +CNSTI4 1 +RETI4 +ADDRGP4 $950 +JUMPV +LABELV $990 +line 2080 +;2078: } +;2079: +;2080: if ( key == K_LEFTARROW || key == K_KP_LEFTARROW ) +ADDRLP4 1052 +ADDRFP4 4 +INDIRI4 +ASGNI4 +ADDRLP4 1052 +INDIRI4 +CNSTI4 134 +EQI4 $999 +ADDRLP4 1052 +INDIRI4 +CNSTI4 163 +NEI4 $997 +LABELV $999 +line 2081 +;2081: { +line 2082 +;2082: if ( item->cursorPos > 0 ) { +ADDRFP4 0 +INDIRP4 +CNSTI4 532 +ADDP4 +INDIRI4 +CNSTI4 0 +LEI4 $1000 +line 2083 +;2083: item->cursorPos--; +ADDRLP4 1056 +ADDRFP4 0 +INDIRP4 +CNSTI4 532 +ADDP4 +ASGNP4 +ADDRLP4 1056 +INDIRP4 +ADDRLP4 1056 +INDIRP4 +INDIRI4 +CNSTI4 1 +SUBI4 +ASGNI4 +line 2084 +;2084: } +LABELV $1000 +line 2085 +;2085: if (item->cursorPos < editPtr->paintOffset) { +ADDRFP4 0 +INDIRP4 +CNSTI4 532 +ADDP4 +INDIRI4 +ADDRLP4 0 +INDIRP4 +CNSTI4 24 +ADDP4 +INDIRI4 +GEI4 $1002 +line 2086 +;2086: editPtr->paintOffset--; +ADDRLP4 1056 +ADDRLP4 0 +INDIRP4 +CNSTI4 24 +ADDP4 +ASGNP4 +ADDRLP4 1056 +INDIRP4 +ADDRLP4 1056 +INDIRP4 +INDIRI4 +CNSTI4 1 +SUBI4 +ASGNI4 +line 2087 +;2087: } +LABELV $1002 +line 2088 +;2088: return qtrue; +CNSTI4 1 +RETI4 +ADDRGP4 $950 +JUMPV +LABELV $997 +line 2091 +;2089: } +;2090: +;2091: if ( key == K_HOME || key == K_KP_HOME) {// || ( tolower(key) == 'a' && trap_Key_IsDown( K_CTRL ) ) ) { +ADDRLP4 1056 +ADDRFP4 4 +INDIRI4 +ASGNI4 +ADDRLP4 1056 +INDIRI4 +CNSTI4 143 +EQI4 $1006 +ADDRLP4 1056 +INDIRI4 +CNSTI4 160 +NEI4 $1004 +LABELV $1006 +line 2092 +;2092: item->cursorPos = 0; +ADDRFP4 0 +INDIRP4 +CNSTI4 532 +ADDP4 +CNSTI4 0 +ASGNI4 +line 2093 +;2093: editPtr->paintOffset = 0; +ADDRLP4 0 +INDIRP4 +CNSTI4 24 +ADDP4 +CNSTI4 0 +ASGNI4 +line 2094 +;2094: return qtrue; +CNSTI4 1 +RETI4 +ADDRGP4 $950 +JUMPV +LABELV $1004 +line 2097 +;2095: } +;2096: +;2097: if ( key == K_END || key == K_KP_END) {// ( tolower(key) == 'e' && trap_Key_IsDown( K_CTRL ) ) ) { +ADDRLP4 1060 +ADDRFP4 4 +INDIRI4 +ASGNI4 +ADDRLP4 1060 +INDIRI4 +CNSTI4 144 +EQI4 $1009 +ADDRLP4 1060 +INDIRI4 +CNSTI4 166 +NEI4 $1007 +LABELV $1009 +line 2098 +;2098: item->cursorPos = len; +ADDRFP4 0 +INDIRP4 +CNSTI4 532 +ADDP4 +ADDRLP4 1032 +INDIRI4 +ASGNI4 +line 2099 +;2099: if(item->cursorPos > editPtr->maxPaintChars) { +ADDRFP4 0 +INDIRP4 +CNSTI4 532 +ADDP4 +INDIRI4 +ADDRLP4 0 +INDIRP4 +CNSTI4 20 +ADDP4 +INDIRI4 +LEI4 $1010 +line 2100 +;2100: editPtr->paintOffset = len - editPtr->maxPaintChars; +ADDRLP4 0 +INDIRP4 +CNSTI4 24 +ADDP4 +ADDRLP4 1032 +INDIRI4 +ADDRLP4 0 +INDIRP4 +CNSTI4 20 +ADDP4 +INDIRI4 +SUBI4 +ASGNI4 +line 2101 +;2101: } +LABELV $1010 +line 2102 +;2102: return qtrue; +CNSTI4 1 +RETI4 +ADDRGP4 $950 +JUMPV +LABELV $1007 +line 2105 +;2103: } +;2104: +;2105: if ( key == K_INS || key == K_KP_INS ) { +ADDRLP4 1064 +ADDRFP4 4 +INDIRI4 +ASGNI4 +ADDRLP4 1064 +INDIRI4 +CNSTI4 139 +EQI4 $1014 +ADDRLP4 1064 +INDIRI4 +CNSTI4 170 +NEI4 $1012 +LABELV $1014 +line 2106 +;2106: DC->setOverstrikeMode(!DC->getOverstrikeMode()); +ADDRLP4 1072 +ADDRGP4 DC +INDIRP4 +CNSTI4 108 +ADDP4 +INDIRP4 +CALLI4 +ASGNI4 +ADDRLP4 1072 +INDIRI4 +CNSTI4 0 +NEI4 $1016 +ADDRLP4 1068 +CNSTI4 1 +ASGNI4 +ADDRGP4 $1017 +JUMPV +LABELV $1016 +ADDRLP4 1068 +CNSTI4 0 +ASGNI4 +LABELV $1017 +ADDRLP4 1068 +INDIRI4 +ARGI4 +ADDRGP4 DC +INDIRP4 +CNSTI4 104 +ADDP4 +INDIRP4 +CALLV +pop +line 2107 +;2107: return qtrue; +CNSTI4 1 +RETI4 +ADDRGP4 $950 +JUMPV +LABELV $1012 +line 2109 +;2108: } +;2109: } +LABELV $956 +line 2111 +;2110: +;2111: if (key == K_TAB || key == K_DOWNARROW || key == K_KP_DOWNARROW) { +ADDRLP4 1044 +ADDRFP4 4 +INDIRI4 +ASGNI4 +ADDRLP4 1044 +INDIRI4 +CNSTI4 9 +EQI4 $1021 +ADDRLP4 1044 +INDIRI4 +CNSTI4 133 +EQI4 $1021 +ADDRLP4 1044 +INDIRI4 +CNSTI4 167 +NEI4 $1018 +LABELV $1021 +line 2112 +;2112: newItem = Menu_SetNextCursorItem(item->parent); +ADDRFP4 0 +INDIRP4 +CNSTI4 228 +ADDP4 +INDIRP4 +ARGP4 +ADDRLP4 1048 +ADDRGP4 Menu_SetNextCursorItem +CALLP4 +ASGNP4 +ADDRLP4 1028 +ADDRLP4 1048 +INDIRP4 +ASGNP4 +line 2113 +;2113: if (newItem && (newItem->type == ITEM_TYPE_EDITFIELD || newItem->type == ITEM_TYPE_NUMERICFIELD)) { +ADDRLP4 1028 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $1022 +ADDRLP4 1056 +ADDRLP4 1028 +INDIRP4 +CNSTI4 196 +ADDP4 +INDIRI4 +ASGNI4 +ADDRLP4 1056 +INDIRI4 +CNSTI4 4 +EQI4 $1024 +ADDRLP4 1056 +INDIRI4 +CNSTI4 9 +NEI4 $1022 +LABELV $1024 +line 2114 +;2114: g_editItem = newItem; +ADDRGP4 g_editItem +ADDRLP4 1028 +INDIRP4 +ASGNP4 +line 2115 +;2115: } +LABELV $1022 +line 2116 +;2116: } +LABELV $1018 +line 2118 +;2117: +;2118: if (key == K_UPARROW || key == K_KP_UPARROW) { +ADDRLP4 1048 +ADDRFP4 4 +INDIRI4 +ASGNI4 +ADDRLP4 1048 +INDIRI4 +CNSTI4 132 +EQI4 $1027 +ADDRLP4 1048 +INDIRI4 +CNSTI4 161 +NEI4 $1025 +LABELV $1027 +line 2119 +;2119: newItem = Menu_SetPrevCursorItem(item->parent); +ADDRFP4 0 +INDIRP4 +CNSTI4 228 +ADDP4 +INDIRP4 +ARGP4 +ADDRLP4 1052 +ADDRGP4 Menu_SetPrevCursorItem +CALLP4 +ASGNP4 +ADDRLP4 1028 +ADDRLP4 1052 +INDIRP4 +ASGNP4 +line 2120 +;2120: if (newItem && (newItem->type == ITEM_TYPE_EDITFIELD || newItem->type == ITEM_TYPE_NUMERICFIELD)) { +ADDRLP4 1028 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $1028 +ADDRLP4 1060 +ADDRLP4 1028 +INDIRP4 +CNSTI4 196 +ADDP4 +INDIRI4 +ASGNI4 +ADDRLP4 1060 +INDIRI4 +CNSTI4 4 +EQI4 $1030 +ADDRLP4 1060 +INDIRI4 +CNSTI4 9 +NEI4 $1028 +LABELV $1030 +line 2121 +;2121: g_editItem = newItem; +ADDRGP4 g_editItem +ADDRLP4 1028 +INDIRP4 +ASGNP4 +line 2122 +;2122: } +LABELV $1028 +line 2123 +;2123: } +LABELV $1025 +line 2125 +;2124: +;2125: if ( key == K_ENTER || key == K_KP_ENTER || key == K_ESCAPE) { +ADDRLP4 1052 +ADDRFP4 4 +INDIRI4 +ASGNI4 +ADDRLP4 1052 +INDIRI4 +CNSTI4 13 +EQI4 $1034 +ADDRLP4 1052 +INDIRI4 +CNSTI4 169 +EQI4 $1034 +ADDRLP4 1052 +INDIRI4 +CNSTI4 27 +NEI4 $1031 +LABELV $1034 +line 2126 +;2126: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $950 +JUMPV +LABELV $1031 +line 2129 +;2127: } +;2128: +;2129: return qtrue; +CNSTI4 1 +RETI4 +ADDRGP4 $950 +JUMPV +LABELV $951 +line 2131 +;2130: } +;2131: return qfalse; +CNSTI4 0 +RETI4 +LABELV $950 +endproc Item_TextField_HandleKey 1076 12 +proc Scroll_ListBox_AutoFunc 12 16 +line 2135 +;2132: +;2133:} +;2134: +;2135:static void Scroll_ListBox_AutoFunc(void *p) { +line 2136 +;2136: scrollInfo_t *si = (scrollInfo_t*)p; +ADDRLP4 0 +ADDRFP4 0 +INDIRP4 +ASGNP4 +line 2137 +;2137: if (DC->realTime > si->nextScrollTime) { +ADDRGP4 DC +INDIRP4 +CNSTI4 208 +ADDP4 +INDIRI4 +ADDRLP4 0 +INDIRP4 +INDIRI4 +LEI4 $1036 +line 2141 +;2138: // need to scroll which is done by simulating a click to the item +;2139: // this is done a bit sideways as the autoscroll "knows" that the item is a listbox +;2140: // so it calls it directly +;2141: Item_ListBox_HandleKey(si->item, si->scrollKey, qtrue, qfalse); +ADDRLP4 0 +INDIRP4 +CNSTI4 24 +ADDP4 +INDIRP4 +ARGP4 +ADDRLP4 0 +INDIRP4 +CNSTI4 12 +ADDP4 +INDIRI4 +ARGI4 +CNSTI4 1 +ARGI4 +CNSTI4 0 +ARGI4 +ADDRGP4 Item_ListBox_HandleKey +CALLI4 +pop +line 2142 +;2142: si->nextScrollTime = DC->realTime + si->adjustValue; +ADDRLP4 0 +INDIRP4 +ADDRGP4 DC +INDIRP4 +CNSTI4 208 +ADDP4 +INDIRI4 +ADDRLP4 0 +INDIRP4 +CNSTI4 8 +ADDP4 +INDIRI4 +ADDI4 +ASGNI4 +line 2143 +;2143: } +LABELV $1036 +line 2145 +;2144: +;2145: if (DC->realTime > si->nextAdjustTime) { +ADDRGP4 DC +INDIRP4 +CNSTI4 208 +ADDP4 +INDIRI4 +ADDRLP4 0 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRI4 +LEI4 $1038 +line 2146 +;2146: si->nextAdjustTime = DC->realTime + SCROLL_TIME_ADJUST; +ADDRLP4 0 +INDIRP4 +CNSTI4 4 +ADDP4 +ADDRGP4 DC +INDIRP4 +CNSTI4 208 +ADDP4 +INDIRI4 +CNSTI4 150 +ADDI4 +ASGNI4 +line 2147 +;2147: if (si->adjustValue > SCROLL_TIME_FLOOR) { +ADDRLP4 0 +INDIRP4 +CNSTI4 8 +ADDP4 +INDIRI4 +CNSTI4 20 +LEI4 $1040 +line 2148 +;2148: si->adjustValue -= SCROLL_TIME_ADJUSTOFFSET; +ADDRLP4 4 +ADDRLP4 0 +INDIRP4 +CNSTI4 8 +ADDP4 +ASGNP4 +ADDRLP4 4 +INDIRP4 +ADDRLP4 4 +INDIRP4 +INDIRI4 +CNSTI4 40 +SUBI4 +ASGNI4 +line 2149 +;2149: } +LABELV $1040 +line 2150 +;2150: } +LABELV $1038 +line 2151 +;2151:} +LABELV $1035 +endproc Scroll_ListBox_AutoFunc 12 16 +proc Scroll_ListBox_ThumbFunc 40 16 +line 2153 +;2152: +;2153:static void Scroll_ListBox_ThumbFunc(void *p) { +line 2154 +;2154: scrollInfo_t *si = (scrollInfo_t*)p; +ADDRLP4 0 +ADDRFP4 0 +INDIRP4 +ASGNP4 +line 2158 +;2155: rectDef_t r; +;2156: int pos, max; +;2157: +;2158: listBoxDef_t *listPtr = (listBoxDef_t*)si->item->typeData; +ADDRLP4 28 +ADDRLP4 0 +INDIRP4 +CNSTI4 24 +ADDP4 +INDIRP4 +CNSTI4 536 +ADDP4 +INDIRP4 +ASGNP4 +line 2159 +;2159: if (si->item->window.flags & WINDOW_HORIZONTAL) { +ADDRLP4 0 +INDIRP4 +CNSTI4 24 +ADDP4 +INDIRP4 +CNSTI4 68 +ADDP4 +INDIRI4 +CNSTI4 1024 +BANDI4 +CNSTI4 0 +EQI4 $1043 +line 2160 +;2160: if (DC->cursorx == si->xStart) { +ADDRGP4 DC +INDIRP4 +CNSTI4 216 +ADDP4 +INDIRI4 +CVIF4 4 +ADDRLP4 0 +INDIRP4 +CNSTI4 16 +ADDP4 +INDIRF4 +NEF4 $1045 +line 2161 +;2161: return; +ADDRGP4 $1042 +JUMPV +LABELV $1045 +line 2163 +;2162: } +;2163: r.x = si->item->window.rect.x + SCROLLBAR_SIZE + 1; +ADDRLP4 4 +ADDRLP4 0 +INDIRP4 +CNSTI4 24 +ADDP4 +INDIRP4 +INDIRF4 +CNSTF4 1098907648 +ADDF4 +CNSTF4 1065353216 +ADDF4 +ASGNF4 +line 2164 +;2164: r.y = si->item->window.rect.y + si->item->window.rect.h - SCROLLBAR_SIZE - 1; +ADDRLP4 32 +ADDRLP4 0 +INDIRP4 +CNSTI4 24 +ADDP4 +INDIRP4 +ASGNP4 +ADDRLP4 4+4 +ADDRLP4 32 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRF4 +ADDRLP4 32 +INDIRP4 +CNSTI4 12 +ADDP4 +INDIRF4 +ADDF4 +CNSTF4 1098907648 +SUBF4 +CNSTF4 1065353216 +SUBF4 +ASGNF4 +line 2165 +;2165: r.h = SCROLLBAR_SIZE; +ADDRLP4 4+12 +CNSTF4 1098907648 +ASGNF4 +line 2166 +;2166: r.w = si->item->window.rect.w - (SCROLLBAR_SIZE*2) - 2; +ADDRLP4 4+8 +ADDRLP4 0 +INDIRP4 +CNSTI4 24 +ADDP4 +INDIRP4 +CNSTI4 8 +ADDP4 +INDIRF4 +CNSTF4 1107296256 +SUBF4 +CNSTF4 1073741824 +SUBF4 +ASGNF4 +line 2167 +;2167: max = Item_ListBox_MaxScroll(si->item); +ADDRLP4 0 +INDIRP4 +CNSTI4 24 +ADDP4 +INDIRP4 +ARGP4 +ADDRLP4 36 +ADDRGP4 Item_ListBox_MaxScroll +CALLI4 +ASGNI4 +ADDRLP4 24 +ADDRLP4 36 +INDIRI4 +ASGNI4 +line 2169 +;2168: // +;2169: pos = (DC->cursorx - r.x - SCROLLBAR_SIZE/2) * max / (r.w - SCROLLBAR_SIZE); +ADDRLP4 20 +ADDRGP4 DC +INDIRP4 +CNSTI4 216 +ADDP4 +INDIRI4 +CVIF4 4 +ADDRLP4 4 +INDIRF4 +SUBF4 +CNSTF4 1090519040 +SUBF4 +ADDRLP4 24 +INDIRI4 +CVIF4 4 +MULF4 +ADDRLP4 4+8 +INDIRF4 +CNSTF4 1098907648 +SUBF4 +DIVF4 +CVFI4 4 +ASGNI4 +line 2170 +;2170: if (pos < 0) { +ADDRLP4 20 +INDIRI4 +CNSTI4 0 +GEI4 $1051 +line 2171 +;2171: pos = 0; +ADDRLP4 20 +CNSTI4 0 +ASGNI4 +line 2172 +;2172: } +ADDRGP4 $1052 +JUMPV +LABELV $1051 +line 2173 +;2173: else if (pos > max) { +ADDRLP4 20 +INDIRI4 +ADDRLP4 24 +INDIRI4 +LEI4 $1053 +line 2174 +;2174: pos = max; +ADDRLP4 20 +ADDRLP4 24 +INDIRI4 +ASGNI4 +line 2175 +;2175: } +LABELV $1053 +LABELV $1052 +line 2176 +;2176: listPtr->startPos = pos; +ADDRLP4 28 +INDIRP4 +ADDRLP4 20 +INDIRI4 +ASGNI4 +line 2177 +;2177: si->xStart = DC->cursorx; +ADDRLP4 0 +INDIRP4 +CNSTI4 16 +ADDP4 +ADDRGP4 DC +INDIRP4 +CNSTI4 216 +ADDP4 +INDIRI4 +CVIF4 4 +ASGNF4 +line 2178 +;2178: } +ADDRGP4 $1044 +JUMPV +LABELV $1043 +line 2179 +;2179: else if (DC->cursory != si->yStart) { +ADDRGP4 DC +INDIRP4 +CNSTI4 220 +ADDP4 +INDIRI4 +CVIF4 4 +ADDRLP4 0 +INDIRP4 +CNSTI4 20 +ADDP4 +INDIRF4 +EQF4 $1055 +line 2181 +;2180: +;2181: r.x = si->item->window.rect.x + si->item->window.rect.w - SCROLLBAR_SIZE - 1; +ADDRLP4 32 +ADDRLP4 0 +INDIRP4 +CNSTI4 24 +ADDP4 +INDIRP4 +ASGNP4 +ADDRLP4 4 +ADDRLP4 32 +INDIRP4 +INDIRF4 +ADDRLP4 32 +INDIRP4 +CNSTI4 8 +ADDP4 +INDIRF4 +ADDF4 +CNSTF4 1098907648 +SUBF4 +CNSTF4 1065353216 +SUBF4 +ASGNF4 +line 2182 +;2182: r.y = si->item->window.rect.y + SCROLLBAR_SIZE + 1; +ADDRLP4 4+4 +ADDRLP4 0 +INDIRP4 +CNSTI4 24 +ADDP4 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRF4 +CNSTF4 1098907648 +ADDF4 +CNSTF4 1065353216 +ADDF4 +ASGNF4 +line 2183 +;2183: r.h = si->item->window.rect.h - (SCROLLBAR_SIZE*2) - 2; +ADDRLP4 4+12 +ADDRLP4 0 +INDIRP4 +CNSTI4 24 +ADDP4 +INDIRP4 +CNSTI4 12 +ADDP4 +INDIRF4 +CNSTF4 1107296256 +SUBF4 +CNSTF4 1073741824 +SUBF4 +ASGNF4 +line 2184 +;2184: r.w = SCROLLBAR_SIZE; +ADDRLP4 4+8 +CNSTF4 1098907648 +ASGNF4 +line 2185 +;2185: max = Item_ListBox_MaxScroll(si->item); +ADDRLP4 0 +INDIRP4 +CNSTI4 24 +ADDP4 +INDIRP4 +ARGP4 +ADDRLP4 36 +ADDRGP4 Item_ListBox_MaxScroll +CALLI4 +ASGNI4 +ADDRLP4 24 +ADDRLP4 36 +INDIRI4 +ASGNI4 +line 2187 +;2186: // +;2187: pos = (DC->cursory - r.y - SCROLLBAR_SIZE/2) * max / (r.h - SCROLLBAR_SIZE); +ADDRLP4 20 +ADDRGP4 DC +INDIRP4 +CNSTI4 220 +ADDP4 +INDIRI4 +CVIF4 4 +ADDRLP4 4+4 +INDIRF4 +SUBF4 +CNSTF4 1090519040 +SUBF4 +ADDRLP4 24 +INDIRI4 +CVIF4 4 +MULF4 +ADDRLP4 4+12 +INDIRF4 +CNSTF4 1098907648 +SUBF4 +DIVF4 +CVFI4 4 +ASGNI4 +line 2188 +;2188: if (pos < 0) { +ADDRLP4 20 +INDIRI4 +CNSTI4 0 +GEI4 $1062 +line 2189 +;2189: pos = 0; +ADDRLP4 20 +CNSTI4 0 +ASGNI4 +line 2190 +;2190: } +ADDRGP4 $1063 +JUMPV +LABELV $1062 +line 2191 +;2191: else if (pos > max) { +ADDRLP4 20 +INDIRI4 +ADDRLP4 24 +INDIRI4 +LEI4 $1064 +line 2192 +;2192: pos = max; +ADDRLP4 20 +ADDRLP4 24 +INDIRI4 +ASGNI4 +line 2193 +;2193: } +LABELV $1064 +LABELV $1063 +line 2194 +;2194: listPtr->startPos = pos; +ADDRLP4 28 +INDIRP4 +ADDRLP4 20 +INDIRI4 +ASGNI4 +line 2195 +;2195: si->yStart = DC->cursory; +ADDRLP4 0 +INDIRP4 +CNSTI4 20 +ADDP4 +ADDRGP4 DC +INDIRP4 +CNSTI4 220 +ADDP4 +INDIRI4 +CVIF4 4 +ASGNF4 +line 2196 +;2196: } +LABELV $1055 +LABELV $1044 +line 2198 +;2197: +;2198: if (DC->realTime > si->nextScrollTime) { +ADDRGP4 DC +INDIRP4 +CNSTI4 208 +ADDP4 +INDIRI4 +ADDRLP4 0 +INDIRP4 +INDIRI4 +LEI4 $1066 +line 2202 +;2199: // need to scroll which is done by simulating a click to the item +;2200: // this is done a bit sideways as the autoscroll "knows" that the item is a listbox +;2201: // so it calls it directly +;2202: Item_ListBox_HandleKey(si->item, si->scrollKey, qtrue, qfalse); +ADDRLP4 0 +INDIRP4 +CNSTI4 24 +ADDP4 +INDIRP4 +ARGP4 +ADDRLP4 0 +INDIRP4 +CNSTI4 12 +ADDP4 +INDIRI4 +ARGI4 +CNSTI4 1 +ARGI4 +CNSTI4 0 +ARGI4 +ADDRGP4 Item_ListBox_HandleKey +CALLI4 +pop +line 2203 +;2203: si->nextScrollTime = DC->realTime + si->adjustValue; +ADDRLP4 0 +INDIRP4 +ADDRGP4 DC +INDIRP4 +CNSTI4 208 +ADDP4 +INDIRI4 +ADDRLP4 0 +INDIRP4 +CNSTI4 8 +ADDP4 +INDIRI4 +ADDI4 +ASGNI4 +line 2204 +;2204: } +LABELV $1066 +line 2206 +;2205: +;2206: if (DC->realTime > si->nextAdjustTime) { +ADDRGP4 DC +INDIRP4 +CNSTI4 208 +ADDP4 +INDIRI4 +ADDRLP4 0 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRI4 +LEI4 $1068 +line 2207 +;2207: si->nextAdjustTime = DC->realTime + SCROLL_TIME_ADJUST; +ADDRLP4 0 +INDIRP4 +CNSTI4 4 +ADDP4 +ADDRGP4 DC +INDIRP4 +CNSTI4 208 +ADDP4 +INDIRI4 +CNSTI4 150 +ADDI4 +ASGNI4 +line 2208 +;2208: if (si->adjustValue > SCROLL_TIME_FLOOR) { +ADDRLP4 0 +INDIRP4 +CNSTI4 8 +ADDP4 +INDIRI4 +CNSTI4 20 +LEI4 $1070 +line 2209 +;2209: si->adjustValue -= SCROLL_TIME_ADJUSTOFFSET; +ADDRLP4 32 +ADDRLP4 0 +INDIRP4 +CNSTI4 8 +ADDP4 +ASGNP4 +ADDRLP4 32 +INDIRP4 +ADDRLP4 32 +INDIRP4 +INDIRI4 +CNSTI4 40 +SUBI4 +ASGNI4 +line 2210 +;2210: } +LABELV $1070 +line 2211 +;2211: } +LABELV $1068 +line 2212 +;2212:} +LABELV $1042 +endproc Scroll_ListBox_ThumbFunc 40 16 +proc Scroll_Slider_ThumbFunc 28 8 +line 2214 +;2213: +;2214:static void Scroll_Slider_ThumbFunc(void *p) { +line 2216 +;2215: float x, value, cursorx; +;2216: scrollInfo_t *si = (scrollInfo_t*)p; +ADDRLP4 0 +ADDRFP4 0 +INDIRP4 +ASGNP4 +line 2217 +;2217: editFieldDef_t *editDef = si->item->typeData; +ADDRLP4 16 +ADDRLP4 0 +INDIRP4 +CNSTI4 24 +ADDP4 +INDIRP4 +CNSTI4 536 +ADDP4 +INDIRP4 +ASGNP4 +line 2219 +;2218: +;2219: if (si->item->text) { +ADDRLP4 0 +INDIRP4 +CNSTI4 24 +ADDP4 +INDIRP4 +CNSTI4 224 +ADDP4 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $1073 +line 2220 +;2220: x = si->item->textRect.x + si->item->textRect.w + 8; +ADDRLP4 20 +ADDRLP4 0 +INDIRP4 +CNSTI4 24 +ADDP4 +INDIRP4 +ASGNP4 +ADDRLP4 8 +ADDRLP4 20 +INDIRP4 +CNSTI4 180 +ADDP4 +INDIRF4 +ADDRLP4 20 +INDIRP4 +CNSTI4 188 +ADDP4 +INDIRF4 +ADDF4 +CNSTF4 1090519040 +ADDF4 +ASGNF4 +line 2221 +;2221: } else { +ADDRGP4 $1074 +JUMPV +LABELV $1073 +line 2222 +;2222: x = si->item->window.rect.x; +ADDRLP4 8 +ADDRLP4 0 +INDIRP4 +CNSTI4 24 +ADDP4 +INDIRP4 +INDIRF4 +ASGNF4 +line 2223 +;2223: } +LABELV $1074 +line 2225 +;2224: +;2225: cursorx = DC->cursorx; +ADDRLP4 12 +ADDRGP4 DC +INDIRP4 +CNSTI4 216 +ADDP4 +INDIRI4 +CVIF4 4 +ASGNF4 +line 2227 +;2226: +;2227: if (cursorx < x) { +ADDRLP4 12 +INDIRF4 +ADDRLP4 8 +INDIRF4 +GEF4 $1075 +line 2228 +;2228: cursorx = x; +ADDRLP4 12 +ADDRLP4 8 +INDIRF4 +ASGNF4 +line 2229 +;2229: } else if (cursorx > x + SLIDER_WIDTH) { +ADDRGP4 $1076 +JUMPV +LABELV $1075 +ADDRLP4 12 +INDIRF4 +ADDRLP4 8 +INDIRF4 +CNSTF4 1119879168 +ADDF4 +LEF4 $1077 +line 2230 +;2230: cursorx = x + SLIDER_WIDTH; +ADDRLP4 12 +ADDRLP4 8 +INDIRF4 +CNSTF4 1119879168 +ADDF4 +ASGNF4 +line 2231 +;2231: } +LABELV $1077 +LABELV $1076 +line 2232 +;2232: value = cursorx - x; +ADDRLP4 4 +ADDRLP4 12 +INDIRF4 +ADDRLP4 8 +INDIRF4 +SUBF4 +ASGNF4 +line 2233 +;2233: value /= SLIDER_WIDTH; +ADDRLP4 4 +ADDRLP4 4 +INDIRF4 +CNSTF4 1119879168 +DIVF4 +ASGNF4 +line 2234 +;2234: value *= (editDef->maxVal - editDef->minVal); +ADDRLP4 4 +ADDRLP4 4 +INDIRF4 +ADDRLP4 16 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRF4 +ADDRLP4 16 +INDIRP4 +INDIRF4 +SUBF4 +MULF4 +ASGNF4 +line 2235 +;2235: value += editDef->minVal; +ADDRLP4 4 +ADDRLP4 4 +INDIRF4 +ADDRLP4 16 +INDIRP4 +INDIRF4 +ADDF4 +ASGNF4 +line 2236 +;2236: DC->setCVar(si->item->cvar, va("%f", value)); +ADDRGP4 $949 +ARGP4 +ADDRLP4 4 +INDIRF4 +ARGF4 +ADDRLP4 24 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRLP4 0 +INDIRP4 +CNSTI4 24 +ADDP4 +INDIRP4 +CNSTI4 264 +ADDP4 +INDIRP4 +ARGP4 +ADDRLP4 24 +INDIRP4 +ARGP4 +ADDRGP4 DC +INDIRP4 +CNSTI4 96 +ADDP4 +INDIRP4 +CALLV +pop +line 2237 +;2237:} +LABELV $1072 +endproc Scroll_Slider_ThumbFunc 28 8 +export Item_StartCapture +proc Item_StartCapture 24 12 +line 2239 +;2238: +;2239:void Item_StartCapture(itemDef_t *item, int key) { +line 2241 +;2240: int flags; +;2241: switch (item->type) { +ADDRLP4 4 +ADDRFP4 0 +INDIRP4 +CNSTI4 196 +ADDP4 +INDIRI4 +ASGNI4 +ADDRLP4 4 +INDIRI4 +CNSTI4 4 +LTI4 $1080 +ADDRLP4 4 +INDIRI4 +CNSTI4 10 +GTI4 $1080 +ADDRLP4 4 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 $1107-16 +ADDP4 +INDIRP4 +JUMPV +lit +align 4 +LABELV $1107 +address $1083 +address $1080 +address $1083 +address $1080 +address $1080 +address $1083 +address $1100 +code +LABELV $1083 +line 2246 +;2242: case ITEM_TYPE_EDITFIELD: +;2243: case ITEM_TYPE_NUMERICFIELD: +;2244: +;2245: case ITEM_TYPE_LISTBOX: +;2246: { +line 2247 +;2247: flags = Item_ListBox_OverLB(item, DC->cursorx, DC->cursory); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRLP4 12 +ADDRGP4 DC +INDIRP4 +ASGNP4 +ADDRLP4 12 +INDIRP4 +CNSTI4 216 +ADDP4 +INDIRI4 +CVIF4 4 +ARGF4 +ADDRLP4 12 +INDIRP4 +CNSTI4 220 +ADDP4 +INDIRI4 +CVIF4 4 +ARGF4 +ADDRLP4 16 +ADDRGP4 Item_ListBox_OverLB +CALLI4 +ASGNI4 +ADDRLP4 0 +ADDRLP4 16 +INDIRI4 +ASGNI4 +line 2248 +;2248: if (flags & (WINDOW_LB_LEFTARROW | WINDOW_LB_RIGHTARROW)) { +ADDRLP4 0 +INDIRI4 +CNSTI4 6144 +BANDI4 +CNSTI4 0 +EQI4 $1084 +line 2249 +;2249: scrollInfo.nextScrollTime = DC->realTime + SCROLL_TIME_START; +ADDRGP4 scrollInfo +ADDRGP4 DC +INDIRP4 +CNSTI4 208 +ADDP4 +INDIRI4 +CNSTI4 500 +ADDI4 +ASGNI4 +line 2250 +;2250: scrollInfo.nextAdjustTime = DC->realTime + SCROLL_TIME_ADJUST; +ADDRGP4 scrollInfo+4 +ADDRGP4 DC +INDIRP4 +CNSTI4 208 +ADDP4 +INDIRI4 +CNSTI4 150 +ADDI4 +ASGNI4 +line 2251 +;2251: scrollInfo.adjustValue = SCROLL_TIME_START; +ADDRGP4 scrollInfo+8 +CNSTI4 500 +ASGNI4 +line 2252 +;2252: scrollInfo.scrollKey = key; +ADDRGP4 scrollInfo+12 +ADDRFP4 4 +INDIRI4 +ASGNI4 +line 2253 +;2253: scrollInfo.scrollDir = (flags & WINDOW_LB_LEFTARROW) ? qtrue : qfalse; +ADDRLP4 0 +INDIRI4 +CNSTI4 2048 +BANDI4 +CNSTI4 0 +EQI4 $1091 +ADDRLP4 20 +CNSTI4 1 +ASGNI4 +ADDRGP4 $1092 +JUMPV +LABELV $1091 +ADDRLP4 20 +CNSTI4 0 +ASGNI4 +LABELV $1092 +ADDRGP4 scrollInfo+28 +ADDRLP4 20 +INDIRI4 +ASGNI4 +line 2254 +;2254: scrollInfo.item = item; +ADDRGP4 scrollInfo+24 +ADDRFP4 0 +INDIRP4 +ASGNP4 +line 2255 +;2255: captureData = &scrollInfo; +ADDRGP4 captureData +ADDRGP4 scrollInfo +ASGNP4 +line 2256 +;2256: captureFunc = &Scroll_ListBox_AutoFunc; +ADDRGP4 captureFunc +ADDRGP4 Scroll_ListBox_AutoFunc +ASGNP4 +line 2257 +;2257: itemCapture = item; +ADDRGP4 itemCapture +ADDRFP4 0 +INDIRP4 +ASGNP4 +line 2258 +;2258: } else if (flags & WINDOW_LB_THUMB) { +ADDRGP4 $1081 +JUMPV +LABELV $1084 +ADDRLP4 0 +INDIRI4 +CNSTI4 8192 +BANDI4 +CNSTI4 0 +EQI4 $1081 +line 2259 +;2259: scrollInfo.scrollKey = key; +ADDRGP4 scrollInfo+12 +ADDRFP4 4 +INDIRI4 +ASGNI4 +line 2260 +;2260: scrollInfo.item = item; +ADDRGP4 scrollInfo+24 +ADDRFP4 0 +INDIRP4 +ASGNP4 +line 2261 +;2261: scrollInfo.xStart = DC->cursorx; +ADDRGP4 scrollInfo+16 +ADDRGP4 DC +INDIRP4 +CNSTI4 216 +ADDP4 +INDIRI4 +CVIF4 4 +ASGNF4 +line 2262 +;2262: scrollInfo.yStart = DC->cursory; +ADDRGP4 scrollInfo+20 +ADDRGP4 DC +INDIRP4 +CNSTI4 220 +ADDP4 +INDIRI4 +CVIF4 4 +ASGNF4 +line 2263 +;2263: captureData = &scrollInfo; +ADDRGP4 captureData +ADDRGP4 scrollInfo +ASGNP4 +line 2264 +;2264: captureFunc = &Scroll_ListBox_ThumbFunc; +ADDRGP4 captureFunc +ADDRGP4 Scroll_ListBox_ThumbFunc +ASGNP4 +line 2265 +;2265: itemCapture = item; +ADDRGP4 itemCapture +ADDRFP4 0 +INDIRP4 +ASGNP4 +line 2266 +;2266: } +line 2267 +;2267: break; +ADDRGP4 $1081 +JUMPV +LABELV $1100 +line 2270 +;2268: } +;2269: case ITEM_TYPE_SLIDER: +;2270: { +line 2271 +;2271: flags = Item_Slider_OverSlider(item, DC->cursorx, DC->cursory); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRLP4 12 +ADDRGP4 DC +INDIRP4 +ASGNP4 +ADDRLP4 12 +INDIRP4 +CNSTI4 216 +ADDP4 +INDIRI4 +CVIF4 4 +ARGF4 +ADDRLP4 12 +INDIRP4 +CNSTI4 220 +ADDP4 +INDIRI4 +CVIF4 4 +ARGF4 +ADDRLP4 16 +ADDRGP4 Item_Slider_OverSlider +CALLI4 +ASGNI4 +ADDRLP4 0 +ADDRLP4 16 +INDIRI4 +ASGNI4 +line 2272 +;2272: if (flags & WINDOW_LB_THUMB) { +ADDRLP4 0 +INDIRI4 +CNSTI4 8192 +BANDI4 +CNSTI4 0 +EQI4 $1081 +line 2273 +;2273: scrollInfo.scrollKey = key; +ADDRGP4 scrollInfo+12 +ADDRFP4 4 +INDIRI4 +ASGNI4 +line 2274 +;2274: scrollInfo.item = item; +ADDRGP4 scrollInfo+24 +ADDRFP4 0 +INDIRP4 +ASGNP4 +line 2275 +;2275: scrollInfo.xStart = DC->cursorx; +ADDRGP4 scrollInfo+16 +ADDRGP4 DC +INDIRP4 +CNSTI4 216 +ADDP4 +INDIRI4 +CVIF4 4 +ASGNF4 +line 2276 +;2276: scrollInfo.yStart = DC->cursory; +ADDRGP4 scrollInfo+20 +ADDRGP4 DC +INDIRP4 +CNSTI4 220 +ADDP4 +INDIRI4 +CVIF4 4 +ASGNF4 +line 2277 +;2277: captureData = &scrollInfo; +ADDRGP4 captureData +ADDRGP4 scrollInfo +ASGNP4 +line 2278 +;2278: captureFunc = &Scroll_Slider_ThumbFunc; +ADDRGP4 captureFunc +ADDRGP4 Scroll_Slider_ThumbFunc +ASGNP4 +line 2279 +;2279: itemCapture = item; +ADDRGP4 itemCapture +ADDRFP4 0 +INDIRP4 +ASGNP4 +line 2280 +;2280: } +line 2281 +;2281: break; +LABELV $1080 +LABELV $1081 +line 2284 +;2282: } +;2283: } +;2284:} +LABELV $1079 +endproc Item_StartCapture 24 12 +export Item_StopCapture +proc Item_StopCapture 0 0 +line 2286 +;2285: +;2286:void Item_StopCapture(itemDef_t *item) { +line 2288 +;2287: +;2288:} +LABELV $1109 +endproc Item_StopCapture 0 0 +export Item_Slider_HandleKey +proc Item_Slider_HandleKey 68 12 +line 2290 +;2289: +;2290:qboolean Item_Slider_HandleKey(itemDef_t *item, int key, qboolean down) { +line 2294 +;2291: float x, value, width, work; +;2292: +;2293: //DC->Print("slider handle key\n"); +;2294: if (item->window.flags & WINDOW_HASFOCUS && item->cvar && Rect_ContainsPoint(&item->window.rect, DC->cursorx, DC->cursory)) { +ADDRLP4 16 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 16 +INDIRP4 +CNSTI4 68 +ADDP4 +INDIRI4 +CNSTI4 2 +BANDI4 +CNSTI4 0 +EQI4 $1111 +ADDRLP4 16 +INDIRP4 +CNSTI4 264 +ADDP4 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $1111 +ADDRLP4 16 +INDIRP4 +ARGP4 +ADDRLP4 20 +ADDRGP4 DC +INDIRP4 +ASGNP4 +ADDRLP4 20 +INDIRP4 +CNSTI4 216 +ADDP4 +INDIRI4 +CVIF4 4 +ARGF4 +ADDRLP4 20 +INDIRP4 +CNSTI4 220 +ADDP4 +INDIRI4 +CVIF4 4 +ARGF4 +ADDRLP4 24 +ADDRGP4 Rect_ContainsPoint +CALLI4 +ASGNI4 +ADDRLP4 24 +INDIRI4 +CNSTI4 0 +EQI4 $1111 +line 2295 +;2295: if (key == K_MOUSE1 || key == K_ENTER || key == K_MOUSE2 || key == K_MOUSE3) { +ADDRLP4 28 +ADDRFP4 4 +INDIRI4 +ASGNI4 +ADDRLP4 28 +INDIRI4 +CNSTI4 178 +EQI4 $1117 +ADDRLP4 28 +INDIRI4 +CNSTI4 13 +EQI4 $1117 +ADDRLP4 28 +INDIRI4 +CNSTI4 179 +EQI4 $1117 +ADDRLP4 28 +INDIRI4 +CNSTI4 180 +NEI4 $1113 +LABELV $1117 +line 2296 +;2296: editFieldDef_t *editDef = item->typeData; +ADDRLP4 32 +ADDRFP4 0 +INDIRP4 +CNSTI4 536 +ADDP4 +INDIRP4 +ASGNP4 +line 2297 +;2297: if (editDef) { +ADDRLP4 32 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $1118 +line 2299 +;2298: rectDef_t testRect; +;2299: width = SLIDER_WIDTH; +ADDRLP4 8 +CNSTF4 1119879168 +ASGNF4 +line 2300 +;2300: if (item->text) { +ADDRFP4 0 +INDIRP4 +CNSTI4 224 +ADDP4 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $1120 +line 2301 +;2301: x = item->textRect.x + item->textRect.w + 8; +ADDRLP4 52 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 4 +ADDRLP4 52 +INDIRP4 +CNSTI4 180 +ADDP4 +INDIRF4 +ADDRLP4 52 +INDIRP4 +CNSTI4 188 +ADDP4 +INDIRF4 +ADDF4 +CNSTF4 1090519040 +ADDF4 +ASGNF4 +line 2302 +;2302: } else { +ADDRGP4 $1121 +JUMPV +LABELV $1120 +line 2303 +;2303: x = item->window.rect.x; +ADDRLP4 4 +ADDRFP4 0 +INDIRP4 +INDIRF4 +ASGNF4 +line 2304 +;2304: } +LABELV $1121 +line 2306 +;2305: +;2306: testRect = item->window.rect; +ADDRLP4 36 +ADDRFP4 0 +INDIRP4 +INDIRB +ASGNB 16 +line 2307 +;2307: testRect.x = x; +ADDRLP4 36 +ADDRLP4 4 +INDIRF4 +ASGNF4 +line 2308 +;2308: value = (float)SLIDER_THUMB_WIDTH / 2; +ADDRLP4 0 +CNSTF4 1086324736 +ASGNF4 +line 2309 +;2309: testRect.x -= value; +ADDRLP4 36 +ADDRLP4 36 +INDIRF4 +ADDRLP4 0 +INDIRF4 +SUBF4 +ASGNF4 +line 2311 +;2310: //DC->Print("slider x: %f\n", testRect.x); +;2311: testRect.w = (SLIDER_WIDTH + (float)SLIDER_THUMB_WIDTH / 2); +ADDRLP4 36+8 +CNSTF4 1120665600 +ASGNF4 +line 2313 +;2312: //DC->Print("slider w: %f\n", testRect.w); +;2313: if (Rect_ContainsPoint(&testRect, DC->cursorx, DC->cursory)) { +ADDRLP4 36 +ARGP4 +ADDRLP4 52 +ADDRGP4 DC +INDIRP4 +ASGNP4 +ADDRLP4 52 +INDIRP4 +CNSTI4 216 +ADDP4 +INDIRI4 +CVIF4 4 +ARGF4 +ADDRLP4 52 +INDIRP4 +CNSTI4 220 +ADDP4 +INDIRI4 +CVIF4 4 +ARGF4 +ADDRLP4 56 +ADDRGP4 Rect_ContainsPoint +CALLI4 +ASGNI4 +ADDRLP4 56 +INDIRI4 +CNSTI4 0 +EQI4 $1123 +line 2314 +;2314: work = DC->cursorx - x; +ADDRLP4 12 +ADDRGP4 DC +INDIRP4 +CNSTI4 216 +ADDP4 +INDIRI4 +CVIF4 4 +ADDRLP4 4 +INDIRF4 +SUBF4 +ASGNF4 +line 2315 +;2315: value = work / width; +ADDRLP4 0 +ADDRLP4 12 +INDIRF4 +ADDRLP4 8 +INDIRF4 +DIVF4 +ASGNF4 +line 2316 +;2316: value *= (editDef->maxVal - editDef->minVal); +ADDRLP4 60 +ADDRLP4 32 +INDIRP4 +ASGNP4 +ADDRLP4 0 +ADDRLP4 0 +INDIRF4 +ADDRLP4 60 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRF4 +ADDRLP4 60 +INDIRP4 +INDIRF4 +SUBF4 +MULF4 +ASGNF4 +line 2319 +;2317: // vm fuckage +;2318: // value = (((float)(DC->cursorx - x)/ SLIDER_WIDTH) * (editDef->maxVal - editDef->minVal)); +;2319: value += editDef->minVal; +ADDRLP4 0 +ADDRLP4 0 +INDIRF4 +ADDRLP4 32 +INDIRP4 +INDIRF4 +ADDF4 +ASGNF4 +line 2320 +;2320: DC->setCVar(item->cvar, va("%f", value)); +ADDRGP4 $949 +ARGP4 +ADDRLP4 0 +INDIRF4 +ARGF4 +ADDRLP4 64 +ADDRGP4 va +CALLP4 +ASGNP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 264 +ADDP4 +INDIRP4 +ARGP4 +ADDRLP4 64 +INDIRP4 +ARGP4 +ADDRGP4 DC +INDIRP4 +CNSTI4 96 +ADDP4 +INDIRP4 +CALLV +pop +line 2321 +;2321: return qtrue; +CNSTI4 1 +RETI4 +ADDRGP4 $1110 +JUMPV +LABELV $1123 +line 2323 +;2322: } +;2323: } +LABELV $1118 +line 2324 +;2324: } +LABELV $1113 +line 2325 +;2325: } +LABELV $1111 +line 2326 +;2326: DC->Print("slider handle key exit\n"); +ADDRGP4 $1125 +ARGP4 +ADDRGP4 DC +INDIRP4 +CNSTI4 156 +ADDP4 +INDIRP4 +CALLV +pop +line 2327 +;2327: return qfalse; +CNSTI4 0 +RETI4 +LABELV $1110 +endproc Item_Slider_HandleKey 68 12 +export Item_HandleKey +proc Item_HandleKey 32 16 +line 2331 +;2328:} +;2329: +;2330: +;2331:qboolean Item_HandleKey(itemDef_t *item, int key, qboolean down) { +line 2333 +;2332: +;2333: if (itemCapture) { +ADDRGP4 itemCapture +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $1127 +line 2334 +;2334: Item_StopCapture(itemCapture); +ADDRGP4 itemCapture +INDIRP4 +ARGP4 +ADDRGP4 Item_StopCapture +CALLV +pop +line 2335 +;2335: itemCapture = NULL; +ADDRGP4 itemCapture +CNSTP4 0 +ASGNP4 +line 2336 +;2336: captureFunc = NULL; +ADDRGP4 captureFunc +CNSTP4 0 +ASGNP4 +line 2337 +;2337: captureData = NULL; +ADDRGP4 captureData +CNSTP4 0 +ASGNP4 +line 2338 +;2338: } else { +ADDRGP4 $1128 +JUMPV +LABELV $1127 +line 2340 +;2339: // bk001206 - parentheses +;2340: if ( down && ( key == K_MOUSE1 || key == K_MOUSE2 || key == K_MOUSE3 ) ) { +ADDRFP4 8 +INDIRI4 +CNSTI4 0 +EQI4 $1129 +ADDRLP4 0 +ADDRFP4 4 +INDIRI4 +ASGNI4 +ADDRLP4 0 +INDIRI4 +CNSTI4 178 +EQI4 $1132 +ADDRLP4 0 +INDIRI4 +CNSTI4 179 +EQI4 $1132 +ADDRLP4 0 +INDIRI4 +CNSTI4 180 +NEI4 $1129 +LABELV $1132 +line 2341 +;2341: Item_StartCapture(item, key); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRFP4 4 +INDIRI4 +ARGI4 +ADDRGP4 Item_StartCapture +CALLV +pop +line 2342 +;2342: } +LABELV $1129 +line 2343 +;2343: } +LABELV $1128 +line 2345 +;2344: +;2345: if (!down) { +ADDRFP4 8 +INDIRI4 +CNSTI4 0 +NEI4 $1133 +line 2346 +;2346: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $1126 +JUMPV +LABELV $1133 +line 2349 +;2347: } +;2348: +;2349: switch (item->type) { +ADDRLP4 0 +ADDRFP4 0 +INDIRP4 +CNSTI4 196 +ADDP4 +INDIRI4 +ASGNI4 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +LTI4 $1135 +ADDRLP4 0 +INDIRI4 +CNSTI4 13 +GTI4 $1135 +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 $1149-4 +ADDP4 +INDIRP4 +JUMPV +lit +align 4 +LABELV $1149 +address $1138 +address $1139 +address $1140 +address $1141 +address $1142 +address $1143 +address $1135 +address $1146 +address $1141 +address $1148 +address $1144 +address $1145 +address $1147 +code +LABELV $1138 +line 2351 +;2350: case ITEM_TYPE_BUTTON: +;2351: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $1126 +JUMPV +line 2352 +;2352: break; +LABELV $1139 +line 2354 +;2353: case ITEM_TYPE_RADIOBUTTON: +;2354: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $1126 +JUMPV +line 2355 +;2355: break; +LABELV $1140 +line 2357 +;2356: case ITEM_TYPE_CHECKBOX: +;2357: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $1126 +JUMPV +line 2358 +;2358: break; +LABELV $1141 +line 2362 +;2359: case ITEM_TYPE_EDITFIELD: +;2360: case ITEM_TYPE_NUMERICFIELD: +;2361: //return Item_TextField_HandleKey(item, key); +;2362: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $1126 +JUMPV +line 2363 +;2363: break; +LABELV $1142 +line 2365 +;2364: case ITEM_TYPE_COMBO: +;2365: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $1126 +JUMPV +line 2366 +;2366: break; +LABELV $1143 +line 2368 +;2367: case ITEM_TYPE_LISTBOX: +;2368: return Item_ListBox_HandleKey(item, key, down, qfalse); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRFP4 4 +INDIRI4 +ARGI4 +ADDRFP4 8 +INDIRI4 +ARGI4 +CNSTI4 0 +ARGI4 +ADDRLP4 8 +ADDRGP4 Item_ListBox_HandleKey +CALLI4 +ASGNI4 +ADDRLP4 8 +INDIRI4 +RETI4 +ADDRGP4 $1126 +JUMPV +line 2369 +;2369: break; +LABELV $1144 +line 2371 +;2370: case ITEM_TYPE_YESNO: +;2371: return Item_YesNo_HandleKey(item, key); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRFP4 4 +INDIRI4 +ARGI4 +ADDRLP4 12 +ADDRGP4 Item_YesNo_HandleKey +CALLI4 +ASGNI4 +ADDRLP4 12 +INDIRI4 +RETI4 +ADDRGP4 $1126 +JUMPV +line 2372 +;2372: break; +LABELV $1145 +line 2374 +;2373: case ITEM_TYPE_MULTI: +;2374: return Item_Multi_HandleKey(item, key); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRFP4 4 +INDIRI4 +ARGI4 +ADDRLP4 16 +ADDRGP4 Item_Multi_HandleKey +CALLI4 +ASGNI4 +ADDRLP4 16 +INDIRI4 +RETI4 +ADDRGP4 $1126 +JUMPV +line 2375 +;2375: break; +LABELV $1146 +line 2377 +;2376: case ITEM_TYPE_OWNERDRAW: +;2377: return Item_OwnerDraw_HandleKey(item, key); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRFP4 4 +INDIRI4 +ARGI4 +ADDRLP4 20 +ADDRGP4 Item_OwnerDraw_HandleKey +CALLI4 +ASGNI4 +ADDRLP4 20 +INDIRI4 +RETI4 +ADDRGP4 $1126 +JUMPV +line 2378 +;2378: break; +LABELV $1147 +line 2380 +;2379: case ITEM_TYPE_BIND: +;2380: return Item_Bind_HandleKey(item, key, down); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRFP4 4 +INDIRI4 +ARGI4 +ADDRFP4 8 +INDIRI4 +ARGI4 +ADDRLP4 24 +ADDRGP4 Item_Bind_HandleKey +CALLI4 +ASGNI4 +ADDRLP4 24 +INDIRI4 +RETI4 +ADDRGP4 $1126 +JUMPV +line 2381 +;2381: break; +LABELV $1148 +line 2383 +;2382: case ITEM_TYPE_SLIDER: +;2383: return Item_Slider_HandleKey(item, key, down); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRFP4 4 +INDIRI4 +ARGI4 +ADDRFP4 8 +INDIRI4 +ARGI4 +ADDRLP4 28 +ADDRGP4 Item_Slider_HandleKey +CALLI4 +ASGNI4 +ADDRLP4 28 +INDIRI4 +RETI4 +ADDRGP4 $1126 +JUMPV +line 2384 +;2384: break; +LABELV $1135 +line 2389 +;2385: //case ITEM_TYPE_IMAGE: +;2386: // Item_Image_Paint(item); +;2387: // break; +;2388: default: +;2389: return qfalse; +CNSTI4 0 +RETI4 +line 2390 +;2390: break; +LABELV $1126 +endproc Item_HandleKey 32 16 +export Item_Action +proc Item_Action 4 8 +line 2396 +;2391: } +;2392: +;2393: //return qfalse; +;2394:} +;2395: +;2396:void Item_Action(itemDef_t *item) { +line 2397 +;2397: if (item) { +ADDRFP4 0 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $1152 +line 2398 +;2398: Item_RunScript(item, item->action); +ADDRLP4 0 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 0 +INDIRP4 +ARGP4 +ADDRLP4 0 +INDIRP4 +CNSTI4 252 +ADDP4 +INDIRP4 +ARGP4 +ADDRGP4 Item_RunScript +CALLV +pop +line 2399 +;2399: } +LABELV $1152 +line 2400 +;2400:} +LABELV $1151 +endproc Item_Action 4 8 +export Menu_SetPrevCursorItem +proc Menu_SetPrevCursorItem 44 12 +line 2402 +;2401: +;2402:itemDef_t *Menu_SetPrevCursorItem(menuDef_t *menu) { +line 2403 +;2403: qboolean wrapped = qfalse; +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +line 2404 +;2404: int oldCursor = menu->cursorItem; +ADDRLP4 4 +ADDRFP4 0 +INDIRP4 +CNSTI4 196 +ADDP4 +INDIRI4 +ASGNI4 +line 2406 +;2405: +;2406: if (menu->cursorItem < 0) { +ADDRFP4 0 +INDIRP4 +CNSTI4 196 +ADDP4 +INDIRI4 +CNSTI4 0 +GEI4 $1158 +line 2407 +;2407: menu->cursorItem = menu->itemCount-1; +ADDRLP4 8 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 8 +INDIRP4 +CNSTI4 196 +ADDP4 +ADDRLP4 8 +INDIRP4 +CNSTI4 188 +ADDP4 +INDIRI4 +CNSTI4 1 +SUBI4 +ASGNI4 +line 2408 +;2408: wrapped = qtrue; +ADDRLP4 0 +CNSTI4 1 +ASGNI4 +line 2409 +;2409: } +ADDRGP4 $1158 +JUMPV +LABELV $1157 +line 2411 +;2410: +;2411: while (menu->cursorItem > -1) { +line 2413 +;2412: +;2413: menu->cursorItem--; +ADDRLP4 8 +ADDRFP4 0 +INDIRP4 +CNSTI4 196 +ADDP4 +ASGNP4 +ADDRLP4 8 +INDIRP4 +ADDRLP4 8 +INDIRP4 +INDIRI4 +CNSTI4 1 +SUBI4 +ASGNI4 +line 2414 +;2414: if (menu->cursorItem < 0 && !wrapped) { +ADDRLP4 12 +CNSTI4 0 +ASGNI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 196 +ADDP4 +INDIRI4 +ADDRLP4 12 +INDIRI4 +GEI4 $1160 +ADDRLP4 0 +INDIRI4 +ADDRLP4 12 +INDIRI4 +NEI4 $1160 +line 2415 +;2415: wrapped = qtrue; +ADDRLP4 0 +CNSTI4 1 +ASGNI4 +line 2416 +;2416: menu->cursorItem = menu->itemCount -1; +ADDRLP4 16 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 16 +INDIRP4 +CNSTI4 196 +ADDP4 +ADDRLP4 16 +INDIRP4 +CNSTI4 188 +ADDP4 +INDIRI4 +CNSTI4 1 +SUBI4 +ASGNI4 +line 2417 +;2417: } +LABELV $1160 +line 2419 +;2418: +;2419: if (Item_SetFocus(menu->items[menu->cursorItem], DC->cursorx, DC->cursory)) { +ADDRLP4 16 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 16 +INDIRP4 +CNSTI4 196 +ADDP4 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRLP4 16 +INDIRP4 +CNSTI4 260 +ADDP4 +ADDP4 +INDIRP4 +ARGP4 +ADDRLP4 20 +ADDRGP4 DC +INDIRP4 +ASGNP4 +ADDRLP4 20 +INDIRP4 +CNSTI4 216 +ADDP4 +INDIRI4 +CVIF4 4 +ARGF4 +ADDRLP4 20 +INDIRP4 +CNSTI4 220 +ADDP4 +INDIRI4 +CVIF4 4 +ARGF4 +ADDRLP4 24 +ADDRGP4 Item_SetFocus +CALLI4 +ASGNI4 +ADDRLP4 24 +INDIRI4 +CNSTI4 0 +EQI4 $1162 +line 2420 +;2420: Menu_HandleMouseMove(menu, menu->items[menu->cursorItem]->window.rect.x + 1, menu->items[menu->cursorItem]->window.rect.y + 1); +ADDRLP4 28 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 28 +INDIRP4 +ARGP4 +ADDRLP4 32 +ADDRLP4 28 +INDIRP4 +CNSTI4 196 +ADDP4 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRLP4 28 +INDIRP4 +CNSTI4 260 +ADDP4 +ADDP4 +INDIRP4 +ASGNP4 +ADDRLP4 36 +CNSTF4 1065353216 +ASGNF4 +ADDRLP4 32 +INDIRP4 +INDIRF4 +ADDRLP4 36 +INDIRF4 +ADDF4 +ARGF4 +ADDRLP4 32 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRF4 +ADDRLP4 36 +INDIRF4 +ADDF4 +ARGF4 +ADDRGP4 Menu_HandleMouseMove +CALLV +pop +line 2421 +;2421: return menu->items[menu->cursorItem]; +ADDRLP4 40 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 40 +INDIRP4 +CNSTI4 196 +ADDP4 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRLP4 40 +INDIRP4 +CNSTI4 260 +ADDP4 +ADDP4 +INDIRP4 +RETP4 +ADDRGP4 $1154 +JUMPV +LABELV $1162 +line 2423 +;2422: } +;2423: } +LABELV $1158 +line 2411 +ADDRFP4 0 +INDIRP4 +CNSTI4 196 +ADDP4 +INDIRI4 +CNSTI4 -1 +GTI4 $1157 +line 2424 +;2424: menu->cursorItem = oldCursor; +ADDRFP4 0 +INDIRP4 +CNSTI4 196 +ADDP4 +ADDRLP4 4 +INDIRI4 +ASGNI4 +line 2425 +;2425: return NULL; +CNSTP4 0 +RETP4 +LABELV $1154 +endproc Menu_SetPrevCursorItem 44 12 +export Menu_SetNextCursorItem +proc Menu_SetNextCursorItem 44 12 +line 2429 +;2426: +;2427:} +;2428: +;2429:itemDef_t *Menu_SetNextCursorItem(menuDef_t *menu) { +line 2431 +;2430: +;2431: qboolean wrapped = qfalse; +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +line 2432 +;2432: int oldCursor = menu->cursorItem; +ADDRLP4 4 +ADDRFP4 0 +INDIRP4 +CNSTI4 196 +ADDP4 +INDIRI4 +ASGNI4 +line 2435 +;2433: +;2434: +;2435: if (menu->cursorItem == -1) { +ADDRFP4 0 +INDIRP4 +CNSTI4 196 +ADDP4 +INDIRI4 +CNSTI4 -1 +NEI4 $1168 +line 2436 +;2436: menu->cursorItem = 0; +ADDRFP4 0 +INDIRP4 +CNSTI4 196 +ADDP4 +CNSTI4 0 +ASGNI4 +line 2437 +;2437: wrapped = qtrue; +ADDRLP4 0 +CNSTI4 1 +ASGNI4 +line 2438 +;2438: } +ADDRGP4 $1168 +JUMPV +LABELV $1167 +line 2440 +;2439: +;2440: while (menu->cursorItem < menu->itemCount) { +line 2442 +;2441: +;2442: menu->cursorItem++; +ADDRLP4 8 +ADDRFP4 0 +INDIRP4 +CNSTI4 196 +ADDP4 +ASGNP4 +ADDRLP4 8 +INDIRP4 +ADDRLP4 8 +INDIRP4 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 2443 +;2443: if (menu->cursorItem >= menu->itemCount && !wrapped) { +ADDRLP4 12 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 12 +INDIRP4 +CNSTI4 196 +ADDP4 +INDIRI4 +ADDRLP4 12 +INDIRP4 +CNSTI4 188 +ADDP4 +INDIRI4 +LTI4 $1170 +ADDRLP4 0 +INDIRI4 +CNSTI4 0 +NEI4 $1170 +line 2444 +;2444: wrapped = qtrue; +ADDRLP4 0 +CNSTI4 1 +ASGNI4 +line 2445 +;2445: menu->cursorItem = 0; +ADDRFP4 0 +INDIRP4 +CNSTI4 196 +ADDP4 +CNSTI4 0 +ASGNI4 +line 2446 +;2446: } +LABELV $1170 +line 2447 +;2447: if (Item_SetFocus(menu->items[menu->cursorItem], DC->cursorx, DC->cursory)) { +ADDRLP4 16 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 16 +INDIRP4 +CNSTI4 196 +ADDP4 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRLP4 16 +INDIRP4 +CNSTI4 260 +ADDP4 +ADDP4 +INDIRP4 +ARGP4 +ADDRLP4 20 +ADDRGP4 DC +INDIRP4 +ASGNP4 +ADDRLP4 20 +INDIRP4 +CNSTI4 216 +ADDP4 +INDIRI4 +CVIF4 4 +ARGF4 +ADDRLP4 20 +INDIRP4 +CNSTI4 220 +ADDP4 +INDIRI4 +CVIF4 4 +ARGF4 +ADDRLP4 24 +ADDRGP4 Item_SetFocus +CALLI4 +ASGNI4 +ADDRLP4 24 +INDIRI4 +CNSTI4 0 +EQI4 $1172 +line 2448 +;2448: Menu_HandleMouseMove(menu, menu->items[menu->cursorItem]->window.rect.x + 1, menu->items[menu->cursorItem]->window.rect.y + 1); +ADDRLP4 28 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 28 +INDIRP4 +ARGP4 +ADDRLP4 32 +ADDRLP4 28 +INDIRP4 +CNSTI4 196 +ADDP4 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRLP4 28 +INDIRP4 +CNSTI4 260 +ADDP4 +ADDP4 +INDIRP4 +ASGNP4 +ADDRLP4 36 +CNSTF4 1065353216 +ASGNF4 +ADDRLP4 32 +INDIRP4 +INDIRF4 +ADDRLP4 36 +INDIRF4 +ADDF4 +ARGF4 +ADDRLP4 32 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRF4 +ADDRLP4 36 +INDIRF4 +ADDF4 +ARGF4 +ADDRGP4 Menu_HandleMouseMove +CALLV +pop +line 2449 +;2449: return menu->items[menu->cursorItem]; +ADDRLP4 40 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 40 +INDIRP4 +CNSTI4 196 +ADDP4 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRLP4 40 +INDIRP4 +CNSTI4 260 +ADDP4 +ADDP4 +INDIRP4 +RETP4 +ADDRGP4 $1164 +JUMPV +LABELV $1172 +line 2452 +;2450: } +;2451: +;2452: } +LABELV $1168 +line 2440 +ADDRLP4 8 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 8 +INDIRP4 +CNSTI4 196 +ADDP4 +INDIRI4 +ADDRLP4 8 +INDIRP4 +CNSTI4 188 +ADDP4 +INDIRI4 +LTI4 $1167 +line 2454 +;2453: +;2454: menu->cursorItem = oldCursor; +ADDRFP4 0 +INDIRP4 +CNSTI4 196 +ADDP4 +ADDRLP4 4 +INDIRI4 +ASGNI4 +line 2455 +;2455: return NULL; +CNSTP4 0 +RETP4 +LABELV $1164 +endproc Menu_SetNextCursorItem 44 12 +proc Window_CloseCinematic 4 4 +line 2458 +;2456:} +;2457: +;2458:static void Window_CloseCinematic(windowDef_t *window) { +line 2459 +;2459: if (window->style == WINDOW_STYLE_CINEMATIC && window->cinematic >= 0) { +ADDRLP4 0 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 0 +INDIRP4 +CNSTI4 48 +ADDP4 +INDIRI4 +CNSTI4 5 +NEI4 $1175 +ADDRLP4 0 +INDIRP4 +CNSTI4 44 +ADDP4 +INDIRI4 +CNSTI4 0 +LTI4 $1175 +line 2460 +;2460: DC->stopCinematic(window->cinematic); +ADDRFP4 0 +INDIRP4 +CNSTI4 44 +ADDP4 +INDIRI4 +ARGI4 +ADDRGP4 DC +INDIRP4 +CNSTI4 184 +ADDP4 +INDIRP4 +CALLV +pop +line 2461 +;2461: window->cinematic = -1; +ADDRFP4 0 +INDIRP4 +CNSTI4 44 +ADDP4 +CNSTI4 -1 +ASGNI4 +line 2462 +;2462: } +LABELV $1175 +line 2463 +;2463:} +LABELV $1174 +endproc Window_CloseCinematic 4 4 +proc Menu_CloseCinematics 4 4 +line 2465 +;2464: +;2465:static void Menu_CloseCinematics(menuDef_t *menu) { +line 2466 +;2466: if (menu) { +ADDRFP4 0 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $1178 +line 2468 +;2467: int i; +;2468: Window_CloseCinematic(&menu->window); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRGP4 Window_CloseCinematic +CALLV +pop +line 2469 +;2469: for (i = 0; i < menu->itemCount; i++) { +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +ADDRGP4 $1183 +JUMPV +LABELV $1180 +line 2470 +;2470: Window_CloseCinematic(&menu->items[i]->window); +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 260 +ADDP4 +ADDP4 +INDIRP4 +ARGP4 +ADDRGP4 Window_CloseCinematic +CALLV +pop +line 2471 +;2471: if (menu->items[i]->type == ITEM_TYPE_OWNERDRAW) { +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 260 +ADDP4 +ADDP4 +INDIRP4 +CNSTI4 196 +ADDP4 +INDIRI4 +CNSTI4 8 +NEI4 $1184 +line 2472 +;2472: DC->stopCinematic(0-menu->items[i]->window.ownerDraw); +CNSTI4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 260 +ADDP4 +ADDP4 +INDIRP4 +CNSTI4 56 +ADDP4 +INDIRI4 +SUBI4 +ARGI4 +ADDRGP4 DC +INDIRP4 +CNSTI4 184 +ADDP4 +INDIRP4 +CALLV +pop +line 2473 +;2473: } +LABELV $1184 +line 2474 +;2474: } +LABELV $1181 +line 2469 +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +LABELV $1183 +ADDRLP4 0 +INDIRI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 188 +ADDP4 +INDIRI4 +LTI4 $1180 +line 2475 +;2475: } +LABELV $1178 +line 2476 +;2476:} +LABELV $1177 +endproc Menu_CloseCinematics 4 4 +proc Display_CloseCinematics 4 4 +line 2478 +;2477: +;2478:static void Display_CloseCinematics() { +line 2480 +;2479: int i; +;2480: for (i = 0; i < menuCount; i++) { +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +ADDRGP4 $1190 +JUMPV +LABELV $1187 +line 2481 +;2481: Menu_CloseCinematics(&Menus[i]); +CNSTI4 644 +ADDRLP4 0 +INDIRI4 +MULI4 +ADDRGP4 Menus +ADDP4 +ARGP4 +ADDRGP4 Menu_CloseCinematics +CALLV +pop +line 2482 +;2482: } +LABELV $1188 +line 2480 +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +LABELV $1190 +ADDRLP4 0 +INDIRI4 +ADDRGP4 menuCount +INDIRI4 +LTI4 $1187 +line 2483 +;2483:} +LABELV $1186 +endproc Display_CloseCinematics 4 4 +export Menus_Activate +proc Menus_Activate 544 8 +line 2485 +;2484: +;2485:void Menus_Activate(menuDef_t *menu) { +line 2486 +;2486: menu->window.flags |= (WINDOW_HASFOCUS | WINDOW_VISIBLE); +ADDRLP4 0 +ADDRFP4 0 +INDIRP4 +CNSTI4 68 +ADDP4 +ASGNP4 +ADDRLP4 0 +INDIRP4 +ADDRLP4 0 +INDIRP4 +INDIRI4 +CNSTI4 6 +BORI4 +ASGNI4 +line 2487 +;2487: if (menu->onOpen) { +ADDRFP4 0 +INDIRP4 +CNSTI4 212 +ADDP4 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $1192 +line 2489 +;2488: itemDef_t item; +;2489: item.parent = menu; +ADDRLP4 4+228 +ADDRFP4 0 +INDIRP4 +ASGNP4 +line 2490 +;2490: Item_RunScript(&item, menu->onOpen); +ADDRLP4 4 +ARGP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 212 +ADDP4 +INDIRP4 +ARGP4 +ADDRGP4 Item_RunScript +CALLV +pop +line 2491 +;2491: } +LABELV $1192 +line 2493 +;2492: +;2493: if (menu->soundName && *menu->soundName) { +ADDRLP4 4 +ADDRFP4 0 +INDIRP4 +CNSTI4 224 +ADDP4 +INDIRP4 +ASGNP4 +ADDRLP4 4 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $1195 +ADDRLP4 4 +INDIRP4 +INDIRI1 +CVII4 1 +CNSTI4 0 +EQI4 $1195 +line 2495 +;2494:// DC->stopBackgroundTrack(); // you don't want to do this since it will reset s_rawend +;2495: DC->startBackgroundTrack(menu->soundName, menu->soundName); +ADDRLP4 8 +ADDRFP4 0 +INDIRP4 +CNSTI4 224 +ADDP4 +INDIRP4 +ASGNP4 +ADDRLP4 8 +INDIRP4 +ARGP4 +ADDRLP4 8 +INDIRP4 +ARGP4 +ADDRGP4 DC +INDIRP4 +CNSTI4 172 +ADDP4 +INDIRP4 +CALLV +pop +line 2496 +;2496: } +LABELV $1195 +line 2498 +;2497: +;2498: Display_CloseCinematics(); +ADDRGP4 Display_CloseCinematics +CALLV +pop +line 2500 +;2499: +;2500:} +LABELV $1191 +endproc Menus_Activate 544 8 +export Display_VisibleMenuCount +proc Display_VisibleMenuCount 8 0 +line 2502 +;2501: +;2502:int Display_VisibleMenuCount() { +line 2504 +;2503: int i, count; +;2504: count = 0; +ADDRLP4 4 +CNSTI4 0 +ASGNI4 +line 2505 +;2505: for (i = 0; i < menuCount; i++) { +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +ADDRGP4 $1201 +JUMPV +LABELV $1198 +line 2506 +;2506: if (Menus[i].window.flags & (WINDOW_FORCED | WINDOW_VISIBLE)) { +CNSTI4 644 +ADDRLP4 0 +INDIRI4 +MULI4 +ADDRGP4 Menus+68 +ADDP4 +INDIRI4 +CNSTI4 1048580 +BANDI4 +CNSTI4 0 +EQI4 $1202 +line 2507 +;2507: count++; +ADDRLP4 4 +ADDRLP4 4 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 2508 +;2508: } +LABELV $1202 +line 2509 +;2509: } +LABELV $1199 +line 2505 +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +LABELV $1201 +ADDRLP4 0 +INDIRI4 +ADDRGP4 menuCount +INDIRI4 +LTI4 $1198 +line 2510 +;2510: return count; +ADDRLP4 4 +INDIRI4 +RETI4 +LABELV $1197 +endproc Display_VisibleMenuCount 8 0 +export Menus_HandleOOBClick +proc Menus_HandleOOBClick 24 12 +line 2513 +;2511:} +;2512: +;2513:void Menus_HandleOOBClick(menuDef_t *menu, int key, qboolean down) { +line 2514 +;2514: if (menu) { +ADDRFP4 0 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $1206 +line 2519 +;2515: int i; +;2516: // basically the behaviour we are looking for is if there are windows in the stack.. see if +;2517: // the cursor is within any of them.. if not close them otherwise activate them and pass the +;2518: // key on.. force a mouse move to activate focus and script stuff +;2519: if (down && menu->window.flags & WINDOW_OOB_CLICK) { +ADDRLP4 4 +CNSTI4 0 +ASGNI4 +ADDRFP4 8 +INDIRI4 +ADDRLP4 4 +INDIRI4 +EQI4 $1208 +ADDRFP4 0 +INDIRP4 +CNSTI4 68 +ADDP4 +INDIRI4 +CNSTI4 131072 +BANDI4 +ADDRLP4 4 +INDIRI4 +EQI4 $1208 +line 2520 +;2520: Menu_RunCloseScript(menu); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRGP4 Menu_RunCloseScript +CALLV +pop +line 2521 +;2521: menu->window.flags &= ~(WINDOW_HASFOCUS | WINDOW_VISIBLE); +ADDRLP4 8 +ADDRFP4 0 +INDIRP4 +CNSTI4 68 +ADDP4 +ASGNP4 +ADDRLP4 8 +INDIRP4 +ADDRLP4 8 +INDIRP4 +INDIRI4 +CNSTI4 -7 +BANDI4 +ASGNI4 +line 2522 +;2522: } +LABELV $1208 +line 2524 +;2523: +;2524: for (i = 0; i < menuCount; i++) { +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +ADDRGP4 $1213 +JUMPV +LABELV $1210 +line 2525 +;2525: if (Menu_OverActiveItem(&Menus[i], DC->cursorx, DC->cursory)) { +CNSTI4 644 +ADDRLP4 0 +INDIRI4 +MULI4 +ADDRGP4 Menus +ADDP4 +ARGP4 +ADDRLP4 8 +ADDRGP4 DC +INDIRP4 +ASGNP4 +ADDRLP4 8 +INDIRP4 +CNSTI4 216 +ADDP4 +INDIRI4 +CVIF4 4 +ARGF4 +ADDRLP4 8 +INDIRP4 +CNSTI4 220 +ADDP4 +INDIRI4 +CVIF4 4 +ARGF4 +ADDRLP4 12 +ADDRGP4 Menu_OverActiveItem +CALLI4 +ASGNI4 +ADDRLP4 12 +INDIRI4 +CNSTI4 0 +EQI4 $1214 +line 2526 +;2526: Menu_RunCloseScript(menu); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRGP4 Menu_RunCloseScript +CALLV +pop +line 2527 +;2527: menu->window.flags &= ~(WINDOW_HASFOCUS | WINDOW_VISIBLE); +ADDRLP4 16 +ADDRFP4 0 +INDIRP4 +CNSTI4 68 +ADDP4 +ASGNP4 +ADDRLP4 16 +INDIRP4 +ADDRLP4 16 +INDIRP4 +INDIRI4 +CNSTI4 -7 +BANDI4 +ASGNI4 +line 2528 +;2528: Menus_Activate(&Menus[i]); +CNSTI4 644 +ADDRLP4 0 +INDIRI4 +MULI4 +ADDRGP4 Menus +ADDP4 +ARGP4 +ADDRGP4 Menus_Activate +CALLV +pop +line 2529 +;2529: Menu_HandleMouseMove(&Menus[i], DC->cursorx, DC->cursory); +CNSTI4 644 +ADDRLP4 0 +INDIRI4 +MULI4 +ADDRGP4 Menus +ADDP4 +ARGP4 +ADDRLP4 20 +ADDRGP4 DC +INDIRP4 +ASGNP4 +ADDRLP4 20 +INDIRP4 +CNSTI4 216 +ADDP4 +INDIRI4 +CVIF4 4 +ARGF4 +ADDRLP4 20 +INDIRP4 +CNSTI4 220 +ADDP4 +INDIRI4 +CVIF4 4 +ARGF4 +ADDRGP4 Menu_HandleMouseMove +CALLV +pop +line 2530 +;2530: Menu_HandleKey(&Menus[i], key, down); +CNSTI4 644 +ADDRLP4 0 +INDIRI4 +MULI4 +ADDRGP4 Menus +ADDP4 +ARGP4 +ADDRFP4 4 +INDIRI4 +ARGI4 +ADDRFP4 8 +INDIRI4 +ARGI4 +ADDRGP4 Menu_HandleKey +CALLV +pop +line 2531 +;2531: } +LABELV $1214 +line 2532 +;2532: } +LABELV $1211 +line 2524 +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +LABELV $1213 +ADDRLP4 0 +INDIRI4 +ADDRGP4 menuCount +INDIRI4 +LTI4 $1210 +line 2534 +;2533: +;2534: if (Display_VisibleMenuCount() == 0) { +ADDRLP4 8 +ADDRGP4 Display_VisibleMenuCount +CALLI4 +ASGNI4 +ADDRLP4 8 +INDIRI4 +CNSTI4 0 +NEI4 $1216 +line 2535 +;2535: if (DC->Pause) { +ADDRGP4 DC +INDIRP4 +CNSTI4 160 +ADDP4 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $1218 +line 2536 +;2536: DC->Pause(qfalse); +CNSTI4 0 +ARGI4 +ADDRGP4 DC +INDIRP4 +CNSTI4 160 +ADDP4 +INDIRP4 +CALLV +pop +line 2537 +;2537: } +LABELV $1218 +line 2538 +;2538: } +LABELV $1216 +line 2539 +;2539: Display_CloseCinematics(); +ADDRGP4 Display_CloseCinematics +CALLV +pop +line 2540 +;2540: } +LABELV $1206 +line 2541 +;2541:} +LABELV $1205 +endproc Menus_HandleOOBClick 24 12 +bss +align 4 +LABELV $1221 +skip 16 +code +proc Item_CorrectedTextRect 4 12 +line 2543 +;2542: +;2543:static rectDef_t *Item_CorrectedTextRect(itemDef_t *item) { +line 2545 +;2544: static rectDef_t rect; +;2545: memset(&rect, 0, sizeof(rectDef_t)); +ADDRGP4 $1221 +ARGP4 +CNSTI4 0 +ARGI4 +CNSTI4 16 +ARGI4 +ADDRGP4 memset +CALLP4 +pop +line 2546 +;2546: if (item) { +ADDRFP4 0 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $1222 +line 2547 +;2547: rect = item->textRect; +ADDRGP4 $1221 +ADDRFP4 0 +INDIRP4 +CNSTI4 180 +ADDP4 +INDIRB +ASGNB 16 +line 2548 +;2548: if (rect.w) { +ADDRGP4 $1221+8 +INDIRF4 +CNSTF4 0 +EQF4 $1224 +line 2549 +;2549: rect.y -= rect.h; +ADDRLP4 0 +ADDRGP4 $1221+4 +ASGNP4 +ADDRLP4 0 +INDIRP4 +ADDRLP4 0 +INDIRP4 +INDIRF4 +ADDRGP4 $1221+12 +INDIRF4 +SUBF4 +ASGNF4 +line 2550 +;2550: } +LABELV $1224 +line 2551 +;2551: } +LABELV $1222 +line 2552 +;2552: return ▭ +ADDRGP4 $1221 +RETP4 +LABELV $1220 +endproc Item_CorrectedTextRect 4 12 +data +align 4 +LABELV $1250 +byte 4 0 +export Menu_HandleKey +code +proc Menu_HandleKey 628 12 +line 2555 +;2553:} +;2554: +;2555:void Menu_HandleKey(menuDef_t *menu, int key, qboolean down) { +line 2557 +;2556: int i; +;2557: itemDef_t *item = NULL; +ADDRLP4 4 +CNSTP4 0 +ASGNP4 +line 2558 +;2558: qboolean inHandler = qfalse; +ADDRLP4 8 +CNSTI4 0 +ASGNI4 +line 2560 +;2559: +;2560: if (inHandler) { +ADDRLP4 8 +INDIRI4 +CNSTI4 0 +EQI4 $1230 +line 2561 +;2561: return; +ADDRGP4 $1229 +JUMPV +LABELV $1230 +line 2564 +;2562: } +;2563: +;2564: inHandler = qtrue; +ADDRLP4 8 +CNSTI4 1 +ASGNI4 +line 2565 +;2565: if (g_waitingForKey && down) { +ADDRLP4 12 +CNSTI4 0 +ASGNI4 +ADDRGP4 g_waitingForKey +INDIRI4 +ADDRLP4 12 +INDIRI4 +EQI4 $1232 +ADDRFP4 8 +INDIRI4 +ADDRLP4 12 +INDIRI4 +EQI4 $1232 +line 2566 +;2566: Item_Bind_HandleKey(g_bindItem, key, down); +ADDRGP4 g_bindItem +INDIRP4 +ARGP4 +ADDRFP4 4 +INDIRI4 +ARGI4 +ADDRFP4 8 +INDIRI4 +ARGI4 +ADDRGP4 Item_Bind_HandleKey +CALLI4 +pop +line 2567 +;2567: inHandler = qfalse; +ADDRLP4 8 +CNSTI4 0 +ASGNI4 +line 2568 +;2568: return; +ADDRGP4 $1229 +JUMPV +LABELV $1232 +line 2571 +;2569: } +;2570: +;2571: if (g_editingField && down) { +ADDRLP4 16 +CNSTI4 0 +ASGNI4 +ADDRGP4 g_editingField +INDIRI4 +ADDRLP4 16 +INDIRI4 +EQI4 $1234 +ADDRFP4 8 +INDIRI4 +ADDRLP4 16 +INDIRI4 +EQI4 $1234 +line 2572 +;2572: if (!Item_TextField_HandleKey(g_editItem, key)) { +ADDRGP4 g_editItem +INDIRP4 +ARGP4 +ADDRFP4 4 +INDIRI4 +ARGI4 +ADDRLP4 20 +ADDRGP4 Item_TextField_HandleKey +CALLI4 +ASGNI4 +ADDRLP4 20 +INDIRI4 +CNSTI4 0 +NEI4 $1236 +line 2573 +;2573: g_editingField = qfalse; +ADDRGP4 g_editingField +CNSTI4 0 +ASGNI4 +line 2574 +;2574: g_editItem = NULL; +ADDRGP4 g_editItem +CNSTP4 0 +ASGNP4 +line 2575 +;2575: inHandler = qfalse; +ADDRLP4 8 +CNSTI4 0 +ASGNI4 +line 2576 +;2576: return; +ADDRGP4 $1229 +JUMPV +LABELV $1236 +line 2577 +;2577: } else if (key == K_MOUSE1 || key == K_MOUSE2 || key == K_MOUSE3) { +ADDRLP4 24 +ADDRFP4 4 +INDIRI4 +ASGNI4 +ADDRLP4 24 +INDIRI4 +CNSTI4 178 +EQI4 $1241 +ADDRLP4 24 +INDIRI4 +CNSTI4 179 +EQI4 $1241 +ADDRLP4 24 +INDIRI4 +CNSTI4 180 +NEI4 $1238 +LABELV $1241 +line 2578 +;2578: g_editingField = qfalse; +ADDRGP4 g_editingField +CNSTI4 0 +ASGNI4 +line 2579 +;2579: g_editItem = NULL; +ADDRGP4 g_editItem +CNSTP4 0 +ASGNP4 +line 2580 +;2580: Display_MouseMove(NULL, DC->cursorx, DC->cursory); +CNSTP4 0 +ARGP4 +ADDRLP4 28 +ADDRGP4 DC +INDIRP4 +ASGNP4 +ADDRLP4 28 +INDIRP4 +CNSTI4 216 +ADDP4 +INDIRI4 +ARGI4 +ADDRLP4 28 +INDIRP4 +CNSTI4 220 +ADDP4 +INDIRI4 +ARGI4 +ADDRGP4 Display_MouseMove +CALLI4 +pop +line 2581 +;2581: } else if (key == K_TAB || key == K_UPARROW || key == K_DOWNARROW) { +ADDRGP4 $1239 +JUMPV +LABELV $1238 +ADDRLP4 28 +ADDRFP4 4 +INDIRI4 +ASGNI4 +ADDRLP4 28 +INDIRI4 +CNSTI4 9 +EQI4 $1245 +ADDRLP4 28 +INDIRI4 +CNSTI4 132 +EQI4 $1245 +ADDRLP4 28 +INDIRI4 +CNSTI4 133 +NEI4 $1242 +LABELV $1245 +line 2582 +;2582: return; +ADDRGP4 $1229 +JUMPV +LABELV $1242 +LABELV $1239 +line 2584 +;2583: } +;2584: } +LABELV $1234 +line 2586 +;2585: +;2586: if (menu == NULL) { +ADDRFP4 0 +INDIRP4 +CVPU4 4 +CNSTU4 0 +NEU4 $1246 +line 2587 +;2587: inHandler = qfalse; +ADDRLP4 8 +CNSTI4 0 +ASGNI4 +line 2588 +;2588: return; +ADDRGP4 $1229 +JUMPV +LABELV $1246 +line 2592 +;2589: } +;2590: +;2591: // see if the mouse is within the window bounds and if so is this a mouse click +;2592: if (down && !(menu->window.flags & WINDOW_POPUP) && !Rect_ContainsPoint(&menu->window.rect, DC->cursorx, DC->cursory)) { +ADDRLP4 20 +CNSTI4 0 +ASGNI4 +ADDRFP4 8 +INDIRI4 +ADDRLP4 20 +INDIRI4 +EQI4 $1248 +ADDRLP4 24 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 24 +INDIRP4 +CNSTI4 68 +ADDP4 +INDIRI4 +CNSTI4 2097152 +BANDI4 +ADDRLP4 20 +INDIRI4 +NEI4 $1248 +ADDRLP4 24 +INDIRP4 +ARGP4 +ADDRLP4 28 +ADDRGP4 DC +INDIRP4 +ASGNP4 +ADDRLP4 28 +INDIRP4 +CNSTI4 216 +ADDP4 +INDIRI4 +CVIF4 4 +ARGF4 +ADDRLP4 28 +INDIRP4 +CNSTI4 220 +ADDP4 +INDIRI4 +CVIF4 4 +ARGF4 +ADDRLP4 32 +ADDRGP4 Rect_ContainsPoint +CALLI4 +ASGNI4 +ADDRLP4 32 +INDIRI4 +CNSTI4 0 +NEI4 $1248 +line 2595 +;2593: static qboolean inHandleKey = qfalse; +;2594: // bk001206 - parentheses +;2595: if (!inHandleKey && ( key == K_MOUSE1 || key == K_MOUSE2 || key == K_MOUSE3 ) ) { +ADDRGP4 $1250 +INDIRI4 +CNSTI4 0 +NEI4 $1251 +ADDRLP4 36 +ADDRFP4 4 +INDIRI4 +ASGNI4 +ADDRLP4 36 +INDIRI4 +CNSTI4 178 +EQI4 $1254 +ADDRLP4 36 +INDIRI4 +CNSTI4 179 +EQI4 $1254 +ADDRLP4 36 +INDIRI4 +CNSTI4 180 +NEI4 $1251 +LABELV $1254 +line 2596 +;2596: inHandleKey = qtrue; +ADDRGP4 $1250 +CNSTI4 1 +ASGNI4 +line 2597 +;2597: Menus_HandleOOBClick(menu, key, down); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRFP4 4 +INDIRI4 +ARGI4 +ADDRFP4 8 +INDIRI4 +ARGI4 +ADDRGP4 Menus_HandleOOBClick +CALLV +pop +line 2598 +;2598: inHandleKey = qfalse; +ADDRGP4 $1250 +CNSTI4 0 +ASGNI4 +line 2599 +;2599: inHandler = qfalse; +ADDRLP4 8 +CNSTI4 0 +ASGNI4 +line 2600 +;2600: return; +ADDRGP4 $1229 +JUMPV +LABELV $1251 +line 2602 +;2601: } +;2602: } +LABELV $1248 +line 2605 +;2603: +;2604: // get the item with focus +;2605: for (i = 0; i < menu->itemCount; i++) { +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +ADDRGP4 $1258 +JUMPV +LABELV $1255 +line 2606 +;2606: if (menu->items[i]->window.flags & WINDOW_HASFOCUS) { +ADDRLP4 36 +CNSTI4 2 +ASGNI4 +ADDRLP4 0 +INDIRI4 +ADDRLP4 36 +INDIRI4 +LSHI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 260 +ADDP4 +ADDP4 +INDIRP4 +CNSTI4 68 +ADDP4 +INDIRI4 +ADDRLP4 36 +INDIRI4 +BANDI4 +CNSTI4 0 +EQI4 $1259 +line 2607 +;2607: item = menu->items[i]; +ADDRLP4 4 +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 260 +ADDP4 +ADDP4 +INDIRP4 +ASGNP4 +line 2608 +;2608: } +LABELV $1259 +line 2609 +;2609: } +LABELV $1256 +line 2605 +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +LABELV $1258 +ADDRLP4 0 +INDIRI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 188 +ADDP4 +INDIRI4 +LTI4 $1255 +line 2611 +;2610: +;2611: if (item != NULL) { +ADDRLP4 4 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $1261 +line 2612 +;2612: if (Item_HandleKey(item, key, down)) { +ADDRLP4 4 +INDIRP4 +ARGP4 +ADDRFP4 4 +INDIRI4 +ARGI4 +ADDRFP4 8 +INDIRI4 +ARGI4 +ADDRLP4 36 +ADDRGP4 Item_HandleKey +CALLI4 +ASGNI4 +ADDRLP4 36 +INDIRI4 +CNSTI4 0 +EQI4 $1263 +line 2613 +;2613: Item_Action(item); +ADDRLP4 4 +INDIRP4 +ARGP4 +ADDRGP4 Item_Action +CALLV +pop +line 2614 +;2614: inHandler = qfalse; +ADDRLP4 8 +CNSTI4 0 +ASGNI4 +line 2615 +;2615: return; +ADDRGP4 $1229 +JUMPV +LABELV $1263 +line 2617 +;2616: } +;2617: } +LABELV $1261 +line 2619 +;2618: +;2619: if (!down) { +ADDRFP4 8 +INDIRI4 +CNSTI4 0 +NEI4 $1265 +line 2620 +;2620: inHandler = qfalse; +ADDRLP4 8 +CNSTI4 0 +ASGNI4 +line 2621 +;2621: return; +ADDRGP4 $1229 +JUMPV +LABELV $1265 +line 2625 +;2622: } +;2623: +;2624: // default handling +;2625: switch ( key ) { +ADDRLP4 36 +ADDRFP4 4 +INDIRI4 +ASGNI4 +ADDRLP4 36 +INDIRI4 +CNSTI4 155 +EQI4 $1269 +ADDRLP4 40 +CNSTI4 156 +ASGNI4 +ADDRLP4 36 +INDIRI4 +ADDRLP4 40 +INDIRI4 +EQI4 $1273 +ADDRLP4 36 +INDIRI4 +ADDRLP4 40 +INDIRI4 +GTI4 $1305 +LABELV $1304 +ADDRLP4 44 +ADDRFP4 4 +INDIRI4 +ASGNI4 +ADDRLP4 48 +CNSTI4 13 +ASGNI4 +ADDRLP4 44 +INDIRI4 +ADDRLP4 48 +INDIRI4 +EQI4 $1298 +ADDRLP4 44 +INDIRI4 +ADDRLP4 48 +INDIRI4 +GTI4 $1307 +LABELV $1306 +ADDRFP4 4 +INDIRI4 +CNSTI4 9 +EQI4 $1282 +ADDRGP4 $1267 +JUMPV +LABELV $1307 +ADDRLP4 52 +ADDRFP4 4 +INDIRI4 +ASGNI4 +ADDRLP4 56 +CNSTI4 27 +ASGNI4 +ADDRLP4 52 +INDIRI4 +ADDRLP4 56 +INDIRI4 +EQI4 $1278 +ADDRLP4 52 +INDIRI4 +ADDRLP4 56 +INDIRI4 +LTI4 $1267 +LABELV $1308 +ADDRLP4 60 +ADDRFP4 4 +INDIRI4 +ASGNI4 +ADDRLP4 60 +INDIRI4 +CNSTI4 132 +EQI4 $1277 +ADDRLP4 60 +INDIRI4 +CNSTI4 133 +EQI4 $1282 +ADDRGP4 $1267 +JUMPV +LABELV $1305 +ADDRLP4 64 +ADDRFP4 4 +INDIRI4 +ASGNI4 +ADDRLP4 64 +INDIRI4 +CNSTI4 167 +EQI4 $1282 +ADDRLP4 68 +CNSTI4 169 +ASGNI4 +ADDRLP4 64 +INDIRI4 +ADDRLP4 68 +INDIRI4 +EQI4 $1298 +ADDRLP4 64 +INDIRI4 +ADDRLP4 68 +INDIRI4 +GTI4 $1310 +LABELV $1309 +ADDRFP4 4 +INDIRI4 +CNSTI4 161 +EQI4 $1277 +ADDRGP4 $1267 +JUMPV +LABELV $1310 +ADDRLP4 72 +ADDRFP4 4 +INDIRI4 +ASGNI4 +ADDRLP4 72 +INDIRI4 +CNSTI4 178 +LTI4 $1267 +ADDRLP4 72 +INDIRI4 +CNSTI4 188 +GTI4 $1311 +ADDRLP4 72 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 $1312-712 +ADDP4 +INDIRP4 +JUMPV +lit +align 4 +LABELV $1312 +address $1283 +address $1283 +address $1267 +address $1267 +address $1267 +address $1267 +address $1267 +address $1268 +address $1268 +address $1268 +address $1268 +code +LABELV $1311 +ADDRLP4 76 +ADDRFP4 4 +INDIRI4 +ASGNI4 +ADDRLP4 76 +INDIRI4 +CNSTI4 217 +LTI4 $1267 +ADDRLP4 76 +INDIRI4 +CNSTI4 232 +GTI4 $1267 +ADDRLP4 76 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 $1314-868 +ADDP4 +INDIRP4 +JUMPV +lit +align 4 +LABELV $1314 +address $1268 +address $1268 +address $1268 +address $1268 +address $1268 +address $1268 +address $1268 +address $1268 +address $1268 +address $1268 +address $1268 +address $1268 +address $1268 +address $1268 +address $1268 +address $1268 +code +LABELV $1269 +line 2628 +;2626: +;2627: case K_F11: +;2628: if (DC->getCVarValue("developer")) { +ADDRGP4 $1272 +ARGP4 +ADDRLP4 80 +ADDRGP4 DC +INDIRP4 +CNSTI4 92 +ADDP4 +INDIRP4 +CALLF4 +ASGNF4 +ADDRLP4 80 +INDIRF4 +CNSTF4 0 +EQF4 $1268 +line 2629 +;2629: debugMode ^= 1; +ADDRLP4 84 +ADDRGP4 debugMode +ASGNP4 +ADDRLP4 84 +INDIRP4 +ADDRLP4 84 +INDIRP4 +INDIRI4 +CNSTI4 1 +BXORI4 +ASGNI4 +line 2630 +;2630: } +line 2631 +;2631: break; +ADDRGP4 $1268 +JUMPV +LABELV $1273 +line 2634 +;2632: +;2633: case K_F12: +;2634: if (DC->getCVarValue("developer")) { +ADDRGP4 $1272 +ARGP4 +ADDRLP4 84 +ADDRGP4 DC +INDIRP4 +CNSTI4 92 +ADDP4 +INDIRP4 +CALLF4 +ASGNF4 +ADDRLP4 84 +INDIRF4 +CNSTF4 0 +EQF4 $1268 +line 2635 +;2635: DC->executeText(EXEC_APPEND, "screenshot\n"); +CNSTI4 2 +ARGI4 +ADDRGP4 $1276 +ARGP4 +ADDRGP4 DC +INDIRP4 +CNSTI4 148 +ADDP4 +INDIRP4 +CALLV +pop +line 2636 +;2636: } +line 2637 +;2637: break; +ADDRGP4 $1268 +JUMPV +LABELV $1277 +line 2640 +;2638: case K_KP_UPARROW: +;2639: case K_UPARROW: +;2640: Menu_SetPrevCursorItem(menu); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRGP4 Menu_SetPrevCursorItem +CALLP4 +pop +line 2641 +;2641: break; +ADDRGP4 $1268 +JUMPV +LABELV $1278 +line 2644 +;2642: +;2643: case K_ESCAPE: +;2644: if (!g_waitingForKey && menu->onESC) { +ADDRGP4 g_waitingForKey +INDIRI4 +CNSTI4 0 +NEI4 $1268 +ADDRFP4 0 +INDIRP4 +CNSTI4 220 +ADDP4 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $1268 +line 2646 +;2645: itemDef_t it; +;2646: it.parent = menu; +ADDRLP4 88+228 +ADDRFP4 0 +INDIRP4 +ASGNP4 +line 2647 +;2647: Item_RunScript(&it, menu->onESC); +ADDRLP4 88 +ARGP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 220 +ADDP4 +INDIRP4 +ARGP4 +ADDRGP4 Item_RunScript +CALLV +pop +line 2648 +;2648: } +line 2649 +;2649: break; +ADDRGP4 $1268 +JUMPV +LABELV $1282 +line 2653 +;2650: case K_TAB: +;2651: case K_KP_DOWNARROW: +;2652: case K_DOWNARROW: +;2653: Menu_SetNextCursorItem(menu); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRGP4 Menu_SetNextCursorItem +CALLP4 +pop +line 2654 +;2654: break; +ADDRGP4 $1268 +JUMPV +LABELV $1283 +line 2658 +;2655: +;2656: case K_MOUSE1: +;2657: case K_MOUSE2: +;2658: if (item) { +ADDRLP4 4 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $1268 +line 2659 +;2659: if (item->type == ITEM_TYPE_TEXT) { +ADDRLP4 4 +INDIRP4 +CNSTI4 196 +ADDP4 +INDIRI4 +CNSTI4 0 +NEI4 $1286 +line 2660 +;2660: if (Rect_ContainsPoint(Item_CorrectedTextRect(item), DC->cursorx, DC->cursory)) { +ADDRLP4 4 +INDIRP4 +ARGP4 +ADDRLP4 88 +ADDRGP4 Item_CorrectedTextRect +CALLP4 +ASGNP4 +ADDRLP4 88 +INDIRP4 +ARGP4 +ADDRLP4 92 +ADDRGP4 DC +INDIRP4 +ASGNP4 +ADDRLP4 92 +INDIRP4 +CNSTI4 216 +ADDP4 +INDIRI4 +CVIF4 4 +ARGF4 +ADDRLP4 92 +INDIRP4 +CNSTI4 220 +ADDP4 +INDIRI4 +CVIF4 4 +ARGF4 +ADDRLP4 96 +ADDRGP4 Rect_ContainsPoint +CALLI4 +ASGNI4 +ADDRLP4 96 +INDIRI4 +CNSTI4 0 +EQI4 $1268 +line 2661 +;2661: Item_Action(item); +ADDRLP4 4 +INDIRP4 +ARGP4 +ADDRGP4 Item_Action +CALLV +pop +line 2662 +;2662: } +line 2663 +;2663: } else if (item->type == ITEM_TYPE_EDITFIELD || item->type == ITEM_TYPE_NUMERICFIELD) { +ADDRGP4 $1268 +JUMPV +LABELV $1286 +ADDRLP4 88 +ADDRLP4 4 +INDIRP4 +CNSTI4 196 +ADDP4 +INDIRI4 +ASGNI4 +ADDRLP4 88 +INDIRI4 +CNSTI4 4 +EQI4 $1292 +ADDRLP4 88 +INDIRI4 +CNSTI4 9 +NEI4 $1290 +LABELV $1292 +line 2664 +;2664: if (Rect_ContainsPoint(&item->window.rect, DC->cursorx, DC->cursory)) { +ADDRLP4 4 +INDIRP4 +ARGP4 +ADDRLP4 92 +ADDRGP4 DC +INDIRP4 +ASGNP4 +ADDRLP4 92 +INDIRP4 +CNSTI4 216 +ADDP4 +INDIRI4 +CVIF4 4 +ARGF4 +ADDRLP4 92 +INDIRP4 +CNSTI4 220 +ADDP4 +INDIRI4 +CVIF4 4 +ARGF4 +ADDRLP4 96 +ADDRGP4 Rect_ContainsPoint +CALLI4 +ASGNI4 +ADDRLP4 96 +INDIRI4 +CNSTI4 0 +EQI4 $1268 +line 2665 +;2665: item->cursorPos = 0; +ADDRLP4 4 +INDIRP4 +CNSTI4 532 +ADDP4 +CNSTI4 0 +ASGNI4 +line 2666 +;2666: g_editingField = qtrue; +ADDRGP4 g_editingField +CNSTI4 1 +ASGNI4 +line 2667 +;2667: g_editItem = item; +ADDRGP4 g_editItem +ADDRLP4 4 +INDIRP4 +ASGNP4 +line 2668 +;2668: DC->setOverstrikeMode(qtrue); +CNSTI4 1 +ARGI4 +ADDRGP4 DC +INDIRP4 +CNSTI4 104 +ADDP4 +INDIRP4 +CALLV +pop +line 2669 +;2669: } +line 2670 +;2670: } else { +ADDRGP4 $1268 +JUMPV +LABELV $1290 +line 2671 +;2671: if (Rect_ContainsPoint(&item->window.rect, DC->cursorx, DC->cursory)) { +ADDRLP4 4 +INDIRP4 +ARGP4 +ADDRLP4 92 +ADDRGP4 DC +INDIRP4 +ASGNP4 +ADDRLP4 92 +INDIRP4 +CNSTI4 216 +ADDP4 +INDIRI4 +CVIF4 4 +ARGF4 +ADDRLP4 92 +INDIRP4 +CNSTI4 220 +ADDP4 +INDIRI4 +CVIF4 4 +ARGF4 +ADDRLP4 96 +ADDRGP4 Rect_ContainsPoint +CALLI4 +ASGNI4 +ADDRLP4 96 +INDIRI4 +CNSTI4 0 +EQI4 $1268 +line 2672 +;2672: Item_Action(item); +ADDRLP4 4 +INDIRP4 +ARGP4 +ADDRGP4 Item_Action +CALLV +pop +line 2673 +;2673: } +line 2674 +;2674: } +line 2675 +;2675: } +line 2676 +;2676: break; +ADDRGP4 $1268 +JUMPV +line 2698 +;2677: +;2678: case K_JOY1: +;2679: case K_JOY2: +;2680: case K_JOY3: +;2681: case K_JOY4: +;2682: case K_AUX1: +;2683: case K_AUX2: +;2684: case K_AUX3: +;2685: case K_AUX4: +;2686: case K_AUX5: +;2687: case K_AUX6: +;2688: case K_AUX7: +;2689: case K_AUX8: +;2690: case K_AUX9: +;2691: case K_AUX10: +;2692: case K_AUX11: +;2693: case K_AUX12: +;2694: case K_AUX13: +;2695: case K_AUX14: +;2696: case K_AUX15: +;2697: case K_AUX16: +;2698: break; +LABELV $1298 +line 2701 +;2699: case K_KP_ENTER: +;2700: case K_ENTER: +;2701: if (item) { +ADDRLP4 4 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $1268 +line 2702 +;2702: if (item->type == ITEM_TYPE_EDITFIELD || item->type == ITEM_TYPE_NUMERICFIELD) { +ADDRLP4 88 +ADDRLP4 4 +INDIRP4 +CNSTI4 196 +ADDP4 +INDIRI4 +ASGNI4 +ADDRLP4 88 +INDIRI4 +CNSTI4 4 +EQI4 $1303 +ADDRLP4 88 +INDIRI4 +CNSTI4 9 +NEI4 $1301 +LABELV $1303 +line 2703 +;2703: item->cursorPos = 0; +ADDRLP4 4 +INDIRP4 +CNSTI4 532 +ADDP4 +CNSTI4 0 +ASGNI4 +line 2704 +;2704: g_editingField = qtrue; +ADDRGP4 g_editingField +CNSTI4 1 +ASGNI4 +line 2705 +;2705: g_editItem = item; +ADDRGP4 g_editItem +ADDRLP4 4 +INDIRP4 +ASGNP4 +line 2706 +;2706: DC->setOverstrikeMode(qtrue); +CNSTI4 1 +ARGI4 +ADDRGP4 DC +INDIRP4 +CNSTI4 104 +ADDP4 +INDIRP4 +CALLV +pop +line 2707 +;2707: } else { +ADDRGP4 $1268 +JUMPV +LABELV $1301 +line 2708 +;2708: Item_Action(item); +ADDRLP4 4 +INDIRP4 +ARGP4 +ADDRGP4 Item_Action +CALLV +pop +line 2709 +;2709: } +line 2710 +;2710: } +line 2711 +;2711: break; +LABELV $1267 +LABELV $1268 +line 2713 +;2712: } +;2713: inHandler = qfalse; +ADDRLP4 8 +CNSTI4 0 +ASGNI4 +line 2714 +;2714:} +LABELV $1229 +endproc Menu_HandleKey 628 12 +export ToWindowCoords +proc ToWindowCoords 8 0 +line 2716 +;2715: +;2716:void ToWindowCoords(float *x, float *y, windowDef_t *window) { +line 2717 +;2717: if (window->border != 0) { +ADDRFP4 8 +INDIRP4 +CNSTI4 52 +ADDP4 +INDIRI4 +CNSTI4 0 +EQI4 $1317 +line 2718 +;2718: *x += window->borderSize; +ADDRLP4 0 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 0 +INDIRP4 +ADDRLP4 0 +INDIRP4 +INDIRF4 +ADDRFP4 8 +INDIRP4 +CNSTI4 64 +ADDP4 +INDIRF4 +ADDF4 +ASGNF4 +line 2719 +;2719: *y += window->borderSize; +ADDRLP4 4 +ADDRFP4 4 +INDIRP4 +ASGNP4 +ADDRLP4 4 +INDIRP4 +ADDRLP4 4 +INDIRP4 +INDIRF4 +ADDRFP4 8 +INDIRP4 +CNSTI4 64 +ADDP4 +INDIRF4 +ADDF4 +ASGNF4 +line 2720 +;2720: } +LABELV $1317 +line 2721 +;2721: *x += window->rect.x; +ADDRLP4 0 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 0 +INDIRP4 +ADDRLP4 0 +INDIRP4 +INDIRF4 +ADDRFP4 8 +INDIRP4 +INDIRF4 +ADDF4 +ASGNF4 +line 2722 +;2722: *y += window->rect.y; +ADDRLP4 4 +ADDRFP4 4 +INDIRP4 +ASGNP4 +ADDRLP4 4 +INDIRP4 +ADDRLP4 4 +INDIRP4 +INDIRF4 +ADDRFP4 8 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRF4 +ADDF4 +ASGNF4 +line 2723 +;2723:} +LABELV $1316 +endproc ToWindowCoords 8 0 +export Rect_ToWindowCoords +proc Rect_ToWindowCoords 4 12 +line 2725 +;2724: +;2725:void Rect_ToWindowCoords(rectDef_t *rect, windowDef_t *window) { +line 2726 +;2726: ToWindowCoords(&rect->x, &rect->y, window); +ADDRLP4 0 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 0 +INDIRP4 +ARGP4 +ADDRLP4 0 +INDIRP4 +CNSTI4 4 +ADDP4 +ARGP4 +ADDRFP4 4 +INDIRP4 +ARGP4 +ADDRGP4 ToWindowCoords +CALLV +pop +line 2727 +;2727:} +LABELV $1319 +endproc Rect_ToWindowCoords 4 12 +export Item_SetTextExtents +proc Item_SetTextExtents 296 12 +line 2729 +;2728: +;2729:void Item_SetTextExtents(itemDef_t *item, int *width, int *height, const char *text) { +line 2730 +;2730: const char *textPtr = (text) ? text : item->text; +ADDRFP4 12 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $1322 +ADDRLP4 4 +ADDRFP4 12 +INDIRP4 +ASGNP4 +ADDRGP4 $1323 +JUMPV +LABELV $1322 +ADDRLP4 4 +ADDRFP4 0 +INDIRP4 +CNSTI4 224 +ADDP4 +INDIRP4 +ASGNP4 +LABELV $1323 +ADDRLP4 0 +ADDRLP4 4 +INDIRP4 +ASGNP4 +line 2732 +;2731: +;2732: if (textPtr == NULL ) { +ADDRLP4 0 +INDIRP4 +CVPU4 4 +CNSTU4 0 +NEU4 $1324 +line 2733 +;2733: return; +ADDRGP4 $1320 +JUMPV +LABELV $1324 +line 2736 +;2734: } +;2735: +;2736: *width = item->textRect.w; +ADDRFP4 4 +INDIRP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 188 +ADDP4 +INDIRF4 +CVFI4 4 +ASGNI4 +line 2737 +;2737: *height = item->textRect.h; +ADDRFP4 8 +INDIRP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 192 +ADDP4 +INDIRF4 +CVFI4 4 +ASGNI4 +line 2740 +;2738: +;2739: // keeps us from computing the widths and heights more than once +;2740: if (*width == 0 || (item->type == ITEM_TYPE_OWNERDRAW && item->textalignment == ITEM_ALIGN_CENTER)) { +ADDRFP4 4 +INDIRP4 +INDIRI4 +CNSTI4 0 +EQI4 $1328 +ADDRLP4 8 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 8 +INDIRP4 +CNSTI4 196 +ADDP4 +INDIRI4 +CNSTI4 8 +NEI4 $1326 +ADDRLP4 8 +INDIRP4 +CNSTI4 204 +ADDP4 +INDIRI4 +CNSTI4 1 +NEI4 $1326 +LABELV $1328 +line 2741 +;2741: int originalWidth = DC->textWidth(item->text, item->textscale, 0); +ADDRLP4 16 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 16 +INDIRP4 +CNSTI4 224 +ADDP4 +INDIRP4 +ARGP4 +ADDRLP4 16 +INDIRP4 +CNSTI4 216 +ADDP4 +INDIRF4 +ARGF4 +CNSTI4 0 +ARGI4 +ADDRLP4 20 +ADDRGP4 DC +INDIRP4 +CNSTI4 20 +ADDP4 +INDIRP4 +CALLI4 +ASGNI4 +ADDRLP4 12 +ADDRLP4 20 +INDIRI4 +ASGNI4 +line 2743 +;2742: +;2743: if (item->type == ITEM_TYPE_OWNERDRAW && (item->textalignment == ITEM_ALIGN_CENTER || item->textalignment == ITEM_ALIGN_RIGHT)) { +ADDRLP4 24 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 24 +INDIRP4 +CNSTI4 196 +ADDP4 +INDIRI4 +CNSTI4 8 +NEI4 $1329 +ADDRLP4 28 +ADDRLP4 24 +INDIRP4 +CNSTI4 204 +ADDP4 +INDIRI4 +ASGNI4 +ADDRLP4 28 +INDIRI4 +CNSTI4 1 +EQI4 $1331 +ADDRLP4 28 +INDIRI4 +CNSTI4 2 +NEI4 $1329 +LABELV $1331 +line 2744 +;2744: originalWidth += DC->ownerDrawWidth(item->window.ownerDraw, item->textscale); +ADDRLP4 32 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 32 +INDIRP4 +CNSTI4 56 +ADDP4 +INDIRI4 +ARGI4 +ADDRLP4 32 +INDIRP4 +CNSTI4 216 +ADDP4 +INDIRF4 +ARGF4 +ADDRLP4 36 +ADDRGP4 DC +INDIRP4 +CNSTI4 164 +ADDP4 +INDIRP4 +CALLI4 +ASGNI4 +ADDRLP4 12 +ADDRLP4 12 +INDIRI4 +ADDRLP4 36 +INDIRI4 +ADDI4 +ASGNI4 +line 2745 +;2745: } else if (item->type == ITEM_TYPE_EDITFIELD && item->textalignment == ITEM_ALIGN_CENTER && item->cvar) { +ADDRGP4 $1330 +JUMPV +LABELV $1329 +ADDRLP4 32 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 32 +INDIRP4 +CNSTI4 196 +ADDP4 +INDIRI4 +CNSTI4 4 +NEI4 $1332 +ADDRLP4 32 +INDIRP4 +CNSTI4 204 +ADDP4 +INDIRI4 +CNSTI4 1 +NEI4 $1332 +ADDRLP4 32 +INDIRP4 +CNSTI4 264 +ADDP4 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $1332 +line 2747 +;2746: char buff[256]; +;2747: DC->getCVarString(item->cvar, buff, 256); +ADDRFP4 0 +INDIRP4 +CNSTI4 264 +ADDP4 +INDIRP4 +ARGP4 +ADDRLP4 36 +ARGP4 +CNSTI4 256 +ARGI4 +ADDRGP4 DC +INDIRP4 +CNSTI4 88 +ADDP4 +INDIRP4 +CALLV +pop +line 2748 +;2748: originalWidth += DC->textWidth(buff, item->textscale, 0); +ADDRLP4 36 +ARGP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 216 +ADDP4 +INDIRF4 +ARGF4 +CNSTI4 0 +ARGI4 +ADDRLP4 292 +ADDRGP4 DC +INDIRP4 +CNSTI4 20 +ADDP4 +INDIRP4 +CALLI4 +ASGNI4 +ADDRLP4 12 +ADDRLP4 12 +INDIRI4 +ADDRLP4 292 +INDIRI4 +ADDI4 +ASGNI4 +line 2749 +;2749: } +LABELV $1332 +LABELV $1330 +line 2751 +;2750: +;2751: *width = DC->textWidth(textPtr, item->textscale, 0); +ADDRLP4 0 +INDIRP4 +ARGP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 216 +ADDP4 +INDIRF4 +ARGF4 +CNSTI4 0 +ARGI4 +ADDRLP4 36 +ADDRGP4 DC +INDIRP4 +CNSTI4 20 +ADDP4 +INDIRP4 +CALLI4 +ASGNI4 +ADDRFP4 4 +INDIRP4 +ADDRLP4 36 +INDIRI4 +ASGNI4 +line 2752 +;2752: *height = DC->textHeight(textPtr, item->textscale, 0); +ADDRLP4 0 +INDIRP4 +ARGP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 216 +ADDP4 +INDIRF4 +ARGF4 +CNSTI4 0 +ARGI4 +ADDRLP4 40 +ADDRGP4 DC +INDIRP4 +CNSTI4 24 +ADDP4 +INDIRP4 +CALLI4 +ASGNI4 +ADDRFP4 8 +INDIRP4 +ADDRLP4 40 +INDIRI4 +ASGNI4 +line 2753 +;2753: item->textRect.w = *width; +ADDRFP4 0 +INDIRP4 +CNSTI4 188 +ADDP4 +ADDRFP4 4 +INDIRP4 +INDIRI4 +CVIF4 4 +ASGNF4 +line 2754 +;2754: item->textRect.h = *height; +ADDRFP4 0 +INDIRP4 +CNSTI4 192 +ADDP4 +ADDRFP4 8 +INDIRP4 +INDIRI4 +CVIF4 4 +ASGNF4 +line 2755 +;2755: item->textRect.x = item->textalignx; +ADDRLP4 44 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 44 +INDIRP4 +CNSTI4 180 +ADDP4 +ADDRLP4 44 +INDIRP4 +CNSTI4 208 +ADDP4 +INDIRF4 +ASGNF4 +line 2756 +;2756: item->textRect.y = item->textaligny; +ADDRLP4 48 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 48 +INDIRP4 +CNSTI4 184 +ADDP4 +ADDRLP4 48 +INDIRP4 +CNSTI4 212 +ADDP4 +INDIRF4 +ASGNF4 +line 2757 +;2757: if (item->textalignment == ITEM_ALIGN_RIGHT) { +ADDRFP4 0 +INDIRP4 +CNSTI4 204 +ADDP4 +INDIRI4 +CNSTI4 2 +NEI4 $1334 +line 2758 +;2758: item->textRect.x = item->textalignx - originalWidth; +ADDRLP4 52 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 52 +INDIRP4 +CNSTI4 180 +ADDP4 +ADDRLP4 52 +INDIRP4 +CNSTI4 208 +ADDP4 +INDIRF4 +ADDRLP4 12 +INDIRI4 +CVIF4 4 +SUBF4 +ASGNF4 +line 2759 +;2759: } else if (item->textalignment == ITEM_ALIGN_CENTER) { +ADDRGP4 $1335 +JUMPV +LABELV $1334 +ADDRFP4 0 +INDIRP4 +CNSTI4 204 +ADDP4 +INDIRI4 +CNSTI4 1 +NEI4 $1336 +line 2760 +;2760: item->textRect.x = item->textalignx - originalWidth / 2; +ADDRLP4 52 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 52 +INDIRP4 +CNSTI4 180 +ADDP4 +ADDRLP4 52 +INDIRP4 +CNSTI4 208 +ADDP4 +INDIRF4 +ADDRLP4 12 +INDIRI4 +CNSTI4 2 +DIVI4 +CVIF4 4 +SUBF4 +ASGNF4 +line 2761 +;2761: } +LABELV $1336 +LABELV $1335 +line 2763 +;2762: +;2763: ToWindowCoords(&item->textRect.x, &item->textRect.y, &item->window); +ADDRLP4 52 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 52 +INDIRP4 +CNSTI4 180 +ADDP4 +ARGP4 +ADDRLP4 52 +INDIRP4 +CNSTI4 184 +ADDP4 +ARGP4 +ADDRLP4 52 +INDIRP4 +ARGP4 +ADDRGP4 ToWindowCoords +CALLV +pop +line 2764 +;2764: } +LABELV $1326 +line 2765 +;2765:} +LABELV $1320 +endproc Item_SetTextExtents 296 12 +export Item_TextColor +proc Item_TextColor 60 28 +line 2767 +;2766: +;2767:void Item_TextColor(itemDef_t *item, vec4_t *newColor) { +line 2769 +;2768: vec4_t lowLight; +;2769: menuDef_t *parent = (menuDef_t*)item->parent; +ADDRLP4 0 +ADDRFP4 0 +INDIRP4 +CNSTI4 228 +ADDP4 +INDIRP4 +ASGNP4 +line 2771 +;2770: +;2771: Fade(&item->window.flags, &item->window.foreColor[3], parent->fadeClamp, &item->window.nextTime, parent->fadeCycle, qtrue, parent->fadeAmount); +ADDRLP4 20 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 20 +INDIRP4 +CNSTI4 68 +ADDP4 +ARGP4 +ADDRLP4 20 +INDIRP4 +CNSTI4 124 +ADDP4 +ARGP4 +ADDRLP4 0 +INDIRP4 +CNSTI4 204 +ADDP4 +INDIRF4 +ARGF4 +ADDRLP4 20 +INDIRP4 +CNSTI4 108 +ADDP4 +ARGP4 +ADDRLP4 0 +INDIRP4 +CNSTI4 200 +ADDP4 +INDIRI4 +ARGI4 +CNSTI4 1 +ARGI4 +ADDRLP4 0 +INDIRP4 +CNSTI4 208 +ADDP4 +INDIRF4 +ARGF4 +ADDRGP4 Fade +CALLV +pop +line 2773 +;2772: +;2773: if (item->window.flags & WINDOW_HASFOCUS) { +ADDRFP4 0 +INDIRP4 +CNSTI4 68 +ADDP4 +INDIRI4 +CNSTI4 2 +BANDI4 +CNSTI4 0 +EQI4 $1339 +line 2774 +;2774: lowLight[0] = 0.8 * parent->focusColor[0]; +ADDRLP4 4 +CNSTF4 1061997773 +ADDRLP4 0 +INDIRP4 +CNSTI4 228 +ADDP4 +INDIRF4 +MULF4 +ASGNF4 +line 2775 +;2775: lowLight[1] = 0.8 * parent->focusColor[1]; +ADDRLP4 4+4 +CNSTF4 1061997773 +ADDRLP4 0 +INDIRP4 +CNSTI4 232 +ADDP4 +INDIRF4 +MULF4 +ASGNF4 +line 2776 +;2776: lowLight[2] = 0.8 * parent->focusColor[2]; +ADDRLP4 4+8 +CNSTF4 1061997773 +ADDRLP4 0 +INDIRP4 +CNSTI4 236 +ADDP4 +INDIRF4 +MULF4 +ASGNF4 +line 2777 +;2777: lowLight[3] = 0.8 * parent->focusColor[3]; +ADDRLP4 4+12 +CNSTF4 1061997773 +ADDRLP4 0 +INDIRP4 +CNSTI4 240 +ADDP4 +INDIRF4 +MULF4 +ASGNF4 +line 2778 +;2778: LerpColor(parent->focusColor,lowLight,*newColor,0.5+0.5*sin(DC->realTime / PULSE_DIVISOR)); +ADDRGP4 DC +INDIRP4 +CNSTI4 208 +ADDP4 +INDIRI4 +CNSTI4 75 +DIVI4 +CVIF4 4 +ARGF4 +ADDRLP4 28 +ADDRGP4 sin +CALLF4 +ASGNF4 +ADDRLP4 0 +INDIRP4 +CNSTI4 228 +ADDP4 +ARGP4 +ADDRLP4 4 +ARGP4 +ADDRFP4 4 +INDIRP4 +ARGP4 +CNSTF4 1056964608 +ADDRLP4 28 +INDIRF4 +MULF4 +CNSTF4 1056964608 +ADDF4 +ARGF4 +ADDRGP4 LerpColor +CALLV +pop +line 2779 +;2779: } else if (item->textStyle == ITEM_TEXTSTYLE_BLINK && !((DC->realTime/BLINK_DIVISOR) & 1)) { +ADDRGP4 $1340 +JUMPV +LABELV $1339 +ADDRLP4 28 +CNSTI4 1 +ASGNI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 220 +ADDP4 +INDIRI4 +ADDRLP4 28 +INDIRI4 +NEI4 $1344 +ADDRGP4 DC +INDIRP4 +CNSTI4 208 +ADDP4 +INDIRI4 +CNSTI4 200 +DIVI4 +ADDRLP4 28 +INDIRI4 +BANDI4 +CNSTI4 0 +NEI4 $1344 +line 2780 +;2780: lowLight[0] = 0.8 * item->window.foreColor[0]; +ADDRLP4 4 +CNSTF4 1061997773 +ADDRFP4 0 +INDIRP4 +CNSTI4 112 +ADDP4 +INDIRF4 +MULF4 +ASGNF4 +line 2781 +;2781: lowLight[1] = 0.8 * item->window.foreColor[1]; +ADDRLP4 4+4 +CNSTF4 1061997773 +ADDRFP4 0 +INDIRP4 +CNSTI4 116 +ADDP4 +INDIRF4 +MULF4 +ASGNF4 +line 2782 +;2782: lowLight[2] = 0.8 * item->window.foreColor[2]; +ADDRLP4 4+8 +CNSTF4 1061997773 +ADDRFP4 0 +INDIRP4 +CNSTI4 120 +ADDP4 +INDIRF4 +MULF4 +ASGNF4 +line 2783 +;2783: lowLight[3] = 0.8 * item->window.foreColor[3]; +ADDRLP4 4+12 +CNSTF4 1061997773 +ADDRFP4 0 +INDIRP4 +CNSTI4 124 +ADDP4 +INDIRF4 +MULF4 +ASGNF4 +line 2784 +;2784: LerpColor(item->window.foreColor,lowLight,*newColor,0.5+0.5*sin(DC->realTime / PULSE_DIVISOR)); +ADDRGP4 DC +INDIRP4 +CNSTI4 208 +ADDP4 +INDIRI4 +CNSTI4 75 +DIVI4 +CVIF4 4 +ARGF4 +ADDRLP4 32 +ADDRGP4 sin +CALLF4 +ASGNF4 +ADDRFP4 0 +INDIRP4 +CNSTI4 112 +ADDP4 +ARGP4 +ADDRLP4 4 +ARGP4 +ADDRFP4 4 +INDIRP4 +ARGP4 +CNSTF4 1056964608 +ADDRLP4 32 +INDIRF4 +MULF4 +CNSTF4 1056964608 +ADDF4 +ARGF4 +ADDRGP4 LerpColor +CALLV +pop +line 2785 +;2785: } else { +ADDRGP4 $1345 +JUMPV +LABELV $1344 +line 2786 +;2786: memcpy(newColor, &item->window.foreColor, sizeof(vec4_t)); +ADDRFP4 4 +INDIRP4 +ARGP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 112 +ADDP4 +ARGP4 +CNSTI4 16 +ARGI4 +ADDRGP4 memcpy +CALLP4 +pop +line 2788 +;2787: // items can be enabled and disabled based on cvars +;2788: } +LABELV $1345 +LABELV $1340 +line 2790 +;2789: +;2790: if (item->enableCvar && *item->enableCvar && item->cvarTest && *item->cvarTest) { +ADDRLP4 32 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 36 +ADDRLP4 32 +INDIRP4 +CNSTI4 272 +ADDP4 +INDIRP4 +ASGNP4 +ADDRLP4 40 +CNSTU4 0 +ASGNU4 +ADDRLP4 36 +INDIRP4 +CVPU4 4 +ADDRLP4 40 +INDIRU4 +EQU4 $1349 +ADDRLP4 44 +CNSTI4 0 +ASGNI4 +ADDRLP4 36 +INDIRP4 +INDIRI1 +CVII4 1 +ADDRLP4 44 +INDIRI4 +EQI4 $1349 +ADDRLP4 48 +ADDRLP4 32 +INDIRP4 +CNSTI4 268 +ADDP4 +INDIRP4 +ASGNP4 +ADDRLP4 48 +INDIRP4 +CVPU4 4 +ADDRLP4 40 +INDIRU4 +EQU4 $1349 +ADDRLP4 48 +INDIRP4 +INDIRI1 +CVII4 1 +ADDRLP4 44 +INDIRI4 +EQI4 $1349 +line 2791 +;2791: if (item->cvarFlags & (CVAR_ENABLE | CVAR_DISABLE) && !Item_EnableShowViaCvar(item, CVAR_ENABLE)) { +ADDRLP4 52 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 52 +INDIRP4 +CNSTI4 276 +ADDP4 +INDIRI4 +CNSTI4 3 +BANDI4 +CNSTI4 0 +EQI4 $1351 +ADDRLP4 52 +INDIRP4 +ARGP4 +CNSTI4 1 +ARGI4 +ADDRLP4 56 +ADDRGP4 Item_EnableShowViaCvar +CALLI4 +ASGNI4 +ADDRLP4 56 +INDIRI4 +CNSTI4 0 +NEI4 $1351 +line 2792 +;2792: memcpy(newColor, &parent->disableColor, sizeof(vec4_t)); +ADDRFP4 4 +INDIRP4 +ARGP4 +ADDRLP4 0 +INDIRP4 +CNSTI4 244 +ADDP4 +ARGP4 +CNSTI4 16 +ARGI4 +ADDRGP4 memcpy +CALLP4 +pop +line 2793 +;2793: } +LABELV $1351 +line 2794 +;2794: } +LABELV $1349 +line 2795 +;2795:} +LABELV $1338 +endproc Item_TextColor 60 28 +export Item_Text_AutoWrapped_Paint +proc Item_Text_AutoWrapped_Paint 2128 32 +line 2797 +;2796: +;2797:void Item_Text_AutoWrapped_Paint(itemDef_t *item) { +line 2805 +;2798: char text[1024]; +;2799: const char *p, *textPtr, *newLinePtr; +;2800: char buff[1024]; +;2801: int width, height, len, textWidth, newLine, newLineWidth; +;2802: float y; +;2803: vec4_t color; +;2804: +;2805: textWidth = 0; +ADDRLP4 1032 +CNSTI4 0 +ASGNI4 +line 2806 +;2806: newLinePtr = NULL; +ADDRLP4 1044 +CNSTP4 0 +ASGNP4 +line 2808 +;2807: +;2808: if (item->text == NULL) { +ADDRFP4 0 +INDIRP4 +CNSTI4 224 +ADDP4 +INDIRP4 +CVPU4 4 +CNSTU4 0 +NEU4 $1354 +line 2809 +;2809: if (item->cvar == NULL) { +ADDRFP4 0 +INDIRP4 +CNSTI4 264 +ADDP4 +INDIRP4 +CVPU4 4 +CNSTU4 0 +NEU4 $1356 +line 2810 +;2810: return; +ADDRGP4 $1353 +JUMPV +LABELV $1356 +line 2812 +;2811: } +;2812: else { +line 2813 +;2813: DC->getCVarString(item->cvar, text, sizeof(text)); +ADDRFP4 0 +INDIRP4 +CNSTI4 264 +ADDP4 +INDIRP4 +ARGP4 +ADDRLP4 1080 +ARGP4 +CNSTI4 1024 +ARGI4 +ADDRGP4 DC +INDIRP4 +CNSTI4 88 +ADDP4 +INDIRP4 +CALLV +pop +line 2814 +;2814: textPtr = text; +ADDRLP4 1056 +ADDRLP4 1080 +ASGNP4 +line 2815 +;2815: } +line 2816 +;2816: } +ADDRGP4 $1355 +JUMPV +LABELV $1354 +line 2817 +;2817: else { +line 2818 +;2818: textPtr = item->text; +ADDRLP4 1056 +ADDRFP4 0 +INDIRP4 +CNSTI4 224 +ADDP4 +INDIRP4 +ASGNP4 +line 2819 +;2819: } +LABELV $1355 +line 2820 +;2820: if (*textPtr == '\0') { +ADDRLP4 1056 +INDIRP4 +INDIRI1 +CVII4 1 +CNSTI4 0 +NEI4 $1358 +line 2821 +;2821: return; +ADDRGP4 $1353 +JUMPV +LABELV $1358 +line 2823 +;2822: } +;2823: Item_TextColor(item, &color); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRLP4 1060 +ARGP4 +ADDRGP4 Item_TextColor +CALLV +pop +line 2824 +;2824: Item_SetTextExtents(item, &width, &height, textPtr); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRLP4 1076 +ARGP4 +ADDRLP4 1052 +ARGP4 +ADDRLP4 1056 +INDIRP4 +ARGP4 +ADDRGP4 Item_SetTextExtents +CALLV +pop +line 2826 +;2825: +;2826: y = item->textaligny; +ADDRLP4 1048 +ADDRFP4 0 +INDIRP4 +CNSTI4 212 +ADDP4 +INDIRF4 +ASGNF4 +line 2827 +;2827: len = 0; +ADDRLP4 1028 +CNSTI4 0 +ASGNI4 +line 2828 +;2828: buff[0] = '\0'; +ADDRLP4 4 +CNSTI1 0 +ASGNI1 +line 2829 +;2829: newLine = 0; +ADDRLP4 1036 +CNSTI4 0 +ASGNI4 +line 2830 +;2830: newLineWidth = 0; +ADDRLP4 1040 +CNSTI4 0 +ASGNI4 +line 2831 +;2831: p = textPtr; +ADDRLP4 0 +ADDRLP4 1056 +INDIRP4 +ASGNP4 +ADDRGP4 $1361 +JUMPV +LABELV $1360 +line 2832 +;2832: while (p) { +line 2833 +;2833: if (*p == ' ' || *p == '\t' || *p == '\n' || *p == '\0') { +ADDRLP4 2104 +ADDRLP4 0 +INDIRP4 +INDIRI1 +CVII4 1 +ASGNI4 +ADDRLP4 2104 +INDIRI4 +CNSTI4 32 +EQI4 $1367 +ADDRLP4 2104 +INDIRI4 +CNSTI4 9 +EQI4 $1367 +ADDRLP4 2104 +INDIRI4 +CNSTI4 10 +EQI4 $1367 +ADDRLP4 2104 +INDIRI4 +CNSTI4 0 +NEI4 $1363 +LABELV $1367 +line 2834 +;2834: newLine = len; +ADDRLP4 1036 +ADDRLP4 1028 +INDIRI4 +ASGNI4 +line 2835 +;2835: newLinePtr = p+1; +ADDRLP4 1044 +ADDRLP4 0 +INDIRP4 +CNSTI4 1 +ADDP4 +ASGNP4 +line 2836 +;2836: newLineWidth = textWidth; +ADDRLP4 1040 +ADDRLP4 1032 +INDIRI4 +ASGNI4 +line 2837 +;2837: } +LABELV $1363 +line 2838 +;2838: textWidth = DC->textWidth(buff, item->textscale, 0); +ADDRLP4 4 +ARGP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 216 +ADDP4 +INDIRF4 +ARGF4 +CNSTI4 0 +ARGI4 +ADDRLP4 2108 +ADDRGP4 DC +INDIRP4 +CNSTI4 20 +ADDP4 +INDIRP4 +CALLI4 +ASGNI4 +ADDRLP4 1032 +ADDRLP4 2108 +INDIRI4 +ASGNI4 +line 2839 +;2839: if ( (newLine && textWidth > item->window.rect.w) || *p == '\n' || *p == '\0') { +ADDRLP4 1036 +INDIRI4 +CNSTI4 0 +EQI4 $1371 +ADDRLP4 1032 +INDIRI4 +CVIF4 4 +ADDRFP4 0 +INDIRP4 +CNSTI4 8 +ADDP4 +INDIRF4 +GTF4 $1372 +LABELV $1371 +ADDRLP4 2112 +ADDRLP4 0 +INDIRP4 +INDIRI1 +CVII4 1 +ASGNI4 +ADDRLP4 2112 +INDIRI4 +CNSTI4 10 +EQI4 $1372 +ADDRLP4 2112 +INDIRI4 +CNSTI4 0 +NEI4 $1368 +LABELV $1372 +line 2840 +;2840: if (len) { +ADDRLP4 1028 +INDIRI4 +CNSTI4 0 +EQI4 $1373 +line 2841 +;2841: if (item->textalignment == ITEM_ALIGN_LEFT) { +ADDRFP4 0 +INDIRP4 +CNSTI4 204 +ADDP4 +INDIRI4 +CNSTI4 0 +NEI4 $1375 +line 2842 +;2842: item->textRect.x = item->textalignx; +ADDRLP4 2116 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 2116 +INDIRP4 +CNSTI4 180 +ADDP4 +ADDRLP4 2116 +INDIRP4 +CNSTI4 208 +ADDP4 +INDIRF4 +ASGNF4 +line 2843 +;2843: } else if (item->textalignment == ITEM_ALIGN_RIGHT) { +ADDRGP4 $1376 +JUMPV +LABELV $1375 +ADDRFP4 0 +INDIRP4 +CNSTI4 204 +ADDP4 +INDIRI4 +CNSTI4 2 +NEI4 $1377 +line 2844 +;2844: item->textRect.x = item->textalignx - newLineWidth; +ADDRLP4 2116 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 2116 +INDIRP4 +CNSTI4 180 +ADDP4 +ADDRLP4 2116 +INDIRP4 +CNSTI4 208 +ADDP4 +INDIRF4 +ADDRLP4 1040 +INDIRI4 +CVIF4 4 +SUBF4 +ASGNF4 +line 2845 +;2845: } else if (item->textalignment == ITEM_ALIGN_CENTER) { +ADDRGP4 $1378 +JUMPV +LABELV $1377 +ADDRFP4 0 +INDIRP4 +CNSTI4 204 +ADDP4 +INDIRI4 +CNSTI4 1 +NEI4 $1379 +line 2846 +;2846: item->textRect.x = item->textalignx - newLineWidth / 2; +ADDRLP4 2116 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 2116 +INDIRP4 +CNSTI4 180 +ADDP4 +ADDRLP4 2116 +INDIRP4 +CNSTI4 208 +ADDP4 +INDIRF4 +ADDRLP4 1040 +INDIRI4 +CNSTI4 2 +DIVI4 +CVIF4 4 +SUBF4 +ASGNF4 +line 2847 +;2847: } +LABELV $1379 +LABELV $1378 +LABELV $1376 +line 2848 +;2848: item->textRect.y = y; +ADDRFP4 0 +INDIRP4 +CNSTI4 184 +ADDP4 +ADDRLP4 1048 +INDIRF4 +ASGNF4 +line 2849 +;2849: ToWindowCoords(&item->textRect.x, &item->textRect.y, &item->window); +ADDRLP4 2116 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 2116 +INDIRP4 +CNSTI4 180 +ADDP4 +ARGP4 +ADDRLP4 2116 +INDIRP4 +CNSTI4 184 +ADDP4 +ARGP4 +ADDRLP4 2116 +INDIRP4 +ARGP4 +ADDRGP4 ToWindowCoords +CALLV +pop +line 2851 +;2850: // +;2851: buff[newLine] = '\0'; +ADDRLP4 1036 +INDIRI4 +ADDRLP4 4 +ADDP4 +CNSTI1 0 +ASGNI1 +line 2852 +;2852: DC->drawText(item->textRect.x, item->textRect.y, item->textscale, color, buff, 0, 0, item->textStyle); +ADDRLP4 2120 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 2120 +INDIRP4 +CNSTI4 180 +ADDP4 +INDIRF4 +ARGF4 +ADDRLP4 2120 +INDIRP4 +CNSTI4 184 +ADDP4 +INDIRF4 +ARGF4 +ADDRLP4 2120 +INDIRP4 +CNSTI4 216 +ADDP4 +INDIRF4 +ARGF4 +ADDRLP4 1060 +ARGP4 +ADDRLP4 4 +ARGP4 +CNSTF4 0 +ARGF4 +CNSTI4 0 +ARGI4 +ADDRLP4 2120 +INDIRP4 +CNSTI4 220 +ADDP4 +INDIRI4 +ARGI4 +ADDRGP4 DC +INDIRP4 +CNSTI4 16 +ADDP4 +INDIRP4 +CALLV +pop +line 2853 +;2853: } +LABELV $1373 +line 2854 +;2854: if (*p == '\0') { +ADDRLP4 0 +INDIRP4 +INDIRI1 +CVII4 1 +CNSTI4 0 +NEI4 $1381 +line 2855 +;2855: break; +ADDRGP4 $1362 +JUMPV +LABELV $1381 +line 2858 +;2856: } +;2857: // +;2858: y += height + 5; +ADDRLP4 1048 +ADDRLP4 1048 +INDIRF4 +ADDRLP4 1052 +INDIRI4 +CNSTI4 5 +ADDI4 +CVIF4 4 +ADDF4 +ASGNF4 +line 2859 +;2859: p = newLinePtr; +ADDRLP4 0 +ADDRLP4 1044 +INDIRP4 +ASGNP4 +line 2860 +;2860: len = 0; +ADDRLP4 1028 +CNSTI4 0 +ASGNI4 +line 2861 +;2861: newLine = 0; +ADDRLP4 1036 +CNSTI4 0 +ASGNI4 +line 2862 +;2862: newLineWidth = 0; +ADDRLP4 1040 +CNSTI4 0 +ASGNI4 +line 2863 +;2863: continue; +ADDRGP4 $1361 +JUMPV +LABELV $1368 +line 2865 +;2864: } +;2865: buff[len++] = *p++; +ADDRLP4 2116 +ADDRLP4 1028 +INDIRI4 +ASGNI4 +ADDRLP4 2124 +CNSTI4 1 +ASGNI4 +ADDRLP4 1028 +ADDRLP4 2116 +INDIRI4 +ADDRLP4 2124 +INDIRI4 +ADDI4 +ASGNI4 +ADDRLP4 2120 +ADDRLP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 0 +ADDRLP4 2120 +INDIRP4 +ADDRLP4 2124 +INDIRI4 +ADDP4 +ASGNP4 +ADDRLP4 2116 +INDIRI4 +ADDRLP4 4 +ADDP4 +ADDRLP4 2120 +INDIRP4 +INDIRI1 +ASGNI1 +line 2866 +;2866: buff[len] = '\0'; +ADDRLP4 1028 +INDIRI4 +ADDRLP4 4 +ADDP4 +CNSTI1 0 +ASGNI1 +line 2867 +;2867: } +LABELV $1361 +line 2832 +ADDRLP4 0 +INDIRP4 +CVPU4 4 +CNSTU4 0 +NEU4 $1360 +LABELV $1362 +line 2868 +;2868:} +LABELV $1353 +endproc Item_Text_AutoWrapped_Paint 2128 32 +export Item_Text_Wrapped_Paint +proc Item_Text_Wrapped_Paint 2112 32 +line 2870 +;2869: +;2870:void Item_Text_Wrapped_Paint(itemDef_t *item) { +line 2881 +;2871: char text[1024]; +;2872: const char *p, *start, *textPtr; +;2873: char buff[1024]; +;2874: int width, height; +;2875: float x, y; +;2876: vec4_t color; +;2877: +;2878: // now paint the text and/or any optional images +;2879: // default to left +;2880: +;2881: if (item->text == NULL) { +ADDRFP4 0 +INDIRP4 +CNSTI4 224 +ADDP4 +INDIRP4 +CVPU4 4 +CNSTU4 0 +NEU4 $1384 +line 2882 +;2882: if (item->cvar == NULL) { +ADDRFP4 0 +INDIRP4 +CNSTI4 264 +ADDP4 +INDIRP4 +CVPU4 4 +CNSTU4 0 +NEU4 $1386 +line 2883 +;2883: return; +ADDRGP4 $1383 +JUMPV +LABELV $1386 +line 2885 +;2884: } +;2885: else { +line 2886 +;2886: DC->getCVarString(item->cvar, text, sizeof(text)); +ADDRFP4 0 +INDIRP4 +CNSTI4 264 +ADDP4 +INDIRP4 +ARGP4 +ADDRLP4 1068 +ARGP4 +CNSTI4 1024 +ARGI4 +ADDRGP4 DC +INDIRP4 +CNSTI4 88 +ADDP4 +INDIRP4 +CALLV +pop +line 2887 +;2887: textPtr = text; +ADDRLP4 1060 +ADDRLP4 1068 +ASGNP4 +line 2888 +;2888: } +line 2889 +;2889: } +ADDRGP4 $1385 +JUMPV +LABELV $1384 +line 2890 +;2890: else { +line 2891 +;2891: textPtr = item->text; +ADDRLP4 1060 +ADDRFP4 0 +INDIRP4 +CNSTI4 224 +ADDP4 +INDIRP4 +ASGNP4 +line 2892 +;2892: } +LABELV $1385 +line 2893 +;2893: if (*textPtr == '\0') { +ADDRLP4 1060 +INDIRP4 +INDIRI1 +CVII4 1 +CNSTI4 0 +NEI4 $1388 +line 2894 +;2894: return; +ADDRGP4 $1383 +JUMPV +LABELV $1388 +line 2897 +;2895: } +;2896: +;2897: Item_TextColor(item, &color); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRLP4 1040 +ARGP4 +ADDRGP4 Item_TextColor +CALLV +pop +line 2898 +;2898: Item_SetTextExtents(item, &width, &height, textPtr); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRLP4 1064 +ARGP4 +ADDRLP4 1056 +ARGP4 +ADDRLP4 1060 +INDIRP4 +ARGP4 +ADDRGP4 Item_SetTextExtents +CALLV +pop +line 2900 +;2899: +;2900: x = item->textRect.x; +ADDRLP4 1036 +ADDRFP4 0 +INDIRP4 +CNSTI4 180 +ADDP4 +INDIRF4 +ASGNF4 +line 2901 +;2901: y = item->textRect.y; +ADDRLP4 1032 +ADDRFP4 0 +INDIRP4 +CNSTI4 184 +ADDP4 +INDIRF4 +ASGNF4 +line 2902 +;2902: start = textPtr; +ADDRLP4 4 +ADDRLP4 1060 +INDIRP4 +ASGNP4 +line 2903 +;2903: p = strchr(textPtr, '\r'); +ADDRLP4 1060 +INDIRP4 +ARGP4 +CNSTI4 13 +ARGI4 +ADDRLP4 2092 +ADDRGP4 strchr +CALLP4 +ASGNP4 +ADDRLP4 0 +ADDRLP4 2092 +INDIRP4 +ASGNP4 +ADDRGP4 $1391 +JUMPV +LABELV $1390 +line 2904 +;2904: while (p && *p) { +line 2905 +;2905: strncpy(buff, start, p-start+1); +ADDRLP4 8 +ARGP4 +ADDRLP4 4 +INDIRP4 +ARGP4 +ADDRLP4 0 +INDIRP4 +CVPU4 4 +ADDRLP4 4 +INDIRP4 +CVPU4 4 +SUBU4 +CVUI4 4 +CNSTI4 1 +ADDI4 +ARGI4 +ADDRGP4 strncpy +CALLP4 +pop +line 2906 +;2906: buff[p-start] = '\0'; +ADDRLP4 0 +INDIRP4 +CVPU4 4 +ADDRLP4 4 +INDIRP4 +CVPU4 4 +SUBU4 +CVUI4 4 +ADDRLP4 8 +ADDP4 +CNSTI1 0 +ASGNI1 +line 2907 +;2907: DC->drawText(x, y, item->textscale, color, buff, 0, 0, item->textStyle); +ADDRLP4 1036 +INDIRF4 +ARGF4 +ADDRLP4 1032 +INDIRF4 +ARGF4 +ADDRLP4 2100 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 2100 +INDIRP4 +CNSTI4 216 +ADDP4 +INDIRF4 +ARGF4 +ADDRLP4 1040 +ARGP4 +ADDRLP4 8 +ARGP4 +CNSTF4 0 +ARGF4 +CNSTI4 0 +ARGI4 +ADDRLP4 2100 +INDIRP4 +CNSTI4 220 +ADDP4 +INDIRI4 +ARGI4 +ADDRGP4 DC +INDIRP4 +CNSTI4 16 +ADDP4 +INDIRP4 +CALLV +pop +line 2908 +;2908: y += height + 5; +ADDRLP4 1032 +ADDRLP4 1032 +INDIRF4 +ADDRLP4 1056 +INDIRI4 +CNSTI4 5 +ADDI4 +CVIF4 4 +ADDF4 +ASGNF4 +line 2909 +;2909: start += p - start + 1; +ADDRLP4 4 +ADDRLP4 0 +INDIRP4 +CVPU4 4 +ADDRLP4 4 +INDIRP4 +CVPU4 4 +SUBU4 +CVUI4 4 +CNSTI4 1 +ADDI4 +ADDRLP4 4 +INDIRP4 +ADDP4 +ASGNP4 +line 2910 +;2910: p = strchr(p+1, '\r'); +ADDRLP4 0 +INDIRP4 +CNSTI4 1 +ADDP4 +ARGP4 +CNSTI4 13 +ARGI4 +ADDRLP4 2108 +ADDRGP4 strchr +CALLP4 +ASGNP4 +ADDRLP4 0 +ADDRLP4 2108 +INDIRP4 +ASGNP4 +line 2911 +;2911: } +LABELV $1391 +line 2904 +ADDRLP4 0 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $1393 +ADDRLP4 0 +INDIRP4 +INDIRI1 +CVII4 1 +CNSTI4 0 +NEI4 $1390 +LABELV $1393 +line 2912 +;2912: DC->drawText(x, y, item->textscale, color, start, 0, 0, item->textStyle); +ADDRLP4 1036 +INDIRF4 +ARGF4 +ADDRLP4 1032 +INDIRF4 +ARGF4 +ADDRLP4 2100 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 2100 +INDIRP4 +CNSTI4 216 +ADDP4 +INDIRF4 +ARGF4 +ADDRLP4 1040 +ARGP4 +ADDRLP4 4 +INDIRP4 +ARGP4 +CNSTF4 0 +ARGF4 +CNSTI4 0 +ARGI4 +ADDRLP4 2100 +INDIRP4 +CNSTI4 220 +ADDP4 +INDIRI4 +ARGI4 +ADDRGP4 DC +INDIRP4 +CNSTI4 16 +ADDP4 +INDIRP4 +CALLV +pop +line 2913 +;2913:} +LABELV $1383 +endproc Item_Text_Wrapped_Paint 2112 32 +export Item_Text_Paint +proc Item_Text_Paint 1056 32 +line 2915 +;2914: +;2915:void Item_Text_Paint(itemDef_t *item) { +line 2921 +;2916: char text[1024]; +;2917: const char *textPtr; +;2918: int height, width; +;2919: vec4_t color; +;2920: +;2921: if (item->window.flags & WINDOW_WRAPPED) { +ADDRFP4 0 +INDIRP4 +CNSTI4 68 +ADDP4 +INDIRI4 +CNSTI4 262144 +BANDI4 +CNSTI4 0 +EQI4 $1395 +line 2922 +;2922: Item_Text_Wrapped_Paint(item); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRGP4 Item_Text_Wrapped_Paint +CALLV +pop +line 2923 +;2923: return; +ADDRGP4 $1394 +JUMPV +LABELV $1395 +line 2925 +;2924: } +;2925: if (item->window.flags & WINDOW_AUTOWRAPPED) { +ADDRFP4 0 +INDIRP4 +CNSTI4 68 +ADDP4 +INDIRI4 +CNSTI4 524288 +BANDI4 +CNSTI4 0 +EQI4 $1397 +line 2926 +;2926: Item_Text_AutoWrapped_Paint(item); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRGP4 Item_Text_AutoWrapped_Paint +CALLV +pop +line 2927 +;2927: return; +ADDRGP4 $1394 +JUMPV +LABELV $1397 +line 2930 +;2928: } +;2929: +;2930: if (item->text == NULL) { +ADDRFP4 0 +INDIRP4 +CNSTI4 224 +ADDP4 +INDIRP4 +CVPU4 4 +CNSTU4 0 +NEU4 $1399 +line 2931 +;2931: if (item->cvar == NULL) { +ADDRFP4 0 +INDIRP4 +CNSTI4 264 +ADDP4 +INDIRP4 +CVPU4 4 +CNSTU4 0 +NEU4 $1401 +line 2932 +;2932: return; +ADDRGP4 $1394 +JUMPV +LABELV $1401 +line 2934 +;2933: } +;2934: else { +line 2935 +;2935: DC->getCVarString(item->cvar, text, sizeof(text)); +ADDRFP4 0 +INDIRP4 +CNSTI4 264 +ADDP4 +INDIRP4 +ARGP4 +ADDRLP4 28 +ARGP4 +CNSTI4 1024 +ARGI4 +ADDRGP4 DC +INDIRP4 +CNSTI4 88 +ADDP4 +INDIRP4 +CALLV +pop +line 2936 +;2936: textPtr = text; +ADDRLP4 0 +ADDRLP4 28 +ASGNP4 +line 2937 +;2937: } +line 2938 +;2938: } +ADDRGP4 $1400 +JUMPV +LABELV $1399 +line 2939 +;2939: else { +line 2940 +;2940: textPtr = item->text; +ADDRLP4 0 +ADDRFP4 0 +INDIRP4 +CNSTI4 224 +ADDP4 +INDIRP4 +ASGNP4 +line 2941 +;2941: } +LABELV $1400 +line 2944 +;2942: +;2943: // this needs to go here as it sets extents for cvar types as well +;2944: Item_SetTextExtents(item, &width, &height, textPtr); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRLP4 24 +ARGP4 +ADDRLP4 20 +ARGP4 +ADDRLP4 0 +INDIRP4 +ARGP4 +ADDRGP4 Item_SetTextExtents +CALLV +pop +line 2946 +;2945: +;2946: if (*textPtr == '\0') { +ADDRLP4 0 +INDIRP4 +INDIRI1 +CVII4 1 +CNSTI4 0 +NEI4 $1403 +line 2947 +;2947: return; +ADDRGP4 $1394 +JUMPV +LABELV $1403 +line 2951 +;2948: } +;2949: +;2950: +;2951: Item_TextColor(item, &color); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRLP4 4 +ARGP4 +ADDRGP4 Item_TextColor +CALLV +pop +line 2982 +;2952: +;2953: //FIXME: this is a fucking mess +;2954:/* +;2955: adjust = 0; +;2956: if (item->textStyle == ITEM_TEXTSTYLE_OUTLINED || item->textStyle == ITEM_TEXTSTYLE_OUTLINESHADOWED) { +;2957: adjust = 0.5; +;2958: } +;2959: +;2960: if (item->textStyle == ITEM_TEXTSTYLE_SHADOWED || item->textStyle == ITEM_TEXTSTYLE_OUTLINESHADOWED) { +;2961: Fade(&item->window.flags, &DC->Assets.shadowColor[3], DC->Assets.fadeClamp, &item->window.nextTime, DC->Assets.fadeCycle, qfalse); +;2962: DC->drawText(item->textRect.x + DC->Assets.shadowX, item->textRect.y + DC->Assets.shadowY, item->textscale, DC->Assets.shadowColor, textPtr, adjust); +;2963: } +;2964:*/ +;2965: +;2966: +;2967:// if (item->textStyle == ITEM_TEXTSTYLE_OUTLINED || item->textStyle == ITEM_TEXTSTYLE_OUTLINESHADOWED) { +;2968:// Fade(&item->window.flags, &item->window.outlineColor[3], DC->Assets.fadeClamp, &item->window.nextTime, DC->Assets.fadeCycle, qfalse); +;2969:// /* +;2970:// Text_Paint(item->textRect.x-1, item->textRect.y-1, item->textscale, item->window.foreColor, textPtr, adjust); +;2971:// Text_Paint(item->textRect.x, item->textRect.y-1, item->textscale, item->window.foreColor, textPtr, adjust); +;2972:// Text_Paint(item->textRect.x+1, item->textRect.y-1, item->textscale, item->window.foreColor, textPtr, adjust); +;2973:// Text_Paint(item->textRect.x-1, item->textRect.y, item->textscale, item->window.foreColor, textPtr, adjust); +;2974:// Text_Paint(item->textRect.x+1, item->textRect.y, item->textscale, item->window.foreColor, textPtr, adjust); +;2975:// Text_Paint(item->textRect.x-1, item->textRect.y+1, item->textscale, item->window.foreColor, textPtr, adjust); +;2976:// Text_Paint(item->textRect.x, item->textRect.y+1, item->textscale, item->window.foreColor, textPtr, adjust); +;2977:// Text_Paint(item->textRect.x+1, item->textRect.y+1, item->textscale, item->window.foreColor, textPtr, adjust); +;2978:// */ +;2979:// DC->drawText(item->textRect.x - 1, item->textRect.y + 1, item->textscale * 1.02, item->window.outlineColor, textPtr, adjust); +;2980:// } +;2981: +;2982: DC->drawText(item->textRect.x, item->textRect.y, item->textscale, color, textPtr, 0, 0, item->textStyle); +ADDRLP4 1052 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 1052 +INDIRP4 +CNSTI4 180 +ADDP4 +INDIRF4 +ARGF4 +ADDRLP4 1052 +INDIRP4 +CNSTI4 184 +ADDP4 +INDIRF4 +ARGF4 +ADDRLP4 1052 +INDIRP4 +CNSTI4 216 +ADDP4 +INDIRF4 +ARGF4 +ADDRLP4 4 +ARGP4 +ADDRLP4 0 +INDIRP4 +ARGP4 +CNSTF4 0 +ARGF4 +CNSTI4 0 +ARGI4 +ADDRLP4 1052 +INDIRP4 +CNSTI4 220 +ADDP4 +INDIRI4 +ARGI4 +ADDRGP4 DC +INDIRP4 +CNSTI4 16 +ADDP4 +INDIRP4 +CALLV +pop +line 2983 +;2983:} +LABELV $1394 +endproc Item_Text_Paint 1056 32 +export Item_TextField_Paint +proc Item_TextField_Paint 1104 36 +line 2990 +;2984: +;2985: +;2986: +;2987://float trap_Cvar_VariableValue( const char *var_name ); +;2988://void trap_Cvar_VariableStringBuffer( const char *var_name, char *buffer, int bufsize ); +;2989: +;2990:void Item_TextField_Paint(itemDef_t *item) { +line 2994 +;2991: char buff[1024]; +;2992: vec4_t newColor, lowLight; +;2993: int offset; +;2994: menuDef_t *parent = (menuDef_t*)item->parent; +ADDRLP4 0 +ADDRFP4 0 +INDIRP4 +CNSTI4 228 +ADDP4 +INDIRP4 +ASGNP4 +line 2995 +;2995: editFieldDef_t *editPtr = (editFieldDef_t*)item->typeData; +ADDRLP4 4 +ADDRFP4 0 +INDIRP4 +CNSTI4 536 +ADDP4 +INDIRP4 +ASGNP4 +line 2997 +;2996: +;2997: Item_Text_Paint(item); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRGP4 Item_Text_Paint +CALLV +pop +line 2999 +;2998: +;2999: buff[0] = '\0'; +ADDRLP4 8 +CNSTI1 0 +ASGNI1 +line 3001 +;3000: +;3001: if (item->cvar) { +ADDRFP4 0 +INDIRP4 +CNSTI4 264 +ADDP4 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $1406 +line 3002 +;3002: DC->getCVarString(item->cvar, buff, sizeof(buff)); +ADDRFP4 0 +INDIRP4 +CNSTI4 264 +ADDP4 +INDIRP4 +ARGP4 +ADDRLP4 8 +ARGP4 +CNSTI4 1024 +ARGI4 +ADDRGP4 DC +INDIRP4 +CNSTI4 88 +ADDP4 +INDIRP4 +CALLV +pop +line 3003 +;3003: } +LABELV $1406 +line 3005 +;3004: +;3005: parent = (menuDef_t*)item->parent; +ADDRLP4 0 +ADDRFP4 0 +INDIRP4 +CNSTI4 228 +ADDP4 +INDIRP4 +ASGNP4 +line 3007 +;3006: +;3007: if (item->window.flags & WINDOW_HASFOCUS) { +ADDRFP4 0 +INDIRP4 +CNSTI4 68 +ADDP4 +INDIRI4 +CNSTI4 2 +BANDI4 +CNSTI4 0 +EQI4 $1408 +line 3008 +;3008: lowLight[0] = 0.8 * parent->focusColor[0]; +ADDRLP4 1032 +CNSTF4 1061997773 +ADDRLP4 0 +INDIRP4 +CNSTI4 228 +ADDP4 +INDIRF4 +MULF4 +ASGNF4 +line 3009 +;3009: lowLight[1] = 0.8 * parent->focusColor[1]; +ADDRLP4 1032+4 +CNSTF4 1061997773 +ADDRLP4 0 +INDIRP4 +CNSTI4 232 +ADDP4 +INDIRF4 +MULF4 +ASGNF4 +line 3010 +;3010: lowLight[2] = 0.8 * parent->focusColor[2]; +ADDRLP4 1032+8 +CNSTF4 1061997773 +ADDRLP4 0 +INDIRP4 +CNSTI4 236 +ADDP4 +INDIRF4 +MULF4 +ASGNF4 +line 3011 +;3011: lowLight[3] = 0.8 * parent->focusColor[3]; +ADDRLP4 1032+12 +CNSTF4 1061997773 +ADDRLP4 0 +INDIRP4 +CNSTI4 240 +ADDP4 +INDIRF4 +MULF4 +ASGNF4 +line 3012 +;3012: LerpColor(parent->focusColor,lowLight,newColor,0.5+0.5*sin(DC->realTime / PULSE_DIVISOR)); +ADDRGP4 DC +INDIRP4 +CNSTI4 208 +ADDP4 +INDIRI4 +CNSTI4 75 +DIVI4 +CVIF4 4 +ARGF4 +ADDRLP4 1068 +ADDRGP4 sin +CALLF4 +ASGNF4 +ADDRLP4 0 +INDIRP4 +CNSTI4 228 +ADDP4 +ARGP4 +ADDRLP4 1032 +ARGP4 +ADDRLP4 1048 +ARGP4 +CNSTF4 1056964608 +ADDRLP4 1068 +INDIRF4 +MULF4 +CNSTF4 1056964608 +ADDF4 +ARGF4 +ADDRGP4 LerpColor +CALLV +pop +line 3013 +;3013: } else { +ADDRGP4 $1409 +JUMPV +LABELV $1408 +line 3014 +;3014: memcpy(&newColor, &item->window.foreColor, sizeof(vec4_t)); +ADDRLP4 1048 +ARGP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 112 +ADDP4 +ARGP4 +CNSTI4 16 +ARGI4 +ADDRGP4 memcpy +CALLP4 +pop +line 3015 +;3015: } +LABELV $1409 +line 3017 +;3016: +;3017: offset = (item->text && *item->text) ? 8 : 0; +ADDRLP4 1072 +ADDRFP4 0 +INDIRP4 +CNSTI4 224 +ADDP4 +INDIRP4 +ASGNP4 +ADDRLP4 1072 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $1414 +ADDRLP4 1072 +INDIRP4 +INDIRI1 +CVII4 1 +CNSTI4 0 +EQI4 $1414 +ADDRLP4 1068 +CNSTI4 8 +ASGNI4 +ADDRGP4 $1415 +JUMPV +LABELV $1414 +ADDRLP4 1068 +CNSTI4 0 +ASGNI4 +LABELV $1415 +ADDRLP4 1064 +ADDRLP4 1068 +INDIRI4 +ASGNI4 +line 3018 +;3018: if (item->window.flags & WINDOW_HASFOCUS && g_editingField) { +ADDRLP4 1076 +CNSTI4 0 +ASGNI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 68 +ADDP4 +INDIRI4 +CNSTI4 2 +BANDI4 +ADDRLP4 1076 +INDIRI4 +EQI4 $1416 +ADDRGP4 g_editingField +INDIRI4 +ADDRLP4 1076 +INDIRI4 +EQI4 $1416 +line 3019 +;3019: char cursor = DC->getOverstrikeMode() ? '_' : '|'; +ADDRLP4 1088 +ADDRGP4 DC +INDIRP4 +CNSTI4 108 +ADDP4 +INDIRP4 +CALLI4 +ASGNI4 +ADDRLP4 1088 +INDIRI4 +CNSTI4 0 +EQI4 $1419 +ADDRLP4 1084 +CNSTI4 95 +ASGNI4 +ADDRGP4 $1420 +JUMPV +LABELV $1419 +ADDRLP4 1084 +CNSTI4 124 +ASGNI4 +LABELV $1420 +ADDRLP4 1080 +ADDRLP4 1084 +INDIRI4 +CVII1 4 +ASGNI1 +line 3020 +;3020: DC->drawTextWithCursor(item->textRect.x + item->textRect.w + offset, item->textRect.y, item->textscale, newColor, buff + editPtr->paintOffset, item->cursorPos - editPtr->paintOffset , cursor, editPtr->maxPaintChars, item->textStyle); +ADDRLP4 1092 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 1092 +INDIRP4 +CNSTI4 180 +ADDP4 +INDIRF4 +ADDRLP4 1092 +INDIRP4 +CNSTI4 188 +ADDP4 +INDIRF4 +ADDF4 +ADDRLP4 1064 +INDIRI4 +CVIF4 4 +ADDF4 +ARGF4 +ADDRLP4 1092 +INDIRP4 +CNSTI4 184 +ADDP4 +INDIRF4 +ARGF4 +ADDRLP4 1092 +INDIRP4 +CNSTI4 216 +ADDP4 +INDIRF4 +ARGF4 +ADDRLP4 1048 +ARGP4 +ADDRLP4 1100 +ADDRLP4 4 +INDIRP4 +CNSTI4 24 +ADDP4 +INDIRI4 +ASGNI4 +ADDRLP4 1100 +INDIRI4 +ADDRLP4 8 +ADDP4 +ARGP4 +ADDRLP4 1092 +INDIRP4 +CNSTI4 532 +ADDP4 +INDIRI4 +ADDRLP4 1100 +INDIRI4 +SUBI4 +ARGI4 +ADDRLP4 1080 +INDIRI1 +CVII4 1 +ARGI4 +ADDRLP4 4 +INDIRP4 +CNSTI4 20 +ADDP4 +INDIRI4 +ARGI4 +ADDRLP4 1092 +INDIRP4 +CNSTI4 220 +ADDP4 +INDIRI4 +ARGI4 +ADDRGP4 DC +INDIRP4 +CNSTI4 100 +ADDP4 +INDIRP4 +CALLV +pop +line 3021 +;3021: } else { +ADDRGP4 $1417 +JUMPV +LABELV $1416 +line 3022 +;3022: DC->drawText(item->textRect.x + item->textRect.w + offset, item->textRect.y, item->textscale, newColor, buff + editPtr->paintOffset, 0, editPtr->maxPaintChars, item->textStyle); +ADDRLP4 1080 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 1080 +INDIRP4 +CNSTI4 180 +ADDP4 +INDIRF4 +ADDRLP4 1080 +INDIRP4 +CNSTI4 188 +ADDP4 +INDIRF4 +ADDF4 +ADDRLP4 1064 +INDIRI4 +CVIF4 4 +ADDF4 +ARGF4 +ADDRLP4 1080 +INDIRP4 +CNSTI4 184 +ADDP4 +INDIRF4 +ARGF4 +ADDRLP4 1080 +INDIRP4 +CNSTI4 216 +ADDP4 +INDIRF4 +ARGF4 +ADDRLP4 1048 +ARGP4 +ADDRLP4 4 +INDIRP4 +CNSTI4 24 +ADDP4 +INDIRI4 +ADDRLP4 8 +ADDP4 +ARGP4 +CNSTF4 0 +ARGF4 +ADDRLP4 4 +INDIRP4 +CNSTI4 20 +ADDP4 +INDIRI4 +ARGI4 +ADDRLP4 1080 +INDIRP4 +CNSTI4 220 +ADDP4 +INDIRI4 +ARGI4 +ADDRGP4 DC +INDIRP4 +CNSTI4 16 +ADDP4 +INDIRP4 +CALLV +pop +line 3023 +;3023: } +LABELV $1417 +line 3025 +;3024: +;3025:} +LABELV $1405 +endproc Item_TextField_Paint 1104 36 +export Item_YesNo_Paint +proc Item_YesNo_Paint 56 32 +line 3027 +;3026: +;3027:void Item_YesNo_Paint(itemDef_t *item) { +line 3030 +;3028: vec4_t newColor, lowLight; +;3029: float value; +;3030: menuDef_t *parent = (menuDef_t*)item->parent; +ADDRLP4 0 +ADDRFP4 0 +INDIRP4 +CNSTI4 228 +ADDP4 +INDIRP4 +ASGNP4 +line 3032 +;3031: +;3032: value = (item->cvar) ? DC->getCVarValue(item->cvar) : 0; +ADDRFP4 0 +INDIRP4 +CNSTI4 264 +ADDP4 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $1423 +ADDRFP4 0 +INDIRP4 +CNSTI4 264 +ADDP4 +INDIRP4 +ARGP4 +ADDRLP4 44 +ADDRGP4 DC +INDIRP4 +CNSTI4 92 +ADDP4 +INDIRP4 +CALLF4 +ASGNF4 +ADDRLP4 40 +ADDRLP4 44 +INDIRF4 +ASGNF4 +ADDRGP4 $1424 +JUMPV +LABELV $1423 +ADDRLP4 40 +CNSTF4 0 +ASGNF4 +LABELV $1424 +ADDRLP4 36 +ADDRLP4 40 +INDIRF4 +ASGNF4 +line 3034 +;3033: +;3034: if (item->window.flags & WINDOW_HASFOCUS) { +ADDRFP4 0 +INDIRP4 +CNSTI4 68 +ADDP4 +INDIRI4 +CNSTI4 2 +BANDI4 +CNSTI4 0 +EQI4 $1425 +line 3035 +;3035: lowLight[0] = 0.8 * parent->focusColor[0]; +ADDRLP4 4 +CNSTF4 1061997773 +ADDRLP4 0 +INDIRP4 +CNSTI4 228 +ADDP4 +INDIRF4 +MULF4 +ASGNF4 +line 3036 +;3036: lowLight[1] = 0.8 * parent->focusColor[1]; +ADDRLP4 4+4 +CNSTF4 1061997773 +ADDRLP4 0 +INDIRP4 +CNSTI4 232 +ADDP4 +INDIRF4 +MULF4 +ASGNF4 +line 3037 +;3037: lowLight[2] = 0.8 * parent->focusColor[2]; +ADDRLP4 4+8 +CNSTF4 1061997773 +ADDRLP4 0 +INDIRP4 +CNSTI4 236 +ADDP4 +INDIRF4 +MULF4 +ASGNF4 +line 3038 +;3038: lowLight[3] = 0.8 * parent->focusColor[3]; +ADDRLP4 4+12 +CNSTF4 1061997773 +ADDRLP4 0 +INDIRP4 +CNSTI4 240 +ADDP4 +INDIRF4 +MULF4 +ASGNF4 +line 3039 +;3039: LerpColor(parent->focusColor,lowLight,newColor,0.5+0.5*sin(DC->realTime / PULSE_DIVISOR)); +ADDRGP4 DC +INDIRP4 +CNSTI4 208 +ADDP4 +INDIRI4 +CNSTI4 75 +DIVI4 +CVIF4 4 +ARGF4 +ADDRLP4 48 +ADDRGP4 sin +CALLF4 +ASGNF4 +ADDRLP4 0 +INDIRP4 +CNSTI4 228 +ADDP4 +ARGP4 +ADDRLP4 4 +ARGP4 +ADDRLP4 20 +ARGP4 +CNSTF4 1056964608 +ADDRLP4 48 +INDIRF4 +MULF4 +CNSTF4 1056964608 +ADDF4 +ARGF4 +ADDRGP4 LerpColor +CALLV +pop +line 3040 +;3040: } else { +ADDRGP4 $1426 +JUMPV +LABELV $1425 +line 3041 +;3041: memcpy(&newColor, &item->window.foreColor, sizeof(vec4_t)); +ADDRLP4 20 +ARGP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 112 +ADDP4 +ARGP4 +CNSTI4 16 +ARGI4 +ADDRGP4 memcpy +CALLP4 +pop +line 3042 +;3042: } +LABELV $1426 +line 3044 +;3043: +;3044: if (item->text) { +ADDRFP4 0 +INDIRP4 +CNSTI4 224 +ADDP4 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $1430 +line 3045 +;3045: Item_Text_Paint(item); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRGP4 Item_Text_Paint +CALLV +pop +line 3046 +;3046: DC->drawText(item->textRect.x + item->textRect.w + 8, item->textRect.y, item->textscale, newColor, (value != 0) ? "Yes" : "No", 0, 0, item->textStyle); +ADDRLP4 52 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 52 +INDIRP4 +CNSTI4 180 +ADDP4 +INDIRF4 +ADDRLP4 52 +INDIRP4 +CNSTI4 188 +ADDP4 +INDIRF4 +ADDF4 +CNSTF4 1090519040 +ADDF4 +ARGF4 +ADDRLP4 52 +INDIRP4 +CNSTI4 184 +ADDP4 +INDIRF4 +ARGF4 +ADDRLP4 52 +INDIRP4 +CNSTI4 216 +ADDP4 +INDIRF4 +ARGF4 +ADDRLP4 20 +ARGP4 +ADDRLP4 36 +INDIRF4 +CNSTF4 0 +EQF4 $1435 +ADDRLP4 48 +ADDRGP4 $1432 +ASGNP4 +ADDRGP4 $1436 +JUMPV +LABELV $1435 +ADDRLP4 48 +ADDRGP4 $1433 +ASGNP4 +LABELV $1436 +ADDRLP4 48 +INDIRP4 +ARGP4 +CNSTF4 0 +ARGF4 +CNSTI4 0 +ARGI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 220 +ADDP4 +INDIRI4 +ARGI4 +ADDRGP4 DC +INDIRP4 +CNSTI4 16 +ADDP4 +INDIRP4 +CALLV +pop +line 3047 +;3047: } else { +ADDRGP4 $1431 +JUMPV +LABELV $1430 +line 3048 +;3048: DC->drawText(item->textRect.x, item->textRect.y, item->textscale, newColor, (value != 0) ? "Yes" : "No", 0, 0, item->textStyle); +ADDRLP4 52 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 52 +INDIRP4 +CNSTI4 180 +ADDP4 +INDIRF4 +ARGF4 +ADDRLP4 52 +INDIRP4 +CNSTI4 184 +ADDP4 +INDIRF4 +ARGF4 +ADDRLP4 52 +INDIRP4 +CNSTI4 216 +ADDP4 +INDIRF4 +ARGF4 +ADDRLP4 20 +ARGP4 +ADDRLP4 36 +INDIRF4 +CNSTF4 0 +EQF4 $1438 +ADDRLP4 48 +ADDRGP4 $1432 +ASGNP4 +ADDRGP4 $1439 +JUMPV +LABELV $1438 +ADDRLP4 48 +ADDRGP4 $1433 +ASGNP4 +LABELV $1439 +ADDRLP4 48 +INDIRP4 +ARGP4 +CNSTF4 0 +ARGF4 +CNSTI4 0 +ARGI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 220 +ADDP4 +INDIRI4 +ARGI4 +ADDRGP4 DC +INDIRP4 +CNSTI4 16 +ADDP4 +INDIRP4 +CALLV +pop +line 3049 +;3049: } +LABELV $1431 +line 3050 +;3050:} +LABELV $1421 +endproc Item_YesNo_Paint 56 32 +export Item_Multi_Paint +proc Item_Multi_Paint 48 32 +line 3052 +;3051: +;3052:void Item_Multi_Paint(itemDef_t *item) { +line 3054 +;3053: vec4_t newColor, lowLight; +;3054: const char *text = ""; +ADDRLP4 4 +ADDRGP4 $54 +ASGNP4 +line 3055 +;3055: menuDef_t *parent = (menuDef_t*)item->parent; +ADDRLP4 0 +ADDRFP4 0 +INDIRP4 +CNSTI4 228 +ADDP4 +INDIRP4 +ASGNP4 +line 3057 +;3056: +;3057: if (item->window.flags & WINDOW_HASFOCUS) { +ADDRFP4 0 +INDIRP4 +CNSTI4 68 +ADDP4 +INDIRI4 +CNSTI4 2 +BANDI4 +CNSTI4 0 +EQI4 $1441 +line 3058 +;3058: lowLight[0] = 0.8 * parent->focusColor[0]; +ADDRLP4 8 +CNSTF4 1061997773 +ADDRLP4 0 +INDIRP4 +CNSTI4 228 +ADDP4 +INDIRF4 +MULF4 +ASGNF4 +line 3059 +;3059: lowLight[1] = 0.8 * parent->focusColor[1]; +ADDRLP4 8+4 +CNSTF4 1061997773 +ADDRLP4 0 +INDIRP4 +CNSTI4 232 +ADDP4 +INDIRF4 +MULF4 +ASGNF4 +line 3060 +;3060: lowLight[2] = 0.8 * parent->focusColor[2]; +ADDRLP4 8+8 +CNSTF4 1061997773 +ADDRLP4 0 +INDIRP4 +CNSTI4 236 +ADDP4 +INDIRF4 +MULF4 +ASGNF4 +line 3061 +;3061: lowLight[3] = 0.8 * parent->focusColor[3]; +ADDRLP4 8+12 +CNSTF4 1061997773 +ADDRLP4 0 +INDIRP4 +CNSTI4 240 +ADDP4 +INDIRF4 +MULF4 +ASGNF4 +line 3062 +;3062: LerpColor(parent->focusColor,lowLight,newColor,0.5+0.5*sin(DC->realTime / PULSE_DIVISOR)); +ADDRGP4 DC +INDIRP4 +CNSTI4 208 +ADDP4 +INDIRI4 +CNSTI4 75 +DIVI4 +CVIF4 4 +ARGF4 +ADDRLP4 40 +ADDRGP4 sin +CALLF4 +ASGNF4 +ADDRLP4 0 +INDIRP4 +CNSTI4 228 +ADDP4 +ARGP4 +ADDRLP4 8 +ARGP4 +ADDRLP4 24 +ARGP4 +CNSTF4 1056964608 +ADDRLP4 40 +INDIRF4 +MULF4 +CNSTF4 1056964608 +ADDF4 +ARGF4 +ADDRGP4 LerpColor +CALLV +pop +line 3063 +;3063: } else { +ADDRGP4 $1442 +JUMPV +LABELV $1441 +line 3064 +;3064: memcpy(&newColor, &item->window.foreColor, sizeof(vec4_t)); +ADDRLP4 24 +ARGP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 112 +ADDP4 +ARGP4 +CNSTI4 16 +ARGI4 +ADDRGP4 memcpy +CALLP4 +pop +line 3065 +;3065: } +LABELV $1442 +line 3067 +;3066: +;3067: text = Item_Multi_Setting(item); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRLP4 40 +ADDRGP4 Item_Multi_Setting +CALLP4 +ASGNP4 +ADDRLP4 4 +ADDRLP4 40 +INDIRP4 +ASGNP4 +line 3069 +;3068: +;3069: if (item->text) { +ADDRFP4 0 +INDIRP4 +CNSTI4 224 +ADDP4 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $1446 +line 3070 +;3070: Item_Text_Paint(item); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRGP4 Item_Text_Paint +CALLV +pop +line 3071 +;3071: DC->drawText(item->textRect.x + item->textRect.w + 8, item->textRect.y, item->textscale, newColor, text, 0, 0, item->textStyle); +ADDRLP4 44 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 44 +INDIRP4 +CNSTI4 180 +ADDP4 +INDIRF4 +ADDRLP4 44 +INDIRP4 +CNSTI4 188 +ADDP4 +INDIRF4 +ADDF4 +CNSTF4 1090519040 +ADDF4 +ARGF4 +ADDRLP4 44 +INDIRP4 +CNSTI4 184 +ADDP4 +INDIRF4 +ARGF4 +ADDRLP4 44 +INDIRP4 +CNSTI4 216 +ADDP4 +INDIRF4 +ARGF4 +ADDRLP4 24 +ARGP4 +ADDRLP4 4 +INDIRP4 +ARGP4 +CNSTF4 0 +ARGF4 +CNSTI4 0 +ARGI4 +ADDRLP4 44 +INDIRP4 +CNSTI4 220 +ADDP4 +INDIRI4 +ARGI4 +ADDRGP4 DC +INDIRP4 +CNSTI4 16 +ADDP4 +INDIRP4 +CALLV +pop +line 3072 +;3072: } else { +ADDRGP4 $1447 +JUMPV +LABELV $1446 +line 3073 +;3073: DC->drawText(item->textRect.x, item->textRect.y, item->textscale, newColor, text, 0, 0, item->textStyle); +ADDRLP4 44 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 44 +INDIRP4 +CNSTI4 180 +ADDP4 +INDIRF4 +ARGF4 +ADDRLP4 44 +INDIRP4 +CNSTI4 184 +ADDP4 +INDIRF4 +ARGF4 +ADDRLP4 44 +INDIRP4 +CNSTI4 216 +ADDP4 +INDIRF4 +ARGF4 +ADDRLP4 24 +ARGP4 +ADDRLP4 4 +INDIRP4 +ARGP4 +CNSTF4 0 +ARGF4 +CNSTI4 0 +ARGI4 +ADDRLP4 44 +INDIRP4 +CNSTI4 220 +ADDP4 +INDIRI4 +ARGI4 +ADDRGP4 DC +INDIRP4 +CNSTI4 16 +ADDP4 +INDIRP4 +CALLV +pop +line 3074 +;3074: } +LABELV $1447 +line 3075 +;3075:} +LABELV $1440 +endproc Item_Multi_Paint 48 32 +data +align 4 +LABELV g_bindings +address $1450 +byte 4 9 +byte 4 -1 +byte 4 -1 +byte 4 -1 +skip 4 +address $1451 +byte 4 13 +byte 4 -1 +byte 4 -1 +byte 4 -1 +skip 4 +address $1452 +byte 4 138 +byte 4 -1 +byte 4 -1 +byte 4 -1 +skip 4 +address $1453 +byte 4 132 +byte 4 -1 +byte 4 -1 +byte 4 -1 +skip 4 +address $1454 +byte 4 133 +byte 4 -1 +byte 4 -1 +byte 4 -1 +skip 4 +address $1455 +byte 4 44 +byte 4 -1 +byte 4 -1 +byte 4 -1 +skip 4 +address $1456 +byte 4 46 +byte 4 -1 +byte 4 -1 +byte 4 -1 +skip 4 +address $1457 +byte 4 32 +byte 4 -1 +byte 4 -1 +byte 4 -1 +skip 4 +address $1458 +byte 4 99 +byte 4 -1 +byte 4 -1 +byte 4 -1 +skip 4 +address $1459 +byte 4 134 +byte 4 -1 +byte 4 -1 +byte 4 -1 +skip 4 +address $1460 +byte 4 135 +byte 4 -1 +byte 4 -1 +byte 4 -1 +skip 4 +address $1461 +byte 4 136 +byte 4 -1 +byte 4 -1 +byte 4 -1 +skip 4 +address $1462 +byte 4 141 +byte 4 -1 +byte 4 -1 +byte 4 -1 +skip 4 +address $1463 +byte 4 140 +byte 4 -1 +byte 4 -1 +byte 4 -1 +skip 4 +address $1464 +byte 4 47 +byte 4 -1 +byte 4 -1 +byte 4 -1 +skip 4 +address $1465 +byte 4 144 +byte 4 -1 +byte 4 -1 +byte 4 -1 +skip 4 +address $1466 +byte 4 -1 +byte 4 -1 +byte 4 -1 +byte 4 -1 +skip 4 +address $1467 +byte 4 49 +byte 4 -1 +byte 4 -1 +byte 4 -1 +skip 4 +address $1468 +byte 4 50 +byte 4 -1 +byte 4 -1 +byte 4 -1 +skip 4 +address $1469 +byte 4 51 +byte 4 -1 +byte 4 -1 +byte 4 -1 +skip 4 +address $1470 +byte 4 52 +byte 4 -1 +byte 4 -1 +byte 4 -1 +skip 4 +address $1471 +byte 4 53 +byte 4 -1 +byte 4 -1 +byte 4 -1 +skip 4 +address $1472 +byte 4 54 +byte 4 -1 +byte 4 -1 +byte 4 -1 +skip 4 +address $1473 +byte 4 55 +byte 4 -1 +byte 4 -1 +byte 4 -1 +skip 4 +address $1474 +byte 4 56 +byte 4 -1 +byte 4 -1 +byte 4 -1 +skip 4 +address $1475 +byte 4 57 +byte 4 -1 +byte 4 -1 +byte 4 -1 +skip 4 +address $1476 +byte 4 48 +byte 4 -1 +byte 4 -1 +byte 4 -1 +skip 4 +address $1477 +byte 4 -1 +byte 4 -1 +byte 4 -1 +byte 4 -1 +skip 4 +address $1478 +byte 4 -1 +byte 4 -1 +byte 4 -1 +byte 4 -1 +skip 4 +address $1479 +byte 4 -1 +byte 4 -1 +byte 4 -1 +byte 4 -1 +skip 4 +address $1480 +byte 4 137 +byte 4 -1 +byte 4 -1 +byte 4 -1 +skip 4 +address $1481 +byte 4 91 +byte 4 -1 +byte 4 -1 +byte 4 -1 +skip 4 +address $1482 +byte 4 93 +byte 4 -1 +byte 4 -1 +byte 4 -1 +skip 4 +address $1483 +byte 4 180 +byte 4 -1 +byte 4 -1 +byte 4 -1 +skip 4 +address $1484 +byte 4 181 +byte 4 -1 +byte 4 -1 +byte 4 -1 +skip 4 +address $1485 +byte 4 119 +byte 4 -1 +byte 4 -1 +byte 4 -1 +skip 4 +address $1486 +byte 4 114 +byte 4 -1 +byte 4 -1 +byte 4 -1 +skip 4 +address $1487 +byte 4 116 +byte 4 -1 +byte 4 -1 +byte 4 -1 +skip 4 +address $1488 +byte 4 121 +byte 4 -1 +byte 4 -1 +byte 4 -1 +skip 4 +address $1489 +byte 4 110 +byte 4 -1 +byte 4 -1 +byte 4 -1 +skip 4 +address $1490 +byte 4 111 +byte 4 -1 +byte 4 -1 +byte 4 -1 +skip 4 +address $1491 +byte 4 100 +byte 4 -1 +byte 4 -1 +byte 4 -1 +skip 4 +address $1492 +byte 4 112 +byte 4 -1 +byte 4 -1 +byte 4 -1 +skip 4 +address $1493 +byte 4 99 +byte 4 -1 +byte 4 -1 +byte 4 -1 +skip 4 +address $1494 +byte 4 102 +byte 4 -1 +byte 4 -1 +byte 4 -1 +skip 4 +address $1495 +byte 4 118 +byte 4 -1 +byte 4 -1 +byte 4 -1 +skip 4 +address $1496 +byte 4 101 +byte 4 -1 +byte 4 -1 +byte 4 -1 +skip 4 +address $1497 +byte 4 105 +byte 4 -1 +byte 4 -1 +byte 4 -1 +skip 4 +address $1498 +byte 4 107 +byte 4 -1 +byte 4 -1 +byte 4 -1 +skip 4 +address $1499 +byte 4 145 +byte 4 -1 +byte 4 -1 +byte 4 -1 +skip 4 +address $1500 +byte 4 146 +byte 4 -1 +byte 4 -1 +byte 4 -1 +skip 4 +address $1501 +byte 4 147 +byte 4 -1 +byte 4 -1 +byte 4 -1 +skip 4 +address $1502 +byte 4 148 +byte 4 -1 +byte 4 -1 +byte 4 -1 +skip 4 +address $1503 +byte 4 149 +byte 4 -1 +byte 4 -1 +byte 4 -1 +skip 4 +address $1504 +byte 4 162 +byte 4 -1 +byte 4 -1 +byte 4 -1 +skip 4 +address $1505 +byte 4 168 +byte 4 -1 +byte 4 -1 +byte 4 -1 +skip 4 +address $1506 +byte 4 -1 +byte 4 -1 +byte 4 -1 +byte 4 -1 +skip 4 +address $1507 +byte 4 -1 +byte 4 -1 +byte 4 -1 +byte 4 -1 +skip 4 +address $1508 +byte 4 -1 +byte 4 -1 +byte 4 -1 +byte 4 -1 +skip 4 +address $1509 +byte 4 -1 +byte 4 -1 +byte 4 -1 +byte 4 -1 +skip 4 +lit +align 4 +LABELV g_bindCount +byte 4 60 +data +align 4 +LABELV g_configcvars +address $1510 +byte 4 0 +byte 4 0 +address $1511 +byte 4 0 +byte 4 0 +address $1512 +byte 4 0 +byte 4 0 +address $1513 +byte 4 0 +byte 4 0 +address $1514 +byte 4 0 +byte 4 0 +address $1515 +byte 4 0 +byte 4 0 +address $1516 +byte 4 0 +byte 4 0 +address $1517 +byte 4 0 +byte 4 0 +byte 4 0 +byte 4 0 +byte 4 0 +code +proc Controls_GetKeyAssignment 276 12 +line 3184 +;3076: +;3077: +;3078:typedef struct { +;3079: char *command; +;3080: int id; +;3081: int defaultbind1; +;3082: int defaultbind2; +;3083: int bind1; +;3084: int bind2; +;3085:} bind_t; +;3086: +;3087:typedef struct +;3088:{ +;3089: char* name; +;3090: float defaultvalue; +;3091: float value; +;3092:} configcvar_t; +;3093: +;3094: +;3095:static bind_t g_bindings[] = +;3096:{ +;3097: {"+scores", K_TAB, -1, -1, -1}, +;3098: {"+button2", K_ENTER, -1, -1, -1}, +;3099: {"+speed", K_SHIFT, -1, -1, -1}, +;3100: {"+forward", K_UPARROW, -1, -1, -1}, +;3101: {"+back", K_DOWNARROW, -1, -1, -1}, +;3102: {"+moveleft", ',', -1, -1, -1}, +;3103: {"+moveright", '.', -1, -1, -1}, +;3104: {"+moveup", K_SPACE, -1, -1, -1}, +;3105: {"+movedown", 'c', -1, -1, -1}, +;3106: {"+left", K_LEFTARROW, -1, -1, -1}, +;3107: {"+right", K_RIGHTARROW, -1, -1, -1}, +;3108: {"+strafe", K_ALT, -1, -1, -1}, +;3109: {"+lookup", K_PGDN, -1, -1, -1}, +;3110: {"+lookdown", K_DEL, -1, -1, -1}, +;3111: {"+mlook", '/', -1, -1, -1}, +;3112: {"centerview", K_END, -1, -1, -1}, +;3113: {"+zoom", -1, -1, -1, -1}, +;3114: {"weapon 1", '1', -1, -1, -1}, +;3115: {"weapon 2", '2', -1, -1, -1}, +;3116: {"weapon 3", '3', -1, -1, -1}, +;3117: {"weapon 4", '4', -1, -1, -1}, +;3118: {"weapon 5", '5', -1, -1, -1}, +;3119: {"weapon 6", '6', -1, -1, -1}, +;3120: {"weapon 7", '7', -1, -1, -1}, +;3121: {"weapon 8", '8', -1, -1, -1}, +;3122: {"weapon 9", '9', -1, -1, -1}, +;3123: {"weapon 10", '0', -1, -1, -1}, +;3124: {"weapon 11", -1, -1, -1, -1}, +;3125: {"weapon 12", -1, -1, -1, -1}, +;3126: {"weapon 13", -1, -1, -1, -1}, +;3127: {"+attack", K_CTRL, -1, -1, -1}, +;3128: {"weapprev", '[', -1, -1, -1}, +;3129: {"weapnext", ']', -1, -1, -1}, +;3130: {"+button3", K_MOUSE3, -1, -1, -1}, +;3131: {"+button4", K_MOUSE4, -1, -1, -1}, +;3132: {"prevTeamMember", 'w', -1, -1, -1}, +;3133: {"nextTeamMember", 'r', -1, -1, -1}, +;3134: {"nextOrder", 't', -1, -1, -1}, +;3135: {"confirmOrder", 'y', -1, -1, -1}, +;3136: {"denyOrder", 'n', -1, -1, -1}, +;3137: {"taskOffense", 'o', -1, -1, -1}, +;3138: {"taskDefense", 'd', -1, -1, -1}, +;3139: {"taskPatrol", 'p', -1, -1, -1}, +;3140: {"taskCamp", 'c', -1, -1, -1}, +;3141: {"taskFollow", 'f', -1, -1, -1}, +;3142: {"taskRetrieve", 'v', -1, -1, -1}, +;3143: {"taskEscort", 'e', -1, -1, -1}, +;3144: {"taskOwnFlag", 'i', -1, -1, -1}, +;3145: {"taskSuicide", 'k', -1, -1, -1}, +;3146: {"tauntKillInsult", K_F1, -1, -1, -1}, +;3147: {"tauntPraise", K_F2, -1, -1, -1}, +;3148: {"tauntTaunt", K_F3, -1, -1, -1}, +;3149: {"tauntDeathInsult", K_F4, -1, -1, -1}, +;3150: {"tauntGauntlet", K_F5, -1, -1, -1}, +;3151: {"scoresUp", K_KP_PGUP, -1, -1, -1}, +;3152: {"scoresDown", K_KP_PGDN, -1, -1, -1}, +;3153: // bk001205 - this one below was: '-1' +;3154: {"messagemode", -1, -1, -1, -1}, +;3155: {"messagemode2", -1, -1, -1, -1}, +;3156: {"messagemode3", -1, -1, -1, -1}, +;3157: {"messagemode4", -1, -1, -1, -1} +;3158:}; +;3159: +;3160: +;3161:static const int g_bindCount = sizeof(g_bindings) / sizeof(bind_t); +;3162: +;3163:#ifndef MISSIONPACK // bk001206 +;3164:static configcvar_t g_configcvars[] = +;3165:{ +;3166: {"cl_run", 0, 0}, +;3167: {"m_pitch", 0, 0}, +;3168: {"cg_autoswitch", 0, 0}, +;3169: {"sensitivity", 0, 0}, +;3170: {"in_joystick", 0, 0}, +;3171: {"joy_threshold", 0, 0}, +;3172: {"m_filter", 0, 0}, +;3173: {"cl_freelook", 0, 0}, +;3174: {NULL, 0, 0} +;3175:}; +;3176:#endif +;3177: +;3178:/* +;3179:================= +;3180:Controls_GetKeyAssignment +;3181:================= +;3182:*/ +;3183:static void Controls_GetKeyAssignment (char *command, int *twokeys) +;3184:{ +line 3189 +;3185: int count; +;3186: int j; +;3187: char b[256]; +;3188: +;3189: twokeys[0] = twokeys[1] = -1; +ADDRLP4 264 +ADDRFP4 4 +INDIRP4 +ASGNP4 +ADDRLP4 268 +CNSTI4 -1 +ASGNI4 +ADDRLP4 264 +INDIRP4 +CNSTI4 4 +ADDP4 +ADDRLP4 268 +INDIRI4 +ASGNI4 +ADDRLP4 264 +INDIRP4 +ADDRLP4 268 +INDIRI4 +ASGNI4 +line 3190 +;3190: count = 0; +ADDRLP4 260 +CNSTI4 0 +ASGNI4 +line 3192 +;3191: +;3192: for ( j = 0; j < 256; j++ ) +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +LABELV $1519 +line 3193 +;3193: { +line 3194 +;3194: DC->getBindingBuf( j, b, 256 ); +ADDRLP4 0 +INDIRI4 +ARGI4 +ADDRLP4 4 +ARGP4 +CNSTI4 256 +ARGI4 +ADDRGP4 DC +INDIRP4 +CNSTI4 140 +ADDP4 +INDIRP4 +CALLV +pop +line 3195 +;3195: if ( *b == 0 ) { +ADDRLP4 4 +INDIRI1 +CVII4 1 +CNSTI4 0 +NEI4 $1523 +line 3196 +;3196: continue; +ADDRGP4 $1520 +JUMPV +LABELV $1523 +line 3198 +;3197: } +;3198: if ( !Q_stricmp( b, command ) ) { +ADDRLP4 4 +ARGP4 +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRLP4 272 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 272 +INDIRI4 +CNSTI4 0 +NEI4 $1525 +line 3199 +;3199: twokeys[count] = j; +ADDRLP4 260 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRFP4 4 +INDIRP4 +ADDP4 +ADDRLP4 0 +INDIRI4 +ASGNI4 +line 3200 +;3200: count++; +ADDRLP4 260 +ADDRLP4 260 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 3201 +;3201: if (count == 2) { +ADDRLP4 260 +INDIRI4 +CNSTI4 2 +NEI4 $1527 +line 3202 +;3202: break; +ADDRGP4 $1521 +JUMPV +LABELV $1527 +line 3204 +;3203: } +;3204: } +LABELV $1525 +line 3205 +;3205: } +LABELV $1520 +line 3192 +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +ADDRLP4 0 +INDIRI4 +CNSTI4 256 +LTI4 $1519 +LABELV $1521 +line 3206 +;3206:} +LABELV $1518 +endproc Controls_GetKeyAssignment 276 12 +export Controls_GetConfig +proc Controls_GetConfig 12 8 +line 3214 +;3207: +;3208:/* +;3209:================= +;3210:Controls_GetConfig +;3211:================= +;3212:*/ +;3213:void Controls_GetConfig( void ) +;3214:{ +line 3219 +;3215: int i; +;3216: int twokeys[2]; +;3217: +;3218: // iterate each command, get its numeric binding +;3219: for (i=0; i < g_bindCount; i++) +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +ADDRGP4 $1533 +JUMPV +LABELV $1530 +line 3220 +;3220: { +line 3222 +;3221: +;3222: Controls_GetKeyAssignment(g_bindings[i].command, twokeys); +CNSTI4 24 +ADDRLP4 0 +INDIRI4 +MULI4 +ADDRGP4 g_bindings +ADDP4 +INDIRP4 +ARGP4 +ADDRLP4 4 +ARGP4 +ADDRGP4 Controls_GetKeyAssignment +CALLV +pop +line 3224 +;3223: +;3224: g_bindings[i].bind1 = twokeys[0]; +CNSTI4 24 +ADDRLP4 0 +INDIRI4 +MULI4 +ADDRGP4 g_bindings+16 +ADDP4 +ADDRLP4 4 +INDIRI4 +ASGNI4 +line 3225 +;3225: g_bindings[i].bind2 = twokeys[1]; +CNSTI4 24 +ADDRLP4 0 +INDIRI4 +MULI4 +ADDRGP4 g_bindings+20 +ADDP4 +ADDRLP4 4+4 +INDIRI4 +ASGNI4 +line 3226 +;3226: } +LABELV $1531 +line 3219 +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +LABELV $1533 +ADDRLP4 0 +INDIRI4 +ADDRGP4 g_bindCount +INDIRI4 +LTI4 $1530 +line 3236 +;3227: +;3228: //s_controls.invertmouse.curvalue = DC->getCVarValue( "m_pitch" ) < 0; +;3229: //s_controls.smoothmouse.curvalue = UI_ClampCvar( 0, 1, Controls_GetCvarValue( "m_filter" ) ); +;3230: //s_controls.alwaysrun.curvalue = UI_ClampCvar( 0, 1, Controls_GetCvarValue( "cl_run" ) ); +;3231: //s_controls.autoswitch.curvalue = UI_ClampCvar( 0, 1, Controls_GetCvarValue( "cg_autoswitch" ) ); +;3232: //s_controls.sensitivity.curvalue = UI_ClampCvar( 2, 30, Controls_GetCvarValue( "sensitivity" ) ); +;3233: //s_controls.joyenable.curvalue = UI_ClampCvar( 0, 1, Controls_GetCvarValue( "in_joystick" ) ); +;3234: //s_controls.joythreshold.curvalue = UI_ClampCvar( 0.05, 0.75, Controls_GetCvarValue( "joy_threshold" ) ); +;3235: //s_controls.freelook.curvalue = UI_ClampCvar( 0, 1, Controls_GetCvarValue( "cl_freelook" ) ); +;3236:} +LABELV $1529 +endproc Controls_GetConfig 12 8 +export Controls_SetConfig +proc Controls_SetConfig 12 8 +line 3244 +;3237: +;3238:/* +;3239:================= +;3240:Controls_SetConfig +;3241:================= +;3242:*/ +;3243:void Controls_SetConfig(qboolean restart) +;3244:{ +line 3248 +;3245: int i; +;3246: +;3247: // iterate each command, get its numeric binding +;3248: for (i=0; i < g_bindCount; i++) +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +ADDRGP4 $1541 +JUMPV +LABELV $1538 +line 3249 +;3249: { +line 3251 +;3250: +;3251: if (g_bindings[i].bind1 != -1) +CNSTI4 24 +ADDRLP4 0 +INDIRI4 +MULI4 +ADDRGP4 g_bindings+16 +ADDP4 +INDIRI4 +CNSTI4 -1 +EQI4 $1542 +line 3252 +;3252: { +line 3253 +;3253: DC->setBinding( g_bindings[i].bind1, g_bindings[i].command ); +ADDRLP4 4 +CNSTI4 24 +ADDRLP4 0 +INDIRI4 +MULI4 +ASGNI4 +ADDRLP4 4 +INDIRI4 +ADDRGP4 g_bindings+16 +ADDP4 +INDIRI4 +ARGI4 +ADDRLP4 4 +INDIRI4 +ADDRGP4 g_bindings +ADDP4 +INDIRP4 +ARGP4 +ADDRGP4 DC +INDIRP4 +CNSTI4 144 +ADDP4 +INDIRP4 +CALLV +pop +line 3255 +;3254: +;3255: if (g_bindings[i].bind2 != -1) +CNSTI4 24 +ADDRLP4 0 +INDIRI4 +MULI4 +ADDRGP4 g_bindings+20 +ADDP4 +INDIRI4 +CNSTI4 -1 +EQI4 $1546 +line 3256 +;3256: DC->setBinding( g_bindings[i].bind2, g_bindings[i].command ); +ADDRLP4 8 +CNSTI4 24 +ADDRLP4 0 +INDIRI4 +MULI4 +ASGNI4 +ADDRLP4 8 +INDIRI4 +ADDRGP4 g_bindings+20 +ADDP4 +INDIRI4 +ARGI4 +ADDRLP4 8 +INDIRI4 +ADDRGP4 g_bindings +ADDP4 +INDIRP4 +ARGP4 +ADDRGP4 DC +INDIRP4 +CNSTI4 144 +ADDP4 +INDIRP4 +CALLV +pop +LABELV $1546 +line 3257 +;3257: } +LABELV $1542 +line 3258 +;3258: } +LABELV $1539 +line 3248 +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +LABELV $1541 +ADDRLP4 0 +INDIRI4 +ADDRGP4 g_bindCount +INDIRI4 +LTI4 $1538 +line 3272 +;3259: +;3260: //if ( s_controls.invertmouse.curvalue ) +;3261: // DC->setCVar("m_pitch", va("%f),-fabs( DC->getCVarValue( "m_pitch" ) ) ); +;3262: //else +;3263: // trap_Cvar_SetValue( "m_pitch", fabs( trap_Cvar_VariableValue( "m_pitch" ) ) ); +;3264: +;3265: //trap_Cvar_SetValue( "m_filter", s_controls.smoothmouse.curvalue ); +;3266: //trap_Cvar_SetValue( "cl_run", s_controls.alwaysrun.curvalue ); +;3267: //trap_Cvar_SetValue( "cg_autoswitch", s_controls.autoswitch.curvalue ); +;3268: //trap_Cvar_SetValue( "sensitivity", s_controls.sensitivity.curvalue ); +;3269: //trap_Cvar_SetValue( "in_joystick", s_controls.joyenable.curvalue ); +;3270: //trap_Cvar_SetValue( "joy_threshold", s_controls.joythreshold.curvalue ); +;3271: //trap_Cvar_SetValue( "cl_freelook", s_controls.freelook.curvalue ); +;3272: DC->executeText(EXEC_APPEND, "in_restart\n"); +CNSTI4 2 +ARGI4 +ADDRGP4 $1550 +ARGP4 +ADDRGP4 DC +INDIRP4 +CNSTI4 148 +ADDP4 +INDIRP4 +CALLV +pop +line 3274 +;3273: //trap_Cmd_ExecuteText( EXEC_APPEND, "in_restart\n" ); +;3274:} +LABELV $1537 +endproc Controls_SetConfig 12 8 +export Controls_SetDefaults +proc Controls_SetDefaults 12 0 +line 3282 +;3275: +;3276:/* +;3277:================= +;3278:Controls_SetDefaults +;3279:================= +;3280:*/ +;3281:void Controls_SetDefaults( void ) +;3282:{ +line 3286 +;3283: int i; +;3284: +;3285: // iterate each command, set its default binding +;3286: for (i=0; i < g_bindCount; i++) +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +ADDRGP4 $1555 +JUMPV +LABELV $1552 +line 3287 +;3287: { +line 3288 +;3288: g_bindings[i].bind1 = g_bindings[i].defaultbind1; +ADDRLP4 4 +CNSTI4 24 +ADDRLP4 0 +INDIRI4 +MULI4 +ASGNI4 +ADDRLP4 4 +INDIRI4 +ADDRGP4 g_bindings+16 +ADDP4 +ADDRLP4 4 +INDIRI4 +ADDRGP4 g_bindings+8 +ADDP4 +INDIRI4 +ASGNI4 +line 3289 +;3289: g_bindings[i].bind2 = g_bindings[i].defaultbind2; +ADDRLP4 8 +CNSTI4 24 +ADDRLP4 0 +INDIRI4 +MULI4 +ASGNI4 +ADDRLP4 8 +INDIRI4 +ADDRGP4 g_bindings+20 +ADDP4 +ADDRLP4 8 +INDIRI4 +ADDRGP4 g_bindings+12 +ADDP4 +INDIRI4 +ASGNI4 +line 3290 +;3290: } +LABELV $1553 +line 3286 +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +LABELV $1555 +ADDRLP4 0 +INDIRI4 +ADDRGP4 g_bindCount +INDIRI4 +LTI4 $1552 +line 3300 +;3291: +;3292: //s_controls.invertmouse.curvalue = Controls_GetCvarDefault( "m_pitch" ) < 0; +;3293: //s_controls.smoothmouse.curvalue = Controls_GetCvarDefault( "m_filter" ); +;3294: //s_controls.alwaysrun.curvalue = Controls_GetCvarDefault( "cl_run" ); +;3295: //s_controls.autoswitch.curvalue = Controls_GetCvarDefault( "cg_autoswitch" ); +;3296: //s_controls.sensitivity.curvalue = Controls_GetCvarDefault( "sensitivity" ); +;3297: //s_controls.joyenable.curvalue = Controls_GetCvarDefault( "in_joystick" ); +;3298: //s_controls.joythreshold.curvalue = Controls_GetCvarDefault( "joy_threshold" ); +;3299: //s_controls.freelook.curvalue = Controls_GetCvarDefault( "cl_freelook" ); +;3300:} +LABELV $1551 +endproc Controls_SetDefaults 12 0 +export BindingIDFromName +proc BindingIDFromName 8 8 +line 3302 +;3301: +;3302:int BindingIDFromName(const char *name) { +line 3304 +;3303: int i; +;3304: for (i=0; i < g_bindCount; i++) +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +ADDRGP4 $1564 +JUMPV +LABELV $1561 +line 3305 +;3305: { +line 3306 +;3306: if (Q_stricmp(name, g_bindings[i].command) == 0) { +ADDRFP4 0 +INDIRP4 +ARGP4 +CNSTI4 24 +ADDRLP4 0 +INDIRI4 +MULI4 +ADDRGP4 g_bindings +ADDP4 +INDIRP4 +ARGP4 +ADDRLP4 4 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 4 +INDIRI4 +CNSTI4 0 +NEI4 $1565 +line 3307 +;3307: return i; +ADDRLP4 0 +INDIRI4 +RETI4 +ADDRGP4 $1560 +JUMPV +LABELV $1565 +line 3309 +;3308: } +;3309: } +LABELV $1562 +line 3304 +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +LABELV $1564 +ADDRLP4 0 +INDIRI4 +ADDRGP4 g_bindCount +INDIRI4 +LTI4 $1561 +line 3310 +;3310: return -1; +CNSTI4 -1 +RETI4 +LABELV $1560 +endproc BindingIDFromName 8 8 +export BindingFromName +proc BindingFromName 16 12 +line 3316 +;3311:} +;3312: +;3313:char g_nameBind1[32]; +;3314:char g_nameBind2[32]; +;3315: +;3316:void BindingFromName(const char *cvar) { +line 3320 +;3317: int i, b1, b2; +;3318: +;3319: // iterate each command, set its default binding +;3320: for (i=0; i < g_bindCount; i++) +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +ADDRGP4 $1571 +JUMPV +LABELV $1568 +line 3321 +;3321: { +line 3322 +;3322: if (Q_stricmp(cvar, g_bindings[i].command) == 0) { +ADDRFP4 0 +INDIRP4 +ARGP4 +CNSTI4 24 +ADDRLP4 0 +INDIRI4 +MULI4 +ADDRGP4 g_bindings +ADDP4 +INDIRP4 +ARGP4 +ADDRLP4 12 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 12 +INDIRI4 +CNSTI4 0 +NEI4 $1572 +line 3323 +;3323: b1 = g_bindings[i].bind1; +ADDRLP4 4 +CNSTI4 24 +ADDRLP4 0 +INDIRI4 +MULI4 +ADDRGP4 g_bindings+16 +ADDP4 +INDIRI4 +ASGNI4 +line 3324 +;3324: if (b1 == -1) { +ADDRLP4 4 +INDIRI4 +CNSTI4 -1 +NEI4 $1575 +line 3325 +;3325: break; +ADDRGP4 $1570 +JUMPV +LABELV $1575 +line 3327 +;3326: } +;3327: DC->keynumToStringBuf( b1, g_nameBind1, 32 ); +ADDRLP4 4 +INDIRI4 +ARGI4 +ADDRGP4 g_nameBind1 +ARGP4 +CNSTI4 32 +ARGI4 +ADDRGP4 DC +INDIRP4 +CNSTI4 136 +ADDP4 +INDIRP4 +CALLV +pop +line 3328 +;3328: Q_strupr(g_nameBind1); +ADDRGP4 g_nameBind1 +ARGP4 +ADDRGP4 Q_strupr +CALLP4 +pop +line 3330 +;3329: +;3330: b2 = g_bindings[i].bind2; +ADDRLP4 8 +CNSTI4 24 +ADDRLP4 0 +INDIRI4 +MULI4 +ADDRGP4 g_bindings+20 +ADDP4 +INDIRI4 +ASGNI4 +line 3331 +;3331: if (b2 != -1) +ADDRLP4 8 +INDIRI4 +CNSTI4 -1 +EQI4 $1567 +line 3332 +;3332: { +line 3333 +;3333: DC->keynumToStringBuf( b2, g_nameBind2, 32 ); +ADDRLP4 8 +INDIRI4 +ARGI4 +ADDRGP4 g_nameBind2 +ARGP4 +CNSTI4 32 +ARGI4 +ADDRGP4 DC +INDIRP4 +CNSTI4 136 +ADDP4 +INDIRP4 +CALLV +pop +line 3334 +;3334: Q_strupr(g_nameBind2); +ADDRGP4 g_nameBind2 +ARGP4 +ADDRGP4 Q_strupr +CALLP4 +pop +line 3335 +;3335: strcat( g_nameBind1, " or " ); +ADDRGP4 g_nameBind1 +ARGP4 +ADDRGP4 $1580 +ARGP4 +ADDRGP4 strcat +CALLP4 +pop +line 3336 +;3336: strcat( g_nameBind1, g_nameBind2 ); +ADDRGP4 g_nameBind1 +ARGP4 +ADDRGP4 g_nameBind2 +ARGP4 +ADDRGP4 strcat +CALLP4 +pop +line 3337 +;3337: } +line 3338 +;3338: return; +ADDRGP4 $1567 +JUMPV +LABELV $1572 +line 3340 +;3339: } +;3340: } +LABELV $1569 +line 3320 +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +LABELV $1571 +ADDRLP4 0 +INDIRI4 +ADDRGP4 g_bindCount +INDIRI4 +LTI4 $1568 +LABELV $1570 +line 3341 +;3341: strcpy(g_nameBind1, "???"); +ADDRGP4 g_nameBind1 +ARGP4 +ADDRGP4 $1581 +ARGP4 +ADDRGP4 strcpy +CALLP4 +pop +line 3342 +;3342:} +LABELV $1567 +endproc BindingFromName 16 12 +export Item_Slider_Paint +proc Item_Slider_Paint 68 20 +line 3344 +;3343: +;3344:void Item_Slider_Paint(itemDef_t *item) { +line 3347 +;3345: vec4_t newColor, lowLight; +;3346: float x, y, value; +;3347: menuDef_t *parent = (menuDef_t*)item->parent; +ADDRLP4 4 +ADDRFP4 0 +INDIRP4 +CNSTI4 228 +ADDP4 +INDIRP4 +ASGNP4 +line 3349 +;3348: +;3349: value = (item->cvar) ? DC->getCVarValue(item->cvar) : 0; +ADDRFP4 0 +INDIRP4 +CNSTI4 264 +ADDP4 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $1584 +ADDRFP4 0 +INDIRP4 +CNSTI4 264 +ADDP4 +INDIRP4 +ARGP4 +ADDRLP4 52 +ADDRGP4 DC +INDIRP4 +CNSTI4 92 +ADDP4 +INDIRP4 +CALLF4 +ASGNF4 +ADDRLP4 48 +ADDRLP4 52 +INDIRF4 +ASGNF4 +ADDRGP4 $1585 +JUMPV +LABELV $1584 +ADDRLP4 48 +CNSTF4 0 +ASGNF4 +LABELV $1585 +ADDRLP4 44 +ADDRLP4 48 +INDIRF4 +ASGNF4 +line 3351 +;3350: +;3351: if (item->window.flags & WINDOW_HASFOCUS) { +ADDRFP4 0 +INDIRP4 +CNSTI4 68 +ADDP4 +INDIRI4 +CNSTI4 2 +BANDI4 +CNSTI4 0 +EQI4 $1586 +line 3352 +;3352: lowLight[0] = 0.8 * parent->focusColor[0]; +ADDRLP4 12 +CNSTF4 1061997773 +ADDRLP4 4 +INDIRP4 +CNSTI4 228 +ADDP4 +INDIRF4 +MULF4 +ASGNF4 +line 3353 +;3353: lowLight[1] = 0.8 * parent->focusColor[1]; +ADDRLP4 12+4 +CNSTF4 1061997773 +ADDRLP4 4 +INDIRP4 +CNSTI4 232 +ADDP4 +INDIRF4 +MULF4 +ASGNF4 +line 3354 +;3354: lowLight[2] = 0.8 * parent->focusColor[2]; +ADDRLP4 12+8 +CNSTF4 1061997773 +ADDRLP4 4 +INDIRP4 +CNSTI4 236 +ADDP4 +INDIRF4 +MULF4 +ASGNF4 +line 3355 +;3355: lowLight[3] = 0.8 * parent->focusColor[3]; +ADDRLP4 12+12 +CNSTF4 1061997773 +ADDRLP4 4 +INDIRP4 +CNSTI4 240 +ADDP4 +INDIRF4 +MULF4 +ASGNF4 +line 3356 +;3356: LerpColor(parent->focusColor,lowLight,newColor,0.5+0.5*sin(DC->realTime / PULSE_DIVISOR)); +ADDRGP4 DC +INDIRP4 +CNSTI4 208 +ADDP4 +INDIRI4 +CNSTI4 75 +DIVI4 +CVIF4 4 +ARGF4 +ADDRLP4 56 +ADDRGP4 sin +CALLF4 +ASGNF4 +ADDRLP4 4 +INDIRP4 +CNSTI4 228 +ADDP4 +ARGP4 +ADDRLP4 12 +ARGP4 +ADDRLP4 28 +ARGP4 +CNSTF4 1056964608 +ADDRLP4 56 +INDIRF4 +MULF4 +CNSTF4 1056964608 +ADDF4 +ARGF4 +ADDRGP4 LerpColor +CALLV +pop +line 3357 +;3357: } else { +ADDRGP4 $1587 +JUMPV +LABELV $1586 +line 3358 +;3358: memcpy(&newColor, &item->window.foreColor, sizeof(vec4_t)); +ADDRLP4 28 +ARGP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 112 +ADDP4 +ARGP4 +CNSTI4 16 +ARGI4 +ADDRGP4 memcpy +CALLP4 +pop +line 3359 +;3359: } +LABELV $1587 +line 3361 +;3360: +;3361: y = item->window.rect.y; +ADDRLP4 8 +ADDRFP4 0 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRF4 +ASGNF4 +line 3362 +;3362: if (item->text) { +ADDRFP4 0 +INDIRP4 +CNSTI4 224 +ADDP4 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $1591 +line 3363 +;3363: Item_Text_Paint(item); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRGP4 Item_Text_Paint +CALLV +pop +line 3364 +;3364: x = item->textRect.x + item->textRect.w + 8; +ADDRLP4 56 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 0 +ADDRLP4 56 +INDIRP4 +CNSTI4 180 +ADDP4 +INDIRF4 +ADDRLP4 56 +INDIRP4 +CNSTI4 188 +ADDP4 +INDIRF4 +ADDF4 +CNSTF4 1090519040 +ADDF4 +ASGNF4 +line 3365 +;3365: } else { +ADDRGP4 $1592 +JUMPV +LABELV $1591 +line 3366 +;3366: x = item->window.rect.x; +ADDRLP4 0 +ADDRFP4 0 +INDIRP4 +INDIRF4 +ASGNF4 +line 3367 +;3367: } +LABELV $1592 +line 3368 +;3368: DC->setColor(newColor); +ADDRLP4 28 +ARGP4 +ADDRGP4 DC +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRP4 +CALLV +pop +line 3369 +;3369: DC->drawHandlePic( x, y, SLIDER_WIDTH, SLIDER_HEIGHT, DC->Assets.sliderBar ); +ADDRLP4 0 +INDIRF4 +ARGF4 +ADDRLP4 8 +INDIRF4 +ARGF4 +CNSTF4 1119879168 +ARGF4 +CNSTF4 1098907648 +ARGF4 +ADDRLP4 56 +ADDRGP4 DC +INDIRP4 +ASGNP4 +ADDRLP4 56 +INDIRP4 +CNSTI4 61928 +ADDP4 +INDIRI4 +ARGI4 +ADDRLP4 56 +INDIRP4 +CNSTI4 8 +ADDP4 +INDIRP4 +CALLV +pop +line 3371 +;3370: +;3371: x = Item_Slider_ThumbPosition(item); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRLP4 60 +ADDRGP4 Item_Slider_ThumbPosition +CALLF4 +ASGNF4 +ADDRLP4 0 +ADDRLP4 60 +INDIRF4 +ASGNF4 +line 3372 +;3372: DC->drawHandlePic( x - (SLIDER_THUMB_WIDTH / 2), y - 2, SLIDER_THUMB_WIDTH, SLIDER_THUMB_HEIGHT, DC->Assets.sliderThumb ); +ADDRLP4 0 +INDIRF4 +CNSTF4 1086324736 +SUBF4 +ARGF4 +ADDRLP4 8 +INDIRF4 +CNSTF4 1073741824 +SUBF4 +ARGF4 +CNSTF4 1094713344 +ARGF4 +CNSTF4 1101004800 +ARGF4 +ADDRLP4 64 +ADDRGP4 DC +INDIRP4 +ASGNP4 +ADDRLP4 64 +INDIRP4 +CNSTI4 61932 +ADDP4 +INDIRI4 +ARGI4 +ADDRLP4 64 +INDIRP4 +CNSTI4 8 +ADDP4 +INDIRP4 +CALLV +pop +line 3374 +;3373: +;3374:} +LABELV $1582 +endproc Item_Slider_Paint 68 20 +export Item_Bind_Paint +proc Item_Bind_Paint 64 32 +line 3376 +;3375: +;3376:void Item_Bind_Paint(itemDef_t *item) { +line 3379 +;3377: vec4_t newColor, lowLight; +;3378: float value; +;3379: int maxChars = 0; +ADDRLP4 16 +CNSTI4 0 +ASGNI4 +line 3380 +;3380: menuDef_t *parent = (menuDef_t*)item->parent; +ADDRLP4 20 +ADDRFP4 0 +INDIRP4 +CNSTI4 228 +ADDP4 +INDIRP4 +ASGNP4 +line 3381 +;3381: editFieldDef_t *editPtr = (editFieldDef_t*)item->typeData; +ADDRLP4 24 +ADDRFP4 0 +INDIRP4 +CNSTI4 536 +ADDP4 +INDIRP4 +ASGNP4 +line 3382 +;3382: if (editPtr) { +ADDRLP4 24 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $1594 +line 3383 +;3383: maxChars = editPtr->maxPaintChars; +ADDRLP4 16 +ADDRLP4 24 +INDIRP4 +CNSTI4 20 +ADDP4 +INDIRI4 +ASGNI4 +line 3384 +;3384: } +LABELV $1594 +line 3386 +;3385: +;3386: value = (item->cvar) ? DC->getCVarValue(item->cvar) : 0; +ADDRFP4 0 +INDIRP4 +CNSTI4 264 +ADDP4 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $1597 +ADDRFP4 0 +INDIRP4 +CNSTI4 264 +ADDP4 +INDIRP4 +ARGP4 +ADDRLP4 52 +ADDRGP4 DC +INDIRP4 +CNSTI4 92 +ADDP4 +INDIRP4 +CALLF4 +ASGNF4 +ADDRLP4 48 +ADDRLP4 52 +INDIRF4 +ASGNF4 +ADDRGP4 $1598 +JUMPV +LABELV $1597 +ADDRLP4 48 +CNSTF4 0 +ASGNF4 +LABELV $1598 +ADDRLP4 44 +ADDRLP4 48 +INDIRF4 +ASGNF4 +line 3388 +;3387: +;3388: if (item->window.flags & WINDOW_HASFOCUS) { +ADDRFP4 0 +INDIRP4 +CNSTI4 68 +ADDP4 +INDIRI4 +CNSTI4 2 +BANDI4 +CNSTI4 0 +EQI4 $1599 +line 3389 +;3389: if (g_bindItem == item) { +ADDRGP4 g_bindItem +INDIRP4 +CVPU4 4 +ADDRFP4 0 +INDIRP4 +CVPU4 4 +NEU4 $1601 +line 3390 +;3390: lowLight[0] = 0.8f * 1.0f; +ADDRLP4 0 +CNSTF4 1061997773 +ASGNF4 +line 3391 +;3391: lowLight[1] = 0.8f * 0.0f; +ADDRLP4 0+4 +CNSTF4 0 +ASGNF4 +line 3392 +;3392: lowLight[2] = 0.8f * 0.0f; +ADDRLP4 0+8 +CNSTF4 0 +ASGNF4 +line 3393 +;3393: lowLight[3] = 0.8f * 1.0f; +ADDRLP4 0+12 +CNSTF4 1061997773 +ASGNF4 +line 3394 +;3394: } else { +ADDRGP4 $1602 +JUMPV +LABELV $1601 +line 3395 +;3395: lowLight[0] = 0.8f * parent->focusColor[0]; +ADDRLP4 0 +CNSTF4 1061997773 +ADDRLP4 20 +INDIRP4 +CNSTI4 228 +ADDP4 +INDIRF4 +MULF4 +ASGNF4 +line 3396 +;3396: lowLight[1] = 0.8f * parent->focusColor[1]; +ADDRLP4 0+4 +CNSTF4 1061997773 +ADDRLP4 20 +INDIRP4 +CNSTI4 232 +ADDP4 +INDIRF4 +MULF4 +ASGNF4 +line 3397 +;3397: lowLight[2] = 0.8f * parent->focusColor[2]; +ADDRLP4 0+8 +CNSTF4 1061997773 +ADDRLP4 20 +INDIRP4 +CNSTI4 236 +ADDP4 +INDIRF4 +MULF4 +ASGNF4 +line 3398 +;3398: lowLight[3] = 0.8f * parent->focusColor[3]; +ADDRLP4 0+12 +CNSTF4 1061997773 +ADDRLP4 20 +INDIRP4 +CNSTI4 240 +ADDP4 +INDIRF4 +MULF4 +ASGNF4 +line 3399 +;3399: } +LABELV $1602 +line 3400 +;3400: LerpColor(parent->focusColor,lowLight,newColor,0.5+0.5*sin(DC->realTime / PULSE_DIVISOR)); +ADDRGP4 DC +INDIRP4 +CNSTI4 208 +ADDP4 +INDIRI4 +CNSTI4 75 +DIVI4 +CVIF4 4 +ARGF4 +ADDRLP4 56 +ADDRGP4 sin +CALLF4 +ASGNF4 +ADDRLP4 20 +INDIRP4 +CNSTI4 228 +ADDP4 +ARGP4 +ADDRLP4 0 +ARGP4 +ADDRLP4 28 +ARGP4 +CNSTF4 1056964608 +ADDRLP4 56 +INDIRF4 +MULF4 +CNSTF4 1056964608 +ADDF4 +ARGF4 +ADDRGP4 LerpColor +CALLV +pop +line 3401 +;3401: } else { +ADDRGP4 $1600 +JUMPV +LABELV $1599 +line 3402 +;3402: memcpy(&newColor, &item->window.foreColor, sizeof(vec4_t)); +ADDRLP4 28 +ARGP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 112 +ADDP4 +ARGP4 +CNSTI4 16 +ARGI4 +ADDRGP4 memcpy +CALLP4 +pop +line 3403 +;3403: } +LABELV $1600 +line 3405 +;3404: +;3405: if (item->text) { +ADDRFP4 0 +INDIRP4 +CNSTI4 224 +ADDP4 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $1609 +line 3406 +;3406: Item_Text_Paint(item); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRGP4 Item_Text_Paint +CALLV +pop +line 3407 +;3407: BindingFromName(item->cvar); +ADDRFP4 0 +INDIRP4 +CNSTI4 264 +ADDP4 +INDIRP4 +ARGP4 +ADDRGP4 BindingFromName +CALLV +pop +line 3408 +;3408: DC->drawText(item->textRect.x + item->textRect.w + 8, item->textRect.y, item->textscale, newColor, g_nameBind1, 0, maxChars, item->textStyle); +ADDRLP4 56 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 56 +INDIRP4 +CNSTI4 180 +ADDP4 +INDIRF4 +ADDRLP4 56 +INDIRP4 +CNSTI4 188 +ADDP4 +INDIRF4 +ADDF4 +CNSTF4 1090519040 +ADDF4 +ARGF4 +ADDRLP4 56 +INDIRP4 +CNSTI4 184 +ADDP4 +INDIRF4 +ARGF4 +ADDRLP4 56 +INDIRP4 +CNSTI4 216 +ADDP4 +INDIRF4 +ARGF4 +ADDRLP4 28 +ARGP4 +ADDRGP4 g_nameBind1 +ARGP4 +CNSTF4 0 +ARGF4 +ADDRLP4 16 +INDIRI4 +ARGI4 +ADDRLP4 56 +INDIRP4 +CNSTI4 220 +ADDP4 +INDIRI4 +ARGI4 +ADDRGP4 DC +INDIRP4 +CNSTI4 16 +ADDP4 +INDIRP4 +CALLV +pop +line 3409 +;3409: } else { +ADDRGP4 $1610 +JUMPV +LABELV $1609 +line 3410 +;3410: DC->drawText(item->textRect.x, item->textRect.y, item->textscale, newColor, (value != 0) ? "FIXME" : "FIXME", 0, maxChars, item->textStyle); +ADDRLP4 60 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 60 +INDIRP4 +CNSTI4 180 +ADDP4 +INDIRF4 +ARGF4 +ADDRLP4 60 +INDIRP4 +CNSTI4 184 +ADDP4 +INDIRF4 +ARGF4 +ADDRLP4 60 +INDIRP4 +CNSTI4 216 +ADDP4 +INDIRF4 +ARGF4 +ADDRLP4 28 +ARGP4 +ADDRLP4 44 +INDIRF4 +CNSTF4 0 +EQF4 $1613 +ADDRLP4 56 +ADDRGP4 $1611 +ASGNP4 +ADDRGP4 $1614 +JUMPV +LABELV $1613 +ADDRLP4 56 +ADDRGP4 $1611 +ASGNP4 +LABELV $1614 +ADDRLP4 56 +INDIRP4 +ARGP4 +CNSTF4 0 +ARGF4 +ADDRLP4 16 +INDIRI4 +ARGI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 220 +ADDP4 +INDIRI4 +ARGI4 +ADDRGP4 DC +INDIRP4 +CNSTI4 16 +ADDP4 +INDIRP4 +CALLV +pop +line 3411 +;3411: } +LABELV $1610 +line 3412 +;3412:} +LABELV $1593 +endproc Item_Bind_Paint 64 32 +export Display_KeyBindPending +proc Display_KeyBindPending 0 0 +line 3414 +;3413: +;3414:qboolean Display_KeyBindPending() { +line 3415 +;3415: return g_waitingForKey; +ADDRGP4 g_waitingForKey +INDIRI4 +RETI4 +LABELV $1615 +endproc Display_KeyBindPending 0 0 +export Item_Bind_HandleKey +proc Item_Bind_HandleKey 32 12 +line 3418 +;3416:} +;3417: +;3418:qboolean Item_Bind_HandleKey(itemDef_t *item, int key, qboolean down) { +line 3422 +;3419: int id; +;3420: int i; +;3421: +;3422: if (Rect_ContainsPoint(&item->window.rect, DC->cursorx, DC->cursory) && !g_waitingForKey) +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRLP4 8 +ADDRGP4 DC +INDIRP4 +ASGNP4 +ADDRLP4 8 +INDIRP4 +CNSTI4 216 +ADDP4 +INDIRI4 +CVIF4 4 +ARGF4 +ADDRLP4 8 +INDIRP4 +CNSTI4 220 +ADDP4 +INDIRI4 +CVIF4 4 +ARGF4 +ADDRLP4 12 +ADDRGP4 Rect_ContainsPoint +CALLI4 +ASGNI4 +ADDRLP4 16 +CNSTI4 0 +ASGNI4 +ADDRLP4 12 +INDIRI4 +ADDRLP4 16 +INDIRI4 +EQI4 $1617 +ADDRGP4 g_waitingForKey +INDIRI4 +ADDRLP4 16 +INDIRI4 +NEI4 $1617 +line 3423 +;3423: { +line 3424 +;3424: if (down && (key == K_MOUSE1 || key == K_ENTER)) { +ADDRFP4 8 +INDIRI4 +CNSTI4 0 +EQI4 $1619 +ADDRLP4 20 +ADDRFP4 4 +INDIRI4 +ASGNI4 +ADDRLP4 20 +INDIRI4 +CNSTI4 178 +EQI4 $1621 +ADDRLP4 20 +INDIRI4 +CNSTI4 13 +NEI4 $1619 +LABELV $1621 +line 3425 +;3425: g_waitingForKey = qtrue; +ADDRGP4 g_waitingForKey +CNSTI4 1 +ASGNI4 +line 3426 +;3426: g_bindItem = item; +ADDRGP4 g_bindItem +ADDRFP4 0 +INDIRP4 +ASGNP4 +line 3427 +;3427: } +LABELV $1619 +line 3428 +;3428: return qtrue; +CNSTI4 1 +RETI4 +ADDRGP4 $1616 +JUMPV +LABELV $1617 +line 3431 +;3429: } +;3430: else +;3431: { +line 3432 +;3432: if (!g_waitingForKey || g_bindItem == NULL) { +ADDRGP4 g_waitingForKey +INDIRI4 +CNSTI4 0 +EQI4 $1624 +ADDRGP4 g_bindItem +INDIRP4 +CVPU4 4 +CNSTU4 0 +NEU4 $1622 +LABELV $1624 +line 3433 +;3433: return qtrue; +CNSTI4 1 +RETI4 +ADDRGP4 $1616 +JUMPV +LABELV $1622 +line 3436 +;3434: } +;3435: +;3436: if (key & K_CHAR_FLAG) { +ADDRFP4 4 +INDIRI4 +CNSTI4 1024 +BANDI4 +CNSTI4 0 +EQI4 $1625 +line 3437 +;3437: return qtrue; +CNSTI4 1 +RETI4 +ADDRGP4 $1616 +JUMPV +LABELV $1625 +line 3440 +;3438: } +;3439: +;3440: switch (key) +ADDRLP4 20 +ADDRFP4 4 +INDIRI4 +ASGNI4 +ADDRLP4 24 +CNSTI4 96 +ASGNI4 +ADDRLP4 20 +INDIRI4 +ADDRLP4 24 +INDIRI4 +EQI4 $1635 +ADDRLP4 20 +INDIRI4 +ADDRLP4 24 +INDIRI4 +GTI4 $1637 +LABELV $1636 +ADDRFP4 4 +INDIRI4 +CNSTI4 27 +EQI4 $1629 +ADDRGP4 $1627 +JUMPV +LABELV $1637 +ADDRFP4 4 +INDIRI4 +CNSTI4 127 +EQI4 $1630 +ADDRGP4 $1627 +JUMPV +line 3441 +;3441: { +LABELV $1629 +line 3443 +;3442: case K_ESCAPE: +;3443: g_waitingForKey = qfalse; +ADDRGP4 g_waitingForKey +CNSTI4 0 +ASGNI4 +line 3444 +;3444: return qtrue; +CNSTI4 1 +RETI4 +ADDRGP4 $1616 +JUMPV +LABELV $1630 +line 3447 +;3445: +;3446: case K_BACKSPACE: +;3447: id = BindingIDFromName(item->cvar); +ADDRFP4 0 +INDIRP4 +CNSTI4 264 +ADDP4 +INDIRP4 +ARGP4 +ADDRLP4 28 +ADDRGP4 BindingIDFromName +CALLI4 +ASGNI4 +ADDRLP4 4 +ADDRLP4 28 +INDIRI4 +ASGNI4 +line 3448 +;3448: if (id != -1) { +ADDRLP4 4 +INDIRI4 +CNSTI4 -1 +EQI4 $1631 +line 3449 +;3449: g_bindings[id].bind1 = -1; +CNSTI4 24 +ADDRLP4 4 +INDIRI4 +MULI4 +ADDRGP4 g_bindings+16 +ADDP4 +CNSTI4 -1 +ASGNI4 +line 3450 +;3450: g_bindings[id].bind2 = -1; +CNSTI4 24 +ADDRLP4 4 +INDIRI4 +MULI4 +ADDRGP4 g_bindings+20 +ADDP4 +CNSTI4 -1 +ASGNI4 +line 3451 +;3451: } +LABELV $1631 +line 3452 +;3452: Controls_SetConfig(qtrue); +CNSTI4 1 +ARGI4 +ADDRGP4 Controls_SetConfig +CALLV +pop +line 3453 +;3453: g_waitingForKey = qfalse; +ADDRGP4 g_waitingForKey +CNSTI4 0 +ASGNI4 +line 3454 +;3454: g_bindItem = NULL; +ADDRGP4 g_bindItem +CNSTP4 0 +ASGNP4 +line 3455 +;3455: return qtrue; +CNSTI4 1 +RETI4 +ADDRGP4 $1616 +JUMPV +LABELV $1635 +line 3458 +;3456: +;3457: case '`': +;3458: return qtrue; +CNSTI4 1 +RETI4 +ADDRGP4 $1616 +JUMPV +LABELV $1627 +line 3460 +;3459: } +;3460: } +line 3462 +;3461: +;3462: if (key != -1) +ADDRFP4 4 +INDIRI4 +CNSTI4 -1 +EQI4 $1638 +line 3463 +;3463: { +line 3465 +;3464: +;3465: for (i=0; i < g_bindCount; i++) +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +ADDRGP4 $1643 +JUMPV +LABELV $1640 +line 3466 +;3466: { +line 3468 +;3467: +;3468: if (g_bindings[i].bind2 == key) { +CNSTI4 24 +ADDRLP4 0 +INDIRI4 +MULI4 +ADDRGP4 g_bindings+20 +ADDP4 +INDIRI4 +ADDRFP4 4 +INDIRI4 +NEI4 $1644 +line 3469 +;3469: g_bindings[i].bind2 = -1; +CNSTI4 24 +ADDRLP4 0 +INDIRI4 +MULI4 +ADDRGP4 g_bindings+20 +ADDP4 +CNSTI4 -1 +ASGNI4 +line 3470 +;3470: } +LABELV $1644 +line 3472 +;3471: +;3472: if (g_bindings[i].bind1 == key) +CNSTI4 24 +ADDRLP4 0 +INDIRI4 +MULI4 +ADDRGP4 g_bindings+16 +ADDP4 +INDIRI4 +ADDRFP4 4 +INDIRI4 +NEI4 $1648 +line 3473 +;3473: { +line 3474 +;3474: g_bindings[i].bind1 = g_bindings[i].bind2; +ADDRLP4 20 +CNSTI4 24 +ADDRLP4 0 +INDIRI4 +MULI4 +ASGNI4 +ADDRLP4 20 +INDIRI4 +ADDRGP4 g_bindings+16 +ADDP4 +ADDRLP4 20 +INDIRI4 +ADDRGP4 g_bindings+20 +ADDP4 +INDIRI4 +ASGNI4 +line 3475 +;3475: g_bindings[i].bind2 = -1; +CNSTI4 24 +ADDRLP4 0 +INDIRI4 +MULI4 +ADDRGP4 g_bindings+20 +ADDP4 +CNSTI4 -1 +ASGNI4 +line 3476 +;3476: } +LABELV $1648 +line 3477 +;3477: } +LABELV $1641 +line 3465 +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +LABELV $1643 +ADDRLP4 0 +INDIRI4 +ADDRGP4 g_bindCount +INDIRI4 +LTI4 $1640 +line 3478 +;3478: } +LABELV $1638 +line 3481 +;3479: +;3480: +;3481: id = BindingIDFromName(item->cvar); +ADDRFP4 0 +INDIRP4 +CNSTI4 264 +ADDP4 +INDIRP4 +ARGP4 +ADDRLP4 20 +ADDRGP4 BindingIDFromName +CALLI4 +ASGNI4 +ADDRLP4 4 +ADDRLP4 20 +INDIRI4 +ASGNI4 +line 3483 +;3482: +;3483: if (id != -1) { +ADDRLP4 4 +INDIRI4 +CNSTI4 -1 +EQI4 $1654 +line 3484 +;3484: if (key == -1) { +ADDRFP4 4 +INDIRI4 +CNSTI4 -1 +NEI4 $1656 +line 3485 +;3485: if( g_bindings[id].bind1 != -1 ) { +CNSTI4 24 +ADDRLP4 4 +INDIRI4 +MULI4 +ADDRGP4 g_bindings+16 +ADDP4 +INDIRI4 +CNSTI4 -1 +EQI4 $1658 +line 3486 +;3486: DC->setBinding( g_bindings[id].bind1, "" ); +CNSTI4 24 +ADDRLP4 4 +INDIRI4 +MULI4 +ADDRGP4 g_bindings+16 +ADDP4 +INDIRI4 +ARGI4 +ADDRGP4 $54 +ARGP4 +ADDRGP4 DC +INDIRP4 +CNSTI4 144 +ADDP4 +INDIRP4 +CALLV +pop +line 3487 +;3487: g_bindings[id].bind1 = -1; +CNSTI4 24 +ADDRLP4 4 +INDIRI4 +MULI4 +ADDRGP4 g_bindings+16 +ADDP4 +CNSTI4 -1 +ASGNI4 +line 3488 +;3488: } +LABELV $1658 +line 3489 +;3489: if( g_bindings[id].bind2 != -1 ) { +CNSTI4 24 +ADDRLP4 4 +INDIRI4 +MULI4 +ADDRGP4 g_bindings+20 +ADDP4 +INDIRI4 +CNSTI4 -1 +EQI4 $1657 +line 3490 +;3490: DC->setBinding( g_bindings[id].bind2, "" ); +CNSTI4 24 +ADDRLP4 4 +INDIRI4 +MULI4 +ADDRGP4 g_bindings+20 +ADDP4 +INDIRI4 +ARGI4 +ADDRGP4 $54 +ARGP4 +ADDRGP4 DC +INDIRP4 +CNSTI4 144 +ADDP4 +INDIRP4 +CALLV +pop +line 3491 +;3491: g_bindings[id].bind2 = -1; +CNSTI4 24 +ADDRLP4 4 +INDIRI4 +MULI4 +ADDRGP4 g_bindings+20 +ADDP4 +CNSTI4 -1 +ASGNI4 +line 3492 +;3492: } +line 3493 +;3493: } +ADDRGP4 $1657 +JUMPV +LABELV $1656 +line 3494 +;3494: else if (g_bindings[id].bind1 == -1) { +CNSTI4 24 +ADDRLP4 4 +INDIRI4 +MULI4 +ADDRGP4 g_bindings+16 +ADDP4 +INDIRI4 +CNSTI4 -1 +NEI4 $1668 +line 3495 +;3495: g_bindings[id].bind1 = key; +CNSTI4 24 +ADDRLP4 4 +INDIRI4 +MULI4 +ADDRGP4 g_bindings+16 +ADDP4 +ADDRFP4 4 +INDIRI4 +ASGNI4 +line 3496 +;3496: } +ADDRGP4 $1669 +JUMPV +LABELV $1668 +line 3497 +;3497: else if (g_bindings[id].bind1 != key && g_bindings[id].bind2 == -1) { +ADDRLP4 24 +CNSTI4 24 +ADDRLP4 4 +INDIRI4 +MULI4 +ASGNI4 +ADDRLP4 24 +INDIRI4 +ADDRGP4 g_bindings+16 +ADDP4 +INDIRI4 +ADDRFP4 4 +INDIRI4 +EQI4 $1672 +ADDRLP4 24 +INDIRI4 +ADDRGP4 g_bindings+20 +ADDP4 +INDIRI4 +CNSTI4 -1 +NEI4 $1672 +line 3498 +;3498: g_bindings[id].bind2 = key; +CNSTI4 24 +ADDRLP4 4 +INDIRI4 +MULI4 +ADDRGP4 g_bindings+20 +ADDP4 +ADDRFP4 4 +INDIRI4 +ASGNI4 +line 3499 +;3499: } +ADDRGP4 $1673 +JUMPV +LABELV $1672 +line 3500 +;3500: else { +line 3501 +;3501: DC->setBinding( g_bindings[id].bind1, "" ); +CNSTI4 24 +ADDRLP4 4 +INDIRI4 +MULI4 +ADDRGP4 g_bindings+16 +ADDP4 +INDIRI4 +ARGI4 +ADDRGP4 $54 +ARGP4 +ADDRGP4 DC +INDIRP4 +CNSTI4 144 +ADDP4 +INDIRP4 +CALLV +pop +line 3502 +;3502: DC->setBinding( g_bindings[id].bind2, "" ); +CNSTI4 24 +ADDRLP4 4 +INDIRI4 +MULI4 +ADDRGP4 g_bindings+20 +ADDP4 +INDIRI4 +ARGI4 +ADDRGP4 $54 +ARGP4 +ADDRGP4 DC +INDIRP4 +CNSTI4 144 +ADDP4 +INDIRP4 +CALLV +pop +line 3503 +;3503: g_bindings[id].bind1 = key; +CNSTI4 24 +ADDRLP4 4 +INDIRI4 +MULI4 +ADDRGP4 g_bindings+16 +ADDP4 +ADDRFP4 4 +INDIRI4 +ASGNI4 +line 3504 +;3504: g_bindings[id].bind2 = -1; +CNSTI4 24 +ADDRLP4 4 +INDIRI4 +MULI4 +ADDRGP4 g_bindings+20 +ADDP4 +CNSTI4 -1 +ASGNI4 +line 3505 +;3505: } +LABELV $1673 +LABELV $1669 +LABELV $1657 +line 3506 +;3506: } +LABELV $1654 +line 3508 +;3507: +;3508: Controls_SetConfig(qtrue); +CNSTI4 1 +ARGI4 +ADDRGP4 Controls_SetConfig +CALLV +pop +line 3509 +;3509: g_waitingForKey = qfalse; +ADDRGP4 g_waitingForKey +CNSTI4 0 +ASGNI4 +line 3511 +;3510: +;3511: return qtrue; +CNSTI4 1 +RETI4 +LABELV $1616 +endproc Item_Bind_HandleKey 32 12 +export AdjustFrom640 +proc AdjustFrom640 16 0 +line 3516 +;3512:} +;3513: +;3514: +;3515: +;3516:void AdjustFrom640(float *x, float *y, float *w, float *h) { +line 3518 +;3517: //*x = *x * DC->scale + DC->bias; +;3518: *x *= DC->xscale; +ADDRLP4 0 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 0 +INDIRP4 +ADDRLP4 0 +INDIRP4 +INDIRF4 +ADDRGP4 DC +INDIRP4 +CNSTI4 200 +ADDP4 +INDIRF4 +MULF4 +ASGNF4 +line 3519 +;3519: *y *= DC->yscale; +ADDRLP4 4 +ADDRFP4 4 +INDIRP4 +ASGNP4 +ADDRLP4 4 +INDIRP4 +ADDRLP4 4 +INDIRP4 +INDIRF4 +ADDRGP4 DC +INDIRP4 +CNSTI4 196 +ADDP4 +INDIRF4 +MULF4 +ASGNF4 +line 3520 +;3520: *w *= DC->xscale; +ADDRLP4 8 +ADDRFP4 8 +INDIRP4 +ASGNP4 +ADDRLP4 8 +INDIRP4 +ADDRLP4 8 +INDIRP4 +INDIRF4 +ADDRGP4 DC +INDIRP4 +CNSTI4 200 +ADDP4 +INDIRF4 +MULF4 +ASGNF4 +line 3521 +;3521: *h *= DC->yscale; +ADDRLP4 12 +ADDRFP4 12 +INDIRP4 +ASGNP4 +ADDRLP4 12 +INDIRP4 +ADDRLP4 12 +INDIRP4 +INDIRF4 +ADDRGP4 DC +INDIRP4 +CNSTI4 196 +ADDP4 +INDIRF4 +MULF4 +ASGNF4 +line 3522 +;3522:} +LABELV $1681 +endproc AdjustFrom640 16 0 +export Item_Model_Paint +proc Item_Model_Paint 588 16 +line 3524 +;3523: +;3524:void Item_Model_Paint(itemDef_t *item) { +line 3530 +;3525: float x, y, w, h; +;3526: refdef_t refdef; +;3527: refEntity_t ent; +;3528: vec3_t mins, maxs, origin; +;3529: vec3_t angles; +;3530: modelDef_t *modelPtr = (modelDef_t*)item->typeData; +ADDRLP4 508 +ADDRFP4 0 +INDIRP4 +CNSTI4 536 +ADDP4 +INDIRP4 +ASGNP4 +line 3532 +;3531: +;3532: if (modelPtr == NULL) { +ADDRLP4 508 +INDIRP4 +CVPU4 4 +CNSTU4 0 +NEU4 $1683 +line 3533 +;3533: return; +ADDRGP4 $1682 +JUMPV +LABELV $1683 +line 3537 +;3534: } +;3535: +;3536: // setup the refdef +;3537: memset( &refdef, 0, sizeof( refdef ) ); +ADDRLP4 0 +ARGP4 +CNSTI4 0 +ARGI4 +CNSTI4 368 +ARGI4 +ADDRGP4 memset +CALLP4 +pop +line 3538 +;3538: refdef.rdflags = RDF_NOWORLDMODEL; +ADDRLP4 0+76 +CNSTI4 1 +ASGNI4 +line 3539 +;3539: AxisClear( refdef.viewaxis ); +ADDRLP4 0+36 +ARGP4 +ADDRGP4 AxisClear +CALLV +pop +line 3540 +;3540: x = item->window.rect.x+1; +ADDRLP4 568 +ADDRFP4 0 +INDIRP4 +INDIRF4 +CNSTF4 1065353216 +ADDF4 +ASGNF4 +line 3541 +;3541: y = item->window.rect.y+1; +ADDRLP4 572 +ADDRFP4 0 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRF4 +CNSTF4 1065353216 +ADDF4 +ASGNF4 +line 3542 +;3542: w = item->window.rect.w-2; +ADDRLP4 524 +ADDRFP4 0 +INDIRP4 +CNSTI4 8 +ADDP4 +INDIRF4 +CNSTF4 1073741824 +SUBF4 +ASGNF4 +line 3543 +;3543: h = item->window.rect.h-2; +ADDRLP4 528 +ADDRFP4 0 +INDIRP4 +CNSTI4 12 +ADDP4 +INDIRF4 +CNSTF4 1073741824 +SUBF4 +ASGNF4 +line 3545 +;3544: +;3545: AdjustFrom640( &x, &y, &w, &h ); +ADDRLP4 568 +ARGP4 +ADDRLP4 572 +ARGP4 +ADDRLP4 524 +ARGP4 +ADDRLP4 528 +ARGP4 +ADDRGP4 AdjustFrom640 +CALLV +pop +line 3547 +;3546: +;3547: refdef.x = x; +ADDRLP4 0 +ADDRLP4 568 +INDIRF4 +CVFI4 4 +ASGNI4 +line 3548 +;3548: refdef.y = y; +ADDRLP4 0+4 +ADDRLP4 572 +INDIRF4 +CVFI4 4 +ASGNI4 +line 3549 +;3549: refdef.width = w; +ADDRLP4 0+8 +ADDRLP4 524 +INDIRF4 +CVFI4 4 +ASGNI4 +line 3550 +;3550: refdef.height = h; +ADDRLP4 0+12 +ADDRLP4 528 +INDIRF4 +CVFI4 4 +ASGNI4 +line 3552 +;3551: +;3552: DC->modelBounds( item->asset, mins, maxs ); +ADDRFP4 0 +INDIRP4 +CNSTI4 232 +ADDP4 +INDIRI4 +ARGI4 +ADDRLP4 544 +ARGP4 +ADDRLP4 556 +ARGP4 +ADDRGP4 DC +INDIRP4 +CNSTI4 32 +ADDP4 +INDIRP4 +CALLV +pop +line 3554 +;3553: +;3554: origin[2] = -0.5 * ( mins[2] + maxs[2] ); +ADDRLP4 512+8 +CNSTF4 3204448256 +ADDRLP4 544+8 +INDIRF4 +ADDRLP4 556+8 +INDIRF4 +ADDF4 +MULF4 +ASGNF4 +line 3555 +;3555: origin[1] = 0.5 * ( mins[1] + maxs[1] ); +ADDRLP4 512+4 +CNSTF4 1056964608 +ADDRLP4 544+4 +INDIRF4 +ADDRLP4 556+4 +INDIRF4 +ADDF4 +MULF4 +ASGNF4 +line 3558 +;3556: +;3557: // calculate distance so the model nearly fills the box +;3558: if (qtrue) { +line 3559 +;3559: float len = 0.5 * ( maxs[2] - mins[2] ); +ADDRLP4 576 +CNSTF4 1056964608 +ADDRLP4 556+8 +INDIRF4 +ADDRLP4 544+8 +INDIRF4 +SUBF4 +MULF4 +ASGNF4 +line 3560 +;3560: origin[0] = len / 0.268; // len / tan( fov/2 ) +ADDRLP4 512 +ADDRLP4 576 +INDIRF4 +CNSTF4 1049179980 +DIVF4 +ASGNF4 +line 3562 +;3561: //origin[0] = len / tan(w/2); +;3562: } else { +ADDRGP4 $1697 +JUMPV +LABELV $1696 +line 3563 +;3563: origin[0] = item->textscale; +ADDRLP4 512 +ADDRFP4 0 +INDIRP4 +CNSTI4 216 +ADDP4 +INDIRF4 +ASGNF4 +line 3564 +;3564: } +LABELV $1697 +line 3565 +;3565: refdef.fov_x = (modelPtr->fov_x) ? modelPtr->fov_x : w; +ADDRLP4 508 +INDIRP4 +CNSTI4 16 +ADDP4 +INDIRF4 +CNSTF4 0 +EQF4 $1702 +ADDRLP4 576 +ADDRLP4 508 +INDIRP4 +CNSTI4 16 +ADDP4 +INDIRF4 +ASGNF4 +ADDRGP4 $1703 +JUMPV +LABELV $1702 +ADDRLP4 576 +ADDRLP4 524 +INDIRF4 +ASGNF4 +LABELV $1703 +ADDRLP4 0+16 +ADDRLP4 576 +INDIRF4 +ASGNF4 +line 3566 +;3566: refdef.fov_y = (modelPtr->fov_y) ? modelPtr->fov_y : h; +ADDRLP4 508 +INDIRP4 +CNSTI4 20 +ADDP4 +INDIRF4 +CNSTF4 0 +EQF4 $1706 +ADDRLP4 580 +ADDRLP4 508 +INDIRP4 +CNSTI4 20 +ADDP4 +INDIRF4 +ASGNF4 +ADDRGP4 $1707 +JUMPV +LABELV $1706 +ADDRLP4 580 +ADDRLP4 528 +INDIRF4 +ASGNF4 +LABELV $1707 +ADDRLP4 0+20 +ADDRLP4 580 +INDIRF4 +ASGNF4 +line 3573 +;3567: +;3568: //refdef.fov_x = (int)((float)refdef.width / 640.0f * 90.0f); +;3569: //xx = refdef.width / tan( refdef.fov_x / 360 * M_PI ); +;3570: //refdef.fov_y = atan2( refdef.height, xx ); +;3571: //refdef.fov_y *= ( 360 / M_PI ); +;3572: +;3573: DC->clearScene(); +ADDRGP4 DC +INDIRP4 +CNSTI4 52 +ADDP4 +INDIRP4 +CALLV +pop +line 3575 +;3574: +;3575: refdef.time = DC->realTime; +ADDRLP4 0+72 +ADDRGP4 DC +INDIRP4 +CNSTI4 208 +ADDP4 +INDIRI4 +ASGNI4 +line 3579 +;3576: +;3577: // add the model +;3578: +;3579: memset( &ent, 0, sizeof(ent) ); +ADDRLP4 368 +ARGP4 +CNSTI4 0 +ARGI4 +CNSTI4 140 +ARGI4 +ADDRGP4 memset +CALLP4 +pop +line 3586 +;3580: +;3581: //adjust = 5.0 * sin( (float)uis.realtime / 500 ); +;3582: //adjust = 360 % (int)((float)uis.realtime / 1000); +;3583: //VectorSet( angles, 0, 0, 1 ); +;3584: +;3585: // use item storage to track +;3586: if (modelPtr->rotationSpeed) { +ADDRLP4 508 +INDIRP4 +CNSTI4 24 +ADDP4 +INDIRI4 +CNSTI4 0 +EQI4 $1709 +line 3587 +;3587: if (DC->realTime > item->window.nextTime) { +ADDRGP4 DC +INDIRP4 +CNSTI4 208 +ADDP4 +INDIRI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 108 +ADDP4 +INDIRI4 +LEI4 $1711 +line 3588 +;3588: item->window.nextTime = DC->realTime + modelPtr->rotationSpeed; +ADDRFP4 0 +INDIRP4 +CNSTI4 108 +ADDP4 +ADDRGP4 DC +INDIRP4 +CNSTI4 208 +ADDP4 +INDIRI4 +ADDRLP4 508 +INDIRP4 +CNSTI4 24 +ADDP4 +INDIRI4 +ADDI4 +ASGNI4 +line 3589 +;3589: modelPtr->angle = (int)(modelPtr->angle + 1) % 360; +ADDRLP4 508 +INDIRP4 +ADDRLP4 508 +INDIRP4 +INDIRI4 +CNSTI4 1 +ADDI4 +CNSTI4 360 +MODI4 +ASGNI4 +line 3590 +;3590: } +LABELV $1711 +line 3591 +;3591: } +LABELV $1709 +line 3592 +;3592: VectorSet( angles, 0, modelPtr->angle, 0 ); +ADDRLP4 532 +CNSTF4 0 +ASGNF4 +ADDRLP4 532+4 +ADDRLP4 508 +INDIRP4 +INDIRI4 +CVIF4 4 +ASGNF4 +ADDRLP4 532+8 +CNSTF4 0 +ASGNF4 +line 3593 +;3593: AnglesToAxis( angles, ent.axis ); +ADDRLP4 532 +ARGP4 +ADDRLP4 368+28 +ARGP4 +ADDRGP4 AnglesToAxis +CALLV +pop +line 3595 +;3594: +;3595: ent.hModel = item->asset; +ADDRLP4 368+8 +ADDRFP4 0 +INDIRP4 +CNSTI4 232 +ADDP4 +INDIRI4 +ASGNI4 +line 3596 +;3596: VectorCopy( origin, ent.origin ); +ADDRLP4 368+68 +ADDRLP4 512 +INDIRB +ASGNB 12 +line 3597 +;3597: VectorCopy( origin, ent.lightingOrigin ); +ADDRLP4 368+12 +ADDRLP4 512 +INDIRB +ASGNB 12 +line 3598 +;3598: ent.renderfx = RF_LIGHTING_ORIGIN | RF_NOSHADOW; +ADDRLP4 368+4 +CNSTI4 192 +ASGNI4 +line 3599 +;3599: VectorCopy( ent.origin, ent.oldorigin ); +ADDRLP4 368+84 +ADDRLP4 368+68 +INDIRB +ASGNB 12 +line 3601 +;3600: +;3601: DC->addRefEntityToScene( &ent ); +ADDRLP4 368 +ARGP4 +ADDRGP4 DC +INDIRP4 +CNSTI4 56 +ADDP4 +INDIRP4 +CALLV +pop +line 3602 +;3602: DC->renderScene( &refdef ); +ADDRLP4 0 +ARGP4 +ADDRGP4 DC +INDIRP4 +CNSTI4 60 +ADDP4 +INDIRP4 +CALLV +pop +line 3604 +;3603: +;3604:} +LABELV $1682 +endproc Item_Model_Paint 588 16 +export Item_Image_Paint +proc Item_Image_Paint 16 20 +line 3607 +;3605: +;3606: +;3607:void Item_Image_Paint(itemDef_t *item) { +line 3608 +;3608: if (item == NULL) { +ADDRFP4 0 +INDIRP4 +CVPU4 4 +CNSTU4 0 +NEU4 $1723 +line 3609 +;3609: return; +ADDRGP4 $1722 +JUMPV +LABELV $1723 +line 3611 +;3610: } +;3611: DC->drawHandlePic(item->window.rect.x+1, item->window.rect.y+1, item->window.rect.w-2, item->window.rect.h-2, item->asset); +ADDRLP4 0 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 4 +CNSTF4 1065353216 +ASGNF4 +ADDRLP4 0 +INDIRP4 +INDIRF4 +ADDRLP4 4 +INDIRF4 +ADDF4 +ARGF4 +ADDRLP4 0 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRF4 +ADDRLP4 4 +INDIRF4 +ADDF4 +ARGF4 +ADDRLP4 8 +CNSTI4 8 +ASGNI4 +ADDRLP4 12 +CNSTF4 1073741824 +ASGNF4 +ADDRLP4 0 +INDIRP4 +ADDRLP4 8 +INDIRI4 +ADDP4 +INDIRF4 +ADDRLP4 12 +INDIRF4 +SUBF4 +ARGF4 +ADDRLP4 0 +INDIRP4 +CNSTI4 12 +ADDP4 +INDIRF4 +ADDRLP4 12 +INDIRF4 +SUBF4 +ARGF4 +ADDRLP4 0 +INDIRP4 +CNSTI4 232 +ADDP4 +INDIRI4 +ARGI4 +ADDRGP4 DC +INDIRP4 +ADDRLP4 8 +INDIRI4 +ADDP4 +INDIRP4 +CALLV +pop +line 3612 +;3612:} +LABELV $1722 +endproc Item_Image_Paint 16 20 +export Item_ListBox_Paint +proc Item_ListBox_Paint 104 32 +line 3614 +;3613: +;3614:void Item_ListBox_Paint(itemDef_t *item) { +line 3618 +;3615: float x, y, size, count, i, thumb; +;3616: qhandle_t image; +;3617: qhandle_t optionalImage; +;3618: listBoxDef_t *listPtr = (listBoxDef_t*)item->typeData; +ADDRLP4 0 +ADDRFP4 0 +INDIRP4 +CNSTI4 536 +ADDP4 +INDIRP4 +ASGNP4 +line 3624 +;3619: +;3620: // the listbox is horizontal or vertical and has a fixed size scroll bar going either direction +;3621: // elements are enumerated from the DC and either text or image handles are acquired from the DC as well +;3622: // textscale is used to size the text, textalignx and textaligny are used to size image elements +;3623: // there is no clipping available so only the last completely visible item is painted +;3624: count = DC->feederCount(item->special); +ADDRFP4 0 +INDIRP4 +CNSTI4 528 +ADDP4 +INDIRF4 +ARGF4 +ADDRLP4 36 +ADDRGP4 DC +INDIRP4 +CNSTI4 120 +ADDP4 +INDIRP4 +CALLI4 +ASGNI4 +ADDRLP4 28 +ADDRLP4 36 +INDIRI4 +CVIF4 4 +ASGNF4 +line 3626 +;3625: // default is vertical if horizontal flag is not here +;3626: if (item->window.flags & WINDOW_HORIZONTAL) { +ADDRFP4 0 +INDIRP4 +CNSTI4 68 +ADDP4 +INDIRI4 +CNSTI4 1024 +BANDI4 +CNSTI4 0 +EQI4 $1726 +line 3629 +;3627: // draw scrollbar in bottom of the window +;3628: // bar +;3629: x = item->window.rect.x + 1; +ADDRLP4 16 +ADDRFP4 0 +INDIRP4 +INDIRF4 +CNSTF4 1065353216 +ADDF4 +ASGNF4 +line 3630 +;3630: y = item->window.rect.y + item->window.rect.h - SCROLLBAR_SIZE - 1; +ADDRLP4 40 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 12 +ADDRLP4 40 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRF4 +ADDRLP4 40 +INDIRP4 +CNSTI4 12 +ADDP4 +INDIRF4 +ADDF4 +CNSTF4 1098907648 +SUBF4 +CNSTF4 1065353216 +SUBF4 +ASGNF4 +line 3631 +;3631: DC->drawHandlePic(x, y, SCROLLBAR_SIZE, SCROLLBAR_SIZE, DC->Assets.scrollBarArrowLeft); +ADDRLP4 16 +INDIRF4 +ARGF4 +ADDRLP4 12 +INDIRF4 +ARGF4 +ADDRLP4 44 +CNSTF4 1098907648 +ASGNF4 +ADDRLP4 44 +INDIRF4 +ARGF4 +ADDRLP4 44 +INDIRF4 +ARGF4 +ADDRLP4 48 +ADDRGP4 DC +INDIRP4 +ASGNP4 +ADDRLP4 48 +INDIRP4 +CNSTI4 61900 +ADDP4 +INDIRI4 +ARGI4 +ADDRLP4 48 +INDIRP4 +CNSTI4 8 +ADDP4 +INDIRP4 +CALLV +pop +line 3632 +;3632: x += SCROLLBAR_SIZE - 1; +ADDRLP4 16 +ADDRLP4 16 +INDIRF4 +CNSTF4 1097859072 +ADDF4 +ASGNF4 +line 3633 +;3633: size = item->window.rect.w - (SCROLLBAR_SIZE * 2); +ADDRLP4 20 +ADDRFP4 0 +INDIRP4 +CNSTI4 8 +ADDP4 +INDIRF4 +CNSTF4 1107296256 +SUBF4 +ASGNF4 +line 3634 +;3634: DC->drawHandlePic(x, y, size+1, SCROLLBAR_SIZE, DC->Assets.scrollBar); +ADDRLP4 16 +INDIRF4 +ARGF4 +ADDRLP4 12 +INDIRF4 +ARGF4 +ADDRLP4 20 +INDIRF4 +CNSTF4 1065353216 +ADDF4 +ARGF4 +CNSTF4 1098907648 +ARGF4 +ADDRLP4 52 +ADDRGP4 DC +INDIRP4 +ASGNP4 +ADDRLP4 52 +INDIRP4 +CNSTI4 61908 +ADDP4 +INDIRI4 +ARGI4 +ADDRLP4 52 +INDIRP4 +CNSTI4 8 +ADDP4 +INDIRP4 +CALLV +pop +line 3635 +;3635: x += size - 1; +ADDRLP4 16 +ADDRLP4 16 +INDIRF4 +ADDRLP4 20 +INDIRF4 +CNSTF4 1065353216 +SUBF4 +ADDF4 +ASGNF4 +line 3636 +;3636: DC->drawHandlePic(x, y, SCROLLBAR_SIZE, SCROLLBAR_SIZE, DC->Assets.scrollBarArrowRight); +ADDRLP4 16 +INDIRF4 +ARGF4 +ADDRLP4 12 +INDIRF4 +ARGF4 +ADDRLP4 56 +CNSTF4 1098907648 +ASGNF4 +ADDRLP4 56 +INDIRF4 +ARGF4 +ADDRLP4 56 +INDIRF4 +ARGF4 +ADDRLP4 60 +ADDRGP4 DC +INDIRP4 +ASGNP4 +ADDRLP4 60 +INDIRP4 +CNSTI4 61904 +ADDP4 +INDIRI4 +ARGI4 +ADDRLP4 60 +INDIRP4 +CNSTI4 8 +ADDP4 +INDIRP4 +CALLV +pop +line 3638 +;3637: // thumb +;3638: thumb = Item_ListBox_ThumbDrawPosition(item);//Item_ListBox_ThumbPosition(item); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRLP4 64 +ADDRGP4 Item_ListBox_ThumbDrawPosition +CALLI4 +ASGNI4 +ADDRLP4 32 +ADDRLP4 64 +INDIRI4 +CVIF4 4 +ASGNF4 +line 3639 +;3639: if (thumb > x - SCROLLBAR_SIZE - 1) { +ADDRLP4 32 +INDIRF4 +ADDRLP4 16 +INDIRF4 +CNSTF4 1098907648 +SUBF4 +CNSTF4 1065353216 +SUBF4 +LEF4 $1728 +line 3640 +;3640: thumb = x - SCROLLBAR_SIZE - 1; +ADDRLP4 32 +ADDRLP4 16 +INDIRF4 +CNSTF4 1098907648 +SUBF4 +CNSTF4 1065353216 +SUBF4 +ASGNF4 +line 3641 +;3641: } +LABELV $1728 +line 3642 +;3642: DC->drawHandlePic(thumb, y, SCROLLBAR_SIZE, SCROLLBAR_SIZE, DC->Assets.scrollBarThumb); +ADDRLP4 32 +INDIRF4 +ARGF4 +ADDRLP4 12 +INDIRF4 +ARGF4 +ADDRLP4 68 +CNSTF4 1098907648 +ASGNF4 +ADDRLP4 68 +INDIRF4 +ARGF4 +ADDRLP4 68 +INDIRF4 +ARGF4 +ADDRLP4 72 +ADDRGP4 DC +INDIRP4 +ASGNP4 +ADDRLP4 72 +INDIRP4 +CNSTI4 61912 +ADDP4 +INDIRI4 +ARGI4 +ADDRLP4 72 +INDIRP4 +CNSTI4 8 +ADDP4 +INDIRP4 +CALLV +pop +line 3644 +;3643: // +;3644: listPtr->endPos = listPtr->startPos; +ADDRLP4 0 +INDIRP4 +CNSTI4 4 +ADDP4 +ADDRLP4 0 +INDIRP4 +INDIRI4 +ASGNI4 +line 3645 +;3645: size = item->window.rect.w - 2; +ADDRLP4 20 +ADDRFP4 0 +INDIRP4 +CNSTI4 8 +ADDP4 +INDIRF4 +CNSTF4 1073741824 +SUBF4 +ASGNF4 +line 3648 +;3646: // items +;3647: // size contains max available space +;3648: if (listPtr->elementStyle == LISTBOX_IMAGE) { +ADDRLP4 0 +INDIRP4 +CNSTI4 24 +ADDP4 +INDIRI4 +CNSTI4 1 +NEI4 $1727 +line 3650 +;3649: // fit = 0; +;3650: x = item->window.rect.x + 1; +ADDRLP4 16 +ADDRFP4 0 +INDIRP4 +INDIRF4 +CNSTF4 1065353216 +ADDF4 +ASGNF4 +line 3651 +;3651: y = item->window.rect.y + 1; +ADDRLP4 12 +ADDRFP4 0 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRF4 +CNSTF4 1065353216 +ADDF4 +ASGNF4 +line 3652 +;3652: for (i = listPtr->startPos; i < count; i++) { +ADDRLP4 4 +ADDRLP4 0 +INDIRP4 +INDIRI4 +CVIF4 4 +ASGNF4 +ADDRGP4 $1735 +JUMPV +LABELV $1732 +line 3655 +;3653: // always draw at least one +;3654: // which may overdraw the box if it is too small for the element +;3655: image = DC->feederItemImage(item->special, i); +ADDRFP4 0 +INDIRP4 +CNSTI4 528 +ADDP4 +INDIRF4 +ARGF4 +ADDRLP4 4 +INDIRF4 +CVFI4 4 +ARGI4 +ADDRLP4 80 +ADDRGP4 DC +INDIRP4 +CNSTI4 128 +ADDP4 +INDIRP4 +CALLI4 +ASGNI4 +ADDRLP4 24 +ADDRLP4 80 +INDIRI4 +ASGNI4 +line 3656 +;3656: if (image) { +ADDRLP4 24 +INDIRI4 +CNSTI4 0 +EQI4 $1736 +line 3657 +;3657: DC->drawHandlePic(x+1, y+1, listPtr->elementWidth - 2, listPtr->elementHeight - 2, image); +ADDRLP4 84 +CNSTF4 1065353216 +ASGNF4 +ADDRLP4 16 +INDIRF4 +ADDRLP4 84 +INDIRF4 +ADDF4 +ARGF4 +ADDRLP4 12 +INDIRF4 +ADDRLP4 84 +INDIRF4 +ADDF4 +ARGF4 +ADDRLP4 92 +CNSTF4 1073741824 +ASGNF4 +ADDRLP4 0 +INDIRP4 +CNSTI4 16 +ADDP4 +INDIRF4 +ADDRLP4 92 +INDIRF4 +SUBF4 +ARGF4 +ADDRLP4 0 +INDIRP4 +CNSTI4 20 +ADDP4 +INDIRF4 +ADDRLP4 92 +INDIRF4 +SUBF4 +ARGF4 +ADDRLP4 24 +INDIRI4 +ARGI4 +ADDRGP4 DC +INDIRP4 +CNSTI4 8 +ADDP4 +INDIRP4 +CALLV +pop +line 3658 +;3658: } +LABELV $1736 +line 3660 +;3659: +;3660: if (i == item->cursorPos) { +ADDRLP4 4 +INDIRF4 +ADDRFP4 0 +INDIRP4 +CNSTI4 532 +ADDP4 +INDIRI4 +CVIF4 4 +NEF4 $1738 +line 3661 +;3661: DC->drawRect(x, y, listPtr->elementWidth-1, listPtr->elementHeight-1, item->window.borderSize, item->window.borderColor); +ADDRLP4 16 +INDIRF4 +ARGF4 +ADDRLP4 12 +INDIRF4 +ARGF4 +ADDRLP4 88 +CNSTF4 1065353216 +ASGNF4 +ADDRLP4 0 +INDIRP4 +CNSTI4 16 +ADDP4 +INDIRF4 +ADDRLP4 88 +INDIRF4 +SUBF4 +ARGF4 +ADDRLP4 0 +INDIRP4 +CNSTI4 20 +ADDP4 +INDIRF4 +ADDRLP4 88 +INDIRF4 +SUBF4 +ARGF4 +ADDRLP4 92 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 92 +INDIRP4 +CNSTI4 64 +ADDP4 +INDIRF4 +ARGF4 +ADDRLP4 92 +INDIRP4 +CNSTI4 144 +ADDP4 +ARGP4 +ADDRGP4 DC +INDIRP4 +CNSTI4 40 +ADDP4 +INDIRP4 +CALLV +pop +line 3662 +;3662: } +LABELV $1738 +line 3664 +;3663: +;3664: size -= listPtr->elementWidth; +ADDRLP4 20 +ADDRLP4 20 +INDIRF4 +ADDRLP4 0 +INDIRP4 +CNSTI4 16 +ADDP4 +INDIRF4 +SUBF4 +ASGNF4 +line 3665 +;3665: if (size < listPtr->elementWidth) { +ADDRLP4 20 +INDIRF4 +ADDRLP4 0 +INDIRP4 +CNSTI4 16 +ADDP4 +INDIRF4 +GEF4 $1740 +line 3666 +;3666: listPtr->drawPadding = size; //listPtr->elementWidth - size; +ADDRLP4 0 +INDIRP4 +CNSTI4 8 +ADDP4 +ADDRLP4 20 +INDIRF4 +CVFI4 4 +ASGNI4 +line 3667 +;3667: break; +ADDRGP4 $1727 +JUMPV +LABELV $1740 +line 3669 +;3668: } +;3669: x += listPtr->elementWidth; +ADDRLP4 16 +ADDRLP4 16 +INDIRF4 +ADDRLP4 0 +INDIRP4 +CNSTI4 16 +ADDP4 +INDIRF4 +ADDF4 +ASGNF4 +line 3670 +;3670: listPtr->endPos++; +ADDRLP4 84 +ADDRLP4 0 +INDIRP4 +CNSTI4 4 +ADDP4 +ASGNP4 +ADDRLP4 84 +INDIRP4 +ADDRLP4 84 +INDIRP4 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 3672 +;3671: // fit++; +;3672: } +LABELV $1733 +line 3652 +ADDRLP4 4 +ADDRLP4 4 +INDIRF4 +CNSTF4 1065353216 +ADDF4 +ASGNF4 +LABELV $1735 +ADDRLP4 4 +INDIRF4 +ADDRLP4 28 +INDIRF4 +LTF4 $1732 +line 3673 +;3673: } else { +line 3675 +;3674: // +;3675: } +line 3676 +;3676: } else { +ADDRGP4 $1727 +JUMPV +LABELV $1726 +line 3678 +;3677: // draw scrollbar to right side of the window +;3678: x = item->window.rect.x + item->window.rect.w - SCROLLBAR_SIZE - 1; +ADDRLP4 40 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 16 +ADDRLP4 40 +INDIRP4 +INDIRF4 +ADDRLP4 40 +INDIRP4 +CNSTI4 8 +ADDP4 +INDIRF4 +ADDF4 +CNSTF4 1098907648 +SUBF4 +CNSTF4 1065353216 +SUBF4 +ASGNF4 +line 3679 +;3679: y = item->window.rect.y + 1; +ADDRLP4 12 +ADDRFP4 0 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRF4 +CNSTF4 1065353216 +ADDF4 +ASGNF4 +line 3680 +;3680: DC->drawHandlePic(x, y, SCROLLBAR_SIZE, SCROLLBAR_SIZE, DC->Assets.scrollBarArrowUp); +ADDRLP4 16 +INDIRF4 +ARGF4 +ADDRLP4 12 +INDIRF4 +ARGF4 +ADDRLP4 44 +CNSTF4 1098907648 +ASGNF4 +ADDRLP4 44 +INDIRF4 +ARGF4 +ADDRLP4 44 +INDIRF4 +ARGF4 +ADDRLP4 48 +ADDRGP4 DC +INDIRP4 +ASGNP4 +ADDRLP4 48 +INDIRP4 +CNSTI4 61892 +ADDP4 +INDIRI4 +ARGI4 +ADDRLP4 48 +INDIRP4 +CNSTI4 8 +ADDP4 +INDIRP4 +CALLV +pop +line 3681 +;3681: y += SCROLLBAR_SIZE - 1; +ADDRLP4 12 +ADDRLP4 12 +INDIRF4 +CNSTF4 1097859072 +ADDF4 +ASGNF4 +line 3683 +;3682: +;3683: listPtr->endPos = listPtr->startPos; +ADDRLP4 0 +INDIRP4 +CNSTI4 4 +ADDP4 +ADDRLP4 0 +INDIRP4 +INDIRI4 +ASGNI4 +line 3684 +;3684: size = item->window.rect.h - (SCROLLBAR_SIZE * 2); +ADDRLP4 20 +ADDRFP4 0 +INDIRP4 +CNSTI4 12 +ADDP4 +INDIRF4 +CNSTF4 1107296256 +SUBF4 +ASGNF4 +line 3685 +;3685: DC->drawHandlePic(x, y, SCROLLBAR_SIZE, size+1, DC->Assets.scrollBar); +ADDRLP4 16 +INDIRF4 +ARGF4 +ADDRLP4 12 +INDIRF4 +ARGF4 +CNSTF4 1098907648 +ARGF4 +ADDRLP4 20 +INDIRF4 +CNSTF4 1065353216 +ADDF4 +ARGF4 +ADDRLP4 56 +ADDRGP4 DC +INDIRP4 +ASGNP4 +ADDRLP4 56 +INDIRP4 +CNSTI4 61908 +ADDP4 +INDIRI4 +ARGI4 +ADDRLP4 56 +INDIRP4 +CNSTI4 8 +ADDP4 +INDIRP4 +CALLV +pop +line 3686 +;3686: y += size - 1; +ADDRLP4 12 +ADDRLP4 12 +INDIRF4 +ADDRLP4 20 +INDIRF4 +CNSTF4 1065353216 +SUBF4 +ADDF4 +ASGNF4 +line 3687 +;3687: DC->drawHandlePic(x, y, SCROLLBAR_SIZE, SCROLLBAR_SIZE, DC->Assets.scrollBarArrowDown); +ADDRLP4 16 +INDIRF4 +ARGF4 +ADDRLP4 12 +INDIRF4 +ARGF4 +ADDRLP4 60 +CNSTF4 1098907648 +ASGNF4 +ADDRLP4 60 +INDIRF4 +ARGF4 +ADDRLP4 60 +INDIRF4 +ARGF4 +ADDRLP4 64 +ADDRGP4 DC +INDIRP4 +ASGNP4 +ADDRLP4 64 +INDIRP4 +CNSTI4 61896 +ADDP4 +INDIRI4 +ARGI4 +ADDRLP4 64 +INDIRP4 +CNSTI4 8 +ADDP4 +INDIRP4 +CALLV +pop +line 3689 +;3688: // thumb +;3689: thumb = Item_ListBox_ThumbDrawPosition(item);//Item_ListBox_ThumbPosition(item); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRLP4 68 +ADDRGP4 Item_ListBox_ThumbDrawPosition +CALLI4 +ASGNI4 +ADDRLP4 32 +ADDRLP4 68 +INDIRI4 +CVIF4 4 +ASGNF4 +line 3690 +;3690: if (thumb > y - SCROLLBAR_SIZE - 1) { +ADDRLP4 32 +INDIRF4 +ADDRLP4 12 +INDIRF4 +CNSTF4 1098907648 +SUBF4 +CNSTF4 1065353216 +SUBF4 +LEF4 $1742 +line 3691 +;3691: thumb = y - SCROLLBAR_SIZE - 1; +ADDRLP4 32 +ADDRLP4 12 +INDIRF4 +CNSTF4 1098907648 +SUBF4 +CNSTF4 1065353216 +SUBF4 +ASGNF4 +line 3692 +;3692: } +LABELV $1742 +line 3693 +;3693: DC->drawHandlePic(x, thumb, SCROLLBAR_SIZE, SCROLLBAR_SIZE, DC->Assets.scrollBarThumb); +ADDRLP4 16 +INDIRF4 +ARGF4 +ADDRLP4 32 +INDIRF4 +ARGF4 +ADDRLP4 72 +CNSTF4 1098907648 +ASGNF4 +ADDRLP4 72 +INDIRF4 +ARGF4 +ADDRLP4 72 +INDIRF4 +ARGF4 +ADDRLP4 76 +ADDRGP4 DC +INDIRP4 +ASGNP4 +ADDRLP4 76 +INDIRP4 +CNSTI4 61912 +ADDP4 +INDIRI4 +ARGI4 +ADDRLP4 76 +INDIRP4 +CNSTI4 8 +ADDP4 +INDIRP4 +CALLV +pop +line 3696 +;3694: +;3695: // adjust size for item painting +;3696: size = item->window.rect.h - 2; +ADDRLP4 20 +ADDRFP4 0 +INDIRP4 +CNSTI4 12 +ADDP4 +INDIRF4 +CNSTF4 1073741824 +SUBF4 +ASGNF4 +line 3697 +;3697: if (listPtr->elementStyle == LISTBOX_IMAGE) { +ADDRLP4 0 +INDIRP4 +CNSTI4 24 +ADDP4 +INDIRI4 +CNSTI4 1 +NEI4 $1744 +line 3699 +;3698: // fit = 0; +;3699: x = item->window.rect.x + 1; +ADDRLP4 16 +ADDRFP4 0 +INDIRP4 +INDIRF4 +CNSTF4 1065353216 +ADDF4 +ASGNF4 +line 3700 +;3700: y = item->window.rect.y + 1; +ADDRLP4 12 +ADDRFP4 0 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRF4 +CNSTF4 1065353216 +ADDF4 +ASGNF4 +line 3701 +;3701: for (i = listPtr->startPos; i < count; i++) { +ADDRLP4 4 +ADDRLP4 0 +INDIRP4 +INDIRI4 +CVIF4 4 +ASGNF4 +ADDRGP4 $1749 +JUMPV +LABELV $1746 +line 3704 +;3702: // always draw at least one +;3703: // which may overdraw the box if it is too small for the element +;3704: image = DC->feederItemImage(item->special, i); +ADDRFP4 0 +INDIRP4 +CNSTI4 528 +ADDP4 +INDIRF4 +ARGF4 +ADDRLP4 4 +INDIRF4 +CVFI4 4 +ARGI4 +ADDRLP4 80 +ADDRGP4 DC +INDIRP4 +CNSTI4 128 +ADDP4 +INDIRP4 +CALLI4 +ASGNI4 +ADDRLP4 24 +ADDRLP4 80 +INDIRI4 +ASGNI4 +line 3705 +;3705: if (image) { +ADDRLP4 24 +INDIRI4 +CNSTI4 0 +EQI4 $1750 +line 3706 +;3706: DC->drawHandlePic(x+1, y+1, listPtr->elementWidth - 2, listPtr->elementHeight - 2, image); +ADDRLP4 84 +CNSTF4 1065353216 +ASGNF4 +ADDRLP4 16 +INDIRF4 +ADDRLP4 84 +INDIRF4 +ADDF4 +ARGF4 +ADDRLP4 12 +INDIRF4 +ADDRLP4 84 +INDIRF4 +ADDF4 +ARGF4 +ADDRLP4 92 +CNSTF4 1073741824 +ASGNF4 +ADDRLP4 0 +INDIRP4 +CNSTI4 16 +ADDP4 +INDIRF4 +ADDRLP4 92 +INDIRF4 +SUBF4 +ARGF4 +ADDRLP4 0 +INDIRP4 +CNSTI4 20 +ADDP4 +INDIRF4 +ADDRLP4 92 +INDIRF4 +SUBF4 +ARGF4 +ADDRLP4 24 +INDIRI4 +ARGI4 +ADDRGP4 DC +INDIRP4 +CNSTI4 8 +ADDP4 +INDIRP4 +CALLV +pop +line 3707 +;3707: } +LABELV $1750 +line 3709 +;3708: +;3709: if (i == item->cursorPos) { +ADDRLP4 4 +INDIRF4 +ADDRFP4 0 +INDIRP4 +CNSTI4 532 +ADDP4 +INDIRI4 +CVIF4 4 +NEF4 $1752 +line 3710 +;3710: DC->drawRect(x, y, listPtr->elementWidth - 1, listPtr->elementHeight - 1, item->window.borderSize, item->window.borderColor); +ADDRLP4 16 +INDIRF4 +ARGF4 +ADDRLP4 12 +INDIRF4 +ARGF4 +ADDRLP4 88 +CNSTF4 1065353216 +ASGNF4 +ADDRLP4 0 +INDIRP4 +CNSTI4 16 +ADDP4 +INDIRF4 +ADDRLP4 88 +INDIRF4 +SUBF4 +ARGF4 +ADDRLP4 0 +INDIRP4 +CNSTI4 20 +ADDP4 +INDIRF4 +ADDRLP4 88 +INDIRF4 +SUBF4 +ARGF4 +ADDRLP4 92 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 92 +INDIRP4 +CNSTI4 64 +ADDP4 +INDIRF4 +ARGF4 +ADDRLP4 92 +INDIRP4 +CNSTI4 144 +ADDP4 +ARGP4 +ADDRGP4 DC +INDIRP4 +CNSTI4 40 +ADDP4 +INDIRP4 +CALLV +pop +line 3711 +;3711: } +LABELV $1752 +line 3713 +;3712: +;3713: listPtr->endPos++; +ADDRLP4 84 +ADDRLP4 0 +INDIRP4 +CNSTI4 4 +ADDP4 +ASGNP4 +ADDRLP4 84 +INDIRP4 +ADDRLP4 84 +INDIRP4 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 3714 +;3714: size -= listPtr->elementWidth; +ADDRLP4 20 +ADDRLP4 20 +INDIRF4 +ADDRLP4 0 +INDIRP4 +CNSTI4 16 +ADDP4 +INDIRF4 +SUBF4 +ASGNF4 +line 3715 +;3715: if (size < listPtr->elementHeight) { +ADDRLP4 20 +INDIRF4 +ADDRLP4 0 +INDIRP4 +CNSTI4 20 +ADDP4 +INDIRF4 +GEF4 $1754 +line 3716 +;3716: listPtr->drawPadding = listPtr->elementHeight - size; +ADDRLP4 0 +INDIRP4 +CNSTI4 8 +ADDP4 +ADDRLP4 0 +INDIRP4 +CNSTI4 20 +ADDP4 +INDIRF4 +ADDRLP4 20 +INDIRF4 +SUBF4 +CVFI4 4 +ASGNI4 +line 3717 +;3717: break; +ADDRGP4 $1745 +JUMPV +LABELV $1754 +line 3719 +;3718: } +;3719: y += listPtr->elementHeight; +ADDRLP4 12 +ADDRLP4 12 +INDIRF4 +ADDRLP4 0 +INDIRP4 +CNSTI4 20 +ADDP4 +INDIRF4 +ADDF4 +ASGNF4 +line 3721 +;3720: // fit++; +;3721: } +LABELV $1747 +line 3701 +ADDRLP4 4 +ADDRLP4 4 +INDIRF4 +CNSTF4 1065353216 +ADDF4 +ASGNF4 +LABELV $1749 +ADDRLP4 4 +INDIRF4 +ADDRLP4 28 +INDIRF4 +LTF4 $1746 +line 3722 +;3722: } else { +ADDRGP4 $1745 +JUMPV +LABELV $1744 +line 3723 +;3723: x = item->window.rect.x + 1; +ADDRLP4 16 +ADDRFP4 0 +INDIRP4 +INDIRF4 +CNSTF4 1065353216 +ADDF4 +ASGNF4 +line 3724 +;3724: y = item->window.rect.y + 1; +ADDRLP4 12 +ADDRFP4 0 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRF4 +CNSTF4 1065353216 +ADDF4 +ASGNF4 +line 3725 +;3725: for (i = listPtr->startPos; i < count; i++) { +ADDRLP4 4 +ADDRLP4 0 +INDIRP4 +INDIRI4 +CVIF4 4 +ASGNF4 +ADDRGP4 $1759 +JUMPV +LABELV $1756 +line 3730 +;3726: const char *text; +;3727: // always draw at least one +;3728: // which may overdraw the box if it is too small for the element +;3729: +;3730: if (listPtr->numColumns > 0) { +ADDRLP4 0 +INDIRP4 +CNSTI4 28 +ADDP4 +INDIRI4 +CNSTI4 0 +LEI4 $1760 +line 3732 +;3731: int j; +;3732: for (j = 0; j < listPtr->numColumns; j++) { +ADDRLP4 84 +CNSTI4 0 +ASGNI4 +ADDRGP4 $1765 +JUMPV +LABELV $1762 +line 3733 +;3733: text = DC->feederItemText(item->special, i, j, &optionalImage); +ADDRFP4 0 +INDIRP4 +CNSTI4 528 +ADDP4 +INDIRF4 +ARGF4 +ADDRLP4 4 +INDIRF4 +CVFI4 4 +ARGI4 +ADDRLP4 84 +INDIRI4 +ARGI4 +ADDRLP4 8 +ARGP4 +ADDRLP4 88 +ADDRGP4 DC +INDIRP4 +CNSTI4 124 +ADDP4 +INDIRP4 +CALLP4 +ASGNP4 +ADDRLP4 80 +ADDRLP4 88 +INDIRP4 +ASGNP4 +line 3734 +;3734: if (optionalImage >= 0) { +ADDRLP4 8 +INDIRI4 +CNSTI4 0 +LTI4 $1766 +line 3735 +;3735: DC->drawHandlePic(x + 4 + listPtr->columnInfo[j].pos, y - 1 + listPtr->elementHeight / 2, listPtr->columnInfo[j].width, listPtr->columnInfo[j].width, optionalImage); +ADDRLP4 96 +CNSTI4 12 +ADDRLP4 84 +INDIRI4 +MULI4 +ADDRLP4 0 +INDIRP4 +CNSTI4 32 +ADDP4 +ADDP4 +ASGNP4 +ADDRLP4 16 +INDIRF4 +CNSTF4 1082130432 +ADDF4 +ADDRLP4 96 +INDIRP4 +INDIRI4 +CVIF4 4 +ADDF4 +ARGF4 +ADDRLP4 12 +INDIRF4 +CNSTF4 1065353216 +SUBF4 +ADDRLP4 0 +INDIRP4 +CNSTI4 20 +ADDP4 +INDIRF4 +CNSTF4 1073741824 +DIVF4 +ADDF4 +ARGF4 +ADDRLP4 100 +ADDRLP4 96 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRI4 +CVIF4 4 +ASGNF4 +ADDRLP4 100 +INDIRF4 +ARGF4 +ADDRLP4 100 +INDIRF4 +ARGF4 +ADDRLP4 8 +INDIRI4 +ARGI4 +ADDRGP4 DC +INDIRP4 +CNSTI4 8 +ADDP4 +INDIRP4 +CALLV +pop +line 3736 +;3736: } else if (text) { +ADDRGP4 $1767 +JUMPV +LABELV $1766 +ADDRLP4 80 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $1768 +line 3737 +;3737: DC->drawText(x + 4 + listPtr->columnInfo[j].pos, y + listPtr->elementHeight, item->textscale, item->window.foreColor, text, 0, listPtr->columnInfo[j].maxChars, item->textStyle); +ADDRLP4 96 +CNSTI4 12 +ADDRLP4 84 +INDIRI4 +MULI4 +ADDRLP4 0 +INDIRP4 +CNSTI4 32 +ADDP4 +ADDP4 +ASGNP4 +ADDRLP4 16 +INDIRF4 +CNSTF4 1082130432 +ADDF4 +ADDRLP4 96 +INDIRP4 +INDIRI4 +CVIF4 4 +ADDF4 +ARGF4 +ADDRLP4 12 +INDIRF4 +ADDRLP4 0 +INDIRP4 +CNSTI4 20 +ADDP4 +INDIRF4 +ADDF4 +ARGF4 +ADDRLP4 100 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 100 +INDIRP4 +CNSTI4 216 +ADDP4 +INDIRF4 +ARGF4 +ADDRLP4 100 +INDIRP4 +CNSTI4 112 +ADDP4 +ARGP4 +ADDRLP4 80 +INDIRP4 +ARGP4 +CNSTF4 0 +ARGF4 +ADDRLP4 96 +INDIRP4 +CNSTI4 8 +ADDP4 +INDIRI4 +ARGI4 +ADDRLP4 100 +INDIRP4 +CNSTI4 220 +ADDP4 +INDIRI4 +ARGI4 +ADDRGP4 DC +INDIRP4 +CNSTI4 16 +ADDP4 +INDIRP4 +CALLV +pop +line 3738 +;3738: } +LABELV $1768 +LABELV $1767 +line 3739 +;3739: } +LABELV $1763 +line 3732 +ADDRLP4 84 +ADDRLP4 84 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +LABELV $1765 +ADDRLP4 84 +INDIRI4 +ADDRLP4 0 +INDIRP4 +CNSTI4 28 +ADDP4 +INDIRI4 +LTI4 $1762 +line 3740 +;3740: } else { +ADDRGP4 $1761 +JUMPV +LABELV $1760 +line 3741 +;3741: text = DC->feederItemText(item->special, i, 0, &optionalImage); +ADDRFP4 0 +INDIRP4 +CNSTI4 528 +ADDP4 +INDIRF4 +ARGF4 +ADDRLP4 4 +INDIRF4 +CVFI4 4 +ARGI4 +CNSTI4 0 +ARGI4 +ADDRLP4 8 +ARGP4 +ADDRLP4 84 +ADDRGP4 DC +INDIRP4 +CNSTI4 124 +ADDP4 +INDIRP4 +CALLP4 +ASGNP4 +ADDRLP4 80 +ADDRLP4 84 +INDIRP4 +ASGNP4 +line 3742 +;3742: if (optionalImage >= 0) { +ADDRLP4 8 +INDIRI4 +CNSTI4 0 +LTI4 $1770 +line 3744 +;3743: //DC->drawHandlePic(x + 4 + listPtr->elementHeight, y, listPtr->columnInfo[j].width, listPtr->columnInfo[j].width, optionalImage); +;3744: } else if (text) { +ADDRGP4 $1771 +JUMPV +LABELV $1770 +ADDRLP4 80 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $1772 +line 3745 +;3745: DC->drawText(x + 4, y + listPtr->elementHeight, item->textscale, item->window.foreColor, text, 0, 0, item->textStyle); +ADDRLP4 16 +INDIRF4 +CNSTF4 1082130432 +ADDF4 +ARGF4 +ADDRLP4 12 +INDIRF4 +ADDRLP4 0 +INDIRP4 +CNSTI4 20 +ADDP4 +INDIRF4 +ADDF4 +ARGF4 +ADDRLP4 88 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 88 +INDIRP4 +CNSTI4 216 +ADDP4 +INDIRF4 +ARGF4 +ADDRLP4 88 +INDIRP4 +CNSTI4 112 +ADDP4 +ARGP4 +ADDRLP4 80 +INDIRP4 +ARGP4 +CNSTF4 0 +ARGF4 +CNSTI4 0 +ARGI4 +ADDRLP4 88 +INDIRP4 +CNSTI4 220 +ADDP4 +INDIRI4 +ARGI4 +ADDRGP4 DC +INDIRP4 +CNSTI4 16 +ADDP4 +INDIRP4 +CALLV +pop +line 3746 +;3746: } +LABELV $1772 +LABELV $1771 +line 3747 +;3747: } +LABELV $1761 +line 3749 +;3748: +;3749: if (i == item->cursorPos) { +ADDRLP4 4 +INDIRF4 +ADDRFP4 0 +INDIRP4 +CNSTI4 532 +ADDP4 +INDIRI4 +CVIF4 4 +NEF4 $1774 +line 3750 +;3750: DC->fillRect(x + 2, y + 2, item->window.rect.w - SCROLLBAR_SIZE - 4, listPtr->elementHeight, item->window.outlineColor); +ADDRLP4 84 +CNSTF4 1073741824 +ASGNF4 +ADDRLP4 16 +INDIRF4 +ADDRLP4 84 +INDIRF4 +ADDF4 +ARGF4 +ADDRLP4 12 +INDIRF4 +ADDRLP4 84 +INDIRF4 +ADDF4 +ARGF4 +ADDRLP4 88 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 88 +INDIRP4 +CNSTI4 8 +ADDP4 +INDIRF4 +CNSTF4 1098907648 +SUBF4 +CNSTF4 1082130432 +SUBF4 +ARGF4 +ADDRLP4 0 +INDIRP4 +CNSTI4 20 +ADDP4 +INDIRF4 +ARGF4 +ADDRLP4 88 +INDIRP4 +CNSTI4 160 +ADDP4 +ARGP4 +ADDRGP4 DC +INDIRP4 +CNSTI4 36 +ADDP4 +INDIRP4 +CALLV +pop +line 3751 +;3751: } +LABELV $1774 +line 3753 +;3752: +;3753: size -= listPtr->elementHeight; +ADDRLP4 20 +ADDRLP4 20 +INDIRF4 +ADDRLP4 0 +INDIRP4 +CNSTI4 20 +ADDP4 +INDIRF4 +SUBF4 +ASGNF4 +line 3754 +;3754: if (size < listPtr->elementHeight) { +ADDRLP4 20 +INDIRF4 +ADDRLP4 0 +INDIRP4 +CNSTI4 20 +ADDP4 +INDIRF4 +GEF4 $1776 +line 3755 +;3755: listPtr->drawPadding = listPtr->elementHeight - size; +ADDRLP4 0 +INDIRP4 +CNSTI4 8 +ADDP4 +ADDRLP4 0 +INDIRP4 +CNSTI4 20 +ADDP4 +INDIRF4 +ADDRLP4 20 +INDIRF4 +SUBF4 +CVFI4 4 +ASGNI4 +line 3756 +;3756: break; +ADDRGP4 $1758 +JUMPV +LABELV $1776 +line 3758 +;3757: } +;3758: listPtr->endPos++; +ADDRLP4 84 +ADDRLP4 0 +INDIRP4 +CNSTI4 4 +ADDP4 +ASGNP4 +ADDRLP4 84 +INDIRP4 +ADDRLP4 84 +INDIRP4 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 3759 +;3759: y += listPtr->elementHeight; +ADDRLP4 12 +ADDRLP4 12 +INDIRF4 +ADDRLP4 0 +INDIRP4 +CNSTI4 20 +ADDP4 +INDIRF4 +ADDF4 +ASGNF4 +line 3761 +;3760: // fit++; +;3761: } +LABELV $1757 +line 3725 +ADDRLP4 4 +ADDRLP4 4 +INDIRF4 +CNSTF4 1065353216 +ADDF4 +ASGNF4 +LABELV $1759 +ADDRLP4 4 +INDIRF4 +ADDRLP4 28 +INDIRF4 +LTF4 $1756 +LABELV $1758 +line 3762 +;3762: } +LABELV $1745 +line 3763 +;3763: } +LABELV $1727 +line 3764 +;3764:} +LABELV $1725 +endproc Item_ListBox_Paint 104 32 +export Item_OwnerDraw_Paint +proc Item_OwnerDraw_Paint 68 56 +line 3767 +;3765: +;3766: +;3767:void Item_OwnerDraw_Paint(itemDef_t *item) { +line 3770 +;3768: menuDef_t *parent; +;3769: +;3770: if (item == NULL) { +ADDRFP4 0 +INDIRP4 +CVPU4 4 +CNSTU4 0 +NEU4 $1779 +line 3771 +;3771: return; +ADDRGP4 $1778 +JUMPV +LABELV $1779 +line 3773 +;3772: } +;3773: parent = (menuDef_t*)item->parent; +ADDRLP4 0 +ADDRFP4 0 +INDIRP4 +CNSTI4 228 +ADDP4 +INDIRP4 +ASGNP4 +line 3775 +;3774: +;3775: if (DC->ownerDrawItem) { +ADDRGP4 DC +INDIRP4 +CNSTI4 68 +ADDP4 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $1781 +line 3777 +;3776: vec4_t color, lowLight; +;3777: menuDef_t *parent = (menuDef_t*)item->parent; +ADDRLP4 20 +ADDRFP4 0 +INDIRP4 +CNSTI4 228 +ADDP4 +INDIRP4 +ASGNP4 +line 3778 +;3778: Fade(&item->window.flags, &item->window.foreColor[3], parent->fadeClamp, &item->window.nextTime, parent->fadeCycle, qtrue, parent->fadeAmount); +ADDRLP4 40 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 40 +INDIRP4 +CNSTI4 68 +ADDP4 +ARGP4 +ADDRLP4 40 +INDIRP4 +CNSTI4 124 +ADDP4 +ARGP4 +ADDRLP4 20 +INDIRP4 +CNSTI4 204 +ADDP4 +INDIRF4 +ARGF4 +ADDRLP4 40 +INDIRP4 +CNSTI4 108 +ADDP4 +ARGP4 +ADDRLP4 20 +INDIRP4 +CNSTI4 200 +ADDP4 +INDIRI4 +ARGI4 +CNSTI4 1 +ARGI4 +ADDRLP4 20 +INDIRP4 +CNSTI4 208 +ADDP4 +INDIRF4 +ARGF4 +ADDRGP4 Fade +CALLV +pop +line 3779 +;3779: memcpy(&color, &item->window.foreColor, sizeof(color)); +ADDRLP4 4 +ARGP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 112 +ADDP4 +ARGP4 +CNSTI4 16 +ARGI4 +ADDRGP4 memcpy +CALLP4 +pop +line 3780 +;3780: if (item->numColors > 0 && DC->getValue) { +ADDRFP4 0 +INDIRP4 +CNSTI4 284 +ADDP4 +INDIRI4 +CNSTI4 0 +LEI4 $1783 +ADDRGP4 DC +INDIRP4 +CNSTI4 72 +ADDP4 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $1783 +line 3783 +;3781: // if the value is within one of the ranges then set color to that, otherwise leave at default +;3782: int i; +;3783: float f = DC->getValue(item->window.ownerDraw); +ADDRFP4 0 +INDIRP4 +CNSTI4 56 +ADDP4 +INDIRI4 +ARGI4 +ADDRLP4 56 +ADDRGP4 DC +INDIRP4 +CNSTI4 72 +ADDP4 +INDIRP4 +CALLF4 +ASGNF4 +ADDRLP4 52 +ADDRLP4 56 +INDIRF4 +ASGNF4 +line 3784 +;3784: for (i = 0; i < item->numColors; i++) { +ADDRLP4 48 +CNSTI4 0 +ASGNI4 +ADDRGP4 $1788 +JUMPV +LABELV $1785 +line 3785 +;3785: if (f >= item->colorRanges[i].low && f <= item->colorRanges[i].high) { +ADDRLP4 64 +CNSTI4 24 +ADDRLP4 48 +INDIRI4 +MULI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 288 +ADDP4 +ADDP4 +ASGNP4 +ADDRLP4 52 +INDIRF4 +ADDRLP4 64 +INDIRP4 +CNSTI4 16 +ADDP4 +INDIRF4 +LTF4 $1789 +ADDRLP4 52 +INDIRF4 +ADDRLP4 64 +INDIRP4 +CNSTI4 20 +ADDP4 +INDIRF4 +GTF4 $1789 +line 3786 +;3786: memcpy(&color, &item->colorRanges[i].color, sizeof(color)); +ADDRLP4 4 +ARGP4 +CNSTI4 24 +ADDRLP4 48 +INDIRI4 +MULI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 288 +ADDP4 +ADDP4 +ARGP4 +CNSTI4 16 +ARGI4 +ADDRGP4 memcpy +CALLP4 +pop +line 3787 +;3787: break; +ADDRGP4 $1787 +JUMPV +LABELV $1789 +line 3789 +;3788: } +;3789: } +LABELV $1786 +line 3784 +ADDRLP4 48 +ADDRLP4 48 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +LABELV $1788 +ADDRLP4 48 +INDIRI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 284 +ADDP4 +INDIRI4 +LTI4 $1785 +LABELV $1787 +line 3790 +;3790: } +LABELV $1783 +line 3792 +;3791: +;3792: if (item->window.flags & WINDOW_HASFOCUS) { +ADDRFP4 0 +INDIRP4 +CNSTI4 68 +ADDP4 +INDIRI4 +CNSTI4 2 +BANDI4 +CNSTI4 0 +EQI4 $1791 +line 3793 +;3793: lowLight[0] = 0.8 * parent->focusColor[0]; +ADDRLP4 24 +CNSTF4 1061997773 +ADDRLP4 20 +INDIRP4 +CNSTI4 228 +ADDP4 +INDIRF4 +MULF4 +ASGNF4 +line 3794 +;3794: lowLight[1] = 0.8 * parent->focusColor[1]; +ADDRLP4 24+4 +CNSTF4 1061997773 +ADDRLP4 20 +INDIRP4 +CNSTI4 232 +ADDP4 +INDIRF4 +MULF4 +ASGNF4 +line 3795 +;3795: lowLight[2] = 0.8 * parent->focusColor[2]; +ADDRLP4 24+8 +CNSTF4 1061997773 +ADDRLP4 20 +INDIRP4 +CNSTI4 236 +ADDP4 +INDIRF4 +MULF4 +ASGNF4 +line 3796 +;3796: lowLight[3] = 0.8 * parent->focusColor[3]; +ADDRLP4 24+12 +CNSTF4 1061997773 +ADDRLP4 20 +INDIRP4 +CNSTI4 240 +ADDP4 +INDIRF4 +MULF4 +ASGNF4 +line 3797 +;3797: LerpColor(parent->focusColor,lowLight,color,0.5+0.5*sin(DC->realTime / PULSE_DIVISOR)); +ADDRGP4 DC +INDIRP4 +CNSTI4 208 +ADDP4 +INDIRI4 +CNSTI4 75 +DIVI4 +CVIF4 4 +ARGF4 +ADDRLP4 48 +ADDRGP4 sin +CALLF4 +ASGNF4 +ADDRLP4 20 +INDIRP4 +CNSTI4 228 +ADDP4 +ARGP4 +ADDRLP4 24 +ARGP4 +ADDRLP4 4 +ARGP4 +CNSTF4 1056964608 +ADDRLP4 48 +INDIRF4 +MULF4 +CNSTF4 1056964608 +ADDF4 +ARGF4 +ADDRGP4 LerpColor +CALLV +pop +line 3798 +;3798: } else if (item->textStyle == ITEM_TEXTSTYLE_BLINK && !((DC->realTime/BLINK_DIVISOR) & 1)) { +ADDRGP4 $1792 +JUMPV +LABELV $1791 +ADDRLP4 48 +CNSTI4 1 +ASGNI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 220 +ADDP4 +INDIRI4 +ADDRLP4 48 +INDIRI4 +NEI4 $1796 +ADDRGP4 DC +INDIRP4 +CNSTI4 208 +ADDP4 +INDIRI4 +CNSTI4 200 +DIVI4 +ADDRLP4 48 +INDIRI4 +BANDI4 +CNSTI4 0 +NEI4 $1796 +line 3799 +;3799: lowLight[0] = 0.8 * item->window.foreColor[0]; +ADDRLP4 24 +CNSTF4 1061997773 +ADDRFP4 0 +INDIRP4 +CNSTI4 112 +ADDP4 +INDIRF4 +MULF4 +ASGNF4 +line 3800 +;3800: lowLight[1] = 0.8 * item->window.foreColor[1]; +ADDRLP4 24+4 +CNSTF4 1061997773 +ADDRFP4 0 +INDIRP4 +CNSTI4 116 +ADDP4 +INDIRF4 +MULF4 +ASGNF4 +line 3801 +;3801: lowLight[2] = 0.8 * item->window.foreColor[2]; +ADDRLP4 24+8 +CNSTF4 1061997773 +ADDRFP4 0 +INDIRP4 +CNSTI4 120 +ADDP4 +INDIRF4 +MULF4 +ASGNF4 +line 3802 +;3802: lowLight[3] = 0.8 * item->window.foreColor[3]; +ADDRLP4 24+12 +CNSTF4 1061997773 +ADDRFP4 0 +INDIRP4 +CNSTI4 124 +ADDP4 +INDIRF4 +MULF4 +ASGNF4 +line 3803 +;3803: LerpColor(item->window.foreColor,lowLight,color,0.5+0.5*sin(DC->realTime / PULSE_DIVISOR)); +ADDRGP4 DC +INDIRP4 +CNSTI4 208 +ADDP4 +INDIRI4 +CNSTI4 75 +DIVI4 +CVIF4 4 +ARGF4 +ADDRLP4 52 +ADDRGP4 sin +CALLF4 +ASGNF4 +ADDRFP4 0 +INDIRP4 +CNSTI4 112 +ADDP4 +ARGP4 +ADDRLP4 24 +ARGP4 +ADDRLP4 4 +ARGP4 +CNSTF4 1056964608 +ADDRLP4 52 +INDIRF4 +MULF4 +CNSTF4 1056964608 +ADDF4 +ARGF4 +ADDRGP4 LerpColor +CALLV +pop +line 3804 +;3804: } +LABELV $1796 +LABELV $1792 +line 3806 +;3805: +;3806: if (item->cvarFlags & (CVAR_ENABLE | CVAR_DISABLE) && !Item_EnableShowViaCvar(item, CVAR_ENABLE)) { +ADDRLP4 52 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 52 +INDIRP4 +CNSTI4 276 +ADDP4 +INDIRI4 +CNSTI4 3 +BANDI4 +CNSTI4 0 +EQI4 $1801 +ADDRLP4 52 +INDIRP4 +ARGP4 +CNSTI4 1 +ARGI4 +ADDRLP4 56 +ADDRGP4 Item_EnableShowViaCvar +CALLI4 +ASGNI4 +ADDRLP4 56 +INDIRI4 +CNSTI4 0 +NEI4 $1801 +line 3807 +;3807: memcpy(color, parent->disableColor, sizeof(vec4_t)); // bk001207 - FIXME: Com_Memcpy +ADDRLP4 4 +ARGP4 +ADDRLP4 20 +INDIRP4 +CNSTI4 244 +ADDP4 +ARGP4 +CNSTI4 16 +ARGI4 +ADDRGP4 memcpy +CALLP4 +pop +line 3808 +;3808: } +LABELV $1801 +line 3810 +;3809: +;3810: if (item->text) { +ADDRFP4 0 +INDIRP4 +CNSTI4 224 +ADDP4 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $1803 +line 3811 +;3811: Item_Text_Paint(item); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRGP4 Item_Text_Paint +CALLV +pop +line 3812 +;3812: if (item->text[0]) { +ADDRFP4 0 +INDIRP4 +CNSTI4 224 +ADDP4 +INDIRP4 +INDIRI1 +CVII4 1 +CNSTI4 0 +EQI4 $1805 +line 3814 +;3813: // +8 is an offset kludge to properly align owner draw items that have text combined with them +;3814: DC->ownerDrawItem(item->textRect.x + item->textRect.w + 8, item->window.rect.y, item->window.rect.w, item->window.rect.h, 0, item->textaligny, item->window.ownerDraw, item->window.ownerDrawFlags, item->alignment, item->special, item->textscale, color, item->window.background, item->textStyle ); +ADDRLP4 60 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 60 +INDIRP4 +CNSTI4 180 +ADDP4 +INDIRF4 +ADDRLP4 60 +INDIRP4 +CNSTI4 188 +ADDP4 +INDIRF4 +ADDF4 +CNSTF4 1090519040 +ADDF4 +ARGF4 +ADDRLP4 60 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRF4 +ARGF4 +ADDRLP4 60 +INDIRP4 +CNSTI4 8 +ADDP4 +INDIRF4 +ARGF4 +ADDRLP4 60 +INDIRP4 +CNSTI4 12 +ADDP4 +INDIRF4 +ARGF4 +CNSTF4 0 +ARGF4 +ADDRLP4 60 +INDIRP4 +CNSTI4 212 +ADDP4 +INDIRF4 +ARGF4 +ADDRLP4 60 +INDIRP4 +CNSTI4 56 +ADDP4 +INDIRI4 +ARGI4 +ADDRLP4 60 +INDIRP4 +CNSTI4 60 +ADDP4 +INDIRI4 +ARGI4 +ADDRLP4 60 +INDIRP4 +CNSTI4 200 +ADDP4 +INDIRI4 +ARGI4 +ADDRLP4 60 +INDIRP4 +CNSTI4 528 +ADDP4 +INDIRF4 +ARGF4 +ADDRLP4 60 +INDIRP4 +CNSTI4 216 +ADDP4 +INDIRF4 +ARGF4 +ADDRLP4 4 +ARGP4 +ADDRLP4 60 +INDIRP4 +CNSTI4 176 +ADDP4 +INDIRI4 +ARGI4 +ADDRLP4 60 +INDIRP4 +CNSTI4 220 +ADDP4 +INDIRI4 +ARGI4 +ADDRGP4 DC +INDIRP4 +CNSTI4 68 +ADDP4 +INDIRP4 +CALLV +pop +line 3815 +;3815: } else { +ADDRGP4 $1804 +JUMPV +LABELV $1805 +line 3816 +;3816: DC->ownerDrawItem(item->textRect.x + item->textRect.w, item->window.rect.y, item->window.rect.w, item->window.rect.h, 0, item->textaligny, item->window.ownerDraw, item->window.ownerDrawFlags, item->alignment, item->special, item->textscale, color, item->window.background, item->textStyle ); +ADDRLP4 60 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 60 +INDIRP4 +CNSTI4 180 +ADDP4 +INDIRF4 +ADDRLP4 60 +INDIRP4 +CNSTI4 188 +ADDP4 +INDIRF4 +ADDF4 +ARGF4 +ADDRLP4 60 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRF4 +ARGF4 +ADDRLP4 60 +INDIRP4 +CNSTI4 8 +ADDP4 +INDIRF4 +ARGF4 +ADDRLP4 60 +INDIRP4 +CNSTI4 12 +ADDP4 +INDIRF4 +ARGF4 +CNSTF4 0 +ARGF4 +ADDRLP4 60 +INDIRP4 +CNSTI4 212 +ADDP4 +INDIRF4 +ARGF4 +ADDRLP4 60 +INDIRP4 +CNSTI4 56 +ADDP4 +INDIRI4 +ARGI4 +ADDRLP4 60 +INDIRP4 +CNSTI4 60 +ADDP4 +INDIRI4 +ARGI4 +ADDRLP4 60 +INDIRP4 +CNSTI4 200 +ADDP4 +INDIRI4 +ARGI4 +ADDRLP4 60 +INDIRP4 +CNSTI4 528 +ADDP4 +INDIRF4 +ARGF4 +ADDRLP4 60 +INDIRP4 +CNSTI4 216 +ADDP4 +INDIRF4 +ARGF4 +ADDRLP4 4 +ARGP4 +ADDRLP4 60 +INDIRP4 +CNSTI4 176 +ADDP4 +INDIRI4 +ARGI4 +ADDRLP4 60 +INDIRP4 +CNSTI4 220 +ADDP4 +INDIRI4 +ARGI4 +ADDRGP4 DC +INDIRP4 +CNSTI4 68 +ADDP4 +INDIRP4 +CALLV +pop +line 3817 +;3817: } +line 3818 +;3818: } else { +ADDRGP4 $1804 +JUMPV +LABELV $1803 +line 3819 +;3819: DC->ownerDrawItem(item->window.rect.x, item->window.rect.y, item->window.rect.w, item->window.rect.h, item->textalignx, item->textaligny, item->window.ownerDraw, item->window.ownerDrawFlags, item->alignment, item->special, item->textscale, color, item->window.background, item->textStyle ); +ADDRLP4 60 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 60 +INDIRP4 +INDIRF4 +ARGF4 +ADDRLP4 60 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRF4 +ARGF4 +ADDRLP4 60 +INDIRP4 +CNSTI4 8 +ADDP4 +INDIRF4 +ARGF4 +ADDRLP4 60 +INDIRP4 +CNSTI4 12 +ADDP4 +INDIRF4 +ARGF4 +ADDRLP4 60 +INDIRP4 +CNSTI4 208 +ADDP4 +INDIRF4 +ARGF4 +ADDRLP4 60 +INDIRP4 +CNSTI4 212 +ADDP4 +INDIRF4 +ARGF4 +ADDRLP4 60 +INDIRP4 +CNSTI4 56 +ADDP4 +INDIRI4 +ARGI4 +ADDRLP4 60 +INDIRP4 +CNSTI4 60 +ADDP4 +INDIRI4 +ARGI4 +ADDRLP4 60 +INDIRP4 +CNSTI4 200 +ADDP4 +INDIRI4 +ARGI4 +ADDRLP4 60 +INDIRP4 +CNSTI4 528 +ADDP4 +INDIRF4 +ARGF4 +ADDRLP4 60 +INDIRP4 +CNSTI4 216 +ADDP4 +INDIRF4 +ARGF4 +ADDRLP4 4 +ARGP4 +ADDRLP4 60 +INDIRP4 +CNSTI4 176 +ADDP4 +INDIRI4 +ARGI4 +ADDRLP4 60 +INDIRP4 +CNSTI4 220 +ADDP4 +INDIRI4 +ARGI4 +ADDRGP4 DC +INDIRP4 +CNSTI4 68 +ADDP4 +INDIRP4 +CALLV +pop +line 3820 +;3820: } +LABELV $1804 +line 3821 +;3821: } +LABELV $1781 +line 3822 +;3822:} +LABELV $1778 +endproc Item_OwnerDraw_Paint 68 56 +export Item_Paint +proc Item_Paint 84 24 +line 3825 +;3823: +;3824: +;3825:void Item_Paint(itemDef_t *item) { +line 3827 +;3826: vec4_t red; +;3827: menuDef_t *parent = (menuDef_t*)item->parent; +ADDRLP4 16 +ADDRFP4 0 +INDIRP4 +CNSTI4 228 +ADDP4 +INDIRP4 +ASGNP4 +line 3828 +;3828: red[0] = red[3] = 1; +ADDRLP4 20 +CNSTF4 1065353216 +ASGNF4 +ADDRLP4 0+12 +ADDRLP4 20 +INDIRF4 +ASGNF4 +ADDRLP4 0 +ADDRLP4 20 +INDIRF4 +ASGNF4 +line 3829 +;3829: red[1] = red[2] = 0; +ADDRLP4 24 +CNSTF4 0 +ASGNF4 +ADDRLP4 0+8 +ADDRLP4 24 +INDIRF4 +ASGNF4 +ADDRLP4 0+4 +ADDRLP4 24 +INDIRF4 +ASGNF4 +line 3831 +;3830: +;3831: if (item == NULL) { +ADDRFP4 0 +INDIRP4 +CVPU4 4 +CNSTU4 0 +NEU4 $1811 +line 3832 +;3832: return; +ADDRGP4 $1807 +JUMPV +LABELV $1811 +line 3835 +;3833: } +;3834: +;3835: if (item->window.flags & WINDOW_ORBITING) { +ADDRFP4 0 +INDIRP4 +CNSTI4 68 +ADDP4 +INDIRI4 +CNSTI4 65536 +BANDI4 +CNSTI4 0 +EQI4 $1813 +line 3836 +;3836: if (DC->realTime > item->window.nextTime) { +ADDRGP4 DC +INDIRP4 +CNSTI4 208 +ADDP4 +INDIRI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 108 +ADDP4 +INDIRI4 +LEI4 $1815 +line 3839 +;3837: float rx, ry, a, c, s, w, h; +;3838: +;3839: item->window.nextTime = DC->realTime + item->window.offsetTime; +ADDRLP4 56 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 56 +INDIRP4 +CNSTI4 108 +ADDP4 +ADDRGP4 DC +INDIRP4 +CNSTI4 208 +ADDP4 +INDIRI4 +ADDRLP4 56 +INDIRP4 +CNSTI4 104 +ADDP4 +INDIRI4 +ADDI4 +ASGNI4 +line 3841 +;3840: // translate +;3841: w = item->window.rectClient.w / 2; +ADDRLP4 48 +ADDRFP4 0 +INDIRP4 +CNSTI4 24 +ADDP4 +INDIRF4 +CNSTF4 1073741824 +DIVF4 +ASGNF4 +line 3842 +;3842: h = item->window.rectClient.h / 2; +ADDRLP4 52 +ADDRFP4 0 +INDIRP4 +CNSTI4 28 +ADDP4 +INDIRF4 +CNSTF4 1073741824 +DIVF4 +ASGNF4 +line 3843 +;3843: rx = item->window.rectClient.x + w - item->window.rectEffects.x; +ADDRLP4 60 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 28 +ADDRLP4 60 +INDIRP4 +CNSTI4 16 +ADDP4 +INDIRF4 +ADDRLP4 48 +INDIRF4 +ADDF4 +ADDRLP4 60 +INDIRP4 +CNSTI4 72 +ADDP4 +INDIRF4 +SUBF4 +ASGNF4 +line 3844 +;3844: ry = item->window.rectClient.y + h - item->window.rectEffects.y; +ADDRLP4 64 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 32 +ADDRLP4 64 +INDIRP4 +CNSTI4 20 +ADDP4 +INDIRF4 +ADDRLP4 52 +INDIRF4 +ADDF4 +ADDRLP4 64 +INDIRP4 +CNSTI4 76 +ADDP4 +INDIRF4 +SUBF4 +ASGNF4 +line 3845 +;3845: a = 3 * M_PI / 180; +ADDRLP4 36 +CNSTF4 1029076816 +ASGNF4 +line 3846 +;3846: c = cos(a); +ADDRLP4 36 +INDIRF4 +ARGF4 +ADDRLP4 68 +ADDRGP4 cos +CALLF4 +ASGNF4 +ADDRLP4 40 +ADDRLP4 68 +INDIRF4 +ASGNF4 +line 3847 +;3847: s = sin(a); +ADDRLP4 36 +INDIRF4 +ARGF4 +ADDRLP4 72 +ADDRGP4 sin +CALLF4 +ASGNF4 +ADDRLP4 44 +ADDRLP4 72 +INDIRF4 +ASGNF4 +line 3848 +;3848: item->window.rectClient.x = (rx * c - ry * s) + item->window.rectEffects.x - w; +ADDRLP4 76 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 76 +INDIRP4 +CNSTI4 16 +ADDP4 +ADDRLP4 28 +INDIRF4 +ADDRLP4 40 +INDIRF4 +MULF4 +ADDRLP4 32 +INDIRF4 +ADDRLP4 44 +INDIRF4 +MULF4 +SUBF4 +ADDRLP4 76 +INDIRP4 +CNSTI4 72 +ADDP4 +INDIRF4 +ADDF4 +ADDRLP4 48 +INDIRF4 +SUBF4 +ASGNF4 +line 3849 +;3849: item->window.rectClient.y = (rx * s + ry * c) + item->window.rectEffects.y - h; +ADDRLP4 80 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 80 +INDIRP4 +CNSTI4 20 +ADDP4 +ADDRLP4 28 +INDIRF4 +ADDRLP4 44 +INDIRF4 +MULF4 +ADDRLP4 32 +INDIRF4 +ADDRLP4 40 +INDIRF4 +MULF4 +ADDF4 +ADDRLP4 80 +INDIRP4 +CNSTI4 76 +ADDP4 +INDIRF4 +ADDF4 +ADDRLP4 52 +INDIRF4 +SUBF4 +ASGNF4 +line 3850 +;3850: Item_UpdatePosition(item); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRGP4 Item_UpdatePosition +CALLV +pop +line 3852 +;3851: +;3852: } +LABELV $1815 +line 3853 +;3853: } +LABELV $1813 +line 3856 +;3854: +;3855: +;3856: if (item->window.flags & WINDOW_INTRANSITION) { +ADDRFP4 0 +INDIRP4 +CNSTI4 68 +ADDP4 +INDIRI4 +CNSTI4 256 +BANDI4 +CNSTI4 0 +EQI4 $1817 +line 3857 +;3857: if (DC->realTime > item->window.nextTime) { +ADDRGP4 DC +INDIRP4 +CNSTI4 208 +ADDP4 +INDIRI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 108 +ADDP4 +INDIRI4 +LEI4 $1819 +line 3858 +;3858: int done = 0; +ADDRLP4 28 +CNSTI4 0 +ASGNI4 +line 3859 +;3859: item->window.nextTime = DC->realTime + item->window.offsetTime; +ADDRLP4 32 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 32 +INDIRP4 +CNSTI4 108 +ADDP4 +ADDRGP4 DC +INDIRP4 +CNSTI4 208 +ADDP4 +INDIRI4 +ADDRLP4 32 +INDIRP4 +CNSTI4 104 +ADDP4 +INDIRI4 +ADDI4 +ASGNI4 +line 3861 +;3860: // transition the x,y +;3861: if (item->window.rectClient.x == item->window.rectEffects.x) { +ADDRLP4 36 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 36 +INDIRP4 +CNSTI4 16 +ADDP4 +INDIRF4 +ADDRLP4 36 +INDIRP4 +CNSTI4 72 +ADDP4 +INDIRF4 +NEF4 $1821 +line 3862 +;3862: done++; +ADDRLP4 28 +ADDRLP4 28 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 3863 +;3863: } else { +ADDRGP4 $1822 +JUMPV +LABELV $1821 +line 3864 +;3864: if (item->window.rectClient.x < item->window.rectEffects.x) { +ADDRLP4 40 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 40 +INDIRP4 +CNSTI4 16 +ADDP4 +INDIRF4 +ADDRLP4 40 +INDIRP4 +CNSTI4 72 +ADDP4 +INDIRF4 +GEF4 $1823 +line 3865 +;3865: item->window.rectClient.x += item->window.rectEffects2.x; +ADDRLP4 44 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 48 +ADDRLP4 44 +INDIRP4 +CNSTI4 16 +ADDP4 +ASGNP4 +ADDRLP4 48 +INDIRP4 +ADDRLP4 48 +INDIRP4 +INDIRF4 +ADDRLP4 44 +INDIRP4 +CNSTI4 88 +ADDP4 +INDIRF4 +ADDF4 +ASGNF4 +line 3866 +;3866: if (item->window.rectClient.x > item->window.rectEffects.x) { +ADDRLP4 52 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 52 +INDIRP4 +CNSTI4 16 +ADDP4 +INDIRF4 +ADDRLP4 52 +INDIRP4 +CNSTI4 72 +ADDP4 +INDIRF4 +LEF4 $1824 +line 3867 +;3867: item->window.rectClient.x = item->window.rectEffects.x; +ADDRLP4 56 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 56 +INDIRP4 +CNSTI4 16 +ADDP4 +ADDRLP4 56 +INDIRP4 +CNSTI4 72 +ADDP4 +INDIRF4 +ASGNF4 +line 3868 +;3868: done++; +ADDRLP4 28 +ADDRLP4 28 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 3869 +;3869: } +line 3870 +;3870: } else { +ADDRGP4 $1824 +JUMPV +LABELV $1823 +line 3871 +;3871: item->window.rectClient.x -= item->window.rectEffects2.x; +ADDRLP4 44 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 48 +ADDRLP4 44 +INDIRP4 +CNSTI4 16 +ADDP4 +ASGNP4 +ADDRLP4 48 +INDIRP4 +ADDRLP4 48 +INDIRP4 +INDIRF4 +ADDRLP4 44 +INDIRP4 +CNSTI4 88 +ADDP4 +INDIRF4 +SUBF4 +ASGNF4 +line 3872 +;3872: if (item->window.rectClient.x < item->window.rectEffects.x) { +ADDRLP4 52 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 52 +INDIRP4 +CNSTI4 16 +ADDP4 +INDIRF4 +ADDRLP4 52 +INDIRP4 +CNSTI4 72 +ADDP4 +INDIRF4 +GEF4 $1827 +line 3873 +;3873: item->window.rectClient.x = item->window.rectEffects.x; +ADDRLP4 56 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 56 +INDIRP4 +CNSTI4 16 +ADDP4 +ADDRLP4 56 +INDIRP4 +CNSTI4 72 +ADDP4 +INDIRF4 +ASGNF4 +line 3874 +;3874: done++; +ADDRLP4 28 +ADDRLP4 28 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 3875 +;3875: } +LABELV $1827 +line 3876 +;3876: } +LABELV $1824 +line 3877 +;3877: } +LABELV $1822 +line 3878 +;3878: if (item->window.rectClient.y == item->window.rectEffects.y) { +ADDRLP4 40 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 40 +INDIRP4 +CNSTI4 20 +ADDP4 +INDIRF4 +ADDRLP4 40 +INDIRP4 +CNSTI4 76 +ADDP4 +INDIRF4 +NEF4 $1829 +line 3879 +;3879: done++; +ADDRLP4 28 +ADDRLP4 28 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 3880 +;3880: } else { +ADDRGP4 $1830 +JUMPV +LABELV $1829 +line 3881 +;3881: if (item->window.rectClient.y < item->window.rectEffects.y) { +ADDRLP4 44 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 44 +INDIRP4 +CNSTI4 20 +ADDP4 +INDIRF4 +ADDRLP4 44 +INDIRP4 +CNSTI4 76 +ADDP4 +INDIRF4 +GEF4 $1831 +line 3882 +;3882: item->window.rectClient.y += item->window.rectEffects2.y; +ADDRLP4 48 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 52 +ADDRLP4 48 +INDIRP4 +CNSTI4 20 +ADDP4 +ASGNP4 +ADDRLP4 52 +INDIRP4 +ADDRLP4 52 +INDIRP4 +INDIRF4 +ADDRLP4 48 +INDIRP4 +CNSTI4 92 +ADDP4 +INDIRF4 +ADDF4 +ASGNF4 +line 3883 +;3883: if (item->window.rectClient.y > item->window.rectEffects.y) { +ADDRLP4 56 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 56 +INDIRP4 +CNSTI4 20 +ADDP4 +INDIRF4 +ADDRLP4 56 +INDIRP4 +CNSTI4 76 +ADDP4 +INDIRF4 +LEF4 $1832 +line 3884 +;3884: item->window.rectClient.y = item->window.rectEffects.y; +ADDRLP4 60 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 60 +INDIRP4 +CNSTI4 20 +ADDP4 +ADDRLP4 60 +INDIRP4 +CNSTI4 76 +ADDP4 +INDIRF4 +ASGNF4 +line 3885 +;3885: done++; +ADDRLP4 28 +ADDRLP4 28 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 3886 +;3886: } +line 3887 +;3887: } else { +ADDRGP4 $1832 +JUMPV +LABELV $1831 +line 3888 +;3888: item->window.rectClient.y -= item->window.rectEffects2.y; +ADDRLP4 48 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 52 +ADDRLP4 48 +INDIRP4 +CNSTI4 20 +ADDP4 +ASGNP4 +ADDRLP4 52 +INDIRP4 +ADDRLP4 52 +INDIRP4 +INDIRF4 +ADDRLP4 48 +INDIRP4 +CNSTI4 92 +ADDP4 +INDIRF4 +SUBF4 +ASGNF4 +line 3889 +;3889: if (item->window.rectClient.y < item->window.rectEffects.y) { +ADDRLP4 56 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 56 +INDIRP4 +CNSTI4 20 +ADDP4 +INDIRF4 +ADDRLP4 56 +INDIRP4 +CNSTI4 76 +ADDP4 +INDIRF4 +GEF4 $1835 +line 3890 +;3890: item->window.rectClient.y = item->window.rectEffects.y; +ADDRLP4 60 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 60 +INDIRP4 +CNSTI4 20 +ADDP4 +ADDRLP4 60 +INDIRP4 +CNSTI4 76 +ADDP4 +INDIRF4 +ASGNF4 +line 3891 +;3891: done++; +ADDRLP4 28 +ADDRLP4 28 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 3892 +;3892: } +LABELV $1835 +line 3893 +;3893: } +LABELV $1832 +line 3894 +;3894: } +LABELV $1830 +line 3895 +;3895: if (item->window.rectClient.w == item->window.rectEffects.w) { +ADDRLP4 44 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 44 +INDIRP4 +CNSTI4 24 +ADDP4 +INDIRF4 +ADDRLP4 44 +INDIRP4 +CNSTI4 80 +ADDP4 +INDIRF4 +NEF4 $1837 +line 3896 +;3896: done++; +ADDRLP4 28 +ADDRLP4 28 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 3897 +;3897: } else { +ADDRGP4 $1838 +JUMPV +LABELV $1837 +line 3898 +;3898: if (item->window.rectClient.w < item->window.rectEffects.w) { +ADDRLP4 48 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 48 +INDIRP4 +CNSTI4 24 +ADDP4 +INDIRF4 +ADDRLP4 48 +INDIRP4 +CNSTI4 80 +ADDP4 +INDIRF4 +GEF4 $1839 +line 3899 +;3899: item->window.rectClient.w += item->window.rectEffects2.w; +ADDRLP4 52 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 56 +ADDRLP4 52 +INDIRP4 +CNSTI4 24 +ADDP4 +ASGNP4 +ADDRLP4 56 +INDIRP4 +ADDRLP4 56 +INDIRP4 +INDIRF4 +ADDRLP4 52 +INDIRP4 +CNSTI4 96 +ADDP4 +INDIRF4 +ADDF4 +ASGNF4 +line 3900 +;3900: if (item->window.rectClient.w > item->window.rectEffects.w) { +ADDRLP4 60 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 60 +INDIRP4 +CNSTI4 24 +ADDP4 +INDIRF4 +ADDRLP4 60 +INDIRP4 +CNSTI4 80 +ADDP4 +INDIRF4 +LEF4 $1840 +line 3901 +;3901: item->window.rectClient.w = item->window.rectEffects.w; +ADDRLP4 64 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 64 +INDIRP4 +CNSTI4 24 +ADDP4 +ADDRLP4 64 +INDIRP4 +CNSTI4 80 +ADDP4 +INDIRF4 +ASGNF4 +line 3902 +;3902: done++; +ADDRLP4 28 +ADDRLP4 28 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 3903 +;3903: } +line 3904 +;3904: } else { +ADDRGP4 $1840 +JUMPV +LABELV $1839 +line 3905 +;3905: item->window.rectClient.w -= item->window.rectEffects2.w; +ADDRLP4 52 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 56 +ADDRLP4 52 +INDIRP4 +CNSTI4 24 +ADDP4 +ASGNP4 +ADDRLP4 56 +INDIRP4 +ADDRLP4 56 +INDIRP4 +INDIRF4 +ADDRLP4 52 +INDIRP4 +CNSTI4 96 +ADDP4 +INDIRF4 +SUBF4 +ASGNF4 +line 3906 +;3906: if (item->window.rectClient.w < item->window.rectEffects.w) { +ADDRLP4 60 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 60 +INDIRP4 +CNSTI4 24 +ADDP4 +INDIRF4 +ADDRLP4 60 +INDIRP4 +CNSTI4 80 +ADDP4 +INDIRF4 +GEF4 $1843 +line 3907 +;3907: item->window.rectClient.w = item->window.rectEffects.w; +ADDRLP4 64 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 64 +INDIRP4 +CNSTI4 24 +ADDP4 +ADDRLP4 64 +INDIRP4 +CNSTI4 80 +ADDP4 +INDIRF4 +ASGNF4 +line 3908 +;3908: done++; +ADDRLP4 28 +ADDRLP4 28 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 3909 +;3909: } +LABELV $1843 +line 3910 +;3910: } +LABELV $1840 +line 3911 +;3911: } +LABELV $1838 +line 3912 +;3912: if (item->window.rectClient.h == item->window.rectEffects.h) { +ADDRLP4 48 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 48 +INDIRP4 +CNSTI4 28 +ADDP4 +INDIRF4 +ADDRLP4 48 +INDIRP4 +CNSTI4 84 +ADDP4 +INDIRF4 +NEF4 $1845 +line 3913 +;3913: done++; +ADDRLP4 28 +ADDRLP4 28 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 3914 +;3914: } else { +ADDRGP4 $1846 +JUMPV +LABELV $1845 +line 3915 +;3915: if (item->window.rectClient.h < item->window.rectEffects.h) { +ADDRLP4 52 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 52 +INDIRP4 +CNSTI4 28 +ADDP4 +INDIRF4 +ADDRLP4 52 +INDIRP4 +CNSTI4 84 +ADDP4 +INDIRF4 +GEF4 $1847 +line 3916 +;3916: item->window.rectClient.h += item->window.rectEffects2.h; +ADDRLP4 56 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 60 +ADDRLP4 56 +INDIRP4 +CNSTI4 28 +ADDP4 +ASGNP4 +ADDRLP4 60 +INDIRP4 +ADDRLP4 60 +INDIRP4 +INDIRF4 +ADDRLP4 56 +INDIRP4 +CNSTI4 100 +ADDP4 +INDIRF4 +ADDF4 +ASGNF4 +line 3917 +;3917: if (item->window.rectClient.h > item->window.rectEffects.h) { +ADDRLP4 64 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 64 +INDIRP4 +CNSTI4 28 +ADDP4 +INDIRF4 +ADDRLP4 64 +INDIRP4 +CNSTI4 84 +ADDP4 +INDIRF4 +LEF4 $1848 +line 3918 +;3918: item->window.rectClient.h = item->window.rectEffects.h; +ADDRLP4 68 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 68 +INDIRP4 +CNSTI4 28 +ADDP4 +ADDRLP4 68 +INDIRP4 +CNSTI4 84 +ADDP4 +INDIRF4 +ASGNF4 +line 3919 +;3919: done++; +ADDRLP4 28 +ADDRLP4 28 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 3920 +;3920: } +line 3921 +;3921: } else { +ADDRGP4 $1848 +JUMPV +LABELV $1847 +line 3922 +;3922: item->window.rectClient.h -= item->window.rectEffects2.h; +ADDRLP4 56 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 60 +ADDRLP4 56 +INDIRP4 +CNSTI4 28 +ADDP4 +ASGNP4 +ADDRLP4 60 +INDIRP4 +ADDRLP4 60 +INDIRP4 +INDIRF4 +ADDRLP4 56 +INDIRP4 +CNSTI4 100 +ADDP4 +INDIRF4 +SUBF4 +ASGNF4 +line 3923 +;3923: if (item->window.rectClient.h < item->window.rectEffects.h) { +ADDRLP4 64 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 64 +INDIRP4 +CNSTI4 28 +ADDP4 +INDIRF4 +ADDRLP4 64 +INDIRP4 +CNSTI4 84 +ADDP4 +INDIRF4 +GEF4 $1851 +line 3924 +;3924: item->window.rectClient.h = item->window.rectEffects.h; +ADDRLP4 68 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 68 +INDIRP4 +CNSTI4 28 +ADDP4 +ADDRLP4 68 +INDIRP4 +CNSTI4 84 +ADDP4 +INDIRF4 +ASGNF4 +line 3925 +;3925: done++; +ADDRLP4 28 +ADDRLP4 28 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 3926 +;3926: } +LABELV $1851 +line 3927 +;3927: } +LABELV $1848 +line 3928 +;3928: } +LABELV $1846 +line 3930 +;3929: +;3930: Item_UpdatePosition(item); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRGP4 Item_UpdatePosition +CALLV +pop +line 3932 +;3931: +;3932: if (done == 4) { +ADDRLP4 28 +INDIRI4 +CNSTI4 4 +NEI4 $1853 +line 3933 +;3933: item->window.flags &= ~WINDOW_INTRANSITION; +ADDRLP4 52 +ADDRFP4 0 +INDIRP4 +CNSTI4 68 +ADDP4 +ASGNP4 +ADDRLP4 52 +INDIRP4 +ADDRLP4 52 +INDIRP4 +INDIRI4 +CNSTI4 -257 +BANDI4 +ASGNI4 +line 3934 +;3934: } +LABELV $1853 +line 3936 +;3935: +;3936: } +LABELV $1819 +line 3937 +;3937: } +LABELV $1817 +line 3939 +;3938: +;3939: if (item->window.ownerDrawFlags && DC->ownerDrawVisible) { +ADDRFP4 0 +INDIRP4 +CNSTI4 60 +ADDP4 +INDIRI4 +CNSTI4 0 +EQI4 $1855 +ADDRGP4 DC +INDIRP4 +CNSTI4 76 +ADDP4 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $1855 +line 3940 +;3940: if (!DC->ownerDrawVisible(item->window.ownerDrawFlags)) { +ADDRFP4 0 +INDIRP4 +CNSTI4 60 +ADDP4 +INDIRI4 +ARGI4 +ADDRLP4 28 +ADDRGP4 DC +INDIRP4 +CNSTI4 76 +ADDP4 +INDIRP4 +CALLI4 +ASGNI4 +ADDRLP4 28 +INDIRI4 +CNSTI4 0 +NEI4 $1857 +line 3941 +;3941: item->window.flags &= ~WINDOW_VISIBLE; +ADDRLP4 32 +ADDRFP4 0 +INDIRP4 +CNSTI4 68 +ADDP4 +ASGNP4 +ADDRLP4 32 +INDIRP4 +ADDRLP4 32 +INDIRP4 +INDIRI4 +CNSTI4 -5 +BANDI4 +ASGNI4 +line 3942 +;3942: } else { +ADDRGP4 $1858 +JUMPV +LABELV $1857 +line 3943 +;3943: item->window.flags |= WINDOW_VISIBLE; +ADDRLP4 32 +ADDRFP4 0 +INDIRP4 +CNSTI4 68 +ADDP4 +ASGNP4 +ADDRLP4 32 +INDIRP4 +ADDRLP4 32 +INDIRP4 +INDIRI4 +CNSTI4 4 +BORI4 +ASGNI4 +line 3944 +;3944: } +LABELV $1858 +line 3945 +;3945: } +LABELV $1855 +line 3947 +;3946: +;3947: if (item->cvarFlags & (CVAR_SHOW | CVAR_HIDE)) { +ADDRFP4 0 +INDIRP4 +CNSTI4 276 +ADDP4 +INDIRI4 +CNSTI4 12 +BANDI4 +CNSTI4 0 +EQI4 $1859 +line 3948 +;3948: if (!Item_EnableShowViaCvar(item, CVAR_SHOW)) { +ADDRFP4 0 +INDIRP4 +ARGP4 +CNSTI4 4 +ARGI4 +ADDRLP4 28 +ADDRGP4 Item_EnableShowViaCvar +CALLI4 +ASGNI4 +ADDRLP4 28 +INDIRI4 +CNSTI4 0 +NEI4 $1861 +line 3949 +;3949: return; +ADDRGP4 $1807 +JUMPV +LABELV $1861 +line 3951 +;3950: } +;3951: } +LABELV $1859 +line 3953 +;3952: +;3953: if (item->window.flags & WINDOW_TIMEDVISIBLE) { +ADDRFP4 0 +INDIRP4 +CNSTI4 68 +ADDP4 +INDIRI4 +CNSTI4 8388608 +BANDI4 +CNSTI4 0 +EQI4 $1863 +line 3955 +;3954: +;3955: } +LABELV $1863 +line 3957 +;3956: +;3957: if (!(item->window.flags & WINDOW_VISIBLE)) { +ADDRFP4 0 +INDIRP4 +CNSTI4 68 +ADDP4 +INDIRI4 +CNSTI4 4 +BANDI4 +CNSTI4 0 +NEI4 $1865 +line 3958 +;3958: return; +ADDRGP4 $1807 +JUMPV +LABELV $1865 +line 3962 +;3959: } +;3960: +;3961: // paint the rect first.. +;3962: Window_Paint(&item->window, parent->fadeAmount , parent->fadeClamp, parent->fadeCycle); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRLP4 16 +INDIRP4 +CNSTI4 208 +ADDP4 +INDIRF4 +ARGF4 +ADDRLP4 16 +INDIRP4 +CNSTI4 204 +ADDP4 +INDIRF4 +ARGF4 +ADDRLP4 16 +INDIRP4 +CNSTI4 200 +ADDP4 +INDIRI4 +CVIF4 4 +ARGF4 +ADDRGP4 Window_Paint +CALLV +pop +line 3964 +;3963: +;3964: if (debugMode) { +ADDRGP4 debugMode +INDIRI4 +CNSTI4 0 +EQI4 $1867 +line 3966 +;3965: vec4_t color; +;3966: rectDef_t *r = Item_CorrectedTextRect(item); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRLP4 52 +ADDRGP4 Item_CorrectedTextRect +CALLP4 +ASGNP4 +ADDRLP4 32 +ADDRLP4 52 +INDIRP4 +ASGNP4 +line 3967 +;3967: color[1] = color[3] = 1; +ADDRLP4 56 +CNSTF4 1065353216 +ASGNF4 +ADDRLP4 36+12 +ADDRLP4 56 +INDIRF4 +ASGNF4 +ADDRLP4 36+4 +ADDRLP4 56 +INDIRF4 +ASGNF4 +line 3968 +;3968: color[0] = color[2] = 0; +ADDRLP4 60 +CNSTF4 0 +ASGNF4 +ADDRLP4 36+8 +ADDRLP4 60 +INDIRF4 +ASGNF4 +ADDRLP4 36 +ADDRLP4 60 +INDIRF4 +ASGNF4 +line 3969 +;3969: DC->drawRect(r->x, r->y, r->w, r->h, 1, color); +ADDRLP4 32 +INDIRP4 +INDIRF4 +ARGF4 +ADDRLP4 32 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRF4 +ARGF4 +ADDRLP4 32 +INDIRP4 +CNSTI4 8 +ADDP4 +INDIRF4 +ARGF4 +ADDRLP4 32 +INDIRP4 +CNSTI4 12 +ADDP4 +INDIRF4 +ARGF4 +CNSTF4 1065353216 +ARGF4 +ADDRLP4 36 +ARGP4 +ADDRGP4 DC +INDIRP4 +CNSTI4 40 +ADDP4 +INDIRP4 +CALLV +pop +line 3970 +;3970: } +LABELV $1867 +line 3974 +;3971: +;3972: //DC->drawRect(item->window.rect.x, item->window.rect.y, item->window.rect.w, item->window.rect.h, 1, red); +;3973: +;3974: switch (item->type) { +ADDRLP4 32 +ADDRFP4 0 +INDIRP4 +CNSTI4 196 +ADDP4 +INDIRI4 +ASGNI4 +ADDRLP4 32 +INDIRI4 +CNSTI4 0 +LTI4 $1873 +ADDRLP4 32 +INDIRI4 +CNSTI4 13 +GTI4 $1873 +ADDRLP4 32 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 $1887 +ADDP4 +INDIRP4 +JUMPV +lit +align 4 +LABELV $1887 +address $1876 +address $1876 +address $1873 +address $1873 +address $1879 +address $1873 +address $1881 +address $1882 +address $1875 +address $1879 +address $1886 +address $1883 +address $1884 +address $1885 +code +LABELV $1875 +line 3976 +;3975: case ITEM_TYPE_OWNERDRAW: +;3976: Item_OwnerDraw_Paint(item); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRGP4 Item_OwnerDraw_Paint +CALLV +pop +line 3977 +;3977: break; +ADDRGP4 $1873 +JUMPV +LABELV $1876 +line 3980 +;3978: case ITEM_TYPE_TEXT: +;3979: case ITEM_TYPE_BUTTON: +;3980: Item_Text_Paint(item); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRGP4 Item_Text_Paint +CALLV +pop +line 3981 +;3981: break; +ADDRGP4 $1873 +JUMPV +line 3983 +;3982: case ITEM_TYPE_RADIOBUTTON: +;3983: break; +line 3985 +;3984: case ITEM_TYPE_CHECKBOX: +;3985: break; +LABELV $1879 +line 3988 +;3986: case ITEM_TYPE_EDITFIELD: +;3987: case ITEM_TYPE_NUMERICFIELD: +;3988: Item_TextField_Paint(item); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRGP4 Item_TextField_Paint +CALLV +pop +line 3989 +;3989: break; +ADDRGP4 $1873 +JUMPV +line 3991 +;3990: case ITEM_TYPE_COMBO: +;3991: break; +LABELV $1881 +line 3993 +;3992: case ITEM_TYPE_LISTBOX: +;3993: Item_ListBox_Paint(item); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRGP4 Item_ListBox_Paint +CALLV +pop +line 3994 +;3994: break; +ADDRGP4 $1873 +JUMPV +LABELV $1882 +line 3999 +;3995: //case ITEM_TYPE_IMAGE: +;3996: // Item_Image_Paint(item); +;3997: // break; +;3998: case ITEM_TYPE_MODEL: +;3999: Item_Model_Paint(item); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRGP4 Item_Model_Paint +CALLV +pop +line 4000 +;4000: break; +ADDRGP4 $1873 +JUMPV +LABELV $1883 +line 4002 +;4001: case ITEM_TYPE_YESNO: +;4002: Item_YesNo_Paint(item); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRGP4 Item_YesNo_Paint +CALLV +pop +line 4003 +;4003: break; +ADDRGP4 $1873 +JUMPV +LABELV $1884 +line 4005 +;4004: case ITEM_TYPE_MULTI: +;4005: Item_Multi_Paint(item); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRGP4 Item_Multi_Paint +CALLV +pop +line 4006 +;4006: break; +ADDRGP4 $1873 +JUMPV +LABELV $1885 +line 4008 +;4007: case ITEM_TYPE_BIND: +;4008: Item_Bind_Paint(item); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRGP4 Item_Bind_Paint +CALLV +pop +line 4009 +;4009: break; +ADDRGP4 $1873 +JUMPV +LABELV $1886 +line 4011 +;4010: case ITEM_TYPE_SLIDER: +;4011: Item_Slider_Paint(item); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRGP4 Item_Slider_Paint +CALLV +pop +line 4012 +;4012: break; +line 4014 +;4013: default: +;4014: break; +LABELV $1873 +line 4017 +;4015: } +;4016: +;4017:} +LABELV $1807 +endproc Item_Paint 84 24 +export Menu_Init +proc Menu_Init 0 12 +line 4019 +;4018: +;4019:void Menu_Init(menuDef_t *menu) { +line 4020 +;4020: memset(menu, 0, sizeof(menuDef_t)); +ADDRFP4 0 +INDIRP4 +ARGP4 +CNSTI4 0 +ARGI4 +CNSTI4 644 +ARGI4 +ADDRGP4 memset +CALLP4 +pop +line 4021 +;4021: menu->cursorItem = -1; +ADDRFP4 0 +INDIRP4 +CNSTI4 196 +ADDP4 +CNSTI4 -1 +ASGNI4 +line 4022 +;4022: menu->fadeAmount = DC->Assets.fadeAmount; +ADDRFP4 0 +INDIRP4 +CNSTI4 208 +ADDP4 +ADDRGP4 DC +INDIRP4 +CNSTI4 61960 +ADDP4 +INDIRF4 +ASGNF4 +line 4023 +;4023: menu->fadeClamp = DC->Assets.fadeClamp; +ADDRFP4 0 +INDIRP4 +CNSTI4 204 +ADDP4 +ADDRGP4 DC +INDIRP4 +CNSTI4 61952 +ADDP4 +INDIRF4 +ASGNF4 +line 4024 +;4024: menu->fadeCycle = DC->Assets.fadeCycle; +ADDRFP4 0 +INDIRP4 +CNSTI4 200 +ADDP4 +ADDRGP4 DC +INDIRP4 +CNSTI4 61956 +ADDP4 +INDIRI4 +ASGNI4 +line 4025 +;4025: Window_Init(&menu->window); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRGP4 Window_Init +CALLV +pop +line 4026 +;4026:} +LABELV $1888 +endproc Menu_Init 0 12 +export Menu_GetFocusedItem +proc Menu_GetFocusedItem 8 0 +line 4028 +;4027: +;4028:itemDef_t *Menu_GetFocusedItem(menuDef_t *menu) { +line 4030 +;4029: int i; +;4030: if (menu) { +ADDRFP4 0 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $1890 +line 4031 +;4031: for (i = 0; i < menu->itemCount; i++) { +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +ADDRGP4 $1895 +JUMPV +LABELV $1892 +line 4032 +;4032: if (menu->items[i]->window.flags & WINDOW_HASFOCUS) { +ADDRLP4 4 +CNSTI4 2 +ASGNI4 +ADDRLP4 0 +INDIRI4 +ADDRLP4 4 +INDIRI4 +LSHI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 260 +ADDP4 +ADDP4 +INDIRP4 +CNSTI4 68 +ADDP4 +INDIRI4 +ADDRLP4 4 +INDIRI4 +BANDI4 +CNSTI4 0 +EQI4 $1896 +line 4033 +;4033: return menu->items[i]; +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 260 +ADDP4 +ADDP4 +INDIRP4 +RETP4 +ADDRGP4 $1889 +JUMPV +LABELV $1896 +line 4035 +;4034: } +;4035: } +LABELV $1893 +line 4031 +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +LABELV $1895 +ADDRLP4 0 +INDIRI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 188 +ADDP4 +INDIRI4 +LTI4 $1892 +line 4036 +;4036: } +LABELV $1890 +line 4037 +;4037: return NULL; +CNSTP4 0 +RETP4 +LABELV $1889 +endproc Menu_GetFocusedItem 8 0 +export Menu_GetFocused +proc Menu_GetFocused 12 0 +line 4040 +;4038:} +;4039: +;4040:menuDef_t *Menu_GetFocused() { +line 4042 +;4041: int i; +;4042: for (i = 0; i < menuCount; i++) { +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +ADDRGP4 $1902 +JUMPV +LABELV $1899 +line 4043 +;4043: if (Menus[i].window.flags & WINDOW_HASFOCUS && Menus[i].window.flags & WINDOW_VISIBLE) { +ADDRLP4 4 +CNSTI4 644 +ADDRLP4 0 +INDIRI4 +MULI4 +ASGNI4 +ADDRLP4 8 +CNSTI4 0 +ASGNI4 +ADDRLP4 4 +INDIRI4 +ADDRGP4 Menus+68 +ADDP4 +INDIRI4 +CNSTI4 2 +BANDI4 +ADDRLP4 8 +INDIRI4 +EQI4 $1903 +ADDRLP4 4 +INDIRI4 +ADDRGP4 Menus+68 +ADDP4 +INDIRI4 +CNSTI4 4 +BANDI4 +ADDRLP4 8 +INDIRI4 +EQI4 $1903 +line 4044 +;4044: return &Menus[i]; +CNSTI4 644 +ADDRLP4 0 +INDIRI4 +MULI4 +ADDRGP4 Menus +ADDP4 +RETP4 +ADDRGP4 $1898 +JUMPV +LABELV $1903 +line 4046 +;4045: } +;4046: } +LABELV $1900 +line 4042 +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +LABELV $1902 +ADDRLP4 0 +INDIRI4 +ADDRGP4 menuCount +INDIRI4 +LTI4 $1899 +line 4047 +;4047: return NULL; +CNSTP4 0 +RETP4 +LABELV $1898 +endproc Menu_GetFocused 12 0 +export Menu_ScrollFeeder +proc Menu_ScrollFeeder 12 16 +line 4050 +;4048:} +;4049: +;4050:void Menu_ScrollFeeder(menuDef_t *menu, int feeder, qboolean down) { +line 4051 +;4051: if (menu) { +ADDRFP4 0 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $1908 +line 4053 +;4052: int i; +;4053: for (i = 0; i < menu->itemCount; i++) { +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +ADDRGP4 $1913 +JUMPV +LABELV $1910 +line 4054 +;4054: if (menu->items[i]->special == feeder) { +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 260 +ADDP4 +ADDP4 +INDIRP4 +CNSTI4 528 +ADDP4 +INDIRF4 +ADDRFP4 4 +INDIRI4 +CVIF4 4 +NEF4 $1914 +line 4055 +;4055: Item_ListBox_HandleKey(menu->items[i], (down) ? K_DOWNARROW : K_UPARROW, qtrue, qtrue); +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 260 +ADDP4 +ADDP4 +INDIRP4 +ARGP4 +ADDRFP4 8 +INDIRI4 +CNSTI4 0 +EQI4 $1917 +ADDRLP4 4 +CNSTI4 133 +ASGNI4 +ADDRGP4 $1918 +JUMPV +LABELV $1917 +ADDRLP4 4 +CNSTI4 132 +ASGNI4 +LABELV $1918 +ADDRLP4 4 +INDIRI4 +ARGI4 +ADDRLP4 8 +CNSTI4 1 +ASGNI4 +ADDRLP4 8 +INDIRI4 +ARGI4 +ADDRLP4 8 +INDIRI4 +ARGI4 +ADDRGP4 Item_ListBox_HandleKey +CALLI4 +pop +line 4056 +;4056: return; +ADDRGP4 $1907 +JUMPV +LABELV $1914 +line 4058 +;4057: } +;4058: } +LABELV $1911 +line 4053 +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +LABELV $1913 +ADDRLP4 0 +INDIRI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 188 +ADDP4 +INDIRI4 +LTI4 $1910 +line 4059 +;4059: } +LABELV $1908 +line 4060 +;4060:} +LABELV $1907 +endproc Menu_ScrollFeeder 12 16 +export Menu_SetFeederSelection +proc Menu_SetFeederSelection 8 8 +line 4064 +;4061: +;4062: +;4063: +;4064:void Menu_SetFeederSelection(menuDef_t *menu, int feeder, int index, const char *name) { +line 4065 +;4065: if (menu == NULL) { +ADDRFP4 0 +INDIRP4 +CVPU4 4 +CNSTU4 0 +NEU4 $1920 +line 4066 +;4066: if (name == NULL) { +ADDRFP4 12 +INDIRP4 +CVPU4 4 +CNSTU4 0 +NEU4 $1922 +line 4067 +;4067: menu = Menu_GetFocused(); +ADDRLP4 0 +ADDRGP4 Menu_GetFocused +CALLP4 +ASGNP4 +ADDRFP4 0 +ADDRLP4 0 +INDIRP4 +ASGNP4 +line 4068 +;4068: } else { +ADDRGP4 $1923 +JUMPV +LABELV $1922 +line 4069 +;4069: menu = Menus_FindByName(name); +ADDRFP4 12 +INDIRP4 +ARGP4 +ADDRLP4 0 +ADDRGP4 Menus_FindByName +CALLP4 +ASGNP4 +ADDRFP4 0 +ADDRLP4 0 +INDIRP4 +ASGNP4 +line 4070 +;4070: } +LABELV $1923 +line 4071 +;4071: } +LABELV $1920 +line 4073 +;4072: +;4073: if (menu) { +ADDRFP4 0 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $1924 +line 4075 +;4074: int i; +;4075: for (i = 0; i < menu->itemCount; i++) { +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +ADDRGP4 $1929 +JUMPV +LABELV $1926 +line 4076 +;4076: if (menu->items[i]->special == feeder) { +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 260 +ADDP4 +ADDP4 +INDIRP4 +CNSTI4 528 +ADDP4 +INDIRF4 +ADDRFP4 4 +INDIRI4 +CVIF4 4 +NEF4 $1930 +line 4077 +;4077: if (index == 0) { +ADDRFP4 8 +INDIRI4 +CNSTI4 0 +NEI4 $1932 +line 4078 +;4078: listBoxDef_t *listPtr = (listBoxDef_t*)menu->items[i]->typeData; +ADDRLP4 4 +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 260 +ADDP4 +ADDP4 +INDIRP4 +CNSTI4 536 +ADDP4 +INDIRP4 +ASGNP4 +line 4079 +;4079: listPtr->cursorPos = 0; +ADDRLP4 4 +INDIRP4 +CNSTI4 12 +ADDP4 +CNSTI4 0 +ASGNI4 +line 4080 +;4080: listPtr->startPos = 0; +ADDRLP4 4 +INDIRP4 +CNSTI4 0 +ASGNI4 +line 4081 +;4081: } +LABELV $1932 +line 4082 +;4082: menu->items[i]->cursorPos = index; +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 260 +ADDP4 +ADDP4 +INDIRP4 +CNSTI4 532 +ADDP4 +ADDRFP4 8 +INDIRI4 +ASGNI4 +line 4083 +;4083: DC->feederSelection(menu->items[i]->special, menu->items[i]->cursorPos); +ADDRLP4 4 +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 260 +ADDP4 +ADDP4 +INDIRP4 +ASGNP4 +ADDRLP4 4 +INDIRP4 +CNSTI4 528 +ADDP4 +INDIRF4 +ARGF4 +ADDRLP4 4 +INDIRP4 +CNSTI4 532 +ADDP4 +INDIRI4 +ARGI4 +ADDRGP4 DC +INDIRP4 +CNSTI4 132 +ADDP4 +INDIRP4 +CALLV +pop +line 4084 +;4084: return; +ADDRGP4 $1919 +JUMPV +LABELV $1930 +line 4086 +;4085: } +;4086: } +LABELV $1927 +line 4075 +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +LABELV $1929 +ADDRLP4 0 +INDIRI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 188 +ADDP4 +INDIRI4 +LTI4 $1926 +line 4087 +;4087: } +LABELV $1924 +line 4088 +;4088:} +LABELV $1919 +endproc Menu_SetFeederSelection 8 8 +export Menus_AnyFullScreenVisible +proc Menus_AnyFullScreenVisible 12 0 +line 4090 +;4089: +;4090:qboolean Menus_AnyFullScreenVisible() { +line 4092 +;4091: int i; +;4092: for (i = 0; i < menuCount; i++) { +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +ADDRGP4 $1938 +JUMPV +LABELV $1935 +line 4093 +;4093: if (Menus[i].window.flags & WINDOW_VISIBLE && Menus[i].fullScreen) { +ADDRLP4 4 +CNSTI4 644 +ADDRLP4 0 +INDIRI4 +MULI4 +ASGNI4 +ADDRLP4 8 +CNSTI4 0 +ASGNI4 +ADDRLP4 4 +INDIRI4 +ADDRGP4 Menus+68 +ADDP4 +INDIRI4 +CNSTI4 4 +BANDI4 +ADDRLP4 8 +INDIRI4 +EQI4 $1939 +ADDRLP4 4 +INDIRI4 +ADDRGP4 Menus+184 +ADDP4 +INDIRI4 +ADDRLP4 8 +INDIRI4 +EQI4 $1939 +line 4094 +;4094: return qtrue; +CNSTI4 1 +RETI4 +ADDRGP4 $1934 +JUMPV +LABELV $1939 +line 4096 +;4095: } +;4096: } +LABELV $1936 +line 4092 +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +LABELV $1938 +ADDRLP4 0 +INDIRI4 +ADDRGP4 menuCount +INDIRI4 +LTI4 $1935 +line 4097 +;4097: return qfalse; +CNSTI4 0 +RETI4 +LABELV $1934 +endproc Menus_AnyFullScreenVisible 12 0 +export Menus_ActivateByName +proc Menus_ActivateByName 28 8 +line 4100 +;4098:} +;4099: +;4100:menuDef_t *Menus_ActivateByName(const char *p) { +line 4102 +;4101: int i; +;4102: menuDef_t *m = NULL; +ADDRLP4 4 +CNSTP4 0 +ASGNP4 +line 4103 +;4103: menuDef_t *focus = Menu_GetFocused(); +ADDRLP4 12 +ADDRGP4 Menu_GetFocused +CALLP4 +ASGNP4 +ADDRLP4 8 +ADDRLP4 12 +INDIRP4 +ASGNP4 +line 4104 +;4104: for (i = 0; i < menuCount; i++) { +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +ADDRGP4 $1947 +JUMPV +LABELV $1944 +line 4105 +;4105: if (Q_stricmp(Menus[i].window.name, p) == 0) { +CNSTI4 644 +ADDRLP4 0 +INDIRI4 +MULI4 +ADDRGP4 Menus+32 +ADDP4 +INDIRP4 +ARGP4 +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRLP4 16 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 16 +INDIRI4 +CNSTI4 0 +NEI4 $1948 +line 4106 +;4106: m = &Menus[i]; +ADDRLP4 4 +CNSTI4 644 +ADDRLP4 0 +INDIRI4 +MULI4 +ADDRGP4 Menus +ADDP4 +ASGNP4 +line 4107 +;4107: Menus_Activate(m); +ADDRLP4 4 +INDIRP4 +ARGP4 +ADDRGP4 Menus_Activate +CALLV +pop +line 4108 +;4108: if (openMenuCount < MAX_OPEN_MENUS && focus != NULL) { +ADDRGP4 openMenuCount +INDIRI4 +CNSTI4 16 +GEI4 $1949 +ADDRLP4 8 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $1949 +line 4109 +;4109: menuStack[openMenuCount++] = focus; +ADDRLP4 24 +ADDRGP4 openMenuCount +ASGNP4 +ADDRLP4 20 +ADDRLP4 24 +INDIRP4 +INDIRI4 +ASGNI4 +ADDRLP4 24 +INDIRP4 +ADDRLP4 20 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +ADDRLP4 20 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRGP4 menuStack +ADDP4 +ADDRLP4 8 +INDIRP4 +ASGNP4 +line 4110 +;4110: } +line 4111 +;4111: } else { +ADDRGP4 $1949 +JUMPV +LABELV $1948 +line 4112 +;4112: Menus[i].window.flags &= ~WINDOW_HASFOCUS; +ADDRLP4 20 +CNSTI4 644 +ADDRLP4 0 +INDIRI4 +MULI4 +ADDRGP4 Menus+68 +ADDP4 +ASGNP4 +ADDRLP4 20 +INDIRP4 +ADDRLP4 20 +INDIRP4 +INDIRI4 +CNSTI4 -3 +BANDI4 +ASGNI4 +line 4113 +;4113: } +LABELV $1949 +line 4114 +;4114: } +LABELV $1945 +line 4104 +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +LABELV $1947 +ADDRLP4 0 +INDIRI4 +ADDRGP4 menuCount +INDIRI4 +LTI4 $1944 +line 4115 +;4115: Display_CloseCinematics(); +ADDRGP4 Display_CloseCinematics +CALLV +pop +line 4116 +;4116: return m; +ADDRLP4 4 +INDIRP4 +RETP4 +LABELV $1943 +endproc Menus_ActivateByName 28 8 +export Item_Init +proc Item_Init 0 12 +line 4120 +;4117:} +;4118: +;4119: +;4120:void Item_Init(itemDef_t *item) { +line 4121 +;4121: memset(item, 0, sizeof(itemDef_t)); +ADDRFP4 0 +INDIRP4 +ARGP4 +CNSTI4 0 +ARGI4 +CNSTI4 540 +ARGI4 +ADDRGP4 memset +CALLP4 +pop +line 4122 +;4122: item->textscale = 0.55f; +ADDRFP4 0 +INDIRP4 +CNSTI4 216 +ADDP4 +CNSTF4 1057803469 +ASGNF4 +line 4123 +;4123: Window_Init(&item->window); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRGP4 Window_Init +CALLV +pop +line 4124 +;4124:} +LABELV $1954 +endproc Item_Init 0 12 +export Menu_HandleMouseMove +proc Menu_HandleMouseMove 52 12 +line 4126 +;4125: +;4126:void Menu_HandleMouseMove(menuDef_t *menu, float x, float y) { +line 4128 +;4127: int i, pass; +;4128: qboolean focusSet = qfalse; +ADDRLP4 12 +CNSTI4 0 +ASGNI4 +line 4131 +;4129: +;4130: itemDef_t *overItem; +;4131: if (menu == NULL) { +ADDRFP4 0 +INDIRP4 +CVPU4 4 +CNSTU4 0 +NEU4 $1956 +line 4132 +;4132: return; +ADDRGP4 $1955 +JUMPV +LABELV $1956 +line 4135 +;4133: } +;4134: +;4135: if (!(menu->window.flags & (WINDOW_VISIBLE | WINDOW_FORCED))) { +ADDRFP4 0 +INDIRP4 +CNSTI4 68 +ADDP4 +INDIRI4 +CNSTI4 1048580 +BANDI4 +CNSTI4 0 +NEI4 $1958 +line 4136 +;4136: return; +ADDRGP4 $1955 +JUMPV +LABELV $1958 +line 4139 +;4137: } +;4138: +;4139: if (itemCapture) { +ADDRGP4 itemCapture +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $1960 +line 4141 +;4140: //Item_MouseMove(itemCapture, x, y); +;4141: return; +ADDRGP4 $1955 +JUMPV +LABELV $1960 +line 4144 +;4142: } +;4143: +;4144: if (g_waitingForKey || g_editingField) { +ADDRLP4 16 +CNSTI4 0 +ASGNI4 +ADDRGP4 g_waitingForKey +INDIRI4 +ADDRLP4 16 +INDIRI4 +NEI4 $1964 +ADDRGP4 g_editingField +INDIRI4 +ADDRLP4 16 +INDIRI4 +EQI4 $1962 +LABELV $1964 +line 4145 +;4145: return; +ADDRGP4 $1955 +JUMPV +LABELV $1962 +line 4150 +;4146: } +;4147: +;4148: // FIXME: this is the whole issue of focus vs. mouse over.. +;4149: // need a better overall solution as i don't like going through everything twice +;4150: for (pass = 0; pass < 2; pass++) { +ADDRLP4 8 +CNSTI4 0 +ASGNI4 +LABELV $1965 +line 4151 +;4151: for (i = 0; i < menu->itemCount; i++) { +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +ADDRGP4 $1972 +JUMPV +LABELV $1969 +line 4155 +;4152: // turn off focus each item +;4153: // menu->items[i].window.flags &= ~WINDOW_HASFOCUS; +;4154: +;4155: if (!(menu->items[i]->window.flags & (WINDOW_VISIBLE | WINDOW_FORCED))) { +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 260 +ADDP4 +ADDP4 +INDIRP4 +CNSTI4 68 +ADDP4 +INDIRI4 +CNSTI4 1048580 +BANDI4 +CNSTI4 0 +NEI4 $1973 +line 4156 +;4156: continue; +ADDRGP4 $1970 +JUMPV +LABELV $1973 +line 4160 +;4157: } +;4158: +;4159: // items can be enabled and disabled based on cvars +;4160: if (menu->items[i]->cvarFlags & (CVAR_ENABLE | CVAR_DISABLE) && !Item_EnableShowViaCvar(menu->items[i], CVAR_ENABLE)) { +ADDRLP4 20 +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 260 +ADDP4 +ADDP4 +INDIRP4 +ASGNP4 +ADDRLP4 20 +INDIRP4 +CNSTI4 276 +ADDP4 +INDIRI4 +CNSTI4 3 +BANDI4 +CNSTI4 0 +EQI4 $1975 +ADDRLP4 20 +INDIRP4 +ARGP4 +CNSTI4 1 +ARGI4 +ADDRLP4 24 +ADDRGP4 Item_EnableShowViaCvar +CALLI4 +ASGNI4 +ADDRLP4 24 +INDIRI4 +CNSTI4 0 +NEI4 $1975 +line 4161 +;4161: continue; +ADDRGP4 $1970 +JUMPV +LABELV $1975 +line 4164 +;4162: } +;4163: +;4164: if (menu->items[i]->cvarFlags & (CVAR_SHOW | CVAR_HIDE) && !Item_EnableShowViaCvar(menu->items[i], CVAR_SHOW)) { +ADDRLP4 28 +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 260 +ADDP4 +ADDP4 +INDIRP4 +ASGNP4 +ADDRLP4 28 +INDIRP4 +CNSTI4 276 +ADDP4 +INDIRI4 +CNSTI4 12 +BANDI4 +CNSTI4 0 +EQI4 $1977 +ADDRLP4 28 +INDIRP4 +ARGP4 +CNSTI4 4 +ARGI4 +ADDRLP4 32 +ADDRGP4 Item_EnableShowViaCvar +CALLI4 +ASGNI4 +ADDRLP4 32 +INDIRI4 +CNSTI4 0 +NEI4 $1977 +line 4165 +;4165: continue; +ADDRGP4 $1970 +JUMPV +LABELV $1977 +line 4170 +;4166: } +;4167: +;4168: +;4169: +;4170: if (Rect_ContainsPoint(&menu->items[i]->window.rect, x, y)) { +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 260 +ADDP4 +ADDP4 +INDIRP4 +ARGP4 +ADDRFP4 4 +INDIRF4 +ARGF4 +ADDRFP4 8 +INDIRF4 +ARGF4 +ADDRLP4 36 +ADDRGP4 Rect_ContainsPoint +CALLI4 +ASGNI4 +ADDRLP4 36 +INDIRI4 +CNSTI4 0 +EQI4 $1979 +line 4171 +;4171: if (pass == 1) { +ADDRLP4 8 +INDIRI4 +CNSTI4 1 +NEI4 $1980 +line 4172 +;4172: overItem = menu->items[i]; +ADDRLP4 4 +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 260 +ADDP4 +ADDP4 +INDIRP4 +ASGNP4 +line 4173 +;4173: if (overItem->type == ITEM_TYPE_TEXT && overItem->text) { +ADDRLP4 4 +INDIRP4 +CNSTI4 196 +ADDP4 +INDIRI4 +CNSTI4 0 +NEI4 $1983 +ADDRLP4 4 +INDIRP4 +CNSTI4 224 +ADDP4 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $1983 +line 4174 +;4174: if (!Rect_ContainsPoint(Item_CorrectedTextRect(overItem), x, y)) { +ADDRLP4 4 +INDIRP4 +ARGP4 +ADDRLP4 44 +ADDRGP4 Item_CorrectedTextRect +CALLP4 +ASGNP4 +ADDRLP4 44 +INDIRP4 +ARGP4 +ADDRFP4 4 +INDIRF4 +ARGF4 +ADDRFP4 8 +INDIRF4 +ARGF4 +ADDRLP4 48 +ADDRGP4 Rect_ContainsPoint +CALLI4 +ASGNI4 +ADDRLP4 48 +INDIRI4 +CNSTI4 0 +NEI4 $1985 +line 4175 +;4175: continue; +ADDRGP4 $1970 +JUMPV +LABELV $1985 +line 4177 +;4176: } +;4177: } +LABELV $1983 +line 4179 +;4178: // if we are over an item +;4179: if (IsVisible(overItem->window.flags)) { +ADDRLP4 4 +INDIRP4 +CNSTI4 68 +ADDP4 +INDIRI4 +ARGI4 +ADDRLP4 44 +ADDRGP4 IsVisible +CALLI4 +ASGNI4 +ADDRLP4 44 +INDIRI4 +CNSTI4 0 +EQI4 $1980 +line 4181 +;4180: // different one +;4181: Item_MouseEnter(overItem, x, y); +ADDRLP4 4 +INDIRP4 +ARGP4 +ADDRFP4 4 +INDIRF4 +ARGF4 +ADDRFP4 8 +INDIRF4 +ARGF4 +ADDRGP4 Item_MouseEnter +CALLV +pop +line 4185 +;4182: // Item_SetMouseOver(overItem, qtrue); +;4183: +;4184: // if item is not a decoration see if it can take focus +;4185: if (!focusSet) { +ADDRLP4 12 +INDIRI4 +CNSTI4 0 +NEI4 $1980 +line 4186 +;4186: focusSet = Item_SetFocus(overItem, x, y); +ADDRLP4 4 +INDIRP4 +ARGP4 +ADDRFP4 4 +INDIRF4 +ARGF4 +ADDRFP4 8 +INDIRF4 +ARGF4 +ADDRLP4 48 +ADDRGP4 Item_SetFocus +CALLI4 +ASGNI4 +ADDRLP4 12 +ADDRLP4 48 +INDIRI4 +ASGNI4 +line 4187 +;4187: } +line 4188 +;4188: } +line 4189 +;4189: } +line 4190 +;4190: } else if (menu->items[i]->window.flags & WINDOW_MOUSEOVER) { +ADDRGP4 $1980 +JUMPV +LABELV $1979 +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 260 +ADDP4 +ADDP4 +INDIRP4 +CNSTI4 68 +ADDP4 +INDIRI4 +CNSTI4 1 +BANDI4 +CNSTI4 0 +EQI4 $1991 +line 4191 +;4191: Item_MouseLeave(menu->items[i]); +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 260 +ADDP4 +ADDP4 +INDIRP4 +ARGP4 +ADDRGP4 Item_MouseLeave +CALLV +pop +line 4192 +;4192: Item_SetMouseOver(menu->items[i], qfalse); +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 260 +ADDP4 +ADDP4 +INDIRP4 +ARGP4 +CNSTI4 0 +ARGI4 +ADDRGP4 Item_SetMouseOver +CALLV +pop +line 4193 +;4193: } +LABELV $1991 +LABELV $1980 +line 4194 +;4194: } +LABELV $1970 +line 4151 +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +LABELV $1972 +ADDRLP4 0 +INDIRI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 188 +ADDP4 +INDIRI4 +LTI4 $1969 +line 4195 +;4195: } +LABELV $1966 +line 4150 +ADDRLP4 8 +ADDRLP4 8 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +ADDRLP4 8 +INDIRI4 +CNSTI4 2 +LTI4 $1965 +line 4197 +;4196: +;4197:} +LABELV $1955 +endproc Menu_HandleMouseMove 52 12 +export Menu_Paint +proc Menu_Paint 48 24 +line 4199 +;4198: +;4199:void Menu_Paint(menuDef_t *menu, qboolean forcePaint) { +line 4202 +;4200: int i; +;4201: +;4202: if (menu == NULL) { +ADDRFP4 0 +INDIRP4 +CVPU4 4 +CNSTU4 0 +NEU4 $1994 +line 4203 +;4203: return; +ADDRGP4 $1993 +JUMPV +LABELV $1994 +line 4206 +;4204: } +;4205: +;4206: if (!(menu->window.flags & WINDOW_VISIBLE) && !forcePaint) { +ADDRLP4 4 +CNSTI4 0 +ASGNI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 68 +ADDP4 +INDIRI4 +CNSTI4 4 +BANDI4 +ADDRLP4 4 +INDIRI4 +NEI4 $1996 +ADDRFP4 4 +INDIRI4 +ADDRLP4 4 +INDIRI4 +NEI4 $1996 +line 4207 +;4207: return; +ADDRGP4 $1993 +JUMPV +LABELV $1996 +line 4210 +;4208: } +;4209: +;4210: if (menu->window.ownerDrawFlags && DC->ownerDrawVisible && !DC->ownerDrawVisible(menu->window.ownerDrawFlags)) { +ADDRLP4 8 +ADDRFP4 0 +INDIRP4 +CNSTI4 60 +ADDP4 +INDIRI4 +ASGNI4 +ADDRLP4 8 +INDIRI4 +CNSTI4 0 +EQI4 $1998 +ADDRLP4 12 +ADDRGP4 DC +INDIRP4 +CNSTI4 76 +ADDP4 +INDIRP4 +ASGNP4 +ADDRLP4 12 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $1998 +ADDRLP4 8 +INDIRI4 +ARGI4 +ADDRLP4 16 +ADDRLP4 12 +INDIRP4 +CALLI4 +ASGNI4 +ADDRLP4 16 +INDIRI4 +CNSTI4 0 +NEI4 $1998 +line 4211 +;4211: return; +ADDRGP4 $1993 +JUMPV +LABELV $1998 +line 4214 +;4212: } +;4213: +;4214: if (forcePaint) { +ADDRFP4 4 +INDIRI4 +CNSTI4 0 +EQI4 $2000 +line 4215 +;4215: menu->window.flags |= WINDOW_FORCED; +ADDRLP4 20 +ADDRFP4 0 +INDIRP4 +CNSTI4 68 +ADDP4 +ASGNP4 +ADDRLP4 20 +INDIRP4 +ADDRLP4 20 +INDIRP4 +INDIRI4 +CNSTI4 1048576 +BORI4 +ASGNI4 +line 4216 +;4216: } +LABELV $2000 +line 4219 +;4217: +;4218: // draw the background if necessary +;4219: if (menu->fullScreen) { +ADDRFP4 0 +INDIRP4 +CNSTI4 184 +ADDP4 +INDIRI4 +CNSTI4 0 +EQI4 $2002 +line 4222 +;4220: // implies a background shader +;4221: // FIXME: make sure we have a default shader if fullscreen is set with no background +;4222: DC->drawHandlePic( 0, 0, SCREEN_WIDTH, SCREEN_HEIGHT, menu->window.background ); +ADDRLP4 20 +CNSTF4 0 +ASGNF4 +ADDRLP4 20 +INDIRF4 +ARGF4 +ADDRLP4 20 +INDIRF4 +ARGF4 +CNSTF4 1142947840 +ARGF4 +CNSTF4 1139802112 +ARGF4 +ADDRFP4 0 +INDIRP4 +CNSTI4 176 +ADDP4 +INDIRI4 +ARGI4 +ADDRGP4 DC +INDIRP4 +CNSTI4 8 +ADDP4 +INDIRP4 +CALLV +pop +line 4223 +;4223: } else if (menu->window.background) { +ADDRGP4 $2003 +JUMPV +LABELV $2002 +ADDRFP4 0 +INDIRP4 +CNSTI4 176 +ADDP4 +INDIRI4 +CNSTI4 0 +EQI4 $2004 +line 4226 +;4224: // this allows a background shader without being full screen +;4225: //UI_DrawHandlePic(menu->window.rect.x, menu->window.rect.y, menu->window.rect.w, menu->window.rect.h, menu->backgroundShader); +;4226: } +LABELV $2004 +LABELV $2003 +line 4229 +;4227: +;4228: // paint the background and or border +;4229: Window_Paint(&menu->window, menu->fadeAmount, menu->fadeClamp, menu->fadeCycle ); +ADDRLP4 20 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 20 +INDIRP4 +ARGP4 +ADDRLP4 20 +INDIRP4 +CNSTI4 208 +ADDP4 +INDIRF4 +ARGF4 +ADDRLP4 20 +INDIRP4 +CNSTI4 204 +ADDP4 +INDIRF4 +ARGF4 +ADDRLP4 20 +INDIRP4 +CNSTI4 200 +ADDP4 +INDIRI4 +CVIF4 4 +ARGF4 +ADDRGP4 Window_Paint +CALLV +pop +line 4231 +;4230: +;4231: for (i = 0; i < menu->itemCount; i++) { +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +ADDRGP4 $2009 +JUMPV +LABELV $2006 +line 4232 +;4232: Item_Paint(menu->items[i]); +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 260 +ADDP4 +ADDP4 +INDIRP4 +ARGP4 +ADDRGP4 Item_Paint +CALLV +pop +line 4233 +;4233: } +LABELV $2007 +line 4231 +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +LABELV $2009 +ADDRLP4 0 +INDIRI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 188 +ADDP4 +INDIRI4 +LTI4 $2006 +line 4235 +;4234: +;4235: if (debugMode) { +ADDRGP4 debugMode +INDIRI4 +CNSTI4 0 +EQI4 $2010 +line 4237 +;4236: vec4_t color; +;4237: color[0] = color[2] = color[3] = 1; +ADDRLP4 40 +CNSTF4 1065353216 +ASGNF4 +ADDRLP4 24+12 +ADDRLP4 40 +INDIRF4 +ASGNF4 +ADDRLP4 24+8 +ADDRLP4 40 +INDIRF4 +ASGNF4 +ADDRLP4 24 +ADDRLP4 40 +INDIRF4 +ASGNF4 +line 4238 +;4238: color[1] = 0; +ADDRLP4 24+4 +CNSTF4 0 +ASGNF4 +line 4239 +;4239: DC->drawRect(menu->window.rect.x, menu->window.rect.y, menu->window.rect.w, menu->window.rect.h, 1, color); +ADDRLP4 44 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 44 +INDIRP4 +INDIRF4 +ARGF4 +ADDRLP4 44 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRF4 +ARGF4 +ADDRLP4 44 +INDIRP4 +CNSTI4 8 +ADDP4 +INDIRF4 +ARGF4 +ADDRLP4 44 +INDIRP4 +CNSTI4 12 +ADDP4 +INDIRF4 +ARGF4 +CNSTF4 1065353216 +ARGF4 +ADDRLP4 24 +ARGP4 +ADDRGP4 DC +INDIRP4 +CNSTI4 40 +ADDP4 +INDIRP4 +CALLV +pop +line 4240 +;4240: } +LABELV $2010 +line 4241 +;4241:} +LABELV $1993 +endproc Menu_Paint 48 24 +export Item_ValidateTypeData +proc Item_ValidateTypeData 8 12 +line 4248 +;4242: +;4243:/* +;4244:=============== +;4245:Item_ValidateTypeData +;4246:=============== +;4247:*/ +;4248:void Item_ValidateTypeData(itemDef_t *item) { +line 4249 +;4249: if (item->typeData) { +ADDRFP4 0 +INDIRP4 +CNSTI4 536 +ADDP4 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $2016 +line 4250 +;4250: return; +ADDRGP4 $2015 +JUMPV +LABELV $2016 +line 4253 +;4251: } +;4252: +;4253: if (item->type == ITEM_TYPE_LISTBOX) { +ADDRFP4 0 +INDIRP4 +CNSTI4 196 +ADDP4 +INDIRI4 +CNSTI4 6 +NEI4 $2018 +line 4254 +;4254: item->typeData = UI_Alloc(sizeof(listBoxDef_t)); +CNSTI4 232 +ARGI4 +ADDRLP4 0 +ADDRGP4 UI_Alloc +CALLP4 +ASGNP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 536 +ADDP4 +ADDRLP4 0 +INDIRP4 +ASGNP4 +line 4255 +;4255: memset(item->typeData, 0, sizeof(listBoxDef_t)); +ADDRFP4 0 +INDIRP4 +CNSTI4 536 +ADDP4 +INDIRP4 +ARGP4 +CNSTI4 0 +ARGI4 +CNSTI4 232 +ARGI4 +ADDRGP4 memset +CALLP4 +pop +line 4256 +;4256: } else if (item->type == ITEM_TYPE_EDITFIELD || item->type == ITEM_TYPE_NUMERICFIELD || item->type == ITEM_TYPE_YESNO || item->type == ITEM_TYPE_BIND || item->type == ITEM_TYPE_SLIDER || item->type == ITEM_TYPE_TEXT) { +ADDRGP4 $2019 +JUMPV +LABELV $2018 +ADDRLP4 0 +ADDRFP4 0 +INDIRP4 +CNSTI4 196 +ADDP4 +INDIRI4 +ASGNI4 +ADDRLP4 0 +INDIRI4 +CNSTI4 4 +EQI4 $2026 +ADDRLP4 0 +INDIRI4 +CNSTI4 9 +EQI4 $2026 +ADDRLP4 0 +INDIRI4 +CNSTI4 11 +EQI4 $2026 +ADDRLP4 0 +INDIRI4 +CNSTI4 13 +EQI4 $2026 +ADDRLP4 0 +INDIRI4 +CNSTI4 10 +EQI4 $2026 +ADDRLP4 0 +INDIRI4 +CNSTI4 0 +NEI4 $2020 +LABELV $2026 +line 4257 +;4257: item->typeData = UI_Alloc(sizeof(editFieldDef_t)); +CNSTI4 28 +ARGI4 +ADDRLP4 4 +ADDRGP4 UI_Alloc +CALLP4 +ASGNP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 536 +ADDP4 +ADDRLP4 4 +INDIRP4 +ASGNP4 +line 4258 +;4258: memset(item->typeData, 0, sizeof(editFieldDef_t)); +ADDRFP4 0 +INDIRP4 +CNSTI4 536 +ADDP4 +INDIRP4 +ARGP4 +CNSTI4 0 +ARGI4 +CNSTI4 28 +ARGI4 +ADDRGP4 memset +CALLP4 +pop +line 4259 +;4259: if (item->type == ITEM_TYPE_EDITFIELD) { +ADDRFP4 0 +INDIRP4 +CNSTI4 196 +ADDP4 +INDIRI4 +CNSTI4 4 +NEI4 $2021 +line 4260 +;4260: if (!((editFieldDef_t *) item->typeData)->maxPaintChars) { +ADDRFP4 0 +INDIRP4 +CNSTI4 536 +ADDP4 +INDIRP4 +CNSTI4 20 +ADDP4 +INDIRI4 +CNSTI4 0 +NEI4 $2021 +line 4261 +;4261: ((editFieldDef_t *) item->typeData)->maxPaintChars = MAX_EDITFIELD; +ADDRFP4 0 +INDIRP4 +CNSTI4 536 +ADDP4 +INDIRP4 +CNSTI4 20 +ADDP4 +CNSTI4 256 +ASGNI4 +line 4262 +;4262: } +line 4263 +;4263: } +line 4264 +;4264: } else if (item->type == ITEM_TYPE_MULTI) { +ADDRGP4 $2021 +JUMPV +LABELV $2020 +ADDRFP4 0 +INDIRP4 +CNSTI4 196 +ADDP4 +INDIRI4 +CNSTI4 12 +NEI4 $2031 +line 4265 +;4265: item->typeData = UI_Alloc(sizeof(multiDef_t)); +CNSTI4 392 +ARGI4 +ADDRLP4 4 +ADDRGP4 UI_Alloc +CALLP4 +ASGNP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 536 +ADDP4 +ADDRLP4 4 +INDIRP4 +ASGNP4 +line 4266 +;4266: } else if (item->type == ITEM_TYPE_MODEL) { +ADDRGP4 $2032 +JUMPV +LABELV $2031 +ADDRFP4 0 +INDIRP4 +CNSTI4 196 +ADDP4 +INDIRI4 +CNSTI4 7 +NEI4 $2033 +line 4267 +;4267: item->typeData = UI_Alloc(sizeof(modelDef_t)); +CNSTI4 28 +ARGI4 +ADDRLP4 4 +ADDRGP4 UI_Alloc +CALLP4 +ASGNP4 +ADDRFP4 0 +INDIRP4 +CNSTI4 536 +ADDP4 +ADDRLP4 4 +INDIRP4 +ASGNP4 +line 4268 +;4268: } +LABELV $2033 +LABELV $2032 +LABELV $2021 +LABELV $2019 +line 4269 +;4269:} +LABELV $2015 +endproc Item_ValidateTypeData 8 12 +export KeywordHash_Key +proc KeywordHash_Key 20 0 +line 4286 +;4270: +;4271:/* +;4272:=============== +;4273:Keyword Hash +;4274:=============== +;4275:*/ +;4276: +;4277:#define KEYWORDHASH_SIZE 512 +;4278: +;4279:typedef struct keywordHash_s +;4280:{ +;4281: char *keyword; +;4282: qboolean (*func)(itemDef_t *item, int handle); +;4283: struct keywordHash_s *next; +;4284:} keywordHash_t; +;4285: +;4286:int KeywordHash_Key(char *keyword) { +line 4289 +;4287: int register hash, i; +;4288: +;4289: hash = 0; +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +line 4290 +;4290: for (i = 0; keyword[i] != '\0'; i++) { +ADDRLP4 4 +CNSTI4 0 +ASGNI4 +ADDRGP4 $2039 +JUMPV +LABELV $2036 +line 4291 +;4291: if (keyword[i] >= 'A' && keyword[i] <= 'Z') +ADDRLP4 8 +ADDRLP4 4 +INDIRI4 +ADDRFP4 0 +INDIRP4 +ADDP4 +INDIRI1 +CVII4 1 +ASGNI4 +ADDRLP4 8 +INDIRI4 +CNSTI4 65 +LTI4 $2040 +ADDRLP4 8 +INDIRI4 +CNSTI4 90 +GTI4 $2040 +line 4292 +;4292: hash += (keyword[i] + ('a' - 'A')) * (119 + i); +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +ADDRLP4 4 +INDIRI4 +ADDRFP4 0 +INDIRP4 +ADDP4 +INDIRI1 +CVII4 1 +CNSTI4 32 +ADDI4 +ADDRLP4 4 +INDIRI4 +CNSTI4 119 +ADDI4 +MULI4 +ADDI4 +ASGNI4 +ADDRGP4 $2041 +JUMPV +LABELV $2040 +line 4294 +;4293: else +;4294: hash += keyword[i] * (119 + i); +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +ADDRLP4 4 +INDIRI4 +ADDRFP4 0 +INDIRP4 +ADDP4 +INDIRI1 +CVII4 1 +ADDRLP4 4 +INDIRI4 +CNSTI4 119 +ADDI4 +MULI4 +ADDI4 +ASGNI4 +LABELV $2041 +line 4295 +;4295: } +LABELV $2037 +line 4290 +ADDRLP4 4 +ADDRLP4 4 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +LABELV $2039 +ADDRLP4 4 +INDIRI4 +ADDRFP4 0 +INDIRP4 +ADDP4 +INDIRI1 +CVII4 1 +CNSTI4 0 +NEI4 $2036 +line 4296 +;4296: hash = (hash ^ (hash >> 10) ^ (hash >> 20)) & (KEYWORDHASH_SIZE-1); +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +ADDRLP4 0 +INDIRI4 +CNSTI4 10 +RSHI4 +BXORI4 +ADDRLP4 0 +INDIRI4 +CNSTI4 20 +RSHI4 +BXORI4 +CNSTI4 511 +BANDI4 +ASGNI4 +line 4297 +;4297: return hash; +ADDRLP4 0 +INDIRI4 +RETI4 +LABELV $2035 +endproc KeywordHash_Key 20 0 +export KeywordHash_Add +proc KeywordHash_Add 8 4 +line 4300 +;4298:} +;4299: +;4300:void KeywordHash_Add(keywordHash_t *table[], keywordHash_t *key) { +line 4303 +;4301: int hash; +;4302: +;4303: hash = KeywordHash_Key(key->keyword); +ADDRFP4 4 +INDIRP4 +INDIRP4 +ARGP4 +ADDRLP4 4 +ADDRGP4 KeywordHash_Key +CALLI4 +ASGNI4 +ADDRLP4 0 +ADDRLP4 4 +INDIRI4 +ASGNI4 +line 4309 +;4304:/* +;4305: if (table[hash]) { +;4306: int collision = qtrue; +;4307: } +;4308:*/ +;4309: key->next = table[hash]; +ADDRFP4 4 +INDIRP4 +CNSTI4 8 +ADDP4 +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRFP4 0 +INDIRP4 +ADDP4 +INDIRP4 +ASGNP4 +line 4310 +;4310: table[hash] = key; +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRFP4 0 +INDIRP4 +ADDP4 +ADDRFP4 4 +INDIRP4 +ASGNP4 +line 4311 +;4311:} +LABELV $2042 +endproc KeywordHash_Add 8 4 +export KeywordHash_Find +proc KeywordHash_Find 16 8 +line 4314 +;4312: +;4313:keywordHash_t *KeywordHash_Find(keywordHash_t *table[], char *keyword) +;4314:{ +line 4318 +;4315: keywordHash_t *key; +;4316: int hash; +;4317: +;4318: hash = KeywordHash_Key(keyword); +ADDRFP4 4 +INDIRP4 +ARGP4 +ADDRLP4 8 +ADDRGP4 KeywordHash_Key +CALLI4 +ASGNI4 +ADDRLP4 4 +ADDRLP4 8 +INDIRI4 +ASGNI4 +line 4319 +;4319: for (key = table[hash]; key; key = key->next) { +ADDRLP4 0 +ADDRLP4 4 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRFP4 0 +INDIRP4 +ADDP4 +INDIRP4 +ASGNP4 +ADDRGP4 $2047 +JUMPV +LABELV $2044 +line 4320 +;4320: if (!Q_stricmp(key->keyword, keyword)) +ADDRLP4 0 +INDIRP4 +INDIRP4 +ARGP4 +ADDRFP4 4 +INDIRP4 +ARGP4 +ADDRLP4 12 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 12 +INDIRI4 +CNSTI4 0 +NEI4 $2048 +line 4321 +;4321: return key; +ADDRLP4 0 +INDIRP4 +RETP4 +ADDRGP4 $2043 +JUMPV +LABELV $2048 +line 4322 +;4322: } +LABELV $2045 +line 4319 +ADDRLP4 0 +ADDRLP4 0 +INDIRP4 +CNSTI4 8 +ADDP4 +INDIRP4 +ASGNP4 +LABELV $2047 +ADDRLP4 0 +INDIRP4 +CVPU4 4 +CNSTU4 0 +NEU4 $2044 +line 4323 +;4323: return NULL; +CNSTP4 0 +RETP4 +LABELV $2043 +endproc KeywordHash_Find 16 8 +export ItemParse_name +proc ItemParse_name 4 8 +line 4333 +;4324:} +;4325: +;4326:/* +;4327:=============== +;4328:Item Keyword Parse functions +;4329:=============== +;4330:*/ +;4331: +;4332:// name +;4333:qboolean ItemParse_name( itemDef_t *item, int handle ) { +line 4334 +;4334: if (!PC_String_Parse(handle, &item->window.name)) { +ADDRFP4 4 +INDIRI4 +ARGI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 32 +ADDP4 +ARGP4 +ADDRLP4 0 +ADDRGP4 PC_String_Parse +CALLI4 +ASGNI4 +ADDRLP4 0 +INDIRI4 +CNSTI4 0 +NEI4 $2051 +line 4335 +;4335: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $2050 +JUMPV +LABELV $2051 +line 4337 +;4336: } +;4337: return qtrue; +CNSTI4 1 +RETI4 +LABELV $2050 +endproc ItemParse_name 4 8 +export ItemParse_focusSound +proc ItemParse_focusSound 12 8 +line 4341 +;4338:} +;4339: +;4340:// name +;4341:qboolean ItemParse_focusSound( itemDef_t *item, int handle ) { +line 4343 +;4342: const char *temp; +;4343: if (!PC_String_Parse(handle, &temp)) { +ADDRFP4 4 +INDIRI4 +ARGI4 +ADDRLP4 0 +ARGP4 +ADDRLP4 4 +ADDRGP4 PC_String_Parse +CALLI4 +ASGNI4 +ADDRLP4 4 +INDIRI4 +CNSTI4 0 +NEI4 $2054 +line 4344 +;4344: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $2053 +JUMPV +LABELV $2054 +line 4346 +;4345: } +;4346: item->focusSound = DC->registerSound(temp, qfalse); +ADDRLP4 0 +INDIRP4 +ARGP4 +CNSTI4 0 +ARGI4 +ADDRLP4 8 +ADDRGP4 DC +INDIRP4 +CNSTI4 168 +ADDP4 +INDIRP4 +CALLI4 +ASGNI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 280 +ADDP4 +ADDRLP4 8 +INDIRI4 +ASGNI4 +line 4347 +;4347: return qtrue; +CNSTI4 1 +RETI4 +LABELV $2053 +endproc ItemParse_focusSound 12 8 +export ItemParse_text +proc ItemParse_text 4 8 +line 4352 +;4348:} +;4349: +;4350: +;4351:// text +;4352:qboolean ItemParse_text( itemDef_t *item, int handle ) { +line 4353 +;4353: if (!PC_String_Parse(handle, &item->text)) { +ADDRFP4 4 +INDIRI4 +ARGI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 224 +ADDP4 +ARGP4 +ADDRLP4 0 +ADDRGP4 PC_String_Parse +CALLI4 +ASGNI4 +ADDRLP4 0 +INDIRI4 +CNSTI4 0 +NEI4 $2057 +line 4354 +;4354: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $2056 +JUMPV +LABELV $2057 +line 4356 +;4355: } +;4356: return qtrue; +CNSTI4 1 +RETI4 +LABELV $2056 +endproc ItemParse_text 4 8 +export ItemParse_group +proc ItemParse_group 4 8 +line 4360 +;4357:} +;4358: +;4359:// group +;4360:qboolean ItemParse_group( itemDef_t *item, int handle ) { +line 4361 +;4361: if (!PC_String_Parse(handle, &item->window.group)) { +ADDRFP4 4 +INDIRI4 +ARGI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 36 +ADDP4 +ARGP4 +ADDRLP4 0 +ADDRGP4 PC_String_Parse +CALLI4 +ASGNI4 +ADDRLP4 0 +INDIRI4 +CNSTI4 0 +NEI4 $2060 +line 4362 +;4362: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $2059 +JUMPV +LABELV $2060 +line 4364 +;4363: } +;4364: return qtrue; +CNSTI4 1 +RETI4 +LABELV $2059 +endproc ItemParse_group 4 8 +export ItemParse_asset_model +proc ItemParse_asset_model 20 8 +line 4368 +;4365:} +;4366: +;4367:// asset_model +;4368:qboolean ItemParse_asset_model( itemDef_t *item, int handle ) { +line 4371 +;4369: const char *temp; +;4370: modelDef_t *modelPtr; +;4371: Item_ValidateTypeData(item); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRGP4 Item_ValidateTypeData +CALLV +pop +line 4372 +;4372: modelPtr = (modelDef_t*)item->typeData; +ADDRLP4 4 +ADDRFP4 0 +INDIRP4 +CNSTI4 536 +ADDP4 +INDIRP4 +ASGNP4 +line 4374 +;4373: +;4374: if (!PC_String_Parse(handle, &temp)) { +ADDRFP4 4 +INDIRI4 +ARGI4 +ADDRLP4 0 +ARGP4 +ADDRLP4 8 +ADDRGP4 PC_String_Parse +CALLI4 +ASGNI4 +ADDRLP4 8 +INDIRI4 +CNSTI4 0 +NEI4 $2063 +line 4375 +;4375: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $2062 +JUMPV +LABELV $2063 +line 4377 +;4376: } +;4377: item->asset = DC->registerModel(temp); +ADDRLP4 0 +INDIRP4 +ARGP4 +ADDRLP4 12 +ADDRGP4 DC +INDIRP4 +CNSTI4 28 +ADDP4 +INDIRP4 +CALLI4 +ASGNI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 232 +ADDP4 +ADDRLP4 12 +INDIRI4 +ASGNI4 +line 4378 +;4378: modelPtr->angle = rand() % 360; +ADDRLP4 16 +ADDRGP4 rand +CALLI4 +ASGNI4 +ADDRLP4 4 +INDIRP4 +ADDRLP4 16 +INDIRI4 +CNSTI4 360 +MODI4 +ASGNI4 +line 4379 +;4379: return qtrue; +CNSTI4 1 +RETI4 +LABELV $2062 +endproc ItemParse_asset_model 20 8 +export ItemParse_asset_shader +proc ItemParse_asset_shader 12 8 +line 4383 +;4380:} +;4381: +;4382:// asset_shader +;4383:qboolean ItemParse_asset_shader( itemDef_t *item, int handle ) { +line 4386 +;4384: const char *temp; +;4385: +;4386: if (!PC_String_Parse(handle, &temp)) { +ADDRFP4 4 +INDIRI4 +ARGI4 +ADDRLP4 0 +ARGP4 +ADDRLP4 4 +ADDRGP4 PC_String_Parse +CALLI4 +ASGNI4 +ADDRLP4 4 +INDIRI4 +CNSTI4 0 +NEI4 $2066 +line 4387 +;4387: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $2065 +JUMPV +LABELV $2066 +line 4389 +;4388: } +;4389: item->asset = DC->registerShaderNoMip(temp); +ADDRLP4 0 +INDIRP4 +ARGP4 +ADDRLP4 8 +ADDRGP4 DC +INDIRP4 +INDIRP4 +CALLI4 +ASGNI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 232 +ADDP4 +ADDRLP4 8 +INDIRI4 +ASGNI4 +line 4390 +;4390: return qtrue; +CNSTI4 1 +RETI4 +LABELV $2065 +endproc ItemParse_asset_shader 12 8 +export ItemParse_model_origin +proc ItemParse_model_origin 16 8 +line 4394 +;4391:} +;4392: +;4393:// model_origin +;4394:qboolean ItemParse_model_origin( itemDef_t *item, int handle ) { +line 4396 +;4395: modelDef_t *modelPtr; +;4396: Item_ValidateTypeData(item); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRGP4 Item_ValidateTypeData +CALLV +pop +line 4397 +;4397: modelPtr = (modelDef_t*)item->typeData; +ADDRLP4 0 +ADDRFP4 0 +INDIRP4 +CNSTI4 536 +ADDP4 +INDIRP4 +ASGNP4 +line 4399 +;4398: +;4399: if (PC_Float_Parse(handle, &modelPtr->origin[0])) { +ADDRFP4 4 +INDIRI4 +ARGI4 +ADDRLP4 0 +INDIRP4 +CNSTI4 4 +ADDP4 +ARGP4 +ADDRLP4 4 +ADDRGP4 PC_Float_Parse +CALLI4 +ASGNI4 +ADDRLP4 4 +INDIRI4 +CNSTI4 0 +EQI4 $2069 +line 4400 +;4400: if (PC_Float_Parse(handle, &modelPtr->origin[1])) { +ADDRFP4 4 +INDIRI4 +ARGI4 +ADDRLP4 0 +INDIRP4 +CNSTI4 8 +ADDP4 +ARGP4 +ADDRLP4 8 +ADDRGP4 PC_Float_Parse +CALLI4 +ASGNI4 +ADDRLP4 8 +INDIRI4 +CNSTI4 0 +EQI4 $2071 +line 4401 +;4401: if (PC_Float_Parse(handle, &modelPtr->origin[2])) { +ADDRFP4 4 +INDIRI4 +ARGI4 +ADDRLP4 0 +INDIRP4 +CNSTI4 12 +ADDP4 +ARGP4 +ADDRLP4 12 +ADDRGP4 PC_Float_Parse +CALLI4 +ASGNI4 +ADDRLP4 12 +INDIRI4 +CNSTI4 0 +EQI4 $2073 +line 4402 +;4402: return qtrue; +CNSTI4 1 +RETI4 +ADDRGP4 $2068 +JUMPV +LABELV $2073 +line 4404 +;4403: } +;4404: } +LABELV $2071 +line 4405 +;4405: } +LABELV $2069 +line 4406 +;4406: return qfalse; +CNSTI4 0 +RETI4 +LABELV $2068 +endproc ItemParse_model_origin 16 8 +export ItemParse_model_fovx +proc ItemParse_model_fovx 8 8 +line 4410 +;4407:} +;4408: +;4409:// model_fovx +;4410:qboolean ItemParse_model_fovx( itemDef_t *item, int handle ) { +line 4412 +;4411: modelDef_t *modelPtr; +;4412: Item_ValidateTypeData(item); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRGP4 Item_ValidateTypeData +CALLV +pop +line 4413 +;4413: modelPtr = (modelDef_t*)item->typeData; +ADDRLP4 0 +ADDRFP4 0 +INDIRP4 +CNSTI4 536 +ADDP4 +INDIRP4 +ASGNP4 +line 4415 +;4414: +;4415: if (!PC_Float_Parse(handle, &modelPtr->fov_x)) { +ADDRFP4 4 +INDIRI4 +ARGI4 +ADDRLP4 0 +INDIRP4 +CNSTI4 16 +ADDP4 +ARGP4 +ADDRLP4 4 +ADDRGP4 PC_Float_Parse +CALLI4 +ASGNI4 +ADDRLP4 4 +INDIRI4 +CNSTI4 0 +NEI4 $2076 +line 4416 +;4416: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $2075 +JUMPV +LABELV $2076 +line 4418 +;4417: } +;4418: return qtrue; +CNSTI4 1 +RETI4 +LABELV $2075 +endproc ItemParse_model_fovx 8 8 +export ItemParse_model_fovy +proc ItemParse_model_fovy 8 8 +line 4422 +;4419:} +;4420: +;4421:// model_fovy +;4422:qboolean ItemParse_model_fovy( itemDef_t *item, int handle ) { +line 4424 +;4423: modelDef_t *modelPtr; +;4424: Item_ValidateTypeData(item); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRGP4 Item_ValidateTypeData +CALLV +pop +line 4425 +;4425: modelPtr = (modelDef_t*)item->typeData; +ADDRLP4 0 +ADDRFP4 0 +INDIRP4 +CNSTI4 536 +ADDP4 +INDIRP4 +ASGNP4 +line 4427 +;4426: +;4427: if (!PC_Float_Parse(handle, &modelPtr->fov_y)) { +ADDRFP4 4 +INDIRI4 +ARGI4 +ADDRLP4 0 +INDIRP4 +CNSTI4 20 +ADDP4 +ARGP4 +ADDRLP4 4 +ADDRGP4 PC_Float_Parse +CALLI4 +ASGNI4 +ADDRLP4 4 +INDIRI4 +CNSTI4 0 +NEI4 $2079 +line 4428 +;4428: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $2078 +JUMPV +LABELV $2079 +line 4430 +;4429: } +;4430: return qtrue; +CNSTI4 1 +RETI4 +LABELV $2078 +endproc ItemParse_model_fovy 8 8 +export ItemParse_model_rotation +proc ItemParse_model_rotation 8 8 +line 4434 +;4431:} +;4432: +;4433:// model_rotation +;4434:qboolean ItemParse_model_rotation( itemDef_t *item, int handle ) { +line 4436 +;4435: modelDef_t *modelPtr; +;4436: Item_ValidateTypeData(item); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRGP4 Item_ValidateTypeData +CALLV +pop +line 4437 +;4437: modelPtr = (modelDef_t*)item->typeData; +ADDRLP4 0 +ADDRFP4 0 +INDIRP4 +CNSTI4 536 +ADDP4 +INDIRP4 +ASGNP4 +line 4439 +;4438: +;4439: if (!PC_Int_Parse(handle, &modelPtr->rotationSpeed)) { +ADDRFP4 4 +INDIRI4 +ARGI4 +ADDRLP4 0 +INDIRP4 +CNSTI4 24 +ADDP4 +ARGP4 +ADDRLP4 4 +ADDRGP4 PC_Int_Parse +CALLI4 +ASGNI4 +ADDRLP4 4 +INDIRI4 +CNSTI4 0 +NEI4 $2082 +line 4440 +;4440: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $2081 +JUMPV +LABELV $2082 +line 4442 +;4441: } +;4442: return qtrue; +CNSTI4 1 +RETI4 +LABELV $2081 +endproc ItemParse_model_rotation 8 8 +export ItemParse_model_angle +proc ItemParse_model_angle 8 8 +line 4446 +;4443:} +;4444: +;4445:// model_angle +;4446:qboolean ItemParse_model_angle( itemDef_t *item, int handle ) { +line 4448 +;4447: modelDef_t *modelPtr; +;4448: Item_ValidateTypeData(item); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRGP4 Item_ValidateTypeData +CALLV +pop +line 4449 +;4449: modelPtr = (modelDef_t*)item->typeData; +ADDRLP4 0 +ADDRFP4 0 +INDIRP4 +CNSTI4 536 +ADDP4 +INDIRP4 +ASGNP4 +line 4451 +;4450: +;4451: if (!PC_Int_Parse(handle, &modelPtr->angle)) { +ADDRFP4 4 +INDIRI4 +ARGI4 +ADDRLP4 0 +INDIRP4 +ARGP4 +ADDRLP4 4 +ADDRGP4 PC_Int_Parse +CALLI4 +ASGNI4 +ADDRLP4 4 +INDIRI4 +CNSTI4 0 +NEI4 $2085 +line 4452 +;4452: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $2084 +JUMPV +LABELV $2085 +line 4454 +;4453: } +;4454: return qtrue; +CNSTI4 1 +RETI4 +LABELV $2084 +endproc ItemParse_model_angle 8 8 +export ItemParse_rect +proc ItemParse_rect 4 8 +line 4458 +;4455:} +;4456: +;4457:// rect +;4458:qboolean ItemParse_rect( itemDef_t *item, int handle ) { +line 4459 +;4459: if (!PC_Rect_Parse(handle, &item->window.rectClient)) { +ADDRFP4 4 +INDIRI4 +ARGI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 16 +ADDP4 +ARGP4 +ADDRLP4 0 +ADDRGP4 PC_Rect_Parse +CALLI4 +ASGNI4 +ADDRLP4 0 +INDIRI4 +CNSTI4 0 +NEI4 $2088 +line 4460 +;4460: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $2087 +JUMPV +LABELV $2088 +line 4462 +;4461: } +;4462: return qtrue; +CNSTI4 1 +RETI4 +LABELV $2087 +endproc ItemParse_rect 4 8 +export ItemParse_style +proc ItemParse_style 4 8 +line 4466 +;4463:} +;4464: +;4465:// style +;4466:qboolean ItemParse_style( itemDef_t *item, int handle ) { +line 4467 +;4467: if (!PC_Int_Parse(handle, &item->window.style)) { +ADDRFP4 4 +INDIRI4 +ARGI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 48 +ADDP4 +ARGP4 +ADDRLP4 0 +ADDRGP4 PC_Int_Parse +CALLI4 +ASGNI4 +ADDRLP4 0 +INDIRI4 +CNSTI4 0 +NEI4 $2091 +line 4468 +;4468: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $2090 +JUMPV +LABELV $2091 +line 4470 +;4469: } +;4470: return qtrue; +CNSTI4 1 +RETI4 +LABELV $2090 +endproc ItemParse_style 4 8 +export ItemParse_decoration +proc ItemParse_decoration 4 0 +line 4474 +;4471:} +;4472: +;4473:// decoration +;4474:qboolean ItemParse_decoration( itemDef_t *item, int handle ) { +line 4475 +;4475: item->window.flags |= WINDOW_DECORATION; +ADDRLP4 0 +ADDRFP4 0 +INDIRP4 +CNSTI4 68 +ADDP4 +ASGNP4 +ADDRLP4 0 +INDIRP4 +ADDRLP4 0 +INDIRP4 +INDIRI4 +CNSTI4 16 +BORI4 +ASGNI4 +line 4476 +;4476: return qtrue; +CNSTI4 1 +RETI4 +LABELV $2093 +endproc ItemParse_decoration 4 0 +export ItemParse_notselectable +proc ItemParse_notselectable 4 4 +line 4480 +;4477:} +;4478: +;4479:// notselectable +;4480:qboolean ItemParse_notselectable( itemDef_t *item, int handle ) { +line 4482 +;4481: listBoxDef_t *listPtr; +;4482: Item_ValidateTypeData(item); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRGP4 Item_ValidateTypeData +CALLV +pop +line 4483 +;4483: listPtr = (listBoxDef_t*)item->typeData; +ADDRLP4 0 +ADDRFP4 0 +INDIRP4 +CNSTI4 536 +ADDP4 +INDIRP4 +ASGNP4 +line 4484 +;4484: if (item->type == ITEM_TYPE_LISTBOX && listPtr) { +ADDRFP4 0 +INDIRP4 +CNSTI4 196 +ADDP4 +INDIRI4 +CNSTI4 6 +NEI4 $2095 +ADDRLP4 0 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $2095 +line 4485 +;4485: listPtr->notselectable = qtrue; +ADDRLP4 0 +INDIRP4 +CNSTI4 228 +ADDP4 +CNSTI4 1 +ASGNI4 +line 4486 +;4486: } +LABELV $2095 +line 4487 +;4487: return qtrue; +CNSTI4 1 +RETI4 +LABELV $2094 +endproc ItemParse_notselectable 4 4 +export ItemParse_wrapped +proc ItemParse_wrapped 4 0 +line 4491 +;4488:} +;4489: +;4490:// manually wrapped +;4491:qboolean ItemParse_wrapped( itemDef_t *item, int handle ) { +line 4492 +;4492: item->window.flags |= WINDOW_WRAPPED; +ADDRLP4 0 +ADDRFP4 0 +INDIRP4 +CNSTI4 68 +ADDP4 +ASGNP4 +ADDRLP4 0 +INDIRP4 +ADDRLP4 0 +INDIRP4 +INDIRI4 +CNSTI4 262144 +BORI4 +ASGNI4 +line 4493 +;4493: return qtrue; +CNSTI4 1 +RETI4 +LABELV $2097 +endproc ItemParse_wrapped 4 0 +export ItemParse_autowrapped +proc ItemParse_autowrapped 4 0 +line 4497 +;4494:} +;4495: +;4496:// auto wrapped +;4497:qboolean ItemParse_autowrapped( itemDef_t *item, int handle ) { +line 4498 +;4498: item->window.flags |= WINDOW_AUTOWRAPPED; +ADDRLP4 0 +ADDRFP4 0 +INDIRP4 +CNSTI4 68 +ADDP4 +ASGNP4 +ADDRLP4 0 +INDIRP4 +ADDRLP4 0 +INDIRP4 +INDIRI4 +CNSTI4 524288 +BORI4 +ASGNI4 +line 4499 +;4499: return qtrue; +CNSTI4 1 +RETI4 +LABELV $2098 +endproc ItemParse_autowrapped 4 0 +export ItemParse_horizontalscroll +proc ItemParse_horizontalscroll 4 0 +line 4504 +;4500:} +;4501: +;4502: +;4503:// horizontalscroll +;4504:qboolean ItemParse_horizontalscroll( itemDef_t *item, int handle ) { +line 4505 +;4505: item->window.flags |= WINDOW_HORIZONTAL; +ADDRLP4 0 +ADDRFP4 0 +INDIRP4 +CNSTI4 68 +ADDP4 +ASGNP4 +ADDRLP4 0 +INDIRP4 +ADDRLP4 0 +INDIRP4 +INDIRI4 +CNSTI4 1024 +BORI4 +ASGNI4 +line 4506 +;4506: return qtrue; +CNSTI4 1 +RETI4 +LABELV $2099 +endproc ItemParse_horizontalscroll 4 0 +export ItemParse_type +proc ItemParse_type 4 8 +line 4510 +;4507:} +;4508: +;4509:// type +;4510:qboolean ItemParse_type( itemDef_t *item, int handle ) { +line 4511 +;4511: if (!PC_Int_Parse(handle, &item->type)) { +ADDRFP4 4 +INDIRI4 +ARGI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 196 +ADDP4 +ARGP4 +ADDRLP4 0 +ADDRGP4 PC_Int_Parse +CALLI4 +ASGNI4 +ADDRLP4 0 +INDIRI4 +CNSTI4 0 +NEI4 $2101 +line 4512 +;4512: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $2100 +JUMPV +LABELV $2101 +line 4514 +;4513: } +;4514: Item_ValidateTypeData(item); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRGP4 Item_ValidateTypeData +CALLV +pop +line 4515 +;4515: return qtrue; +CNSTI4 1 +RETI4 +LABELV $2100 +endproc ItemParse_type 4 8 +export ItemParse_elementwidth +proc ItemParse_elementwidth 8 8 +line 4520 +;4516:} +;4517: +;4518:// elementwidth, used for listbox image elements +;4519:// uses textalignx for storage +;4520:qboolean ItemParse_elementwidth( itemDef_t *item, int handle ) { +line 4523 +;4521: listBoxDef_t *listPtr; +;4522: +;4523: Item_ValidateTypeData(item); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRGP4 Item_ValidateTypeData +CALLV +pop +line 4524 +;4524: listPtr = (listBoxDef_t*)item->typeData; +ADDRLP4 0 +ADDRFP4 0 +INDIRP4 +CNSTI4 536 +ADDP4 +INDIRP4 +ASGNP4 +line 4525 +;4525: if (!PC_Float_Parse(handle, &listPtr->elementWidth)) { +ADDRFP4 4 +INDIRI4 +ARGI4 +ADDRLP4 0 +INDIRP4 +CNSTI4 16 +ADDP4 +ARGP4 +ADDRLP4 4 +ADDRGP4 PC_Float_Parse +CALLI4 +ASGNI4 +ADDRLP4 4 +INDIRI4 +CNSTI4 0 +NEI4 $2104 +line 4526 +;4526: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $2103 +JUMPV +LABELV $2104 +line 4528 +;4527: } +;4528: return qtrue; +CNSTI4 1 +RETI4 +LABELV $2103 +endproc ItemParse_elementwidth 8 8 +export ItemParse_elementheight +proc ItemParse_elementheight 8 8 +line 4533 +;4529:} +;4530: +;4531:// elementheight, used for listbox image elements +;4532:// uses textaligny for storage +;4533:qboolean ItemParse_elementheight( itemDef_t *item, int handle ) { +line 4536 +;4534: listBoxDef_t *listPtr; +;4535: +;4536: Item_ValidateTypeData(item); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRGP4 Item_ValidateTypeData +CALLV +pop +line 4537 +;4537: listPtr = (listBoxDef_t*)item->typeData; +ADDRLP4 0 +ADDRFP4 0 +INDIRP4 +CNSTI4 536 +ADDP4 +INDIRP4 +ASGNP4 +line 4538 +;4538: if (!PC_Float_Parse(handle, &listPtr->elementHeight)) { +ADDRFP4 4 +INDIRI4 +ARGI4 +ADDRLP4 0 +INDIRP4 +CNSTI4 20 +ADDP4 +ARGP4 +ADDRLP4 4 +ADDRGP4 PC_Float_Parse +CALLI4 +ASGNI4 +ADDRLP4 4 +INDIRI4 +CNSTI4 0 +NEI4 $2107 +line 4539 +;4539: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $2106 +JUMPV +LABELV $2107 +line 4541 +;4540: } +;4541: return qtrue; +CNSTI4 1 +RETI4 +LABELV $2106 +endproc ItemParse_elementheight 8 8 +export ItemParse_feeder +proc ItemParse_feeder 4 8 +line 4545 +;4542:} +;4543: +;4544:// feeder +;4545:qboolean ItemParse_feeder( itemDef_t *item, int handle ) { +line 4546 +;4546: if (!PC_Float_Parse(handle, &item->special)) { +ADDRFP4 4 +INDIRI4 +ARGI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 528 +ADDP4 +ARGP4 +ADDRLP4 0 +ADDRGP4 PC_Float_Parse +CALLI4 +ASGNI4 +ADDRLP4 0 +INDIRI4 +CNSTI4 0 +NEI4 $2110 +line 4547 +;4547: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $2109 +JUMPV +LABELV $2110 +line 4549 +;4548: } +;4549: return qtrue; +CNSTI4 1 +RETI4 +LABELV $2109 +endproc ItemParse_feeder 4 8 +export ItemParse_elementtype +proc ItemParse_elementtype 8 8 +line 4554 +;4550:} +;4551: +;4552:// elementtype, used to specify what type of elements a listbox contains +;4553:// uses textstyle for storage +;4554:qboolean ItemParse_elementtype( itemDef_t *item, int handle ) { +line 4557 +;4555: listBoxDef_t *listPtr; +;4556: +;4557: Item_ValidateTypeData(item); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRGP4 Item_ValidateTypeData +CALLV +pop +line 4558 +;4558: if (!item->typeData) +ADDRFP4 0 +INDIRP4 +CNSTI4 536 +ADDP4 +INDIRP4 +CVPU4 4 +CNSTU4 0 +NEU4 $2113 +line 4559 +;4559: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $2112 +JUMPV +LABELV $2113 +line 4560 +;4560: listPtr = (listBoxDef_t*)item->typeData; +ADDRLP4 0 +ADDRFP4 0 +INDIRP4 +CNSTI4 536 +ADDP4 +INDIRP4 +ASGNP4 +line 4561 +;4561: if (!PC_Int_Parse(handle, &listPtr->elementStyle)) { +ADDRFP4 4 +INDIRI4 +ARGI4 +ADDRLP4 0 +INDIRP4 +CNSTI4 24 +ADDP4 +ARGP4 +ADDRLP4 4 +ADDRGP4 PC_Int_Parse +CALLI4 +ASGNI4 +ADDRLP4 4 +INDIRI4 +CNSTI4 0 +NEI4 $2115 +line 4562 +;4562: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $2112 +JUMPV +LABELV $2115 +line 4564 +;4563: } +;4564: return qtrue; +CNSTI4 1 +RETI4 +LABELV $2112 +endproc ItemParse_elementtype 8 8 +export ItemParse_columns +proc ItemParse_columns 40 8 +line 4568 +;4565:} +;4566: +;4567:// columns sets a number of columns and an x pos and width per.. +;4568:qboolean ItemParse_columns( itemDef_t *item, int handle ) { +line 4572 +;4569: int num, i; +;4570: listBoxDef_t *listPtr; +;4571: +;4572: Item_ValidateTypeData(item); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRGP4 Item_ValidateTypeData +CALLV +pop +line 4573 +;4573: if (!item->typeData) +ADDRFP4 0 +INDIRP4 +CNSTI4 536 +ADDP4 +INDIRP4 +CVPU4 4 +CNSTU4 0 +NEU4 $2118 +line 4574 +;4574: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $2117 +JUMPV +LABELV $2118 +line 4575 +;4575: listPtr = (listBoxDef_t*)item->typeData; +ADDRLP4 4 +ADDRFP4 0 +INDIRP4 +CNSTI4 536 +ADDP4 +INDIRP4 +ASGNP4 +line 4576 +;4576: if (PC_Int_Parse(handle, &num)) { +ADDRFP4 4 +INDIRI4 +ARGI4 +ADDRLP4 8 +ARGP4 +ADDRLP4 12 +ADDRGP4 PC_Int_Parse +CALLI4 +ASGNI4 +ADDRLP4 12 +INDIRI4 +CNSTI4 0 +EQI4 $2120 +line 4577 +;4577: if (num > MAX_LB_COLUMNS) { +ADDRLP4 8 +INDIRI4 +CNSTI4 16 +LEI4 $2122 +line 4578 +;4578: num = MAX_LB_COLUMNS; +ADDRLP4 8 +CNSTI4 16 +ASGNI4 +line 4579 +;4579: } +LABELV $2122 +line 4580 +;4580: listPtr->numColumns = num; +ADDRLP4 4 +INDIRP4 +CNSTI4 28 +ADDP4 +ADDRLP4 8 +INDIRI4 +ASGNI4 +line 4581 +;4581: for (i = 0; i < num; i++) { +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +ADDRGP4 $2127 +JUMPV +LABELV $2124 +line 4584 +;4582: int pos, width, maxChars; +;4583: +;4584: if (PC_Int_Parse(handle, &pos) && PC_Int_Parse(handle, &width) && PC_Int_Parse(handle, &maxChars)) { +ADDRFP4 4 +INDIRI4 +ARGI4 +ADDRLP4 16 +ARGP4 +ADDRLP4 28 +ADDRGP4 PC_Int_Parse +CALLI4 +ASGNI4 +ADDRLP4 28 +INDIRI4 +CNSTI4 0 +EQI4 $2128 +ADDRFP4 4 +INDIRI4 +ARGI4 +ADDRLP4 20 +ARGP4 +ADDRLP4 32 +ADDRGP4 PC_Int_Parse +CALLI4 +ASGNI4 +ADDRLP4 32 +INDIRI4 +CNSTI4 0 +EQI4 $2128 +ADDRFP4 4 +INDIRI4 +ARGI4 +ADDRLP4 24 +ARGP4 +ADDRLP4 36 +ADDRGP4 PC_Int_Parse +CALLI4 +ASGNI4 +ADDRLP4 36 +INDIRI4 +CNSTI4 0 +EQI4 $2128 +line 4585 +;4585: listPtr->columnInfo[i].pos = pos; +CNSTI4 12 +ADDRLP4 0 +INDIRI4 +MULI4 +ADDRLP4 4 +INDIRP4 +CNSTI4 32 +ADDP4 +ADDP4 +ADDRLP4 16 +INDIRI4 +ASGNI4 +line 4586 +;4586: listPtr->columnInfo[i].width = width; +CNSTI4 12 +ADDRLP4 0 +INDIRI4 +MULI4 +ADDRLP4 4 +INDIRP4 +CNSTI4 32 +ADDP4 +ADDP4 +CNSTI4 4 +ADDP4 +ADDRLP4 20 +INDIRI4 +ASGNI4 +line 4587 +;4587: listPtr->columnInfo[i].maxChars = maxChars; +CNSTI4 12 +ADDRLP4 0 +INDIRI4 +MULI4 +ADDRLP4 4 +INDIRP4 +CNSTI4 32 +ADDP4 +ADDP4 +CNSTI4 8 +ADDP4 +ADDRLP4 24 +INDIRI4 +ASGNI4 +line 4588 +;4588: } else { +ADDRGP4 $2129 +JUMPV +LABELV $2128 +line 4589 +;4589: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $2117 +JUMPV +LABELV $2129 +line 4591 +;4590: } +;4591: } +LABELV $2125 +line 4581 +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +LABELV $2127 +ADDRLP4 0 +INDIRI4 +ADDRLP4 8 +INDIRI4 +LTI4 $2124 +line 4592 +;4592: } else { +ADDRGP4 $2121 +JUMPV +LABELV $2120 +line 4593 +;4593: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $2117 +JUMPV +LABELV $2121 +line 4595 +;4594: } +;4595: return qtrue; +CNSTI4 1 +RETI4 +LABELV $2117 +endproc ItemParse_columns 40 8 +export ItemParse_border +proc ItemParse_border 4 8 +line 4598 +;4596:} +;4597: +;4598:qboolean ItemParse_border( itemDef_t *item, int handle ) { +line 4599 +;4599: if (!PC_Int_Parse(handle, &item->window.border)) { +ADDRFP4 4 +INDIRI4 +ARGI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 52 +ADDP4 +ARGP4 +ADDRLP4 0 +ADDRGP4 PC_Int_Parse +CALLI4 +ASGNI4 +ADDRLP4 0 +INDIRI4 +CNSTI4 0 +NEI4 $2131 +line 4600 +;4600: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $2130 +JUMPV +LABELV $2131 +line 4602 +;4601: } +;4602: return qtrue; +CNSTI4 1 +RETI4 +LABELV $2130 +endproc ItemParse_border 4 8 +export ItemParse_bordersize +proc ItemParse_bordersize 4 8 +line 4605 +;4603:} +;4604: +;4605:qboolean ItemParse_bordersize( itemDef_t *item, int handle ) { +line 4606 +;4606: if (!PC_Float_Parse(handle, &item->window.borderSize)) { +ADDRFP4 4 +INDIRI4 +ARGI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 64 +ADDP4 +ARGP4 +ADDRLP4 0 +ADDRGP4 PC_Float_Parse +CALLI4 +ASGNI4 +ADDRLP4 0 +INDIRI4 +CNSTI4 0 +NEI4 $2134 +line 4607 +;4607: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $2133 +JUMPV +LABELV $2134 +line 4609 +;4608: } +;4609: return qtrue; +CNSTI4 1 +RETI4 +LABELV $2133 +endproc ItemParse_bordersize 4 8 +export ItemParse_visible +proc ItemParse_visible 12 8 +line 4612 +;4610:} +;4611: +;4612:qboolean ItemParse_visible( itemDef_t *item, int handle ) { +line 4615 +;4613: int i; +;4614: +;4615: if (!PC_Int_Parse(handle, &i)) { +ADDRFP4 4 +INDIRI4 +ARGI4 +ADDRLP4 0 +ARGP4 +ADDRLP4 4 +ADDRGP4 PC_Int_Parse +CALLI4 +ASGNI4 +ADDRLP4 4 +INDIRI4 +CNSTI4 0 +NEI4 $2137 +line 4616 +;4616: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $2136 +JUMPV +LABELV $2137 +line 4618 +;4617: } +;4618: if (i) { +ADDRLP4 0 +INDIRI4 +CNSTI4 0 +EQI4 $2139 +line 4619 +;4619: item->window.flags |= WINDOW_VISIBLE; +ADDRLP4 8 +ADDRFP4 0 +INDIRP4 +CNSTI4 68 +ADDP4 +ASGNP4 +ADDRLP4 8 +INDIRP4 +ADDRLP4 8 +INDIRP4 +INDIRI4 +CNSTI4 4 +BORI4 +ASGNI4 +line 4620 +;4620: } +LABELV $2139 +line 4621 +;4621: return qtrue; +CNSTI4 1 +RETI4 +LABELV $2136 +endproc ItemParse_visible 12 8 +export ItemParse_ownerdraw +proc ItemParse_ownerdraw 4 8 +line 4624 +;4622:} +;4623: +;4624:qboolean ItemParse_ownerdraw( itemDef_t *item, int handle ) { +line 4625 +;4625: if (!PC_Int_Parse(handle, &item->window.ownerDraw)) { +ADDRFP4 4 +INDIRI4 +ARGI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 56 +ADDP4 +ARGP4 +ADDRLP4 0 +ADDRGP4 PC_Int_Parse +CALLI4 +ASGNI4 +ADDRLP4 0 +INDIRI4 +CNSTI4 0 +NEI4 $2142 +line 4626 +;4626: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $2141 +JUMPV +LABELV $2142 +line 4628 +;4627: } +;4628: item->type = ITEM_TYPE_OWNERDRAW; +ADDRFP4 0 +INDIRP4 +CNSTI4 196 +ADDP4 +CNSTI4 8 +ASGNI4 +line 4629 +;4629: return qtrue; +CNSTI4 1 +RETI4 +LABELV $2141 +endproc ItemParse_ownerdraw 4 8 +export ItemParse_align +proc ItemParse_align 4 8 +line 4632 +;4630:} +;4631: +;4632:qboolean ItemParse_align( itemDef_t *item, int handle ) { +line 4633 +;4633: if (!PC_Int_Parse(handle, &item->alignment)) { +ADDRFP4 4 +INDIRI4 +ARGI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 200 +ADDP4 +ARGP4 +ADDRLP4 0 +ADDRGP4 PC_Int_Parse +CALLI4 +ASGNI4 +ADDRLP4 0 +INDIRI4 +CNSTI4 0 +NEI4 $2145 +line 4634 +;4634: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $2144 +JUMPV +LABELV $2145 +line 4636 +;4635: } +;4636: return qtrue; +CNSTI4 1 +RETI4 +LABELV $2144 +endproc ItemParse_align 4 8 +export ItemParse_textalign +proc ItemParse_textalign 4 8 +line 4639 +;4637:} +;4638: +;4639:qboolean ItemParse_textalign( itemDef_t *item, int handle ) { +line 4640 +;4640: if (!PC_Int_Parse(handle, &item->textalignment)) { +ADDRFP4 4 +INDIRI4 +ARGI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 204 +ADDP4 +ARGP4 +ADDRLP4 0 +ADDRGP4 PC_Int_Parse +CALLI4 +ASGNI4 +ADDRLP4 0 +INDIRI4 +CNSTI4 0 +NEI4 $2148 +line 4641 +;4641: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $2147 +JUMPV +LABELV $2148 +line 4643 +;4642: } +;4643: return qtrue; +CNSTI4 1 +RETI4 +LABELV $2147 +endproc ItemParse_textalign 4 8 +export ItemParse_textalignx +proc ItemParse_textalignx 4 8 +line 4646 +;4644:} +;4645: +;4646:qboolean ItemParse_textalignx( itemDef_t *item, int handle ) { +line 4647 +;4647: if (!PC_Float_Parse(handle, &item->textalignx)) { +ADDRFP4 4 +INDIRI4 +ARGI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 208 +ADDP4 +ARGP4 +ADDRLP4 0 +ADDRGP4 PC_Float_Parse +CALLI4 +ASGNI4 +ADDRLP4 0 +INDIRI4 +CNSTI4 0 +NEI4 $2151 +line 4648 +;4648: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $2150 +JUMPV +LABELV $2151 +line 4650 +;4649: } +;4650: return qtrue; +CNSTI4 1 +RETI4 +LABELV $2150 +endproc ItemParse_textalignx 4 8 +export ItemParse_textaligny +proc ItemParse_textaligny 4 8 +line 4653 +;4651:} +;4652: +;4653:qboolean ItemParse_textaligny( itemDef_t *item, int handle ) { +line 4654 +;4654: if (!PC_Float_Parse(handle, &item->textaligny)) { +ADDRFP4 4 +INDIRI4 +ARGI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 212 +ADDP4 +ARGP4 +ADDRLP4 0 +ADDRGP4 PC_Float_Parse +CALLI4 +ASGNI4 +ADDRLP4 0 +INDIRI4 +CNSTI4 0 +NEI4 $2154 +line 4655 +;4655: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $2153 +JUMPV +LABELV $2154 +line 4657 +;4656: } +;4657: return qtrue; +CNSTI4 1 +RETI4 +LABELV $2153 +endproc ItemParse_textaligny 4 8 +export ItemParse_textscale +proc ItemParse_textscale 4 8 +line 4660 +;4658:} +;4659: +;4660:qboolean ItemParse_textscale( itemDef_t *item, int handle ) { +line 4661 +;4661: if (!PC_Float_Parse(handle, &item->textscale)) { +ADDRFP4 4 +INDIRI4 +ARGI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 216 +ADDP4 +ARGP4 +ADDRLP4 0 +ADDRGP4 PC_Float_Parse +CALLI4 +ASGNI4 +ADDRLP4 0 +INDIRI4 +CNSTI4 0 +NEI4 $2157 +line 4662 +;4662: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $2156 +JUMPV +LABELV $2157 +line 4664 +;4663: } +;4664: return qtrue; +CNSTI4 1 +RETI4 +LABELV $2156 +endproc ItemParse_textscale 4 8 +export ItemParse_textstyle +proc ItemParse_textstyle 4 8 +line 4667 +;4665:} +;4666: +;4667:qboolean ItemParse_textstyle( itemDef_t *item, int handle ) { +line 4668 +;4668: if (!PC_Int_Parse(handle, &item->textStyle)) { +ADDRFP4 4 +INDIRI4 +ARGI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 220 +ADDP4 +ARGP4 +ADDRLP4 0 +ADDRGP4 PC_Int_Parse +CALLI4 +ASGNI4 +ADDRLP4 0 +INDIRI4 +CNSTI4 0 +NEI4 $2160 +line 4669 +;4669: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $2159 +JUMPV +LABELV $2160 +line 4671 +;4670: } +;4671: return qtrue; +CNSTI4 1 +RETI4 +LABELV $2159 +endproc ItemParse_textstyle 4 8 +export ItemParse_backcolor +proc ItemParse_backcolor 12 8 +line 4674 +;4672:} +;4673: +;4674:qboolean ItemParse_backcolor( itemDef_t *item, int handle ) { +line 4678 +;4675: int i; +;4676: float f; +;4677: +;4678: for (i = 0; i < 4; i++) { +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +LABELV $2163 +line 4679 +;4679: if (!PC_Float_Parse(handle, &f)) { +ADDRFP4 4 +INDIRI4 +ARGI4 +ADDRLP4 4 +ARGP4 +ADDRLP4 8 +ADDRGP4 PC_Float_Parse +CALLI4 +ASGNI4 +ADDRLP4 8 +INDIRI4 +CNSTI4 0 +NEI4 $2167 +line 4680 +;4680: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $2162 +JUMPV +LABELV $2167 +line 4682 +;4681: } +;4682: item->window.backColor[i] = f; +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 128 +ADDP4 +ADDP4 +ADDRLP4 4 +INDIRF4 +ASGNF4 +line 4683 +;4683: } +LABELV $2164 +line 4678 +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +ADDRLP4 0 +INDIRI4 +CNSTI4 4 +LTI4 $2163 +line 4684 +;4684: return qtrue; +CNSTI4 1 +RETI4 +LABELV $2162 +endproc ItemParse_backcolor 12 8 +export ItemParse_forecolor +proc ItemParse_forecolor 16 8 +line 4687 +;4685:} +;4686: +;4687:qboolean ItemParse_forecolor( itemDef_t *item, int handle ) { +line 4691 +;4688: int i; +;4689: float f; +;4690: +;4691: for (i = 0; i < 4; i++) { +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +LABELV $2170 +line 4692 +;4692: if (!PC_Float_Parse(handle, &f)) { +ADDRFP4 4 +INDIRI4 +ARGI4 +ADDRLP4 4 +ARGP4 +ADDRLP4 8 +ADDRGP4 PC_Float_Parse +CALLI4 +ASGNI4 +ADDRLP4 8 +INDIRI4 +CNSTI4 0 +NEI4 $2174 +line 4693 +;4693: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $2169 +JUMPV +LABELV $2174 +line 4695 +;4694: } +;4695: item->window.foreColor[i] = f; +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 112 +ADDP4 +ADDP4 +ADDRLP4 4 +INDIRF4 +ASGNF4 +line 4696 +;4696: item->window.flags |= WINDOW_FORECOLORSET; +ADDRLP4 12 +ADDRFP4 0 +INDIRP4 +CNSTI4 68 +ADDP4 +ASGNP4 +ADDRLP4 12 +INDIRP4 +ADDRLP4 12 +INDIRP4 +INDIRI4 +CNSTI4 512 +BORI4 +ASGNI4 +line 4697 +;4697: } +LABELV $2171 +line 4691 +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +ADDRLP4 0 +INDIRI4 +CNSTI4 4 +LTI4 $2170 +line 4698 +;4698: return qtrue; +CNSTI4 1 +RETI4 +LABELV $2169 +endproc ItemParse_forecolor 16 8 +export ItemParse_bordercolor +proc ItemParse_bordercolor 12 8 +line 4701 +;4699:} +;4700: +;4701:qboolean ItemParse_bordercolor( itemDef_t *item, int handle ) { +line 4705 +;4702: int i; +;4703: float f; +;4704: +;4705: for (i = 0; i < 4; i++) { +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +LABELV $2177 +line 4706 +;4706: if (!PC_Float_Parse(handle, &f)) { +ADDRFP4 4 +INDIRI4 +ARGI4 +ADDRLP4 4 +ARGP4 +ADDRLP4 8 +ADDRGP4 PC_Float_Parse +CALLI4 +ASGNI4 +ADDRLP4 8 +INDIRI4 +CNSTI4 0 +NEI4 $2181 +line 4707 +;4707: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $2176 +JUMPV +LABELV $2181 +line 4709 +;4708: } +;4709: item->window.borderColor[i] = f; +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 144 +ADDP4 +ADDP4 +ADDRLP4 4 +INDIRF4 +ASGNF4 +line 4710 +;4710: } +LABELV $2178 +line 4705 +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +ADDRLP4 0 +INDIRI4 +CNSTI4 4 +LTI4 $2177 +line 4711 +;4711: return qtrue; +CNSTI4 1 +RETI4 +LABELV $2176 +endproc ItemParse_bordercolor 12 8 +export ItemParse_outlinecolor +proc ItemParse_outlinecolor 4 8 +line 4714 +;4712:} +;4713: +;4714:qboolean ItemParse_outlinecolor( itemDef_t *item, int handle ) { +line 4715 +;4715: if (!PC_Color_Parse(handle, &item->window.outlineColor)){ +ADDRFP4 4 +INDIRI4 +ARGI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 160 +ADDP4 +ARGP4 +ADDRLP4 0 +ADDRGP4 PC_Color_Parse +CALLI4 +ASGNI4 +ADDRLP4 0 +INDIRI4 +CNSTI4 0 +NEI4 $2184 +line 4716 +;4716: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $2183 +JUMPV +LABELV $2184 +line 4718 +;4717: } +;4718: return qtrue; +CNSTI4 1 +RETI4 +LABELV $2183 +endproc ItemParse_outlinecolor 4 8 +export ItemParse_background +proc ItemParse_background 12 8 +line 4721 +;4719:} +;4720: +;4721:qboolean ItemParse_background( itemDef_t *item, int handle ) { +line 4724 +;4722: const char *temp; +;4723: +;4724: if (!PC_String_Parse(handle, &temp)) { +ADDRFP4 4 +INDIRI4 +ARGI4 +ADDRLP4 0 +ARGP4 +ADDRLP4 4 +ADDRGP4 PC_String_Parse +CALLI4 +ASGNI4 +ADDRLP4 4 +INDIRI4 +CNSTI4 0 +NEI4 $2187 +line 4725 +;4725: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $2186 +JUMPV +LABELV $2187 +line 4727 +;4726: } +;4727: item->window.background = DC->registerShaderNoMip(temp); +ADDRLP4 0 +INDIRP4 +ARGP4 +ADDRLP4 8 +ADDRGP4 DC +INDIRP4 +INDIRP4 +CALLI4 +ASGNI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 176 +ADDP4 +ADDRLP4 8 +INDIRI4 +ASGNI4 +line 4728 +;4728: return qtrue; +CNSTI4 1 +RETI4 +LABELV $2186 +endproc ItemParse_background 12 8 +export ItemParse_cinematic +proc ItemParse_cinematic 4 8 +line 4731 +;4729:} +;4730: +;4731:qboolean ItemParse_cinematic( itemDef_t *item, int handle ) { +line 4732 +;4732: if (!PC_String_Parse(handle, &item->window.cinematicName)) { +ADDRFP4 4 +INDIRI4 +ARGI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 40 +ADDP4 +ARGP4 +ADDRLP4 0 +ADDRGP4 PC_String_Parse +CALLI4 +ASGNI4 +ADDRLP4 0 +INDIRI4 +CNSTI4 0 +NEI4 $2190 +line 4733 +;4733: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $2189 +JUMPV +LABELV $2190 +line 4735 +;4734: } +;4735: return qtrue; +CNSTI4 1 +RETI4 +LABELV $2189 +endproc ItemParse_cinematic 4 8 +export ItemParse_doubleClick +proc ItemParse_doubleClick 8 8 +line 4738 +;4736:} +;4737: +;4738:qboolean ItemParse_doubleClick( itemDef_t *item, int handle ) { +line 4741 +;4739: listBoxDef_t *listPtr; +;4740: +;4741: Item_ValidateTypeData(item); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRGP4 Item_ValidateTypeData +CALLV +pop +line 4742 +;4742: if (!item->typeData) { +ADDRFP4 0 +INDIRP4 +CNSTI4 536 +ADDP4 +INDIRP4 +CVPU4 4 +CNSTU4 0 +NEU4 $2193 +line 4743 +;4743: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $2192 +JUMPV +LABELV $2193 +line 4746 +;4744: } +;4745: +;4746: listPtr = (listBoxDef_t*)item->typeData; +ADDRLP4 0 +ADDRFP4 0 +INDIRP4 +CNSTI4 536 +ADDP4 +INDIRP4 +ASGNP4 +line 4748 +;4747: +;4748: if (!PC_Script_Parse(handle, &listPtr->doubleClick)) { +ADDRFP4 4 +INDIRI4 +ARGI4 +ADDRLP4 0 +INDIRP4 +CNSTI4 224 +ADDP4 +ARGP4 +ADDRLP4 4 +ADDRGP4 PC_Script_Parse +CALLI4 +ASGNI4 +ADDRLP4 4 +INDIRI4 +CNSTI4 0 +NEI4 $2195 +line 4749 +;4749: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $2192 +JUMPV +LABELV $2195 +line 4751 +;4750: } +;4751: return qtrue; +CNSTI4 1 +RETI4 +LABELV $2192 +endproc ItemParse_doubleClick 8 8 +export ItemParse_onFocus +proc ItemParse_onFocus 4 8 +line 4754 +;4752:} +;4753: +;4754:qboolean ItemParse_onFocus( itemDef_t *item, int handle ) { +line 4755 +;4755: if (!PC_Script_Parse(handle, &item->onFocus)) { +ADDRFP4 4 +INDIRI4 +ARGI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 256 +ADDP4 +ARGP4 +ADDRLP4 0 +ADDRGP4 PC_Script_Parse +CALLI4 +ASGNI4 +ADDRLP4 0 +INDIRI4 +CNSTI4 0 +NEI4 $2198 +line 4756 +;4756: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $2197 +JUMPV +LABELV $2198 +line 4758 +;4757: } +;4758: return qtrue; +CNSTI4 1 +RETI4 +LABELV $2197 +endproc ItemParse_onFocus 4 8 +export ItemParse_leaveFocus +proc ItemParse_leaveFocus 4 8 +line 4761 +;4759:} +;4760: +;4761:qboolean ItemParse_leaveFocus( itemDef_t *item, int handle ) { +line 4762 +;4762: if (!PC_Script_Parse(handle, &item->leaveFocus)) { +ADDRFP4 4 +INDIRI4 +ARGI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 260 +ADDP4 +ARGP4 +ADDRLP4 0 +ADDRGP4 PC_Script_Parse +CALLI4 +ASGNI4 +ADDRLP4 0 +INDIRI4 +CNSTI4 0 +NEI4 $2201 +line 4763 +;4763: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $2200 +JUMPV +LABELV $2201 +line 4765 +;4764: } +;4765: return qtrue; +CNSTI4 1 +RETI4 +LABELV $2200 +endproc ItemParse_leaveFocus 4 8 +export ItemParse_mouseEnter +proc ItemParse_mouseEnter 4 8 +line 4768 +;4766:} +;4767: +;4768:qboolean ItemParse_mouseEnter( itemDef_t *item, int handle ) { +line 4769 +;4769: if (!PC_Script_Parse(handle, &item->mouseEnter)) { +ADDRFP4 4 +INDIRI4 +ARGI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 244 +ADDP4 +ARGP4 +ADDRLP4 0 +ADDRGP4 PC_Script_Parse +CALLI4 +ASGNI4 +ADDRLP4 0 +INDIRI4 +CNSTI4 0 +NEI4 $2204 +line 4770 +;4770: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $2203 +JUMPV +LABELV $2204 +line 4772 +;4771: } +;4772: return qtrue; +CNSTI4 1 +RETI4 +LABELV $2203 +endproc ItemParse_mouseEnter 4 8 +export ItemParse_mouseExit +proc ItemParse_mouseExit 4 8 +line 4775 +;4773:} +;4774: +;4775:qboolean ItemParse_mouseExit( itemDef_t *item, int handle ) { +line 4776 +;4776: if (!PC_Script_Parse(handle, &item->mouseExit)) { +ADDRFP4 4 +INDIRI4 +ARGI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 248 +ADDP4 +ARGP4 +ADDRLP4 0 +ADDRGP4 PC_Script_Parse +CALLI4 +ASGNI4 +ADDRLP4 0 +INDIRI4 +CNSTI4 0 +NEI4 $2207 +line 4777 +;4777: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $2206 +JUMPV +LABELV $2207 +line 4779 +;4778: } +;4779: return qtrue; +CNSTI4 1 +RETI4 +LABELV $2206 +endproc ItemParse_mouseExit 4 8 +export ItemParse_mouseEnterText +proc ItemParse_mouseEnterText 4 8 +line 4782 +;4780:} +;4781: +;4782:qboolean ItemParse_mouseEnterText( itemDef_t *item, int handle ) { +line 4783 +;4783: if (!PC_Script_Parse(handle, &item->mouseEnterText)) { +ADDRFP4 4 +INDIRI4 +ARGI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 236 +ADDP4 +ARGP4 +ADDRLP4 0 +ADDRGP4 PC_Script_Parse +CALLI4 +ASGNI4 +ADDRLP4 0 +INDIRI4 +CNSTI4 0 +NEI4 $2210 +line 4784 +;4784: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $2209 +JUMPV +LABELV $2210 +line 4786 +;4785: } +;4786: return qtrue; +CNSTI4 1 +RETI4 +LABELV $2209 +endproc ItemParse_mouseEnterText 4 8 +export ItemParse_mouseExitText +proc ItemParse_mouseExitText 4 8 +line 4789 +;4787:} +;4788: +;4789:qboolean ItemParse_mouseExitText( itemDef_t *item, int handle ) { +line 4790 +;4790: if (!PC_Script_Parse(handle, &item->mouseExitText)) { +ADDRFP4 4 +INDIRI4 +ARGI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 240 +ADDP4 +ARGP4 +ADDRLP4 0 +ADDRGP4 PC_Script_Parse +CALLI4 +ASGNI4 +ADDRLP4 0 +INDIRI4 +CNSTI4 0 +NEI4 $2213 +line 4791 +;4791: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $2212 +JUMPV +LABELV $2213 +line 4793 +;4792: } +;4793: return qtrue; +CNSTI4 1 +RETI4 +LABELV $2212 +endproc ItemParse_mouseExitText 4 8 +export ItemParse_action +proc ItemParse_action 4 8 +line 4796 +;4794:} +;4795: +;4796:qboolean ItemParse_action( itemDef_t *item, int handle ) { +line 4797 +;4797: if (!PC_Script_Parse(handle, &item->action)) { +ADDRFP4 4 +INDIRI4 +ARGI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 252 +ADDP4 +ARGP4 +ADDRLP4 0 +ADDRGP4 PC_Script_Parse +CALLI4 +ASGNI4 +ADDRLP4 0 +INDIRI4 +CNSTI4 0 +NEI4 $2216 +line 4798 +;4798: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $2215 +JUMPV +LABELV $2216 +line 4800 +;4799: } +;4800: return qtrue; +CNSTI4 1 +RETI4 +LABELV $2215 +endproc ItemParse_action 4 8 +export ItemParse_special +proc ItemParse_special 4 8 +line 4803 +;4801:} +;4802: +;4803:qboolean ItemParse_special( itemDef_t *item, int handle ) { +line 4804 +;4804: if (!PC_Float_Parse(handle, &item->special)) { +ADDRFP4 4 +INDIRI4 +ARGI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 528 +ADDP4 +ARGP4 +ADDRLP4 0 +ADDRGP4 PC_Float_Parse +CALLI4 +ASGNI4 +ADDRLP4 0 +INDIRI4 +CNSTI4 0 +NEI4 $2219 +line 4805 +;4805: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $2218 +JUMPV +LABELV $2219 +line 4807 +;4806: } +;4807: return qtrue; +CNSTI4 1 +RETI4 +LABELV $2218 +endproc ItemParse_special 4 8 +export ItemParse_cvarTest +proc ItemParse_cvarTest 4 8 +line 4810 +;4808:} +;4809: +;4810:qboolean ItemParse_cvarTest( itemDef_t *item, int handle ) { +line 4811 +;4811: if (!PC_String_Parse(handle, &item->cvarTest)) { +ADDRFP4 4 +INDIRI4 +ARGI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 268 +ADDP4 +ARGP4 +ADDRLP4 0 +ADDRGP4 PC_String_Parse +CALLI4 +ASGNI4 +ADDRLP4 0 +INDIRI4 +CNSTI4 0 +NEI4 $2222 +line 4812 +;4812: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $2221 +JUMPV +LABELV $2222 +line 4814 +;4813: } +;4814: return qtrue; +CNSTI4 1 +RETI4 +LABELV $2221 +endproc ItemParse_cvarTest 4 8 +export ItemParse_cvar +proc ItemParse_cvar 8 8 +line 4817 +;4815:} +;4816: +;4817:qboolean ItemParse_cvar( itemDef_t *item, int handle ) { +line 4820 +;4818: editFieldDef_t *editPtr; +;4819: +;4820: Item_ValidateTypeData(item); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRGP4 Item_ValidateTypeData +CALLV +pop +line 4821 +;4821: if (!PC_String_Parse(handle, &item->cvar)) { +ADDRFP4 4 +INDIRI4 +ARGI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 264 +ADDP4 +ARGP4 +ADDRLP4 4 +ADDRGP4 PC_String_Parse +CALLI4 +ASGNI4 +ADDRLP4 4 +INDIRI4 +CNSTI4 0 +NEI4 $2225 +line 4822 +;4822: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $2224 +JUMPV +LABELV $2225 +line 4824 +;4823: } +;4824: if (item->typeData) { +ADDRFP4 0 +INDIRP4 +CNSTI4 536 +ADDP4 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $2227 +line 4825 +;4825: editPtr = (editFieldDef_t*)item->typeData; +ADDRLP4 0 +ADDRFP4 0 +INDIRP4 +CNSTI4 536 +ADDP4 +INDIRP4 +ASGNP4 +line 4826 +;4826: editPtr->minVal = -1; +ADDRLP4 0 +INDIRP4 +CNSTF4 3212836864 +ASGNF4 +line 4827 +;4827: editPtr->maxVal = -1; +ADDRLP4 0 +INDIRP4 +CNSTI4 4 +ADDP4 +CNSTF4 3212836864 +ASGNF4 +line 4828 +;4828: editPtr->defVal = -1; +ADDRLP4 0 +INDIRP4 +CNSTI4 8 +ADDP4 +CNSTF4 3212836864 +ASGNF4 +line 4829 +;4829: } +LABELV $2227 +line 4830 +;4830: return qtrue; +CNSTI4 1 +RETI4 +LABELV $2224 +endproc ItemParse_cvar 8 8 +export ItemParse_maxChars +proc ItemParse_maxChars 12 8 +line 4833 +;4831:} +;4832: +;4833:qboolean ItemParse_maxChars( itemDef_t *item, int handle ) { +line 4837 +;4834: editFieldDef_t *editPtr; +;4835: int maxChars; +;4836: +;4837: Item_ValidateTypeData(item); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRGP4 Item_ValidateTypeData +CALLV +pop +line 4838 +;4838: if (!item->typeData) +ADDRFP4 0 +INDIRP4 +CNSTI4 536 +ADDP4 +INDIRP4 +CVPU4 4 +CNSTU4 0 +NEU4 $2230 +line 4839 +;4839: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $2229 +JUMPV +LABELV $2230 +line 4841 +;4840: +;4841: if (!PC_Int_Parse(handle, &maxChars)) { +ADDRFP4 4 +INDIRI4 +ARGI4 +ADDRLP4 4 +ARGP4 +ADDRLP4 8 +ADDRGP4 PC_Int_Parse +CALLI4 +ASGNI4 +ADDRLP4 8 +INDIRI4 +CNSTI4 0 +NEI4 $2232 +line 4842 +;4842: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $2229 +JUMPV +LABELV $2232 +line 4844 +;4843: } +;4844: editPtr = (editFieldDef_t*)item->typeData; +ADDRLP4 0 +ADDRFP4 0 +INDIRP4 +CNSTI4 536 +ADDP4 +INDIRP4 +ASGNP4 +line 4845 +;4845: editPtr->maxChars = maxChars; +ADDRLP4 0 +INDIRP4 +CNSTI4 16 +ADDP4 +ADDRLP4 4 +INDIRI4 +ASGNI4 +line 4846 +;4846: return qtrue; +CNSTI4 1 +RETI4 +LABELV $2229 +endproc ItemParse_maxChars 12 8 +export ItemParse_maxPaintChars +proc ItemParse_maxPaintChars 12 8 +line 4849 +;4847:} +;4848: +;4849:qboolean ItemParse_maxPaintChars( itemDef_t *item, int handle ) { +line 4853 +;4850: editFieldDef_t *editPtr; +;4851: int maxChars; +;4852: +;4853: Item_ValidateTypeData(item); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRGP4 Item_ValidateTypeData +CALLV +pop +line 4854 +;4854: if (!item->typeData) +ADDRFP4 0 +INDIRP4 +CNSTI4 536 +ADDP4 +INDIRP4 +CVPU4 4 +CNSTU4 0 +NEU4 $2235 +line 4855 +;4855: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $2234 +JUMPV +LABELV $2235 +line 4857 +;4856: +;4857: if (!PC_Int_Parse(handle, &maxChars)) { +ADDRFP4 4 +INDIRI4 +ARGI4 +ADDRLP4 4 +ARGP4 +ADDRLP4 8 +ADDRGP4 PC_Int_Parse +CALLI4 +ASGNI4 +ADDRLP4 8 +INDIRI4 +CNSTI4 0 +NEI4 $2237 +line 4858 +;4858: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $2234 +JUMPV +LABELV $2237 +line 4860 +;4859: } +;4860: editPtr = (editFieldDef_t*)item->typeData; +ADDRLP4 0 +ADDRFP4 0 +INDIRP4 +CNSTI4 536 +ADDP4 +INDIRP4 +ASGNP4 +line 4861 +;4861: editPtr->maxPaintChars = maxChars; +ADDRLP4 0 +INDIRP4 +CNSTI4 20 +ADDP4 +ADDRLP4 4 +INDIRI4 +ASGNI4 +line 4862 +;4862: return qtrue; +CNSTI4 1 +RETI4 +LABELV $2234 +endproc ItemParse_maxPaintChars 12 8 +export ItemParse_cvarFloat +proc ItemParse_cvarFloat 20 8 +line 4867 +;4863:} +;4864: +;4865: +;4866: +;4867:qboolean ItemParse_cvarFloat( itemDef_t *item, int handle ) { +line 4870 +;4868: editFieldDef_t *editPtr; +;4869: +;4870: Item_ValidateTypeData(item); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRGP4 Item_ValidateTypeData +CALLV +pop +line 4871 +;4871: if (!item->typeData) +ADDRFP4 0 +INDIRP4 +CNSTI4 536 +ADDP4 +INDIRP4 +CVPU4 4 +CNSTU4 0 +NEU4 $2240 +line 4872 +;4872: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $2239 +JUMPV +LABELV $2240 +line 4873 +;4873: editPtr = (editFieldDef_t*)item->typeData; +ADDRLP4 0 +ADDRFP4 0 +INDIRP4 +CNSTI4 536 +ADDP4 +INDIRP4 +ASGNP4 +line 4874 +;4874: if (PC_String_Parse(handle, &item->cvar) && +ADDRFP4 4 +INDIRI4 +ARGI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 264 +ADDP4 +ARGP4 +ADDRLP4 4 +ADDRGP4 PC_String_Parse +CALLI4 +ASGNI4 +ADDRLP4 4 +INDIRI4 +CNSTI4 0 +EQI4 $2242 +ADDRFP4 4 +INDIRI4 +ARGI4 +ADDRLP4 0 +INDIRP4 +CNSTI4 8 +ADDP4 +ARGP4 +ADDRLP4 8 +ADDRGP4 PC_Float_Parse +CALLI4 +ASGNI4 +ADDRLP4 8 +INDIRI4 +CNSTI4 0 +EQI4 $2242 +ADDRFP4 4 +INDIRI4 +ARGI4 +ADDRLP4 0 +INDIRP4 +ARGP4 +ADDRLP4 12 +ADDRGP4 PC_Float_Parse +CALLI4 +ASGNI4 +ADDRLP4 12 +INDIRI4 +CNSTI4 0 +EQI4 $2242 +ADDRFP4 4 +INDIRI4 +ARGI4 +ADDRLP4 0 +INDIRP4 +CNSTI4 4 +ADDP4 +ARGP4 +ADDRLP4 16 +ADDRGP4 PC_Float_Parse +CALLI4 +ASGNI4 +ADDRLP4 16 +INDIRI4 +CNSTI4 0 +EQI4 $2242 +line 4877 +;4875: PC_Float_Parse(handle, &editPtr->defVal) && +;4876: PC_Float_Parse(handle, &editPtr->minVal) && +;4877: PC_Float_Parse(handle, &editPtr->maxVal)) { +line 4878 +;4878: return qtrue; +CNSTI4 1 +RETI4 +ADDRGP4 $2239 +JUMPV +LABELV $2242 +line 4880 +;4879: } +;4880: return qfalse; +CNSTI4 0 +RETI4 +LABELV $2239 +endproc ItemParse_cvarFloat 20 8 +export ItemParse_cvarStrList +proc ItemParse_cvarStrList 1068 8 +line 4883 +;4881:} +;4882: +;4883:qboolean ItemParse_cvarStrList( itemDef_t *item, int handle ) { +line 4888 +;4884: pc_token_t token; +;4885: multiDef_t *multiPtr; +;4886: int pass; +;4887: +;4888: Item_ValidateTypeData(item); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRGP4 Item_ValidateTypeData +CALLV +pop +line 4889 +;4889: if (!item->typeData) +ADDRFP4 0 +INDIRP4 +CNSTI4 536 +ADDP4 +INDIRP4 +CVPU4 4 +CNSTU4 0 +NEU4 $2245 +line 4890 +;4890: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $2244 +JUMPV +LABELV $2245 +line 4891 +;4891: multiPtr = (multiDef_t*)item->typeData; +ADDRLP4 1040 +ADDRFP4 0 +INDIRP4 +CNSTI4 536 +ADDP4 +INDIRP4 +ASGNP4 +line 4892 +;4892: multiPtr->count = 0; +ADDRLP4 1040 +INDIRP4 +CNSTI4 384 +ADDP4 +CNSTI4 0 +ASGNI4 +line 4893 +;4893: multiPtr->strDef = qtrue; +ADDRLP4 1040 +INDIRP4 +CNSTI4 388 +ADDP4 +CNSTI4 1 +ASGNI4 +line 4895 +;4894: +;4895: if (!trap_PC_ReadToken(handle, &token)) +ADDRFP4 4 +INDIRI4 +ARGI4 +ADDRLP4 0 +ARGP4 +ADDRLP4 1048 +ADDRGP4 trap_PC_ReadToken +CALLI4 +ASGNI4 +ADDRLP4 1048 +INDIRI4 +CNSTI4 0 +NEI4 $2247 +line 4896 +;4896: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $2244 +JUMPV +LABELV $2247 +line 4897 +;4897: if (*token.string != '{') { +ADDRLP4 0+16 +INDIRI1 +CVII4 1 +CNSTI4 123 +EQI4 $2249 +line 4898 +;4898: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $2244 +JUMPV +LABELV $2249 +line 4901 +;4899: } +;4900: +;4901: pass = 0; +ADDRLP4 1044 +CNSTI4 0 +ASGNI4 +ADDRGP4 $2253 +JUMPV +LABELV $2252 +line 4902 +;4902: while ( 1 ) { +line 4903 +;4903: if (!trap_PC_ReadToken(handle, &token)) { +ADDRFP4 4 +INDIRI4 +ARGI4 +ADDRLP4 0 +ARGP4 +ADDRLP4 1052 +ADDRGP4 trap_PC_ReadToken +CALLI4 +ASGNI4 +ADDRLP4 1052 +INDIRI4 +CNSTI4 0 +NEI4 $2255 +line 4904 +;4904: PC_SourceError(handle, "end of file inside menu item\n"); +ADDRFP4 4 +INDIRI4 +ARGI4 +ADDRGP4 $2257 +ARGP4 +ADDRGP4 PC_SourceError +CALLV +pop +line 4905 +;4905: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $2244 +JUMPV +LABELV $2255 +line 4908 +;4906: } +;4907: +;4908: if (*token.string == '}') { +ADDRLP4 0+16 +INDIRI1 +CVII4 1 +CNSTI4 125 +NEI4 $2258 +line 4909 +;4909: return qtrue; +CNSTI4 1 +RETI4 +ADDRGP4 $2244 +JUMPV +LABELV $2258 +line 4912 +;4910: } +;4911: +;4912: if (*token.string == ',' || *token.string == ';') { +ADDRLP4 0+16 +INDIRI1 +CVII4 1 +CNSTI4 44 +EQI4 $2265 +ADDRLP4 0+16 +INDIRI1 +CVII4 1 +CNSTI4 59 +NEI4 $2261 +LABELV $2265 +line 4913 +;4913: continue; +ADDRGP4 $2253 +JUMPV +LABELV $2261 +line 4916 +;4914: } +;4915: +;4916: if (pass == 0) { +ADDRLP4 1044 +INDIRI4 +CNSTI4 0 +NEI4 $2266 +line 4917 +;4917: multiPtr->cvarList[multiPtr->count] = String_Alloc(token.string); +ADDRLP4 0+16 +ARGP4 +ADDRLP4 1056 +ADDRGP4 String_Alloc +CALLP4 +ASGNP4 +ADDRLP4 1040 +INDIRP4 +CNSTI4 384 +ADDP4 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRLP4 1040 +INDIRP4 +ADDP4 +ADDRLP4 1056 +INDIRP4 +ASGNP4 +line 4918 +;4918: pass = 1; +ADDRLP4 1044 +CNSTI4 1 +ASGNI4 +line 4919 +;4919: } else { +ADDRGP4 $2267 +JUMPV +LABELV $2266 +line 4920 +;4920: multiPtr->cvarStr[multiPtr->count] = String_Alloc(token.string); +ADDRLP4 0+16 +ARGP4 +ADDRLP4 1056 +ADDRGP4 String_Alloc +CALLP4 +ASGNP4 +ADDRLP4 1040 +INDIRP4 +CNSTI4 384 +ADDP4 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRLP4 1040 +INDIRP4 +CNSTI4 128 +ADDP4 +ADDP4 +ADDRLP4 1056 +INDIRP4 +ASGNP4 +line 4921 +;4921: pass = 0; +ADDRLP4 1044 +CNSTI4 0 +ASGNI4 +line 4922 +;4922: multiPtr->count++; +ADDRLP4 1064 +ADDRLP4 1040 +INDIRP4 +CNSTI4 384 +ADDP4 +ASGNP4 +ADDRLP4 1064 +INDIRP4 +ADDRLP4 1064 +INDIRP4 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 4923 +;4923: if (multiPtr->count >= MAX_MULTI_CVARS) { +ADDRLP4 1040 +INDIRP4 +CNSTI4 384 +ADDP4 +INDIRI4 +CNSTI4 32 +LTI4 $2270 +line 4924 +;4924: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $2244 +JUMPV +LABELV $2270 +line 4926 +;4925: } +;4926: } +LABELV $2267 +line 4928 +;4927: +;4928: } +LABELV $2253 +line 4902 +ADDRGP4 $2252 +JUMPV +line 4929 +;4929: return qfalse; // bk001205 - LCC missing return value +CNSTI4 0 +RETI4 +LABELV $2244 +endproc ItemParse_cvarStrList 1068 8 +export ItemParse_cvarFloatList +proc ItemParse_cvarFloatList 1072 8 +line 4932 +;4930:} +;4931: +;4932:qboolean ItemParse_cvarFloatList( itemDef_t *item, int handle ) { +line 4936 +;4933: pc_token_t token; +;4934: multiDef_t *multiPtr; +;4935: +;4936: Item_ValidateTypeData(item); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRGP4 Item_ValidateTypeData +CALLV +pop +line 4937 +;4937: if (!item->typeData) +ADDRFP4 0 +INDIRP4 +CNSTI4 536 +ADDP4 +INDIRP4 +CVPU4 4 +CNSTU4 0 +NEU4 $2273 +line 4938 +;4938: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $2272 +JUMPV +LABELV $2273 +line 4939 +;4939: multiPtr = (multiDef_t*)item->typeData; +ADDRLP4 0 +ADDRFP4 0 +INDIRP4 +CNSTI4 536 +ADDP4 +INDIRP4 +ASGNP4 +line 4940 +;4940: multiPtr->count = 0; +ADDRLP4 0 +INDIRP4 +CNSTI4 384 +ADDP4 +CNSTI4 0 +ASGNI4 +line 4941 +;4941: multiPtr->strDef = qfalse; +ADDRLP4 0 +INDIRP4 +CNSTI4 388 +ADDP4 +CNSTI4 0 +ASGNI4 +line 4943 +;4942: +;4943: if (!trap_PC_ReadToken(handle, &token)) +ADDRFP4 4 +INDIRI4 +ARGI4 +ADDRLP4 4 +ARGP4 +ADDRLP4 1044 +ADDRGP4 trap_PC_ReadToken +CALLI4 +ASGNI4 +ADDRLP4 1044 +INDIRI4 +CNSTI4 0 +NEI4 $2275 +line 4944 +;4944: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $2272 +JUMPV +LABELV $2275 +line 4945 +;4945: if (*token.string != '{') { +ADDRLP4 4+16 +INDIRI1 +CVII4 1 +CNSTI4 123 +EQI4 $2281 +line 4946 +;4946: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $2272 +JUMPV +LABELV $2280 +line 4949 +;4947: } +;4948: +;4949: while ( 1 ) { +line 4950 +;4950: if (!trap_PC_ReadToken(handle, &token)) { +ADDRFP4 4 +INDIRI4 +ARGI4 +ADDRLP4 4 +ARGP4 +ADDRLP4 1048 +ADDRGP4 trap_PC_ReadToken +CALLI4 +ASGNI4 +ADDRLP4 1048 +INDIRI4 +CNSTI4 0 +NEI4 $2283 +line 4951 +;4951: PC_SourceError(handle, "end of file inside menu item\n"); +ADDRFP4 4 +INDIRI4 +ARGI4 +ADDRGP4 $2257 +ARGP4 +ADDRGP4 PC_SourceError +CALLV +pop +line 4952 +;4952: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $2272 +JUMPV +LABELV $2283 +line 4955 +;4953: } +;4954: +;4955: if (*token.string == '}') { +ADDRLP4 4+16 +INDIRI1 +CVII4 1 +CNSTI4 125 +NEI4 $2285 +line 4956 +;4956: return qtrue; +CNSTI4 1 +RETI4 +ADDRGP4 $2272 +JUMPV +LABELV $2285 +line 4959 +;4957: } +;4958: +;4959: if (*token.string == ',' || *token.string == ';') { +ADDRLP4 4+16 +INDIRI1 +CVII4 1 +CNSTI4 44 +EQI4 $2292 +ADDRLP4 4+16 +INDIRI1 +CVII4 1 +CNSTI4 59 +NEI4 $2288 +LABELV $2292 +line 4960 +;4960: continue; +ADDRGP4 $2281 +JUMPV +LABELV $2288 +line 4963 +;4961: } +;4962: +;4963: multiPtr->cvarList[multiPtr->count] = String_Alloc(token.string); +ADDRLP4 4+16 +ARGP4 +ADDRLP4 1052 +ADDRGP4 String_Alloc +CALLP4 +ASGNP4 +ADDRLP4 0 +INDIRP4 +CNSTI4 384 +ADDP4 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRLP4 0 +INDIRP4 +ADDP4 +ADDRLP4 1052 +INDIRP4 +ASGNP4 +line 4964 +;4964: if (!PC_Float_Parse(handle, &multiPtr->cvarValue[multiPtr->count])) { +ADDRFP4 4 +INDIRI4 +ARGI4 +ADDRLP4 0 +INDIRP4 +CNSTI4 384 +ADDP4 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRLP4 0 +INDIRP4 +CNSTI4 256 +ADDP4 +ADDP4 +ARGP4 +ADDRLP4 1064 +ADDRGP4 PC_Float_Parse +CALLI4 +ASGNI4 +ADDRLP4 1064 +INDIRI4 +CNSTI4 0 +NEI4 $2294 +line 4965 +;4965: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $2272 +JUMPV +LABELV $2294 +line 4968 +;4966: } +;4967: +;4968: multiPtr->count++; +ADDRLP4 1068 +ADDRLP4 0 +INDIRP4 +CNSTI4 384 +ADDP4 +ASGNP4 +ADDRLP4 1068 +INDIRP4 +ADDRLP4 1068 +INDIRP4 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 4969 +;4969: if (multiPtr->count >= MAX_MULTI_CVARS) { +ADDRLP4 0 +INDIRP4 +CNSTI4 384 +ADDP4 +INDIRI4 +CNSTI4 32 +LTI4 $2296 +line 4970 +;4970: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $2272 +JUMPV +LABELV $2296 +line 4973 +;4971: } +;4972: +;4973: } +LABELV $2281 +line 4949 +ADDRGP4 $2280 +JUMPV +line 4974 +;4974: return qfalse; // bk001205 - LCC missing return value +CNSTI4 0 +RETI4 +LABELV $2272 +endproc ItemParse_cvarFloatList 1072 8 +export ItemParse_addColorRange +proc ItemParse_addColorRange 48 12 +line 4979 +;4975:} +;4976: +;4977: +;4978: +;4979:qboolean ItemParse_addColorRange( itemDef_t *item, int handle ) { +line 4982 +;4980: colorRangeDef_t color; +;4981: +;4982: if (PC_Float_Parse(handle, &color.low) && +ADDRFP4 4 +INDIRI4 +ARGI4 +ADDRLP4 0+16 +ARGP4 +ADDRLP4 24 +ADDRGP4 PC_Float_Parse +CALLI4 +ASGNI4 +ADDRLP4 24 +INDIRI4 +CNSTI4 0 +EQI4 $2299 +ADDRFP4 4 +INDIRI4 +ARGI4 +ADDRLP4 0+20 +ARGP4 +ADDRLP4 28 +ADDRGP4 PC_Float_Parse +CALLI4 +ASGNI4 +ADDRLP4 28 +INDIRI4 +CNSTI4 0 +EQI4 $2299 +ADDRFP4 4 +INDIRI4 +ARGI4 +ADDRLP4 0 +ARGP4 +ADDRLP4 32 +ADDRGP4 PC_Color_Parse +CALLI4 +ASGNI4 +ADDRLP4 32 +INDIRI4 +CNSTI4 0 +EQI4 $2299 +line 4984 +;4983: PC_Float_Parse(handle, &color.high) && +;4984: PC_Color_Parse(handle, &color.color) ) { +line 4985 +;4985: if (item->numColors < MAX_COLOR_RANGES) { +ADDRFP4 0 +INDIRP4 +CNSTI4 284 +ADDP4 +INDIRI4 +CNSTI4 10 +GEI4 $2303 +line 4986 +;4986: memcpy(&item->colorRanges[item->numColors], &color, sizeof(color)); +ADDRLP4 36 +CNSTI4 24 +ASGNI4 +ADDRLP4 40 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 36 +INDIRI4 +ADDRLP4 40 +INDIRP4 +CNSTI4 284 +ADDP4 +INDIRI4 +MULI4 +ADDRLP4 40 +INDIRP4 +CNSTI4 288 +ADDP4 +ADDP4 +ARGP4 +ADDRLP4 0 +ARGP4 +ADDRLP4 36 +INDIRI4 +ARGI4 +ADDRGP4 memcpy +CALLP4 +pop +line 4987 +;4987: item->numColors++; +ADDRLP4 44 +ADDRFP4 0 +INDIRP4 +CNSTI4 284 +ADDP4 +ASGNP4 +ADDRLP4 44 +INDIRP4 +ADDRLP4 44 +INDIRP4 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 4988 +;4988: } +LABELV $2303 +line 4989 +;4989: return qtrue; +CNSTI4 1 +RETI4 +ADDRGP4 $2298 +JUMPV +LABELV $2299 +line 4991 +;4990: } +;4991: return qfalse; +CNSTI4 0 +RETI4 +LABELV $2298 +endproc ItemParse_addColorRange 48 12 +export ItemParse_ownerdrawFlag +proc ItemParse_ownerdrawFlag 12 8 +line 4994 +;4992:} +;4993: +;4994:qboolean ItemParse_ownerdrawFlag( itemDef_t *item, int handle ) { +line 4996 +;4995: int i; +;4996: if (!PC_Int_Parse(handle, &i)) { +ADDRFP4 4 +INDIRI4 +ARGI4 +ADDRLP4 0 +ARGP4 +ADDRLP4 4 +ADDRGP4 PC_Int_Parse +CALLI4 +ASGNI4 +ADDRLP4 4 +INDIRI4 +CNSTI4 0 +NEI4 $2306 +line 4997 +;4997: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $2305 +JUMPV +LABELV $2306 +line 4999 +;4998: } +;4999: item->window.ownerDrawFlags |= i; +ADDRLP4 8 +ADDRFP4 0 +INDIRP4 +CNSTI4 60 +ADDP4 +ASGNP4 +ADDRLP4 8 +INDIRP4 +ADDRLP4 8 +INDIRP4 +INDIRI4 +ADDRLP4 0 +INDIRI4 +BORI4 +ASGNI4 +line 5000 +;5000: return qtrue; +CNSTI4 1 +RETI4 +LABELV $2305 +endproc ItemParse_ownerdrawFlag 12 8 +export ItemParse_enableCvar +proc ItemParse_enableCvar 4 8 +line 5003 +;5001:} +;5002: +;5003:qboolean ItemParse_enableCvar( itemDef_t *item, int handle ) { +line 5004 +;5004: if (PC_Script_Parse(handle, &item->enableCvar)) { +ADDRFP4 4 +INDIRI4 +ARGI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 272 +ADDP4 +ARGP4 +ADDRLP4 0 +ADDRGP4 PC_Script_Parse +CALLI4 +ASGNI4 +ADDRLP4 0 +INDIRI4 +CNSTI4 0 +EQI4 $2309 +line 5005 +;5005: item->cvarFlags = CVAR_ENABLE; +ADDRFP4 0 +INDIRP4 +CNSTI4 276 +ADDP4 +CNSTI4 1 +ASGNI4 +line 5006 +;5006: return qtrue; +CNSTI4 1 +RETI4 +ADDRGP4 $2308 +JUMPV +LABELV $2309 +line 5008 +;5007: } +;5008: return qfalse; +CNSTI4 0 +RETI4 +LABELV $2308 +endproc ItemParse_enableCvar 4 8 +export ItemParse_disableCvar +proc ItemParse_disableCvar 4 8 +line 5011 +;5009:} +;5010: +;5011:qboolean ItemParse_disableCvar( itemDef_t *item, int handle ) { +line 5012 +;5012: if (PC_Script_Parse(handle, &item->enableCvar)) { +ADDRFP4 4 +INDIRI4 +ARGI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 272 +ADDP4 +ARGP4 +ADDRLP4 0 +ADDRGP4 PC_Script_Parse +CALLI4 +ASGNI4 +ADDRLP4 0 +INDIRI4 +CNSTI4 0 +EQI4 $2312 +line 5013 +;5013: item->cvarFlags = CVAR_DISABLE; +ADDRFP4 0 +INDIRP4 +CNSTI4 276 +ADDP4 +CNSTI4 2 +ASGNI4 +line 5014 +;5014: return qtrue; +CNSTI4 1 +RETI4 +ADDRGP4 $2311 +JUMPV +LABELV $2312 +line 5016 +;5015: } +;5016: return qfalse; +CNSTI4 0 +RETI4 +LABELV $2311 +endproc ItemParse_disableCvar 4 8 +export ItemParse_showCvar +proc ItemParse_showCvar 4 8 +line 5019 +;5017:} +;5018: +;5019:qboolean ItemParse_showCvar( itemDef_t *item, int handle ) { +line 5020 +;5020: if (PC_Script_Parse(handle, &item->enableCvar)) { +ADDRFP4 4 +INDIRI4 +ARGI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 272 +ADDP4 +ARGP4 +ADDRLP4 0 +ADDRGP4 PC_Script_Parse +CALLI4 +ASGNI4 +ADDRLP4 0 +INDIRI4 +CNSTI4 0 +EQI4 $2315 +line 5021 +;5021: item->cvarFlags = CVAR_SHOW; +ADDRFP4 0 +INDIRP4 +CNSTI4 276 +ADDP4 +CNSTI4 4 +ASGNI4 +line 5022 +;5022: return qtrue; +CNSTI4 1 +RETI4 +ADDRGP4 $2314 +JUMPV +LABELV $2315 +line 5024 +;5023: } +;5024: return qfalse; +CNSTI4 0 +RETI4 +LABELV $2314 +endproc ItemParse_showCvar 4 8 +export ItemParse_hideCvar +proc ItemParse_hideCvar 4 8 +line 5027 +;5025:} +;5026: +;5027:qboolean ItemParse_hideCvar( itemDef_t *item, int handle ) { +line 5028 +;5028: if (PC_Script_Parse(handle, &item->enableCvar)) { +ADDRFP4 4 +INDIRI4 +ARGI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 272 +ADDP4 +ARGP4 +ADDRLP4 0 +ADDRGP4 PC_Script_Parse +CALLI4 +ASGNI4 +ADDRLP4 0 +INDIRI4 +CNSTI4 0 +EQI4 $2318 +line 5029 +;5029: item->cvarFlags = CVAR_HIDE; +ADDRFP4 0 +INDIRP4 +CNSTI4 276 +ADDP4 +CNSTI4 8 +ASGNI4 +line 5030 +;5030: return qtrue; +CNSTI4 1 +RETI4 +ADDRGP4 $2317 +JUMPV +LABELV $2318 +line 5032 +;5031: } +;5032: return qfalse; +CNSTI4 0 +RETI4 +LABELV $2317 +endproc ItemParse_hideCvar 4 8 +data +export itemParseKeywords +align 4 +LABELV itemParseKeywords +address $2320 +address ItemParse_name +byte 4 0 +address $2321 +address ItemParse_text +byte 4 0 +address $2322 +address ItemParse_group +byte 4 0 +address $2323 +address ItemParse_asset_model +byte 4 0 +address $2324 +address ItemParse_asset_shader +byte 4 0 +address $2325 +address ItemParse_model_origin +byte 4 0 +address $2326 +address ItemParse_model_fovx +byte 4 0 +address $2327 +address ItemParse_model_fovy +byte 4 0 +address $2328 +address ItemParse_model_rotation +byte 4 0 +address $2329 +address ItemParse_model_angle +byte 4 0 +address $2330 +address ItemParse_rect +byte 4 0 +address $2331 +address ItemParse_style +byte 4 0 +address $2332 +address ItemParse_decoration +byte 4 0 +address $2333 +address ItemParse_notselectable +byte 4 0 +address $2334 +address ItemParse_wrapped +byte 4 0 +address $2335 +address ItemParse_autowrapped +byte 4 0 +address $2336 +address ItemParse_horizontalscroll +byte 4 0 +address $2337 +address ItemParse_type +byte 4 0 +address $2338 +address ItemParse_elementwidth +byte 4 0 +address $2339 +address ItemParse_elementheight +byte 4 0 +address $2340 +address ItemParse_feeder +byte 4 0 +address $2341 +address ItemParse_elementtype +byte 4 0 +address $2342 +address ItemParse_columns +byte 4 0 +address $2343 +address ItemParse_border +byte 4 0 +address $2344 +address ItemParse_bordersize +byte 4 0 +address $2345 +address ItemParse_visible +byte 4 0 +address $2346 +address ItemParse_ownerdraw +byte 4 0 +address $2347 +address ItemParse_align +byte 4 0 +address $2348 +address ItemParse_textalign +byte 4 0 +address $2349 +address ItemParse_textalignx +byte 4 0 +address $2350 +address ItemParse_textaligny +byte 4 0 +address $2351 +address ItemParse_textscale +byte 4 0 +address $2352 +address ItemParse_textstyle +byte 4 0 +address $358 +address ItemParse_backcolor +byte 4 0 +address $361 +address ItemParse_forecolor +byte 4 0 +address $364 +address ItemParse_bordercolor +byte 4 0 +address $2353 +address ItemParse_outlinecolor +byte 4 0 +address $2354 +address ItemParse_background +byte 4 0 +address $2355 +address ItemParse_onFocus +byte 4 0 +address $2356 +address ItemParse_leaveFocus +byte 4 0 +address $2357 +address ItemParse_mouseEnter +byte 4 0 +address $2358 +address ItemParse_mouseExit +byte 4 0 +address $2359 +address ItemParse_mouseEnterText +byte 4 0 +address $2360 +address ItemParse_mouseExitText +byte 4 0 +address $2361 +address ItemParse_action +byte 4 0 +address $2362 +address ItemParse_special +byte 4 0 +address $2363 +address ItemParse_cvar +byte 4 0 +address $2364 +address ItemParse_maxChars +byte 4 0 +address $2365 +address ItemParse_maxPaintChars +byte 4 0 +address $2366 +address ItemParse_focusSound +byte 4 0 +address $2367 +address ItemParse_cvarFloat +byte 4 0 +address $2368 +address ItemParse_cvarStrList +byte 4 0 +address $2369 +address ItemParse_cvarFloatList +byte 4 0 +address $2370 +address ItemParse_addColorRange +byte 4 0 +address $2371 +address ItemParse_ownerdrawFlag +byte 4 0 +address $2372 +address ItemParse_enableCvar +byte 4 0 +address $2373 +address ItemParse_cvarTest +byte 4 0 +address $2374 +address ItemParse_disableCvar +byte 4 0 +address $2375 +address ItemParse_showCvar +byte 4 0 +address $2376 +address ItemParse_hideCvar +byte 4 0 +address $2377 +address ItemParse_cinematic +byte 4 0 +address $2378 +address ItemParse_doubleClick +byte 4 0 +byte 4 0 +byte 4 0 +byte 4 0 +export Item_SetupKeywordHash +code +proc Item_SetupKeywordHash 4 12 +line 5109 +;5033:} +;5034: +;5035: +;5036:keywordHash_t itemParseKeywords[] = { +;5037: {"name", ItemParse_name, NULL}, +;5038: {"text", ItemParse_text, NULL}, +;5039: {"group", ItemParse_group, NULL}, +;5040: {"asset_model", ItemParse_asset_model, NULL}, +;5041: {"asset_shader", ItemParse_asset_shader, NULL}, +;5042: {"model_origin", ItemParse_model_origin, NULL}, +;5043: {"model_fovx", ItemParse_model_fovx, NULL}, +;5044: {"model_fovy", ItemParse_model_fovy, NULL}, +;5045: {"model_rotation", ItemParse_model_rotation, NULL}, +;5046: {"model_angle", ItemParse_model_angle, NULL}, +;5047: {"rect", ItemParse_rect, NULL}, +;5048: {"style", ItemParse_style, NULL}, +;5049: {"decoration", ItemParse_decoration, NULL}, +;5050: {"notselectable", ItemParse_notselectable, NULL}, +;5051: {"wrapped", ItemParse_wrapped, NULL}, +;5052: {"autowrapped", ItemParse_autowrapped, NULL}, +;5053: {"horizontalscroll", ItemParse_horizontalscroll, NULL}, +;5054: {"type", ItemParse_type, NULL}, +;5055: {"elementwidth", ItemParse_elementwidth, NULL}, +;5056: {"elementheight", ItemParse_elementheight, NULL}, +;5057: {"feeder", ItemParse_feeder, NULL}, +;5058: {"elementtype", ItemParse_elementtype, NULL}, +;5059: {"columns", ItemParse_columns, NULL}, +;5060: {"border", ItemParse_border, NULL}, +;5061: {"bordersize", ItemParse_bordersize, NULL}, +;5062: {"visible", ItemParse_visible, NULL}, +;5063: {"ownerdraw", ItemParse_ownerdraw, NULL}, +;5064: {"align", ItemParse_align, NULL}, +;5065: {"textalign", ItemParse_textalign, NULL}, +;5066: {"textalignx", ItemParse_textalignx, NULL}, +;5067: {"textaligny", ItemParse_textaligny, NULL}, +;5068: {"textscale", ItemParse_textscale, NULL}, +;5069: {"textstyle", ItemParse_textstyle, NULL}, +;5070: {"backcolor", ItemParse_backcolor, NULL}, +;5071: {"forecolor", ItemParse_forecolor, NULL}, +;5072: {"bordercolor", ItemParse_bordercolor, NULL}, +;5073: {"outlinecolor", ItemParse_outlinecolor, NULL}, +;5074: {"background", ItemParse_background, NULL}, +;5075: {"onFocus", ItemParse_onFocus, NULL}, +;5076: {"leaveFocus", ItemParse_leaveFocus, NULL}, +;5077: {"mouseEnter", ItemParse_mouseEnter, NULL}, +;5078: {"mouseExit", ItemParse_mouseExit, NULL}, +;5079: {"mouseEnterText", ItemParse_mouseEnterText, NULL}, +;5080: {"mouseExitText", ItemParse_mouseExitText, NULL}, +;5081: {"action", ItemParse_action, NULL}, +;5082: {"special", ItemParse_special, NULL}, +;5083: {"cvar", ItemParse_cvar, NULL}, +;5084: {"maxChars", ItemParse_maxChars, NULL}, +;5085: {"maxPaintChars", ItemParse_maxPaintChars, NULL}, +;5086: {"focusSound", ItemParse_focusSound, NULL}, +;5087: {"cvarFloat", ItemParse_cvarFloat, NULL}, +;5088: {"cvarStrList", ItemParse_cvarStrList, NULL}, +;5089: {"cvarFloatList", ItemParse_cvarFloatList, NULL}, +;5090: {"addColorRange", ItemParse_addColorRange, NULL}, +;5091: {"ownerdrawFlag", ItemParse_ownerdrawFlag, NULL}, +;5092: {"enableCvar", ItemParse_enableCvar, NULL}, +;5093: {"cvarTest", ItemParse_cvarTest, NULL}, +;5094: {"disableCvar", ItemParse_disableCvar, NULL}, +;5095: {"showCvar", ItemParse_showCvar, NULL}, +;5096: {"hideCvar", ItemParse_hideCvar, NULL}, +;5097: {"cinematic", ItemParse_cinematic, NULL}, +;5098: {"doubleclick", ItemParse_doubleClick, NULL}, +;5099: {NULL, NULL, NULL} +;5100:}; +;5101: +;5102:keywordHash_t *itemParseKeywordHash[KEYWORDHASH_SIZE]; +;5103: +;5104:/* +;5105:=============== +;5106:Item_SetupKeywordHash +;5107:=============== +;5108:*/ +;5109:void Item_SetupKeywordHash(void) { +line 5112 +;5110: int i; +;5111: +;5112: memset(itemParseKeywordHash, 0, sizeof(itemParseKeywordHash)); +ADDRGP4 itemParseKeywordHash +ARGP4 +CNSTI4 0 +ARGI4 +CNSTI4 2048 +ARGI4 +ADDRGP4 memset +CALLP4 +pop +line 5113 +;5113: for (i = 0; itemParseKeywords[i].keyword; i++) { +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +ADDRGP4 $2383 +JUMPV +LABELV $2380 +line 5114 +;5114: KeywordHash_Add(itemParseKeywordHash, &itemParseKeywords[i]); +ADDRGP4 itemParseKeywordHash +ARGP4 +CNSTI4 12 +ADDRLP4 0 +INDIRI4 +MULI4 +ADDRGP4 itemParseKeywords +ADDP4 +ARGP4 +ADDRGP4 KeywordHash_Add +CALLV +pop +line 5115 +;5115: } +LABELV $2381 +line 5113 +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +LABELV $2383 +CNSTI4 12 +ADDRLP4 0 +INDIRI4 +MULI4 +ADDRGP4 itemParseKeywords +ADDP4 +INDIRP4 +CVPU4 4 +CNSTU4 0 +NEU4 $2380 +line 5116 +;5116:} +LABELV $2379 +endproc Item_SetupKeywordHash 4 12 +export Item_Parse +proc Item_Parse 1060 12 +line 5123 +;5117: +;5118:/* +;5119:=============== +;5120:Item_Parse +;5121:=============== +;5122:*/ +;5123:qboolean Item_Parse(int handle, itemDef_t *item) { +line 5128 +;5124: pc_token_t token; +;5125: keywordHash_t *key; +;5126: +;5127: +;5128: if (!trap_PC_ReadToken(handle, &token)) +ADDRFP4 0 +INDIRI4 +ARGI4 +ADDRLP4 0 +ARGP4 +ADDRLP4 1044 +ADDRGP4 trap_PC_ReadToken +CALLI4 +ASGNI4 +ADDRLP4 1044 +INDIRI4 +CNSTI4 0 +NEI4 $2385 +line 5129 +;5129: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $2384 +JUMPV +LABELV $2385 +line 5130 +;5130: if (*token.string != '{') { +ADDRLP4 0+16 +INDIRI1 +CVII4 1 +CNSTI4 123 +EQI4 $2391 +line 5131 +;5131: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $2384 +JUMPV +LABELV $2390 +line 5133 +;5132: } +;5133: while ( 1 ) { +line 5134 +;5134: if (!trap_PC_ReadToken(handle, &token)) { +ADDRFP4 0 +INDIRI4 +ARGI4 +ADDRLP4 0 +ARGP4 +ADDRLP4 1048 +ADDRGP4 trap_PC_ReadToken +CALLI4 +ASGNI4 +ADDRLP4 1048 +INDIRI4 +CNSTI4 0 +NEI4 $2393 +line 5135 +;5135: PC_SourceError(handle, "end of file inside menu item\n"); +ADDRFP4 0 +INDIRI4 +ARGI4 +ADDRGP4 $2257 +ARGP4 +ADDRGP4 PC_SourceError +CALLV +pop +line 5136 +;5136: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $2384 +JUMPV +LABELV $2393 +line 5139 +;5137: } +;5138: +;5139: if (*token.string == '}') { +ADDRLP4 0+16 +INDIRI1 +CVII4 1 +CNSTI4 125 +NEI4 $2395 +line 5140 +;5140: return qtrue; +CNSTI4 1 +RETI4 +ADDRGP4 $2384 +JUMPV +LABELV $2395 +line 5143 +;5141: } +;5142: +;5143: key = KeywordHash_Find(itemParseKeywordHash, token.string); +ADDRGP4 itemParseKeywordHash +ARGP4 +ADDRLP4 0+16 +ARGP4 +ADDRLP4 1052 +ADDRGP4 KeywordHash_Find +CALLP4 +ASGNP4 +ADDRLP4 1040 +ADDRLP4 1052 +INDIRP4 +ASGNP4 +line 5144 +;5144: if (!key) { +ADDRLP4 1040 +INDIRP4 +CVPU4 4 +CNSTU4 0 +NEU4 $2399 +line 5145 +;5145: PC_SourceError(handle, "unknown menu item keyword %s", token.string); +ADDRFP4 0 +INDIRI4 +ARGI4 +ADDRGP4 $2401 +ARGP4 +ADDRLP4 0+16 +ARGP4 +ADDRGP4 PC_SourceError +CALLV +pop +line 5146 +;5146: continue; +ADDRGP4 $2391 +JUMPV +LABELV $2399 +line 5148 +;5147: } +;5148: if ( !key->func(item, handle) ) { +ADDRFP4 4 +INDIRP4 +ARGP4 +ADDRFP4 0 +INDIRI4 +ARGI4 +ADDRLP4 1056 +ADDRLP4 1040 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRP4 +CALLI4 +ASGNI4 +ADDRLP4 1056 +INDIRI4 +CNSTI4 0 +NEI4 $2403 +line 5149 +;5149: PC_SourceError(handle, "couldn't parse menu item keyword %s", token.string); +ADDRFP4 0 +INDIRI4 +ARGI4 +ADDRGP4 $2405 +ARGP4 +ADDRLP4 0+16 +ARGP4 +ADDRGP4 PC_SourceError +CALLV +pop +line 5150 +;5150: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $2384 +JUMPV +LABELV $2403 +line 5152 +;5151: } +;5152: } +LABELV $2391 +line 5133 +ADDRGP4 $2390 +JUMPV +line 5153 +;5153: return qfalse; // bk001205 - LCC missing return value +CNSTI4 0 +RETI4 +LABELV $2384 +endproc Item_Parse 1060 12 +export Item_InitControls +proc Item_InitControls 4 0 +line 5159 +;5154:} +;5155: +;5156: +;5157:// Item_InitControls +;5158:// init's special control types +;5159:void Item_InitControls(itemDef_t *item) { +line 5160 +;5160: if (item == NULL) { +ADDRFP4 0 +INDIRP4 +CVPU4 4 +CNSTU4 0 +NEU4 $2408 +line 5161 +;5161: return; +ADDRGP4 $2407 +JUMPV +LABELV $2408 +line 5163 +;5162: } +;5163: if (item->type == ITEM_TYPE_LISTBOX) { +ADDRFP4 0 +INDIRP4 +CNSTI4 196 +ADDP4 +INDIRI4 +CNSTI4 6 +NEI4 $2410 +line 5164 +;5164: listBoxDef_t *listPtr = (listBoxDef_t*)item->typeData; +ADDRLP4 0 +ADDRFP4 0 +INDIRP4 +CNSTI4 536 +ADDP4 +INDIRP4 +ASGNP4 +line 5165 +;5165: item->cursorPos = 0; +ADDRFP4 0 +INDIRP4 +CNSTI4 532 +ADDP4 +CNSTI4 0 +ASGNI4 +line 5166 +;5166: if (listPtr) { +ADDRLP4 0 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $2412 +line 5167 +;5167: listPtr->cursorPos = 0; +ADDRLP4 0 +INDIRP4 +CNSTI4 12 +ADDP4 +CNSTI4 0 +ASGNI4 +line 5168 +;5168: listPtr->startPos = 0; +ADDRLP4 0 +INDIRP4 +CNSTI4 0 +ASGNI4 +line 5169 +;5169: listPtr->endPos = 0; +ADDRLP4 0 +INDIRP4 +CNSTI4 4 +ADDP4 +CNSTI4 0 +ASGNI4 +line 5170 +;5170: listPtr->cursorPos = 0; +ADDRLP4 0 +INDIRP4 +CNSTI4 12 +ADDP4 +CNSTI4 0 +ASGNI4 +line 5171 +;5171: } +LABELV $2412 +line 5172 +;5172: } +LABELV $2410 +line 5173 +;5173:} +LABELV $2407 +endproc Item_InitControls 4 0 +export MenuParse_font +proc MenuParse_font 12 12 +line 5181 +;5174: +;5175:/* +;5176:=============== +;5177:Menu Keyword Parse functions +;5178:=============== +;5179:*/ +;5180: +;5181:qboolean MenuParse_font( itemDef_t *item, int handle ) { +line 5182 +;5182: menuDef_t *menu = (menuDef_t*)item; +ADDRLP4 0 +ADDRFP4 0 +INDIRP4 +ASGNP4 +line 5183 +;5183: if (!PC_String_Parse(handle, &menu->font)) { +ADDRFP4 4 +INDIRI4 +ARGI4 +ADDRLP4 0 +INDIRP4 +CNSTI4 180 +ADDP4 +ARGP4 +ADDRLP4 4 +ADDRGP4 PC_String_Parse +CALLI4 +ASGNI4 +ADDRLP4 4 +INDIRI4 +CNSTI4 0 +NEI4 $2415 +line 5184 +;5184: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $2414 +JUMPV +LABELV $2415 +line 5186 +;5185: } +;5186: if (!DC->Assets.fontRegistered) { +ADDRGP4 DC +INDIRP4 +CNSTI4 61992 +ADDP4 +INDIRI4 +CNSTI4 0 +NEI4 $2417 +line 5187 +;5187: DC->registerFont(menu->font, 48, &DC->Assets.textFont); +ADDRLP4 0 +INDIRP4 +CNSTI4 180 +ADDP4 +INDIRP4 +ARGP4 +CNSTI4 48 +ARGI4 +ADDRLP4 8 +ADDRGP4 DC +INDIRP4 +ASGNP4 +ADDRLP4 8 +INDIRP4 +CNSTI4 240 +ADDP4 +ARGP4 +ADDRLP4 8 +INDIRP4 +CNSTI4 64 +ADDP4 +INDIRP4 +CALLV +pop +line 5188 +;5188: DC->Assets.fontRegistered = qtrue; +ADDRGP4 DC +INDIRP4 +CNSTI4 61992 +ADDP4 +CNSTI4 1 +ASGNI4 +line 5189 +;5189: } +LABELV $2417 +line 5190 +;5190: return qtrue; +CNSTI4 1 +RETI4 +LABELV $2414 +endproc MenuParse_font 12 12 +export MenuParse_name +proc MenuParse_name 12 8 +line 5193 +;5191:} +;5192: +;5193:qboolean MenuParse_name( itemDef_t *item, int handle ) { +line 5194 +;5194: menuDef_t *menu = (menuDef_t*)item; +ADDRLP4 0 +ADDRFP4 0 +INDIRP4 +ASGNP4 +line 5195 +;5195: if (!PC_String_Parse(handle, &menu->window.name)) { +ADDRFP4 4 +INDIRI4 +ARGI4 +ADDRLP4 0 +INDIRP4 +CNSTI4 32 +ADDP4 +ARGP4 +ADDRLP4 4 +ADDRGP4 PC_String_Parse +CALLI4 +ASGNI4 +ADDRLP4 4 +INDIRI4 +CNSTI4 0 +NEI4 $2420 +line 5196 +;5196: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $2419 +JUMPV +LABELV $2420 +line 5198 +;5197: } +;5198: if (Q_stricmp(menu->window.name, "main") == 0) { +ADDRLP4 0 +INDIRP4 +CNSTI4 32 +ADDP4 +INDIRP4 +ARGP4 +ADDRGP4 $2424 +ARGP4 +ADDRLP4 8 +ADDRGP4 Q_stricmp +CALLI4 +ASGNI4 +ADDRLP4 8 +INDIRI4 +CNSTI4 0 +NEI4 $2422 +line 5201 +;5199: // default main as having focus +;5200: //menu->window.flags |= WINDOW_HASFOCUS; +;5201: } +LABELV $2422 +line 5202 +;5202: return qtrue; +CNSTI4 1 +RETI4 +LABELV $2419 +endproc MenuParse_name 12 8 +export MenuParse_fullscreen +proc MenuParse_fullscreen 8 8 +line 5205 +;5203:} +;5204: +;5205:qboolean MenuParse_fullscreen( itemDef_t *item, int handle ) { +line 5206 +;5206: menuDef_t *menu = (menuDef_t*)item; +ADDRLP4 0 +ADDRFP4 0 +INDIRP4 +ASGNP4 +line 5207 +;5207: if (!PC_Int_Parse(handle, (int*) &menu->fullScreen)) { // bk001206 - cast qboolean +ADDRFP4 4 +INDIRI4 +ARGI4 +ADDRLP4 0 +INDIRP4 +CNSTI4 184 +ADDP4 +ARGP4 +ADDRLP4 4 +ADDRGP4 PC_Int_Parse +CALLI4 +ASGNI4 +ADDRLP4 4 +INDIRI4 +CNSTI4 0 +NEI4 $2426 +line 5208 +;5208: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $2425 +JUMPV +LABELV $2426 +line 5210 +;5209: } +;5210: return qtrue; +CNSTI4 1 +RETI4 +LABELV $2425 +endproc MenuParse_fullscreen 8 8 +export MenuParse_rect +proc MenuParse_rect 8 8 +line 5213 +;5211:} +;5212: +;5213:qboolean MenuParse_rect( itemDef_t *item, int handle ) { +line 5214 +;5214: menuDef_t *menu = (menuDef_t*)item; +ADDRLP4 0 +ADDRFP4 0 +INDIRP4 +ASGNP4 +line 5215 +;5215: if (!PC_Rect_Parse(handle, &menu->window.rect)) { +ADDRFP4 4 +INDIRI4 +ARGI4 +ADDRLP4 0 +INDIRP4 +ARGP4 +ADDRLP4 4 +ADDRGP4 PC_Rect_Parse +CALLI4 +ASGNI4 +ADDRLP4 4 +INDIRI4 +CNSTI4 0 +NEI4 $2429 +line 5216 +;5216: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $2428 +JUMPV +LABELV $2429 +line 5218 +;5217: } +;5218: return qtrue; +CNSTI4 1 +RETI4 +LABELV $2428 +endproc MenuParse_rect 8 8 +export MenuParse_style +proc MenuParse_style 8 8 +line 5221 +;5219:} +;5220: +;5221:qboolean MenuParse_style( itemDef_t *item, int handle ) { +line 5222 +;5222: menuDef_t *menu = (menuDef_t*)item; +ADDRLP4 0 +ADDRFP4 0 +INDIRP4 +ASGNP4 +line 5223 +;5223: if (!PC_Int_Parse(handle, &menu->window.style)) { +ADDRFP4 4 +INDIRI4 +ARGI4 +ADDRLP4 0 +INDIRP4 +CNSTI4 48 +ADDP4 +ARGP4 +ADDRLP4 4 +ADDRGP4 PC_Int_Parse +CALLI4 +ASGNI4 +ADDRLP4 4 +INDIRI4 +CNSTI4 0 +NEI4 $2432 +line 5224 +;5224: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $2431 +JUMPV +LABELV $2432 +line 5226 +;5225: } +;5226: return qtrue; +CNSTI4 1 +RETI4 +LABELV $2431 +endproc MenuParse_style 8 8 +export MenuParse_visible +proc MenuParse_visible 16 8 +line 5229 +;5227:} +;5228: +;5229:qboolean MenuParse_visible( itemDef_t *item, int handle ) { +line 5231 +;5230: int i; +;5231: menuDef_t *menu = (menuDef_t*)item; +ADDRLP4 4 +ADDRFP4 0 +INDIRP4 +ASGNP4 +line 5233 +;5232: +;5233: if (!PC_Int_Parse(handle, &i)) { +ADDRFP4 4 +INDIRI4 +ARGI4 +ADDRLP4 0 +ARGP4 +ADDRLP4 8 +ADDRGP4 PC_Int_Parse +CALLI4 +ASGNI4 +ADDRLP4 8 +INDIRI4 +CNSTI4 0 +NEI4 $2435 +line 5234 +;5234: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $2434 +JUMPV +LABELV $2435 +line 5236 +;5235: } +;5236: if (i) { +ADDRLP4 0 +INDIRI4 +CNSTI4 0 +EQI4 $2437 +line 5237 +;5237: menu->window.flags |= WINDOW_VISIBLE; +ADDRLP4 12 +ADDRLP4 4 +INDIRP4 +CNSTI4 68 +ADDP4 +ASGNP4 +ADDRLP4 12 +INDIRP4 +ADDRLP4 12 +INDIRP4 +INDIRI4 +CNSTI4 4 +BORI4 +ASGNI4 +line 5238 +;5238: } +LABELV $2437 +line 5239 +;5239: return qtrue; +CNSTI4 1 +RETI4 +LABELV $2434 +endproc MenuParse_visible 16 8 +export MenuParse_onOpen +proc MenuParse_onOpen 8 8 +line 5242 +;5240:} +;5241: +;5242:qboolean MenuParse_onOpen( itemDef_t *item, int handle ) { +line 5243 +;5243: menuDef_t *menu = (menuDef_t*)item; +ADDRLP4 0 +ADDRFP4 0 +INDIRP4 +ASGNP4 +line 5244 +;5244: if (!PC_Script_Parse(handle, &menu->onOpen)) { +ADDRFP4 4 +INDIRI4 +ARGI4 +ADDRLP4 0 +INDIRP4 +CNSTI4 212 +ADDP4 +ARGP4 +ADDRLP4 4 +ADDRGP4 PC_Script_Parse +CALLI4 +ASGNI4 +ADDRLP4 4 +INDIRI4 +CNSTI4 0 +NEI4 $2440 +line 5245 +;5245: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $2439 +JUMPV +LABELV $2440 +line 5247 +;5246: } +;5247: return qtrue; +CNSTI4 1 +RETI4 +LABELV $2439 +endproc MenuParse_onOpen 8 8 +export MenuParse_onClose +proc MenuParse_onClose 8 8 +line 5250 +;5248:} +;5249: +;5250:qboolean MenuParse_onClose( itemDef_t *item, int handle ) { +line 5251 +;5251: menuDef_t *menu = (menuDef_t*)item; +ADDRLP4 0 +ADDRFP4 0 +INDIRP4 +ASGNP4 +line 5252 +;5252: if (!PC_Script_Parse(handle, &menu->onClose)) { +ADDRFP4 4 +INDIRI4 +ARGI4 +ADDRLP4 0 +INDIRP4 +CNSTI4 216 +ADDP4 +ARGP4 +ADDRLP4 4 +ADDRGP4 PC_Script_Parse +CALLI4 +ASGNI4 +ADDRLP4 4 +INDIRI4 +CNSTI4 0 +NEI4 $2443 +line 5253 +;5253: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $2442 +JUMPV +LABELV $2443 +line 5255 +;5254: } +;5255: return qtrue; +CNSTI4 1 +RETI4 +LABELV $2442 +endproc MenuParse_onClose 8 8 +export MenuParse_onESC +proc MenuParse_onESC 8 8 +line 5258 +;5256:} +;5257: +;5258:qboolean MenuParse_onESC( itemDef_t *item, int handle ) { +line 5259 +;5259: menuDef_t *menu = (menuDef_t*)item; +ADDRLP4 0 +ADDRFP4 0 +INDIRP4 +ASGNP4 +line 5260 +;5260: if (!PC_Script_Parse(handle, &menu->onESC)) { +ADDRFP4 4 +INDIRI4 +ARGI4 +ADDRLP4 0 +INDIRP4 +CNSTI4 220 +ADDP4 +ARGP4 +ADDRLP4 4 +ADDRGP4 PC_Script_Parse +CALLI4 +ASGNI4 +ADDRLP4 4 +INDIRI4 +CNSTI4 0 +NEI4 $2446 +line 5261 +;5261: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $2445 +JUMPV +LABELV $2446 +line 5263 +;5262: } +;5263: return qtrue; +CNSTI4 1 +RETI4 +LABELV $2445 +endproc MenuParse_onESC 8 8 +export MenuParse_border +proc MenuParse_border 8 8 +line 5268 +;5264:} +;5265: +;5266: +;5267: +;5268:qboolean MenuParse_border( itemDef_t *item, int handle ) { +line 5269 +;5269: menuDef_t *menu = (menuDef_t*)item; +ADDRLP4 0 +ADDRFP4 0 +INDIRP4 +ASGNP4 +line 5270 +;5270: if (!PC_Int_Parse(handle, &menu->window.border)) { +ADDRFP4 4 +INDIRI4 +ARGI4 +ADDRLP4 0 +INDIRP4 +CNSTI4 52 +ADDP4 +ARGP4 +ADDRLP4 4 +ADDRGP4 PC_Int_Parse +CALLI4 +ASGNI4 +ADDRLP4 4 +INDIRI4 +CNSTI4 0 +NEI4 $2449 +line 5271 +;5271: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $2448 +JUMPV +LABELV $2449 +line 5273 +;5272: } +;5273: return qtrue; +CNSTI4 1 +RETI4 +LABELV $2448 +endproc MenuParse_border 8 8 +export MenuParse_borderSize +proc MenuParse_borderSize 8 8 +line 5276 +;5274:} +;5275: +;5276:qboolean MenuParse_borderSize( itemDef_t *item, int handle ) { +line 5277 +;5277: menuDef_t *menu = (menuDef_t*)item; +ADDRLP4 0 +ADDRFP4 0 +INDIRP4 +ASGNP4 +line 5278 +;5278: if (!PC_Float_Parse(handle, &menu->window.borderSize)) { +ADDRFP4 4 +INDIRI4 +ARGI4 +ADDRLP4 0 +INDIRP4 +CNSTI4 64 +ADDP4 +ARGP4 +ADDRLP4 4 +ADDRGP4 PC_Float_Parse +CALLI4 +ASGNI4 +ADDRLP4 4 +INDIRI4 +CNSTI4 0 +NEI4 $2452 +line 5279 +;5279: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $2451 +JUMPV +LABELV $2452 +line 5281 +;5280: } +;5281: return qtrue; +CNSTI4 1 +RETI4 +LABELV $2451 +endproc MenuParse_borderSize 8 8 +export MenuParse_backcolor +proc MenuParse_backcolor 16 8 +line 5284 +;5282:} +;5283: +;5284:qboolean MenuParse_backcolor( itemDef_t *item, int handle ) { +line 5287 +;5285: int i; +;5286: float f; +;5287: menuDef_t *menu = (menuDef_t*)item; +ADDRLP4 8 +ADDRFP4 0 +INDIRP4 +ASGNP4 +line 5289 +;5288: +;5289: for (i = 0; i < 4; i++) { +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +LABELV $2455 +line 5290 +;5290: if (!PC_Float_Parse(handle, &f)) { +ADDRFP4 4 +INDIRI4 +ARGI4 +ADDRLP4 4 +ARGP4 +ADDRLP4 12 +ADDRGP4 PC_Float_Parse +CALLI4 +ASGNI4 +ADDRLP4 12 +INDIRI4 +CNSTI4 0 +NEI4 $2459 +line 5291 +;5291: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $2454 +JUMPV +LABELV $2459 +line 5293 +;5292: } +;5293: menu->window.backColor[i] = f; +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRLP4 8 +INDIRP4 +CNSTI4 128 +ADDP4 +ADDP4 +ADDRLP4 4 +INDIRF4 +ASGNF4 +line 5294 +;5294: } +LABELV $2456 +line 5289 +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +ADDRLP4 0 +INDIRI4 +CNSTI4 4 +LTI4 $2455 +line 5295 +;5295: return qtrue; +CNSTI4 1 +RETI4 +LABELV $2454 +endproc MenuParse_backcolor 16 8 +export MenuParse_forecolor +proc MenuParse_forecolor 20 8 +line 5298 +;5296:} +;5297: +;5298:qboolean MenuParse_forecolor( itemDef_t *item, int handle ) { +line 5301 +;5299: int i; +;5300: float f; +;5301: menuDef_t *menu = (menuDef_t*)item; +ADDRLP4 4 +ADDRFP4 0 +INDIRP4 +ASGNP4 +line 5303 +;5302: +;5303: for (i = 0; i < 4; i++) { +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +LABELV $2462 +line 5304 +;5304: if (!PC_Float_Parse(handle, &f)) { +ADDRFP4 4 +INDIRI4 +ARGI4 +ADDRLP4 8 +ARGP4 +ADDRLP4 12 +ADDRGP4 PC_Float_Parse +CALLI4 +ASGNI4 +ADDRLP4 12 +INDIRI4 +CNSTI4 0 +NEI4 $2466 +line 5305 +;5305: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $2461 +JUMPV +LABELV $2466 +line 5307 +;5306: } +;5307: menu->window.foreColor[i] = f; +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRLP4 4 +INDIRP4 +CNSTI4 112 +ADDP4 +ADDP4 +ADDRLP4 8 +INDIRF4 +ASGNF4 +line 5308 +;5308: menu->window.flags |= WINDOW_FORECOLORSET; +ADDRLP4 16 +ADDRLP4 4 +INDIRP4 +CNSTI4 68 +ADDP4 +ASGNP4 +ADDRLP4 16 +INDIRP4 +ADDRLP4 16 +INDIRP4 +INDIRI4 +CNSTI4 512 +BORI4 +ASGNI4 +line 5309 +;5309: } +LABELV $2463 +line 5303 +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +ADDRLP4 0 +INDIRI4 +CNSTI4 4 +LTI4 $2462 +line 5310 +;5310: return qtrue; +CNSTI4 1 +RETI4 +LABELV $2461 +endproc MenuParse_forecolor 20 8 +export MenuParse_bordercolor +proc MenuParse_bordercolor 16 8 +line 5313 +;5311:} +;5312: +;5313:qboolean MenuParse_bordercolor( itemDef_t *item, int handle ) { +line 5316 +;5314: int i; +;5315: float f; +;5316: menuDef_t *menu = (menuDef_t*)item; +ADDRLP4 8 +ADDRFP4 0 +INDIRP4 +ASGNP4 +line 5318 +;5317: +;5318: for (i = 0; i < 4; i++) { +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +LABELV $2469 +line 5319 +;5319: if (!PC_Float_Parse(handle, &f)) { +ADDRFP4 4 +INDIRI4 +ARGI4 +ADDRLP4 4 +ARGP4 +ADDRLP4 12 +ADDRGP4 PC_Float_Parse +CALLI4 +ASGNI4 +ADDRLP4 12 +INDIRI4 +CNSTI4 0 +NEI4 $2473 +line 5320 +;5320: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $2468 +JUMPV +LABELV $2473 +line 5322 +;5321: } +;5322: menu->window.borderColor[i] = f; +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRLP4 8 +INDIRP4 +CNSTI4 144 +ADDP4 +ADDP4 +ADDRLP4 4 +INDIRF4 +ASGNF4 +line 5323 +;5323: } +LABELV $2470 +line 5318 +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +ADDRLP4 0 +INDIRI4 +CNSTI4 4 +LTI4 $2469 +line 5324 +;5324: return qtrue; +CNSTI4 1 +RETI4 +LABELV $2468 +endproc MenuParse_bordercolor 16 8 +export MenuParse_focuscolor +proc MenuParse_focuscolor 16 8 +line 5327 +;5325:} +;5326: +;5327:qboolean MenuParse_focuscolor( itemDef_t *item, int handle ) { +line 5330 +;5328: int i; +;5329: float f; +;5330: menuDef_t *menu = (menuDef_t*)item; +ADDRLP4 8 +ADDRFP4 0 +INDIRP4 +ASGNP4 +line 5332 +;5331: +;5332: for (i = 0; i < 4; i++) { +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +LABELV $2476 +line 5333 +;5333: if (!PC_Float_Parse(handle, &f)) { +ADDRFP4 4 +INDIRI4 +ARGI4 +ADDRLP4 4 +ARGP4 +ADDRLP4 12 +ADDRGP4 PC_Float_Parse +CALLI4 +ASGNI4 +ADDRLP4 12 +INDIRI4 +CNSTI4 0 +NEI4 $2480 +line 5334 +;5334: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $2475 +JUMPV +LABELV $2480 +line 5336 +;5335: } +;5336: menu->focusColor[i] = f; +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRLP4 8 +INDIRP4 +CNSTI4 228 +ADDP4 +ADDP4 +ADDRLP4 4 +INDIRF4 +ASGNF4 +line 5337 +;5337: } +LABELV $2477 +line 5332 +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +ADDRLP4 0 +INDIRI4 +CNSTI4 4 +LTI4 $2476 +line 5338 +;5338: return qtrue; +CNSTI4 1 +RETI4 +LABELV $2475 +endproc MenuParse_focuscolor 16 8 +export MenuParse_disablecolor +proc MenuParse_disablecolor 16 8 +line 5341 +;5339:} +;5340: +;5341:qboolean MenuParse_disablecolor( itemDef_t *item, int handle ) { +line 5344 +;5342: int i; +;5343: float f; +;5344: menuDef_t *menu = (menuDef_t*)item; +ADDRLP4 8 +ADDRFP4 0 +INDIRP4 +ASGNP4 +line 5345 +;5345: for (i = 0; i < 4; i++) { +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +LABELV $2483 +line 5346 +;5346: if (!PC_Float_Parse(handle, &f)) { +ADDRFP4 4 +INDIRI4 +ARGI4 +ADDRLP4 4 +ARGP4 +ADDRLP4 12 +ADDRGP4 PC_Float_Parse +CALLI4 +ASGNI4 +ADDRLP4 12 +INDIRI4 +CNSTI4 0 +NEI4 $2487 +line 5347 +;5347: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $2482 +JUMPV +LABELV $2487 +line 5349 +;5348: } +;5349: menu->disableColor[i] = f; +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRLP4 8 +INDIRP4 +CNSTI4 244 +ADDP4 +ADDP4 +ADDRLP4 4 +INDIRF4 +ASGNF4 +line 5350 +;5350: } +LABELV $2484 +line 5345 +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +ADDRLP4 0 +INDIRI4 +CNSTI4 4 +LTI4 $2483 +line 5351 +;5351: return qtrue; +CNSTI4 1 +RETI4 +LABELV $2482 +endproc MenuParse_disablecolor 16 8 +export MenuParse_outlinecolor +proc MenuParse_outlinecolor 8 8 +line 5355 +;5352:} +;5353: +;5354: +;5355:qboolean MenuParse_outlinecolor( itemDef_t *item, int handle ) { +line 5356 +;5356: menuDef_t *menu = (menuDef_t*)item; +ADDRLP4 0 +ADDRFP4 0 +INDIRP4 +ASGNP4 +line 5357 +;5357: if (!PC_Color_Parse(handle, &menu->window.outlineColor)){ +ADDRFP4 4 +INDIRI4 +ARGI4 +ADDRLP4 0 +INDIRP4 +CNSTI4 160 +ADDP4 +ARGP4 +ADDRLP4 4 +ADDRGP4 PC_Color_Parse +CALLI4 +ASGNI4 +ADDRLP4 4 +INDIRI4 +CNSTI4 0 +NEI4 $2490 +line 5358 +;5358: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $2489 +JUMPV +LABELV $2490 +line 5360 +;5359: } +;5360: return qtrue; +CNSTI4 1 +RETI4 +LABELV $2489 +endproc MenuParse_outlinecolor 8 8 +export MenuParse_background +proc MenuParse_background 16 8 +line 5363 +;5361:} +;5362: +;5363:qboolean MenuParse_background( itemDef_t *item, int handle ) { +line 5365 +;5364: const char *buff; +;5365: menuDef_t *menu = (menuDef_t*)item; +ADDRLP4 4 +ADDRFP4 0 +INDIRP4 +ASGNP4 +line 5367 +;5366: +;5367: if (!PC_String_Parse(handle, &buff)) { +ADDRFP4 4 +INDIRI4 +ARGI4 +ADDRLP4 0 +ARGP4 +ADDRLP4 8 +ADDRGP4 PC_String_Parse +CALLI4 +ASGNI4 +ADDRLP4 8 +INDIRI4 +CNSTI4 0 +NEI4 $2493 +line 5368 +;5368: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $2492 +JUMPV +LABELV $2493 +line 5370 +;5369: } +;5370: menu->window.background = DC->registerShaderNoMip(buff); +ADDRLP4 0 +INDIRP4 +ARGP4 +ADDRLP4 12 +ADDRGP4 DC +INDIRP4 +INDIRP4 +CALLI4 +ASGNI4 +ADDRLP4 4 +INDIRP4 +CNSTI4 176 +ADDP4 +ADDRLP4 12 +INDIRI4 +ASGNI4 +line 5371 +;5371: return qtrue; +CNSTI4 1 +RETI4 +LABELV $2492 +endproc MenuParse_background 16 8 +export MenuParse_cinematic +proc MenuParse_cinematic 8 8 +line 5374 +;5372:} +;5373: +;5374:qboolean MenuParse_cinematic( itemDef_t *item, int handle ) { +line 5375 +;5375: menuDef_t *menu = (menuDef_t*)item; +ADDRLP4 0 +ADDRFP4 0 +INDIRP4 +ASGNP4 +line 5377 +;5376: +;5377: if (!PC_String_Parse(handle, &menu->window.cinematicName)) { +ADDRFP4 4 +INDIRI4 +ARGI4 +ADDRLP4 0 +INDIRP4 +CNSTI4 40 +ADDP4 +ARGP4 +ADDRLP4 4 +ADDRGP4 PC_String_Parse +CALLI4 +ASGNI4 +ADDRLP4 4 +INDIRI4 +CNSTI4 0 +NEI4 $2496 +line 5378 +;5378: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $2495 +JUMPV +LABELV $2496 +line 5380 +;5379: } +;5380: return qtrue; +CNSTI4 1 +RETI4 +LABELV $2495 +endproc MenuParse_cinematic 8 8 +export MenuParse_ownerdrawFlag +proc MenuParse_ownerdrawFlag 16 8 +line 5383 +;5381:} +;5382: +;5383:qboolean MenuParse_ownerdrawFlag( itemDef_t *item, int handle ) { +line 5385 +;5384: int i; +;5385: menuDef_t *menu = (menuDef_t*)item; +ADDRLP4 4 +ADDRFP4 0 +INDIRP4 +ASGNP4 +line 5387 +;5386: +;5387: if (!PC_Int_Parse(handle, &i)) { +ADDRFP4 4 +INDIRI4 +ARGI4 +ADDRLP4 0 +ARGP4 +ADDRLP4 8 +ADDRGP4 PC_Int_Parse +CALLI4 +ASGNI4 +ADDRLP4 8 +INDIRI4 +CNSTI4 0 +NEI4 $2499 +line 5388 +;5388: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $2498 +JUMPV +LABELV $2499 +line 5390 +;5389: } +;5390: menu->window.ownerDrawFlags |= i; +ADDRLP4 12 +ADDRLP4 4 +INDIRP4 +CNSTI4 60 +ADDP4 +ASGNP4 +ADDRLP4 12 +INDIRP4 +ADDRLP4 12 +INDIRP4 +INDIRI4 +ADDRLP4 0 +INDIRI4 +BORI4 +ASGNI4 +line 5391 +;5391: return qtrue; +CNSTI4 1 +RETI4 +LABELV $2498 +endproc MenuParse_ownerdrawFlag 16 8 +export MenuParse_ownerdraw +proc MenuParse_ownerdraw 8 8 +line 5394 +;5392:} +;5393: +;5394:qboolean MenuParse_ownerdraw( itemDef_t *item, int handle ) { +line 5395 +;5395: menuDef_t *menu = (menuDef_t*)item; +ADDRLP4 0 +ADDRFP4 0 +INDIRP4 +ASGNP4 +line 5397 +;5396: +;5397: if (!PC_Int_Parse(handle, &menu->window.ownerDraw)) { +ADDRFP4 4 +INDIRI4 +ARGI4 +ADDRLP4 0 +INDIRP4 +CNSTI4 56 +ADDP4 +ARGP4 +ADDRLP4 4 +ADDRGP4 PC_Int_Parse +CALLI4 +ASGNI4 +ADDRLP4 4 +INDIRI4 +CNSTI4 0 +NEI4 $2502 +line 5398 +;5398: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $2501 +JUMPV +LABELV $2502 +line 5400 +;5399: } +;5400: return qtrue; +CNSTI4 1 +RETI4 +LABELV $2501 +endproc MenuParse_ownerdraw 8 8 +export MenuParse_popup +proc MenuParse_popup 8 0 +line 5405 +;5401:} +;5402: +;5403: +;5404:// decoration +;5405:qboolean MenuParse_popup( itemDef_t *item, int handle ) { +line 5406 +;5406: menuDef_t *menu = (menuDef_t*)item; +ADDRLP4 0 +ADDRFP4 0 +INDIRP4 +ASGNP4 +line 5407 +;5407: menu->window.flags |= WINDOW_POPUP; +ADDRLP4 4 +ADDRLP4 0 +INDIRP4 +CNSTI4 68 +ADDP4 +ASGNP4 +ADDRLP4 4 +INDIRP4 +ADDRLP4 4 +INDIRP4 +INDIRI4 +CNSTI4 2097152 +BORI4 +ASGNI4 +line 5408 +;5408: return qtrue; +CNSTI4 1 +RETI4 +LABELV $2504 +endproc MenuParse_popup 8 0 +export MenuParse_outOfBounds +proc MenuParse_outOfBounds 8 0 +line 5412 +;5409:} +;5410: +;5411: +;5412:qboolean MenuParse_outOfBounds( itemDef_t *item, int handle ) { +line 5413 +;5413: menuDef_t *menu = (menuDef_t*)item; +ADDRLP4 0 +ADDRFP4 0 +INDIRP4 +ASGNP4 +line 5415 +;5414: +;5415: menu->window.flags |= WINDOW_OOB_CLICK; +ADDRLP4 4 +ADDRLP4 0 +INDIRP4 +CNSTI4 68 +ADDP4 +ASGNP4 +ADDRLP4 4 +INDIRP4 +ADDRLP4 4 +INDIRP4 +INDIRI4 +CNSTI4 131072 +BORI4 +ASGNI4 +line 5416 +;5416: return qtrue; +CNSTI4 1 +RETI4 +LABELV $2505 +endproc MenuParse_outOfBounds 8 0 +export MenuParse_soundLoop +proc MenuParse_soundLoop 8 8 +line 5419 +;5417:} +;5418: +;5419:qboolean MenuParse_soundLoop( itemDef_t *item, int handle ) { +line 5420 +;5420: menuDef_t *menu = (menuDef_t*)item; +ADDRLP4 0 +ADDRFP4 0 +INDIRP4 +ASGNP4 +line 5422 +;5421: +;5422: if (!PC_String_Parse(handle, &menu->soundName)) { +ADDRFP4 4 +INDIRI4 +ARGI4 +ADDRLP4 0 +INDIRP4 +CNSTI4 224 +ADDP4 +ARGP4 +ADDRLP4 4 +ADDRGP4 PC_String_Parse +CALLI4 +ASGNI4 +ADDRLP4 4 +INDIRI4 +CNSTI4 0 +NEI4 $2507 +line 5423 +;5423: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $2506 +JUMPV +LABELV $2507 +line 5425 +;5424: } +;5425: return qtrue; +CNSTI4 1 +RETI4 +LABELV $2506 +endproc MenuParse_soundLoop 8 8 +export MenuParse_fadeClamp +proc MenuParse_fadeClamp 8 8 +line 5428 +;5426:} +;5427: +;5428:qboolean MenuParse_fadeClamp( itemDef_t *item, int handle ) { +line 5429 +;5429: menuDef_t *menu = (menuDef_t*)item; +ADDRLP4 0 +ADDRFP4 0 +INDIRP4 +ASGNP4 +line 5431 +;5430: +;5431: if (!PC_Float_Parse(handle, &menu->fadeClamp)) { +ADDRFP4 4 +INDIRI4 +ARGI4 +ADDRLP4 0 +INDIRP4 +CNSTI4 204 +ADDP4 +ARGP4 +ADDRLP4 4 +ADDRGP4 PC_Float_Parse +CALLI4 +ASGNI4 +ADDRLP4 4 +INDIRI4 +CNSTI4 0 +NEI4 $2510 +line 5432 +;5432: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $2509 +JUMPV +LABELV $2510 +line 5434 +;5433: } +;5434: return qtrue; +CNSTI4 1 +RETI4 +LABELV $2509 +endproc MenuParse_fadeClamp 8 8 +export MenuParse_fadeAmount +proc MenuParse_fadeAmount 8 8 +line 5437 +;5435:} +;5436: +;5437:qboolean MenuParse_fadeAmount( itemDef_t *item, int handle ) { +line 5438 +;5438: menuDef_t *menu = (menuDef_t*)item; +ADDRLP4 0 +ADDRFP4 0 +INDIRP4 +ASGNP4 +line 5440 +;5439: +;5440: if (!PC_Float_Parse(handle, &menu->fadeAmount)) { +ADDRFP4 4 +INDIRI4 +ARGI4 +ADDRLP4 0 +INDIRP4 +CNSTI4 208 +ADDP4 +ARGP4 +ADDRLP4 4 +ADDRGP4 PC_Float_Parse +CALLI4 +ASGNI4 +ADDRLP4 4 +INDIRI4 +CNSTI4 0 +NEI4 $2513 +line 5441 +;5441: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $2512 +JUMPV +LABELV $2513 +line 5443 +;5442: } +;5443: return qtrue; +CNSTI4 1 +RETI4 +LABELV $2512 +endproc MenuParse_fadeAmount 8 8 +export MenuParse_fadeCycle +proc MenuParse_fadeCycle 8 8 +line 5447 +;5444:} +;5445: +;5446: +;5447:qboolean MenuParse_fadeCycle( itemDef_t *item, int handle ) { +line 5448 +;5448: menuDef_t *menu = (menuDef_t*)item; +ADDRLP4 0 +ADDRFP4 0 +INDIRP4 +ASGNP4 +line 5450 +;5449: +;5450: if (!PC_Int_Parse(handle, &menu->fadeCycle)) { +ADDRFP4 4 +INDIRI4 +ARGI4 +ADDRLP4 0 +INDIRP4 +CNSTI4 200 +ADDP4 +ARGP4 +ADDRLP4 4 +ADDRGP4 PC_Int_Parse +CALLI4 +ASGNI4 +ADDRLP4 4 +INDIRI4 +CNSTI4 0 +NEI4 $2516 +line 5451 +;5451: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $2515 +JUMPV +LABELV $2516 +line 5453 +;5452: } +;5453: return qtrue; +CNSTI4 1 +RETI4 +LABELV $2515 +endproc MenuParse_fadeCycle 8 8 +export MenuParse_itemDef +proc MenuParse_itemDef 40 8 +line 5457 +;5454:} +;5455: +;5456: +;5457:qboolean MenuParse_itemDef( itemDef_t *item, int handle ) { +line 5458 +;5458: menuDef_t *menu = (menuDef_t*)item; +ADDRLP4 0 +ADDRFP4 0 +INDIRP4 +ASGNP4 +line 5459 +;5459: if (menu->itemCount < MAX_MENUITEMS) { +ADDRLP4 0 +INDIRP4 +CNSTI4 188 +ADDP4 +INDIRI4 +CNSTI4 96 +GEI4 $2519 +line 5460 +;5460: menu->items[menu->itemCount] = UI_Alloc(sizeof(itemDef_t)); +CNSTI4 540 +ARGI4 +ADDRLP4 4 +ADDRGP4 UI_Alloc +CALLP4 +ASGNP4 +ADDRLP4 0 +INDIRP4 +CNSTI4 188 +ADDP4 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRLP4 0 +INDIRP4 +CNSTI4 260 +ADDP4 +ADDP4 +ADDRLP4 4 +INDIRP4 +ASGNP4 +line 5461 +;5461: Item_Init(menu->items[menu->itemCount]); +ADDRLP4 0 +INDIRP4 +CNSTI4 188 +ADDP4 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRLP4 0 +INDIRP4 +CNSTI4 260 +ADDP4 +ADDP4 +INDIRP4 +ARGP4 +ADDRGP4 Item_Init +CALLV +pop +line 5462 +;5462: if (!Item_Parse(handle, menu->items[menu->itemCount])) { +ADDRFP4 4 +INDIRI4 +ARGI4 +ADDRLP4 0 +INDIRP4 +CNSTI4 188 +ADDP4 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRLP4 0 +INDIRP4 +CNSTI4 260 +ADDP4 +ADDP4 +INDIRP4 +ARGP4 +ADDRLP4 20 +ADDRGP4 Item_Parse +CALLI4 +ASGNI4 +ADDRLP4 20 +INDIRI4 +CNSTI4 0 +NEI4 $2521 +line 5463 +;5463: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $2518 +JUMPV +LABELV $2521 +line 5465 +;5464: } +;5465: Item_InitControls(menu->items[menu->itemCount]); +ADDRLP4 0 +INDIRP4 +CNSTI4 188 +ADDP4 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRLP4 0 +INDIRP4 +CNSTI4 260 +ADDP4 +ADDP4 +INDIRP4 +ARGP4 +ADDRGP4 Item_InitControls +CALLV +pop +line 5466 +;5466: menu->items[menu->itemCount++]->parent = menu; +ADDRLP4 32 +ADDRLP4 0 +INDIRP4 +CNSTI4 188 +ADDP4 +ASGNP4 +ADDRLP4 28 +ADDRLP4 32 +INDIRP4 +INDIRI4 +ASGNI4 +ADDRLP4 32 +INDIRP4 +ADDRLP4 28 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +ADDRLP4 28 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRLP4 0 +INDIRP4 +CNSTI4 260 +ADDP4 +ADDP4 +INDIRP4 +CNSTI4 228 +ADDP4 +ADDRLP4 0 +INDIRP4 +ASGNP4 +line 5467 +;5467: } +LABELV $2519 +line 5468 +;5468: return qtrue; +CNSTI4 1 +RETI4 +LABELV $2518 +endproc MenuParse_itemDef 40 8 +data +export menuParseKeywords +align 4 +LABELV menuParseKeywords +address $2523 +address MenuParse_font +byte 4 0 +address $2320 +address MenuParse_name +byte 4 0 +address $2524 +address MenuParse_fullscreen +byte 4 0 +address $2330 +address MenuParse_rect +byte 4 0 +address $2331 +address MenuParse_style +byte 4 0 +address $2345 +address MenuParse_visible +byte 4 0 +address $2525 +address MenuParse_onOpen +byte 4 0 +address $2526 +address MenuParse_onClose +byte 4 0 +address $2527 +address MenuParse_onESC +byte 4 0 +address $2343 +address MenuParse_border +byte 4 0 +address $2528 +address MenuParse_borderSize +byte 4 0 +address $358 +address MenuParse_backcolor +byte 4 0 +address $361 +address MenuParse_forecolor +byte 4 0 +address $364 +address MenuParse_bordercolor +byte 4 0 +address $2529 +address MenuParse_focuscolor +byte 4 0 +address $2530 +address MenuParse_disablecolor +byte 4 0 +address $2353 +address MenuParse_outlinecolor +byte 4 0 +address $2354 +address MenuParse_background +byte 4 0 +address $2346 +address MenuParse_ownerdraw +byte 4 0 +address $2371 +address MenuParse_ownerdrawFlag +byte 4 0 +address $2531 +address MenuParse_outOfBounds +byte 4 0 +address $2532 +address MenuParse_soundLoop +byte 4 0 +address $2533 +address MenuParse_itemDef +byte 4 0 +address $2377 +address MenuParse_cinematic +byte 4 0 +address $2534 +address MenuParse_popup +byte 4 0 +address $2535 +address MenuParse_fadeClamp +byte 4 0 +address $2536 +address MenuParse_fadeCycle +byte 4 0 +address $2537 +address MenuParse_fadeAmount +byte 4 0 +byte 4 0 +byte 4 0 +byte 4 0 +export Menu_SetupKeywordHash +code +proc Menu_SetupKeywordHash 4 12 +line 5510 +;5469:} +;5470: +;5471:keywordHash_t menuParseKeywords[] = { +;5472: {"font", MenuParse_font, NULL}, +;5473: {"name", MenuParse_name, NULL}, +;5474: {"fullscreen", MenuParse_fullscreen, NULL}, +;5475: {"rect", MenuParse_rect, NULL}, +;5476: {"style", MenuParse_style, NULL}, +;5477: {"visible", MenuParse_visible, NULL}, +;5478: {"onOpen", MenuParse_onOpen, NULL}, +;5479: {"onClose", MenuParse_onClose, NULL}, +;5480: {"onESC", MenuParse_onESC, NULL}, +;5481: {"border", MenuParse_border, NULL}, +;5482: {"borderSize", MenuParse_borderSize, NULL}, +;5483: {"backcolor", MenuParse_backcolor, NULL}, +;5484: {"forecolor", MenuParse_forecolor, NULL}, +;5485: {"bordercolor", MenuParse_bordercolor, NULL}, +;5486: {"focuscolor", MenuParse_focuscolor, NULL}, +;5487: {"disablecolor", MenuParse_disablecolor, NULL}, +;5488: {"outlinecolor", MenuParse_outlinecolor, NULL}, +;5489: {"background", MenuParse_background, NULL}, +;5490: {"ownerdraw", MenuParse_ownerdraw, NULL}, +;5491: {"ownerdrawFlag", MenuParse_ownerdrawFlag, NULL}, +;5492: {"outOfBoundsClick", MenuParse_outOfBounds, NULL}, +;5493: {"soundLoop", MenuParse_soundLoop, NULL}, +;5494: {"itemDef", MenuParse_itemDef, NULL}, +;5495: {"cinematic", MenuParse_cinematic, NULL}, +;5496: {"popup", MenuParse_popup, NULL}, +;5497: {"fadeClamp", MenuParse_fadeClamp, NULL}, +;5498: {"fadeCycle", MenuParse_fadeCycle, NULL}, +;5499: {"fadeAmount", MenuParse_fadeAmount, NULL}, +;5500: {NULL, NULL, NULL} +;5501:}; +;5502: +;5503:keywordHash_t *menuParseKeywordHash[KEYWORDHASH_SIZE]; +;5504: +;5505:/* +;5506:=============== +;5507:Menu_SetupKeywordHash +;5508:=============== +;5509:*/ +;5510:void Menu_SetupKeywordHash(void) { +line 5513 +;5511: int i; +;5512: +;5513: memset(menuParseKeywordHash, 0, sizeof(menuParseKeywordHash)); +ADDRGP4 menuParseKeywordHash +ARGP4 +CNSTI4 0 +ARGI4 +CNSTI4 2048 +ARGI4 +ADDRGP4 memset +CALLP4 +pop +line 5514 +;5514: for (i = 0; menuParseKeywords[i].keyword; i++) { +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +ADDRGP4 $2542 +JUMPV +LABELV $2539 +line 5515 +;5515: KeywordHash_Add(menuParseKeywordHash, &menuParseKeywords[i]); +ADDRGP4 menuParseKeywordHash +ARGP4 +CNSTI4 12 +ADDRLP4 0 +INDIRI4 +MULI4 +ADDRGP4 menuParseKeywords +ADDP4 +ARGP4 +ADDRGP4 KeywordHash_Add +CALLV +pop +line 5516 +;5516: } +LABELV $2540 +line 5514 +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +LABELV $2542 +CNSTI4 12 +ADDRLP4 0 +INDIRI4 +MULI4 +ADDRGP4 menuParseKeywords +ADDP4 +INDIRP4 +CVPU4 4 +CNSTU4 0 +NEU4 $2539 +line 5517 +;5517:} +LABELV $2538 +endproc Menu_SetupKeywordHash 4 12 +export Menu_Parse +proc Menu_Parse 1060 12 +line 5524 +;5518: +;5519:/* +;5520:=============== +;5521:Menu_Parse +;5522:=============== +;5523:*/ +;5524:qboolean Menu_Parse(int handle, menuDef_t *menu) { +line 5528 +;5525: pc_token_t token; +;5526: keywordHash_t *key; +;5527: +;5528: if (!trap_PC_ReadToken(handle, &token)) +ADDRFP4 0 +INDIRI4 +ARGI4 +ADDRLP4 0 +ARGP4 +ADDRLP4 1044 +ADDRGP4 trap_PC_ReadToken +CALLI4 +ASGNI4 +ADDRLP4 1044 +INDIRI4 +CNSTI4 0 +NEI4 $2544 +line 5529 +;5529: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $2543 +JUMPV +LABELV $2544 +line 5530 +;5530: if (*token.string != '{') { +ADDRLP4 0+16 +INDIRI1 +CVII4 1 +CNSTI4 123 +EQI4 $2550 +line 5531 +;5531: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $2543 +JUMPV +LABELV $2549 +line 5534 +;5532: } +;5533: +;5534: while ( 1 ) { +line 5536 +;5535: +;5536: memset(&token, 0, sizeof(pc_token_t)); +ADDRLP4 0 +ARGP4 +CNSTI4 0 +ARGI4 +CNSTI4 1040 +ARGI4 +ADDRGP4 memset +CALLP4 +pop +line 5537 +;5537: if (!trap_PC_ReadToken(handle, &token)) { +ADDRFP4 0 +INDIRI4 +ARGI4 +ADDRLP4 0 +ARGP4 +ADDRLP4 1048 +ADDRGP4 trap_PC_ReadToken +CALLI4 +ASGNI4 +ADDRLP4 1048 +INDIRI4 +CNSTI4 0 +NEI4 $2552 +line 5538 +;5538: PC_SourceError(handle, "end of file inside menu\n"); +ADDRFP4 0 +INDIRI4 +ARGI4 +ADDRGP4 $2554 +ARGP4 +ADDRGP4 PC_SourceError +CALLV +pop +line 5539 +;5539: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $2543 +JUMPV +LABELV $2552 +line 5542 +;5540: } +;5541: +;5542: if (*token.string == '}') { +ADDRLP4 0+16 +INDIRI1 +CVII4 1 +CNSTI4 125 +NEI4 $2555 +line 5543 +;5543: return qtrue; +CNSTI4 1 +RETI4 +ADDRGP4 $2543 +JUMPV +LABELV $2555 +line 5546 +;5544: } +;5545: +;5546: key = KeywordHash_Find(menuParseKeywordHash, token.string); +ADDRGP4 menuParseKeywordHash +ARGP4 +ADDRLP4 0+16 +ARGP4 +ADDRLP4 1052 +ADDRGP4 KeywordHash_Find +CALLP4 +ASGNP4 +ADDRLP4 1040 +ADDRLP4 1052 +INDIRP4 +ASGNP4 +line 5547 +;5547: if (!key) { +ADDRLP4 1040 +INDIRP4 +CVPU4 4 +CNSTU4 0 +NEU4 $2559 +line 5548 +;5548: PC_SourceError(handle, "unknown menu keyword %s", token.string); +ADDRFP4 0 +INDIRI4 +ARGI4 +ADDRGP4 $2561 +ARGP4 +ADDRLP4 0+16 +ARGP4 +ADDRGP4 PC_SourceError +CALLV +pop +line 5549 +;5549: continue; +ADDRGP4 $2550 +JUMPV +LABELV $2559 +line 5551 +;5550: } +;5551: if ( !key->func((itemDef_t*)menu, handle) ) { +ADDRFP4 4 +INDIRP4 +ARGP4 +ADDRFP4 0 +INDIRI4 +ARGI4 +ADDRLP4 1056 +ADDRLP4 1040 +INDIRP4 +CNSTI4 4 +ADDP4 +INDIRP4 +CALLI4 +ASGNI4 +ADDRLP4 1056 +INDIRI4 +CNSTI4 0 +NEI4 $2563 +line 5552 +;5552: PC_SourceError(handle, "couldn't parse menu keyword %s", token.string); +ADDRFP4 0 +INDIRI4 +ARGI4 +ADDRGP4 $2565 +ARGP4 +ADDRLP4 0+16 +ARGP4 +ADDRGP4 PC_SourceError +CALLV +pop +line 5553 +;5553: return qfalse; +CNSTI4 0 +RETI4 +ADDRGP4 $2543 +JUMPV +LABELV $2563 +line 5555 +;5554: } +;5555: } +LABELV $2550 +line 5534 +ADDRGP4 $2549 +JUMPV +line 5556 +;5556: return qfalse; // bk001205 - LCC missing return value +CNSTI4 0 +RETI4 +LABELV $2543 +endproc Menu_Parse 1060 12 +export Menu_New +proc Menu_New 12 8 +line 5564 +;5557:} +;5558: +;5559:/* +;5560:=============== +;5561:Menu_New +;5562:=============== +;5563:*/ +;5564:void Menu_New(int handle) { +line 5565 +;5565: menuDef_t *menu = &Menus[menuCount]; +ADDRLP4 0 +CNSTI4 644 +ADDRGP4 menuCount +INDIRI4 +MULI4 +ADDRGP4 Menus +ADDP4 +ASGNP4 +line 5567 +;5566: +;5567: if (menuCount < MAX_MENUS) { +ADDRGP4 menuCount +INDIRI4 +CNSTI4 64 +GEI4 $2568 +line 5568 +;5568: Menu_Init(menu); +ADDRLP4 0 +INDIRP4 +ARGP4 +ADDRGP4 Menu_Init +CALLV +pop +line 5569 +;5569: if (Menu_Parse(handle, menu)) { +ADDRFP4 0 +INDIRI4 +ARGI4 +ADDRLP4 0 +INDIRP4 +ARGP4 +ADDRLP4 4 +ADDRGP4 Menu_Parse +CALLI4 +ASGNI4 +ADDRLP4 4 +INDIRI4 +CNSTI4 0 +EQI4 $2570 +line 5570 +;5570: Menu_PostParse(menu); +ADDRLP4 0 +INDIRP4 +ARGP4 +ADDRGP4 Menu_PostParse +CALLV +pop +line 5571 +;5571: menuCount++; +ADDRLP4 8 +ADDRGP4 menuCount +ASGNP4 +ADDRLP4 8 +INDIRP4 +ADDRLP4 8 +INDIRP4 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +line 5572 +;5572: } +LABELV $2570 +line 5573 +;5573: } +LABELV $2568 +line 5574 +;5574:} +LABELV $2567 +endproc Menu_New 12 8 +export Menu_Count +proc Menu_Count 0 0 +line 5576 +;5575: +;5576:int Menu_Count() { +line 5577 +;5577: return menuCount; +ADDRGP4 menuCount +INDIRI4 +RETI4 +LABELV $2572 +endproc Menu_Count 0 0 +lit +align 4 +LABELV $2582 +byte 4 1065353216 +byte 4 1065353216 +byte 4 1065353216 +byte 4 1065353216 +export Menu_PaintAll +code +proc Menu_PaintAll 32 32 +line 5580 +;5578:} +;5579: +;5580:void Menu_PaintAll() { +line 5582 +;5581: int i; +;5582: if (captureFunc) { +ADDRGP4 captureFunc +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $2574 +line 5583 +;5583: captureFunc(captureData); +ADDRGP4 captureData +INDIRP4 +ARGP4 +ADDRGP4 captureFunc +INDIRP4 +CALLV +pop +line 5584 +;5584: } +LABELV $2574 +line 5586 +;5585: +;5586: for (i = 0; i < Menu_Count(); i++) { +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +ADDRGP4 $2579 +JUMPV +LABELV $2576 +line 5587 +;5587: Menu_Paint(&Menus[i], qfalse); +CNSTI4 644 +ADDRLP4 0 +INDIRI4 +MULI4 +ADDRGP4 Menus +ADDP4 +ARGP4 +CNSTI4 0 +ARGI4 +ADDRGP4 Menu_Paint +CALLV +pop +line 5588 +;5588: } +LABELV $2577 +line 5586 +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +LABELV $2579 +ADDRLP4 4 +ADDRGP4 Menu_Count +CALLI4 +ASGNI4 +ADDRLP4 0 +INDIRI4 +ADDRLP4 4 +INDIRI4 +LTI4 $2576 +line 5590 +;5589: +;5590: if (debugMode) { +ADDRGP4 debugMode +INDIRI4 +CNSTI4 0 +EQI4 $2580 +line 5591 +;5591: vec4_t v = {1, 1, 1, 1}; +ADDRLP4 8 +ADDRGP4 $2582 +INDIRB +ASGNB 16 +line 5592 +;5592: DC->drawText(5, 25, .5, v, va("fps: %f", DC->FPS), 0, 0, 0); +ADDRGP4 $2583 +ARGP4 +ADDRGP4 DC +INDIRP4 +CNSTI4 73412 +ADDP4 +INDIRF4 +ARGF4 +ADDRLP4 24 +ADDRGP4 va +CALLP4 +ASGNP4 +CNSTF4 1084227584 +ARGF4 +CNSTF4 1103626240 +ARGF4 +CNSTF4 1056964608 +ARGF4 +ADDRLP4 8 +ARGP4 +ADDRLP4 24 +INDIRP4 +ARGP4 +CNSTF4 0 +ARGF4 +ADDRLP4 28 +CNSTI4 0 +ASGNI4 +ADDRLP4 28 +INDIRI4 +ARGI4 +ADDRLP4 28 +INDIRI4 +ARGI4 +ADDRGP4 DC +INDIRP4 +CNSTI4 16 +ADDP4 +INDIRP4 +CALLV +pop +line 5593 +;5593: } +LABELV $2580 +line 5594 +;5594:} +LABELV $2573 +endproc Menu_PaintAll 32 32 +export Menu_Reset +proc Menu_Reset 0 0 +line 5596 +;5595: +;5596:void Menu_Reset() { +line 5597 +;5597: menuCount = 0; +ADDRGP4 menuCount +CNSTI4 0 +ASGNI4 +line 5598 +;5598:} +LABELV $2584 +endproc Menu_Reset 0 0 +export Display_GetContext +proc Display_GetContext 0 0 +line 5600 +;5599: +;5600:displayContextDef_t *Display_GetContext() { +line 5601 +;5601: return DC; +ADDRGP4 DC +INDIRP4 +RETP4 +LABELV $2585 +endproc Display_GetContext 0 0 +export Display_CaptureItem +proc Display_CaptureItem 8 12 +line 5609 +;5602:} +;5603: +;5604:#ifndef MISSIONPACK // bk001206 +;5605:static float captureX; +;5606:static float captureY; +;5607:#endif +;5608: +;5609:void *Display_CaptureItem(int x, int y) { +line 5612 +;5610: int i; +;5611: +;5612: for (i = 0; i < menuCount; i++) { +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +ADDRGP4 $2590 +JUMPV +LABELV $2587 +line 5615 +;5613: // turn off focus each item +;5614: // menu->items[i].window.flags &= ~WINDOW_HASFOCUS; +;5615: if (Rect_ContainsPoint(&Menus[i].window.rect, x, y)) { +CNSTI4 644 +ADDRLP4 0 +INDIRI4 +MULI4 +ADDRGP4 Menus +ADDP4 +ARGP4 +ADDRFP4 0 +INDIRI4 +CVIF4 4 +ARGF4 +ADDRFP4 4 +INDIRI4 +CVIF4 4 +ARGF4 +ADDRLP4 4 +ADDRGP4 Rect_ContainsPoint +CALLI4 +ASGNI4 +ADDRLP4 4 +INDIRI4 +CNSTI4 0 +EQI4 $2591 +line 5616 +;5616: return &Menus[i]; +CNSTI4 644 +ADDRLP4 0 +INDIRI4 +MULI4 +ADDRGP4 Menus +ADDP4 +RETP4 +ADDRGP4 $2586 +JUMPV +LABELV $2591 +line 5618 +;5617: } +;5618: } +LABELV $2588 +line 5612 +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +LABELV $2590 +ADDRLP4 0 +INDIRI4 +ADDRGP4 menuCount +INDIRI4 +LTI4 $2587 +line 5619 +;5619: return NULL; +CNSTP4 0 +RETP4 +LABELV $2586 +endproc Display_CaptureItem 8 12 +export Display_MouseMove +proc Display_MouseMove 16 12 +line 5624 +;5620:} +;5621: +;5622: +;5623:// FIXME: +;5624:qboolean Display_MouseMove(void *p, int x, int y) { +line 5626 +;5625: int i; +;5626: menuDef_t *menu = p; +ADDRLP4 4 +ADDRFP4 0 +INDIRP4 +ASGNP4 +line 5628 +;5627: +;5628: if (menu == NULL) { +ADDRLP4 4 +INDIRP4 +CVPU4 4 +CNSTU4 0 +NEU4 $2594 +line 5629 +;5629: menu = Menu_GetFocused(); +ADDRLP4 8 +ADDRGP4 Menu_GetFocused +CALLP4 +ASGNP4 +ADDRLP4 4 +ADDRLP4 8 +INDIRP4 +ASGNP4 +line 5630 +;5630: if (menu) { +ADDRLP4 4 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $2596 +line 5631 +;5631: if (menu->window.flags & WINDOW_POPUP) { +ADDRLP4 4 +INDIRP4 +CNSTI4 68 +ADDP4 +INDIRI4 +CNSTI4 2097152 +BANDI4 +CNSTI4 0 +EQI4 $2598 +line 5632 +;5632: Menu_HandleMouseMove(menu, x, y); +ADDRLP4 4 +INDIRP4 +ARGP4 +ADDRFP4 4 +INDIRI4 +CVIF4 4 +ARGF4 +ADDRFP4 8 +INDIRI4 +CVIF4 4 +ARGF4 +ADDRGP4 Menu_HandleMouseMove +CALLV +pop +line 5633 +;5633: return qtrue; +CNSTI4 1 +RETI4 +ADDRGP4 $2593 +JUMPV +LABELV $2598 +line 5635 +;5634: } +;5635: } +LABELV $2596 +line 5636 +;5636: for (i = 0; i < menuCount; i++) { +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +ADDRGP4 $2603 +JUMPV +LABELV $2600 +line 5637 +;5637: Menu_HandleMouseMove(&Menus[i], x, y); +CNSTI4 644 +ADDRLP4 0 +INDIRI4 +MULI4 +ADDRGP4 Menus +ADDP4 +ARGP4 +ADDRFP4 4 +INDIRI4 +CVIF4 4 +ARGF4 +ADDRFP4 8 +INDIRI4 +CVIF4 4 +ARGF4 +ADDRGP4 Menu_HandleMouseMove +CALLV +pop +line 5638 +;5638: } +LABELV $2601 +line 5636 +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +LABELV $2603 +ADDRLP4 0 +INDIRI4 +ADDRGP4 menuCount +INDIRI4 +LTI4 $2600 +line 5639 +;5639: } else { +ADDRGP4 $2595 +JUMPV +LABELV $2594 +line 5640 +;5640: menu->window.rect.x += x; +ADDRLP4 4 +INDIRP4 +ADDRLP4 4 +INDIRP4 +INDIRF4 +ADDRFP4 4 +INDIRI4 +CVIF4 4 +ADDF4 +ASGNF4 +line 5641 +;5641: menu->window.rect.y += y; +ADDRLP4 12 +ADDRLP4 4 +INDIRP4 +CNSTI4 4 +ADDP4 +ASGNP4 +ADDRLP4 12 +INDIRP4 +ADDRLP4 12 +INDIRP4 +INDIRF4 +ADDRFP4 8 +INDIRI4 +CVIF4 4 +ADDF4 +ASGNF4 +line 5642 +;5642: Menu_UpdatePosition(menu); +ADDRLP4 4 +INDIRP4 +ARGP4 +ADDRGP4 Menu_UpdatePosition +CALLV +pop +line 5643 +;5643: } +LABELV $2595 +line 5644 +;5644: return qtrue; +CNSTI4 1 +RETI4 +LABELV $2593 +endproc Display_MouseMove 16 12 +export Display_CursorType +proc Display_CursorType 28 12 +line 5648 +;5645: +;5646:} +;5647: +;5648:int Display_CursorType(int x, int y) { +line 5650 +;5649: int i; +;5650: for (i = 0; i < menuCount; i++) { +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +ADDRGP4 $2608 +JUMPV +LABELV $2605 +line 5652 +;5651: rectDef_t r2; +;5652: r2.x = Menus[i].window.rect.x - 3; +ADDRLP4 4 +CNSTI4 644 +ADDRLP4 0 +INDIRI4 +MULI4 +ADDRGP4 Menus +ADDP4 +INDIRF4 +CNSTF4 1077936128 +SUBF4 +ASGNF4 +line 5653 +;5653: r2.y = Menus[i].window.rect.y - 3; +ADDRLP4 4+4 +CNSTI4 644 +ADDRLP4 0 +INDIRI4 +MULI4 +ADDRGP4 Menus+4 +ADDP4 +INDIRF4 +CNSTF4 1077936128 +SUBF4 +ASGNF4 +line 5654 +;5654: r2.w = r2.h = 7; +ADDRLP4 20 +CNSTF4 1088421888 +ASGNF4 +ADDRLP4 4+12 +ADDRLP4 20 +INDIRF4 +ASGNF4 +ADDRLP4 4+8 +ADDRLP4 20 +INDIRF4 +ASGNF4 +line 5655 +;5655: if (Rect_ContainsPoint(&r2, x, y)) { +ADDRLP4 4 +ARGP4 +ADDRFP4 0 +INDIRI4 +CVIF4 4 +ARGF4 +ADDRFP4 4 +INDIRI4 +CVIF4 4 +ARGF4 +ADDRLP4 24 +ADDRGP4 Rect_ContainsPoint +CALLI4 +ASGNI4 +ADDRLP4 24 +INDIRI4 +CNSTI4 0 +EQI4 $2613 +line 5656 +;5656: return CURSOR_SIZER; +CNSTI4 4 +RETI4 +ADDRGP4 $2604 +JUMPV +LABELV $2613 +line 5658 +;5657: } +;5658: } +LABELV $2606 +line 5650 +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +LABELV $2608 +ADDRLP4 0 +INDIRI4 +ADDRGP4 menuCount +INDIRI4 +LTI4 $2605 +line 5659 +;5659: return CURSOR_ARROW; +CNSTI4 2 +RETI4 +LABELV $2604 +endproc Display_CursorType 28 12 +export Display_HandleKey +proc Display_HandleKey 12 12 +line 5663 +;5660:} +;5661: +;5662: +;5663:void Display_HandleKey(int key, qboolean down, int x, int y) { +line 5664 +;5664: menuDef_t *menu = Display_CaptureItem(x, y); +ADDRFP4 8 +INDIRI4 +ARGI4 +ADDRFP4 12 +INDIRI4 +ARGI4 +ADDRLP4 4 +ADDRGP4 Display_CaptureItem +CALLP4 +ASGNP4 +ADDRLP4 0 +ADDRLP4 4 +INDIRP4 +ASGNP4 +line 5665 +;5665: if (menu == NULL) { +ADDRLP4 0 +INDIRP4 +CVPU4 4 +CNSTU4 0 +NEU4 $2616 +line 5666 +;5666: menu = Menu_GetFocused(); +ADDRLP4 8 +ADDRGP4 Menu_GetFocused +CALLP4 +ASGNP4 +ADDRLP4 0 +ADDRLP4 8 +INDIRP4 +ASGNP4 +line 5667 +;5667: } +LABELV $2616 +line 5668 +;5668: if (menu) { +ADDRLP4 0 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $2618 +line 5669 +;5669: Menu_HandleKey(menu, key, down ); +ADDRLP4 0 +INDIRP4 +ARGP4 +ADDRFP4 0 +INDIRI4 +ARGI4 +ADDRFP4 4 +INDIRI4 +ARGI4 +ADDRGP4 Menu_HandleKey +CALLV +pop +line 5670 +;5670: } +LABELV $2618 +line 5671 +;5671:} +LABELV $2615 +endproc Display_HandleKey 12 12 +proc Window_CacheContents 12 20 +line 5673 +;5672: +;5673:static void Window_CacheContents(windowDef_t *window) { +line 5674 +;5674: if (window) { +ADDRFP4 0 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $2621 +line 5675 +;5675: if (window->cinematicName) { +ADDRFP4 0 +INDIRP4 +CNSTI4 40 +ADDP4 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $2623 +line 5676 +;5676: int cin = DC->playCinematic(window->cinematicName, 0, 0, 0, 0); +ADDRFP4 0 +INDIRP4 +CNSTI4 40 +ADDP4 +INDIRP4 +ARGP4 +ADDRLP4 4 +CNSTF4 0 +ASGNF4 +ADDRLP4 4 +INDIRF4 +ARGF4 +ADDRLP4 4 +INDIRF4 +ARGF4 +ADDRLP4 4 +INDIRF4 +ARGF4 +ADDRLP4 4 +INDIRF4 +ARGF4 +ADDRLP4 8 +ADDRGP4 DC +INDIRP4 +CNSTI4 180 +ADDP4 +INDIRP4 +CALLI4 +ASGNI4 +ADDRLP4 0 +ADDRLP4 8 +INDIRI4 +ASGNI4 +line 5677 +;5677: DC->stopCinematic(cin); +ADDRLP4 0 +INDIRI4 +ARGI4 +ADDRGP4 DC +INDIRP4 +CNSTI4 184 +ADDP4 +INDIRP4 +CALLV +pop +line 5678 +;5678: } +LABELV $2623 +line 5679 +;5679: } +LABELV $2621 +line 5680 +;5680:} +LABELV $2620 +endproc Window_CacheContents 12 20 +proc Item_CacheContents 0 4 +line 5683 +;5681: +;5682: +;5683:static void Item_CacheContents(itemDef_t *item) { +line 5684 +;5684: if (item) { +ADDRFP4 0 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $2626 +line 5685 +;5685: Window_CacheContents(&item->window); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRGP4 Window_CacheContents +CALLV +pop +line 5686 +;5686: } +LABELV $2626 +line 5688 +;5687: +;5688:} +LABELV $2625 +endproc Item_CacheContents 0 4 +proc Menu_CacheContents 8 8 +line 5690 +;5689: +;5690:static void Menu_CacheContents(menuDef_t *menu) { +line 5691 +;5691: if (menu) { +ADDRFP4 0 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $2629 +line 5693 +;5692: int i; +;5693: Window_CacheContents(&menu->window); +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRGP4 Window_CacheContents +CALLV +pop +line 5694 +;5694: for (i = 0; i < menu->itemCount; i++) { +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +ADDRGP4 $2634 +JUMPV +LABELV $2631 +line 5695 +;5695: Item_CacheContents(menu->items[i]); +ADDRLP4 0 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 260 +ADDP4 +ADDP4 +INDIRP4 +ARGP4 +ADDRGP4 Item_CacheContents +CALLV +pop +line 5696 +;5696: } +LABELV $2632 +line 5694 +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +LABELV $2634 +ADDRLP4 0 +INDIRI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 188 +ADDP4 +INDIRI4 +LTI4 $2631 +line 5698 +;5697: +;5698: if (menu->soundName && *menu->soundName) { +ADDRLP4 4 +ADDRFP4 0 +INDIRP4 +CNSTI4 224 +ADDP4 +INDIRP4 +ASGNP4 +ADDRLP4 4 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $2635 +ADDRLP4 4 +INDIRP4 +INDIRI1 +CVII4 1 +CNSTI4 0 +EQI4 $2635 +line 5699 +;5699: DC->registerSound(menu->soundName, qfalse); +ADDRFP4 0 +INDIRP4 +CNSTI4 224 +ADDP4 +INDIRP4 +ARGP4 +CNSTI4 0 +ARGI4 +ADDRGP4 DC +INDIRP4 +CNSTI4 168 +ADDP4 +INDIRP4 +CALLI4 +pop +line 5700 +;5700: } +LABELV $2635 +line 5701 +;5701: } +LABELV $2629 +line 5703 +;5702: +;5703:} +LABELV $2628 +endproc Menu_CacheContents 8 8 +export Display_CacheAll +proc Display_CacheAll 4 4 +line 5705 +;5704: +;5705:void Display_CacheAll() { +line 5707 +;5706: int i; +;5707: for (i = 0; i < menuCount; i++) { +ADDRLP4 0 +CNSTI4 0 +ASGNI4 +ADDRGP4 $2641 +JUMPV +LABELV $2638 +line 5708 +;5708: Menu_CacheContents(&Menus[i]); +CNSTI4 644 +ADDRLP4 0 +INDIRI4 +MULI4 +ADDRGP4 Menus +ADDP4 +ARGP4 +ADDRGP4 Menu_CacheContents +CALLV +pop +line 5709 +;5709: } +LABELV $2639 +line 5707 +ADDRLP4 0 +ADDRLP4 0 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +LABELV $2641 +ADDRLP4 0 +INDIRI4 +ADDRGP4 menuCount +INDIRI4 +LTI4 $2638 +line 5710 +;5710:} +LABELV $2637 +endproc Display_CacheAll 4 4 +proc Menu_OverActiveItem 32 12 +line 5713 +;5711: +;5712: +;5713:static qboolean Menu_OverActiveItem(menuDef_t *menu, float x, float y) { +line 5714 +;5714: if (menu && menu->window.flags & (WINDOW_VISIBLE | WINDOW_FORCED)) { +ADDRLP4 0 +ADDRFP4 0 +INDIRP4 +ASGNP4 +ADDRLP4 0 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $2643 +ADDRLP4 0 +INDIRP4 +CNSTI4 68 +ADDP4 +INDIRI4 +CNSTI4 1048580 +BANDI4 +CNSTI4 0 +EQI4 $2643 +line 5715 +;5715: if (Rect_ContainsPoint(&menu->window.rect, x, y)) { +ADDRFP4 0 +INDIRP4 +ARGP4 +ADDRFP4 4 +INDIRF4 +ARGF4 +ADDRFP4 8 +INDIRF4 +ARGF4 +ADDRLP4 4 +ADDRGP4 Rect_ContainsPoint +CALLI4 +ASGNI4 +ADDRLP4 4 +INDIRI4 +CNSTI4 0 +EQI4 $2645 +line 5717 +;5716: int i; +;5717: for (i = 0; i < menu->itemCount; i++) { +ADDRLP4 8 +CNSTI4 0 +ASGNI4 +ADDRGP4 $2650 +JUMPV +LABELV $2647 +line 5721 +;5718: // turn off focus each item +;5719: // menu->items[i].window.flags &= ~WINDOW_HASFOCUS; +;5720: +;5721: if (!(menu->items[i]->window.flags & (WINDOW_VISIBLE | WINDOW_FORCED))) { +ADDRLP4 8 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 260 +ADDP4 +ADDP4 +INDIRP4 +CNSTI4 68 +ADDP4 +INDIRI4 +CNSTI4 1048580 +BANDI4 +CNSTI4 0 +NEI4 $2651 +line 5722 +;5722: continue; +ADDRGP4 $2648 +JUMPV +LABELV $2651 +line 5725 +;5723: } +;5724: +;5725: if (menu->items[i]->window.flags & WINDOW_DECORATION) { +ADDRLP4 8 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 260 +ADDP4 +ADDP4 +INDIRP4 +CNSTI4 68 +ADDP4 +INDIRI4 +CNSTI4 16 +BANDI4 +CNSTI4 0 +EQI4 $2653 +line 5726 +;5726: continue; +ADDRGP4 $2648 +JUMPV +LABELV $2653 +line 5729 +;5727: } +;5728: +;5729: if (Rect_ContainsPoint(&menu->items[i]->window.rect, x, y)) { +ADDRLP4 8 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 260 +ADDP4 +ADDP4 +INDIRP4 +ARGP4 +ADDRFP4 4 +INDIRF4 +ARGF4 +ADDRFP4 8 +INDIRF4 +ARGF4 +ADDRLP4 12 +ADDRGP4 Rect_ContainsPoint +CALLI4 +ASGNI4 +ADDRLP4 12 +INDIRI4 +CNSTI4 0 +EQI4 $2655 +line 5730 +;5730: itemDef_t *overItem = menu->items[i]; +ADDRLP4 16 +ADDRLP4 8 +INDIRI4 +CNSTI4 2 +LSHI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 260 +ADDP4 +ADDP4 +INDIRP4 +ASGNP4 +line 5731 +;5731: if (overItem->type == ITEM_TYPE_TEXT && overItem->text) { +ADDRLP4 16 +INDIRP4 +CNSTI4 196 +ADDP4 +INDIRI4 +CNSTI4 0 +NEI4 $2657 +ADDRLP4 16 +INDIRP4 +CNSTI4 224 +ADDP4 +INDIRP4 +CVPU4 4 +CNSTU4 0 +EQU4 $2657 +line 5732 +;5732: if (Rect_ContainsPoint(Item_CorrectedTextRect(overItem), x, y)) { +ADDRLP4 16 +INDIRP4 +ARGP4 +ADDRLP4 24 +ADDRGP4 Item_CorrectedTextRect +CALLP4 +ASGNP4 +ADDRLP4 24 +INDIRP4 +ARGP4 +ADDRFP4 4 +INDIRF4 +ARGF4 +ADDRFP4 8 +INDIRF4 +ARGF4 +ADDRLP4 28 +ADDRGP4 Rect_ContainsPoint +CALLI4 +ASGNI4 +ADDRLP4 28 +INDIRI4 +CNSTI4 0 +EQI4 $2648 +line 5733 +;5733: return qtrue; +CNSTI4 1 +RETI4 +ADDRGP4 $2642 +JUMPV +line 5734 +;5734: } else { +line 5735 +;5735: continue; +LABELV $2657 +line 5737 +;5736: } +;5737: } else { +line 5738 +;5738: return qtrue; +CNSTI4 1 +RETI4 +ADDRGP4 $2642 +JUMPV +LABELV $2655 +line 5741 +;5739: } +;5740: } +;5741: } +LABELV $2648 +line 5717 +ADDRLP4 8 +ADDRLP4 8 +INDIRI4 +CNSTI4 1 +ADDI4 +ASGNI4 +LABELV $2650 +ADDRLP4 8 +INDIRI4 +ADDRFP4 0 +INDIRP4 +CNSTI4 188 +ADDP4 +INDIRI4 +LTI4 $2647 +line 5743 +;5742: +;5743: } +LABELV $2645 +line 5744 +;5744: } +LABELV $2643 +line 5745 +;5745: return qfalse; +CNSTI4 0 +RETI4 +LABELV $2642 +endproc Menu_OverActiveItem 32 12 +bss +align 4 +LABELV captureY +skip 4 +align 4 +LABELV captureX +skip 4 +export menuParseKeywordHash +align 4 +LABELV menuParseKeywordHash +skip 2048 +export itemParseKeywordHash +align 4 +LABELV itemParseKeywordHash +skip 2048 +export g_nameBind2 +align 1 +LABELV g_nameBind2 +skip 32 +export g_nameBind1 +align 1 +LABELV g_nameBind1 +skip 32 +align 4 +LABELV strHandle +skip 8192 +align 1 +LABELV strPool +skip 393216 +align 4 +LABELV outOfMemory +skip 4 +align 4 +LABELV allocPoint +skip 4 +align 1 +LABELV memoryPool +skip 1048576 +export menuStack +align 4 +LABELV menuStack +skip 64 +export Menus +align 4 +LABELV Menus +skip 41216 +align 4 +LABELV scrollInfo +skip 32 +import trap_PC_SourceFileAndLine +import trap_PC_ReadToken +import trap_PC_FreeSource +import trap_PC_LoadSource +import trap_PC_AddGlobalDefine +import Script_Parse +import Display_ExpandMacros +import Com_Printf +import Com_Error +import Info_NextPair +import Info_Validate +import Info_SetValueForKey_Big +import Info_SetValueForKey +import Info_RemoveKey_big +import Info_RemoveKey +import Info_ValueForKey +import va +import Q_CleanStr +import Q_PrintStrlen +import Q_strcat +import Q_strncpyz +import Q_strrchr +import Q_strupr +import Q_strlwr +import Q_stricmpn +import Q_strncmp +import Q_stricmp +import Q_isalpha +import Q_isupper +import Q_islower +import Q_isprint +import Com_sprintf +import Parse3DMatrix +import Parse2DMatrix +import Parse1DMatrix +import SkipRestOfLine +import SkipBracedSection +import COM_MatchToken +import COM_ParseWarning +import COM_ParseError +import COM_Compress +import COM_ParseExt +import COM_Parse +import COM_GetCurrentParseLine +import COM_BeginParseSession +import COM_DefaultExtension +import COM_StripExtension +import COM_SkipPath +import Com_Clamp +import PerpendicularVector +import AngleVectors +import MatrixMultiply +import MakeNormalVectors +import RotateAroundDirection +import RotatePointAroundVector +import ProjectPointOnPlane +import PlaneFromPoints +import AngleDelta +import AngleNormalize180 +import AngleNormalize360 +import AnglesSubtract +import AngleSubtract +import LerpAngle +import AngleMod +import BoxOnPlaneSide +import SetPlaneSignbits +import AxisCopy +import AxisClear +import AnglesToAxis +import vectoangles +import Q_crandom +import Q_random +import Q_rand +import Q_acos +import Q_log2 +import VectorRotate +import Vector4Scale +import VectorNormalize2 +import VectorNormalize +import CrossProduct +import VectorInverse +import VectorNormalizeFast +import DistanceSquared +import Distance +import VectorLengthSquared +import VectorLength +import VectorCompare +import AddPointToBounds +import ClearBounds +import RadiusFromBounds +import NormalizeColor +import ColorBytes4 +import ColorBytes3 +import _VectorMA +import _VectorScale +import _VectorCopy +import _VectorAdd +import _VectorSubtract +import _DotProduct +import ByteToDir +import DirToByte +import ClampShort +import ClampChar +import Q_rsqrt +import Q_fabs +import axisDefault +import vec3_origin +import g_color_table +import colorDkGrey +import colorMdGrey +import colorLtGrey +import colorWhite +import colorCyan +import colorMagenta +import colorYellow +import colorBlue +import colorGreen +import colorRed +import colorBlack +import bytedirs +import Com_Memcpy +import Com_Memset +import Hunk_Alloc +import FloatSwap +import LongSwap +import ShortSwap +import acos +import fabs +import abs +import tan +import atan2 +import cos +import sin +import sqrt +import floor +import ceil +import memcpy +import memset +import memmove +import sscanf +import vsprintf +import _atoi +import atoi +import _atof +import atof +import toupper +import tolower +import strncpy +import strstr +import strchr +import strcmp +import strcpy +import strcat +import strlen +import rand +import srand +import qsort +lit +align 1 +LABELV $2583 +byte 1 102 +byte 1 112 +byte 1 115 +byte 1 58 +byte 1 32 +byte 1 37 +byte 1 102 +byte 1 0 +align 1 +LABELV $2565 +byte 1 99 +byte 1 111 +byte 1 117 +byte 1 108 +byte 1 100 +byte 1 110 +byte 1 39 +byte 1 116 +byte 1 32 +byte 1 112 +byte 1 97 +byte 1 114 +byte 1 115 +byte 1 101 +byte 1 32 +byte 1 109 +byte 1 101 +byte 1 110 +byte 1 117 +byte 1 32 +byte 1 107 +byte 1 101 +byte 1 121 +byte 1 119 +byte 1 111 +byte 1 114 +byte 1 100 +byte 1 32 +byte 1 37 +byte 1 115 +byte 1 0 +align 1 +LABELV $2561 +byte 1 117 +byte 1 110 +byte 1 107 +byte 1 110 +byte 1 111 +byte 1 119 +byte 1 110 +byte 1 32 +byte 1 109 +byte 1 101 +byte 1 110 +byte 1 117 +byte 1 32 +byte 1 107 +byte 1 101 +byte 1 121 +byte 1 119 +byte 1 111 +byte 1 114 +byte 1 100 +byte 1 32 +byte 1 37 +byte 1 115 +byte 1 0 +align 1 +LABELV $2554 +byte 1 101 +byte 1 110 +byte 1 100 +byte 1 32 +byte 1 111 +byte 1 102 +byte 1 32 +byte 1 102 +byte 1 105 +byte 1 108 +byte 1 101 +byte 1 32 +byte 1 105 +byte 1 110 +byte 1 115 +byte 1 105 +byte 1 100 +byte 1 101 +byte 1 32 +byte 1 109 +byte 1 101 +byte 1 110 +byte 1 117 +byte 1 10 +byte 1 0 +align 1 +LABELV $2537 +byte 1 102 +byte 1 97 +byte 1 100 +byte 1 101 +byte 1 65 +byte 1 109 +byte 1 111 +byte 1 117 +byte 1 110 +byte 1 116 +byte 1 0 +align 1 +LABELV $2536 +byte 1 102 +byte 1 97 +byte 1 100 +byte 1 101 +byte 1 67 +byte 1 121 +byte 1 99 +byte 1 108 +byte 1 101 +byte 1 0 +align 1 +LABELV $2535 +byte 1 102 +byte 1 97 +byte 1 100 +byte 1 101 +byte 1 67 +byte 1 108 +byte 1 97 +byte 1 109 +byte 1 112 +byte 1 0 +align 1 +LABELV $2534 +byte 1 112 +byte 1 111 +byte 1 112 +byte 1 117 +byte 1 112 +byte 1 0 +align 1 +LABELV $2533 +byte 1 105 +byte 1 116 +byte 1 101 +byte 1 109 +byte 1 68 +byte 1 101 +byte 1 102 +byte 1 0 +align 1 +LABELV $2532 +byte 1 115 +byte 1 111 +byte 1 117 +byte 1 110 +byte 1 100 +byte 1 76 +byte 1 111 +byte 1 111 +byte 1 112 +byte 1 0 +align 1 +LABELV $2531 +byte 1 111 +byte 1 117 +byte 1 116 +byte 1 79 +byte 1 102 +byte 1 66 +byte 1 111 +byte 1 117 +byte 1 110 +byte 1 100 +byte 1 115 +byte 1 67 +byte 1 108 +byte 1 105 +byte 1 99 +byte 1 107 +byte 1 0 +align 1 +LABELV $2530 +byte 1 100 +byte 1 105 +byte 1 115 +byte 1 97 +byte 1 98 +byte 1 108 +byte 1 101 +byte 1 99 +byte 1 111 +byte 1 108 +byte 1 111 +byte 1 114 +byte 1 0 +align 1 +LABELV $2529 +byte 1 102 +byte 1 111 +byte 1 99 +byte 1 117 +byte 1 115 +byte 1 99 +byte 1 111 +byte 1 108 +byte 1 111 +byte 1 114 +byte 1 0 +align 1 +LABELV $2528 +byte 1 98 +byte 1 111 +byte 1 114 +byte 1 100 +byte 1 101 +byte 1 114 +byte 1 83 +byte 1 105 +byte 1 122 +byte 1 101 +byte 1 0 +align 1 +LABELV $2527 +byte 1 111 +byte 1 110 +byte 1 69 +byte 1 83 +byte 1 67 +byte 1 0 +align 1 +LABELV $2526 +byte 1 111 +byte 1 110 +byte 1 67 +byte 1 108 +byte 1 111 +byte 1 115 +byte 1 101 +byte 1 0 +align 1 +LABELV $2525 +byte 1 111 +byte 1 110 +byte 1 79 +byte 1 112 +byte 1 101 +byte 1 110 +byte 1 0 +align 1 +LABELV $2524 +byte 1 102 +byte 1 117 +byte 1 108 +byte 1 108 +byte 1 115 +byte 1 99 +byte 1 114 +byte 1 101 +byte 1 101 +byte 1 110 +byte 1 0 +align 1 +LABELV $2523 +byte 1 102 +byte 1 111 +byte 1 110 +byte 1 116 +byte 1 0 +align 1 +LABELV $2424 +byte 1 109 +byte 1 97 +byte 1 105 +byte 1 110 +byte 1 0 +align 1 +LABELV $2405 +byte 1 99 +byte 1 111 +byte 1 117 +byte 1 108 +byte 1 100 +byte 1 110 +byte 1 39 +byte 1 116 +byte 1 32 +byte 1 112 +byte 1 97 +byte 1 114 +byte 1 115 +byte 1 101 +byte 1 32 +byte 1 109 +byte 1 101 +byte 1 110 +byte 1 117 +byte 1 32 +byte 1 105 +byte 1 116 +byte 1 101 +byte 1 109 +byte 1 32 +byte 1 107 +byte 1 101 +byte 1 121 +byte 1 119 +byte 1 111 +byte 1 114 +byte 1 100 +byte 1 32 +byte 1 37 +byte 1 115 +byte 1 0 +align 1 +LABELV $2401 +byte 1 117 +byte 1 110 +byte 1 107 +byte 1 110 +byte 1 111 +byte 1 119 +byte 1 110 +byte 1 32 +byte 1 109 +byte 1 101 +byte 1 110 +byte 1 117 +byte 1 32 +byte 1 105 +byte 1 116 +byte 1 101 +byte 1 109 +byte 1 32 +byte 1 107 +byte 1 101 +byte 1 121 +byte 1 119 +byte 1 111 +byte 1 114 +byte 1 100 +byte 1 32 +byte 1 37 +byte 1 115 +byte 1 0 +align 1 +LABELV $2378 +byte 1 100 +byte 1 111 +byte 1 117 +byte 1 98 +byte 1 108 +byte 1 101 +byte 1 99 +byte 1 108 +byte 1 105 +byte 1 99 +byte 1 107 +byte 1 0 +align 1 +LABELV $2377 +byte 1 99 +byte 1 105 +byte 1 110 +byte 1 101 +byte 1 109 +byte 1 97 +byte 1 116 +byte 1 105 +byte 1 99 +byte 1 0 +align 1 +LABELV $2376 +byte 1 104 +byte 1 105 +byte 1 100 +byte 1 101 +byte 1 67 +byte 1 118 +byte 1 97 +byte 1 114 +byte 1 0 +align 1 +LABELV $2375 +byte 1 115 +byte 1 104 +byte 1 111 +byte 1 119 +byte 1 67 +byte 1 118 +byte 1 97 +byte 1 114 +byte 1 0 +align 1 +LABELV $2374 +byte 1 100 +byte 1 105 +byte 1 115 +byte 1 97 +byte 1 98 +byte 1 108 +byte 1 101 +byte 1 67 +byte 1 118 +byte 1 97 +byte 1 114 +byte 1 0 +align 1 +LABELV $2373 +byte 1 99 +byte 1 118 +byte 1 97 +byte 1 114 +byte 1 84 +byte 1 101 +byte 1 115 +byte 1 116 +byte 1 0 +align 1 +LABELV $2372 +byte 1 101 +byte 1 110 +byte 1 97 +byte 1 98 +byte 1 108 +byte 1 101 +byte 1 67 +byte 1 118 +byte 1 97 +byte 1 114 +byte 1 0 +align 1 +LABELV $2371 +byte 1 111 +byte 1 119 +byte 1 110 +byte 1 101 +byte 1 114 +byte 1 100 +byte 1 114 +byte 1 97 +byte 1 119 +byte 1 70 +byte 1 108 +byte 1 97 +byte 1 103 +byte 1 0 +align 1 +LABELV $2370 +byte 1 97 +byte 1 100 +byte 1 100 +byte 1 67 +byte 1 111 +byte 1 108 +byte 1 111 +byte 1 114 +byte 1 82 +byte 1 97 +byte 1 110 +byte 1 103 +byte 1 101 +byte 1 0 +align 1 +LABELV $2369 +byte 1 99 +byte 1 118 +byte 1 97 +byte 1 114 +byte 1 70 +byte 1 108 +byte 1 111 +byte 1 97 +byte 1 116 +byte 1 76 +byte 1 105 +byte 1 115 +byte 1 116 +byte 1 0 +align 1 +LABELV $2368 +byte 1 99 +byte 1 118 +byte 1 97 +byte 1 114 +byte 1 83 +byte 1 116 +byte 1 114 +byte 1 76 +byte 1 105 +byte 1 115 +byte 1 116 +byte 1 0 +align 1 +LABELV $2367 +byte 1 99 +byte 1 118 +byte 1 97 +byte 1 114 +byte 1 70 +byte 1 108 +byte 1 111 +byte 1 97 +byte 1 116 +byte 1 0 +align 1 +LABELV $2366 +byte 1 102 +byte 1 111 +byte 1 99 +byte 1 117 +byte 1 115 +byte 1 83 +byte 1 111 +byte 1 117 +byte 1 110 +byte 1 100 +byte 1 0 +align 1 +LABELV $2365 +byte 1 109 +byte 1 97 +byte 1 120 +byte 1 80 +byte 1 97 +byte 1 105 +byte 1 110 +byte 1 116 +byte 1 67 +byte 1 104 +byte 1 97 +byte 1 114 +byte 1 115 +byte 1 0 +align 1 +LABELV $2364 +byte 1 109 +byte 1 97 +byte 1 120 +byte 1 67 +byte 1 104 +byte 1 97 +byte 1 114 +byte 1 115 +byte 1 0 +align 1 +LABELV $2363 +byte 1 99 +byte 1 118 +byte 1 97 +byte 1 114 +byte 1 0 +align 1 +LABELV $2362 +byte 1 115 +byte 1 112 +byte 1 101 +byte 1 99 +byte 1 105 +byte 1 97 +byte 1 108 +byte 1 0 +align 1 +LABELV $2361 +byte 1 97 +byte 1 99 +byte 1 116 +byte 1 105 +byte 1 111 +byte 1 110 +byte 1 0 +align 1 +LABELV $2360 +byte 1 109 +byte 1 111 +byte 1 117 +byte 1 115 +byte 1 101 +byte 1 69 +byte 1 120 +byte 1 105 +byte 1 116 +byte 1 84 +byte 1 101 +byte 1 120 +byte 1 116 +byte 1 0 +align 1 +LABELV $2359 +byte 1 109 +byte 1 111 +byte 1 117 +byte 1 115 +byte 1 101 +byte 1 69 +byte 1 110 +byte 1 116 +byte 1 101 +byte 1 114 +byte 1 84 +byte 1 101 +byte 1 120 +byte 1 116 +byte 1 0 +align 1 +LABELV $2358 +byte 1 109 +byte 1 111 +byte 1 117 +byte 1 115 +byte 1 101 +byte 1 69 +byte 1 120 +byte 1 105 +byte 1 116 +byte 1 0 +align 1 +LABELV $2357 +byte 1 109 +byte 1 111 +byte 1 117 +byte 1 115 +byte 1 101 +byte 1 69 +byte 1 110 +byte 1 116 +byte 1 101 +byte 1 114 +byte 1 0 +align 1 +LABELV $2356 +byte 1 108 +byte 1 101 +byte 1 97 +byte 1 118 +byte 1 101 +byte 1 70 +byte 1 111 +byte 1 99 +byte 1 117 +byte 1 115 +byte 1 0 +align 1 +LABELV $2355 +byte 1 111 +byte 1 110 +byte 1 70 +byte 1 111 +byte 1 99 +byte 1 117 +byte 1 115 +byte 1 0 +align 1 +LABELV $2354 +byte 1 98 +byte 1 97 +byte 1 99 +byte 1 107 +byte 1 103 +byte 1 114 +byte 1 111 +byte 1 117 +byte 1 110 +byte 1 100 +byte 1 0 +align 1 +LABELV $2353 +byte 1 111 +byte 1 117 +byte 1 116 +byte 1 108 +byte 1 105 +byte 1 110 +byte 1 101 +byte 1 99 +byte 1 111 +byte 1 108 +byte 1 111 +byte 1 114 +byte 1 0 +align 1 +LABELV $2352 +byte 1 116 +byte 1 101 +byte 1 120 +byte 1 116 +byte 1 115 +byte 1 116 +byte 1 121 +byte 1 108 +byte 1 101 +byte 1 0 +align 1 +LABELV $2351 +byte 1 116 +byte 1 101 +byte 1 120 +byte 1 116 +byte 1 115 +byte 1 99 +byte 1 97 +byte 1 108 +byte 1 101 +byte 1 0 +align 1 +LABELV $2350 +byte 1 116 +byte 1 101 +byte 1 120 +byte 1 116 +byte 1 97 +byte 1 108 +byte 1 105 +byte 1 103 +byte 1 110 +byte 1 121 +byte 1 0 +align 1 +LABELV $2349 +byte 1 116 +byte 1 101 +byte 1 120 +byte 1 116 +byte 1 97 +byte 1 108 +byte 1 105 +byte 1 103 +byte 1 110 +byte 1 120 +byte 1 0 +align 1 +LABELV $2348 +byte 1 116 +byte 1 101 +byte 1 120 +byte 1 116 +byte 1 97 +byte 1 108 +byte 1 105 +byte 1 103 +byte 1 110 +byte 1 0 +align 1 +LABELV $2347 +byte 1 97 +byte 1 108 +byte 1 105 +byte 1 103 +byte 1 110 +byte 1 0 +align 1 +LABELV $2346 +byte 1 111 +byte 1 119 +byte 1 110 +byte 1 101 +byte 1 114 +byte 1 100 +byte 1 114 +byte 1 97 +byte 1 119 +byte 1 0 +align 1 +LABELV $2345 +byte 1 118 +byte 1 105 +byte 1 115 +byte 1 105 +byte 1 98 +byte 1 108 +byte 1 101 +byte 1 0 +align 1 +LABELV $2344 +byte 1 98 +byte 1 111 +byte 1 114 +byte 1 100 +byte 1 101 +byte 1 114 +byte 1 115 +byte 1 105 +byte 1 122 +byte 1 101 +byte 1 0 +align 1 +LABELV $2343 +byte 1 98 +byte 1 111 +byte 1 114 +byte 1 100 +byte 1 101 +byte 1 114 +byte 1 0 +align 1 +LABELV $2342 +byte 1 99 +byte 1 111 +byte 1 108 +byte 1 117 +byte 1 109 +byte 1 110 +byte 1 115 +byte 1 0 +align 1 +LABELV $2341 +byte 1 101 +byte 1 108 +byte 1 101 +byte 1 109 +byte 1 101 +byte 1 110 +byte 1 116 +byte 1 116 +byte 1 121 +byte 1 112 +byte 1 101 +byte 1 0 +align 1 +LABELV $2340 +byte 1 102 +byte 1 101 +byte 1 101 +byte 1 100 +byte 1 101 +byte 1 114 +byte 1 0 +align 1 +LABELV $2339 +byte 1 101 +byte 1 108 +byte 1 101 +byte 1 109 +byte 1 101 +byte 1 110 +byte 1 116 +byte 1 104 +byte 1 101 +byte 1 105 +byte 1 103 +byte 1 104 +byte 1 116 +byte 1 0 +align 1 +LABELV $2338 +byte 1 101 +byte 1 108 +byte 1 101 +byte 1 109 +byte 1 101 +byte 1 110 +byte 1 116 +byte 1 119 +byte 1 105 +byte 1 100 +byte 1 116 +byte 1 104 +byte 1 0 +align 1 +LABELV $2337 +byte 1 116 +byte 1 121 +byte 1 112 +byte 1 101 +byte 1 0 +align 1 +LABELV $2336 +byte 1 104 +byte 1 111 +byte 1 114 +byte 1 105 +byte 1 122 +byte 1 111 +byte 1 110 +byte 1 116 +byte 1 97 +byte 1 108 +byte 1 115 +byte 1 99 +byte 1 114 +byte 1 111 +byte 1 108 +byte 1 108 +byte 1 0 +align 1 +LABELV $2335 +byte 1 97 +byte 1 117 +byte 1 116 +byte 1 111 +byte 1 119 +byte 1 114 +byte 1 97 +byte 1 112 +byte 1 112 +byte 1 101 +byte 1 100 +byte 1 0 +align 1 +LABELV $2334 +byte 1 119 +byte 1 114 +byte 1 97 +byte 1 112 +byte 1 112 +byte 1 101 +byte 1 100 +byte 1 0 +align 1 +LABELV $2333 +byte 1 110 +byte 1 111 +byte 1 116 +byte 1 115 +byte 1 101 +byte 1 108 +byte 1 101 +byte 1 99 +byte 1 116 +byte 1 97 +byte 1 98 +byte 1 108 +byte 1 101 +byte 1 0 +align 1 +LABELV $2332 +byte 1 100 +byte 1 101 +byte 1 99 +byte 1 111 +byte 1 114 +byte 1 97 +byte 1 116 +byte 1 105 +byte 1 111 +byte 1 110 +byte 1 0 +align 1 +LABELV $2331 +byte 1 115 +byte 1 116 +byte 1 121 +byte 1 108 +byte 1 101 +byte 1 0 +align 1 +LABELV $2330 +byte 1 114 +byte 1 101 +byte 1 99 +byte 1 116 +byte 1 0 +align 1 +LABELV $2329 +byte 1 109 +byte 1 111 +byte 1 100 +byte 1 101 +byte 1 108 +byte 1 95 +byte 1 97 +byte 1 110 +byte 1 103 +byte 1 108 +byte 1 101 +byte 1 0 +align 1 +LABELV $2328 +byte 1 109 +byte 1 111 +byte 1 100 +byte 1 101 +byte 1 108 +byte 1 95 +byte 1 114 +byte 1 111 +byte 1 116 +byte 1 97 +byte 1 116 +byte 1 105 +byte 1 111 +byte 1 110 +byte 1 0 +align 1 +LABELV $2327 +byte 1 109 +byte 1 111 +byte 1 100 +byte 1 101 +byte 1 108 +byte 1 95 +byte 1 102 +byte 1 111 +byte 1 118 +byte 1 121 +byte 1 0 +align 1 +LABELV $2326 +byte 1 109 +byte 1 111 +byte 1 100 +byte 1 101 +byte 1 108 +byte 1 95 +byte 1 102 +byte 1 111 +byte 1 118 +byte 1 120 +byte 1 0 +align 1 +LABELV $2325 +byte 1 109 +byte 1 111 +byte 1 100 +byte 1 101 +byte 1 108 +byte 1 95 +byte 1 111 +byte 1 114 +byte 1 105 +byte 1 103 +byte 1 105 +byte 1 110 +byte 1 0 +align 1 +LABELV $2324 +byte 1 97 +byte 1 115 +byte 1 115 +byte 1 101 +byte 1 116 +byte 1 95 +byte 1 115 +byte 1 104 +byte 1 97 +byte 1 100 +byte 1 101 +byte 1 114 +byte 1 0 +align 1 +LABELV $2323 +byte 1 97 +byte 1 115 +byte 1 115 +byte 1 101 +byte 1 116 +byte 1 95 +byte 1 109 +byte 1 111 +byte 1 100 +byte 1 101 +byte 1 108 +byte 1 0 +align 1 +LABELV $2322 +byte 1 103 +byte 1 114 +byte 1 111 +byte 1 117 +byte 1 112 +byte 1 0 +align 1 +LABELV $2321 +byte 1 116 +byte 1 101 +byte 1 120 +byte 1 116 +byte 1 0 +align 1 +LABELV $2320 +byte 1 110 +byte 1 97 +byte 1 109 +byte 1 101 +byte 1 0 +align 1 +LABELV $2257 +byte 1 101 +byte 1 110 +byte 1 100 +byte 1 32 +byte 1 111 +byte 1 102 +byte 1 32 +byte 1 102 +byte 1 105 +byte 1 108 +byte 1 101 +byte 1 32 +byte 1 105 +byte 1 110 +byte 1 115 +byte 1 105 +byte 1 100 +byte 1 101 +byte 1 32 +byte 1 109 +byte 1 101 +byte 1 110 +byte 1 117 +byte 1 32 +byte 1 105 +byte 1 116 +byte 1 101 +byte 1 109 +byte 1 10 +byte 1 0 +align 1 +LABELV $1611 +byte 1 70 +byte 1 73 +byte 1 88 +byte 1 77 +byte 1 69 +byte 1 0 +align 1 +LABELV $1581 +byte 1 63 +byte 1 63 +byte 1 63 +byte 1 0 +align 1 +LABELV $1580 +byte 1 32 +byte 1 111 +byte 1 114 +byte 1 32 +byte 1 0 +align 1 +LABELV $1550 +byte 1 105 +byte 1 110 +byte 1 95 +byte 1 114 +byte 1 101 +byte 1 115 +byte 1 116 +byte 1 97 +byte 1 114 +byte 1 116 +byte 1 10 +byte 1 0 +align 1 +LABELV $1517 +byte 1 99 +byte 1 108 +byte 1 95 +byte 1 102 +byte 1 114 +byte 1 101 +byte 1 101 +byte 1 108 +byte 1 111 +byte 1 111 +byte 1 107 +byte 1 0 +align 1 +LABELV $1516 +byte 1 109 +byte 1 95 +byte 1 102 +byte 1 105 +byte 1 108 +byte 1 116 +byte 1 101 +byte 1 114 +byte 1 0 +align 1 +LABELV $1515 +byte 1 106 +byte 1 111 +byte 1 121 +byte 1 95 +byte 1 116 +byte 1 104 +byte 1 114 +byte 1 101 +byte 1 115 +byte 1 104 +byte 1 111 +byte 1 108 +byte 1 100 +byte 1 0 +align 1 +LABELV $1514 +byte 1 105 +byte 1 110 +byte 1 95 +byte 1 106 +byte 1 111 +byte 1 121 +byte 1 115 +byte 1 116 +byte 1 105 +byte 1 99 +byte 1 107 +byte 1 0 +align 1 +LABELV $1513 +byte 1 115 +byte 1 101 +byte 1 110 +byte 1 115 +byte 1 105 +byte 1 116 +byte 1 105 +byte 1 118 +byte 1 105 +byte 1 116 +byte 1 121 +byte 1 0 +align 1 +LABELV $1512 +byte 1 99 +byte 1 103 +byte 1 95 +byte 1 97 +byte 1 117 +byte 1 116 +byte 1 111 +byte 1 115 +byte 1 119 +byte 1 105 +byte 1 116 +byte 1 99 +byte 1 104 +byte 1 0 +align 1 +LABELV $1511 +byte 1 109 +byte 1 95 +byte 1 112 +byte 1 105 +byte 1 116 +byte 1 99 +byte 1 104 +byte 1 0 +align 1 +LABELV $1510 +byte 1 99 +byte 1 108 +byte 1 95 +byte 1 114 +byte 1 117 +byte 1 110 +byte 1 0 +align 1 +LABELV $1509 +byte 1 109 +byte 1 101 +byte 1 115 +byte 1 115 +byte 1 97 +byte 1 103 +byte 1 101 +byte 1 109 +byte 1 111 +byte 1 100 +byte 1 101 +byte 1 52 +byte 1 0 +align 1 +LABELV $1508 +byte 1 109 +byte 1 101 +byte 1 115 +byte 1 115 +byte 1 97 +byte 1 103 +byte 1 101 +byte 1 109 +byte 1 111 +byte 1 100 +byte 1 101 +byte 1 51 +byte 1 0 +align 1 +LABELV $1507 +byte 1 109 +byte 1 101 +byte 1 115 +byte 1 115 +byte 1 97 +byte 1 103 +byte 1 101 +byte 1 109 +byte 1 111 +byte 1 100 +byte 1 101 +byte 1 50 +byte 1 0 +align 1 +LABELV $1506 +byte 1 109 +byte 1 101 +byte 1 115 +byte 1 115 +byte 1 97 +byte 1 103 +byte 1 101 +byte 1 109 +byte 1 111 +byte 1 100 +byte 1 101 +byte 1 0 +align 1 +LABELV $1505 +byte 1 115 +byte 1 99 +byte 1 111 +byte 1 114 +byte 1 101 +byte 1 115 +byte 1 68 +byte 1 111 +byte 1 119 +byte 1 110 +byte 1 0 +align 1 +LABELV $1504 +byte 1 115 +byte 1 99 +byte 1 111 +byte 1 114 +byte 1 101 +byte 1 115 +byte 1 85 +byte 1 112 +byte 1 0 +align 1 +LABELV $1503 +byte 1 116 +byte 1 97 +byte 1 117 +byte 1 110 +byte 1 116 +byte 1 71 +byte 1 97 +byte 1 117 +byte 1 110 +byte 1 116 +byte 1 108 +byte 1 101 +byte 1 116 +byte 1 0 +align 1 +LABELV $1502 +byte 1 116 +byte 1 97 +byte 1 117 +byte 1 110 +byte 1 116 +byte 1 68 +byte 1 101 +byte 1 97 +byte 1 116 +byte 1 104 +byte 1 73 +byte 1 110 +byte 1 115 +byte 1 117 +byte 1 108 +byte 1 116 +byte 1 0 +align 1 +LABELV $1501 +byte 1 116 +byte 1 97 +byte 1 117 +byte 1 110 +byte 1 116 +byte 1 84 +byte 1 97 +byte 1 117 +byte 1 110 +byte 1 116 +byte 1 0 +align 1 +LABELV $1500 +byte 1 116 +byte 1 97 +byte 1 117 +byte 1 110 +byte 1 116 +byte 1 80 +byte 1 114 +byte 1 97 +byte 1 105 +byte 1 115 +byte 1 101 +byte 1 0 +align 1 +LABELV $1499 +byte 1 116 +byte 1 97 +byte 1 117 +byte 1 110 +byte 1 116 +byte 1 75 +byte 1 105 +byte 1 108 +byte 1 108 +byte 1 73 +byte 1 110 +byte 1 115 +byte 1 117 +byte 1 108 +byte 1 116 +byte 1 0 +align 1 +LABELV $1498 +byte 1 116 +byte 1 97 +byte 1 115 +byte 1 107 +byte 1 83 +byte 1 117 +byte 1 105 +byte 1 99 +byte 1 105 +byte 1 100 +byte 1 101 +byte 1 0 +align 1 +LABELV $1497 +byte 1 116 +byte 1 97 +byte 1 115 +byte 1 107 +byte 1 79 +byte 1 119 +byte 1 110 +byte 1 70 +byte 1 108 +byte 1 97 +byte 1 103 +byte 1 0 +align 1 +LABELV $1496 +byte 1 116 +byte 1 97 +byte 1 115 +byte 1 107 +byte 1 69 +byte 1 115 +byte 1 99 +byte 1 111 +byte 1 114 +byte 1 116 +byte 1 0 +align 1 +LABELV $1495 +byte 1 116 +byte 1 97 +byte 1 115 +byte 1 107 +byte 1 82 +byte 1 101 +byte 1 116 +byte 1 114 +byte 1 105 +byte 1 101 +byte 1 118 +byte 1 101 +byte 1 0 +align 1 +LABELV $1494 +byte 1 116 +byte 1 97 +byte 1 115 +byte 1 107 +byte 1 70 +byte 1 111 +byte 1 108 +byte 1 108 +byte 1 111 +byte 1 119 +byte 1 0 +align 1 +LABELV $1493 +byte 1 116 +byte 1 97 +byte 1 115 +byte 1 107 +byte 1 67 +byte 1 97 +byte 1 109 +byte 1 112 +byte 1 0 +align 1 +LABELV $1492 +byte 1 116 +byte 1 97 +byte 1 115 +byte 1 107 +byte 1 80 +byte 1 97 +byte 1 116 +byte 1 114 +byte 1 111 +byte 1 108 +byte 1 0 +align 1 +LABELV $1491 +byte 1 116 +byte 1 97 +byte 1 115 +byte 1 107 +byte 1 68 +byte 1 101 +byte 1 102 +byte 1 101 +byte 1 110 +byte 1 115 +byte 1 101 +byte 1 0 +align 1 +LABELV $1490 +byte 1 116 +byte 1 97 +byte 1 115 +byte 1 107 +byte 1 79 +byte 1 102 +byte 1 102 +byte 1 101 +byte 1 110 +byte 1 115 +byte 1 101 +byte 1 0 +align 1 +LABELV $1489 +byte 1 100 +byte 1 101 +byte 1 110 +byte 1 121 +byte 1 79 +byte 1 114 +byte 1 100 +byte 1 101 +byte 1 114 +byte 1 0 +align 1 +LABELV $1488 +byte 1 99 +byte 1 111 +byte 1 110 +byte 1 102 +byte 1 105 +byte 1 114 +byte 1 109 +byte 1 79 +byte 1 114 +byte 1 100 +byte 1 101 +byte 1 114 +byte 1 0 +align 1 +LABELV $1487 +byte 1 110 +byte 1 101 +byte 1 120 +byte 1 116 +byte 1 79 +byte 1 114 +byte 1 100 +byte 1 101 +byte 1 114 +byte 1 0 +align 1 +LABELV $1486 +byte 1 110 +byte 1 101 +byte 1 120 +byte 1 116 +byte 1 84 +byte 1 101 +byte 1 97 +byte 1 109 +byte 1 77 +byte 1 101 +byte 1 109 +byte 1 98 +byte 1 101 +byte 1 114 +byte 1 0 +align 1 +LABELV $1485 +byte 1 112 +byte 1 114 +byte 1 101 +byte 1 118 +byte 1 84 +byte 1 101 +byte 1 97 +byte 1 109 +byte 1 77 +byte 1 101 +byte 1 109 +byte 1 98 +byte 1 101 +byte 1 114 +byte 1 0 +align 1 +LABELV $1484 +byte 1 43 +byte 1 98 +byte 1 117 +byte 1 116 +byte 1 116 +byte 1 111 +byte 1 110 +byte 1 52 +byte 1 0 +align 1 +LABELV $1483 +byte 1 43 +byte 1 98 +byte 1 117 +byte 1 116 +byte 1 116 +byte 1 111 +byte 1 110 +byte 1 51 +byte 1 0 +align 1 +LABELV $1482 +byte 1 119 +byte 1 101 +byte 1 97 +byte 1 112 +byte 1 110 +byte 1 101 +byte 1 120 +byte 1 116 +byte 1 0 +align 1 +LABELV $1481 +byte 1 119 +byte 1 101 +byte 1 97 +byte 1 112 +byte 1 112 +byte 1 114 +byte 1 101 +byte 1 118 +byte 1 0 +align 1 +LABELV $1480 +byte 1 43 +byte 1 97 +byte 1 116 +byte 1 116 +byte 1 97 +byte 1 99 +byte 1 107 +byte 1 0 +align 1 +LABELV $1479 +byte 1 119 +byte 1 101 +byte 1 97 +byte 1 112 +byte 1 111 +byte 1 110 +byte 1 32 +byte 1 49 +byte 1 51 +byte 1 0 +align 1 +LABELV $1478 +byte 1 119 +byte 1 101 +byte 1 97 +byte 1 112 +byte 1 111 +byte 1 110 +byte 1 32 +byte 1 49 +byte 1 50 +byte 1 0 +align 1 +LABELV $1477 +byte 1 119 +byte 1 101 +byte 1 97 +byte 1 112 +byte 1 111 +byte 1 110 +byte 1 32 +byte 1 49 +byte 1 49 +byte 1 0 +align 1 +LABELV $1476 +byte 1 119 +byte 1 101 +byte 1 97 +byte 1 112 +byte 1 111 +byte 1 110 +byte 1 32 +byte 1 49 +byte 1 48 +byte 1 0 +align 1 +LABELV $1475 +byte 1 119 +byte 1 101 +byte 1 97 +byte 1 112 +byte 1 111 +byte 1 110 +byte 1 32 +byte 1 57 +byte 1 0 +align 1 +LABELV $1474 +byte 1 119 +byte 1 101 +byte 1 97 +byte 1 112 +byte 1 111 +byte 1 110 +byte 1 32 +byte 1 56 +byte 1 0 +align 1 +LABELV $1473 +byte 1 119 +byte 1 101 +byte 1 97 +byte 1 112 +byte 1 111 +byte 1 110 +byte 1 32 +byte 1 55 +byte 1 0 +align 1 +LABELV $1472 +byte 1 119 +byte 1 101 +byte 1 97 +byte 1 112 +byte 1 111 +byte 1 110 +byte 1 32 +byte 1 54 +byte 1 0 +align 1 +LABELV $1471 +byte 1 119 +byte 1 101 +byte 1 97 +byte 1 112 +byte 1 111 +byte 1 110 +byte 1 32 +byte 1 53 +byte 1 0 +align 1 +LABELV $1470 +byte 1 119 +byte 1 101 +byte 1 97 +byte 1 112 +byte 1 111 +byte 1 110 +byte 1 32 +byte 1 52 +byte 1 0 +align 1 +LABELV $1469 +byte 1 119 +byte 1 101 +byte 1 97 +byte 1 112 +byte 1 111 +byte 1 110 +byte 1 32 +byte 1 51 +byte 1 0 +align 1 +LABELV $1468 +byte 1 119 +byte 1 101 +byte 1 97 +byte 1 112 +byte 1 111 +byte 1 110 +byte 1 32 +byte 1 50 +byte 1 0 +align 1 +LABELV $1467 +byte 1 119 +byte 1 101 +byte 1 97 +byte 1 112 +byte 1 111 +byte 1 110 +byte 1 32 +byte 1 49 +byte 1 0 +align 1 +LABELV $1466 +byte 1 43 +byte 1 122 +byte 1 111 +byte 1 111 +byte 1 109 +byte 1 0 +align 1 +LABELV $1465 +byte 1 99 +byte 1 101 +byte 1 110 +byte 1 116 +byte 1 101 +byte 1 114 +byte 1 118 +byte 1 105 +byte 1 101 +byte 1 119 +byte 1 0 +align 1 +LABELV $1464 +byte 1 43 +byte 1 109 +byte 1 108 +byte 1 111 +byte 1 111 +byte 1 107 +byte 1 0 +align 1 +LABELV $1463 +byte 1 43 +byte 1 108 +byte 1 111 +byte 1 111 +byte 1 107 +byte 1 100 +byte 1 111 +byte 1 119 +byte 1 110 +byte 1 0 +align 1 +LABELV $1462 +byte 1 43 +byte 1 108 +byte 1 111 +byte 1 111 +byte 1 107 +byte 1 117 +byte 1 112 +byte 1 0 +align 1 +LABELV $1461 +byte 1 43 +byte 1 115 +byte 1 116 +byte 1 114 +byte 1 97 +byte 1 102 +byte 1 101 +byte 1 0 +align 1 +LABELV $1460 +byte 1 43 +byte 1 114 +byte 1 105 +byte 1 103 +byte 1 104 +byte 1 116 +byte 1 0 +align 1 +LABELV $1459 +byte 1 43 +byte 1 108 +byte 1 101 +byte 1 102 +byte 1 116 +byte 1 0 +align 1 +LABELV $1458 +byte 1 43 +byte 1 109 +byte 1 111 +byte 1 118 +byte 1 101 +byte 1 100 +byte 1 111 +byte 1 119 +byte 1 110 +byte 1 0 +align 1 +LABELV $1457 +byte 1 43 +byte 1 109 +byte 1 111 +byte 1 118 +byte 1 101 +byte 1 117 +byte 1 112 +byte 1 0 +align 1 +LABELV $1456 +byte 1 43 +byte 1 109 +byte 1 111 +byte 1 118 +byte 1 101 +byte 1 114 +byte 1 105 +byte 1 103 +byte 1 104 +byte 1 116 +byte 1 0 +align 1 +LABELV $1455 +byte 1 43 +byte 1 109 +byte 1 111 +byte 1 118 +byte 1 101 +byte 1 108 +byte 1 101 +byte 1 102 +byte 1 116 +byte 1 0 +align 1 +LABELV $1454 +byte 1 43 +byte 1 98 +byte 1 97 +byte 1 99 +byte 1 107 +byte 1 0 +align 1 +LABELV $1453 +byte 1 43 +byte 1 102 +byte 1 111 +byte 1 114 +byte 1 119 +byte 1 97 +byte 1 114 +byte 1 100 +byte 1 0 +align 1 +LABELV $1452 +byte 1 43 +byte 1 115 +byte 1 112 +byte 1 101 +byte 1 101 +byte 1 100 +byte 1 0 +align 1 +LABELV $1451 +byte 1 43 +byte 1 98 +byte 1 117 +byte 1 116 +byte 1 116 +byte 1 111 +byte 1 110 +byte 1 50 +byte 1 0 +align 1 +LABELV $1450 +byte 1 43 +byte 1 115 +byte 1 99 +byte 1 111 +byte 1 114 +byte 1 101 +byte 1 115 +byte 1 0 +align 1 +LABELV $1433 +byte 1 78 +byte 1 111 +byte 1 0 +align 1 +LABELV $1432 +byte 1 89 +byte 1 101 +byte 1 115 +byte 1 0 +align 1 +LABELV $1276 +byte 1 115 +byte 1 99 +byte 1 114 +byte 1 101 +byte 1 101 +byte 1 110 +byte 1 115 +byte 1 104 +byte 1 111 +byte 1 116 +byte 1 10 +byte 1 0 +align 1 +LABELV $1272 +byte 1 100 +byte 1 101 +byte 1 118 +byte 1 101 +byte 1 108 +byte 1 111 +byte 1 112 +byte 1 101 +byte 1 114 +byte 1 0 +align 1 +LABELV $1125 +byte 1 115 +byte 1 108 +byte 1 105 +byte 1 100 +byte 1 101 +byte 1 114 +byte 1 32 +byte 1 104 +byte 1 97 +byte 1 110 +byte 1 100 +byte 1 108 +byte 1 101 +byte 1 32 +byte 1 107 +byte 1 101 +byte 1 121 +byte 1 32 +byte 1 101 +byte 1 120 +byte 1 105 +byte 1 116 +byte 1 10 +byte 1 0 +align 1 +LABELV $949 +byte 1 37 +byte 1 102 +byte 1 0 +align 1 +LABELV $895 +byte 1 37 +byte 1 105 +byte 1 0 +align 1 +LABELV $557 +byte 1 111 +byte 1 114 +byte 1 98 +byte 1 105 +byte 1 116 +byte 1 0 +align 1 +LABELV $556 +byte 1 112 +byte 1 108 +byte 1 97 +byte 1 121 +byte 1 108 +byte 1 111 +byte 1 111 +byte 1 112 +byte 1 101 +byte 1 100 +byte 1 0 +align 1 +LABELV $555 +byte 1 112 +byte 1 108 +byte 1 97 +byte 1 121 +byte 1 0 +align 1 +LABELV $554 +byte 1 101 +byte 1 120 +byte 1 101 +byte 1 99 +byte 1 0 +align 1 +LABELV $553 +byte 1 115 +byte 1 101 +byte 1 116 +byte 1 99 +byte 1 118 +byte 1 97 +byte 1 114 +byte 1 0 +align 1 +LABELV $552 +byte 1 116 +byte 1 114 +byte 1 97 +byte 1 110 +byte 1 115 +byte 1 105 +byte 1 116 +byte 1 105 +byte 1 111 +byte 1 110 +byte 1 0 +align 1 +LABELV $551 +byte 1 115 +byte 1 101 +byte 1 116 +byte 1 112 +byte 1 108 +byte 1 97 +byte 1 121 +byte 1 101 +byte 1 114 +byte 1 104 +byte 1 101 +byte 1 97 +byte 1 100 +byte 1 0 +align 1 +LABELV $550 +byte 1 115 +byte 1 101 +byte 1 116 +byte 1 112 +byte 1 108 +byte 1 97 +byte 1 121 +byte 1 101 +byte 1 114 +byte 1 109 +byte 1 111 +byte 1 100 +byte 1 101 +byte 1 108 +byte 1 0 +align 1 +LABELV $549 +byte 1 115 +byte 1 101 +byte 1 116 +byte 1 102 +byte 1 111 +byte 1 99 +byte 1 117 +byte 1 115 +byte 1 0 +align 1 +LABELV $548 +byte 1 115 +byte 1 101 +byte 1 116 +byte 1 116 +byte 1 101 +byte 1 97 +byte 1 109 +byte 1 99 +byte 1 111 +byte 1 108 +byte 1 111 +byte 1 114 +byte 1 0 +align 1 +LABELV $547 +byte 1 115 +byte 1 101 +byte 1 116 +byte 1 105 +byte 1 116 +byte 1 101 +byte 1 109 +byte 1 99 +byte 1 111 +byte 1 108 +byte 1 111 +byte 1 114 +byte 1 0 +align 1 +LABELV $546 +byte 1 115 +byte 1 101 +byte 1 116 +byte 1 98 +byte 1 97 +byte 1 99 +byte 1 107 +byte 1 103 +byte 1 114 +byte 1 111 +byte 1 117 +byte 1 110 +byte 1 100 +byte 1 0 +align 1 +LABELV $545 +byte 1 115 +byte 1 101 +byte 1 116 +byte 1 97 +byte 1 115 +byte 1 115 +byte 1 101 +byte 1 116 +byte 1 0 +align 1 +LABELV $544 +byte 1 99 +byte 1 108 +byte 1 111 +byte 1 115 +byte 1 101 +byte 1 0 +align 1 +LABELV $543 +byte 1 111 +byte 1 112 +byte 1 101 +byte 1 110 +byte 1 0 +align 1 +LABELV $542 +byte 1 115 +byte 1 101 +byte 1 116 +byte 1 99 +byte 1 111 +byte 1 108 +byte 1 111 +byte 1 114 +byte 1 0 +align 1 +LABELV $541 +byte 1 104 +byte 1 105 +byte 1 100 +byte 1 101 +byte 1 0 +align 1 +LABELV $540 +byte 1 115 +byte 1 104 +byte 1 111 +byte 1 119 +byte 1 0 +align 1 +LABELV $539 +byte 1 102 +byte 1 97 +byte 1 100 +byte 1 101 +byte 1 111 +byte 1 117 +byte 1 116 +byte 1 0 +align 1 +LABELV $538 +byte 1 102 +byte 1 97 +byte 1 100 +byte 1 101 +byte 1 105 +byte 1 110 +byte 1 0 +align 1 +LABELV $531 +byte 1 37 +byte 1 115 +byte 1 32 +byte 1 59 +byte 1 32 +byte 1 0 +align 1 +LABELV $524 +byte 1 116 +byte 1 101 +byte 1 97 +byte 1 109 +byte 1 95 +byte 1 104 +byte 1 101 +byte 1 97 +byte 1 100 +byte 1 109 +byte 1 111 +byte 1 100 +byte 1 101 +byte 1 108 +byte 1 0 +align 1 +LABELV $520 +byte 1 116 +byte 1 101 +byte 1 97 +byte 1 109 +byte 1 95 +byte 1 109 +byte 1 111 +byte 1 100 +byte 1 101 +byte 1 108 +byte 1 0 +align 1 +LABELV $364 +byte 1 98 +byte 1 111 +byte 1 114 +byte 1 100 +byte 1 101 +byte 1 114 +byte 1 99 +byte 1 111 +byte 1 108 +byte 1 111 +byte 1 114 +byte 1 0 +align 1 +LABELV $361 +byte 1 102 +byte 1 111 +byte 1 114 +byte 1 101 +byte 1 99 +byte 1 111 +byte 1 108 +byte 1 111 +byte 1 114 +byte 1 0 +align 1 +LABELV $358 +byte 1 98 +byte 1 97 +byte 1 99 +byte 1 107 +byte 1 99 +byte 1 111 +byte 1 108 +byte 1 111 +byte 1 114 +byte 1 0 +align 1 +LABELV $200 +byte 1 32 +byte 1 0 +align 1 +LABELV $197 +byte 1 34 +byte 1 37 +byte 1 115 +byte 1 34 +byte 1 0 +align 1 +LABELV $192 +byte 1 125 +byte 1 0 +align 1 +LABELV $183 +byte 1 123 +byte 1 0 +align 1 +LABELV $147 +byte 1 101 +byte 1 120 +byte 1 112 +byte 1 101 +byte 1 99 +byte 1 116 +byte 1 101 +byte 1 100 +byte 1 32 +byte 1 105 +byte 1 110 +byte 1 116 +byte 1 101 +byte 1 103 +byte 1 101 +byte 1 114 +byte 1 32 +byte 1 98 +byte 1 117 +byte 1 116 +byte 1 32 +byte 1 102 +byte 1 111 +byte 1 117 +byte 1 110 +byte 1 100 +byte 1 32 +byte 1 37 +byte 1 115 +byte 1 10 +byte 1 0 +align 1 +LABELV $114 +byte 1 101 +byte 1 120 +byte 1 112 +byte 1 101 +byte 1 99 +byte 1 116 +byte 1 101 +byte 1 100 +byte 1 32 +byte 1 102 +byte 1 108 +byte 1 111 +byte 1 97 +byte 1 116 +byte 1 32 +byte 1 98 +byte 1 117 +byte 1 116 +byte 1 32 +byte 1 102 +byte 1 111 +byte 1 117 +byte 1 110 +byte 1 100 +byte 1 32 +byte 1 37 +byte 1 115 +byte 1 10 +byte 1 0 +align 1 +LABELV $91 +byte 1 94 +byte 1 49 +byte 1 69 +byte 1 82 +byte 1 82 +byte 1 79 +byte 1 82 +byte 1 58 +byte 1 32 +byte 1 37 +byte 1 115 +byte 1 44 +byte 1 32 +byte 1 108 +byte 1 105 +byte 1 110 +byte 1 101 +byte 1 32 +byte 1 37 +byte 1 100 +byte 1 58 +byte 1 32 +byte 1 37 +byte 1 115 +byte 1 10 +byte 1 0 +align 1 +LABELV $87 +byte 1 94 +byte 1 51 +byte 1 87 +byte 1 65 +byte 1 82 +byte 1 78 +byte 1 73 +byte 1 78 +byte 1 71 +byte 1 58 +byte 1 32 +byte 1 37 +byte 1 115 +byte 1 44 +byte 1 32 +byte 1 108 +byte 1 105 +byte 1 110 +byte 1 101 +byte 1 32 +byte 1 37 +byte 1 100 +byte 1 58 +byte 1 32 +byte 1 37 +byte 1 115 +byte 1 10 +byte 1 0 +align 1 +LABELV $76 +byte 1 77 +byte 1 101 +byte 1 109 +byte 1 111 +byte 1 114 +byte 1 121 +byte 1 32 +byte 1 80 +byte 1 111 +byte 1 111 +byte 1 108 +byte 1 32 +byte 1 105 +byte 1 115 +byte 1 32 +byte 1 37 +byte 1 46 +byte 1 49 +byte 1 102 +byte 1 37 +byte 1 37 +byte 1 32 +byte 1 102 +byte 1 117 +byte 1 108 +byte 1 108 +byte 1 44 +byte 1 32 +byte 1 37 +byte 1 105 +byte 1 32 +byte 1 98 +byte 1 121 +byte 1 116 +byte 1 101 +byte 1 115 +byte 1 32 +byte 1 111 +byte 1 117 +byte 1 116 +byte 1 32 +byte 1 111 +byte 1 102 +byte 1 32 +byte 1 37 +byte 1 105 +byte 1 32 +byte 1 117 +byte 1 115 +byte 1 101 +byte 1 100 +byte 1 46 +byte 1 10 +byte 1 0 +align 1 +LABELV $75 +byte 1 83 +byte 1 116 +byte 1 114 +byte 1 105 +byte 1 110 +byte 1 103 +byte 1 32 +byte 1 80 +byte 1 111 +byte 1 111 +byte 1 108 +byte 1 32 +byte 1 105 +byte 1 115 +byte 1 32 +byte 1 37 +byte 1 46 +byte 1 49 +byte 1 102 +byte 1 37 +byte 1 37 +byte 1 32 +byte 1 102 +byte 1 117 +byte 1 108 +byte 1 108 +byte 1 44 +byte 1 32 +byte 1 37 +byte 1 105 +byte 1 32 +byte 1 98 +byte 1 121 +byte 1 116 +byte 1 101 +byte 1 115 +byte 1 32 +byte 1 111 +byte 1 117 +byte 1 116 +byte 1 32 +byte 1 111 +byte 1 102 +byte 1 32 +byte 1 37 +byte 1 105 +byte 1 32 +byte 1 117 +byte 1 115 +byte 1 101 +byte 1 100 +byte 1 46 +byte 1 10 +byte 1 0 +align 1 +LABELV $74 +byte 1 45 +byte 1 45 +byte 1 45 +byte 1 45 +byte 1 45 +byte 1 45 +byte 1 45 +byte 1 45 +byte 1 45 +byte 1 45 +byte 1 45 +byte 1 45 +byte 1 45 +byte 1 45 +byte 1 45 +byte 1 45 +byte 1 10 +byte 1 0 +align 1 +LABELV $73 +byte 1 77 +byte 1 101 +byte 1 109 +byte 1 111 +byte 1 114 +byte 1 121 +byte 1 47 +byte 1 83 +byte 1 116 +byte 1 114 +byte 1 105 +byte 1 110 +byte 1 103 +byte 1 32 +byte 1 80 +byte 1 111 +byte 1 111 +byte 1 108 +byte 1 32 +byte 1 73 +byte 1 110 +byte 1 102 +byte 1 111 +byte 1 10 +byte 1 0 +align 1 +LABELV $54 +byte 1 0 +align 1 +LABELV $45 +byte 1 85 +byte 1 73 +byte 1 95 +byte 1 65 +byte 1 108 +byte 1 108 +byte 1 111 +byte 1 99 +byte 1 58 +byte 1 32 +byte 1 70 +byte 1 97 +byte 1 105 +byte 1 108 +byte 1 117 +byte 1 114 +byte 1 101 +byte 1 46 +byte 1 32 +byte 1 79 +byte 1 117 +byte 1 116 +byte 1 32 +byte 1 111 +byte 1 102 +byte 1 32 +byte 1 109 +byte 1 101 +byte 1 109 +byte 1 111 +byte 1 114 +byte 1 121 +byte 1 33 +byte 1 10 +byte 1 0 diff --git a/ta_ui/vm/ui_util.asm b/ta_ui/vm/ui_util.asm new file mode 100644 index 00000000..e69de29b diff --git a/ta_ui/vssver.scc b/ta_ui/vssver.scc new file mode 100644 index 0000000000000000000000000000000000000000..63ce9e3f81da465331d2a2c5bfe85c8d7a016274 GIT binary patch literal 320 zcmXpJVq~be!_I0^aanNcItGC#$&&Z~R-W)+7i0hf4j}Dk=z8nq|J$b-fg+qh{->2U zCKbls0rRjwRpc=|b5o(IUEyk+_ZBZrTtxq$K@_404G z?oglo?KCTp&ky9sP1N;t7HBxF1LPY4`A-y1uDRdWeVPx*HwE(h9n5X3*{7Zk0rJg& z{JI`_hK?&sPb&c(WDDdA_^(M;@m+sf6e#ZiteU(=|w>KC?Ma%MNaF~ ZBEQovK>iM81_t3it9c(|{+?z6@&Om&T$um> literal 0 HcmV?d00001