From 425decdf7e9284d15aa726e3ae96b9942fb0e3ea Mon Sep 17 00:00:00 2001 From: IronClawTrem Date: Sun, 16 Feb 2020 03:40:06 +0000 Subject: create tremded branch --- .clang-format | 87 + .gitignore | 43 + .travis.yml | 57 + .ycm_extra_conf.py | 118 + CMakeLists.txt | 136 + ChangeLog | 175 + Dockerfile | 5 + GNUmakefile | 1292 -- GPL | 879 +- Makefile | 2925 ++++ README.md | 165 +- assets/armour/bsuit.armour | 19 + assets/armour/helmet.armour | 19 + assets/armour/larmour.armour | 95 + assets/configs/buildables/acid_tube.cfg | 5 + assets/configs/buildables/arm.cfg | 5 + assets/configs/buildables/barricade.cfg | 5 + assets/configs/buildables/booster.cfg | 5 + assets/configs/buildables/dcc.cfg | 5 + assets/configs/buildables/eggpod.cfg | 5 + assets/configs/buildables/hive.cfg | 5 + assets/configs/buildables/hovel.cfg | 5 + assets/configs/buildables/medistat.cfg | 5 + assets/configs/buildables/mgturret.cfg | 7 + assets/configs/buildables/overmind.cfg | 5 + assets/configs/buildables/reactor.cfg | 5 + assets/configs/buildables/repeater.cfg | 5 + assets/configs/buildables/telenode.cfg | 5 + assets/configs/buildables/tesla.cfg | 5 + assets/configs/buildables/trapper.cfg | 5 + assets/configs/classes/builder.cfg | 17 + assets/configs/classes/builderupg.cfg | 17 + assets/configs/classes/human_base.cfg | 17 + assets/configs/classes/human_bsuit.cfg | 17 + assets/configs/classes/level0.cfg | 17 + assets/configs/classes/level1.cfg | 17 + assets/configs/classes/level1upg.cfg | 17 + assets/configs/classes/level2.cfg | 17 + assets/configs/classes/level2upg.cfg | 17 + assets/configs/classes/level3.cfg | 17 + assets/configs/classes/level3upg.cfg | 17 + assets/configs/classes/level4.cfg | 17 + assets/configs/classes/spectator.cfg | 17 + assets/models/buildables/acid_tube/animation.cfg | 15 + assets/models/buildables/barricade/animation.cfg | 17 + assets/models/buildables/medistat/animation.cfg | 18 + assets/models/buildables/mgturret/animation.cfg | 15 + assets/models/buildables/repeater/animation.cfg | 15 + assets/models/buildables/tesla/animation.cfg | 15 + assets/models/generic/sphere.md3 | Bin 0 -> 27748 bytes assets/models/generic/sphericalCone240.md3 | Bin 0 -> 22012 bytes assets/models/generic/sphericalCone64.md3 | Bin 0 -> 38172 bytes assets/models/players/human_base/locdamage.cfg | 60 + assets/models/players/human_bsuit/locdamage.cfg | 29 + assets/models/players/level1/animation.cfg | 48 + assets/models/weapons/abuild/weapon.cfg | 11 + assets/models/weapons/abuildupg/weapon.cfg | 19 + assets/models/weapons/grenade/weapon.cfg | 13 + assets/models/weapons/lcannon/weapon.cfg | 33 + assets/models/weapons/level0/weapon.cfg | 9 + assets/models/weapons/level1/weapon.cfg | 11 + assets/models/weapons/level1upg/weapon.cfg | 17 + assets/models/weapons/level2/weapon.cfg | 11 + assets/models/weapons/level2upg/weapon.cfg | 18 + assets/models/weapons/level3/weapon.cfg | 16 + assets/models/weapons/level3upg/weapon.cfg | 28 + assets/models/weapons/level4/weapon.cfg | 11 + assets/models/weapons/mdriver/weapon.cfg | 12 + assets/models/weapons/prifle/weapon.cfg | 17 + assets/models/weapons/psaw/weapon.cfg | 13 + assets/music/Tremulous Heartbeat.mid | Bin 0 -> 1800 bytes assets/scripts/binary.shader | 16394 +++++++++++++++++++ assets/scripts/core.shader | 209 + assets/scripts/crosshairs.shader | 96 + assets/scripts/mdriver.trail | 10 + assets/scripts/misc.particle | 378 + assets/scripts/ui.shader | 19 + assets/scripts/weapons.particle | 890 + assets/scripts/weapons.shader | 93 + assets/sound/buildables/barricade/sound.cfg | 14 + assets/ui/assets/alien/buildstat.cfg | 37 + assets/ui/assets/console1.tga | Bin 0 -> 121118 bytes assets/ui/assets/console2.jpg | Bin 0 -> 36364 bytes assets/ui/assets/human/buildstat.cfg | 39 + assets/ui/connect.menu | 14 + assets/ui/createfavorite.menu | 115 + assets/ui/createserver.menu | 499 + assets/ui/demo.menu | 108 + assets/ui/demo_error.menu | 101 + assets/ui/download.menu | 167 + assets/ui/drop.menu | 122 + assets/ui/error.menu | 102 + assets/ui/findplayer.menu | 173 + assets/ui/folders.menu | 121 + assets/ui/help.txt | 135 + assets/ui/hud.txt | 12 + assets/ui/ingame.menu | 140 + assets/ui/ingame.txt | 9 + assets/ui/ingame_game.menu | 862 + assets/ui/ingame_help.menu | 88 + assets/ui/ingame_leave.menu | 209 + assets/ui/ingame_options.menu | 2577 +++ assets/ui/install_update.menu | 145 + assets/ui/joinserver.menu | 769 + assets/ui/loading.menu | 223 + assets/ui/main.menu | 228 + assets/ui/menu_bool.h | 10 + assets/ui/menudef.h | 225 + assets/ui/menus.txt | 24 + assets/ui/mod.menu | 108 + assets/ui/news.menu | 102 + assets/ui/options.menu | 310 + assets/ui/password.menu | 85 + assets/ui/quit.menu | 99 + assets/ui/quitcredit.menu | 410 + assets/ui/say.menu | 180 + assets/ui/serverinfo.menu | 112 + assets/ui/teamscore.menu | 386 + assets/ui/tremulous.txt | 20 + assets/ui/tremulous_alien_builder_hud.menu | 42 + assets/ui/tremulous_alien_common_hud.h | 257 + assets/ui/tremulous_alien_general_hud.menu | 30 + assets/ui/tremulous_alienbuild.menu | 136 + assets/ui/tremulous_alienclass.menu | 157 + assets/ui/tremulous_aliendialogs.menu | 97 + assets/ui/tremulous_alienupgrade.menu | 136 + assets/ui/tremulous_common_hud.h | 247 + assets/ui/tremulous_default_hud.menu | 37 + assets/ui/tremulous_dialogs.menu | 98 + assets/ui/tremulous_human_hud.menu | 379 + assets/ui/tremulous_humanarmoury.menu | 189 + assets/ui/tremulous_humanbuild.menu | 135 + assets/ui/tremulous_humandialogs.menu | 98 + assets/ui/tremulous_humanitem.menu | 157 + assets/ui/tremulous_spectator_hud.menu | 52 + assets/ui/tremulous_teamselect.menu | 136 + assets/ui/tremulous_voicecmd.menu | 140 + cmake/AddQVM.cmake | 73 + cmake/SDL2.cmake | 13 + cmake/build_dir | 17 + cmake/debug_cflags | 4 + code_of_conduct.md | 71 + docs/Features.md | 93 + docs/LuaScripting.md | 13 + docs/ParticleSystem.md | 160 + docs/PlayerVars.md | 15 + docs/TrailSystem.md | 44 + docs/VoiceCommands.md | 40 + docs/opengl2-readme.md | 604 + external/AL/AL/VERSION | 5 + external/AL/AL/al.h | 656 + external/AL/AL/alc.h | 237 + external/AL/AL/alext.h | 355 + external/AL/AL/efx-creative.h | 3 + external/AL/AL/efx-presets.h | 402 + external/AL/AL/efx.h | 761 + external/SDL2/CMakeLists.txt | 6 + external/SDL2/include/SDL.h | 132 + external/SDL2/include/SDL_assert.h | 289 + external/SDL2/include/SDL_atomic.h | 268 + external/SDL2/include/SDL_audio.h | 605 + external/SDL2/include/SDL_bits.h | 97 + external/SDL2/include/SDL_blendmode.h | 63 + external/SDL2/include/SDL_clipboard.h | 71 + external/SDL2/include/SDL_config.h | 55 + external/SDL2/include/SDL_config.h.cmake | 419 + external/SDL2/include/SDL_config.h.in | 359 + external/SDL2/include/SDL_config_android.h | 145 + external/SDL2/include/SDL_config_iphoneos.h | 162 + external/SDL2/include/SDL_config_macosx.h | 188 + external/SDL2/include/SDL_config_minimal.h | 81 + external/SDL2/include/SDL_config_pandora.h | 127 + external/SDL2/include/SDL_config_psp.h | 143 + external/SDL2/include/SDL_config_windows.h | 221 + external/SDL2/include/SDL_config_winrt.h | 214 + external/SDL2/include/SDL_config_wiz.h | 120 + external/SDL2/include/SDL_copying.h | 20 + external/SDL2/include/SDL_cpuinfo.h | 161 + external/SDL2/include/SDL_egl.h | 1673 ++ external/SDL2/include/SDL_endian.h | 239 + external/SDL2/include/SDL_error.h | 76 + external/SDL2/include/SDL_events.h | 750 + external/SDL2/include/SDL_filesystem.h | 136 + external/SDL2/include/SDL_gamecontroller.h | 323 + external/SDL2/include/SDL_gesture.h | 87 + external/SDL2/include/SDL_haptic.h | 1223 ++ external/SDL2/include/SDL_hints.h | 711 + external/SDL2/include/SDL_joystick.h | 273 + external/SDL2/include/SDL_keyboard.h | 217 + external/SDL2/include/SDL_keycode.h | 341 + external/SDL2/include/SDL_loadso.h | 81 + external/SDL2/include/SDL_log.h | 211 + external/SDL2/include/SDL_main.h | 161 + external/SDL2/include/SDL_messagebox.h | 144 + external/SDL2/include/SDL_mouse.h | 300 + external/SDL2/include/SDL_mutex.h | 251 + external/SDL2/include/SDL_name.h | 33 + external/SDL2/include/SDL_opengl.h | 2176 +++ external/SDL2/include/SDL_opengl_glext.h | 11177 +++++++++++++ external/SDL2/include/SDL_opengles.h | 38 + external/SDL2/include/SDL_opengles2.h | 50 + external/SDL2/include/SDL_opengles2_gl2.h | 621 + external/SDL2/include/SDL_opengles2_gl2ext.h | 2050 +++ external/SDL2/include/SDL_opengles2_gl2platform.h | 30 + external/SDL2/include/SDL_opengles2_khrplatform.h | 282 + external/SDL2/include/SDL_pixels.h | 454 + external/SDL2/include/SDL_platform.h | 181 + external/SDL2/include/SDL_power.h | 75 + external/SDL2/include/SDL_quit.h | 58 + external/SDL2/include/SDL_rect.h | 148 + external/SDL2/include/SDL_render.h | 880 + external/SDL2/include/SDL_revision.h | 2 + external/SDL2/include/SDL_rwops.h | 231 + external/SDL2/include/SDL_scancode.h | 401 + external/SDL2/include/SDL_shape.h | 143 + external/SDL2/include/SDL_stdinc.h | 527 + external/SDL2/include/SDL_surface.h | 503 + external/SDL2/include/SDL_system.h | 216 + external/SDL2/include/SDL_syswm.h | 301 + external/SDL2/include/SDL_test.h | 68 + external/SDL2/include/SDL_test_assert.h | 105 + external/SDL2/include/SDL_test_common.h | 188 + external/SDL2/include/SDL_test_compare.h | 69 + external/SDL2/include/SDL_test_crc32.h | 124 + external/SDL2/include/SDL_test_font.h | 76 + external/SDL2/include/SDL_test_fuzzer.h | 384 + external/SDL2/include/SDL_test_harness.h | 123 + external/SDL2/include/SDL_test_images.h | 78 + external/SDL2/include/SDL_test_log.h | 67 + external/SDL2/include/SDL_test_md5.h | 129 + external/SDL2/include/SDL_test_random.h | 115 + external/SDL2/include/SDL_thread.h | 287 + external/SDL2/include/SDL_timer.h | 115 + external/SDL2/include/SDL_touch.h | 86 + external/SDL2/include/SDL_types.h | 29 + external/SDL2/include/SDL_version.h | 162 + external/SDL2/include/SDL_video.h | 1103 ++ external/SDL2/include/begin_code.h | 146 + external/SDL2/include/close_code.h | 37 + external/SDL2/libs/Darwin/libSDL2-2.0.0.dylib | Bin 0 -> 3939940 bytes external/SDL2/libs/Darwin/libSDL2main.a | Bin 0 -> 8516 bytes external/jpeg-8c/CMakeLists.txt | 60 + external/jpeg-8c/README | 326 + external/jpeg-8c/ioquake3-changes.diff | 683 + external/jpeg-8c/jaricom.c | 153 + external/jpeg-8c/jcapimin.c | 288 + external/jpeg-8c/jcapistd.c | 161 + external/jpeg-8c/jcarith.c | 934 ++ external/jpeg-8c/jccoefct.c | 453 + external/jpeg-8c/jccolor.c | 459 + external/jpeg-8c/jcdctmgr.c | 482 + external/jpeg-8c/jchuff.c | 1576 ++ external/jpeg-8c/jcinit.c | 65 + external/jpeg-8c/jcmainct.c | 293 + external/jpeg-8c/jcmarker.c | 682 + external/jpeg-8c/jcmaster.c | 858 + external/jpeg-8c/jcomapi.c | 106 + external/jpeg-8c/jconfig.h | 60 + external/jpeg-8c/jcparam.c | 632 + external/jpeg-8c/jcprepct.c | 358 + external/jpeg-8c/jcsample.c | 545 + external/jpeg-8c/jctrans.c | 382 + external/jpeg-8c/jdapimin.c | 396 + external/jpeg-8c/jdapistd.c | 275 + external/jpeg-8c/jdarith.c | 772 + external/jpeg-8c/jdatadst.c | 267 + external/jpeg-8c/jdatasrc.c | 274 + external/jpeg-8c/jdcoefct.c | 736 + external/jpeg-8c/jdcolor.c | 396 + external/jpeg-8c/jdct.h | 393 + external/jpeg-8c/jddctmgr.c | 384 + external/jpeg-8c/jdhuff.c | 1541 ++ external/jpeg-8c/jdinput.c | 661 + external/jpeg-8c/jdmainct.c | 512 + external/jpeg-8c/jdmarker.c | 1406 ++ external/jpeg-8c/jdmaster.c | 533 + external/jpeg-8c/jdmerge.c | 400 + external/jpeg-8c/jdpostct.c | 290 + external/jpeg-8c/jdsample.c | 361 + external/jpeg-8c/jdtrans.c | 140 + external/jpeg-8c/jerror.c | 254 + external/jpeg-8c/jerror.h | 304 + external/jpeg-8c/jfdctflt.c | 174 + external/jpeg-8c/jfdctfst.c | 230 + external/jpeg-8c/jfdctint.c | 4348 +++++ external/jpeg-8c/jidctflt.c | 235 + external/jpeg-8c/jidctfst.c | 368 + external/jpeg-8c/jidctint.c | 5137 ++++++ external/jpeg-8c/jinclude.h | 91 + external/jpeg-8c/jmemmgr.c | 1118 ++ external/jpeg-8c/jmemnobs.c | 109 + external/jpeg-8c/jmemsys.h | 198 + external/jpeg-8c/jmorecfg.h | 371 + external/jpeg-8c/jpegint.h | 407 + external/jpeg-8c/jpeglib.h | 1160 ++ external/jpeg-8c/jquant1.c | 856 + external/jpeg-8c/jquant2.c | 1310 ++ external/jpeg-8c/jutils.c | 231 + external/jpeg-8c/jversion.h | 14 + external/libcurl-7.35.0/CMakeLists.txt | 1 + external/libcurl-7.35.0/curl/curl.h | 2296 +++ external/libcurl-7.35.0/curl/curlbuild.h | 587 + external/libcurl-7.35.0/curl/curlrules.h | 262 + external/libcurl-7.35.0/curl/curlver.h | 69 + external/libcurl-7.35.0/curl/easy.h | 102 + external/libcurl-7.35.0/curl/mprintf.h | 81 + external/libcurl-7.35.0/curl/multi.h | 399 + external/libcurl-7.35.0/curl/stdcheaders.h | 33 + external/libcurl-7.35.0/curl/typecheck-gcc.h | 610 + external/libogg-1.3.2/CMakeLists.txt | 10 + external/libogg-1.3.2/include/ogg/config_types.h | 25 + external/libogg-1.3.2/include/ogg/ogg.h | 210 + external/libogg-1.3.2/include/ogg/os_types.h | 147 + external/libogg-1.3.2/src/bitwise.c | 1088 ++ external/libogg-1.3.2/src/framing.c | 2111 +++ external/libs/macosx/CMakeLists.txt | 28 + external/libs/macosx/libSDL2-2.0.0.dylib | Bin 0 -> 3939940 bytes external/libs/macosx/libSDL2main.a | Bin 0 -> 8516 bytes external/libs/win32/SDL.dll | Bin 0 -> 1592921 bytes external/libs/win32/SDL2.dll | Bin 0 -> 950272 bytes external/libs/win32/libSDL.a | Bin 0 -> 1531146 bytes external/libs/win32/libSDL2.a | Bin 0 -> 6157810 bytes external/libs/win32/libSDL2.dll.a | Bin 0 -> 356240 bytes external/libs/win32/libSDL2main.a | Bin 0 -> 8808 bytes external/libs/win32/libcurl.a | Bin 0 -> 385192 bytes external/libs/win64/SDL264.dll | Bin 0 -> 1117696 bytes external/libs/win64/SDL64.dll | Bin 0 -> 1894504 bytes external/libs/win64/libSDL264.a | Bin 0 -> 7810478 bytes external/libs/win64/libSDL264.dll.a | Bin 0 -> 349446 bytes external/libs/win64/libSDL264main.a | Bin 0 -> 11074 bytes external/libs/win64/libSDL64.a | Bin 0 -> 1829790 bytes external/libs/win64/libSDL64main.a | Bin 0 -> 17118 bytes external/libs/win64/libcurl.a | Bin 0 -> 417936 bytes external/libvorbis-1.3.5/CMakeLists.txt | 82 + external/libvorbis-1.3.5/include/vorbis/codec.h | 243 + .../libvorbis-1.3.5/include/vorbis/vorbisenc.h | 436 + .../libvorbis-1.3.5/include/vorbis/vorbisfile.h | 206 + external/libvorbis-1.3.5/lib/analysis.c | 120 + external/libvorbis-1.3.5/lib/backends.h | 144 + external/libvorbis-1.3.5/lib/bitrate.c | 253 + external/libvorbis-1.3.5/lib/bitrate.h | 59 + external/libvorbis-1.3.5/lib/block.c | 1047 ++ .../lib/books/coupled/res_books_51.h | 12274 ++++++++++++++ .../lib/books/coupled/res_books_stereo.h | 15783 ++++++++++++++++++ .../libvorbis-1.3.5/lib/books/floor/floor_books.h | 1547 ++ .../lib/books/uncoupled/res_books_uncoupled.h | 7758 +++++++++ external/libvorbis-1.3.5/lib/codebook.c | 490 + external/libvorbis-1.3.5/lib/codebook.h | 118 + external/libvorbis-1.3.5/lib/codec_internal.h | 167 + external/libvorbis-1.3.5/lib/envelope.c | 375 + external/libvorbis-1.3.5/lib/envelope.h | 80 + external/libvorbis-1.3.5/lib/floor0.c | 224 + external/libvorbis-1.3.5/lib/floor1.c | 1087 ++ external/libvorbis-1.3.5/lib/highlevel.h | 58 + external/libvorbis-1.3.5/lib/info.c | 673 + external/libvorbis-1.3.5/lib/lookup.c | 94 + external/libvorbis-1.3.5/lib/lookup.h | 32 + external/libvorbis-1.3.5/lib/lookup_data.h | 192 + external/libvorbis-1.3.5/lib/lpc.c | 160 + external/libvorbis-1.3.5/lib/lpc.h | 29 + external/libvorbis-1.3.5/lib/lsp.c | 454 + external/libvorbis-1.3.5/lib/lsp.h | 28 + external/libvorbis-1.3.5/lib/mapping0.c | 810 + external/libvorbis-1.3.5/lib/masking.h | 785 + external/libvorbis-1.3.5/lib/mdct.c | 563 + external/libvorbis-1.3.5/lib/mdct.h | 71 + external/libvorbis-1.3.5/lib/misc.h | 58 + external/libvorbis-1.3.5/lib/modes/floor_all.h | 260 + external/libvorbis-1.3.5/lib/modes/psych_11.h | 51 + external/libvorbis-1.3.5/lib/modes/psych_16.h | 133 + external/libvorbis-1.3.5/lib/modes/psych_44.h | 642 + external/libvorbis-1.3.5/lib/modes/psych_8.h | 101 + external/libvorbis-1.3.5/lib/modes/residue_16.h | 163 + external/libvorbis-1.3.5/lib/modes/residue_44.h | 292 + external/libvorbis-1.3.5/lib/modes/residue_44p51.h | 451 + external/libvorbis-1.3.5/lib/modes/residue_44u.h | 318 + external/libvorbis-1.3.5/lib/modes/residue_8.h | 109 + external/libvorbis-1.3.5/lib/modes/setup_11.h | 143 + external/libvorbis-1.3.5/lib/modes/setup_16.h | 153 + external/libvorbis-1.3.5/lib/modes/setup_22.h | 128 + external/libvorbis-1.3.5/lib/modes/setup_32.h | 132 + external/libvorbis-1.3.5/lib/modes/setup_44.h | 117 + external/libvorbis-1.3.5/lib/modes/setup_44p51.h | 74 + external/libvorbis-1.3.5/lib/modes/setup_44u.h | 74 + external/libvorbis-1.3.5/lib/modes/setup_8.h | 149 + external/libvorbis-1.3.5/lib/modes/setup_X.h | 225 + external/libvorbis-1.3.5/lib/os.h | 191 + external/libvorbis-1.3.5/lib/psy.c | 1206 ++ external/libvorbis-1.3.5/lib/psy.h | 154 + external/libvorbis-1.3.5/lib/registry.c | 45 + external/libvorbis-1.3.5/lib/registry.h | 32 + external/libvorbis-1.3.5/lib/res0.c | 890 + external/libvorbis-1.3.5/lib/scales.h | 90 + external/libvorbis-1.3.5/lib/sharedbook.c | 586 + external/libvorbis-1.3.5/lib/smallft.c | 1255 ++ external/libvorbis-1.3.5/lib/smallft.h | 34 + external/libvorbis-1.3.5/lib/synthesis.c | 180 + external/libvorbis-1.3.5/lib/vorbisenc.c | 1224 ++ external/libvorbis-1.3.5/lib/vorbisfile.c | 2425 +++ external/libvorbis-1.3.5/lib/window.c | 2136 +++ external/libvorbis-1.3.5/lib/window.h | 26 + external/lua-5.3.3/CMakeLists.txt | 55 + external/lua-5.3.3/README | 6 + external/lua-5.3.3/include/lauxlib.h | 256 + external/lua-5.3.3/include/lua.h | 486 + external/lua-5.3.3/include/lua.hpp | 9 + external/lua-5.3.3/include/luaconf.h | 767 + external/lua-5.3.3/include/lualib.h | 58 + external/lua-5.3.3/src/lapi.c | 1298 ++ external/lua-5.3.3/src/lapi.h | 24 + external/lua-5.3.3/src/lauxlib.c | 1035 ++ external/lua-5.3.3/src/lauxlib.h | 257 + external/lua-5.3.3/src/lbaselib.c | 500 + external/lua-5.3.3/src/lbitlib.c | 233 + external/lua-5.3.3/src/lcode.c | 1199 ++ external/lua-5.3.3/src/lcode.h | 88 + external/lua-5.3.3/src/lcorolib.c | 168 + external/lua-5.3.3/src/lctype.c | 55 + external/lua-5.3.3/src/lctype.h | 95 + external/lua-5.3.3/src/ldblib.c | 456 + external/lua-5.3.3/src/ldebug.c | 679 + external/lua-5.3.3/src/ldebug.h | 39 + external/lua-5.3.3/src/ldo.c | 800 + external/lua-5.3.3/src/ldo.h | 58 + external/lua-5.3.3/src/ldump.c | 215 + external/lua-5.3.3/src/lfunc.c | 151 + external/lua-5.3.3/src/lfunc.h | 61 + external/lua-5.3.3/src/lgc.c | 1176 ++ external/lua-5.3.3/src/lgc.h | 147 + external/lua-5.3.3/src/linit.c | 68 + external/lua-5.3.3/src/liolib.c | 768 + external/lua-5.3.3/src/llex.c | 565 + external/lua-5.3.3/src/llex.h | 85 + external/lua-5.3.3/src/llimits.h | 323 + external/lua-5.3.3/src/lmathlib.c | 407 + external/lua-5.3.3/src/lmem.c | 100 + external/lua-5.3.3/src/lmem.h | 69 + external/lua-5.3.3/src/loadlib.c | 787 + external/lua-5.3.3/src/lobject.c | 521 + external/lua-5.3.3/src/lobject.h | 549 + external/lua-5.3.3/src/lopcodes.c | 124 + external/lua-5.3.3/src/lopcodes.h | 295 + external/lua-5.3.3/src/loslib.c | 403 + external/lua-5.3.3/src/lparser.c | 1652 ++ external/lua-5.3.3/src/lparser.h | 133 + external/lua-5.3.3/src/lprefix.h | 45 + external/lua-5.3.3/src/lstate.c | 347 + external/lua-5.3.3/src/lstate.h | 234 + external/lua-5.3.3/src/lstring.c | 248 + external/lua-5.3.3/src/lstring.h | 49 + external/lua-5.3.3/src/lstrlib.c | 1582 ++ external/lua-5.3.3/src/ltable.c | 669 + external/lua-5.3.3/src/ltable.h | 58 + external/lua-5.3.3/src/ltablib.c | 450 + external/lua-5.3.3/src/ltm.c | 165 + external/lua-5.3.3/src/ltm.h | 76 + external/lua-5.3.3/src/lua.c | 609 + external/lua-5.3.3/src/lua.h | 486 + external/lua-5.3.3/src/lua.hpp | 9 + external/lua-5.3.3/src/luac.c | 449 + external/lua-5.3.3/src/luaconf.h | 767 + external/lua-5.3.3/src/lualib.h | 58 + external/lua-5.3.3/src/lundump.c | 279 + external/lua-5.3.3/src/lundump.h | 32 + external/lua-5.3.3/src/lutf8lib.c | 256 + external/lua-5.3.3/src/lvm.c | 1322 ++ external/lua-5.3.3/src/lvm.h | 113 + external/lua-5.3.3/src/lzio.c | 68 + external/lua-5.3.3/src/lzio.h | 66 + external/nettle-3.3/CMakeLists.txt | 38 + external/nettle-3.3/nettle/bignum-random-prime.c | 533 + external/nettle-3.3/nettle/bignum-random.c | 96 + external/nettle-3.3/nettle/bignum.c | 186 + external/nettle-3.3/nettle/bignum.h | 140 + external/nettle-3.3/nettle/buffer-init.c | 48 + external/nettle-3.3/nettle/buffer.c | 142 + external/nettle-3.3/nettle/buffer.h | 106 + external/nettle-3.3/nettle/gmp-glue.c | 326 + external/nettle-3.3/nettle/gmp-glue.h | 164 + external/nettle-3.3/nettle/macros.h | 245 + external/nettle-3.3/nettle/mini-gmp.c | 4386 +++++ external/nettle-3.3/nettle/mini-gmp.h | 294 + external/nettle-3.3/nettle/nettle-internal.h | 92 + external/nettle-3.3/nettle/nettle-meta.h | 230 + external/nettle-3.3/nettle/nettle-stdint.h | 6 + external/nettle-3.3/nettle/nettle-types.h | 110 + external/nettle-3.3/nettle/nettle-write.h | 58 + external/nettle-3.3/nettle/pkcs1-rsa-sha256.c | 120 + external/nettle-3.3/nettle/pkcs1.c | 73 + external/nettle-3.3/nettle/pkcs1.h | 114 + external/nettle-3.3/nettle/realloc.c | 69 + external/nettle-3.3/nettle/realloc.h | 48 + external/nettle-3.3/nettle/rsa-keygen.c | 212 + external/nettle-3.3/nettle/rsa-sha256-sign.c | 77 + external/nettle-3.3/nettle/rsa-sha256-verify.c | 79 + external/nettle-3.3/nettle/rsa-sign.c | 144 + external/nettle-3.3/nettle/rsa-verify.c | 64 + external/nettle-3.3/nettle/rsa.c | 86 + external/nettle-3.3/nettle/rsa.h | 355 + external/nettle-3.3/nettle/rsa2sexp.c | 59 + external/nettle-3.3/nettle/sexp-format.c | 348 + external/nettle-3.3/nettle/sexp.c | 399 + external/nettle-3.3/nettle/sexp.h | 213 + external/nettle-3.3/nettle/sexp2bignum.c | 60 + external/nettle-3.3/nettle/sexp2rsa.c | 115 + external/nettle-3.3/nettle/sha2.h | 206 + external/nettle-3.3/nettle/sha256-compress.c | 199 + external/nettle-3.3/nettle/sha256.c | 162 + external/nettle-3.3/nettle/version.h | 58 + external/nettle-3.3/nettle/write-be32.c | 77 + external/opus-1.1.4/CMakeLists.txt | 230 + external/opus-1.1.4/celt/CMakeLists.txt | 59 + external/opus-1.1.4/celt/_kiss_fft_guts.h | 182 + external/opus-1.1.4/celt/arch.h | 252 + external/opus-1.1.4/celt/arm/arm2gnu.pl | 353 + external/opus-1.1.4/celt/arm/arm_celt_map.c | 143 + external/opus-1.1.4/celt/arm/armcpu.c | 185 + external/opus-1.1.4/celt/arm/armcpu.h | 77 + external/opus-1.1.4/celt/arm/armopts.s.in | 37 + external/opus-1.1.4/celt/arm/celt_ne10_fft.c | 174 + external/opus-1.1.4/celt/arm/celt_ne10_mdct.c | 258 + external/opus-1.1.4/celt/arm/celt_neon_intr.c | 311 + .../opus-1.1.4/celt/arm/celt_pitch_xcorr_arm-gnu.S | 551 + .../opus-1.1.4/celt/arm/celt_pitch_xcorr_arm.s | 547 + external/opus-1.1.4/celt/arm/fft_arm.h | 72 + external/opus-1.1.4/celt/arm/fixed_arm64.h | 35 + external/opus-1.1.4/celt/arm/fixed_armv4.h | 80 + external/opus-1.1.4/celt/arm/fixed_armv5e.h | 151 + external/opus-1.1.4/celt/arm/kiss_fft_armv4.h | 121 + external/opus-1.1.4/celt/arm/kiss_fft_armv5e.h | 118 + external/opus-1.1.4/celt/arm/mdct_arm.h | 60 + external/opus-1.1.4/celt/arm/pitch_arm.h | 126 + external/opus-1.1.4/celt/bands.c | 1529 ++ external/opus-1.1.4/celt/bands.h | 120 + external/opus-1.1.4/celt/celt.c | 299 + external/opus-1.1.4/celt/celt.h | 229 + external/opus-1.1.4/celt/celt_decoder.c | 1248 ++ external/opus-1.1.4/celt/celt_encoder.c | 2410 +++ external/opus-1.1.4/celt/celt_lpc.c | 314 + external/opus-1.1.4/celt/celt_lpc.h | 67 + external/opus-1.1.4/celt/cpu_support.h | 70 + external/opus-1.1.4/celt/cwrs.c | 715 + external/opus-1.1.4/celt/cwrs.h | 48 + external/opus-1.1.4/celt/ecintrin.h | 87 + external/opus-1.1.4/celt/entcode.c | 153 + external/opus-1.1.4/celt/entcode.h | 152 + external/opus-1.1.4/celt/entdec.c | 245 + external/opus-1.1.4/celt/entdec.h | 100 + external/opus-1.1.4/celt/entenc.c | 294 + external/opus-1.1.4/celt/entenc.h | 110 + external/opus-1.1.4/celt/fixed_debug.h | 784 + external/opus-1.1.4/celt/fixed_generic.h | 167 + external/opus-1.1.4/celt/float_cast.h | 140 + external/opus-1.1.4/celt/kiss_fft.c | 604 + external/opus-1.1.4/celt/kiss_fft.h | 200 + external/opus-1.1.4/celt/laplace.c | 134 + external/opus-1.1.4/celt/laplace.h | 48 + external/opus-1.1.4/celt/mathops.c | 208 + external/opus-1.1.4/celt/mathops.h | 258 + external/opus-1.1.4/celt/mdct.c | 343 + external/opus-1.1.4/celt/mdct.h | 112 + external/opus-1.1.4/celt/mfrngcod.h | 48 + external/opus-1.1.4/celt/mips/celt_mipsr1.h | 151 + .../opus-1.1.4/celt/mips/fixed_generic_mipsr1.h | 126 + external/opus-1.1.4/celt/mips/kiss_fft_mipsr1.h | 167 + external/opus-1.1.4/celt/mips/mdct_mipsr1.h | 288 + external/opus-1.1.4/celt/mips/pitch_mipsr1.h | 161 + external/opus-1.1.4/celt/mips/vq_mipsr1.h | 125 + external/opus-1.1.4/celt/modes.c | 442 + external/opus-1.1.4/celt/modes.h | 75 + external/opus-1.1.4/celt/opus_custom_demo.c | 210 + external/opus-1.1.4/celt/os_support.h | 92 + external/opus-1.1.4/celt/pitch.c | 557 + external/opus-1.1.4/celt/pitch.h | 200 + external/opus-1.1.4/celt/quant_bands.c | 556 + external/opus-1.1.4/celt/quant_bands.h | 66 + external/opus-1.1.4/celt/rate.c | 639 + external/opus-1.1.4/celt/rate.h | 101 + external/opus-1.1.4/celt/stack_alloc.h | 184 + external/opus-1.1.4/celt/static_modes_fixed.h | 892 + .../opus-1.1.4/celt/static_modes_fixed_arm_ne10.h | 388 + external/opus-1.1.4/celt/static_modes_float.h | 888 + .../opus-1.1.4/celt/static_modes_float_arm_ne10.h | 404 + external/opus-1.1.4/celt/vq.c | 408 + external/opus-1.1.4/celt/vq.h | 75 + external/opus-1.1.4/celt/x86/celt_lpc_sse.c | 132 + external/opus-1.1.4/celt/x86/celt_lpc_sse.h | 68 + external/opus-1.1.4/celt/x86/pitch_sse.c | 185 + external/opus-1.1.4/celt/x86/pitch_sse.h | 192 + external/opus-1.1.4/celt/x86/pitch_sse2.c | 95 + external/opus-1.1.4/celt/x86/pitch_sse4_1.c | 195 + external/opus-1.1.4/celt/x86/x86_celt_map.c | 155 + external/opus-1.1.4/celt/x86/x86cpu.c | 157 + external/opus-1.1.4/celt/x86/x86cpu.h | 93 + external/opus-1.1.4/include/CMakeLists.txt | 2 + external/opus-1.1.4/include/opus.h | 981 ++ external/opus-1.1.4/include/opus_custom.h | 342 + external/opus-1.1.4/include/opus_defines.h | 753 + external/opus-1.1.4/include/opus_multistream.h | 660 + external/opus-1.1.4/include/opus_types.h | 159 + external/opus-1.1.4/silk/A2NLSF.c | 267 + external/opus-1.1.4/silk/API.h | 134 + external/opus-1.1.4/silk/CMakeLists.txt | 113 + external/opus-1.1.4/silk/CNG.c | 184 + external/opus-1.1.4/silk/HP_variable_cutoff.c | 77 + external/opus-1.1.4/silk/Inlines.h | 188 + external/opus-1.1.4/silk/LPC_analysis_filter.c | 108 + external/opus-1.1.4/silk/LPC_inv_pred_gain.c | 154 + external/opus-1.1.4/silk/LP_variable_cutoff.c | 135 + external/opus-1.1.4/silk/MacroCount.h | 718 + external/opus-1.1.4/silk/MacroDebug.h | 952 ++ external/opus-1.1.4/silk/NLSF2A.c | 178 + external/opus-1.1.4/silk/NLSF_VQ.c | 68 + external/opus-1.1.4/silk/NLSF_VQ_weights_laroia.c | 80 + external/opus-1.1.4/silk/NLSF_decode.c | 101 + external/opus-1.1.4/silk/NLSF_del_dec_quant.c | 217 + external/opus-1.1.4/silk/NLSF_encode.c | 137 + external/opus-1.1.4/silk/NLSF_stabilize.c | 142 + external/opus-1.1.4/silk/NLSF_unpack.c | 55 + external/opus-1.1.4/silk/NSQ.c | 429 + external/opus-1.1.4/silk/NSQ.h | 101 + external/opus-1.1.4/silk/NSQ_del_dec.c | 716 + external/opus-1.1.4/silk/PLC.c | 446 + external/opus-1.1.4/silk/PLC.h | 62 + external/opus-1.1.4/silk/SigProc_FIX.h | 615 + external/opus-1.1.4/silk/VAD.c | 362 + external/opus-1.1.4/silk/VQ_WMat_EC.c | 120 + external/opus-1.1.4/silk/ana_filt_bank_1.c | 74 + external/opus-1.1.4/silk/arm/NSQ_neon.c | 112 + external/opus-1.1.4/silk/arm/NSQ_neon.h | 113 + external/opus-1.1.4/silk/arm/SigProc_FIX_armv4.h | 47 + external/opus-1.1.4/silk/arm/SigProc_FIX_armv5e.h | 61 + external/opus-1.1.4/silk/arm/arm_silk_map.c | 55 + external/opus-1.1.4/silk/arm/macros_arm64.h | 39 + external/opus-1.1.4/silk/arm/macros_armv4.h | 103 + external/opus-1.1.4/silk/arm/macros_armv5e.h | 213 + external/opus-1.1.4/silk/biquad_alt.c | 78 + external/opus-1.1.4/silk/bwexpander.c | 51 + external/opus-1.1.4/silk/bwexpander_32.c | 50 + external/opus-1.1.4/silk/check_control_input.c | 106 + external/opus-1.1.4/silk/code_signs.c | 115 + external/opus-1.1.4/silk/control.h | 142 + external/opus-1.1.4/silk/control_SNR.c | 76 + external/opus-1.1.4/silk/control_audio_bandwidth.c | 126 + external/opus-1.1.4/silk/control_codec.c | 428 + external/opus-1.1.4/silk/debug.c | 170 + external/opus-1.1.4/silk/debug.h | 279 + external/opus-1.1.4/silk/dec_API.c | 419 + external/opus-1.1.4/silk/decode_core.c | 239 + external/opus-1.1.4/silk/decode_frame.c | 129 + external/opus-1.1.4/silk/decode_indices.c | 151 + external/opus-1.1.4/silk/decode_parameters.c | 115 + external/opus-1.1.4/silk/decode_pitch.c | 77 + external/opus-1.1.4/silk/decode_pulses.c | 115 + external/opus-1.1.4/silk/decoder_set_fs.c | 108 + external/opus-1.1.4/silk/define.h | 235 + external/opus-1.1.4/silk/enc_API.c | 563 + external/opus-1.1.4/silk/encode_indices.c | 181 + external/opus-1.1.4/silk/encode_pulses.c | 206 + external/opus-1.1.4/silk/errors.h | 98 + external/opus-1.1.4/silk/fixed/CMakeLists.txt | 42 + .../silk/fixed/LTP_analysis_filter_FIX.c | 85 + .../opus-1.1.4/silk/fixed/LTP_scale_ctrl_FIX.c | 53 + .../opus-1.1.4/silk/fixed/apply_sine_window_FIX.c | 101 + external/opus-1.1.4/silk/fixed/autocorr_FIX.c | 48 + external/opus-1.1.4/silk/fixed/burg_modified_FIX.c | 279 + external/opus-1.1.4/silk/fixed/corrMatrix_FIX.c | 156 + external/opus-1.1.4/silk/fixed/encode_frame_FIX.c | 385 + external/opus-1.1.4/silk/fixed/find_LPC_FIX.c | 151 + external/opus-1.1.4/silk/fixed/find_LTP_FIX.c | 244 + .../opus-1.1.4/silk/fixed/find_pitch_lags_FIX.c | 145 + .../opus-1.1.4/silk/fixed/find_pred_coefs_FIX.c | 147 + external/opus-1.1.4/silk/fixed/k2a_FIX.c | 53 + external/opus-1.1.4/silk/fixed/k2a_Q16_FIX.c | 53 + external/opus-1.1.4/silk/fixed/main_FIX.h | 257 + .../silk/fixed/noise_shape_analysis_FIX.c | 445 + .../silk/fixed/pitch_analysis_core_FIX.c | 744 + external/opus-1.1.4/silk/fixed/prefilter_FIX.c | 209 + external/opus-1.1.4/silk/fixed/process_gains_FIX.c | 117 + .../silk/fixed/regularize_correlations_FIX.c | 47 + .../opus-1.1.4/silk/fixed/residual_energy16_FIX.c | 103 + .../opus-1.1.4/silk/fixed/residual_energy_FIX.c | 97 + external/opus-1.1.4/silk/fixed/schur64_FIX.c | 92 + external/opus-1.1.4/silk/fixed/schur_FIX.c | 106 + external/opus-1.1.4/silk/fixed/solve_LS_FIX.c | 249 + external/opus-1.1.4/silk/fixed/structs_FIX.h | 133 + external/opus-1.1.4/silk/fixed/vector_ops_FIX.c | 96 + .../silk/fixed/warped_autocorrelation_FIX.c | 88 + external/opus-1.1.4/silk/float/CMakeLists.txt | 48 + .../silk/float/LPC_analysis_filter_FLP.c | 249 + .../opus-1.1.4/silk/float/LPC_inv_pred_gain_FLP.c | 76 + .../silk/float/LTP_analysis_filter_FLP.c | 75 + .../opus-1.1.4/silk/float/LTP_scale_ctrl_FLP.c | 52 + external/opus-1.1.4/silk/float/SigProc_FLP.h | 204 + .../opus-1.1.4/silk/float/apply_sine_window_FLP.c | 81 + .../opus-1.1.4/silk/float/autocorrelation_FLP.c | 52 + external/opus-1.1.4/silk/float/burg_modified_FLP.c | 186 + external/opus-1.1.4/silk/float/bwexpander_FLP.c | 49 + external/opus-1.1.4/silk/float/corrMatrix_FLP.c | 93 + external/opus-1.1.4/silk/float/encode_frame_FLP.c | 372 + external/opus-1.1.4/silk/float/energy_FLP.c | 60 + external/opus-1.1.4/silk/float/find_LPC_FLP.c | 104 + external/opus-1.1.4/silk/float/find_LTP_FLP.c | 132 + .../opus-1.1.4/silk/float/find_pitch_lags_FLP.c | 132 + .../opus-1.1.4/silk/float/find_pred_coefs_FLP.c | 118 + external/opus-1.1.4/silk/float/inner_product_FLP.c | 60 + external/opus-1.1.4/silk/float/k2a_FLP.c | 53 + .../opus-1.1.4/silk/float/levinsondurbin_FLP.c | 81 + external/opus-1.1.4/silk/float/main_FLP.h | 313 + .../silk/float/noise_shape_analysis_FLP.c | 365 + .../silk/float/pitch_analysis_core_FLP.c | 630 + external/opus-1.1.4/silk/float/prefilter_FLP.c | 206 + external/opus-1.1.4/silk/float/process_gains_FLP.c | 103 + .../silk/float/regularize_correlations_FLP.c | 48 + .../opus-1.1.4/silk/float/residual_energy_FLP.c | 117 + .../opus-1.1.4/silk/float/scale_copy_vector_FLP.c | 57 + external/opus-1.1.4/silk/float/scale_vector_FLP.c | 56 + external/opus-1.1.4/silk/float/schur_FLP.c | 70 + external/opus-1.1.4/silk/float/solve_LS_FLP.c | 207 + external/opus-1.1.4/silk/float/sort_FLP.c | 83 + external/opus-1.1.4/silk/float/structs_FLP.h | 132 + .../silk/float/warped_autocorrelation_FLP.c | 73 + external/opus-1.1.4/silk/float/wrappers_FLP.c | 202 + external/opus-1.1.4/silk/gain_quant.c | 141 + external/opus-1.1.4/silk/init_decoder.c | 56 + external/opus-1.1.4/silk/init_encoder.c | 64 + external/opus-1.1.4/silk/inner_prod_aligned.c | 47 + external/opus-1.1.4/silk/interpolate.c | 51 + external/opus-1.1.4/silk/lin2log.c | 46 + external/opus-1.1.4/silk/log2lin.c | 58 + external/opus-1.1.4/silk/macros.h | 159 + external/opus-1.1.4/silk/main.h | 471 + external/opus-1.1.4/silk/mips/NSQ_del_dec_mipsr1.h | 409 + external/opus-1.1.4/silk/mips/macros_mipsr1.h | 92 + external/opus-1.1.4/silk/mips/sigproc_fix_mipsr1.h | 65 + external/opus-1.1.4/silk/pitch_est_defines.h | 88 + external/opus-1.1.4/silk/pitch_est_tables.c | 99 + external/opus-1.1.4/silk/process_NLSFs.c | 107 + external/opus-1.1.4/silk/quant_LTP_gains.c | 129 + external/opus-1.1.4/silk/resampler.c | 215 + external/opus-1.1.4/silk/resampler_down2.c | 74 + external/opus-1.1.4/silk/resampler_down2_3.c | 103 + external/opus-1.1.4/silk/resampler_private.h | 88 + external/opus-1.1.4/silk/resampler_private_AR2.c | 55 + .../opus-1.1.4/silk/resampler_private_IIR_FIR.c | 107 + .../opus-1.1.4/silk/resampler_private_down_FIR.c | 194 + .../opus-1.1.4/silk/resampler_private_up2_HQ.c | 113 + external/opus-1.1.4/silk/resampler_rom.c | 96 + external/opus-1.1.4/silk/resampler_rom.h | 68 + external/opus-1.1.4/silk/resampler_structs.h | 60 + external/opus-1.1.4/silk/shell_coder.c | 151 + external/opus-1.1.4/silk/sigm_Q15.c | 76 + external/opus-1.1.4/silk/sort.c | 154 + external/opus-1.1.4/silk/stereo_LR_to_MS.c | 229 + external/opus-1.1.4/silk/stereo_MS_to_LR.c | 85 + external/opus-1.1.4/silk/stereo_decode_pred.c | 73 + external/opus-1.1.4/silk/stereo_encode_pred.c | 62 + external/opus-1.1.4/silk/stereo_find_predictor.c | 79 + external/opus-1.1.4/silk/stereo_quant_pred.c | 73 + external/opus-1.1.4/silk/structs.h | 327 + external/opus-1.1.4/silk/sum_sqr_shift.c | 86 + external/opus-1.1.4/silk/table_LSF_cos.c | 70 + external/opus-1.1.4/silk/tables.h | 122 + external/opus-1.1.4/silk/tables_LTP.c | 296 + external/opus-1.1.4/silk/tables_NLSF_CB_NB_MB.c | 159 + external/opus-1.1.4/silk/tables_NLSF_CB_WB.c | 198 + external/opus-1.1.4/silk/tables_gain.c | 63 + external/opus-1.1.4/silk/tables_other.c | 138 + external/opus-1.1.4/silk/tables_pitch_lag.c | 69 + external/opus-1.1.4/silk/tables_pulses_per_block.c | 264 + external/opus-1.1.4/silk/tuning_parameters.h | 171 + external/opus-1.1.4/silk/typedef.h | 78 + external/opus-1.1.4/silk/x86/NSQ_del_dec_sse.c | 857 + external/opus-1.1.4/silk/x86/NSQ_sse.c | 720 + external/opus-1.1.4/silk/x86/SigProc_FIX_sse.h | 94 + external/opus-1.1.4/silk/x86/VAD_sse.c | 277 + external/opus-1.1.4/silk/x86/VQ_WMat_EC_sse.c | 142 + external/opus-1.1.4/silk/x86/main_sse.h | 277 + external/opus-1.1.4/silk/x86/x86_silk_map.c | 174 + external/opus-1.1.4/src/CMakeLists.txt | 40 + external/opus-1.1.4/src/analysis.c | 672 + external/opus-1.1.4/src/analysis.h | 103 + external/opus-1.1.4/src/mlp.c | 145 + external/opus-1.1.4/src/mlp.h | 43 + external/opus-1.1.4/src/mlp_data.c | 109 + external/opus-1.1.4/src/opus.c | 356 + external/opus-1.1.4/src/opus_decoder.c | 981 ++ external/opus-1.1.4/src/opus_encoder.c | 2536 +++ external/opus-1.1.4/src/opus_multistream.c | 92 + external/opus-1.1.4/src/opus_multistream_decoder.c | 537 + external/opus-1.1.4/src/opus_multistream_encoder.c | 1351 ++ external/opus-1.1.4/src/opus_private.h | 134 + external/opus-1.1.4/src/repacketizer.c | 348 + external/opus-1.1.4/src/tansig_table.h | 45 + external/opusfile-0.8/CMakeLists.txt | 24 + external/opusfile-0.8/include/opusfile.h | 2157 +++ external/opusfile-0.8/src/http.c | 3465 ++++ external/opusfile-0.8/src/info.c | 758 + external/opusfile-0.8/src/internal.c | 42 + external/opusfile-0.8/src/internal.h | 254 + external/opusfile-0.8/src/opusfile.c | 3266 ++++ external/opusfile-0.8/src/stream.c | 366 + external/opusfile-0.8/src/wincerts.c | 171 + external/opusfile-0.8/src/winerrno.h | 90 + external/rapidjson/rapidjson.h | 31 + external/rapidjson/rapidjson/allocators.h | 271 + external/rapidjson/rapidjson/document.h | 2592 +++ external/rapidjson/rapidjson/encodedstream.h | 299 + external/rapidjson/rapidjson/encodings.h | 716 + external/rapidjson/rapidjson/error/en.h | 74 + external/rapidjson/rapidjson/error/error.h | 155 + external/rapidjson/rapidjson/filereadstream.h | 99 + external/rapidjson/rapidjson/filewritestream.h | 104 + external/rapidjson/rapidjson/fwd.h | 151 + external/rapidjson/rapidjson/internal/biginteger.h | 290 + external/rapidjson/rapidjson/internal/diyfp.h | 258 + external/rapidjson/rapidjson/internal/dtoa.h | 245 + external/rapidjson/rapidjson/internal/ieee754.h | 78 + external/rapidjson/rapidjson/internal/itoa.h | 304 + external/rapidjson/rapidjson/internal/meta.h | 181 + external/rapidjson/rapidjson/internal/pow10.h | 55 + external/rapidjson/rapidjson/internal/regex.h | 731 + external/rapidjson/rapidjson/internal/stack.h | 230 + external/rapidjson/rapidjson/internal/strfunc.h | 58 + external/rapidjson/rapidjson/internal/strtod.h | 269 + external/rapidjson/rapidjson/internal/swap.h | 46 + external/rapidjson/rapidjson/istreamwrapper.h | 115 + external/rapidjson/rapidjson/memorybuffer.h | 70 + external/rapidjson/rapidjson/memorystream.h | 71 + external/rapidjson/rapidjson/msinttypes/inttypes.h | 316 + external/rapidjson/rapidjson/msinttypes/stdint.h | 300 + external/rapidjson/rapidjson/ostreamwrapper.h | 81 + external/rapidjson/rapidjson/pointer.h | 1358 ++ external/rapidjson/rapidjson/prettywriter.h | 275 + external/rapidjson/rapidjson/rapidjson.h | 615 + external/rapidjson/rapidjson/reader.h | 1865 +++ external/rapidjson/rapidjson/schema.h | 2024 +++ external/rapidjson/rapidjson/stream.h | 179 + external/rapidjson/rapidjson/stringbuffer.h | 121 + external/rapidjson/rapidjson/writer.h | 624 + external/restclient/CMakeLists.txt | 10 + external/restclient/LICENSE | 20 + external/restclient/README.md | 7 + external/restclient/connection.cpp | 363 + external/restclient/helpers.cpp | 96 + external/restclient/restclient.cpp | 118 + external/restclient/restclient/connection.h | 169 + external/restclient/restclient/helpers.h | 74 + external/restclient/restclient/restclient.h | 63 + external/restclient/restclient/version.h | 4 + external/semver/.gitignore | 2 + external/semver/.gitmodules | 6 + external/semver/.travis.yml | 93 + external/semver/CMakeLists.txt | 100 + external/semver/LICENSE | 21 + external/semver/README.md | 12 + external/semver/appveyor.yml | 35 + external/semver/install_libcxx.sh | 13 + external/semver/src/include/semantic_version.h | 189 + external/semver/src/lib/CMakeLists.txt | 1 + external/semver/src/lib/semantic_version_v1.cpp | 286 + external/semver/src/lib/semantic_version_v2.cpp | 272 + external/semver/src/quickcheck/CMakeLists.txt | 29 + external/semver/src/quickcheck/Main.hi | Bin 0 -> 3353 bytes external/semver/src/quickcheck/Main.hs | 80 + external/semver/src/quickcheck/Main.o | Bin 0 -> 35952 bytes external/semver/src/quickcheck/Semver.hsc | 87 + .../semver/src/quickcheck/semantic_version_ffi.cpp | 58 + .../semver/src/quickcheck/semantic_version_ffi.h | 27 + external/semver/src/test/CMakeLists.txt | 3 + external/semver/src/test/main.cpp | 297 + external/sol/CMakeLists.txt | 4 + external/sol/sol.hpp | 13353 +++++++++++++++ external/zlib/CMakeLists.txt | 17 + external/zlib/adler32.c | 149 + external/zlib/crc32.c | 423 + external/zlib/crc32.h | 441 + external/zlib/inffast.c | 317 + external/zlib/inffast.h | 11 + external/zlib/inffixed.h | 94 + external/zlib/inflate.c | 1368 ++ external/zlib/inflate.h | 115 + external/zlib/inftrees.c | 329 + external/zlib/inftrees.h | 55 + external/zlib/zconf.h | 332 + external/zlib/zlib.h | 1357 ++ external/zlib/zutil.c | 318 + external/zlib/zutil.h | 269 + make-macosx-app.sh | 345 + misc/SLA-dmg.sh | 73 + misc/Tremulous.icns | Bin 0 -> 78419 bytes misc/docker-build.sh | 12 + misc/download-paks.sh | 52 + misc/entities.def | 1707 ++ misc/last-merged-ioq3-revision | 1 + misc/make-macosx-ub.sh | 94 + misc/make-macosx.sh | 77 + misc/manual.lyx | 8376 ++++++++++ misc/merge-grangerhub-into-trem.sh | 109 + misc/merge-ioq3-into-trem.sh | 112 + misc/msvc/tremulous.sln | 21 + misc/msvc/tremulous.vcproj | 65 + misc/server.cfg | 39 + misc/travis-ci-build.sh | 19 + misc/tremulous-banner.jpg | Bin 0 -> 40385 bytes misc/tremulous.ico | Bin 0 -> 198 bytes misc/tremulous.xpm | 90 + scripts/README.md | 52 + scripts/binds.lua | 77 + scripts/granger/lib/init.lua | 5 + scripts/granger/lib/os.lua | 222 + scripts/granger/lib/path.lua | 137 + scripts/granger/lib/string.lua | 50 + scripts/granger/lib/table.lua | 181 + scripts/granger/main.lua | 63 + scripts/granger/util.lua | 28 + scripts/http.lua | 40 + scripts/inspect.lua | 218 + scripts/sample-httpjson-client.lua | 37 + scripts/test-nettle.lua | 24 + src/asm/matha.s | 55 + src/asm/qasm-inline.h | 41 + src/asm/qasm.h | 39 + src/asm/snapvector.asm | 91 + src/asm/snapvector.c | 75 + src/asm/snd_mixa.s | 217 + src/asm/vm_x86_64.asm | 59 + src/cgame/CMakeLists.txt | 83 + src/cgame/binaryshader.h | 42 + src/cgame/cg_animation.c | 13 +- src/cgame/cg_animmapobj.c | 15 +- src/cgame/cg_attachment.c | 9 +- src/cgame/cg_buildable.c | 410 +- src/cgame/cg_consolecmds.c | 293 +- src/cgame/cg_draw.c | 2981 ++-- src/cgame/cg_drawtools.c | 107 +- src/cgame/cg_ents.c | 226 +- src/cgame/cg_event.c | 474 +- src/cgame/cg_local.h | 463 +- src/cgame/cg_main.c | 837 +- src/cgame/cg_marks.c | 11 +- src/cgame/cg_mem.c | 202 - src/cgame/cg_particles.c | 737 +- src/cgame/cg_players.c | 416 +- src/cgame/cg_playerstate.c | 34 +- src/cgame/cg_predict.c | 51 +- src/cgame/cg_ptr.c | 81 - src/cgame/cg_public.h | 413 +- src/cgame/cg_rangemarker.c | 399 + src/cgame/cg_scanner.c | 165 +- src/cgame/cg_servercmds.c | 1235 +- src/cgame/cg_snapshot.c | 20 +- src/cgame/cg_syscalls.asm | 4 +- src/cgame/cg_syscalls.c | 54 +- src/cgame/cg_syscalls_11.asm | 3 +- src/cgame/cg_trails.c | 61 +- src/cgame/cg_tutorial.c | 280 +- src/cgame/cg_view.c | 563 +- src/cgame/cg_weapons.c | 657 +- src/client/CMakeLists.txt | 209 + src/client/cl_avi.cpp | 664 + src/client/cl_cgame.cpp | 1172 ++ src/client/cl_cin.cpp | 1937 +++ src/client/cl_console.cpp | 877 + src/client/cl_curl.cpp | 364 + src/client/cl_curl.h | 101 + src/client/cl_input.cpp | 1194 ++ src/client/cl_keys.cpp | 1665 ++ src/client/cl_main.cpp | 5083 ++++++ src/client/cl_net_chan.cpp | 190 + src/client/cl_parse.cpp | 961 ++ src/client/cl_rest.cpp | 117 + src/client/cl_rest.h | 18 + src/client/cl_scrn.cpp | 588 + src/client/cl_ui.cpp | 1269 ++ src/client/cl_updates.cpp | 476 + src/client/cl_updates.h | 8 + src/client/client.h | 716 + src/client/keycodes.h | 42 +- src/client/keys.h | 66 + src/client/libmumblelink.cpp | 190 + src/client/libmumblelink.h | 41 + src/client/qal.cpp | 337 + src/client/qal.h | 252 + src/client/snd_adpcm.cpp | 329 + src/client/snd_codec.cpp | 239 + src/client/snd_codec.h | 109 + src/client/snd_codec_ogg.cpp | 479 + src/client/snd_codec_opus.cpp | 452 + src/client/snd_codec_wav.cpp | 293 + src/client/snd_dma.cpp | 1644 ++ src/client/snd_local.h | 267 + src/client/snd_main.cpp | 566 + src/client/snd_mem.cpp | 297 + src/client/snd_mix.cpp | 792 + src/client/snd_openal.cpp | 2737 ++++ src/client/snd_public.h | 88 + src/client/snd_wavelet.cpp | 252 + src/game/CMakeLists.txt | 70 + src/game/bg_alloc.c | 242 + src/game/bg_lib.c | 1390 +- src/game/bg_lib.h | 52 +- src/game/bg_local.h | 16 +- src/game/bg_misc.c | 6130 +++---- src/game/bg_pmove.c | 1164 +- src/game/bg_public.h | 912 +- src/game/bg_shared.h | 0 src/game/bg_slidemove.c | 38 +- src/game/bg_voice.c | 653 + src/game/g_active.c | 1329 +- src/game/g_admin.c | 9672 +++-------- src/game/g_admin.h | 314 +- src/game/g_buildable.c | 4915 +++--- src/game/g_client.c | 1428 +- src/game/g_cmds.c | 6160 +++---- src/game/g_combat.c | 1479 +- src/game/g_local.h | 1011 +- src/game/g_main.c | 1808 +- src/game/g_maprotation.c | 1546 +- src/game/g_mem.c | 216 - src/game/g_misc.c | 60 +- src/game/g_missile.c | 266 +- src/game/g_mover.c | 453 +- src/game/g_namelog.c | 128 + src/game/g_physics.c | 42 +- src/game/g_playermodel.c | 193 + src/game/g_ptr.c | 143 - src/game/g_public.h | 342 +- src/game/g_session.c | 68 +- src/game/g_spawn.c | 366 +- src/game/g_svcmds.c | 898 +- src/game/g_syscalls.asm | 3 +- src/game/g_syscalls.c | 47 +- src/game/g_target.c | 109 +- src/game/g_team.c | 457 +- src/game/g_trigger.c | 193 +- src/game/g_utils.c | 464 +- src/game/g_weapon.c | 1158 +- src/game/g_weapondrop.c | 199 + src/game/tremulous.h | 424 +- src/granger/COPYING | 622 + src/granger/Dockerfile | 4 + src/granger/README.md | 139 + src/granger/appveyor.yml | 32 + src/granger/misc/docker-build.sh | 7 + src/granger/src/CMakeLists.txt | 60 + src/granger/src/getopt.h | 653 + src/granger/src/lnettlelib.c | 181 + src/granger/src/lnettlelib.h | 25 + src/granger/src/lua/CMakeLists.txt | 57 + src/granger/src/main.c | 97 + src/granger/src/nettle/CMakeLists.txt | 23 + src/granger/src/nettle/macros.h | 245 + src/granger/src/nettle/md5-compress.c | 174 + src/granger/src/nettle/md5.c | 93 + src/granger/src/nettle/md5.h | 86 + src/granger/src/nettle/nettle-stdint.h | 6 + src/granger/src/nettle/nettle-types.h | 110 + src/granger/src/nettle/nettle-write.h | 58 + src/granger/src/nettle/sha2.h | 206 + src/granger/src/nettle/sha256-compress.c | 199 + src/granger/src/nettle/sha256.c | 162 + src/granger/src/nettle/version.h | 58 + src/granger/src/nettle/write-be32.c | 77 + src/granger/src/nettle/write-le32.c | 69 + src/granger/src/premake/CMakeLists.txt | 32 + src/granger/src/premake/os_access.c | 58 + src/granger/src/premake/os_chdir.c | 32 + src/granger/src/premake/os_copyfile.c | 34 + src/granger/src/premake/os_elevate.c | 240 + src/granger/src/premake/os_getcwd.c | 36 + src/granger/src/premake/os_is64bit.c | 30 + src/granger/src/premake/os_isdir.c | 34 + src/granger/src/premake/os_isfile.c | 30 + src/granger/src/premake/os_match.c | 181 + src/granger/src/premake/os_mkdir.c | 33 + src/granger/src/premake/os_pathsearch.c | 84 + src/granger/src/premake/os_rmdir.c | 33 + src/granger/src/premake/os_stat.c | 46 + src/granger/src/premake/path_getabsolute.c | 102 + src/granger/src/premake/path_getrelative.c | 80 + src/granger/src/premake/path_isabsolute.c | 27 + src/granger/src/premake/path_join.c | 58 + src/granger/src/premake/path_normalize.c | 77 + src/granger/src/premake/path_translate.c | 61 + src/granger/src/premake/premake.c | 171 + src/granger/src/premake/premake.h | 90 + src/granger/src/premake/string_endswith.c | 28 + src/granger/src/strvec.c | 156 + src/granger/src/strvec.h | 36 + src/granger/test/main.lua | 11 + src/granger/test/test-nettle.lua | 33 + src/granger/test/test-os-access.lua | 17 + src/null/null_client.cpp | 95 + src/null/null_glimp.cpp | 63 + src/null/null_input.cpp | 37 + src/null/null_main.cpp | 83 + src/null/null_net.cpp | 55 + src/null/null_snddma.cpp | 62 + src/qcommon/CMakeLists.txt | 54 + src/qcommon/alternatePlayerstate.h | 75 + src/qcommon/cdefs.h | 79 + src/qcommon/cm_load.cpp | 1022 ++ src/qcommon/cm_local.h | 225 + src/qcommon/cm_patch.cpp | 1801 ++ src/qcommon/cm_patch.h | 105 + src/qcommon/cm_polylib.cpp | 737 + src/qcommon/cm_polylib.h | 74 + src/qcommon/cm_public.h | 79 + src/qcommon/cm_test.cpp | 526 + src/qcommon/cm_trace.cpp | 1801 ++ src/qcommon/cmd.cpp | 941 ++ src/qcommon/cmd.h | 115 + src/qcommon/common.cpp | 3662 +++++ src/qcommon/crypto.cpp | 92 + src/qcommon/crypto.h | 45 + src/qcommon/cvar.cpp | 1498 ++ src/qcommon/cvar.h | 199 + src/qcommon/files.cpp | 3986 +++++ src/qcommon/files.h | 286 + src/qcommon/huffman.cpp | 558 + src/qcommon/huffman.h | 59 + src/qcommon/ioapi.cpp | 373 + src/qcommon/ioapi.h | 173 + src/qcommon/json.h | 353 + src/qcommon/md4.cpp | 202 + src/qcommon/md4.h | 6 + src/qcommon/md5.cpp | 312 + src/qcommon/msg.cpp | 2248 +++ src/qcommon/msg.h | 79 + src/qcommon/net.h | 145 + src/qcommon/net_chan.cpp | 697 + src/qcommon/net_ip.cpp | 1842 +++ src/qcommon/parse.cpp | 3725 +++++ src/qcommon/puff.cpp | 759 + src/qcommon/puff.h | 43 + src/qcommon/q3_lauxlib.cpp | 46 + src/qcommon/q3_lauxlib.h | 46 + src/qcommon/q_math.c | 610 +- src/qcommon/q_platform.h | 112 +- src/qcommon/q_shared.c | 634 +- src/qcommon/q_shared.h | 761 +- src/qcommon/qcommon.h | 413 + src/qcommon/qfiles.h | 634 +- src/qcommon/surfaceflags.h | 21 +- src/qcommon/unzip.cpp | 1951 +++ src/qcommon/unzip.h | 321 + src/qcommon/vm.cpp | 1020 ++ src/qcommon/vm.h | 67 + src/qcommon/vm_interpreted.cpp | 904 + src/qcommon/vm_local.h | 204 + src/qcommon/vm_x86.cpp | 1840 +++ src/renderer/tr_types.h | 234 - src/renderercommon/CMakeLists.txt | 77 + src/renderercommon/iqm.h | 131 + src/renderercommon/qgl.h | 570 + src/renderercommon/tr_common.h | 166 + src/renderercommon/tr_font.cpp | 562 + src/renderercommon/tr_image_bmp.cpp | 240 + src/renderercommon/tr_image_jpg.cpp | 479 + src/renderercommon/tr_image_pcx.cpp | 177 + src/renderercommon/tr_image_png.cpp | 2486 +++ src/renderercommon/tr_image_tga.cpp | 317 + src/renderercommon/tr_noise.cpp | 93 + src/renderercommon/tr_public.h | 199 + src/renderercommon/tr_types.h | 222 + src/renderergl1/CMakeLists.txt | 67 + src/renderergl1/tr_animation.cpp | 523 + src/renderergl1/tr_backend.cpp | 1163 ++ src/renderergl1/tr_bsp.cpp | 1869 +++ src/renderergl1/tr_cmds.cpp | 601 + src/renderergl1/tr_curve.cpp | 627 + src/renderergl1/tr_flares.cpp | 540 + src/renderergl1/tr_image.cpp | 1680 ++ src/renderergl1/tr_init.cpp | 1299 ++ src/renderergl1/tr_light.cpp | 402 + src/renderergl1/tr_local.h | 1603 ++ src/renderergl1/tr_main.cpp | 1394 ++ src/renderergl1/tr_marks.cpp | 459 + src/renderergl1/tr_mesh.cpp | 413 + src/renderergl1/tr_model.cpp | 1120 ++ src/renderergl1/tr_model_iqm.cpp | 1187 ++ src/renderergl1/tr_scene.cpp | 413 + src/renderergl1/tr_shade.cpp | 1522 ++ src/renderergl1/tr_shade_calc.cpp | 1212 ++ src/renderergl1/tr_shader.cpp | 3158 ++++ src/renderergl1/tr_shadows.cpp | 327 + src/renderergl1/tr_sky.cpp | 796 + src/renderergl1/tr_subs.cpp | 50 + src/renderergl1/tr_surface.cpp | 1239 ++ src/renderergl1/tr_world.cpp | 670 + src/renderergl2/CMakeLists.txt | 146 + src/renderergl2/glsl/bokeh_fp.glsl | 70 + src/renderergl2/glsl/bokeh_vp.glsl | 13 + src/renderergl2/glsl/calclevels4x_fp.glsl | 60 + src/renderergl2/glsl/calclevels4x_vp.glsl | 13 + src/renderergl2/glsl/depthblur_fp.glsl | 82 + src/renderergl2/glsl/depthblur_vp.glsl | 16 + src/renderergl2/glsl/dlight_fp.glsl | 32 + src/renderergl2/glsl/dlight_vp.glsl | 92 + src/renderergl2/glsl/down4x_fp.glsl | 34 + src/renderergl2/glsl/down4x_vp.glsl | 13 + src/renderergl2/glsl/fogpass_fp.glsl | 9 + src/renderergl2/glsl/fogpass_vp.glsl | 117 + src/renderergl2/glsl/generic_fp.glsl | 33 + src/renderergl2/glsl/generic_vp.glsl | 239 + src/renderergl2/glsl/lightall_fp.glsl | 429 + src/renderergl2/glsl/lightall_vp.glsl | 246 + src/renderergl2/glsl/pshadow_fp.glsl | 78 + src/renderergl2/glsl/pshadow_vp.glsl | 15 + src/renderergl2/glsl/shadowfill_fp.glsl | 41 + src/renderergl2/glsl/shadowfill_vp.glsl | 89 + src/renderergl2/glsl/shadowmask_fp.glsl | 143 + src/renderergl2/glsl/shadowmask_vp.glsl | 18 + src/renderergl2/glsl/ssao_fp.glsl | 86 + src/renderergl2/glsl/ssao_vp.glsl | 12 + src/renderergl2/glsl/texturecolor_fp.glsl | 10 + src/renderergl2/glsl/texturecolor_vp.glsl | 13 + src/renderergl2/glsl/tonemap_fp.glsl | 57 + src/renderergl2/glsl/tonemap_vp.glsl | 27 + src/renderergl2/tr_animation.cpp | 525 + src/renderergl2/tr_backend.cpp | 1817 ++ src/renderergl2/tr_bsp.cpp | 3046 ++++ src/renderergl2/tr_cmds.cpp | 672 + src/renderergl2/tr_curve.cpp | 741 + src/renderergl2/tr_dsa.cpp | 287 + src/renderergl2/tr_dsa.h | 80 + src/renderergl2/tr_extensions.cpp | 279 + src/renderergl2/tr_extramath.cpp | 248 + src/renderergl2/tr_extramath.h | 104 + src/renderergl2/tr_extratypes.h | 40 + src/renderergl2/tr_fbo.cpp | 659 + src/renderergl2/tr_fbo.h | 66 + src/renderergl2/tr_flares.cpp | 554 + src/renderergl2/tr_glsl.cpp | 1470 ++ src/renderergl2/tr_image.cpp | 3235 ++++ src/renderergl2/tr_image_dds.cpp | 499 + src/renderergl2/tr_init.cpp | 1534 ++ src/renderergl2/tr_light.cpp | 513 + src/renderergl2/tr_local.h | 2422 +++ src/renderergl2/tr_main.cpp | 2669 +++ src/renderergl2/tr_marks.cpp | 472 + src/renderergl2/tr_mesh.cpp | 418 + src/renderergl2/tr_model.cpp | 1419 ++ src/renderergl2/tr_model_iqm.cpp | 1196 ++ src/renderergl2/tr_postprocess.cpp | 484 + src/renderergl2/tr_postprocess.h | 34 + src/renderergl2/tr_scene.cpp | 575 + src/renderergl2/tr_shade.cpp | 1634 ++ src/renderergl2/tr_shade_calc.cpp | 843 + src/renderergl2/tr_shader.cpp | 3891 +++++ src/renderergl2/tr_shadows.cpp | 327 + src/renderergl2/tr_sky.cpp | 904 + src/renderergl2/tr_subs.cpp | 49 + src/renderergl2/tr_surface.cpp | 1320 ++ src/renderergl2/tr_vbo.cpp | 945 ++ src/renderergl2/tr_world.cpp | 811 + src/script/CMakeLists.txt | 35 + src/script/bind.h | 107 + src/script/client.h | 54 + src/script/cmd.h | 50 + src/script/cvar.h | 146 + src/script/http_client.h | 65 + src/script/lnettlelib.c | 94 + src/script/lnettlelib.h | 15 + src/script/nettle.h | 41 + src/script/rapidjson.h | 52 + src/script/rapidjson/LICENSE | 19 + src/script/rapidjson/document.cpp | 194 + src/script/rapidjson/file.hpp | 21 + src/script/rapidjson/luax.hpp | 82 + src/script/rapidjson/rapidjson.cpp | 414 + src/script/rapidjson/schema.cpp | 116 + src/script/rapidjson/userdata.hpp | 112 + src/script/rapidjson/values.cpp | 108 + src/script/rapidjson/values.hpp | 245 + src/sdl/CMakeLists.txt | 8 + src/sdl/sdl_gamma.cpp | 100 + src/sdl/sdl_glimp.cpp | 935 ++ src/sdl/sdl_icon.h | 138 + src/sdl/sdl_input.cpp | 1336 ++ src/sdl/sdl_snd.cpp | 298 + src/server/CMakeLists.txt | 114 + src/server/server.h | 529 + src/server/sv_admin.cpp | 0 src/server/sv_admin.h | 61 + src/server/sv_ccmds.cpp | 441 + src/server/sv_client.cpp | 1949 +++ src/server/sv_game.cpp | 602 + src/server/sv_init.cpp | 1004 ++ src/server/sv_main.cpp | 1551 ++ src/server/sv_net_chan.cpp | 259 + src/server/sv_snapshot.cpp | 749 + src/server/sv_world.cpp | 745 + src/sys/CMakeLists.txt | 15 + src/sys/con_log.cpp | 132 + src/sys/con_passive.cpp | 72 + src/sys/con_tty.cpp | 552 + src/sys/con_win32.cpp | 558 + src/sys/dialog.h | 40 + src/sys/sys_loadlib.h | 57 + src/sys/sys_local.h | 58 + src/sys/sys_main.cpp | 798 + src/sys/sys_osx.mm | 103 + src/sys/sys_shared.h | 111 + src/sys/sys_unix.cpp | 1006 ++ src/sys/sys_win32.cpp | 842 + src/sys/sys_win32_default_homepath.cpp | 52 + src/sys/win_resource.h | 46 + src/sys/win_resource.rc | 72 + src/tools/CMakeLists.txt | 145 + src/tools/asm/cmdlib.c | 9 +- src/tools/asm/cmdlib.h | 9 +- src/tools/asm/mathlib.h | 9 +- src/tools/asm/opstrings.h | 11 +- src/tools/asm/q3asm.c | 17 +- src/tools/asm/qfiles.h | 480 + src/tools/lcc/cpp/cpp.c | 621 +- src/tools/lcc/cpp/include.c | 268 +- src/tools/lcc/cpp/unix.c | 215 +- src/tools/lcc/etc/bytecode.c | 2 +- src/tools/lcc/etc/lcc.c | 1465 +- src/tools/lcc/lburg/gram.c | 72 +- src/tools/lcc/lburg/gram.y | 1 + src/tools/lcc/src/dag.c | 1494 +- src/ui/CMakeLists.txt | 67 + src/ui/menudef.h | 363 - src/ui/ui_atoms.c | 620 +- src/ui/ui_gameinfo.c | 482 +- src/ui/ui_local.h | 1455 +- src/ui/ui_main.c | 9554 +++++------ src/ui/ui_players.c | 1369 -- src/ui/ui_public.h | 303 +- src/ui/ui_shared.c | 11944 ++++++++------ src/ui/ui_shared.h | 681 +- src/ui/ui_syscalls.asm | 3 +- src/ui/ui_syscalls.c | 413 +- src/ui/ui_syscalls_11.asm | 2 + ui/assets/alien/buildstat.cfg | 37 - ui/assets/alien/buildstat/frame.tga | Bin 1724 -> 0 bytes ui/assets/alien/buildstat/mark.tga | Bin 14180 -> 0 bytes ui/assets/alien/buildstat/nopower.tga | Bin 21285 -> 0 bytes ui/assets/alien/buildstat/overlay.tga | Bin 25069 -> 0 bytes ui/assets/human/buildstat.cfg | 39 - ui/assets/human/buildstat/frame.tga | Bin 1724 -> 0 bytes ui/assets/human/buildstat/mark.tga | Bin 14180 -> 0 bytes ui/assets/human/buildstat/nopower.tga | Bin 19244 -> 0 bytes ui/drop.menu | 126 - ui/ingame.menu | 115 - ui/ingame.txt | 8 - ui/ingame_game.menu | 3206 ---- ui/ingame_options.menu | 2180 --- ui/joinserver.menu | 687 - ui/main.menu | 163 - ui/menudef.h | 363 - ui/menus.txt | 20 - ui/options.menu | 287 - ui/quitcredit.menu | 430 - ui/say.menu | 91 - ui/teamscore.menu | 305 - ui/tremulous.txt | 21 - ui/tremulous_alien_builder_hud.menu | 371 - ui/tremulous_alien_general_hud.menu | 360 - ui/tremulous_default_hud.menu | 165 - ui/tremulous_human_hud.menu | 462 - 1365 files changed, 536817 insertions(+), 61796 deletions(-) create mode 100644 .clang-format create mode 100644 .gitignore create mode 100644 .travis.yml create mode 100644 .ycm_extra_conf.py create mode 100644 CMakeLists.txt create mode 100644 ChangeLog create mode 100644 Dockerfile delete mode 100644 GNUmakefile create mode 100644 Makefile create mode 100644 assets/armour/bsuit.armour create mode 100644 assets/armour/helmet.armour create mode 100644 assets/armour/larmour.armour create mode 100644 assets/configs/buildables/acid_tube.cfg create mode 100644 assets/configs/buildables/arm.cfg create mode 100644 assets/configs/buildables/barricade.cfg create mode 100644 assets/configs/buildables/booster.cfg create mode 100644 assets/configs/buildables/dcc.cfg create mode 100644 assets/configs/buildables/eggpod.cfg create mode 100644 assets/configs/buildables/hive.cfg create mode 100644 assets/configs/buildables/hovel.cfg create mode 100644 assets/configs/buildables/medistat.cfg create mode 100644 assets/configs/buildables/mgturret.cfg create mode 100644 assets/configs/buildables/overmind.cfg create mode 100644 assets/configs/buildables/reactor.cfg create mode 100644 assets/configs/buildables/repeater.cfg create mode 100644 assets/configs/buildables/telenode.cfg create mode 100644 assets/configs/buildables/tesla.cfg create mode 100644 assets/configs/buildables/trapper.cfg create mode 100644 assets/configs/classes/builder.cfg create mode 100644 assets/configs/classes/builderupg.cfg create mode 100644 assets/configs/classes/human_base.cfg create mode 100644 assets/configs/classes/human_bsuit.cfg create mode 100644 assets/configs/classes/level0.cfg create mode 100644 assets/configs/classes/level1.cfg create mode 100644 assets/configs/classes/level1upg.cfg create mode 100644 assets/configs/classes/level2.cfg create mode 100644 assets/configs/classes/level2upg.cfg create mode 100644 assets/configs/classes/level3.cfg create mode 100644 assets/configs/classes/level3upg.cfg create mode 100644 assets/configs/classes/level4.cfg create mode 100644 assets/configs/classes/spectator.cfg create mode 100644 assets/models/buildables/acid_tube/animation.cfg create mode 100644 assets/models/buildables/barricade/animation.cfg create mode 100644 assets/models/buildables/medistat/animation.cfg create mode 100644 assets/models/buildables/mgturret/animation.cfg create mode 100644 assets/models/buildables/repeater/animation.cfg create mode 100644 assets/models/buildables/tesla/animation.cfg create mode 100644 assets/models/generic/sphere.md3 create mode 100644 assets/models/generic/sphericalCone240.md3 create mode 100644 assets/models/generic/sphericalCone64.md3 create mode 100644 assets/models/players/human_base/locdamage.cfg create mode 100644 assets/models/players/human_bsuit/locdamage.cfg create mode 100644 assets/models/players/level1/animation.cfg create mode 100644 assets/models/weapons/abuild/weapon.cfg create mode 100644 assets/models/weapons/abuildupg/weapon.cfg create mode 100644 assets/models/weapons/grenade/weapon.cfg create mode 100644 assets/models/weapons/lcannon/weapon.cfg create mode 100644 assets/models/weapons/level0/weapon.cfg create mode 100644 assets/models/weapons/level1/weapon.cfg create mode 100644 assets/models/weapons/level1upg/weapon.cfg create mode 100644 assets/models/weapons/level2/weapon.cfg create mode 100644 assets/models/weapons/level2upg/weapon.cfg create mode 100644 assets/models/weapons/level3/weapon.cfg create mode 100644 assets/models/weapons/level3upg/weapon.cfg create mode 100644 assets/models/weapons/level4/weapon.cfg create mode 100644 assets/models/weapons/mdriver/weapon.cfg create mode 100644 assets/models/weapons/prifle/weapon.cfg create mode 100644 assets/models/weapons/psaw/weapon.cfg create mode 100644 assets/music/Tremulous Heartbeat.mid create mode 100644 assets/scripts/binary.shader create mode 100644 assets/scripts/core.shader create mode 100644 assets/scripts/crosshairs.shader create mode 100644 assets/scripts/mdriver.trail create mode 100644 assets/scripts/misc.particle create mode 100644 assets/scripts/ui.shader create mode 100644 assets/scripts/weapons.particle create mode 100644 assets/scripts/weapons.shader create mode 100644 assets/sound/buildables/barricade/sound.cfg create mode 100644 assets/ui/assets/alien/buildstat.cfg create mode 100644 assets/ui/assets/console1.tga create mode 100644 assets/ui/assets/console2.jpg create mode 100644 assets/ui/assets/human/buildstat.cfg create mode 100644 assets/ui/connect.menu create mode 100644 assets/ui/createfavorite.menu create mode 100644 assets/ui/createserver.menu create mode 100644 assets/ui/demo.menu create mode 100644 assets/ui/demo_error.menu create mode 100644 assets/ui/download.menu create mode 100644 assets/ui/drop.menu create mode 100644 assets/ui/error.menu create mode 100644 assets/ui/findplayer.menu create mode 100644 assets/ui/folders.menu create mode 100644 assets/ui/help.txt create mode 100644 assets/ui/hud.txt create mode 100644 assets/ui/ingame.menu create mode 100644 assets/ui/ingame.txt create mode 100644 assets/ui/ingame_game.menu create mode 100644 assets/ui/ingame_help.menu create mode 100644 assets/ui/ingame_leave.menu create mode 100644 assets/ui/ingame_options.menu create mode 100644 assets/ui/install_update.menu create mode 100644 assets/ui/joinserver.menu create mode 100644 assets/ui/loading.menu create mode 100644 assets/ui/main.menu create mode 100644 assets/ui/menu_bool.h create mode 100644 assets/ui/menudef.h create mode 100644 assets/ui/menus.txt create mode 100644 assets/ui/mod.menu create mode 100644 assets/ui/news.menu create mode 100644 assets/ui/options.menu create mode 100644 assets/ui/password.menu create mode 100644 assets/ui/quit.menu create mode 100644 assets/ui/quitcredit.menu create mode 100644 assets/ui/say.menu create mode 100644 assets/ui/serverinfo.menu create mode 100644 assets/ui/teamscore.menu create mode 100644 assets/ui/tremulous.txt create mode 100644 assets/ui/tremulous_alien_builder_hud.menu create mode 100644 assets/ui/tremulous_alien_common_hud.h create mode 100644 assets/ui/tremulous_alien_general_hud.menu create mode 100644 assets/ui/tremulous_alienbuild.menu create mode 100644 assets/ui/tremulous_alienclass.menu create mode 100644 assets/ui/tremulous_aliendialogs.menu create mode 100644 assets/ui/tremulous_alienupgrade.menu create mode 100644 assets/ui/tremulous_common_hud.h create mode 100644 assets/ui/tremulous_default_hud.menu create mode 100644 assets/ui/tremulous_dialogs.menu create mode 100644 assets/ui/tremulous_human_hud.menu create mode 100644 assets/ui/tremulous_humanarmoury.menu create mode 100644 assets/ui/tremulous_humanbuild.menu create mode 100644 assets/ui/tremulous_humandialogs.menu create mode 100644 assets/ui/tremulous_humanitem.menu create mode 100644 assets/ui/tremulous_spectator_hud.menu create mode 100644 assets/ui/tremulous_teamselect.menu create mode 100644 assets/ui/tremulous_voicecmd.menu create mode 100644 cmake/AddQVM.cmake create mode 100644 cmake/SDL2.cmake create mode 100644 cmake/build_dir create mode 100644 cmake/debug_cflags create mode 100644 code_of_conduct.md create mode 100644 docs/Features.md create mode 100644 docs/LuaScripting.md create mode 100644 docs/ParticleSystem.md create mode 100644 docs/PlayerVars.md create mode 100644 docs/TrailSystem.md create mode 100644 docs/VoiceCommands.md create mode 100644 docs/opengl2-readme.md create mode 100644 external/AL/AL/VERSION create mode 100644 external/AL/AL/al.h create mode 100644 external/AL/AL/alc.h create mode 100644 external/AL/AL/alext.h create mode 100644 external/AL/AL/efx-creative.h create mode 100644 external/AL/AL/efx-presets.h create mode 100644 external/AL/AL/efx.h create mode 100644 external/SDL2/CMakeLists.txt create mode 100644 external/SDL2/include/SDL.h create mode 100644 external/SDL2/include/SDL_assert.h create mode 100644 external/SDL2/include/SDL_atomic.h create mode 100644 external/SDL2/include/SDL_audio.h create mode 100644 external/SDL2/include/SDL_bits.h create mode 100644 external/SDL2/include/SDL_blendmode.h create mode 100644 external/SDL2/include/SDL_clipboard.h create mode 100644 external/SDL2/include/SDL_config.h create mode 100644 external/SDL2/include/SDL_config.h.cmake create mode 100644 external/SDL2/include/SDL_config.h.in create mode 100644 external/SDL2/include/SDL_config_android.h create mode 100644 external/SDL2/include/SDL_config_iphoneos.h create mode 100644 external/SDL2/include/SDL_config_macosx.h create mode 100644 external/SDL2/include/SDL_config_minimal.h create mode 100644 external/SDL2/include/SDL_config_pandora.h create mode 100644 external/SDL2/include/SDL_config_psp.h create mode 100644 external/SDL2/include/SDL_config_windows.h create mode 100644 external/SDL2/include/SDL_config_winrt.h create mode 100644 external/SDL2/include/SDL_config_wiz.h create mode 100644 external/SDL2/include/SDL_copying.h create mode 100644 external/SDL2/include/SDL_cpuinfo.h create mode 100644 external/SDL2/include/SDL_egl.h create mode 100644 external/SDL2/include/SDL_endian.h create mode 100644 external/SDL2/include/SDL_error.h create mode 100644 external/SDL2/include/SDL_events.h create mode 100644 external/SDL2/include/SDL_filesystem.h create mode 100644 external/SDL2/include/SDL_gamecontroller.h create mode 100644 external/SDL2/include/SDL_gesture.h create mode 100644 external/SDL2/include/SDL_haptic.h create mode 100644 external/SDL2/include/SDL_hints.h create mode 100644 external/SDL2/include/SDL_joystick.h create mode 100644 external/SDL2/include/SDL_keyboard.h create mode 100644 external/SDL2/include/SDL_keycode.h create mode 100644 external/SDL2/include/SDL_loadso.h create mode 100644 external/SDL2/include/SDL_log.h create mode 100644 external/SDL2/include/SDL_main.h create mode 100644 external/SDL2/include/SDL_messagebox.h create mode 100644 external/SDL2/include/SDL_mouse.h create mode 100644 external/SDL2/include/SDL_mutex.h create mode 100644 external/SDL2/include/SDL_name.h create mode 100644 external/SDL2/include/SDL_opengl.h create mode 100644 external/SDL2/include/SDL_opengl_glext.h create mode 100644 external/SDL2/include/SDL_opengles.h create mode 100644 external/SDL2/include/SDL_opengles2.h create mode 100644 external/SDL2/include/SDL_opengles2_gl2.h create mode 100644 external/SDL2/include/SDL_opengles2_gl2ext.h create mode 100644 external/SDL2/include/SDL_opengles2_gl2platform.h create mode 100644 external/SDL2/include/SDL_opengles2_khrplatform.h create mode 100644 external/SDL2/include/SDL_pixels.h create mode 100644 external/SDL2/include/SDL_platform.h create mode 100644 external/SDL2/include/SDL_power.h create mode 100644 external/SDL2/include/SDL_quit.h create mode 100644 external/SDL2/include/SDL_rect.h create mode 100644 external/SDL2/include/SDL_render.h create mode 100644 external/SDL2/include/SDL_revision.h create mode 100644 external/SDL2/include/SDL_rwops.h create mode 100644 external/SDL2/include/SDL_scancode.h create mode 100644 external/SDL2/include/SDL_shape.h create mode 100644 external/SDL2/include/SDL_stdinc.h create mode 100644 external/SDL2/include/SDL_surface.h create mode 100644 external/SDL2/include/SDL_system.h create mode 100644 external/SDL2/include/SDL_syswm.h create mode 100644 external/SDL2/include/SDL_test.h create mode 100644 external/SDL2/include/SDL_test_assert.h create mode 100644 external/SDL2/include/SDL_test_common.h create mode 100644 external/SDL2/include/SDL_test_compare.h create mode 100644 external/SDL2/include/SDL_test_crc32.h create mode 100644 external/SDL2/include/SDL_test_font.h create mode 100644 external/SDL2/include/SDL_test_fuzzer.h create mode 100644 external/SDL2/include/SDL_test_harness.h create mode 100644 external/SDL2/include/SDL_test_images.h create mode 100644 external/SDL2/include/SDL_test_log.h create mode 100644 external/SDL2/include/SDL_test_md5.h create mode 100644 external/SDL2/include/SDL_test_random.h create mode 100644 external/SDL2/include/SDL_thread.h create mode 100644 external/SDL2/include/SDL_timer.h create mode 100644 external/SDL2/include/SDL_touch.h create mode 100644 external/SDL2/include/SDL_types.h create mode 100644 external/SDL2/include/SDL_version.h create mode 100644 external/SDL2/include/SDL_video.h create mode 100644 external/SDL2/include/begin_code.h create mode 100644 external/SDL2/include/close_code.h create mode 100644 external/SDL2/libs/Darwin/libSDL2-2.0.0.dylib create mode 100644 external/SDL2/libs/Darwin/libSDL2main.a create mode 100644 external/jpeg-8c/CMakeLists.txt create mode 100644 external/jpeg-8c/README create mode 100644 external/jpeg-8c/ioquake3-changes.diff create mode 100644 external/jpeg-8c/jaricom.c create mode 100644 external/jpeg-8c/jcapimin.c create mode 100644 external/jpeg-8c/jcapistd.c create mode 100644 external/jpeg-8c/jcarith.c create mode 100644 external/jpeg-8c/jccoefct.c create mode 100644 external/jpeg-8c/jccolor.c create mode 100644 external/jpeg-8c/jcdctmgr.c create mode 100644 external/jpeg-8c/jchuff.c create mode 100644 external/jpeg-8c/jcinit.c create mode 100644 external/jpeg-8c/jcmainct.c create mode 100644 external/jpeg-8c/jcmarker.c create mode 100644 external/jpeg-8c/jcmaster.c create mode 100644 external/jpeg-8c/jcomapi.c create mode 100644 external/jpeg-8c/jconfig.h create mode 100644 external/jpeg-8c/jcparam.c create mode 100644 external/jpeg-8c/jcprepct.c create mode 100644 external/jpeg-8c/jcsample.c create mode 100644 external/jpeg-8c/jctrans.c create mode 100644 external/jpeg-8c/jdapimin.c create mode 100644 external/jpeg-8c/jdapistd.c create mode 100644 external/jpeg-8c/jdarith.c create mode 100644 external/jpeg-8c/jdatadst.c create mode 100644 external/jpeg-8c/jdatasrc.c create mode 100644 external/jpeg-8c/jdcoefct.c create mode 100644 external/jpeg-8c/jdcolor.c create mode 100644 external/jpeg-8c/jdct.h create mode 100644 external/jpeg-8c/jddctmgr.c create mode 100644 external/jpeg-8c/jdhuff.c create mode 100644 external/jpeg-8c/jdinput.c create mode 100644 external/jpeg-8c/jdmainct.c create mode 100644 external/jpeg-8c/jdmarker.c create mode 100644 external/jpeg-8c/jdmaster.c create mode 100644 external/jpeg-8c/jdmerge.c create mode 100644 external/jpeg-8c/jdpostct.c create mode 100644 external/jpeg-8c/jdsample.c create mode 100644 external/jpeg-8c/jdtrans.c create mode 100644 external/jpeg-8c/jerror.c create mode 100644 external/jpeg-8c/jerror.h create mode 100644 external/jpeg-8c/jfdctflt.c create mode 100644 external/jpeg-8c/jfdctfst.c create mode 100644 external/jpeg-8c/jfdctint.c create mode 100644 external/jpeg-8c/jidctflt.c create mode 100644 external/jpeg-8c/jidctfst.c create mode 100644 external/jpeg-8c/jidctint.c create mode 100644 external/jpeg-8c/jinclude.h create mode 100644 external/jpeg-8c/jmemmgr.c create mode 100644 external/jpeg-8c/jmemnobs.c create mode 100644 external/jpeg-8c/jmemsys.h create mode 100644 external/jpeg-8c/jmorecfg.h create mode 100644 external/jpeg-8c/jpegint.h create mode 100644 external/jpeg-8c/jpeglib.h create mode 100644 external/jpeg-8c/jquant1.c create mode 100644 external/jpeg-8c/jquant2.c create mode 100644 external/jpeg-8c/jutils.c create mode 100644 external/jpeg-8c/jversion.h create mode 100644 external/libcurl-7.35.0/CMakeLists.txt create mode 100644 external/libcurl-7.35.0/curl/curl.h create mode 100644 external/libcurl-7.35.0/curl/curlbuild.h create mode 100644 external/libcurl-7.35.0/curl/curlrules.h create mode 100644 external/libcurl-7.35.0/curl/curlver.h create mode 100644 external/libcurl-7.35.0/curl/easy.h create mode 100644 external/libcurl-7.35.0/curl/mprintf.h create mode 100644 external/libcurl-7.35.0/curl/multi.h create mode 100644 external/libcurl-7.35.0/curl/stdcheaders.h create mode 100644 external/libcurl-7.35.0/curl/typecheck-gcc.h create mode 100644 external/libogg-1.3.2/CMakeLists.txt create mode 100644 external/libogg-1.3.2/include/ogg/config_types.h create mode 100644 external/libogg-1.3.2/include/ogg/ogg.h create mode 100644 external/libogg-1.3.2/include/ogg/os_types.h create mode 100644 external/libogg-1.3.2/src/bitwise.c create mode 100644 external/libogg-1.3.2/src/framing.c create mode 100644 external/libs/macosx/CMakeLists.txt create mode 100644 external/libs/macosx/libSDL2-2.0.0.dylib create mode 100644 external/libs/macosx/libSDL2main.a create mode 100644 external/libs/win32/SDL.dll create mode 100644 external/libs/win32/SDL2.dll create mode 100644 external/libs/win32/libSDL.a create mode 100644 external/libs/win32/libSDL2.a create mode 100644 external/libs/win32/libSDL2.dll.a create mode 100644 external/libs/win32/libSDL2main.a create mode 100644 external/libs/win32/libcurl.a create mode 100644 external/libs/win64/SDL264.dll create mode 100644 external/libs/win64/SDL64.dll create mode 100644 external/libs/win64/libSDL264.a create mode 100644 external/libs/win64/libSDL264.dll.a create mode 100644 external/libs/win64/libSDL264main.a create mode 100644 external/libs/win64/libSDL64.a create mode 100644 external/libs/win64/libSDL64main.a create mode 100644 external/libs/win64/libcurl.a create mode 100644 external/libvorbis-1.3.5/CMakeLists.txt create mode 100644 external/libvorbis-1.3.5/include/vorbis/codec.h create mode 100644 external/libvorbis-1.3.5/include/vorbis/vorbisenc.h create mode 100644 external/libvorbis-1.3.5/include/vorbis/vorbisfile.h create mode 100644 external/libvorbis-1.3.5/lib/analysis.c create mode 100644 external/libvorbis-1.3.5/lib/backends.h create mode 100644 external/libvorbis-1.3.5/lib/bitrate.c create mode 100644 external/libvorbis-1.3.5/lib/bitrate.h create mode 100644 external/libvorbis-1.3.5/lib/block.c create mode 100644 external/libvorbis-1.3.5/lib/books/coupled/res_books_51.h create mode 100644 external/libvorbis-1.3.5/lib/books/coupled/res_books_stereo.h create mode 100644 external/libvorbis-1.3.5/lib/books/floor/floor_books.h create mode 100644 external/libvorbis-1.3.5/lib/books/uncoupled/res_books_uncoupled.h create mode 100644 external/libvorbis-1.3.5/lib/codebook.c create mode 100644 external/libvorbis-1.3.5/lib/codebook.h create mode 100644 external/libvorbis-1.3.5/lib/codec_internal.h create mode 100644 external/libvorbis-1.3.5/lib/envelope.c create mode 100644 external/libvorbis-1.3.5/lib/envelope.h create mode 100644 external/libvorbis-1.3.5/lib/floor0.c create mode 100644 external/libvorbis-1.3.5/lib/floor1.c create mode 100644 external/libvorbis-1.3.5/lib/highlevel.h create mode 100644 external/libvorbis-1.3.5/lib/info.c create mode 100644 external/libvorbis-1.3.5/lib/lookup.c create mode 100644 external/libvorbis-1.3.5/lib/lookup.h create mode 100644 external/libvorbis-1.3.5/lib/lookup_data.h create mode 100644 external/libvorbis-1.3.5/lib/lpc.c create mode 100644 external/libvorbis-1.3.5/lib/lpc.h create mode 100644 external/libvorbis-1.3.5/lib/lsp.c create mode 100644 external/libvorbis-1.3.5/lib/lsp.h create mode 100644 external/libvorbis-1.3.5/lib/mapping0.c create mode 100644 external/libvorbis-1.3.5/lib/masking.h create mode 100644 external/libvorbis-1.3.5/lib/mdct.c create mode 100644 external/libvorbis-1.3.5/lib/mdct.h create mode 100644 external/libvorbis-1.3.5/lib/misc.h create mode 100644 external/libvorbis-1.3.5/lib/modes/floor_all.h create mode 100644 external/libvorbis-1.3.5/lib/modes/psych_11.h create mode 100644 external/libvorbis-1.3.5/lib/modes/psych_16.h create mode 100644 external/libvorbis-1.3.5/lib/modes/psych_44.h create mode 100644 external/libvorbis-1.3.5/lib/modes/psych_8.h create mode 100644 external/libvorbis-1.3.5/lib/modes/residue_16.h create mode 100644 external/libvorbis-1.3.5/lib/modes/residue_44.h create mode 100644 external/libvorbis-1.3.5/lib/modes/residue_44p51.h create mode 100644 external/libvorbis-1.3.5/lib/modes/residue_44u.h create mode 100644 external/libvorbis-1.3.5/lib/modes/residue_8.h create mode 100644 external/libvorbis-1.3.5/lib/modes/setup_11.h create mode 100644 external/libvorbis-1.3.5/lib/modes/setup_16.h create mode 100644 external/libvorbis-1.3.5/lib/modes/setup_22.h create mode 100644 external/libvorbis-1.3.5/lib/modes/setup_32.h create mode 100644 external/libvorbis-1.3.5/lib/modes/setup_44.h create mode 100644 external/libvorbis-1.3.5/lib/modes/setup_44p51.h create mode 100644 external/libvorbis-1.3.5/lib/modes/setup_44u.h create mode 100644 external/libvorbis-1.3.5/lib/modes/setup_8.h create mode 100644 external/libvorbis-1.3.5/lib/modes/setup_X.h create mode 100644 external/libvorbis-1.3.5/lib/os.h create mode 100644 external/libvorbis-1.3.5/lib/psy.c create mode 100644 external/libvorbis-1.3.5/lib/psy.h create mode 100644 external/libvorbis-1.3.5/lib/registry.c create mode 100644 external/libvorbis-1.3.5/lib/registry.h create mode 100644 external/libvorbis-1.3.5/lib/res0.c create mode 100644 external/libvorbis-1.3.5/lib/scales.h create mode 100644 external/libvorbis-1.3.5/lib/sharedbook.c create mode 100644 external/libvorbis-1.3.5/lib/smallft.c create mode 100644 external/libvorbis-1.3.5/lib/smallft.h create mode 100644 external/libvorbis-1.3.5/lib/synthesis.c create mode 100644 external/libvorbis-1.3.5/lib/vorbisenc.c create mode 100644 external/libvorbis-1.3.5/lib/vorbisfile.c create mode 100644 external/libvorbis-1.3.5/lib/window.c create mode 100644 external/libvorbis-1.3.5/lib/window.h create mode 100644 external/lua-5.3.3/CMakeLists.txt create mode 100644 external/lua-5.3.3/README create mode 100644 external/lua-5.3.3/include/lauxlib.h create mode 100644 external/lua-5.3.3/include/lua.h create mode 100644 external/lua-5.3.3/include/lua.hpp create mode 100644 external/lua-5.3.3/include/luaconf.h create mode 100644 external/lua-5.3.3/include/lualib.h create mode 100644 external/lua-5.3.3/src/lapi.c create mode 100644 external/lua-5.3.3/src/lapi.h create mode 100644 external/lua-5.3.3/src/lauxlib.c create mode 100644 external/lua-5.3.3/src/lauxlib.h create mode 100644 external/lua-5.3.3/src/lbaselib.c create mode 100644 external/lua-5.3.3/src/lbitlib.c create mode 100644 external/lua-5.3.3/src/lcode.c create mode 100644 external/lua-5.3.3/src/lcode.h create mode 100644 external/lua-5.3.3/src/lcorolib.c create mode 100644 external/lua-5.3.3/src/lctype.c create mode 100644 external/lua-5.3.3/src/lctype.h create mode 100644 external/lua-5.3.3/src/ldblib.c create mode 100644 external/lua-5.3.3/src/ldebug.c create mode 100644 external/lua-5.3.3/src/ldebug.h create mode 100644 external/lua-5.3.3/src/ldo.c create mode 100644 external/lua-5.3.3/src/ldo.h create mode 100644 external/lua-5.3.3/src/ldump.c create mode 100644 external/lua-5.3.3/src/lfunc.c create mode 100644 external/lua-5.3.3/src/lfunc.h create mode 100644 external/lua-5.3.3/src/lgc.c create mode 100644 external/lua-5.3.3/src/lgc.h create mode 100644 external/lua-5.3.3/src/linit.c create mode 100644 external/lua-5.3.3/src/liolib.c create mode 100644 external/lua-5.3.3/src/llex.c create mode 100644 external/lua-5.3.3/src/llex.h create mode 100644 external/lua-5.3.3/src/llimits.h create mode 100644 external/lua-5.3.3/src/lmathlib.c create mode 100644 external/lua-5.3.3/src/lmem.c create mode 100644 external/lua-5.3.3/src/lmem.h create mode 100644 external/lua-5.3.3/src/loadlib.c create mode 100644 external/lua-5.3.3/src/lobject.c create mode 100644 external/lua-5.3.3/src/lobject.h create mode 100644 external/lua-5.3.3/src/lopcodes.c create mode 100644 external/lua-5.3.3/src/lopcodes.h create mode 100644 external/lua-5.3.3/src/loslib.c create mode 100644 external/lua-5.3.3/src/lparser.c create mode 100644 external/lua-5.3.3/src/lparser.h create mode 100644 external/lua-5.3.3/src/lprefix.h create mode 100644 external/lua-5.3.3/src/lstate.c create mode 100644 external/lua-5.3.3/src/lstate.h create mode 100644 external/lua-5.3.3/src/lstring.c create mode 100644 external/lua-5.3.3/src/lstring.h create mode 100644 external/lua-5.3.3/src/lstrlib.c create mode 100644 external/lua-5.3.3/src/ltable.c create mode 100644 external/lua-5.3.3/src/ltable.h create mode 100644 external/lua-5.3.3/src/ltablib.c create mode 100644 external/lua-5.3.3/src/ltm.c create mode 100644 external/lua-5.3.3/src/ltm.h create mode 100644 external/lua-5.3.3/src/lua.c create mode 100644 external/lua-5.3.3/src/lua.h create mode 100644 external/lua-5.3.3/src/lua.hpp create mode 100644 external/lua-5.3.3/src/luac.c create mode 100644 external/lua-5.3.3/src/luaconf.h create mode 100644 external/lua-5.3.3/src/lualib.h create mode 100644 external/lua-5.3.3/src/lundump.c create mode 100644 external/lua-5.3.3/src/lundump.h create mode 100644 external/lua-5.3.3/src/lutf8lib.c create mode 100644 external/lua-5.3.3/src/lvm.c create mode 100644 external/lua-5.3.3/src/lvm.h create mode 100644 external/lua-5.3.3/src/lzio.c create mode 100644 external/lua-5.3.3/src/lzio.h create mode 100644 external/nettle-3.3/CMakeLists.txt create mode 100644 external/nettle-3.3/nettle/bignum-random-prime.c create mode 100644 external/nettle-3.3/nettle/bignum-random.c create mode 100644 external/nettle-3.3/nettle/bignum.c create mode 100644 external/nettle-3.3/nettle/bignum.h create mode 100644 external/nettle-3.3/nettle/buffer-init.c create mode 100644 external/nettle-3.3/nettle/buffer.c create mode 100644 external/nettle-3.3/nettle/buffer.h create mode 100644 external/nettle-3.3/nettle/gmp-glue.c create mode 100644 external/nettle-3.3/nettle/gmp-glue.h create mode 100644 external/nettle-3.3/nettle/macros.h create mode 100644 external/nettle-3.3/nettle/mini-gmp.c create mode 100644 external/nettle-3.3/nettle/mini-gmp.h create mode 100644 external/nettle-3.3/nettle/nettle-internal.h create mode 100644 external/nettle-3.3/nettle/nettle-meta.h create mode 100644 external/nettle-3.3/nettle/nettle-stdint.h create mode 100644 external/nettle-3.3/nettle/nettle-types.h create mode 100644 external/nettle-3.3/nettle/nettle-write.h create mode 100644 external/nettle-3.3/nettle/pkcs1-rsa-sha256.c create mode 100644 external/nettle-3.3/nettle/pkcs1.c create mode 100644 external/nettle-3.3/nettle/pkcs1.h create mode 100644 external/nettle-3.3/nettle/realloc.c create mode 100644 external/nettle-3.3/nettle/realloc.h create mode 100644 external/nettle-3.3/nettle/rsa-keygen.c create mode 100644 external/nettle-3.3/nettle/rsa-sha256-sign.c create mode 100644 external/nettle-3.3/nettle/rsa-sha256-verify.c create mode 100644 external/nettle-3.3/nettle/rsa-sign.c create mode 100644 external/nettle-3.3/nettle/rsa-verify.c create mode 100644 external/nettle-3.3/nettle/rsa.c create mode 100644 external/nettle-3.3/nettle/rsa.h create mode 100644 external/nettle-3.3/nettle/rsa2sexp.c create mode 100644 external/nettle-3.3/nettle/sexp-format.c create mode 100644 external/nettle-3.3/nettle/sexp.c create mode 100644 external/nettle-3.3/nettle/sexp.h create mode 100644 external/nettle-3.3/nettle/sexp2bignum.c create mode 100644 external/nettle-3.3/nettle/sexp2rsa.c create mode 100644 external/nettle-3.3/nettle/sha2.h create mode 100644 external/nettle-3.3/nettle/sha256-compress.c create mode 100644 external/nettle-3.3/nettle/sha256.c create mode 100644 external/nettle-3.3/nettle/version.h create mode 100644 external/nettle-3.3/nettle/write-be32.c create mode 100644 external/opus-1.1.4/CMakeLists.txt create mode 100644 external/opus-1.1.4/celt/CMakeLists.txt create mode 100644 external/opus-1.1.4/celt/_kiss_fft_guts.h create mode 100644 external/opus-1.1.4/celt/arch.h create mode 100644 external/opus-1.1.4/celt/arm/arm2gnu.pl create mode 100644 external/opus-1.1.4/celt/arm/arm_celt_map.c create mode 100644 external/opus-1.1.4/celt/arm/armcpu.c create mode 100644 external/opus-1.1.4/celt/arm/armcpu.h create mode 100644 external/opus-1.1.4/celt/arm/armopts.s.in create mode 100644 external/opus-1.1.4/celt/arm/celt_ne10_fft.c create mode 100644 external/opus-1.1.4/celt/arm/celt_ne10_mdct.c create mode 100644 external/opus-1.1.4/celt/arm/celt_neon_intr.c create mode 100644 external/opus-1.1.4/celt/arm/celt_pitch_xcorr_arm-gnu.S create mode 100644 external/opus-1.1.4/celt/arm/celt_pitch_xcorr_arm.s create mode 100644 external/opus-1.1.4/celt/arm/fft_arm.h create mode 100644 external/opus-1.1.4/celt/arm/fixed_arm64.h create mode 100644 external/opus-1.1.4/celt/arm/fixed_armv4.h create mode 100644 external/opus-1.1.4/celt/arm/fixed_armv5e.h create mode 100644 external/opus-1.1.4/celt/arm/kiss_fft_armv4.h create mode 100644 external/opus-1.1.4/celt/arm/kiss_fft_armv5e.h create mode 100644 external/opus-1.1.4/celt/arm/mdct_arm.h create mode 100644 external/opus-1.1.4/celt/arm/pitch_arm.h create mode 100644 external/opus-1.1.4/celt/bands.c create mode 100644 external/opus-1.1.4/celt/bands.h create mode 100644 external/opus-1.1.4/celt/celt.c create mode 100644 external/opus-1.1.4/celt/celt.h create mode 100644 external/opus-1.1.4/celt/celt_decoder.c create mode 100644 external/opus-1.1.4/celt/celt_encoder.c create mode 100644 external/opus-1.1.4/celt/celt_lpc.c create mode 100644 external/opus-1.1.4/celt/celt_lpc.h create mode 100644 external/opus-1.1.4/celt/cpu_support.h create mode 100644 external/opus-1.1.4/celt/cwrs.c create mode 100644 external/opus-1.1.4/celt/cwrs.h create mode 100644 external/opus-1.1.4/celt/ecintrin.h create mode 100644 external/opus-1.1.4/celt/entcode.c create mode 100644 external/opus-1.1.4/celt/entcode.h create mode 100644 external/opus-1.1.4/celt/entdec.c create mode 100644 external/opus-1.1.4/celt/entdec.h create mode 100644 external/opus-1.1.4/celt/entenc.c create mode 100644 external/opus-1.1.4/celt/entenc.h create mode 100644 external/opus-1.1.4/celt/fixed_debug.h create mode 100644 external/opus-1.1.4/celt/fixed_generic.h create mode 100644 external/opus-1.1.4/celt/float_cast.h create mode 100644 external/opus-1.1.4/celt/kiss_fft.c create mode 100644 external/opus-1.1.4/celt/kiss_fft.h create mode 100644 external/opus-1.1.4/celt/laplace.c create mode 100644 external/opus-1.1.4/celt/laplace.h create mode 100644 external/opus-1.1.4/celt/mathops.c create mode 100644 external/opus-1.1.4/celt/mathops.h create mode 100644 external/opus-1.1.4/celt/mdct.c create mode 100644 external/opus-1.1.4/celt/mdct.h create mode 100644 external/opus-1.1.4/celt/mfrngcod.h create mode 100644 external/opus-1.1.4/celt/mips/celt_mipsr1.h create mode 100644 external/opus-1.1.4/celt/mips/fixed_generic_mipsr1.h create mode 100644 external/opus-1.1.4/celt/mips/kiss_fft_mipsr1.h create mode 100644 external/opus-1.1.4/celt/mips/mdct_mipsr1.h create mode 100644 external/opus-1.1.4/celt/mips/pitch_mipsr1.h create mode 100644 external/opus-1.1.4/celt/mips/vq_mipsr1.h create mode 100644 external/opus-1.1.4/celt/modes.c create mode 100644 external/opus-1.1.4/celt/modes.h create mode 100644 external/opus-1.1.4/celt/opus_custom_demo.c create mode 100644 external/opus-1.1.4/celt/os_support.h create mode 100644 external/opus-1.1.4/celt/pitch.c create mode 100644 external/opus-1.1.4/celt/pitch.h create mode 100644 external/opus-1.1.4/celt/quant_bands.c create mode 100644 external/opus-1.1.4/celt/quant_bands.h create mode 100644 external/opus-1.1.4/celt/rate.c create mode 100644 external/opus-1.1.4/celt/rate.h create mode 100644 external/opus-1.1.4/celt/stack_alloc.h create mode 100644 external/opus-1.1.4/celt/static_modes_fixed.h create mode 100644 external/opus-1.1.4/celt/static_modes_fixed_arm_ne10.h create mode 100644 external/opus-1.1.4/celt/static_modes_float.h create mode 100644 external/opus-1.1.4/celt/static_modes_float_arm_ne10.h create mode 100644 external/opus-1.1.4/celt/vq.c create mode 100644 external/opus-1.1.4/celt/vq.h create mode 100644 external/opus-1.1.4/celt/x86/celt_lpc_sse.c create mode 100644 external/opus-1.1.4/celt/x86/celt_lpc_sse.h create mode 100644 external/opus-1.1.4/celt/x86/pitch_sse.c create mode 100644 external/opus-1.1.4/celt/x86/pitch_sse.h create mode 100644 external/opus-1.1.4/celt/x86/pitch_sse2.c create mode 100644 external/opus-1.1.4/celt/x86/pitch_sse4_1.c create mode 100644 external/opus-1.1.4/celt/x86/x86_celt_map.c create mode 100644 external/opus-1.1.4/celt/x86/x86cpu.c create mode 100644 external/opus-1.1.4/celt/x86/x86cpu.h create mode 100644 external/opus-1.1.4/include/CMakeLists.txt create mode 100644 external/opus-1.1.4/include/opus.h create mode 100644 external/opus-1.1.4/include/opus_custom.h create mode 100644 external/opus-1.1.4/include/opus_defines.h create mode 100644 external/opus-1.1.4/include/opus_multistream.h create mode 100644 external/opus-1.1.4/include/opus_types.h create mode 100644 external/opus-1.1.4/silk/A2NLSF.c create mode 100644 external/opus-1.1.4/silk/API.h create mode 100644 external/opus-1.1.4/silk/CMakeLists.txt create mode 100644 external/opus-1.1.4/silk/CNG.c create mode 100644 external/opus-1.1.4/silk/HP_variable_cutoff.c create mode 100644 external/opus-1.1.4/silk/Inlines.h create mode 100644 external/opus-1.1.4/silk/LPC_analysis_filter.c create mode 100644 external/opus-1.1.4/silk/LPC_inv_pred_gain.c create mode 100644 external/opus-1.1.4/silk/LP_variable_cutoff.c create mode 100644 external/opus-1.1.4/silk/MacroCount.h create mode 100644 external/opus-1.1.4/silk/MacroDebug.h create mode 100644 external/opus-1.1.4/silk/NLSF2A.c create mode 100644 external/opus-1.1.4/silk/NLSF_VQ.c create mode 100644 external/opus-1.1.4/silk/NLSF_VQ_weights_laroia.c create mode 100644 external/opus-1.1.4/silk/NLSF_decode.c create mode 100644 external/opus-1.1.4/silk/NLSF_del_dec_quant.c create mode 100644 external/opus-1.1.4/silk/NLSF_encode.c create mode 100644 external/opus-1.1.4/silk/NLSF_stabilize.c create mode 100644 external/opus-1.1.4/silk/NLSF_unpack.c create mode 100644 external/opus-1.1.4/silk/NSQ.c create mode 100644 external/opus-1.1.4/silk/NSQ.h create mode 100644 external/opus-1.1.4/silk/NSQ_del_dec.c create mode 100644 external/opus-1.1.4/silk/PLC.c create mode 100644 external/opus-1.1.4/silk/PLC.h create mode 100644 external/opus-1.1.4/silk/SigProc_FIX.h create mode 100644 external/opus-1.1.4/silk/VAD.c create mode 100644 external/opus-1.1.4/silk/VQ_WMat_EC.c create mode 100644 external/opus-1.1.4/silk/ana_filt_bank_1.c create mode 100644 external/opus-1.1.4/silk/arm/NSQ_neon.c create mode 100644 external/opus-1.1.4/silk/arm/NSQ_neon.h create mode 100644 external/opus-1.1.4/silk/arm/SigProc_FIX_armv4.h create mode 100644 external/opus-1.1.4/silk/arm/SigProc_FIX_armv5e.h create mode 100644 external/opus-1.1.4/silk/arm/arm_silk_map.c create mode 100644 external/opus-1.1.4/silk/arm/macros_arm64.h create mode 100644 external/opus-1.1.4/silk/arm/macros_armv4.h create mode 100644 external/opus-1.1.4/silk/arm/macros_armv5e.h create mode 100644 external/opus-1.1.4/silk/biquad_alt.c create mode 100644 external/opus-1.1.4/silk/bwexpander.c create mode 100644 external/opus-1.1.4/silk/bwexpander_32.c create mode 100644 external/opus-1.1.4/silk/check_control_input.c create mode 100644 external/opus-1.1.4/silk/code_signs.c create mode 100644 external/opus-1.1.4/silk/control.h create mode 100644 external/opus-1.1.4/silk/control_SNR.c create mode 100644 external/opus-1.1.4/silk/control_audio_bandwidth.c create mode 100644 external/opus-1.1.4/silk/control_codec.c create mode 100644 external/opus-1.1.4/silk/debug.c create mode 100644 external/opus-1.1.4/silk/debug.h create mode 100644 external/opus-1.1.4/silk/dec_API.c create mode 100644 external/opus-1.1.4/silk/decode_core.c create mode 100644 external/opus-1.1.4/silk/decode_frame.c create mode 100644 external/opus-1.1.4/silk/decode_indices.c create mode 100644 external/opus-1.1.4/silk/decode_parameters.c create mode 100644 external/opus-1.1.4/silk/decode_pitch.c create mode 100644 external/opus-1.1.4/silk/decode_pulses.c create mode 100644 external/opus-1.1.4/silk/decoder_set_fs.c create mode 100644 external/opus-1.1.4/silk/define.h create mode 100644 external/opus-1.1.4/silk/enc_API.c create mode 100644 external/opus-1.1.4/silk/encode_indices.c create mode 100644 external/opus-1.1.4/silk/encode_pulses.c create mode 100644 external/opus-1.1.4/silk/errors.h create mode 100644 external/opus-1.1.4/silk/fixed/CMakeLists.txt create mode 100644 external/opus-1.1.4/silk/fixed/LTP_analysis_filter_FIX.c create mode 100644 external/opus-1.1.4/silk/fixed/LTP_scale_ctrl_FIX.c create mode 100644 external/opus-1.1.4/silk/fixed/apply_sine_window_FIX.c create mode 100644 external/opus-1.1.4/silk/fixed/autocorr_FIX.c create mode 100644 external/opus-1.1.4/silk/fixed/burg_modified_FIX.c create mode 100644 external/opus-1.1.4/silk/fixed/corrMatrix_FIX.c create mode 100644 external/opus-1.1.4/silk/fixed/encode_frame_FIX.c create mode 100644 external/opus-1.1.4/silk/fixed/find_LPC_FIX.c create mode 100644 external/opus-1.1.4/silk/fixed/find_LTP_FIX.c create mode 100644 external/opus-1.1.4/silk/fixed/find_pitch_lags_FIX.c create mode 100644 external/opus-1.1.4/silk/fixed/find_pred_coefs_FIX.c create mode 100644 external/opus-1.1.4/silk/fixed/k2a_FIX.c create mode 100644 external/opus-1.1.4/silk/fixed/k2a_Q16_FIX.c create mode 100644 external/opus-1.1.4/silk/fixed/main_FIX.h create mode 100644 external/opus-1.1.4/silk/fixed/noise_shape_analysis_FIX.c create mode 100644 external/opus-1.1.4/silk/fixed/pitch_analysis_core_FIX.c create mode 100644 external/opus-1.1.4/silk/fixed/prefilter_FIX.c create mode 100644 external/opus-1.1.4/silk/fixed/process_gains_FIX.c create mode 100644 external/opus-1.1.4/silk/fixed/regularize_correlations_FIX.c create mode 100644 external/opus-1.1.4/silk/fixed/residual_energy16_FIX.c create mode 100644 external/opus-1.1.4/silk/fixed/residual_energy_FIX.c create mode 100644 external/opus-1.1.4/silk/fixed/schur64_FIX.c create mode 100644 external/opus-1.1.4/silk/fixed/schur_FIX.c create mode 100644 external/opus-1.1.4/silk/fixed/solve_LS_FIX.c create mode 100644 external/opus-1.1.4/silk/fixed/structs_FIX.h create mode 100644 external/opus-1.1.4/silk/fixed/vector_ops_FIX.c create mode 100644 external/opus-1.1.4/silk/fixed/warped_autocorrelation_FIX.c create mode 100644 external/opus-1.1.4/silk/float/CMakeLists.txt create mode 100644 external/opus-1.1.4/silk/float/LPC_analysis_filter_FLP.c create mode 100644 external/opus-1.1.4/silk/float/LPC_inv_pred_gain_FLP.c create mode 100644 external/opus-1.1.4/silk/float/LTP_analysis_filter_FLP.c create mode 100644 external/opus-1.1.4/silk/float/LTP_scale_ctrl_FLP.c create mode 100644 external/opus-1.1.4/silk/float/SigProc_FLP.h create mode 100644 external/opus-1.1.4/silk/float/apply_sine_window_FLP.c create mode 100644 external/opus-1.1.4/silk/float/autocorrelation_FLP.c create mode 100644 external/opus-1.1.4/silk/float/burg_modified_FLP.c create mode 100644 external/opus-1.1.4/silk/float/bwexpander_FLP.c create mode 100644 external/opus-1.1.4/silk/float/corrMatrix_FLP.c create mode 100644 external/opus-1.1.4/silk/float/encode_frame_FLP.c create mode 100644 external/opus-1.1.4/silk/float/energy_FLP.c create mode 100644 external/opus-1.1.4/silk/float/find_LPC_FLP.c create mode 100644 external/opus-1.1.4/silk/float/find_LTP_FLP.c create mode 100644 external/opus-1.1.4/silk/float/find_pitch_lags_FLP.c create mode 100644 external/opus-1.1.4/silk/float/find_pred_coefs_FLP.c create mode 100644 external/opus-1.1.4/silk/float/inner_product_FLP.c create mode 100644 external/opus-1.1.4/silk/float/k2a_FLP.c create mode 100644 external/opus-1.1.4/silk/float/levinsondurbin_FLP.c create mode 100644 external/opus-1.1.4/silk/float/main_FLP.h create mode 100644 external/opus-1.1.4/silk/float/noise_shape_analysis_FLP.c create mode 100644 external/opus-1.1.4/silk/float/pitch_analysis_core_FLP.c create mode 100644 external/opus-1.1.4/silk/float/prefilter_FLP.c create mode 100644 external/opus-1.1.4/silk/float/process_gains_FLP.c create mode 100644 external/opus-1.1.4/silk/float/regularize_correlations_FLP.c create mode 100644 external/opus-1.1.4/silk/float/residual_energy_FLP.c create mode 100644 external/opus-1.1.4/silk/float/scale_copy_vector_FLP.c create mode 100644 external/opus-1.1.4/silk/float/scale_vector_FLP.c create mode 100644 external/opus-1.1.4/silk/float/schur_FLP.c create mode 100644 external/opus-1.1.4/silk/float/solve_LS_FLP.c create mode 100644 external/opus-1.1.4/silk/float/sort_FLP.c create mode 100644 external/opus-1.1.4/silk/float/structs_FLP.h create mode 100644 external/opus-1.1.4/silk/float/warped_autocorrelation_FLP.c create mode 100644 external/opus-1.1.4/silk/float/wrappers_FLP.c create mode 100644 external/opus-1.1.4/silk/gain_quant.c create mode 100644 external/opus-1.1.4/silk/init_decoder.c create mode 100644 external/opus-1.1.4/silk/init_encoder.c create mode 100644 external/opus-1.1.4/silk/inner_prod_aligned.c create mode 100644 external/opus-1.1.4/silk/interpolate.c create mode 100644 external/opus-1.1.4/silk/lin2log.c create mode 100644 external/opus-1.1.4/silk/log2lin.c create mode 100644 external/opus-1.1.4/silk/macros.h create mode 100644 external/opus-1.1.4/silk/main.h create mode 100644 external/opus-1.1.4/silk/mips/NSQ_del_dec_mipsr1.h create mode 100644 external/opus-1.1.4/silk/mips/macros_mipsr1.h create mode 100644 external/opus-1.1.4/silk/mips/sigproc_fix_mipsr1.h create mode 100644 external/opus-1.1.4/silk/pitch_est_defines.h create mode 100644 external/opus-1.1.4/silk/pitch_est_tables.c create mode 100644 external/opus-1.1.4/silk/process_NLSFs.c create mode 100644 external/opus-1.1.4/silk/quant_LTP_gains.c create mode 100644 external/opus-1.1.4/silk/resampler.c create mode 100644 external/opus-1.1.4/silk/resampler_down2.c create mode 100644 external/opus-1.1.4/silk/resampler_down2_3.c create mode 100644 external/opus-1.1.4/silk/resampler_private.h create mode 100644 external/opus-1.1.4/silk/resampler_private_AR2.c create mode 100644 external/opus-1.1.4/silk/resampler_private_IIR_FIR.c create mode 100644 external/opus-1.1.4/silk/resampler_private_down_FIR.c create mode 100644 external/opus-1.1.4/silk/resampler_private_up2_HQ.c create mode 100644 external/opus-1.1.4/silk/resampler_rom.c create mode 100644 external/opus-1.1.4/silk/resampler_rom.h create mode 100644 external/opus-1.1.4/silk/resampler_structs.h create mode 100644 external/opus-1.1.4/silk/shell_coder.c create mode 100644 external/opus-1.1.4/silk/sigm_Q15.c create mode 100644 external/opus-1.1.4/silk/sort.c create mode 100644 external/opus-1.1.4/silk/stereo_LR_to_MS.c create mode 100644 external/opus-1.1.4/silk/stereo_MS_to_LR.c create mode 100644 external/opus-1.1.4/silk/stereo_decode_pred.c create mode 100644 external/opus-1.1.4/silk/stereo_encode_pred.c create mode 100644 external/opus-1.1.4/silk/stereo_find_predictor.c create mode 100644 external/opus-1.1.4/silk/stereo_quant_pred.c create mode 100644 external/opus-1.1.4/silk/structs.h create mode 100644 external/opus-1.1.4/silk/sum_sqr_shift.c create mode 100644 external/opus-1.1.4/silk/table_LSF_cos.c create mode 100644 external/opus-1.1.4/silk/tables.h create mode 100644 external/opus-1.1.4/silk/tables_LTP.c create mode 100644 external/opus-1.1.4/silk/tables_NLSF_CB_NB_MB.c create mode 100644 external/opus-1.1.4/silk/tables_NLSF_CB_WB.c create mode 100644 external/opus-1.1.4/silk/tables_gain.c create mode 100644 external/opus-1.1.4/silk/tables_other.c create mode 100644 external/opus-1.1.4/silk/tables_pitch_lag.c create mode 100644 external/opus-1.1.4/silk/tables_pulses_per_block.c create mode 100644 external/opus-1.1.4/silk/tuning_parameters.h create mode 100644 external/opus-1.1.4/silk/typedef.h create mode 100644 external/opus-1.1.4/silk/x86/NSQ_del_dec_sse.c create mode 100644 external/opus-1.1.4/silk/x86/NSQ_sse.c create mode 100644 external/opus-1.1.4/silk/x86/SigProc_FIX_sse.h create mode 100644 external/opus-1.1.4/silk/x86/VAD_sse.c create mode 100644 external/opus-1.1.4/silk/x86/VQ_WMat_EC_sse.c create mode 100644 external/opus-1.1.4/silk/x86/main_sse.h create mode 100644 external/opus-1.1.4/silk/x86/x86_silk_map.c create mode 100644 external/opus-1.1.4/src/CMakeLists.txt create mode 100644 external/opus-1.1.4/src/analysis.c create mode 100644 external/opus-1.1.4/src/analysis.h create mode 100644 external/opus-1.1.4/src/mlp.c create mode 100644 external/opus-1.1.4/src/mlp.h create mode 100644 external/opus-1.1.4/src/mlp_data.c create mode 100644 external/opus-1.1.4/src/opus.c create mode 100644 external/opus-1.1.4/src/opus_decoder.c create mode 100644 external/opus-1.1.4/src/opus_encoder.c create mode 100644 external/opus-1.1.4/src/opus_multistream.c create mode 100644 external/opus-1.1.4/src/opus_multistream_decoder.c create mode 100644 external/opus-1.1.4/src/opus_multistream_encoder.c create mode 100644 external/opus-1.1.4/src/opus_private.h create mode 100644 external/opus-1.1.4/src/repacketizer.c create mode 100644 external/opus-1.1.4/src/tansig_table.h create mode 100644 external/opusfile-0.8/CMakeLists.txt create mode 100644 external/opusfile-0.8/include/opusfile.h create mode 100644 external/opusfile-0.8/src/http.c create mode 100644 external/opusfile-0.8/src/info.c create mode 100644 external/opusfile-0.8/src/internal.c create mode 100644 external/opusfile-0.8/src/internal.h create mode 100644 external/opusfile-0.8/src/opusfile.c create mode 100644 external/opusfile-0.8/src/stream.c create mode 100644 external/opusfile-0.8/src/wincerts.c create mode 100644 external/opusfile-0.8/src/winerrno.h create mode 100644 external/rapidjson/rapidjson.h create mode 100644 external/rapidjson/rapidjson/allocators.h create mode 100644 external/rapidjson/rapidjson/document.h create mode 100644 external/rapidjson/rapidjson/encodedstream.h create mode 100644 external/rapidjson/rapidjson/encodings.h create mode 100644 external/rapidjson/rapidjson/error/en.h create mode 100644 external/rapidjson/rapidjson/error/error.h create mode 100644 external/rapidjson/rapidjson/filereadstream.h create mode 100644 external/rapidjson/rapidjson/filewritestream.h create mode 100644 external/rapidjson/rapidjson/fwd.h create mode 100644 external/rapidjson/rapidjson/internal/biginteger.h create mode 100644 external/rapidjson/rapidjson/internal/diyfp.h create mode 100644 external/rapidjson/rapidjson/internal/dtoa.h create mode 100644 external/rapidjson/rapidjson/internal/ieee754.h create mode 100644 external/rapidjson/rapidjson/internal/itoa.h create mode 100644 external/rapidjson/rapidjson/internal/meta.h create mode 100644 external/rapidjson/rapidjson/internal/pow10.h create mode 100644 external/rapidjson/rapidjson/internal/regex.h create mode 100644 external/rapidjson/rapidjson/internal/stack.h create mode 100644 external/rapidjson/rapidjson/internal/strfunc.h create mode 100644 external/rapidjson/rapidjson/internal/strtod.h create mode 100644 external/rapidjson/rapidjson/internal/swap.h create mode 100644 external/rapidjson/rapidjson/istreamwrapper.h create mode 100644 external/rapidjson/rapidjson/memorybuffer.h create mode 100644 external/rapidjson/rapidjson/memorystream.h create mode 100644 external/rapidjson/rapidjson/msinttypes/inttypes.h create mode 100644 external/rapidjson/rapidjson/msinttypes/stdint.h create mode 100644 external/rapidjson/rapidjson/ostreamwrapper.h create mode 100644 external/rapidjson/rapidjson/pointer.h create mode 100644 external/rapidjson/rapidjson/prettywriter.h create mode 100644 external/rapidjson/rapidjson/rapidjson.h create mode 100644 external/rapidjson/rapidjson/reader.h create mode 100644 external/rapidjson/rapidjson/schema.h create mode 100644 external/rapidjson/rapidjson/stream.h create mode 100644 external/rapidjson/rapidjson/stringbuffer.h create mode 100644 external/rapidjson/rapidjson/writer.h create mode 100644 external/restclient/CMakeLists.txt create mode 100644 external/restclient/LICENSE create mode 100644 external/restclient/README.md create mode 100644 external/restclient/connection.cpp create mode 100644 external/restclient/helpers.cpp create mode 100644 external/restclient/restclient.cpp create mode 100644 external/restclient/restclient/connection.h create mode 100644 external/restclient/restclient/helpers.h create mode 100644 external/restclient/restclient/restclient.h create mode 100644 external/restclient/restclient/version.h create mode 100644 external/semver/.gitignore create mode 100644 external/semver/.gitmodules create mode 100644 external/semver/.travis.yml create mode 100644 external/semver/CMakeLists.txt create mode 100644 external/semver/LICENSE create mode 100644 external/semver/README.md create mode 100644 external/semver/appveyor.yml create mode 100644 external/semver/install_libcxx.sh create mode 100644 external/semver/src/include/semantic_version.h create mode 100644 external/semver/src/lib/CMakeLists.txt create mode 100644 external/semver/src/lib/semantic_version_v1.cpp create mode 100644 external/semver/src/lib/semantic_version_v2.cpp create mode 100644 external/semver/src/quickcheck/CMakeLists.txt create mode 100644 external/semver/src/quickcheck/Main.hi create mode 100644 external/semver/src/quickcheck/Main.hs create mode 100644 external/semver/src/quickcheck/Main.o create mode 100644 external/semver/src/quickcheck/Semver.hsc create mode 100644 external/semver/src/quickcheck/semantic_version_ffi.cpp create mode 100644 external/semver/src/quickcheck/semantic_version_ffi.h create mode 100644 external/semver/src/test/CMakeLists.txt create mode 100644 external/semver/src/test/main.cpp create mode 100644 external/sol/CMakeLists.txt create mode 100644 external/sol/sol.hpp create mode 100644 external/zlib/CMakeLists.txt create mode 100644 external/zlib/adler32.c create mode 100644 external/zlib/crc32.c create mode 100644 external/zlib/crc32.h create mode 100644 external/zlib/inffast.c create mode 100644 external/zlib/inffast.h create mode 100644 external/zlib/inffixed.h create mode 100644 external/zlib/inflate.c create mode 100644 external/zlib/inflate.h create mode 100644 external/zlib/inftrees.c create mode 100644 external/zlib/inftrees.h create mode 100644 external/zlib/zconf.h create mode 100644 external/zlib/zlib.h create mode 100644 external/zlib/zutil.c create mode 100644 external/zlib/zutil.h create mode 100644 make-macosx-app.sh create mode 100644 misc/SLA-dmg.sh create mode 100644 misc/Tremulous.icns create mode 100644 misc/docker-build.sh create mode 100644 misc/download-paks.sh create mode 100644 misc/entities.def create mode 100644 misc/last-merged-ioq3-revision create mode 100644 misc/make-macosx-ub.sh create mode 100644 misc/make-macosx.sh create mode 100644 misc/manual.lyx create mode 100644 misc/merge-grangerhub-into-trem.sh create mode 100644 misc/merge-ioq3-into-trem.sh create mode 100644 misc/msvc/tremulous.sln create mode 100644 misc/msvc/tremulous.vcproj create mode 100644 misc/server.cfg create mode 100644 misc/travis-ci-build.sh create mode 100644 misc/tremulous-banner.jpg create mode 100644 misc/tremulous.ico create mode 100644 misc/tremulous.xpm create mode 100644 scripts/README.md create mode 100644 scripts/binds.lua create mode 100644 scripts/granger/lib/init.lua create mode 100644 scripts/granger/lib/os.lua create mode 100644 scripts/granger/lib/path.lua create mode 100644 scripts/granger/lib/string.lua create mode 100644 scripts/granger/lib/table.lua create mode 100644 scripts/granger/main.lua create mode 100644 scripts/granger/util.lua create mode 100644 scripts/http.lua create mode 100644 scripts/inspect.lua create mode 100644 scripts/sample-httpjson-client.lua create mode 100644 scripts/test-nettle.lua create mode 100644 src/asm/matha.s create mode 100644 src/asm/qasm-inline.h create mode 100644 src/asm/qasm.h create mode 100644 src/asm/snapvector.asm create mode 100644 src/asm/snapvector.c create mode 100644 src/asm/snd_mixa.s create mode 100644 src/asm/vm_x86_64.asm create mode 100644 src/cgame/CMakeLists.txt create mode 100644 src/cgame/binaryshader.h delete mode 100644 src/cgame/cg_mem.c delete mode 100644 src/cgame/cg_ptr.c create mode 100644 src/cgame/cg_rangemarker.c create mode 100644 src/client/CMakeLists.txt create mode 100644 src/client/cl_avi.cpp create mode 100644 src/client/cl_cgame.cpp create mode 100644 src/client/cl_cin.cpp create mode 100644 src/client/cl_console.cpp create mode 100644 src/client/cl_curl.cpp create mode 100644 src/client/cl_curl.h create mode 100644 src/client/cl_input.cpp create mode 100644 src/client/cl_keys.cpp create mode 100644 src/client/cl_main.cpp create mode 100644 src/client/cl_net_chan.cpp create mode 100644 src/client/cl_parse.cpp create mode 100644 src/client/cl_rest.cpp create mode 100644 src/client/cl_rest.h create mode 100644 src/client/cl_scrn.cpp create mode 100644 src/client/cl_ui.cpp create mode 100644 src/client/cl_updates.cpp create mode 100644 src/client/cl_updates.h create mode 100644 src/client/client.h create mode 100644 src/client/keys.h create mode 100644 src/client/libmumblelink.cpp create mode 100644 src/client/libmumblelink.h create mode 100644 src/client/qal.cpp create mode 100644 src/client/qal.h create mode 100644 src/client/snd_adpcm.cpp create mode 100644 src/client/snd_codec.cpp create mode 100644 src/client/snd_codec.h create mode 100644 src/client/snd_codec_ogg.cpp create mode 100644 src/client/snd_codec_opus.cpp create mode 100644 src/client/snd_codec_wav.cpp create mode 100644 src/client/snd_dma.cpp create mode 100644 src/client/snd_local.h create mode 100644 src/client/snd_main.cpp create mode 100644 src/client/snd_mem.cpp create mode 100644 src/client/snd_mix.cpp create mode 100644 src/client/snd_openal.cpp create mode 100644 src/client/snd_public.h create mode 100644 src/client/snd_wavelet.cpp create mode 100644 src/game/CMakeLists.txt create mode 100644 src/game/bg_alloc.c create mode 100644 src/game/bg_shared.h create mode 100644 src/game/bg_voice.c delete mode 100644 src/game/g_mem.c create mode 100644 src/game/g_namelog.c create mode 100644 src/game/g_playermodel.c delete mode 100644 src/game/g_ptr.c create mode 100644 src/game/g_weapondrop.c create mode 100644 src/granger/COPYING create mode 100644 src/granger/Dockerfile create mode 100644 src/granger/README.md create mode 100644 src/granger/appveyor.yml create mode 100644 src/granger/misc/docker-build.sh create mode 100644 src/granger/src/CMakeLists.txt create mode 100644 src/granger/src/getopt.h create mode 100644 src/granger/src/lnettlelib.c create mode 100644 src/granger/src/lnettlelib.h create mode 100644 src/granger/src/lua/CMakeLists.txt create mode 100644 src/granger/src/main.c create mode 100644 src/granger/src/nettle/CMakeLists.txt create mode 100644 src/granger/src/nettle/macros.h create mode 100644 src/granger/src/nettle/md5-compress.c create mode 100644 src/granger/src/nettle/md5.c create mode 100644 src/granger/src/nettle/md5.h create mode 100644 src/granger/src/nettle/nettle-stdint.h create mode 100644 src/granger/src/nettle/nettle-types.h create mode 100644 src/granger/src/nettle/nettle-write.h create mode 100644 src/granger/src/nettle/sha2.h create mode 100644 src/granger/src/nettle/sha256-compress.c create mode 100644 src/granger/src/nettle/sha256.c create mode 100644 src/granger/src/nettle/version.h create mode 100644 src/granger/src/nettle/write-be32.c create mode 100644 src/granger/src/nettle/write-le32.c create mode 100644 src/granger/src/premake/CMakeLists.txt create mode 100644 src/granger/src/premake/os_access.c create mode 100644 src/granger/src/premake/os_chdir.c create mode 100644 src/granger/src/premake/os_copyfile.c create mode 100644 src/granger/src/premake/os_elevate.c create mode 100644 src/granger/src/premake/os_getcwd.c create mode 100644 src/granger/src/premake/os_is64bit.c create mode 100644 src/granger/src/premake/os_isdir.c create mode 100644 src/granger/src/premake/os_isfile.c create mode 100644 src/granger/src/premake/os_match.c create mode 100644 src/granger/src/premake/os_mkdir.c create mode 100644 src/granger/src/premake/os_pathsearch.c create mode 100644 src/granger/src/premake/os_rmdir.c create mode 100644 src/granger/src/premake/os_stat.c create mode 100644 src/granger/src/premake/path_getabsolute.c create mode 100644 src/granger/src/premake/path_getrelative.c create mode 100644 src/granger/src/premake/path_isabsolute.c create mode 100644 src/granger/src/premake/path_join.c create mode 100644 src/granger/src/premake/path_normalize.c create mode 100644 src/granger/src/premake/path_translate.c create mode 100644 src/granger/src/premake/premake.c create mode 100644 src/granger/src/premake/premake.h create mode 100644 src/granger/src/premake/string_endswith.c create mode 100644 src/granger/src/strvec.c create mode 100644 src/granger/src/strvec.h create mode 100644 src/granger/test/main.lua create mode 100644 src/granger/test/test-nettle.lua create mode 100644 src/granger/test/test-os-access.lua create mode 100644 src/null/null_client.cpp create mode 100644 src/null/null_glimp.cpp create mode 100644 src/null/null_input.cpp create mode 100644 src/null/null_main.cpp create mode 100644 src/null/null_net.cpp create mode 100644 src/null/null_snddma.cpp create mode 100644 src/qcommon/CMakeLists.txt create mode 100644 src/qcommon/alternatePlayerstate.h create mode 100644 src/qcommon/cdefs.h create mode 100644 src/qcommon/cm_load.cpp create mode 100644 src/qcommon/cm_local.h create mode 100644 src/qcommon/cm_patch.cpp create mode 100644 src/qcommon/cm_patch.h create mode 100644 src/qcommon/cm_polylib.cpp create mode 100644 src/qcommon/cm_polylib.h create mode 100644 src/qcommon/cm_public.h create mode 100644 src/qcommon/cm_test.cpp create mode 100644 src/qcommon/cm_trace.cpp create mode 100644 src/qcommon/cmd.cpp create mode 100644 src/qcommon/cmd.h create mode 100644 src/qcommon/common.cpp create mode 100644 src/qcommon/crypto.cpp create mode 100644 src/qcommon/crypto.h create mode 100644 src/qcommon/cvar.cpp create mode 100644 src/qcommon/cvar.h create mode 100644 src/qcommon/files.cpp create mode 100644 src/qcommon/files.h create mode 100644 src/qcommon/huffman.cpp create mode 100644 src/qcommon/huffman.h create mode 100644 src/qcommon/ioapi.cpp create mode 100644 src/qcommon/ioapi.h create mode 100644 src/qcommon/json.h create mode 100644 src/qcommon/md4.cpp create mode 100644 src/qcommon/md4.h create mode 100644 src/qcommon/md5.cpp create mode 100644 src/qcommon/msg.cpp create mode 100644 src/qcommon/msg.h create mode 100644 src/qcommon/net.h create mode 100644 src/qcommon/net_chan.cpp create mode 100644 src/qcommon/net_ip.cpp create mode 100644 src/qcommon/parse.cpp create mode 100644 src/qcommon/puff.cpp create mode 100644 src/qcommon/puff.h create mode 100644 src/qcommon/q3_lauxlib.cpp create mode 100644 src/qcommon/q3_lauxlib.h create mode 100644 src/qcommon/qcommon.h create mode 100644 src/qcommon/unzip.cpp create mode 100644 src/qcommon/unzip.h create mode 100644 src/qcommon/vm.cpp create mode 100644 src/qcommon/vm.h create mode 100644 src/qcommon/vm_interpreted.cpp create mode 100644 src/qcommon/vm_local.h create mode 100644 src/qcommon/vm_x86.cpp delete mode 100644 src/renderer/tr_types.h create mode 100644 src/renderercommon/CMakeLists.txt create mode 100644 src/renderercommon/iqm.h create mode 100644 src/renderercommon/qgl.h create mode 100644 src/renderercommon/tr_common.h create mode 100644 src/renderercommon/tr_font.cpp create mode 100644 src/renderercommon/tr_image_bmp.cpp create mode 100644 src/renderercommon/tr_image_jpg.cpp create mode 100644 src/renderercommon/tr_image_pcx.cpp create mode 100644 src/renderercommon/tr_image_png.cpp create mode 100644 src/renderercommon/tr_image_tga.cpp create mode 100644 src/renderercommon/tr_noise.cpp create mode 100644 src/renderercommon/tr_public.h create mode 100644 src/renderercommon/tr_types.h create mode 100644 src/renderergl1/CMakeLists.txt create mode 100644 src/renderergl1/tr_animation.cpp create mode 100644 src/renderergl1/tr_backend.cpp create mode 100644 src/renderergl1/tr_bsp.cpp create mode 100644 src/renderergl1/tr_cmds.cpp create mode 100644 src/renderergl1/tr_curve.cpp create mode 100644 src/renderergl1/tr_flares.cpp create mode 100644 src/renderergl1/tr_image.cpp create mode 100644 src/renderergl1/tr_init.cpp create mode 100644 src/renderergl1/tr_light.cpp create mode 100644 src/renderergl1/tr_local.h create mode 100644 src/renderergl1/tr_main.cpp create mode 100644 src/renderergl1/tr_marks.cpp create mode 100644 src/renderergl1/tr_mesh.cpp create mode 100644 src/renderergl1/tr_model.cpp create mode 100644 src/renderergl1/tr_model_iqm.cpp create mode 100644 src/renderergl1/tr_scene.cpp create mode 100644 src/renderergl1/tr_shade.cpp create mode 100644 src/renderergl1/tr_shade_calc.cpp create mode 100644 src/renderergl1/tr_shader.cpp create mode 100644 src/renderergl1/tr_shadows.cpp create mode 100644 src/renderergl1/tr_sky.cpp create mode 100644 src/renderergl1/tr_subs.cpp create mode 100644 src/renderergl1/tr_surface.cpp create mode 100644 src/renderergl1/tr_world.cpp create mode 100644 src/renderergl2/CMakeLists.txt create mode 100644 src/renderergl2/glsl/bokeh_fp.glsl create mode 100644 src/renderergl2/glsl/bokeh_vp.glsl create mode 100644 src/renderergl2/glsl/calclevels4x_fp.glsl create mode 100644 src/renderergl2/glsl/calclevels4x_vp.glsl create mode 100644 src/renderergl2/glsl/depthblur_fp.glsl create mode 100644 src/renderergl2/glsl/depthblur_vp.glsl create mode 100644 src/renderergl2/glsl/dlight_fp.glsl create mode 100644 src/renderergl2/glsl/dlight_vp.glsl create mode 100644 src/renderergl2/glsl/down4x_fp.glsl create mode 100644 src/renderergl2/glsl/down4x_vp.glsl create mode 100644 src/renderergl2/glsl/fogpass_fp.glsl create mode 100644 src/renderergl2/glsl/fogpass_vp.glsl create mode 100644 src/renderergl2/glsl/generic_fp.glsl create mode 100644 src/renderergl2/glsl/generic_vp.glsl create mode 100644 src/renderergl2/glsl/lightall_fp.glsl create mode 100644 src/renderergl2/glsl/lightall_vp.glsl create mode 100644 src/renderergl2/glsl/pshadow_fp.glsl create mode 100644 src/renderergl2/glsl/pshadow_vp.glsl create mode 100644 src/renderergl2/glsl/shadowfill_fp.glsl create mode 100644 src/renderergl2/glsl/shadowfill_vp.glsl create mode 100644 src/renderergl2/glsl/shadowmask_fp.glsl create mode 100644 src/renderergl2/glsl/shadowmask_vp.glsl create mode 100644 src/renderergl2/glsl/ssao_fp.glsl create mode 100644 src/renderergl2/glsl/ssao_vp.glsl create mode 100644 src/renderergl2/glsl/texturecolor_fp.glsl create mode 100644 src/renderergl2/glsl/texturecolor_vp.glsl create mode 100644 src/renderergl2/glsl/tonemap_fp.glsl create mode 100644 src/renderergl2/glsl/tonemap_vp.glsl create mode 100644 src/renderergl2/tr_animation.cpp create mode 100644 src/renderergl2/tr_backend.cpp create mode 100644 src/renderergl2/tr_bsp.cpp create mode 100644 src/renderergl2/tr_cmds.cpp create mode 100644 src/renderergl2/tr_curve.cpp create mode 100644 src/renderergl2/tr_dsa.cpp create mode 100644 src/renderergl2/tr_dsa.h create mode 100644 src/renderergl2/tr_extensions.cpp create mode 100644 src/renderergl2/tr_extramath.cpp create mode 100644 src/renderergl2/tr_extramath.h create mode 100644 src/renderergl2/tr_extratypes.h create mode 100644 src/renderergl2/tr_fbo.cpp create mode 100644 src/renderergl2/tr_fbo.h create mode 100644 src/renderergl2/tr_flares.cpp create mode 100644 src/renderergl2/tr_glsl.cpp create mode 100644 src/renderergl2/tr_image.cpp create mode 100644 src/renderergl2/tr_image_dds.cpp create mode 100644 src/renderergl2/tr_init.cpp create mode 100644 src/renderergl2/tr_light.cpp create mode 100644 src/renderergl2/tr_local.h create mode 100644 src/renderergl2/tr_main.cpp create mode 100644 src/renderergl2/tr_marks.cpp create mode 100644 src/renderergl2/tr_mesh.cpp create mode 100644 src/renderergl2/tr_model.cpp create mode 100644 src/renderergl2/tr_model_iqm.cpp create mode 100644 src/renderergl2/tr_postprocess.cpp create mode 100644 src/renderergl2/tr_postprocess.h create mode 100644 src/renderergl2/tr_scene.cpp create mode 100644 src/renderergl2/tr_shade.cpp create mode 100644 src/renderergl2/tr_shade_calc.cpp create mode 100644 src/renderergl2/tr_shader.cpp create mode 100644 src/renderergl2/tr_shadows.cpp create mode 100644 src/renderergl2/tr_sky.cpp create mode 100644 src/renderergl2/tr_subs.cpp create mode 100644 src/renderergl2/tr_surface.cpp create mode 100644 src/renderergl2/tr_vbo.cpp create mode 100644 src/renderergl2/tr_world.cpp create mode 100644 src/script/CMakeLists.txt create mode 100644 src/script/bind.h create mode 100644 src/script/client.h create mode 100644 src/script/cmd.h create mode 100644 src/script/cvar.h create mode 100644 src/script/http_client.h create mode 100644 src/script/lnettlelib.c create mode 100644 src/script/lnettlelib.h create mode 100644 src/script/nettle.h create mode 100644 src/script/rapidjson.h create mode 100644 src/script/rapidjson/LICENSE create mode 100644 src/script/rapidjson/document.cpp create mode 100644 src/script/rapidjson/file.hpp create mode 100644 src/script/rapidjson/luax.hpp create mode 100644 src/script/rapidjson/rapidjson.cpp create mode 100644 src/script/rapidjson/schema.cpp create mode 100644 src/script/rapidjson/userdata.hpp create mode 100644 src/script/rapidjson/values.cpp create mode 100644 src/script/rapidjson/values.hpp create mode 100644 src/sdl/CMakeLists.txt create mode 100644 src/sdl/sdl_gamma.cpp create mode 100644 src/sdl/sdl_glimp.cpp create mode 100644 src/sdl/sdl_icon.h create mode 100644 src/sdl/sdl_input.cpp create mode 100644 src/sdl/sdl_snd.cpp create mode 100644 src/server/CMakeLists.txt create mode 100644 src/server/server.h create mode 100644 src/server/sv_admin.cpp create mode 100644 src/server/sv_admin.h create mode 100644 src/server/sv_ccmds.cpp create mode 100644 src/server/sv_client.cpp create mode 100644 src/server/sv_game.cpp create mode 100644 src/server/sv_init.cpp create mode 100644 src/server/sv_main.cpp create mode 100644 src/server/sv_net_chan.cpp create mode 100644 src/server/sv_snapshot.cpp create mode 100644 src/server/sv_world.cpp create mode 100644 src/sys/CMakeLists.txt create mode 100644 src/sys/con_log.cpp create mode 100644 src/sys/con_passive.cpp create mode 100644 src/sys/con_tty.cpp create mode 100644 src/sys/con_win32.cpp create mode 100644 src/sys/dialog.h create mode 100644 src/sys/sys_loadlib.h create mode 100644 src/sys/sys_local.h create mode 100644 src/sys/sys_main.cpp create mode 100644 src/sys/sys_osx.mm create mode 100644 src/sys/sys_shared.h create mode 100644 src/sys/sys_unix.cpp create mode 100644 src/sys/sys_win32.cpp create mode 100644 src/sys/sys_win32_default_homepath.cpp create mode 100644 src/sys/win_resource.h create mode 100644 src/sys/win_resource.rc create mode 100644 src/tools/CMakeLists.txt create mode 100644 src/tools/asm/qfiles.h create mode 100644 src/ui/CMakeLists.txt delete mode 100644 src/ui/menudef.h delete mode 100644 src/ui/ui_players.c delete mode 100644 ui/assets/alien/buildstat.cfg delete mode 100644 ui/assets/alien/buildstat/frame.tga delete mode 100644 ui/assets/alien/buildstat/mark.tga delete mode 100644 ui/assets/alien/buildstat/nopower.tga delete mode 100644 ui/assets/alien/buildstat/overlay.tga delete mode 100644 ui/assets/human/buildstat.cfg delete mode 100644 ui/assets/human/buildstat/frame.tga delete mode 100644 ui/assets/human/buildstat/mark.tga delete mode 100644 ui/assets/human/buildstat/nopower.tga delete mode 100644 ui/drop.menu delete mode 100644 ui/ingame.menu delete mode 100644 ui/ingame.txt delete mode 100644 ui/ingame_game.menu delete mode 100644 ui/ingame_options.menu delete mode 100644 ui/joinserver.menu delete mode 100644 ui/main.menu delete mode 100644 ui/menudef.h delete mode 100644 ui/menus.txt delete mode 100644 ui/options.menu delete mode 100644 ui/quitcredit.menu delete mode 100644 ui/say.menu delete mode 100644 ui/teamscore.menu delete mode 100644 ui/tremulous.txt delete mode 100644 ui/tremulous_alien_builder_hud.menu delete mode 100644 ui/tremulous_alien_general_hud.menu delete mode 100644 ui/tremulous_default_hud.menu delete mode 100644 ui/tremulous_human_hud.menu diff --git a/.clang-format b/.clang-format new file mode 100644 index 0000000..9f8db6d --- /dev/null +++ b/.clang-format @@ -0,0 +1,87 @@ +# vim:ft=yaml +Language: Cpp +AccessModifierOffset: -4 +AlignAfterOpenBracket: DontAlign +AlignConsecutiveAssignments: false +AlignConsecutiveDeclarations: false +AlignEscapedNewlinesLeft: true +AlignOperands: true +AlignTrailingComments: false +AllowAllParametersOfDeclarationOnNextLine: true +AllowShortBlocksOnASingleLine: false +AllowShortCaseLabelsOnASingleLine: false +AllowShortFunctionsOnASingleLine: All +AllowShortIfStatementsOnASingleLine: false +AllowShortLoopsOnASingleLine: false +AlwaysBreakAfterDefinitionReturnType: None +AlwaysBreakAfterReturnType: None +AlwaysBreakBeforeMultilineStrings: true +AlwaysBreakTemplateDeclarations: true +BinPackArguments: true +BinPackParameters: true +BraceWrapping: + AfterClass: false + AfterControlStatement: true + AfterEnum: false + AfterFunction: true + AfterNamespace: false + AfterObjCDeclaration: false + AfterStruct: false + AfterUnion: false + BeforeCatch: true + BeforeElse: true + IndentBraces: false +BreakBeforeBinaryOperators: None +BreakBeforeBraces: Custom +BreakBeforeTernaryOperators: true +BreakConstructorInitializersBeforeComma: false +ColumnLimit: 120 +CommentPragmas: '^ IWYU pragma:' +ConstructorInitializerAllOnOneLineOrOnePerLine: true +ConstructorInitializerIndentWidth: 4 +ContinuationIndentWidth: 4 +Cpp11BracedListStyle: true +DerivePointerAlignment: true +DisableFormat: false +ExperimentalAutoDetectBinPacking: false +ForEachMacros: [ foreach, Q_FOREACH, BOOST_FOREACH ] +IncludeCategories: + - Regex: '^<.*\.h>' + Priority: 1 + - Regex: '^<.*' + Priority: 2 + - Regex: '.*' + Priority: 3 +IndentCaseLabels: true +IndentWidth: 4 +IndentWrappedFunctionNames: false +KeepEmptyLinesAtTheStartOfBlocks: false +MacroBlockBegin: '' +MacroBlockEnd: '' +MaxEmptyLinesToKeep: 1 +NamespaceIndentation: None +ObjCBlockIndentWidth: 2 +ObjCSpaceAfterProperty: false +ObjCSpaceBeforeProtocolList: false +PenaltyBreakBeforeFirstCallParameter: 1 +PenaltyBreakComment: 300 +PenaltyBreakFirstLessLess: 120 +PenaltyBreakString: 1000 +PenaltyExcessCharacter: 1000000 +PenaltyReturnTypeOnItsOwnLine: 200 +PointerAlignment: Left +ReflowComments: true +SortIncludes: true +SpaceAfterCStyleCast: false +SpaceBeforeAssignmentOperators: true +SpaceBeforeParens: ControlStatements +SpaceInEmptyParentheses: false +SpacesBeforeTrailingComments: 2 +SpacesInAngles: false +SpacesInContainerLiterals: true +SpacesInCStyleCastParentheses: false +SpacesInParentheses: false +SpacesInSquareBrackets: false +Standard: Auto +TabWidth: 8 +UseTab: Never diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..85b97a9 --- /dev/null +++ b/.gitignore @@ -0,0 +1,43 @@ +build +Makefile.local +*.swp +*tags +misc/patches +misc/last-merged-ioq3-revision.temp +*~ + +# OS X +#################### +.Spotlight-V100/ +.Trashes/ +._* +.AppleDouble +.DS_Store +.LSOverride +Icon? + +# Xcode +#################### +*.mode1v3 +*.mode2v3 +*.pbxuser +*.perspectivev3 +*.user +*.xcuserstate +*.moved-aside +*~.nib +.idea/ +DerivedData/ +project.xcworkspace/ +xcuserdata/ +profile +!default.pbxuser +!default.mode1v3 +!default.mode2v3 +!default.perspectivev3 + +# Microsoft Visual Studio +#################### +*.sdf +*.opensdf +*.suo diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 0000000..b420d8b --- /dev/null +++ b/.travis.yml @@ -0,0 +1,57 @@ +language: cpp +sudo: required +dist: trusty +services: +- docker +git: + depth: 5 +notifications: + slack: + secure: iS767Cc5C6lnDADvTqt5aypq4XaVWvgqJsdWTV1ia6E8tGxzbf/jRtRkKQkzEFrnN7xjc/q93/Gd1kcJFwyq0vA0eeX8GhnlJx1mPxktgeguNiKzCaiBmyLiixpwy/yClHdvrmv/mnR4PbkaG4tYBod6n4BpnaQQNqL3V0ie25rF4PJtpos+QQmQzCxzEU8nXm9f54pYVfVX5v9rkz0vmltX7GceYayvcMHipBCaoYDJNQqVAGr0jt+wfw93BFHsOb+EQBCB4Gw5MRNfiDeYRjrI6SXkPeb6S0R7c7fOGnk68hDI1j9Yp1i+VRpxbKRGwEeWHXhI6A7XeUenSdDvIZp/42nubdmQcXjeCLk6NRGflWPpwk5Evy74csN12hjE+cGfQpI9/oKnufly15+8BQL+PUGtaFa8rU2UfevdK32IpMeOeY5XbH6KQ4OXLAzW5211tZZaL0BTZp2TEdTskgtSDuyq3oNDAkWxH9BQYtWbAVqRgPu1nl5oXj9IG+q2UI1QG0JuKQ9hduFlyQ8NSCXVcQOQwpzW3CDAMSUl2Pe00/djgi6sdHu3i3ur9HEnrniwskl+VElUXPJYmA82U1UVF6NFhySS64y3QRdHNXNs7iQBTywbjSRSVW6YQB4bW8JY2ykyaJEjpXtXSumEYFjLvRFhU0cZDU4lqiO7ZlA= + irc: + - ircs://chat.freenode.net:7070#grangerhub + email: + on_success: change + on_failure: change +matrix: + include: + - os: linux + env: PLATFORM=linux + before_install: + - docker pull grangerhub/tremulous13:latest + - docker run -e PLATFORM -v $(pwd):/usr/src grangerhub/tremulous13:latest ./misc/docker-build.sh + script: + - true + - os: linux + env: PLATFORM=mingw32 + before_install: + - docker pull grangerhub/tremulous13:latest + - docker run -e PLATFORM -v $(pwd):/usr/src grangerhub/tremulous13:latest ./misc/docker-build.sh + script: + - true + - os: linux + env: PLATFORM=mingw32 ARCH=x86 + before_install: + - docker pull grangerhub/tremulous13:latest + - docker run -e ARCH -e PLATFORM -v $(pwd):/usr/src grangerhub/tremulous13:latest + ./misc/docker-build.sh + script: + - true + - os: osx + osx_image: xcode8 + compiler: clang + env: ARCH=x86_64 + before_install: + - rm -rf build + script: + - "./misc/travis-ci-build.sh" +deploy: + provider: releases + skip_cleanup: true + api_key: + secure: "jtNUkZL1TK3nD1LfWi5kypaL2WzUHxM/N72AcwKTmvieQ/3iwL8gRDFOhfWKFkNcyuCsEBw+c2KlpgfNGVNZYJgZrQ3Ozvnno5yN+V8Pb4ODEFU0Ps4EHSY7gsdF6bBdp3ooqsCsg8BkGfIggFsV+R9oKOyWWH1/N1jPWhf8ioWD+mMaAh5ZOsyQIECtSKAKMu9/hikVkdDuNsIAiaiJhYvP8rli5fYrZ4sVJih3YgeJj42i2iLeeWXmOmYNF7T5ywuBpaUjQJBEo83MilglTF0UOb471ADU2Gz3SMrnNCOdqDZLQaBL+QVrrgJUvXy5A92nxkY16mJaIvdDEOeIzWwgWVLoKyil6AFW5bR7lp2YW+/4I6zYEkGrpUaiZ+S1lgvm3CwVgwhg3rVuCi0qrI/7j/ImS9ORmz9DGbVgtg+y7mZnUIcEWX4jRDbbYWYIc/1fN+fGt73+41h0HS5of7d31yH6AyxB8/DlkuoKZIVHiErD0J3ZUkdVJOwhPFiPKViYR/07KEvafhkZkcffZh7arIesFB++4Kmglapb/awHJRh4lhfKd16IiCGjjfof8MDKSkmqAdXUsdCRcPu1Q0/cJaO3TRiTS6M0skrBUeIOOYsV0AdWM1Fy7dTySEEYlqZXnkiD98MG7CwobkWXmeVZHEzOJh2fDtv2w2ojoDI=" + file_glob: true + file: build/*.zip + on: + repo: GrangerHub/tremulous + tags: true diff --git a/.ycm_extra_conf.py b/.ycm_extra_conf.py new file mode 100644 index 0000000..0d255af --- /dev/null +++ b/.ycm_extra_conf.py @@ -0,0 +1,118 @@ +# This file is NOT licensed under the GPLv3, which is the license for the rest +# of YouCompleteMe. +# For more information, please refer to + +import os +import sys +import ycm_core + +def log(msg): + filename = "/Users/viroemer/extra.txt" + with open(filename, 'a') as f: + f.write('%s\n' % msg) + + +source_root = os.path.dirname( os.path.abspath( __file__ ) ) +build_root = os.path.join( source_root, 'build' ) + +# These are the compilation flags that will be used in case there's no +# compilation database set (by default, one is not set). +# CHANGE THIS LIST OF FLAGS. YES, THIS IS THE DROID YOU HAVE BEEN LOOKING FOR. +#flags = [ +# '-x', 'c++', +# '--std=c++14', +# +# '-Weverything', +# '-Wall', +# '-Wextra', +# '-Werror', +# '-pedantic', +# '-isystem', '/usr/include', +# '-isystem', '/usr/local/include', +# '-isystem', '/usr/local/opt/openssl/include', +# '-UNDEBUG' +#] + +if os.path.exists(os.path.join(build_root, 'compile_commands.json')): + print("Hello world") + database = ycm_core.CompilationDatabase(build_root) +else: + database = None + +SOURCE_EXTENSIONS = [ '.cpp', '.cc', '.h', '.hpp' ] + +def DirectoryOfThisScript(): + return os.path.dirname( os.path.abspath( __file__ ) ) + + +def MakeRelativePathsInFlagsAbsolute( flags, working_directory ): + if not working_directory: + return list( flags ) + new_flags = [] + make_next_absolute = False + path_flags = [ '-isystem', '-I', '-iquote', '--sysroot=' ] + for flag in flags: + new_flag = flag + + if make_next_absolute: + make_next_absolute = False + if not flag.startswith( '/' ): + new_flag = os.path.join( working_directory, flag ) + + for path_flag in path_flags: + if flag == path_flag: + make_next_absolute = True + break + + if flag.startswith( path_flag ): + path = flag[ len( path_flag ): ] + new_flag = path_flag + os.path.join( working_directory, path ) + break + + if new_flag: + new_flags.append( new_flag ) + return new_flags + + +def IsHeaderFile( filename ): + extension = os.path.splitext( filename )[ 1 ] + return extension in [ '.h' ] + + +def GetCompilationInfoForFile( filename ): + # The compilation_commands.json file generated by CMake does not have entries + # for header files. So we do our best by asking the db for flags for a + # corresponding source file, if any. If one exists, the flags for that file + # should be good enough. + if IsHeaderFile( filename ): + basename = os.path.splitext( filename )[ 0 ] + for extension in SOURCE_EXTENSIONS: + replacement_file = basename + extension + if os.path.exists( replacement_file ): + + compilation_info = database.GetCompilationInfoForFile( replacement_file ) + if compilation_info.compiler_flags_: + return compilation_info + return None + return database.GetCompilationInfoForFile( filename ) + +def FlagsForFile( filename, **kwargs ): + if database: + # Bear in mind that compilation_info.compiler_flags_ does NOT return a + # python list, but a "list-like" StringVec object + compilation_info = GetCompilationInfoForFile( filename ) + if not compilation_info: + return None + + final_flags = MakeRelativePathsInFlagsAbsolute( + compilation_info.compiler_flags_, + compilation_info.compiler_working_dir_ ) + + else: + relative_to = DirectoryOfThisScript() + final_flags = MakeRelativePathsInFlagsAbsolute( flags, relative_to ) + + return { + 'flags': final_flags, + 'do_cache': True + } diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..1890031 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,136 @@ + +# M""""""""M dP # +# Mmmm mmmM 88 # +# MMMM MMMM 88d888b. .d8888b. 88d8b.d8b. dP dP 88 .d8888b. dP dP .d8888b. # +# MMMM MMMM 88' `88 88ooood8 88'`88'`88 88 88 88 88' `88 88 88 Y8ooooo. # +# MMMM MMMM 88 88. ... 88 88 88 88. .88 88 88. .88 88. .88 88 # +# MMMM MMMM dP `88888P' dP dP dP `88888P' dP `88888P' `88888P' `88888P' # +# MMMMMMMMMM # + + +cmake_minimum_required(VERSION 3.5) +project(Tremulous C CXX) + +set(CMAKE_CXX_FLAGS -std=c++1y) +set(CMAKE_C_FLAGS -std=gnu99) + +if(${CMAKE_SYSTEM_NAME} STREQUAL "Linux") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC") + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fPIC") +endif() + +# XXX This one doesn't work yet +option(USE_RENDERER_DLOPEN "" ON) + +# These are not used at the moment +if (APPLE OR WIN32) + option(USE_INTERNAL_SDL2 "" ON) +else () + option(USE_INTERNAL_SDL2 "" OFF) +endif() + +option(USE_INTERNAL_JPEG "" ON) +option(USE_OPENAL "" ON) +option(USE_OPENAL_DLOPEN "" ON) +option(USE_VOIP "" OFF) +option(USE_MUMBLE "" OFF) +option(USE_CODEC_OPUS "" ON) +option(USE_RESTCLIENT "" ON) + +include(${CMAKE_SOURCE_DIR}/cmake/build_dir) +include(${CMAKE_SOURCE_DIR}/cmake/debug_cflags) + +# builtins +add_subdirectory(external/SDL2) +add_subdirectory(external/lua-5.3.3) +add_subdirectory(external/nettle-3.3) +add_subdirectory(external/zlib) +add_subdirectory(external/jpeg-8c) +add_subdirectory(external/restclient) + +# audio +add_subdirectory(external/opus-1.1.4) +add_subdirectory(external/opusfile-0.8) +add_subdirectory(external/libogg-1.3.2) +add_subdirectory(external/libvorbis-1.3.5) + +# engine +add_subdirectory(src/script) +add_subdirectory(src/renderercommon) +add_subdirectory(src/renderergl1) +add_subdirectory(src/renderergl2) + +# . . +# ___ | ` ___ , __ _/_ +# .' ` | | .' ` |' `. | +# | | | |----' | | | +# `._.' /\__ / `.___, / | \__/ +# + +add_subdirectory(src/client) + +# ____ ___ .___ _ __ ___ .___ +# ( .' ` / \ | / .' ` / \ +# `--. |----' | ' ` / |----' | ' +# \___.' `.___, / \/ `.___, / +# + +add_subdirectory(src/server) + +# ___ +# .' \ .___ ___ , __ ___. ___ .___ +# | / \ / ` |' `. .' ` .' ` / \ +# | _ | ' | | | | | | |----' | ' +# `.___| / `.__/| / | `---| `.___, / +# \___/ + +if(BUILD_GRANGER) + add_subdirectory(src/granger/src) +endif(BUILD_GRANGER) + +# _______ ___ ___ _______ __ __ +# | | | | | | .----.-----.--------.-----.|__| |.-----.----. +# | - _| | | | | __| _ | | _ || | || -__| _| +# |_______|\_____/|__|_|__| |____|_____|__|__|__| __||__|__||_____|__| +# |__| +# TODO: DO NOT build unless building a QVM + +add_subdirectory(src/tools) + +# +# , . ` +# | | | +# | | | +# `._/| / +# + +add_subdirectory(src/ui) + +# ___. ___ , _ , _ ___ +# .' ` / ` |' `|' `. .' ` +# | | | | | | | |----' +# `---| `.__/| / ' / `.___, +# \___/ +# + +add_subdirectory(src/game) + +# ___ ___. ___ , _ , _ ___ +# .' ` .' ` / ` |' `|' `. .' ` +# | | | | | | | | |----' +# `._.' `---| `.__/| / ' / `.___, +# \___/ +# + +add_subdirectory(src/cgame) + +# _____) ____ ___) +# / (, / / /) +# / ___ __ _ __ _ _ __ /---/ (/_ _ ______ +# / / ) / (_(_(_/ (_(_/__(/_/ (_) / (__(_(_/_) o (__(_) // (_ +# (____ / .-/ (_/ +# (_/ + +# Author: Victor Roemer wtfbbqhax, . +# Date: Sat Nov 5 06:49:08 2016 + diff --git a/ChangeLog b/ChangeLog new file mode 100644 index 0000000..9518bd1 --- /dev/null +++ b/ChangeLog @@ -0,0 +1,175 @@ +1.1.0 +----- + + Feature/balance changes + ----------------------- + * Quick fullscreen changes + * Fancy autocompletion + * Client now sleeps when inactive + * Persistent console history + * Increase boost time to 30 seconds from 20 seconds + * Lcannon now has a minimum charge value + * Flamer damage down to 20 from 31 + * Zap repeat rate down to 1500ms from 2000ms + * Knockback from pouncing now 3 times as strong + * Demo state now displayed from cgame + * AVI video capture + * cl_autoRecordDemo + * Master server, based on dpmaster + * Changed defaults for r_picmip and r_textureMode + * Chat sounds differ depending on team + * New collision type, for improved light flares + * New pain blend effect + * Reduced Dragoon pounce range to 64 from 96 + * Dragoon pounce now incurs 400ms wait before other weapons may be used + * Trapper cost down to 8 from 10 + * Hovel is now free, but only one can be built + * Teslagen damage up to 9 from 7 + * Non locational damage does not apply locational armour anymore; instead it + averages the armour regions together + * Added target_alien_win and target_human_win + * Added worldspawn keys to disable specific game elements + * 3D particles + * Brass ejections now done via particle system + * static_tranform particle move type + * thirdPersonOnly particle and trail system property + * Abstract attachment system + * Scriptable trails system + + Bug fixes/development issues + ---------------------------- + * Fix to a server memory leak + * Fix to a server 100% CPU bug + * Delete key on *nix fixed + * Fixed lcannon charge storage exploit + * Fixed psaw/cgun inappropriate effects bug + * Maps on create server menu now sorted by name + * Fixed death by poison MOD s/antitox/medkit/ + * Fixed Marauders momentarily disappearing when wall jumping + * Fixed a potential crash bug involving the use of generic1 + * Fixed being able to build multiple coincident repeaters if there is no reactor + * Fixed incorrect message when invoking "buy ammo" with an energy weapon and no + reactor present + * Fixed invoking "reload" during a weapon reload causing an unnecessary reload + * Fixed aliens having the wrong blood colour when shot with a las gun + * Fixed hovel causing invisible builders + +1.0.2 +----- + + Feature/balance changes + ----------------------- + * Extended STATS report to include the times when stages change + * Increased Tesla damage frequency + * Marginally increased Tesla damage + * Teslas now produce exaggerated knockback effect + * Hives now buildable on walls + * Boosters no longer restore Dragoon spitballs + * Dragoon spitballs now affected by gravity + * Dragoon pounce attack damage reduced to 100 from 160 + * Removed jump pad code (and associated media loading) + * Removed loading of some Q3 cruft + * Corpses timeout in 20 seconds instead of 60 + + Bug fixes/development issues + ---------------------------- + * Fixed a silly bug with using the reactor/repeater + * Spilled events attached to temporary entities are now reattached + to their original entities, fixing the missing flame bug + * Fixed "suicide god" bug + * Fixed bug where zap ignores armour + * Fixed missing particle systems when follow-spectating + * Fixed potential bug involving dodgy pointer arithmetic in + CG_LoadClientInfo + * Cleaned up logic in CG_AddPlayerWeapon + * MASK_SHOT traces no longer collide with corpses + * Improved robustness of spawn validation, fixing the bug on transit + * A crapload of whitespace fixes + +1.0.1 +----- + + Feature/balance changes + ----------------------- + * cg_debugParticles >= 1 now prints to the console when particle + systems are parsed and registered + * Reverted walk/run animation switching back to cmd.buttons instead + of basing it on speed + * Added option for changing whether or not the wallwalk control is a + toggle or not + * Weapon now drops momentarily when reloading + * The stage kill counters are now incremented for structure kills if + players did more then 50% of the total damage + * Removed the mp3 decoder from the source + * Marauder lightning now requires aim, does damage over time and + chains to other entities + * Implemented the Medkit -- a means for a human to restore health + and cure poison in the field + * "Disable Build Warnings" replaced with "Disable Warning + Dialogs" and improved + * Sped spectator move speed up + * Implemented "step down" physics for all characters; no more + jumping down stairs + * Increased frequency with which the Acid Tube deals damage + * Tyrant can no longer charge up forever and must pass a specific + minimum charge level + * Implemented command queueing for commands sent to clients in order + to prevent overflows even sv_floodProtect is off, but not by + dropping commands + * Added LOS check to creep slowing + * Overmind now only complains if there are 0 spawns + * Spawns can no longer be built when there is no Overmind/Reactor + * The spawn closest to the point of death is chosen preferably if + available + * Evolving no longer restores all health + * "give weapons" and "give ammo" cheats removed + * When selling the battery pack, max ammo is given + * Added stage information to the end of game stats + * Reduced Dragoon spitball damage from 120 to 110 + * Reduced Tyrant claw damage from 120 to 100 + * Reduced Tyrant charge damage from 160 to 110 + * Increased Barricade regeneration rate from 12 to 14 + * Increased Overmind health from 500 to 750 + * Decreased Overmind regeneration rate from 10 to 6 + * Doubled Blaster speed from 700 to 1400 + * Reduced Painsaw damage from 18 to 15 + * Reduced Painsaw range from 48.0 to 40.0 + * Reduced Grenade price from 300 to 200 + * Reduced Shotgun repeat rate from 1200 to 1000 + * Increased Shotgun damage from 6 to 7 + * Increased Mass driver damage from 35 to 38 + * Increased Chaingun damage from 5 to 6 + * Reduced Flamer repeat rate from 300 to 200 + * Extended Flamer range + * Increased ammo on all human weapons + * Reduced splashdamage on MG Turrets + + + Bug fixes/development issues + ---------------------------- + * Hacked around trap_LinkEntity to allow missiles to have a bounding + box displayed + * Fixed "Server command overflow" bug for clients that should time + out + * Fixed a bug where only live clients would have their scores logged + at the end of the game + * Reworked how weapon changes are performed, fixing bugs in the + process + * Fixed the issue where the Mac qvm JIT compiler would not compile + Tremulous + * Reimplemented how buildables play damage sounds to not use the + event system + * Reworked the ammo/clips packing system to remove the confusion of + concepts + * Disabled client side ET_MISSILE collision + * G_RadiusSelectiveDamage no longer applies locational damage + * Moved some speed adjustment code into prediction; should prevent + some prediction misses + * Wrapped all calls to trap_SendServerCommand in order to circumvent + the q3amsgboom.cfg exploit + * Fixed restoration of energy weapons bug + * Fixed a bug where locational damage could sometimes scale damage + to 0 + * Added G_ClosestEnt + * Moved build directory from tremulous to tremulous-dev + diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..d3e3bd4 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,5 @@ +FROM ubuntu:bionic +WORKDIR /usr/src +ENV DEBIAN_FRONTEND=noninteractive +RUN apt update -y +RUN apt install -y curl cmake libgl1-mesa-dev libsdl2-dev libcurl4-openssl-dev libopenal-dev libfreetype6-dev mingw-w64 g++-mingw-w64 g++-multilib git zip vim-nox rsync diff --git a/GNUmakefile b/GNUmakefile deleted file mode 100644 index ee68145..0000000 --- a/GNUmakefile +++ /dev/null @@ -1,1292 +0,0 @@ -# -# Tremulous Makefile -# -# GNU Make required -# - -COMPILE_PLATFORM=$(shell uname | sed -e 's/_.*//' | tr '[:upper:]' '[:lower:]' | sed -e 's/\//_/g') -COMPILE_ARCH=$(shell uname -m | sed -e 's/i.86/x86/' | sed -e 's/^arm.*/arm/') - -ifeq ($(COMPILE_PLATFORM),sunos) - # Solaris uname and GNU uname differ - COMPILE_ARCH=$(shell uname -p | sed -e 's/i.86/x86/') -endif - -ifndef BUILD_GAME_SO - BUILD_GAME_SO = 0 -endif -ifndef BUILD_GAME_QVM - BUILD_GAME_QVM = 1 -endif -ifndef BUILD_GAME_QVM_11 - BUILD_GAME_QVM_11= 1 -endif -ifndef BUILD_ONLY_GAME - BUILD_ONLY_GAME = 0 -endif -ifndef BUILD_ONLY_CGUI - BUILD_ONLY_CGUI = 0 -endif - -############################################################################# -# -# If you require a different configuration from the defaults below, create a -# new file named "Makefile.local" in the same directory as this file and define -# your parameters there. This allows you to change configuration without -# causing problems with keeping up to date with the repository. -# -############################################################################# --include GNUmakefile.local - -include $(SETTINGS_MAKEFILES) - -ifeq ($(COMPILE_PLATFORM),cygwin) - PLATFORM=mingw32 -endif - -ifndef PLATFORM -PLATFORM=$(COMPILE_PLATFORM) -endif -export PLATFORM - -ifeq ($(COMPILE_ARCH),i86pc) - COMPILE_ARCH=x86 -endif - -ifeq ($(COMPILE_ARCH),amd64) - COMPILE_ARCH=x86_64 -endif -ifeq ($(COMPILE_ARCH),x64) - COMPILE_ARCH=x86_64 -endif - -ifeq ($(COMPILE_ARCH),powerpc) - COMPILE_ARCH=ppc -endif -ifeq ($(COMPILE_ARCH),powerpc64) - COMPILE_ARCH=ppc64 -endif - -ifeq ($(COMPILE_ARCH),axp) - COMPILE_ARCH=alpha -endif - -ifndef ARCH -ARCH=$(COMPILE_ARCH) -endif -export ARCH - -ifneq ($(PLATFORM),$(COMPILE_PLATFORM)) - CROSS_COMPILING=1 -else - CROSS_COMPILING=0 - - ifneq ($(ARCH),$(COMPILE_ARCH)) - CROSS_COMPILING=1 - endif -endif -export CROSS_COMPILING - -ifndef VERSION -VERSION=aa -endif - -ifndef CLIENTBIN -CLIENTBIN=tremulous -endif - -ifndef BASEGAME -BASEGAME=slacker -endif - -ifndef BASEGAME_CFLAGS -BASEGAME_CFLAGS= -endif - -ifndef COPYDIR -COPYDIR="/usr/local/games/tremulous" -endif - -ifndef COPYBINDIR -COPYBINDIR=$(COPYDIR) -endif - -ifndef MOUNT_DIR -MOUNT_DIR=src -endif - -ifndef ASSETS_DIR -ASSETS_DIR=assets -endif - -ifndef BUILD_DIR -BUILD_DIR=bld -endif - -ifndef TEMPDIR -TEMPDIR=/tmp -endif - -ifndef DEBUG_CFLAGS -DEBUG_CFLAGS=-g -O0 -endif - -############################################################################# - -BD=$(BUILD_DIR) # /debug-$(PLATFORM)-$(ARCH) -BR=$(BUILD_DIR) # /release-$(PLATFORM)-$(ARCH) -CDIR=$(MOUNT_DIR)/client -SDIR=$(MOUNT_DIR)/server -CMDIR=$(MOUNT_DIR)/qcommon -GDIR=$(MOUNT_DIR)/game -CGDIR=$(MOUNT_DIR)/cgame -NDIR=$(MOUNT_DIR)/null -UIDIR=$(MOUNT_DIR)/ui -Q3ASMDIR=$(MOUNT_DIR)/tools/asm -LBURGDIR=$(MOUNT_DIR)/tools/lcc/lburg -Q3CPPDIR=$(MOUNT_DIR)/tools/lcc/cpp -Q3LCCETCDIR=$(MOUNT_DIR)/tools/lcc/etc -Q3LCCSRCDIR=$(MOUNT_DIR)/tools/lcc/src -TEMPDIR=/tmp - -# Add git version info -USE_GIT= -ifeq ($(wildcard .git),.git) - GIT_REV=$(shell git describe --tag) - ifneq ($(GIT_REV),) - VERSION:=$(GIT_REV) - USE_GIT=1 - endif -endif - -############################################################################# -# SETUP AND BUILD -- LINUX -############################################################################# - -## Defaults -LIB=lib - -INSTALL=install -MKDIR=mkdir - -ifneq (,$(findstring "$(PLATFORM)", "linux" "gnu_kfreebsd" "kfreebsd-gnu")) - - ifeq ($(ARCH),x86_64) - LIB=lib64 - else - ifeq ($(ARCH),ppc64) - LIB=lib64 - else - ifeq ($(ARCH),s390x) - LIB=lib64 - endif - endif - endif - - BASE_CFLAGS = -Wall -fno-strict-aliasing -Wimplicit -Wstrict-prototypes \ - -pipe -DUSE_ICON - - OPTIMIZEVM = -O3 -funroll-loops -fomit-frame-pointer - OPTIMIZE = $(OPTIMIZEVM) -ffast-math - - ifeq ($(ARCH),x86_64) - OPTIMIZEVM = -O3 -fomit-frame-pointer -funroll-loops \ - -falign-functions=2 -fstrength-reduce - OPTIMIZE = $(OPTIMIZEVM) -ffast-math - HAVE_VM_COMPILED = true - else - ifeq ($(ARCH),x86) - OPTIMIZEVM = -O3 -march=i586 -fomit-frame-pointer \ - -funroll-loops -falign-functions=2 -fstrength-reduce - OPTIMIZE = $(OPTIMIZEVM) -ffast-math - HAVE_VM_COMPILED=true - else - ifeq ($(ARCH),ppc) - BASE_CFLAGS += -maltivec - HAVE_VM_COMPILED=true - endif - ifeq ($(ARCH),ppc64) - BASE_CFLAGS += -maltivec - HAVE_VM_COMPILED=true - endif - ifeq ($(ARCH),sparc) - OPTIMIZE += -mtune=ultrasparc3 -mv8plus - OPTIMIZEVM += -mtune=ultrasparc3 -mv8plus - HAVE_VM_COMPILED=true - endif - ifeq ($(ARCH),alpha) - # According to http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=410555 - # -ffast-math will cause the client to die with SIGFPE on Alpha - OPTIMIZE = $(OPTIMIZEVM) - endif - endif - endif - - SHLIBEXT=so - SHLIBCFLAGS=-fPIC -fvisibility=hidden - SHLIBLDFLAGS=-shared $(LDFLAGS) - - THREAD_LIBS=-lpthread - LIBS=-ldl -lm - - ifeq ($(ARCH),x86) - # linux32 make ... - BASE_CFLAGS += -m32 - else - ifeq ($(ARCH),ppc64) - BASE_CFLAGS += -m64 - endif - endif -else # ifeq Linux - -############################################################################# -# SETUP AND BUILD -- MAC OS X -############################################################################# - -ifeq ($(PLATFORM),darwin) - HAVE_VM_COMPILED=true - LIBS = -framework Cocoa - OPTIMIZEVM= - - BASE_CFLAGS = -Wall -Wimplicit -Wstrict-prototypes -mmacosx-version-min=10.5 \ - -DMAC_OS_X_VERSION_MIN_REQUIRED=1050 - - ifeq ($(ARCH),ppc) - BASE_CFLAGS += -arch ppc -faltivec - OPTIMIZEVM += -O3 - endif - ifeq ($(ARCH),ppc64) - BASE_CFLAGS += -arch ppc64 -faltivec - endif - ifeq ($(ARCH),x86) - OPTIMIZEVM += -mfpmath=387+sse - # x86 vm will crash without -mstackrealign since MMX instructions will be - # used no matter what and they corrupt the frame pointer in VM calls - BASE_CFLAGS += -arch i386 -m32 -mstackrealign - endif - ifeq ($(ARCH),x86_64) - OPTIMIZEVM += -arch x86_64 -mfpmath=sse -msse2 - endif - - # When compiling on OSX for OSX, we're not cross compiling as far as the - # Makefile is concerned, as target architecture is specified as a compiler - # argument - ifeq ($(COMPILE_PLATFORM),darwin) - CROSS_COMPILING=0 - endif - - - ifeq ($(CROSS_COMPILING),1) - ifeq ($(ARCH),x86_64) - CC=x86_64-apple-darwin13-cc - RANLIB=x86_64-apple-darwin13-ranlib - else - ifeq ($(ARCH),x86) - CC=i386-apple-darwin13-cc - RANLIB=i386-apple-darwin13-ranlib - else - $(error Architecture $(ARCH) is not supported when cross compiling) - endif - endif - else - TOOLS_CFLAGS += -DMACOS_X - endif - - BASE_CFLAGS += -fno-strict-aliasing -DMACOS_X -fno-common -pipe - - BASE_CFLAGS += -D_THREAD_SAFE=1 - - OPTIMIZE = $(OPTIMIZEVM) -ffast-math - - SHLIBEXT=dylib - SHLIBCFLAGS=-fPIC -fno-common - SHLIBLDFLAGS=-dynamiclib $(LDFLAGS) -Wl,-U,_com_altivec - - NOTSHLIBCFLAGS=-mdynamic-no-pic - -else # ifeq darwin - - -############################################################################# -# SETUP AND BUILD -- MINGW32 -############################################################################# - -ifeq ($(PLATFORM),mingw32) - - ifeq ($(CROSS_COMPILING),1) - # If CC is already set to something generic, we probably want to use - # something more specific - ifneq ($(findstring $(strip $(CC)),cc gcc),) - CC= - endif - - # We need to figure out the correct gcc and windres - ifeq ($(ARCH),x86_64) - MINGW_PREFIXES=amd64-mingw32msvc x86_64-w64-mingw32 - endif - ifeq ($(ARCH),x86) - MINGW_PREFIXES=i586-mingw32msvc i686-w64-mingw32 - endif - - ifndef CC - CC=$(strip $(foreach MINGW_PREFIX, $(MINGW_PREFIXES), \ - $(call bin_path, $(MINGW_PREFIX)-gcc))) - endif - else - # Some MinGW installations define CC to cc, but don't actually provide cc, - # so check that CC points to a real binary and use gcc if it doesn't - ifeq ($(call bin_path, $(CC)),) - CC=gcc - endif - endif - - ifeq ($(CC),) - $(error Cannot find a suitable cross compiler for $(PLATFORM)) - endif - - BASE_CFLAGS = -Wall -fno-strict-aliasing -Wimplicit -Wstrict-prototypes \ - -DUSE_ICON - - # In the absence of wspiapi.h, require Windows XP or later - ifeq ($(shell test -e $(CMDIR)/wspiapi.h; echo $$?),1) - BASE_CFLAGS += -DWINVER=0x501 - endif - - ifeq ($(ARCH),x86_64) - OPTIMIZEVM = -O3 -fno-omit-frame-pointer \ - -funroll-loops -falign-functions=2 -fstrength-reduce - OPTIMIZE = $(OPTIMIZEVM) -ffast-math - HAVE_VM_COMPILED = true - endif - ifeq ($(ARCH),x86) - OPTIMIZEVM = -O3 -march=i586 -fno-omit-frame-pointer \ - -funroll-loops -falign-functions=2 -fstrength-reduce - OPTIMIZE = $(OPTIMIZEVM) -ffast-math - HAVE_VM_COMPILED = true - endif - - SHLIBEXT=dll - SHLIBCFLAGS= - SHLIBLDFLAGS=-shared $(LDFLAGS) - - ifeq ($(CROSS_COMPILING),0) - TOOLS_BINEXT=.exe - endif - - ifeq ($(COMPILE_PLATFORM),cygwin) - TOOLS_BINEXT=.exe - TOOLS_CC=$(CC) - endif - - LIBS= -lws2_32 -lwinmm -lpsapi - - ifeq ($(ARCH),x86) - # build 32bit - BASE_CFLAGS += -m32 - else - BASE_CFLAGS += -m64 - endif - -else # ifeq mingw32 - -############################################################################# -# SETUP AND BUILD -- FREEBSD -############################################################################# - -ifeq ($(PLATFORM),freebsd) - - # flags - BASE_CFLAGS = -Wall -fno-strict-aliasing -DUSE_ICON - HAVE_VM_COMPILED = true - - OPTIMIZEVM = -O3 -funroll-loops -fomit-frame-pointer - OPTIMIZE = $(OPTIMIZEVM) -ffast-math - - SHLIBEXT=so - SHLIBCFLAGS=-fPIC - SHLIBLDFLAGS=-shared $(LDFLAGS) - - # don't need -ldl (FreeBSD) - LIBS=-lm - - # cross-compiling tweaks - ifeq ($(ARCH),x86) - ifeq ($(CROSS_COMPILING),1) - BASE_CFLAGS += -m32 - endif - endif - ifeq ($(ARCH),x86_64) - ifeq ($(CROSS_COMPILING),1) - BASE_CFLAGS += -m64 - endif - endif -else # ifeq freebsd - -############################################################################# -# SETUP AND BUILD -- OPENBSD -############################################################################# - -ifeq ($(PLATFORM),openbsd) - - BASE_CFLAGS = -Wall -fno-strict-aliasing -Wimplicit -Wstrict-prototypes \ - -pipe -DUSE_ICON -DMAP_ANONYMOUS=MAP_ANON - - OPTIMIZEVM = -O3 -funroll-loops -fomit-frame-pointer - OPTIMIZE = $(OPTIMIZEVM) -ffast-math - - ifeq ($(ARCH),x86_64) - OPTIMIZEVM = -O3 -fomit-frame-pointer -funroll-loops \ - -falign-functions=2 -fstrength-reduce - OPTIMIZE = $(OPTIMIZEVM) -ffast-math - HAVE_VM_COMPILED = true - else - ifeq ($(ARCH),x86) - OPTIMIZEVM = -O3 -march=i586 -fomit-frame-pointer \ - -funroll-loops -falign-functions=2 -fstrength-reduce - OPTIMIZE = $(OPTIMIZEVM) -ffast-math - HAVE_VM_COMPILED=true - else - ifeq ($(ARCH),ppc) - BASE_CFLAGS += -maltivec - HAVE_VM_COMPILED=true - endif - ifeq ($(ARCH),ppc64) - BASE_CFLAGS += -maltivec - HAVE_VM_COMPILED=true - endif - ifeq ($(ARCH),sparc64) - OPTIMIZE += -mtune=ultrasparc3 -mv8plus - OPTIMIZEVM += -mtune=ultrasparc3 -mv8plus - HAVE_VM_COMPILED=true - endif - ifeq ($(ARCH),alpha) - # According to http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=410555 - # -ffast-math will cause the client to die with SIGFPE on Alpha - OPTIMIZE = $(OPTIMIZEVM) - endif - endif - endif - - SHLIBEXT=so - SHLIBCFLAGS=-fPIC - SHLIBLDFLAGS=-shared $(LDFLAGS) - - THREAD_LIBS=-lpthread - LIBS=-lm -else # ifeq openbsd - -############################################################################# -# SETUP AND BUILD -- NETBSD -############################################################################# - -ifeq ($(PLATFORM),netbsd) - - LIBS=-lm - SHLIBEXT=so - SHLIBCFLAGS=-fPIC - SHLIBLDFLAGS=-shared $(LDFLAGS) - THREAD_LIBS=-lpthread - - BASE_CFLAGS = -Wall -fno-strict-aliasing -Wimplicit -Wstrict-prototypes - - ifeq ($(ARCH),x86) - HAVE_VM_COMPILED=true - endif -else # ifeq netbsd - -############################################################################# -# SETUP AND BUILD -- IRIX -############################################################################# - -ifeq ($(PLATFORM),irix64) - - ARCH=mips - - CC = c99 - MKDIR = mkdir -p - - BASE_CFLAGS=-Dstricmp=strcasecmp -Xcpluscomm -woff 1185 \ - -I. -I$(ROOT)/usr/include - OPTIMIZE = -O3 - - SHLIBEXT=so - SHLIBCFLAGS= - SHLIBLDFLAGS=-shared - - LIBS=-ldl -lm -lgen -else # ifeq IRIX - -############################################################################# -# SETUP AND BUILD -- SunOS -############################################################################# - -ifeq ($(PLATFORM),sunos) - - CC=gcc - INSTALL=ginstall - MKDIR=gmkdir - COPYDIR="/usr/local/share/games/tremulous" - - ifneq ($(ARCH),x86) - ifneq ($(ARCH),sparc) - $(error arch $(ARCH) is currently not supported) - endif - endif - - BASE_CFLAGS = -Wall -fno-strict-aliasing -Wimplicit -Wstrict-prototypes \ - -pipe -DUSE_ICON - - OPTIMIZEVM = -O3 -funroll-loops - - ifeq ($(ARCH),sparc) - OPTIMIZEVM += -O3 \ - -fstrength-reduce -falign-functions=2 \ - -mtune=ultrasparc3 -mv8plus -mno-faster-structs - HAVE_VM_COMPILED=true - else - ifeq ($(ARCH),x86) - OPTIMIZEVM += -march=i586 -fomit-frame-pointer \ - -falign-functions=2 -fstrength-reduce - HAVE_VM_COMPILED=true - BASE_CFLAGS += -m32 - endif - endif - - OPTIMIZE = $(OPTIMIZEVM) -ffast-math - - SHLIBEXT=so - SHLIBCFLAGS=-fPIC - SHLIBLDFLAGS=-shared $(LDFLAGS) - - THREAD_LIBS=-lpthread - LIBS=-lsocket -lnsl -ldl -lm -else # ifeq sunos - -############################################################################# -# SETUP AND BUILD -- GENERIC -############################################################################# - BASE_CFLAGS= - OPTIMIZE = -O3 - - SHLIBEXT=so - SHLIBCFLAGS=-fPIC - SHLIBLDFLAGS=-shared - -endif #Linux -endif #darwin -endif #mingw32 -endif #FreeBSD -endif #OpenBSD -endif #NetBSD -endif #IRIX -endif #SunOS - -ifndef CC - CC=gcc -endif - -ifndef RANLIB - RANLIB=ranlib -endif - -ifneq ($(HAVE_VM_COMPILED),true) - BASE_CFLAGS += -DNO_VM_COMPILED - BUILD_GAME_QVM=0 -endif - -TARGETS = - -ifndef FULLBINEXT - FULLBINEXT=$(BINEXT) -endif - -ifndef SHLIBNAME - SHLIBNAME=.$(SHLIBEXT) -endif - -ifneq ($(BUILD_GAME_SO),0) - ifeq ($(BUILD_ONLY_GAME),1) - TARGETS += \ - $(B)/out/$(BASEGAME)/game$(SHLIBNAME) - else - ifeq ($(BUILD_ONLY_CGUI),1) - TARGETS += \ - $(B)/out/$(BASEGAME)/cgame$(SHLIBNAME) \ - $(B)/out/$(BASEGAME)/ui$(SHLIBNAME) - else - TARGETS += \ - $(B)/out/$(BASEGAME)/cgame$(SHLIBNAME) \ - $(B)/out/$(BASEGAME)/game$(SHLIBNAME) \ - $(B)/out/$(BASEGAME)/ui$(SHLIBNAME) - endif - endif -endif - -ifneq ($(BUILD_GAME_QVM),0) - ifeq ($(BUILD_ONLY_GAME),1) - TARGETS += \ - $(B)/out/$(BASEGAME)/vm/game.qvm - else - ifeq ($(BUILD_ONLY_CGUI),1) - TARGETS += \ - $(B)/out/$(BASEGAME)/vm/cgame.qvm \ - $(B)/out/$(BASEGAME)/vm/ui.qvm \ - $(B)/out/$(BASEGAME)/vms-gpp1-$(VERSION).pk3 - else - TARGETS += \ - $(B)/out/$(BASEGAME)/vm/cgame.qvm \ - $(B)/out/$(BASEGAME)/vm/game.qvm \ - $(B)/out/$(BASEGAME)/vm/ui.qvm \ - $(B)/out/$(BASEGAME)/vms-gpp1-$(VERSION).pk3 - endif - endif -endif - -ifneq ($(BUILD_GAME_QVM_11),0) - ifneq ($(BUILD_ONLY_GAME),1) - TARGETS += \ - $(B)/out/$(BASEGAME)_11/vm/cgame.qvm \ - $(B)/out/$(BASEGAME)_11/vm/ui.qvm \ - $(B)/out/$(BASEGAME)_11/vms-1.1.0-$(VERSION).pk3 - endif -endif - -ifeq ("$(CC)", $(findstring "$(CC)", "clang" "clang++")) - BASE_CFLAGS += -Qunused-arguments -endif - -ifdef DEFAULT_BASEDIR - BASE_CFLAGS += -DDEFAULT_BASEDIR=\\\"$(DEFAULT_BASEDIR)\\\" -endif - -ifeq ($(GENERATE_DEPENDENCIES),1) - DEPEND_CFLAGS = -MMD -else - DEPEND_CFLAGS = -endif - -ifeq ($(NO_STRIP),1) - STRIP_FLAG = -else - STRIP_FLAG = -s -endif - -BASE_CFLAGS += -DPRODUCT_VERSION=\\\"$(VERSION)\\\" - -ifeq ($(V),1) -echo_cmd=@: -Q= -else -echo_cmd=@echo -Q=@ -endif - -ifeq ($(GENERATE_DEPENDENCIES),1) - DO_QVM_DEP=cat $(@:%.o=%.d) | sed -e 's/\.o/\.asm/g' >> $(@:%.o=%.d) -endif - -define DO_SHLIB_CC -$(echo_cmd) "SHLIB_CC $<" -$(Q)$(CC) $(BASEGAME_CFLAGS) $(SHLIBCFLAGS) $(CFLAGS) $(OPTIMIZEVM) -o $@ -c $< -$(Q)$(DO_QVM_DEP) -endef - -define DO_GAME_CC -$(echo_cmd) "GAME_CC $<" -$(Q)$(CC) $(BASEGAME_CFLAGS) -DGAME $(SHLIBCFLAGS) $(CFLAGS) $(OPTIMIZEVM) -o $@ -c $< -$(Q)$(DO_QVM_DEP) -endef - -define DO_CGAME_CC -$(echo_cmd) "CGAME_CC $<" -$(Q)$(CC) $(BASEGAME_CFLAGS) -DCGAME $(SHLIBCFLAGS) $(CFLAGS) $(OPTIMIZEVM) -o $@ -c $< -$(Q)$(DO_QVM_DEP) -endef - -define DO_UI_CC -$(echo_cmd) "UI_CC $<" -$(Q)$(CC) $(BASEGAME_CFLAGS) -DUI $(SHLIBCFLAGS) $(CFLAGS) $(OPTIMIZEVM) -o $@ -c $< -$(Q)$(DO_QVM_DEP) -endef - -define DO_AS -$(echo_cmd) "AS $<" -$(Q)$(CC) $(CFLAGS) $(OPTIMIZE) -x assembler-with-cpp -o $@ -c $< -endef - - -############################################################################# -# MAIN TARGETS -############################################################################# - -default: release -all: debug release - -debug: - @$(MAKE) targets B=$(BD) CFLAGS="$(CFLAGS) $(BASE_CFLAGS) $(DEPEND_CFLAGS)" \ - OPTIMIZE="$(DEBUG_CFLAGS)" OPTIMIZEVM="$(DEBUG_CFLAGS)" V=$(V) - -release: - @$(MAKE) targets B=$(BR) CFLAGS="$(CFLAGS) $(BASE_CFLAGS) $(DEPEND_CFLAGS)" \ - OPTIMIZE="-DNDEBUG $(OPTIMIZE)" OPTIMIZEVM="-DNDEBUG $(OPTIMIZEVM)" V=$(V) - -ifneq ($(call bin_path, tput),) - TERM_COLUMNS=$(shell echo $$((`tput cols`-4))) -else - TERM_COLUMNS=76 -endif - -NAKED_TARGETS=$(shell echo $(TARGETS) | sed -e "s!$(B)/!!g") - -print_list=@for i in $(1); \ - do \ - echo " $$i"; \ - done - -ifneq ($(call bin_path, fmt),) - print_wrapped=@echo $(1) | fmt -w $(TERM_COLUMNS) | sed -e "s/^\(.*\)$$/ \1/" -else - print_wrapped=$(print_list) -endif - -# Create the build directories, check libraries and print out -# an informational message, then start building -targets: makedirs - @echo "" - @echo "Building in $(B):" - @echo " PLATFORM: $(PLATFORM)" - @echo " ARCH: $(ARCH)" - @echo " VERSION: $(VERSION)" - @echo " COMPILE_PLATFORM: $(COMPILE_PLATFORM)" - @echo " COMPILE_ARCH: $(COMPILE_ARCH)" - @echo " CC: $(CC)" - @echo "" - @echo " CFLAGS:" - $(call print_wrapped, $(CFLAGS) $(OPTIMIZE)) - @echo "" - @echo " LDFLAGS:" - $(call print_wrapped, $(LDFLAGS)) - @echo "" - @echo " LIBS:" - $(call print_wrapped, $(LIBS)) - @echo "" - @echo " Output:" - $(call print_list, $(NAKED_TARGETS)) - @echo "" -ifneq ($(TARGETS),) - ifndef DEBUG_MAKEFILE - @$(MAKE) $(TARGETS) V=$(V) - endif -endif - -makedirs: - @if [ ! -d $(BUILD_DIR) ];then $(MKDIR) $(BUILD_DIR);fi - @if [ ! -d $(B) ];then $(MKDIR) $(B);fi - @if [ ! -d $(B)/cgame ];then $(MKDIR) $(B)/cgame;fi - @if [ ! -d $(B)/game ];then $(MKDIR) $(B)/game;fi - @if [ ! -d $(B)/ui ];then $(MKDIR) $(B)/ui;fi - @if [ ! -d $(B)/qcommon ];then $(MKDIR) $(B)/qcommon;fi - @if [ ! -d $(B)/11 ];then $(MKDIR) $(B)/11;fi - @if [ ! -d $(B)/11/cgame ];then $(MKDIR) $(B)/11/cgame;fi - @if [ ! -d $(B)/11/ui ];then $(MKDIR) $(B)/11/ui;fi - @if [ ! -d $(B)/out ];then $(MKDIR) $(B)/out;fi - @if [ ! -d $(B)/out/$(BASEGAME) ];then $(MKDIR) $(B)/out/$(BASEGAME);fi - @if [ ! -d $(B)/out/$(BASEGAME)/vm ];then $(MKDIR) $(B)/out/$(BASEGAME)/vm;fi - @if [ ! -d $(B)/out/$(BASEGAME)_11 ];then $(MKDIR) $(B)/out/$(BASEGAME)_11;fi - @if [ ! -d $(B)/out/$(BASEGAME)_11/vm ];then $(MKDIR) $(B)/out/$(BASEGAME)_11/vm;fi - @if [ ! -d $(B)/tools ];then $(MKDIR) $(B)/tools;fi - @if [ ! -d $(B)/tools/asm ];then $(MKDIR) $(B)/tools/asm;fi - @if [ ! -d $(B)/tools/etc ];then $(MKDIR) $(B)/tools/etc;fi - @if [ ! -d $(B)/tools/rcc ];then $(MKDIR) $(B)/tools/rcc;fi - @if [ ! -d $(B)/tools/cpp ];then $(MKDIR) $(B)/tools/cpp;fi - @if [ ! -d $(B)/tools/lburg ];then $(MKDIR) $(B)/tools/lburg;fi - -############################################################################# -# QVM BUILD TOOLS -############################################################################# - -ifndef TOOLS_CC - # A compiler which probably produces native binaries - TOOLS_CC=$(CC) -endif - -TOOLS_OPTIMIZE = -g -Wall -fno-strict-aliasing -TOOLS_CFLAGS += $(TOOLS_OPTIMIZE) \ - -DTEMPDIR=\"$(TEMPDIR)\" -DSYSTEM=\"\" \ - -I$(Q3LCCSRCDIR) \ - -I$(LBURGDIR) -TOOLS_LIBS = -TOOLS_LDFLAGS = - -ifeq ($(GENERATE_DEPENDENCIES),1) - TOOLS_CFLAGS += -MMD -endif - -define DO_TOOLS_CC -$(echo_cmd) "TOOLS_CC $<" -$(Q)$(TOOLS_CC) $(TOOLS_CFLAGS) -o $@ -c $< -endef - -define DO_TOOLS_CC_DAGCHECK -$(echo_cmd) "TOOLS_CC_DAGCHECK $<" -$(Q)$(TOOLS_CC) $(TOOLS_CFLAGS) -Wno-unused -o $@ -c $< -endef - -LBURG = $(B)/tools/lburg/lburg$(TOOLS_BINEXT) -DAGCHECK_C = $(B)/tools/rcc/dagcheck.c -Q3RCC = $(B)/tools/q3rcc$(TOOLS_BINEXT) -Q3CPP = $(B)/tools/q3cpp$(TOOLS_BINEXT) -Q3LCC = $(B)/tools/q3lcc$(TOOLS_BINEXT) -Q3ASM = $(B)/tools/q3asm$(TOOLS_BINEXT) - -LBURGOBJ= \ - $(B)/tools/lburg/lburg.o \ - $(B)/tools/lburg/gram.o - -$(B)/tools/lburg/%.o: $(LBURGDIR)/%.c - $(DO_TOOLS_CC) - -$(LBURG): $(LBURGOBJ) - $(echo_cmd) "LD $@" - $(Q)$(TOOLS_CC) $(TOOLS_CFLAGS) $(TOOLS_LDFLAGS) -o $@ $^ $(TOOLS_LIBS) - -Q3RCCOBJ = \ - $(B)/tools/rcc/alloc.o \ - $(B)/tools/rcc/bind.o \ - $(B)/tools/rcc/bytecode.o \ - $(B)/tools/rcc/dag.o \ - $(B)/tools/rcc/dagcheck.o \ - $(B)/tools/rcc/decl.o \ - $(B)/tools/rcc/enode.o \ - $(B)/tools/rcc/error.o \ - $(B)/tools/rcc/event.o \ - $(B)/tools/rcc/expr.o \ - $(B)/tools/rcc/gen.o \ - $(B)/tools/rcc/init.o \ - $(B)/tools/rcc/inits.o \ - $(B)/tools/rcc/input.o \ - $(B)/tools/rcc/lex.o \ - $(B)/tools/rcc/list.o \ - $(B)/tools/rcc/main.o \ - $(B)/tools/rcc/null.o \ - $(B)/tools/rcc/output.o \ - $(B)/tools/rcc/prof.o \ - $(B)/tools/rcc/profio.o \ - $(B)/tools/rcc/simp.o \ - $(B)/tools/rcc/stmt.o \ - $(B)/tools/rcc/string.o \ - $(B)/tools/rcc/sym.o \ - $(B)/tools/rcc/symbolic.o \ - $(B)/tools/rcc/trace.o \ - $(B)/tools/rcc/tree.o \ - $(B)/tools/rcc/types.o - -$(DAGCHECK_C): $(LBURG) $(Q3LCCSRCDIR)/dagcheck.md - $(echo_cmd) "LBURG $(Q3LCCSRCDIR)/dagcheck.md" - $(Q)$(LBURG) $(Q3LCCSRCDIR)/dagcheck.md $@ - -$(B)/tools/rcc/dagcheck.o: $(DAGCHECK_C) - $(DO_TOOLS_CC_DAGCHECK) - -$(B)/tools/rcc/%.o: $(Q3LCCSRCDIR)/%.c - $(DO_TOOLS_CC) - -$(Q3RCC): $(Q3RCCOBJ) - $(echo_cmd) "LD $@" - $(Q)$(TOOLS_CC) $(TOOLS_CFLAGS) $(TOOLS_LDFLAGS) -o $@ $^ $(TOOLS_LIBS) - -Q3CPPOBJ = \ - $(B)/tools/cpp/cpp.o \ - $(B)/tools/cpp/lex.o \ - $(B)/tools/cpp/nlist.o \ - $(B)/tools/cpp/tokens.o \ - $(B)/tools/cpp/macro.o \ - $(B)/tools/cpp/eval.o \ - $(B)/tools/cpp/include.o \ - $(B)/tools/cpp/hideset.o \ - $(B)/tools/cpp/getopt.o \ - $(B)/tools/cpp/unix.o - -$(B)/tools/cpp/%.o: $(Q3CPPDIR)/%.c - $(DO_TOOLS_CC) - -$(Q3CPP): $(Q3CPPOBJ) - $(echo_cmd) "LD $@" - $(Q)$(TOOLS_CC) $(TOOLS_CFLAGS) $(TOOLS_LDFLAGS) -o $@ $^ $(TOOLS_LIBS) - -Q3LCCOBJ = \ - $(B)/tools/etc/lcc.o \ - $(B)/tools/etc/bytecode.o - -$(B)/tools/etc/%.o: $(Q3LCCETCDIR)/%.c - $(DO_TOOLS_CC) - -$(Q3LCC): $(Q3LCCOBJ) $(Q3RCC) $(Q3CPP) - $(echo_cmd) "LD $@" - $(Q)$(TOOLS_CC) $(TOOLS_CFLAGS) $(TOOLS_LDFLAGS) -o $@ $(Q3LCCOBJ) $(TOOLS_LIBS) - -define DO_Q3LCC -$(echo_cmd) "Q3LCC $<" -$(Q)$(Q3LCC) $(BASEGAME_CFLAGS) -o $@ $< -endef - -define DO_CGAME_Q3LCC -$(echo_cmd) "CGAME_Q3LCC $<" -$(Q)$(Q3LCC) $(BASEGAME_CFLAGS) -DCGAME -o $@ $< -endef - -define DO_CGAME_Q3LCC_11 -$(echo_cmd) "CGAME_Q3LCC_11 $<" -$(Q)$(Q3LCC) $(BASEGAME_CFLAGS) -DCGAME -DMODULE_INTERFACE_11 -o $@ $< -endef - -define DO_GAME_Q3LCC -$(echo_cmd) "GAME_Q3LCC $<" -$(Q)$(Q3LCC) $(BASEGAME_CFLAGS) -DGAME -o $@ $< -endef - -define DO_UI_Q3LCC -$(echo_cmd) "UI_Q3LCC $<" -$(Q)$(Q3LCC) $(BASEGAME_CFLAGS) -DUI -o $@ $< -endef - -define DO_UI_Q3LCC_11 -$(echo_cmd) "UI_Q3LCC_11 $<" -$(Q)$(Q3LCC) $(BASEGAME_CFLAGS) -DUI -DMODULE_INTERFACE_11 -o $@ $< -endef - - -Q3ASMOBJ = \ - $(B)/tools/asm/q3asm.o \ - $(B)/tools/asm/cmdlib.o - -$(B)/tools/asm/%.o: $(Q3ASMDIR)/%.c - $(DO_TOOLS_CC) - -$(Q3ASM): $(Q3ASMOBJ) - $(echo_cmd) "LD $@" - $(Q)$(TOOLS_CC) $(TOOLS_CFLAGS) $(TOOLS_LDFLAGS) -o $@ $^ $(TOOLS_LIBS) - - -############################################################################# -## TREMULOUS CGAME -############################################################################# - -CGOBJ_ = \ - $(B)/cgame/cg_main.o \ - $(B)/cgame/bg_misc.o \ - $(B)/cgame/bg_pmove.o \ - $(B)/cgame/bg_slidemove.o \ - $(B)/cgame/cg_consolecmds.o \ - $(B)/cgame/cg_buildable.o \ - $(B)/cgame/cg_animation.o \ - $(B)/cgame/cg_animmapobj.o \ - $(B)/cgame/cg_draw.o \ - $(B)/cgame/cg_drawtools.o \ - $(B)/cgame/cg_ents.o \ - $(B)/cgame/cg_event.o \ - $(B)/cgame/cg_marks.o \ - $(B)/cgame/cg_players.o \ - $(B)/cgame/cg_playerstate.o \ - $(B)/cgame/cg_predict.o \ - $(B)/cgame/cg_servercmds.o \ - $(B)/cgame/cg_snapshot.o \ - $(B)/cgame/cg_view.o \ - $(B)/cgame/cg_weapons.o \ - $(B)/cgame/cg_mem.o \ - $(B)/cgame/cg_scanner.o \ - $(B)/cgame/cg_attachment.o \ - $(B)/cgame/cg_trails.o \ - $(B)/cgame/cg_particles.o \ - $(B)/cgame/cg_ptr.o \ - $(B)/cgame/cg_tutorial.o \ - $(B)/cgame/ui_shared.o \ - \ - $(B)/qcommon/q_math.o \ - $(B)/qcommon/q_shared.o - -CGOBJ11_ = \ - $(B)/11/cgame/cg_main.o \ - $(B)/cgame/bg_misc.o \ - $(B)/cgame/bg_pmove.o \ - $(B)/cgame/bg_slidemove.o \ - $(B)/cgame/cg_consolecmds.o \ - $(B)/cgame/cg_buildable.o \ - $(B)/cgame/cg_animation.o \ - $(B)/cgame/cg_animmapobj.o \ - $(B)/cgame/cg_draw.o \ - $(B)/cgame/cg_drawtools.o \ - $(B)/cgame/cg_ents.o \ - $(B)/cgame/cg_event.o \ - $(B)/cgame/cg_marks.o \ - $(B)/cgame/cg_players.o \ - $(B)/cgame/cg_playerstate.o \ - $(B)/cgame/cg_predict.o \ - $(B)/11/cgame/cg_servercmds.o \ - $(B)/11/cgame/cg_snapshot.o \ - $(B)/cgame/cg_view.o \ - $(B)/cgame/cg_weapons.o \ - $(B)/cgame/cg_mem.o \ - $(B)/cgame/cg_scanner.o \ - $(B)/cgame/cg_attachment.o \ - $(B)/cgame/cg_trails.o \ - $(B)/cgame/cg_particles.o \ - $(B)/cgame/cg_ptr.o \ - $(B)/cgame/cg_tutorial.o \ - $(B)/cgame/ui_shared.o \ - \ - $(B)/qcommon/q_math.o \ - $(B)/qcommon/q_shared.o - -CGOBJ = $(CGOBJ_) $(B)/cgame/cg_syscalls.o -CGVMOBJ = $(CGOBJ_:%.o=%.asm) $(B)/cgame/bg_lib.asm -CGVMOBJ11 = $(CGOBJ11_:%.o=%.asm) $(B)/cgame/bg_lib.asm - -$(B)/out/$(BASEGAME)/cgame$(SHLIBNAME): $(CGOBJ) - $(echo_cmd) "LD $@" - $(Q)$(CC) $(CFLAGS) $(SHLIBLDFLAGS) -o $@ $(CGOBJ) - -$(B)/out/$(BASEGAME)/vm/cgame.qvm: $(CGVMOBJ) $(CGDIR)/cg_syscalls.asm $(Q3ASM) - $(echo_cmd) "Q3ASM $@" - $(Q)$(Q3ASM) -o $@ $(CGVMOBJ) $(CGDIR)/cg_syscalls.asm - -$(B)/out/$(BASEGAME)_11/vm/cgame.qvm: $(CGVMOBJ11) $(CGDIR)/cg_syscalls_11.asm $(Q3ASM) - $(echo_cmd) "Q3ASM $@" - $(Q)$(Q3ASM) -o $@ $(CGVMOBJ11) $(CGDIR)/cg_syscalls_11.asm - - - -############################################################################# -## TREMULOUS GAME -############################################################################# - -GOBJ_ = \ - $(B)/game/g_main.o \ - $(B)/game/bg_misc.o \ - $(B)/game/bg_pmove.o \ - $(B)/game/bg_slidemove.o \ - $(B)/game/g_mem.o \ - $(B)/game/g_active.o \ - $(B)/game/g_client.o \ - $(B)/game/g_cmds.o \ - $(B)/game/g_combat.o \ - $(B)/game/g_physics.o \ - $(B)/game/g_buildable.o \ - $(B)/game/g_misc.o \ - $(B)/game/g_missile.o \ - $(B)/game/g_mover.o \ - $(B)/game/g_session.o \ - $(B)/game/g_spawn.o \ - $(B)/game/g_svcmds.o \ - $(B)/game/g_target.o \ - $(B)/game/g_team.o \ - $(B)/game/g_trigger.o \ - $(B)/game/g_utils.o \ - $(B)/game/g_maprotation.o \ - $(B)/game/g_ptr.o \ - $(B)/game/g_weapon.o \ - $(B)/game/g_admin.o \ - \ - $(B)/qcommon/q_math.o \ - $(B)/qcommon/q_shared.o - -GOBJ = $(GOBJ_) $(B)/game/g_syscalls.o -GVMOBJ = $(GOBJ_:%.o=%.asm) $(B)/game/bg_lib.asm - -$(B)/out/$(BASEGAME)/game$(SHLIBNAME): $(GOBJ) - $(echo_cmd) "LD $@" - $(Q)$(CC) $(CFLAGS) $(SHLIBLDFLAGS) -o $@ $(GOBJ) - -$(B)/out/$(BASEGAME)/vm/game.qvm: $(GVMOBJ) $(GDIR)/g_syscalls.asm $(Q3ASM) - $(echo_cmd) "Q3ASM $@" - $(Q)$(Q3ASM) -o $@ $(GVMOBJ) $(GDIR)/g_syscalls.asm - - - -############################################################################# -## TREMULOUS UI -############################################################################# - -UIOBJ_ = \ - $(B)/ui/ui_main.o \ - $(B)/ui/ui_atoms.o \ - $(B)/ui/ui_players.o \ - $(B)/ui/ui_shared.o \ - $(B)/ui/ui_gameinfo.o \ - \ - $(B)/ui/bg_misc.o \ - $(B)/qcommon/q_math.o \ - $(B)/qcommon/q_shared.o - -UIOBJ11_ = \ - $(B)/11/ui/ui_main.o \ - $(B)/ui/ui_atoms.o \ - $(B)/ui/ui_players.o \ - $(B)/ui/ui_shared.o \ - $(B)/ui/ui_gameinfo.o \ - \ - $(B)/ui/bg_misc.o \ - $(B)/qcommon/q_math.o \ - $(B)/qcommon/q_shared.o - -UIOBJ = $(UIOBJ_) $(B)/ui/ui_syscalls.o -UIVMOBJ = $(UIOBJ_:%.o=%.asm) $(B)/ui/bg_lib.asm -UIVMOBJ11 = $(UIOBJ11_:%.o=%.asm) $(B)/ui/bg_lib.asm - -$(B)/out/$(BASEGAME)/ui$(SHLIBNAME): $(UIOBJ) - $(echo_cmd) "LD $@" - $(Q)$(CC) $(CFLAGS) $(SHLIBLDFLAGS) -o $@ $(UIOBJ) - -$(B)/out/$(BASEGAME)/vm/ui.qvm: $(UIVMOBJ) $(UIDIR)/ui_syscalls.asm $(Q3ASM) - $(echo_cmd) "Q3ASM $@" - $(Q)$(Q3ASM) -o $@ $(UIVMOBJ) $(UIDIR)/ui_syscalls.asm - -$(B)/out/$(BASEGAME)_11/vm/ui.qvm: $(UIVMOBJ11) $(UIDIR)/ui_syscalls_11.asm $(Q3ASM) - $(echo_cmd) "Q3ASM $@" - $(Q)$(Q3ASM) -o $@ $(UIVMOBJ11) $(UIDIR)/ui_syscalls_11.asm - - -############################################################################# -## QVM Package -############################################################################# - -ifeq ($(BUILD_ONLY_CGUI),0) - $(B)/out/$(BASEGAME)/vms-gpp1-$(VERSION).pk3: $(B)/out/$(BASEGAME)/vm/ui.qvm $(B)/out/$(BASEGAME)/vm/cgame.qvm $(B)/out/$(BASEGAME)/vm/game.qvm - @(cd $(B)/out/$(BASEGAME) && zip -r vms-gpp1-$(VERSION).pk3 vm/) - else - $(B)/out/$(BASEGAME)/vms-gpp1-$(VERSION).pk3: $(B)/out/$(BASEGAME)/vm/ui.qvm $(B)/out/$(BASEGAME)/vm/cgame.qvm - @(cd $(B)/out/$(BASEGAME) && zip -r vms-gpp1-$(VERSION).pk3 vm/) -endif - -$(B)/out/$(BASEGAME)_11/vms-1.1.0-$(VERSION).pk3: $(B)/out/$(BASEGAME)_11/vm/ui.qvm $(B)/out/$(BASEGAME)_11/vm/cgame.qvm - @(cd $(B)/out/$(BASEGAME)_11 && zip -r vms-1.1.0-$(VERSION).pk3 vm/) - -############################################################################# -## Assets Package -############################################################################# - -$(B)/out/$(BASEGAME)/data-$(VERSION).pk3: $(ASSETS_DIR)/ui/main.menu - @(cd $(ASSETS_DIR) && zip -r data-$(VERSION).pk3 *) - @mv $(ASSETS_DIR)/data-$(VERSION).pk3 $(B)/out/$(BASEGAME) - -############################################################################# -## GAME MODULE RULES -############################################################################# - -$(B)/cgame/bg_%.o: $(GDIR)/bg_%.c - $(DO_CGAME_CC) - -$(B)/cgame/ui_%.o: $(UIDIR)/ui_%.c - $(DO_CGAME_CC) - -$(B)/cgame/%.o: $(CGDIR)/%.c - $(DO_CGAME_CC) - -$(B)/cgame/bg_%.asm: $(GDIR)/bg_%.c $(Q3LCC) - $(DO_CGAME_Q3LCC) - -$(B)/cgame/ui_%.asm: $(UIDIR)/ui_%.c $(Q3LCC) - $(DO_CGAME_Q3LCC) - -$(B)/cgame/%.asm: $(CGDIR)/%.c $(Q3LCC) - $(DO_CGAME_Q3LCC) - -$(B)/11/cgame/%.asm: $(CGDIR)/%.c $(Q3LCC) - $(DO_CGAME_Q3LCC_11) - - -$(B)/game/%.o: $(GDIR)/%.c - $(DO_GAME_CC) - -$(B)/game/%.asm: $(GDIR)/%.c $(Q3LCC) - $(DO_GAME_Q3LCC) - - -$(B)/ui/bg_%.o: $(GDIR)/bg_%.c - $(DO_UI_CC) - -$(B)/ui/%.o: $(UIDIR)/%.c - $(DO_UI_CC) - -$(B)/ui/bg_%.asm: $(GDIR)/bg_%.c $(Q3LCC) - $(DO_UI_Q3LCC) - -$(B)/ui/%.asm: $(UIDIR)/%.c $(Q3LCC) - $(DO_UI_Q3LCC) - -$(B)/11/ui/%.asm: $(UIDIR)/%.c $(Q3LCC) - $(DO_UI_Q3LCC_11) - - -$(B)/qcommon/%.o: $(CMDIR)/%.c - $(DO_SHLIB_CC) - -$(B)/qcommon/%.asm: $(CMDIR)/%.c $(Q3LCC) - $(DO_Q3LCC) - - -############################################################################# -# MISC -############################################################################# - -OBJ = $(GOBJ) $(CGOBJ) $(UIOBJ) $(CGOBJ11) $(UIOBJ11) \ - $(GVMOBJ) $(CGVMOBJ) $(UIVMOBJ) $(CGVMOBJ11) $(UIVMOBJ11) -TOOLSOBJ = $(LBURGOBJ) $(Q3CPPOBJ) $(Q3RCCOBJ) $(Q3LCCOBJ) $(Q3ASMOBJ) -STRINGOBJ = $(Q3R2STRINGOBJ) - -clean: clean-debug clean-release - @$(MAKE) -C $(MASTERDIR) clean - -clean-debug: - @$(MAKE) clean2 B=$(BD) - -clean-release: - @$(MAKE) clean2 B=$(BR) - -clean2: - @echo "CLEAN $(B)" - @rm -f $(OBJ) - @rm -f $(OBJ_D_FILES) - @rm -f $(STRINGOBJ) - @rm -f $(TARGETS) - -toolsclean: toolsclean-debug toolsclean-release - -toolsclean-debug: - @$(MAKE) toolsclean2 B=$(BD) - -toolsclean-release: - @$(MAKE) toolsclean2 B=$(BR) - -toolsclean2: - @echo "TOOLS_CLEAN $(B)" - @rm -f $(TOOLSOBJ) - @rm -f $(TOOLSOBJ_D_FILES) - @rm -f $(LBURG) $(DAGCHECK_C) $(Q3RCC) $(Q3CPP) $(Q3LCC) $(Q3ASM) - -distclean: clean toolsclean - @rm -rf $(BUILD_DIR) - -dist: - git archive --format zip --output $(CLIENTBIN)-$(VERSION).zip HEAD - -############################################################################# -# DEPENDENCIES -############################################################################# - -ifneq ($(B),) - OBJ_D_FILES=$(filter %.d,$(OBJ:%.o=%.d)) - TOOLSOBJ_D_FILES=$(filter %.d,$(TOOLSOBJ:%.o=%.d)) - -include $(OBJ_D_FILES) $(TOOLSOBJ_D_FILES) -endif - -.PHONY: all clean clean2 clean-debug clean-release copyfiles \ - debug default dist distclean makedirs \ - release targets \ - toolsclean toolsclean2 toolsclean-debug toolsclean-release \ - $(OBJ_D_FILES) $(TOOLSOBJ_D_FILES) - -# If the target name contains "clean", don't do a parallel build -ifneq ($(findstring clean, $(MAKECMDGOALS)),) -.NOTPARALLEL: -endif diff --git a/GPL b/GPL index 050f1e6..f755e7e 100644 --- a/GPL +++ b/GPL @@ -1,281 +1,622 @@ - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 - - Copyright (C) 1989, 1991 Free Software Foundation, Inc. - 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Library General Public License instead.) You can apply it to +GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + +Copyright (C) 2007 Free Software Foundation, Inc. +Everyone is permitted to copy and distribute verbatim copies +of this license document, but changing it is not allowed. + + Preamble + +The GNU General Public License is a free, copyleft license for +software and other kinds of works. + +The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to your programs, too. - When we speak of free software, we are referring to freedom, not +When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - - We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + +To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + +For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + +Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + +For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + +Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + +Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + +The precise terms and conditions for copying, distribution and modification follow. - GNU GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - - 1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - - 2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any - part thereof, to be licensed as a whole at no charge to all third - parties under the terms of this License. - - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a - notice that there is no warranty (or else, saying that you provide - a warranty) and that users may redistribute the program under - these conditions, and telling the user how to view a copy of this - License. (Exception: if the Program itself is interactive but - does not normally print such an announcement, your work based on - the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections - 1 and 2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your - cost of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer - to distribute corresponding source code. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form with such - an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - - 4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - - 5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - - 6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to + TERMS AND CONDITIONS + +0. Definitions. + +"This License" refers to version 3 of the GNU General Public License. + +"Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + +"The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + +To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + +A "covered work" means either the unmodified Program or a work based +on the Program. + +To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + +To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + +An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + +1. Source Code. + +The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + +A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + +The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + +The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + +The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + +The Corresponding Source for a work in source code form is that +same work. + +2. Basic Permissions. + +All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + +You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + +Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + +3. Protecting Users' Legal Rights From Anti-Circumvention Law. + +No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + +When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + +4. Conveying Verbatim Copies. + +You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + +You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + +5. Conveying Modified Source Versions. + +You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + +a) The work must carry prominent notices stating that you modified +it, and giving a relevant date. + +b) The work must carry prominent notices stating that it is +released under this License and any conditions added under section +7. This requirement modifies the requirement in section 4 to +"keep intact all notices". + +c) You must license the entire work, as a whole, under this +License to anyone who comes into possession of a copy. This +License will therefore apply, along with any applicable section 7 +additional terms, to the whole of the work, and all its parts, +regardless of how they are packaged. This License gives no +permission to license the work in any other way, but it does not +invalidate such permission if you have separately received it. + +d) If the work has interactive user interfaces, each must display +Appropriate Legal Notices; however, if the Program has interactive +interfaces that do not display Appropriate Legal Notices, your +work need not make them do so. + +A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + +6. Conveying Non-Source Forms. + +You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + +a) Convey the object code in, or embodied in, a physical product +(including a physical distribution medium), accompanied by the +Corresponding Source fixed on a durable physical medium +customarily used for software interchange. + +b) Convey the object code in, or embodied in, a physical product +(including a physical distribution medium), accompanied by a +written offer, valid for at least three years and valid for as +long as you offer spare parts or customer support for that product +model, to give anyone who possesses the object code either (1) a +copy of the Corresponding Source for all the software in the +product that is covered by this License, on a durable physical +medium customarily used for software interchange, for a price no +more than your reasonable cost of physically performing this +conveying of source, or (2) access to copy the +Corresponding Source from a network server at no charge. + +c) Convey individual copies of the object code with a copy of the +written offer to provide the Corresponding Source. This +alternative is allowed only occasionally and noncommercially, and +only if you received the object code with such an offer, in accord +with subsection 6b. + +d) Convey the object code by offering access from a designated +place (gratis or for a charge), and offer equivalent access to the +Corresponding Source in the same way through the same place at no +further charge. You need not require recipients to copy the +Corresponding Source along with the object code. If the place to +copy the object code is a network server, the Corresponding Source +may be on a different server (operated by you or a third party) +that supports equivalent copying facilities, provided you maintain +clear directions next to the object code saying where to find the +Corresponding Source. Regardless of what server hosts the +Corresponding Source, you remain obligated to ensure that it is +available for as long as needed to satisfy these requirements. + +e) Convey the object code using peer-to-peer transmission, provided +you inform other peers where the object code and Corresponding +Source of the work are being offered to the general public at no +charge under subsection 6d. + +A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + +A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + +"Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + +If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + +The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + +Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + +7. Additional Terms. + +"Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + +When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + +Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + +a) Disclaiming warranty or limiting liability differently from the +terms of sections 15 and 16 of this License; or + +b) Requiring preservation of specified reasonable legal notices or +author attributions in that material or in the Appropriate Legal +Notices displayed by works containing it; or + +c) Prohibiting misrepresentation of the origin of that material, or +requiring that modified versions of such material be marked in +reasonable ways as different from the original version; or + +d) Limiting the use for publicity purposes of names of licensors or +authors of the material; or + +e) Declining to grant rights under trademark law for use of some +trade names, trademarks, or service marks; or + +f) Requiring indemnification of licensors and authors of that +material by anyone who conveys the material (or modified versions of +it) with contractual assumptions of liability to the recipient, for +any liability that these contractual assumptions directly impose on +those licensors and authors. + +All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + +If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + +Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + +8. Termination. + +You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + +However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + +Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + +Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + +9. Acceptance Not Required for Having Copies. + +You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + +10. Automatic Licensing of Downstream Recipients. + +Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + +An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + +You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + +11. Patents. + +A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + +A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of this License. - 7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or +Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + +In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + +If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + +If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + +A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + +Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + +12. No Surrender of Others' Freedom. + +If conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - - 9. The Free Software Foundation may publish revised and/or new versions -of the General Public License from time to time. Such new versions will +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + +13. Use with the GNU Affero General Public License. + +Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + +14. Revised Versions of this License. + +The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - - 10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - - NO WARRANTY - - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS -TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, -REPAIR OR CORRECTION. - - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED -TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY -YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. - - END OF TERMS AND CONDITIONS - +Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + +If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + +Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + +15. Disclaimer of Warranty. + +THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + +16. Limitation of Liability. + +IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + +17. Interpretation of Sections 15 and 16. + +If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..1b501f4 --- /dev/null +++ b/Makefile @@ -0,0 +1,2925 @@ +# +# Tremulous Makefile +# +# GNU Make required +# +COMPILE_PLATFORM=$(shell uname | sed -e 's/_.*//' | tr '[:upper:]' '[:lower:]' | sed -e 's/\//_/g') +COMPILE_ARCH=$(shell uname -m | sed -e 's/i.86/x86/' | sed -e 's/^arm.*/arm/') + +ifeq ($(COMPILE_PLATFORM),sunos) + # Solaris uname and GNU uname differ + COMPILE_ARCH=$(shell uname -p | sed -e 's/i.86/x86/') +endif + +ifeq ($(COMPILE_PLATFORM),linux) + ifeq ($(COMPILE_ARCH),arm) + # Get full arch name + COMPILE_ARCH=$(shell file /bin/true | sed -e 's/^.*ld-linux-\(arm.*\)\.so.*/\1/') + endif +endif + +ifndef BUILD_STANDALONE + BUILD_STANDALONE = +endif +ifndef BUILD_CLIENT + BUILD_CLIENT = +endif +ifndef BUILD_SERVER + BUILD_SERVER = +endif +ifndef BUILD_GRANGER + BUILD_GRANGER = +endif +ifndef BUILD_GAME_SO + BUILD_GAME_SO = +endif +ifndef BUILD_GAME_QVM + BUILD_GAME_QVM = +endif +ifndef BUILD_GAME_QVM_11 + BUILD_GAME_QVM_11 = +endif +ifndef BUILD_RENDERER_OPENGL2 + BUILD_RENDERER_OPENGL2= +endif + +############################################################################# +# +# If you require a different configuration from the defaults below, create a +# new file named "Makefile.local" in the same directory as this file and define +# your parameters there. This allows you to change configuration without +# causing problems with keeping up to date with the repository. +# +############################################################################# +-include Makefile.local + +ifeq ($(COMPILE_PLATFORM),cygwin) + PLATFORM=mingw32 +endif + +ifndef PLATFORM +PLATFORM=$(COMPILE_PLATFORM) +endif +export PLATFORM + +ifeq ($(PLATFORM),mingw32) + MINGW=1 +endif +ifeq ($(PLATFORM),mingw64) + MINGW=1 +endif + +ifeq ($(COMPILE_ARCH),i86pc) + COMPILE_ARCH=x86 +endif + +ifeq ($(COMPILE_ARCH),amd64) + COMPILE_ARCH=x86_64 +endif +ifeq ($(COMPILE_ARCH),x64) + COMPILE_ARCH=x86_64 +endif + +ifeq ($(COMPILE_ARCH),powerpc) + COMPILE_ARCH=ppc +endif +ifeq ($(COMPILE_ARCH),powerpc64) + COMPILE_ARCH=ppc64 +endif + +ifeq ($(COMPILE_ARCH),axp) + COMPILE_ARCH=alpha +endif + +ifndef ARCH +ARCH=$(COMPILE_ARCH) +endif +export ARCH + +ifneq ($(PLATFORM),$(COMPILE_PLATFORM)) + CROSS_COMPILING=1 +else + CROSS_COMPILING=0 + + ifneq ($(ARCH),$(COMPILE_ARCH)) + CROSS_COMPILING=1 + endif +endif +export CROSS_COMPILING + +ifndef VERSION +VERSION=1.3.0 +endif + +ifndef CLIENTBIN +CLIENTBIN=tremulous +endif + +ifndef SERVERBIN +SERVERBIN=tremded +endif + +ifndef BASEGAME +BASEGAME=gpp +endif + +BASEGAME_CFLAGS=-I../../${MOUNT_DIR} + +ifndef COPYDIR +COPYDIR="/usr/local/games/tremulous" +endif + +ifndef COPYBINDIR +COPYBINDIR=$(COPYDIR) +endif + +ifndef MOUNT_DIR +MOUNT_DIR=src +endif + +ifndef EXTERNAL_DIR +EXTERNAL_DIR=external +endif + +ifndef ASSETS_DIR +ASSETS_DIR=assets +endif + +ifndef BUILD_DIR +BUILD_DIR=build +endif + +ifndef TEMPDIR +TEMPDIR=/tmp +endif + +ifndef GENERATE_DEPENDENCIES +GENERATE_DEPENDENCIES=1 +endif + +ifndef USE_OPENAL +USE_OPENAL=1 +endif + +ifndef USE_OPENAL_DLOPEN +USE_OPENAL_DLOPEN=1 +endif + +ifndef USE_RESTCLIENT +USE_RESTCLIENT=1 +USE_CURL=1 +USE_CURL_DLOPEN=0 +endif + +ifndef USE_CURL +USE_CURL=1 +endif + +ifndef USE_CURL_DLOPEN + ifdef MINGW + USE_CURL_DLOPEN=0 + else + USE_CURL_DLOPEN=1 + endif +endif + +ifndef USE_CODEC_VORBIS +USE_CODEC_VORBIS=1 +endif + +ifndef USE_CODEC_OPUS +USE_CODEC_OPUS=1 +endif + +ifndef USE_MUMBLE +USE_MUMBLE=0 +endif + +ifndef USE_VOIP +USE_VOIP=0 +endif + +ifndef USE_FREETYPE +USE_FREETYPE=0 +endif + +ifndef USE_INTERNAL_LIBS +USE_INTERNAL_LIBS=1 +endif + +ifndef USE_INTERNAL_OGG +USE_INTERNAL_OGG=$(USE_INTERNAL_LIBS) +endif + +ifndef USE_INTERNAL_VORBIS +USE_INTERNAL_VORBIS=$(USE_INTERNAL_LIBS) +endif + +ifndef USE_INTERNAL_OPUS +USE_INTERNAL_OPUS=$(USE_INTERNAL_LIBS) +endif + +ifndef USE_INTERNAL_ZLIB +USE_INTERNAL_ZLIB=$(USE_INTERNAL_LIBS) +endif + +ifndef USE_INTERNAL_JPEG +USE_INTERNAL_JPEG=$(USE_INTERNAL_LIBS) +endif + +ifndef USE_INTERNAL_LUA +USE_INTERNAL_LUA=$(USE_INTERNAL_LIBS) +endif + +ifndef USE_LOCAL_HEADERS +USE_LOCAL_HEADERS=$(USE_INTERNAL_LIBS) +endif + +ifndef USE_RENDERER_DLOPEN +USE_RENDERER_DLOPEN=1 +endif + +ifndef USE_YACC +USE_YACC=0 +endif + +ifndef DEBUG_CFLAGS +DEBUG_CFLAGS=-ggdb -O0 +endif + +ifndef BASE_CFLAGS + BASE_CFLAGS=-fno-strict-aliasing +endif + +############################################################################# + +BD=$(BUILD_DIR)/debug-$(PLATFORM)-$(ARCH) +BR=$(BUILD_DIR)/release-$(PLATFORM)-$(ARCH) + +CDIR=$(MOUNT_DIR)/client +SDIR=$(MOUNT_DIR)/server +RCOMMONDIR=$(MOUNT_DIR)/renderercommon +RGL1DIR=$(MOUNT_DIR)/renderergl1 +RGL2DIR=$(MOUNT_DIR)/renderergl2 +CMDIR=$(MOUNT_DIR)/qcommon +SDLDIR=$(MOUNT_DIR)/sdl +ASMDIR=$(MOUNT_DIR)/asm +SYSDIR=$(MOUNT_DIR)/sys +SCRIPTDIR=$(MOUNT_DIR)/script +GDIR=$(MOUNT_DIR)/game +CGDIR=$(MOUNT_DIR)/cgame +NDIR=$(MOUNT_DIR)/null +UIDIR=$(MOUNT_DIR)/ui +GRANGERDIR=$(MOUNT_DIR)/granger/src +JPDIR=$(EXTERNAL_DIR)/jpeg-8c +OGGDIR=$(EXTERNAL_DIR)/libogg-1.3.2 +VORBISDIR=$(EXTERNAL_DIR)/libvorbis-1.3.5 +OPUSDIR=$(EXTERNAL_DIR)/opus-1.1.4 +OPUSFILEDIR=$(EXTERNAL_DIR)/opusfile-0.8 +ZDIR=$(EXTERNAL_DIR)/zlib +LUADIR=$(EXTERNAL_DIR)/lua-5.3.3/src +RESTDIR=$(EXTERNAL_DIR)/restclient +NETTLEDIR=$(EXTERNAL_DIR)/nettle-3.3 +SEMVERDIR=$(EXTERNAL_DIR)/semver +LUA_RAPIDJSONDIR=$(MOUNT_DIR)/script/rapidjson +Q3ASMDIR=$(MOUNT_DIR)/tools/asm +LBURGDIR=$(MOUNT_DIR)/tools/lcc/lburg +Q3CPPDIR=$(MOUNT_DIR)/tools/lcc/cpp +Q3LCCETCDIR=$(MOUNT_DIR)/tools/lcc/etc +Q3LCCSRCDIR=$(MOUNT_DIR)/tools/lcc/src +SDLHDIR=$(EXTERNAL_DIR)/SDL2 +CURLHDIR=$(EXTERNAL_DIR)/libcurl-7.35.0 +ALHDIR=$(EXTERNAL_DIR)/AL +LIBSDIR=$(EXTERNAL_DIR)/libs +TEMPDIR=/tmp + +bin_path=$(shell which $(1) 2> /dev/null) + +# We won't need this if we only build the server +ifneq ($(BUILD_CLIENT),0) + # set PKG_CONFIG_PATH to influence this, e.g. + # PKG_CONFIG_PATH=/opt/cross/i386-mingw32msvc/lib/pkgconfig + ifneq ($(call bin_path, pkg-config),) + CURL_CFLAGS ?= $(shell pkg-config --silence-errors --cflags libcurl) + CURL_LIBS ?= $(shell pkg-config --silence-errors --libs libcurl) + OPENAL_CFLAGS ?= $(shell pkg-config --silence-errors --cflags openal) + OPENAL_LIBS ?= $(shell pkg-config --silence-errors --libs openal) + SDL_CFLAGS ?= $(shell pkg-config --silence-errors --cflags sdl2|sed 's/-Dmain=SDL_main//') + SDL_LIBS ?= $(shell pkg-config --silence-errors --libs sdl2) + else + # assume they're in the system default paths (no -I or -L needed) + CURL_LIBS ?= -lcurl + OPENAL_LIBS ?= -lopenal + endif + # Use sdl2-config if all else fails + ifeq ($(SDL_CFLAGS),) + ifneq ($(call bin_path, sdl2-config),) + SDL_CFLAGS ?= $(shell sdl2-config --cflags) + SDL_LIBS ?= $(shell sdl2-config --libs) + endif + endif +endif + +# Add git version info +USE_GIT= +ifeq ($(wildcard .git),.git) + GIT_REV=$(shell git describe --tag) + ifneq ($(GIT_REV),) + VERSION:=$(GIT_REV) + USE_GIT=1 + endif +endif + + +############################################################################# +# SETUP AND BUILD -- LINUX +############################################################################# + +INSTALL=install +MKDIR=mkdir +EXTRA_FILES= +CLIENT_EXTRA_FILES= + +ifneq (,$(findstring "$(PLATFORM)", "linux" "gnu_kfreebsd" "kfreebsd-gnu" "gnu")) + BASE_CFLAGS += -DUSE_ICON + CLIENT_CFLAGS += $(SDL_CFLAGS) + + OPTIMIZEVM = -O3 + OPTIMIZE = $(OPTIMIZEVM) -ffast-math + + ifeq ($(ARCH),x86_64) + OPTIMIZEVM = -O3 + OPTIMIZE = $(OPTIMIZEVM) -ffast-math -msse2 + HAVE_VM_COMPILED = true + else + ifeq ($(ARCH),x86) + OPTIMIZEVM = -O3 + OPTIMIZE = $(OPTIMIZEVM) -ffast-math -msse2 -mfpmath=387+sse + HAVE_VM_COMPILED=true + else + ifeq ($(ARCH),ppc) + BASE_CFLAGS += -maltivec + HAVE_VM_COMPILED=true + endif + ifeq ($(ARCH),ppc64) + BASE_CFLAGS += -maltivec + HAVE_VM_COMPILED=true + endif + ifeq ($(ARCH),sparc) + OPTIMIZE += -mtune=ultrasparc3 -mv8plus + OPTIMIZEVM += -mtune=ultrasparc3 -mv8plus + HAVE_VM_COMPILED=true + endif + ifeq ($(ARCH),alpha) + # According to http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=410555 + # -ffast-math will cause the client to die with SIGFPE on Alpha + OPTIMIZE = $(OPTIMIZEVM) + endif + ifeq ($(ARCH),armhf) + BASE_CFLAGS += -D__armhf__ + endif + endif + endif + + SHLIBEXT=so + SHLIBCFLAGS=-fPIC -fvisibility=hidden + SHLIBLDFLAGS=-shared + #$(LDFLAGS) + + THREAD_LIBS=-lpthread + LIBS=-ldl -lm + GRANGER_LIBS=-lm -ldl + + CLIENT_LIBS=$(SDL_LIBS) + RENDERER_LIBS = $(SDL_LIBS) -lGL + + ifeq ($(USE_OPENAL),1) + ifneq ($(USE_OPENAL_DLOPEN),1) + CLIENT_LIBS += $(THREAD_LIBS) $(OPENAL_LIBS) + endif + endif + + ifeq ($(USE_CURL),1) + CLIENT_CFLAGS += $(CURL_CFLAGS) + ifneq ($(USE_CURL_DLOPEN),1) + CLIENT_LIBS += $(CURL_LIBS) + endif + endif + + ifeq ($(USE_MUMBLE),1) + CLIENT_LIBS += -lrt + endif + + ifeq ($(ARCH),x86) + # linux32 make ... + BASE_CFLAGS += -m32 + else + ifeq ($(ARCH),ppc64) + BASE_CFLAGS += -m64 + endif + endif +else # ifeq Linux + +############################################################################# +# SETUP AND BUILD -- MAC OS X +############################################################################# + +ifeq ($(PLATFORM),darwin) + HAVE_VM_COMPILED=true + LIBS = -framework Cocoa + CLIENT_LIBS= + RENDERER_LIBS= + OPTIMIZEVM= + #CXXFLAGS+=-stdlib=libc++ + + # FIXME This is probably bad idea to comment this out + #BASE_CFLAGS += -mmacosx-version-min=10.7 -DMAC_OS_X_VERSION_MIN_REQUIRED=1070 + + GRANGER_LIBS = -framework Cocoa -framework Security + + ifeq ($(USE_RESTCLIENT),1) + CLIENT_LIBS += -framework Security + endif + + ifeq ($(ARCH),ppc) + BASE_CFLAGS += -arch ppc -faltivec + OPTIMIZEVM += -O3 + endif + ifeq ($(ARCH),ppc64) + BASE_CFLAGS += -arch ppc64 -faltivec + endif + ifeq ($(ARCH),x86) + OPTIMIZEVM += -mfpmath=387+sse + # x86 vm will crash without -mstackrealign since MMX instructions will be + # used no matter what and they corrupt the frame pointer in VM calls + BASE_CFLAGS += -arch i386 -m32 -mstackrealign + endif + ifeq ($(ARCH),x86_64) + OPTIMIZEVM += -arch x86_64 -mfpmath=sse -msse2 + endif + + # When compiling on OSX for OSX, we're not cross compiling as far as the + # Makefile is concerned, as target architecture is specified as a compiler + # argument + ifeq ($(COMPILE_PLATFORM),darwin) + CROSS_COMPILING=0 + endif + + ifeq ($(CROSS_COMPILING),1) + ifeq ($(ARCH),x86_64) + CC=x86_64-apple-darwin13-cc + RANLIB=x86_64-apple-darwin13-ranlib + else + ifeq ($(ARCH),x86) + CC=i386-apple-darwin13-cc + RANLIB=i386-apple-darwin13-ranlib + else + $(error Architecture $(ARCH) is not supported when cross compiling) + endif + endif + endif + + BASE_CFLAGS += -fno-strict-aliasing -fno-common + + ifeq ($(USE_OPENAL),1) + ifneq ($(USE_OPENAL_DLOPEN),1) + CLIENT_LIBS += -framework OpenAL + endif + endif + + ifeq ($(USE_CURL),1) + CLIENT_CFLAGS += $(CURL_CFLAGS) + ifneq ($(USE_CURL_DLOPEN),1) + CLIENT_LIBS += $(CURL_LIBS) + endif + endif + + BASE_CFLAGS += -D_THREAD_SAFE=1 + + # FIXME: It is not possible to build using system SDL2 framework + # 1. IF you try, this Makefile will still drop libSDL-2.0.0.dylib into the builddir + # 2. Debugger warns that you have 2- which one will be used is undefined + ifeq ($(USE_LOCAL_HEADERS),1) + BASE_CFLAGS += -I$(SDLHDIR)/include -I$(CURLHDIR) -I$(ALHDIR) + endif + + # We copy sdlmain before ranlib'ing it so that subversion doesn't think + # the file has been modified by each build. + LIBSDLMAIN=$(B)/libSDL2main.a + LIBSDLMAINSRC=$(LIBSDIR)/macosx/libSDL2main.a + CLIENT_LIBS += -framework IOKit \ + $(LIBSDIR)/macosx/libSDL2-2.0.0.dylib + RENDERER_LIBS += -framework OpenGL $(LIBSDIR)/macosx/libSDL2-2.0.0.dylib + CLIENT_EXTRA_FILES += $(LIBSDIR)/macosx/libSDL2-2.0.0.dylib + + OPTIMIZE = $(OPTIMIZEVM) -ffast-math + + SHLIBEXT=dylib + SHLIBCFLAGS=-fPIC -fno-common + #SHLIBLDFLAGS=-dynamiclib $(LDFLAGS) -Wl,-U,_com_altivec + SHLIBLDFLAGS=-dynamiclib -Wl,-U,_com_altivec + + NOTSHLIBCFLAGS=-mdynamic-no-pic + +else # ifeq darwin + + +############################################################################# +# SETUP AND BUILD -- MINGW32 +############################################################################# + +ifdef MINGW + + ifeq ($(CROSS_COMPILING),1) + # If CC is already set to something generic, we probably want to use + # something more specific + ifneq ($(findstring $(strip $(CC)),cc gcc),) + CC= + endif + ifneq ($(findstring $(strip $(CXX)),c++ g++),) + CXX= + endif + + # We need to figure out the correct gcc and windres + ifeq ($(ARCH),x86_64) + MINGW_PREFIXES=x86_64-w64-mingw32 + endif + ifeq ($(ARCH),x86) + MINGW_PREFIXES=i686-w64-mingw32 + endif + + ifndef CC + CC=$(firstword $(strip $(foreach MINGW_PREFIX, $(MINGW_PREFIXES), $(call bin_path, $(MINGW_PREFIX)-gcc)))) + endif + ifndef CXX + CXX=$(firstword $(strip $(foreach MINGW_PREFIX, $(MINGW_PREFIXES), $(call bin_path, $(MINGW_PREFIX)-g++)))) + endif + + ifndef WINDRES + WINDRES=$(firstword $(strip $(foreach MINGW_PREFIX, $(MINGW_PREFIXES), $(call bin_path, $(MINGW_PREFIX)-windres)))) + endif + else + # Some MinGW installations define CC to cc, but don't actually provide cc, + # so check that CC points to a real binary and use gcc if it doesn't + ifeq ($(call bin_path, $(CC)),) + CC=gcc + endif + + ifeq ($(call bin_path, $(CXX)),) + CXX=g++ + endif + + ifndef WINDRES + WINDRES=windres + endif + endif + + ifeq ($(CC),) + $(error Cannot find a suitable cross compiler for $(PLATFORM) CC) + endif + ifeq ($(CXX),) + $(error Cannot find a suitable cross compiler for $(PLATFORM) CXX) + endif + + CFLAGS += -static -static-libgcc -static-libstdc++ + CXXFLAGS += -static -static-libgcc -static-libstdc++ + LDFLAGS += -static -static-libgcc -static-libstdc++ + GRANGER_CFLAGS = -D_CRT_SECURE_NO_WARNINGS + + BASE_CFLAGS += -DUSE_ICON + + # In the absence of wspiapi.h, require Windows XP or later + ifeq ($(shell test -e $(CMDIR)/wspiapi.h; echo $$?),1) + # FIXIT-L Update WINVER=_WIN32_WINNT_WIN7 (see https://msdn.microsoft.com/en-us/library/6sehtctf.aspx) + BASE_CFLAGS += -DWINVER=0x501 + endif + + ifeq ($(USE_OPENAL),1) + CLIENT_CFLAGS += $(OPENAL_CFLAGS) + ifneq ($(USE_OPENAL_DLOPEN),1) + CLIENT_LDFLAGS += $(OPENAL_LDFLAGS) + endif + ifeq ($(USE_LOCAL_HEADERS),1) + CLIENT_CFLAGS += -I$(ALHDIR) + endif + endif + + ifeq ($(ARCH),x86_64) + OPTIMIZEVM = -O3 + OPTIMIZE = $(OPTIMIZEVM) -ffast-math -msse2 + HAVE_VM_COMPILED = true + BASE_CFLAGS += -m64 + endif + + ifeq ($(ARCH),x86) + OPTIMIZEVM = -O3 + OPTIMIZE = $(OPTIMIZEVM) -ffast-math -msse2 -mfpmath=387+sse + HAVE_VM_COMPILED = true + BASE_CFLAGS += -m32 + endif + + SHLIBEXT=dll + SHLIBCFLAGS= + #SHLIBLDFLAGS=-shared $(LDFLAGS) + SHLIBLDFLAGS=-shared + + BINEXT=.exe + + ifeq ($(CROSS_COMPILING),0) + TOOLS_BINEXT=.exe + endif + + ifeq ($(COMPILE_PLATFORM),cygwin) + TOOLS_BINEXT=.exe + TOOLS_CC=$(CC) + endif + + LIBS= -lws2_32 -lwinmm -lpsapi + # clang 3.4 doesn't support this + ifneq ("$(CC)", $(findstring "$(CC)", "clang" "clang++")) + CLIENT_LDFLAGS += -mwindows + endif + CLIENT_LIBS = -lgdi32 -lole32 + RENDERER_LIBS = -lgdi32 -lole32 -lopengl32 + + ifeq ($(USE_FREETYPE),1) + FREETYPE_CFLAGS = -Ifreetype2 + endif + + ifeq ($(USE_CURL),1) + ifneq ($(USE_CURL_DLOPEN),1) + ifeq ($(USE_LOCAL_HEADERS),1) + CLIENT_CFLAGS += -DCURL_STATICLIB -I$(CURLHDIR) + ifeq ($(ARCH),x86_64) + CLIENT_LIBS += $(LIBSDIR)/win64/libcurl.a + else + CLIENT_LIBS += $(LIBSDIR)/win32/libcurl.a + endif + else + CLIENT_CFLAGS += $(CURL_CFLAGS) + CLIENT_LIBS += $(CURL_LIBS) + endif + endif + endif + + # libmingw32 must be linked before libSDLmain + CLIENT_LIBS += -lmingw32 + RENDERER_LIBS += -lmingw32 + + ifeq ($(USE_LOCAL_HEADERS),1) + CLIENT_CFLAGS += -I$(SDLHDIR)/include + ifeq ($(ARCH), x86) + CLIENT_LIBS += $(LIBSDIR)/win32/libSDL2main.a $(LIBSDIR)/win32/libSDL2.dll.a + RENDERER_LIBS += $(LIBSDIR)/win32/libSDL2main.a $(LIBSDIR)/win32/libSDL2.dll.a + SDLDLL=SDL2.dll + CLIENT_EXTRA_FILES += $(LIBSDIR)/win32/SDL2.dll + else + CLIENT_LIBS += $(LIBSDIR)/win64/libSDL264main.a $(LIBSDIR)/win64/libSDL264.dll.a + RENDERER_LIBS += $(LIBSDIR)/win64/libSDL264main.a $(LIBSDIR)/win64/libSDL264.dll.a + SDLDLL=SDL264.dll + CLIENT_EXTRA_FILES += $(LIBSDIR)/win64/SDL264.dll + endif + else + CLIENT_CFLAGS += $(SDL_CFLAGS) + CLIENT_LIBS += $(SDL_LIBS) + RENDERER_LIBS += $(SDL_LIBS) + SDLDLL=SDL2.dll + endif + +else # ifdef MINGW + +############################################################################# +# SETUP AND BUILD -- FREEBSD +############################################################################# + +ifeq ($(PLATFORM),freebsd) + + # flags + BASE_CFLAGS = $(shell env MACHINE_ARCH=$(ARCH) make -f /dev/null -VCFLAGS) \ + -Wall -fno-strict-aliasing -Wimplicit -Wstrict-prototypes -DUSE_ICON -DMAP_ANONYMOUS=MAP_ANON + CLIENT_CFLAGS += $(SDL_CFLAGS) + HAVE_VM_COMPILED = true + + OPTIMIZEVM = -O3 + OPTIMIZE = $(OPTIMIZEVM) -ffast-math + + SHLIBEXT=so + SHLIBCFLAGS=-fPIC + #SHLIBLDFLAGS=-shared $(LDFLAGS) + SHLIBLDFLAGS=-shared + + THREAD_LIBS=-lpthread + # don't need -ldl (FreeBSD) + LIBS=-lm + GRANGER_LIBS = -lm + + CLIENT_LIBS = + + CLIENT_LIBS += $(SDL_LIBS) + RENDERER_LIBS = $(SDL_LIBS) -lGL + + # optional features/libraries + ifeq ($(USE_OPENAL),1) + ifeq ($(USE_OPENAL_DLOPEN),1) + CLIENT_LIBS += $(THREAD_LIBS) $(OPENAL_LIBS) + endif + endif + + ifeq ($(USE_CURL),1) + CLIENT_CFLAGS += $(CURL_CFLAGS) + ifeq ($(USE_CURL_DLOPEN),1) + CLIENT_LIBS += $(CURL_LIBS) + endif + endif + + # cross-compiling tweaks + ifeq ($(ARCH),x86) + ifeq ($(CROSS_COMPILING),1) + BASE_CFLAGS += -m32 + endif + endif + ifeq ($(ARCH),x86_64) + ifeq ($(CROSS_COMPILING),1) + BASE_CFLAGS += -m64 + endif + endif +else # ifeq freebsd + +############################################################################# +# SETUP AND BUILD -- GENERIC +############################################################################# + BASE_CFLAGS= + OPTIMIZE = -O3 + + SHLIBEXT=so + SHLIBCFLAGS=-fPIC + SHLIBLDFLAGS=-shared + +endif #Linux +endif #darwin +endif #MINGW +endif #FreeBSD + +ifndef CC + CC=gcc +endif + +ifndef RANLIB + RANLIB=ranlib +endif + +ifneq ($(HAVE_VM_COMPILED),true) + BASE_CFLAGS += -DNO_VM_COMPILED + BUILD_GAME_QVM=0 +endif + +TARGETS = + +ifndef FULLBINEXT + FULLBINEXT=$(BINEXT) +endif + +ifndef SHLIBNAME + SHLIBNAME=.$(SHLIBEXT) +endif + +ifneq ($(BUILD_SERVER),0) + TARGETS += $(B)/$(SERVERBIN)$(FULLBINEXT) +endif + +ifneq ($(BUILD_CLIENT),0) + ifneq ($(USE_RENDERER_DLOPEN),0) + TARGETS += $(B)/$(CLIENTBIN)$(FULLBINEXT) $(B)/renderer_opengl1$(SHLIBNAME) + ifneq ($(BUILD_RENDERER_OPENGL2),0) + TARGETS += $(B)/renderer_opengl2$(SHLIBNAME) + endif + else + TARGETS += $(B)/$(CLIENTBIN)$(FULLBINEXT) + ifneq ($(BUILD_RENDERER_OPENGL2),0) + TARGETS += $(B)/$(CLIENTBIN)_opengl2$(FULLBINEXT) + endif + endif +endif + +ifneq ($(BUILD_GAME_SO),0) + TARGETS += \ + $(B)/$(BASEGAME)/cgame$(SHLIBNAME) \ + $(B)/$(BASEGAME)/game$(SHLIBNAME) \ + $(B)/$(BASEGAME)/ui$(SHLIBNAME) +endif + +ifneq ($(BUILD_GAME_QVM),0) + TARGETS += \ + $(B)/$(BASEGAME)/vm/cgame.qvm \ + $(B)/$(BASEGAME)/vm/game.qvm \ + $(B)/$(BASEGAME)/vm/ui.qvm \ + $(B)/$(BASEGAME)/vms-gpp-$(VERSION).pk3 +endif + +ifneq ($(BUILD_GAME_QVM_11),0) + TARGETS += \ + $(B)/$(BASEGAME)_11/vm/cgame.qvm \ + $(B)/$(BASEGAME)_11/vm/ui.qvm \ + $(B)/$(BASEGAME)_11/vms-1.1.0-$(VERSION).pk3 +endif + +ifneq ($(BUILD_DATA_PK3),0) + TARGETS += \ + $(B)/$(BASEGAME)/data-$(VERSION).pk3 +endif + +ifeq ($(USE_OPENAL),1) + CLIENT_CFLAGS += -DUSE_OPENAL + ifeq ($(USE_OPENAL_DLOPEN),1) + CLIENT_CFLAGS += -DUSE_OPENAL_DLOPEN + endif +endif + +ifeq ($(USE_CURL),1) + CLIENT_CFLAGS += -DUSE_CURL + ifeq ($(USE_CURL_DLOPEN),1) + CLIENT_CFLAGS += -DUSE_CURL_DLOPEN + endif +endif + +ifeq ($(USE_VOIP),1) + CLIENT_CFLAGS += -DUSE_VOIP + SERVER_CFLAGS += -DUSE_VOIP + NEED_OPUS=1 +endif + +ifeq ($(USE_CODEC_OPUS),1) + CLIENT_CFLAGS += -DUSE_CODEC_OPUS + NEED_OPUS=1 +endif + +ifeq ($(NEED_OPUS),1) + ifeq ($(USE_INTERNAL_OPUS),1) + OPUS_CFLAGS = -DOPUS_BUILD -DHAVE_LRINTF -DFLOATING_POINT -DFLOAT_APPROX -DUSE_ALLOCA -D __OPTIMIZE__ \ + -I$(OPUSDIR)/include -I$(OPUSDIR)/celt -I$(OPUSDIR)/silk \ + -I$(OPUSDIR)/silk/float -I$(OPUSFILEDIR)/include + else + OPUS_CFLAGS ?= $(shell pkg-config --silence-errors --cflags opusfile opus || true) + OPUS_LIBS ?= $(shell pkg-config --silence-errors --libs opusfile opus || echo -lopusfile -lopus) + endif + CLIENT_CFLAGS += $(OPUS_CFLAGS) + CLIENT_LIBS += $(OPUS_LIBS) + NEED_OGG=1 +endif + +ifeq ($(USE_CODEC_VORBIS),1) + CLIENT_CFLAGS += -DUSE_CODEC_VORBIS + ifeq ($(USE_INTERNAL_VORBIS),1) + CLIENT_CFLAGS += -I$(VORBISDIR)/include -I$(VORBISDIR)/lib + else + VORBIS_CFLAGS ?= $(shell pkg-config --silence-errors --cflags vorbisfile vorbis || true) + VORBIS_LIBS ?= $(shell pkg-config --silence-errors --libs vorbisfile vorbis || echo -lvorbisfile -lvorbis) + endif + CLIENT_CFLAGS += $(VORBIS_CFLAGS) + CLIENT_LIBS += $(VORBIS_LIBS) + NEED_OGG=1 +endif + +#-bbq +ifeq ($(USE_RESTCLIENT),1) + CLIENT_CFLAGS += -DUSE_RESTCLIENT -I$(RESTDIR) +endif + +ifeq ($(NEED_OGG),1) + ifeq ($(USE_INTERNAL_OGG),1) + OGG_CFLAGS = -I$(OGGDIR)/include + else + OGG_CFLAGS ?= $(shell pkg-config --silence-errors --cflags ogg || true) + OGG_LIBS ?= $(shell pkg-config --silence-errors --libs ogg || echo -logg) + endif + CLIENT_CFLAGS += $(OGG_CFLAGS) + CLIENT_LIBS += $(OGG_LIBS) +endif + +ifeq ($(USE_RENDERER_DLOPEN),1) + CLIENT_CFLAGS += -DUSE_RENDERER_DLOPEN +endif + +ifeq ($(USE_MUMBLE),1) + CLIENT_CFLAGS += -DUSE_MUMBLE +endif + +ifeq ($(USE_INTERNAL_ZLIB),1) + ZLIB_CFLAGS = -DNO_GZIP -I$(ZDIR) +else + ZLIB_CFLAGS ?= $(shell pkg-config --silence-errors --cflags zlib || true) + ZLIB_LIBS ?= $(shell pkg-config --silence-errors --libs zlib || echo -lz) +endif +BASE_CFLAGS += $(ZLIB_CFLAGS) +LIBS += $(ZLIB_LIBS) + +ifeq ($(USE_INTERNAL_JPEG),1) + BASE_CFLAGS += -DUSE_INTERNAL_JPEG + BASE_CFLAGS += -I$(JPDIR) +else + # IJG libjpeg doesn't have pkg-config, but libjpeg-turbo uses libjpeg.pc; + # we fall back to hard-coded answers if libjpeg.pc is unavailable + JPEG_CFLAGS ?= $(shell pkg-config --silence-errors --cflags libjpeg || true) + JPEG_LIBS ?= $(shell pkg-config --silence-errors --libs libjpeg || echo -ljpeg) + BASE_CFLAGS += $(JPEG_CFLAGS) + RENDERER_LIBS += $(JPEG_LIBS) +endif + +ifeq ($(USE_FREETYPE),1) + FREETYPE_CFLAGS ?= $(shell pkg-config --silence-errors --cflags freetype2 || true) + FREETYPE_LIBS ?= $(shell pkg-config --silence-errors --libs freetype2 || echo -lfreetype) + + BASE_CFLAGS += -DBUILD_FREETYPE $(FREETYPE_CFLAGS) + RENDERER_LIBS += $(FREETYPE_LIBS) +endif + +ifeq ("$(CC)", $(findstring "$(CC)", "clang" "clang++")) + BASE_CFLAGS += -Qunused-arguments +endif + +ifdef DEFAULT_BASEDIR + BASE_CFLAGS += -DDEFAULT_BASEDIR=\\\"$(DEFAULT_BASEDIR)\\\" +endif + +ifeq ($(USE_LOCAL_HEADERS),1) + BASE_CFLAGS += -DUSE_LOCAL_HEADERS +endif + +ifeq ($(BUILD_STANDALONE),1) + BASE_CFLAGS += -DSTANDALONE +endif + +ifeq ($(GENERATE_DEPENDENCIES),1) + DEPEND_CFLAGS = -MMD +else + DEPEND_CFLAGS = +endif + +ifeq ($(NO_STRIP),1) + STRIP_FLAG = +else + STRIP_FLAG = -s +endif + +BASE_CFLAGS += -DPRODUCT_VERSION=\\\"$(VERSION)\\\" + +ifeq ($(V),1) +echo_cmd=@: +Q= +else +echo_cmd=@echo +Q=@ +endif + +EXEC_CC = $(CC) ${1} -o ${2} -c ${3} +EXEC_CXX = $(CXX) -std=c++1y ${CXXFLAGS} ${1} -o ${2} -c ${3} + +# TREMULOUS CLIENT +CC_FLAGS=${NOTSHLIBCFLAGS} ${CFLAGS} ${CLIENT_CFLAGS} ${OPTIMIZE} +define DO_CC +$(echo_cmd) "CC $<" +$(Q)$(call EXEC_CC,-std=gnu99 ${CC_FLAGS},'$@','$<') +$(Q)$(call LOG_CC,tremulous,${CC_FLAGS},$@,$<) +endef + +define DO_CXX +$(echo_cmd) "CXX $<" +$(Q)$(call EXEC_CXX,${CC_FLAGS},'$@','$<') +$(Q)$(call LOG_CXX,tremulous,${CC_FLAGS},$@,$<) +endef + +########################################## +# Renderers +########################################## +# Common Rendering Code +define DO_RENDERER_COMMON_CC +$(echo_cmd) "RENDERER_COMMON_CC $<" +$(Q)$(call EXEC_CC,${REF_CC_FLAGS},'$@','$<') +$(Q)$(call LOG_CC,renderer_common,${REF_CC_FLAGS},$@,$<) +endef +define DO_RENDERER_COMMON_CXX +$(echo_cmd) "RENDERER_COMMON_CXX $<" +$(Q)$(call EXEC_CXX,${REF_CC_FLAGS},'$@','$<') +$(Q)$(call LOG_CXX,renderer_common,${REF_CC_FLAGS},$@,$<) +endef +########################################## +# Renderers +########################################## +# OpenGL 1 Renderer +REF_CC_FLAGS=${SHLIBCFLAGS} ${CFLAGS} ${CLIENT_CFLAGS} ${OPTIMIZE} +define DO_RENDERERGL1_CC +$(echo_cmd) "GL1_RENDERER_CC $<" +$(Q)$(call EXEC_CC,${REF_CC_FLAGS},'$@','$<') +$(Q)$(call LOG_CC,opengl1,${REF_CC_FLAGS},$@,$<) +endef +define DO_RENDERERGL1_CXX +$(echo_cmd) "GL1_RENDERER_CXX $<" +$(Q)$(call EXEC_CXX,${REF_CC_FLAGS},'$@','$<') +$(Q)$(call LOG_CXX,opengl1,${REF_CC_FLAGS},$@,$<) +endef +########################################## +# Renderers +########################################## +# OpenGL 2 Renderer +define DO_RENDERERGL2_CC +$(echo_cmd) "GL2_RENDERER_CC $<" +$(Q)$(call EXEC_CC,${REF_CC_FLAGS},'$@','$<') +$(Q)$(call LOG_CC,opengl2,${REF_CC_FLAGS},$@,$<) +endef +define DO_RENDERERGL2_CXX +$(echo_cmd) "RENDERERGL2_CXX $<" +$(Q)$(call EXEC_CXX,${REF_CC_FLAGS},'$@','$<') +$(Q)$(call LOG_CXX,opengl2,${REF_CC_FLAGS},$@,$<) +endef + +define DO_REF_STR +$(echo_cmd) "REF_STR $<" +$(Q)rm -f $@ +$(Q)echo "const char *fallbackShader_$(notdir $(basename $<)) =" >> $@ +$(Q)cat $< | sed 's/^/\"/;s/$$/\\n\"/' >> $@ +mkdir -p $(B)/glsl +cp $@ $(B)/glsl/ +$(Q)echo ";" >> $@ +endef + +ifeq ($(GENERATE_DEPENDENCIES),1) + DO_QVM_DEP=cat $(@:%.o=%.d) | sed -e 's/\.o/\.asm/g' >> $(@:%.o=%.d) +endif + +SHLIB_CC_FLAGS=${BASEGAME_CFLAGS} ${SHLIBCFLAGS} ${CFLAGS} ${OPTIMIZEVM} +define DO_SHLIB_CC +$(echo_cmd) "SHLIB_CC $<" +$(Q)$(call EXEC_CC,${SHLIB_CC_FLAGS},'$@','$<') +$(Q)$(call LOG_CC,qcommon,${SHLIB_CC_FLAGS},$@,$<) +$(Q)$(DO_QVM_DEP) +endef + +GAME_CC_FLAGS=${BASEGAME_CFLAGS} ${SHLIBCFLAGS} ${CFLAGS} ${OPTIMIZEVM} +define DO_GAME_CC +$(echo_cmd) "GAME_CC $<" +$(Q)$(call EXEC_CC,-DGAME ${GAME_CC_FLAGS},'$@','$<') +$(Q)$(call LOG_CC,game,-DGAME ${GAME_CC_FLAGS},$@,$<) +$(Q)$(DO_QVM_DEP) +endef + +define DO_CGAME_CC +$(echo_cmd) "CGAME_CC $<" +$(Q)$(call EXEC_CC,-DCGAME ${GAME_CC_FLAGS},'$@','$<') +$(Q)$(call LOG_CC,cgame,-DCGAME ${GAME_CC_FLAGS},$@,$<) +$(Q)$(DO_QVM_DEP) +endef + +define DO_UI_CC +$(echo_cmd) "UI_CC $<" +$(Q)$(call EXEC_CC,-DUI ${GAME_CC_FLAGS},'$@','$<') +$(Q)$(call LOG_CC,ui,-DUI ${GAME_CC_FLAGS},$@,$<) +$(Q)$(DO_QVM_DEP) +endef + +AS_FLAGS=${CFLAGS} ${OPTIMIZE} -x assembler-with-cpp +define DO_AS +$(echo_cmd) "AS $<" +$(Q)$(call EXEC_CC,${AS_FLAGS},'$@','$<') +$(Q)$(call LOG_CC,tremulous,${AS_FLAGS},$@,$<) +endef + +define DO_DED_AS +$(echo_cmd) "AS $<" +$(Q)$(call EXEC_CC,${AS_FLAGS},'$@','$<') +$(Q)$(call LOG_CC,tremded,${AS_FLAGS},$@,$<) +endef + +DED_CC_FLAGS=-DDEDICATED ${NOTSHLIBCFLAGS} ${CFLAGS} ${SERVER_CFLAGS} ${OPTIMIZE} +define DO_DED_CC +$(echo_cmd) "DED_CC $<" +$(Q)$(call EXEC_CC,-std=gnu99 ${DED_CC_FLAGS},'$@','$<') +$(Q)$(call LOG_CC,tremded,${DED_CC_FLAGS},$@,$<) +endef + +define DO_DED_CXX +$(echo_cmd) "DED_CXX $<" +$(Q)$(call EXEC_CXX,${DED_CC_FLAGS},'$@','$<') +$(Q)$(call LOG_CXX,tremded,${DED_CC_FLAGS},$@,$<) +endef + +define DO_WINDRES +$(echo_cmd) "WINDRES $<" +$(Q)$(WINDRES) -i $< -o $@ +endef + + +############################################################################# +# MAIN TARGETS +############################################################################# + +default: release +all: debug release + +debug: + @$(MAKE) targets B=$(BD) CFLAGS="$(CFLAGS) $(BASE_CFLAGS) $(DEPEND_CFLAGS)" \ + CXXFLAGS="$(BASE_CFLAGS) $(CXXFLAGS)" \ + OPTIMIZE="$(DEBUG_CFLAGS)" OPTIMIZEVM="$(DEBUG_CFLAGS)" \ + CLIENT_CFLAGS="$(CLIENT_CFLAGS)" SERVER_CFLAGS="$(SERVER_CFLAGS)" V=$(V) +release: + @$(MAKE) targets B=$(BR) CFLAGS="$(CFLAGS) $(BASE_CFLAGS) $(DEPEND_CFLAGS)" \ + CXXFLAGS="$(BASE_CFLAGS) $(CXXFLAGS)" \ + OPTIMIZE="-DNDEBUG $(OPTIMIZE)" OPTIMIZEVM="-DNDEBUG $(OPTIMIZEVM)" \ + CLIENT_CFLAGS="$(CLIENT_CFLAGS)" SERVER_CFLAGS="$(SERVER_CFLAGS)" V=$(V) + +ifneq ($(call bin_path, tput),) + TERM_COLUMNS=$(shell if c=`tput cols`; then echo $$(($$c-4)); else echo 76; fi) +else + TERM_COLUMNS=76 +endif + +define ADD_COPY_TARGET +TARGETS += $2 +$2: $1 + $(echo_cmd) "CP $$<" + @cp $1 $2 +endef + +# These functions allow us to generate rules for copying a list of files +# into the base directory of the build; this is useful for bundling libs, +# README files or whatever else +define GENERATE_COPY_TARGETS +$(foreach FILE,$1, \ + $(eval $(call ADD_COPY_TARGET, \ + $(FILE), \ + $(addprefix $(B)/,$(notdir $(FILE)))))) +endef + +$(call GENERATE_COPY_TARGETS,$(EXTRA_FILES)) + +ifneq ($(BUILD_CLIENT),0) + $(call GENERATE_COPY_TARGETS,$(CLIENT_EXTRA_FILES)) +endif + +NAKED_TARGETS=$(shell echo $(TARGETS) | sed -e "s!$(B)/!!g") + +print_list=-@for i in $(1); \ + do \ + echo " $$i"; \ + done + +ifneq ($(call bin_path, fmt),) + print_wrapped=@echo $(1) | fmt -w $(TERM_COLUMNS) | sed -e "s/^\(.*\)$$/ \1/" +else + print_wrapped=$(print_list) +endif + +#$(B)/compile_commands.json: $(B)/compile_commands.txt +# sed -i -e "$$ ! s/}/},/" $< +# echo '[' >$@ +# cat $< >>$@ +# echo ']' >>$@ + +# Create the build directories, check libraries and print out +# an informational message, then start building +targets: makedirs + @echo "" + @echo "Building in $(B):" + @echo " PLATFORM: $(PLATFORM)" + @echo " ARCH: $(ARCH)" + @echo " VERSION: $(VERSION)" + @echo " COMPILE_PLATFORM: $(COMPILE_PLATFORM)" + @echo " COMPILE_ARCH: $(COMPILE_ARCH)" + @echo " CC: $(CC)" + @echo " CXX: $(CXX)" + @echo " TOOLS_CC $(TOOLS_CC)" +ifeq ($(PLATFORM),mingw32) + @echo " WINDRES: $(WINDRES)" +endif + @echo "" + @echo " CFLAGS:" + $(call print_wrapped, $(CFLAGS) $(OPTIMIZE)) + @echo "" + @echo " CXXFLAGS:" + $(call print_wrapped, $(CXXFLAGS) $(OPTIMIZE)) + @echo "" + @echo " CLIENT_CFLAGS:" + $(call print_wrapped, $(CLIENT_CFLAGS)) + @echo "" + @echo " CLIENT_CXXFLAGS:" + $(call print_wrapped, $(CLIENT_CXXFLAGS)) + @echo "" + @echo " SERVER_CFLAGS:" + $(call print_wrapped, $(SERVER_CFLAGS)) + @echo "" + @echo " SERVER_CXXFLAGS:" + $(call print_wrapped, $(SERVER_CXXFLAGS)) + @echo "" + @echo " LDFLAGS:" + $(call print_wrapped, $(LDFLAGS)) + @echo "" + @echo " LIBS:" + $(call print_wrapped, $(LIBS)) + @echo "" + @echo " CLIENT_LIBS:" + $(call print_wrapped, $(CLIENT_LIBS)) + @echo "" + @echo " Output:" + $(call print_list, $(NAKED_TARGETS)) + @echo "" + @$(MAKE) $(TARGETS) $(B).zip V=$(V) + +$(B).zip: $(TARGETS) +ifeq ($(PLATFORM),darwin) + @("./make-macosx-app.sh" release $(ARCH); if [ "$$?" -eq 0 ] && [ -d "$(B)/Tremulous.app" ]; then rm -f $@; cd $(B) && zip --symlinks -r9 ../../$@ GPL COPYING CC `find "Tremulous.app" -print | sed -e "s!$(B)/!!g"`; else rm -f $@; cd $(B) && zip -r9 ../../$@ $(NAKED_TARGETS); fi) +else + @rm -f $@ + @(cd $(B) && zip -r9 ../../$@ $(NAKED_TARGETS)) +endif + +makedirs: + @if [ ! -d $(BUILD_DIR) ];then $(MKDIR) $(BUILD_DIR);fi + @if [ ! -d $(B) ];then $(MKDIR) $(B);fi + @if [ ! -d $(B)/lua ]; then $(MKDIR) $(B)/lua;fi + @if [ ! -d $(B)/script ]; then $(MKDIR) $(B)/script;fi + @if [ ! -d $(B)/script/rapidjson ]; then $(MKDIR) $(B)/script/rapidjson;fi + @if [ ! -d $(B)/nettle ]; then $(MKDIR) $(B)/nettle;fi + @if [ ! -d $(B)/semver ]; then $(MKDIR) $(B)/semver;fi + @if [ ! -d $(B)/client ];then $(MKDIR) $(B)/client;fi + @if [ ! -d $(B)/client/opus ];then $(MKDIR) $(B)/client/opus;fi + @if [ ! -d $(B)/client/vorbis ];then $(MKDIR) $(B)/client/vorbis;fi + @if [ ! -d $(B)/client/restclient ];then $(MKDIR) $(B)/client/restclient;fi + @if [ ! -d $(B)/ded ];then $(MKDIR) $(B)/ded;fi + @if [ ! -d $(B)/renderercommon ];then $(MKDIR) $(B)/renderercommon;fi + @if [ ! -d $(B)/renderergl1 ];then $(MKDIR) $(B)/renderergl1;fi + @if [ ! -d $(B)/renderergl2 ];then $(MKDIR) $(B)/renderergl2;fi + @if [ ! -d $(B)/renderergl2/glsl ];then $(MKDIR) $(B)/renderergl2/glsl;fi + @if [ ! -d $(B)/$(BASEGAME) ];then $(MKDIR) $(B)/$(BASEGAME);fi + @if [ ! -d $(B)/$(BASEGAME)/cgame ];then $(MKDIR) $(B)/$(BASEGAME)/cgame;fi + @if [ ! -d $(B)/$(BASEGAME)/game ];then $(MKDIR) $(B)/$(BASEGAME)/game;fi + @if [ ! -d $(B)/$(BASEGAME)/ui ];then $(MKDIR) $(B)/$(BASEGAME)/ui;fi + @if [ ! -d $(B)/$(BASEGAME)/qcommon ];then $(MKDIR) $(B)/$(BASEGAME)/qcommon;fi + @if [ ! -d $(B)/$(BASEGAME)/11 ];then $(MKDIR) $(B)/$(BASEGAME)/11;fi + @if [ ! -d $(B)/$(BASEGAME)/11/cgame ];then $(MKDIR) $(B)/$(BASEGAME)/11/cgame;fi + @if [ ! -d $(B)/$(BASEGAME)/11/ui ];then $(MKDIR) $(B)/$(BASEGAME)/11/ui;fi + @if [ ! -d $(B)/$(BASEGAME)/vm ];then $(MKDIR) $(B)/$(BASEGAME)/vm;fi + @if [ ! -d $(B)/$(BASEGAME)_11 ];then $(MKDIR) $(B)/$(BASEGAME)_11;fi + @if [ ! -d $(B)/$(BASEGAME)_11/vm ];then $(MKDIR) $(B)/$(BASEGAME)_11/vm;fi + @if [ ! -d $(B)/granger.dir ];then $(MKDIR) $(B)/granger.dir;fi + @if [ ! -d $(B)/granger.dir/src ];then $(MKDIR) $(B)/granger.dir/src;fi + @if [ ! -d $(B)/granger.dir/src/lua ];then $(MKDIR) $(B)/granger.dir/src/lua;fi + @if [ ! -d $(B)/granger.dir/src/premake ];then $(MKDIR) $(B)/granger.dir/src/premake;fi + @if [ ! -d $(B)/granger.dir/src/nettle ];then $(MKDIR) $(B)/granger.dir/src/nettle;fi + @if [ ! -d $(B)/tools ];then $(MKDIR) $(B)/tools;fi + @if [ ! -d $(B)/tools/asm ];then $(MKDIR) $(B)/tools/asm;fi + @if [ ! -d $(B)/tools/etc ];then $(MKDIR) $(B)/tools/etc;fi + @if [ ! -d $(B)/tools/rcc ];then $(MKDIR) $(B)/tools/rcc;fi + @if [ ! -d $(B)/tools/cpp ];then $(MKDIR) $(B)/tools/cpp;fi + @if [ ! -d $(B)/tools/lburg ];then $(MKDIR) $(B)/tools/lburg;fi + +############################################################################# +# QVM BUILD TOOLS +############################################################################# + +ifndef TOOLS_CC + # A compiler which probably produces native binaries + TOOLS_CC = gcc + #$(CC) +endif + +ifndef YACC + YACC = yacc +endif + +TOOLS_OPTIMIZE = -g -Wall -fno-strict-aliasing +TOOLS_CFLAGS += $(TOOLS_OPTIMIZE) \ + -DTEMPDIR=\"$(TEMPDIR)\" -DSYSTEM=\"\" \ + -I$(MOUNT_DIR) \ + -I$(Q3LCCSRCDIR) \ + -I$(LBURGDIR) +TOOLS_LIBS = +TOOLS_LDFLAGS = + +ifeq ($(GENERATE_DEPENDENCIES),1) + TOOLS_CFLAGS += -MMD +endif + +define DO_YACC +$(echo_cmd) "YACC $<" +$(Q)$(YACC) $< +$(Q)mv -f y.tab.c $@ +endef + +define DO_TOOLS_CC +$(echo_cmd) "TOOLS_CC $<" +$(Q)$(TOOLS_CC) $(TOOLS_CFLAGS) -o $@ -c $< +endef + +define DO_TOOLS_CC_DAGCHECK +$(echo_cmd) "TOOLS_CC_DAGCHECK $<" +$(Q)$(TOOLS_CC) $(TOOLS_CFLAGS) -Wno-unused -o $@ -c $< +endef + +LBURG = $(B)/tools/lburg/lburg$(TOOLS_BINEXT) +DAGCHECK_C = $(B)/tools/rcc/dagcheck.c +Q3RCC = $(B)/tools/q3rcc$(TOOLS_BINEXT) +Q3CPP = $(B)/tools/q3cpp$(TOOLS_BINEXT) +Q3LCC = $(B)/tools/q3lcc$(TOOLS_BINEXT) +Q3ASM = $(B)/tools/q3asm$(TOOLS_BINEXT) + +LBURGOBJ= \ + $(B)/tools/lburg/lburg.o \ + $(B)/tools/lburg/gram.o + +# override GNU Make built-in rule for converting gram.y to gram.c +%.c: %.y +ifeq ($(USE_YACC),1) + $(DO_YACC) +endif + +$(B)/tools/lburg/%.o: $(LBURGDIR)/%.c + $(DO_TOOLS_CC) + +$(LBURG): $(LBURGOBJ) + $(echo_cmd) "LD $@" + $(Q)$(TOOLS_CC) -std=gnu99 $(TOOLS_CFLAGS) $(TOOLS_LDFLAGS) -o $@ $^ $(TOOLS_LIBS) + +Q3RCCOBJ = \ + $(B)/tools/rcc/alloc.o \ + $(B)/tools/rcc/bind.o \ + $(B)/tools/rcc/bytecode.o \ + $(B)/tools/rcc/dag.o \ + $(B)/tools/rcc/dagcheck.o \ + $(B)/tools/rcc/decl.o \ + $(B)/tools/rcc/enode.o \ + $(B)/tools/rcc/error.o \ + $(B)/tools/rcc/event.o \ + $(B)/tools/rcc/expr.o \ + $(B)/tools/rcc/gen.o \ + $(B)/tools/rcc/init.o \ + $(B)/tools/rcc/inits.o \ + $(B)/tools/rcc/input.o \ + $(B)/tools/rcc/lex.o \ + $(B)/tools/rcc/list.o \ + $(B)/tools/rcc/main.o \ + $(B)/tools/rcc/null.o \ + $(B)/tools/rcc/output.o \ + $(B)/tools/rcc/prof.o \ + $(B)/tools/rcc/profio.o \ + $(B)/tools/rcc/simp.o \ + $(B)/tools/rcc/stmt.o \ + $(B)/tools/rcc/string.o \ + $(B)/tools/rcc/sym.o \ + $(B)/tools/rcc/symbolic.o \ + $(B)/tools/rcc/trace.o \ + $(B)/tools/rcc/tree.o \ + $(B)/tools/rcc/types.o + +$(DAGCHECK_C): $(LBURG) $(Q3LCCSRCDIR)/dagcheck.md + $(echo_cmd) "LBURG $(Q3LCCSRCDIR)/dagcheck.md" + $(Q)$(LBURG) $(Q3LCCSRCDIR)/dagcheck.md $@ + +$(B)/tools/rcc/dagcheck.o: $(DAGCHECK_C) + $(DO_TOOLS_CC_DAGCHECK) + +$(B)/tools/rcc/%.o: $(Q3LCCSRCDIR)/%.c + $(DO_TOOLS_CC) + +$(Q3RCC): $(Q3RCCOBJ) + $(echo_cmd) "LD $@" + $(Q)$(TOOLS_CC) $(TOOLS_CFLAGS) $(TOOLS_LDFLAGS) -o $@ $^ $(TOOLS_LIBS) + +Q3CPPOBJ = \ + $(B)/tools/cpp/cpp.o \ + $(B)/tools/cpp/lex.o \ + $(B)/tools/cpp/nlist.o \ + $(B)/tools/cpp/tokens.o \ + $(B)/tools/cpp/macro.o \ + $(B)/tools/cpp/eval.o \ + $(B)/tools/cpp/include.o \ + $(B)/tools/cpp/hideset.o \ + $(B)/tools/cpp/getopt.o \ + $(B)/tools/cpp/unix.o + +$(B)/tools/cpp/%.o: $(Q3CPPDIR)/%.c + $(DO_TOOLS_CC) + +$(Q3CPP): $(Q3CPPOBJ) + $(echo_cmd) "LD $@" + $(Q)$(TOOLS_CC) $(TOOLS_CFLAGS) $(TOOLS_LDFLAGS) -o $@ $^ $(TOOLS_LIBS) + +Q3LCCOBJ = \ + $(B)/tools/etc/lcc.o \ + $(B)/tools/etc/bytecode.o + +$(B)/tools/etc/%.o: $(Q3LCCETCDIR)/%.c + $(DO_TOOLS_CC) + +$(Q3LCC): $(Q3LCCOBJ) $(Q3RCC) $(Q3CPP) + $(echo_cmd) "LD $@" + $(Q)$(TOOLS_CC) $(TOOLS_CFLAGS) $(TOOLS_LDFLAGS) -o $@ $(Q3LCCOBJ) $(TOOLS_LIBS) + +define DO_Q3LCC +$(echo_cmd) "Q3LCC $<" +$(Q)$(Q3LCC) $(BASEGAME_CFLAGS) -o $@ $< +endef + +define DO_CGAME_Q3LCC +$(echo_cmd) "CGAME_Q3LCC $<" +$(Q)$(Q3LCC) $(BASEGAME_CFLAGS) -DCGAME -o $@ $< +endef + +define DO_GAME_Q3LCC +$(echo_cmd) "GAME_Q3LCC $<" +$(Q)$(Q3LCC) $(BASEGAME_CFLAGS) -DGAME -o $@ $< +endef + +define DO_UI_Q3LCC +$(echo_cmd) "UI_Q3LCC $<" +$(Q)$(Q3LCC) $(BASEGAME_CFLAGS) -DUI -o $@ $< +endef + +define DO_CGAME_Q3LCC_11 +$(echo_cmd) "CGAME_Q3LCC_11 $<" +$(Q)$(Q3LCC) $(BASEGAME_CFLAGS) -DMODULE_INTERFACE_11 -DCGAME -o $@ $< +endef + +define DO_UI_Q3LCC_11 +$(echo_cmd) "UI_Q3LCC_11 $<" +$(Q)$(Q3LCC) $(BASEGAME_CFLAGS) -DMODULE_INTERFACE_11 -DUI -o $@ $< +endef + +Q3ASMOBJ = \ + $(B)/tools/asm/q3asm.o \ + $(B)/tools/asm/cmdlib.o + +$(B)/tools/asm/%.o: $(Q3ASMDIR)/%.c + $(DO_TOOLS_CC) + +$(Q3ASM): $(Q3ASMOBJ) + $(echo_cmd) "LD $@" + $(Q)$(TOOLS_CC) $(TOOLS_CFLAGS) $(TOOLS_LDFLAGS) -o $@ $^ $(TOOLS_LIBS) + +############################################################################# +# GRANGER +############################################################################# + +ifeq ($(ARCH),x86_64) + ARCHFLAG=-m64 +else +ifeq ($(ARCH),x86) + ARCHFLAG=-m32 +endif +endif + +GRANGER_CFLAGS += $(ARCHFLAG) -fPIC -fpic $(LUACFLAGS) + +ifeq ($(PLATFORM),darwin) +GRANGER_CFLAGS += -DLUA_USE_MACOSX +else +ifeq ($(PLATFORM),linux) +GRANGER_CFLAGS += -DLUA_USE_LINUX +endif +endif + +GRANGEROBJ = \ + $(B)/granger.dir/src/lnettlelib.o \ + $(B)/granger.dir/src/main.o \ + $(B)/granger.dir/src/strvec.o \ + $(B)/granger.dir/src/lua/lapi.o \ + $(B)/granger.dir/src/lua/lauxlib.o \ + $(B)/granger.dir/src/lua/lbaselib.o \ + $(B)/granger.dir/src/lua/lbitlib.o \ + $(B)/granger.dir/src/lua/lcode.o \ + $(B)/granger.dir/src/lua/lcorolib.o \ + $(B)/granger.dir/src/lua/lctype.o \ + $(B)/granger.dir/src/lua/ldblib.o \ + $(B)/granger.dir/src/lua/ldebug.o \ + $(B)/granger.dir/src/lua/ldo.o \ + $(B)/granger.dir/src/lua/ldump.o \ + $(B)/granger.dir/src/lua/lfunc.o \ + $(B)/granger.dir/src/lua/lgc.o \ + $(B)/granger.dir/src/lua/linit.o \ + $(B)/granger.dir/src/lua/liolib.o \ + $(B)/granger.dir/src/lua/llex.o \ + $(B)/granger.dir/src/lua/lmathlib.o \ + $(B)/granger.dir/src/lua/lmem.o \ + $(B)/granger.dir/src/lua/loadlib.o \ + $(B)/granger.dir/src/lua/lobject.o \ + $(B)/granger.dir/src/lua/lopcodes.o \ + $(B)/granger.dir/src/lua/loslib.o \ + $(B)/granger.dir/src/lua/lparser.o \ + $(B)/granger.dir/src/lua/lstate.o \ + $(B)/granger.dir/src/lua/lstring.o \ + $(B)/granger.dir/src/lua/lstrlib.o \ + $(B)/granger.dir/src/lua/ltable.o \ + $(B)/granger.dir/src/lua/ltablib.o \ + $(B)/granger.dir/src/lua/ltm.o \ + $(B)/granger.dir/src/lua/lundump.o \ + $(B)/granger.dir/src/lua/lutf8lib.o \ + $(B)/granger.dir/src/lua/lvm.o \ + $(B)/granger.dir/src/lua/lzio.o \ + $(B)/granger.dir/src/premake/os_access.o \ + $(B)/granger.dir/src/premake/os_chdir.o \ + $(B)/granger.dir/src/premake/os_copyfile.o \ + $(B)/granger.dir/src/premake/os_elevate.o \ + $(B)/granger.dir/src/premake/os_getcwd.o \ + $(B)/granger.dir/src/premake/os_is64bit.o \ + $(B)/granger.dir/src/premake/os_isdir.o \ + $(B)/granger.dir/src/premake/os_isfile.o \ + $(B)/granger.dir/src/premake/os_match.o \ + $(B)/granger.dir/src/premake/os_mkdir.o \ + $(B)/granger.dir/src/premake/os_pathsearch.o \ + $(B)/granger.dir/src/premake/os_rmdir.o \ + $(B)/granger.dir/src/premake/os_stat.o \ + $(B)/granger.dir/src/premake/path_getabsolute.o \ + $(B)/granger.dir/src/premake/path_getrelative.o \ + $(B)/granger.dir/src/premake/path_isabsolute.o \ + $(B)/granger.dir/src/premake/path_join.o \ + $(B)/granger.dir/src/premake/path_normalize.o \ + $(B)/granger.dir/src/premake/path_translate.o \ + $(B)/granger.dir/src/premake/premake.o \ + $(B)/granger.dir/src/premake/string_endswith.o \ + $(B)/granger.dir/src/nettle/md5-compress.o \ + $(B)/granger.dir/src/nettle/md5.o \ + $(B)/granger.dir/src/nettle/sha256-compress.o \ + $(B)/granger.dir/src/nettle/sha256.o \ + $(B)/granger.dir/src/nettle/write-be32.o \ + $(B)/granger.dir/src/nettle/write-le32.o + +define DO_GRANGER_CC + $(echo_cmd) "GRANGER_CC $<" + $(Q)$(call EXEC_CC,-std=gnu99 -DGRANGER ${GRANGER_CFLAGS} ${OPTIMIZE},'$@','$<') + $(Q)$(call LOG_CC,granger,-std=gnu99 ${GRANGER_CFLAGS} ${OPTIMIZE},$@,$<) +endef + + define DO_GRANGER_CPP + $(echo_cmd) "GRANGER_CC $<" + $(Q)$(call EXEC_CC,-std=gnu99 -DGRANGER ${GRANGER_CFLAGS} ${OPTIMIZE},'$@','$<') + $(Q)$(call LOG_CC,granger,-std=gnu99 ${GRANGER_CFLAGS} ${OPTIMIZE},$@,$<) +endef + +$(B)/granger.dir/src/lua/%.o: $(LUADIR)/%.c + $(DO_GRANGER_CC) + +$(B)/granger.dir/src/premake/%.o: $(GRANGERDIR)/premake/%.c + $(DO_GRANGER_CC) + +$(B)/granger.dir/src/nettle/%.o: $(GRANGERDIR)/nettle/%.c + $(DO_GRANGER_CC) + +$(B)/granger.dir/src/%.o: $(GRANGERDIR)/%.c + $(DO_GRANGER_CC) + +$(B)/granger.dir/src/%.o: $(GRANGERDIR)/%.cpp + $(DO_GRANGER_CPP) + +$(B)/granger$(FULLBINEXT): $(GRANGEROBJ) + $(echo_cmd) "LD $@" + $(Q)$(CC) $(LDFLAGS) -o $@ $(GRANGEROBJ) $(GRANGER_LIBS) + +ifneq ($(BUILD_GRANGER),0) +TARGETS += $(B)/granger$(FULLBINEXT) +endif + +$(B)/scripts: + rsync -rupE --exclude=".*" scripts $(B) + +TARGETS += $(B)/scripts + +$(B)/GPL: + rsync GPL $(B) +$(B)/COPYING: + rsync COPYING $(B) +$(B)/CC: + rsync CC $(B) + +TARGETS += $(B)/GPL $(B)/COPYING $(B)/CC + +############################################################################# +# LUA +############################################################################# + +#LUACFLAGS=-Wall -Wextra -fPIC -fpic +LUACFLAGS= $(ARCHFLAG) -fPIC -fpic + +ifeq ($(PLATFORM),darwin) +LUACFLAGS += -DLUA_USE_MACOSX +else +ifeq ($(PLATFORM),linux) +LUACFLAGS += -DLUA_USE_LINUX +endif +endif + +LUAOBJ = \ + $(B)/lua/lapi.o \ + $(B)/lua/lcode.o \ + $(B)/lua/lctype.o \ + $(B)/lua/ldebug.o \ + $(B)/lua/ldo.o \ + $(B)/lua/ldump.o \ + $(B)/lua/lfunc.o \ + $(B)/lua/lgc.o \ + $(B)/lua/llex.o \ + $(B)/lua/lmem.o \ + $(B)/lua/lobject.o \ + $(B)/lua/lopcodes.o \ + $(B)/lua/lparser.o \ + $(B)/lua/lstate.o \ + $(B)/lua/lstring.o \ + $(B)/lua/ltable.o \ + $(B)/lua/ltm.o \ + $(B)/lua/lundump.o \ + $(B)/lua/lvm.o \ + $(B)/lua/lzio.o \ + $(B)/lua/lauxlib.o \ + $(B)/lua/lbaselib.o \ + $(B)/lua/lbitlib.o \ + $(B)/lua/lcorolib.o \ + $(B)/lua/ldblib.o \ + $(B)/lua/liolib.o \ + $(B)/lua/lmathlib.o \ + $(B)/lua/loslib.o \ + $(B)/lua/lstrlib.o \ + $(B)/lua/ltablib.o \ + $(B)/lua/lutf8lib.o \ + $(B)/lua/loadlib.o \ + $(B)/lua/linit.o + +define DO_LUA_CC + $(echo_cmd) "LUA_CC $<" + $(Q)$(call EXEC_CC,${LUACFLAGS} ${OPTIMIZE},'$@','$<') + $(Q)$(call LOG_CC,lua,${LUACFLAGS} ${OPTIMIZE},$@,$<) +endef + +LUACFLAGS += -I$(EXTERNAL_DIR)/lua-5.3.3/include -I$(EXTERNAL_DIR)/sol +CFLAGS += $(LUACFLAGS) +CXXFLAGS += $(LUACFLAGS) + +$(B)/lua/%.o: $(LUADIR)/%.c + $(DO_LUA_CC) + +############################################################################# +# Script API +# FIXME Disabled for the time being +############################################################################# + +SCRIPT_INCLUDES=-I$(MOUNT_DIR) -I$(EXTERNAL_DIR)/rapidjson -I$(EXTERNAL_DIR)/sol -I$(EXTERNAL_DIR)/nettle-3.3 +define DO_SCRIPT_CXX + $(echo_cmd) "SCRIPT_CXX $<" + $(Q)$(call EXEC_CXX,${NOTSHLIBCFLAGS} ${SCRIPT_INCLUDES} ${LUACFLAGS} ${OPTIMIZE},'$@','$<') + $(Q)$(call LOG_CXX,script,${NOTSHLIBCFLAGS} ${SCRIPT_INCLUDES} ${LUACFLAGS} ${OPTIMIZE},'$@','$<') +endef + +define DO_SCRIPT_CC + $(echo_cmd) "SCRIPT_CC $<" + $(Q)$(call EXEC_CC,${NOTSHLIBCFLAGS} ${SCRIPT_INCLUDES} ${LUACFLAGS} ${OPTIMIZE},'$@','$<') + $(Q)$(call LOG_CC,script,${NOTSHLIBCFLAGS} ${SCRIPT_INCLUDES} ${LUACFLAGS} ${OPTIMIZE},'$@','$<') +endef + +SCRIPTOBJ = \ + $(B)/script/lnettlelib.o \ + $(B)/script/rapidjson/document.o \ + $(B)/script/rapidjson/rapidjson.o \ + $(B)/script/rapidjson/schema.o \ + $(B)/script/rapidjson/values.o + +CFLAGS += -I${LUA_RAPIDJSONDIR} -I${SCRIPT_INCLUDES} + +$(B)/script/%.o: $(SCRIPTDIR)/%.c + $(DO_SCRIPT_CC) + +$(B)/script/rapidjson/%.o: $(LUA_RAPIDJSONDIR)/%.cpp + $(DO_SCRIPT_CXX) + +############################################################################# +# Nettle +############################################################################# + +NETTLECFLAGS=$(ARCHFLAG) -fPIC -fpic + +define DO_NETTLE_CC + $(echo_cmd) "NETTLE_CC $<" + $(Q)$(call EXEC_CC,${NETTLECFLAGS},'$@','$<') + $(Q)$(call LOG_CC,nettle,${NETTLECFLAGS},'$@','$<') +endef + +NETTLEOBJ = \ + $(B)/nettle/bignum.o \ + $(B)/nettle/bignum-random.o \ + $(B)/nettle/bignum-random-prime.o \ + $(B)/nettle/buffer.o \ + $(B)/nettle/buffer-init.o \ + $(B)/nettle/gmp-glue.o \ + $(B)/nettle/mini-gmp.o \ + $(B)/nettle/pkcs1.o \ + $(B)/nettle/pkcs1-rsa-sha256.o \ + $(B)/nettle/realloc.o \ + $(B)/nettle/rsa.o \ + $(B)/nettle/rsa2sexp.o \ + $(B)/nettle/rsa-keygen.o \ + $(B)/nettle/rsa-sha256-sign.o \ + $(B)/nettle/rsa-sha256-verify.o \ + $(B)/nettle/rsa-sign.o \ + $(B)/nettle/rsa-verify.o \ + $(B)/nettle/sexp.o \ + $(B)/nettle/sexp-format.o \ + $(B)/nettle/sexp2bignum.o \ + $(B)/nettle/sexp2rsa.o \ + $(B)/nettle/sha256-compress.o \ + $(B)/nettle/sha256.o \ + $(B)/nettle/write-be32.o + +CFLAGS += -I$(NETTLEDIR) + +$(B)/nettle/%.o: $(NETTLEDIR)/nettle/%.c + $(DO_NETTLE_CC) + +############################################################################# +# Semver +############################################################################# + +SEMVERCFLAGS=$(ARCHFLAG) -fPIC -fpic -I$(SEMVERDIR)/src/include + +define DO_SEMVER_CXX + $(echo_cmd) "SEMVER_CC $<" + $(CXX) -std=c++1y ${CXXFLAGS} ${SEMVERCFLAGS} -o $@ -c $< +endef + +SEMVEROBJ = \ + $(B)/semver/semantic_version_v1.o \ + $(B)/semver/semantic_version_v2.o + +CFLAGS += -I$(SEMVERDIR)/src/include + +$(B)/semver/%.o: $(SEMVERDIR)/src/lib/%.cpp + $(DO_SEMVER_CXX) + +############################################################################# +# CLIENT/SERVER +############################################################################# + +# FIXME: This should be CLIENT_INCLUDES and SERVER_INCLUDES to differentiate +# from GRANGER_INCLUDES etc. +CFLAGS += -I$(MOUNT_DIR) + +Q3OBJ = \ + $(B)/client/cl_cgame.o \ + $(B)/client/cl_cin.o \ + $(B)/client/cl_console.o \ + $(B)/client/cl_input.o \ + $(B)/client/cl_keys.o \ + $(B)/client/cl_main.o \ + $(B)/client/cl_net_chan.o \ + $(B)/client/cl_parse.o \ + $(B)/client/cl_scrn.o \ + $(B)/client/cl_ui.o \ + $(B)/client/cl_updates.o \ + $(B)/client/cl_rest.o \ + $(B)/client/cl_avi.o \ + \ + $(B)/client/q3_lauxlib.o \ + \ + $(B)/client/cm_load.o \ + $(B)/client/cm_patch.o \ + $(B)/client/cm_polylib.o \ + $(B)/client/cm_test.o \ + $(B)/client/cm_trace.o \ + \ + $(B)/client/cmd.o \ + $(B)/client/common.o \ + $(B)/client/crypto.o \ + $(B)/client/cvar.o \ + $(B)/client/files.o \ + $(B)/client/md4.o \ + $(B)/client/md5.o \ + $(B)/client/msg.o \ + $(B)/client/net_chan.o \ + $(B)/client/net_ip.o \ + $(B)/client/huffman.o \ + $(B)/client/parse.o \ + \ + $(B)/client/snd_adpcm.o \ + $(B)/client/snd_dma.o \ + $(B)/client/snd_mem.o \ + $(B)/client/snd_mix.o \ + $(B)/client/snd_wavelet.o \ + \ + $(B)/client/snd_main.o \ + $(B)/client/snd_codec.o \ + $(B)/client/snd_codec_wav.o \ + $(B)/client/snd_codec_ogg.o \ + $(B)/client/snd_codec_opus.o \ + \ + $(B)/client/qal.o \ + $(B)/client/snd_openal.o \ + \ + $(B)/client/cl_curl.o \ + \ + $(B)/client/sv_ccmds.o \ + $(B)/client/sv_client.o \ + $(B)/client/sv_game.o \ + $(B)/client/sv_init.o \ + $(B)/client/sv_main.o \ + $(B)/client/sv_net_chan.o \ + $(B)/client/sv_snapshot.o \ + $(B)/client/sv_world.o \ + \ + $(B)/client/q_math.o \ + $(B)/client/q_shared.o \ + \ + $(B)/client/unzip.o \ + $(B)/client/ioapi.o \ + $(B)/client/puff.o \ + $(B)/client/vm.o \ + $(B)/client/vm_interpreted.o \ + \ + \ + $(B)/client/sdl_input.o \ + $(B)/client/sdl_snd.o \ + \ + $(B)/client/con_log.o \ + $(B)/client/sys_main.o + +ifdef MINGW + Q3OBJ += \ + $(B)/client/con_passive.o +else + Q3OBJ += \ + $(B)/client/con_tty.o +endif + +Q3OBJ += $(LUAOBJ) $(SCRIPTOBJ) $(NETTLEOBJ) $(SEMVEROBJ) + +Q3R2OBJ = \ + $(B)/renderergl2/tr_animation.o \ + $(B)/renderergl2/tr_backend.o \ + $(B)/renderergl2/tr_bsp.o \ + $(B)/renderergl2/tr_cmds.o \ + $(B)/renderergl2/tr_curve.o \ + $(B)/renderergl2/tr_dsa.o \ + $(B)/renderergl2/tr_extramath.o \ + $(B)/renderergl2/tr_extensions.o \ + $(B)/renderergl2/tr_fbo.o \ + $(B)/renderergl2/tr_flares.o \ + $(B)/renderergl2/tr_font.o \ + $(B)/renderergl2/tr_glsl.o \ + $(B)/renderergl2/tr_image.o \ + $(B)/renderergl2/tr_image_bmp.o \ + $(B)/renderergl2/tr_image_jpg.o \ + $(B)/renderergl2/tr_image_pcx.o \ + $(B)/renderergl2/tr_image_png.o \ + $(B)/renderergl2/tr_image_tga.o \ + $(B)/renderergl2/tr_image_dds.o \ + $(B)/renderergl2/tr_init.o \ + $(B)/renderergl2/tr_light.o \ + $(B)/renderergl2/tr_main.o \ + $(B)/renderergl2/tr_marks.o \ + $(B)/renderergl2/tr_mesh.o \ + $(B)/renderergl2/tr_model.o \ + $(B)/renderergl2/tr_model_iqm.o \ + $(B)/renderergl2/tr_noise.o \ + $(B)/renderergl2/tr_postprocess.o \ + $(B)/renderergl2/tr_scene.o \ + $(B)/renderergl2/tr_shade.o \ + $(B)/renderergl2/tr_shade_calc.o \ + $(B)/renderergl2/tr_shader.o \ + $(B)/renderergl2/tr_shadows.o \ + $(B)/renderergl2/tr_sky.o \ + $(B)/renderergl2/tr_surface.o \ + $(B)/renderergl2/tr_vbo.o \ + $(B)/renderergl2/tr_world.o \ + \ + $(B)/renderercommon/sdl_gamma.o \ + $(B)/renderercommon/sdl_glimp.o + +ifneq ($(USE_RENDERER_DLOPEN), 0) + Q3R2OBJ += \ + $(B)/renderergl1/q_shared.o \ + $(B)/renderergl1/puff.o \ + $(B)/renderergl1/q_math.o \ + $(B)/renderergl1/tr_subs.o +endif + +Q3R2STRINGOBJ = \ + $(B)/renderergl2/glsl/bokeh_fp.o \ + $(B)/renderergl2/glsl/bokeh_vp.o \ + $(B)/renderergl2/glsl/calclevels4x_fp.o \ + $(B)/renderergl2/glsl/calclevels4x_vp.o \ + $(B)/renderergl2/glsl/depthblur_fp.o \ + $(B)/renderergl2/glsl/depthblur_vp.o \ + $(B)/renderergl2/glsl/dlight_fp.o \ + $(B)/renderergl2/glsl/dlight_vp.o \ + $(B)/renderergl2/glsl/down4x_fp.o \ + $(B)/renderergl2/glsl/down4x_vp.o \ + $(B)/renderergl2/glsl/fogpass_fp.o \ + $(B)/renderergl2/glsl/fogpass_vp.o \ + $(B)/renderergl2/glsl/generic_fp.o \ + $(B)/renderergl2/glsl/generic_vp.o \ + $(B)/renderergl2/glsl/lightall_fp.o \ + $(B)/renderergl2/glsl/lightall_vp.o \ + $(B)/renderergl2/glsl/pshadow_fp.o \ + $(B)/renderergl2/glsl/pshadow_vp.o \ + $(B)/renderergl2/glsl/shadowfill_fp.o \ + $(B)/renderergl2/glsl/shadowfill_vp.o \ + $(B)/renderergl2/glsl/shadowmask_fp.o \ + $(B)/renderergl2/glsl/shadowmask_vp.o \ + $(B)/renderergl2/glsl/ssao_fp.o \ + $(B)/renderergl2/glsl/ssao_vp.o \ + $(B)/renderergl2/glsl/texturecolor_fp.o \ + $(B)/renderergl2/glsl/texturecolor_vp.o \ + $(B)/renderergl2/glsl/tonemap_fp.o \ + $(B)/renderergl2/glsl/tonemap_vp.o + +# GL1 + +Q3ROBJ = \ + $(B)/renderergl1/tr_animation.o \ + $(B)/renderergl1/tr_backend.o \ + $(B)/renderergl1/tr_bsp.o \ + $(B)/renderergl1/tr_cmds.o \ + $(B)/renderergl1/tr_curve.o \ + $(B)/renderergl1/tr_flares.o \ + $(B)/renderergl1/tr_font.o \ + $(B)/renderergl1/tr_image.o \ + $(B)/renderergl1/tr_image_bmp.o \ + $(B)/renderergl1/tr_image_jpg.o \ + $(B)/renderergl1/tr_image_pcx.o \ + $(B)/renderergl1/tr_image_png.o \ + $(B)/renderergl1/tr_image_tga.o \ + $(B)/renderergl1/tr_init.o \ + $(B)/renderergl1/tr_light.o \ + $(B)/renderergl1/tr_main.o \ + $(B)/renderergl1/tr_marks.o \ + $(B)/renderergl1/tr_mesh.o \ + $(B)/renderergl1/tr_model.o \ + $(B)/renderergl1/tr_model_iqm.o \ + $(B)/renderergl1/tr_noise.o \ + $(B)/renderergl1/tr_scene.o \ + $(B)/renderergl1/tr_shade.o \ + $(B)/renderergl1/tr_shade_calc.o \ + $(B)/renderergl1/tr_shader.o \ + $(B)/renderergl1/tr_shadows.o \ + $(B)/renderergl1/tr_sky.o \ + $(B)/renderergl1/tr_surface.o \ + $(B)/renderergl1/tr_world.o \ + \ + $(B)/renderercommon/sdl_gamma.o \ + $(B)/renderercommon/sdl_glimp.o + +ifneq ($(USE_RENDERER_DLOPEN), 0) + Q3ROBJ += \ + $(B)/renderergl1/q_shared.o \ + $(B)/renderergl1/puff.o \ + $(B)/renderergl1/q_math.o \ + $(B)/renderergl1/tr_subs.o +endif + +ifneq ($(USE_INTERNAL_JPEG),0) + JPGOBJ = \ + $(B)/renderercommon/jaricom.o \ + $(B)/renderercommon/jcapimin.o \ + $(B)/renderercommon/jcapistd.o \ + $(B)/renderercommon/jcarith.o \ + $(B)/renderercommon/jccoefct.o \ + $(B)/renderercommon/jccolor.o \ + $(B)/renderercommon/jcdctmgr.o \ + $(B)/renderercommon/jchuff.o \ + $(B)/renderercommon/jcinit.o \ + $(B)/renderercommon/jcmainct.o \ + $(B)/renderercommon/jcmarker.o \ + $(B)/renderercommon/jcmaster.o \ + $(B)/renderercommon/jcomapi.o \ + $(B)/renderercommon/jcparam.o \ + $(B)/renderercommon/jcprepct.o \ + $(B)/renderercommon/jcsample.o \ + $(B)/renderercommon/jctrans.o \ + $(B)/renderercommon/jdapimin.o \ + $(B)/renderercommon/jdapistd.o \ + $(B)/renderercommon/jdarith.o \ + $(B)/renderercommon/jdatadst.o \ + $(B)/renderercommon/jdatasrc.o \ + $(B)/renderercommon/jdcoefct.o \ + $(B)/renderercommon/jdcolor.o \ + $(B)/renderercommon/jddctmgr.o \ + $(B)/renderercommon/jdhuff.o \ + $(B)/renderercommon/jdinput.o \ + $(B)/renderercommon/jdmainct.o \ + $(B)/renderercommon/jdmarker.o \ + $(B)/renderercommon/jdmaster.o \ + $(B)/renderercommon/jdmerge.o \ + $(B)/renderercommon/jdpostct.o \ + $(B)/renderercommon/jdsample.o \ + $(B)/renderercommon/jdtrans.o \ + $(B)/renderercommon/jerror.o \ + $(B)/renderercommon/jfdctflt.o \ + $(B)/renderercommon/jfdctfst.o \ + $(B)/renderercommon/jfdctint.o \ + $(B)/renderercommon/jidctflt.o \ + $(B)/renderercommon/jidctfst.o \ + $(B)/renderercommon/jidctint.o \ + $(B)/renderercommon/jmemmgr.o \ + $(B)/renderercommon/jmemnobs.o \ + $(B)/renderercommon/jquant1.o \ + $(B)/renderercommon/jquant2.o \ + $(B)/renderercommon/jutils.o +endif + +ifeq ($(ARCH),x86) + Q3OBJ += \ + $(B)/client/snd_mixa.o \ + $(B)/client/matha.o \ + $(B)/client/snapvector.o +endif +ifeq ($(ARCH),x86_64) + Q3OBJ += \ + $(B)/client/snapvector.o +endif + +ifeq ($(NEED_OPUS),1) +ifeq ($(USE_INTERNAL_OPUS),1) +Q3OBJ += \ + $(B)/client/opus/analysis.o \ + $(B)/client/opus/mlp.o \ + $(B)/client/opus/mlp_data.o \ + $(B)/client/opus/opus.o \ + $(B)/client/opus/opus_decoder.o \ + $(B)/client/opus/opus_encoder.o \ + $(B)/client/opus/opus_multistream.o \ + $(B)/client/opus/opus_multistream_encoder.o \ + $(B)/client/opus/opus_multistream_decoder.o \ + $(B)/client/opus/repacketizer.o \ + \ + $(B)/client/opus/bands.o \ + $(B)/client/opus/celt.o \ + $(B)/client/opus/cwrs.o \ + $(B)/client/opus/entcode.o \ + $(B)/client/opus/entdec.o \ + $(B)/client/opus/entenc.o \ + $(B)/client/opus/kiss_fft.o \ + $(B)/client/opus/laplace.o \ + $(B)/client/opus/mathops.o \ + $(B)/client/opus/mdct.o \ + $(B)/client/opus/modes.o \ + $(B)/client/opus/pitch.o \ + $(B)/client/opus/celt_encoder.o \ + $(B)/client/opus/celt_decoder.o \ + $(B)/client/opus/celt_lpc.o \ + $(B)/client/opus/quant_bands.o \ + $(B)/client/opus/rate.o \ + $(B)/client/opus/vq.o \ + \ + $(B)/client/opus/CNG.o \ + $(B)/client/opus/code_signs.o \ + $(B)/client/opus/init_decoder.o \ + $(B)/client/opus/decode_core.o \ + $(B)/client/opus/decode_frame.o \ + $(B)/client/opus/decode_parameters.o \ + $(B)/client/opus/decode_indices.o \ + $(B)/client/opus/decode_pulses.o \ + $(B)/client/opus/decoder_set_fs.o \ + $(B)/client/opus/dec_API.o \ + $(B)/client/opus/enc_API.o \ + $(B)/client/opus/encode_indices.o \ + $(B)/client/opus/encode_pulses.o \ + $(B)/client/opus/gain_quant.o \ + $(B)/client/opus/interpolate.o \ + $(B)/client/opus/LP_variable_cutoff.o \ + $(B)/client/opus/NLSF_decode.o \ + $(B)/client/opus/NSQ.o \ + $(B)/client/opus/NSQ_del_dec.o \ + $(B)/client/opus/PLC.o \ + $(B)/client/opus/shell_coder.o \ + $(B)/client/opus/tables_gain.o \ + $(B)/client/opus/tables_LTP.o \ + $(B)/client/opus/tables_NLSF_CB_NB_MB.o \ + $(B)/client/opus/tables_NLSF_CB_WB.o \ + $(B)/client/opus/tables_other.o \ + $(B)/client/opus/tables_pitch_lag.o \ + $(B)/client/opus/tables_pulses_per_block.o \ + $(B)/client/opus/VAD.o \ + $(B)/client/opus/control_audio_bandwidth.o \ + $(B)/client/opus/quant_LTP_gains.o \ + $(B)/client/opus/VQ_WMat_EC.o \ + $(B)/client/opus/HP_variable_cutoff.o \ + $(B)/client/opus/NLSF_encode.o \ + $(B)/client/opus/NLSF_VQ.o \ + $(B)/client/opus/NLSF_unpack.o \ + $(B)/client/opus/NLSF_del_dec_quant.o \ + $(B)/client/opus/process_NLSFs.o \ + $(B)/client/opus/stereo_LR_to_MS.o \ + $(B)/client/opus/stereo_MS_to_LR.o \ + $(B)/client/opus/check_control_input.o \ + $(B)/client/opus/control_SNR.o \ + $(B)/client/opus/init_encoder.o \ + $(B)/client/opus/control_codec.o \ + $(B)/client/opus/A2NLSF.o \ + $(B)/client/opus/ana_filt_bank_1.o \ + $(B)/client/opus/biquad_alt.o \ + $(B)/client/opus/bwexpander_32.o \ + $(B)/client/opus/bwexpander.o \ + $(B)/client/opus/debug.o \ + $(B)/client/opus/decode_pitch.o \ + $(B)/client/opus/inner_prod_aligned.o \ + $(B)/client/opus/lin2log.o \ + $(B)/client/opus/log2lin.o \ + $(B)/client/opus/LPC_analysis_filter.o \ + $(B)/client/opus/LPC_inv_pred_gain.o \ + $(B)/client/opus/table_LSF_cos.o \ + $(B)/client/opus/NLSF2A.o \ + $(B)/client/opus/NLSF_stabilize.o \ + $(B)/client/opus/NLSF_VQ_weights_laroia.o \ + $(B)/client/opus/pitch_est_tables.o \ + $(B)/client/opus/resampler.o \ + $(B)/client/opus/resampler_down2_3.o \ + $(B)/client/opus/resampler_down2.o \ + $(B)/client/opus/resampler_private_AR2.o \ + $(B)/client/opus/resampler_private_down_FIR.o \ + $(B)/client/opus/resampler_private_IIR_FIR.o \ + $(B)/client/opus/resampler_private_up2_HQ.o \ + $(B)/client/opus/resampler_rom.o \ + $(B)/client/opus/sigm_Q15.o \ + $(B)/client/opus/sort.o \ + $(B)/client/opus/sum_sqr_shift.o \ + $(B)/client/opus/stereo_decode_pred.o \ + $(B)/client/opus/stereo_encode_pred.o \ + $(B)/client/opus/stereo_find_predictor.o \ + $(B)/client/opus/stereo_quant_pred.o \ + \ + $(B)/client/opus/apply_sine_window_FLP.o \ + $(B)/client/opus/corrMatrix_FLP.o \ + $(B)/client/opus/encode_frame_FLP.o \ + $(B)/client/opus/find_LPC_FLP.o \ + $(B)/client/opus/find_LTP_FLP.o \ + $(B)/client/opus/find_pitch_lags_FLP.o \ + $(B)/client/opus/find_pred_coefs_FLP.o \ + $(B)/client/opus/LPC_analysis_filter_FLP.o \ + $(B)/client/opus/LTP_analysis_filter_FLP.o \ + $(B)/client/opus/LTP_scale_ctrl_FLP.o \ + $(B)/client/opus/noise_shape_analysis_FLP.o \ + $(B)/client/opus/prefilter_FLP.o \ + $(B)/client/opus/process_gains_FLP.o \ + $(B)/client/opus/regularize_correlations_FLP.o \ + $(B)/client/opus/residual_energy_FLP.o \ + $(B)/client/opus/solve_LS_FLP.o \ + $(B)/client/opus/warped_autocorrelation_FLP.o \ + $(B)/client/opus/wrappers_FLP.o \ + $(B)/client/opus/autocorrelation_FLP.o \ + $(B)/client/opus/burg_modified_FLP.o \ + $(B)/client/opus/bwexpander_FLP.o \ + $(B)/client/opus/energy_FLP.o \ + $(B)/client/opus/inner_product_FLP.o \ + $(B)/client/opus/k2a_FLP.o \ + $(B)/client/opus/levinsondurbin_FLP.o \ + $(B)/client/opus/LPC_inv_pred_gain_FLP.o \ + $(B)/client/opus/pitch_analysis_core_FLP.o \ + $(B)/client/opus/scale_copy_vector_FLP.o \ + $(B)/client/opus/scale_vector_FLP.o \ + $(B)/client/opus/schur_FLP.o \ + $(B)/client/opus/sort_FLP.o \ + \ + $(B)/client/http.o \ + $(B)/client/info.o \ + $(B)/client/internal.o \ + $(B)/client/opusfile.o \ + $(B)/client/stream.o \ + $(B)/client/wincerts.o +endif +endif + +ifeq ($(NEED_OGG),1) +ifeq ($(USE_INTERNAL_OGG),1) +Q3OBJ += \ + $(B)/client/bitwise.o \ + $(B)/client/framing.o +endif +endif + +ifeq ($(USE_CODEC_VORBIS),1) +ifeq ($(USE_INTERNAL_VORBIS),1) +Q3OBJ += \ + $(B)/client/vorbis/analysis.o \ + $(B)/client/vorbis/bitrate.o \ + $(B)/client/vorbis/block.o \ + $(B)/client/vorbis/codebook.o \ + $(B)/client/vorbis/envelope.o \ + $(B)/client/vorbis/floor0.o \ + $(B)/client/vorbis/floor1.o \ + $(B)/client/vorbis/info.o \ + $(B)/client/vorbis/lookup.o \ + $(B)/client/vorbis/lpc.o \ + $(B)/client/vorbis/lsp.o \ + $(B)/client/vorbis/mapping0.o \ + $(B)/client/vorbis/mdct.o \ + $(B)/client/vorbis/psy.o \ + $(B)/client/vorbis/registry.o \ + $(B)/client/vorbis/res0.o \ + $(B)/client/vorbis/smallft.o \ + $(B)/client/vorbis/sharedbook.o \ + $(B)/client/vorbis/synthesis.o \ + $(B)/client/vorbis/vorbisfile.o \ + $(B)/client/vorbis/window.o +endif +endif + +ifeq ($(USE_INTERNAL_ZLIB),1) +Q3OBJ += \ + $(B)/client/adler32.o \ + $(B)/client/crc32.o \ + $(B)/client/inffast.o \ + $(B)/client/inflate.o \ + $(B)/client/inftrees.o \ + $(B)/client/zutil.o +endif + +#-bbq +ifeq ($(USE_RESTCLIENT),1) + Q3OBJ += \ + $(B)/client/restclient/connection.o \ + $(B)/client/restclient/helpers.o \ + $(B)/client/restclient/restclient.o +endif + +ifeq ($(HAVE_VM_COMPILED),true) + ifneq ($(findstring $(ARCH),x86 x86_64),) + Q3OBJ += $(B)/client/vm_x86.o + endif + ifneq ($(findstring $(ARCH),ppc ppc64),) + Q3OBJ += $(B)/client/vm_powerpc.o $(B)/client/vm_powerpc_asm.o + endif + ifeq ($(ARCH),sparc) + Q3OBJ += $(B)/client/vm_sparc.o + endif +endif + +ifdef MINGW + Q3OBJ += \ + $(B)/client/win_resource.o \ + $(B)/client/sys_win32.o \ + $(B)/client/sys_win32_default_homepath.o +else + Q3OBJ += \ + $(B)/client/sys_unix.o +endif + +ifeq ($(PLATFORM),darwin) + Q3OBJ += \ + $(B)/client/sys_osx.o +endif + +ifeq ($(USE_MUMBLE),1) + Q3OBJ += \ + $(B)/client/libmumblelink.o +endif + +ifneq ($(USE_RENDERER_DLOPEN),0) +$(B)/$(CLIENTBIN)$(FULLBINEXT): $(Q3OBJ) $(LIBSDLMAIN) + $(echo_cmd) "LD $@" + $(Q)$(CXX) -std=c++1y $(CXXFLAGS) $(CLIENT_LDFLAGS) $(LDFLAGS) $(Q3OBJ) \ + $(LIBSDLMAIN) $(CLIENT_LIBS) $(LIBS) -o $@ + +$(B)/renderer_opengl1$(SHLIBNAME): $(Q3ROBJ) $(JPGOBJ) + $(echo_cmd) "LD $@" + $(Q)$(CXX) $(SHLIBLDFLAGS) -o $@ $(Q3ROBJ) $(JPGOBJ) \ + $(THREAD_LIBS) $(LIBSDLMAIN) $(RENDERER_LIBS) $(LDFLAGS) + +$(B)/renderer_opengl2$(SHLIBNAME): $(Q3R2OBJ) $(Q3R2STRINGOBJ) $(JPGOBJ) + $(echo_cmd) "LD $@" + $(Q)$(CXX) $(SHLIBLDFLAGS) -o $@ $(Q3R2OBJ) $(Q3R2STRINGOBJ) $(JPGOBJ) \ + $(THREAD_LIBS) $(LIBSDLMAIN) $(RENDERER_LIBS) $(LDFLAGS) +else +$(B)/$(CLIENTBIN)$(FULLBINEXT): $(Q3OBJ) $(Q3ROBJ) $(JPGOBJ) $(LIBSDLMAIN) + $(echo_cmd) "LD $@" + $(Q)$(CXX) -std=c++1y $(CXXFLAGS) $(CLIENT_CFLAGS) $(CFLAGS) $(CLIENT_LDFLAGS) $(LDFLAGS) \ + -o $@ $(Q3OBJ) $(Q3ROBJ) $(JPGOBJ) \ + $(LIBSDLMAIN) $(CLIENT_LIBS) $(RENDERER_LIBS) $(LIBS) + +$(B)/$(CLIENTBIN)_opengl2$(FULLBINEXT): $(Q3OBJ) $(Q3R2OBJ) $(Q3R2STRINGOBJ) $(JPGOBJ) $(LIBSDLMAIN) + $(echo_cmd) "LD $@" + $(Q)$(CXX) -std=c++1y $(CXXFLAGS) $(CLIENT_CFLAGS) $(CFLAGS) $(CLIENT_LDFLAGS) $(LDFLAGS) \ + -o $@ $(Q3OBJ) $(Q3R2OBJ) $(Q3R2STRINGOBJ) $(JPGOBJ) \ + $(LIBSDLMAIN) $(CLIENT_LIBS) $(RENDERER_LIBS) $(LIBS) +endif + +ifneq ($(strip $(LIBSDLMAIN)),) +ifneq ($(strip $(LIBSDLMAINSRC)),) +$(LIBSDLMAIN) : $(LIBSDLMAINSRC) + cp $< $@ + $(RANLIB) $@ +endif +endif + + + +############################################################################# +# DEDICATED SERVER +############################################################################# + +Q3DOBJ = \ + $(B)/ded/sv_client.o \ + $(B)/ded/sv_ccmds.o \ + $(B)/ded/sv_game.o \ + $(B)/ded/sv_init.o \ + $(B)/ded/sv_main.o \ + $(B)/ded/sv_net_chan.o \ + $(B)/ded/sv_snapshot.o \ + $(B)/ded/sv_world.o \ + \ + $(B)/ded/q3_lauxlib.o \ + \ + $(B)/ded/cm_load.o \ + $(B)/ded/cm_patch.o \ + $(B)/ded/cm_polylib.o \ + $(B)/ded/cm_test.o \ + $(B)/ded/cm_trace.o \ + $(B)/ded/cmd.o \ + $(B)/ded/common.o \ + $(B)/ded/crypto.o \ + $(B)/ded/cvar.o \ + $(B)/ded/files.o \ + $(B)/ded/md4.o \ + $(B)/ded/msg.o \ + $(B)/ded/net_chan.o \ + $(B)/ded/net_ip.o \ + $(B)/ded/huffman.o \ + $(B)/ded/parse.o \ + \ + $(B)/ded/q_math.o \ + $(B)/ded/q_shared.o \ + \ + $(B)/ded/unzip.o \ + $(B)/ded/ioapi.o \ + $(B)/ded/vm.o \ + $(B)/ded/vm_interpreted.o \ + \ + $(B)/ded/null_client.o \ + $(B)/ded/null_input.o \ + $(B)/ded/null_snddma.o \ + \ + $(B)/ded/con_log.o \ + $(B)/ded/sys_main.o + +ifeq ($(ARCH),x86) + Q3DOBJ += \ + $(B)/ded/matha.o \ + $(B)/ded/snapvector.o +endif +ifeq ($(ARCH),x86_64) + Q3DOBJ += \ + $(B)/ded/snapvector.o +endif + +Q3DOBJ += $(LUAOBJ) $(SCRIPTOBJ) $(NETTLEOBJ) + +ifeq ($(USE_INTERNAL_ZLIB),1) +Q3DOBJ += \ + $(B)/ded/adler32.o \ + $(B)/ded/crc32.o \ + $(B)/ded/inffast.o \ + $(B)/ded/inflate.o \ + $(B)/ded/inftrees.o \ + $(B)/ded/zutil.o +endif + +ifeq ($(HAVE_VM_COMPILED),true) + ifneq ($(findstring $(ARCH),x86 x86_64),) + Q3DOBJ += \ + $(B)/ded/vm_x86.o + endif + ifneq ($(findstring $(ARCH),ppc ppc64),) + Q3DOBJ += $(B)/ded/vm_powerpc.o $(B)/ded/vm_powerpc_asm.o + endif + ifeq ($(ARCH),sparc) + Q3DOBJ += $(B)/ded/vm_sparc.o + endif +endif + +ifdef MINGW + Q3DOBJ += \ + $(B)/ded/win_resource.o \ + $(B)/ded/sys_win32.o \ + $(B)/ded/sys_win32_default_homepath.o \ + $(B)/ded/con_win32.o +else + Q3DOBJ += \ + $(B)/ded/sys_unix.o \ + $(B)/ded/con_tty.o +endif + +ifeq ($(PLATFORM),darwin) + Q3DOBJ += \ + $(B)/ded/sys_osx.o +endif + +$(B)/$(SERVERBIN)$(FULLBINEXT): $(Q3DOBJ) + $(echo_cmd) "LD $@" + $(Q)$(CXX) $(CFLAGS) $(LDFLAGS) -o $@ $(Q3DOBJ) $(LIBS) + +############################################################################# +## TREMULOUS CGAME +############################################################################# + +CGOBJ_ = \ + $(B)/$(BASEGAME)/cgame/cg_main.o \ + $(B)/$(BASEGAME)/cgame/bg_misc.o \ + $(B)/$(BASEGAME)/cgame/bg_pmove.o \ + $(B)/$(BASEGAME)/cgame/bg_slidemove.o \ + $(B)/$(BASEGAME)/cgame/bg_lib.o \ + $(B)/$(BASEGAME)/cgame/bg_alloc.o \ + $(B)/$(BASEGAME)/cgame/bg_voice.o \ + $(B)/$(BASEGAME)/cgame/cg_consolecmds.o \ + $(B)/$(BASEGAME)/cgame/cg_buildable.o \ + $(B)/$(BASEGAME)/cgame/cg_animation.o \ + $(B)/$(BASEGAME)/cgame/cg_animmapobj.o \ + $(B)/$(BASEGAME)/cgame/cg_draw.o \ + $(B)/$(BASEGAME)/cgame/cg_drawtools.o \ + $(B)/$(BASEGAME)/cgame/cg_ents.o \ + $(B)/$(BASEGAME)/cgame/cg_event.o \ + $(B)/$(BASEGAME)/cgame/cg_marks.o \ + $(B)/$(BASEGAME)/cgame/cg_players.o \ + $(B)/$(BASEGAME)/cgame/cg_playerstate.o \ + $(B)/$(BASEGAME)/cgame/cg_predict.o \ + $(B)/$(BASEGAME)/cgame/cg_servercmds.o \ + $(B)/$(BASEGAME)/cgame/cg_snapshot.o \ + $(B)/$(BASEGAME)/cgame/cg_view.o \ + $(B)/$(BASEGAME)/cgame/cg_weapons.o \ + $(B)/$(BASEGAME)/cgame/cg_scanner.o \ + $(B)/$(BASEGAME)/cgame/cg_attachment.o \ + $(B)/$(BASEGAME)/cgame/cg_trails.o \ + $(B)/$(BASEGAME)/cgame/cg_particles.o \ + $(B)/$(BASEGAME)/cgame/cg_tutorial.o \ + $(B)/$(BASEGAME)/cgame/cg_rangemarker.o \ + $(B)/$(BASEGAME)/cgame/ui_shared.o \ + \ + $(B)/$(BASEGAME)/qcommon/q_math.o \ + $(B)/$(BASEGAME)/qcommon/q_shared.o + +CGOBJ = $(CGOBJ_) $(B)/$(BASEGAME)/cgame/cg_syscalls.o +CGVMOBJ = $(CGOBJ_:%.o=%.asm) + +$(B)/$(BASEGAME)/cgame$(SHLIBNAME): $(CGOBJ) + $(echo_cmd) "LD $@" + $(Q)$(CC) $(SHLIBLDFLAGS) $(LDFLAGS) -o $@ $(CGOBJ) + +$(B)/$(BASEGAME)/vm/cgame.qvm: $(CGVMOBJ) $(CGDIR)/cg_syscalls.asm $(Q3ASM) + $(echo_cmd) "Q3ASM $@" + $(Q)$(Q3ASM) -o $@ $(CGVMOBJ) $(CGDIR)/cg_syscalls.asm + +############################################################################# +## TREMULOUS CGAME (1.1 COMPATIBLE) +############################################################################# + +CGOBJ11_ = \ + $(B)/$(BASEGAME)/11/cgame/cg_main.o \ + $(B)/$(BASEGAME)/cgame/bg_misc.o \ + $(B)/$(BASEGAME)/cgame/bg_pmove.o \ + $(B)/$(BASEGAME)/cgame/bg_slidemove.o \ + $(B)/$(BASEGAME)/cgame/bg_lib.o \ + $(B)/$(BASEGAME)/cgame/bg_alloc.o \ + $(B)/$(BASEGAME)/cgame/bg_voice.o \ + $(B)/$(BASEGAME)/11/cgame/cg_consolecmds.o \ + $(B)/$(BASEGAME)/cgame/cg_buildable.o \ + $(B)/$(BASEGAME)/cgame/cg_animation.o \ + $(B)/$(BASEGAME)/cgame/cg_animmapobj.o \ + $(B)/$(BASEGAME)/cgame/cg_draw.o \ + $(B)/$(BASEGAME)/cgame/cg_drawtools.o \ + $(B)/$(BASEGAME)/cgame/cg_ents.o \ + $(B)/$(BASEGAME)/cgame/cg_event.o \ + $(B)/$(BASEGAME)/cgame/cg_marks.o \ + $(B)/$(BASEGAME)/cgame/cg_players.o \ + $(B)/$(BASEGAME)/cgame/cg_playerstate.o \ + $(B)/$(BASEGAME)/cgame/cg_predict.o \ + $(B)/$(BASEGAME)/11/cgame/cg_servercmds.o \ + $(B)/$(BASEGAME)/11/cgame/cg_snapshot.o \ + $(B)/$(BASEGAME)/cgame/cg_view.o \ + $(B)/$(BASEGAME)/cgame/cg_weapons.o \ + $(B)/$(BASEGAME)/cgame/cg_scanner.o \ + $(B)/$(BASEGAME)/cgame/cg_attachment.o \ + $(B)/$(BASEGAME)/cgame/cg_trails.o \ + $(B)/$(BASEGAME)/cgame/cg_particles.o \ + $(B)/$(BASEGAME)/cgame/cg_tutorial.o \ + $(B)/$(BASEGAME)/cgame/cg_rangemarker.o \ + $(B)/$(BASEGAME)/cgame/ui_shared.o \ + \ + $(B)/$(BASEGAME)/qcommon/q_math.o \ + $(B)/$(BASEGAME)/qcommon/q_shared.o + +CGVMOBJ11 = $(CGOBJ11_:%.o=%.asm) + +$(B)/$(BASEGAME)_11/vm/cgame.qvm: $(CGVMOBJ11) $(CGDIR)/cg_syscalls_11.asm $(Q3ASM) + $(echo_cmd) "Q3ASM_11 $@" + $(Q)$(Q3ASM) -o $@ $(CGVMOBJ11) $(CGDIR)/cg_syscalls_11.asm + +############################################################################# +## TREMULOUS GAME +############################################################################# + +GOBJ_ = \ + $(B)/$(BASEGAME)/game/g_main.o \ + $(B)/$(BASEGAME)/game/bg_misc.o \ + $(B)/$(BASEGAME)/game/bg_pmove.o \ + $(B)/$(BASEGAME)/game/bg_slidemove.o \ + $(B)/$(BASEGAME)/game/bg_lib.o \ + $(B)/$(BASEGAME)/game/bg_alloc.o \ + $(B)/$(BASEGAME)/game/bg_voice.o \ + $(B)/$(BASEGAME)/game/g_active.o \ + $(B)/$(BASEGAME)/game/g_client.o \ + $(B)/$(BASEGAME)/game/g_cmds.o \ + $(B)/$(BASEGAME)/game/g_combat.o \ + $(B)/$(BASEGAME)/game/g_physics.o \ + $(B)/$(BASEGAME)/game/g_buildable.o \ + $(B)/$(BASEGAME)/game/g_misc.o \ + $(B)/$(BASEGAME)/game/g_missile.o \ + $(B)/$(BASEGAME)/game/g_mover.o \ + $(B)/$(BASEGAME)/game/g_session.o \ + $(B)/$(BASEGAME)/game/g_spawn.o \ + $(B)/$(BASEGAME)/game/g_svcmds.o \ + $(B)/$(BASEGAME)/game/g_target.o \ + $(B)/$(BASEGAME)/game/g_team.o \ + $(B)/$(BASEGAME)/game/g_trigger.o \ + $(B)/$(BASEGAME)/game/g_utils.o \ + $(B)/$(BASEGAME)/game/g_maprotation.o \ + $(B)/$(BASEGAME)/game/g_playermodel.o \ + $(B)/$(BASEGAME)/game/g_weapon.o \ + $(B)/$(BASEGAME)/game/g_weapondrop.o \ + $(B)/$(BASEGAME)/game/g_admin.o \ + $(B)/$(BASEGAME)/game/g_namelog.o \ + \ + $(B)/$(BASEGAME)/qcommon/q_math.o \ + $(B)/$(BASEGAME)/qcommon/q_shared.o + +GOBJ = $(GOBJ_) $(B)/$(BASEGAME)/game/g_syscalls.o +GVMOBJ = $(GOBJ_:%.o=%.asm) + +$(B)/$(BASEGAME)/game$(SHLIBNAME): $(GOBJ) + $(echo_cmd) "LD $@" + $(Q)$(CC) $(SHLIBLDFLAGS) $(LDFLAGS) -o $@ $(GOBJ) + +$(B)/$(BASEGAME)/vm/game.qvm: $(GVMOBJ) $(GDIR)/g_syscalls.asm $(Q3ASM) + $(echo_cmd) "Q3ASM $@" + $(Q)$(Q3ASM) -o $@ $(GVMOBJ) $(GDIR)/g_syscalls.asm + + + +############################################################################# +## TREMULOUS UI +############################################################################# + +UIOBJ_ = \ + $(B)/$(BASEGAME)/ui/ui_main.o \ + $(B)/$(BASEGAME)/ui/ui_atoms.o \ + $(B)/$(BASEGAME)/ui/ui_shared.o \ + $(B)/$(BASEGAME)/ui/ui_gameinfo.o \ + \ + $(B)/$(BASEGAME)/ui/bg_alloc.o \ + $(B)/$(BASEGAME)/ui/bg_voice.o \ + $(B)/$(BASEGAME)/ui/bg_misc.o \ + $(B)/$(BASEGAME)/ui/bg_lib.o \ + $(B)/$(BASEGAME)/qcommon/q_math.o \ + $(B)/$(BASEGAME)/qcommon/q_shared.o + +UIOBJ = $(UIOBJ_) $(B)/$(BASEGAME)/ui/ui_syscalls.o +UIVMOBJ = $(UIOBJ_:%.o=%.asm) + +$(B)/$(BASEGAME)/ui$(SHLIBNAME): $(UIOBJ) + $(echo_cmd) "LD $@" + $(Q)$(CC) -I${ASSETS_DIR}/ui $(SHLIBLDFLAGS) $(LDFLAGS) -o $@ $(UIOBJ) + +$(B)/$(BASEGAME)/vm/ui.qvm: $(UIVMOBJ) $(UIDIR)/ui_syscalls.asm $(Q3ASM) + $(echo_cmd) "Q3ASM $@" + $(Q)$(Q3ASM) -o $@ $(UIVMOBJ) $(UIDIR)/ui_syscalls.asm + +############################################################################# +## TREMULOUS UI (1.1 compatibility) +############################################################################# + +UIOBJ11_ = \ + $(B)/$(BASEGAME)/11/ui/ui_main.o \ + $(B)/$(BASEGAME)/ui/ui_atoms.o \ + $(B)/$(BASEGAME)/ui/ui_shared.o \ + $(B)/$(BASEGAME)/ui/ui_gameinfo.o \ + \ + $(B)/$(BASEGAME)/ui/bg_alloc.o \ + $(B)/$(BASEGAME)/ui/bg_voice.o \ + $(B)/$(BASEGAME)/ui/bg_misc.o \ + $(B)/$(BASEGAME)/ui/bg_lib.o \ + $(B)/$(BASEGAME)/qcommon/q_math.o \ + $(B)/$(BASEGAME)/qcommon/q_shared.o +UIVMOBJ11 = $(UIOBJ11_:%.o=%.asm) + +# XXX no dynamic library? + +$(B)/$(BASEGAME)_11/vm/ui.qvm: $(UIVMOBJ11) $(UIDIR)/ui_syscalls_11.asm $(Q3ASM) + $(echo_cmd) "Q3ASM $@" + $(Q)$(Q3ASM) -o $@ $(UIVMOBJ11) $(UIDIR)/ui_syscalls_11.asm + +############################################################################# +## QVM Package +############################################################################# + +$(B)/$(BASEGAME)/vms-gpp-$(VERSION).pk3: $(B)/$(BASEGAME)/vm/ui.qvm $(B)/$(BASEGAME)/vm/cgame.qvm $(B)/$(BASEGAME)/vm/game.qvm + @(cd $(B)/$(BASEGAME) && zip -r vms-$(VERSION).pk3 vm/) + +$(B)/$(BASEGAME)_11/vms-1.1.0-$(VERSION).pk3: $(B)/$(BASEGAME)_11/vm/ui.qvm $(B)/$(BASEGAME)_11/vm/cgame.qvm + @(cd $(B)/$(BASEGAME)_11 && zip -r vms-$(VERSION).pk3 vm/) + + +############################################################################# +## Assets Package +############################################################################# + +$(B)/$(BASEGAME)/data-$(VERSION).pk3: $(ASSETS_DIR)/ui/main.menu + @(cd $(ASSETS_DIR) && zip -r data-$(VERSION).pk3 *) + @mv $(ASSETS_DIR)/data-$(VERSION).pk3 $(B)/$(BASEGAME) + +############################################################################# +## CLIENT/SERVER RULES +############################################################################# + +$(B)/client/%.o: $(ASMDIR)/%.s + $(DO_AS) + +# k8 so inline assembler knows about SSE +$(B)/client/%.o: $(ASMDIR)/%.c + $(DO_CC) -march=k8 + +$(B)/client/%.o: $(CDIR)/%.c + $(DO_CC) + +$(B)/client/%.o: $(SDIR)/%.c + $(DO_CC) + +$(B)/client/%.o: $(CMDIR)/%.c + $(DO_CC) + +$(B)/client/%.o: $(CDIR)/%.cpp + $(DO_CXX) + +$(B)/client/%.o: $(SDIR)/%.cpp + $(DO_CXX) + +$(B)/client/%.o: $(CMDIR)/%.cpp + $(DO_CXX) + +$(B)/client/%.o: $(OGGDIR)/src/%.c + $(DO_CC) + +$(B)/client/vorbis/%.o: $(VORBISDIR)/lib/%.c + $(DO_CC) + +$(B)/client/opus/%.o: $(OPUSDIR)/src/%.c + $(DO_CC) + +$(B)/client/opus/%.o: $(OPUSDIR)/celt/%.c + $(DO_CC) + +$(B)/client/opus/%.o: $(OPUSDIR)/silk/%.c + $(DO_CC) + +$(B)/client/opus/%.o: $(OPUSDIR)/silk/float/%.c + $(DO_CC) + +$(B)/client/%.o: $(OPUSFILEDIR)/src/%.c + $(DO_CC) + +$(B)/client/%.o: $(ZDIR)/%.c + $(DO_CC) + +$(B)/client/%.o: $(SDLDIR)/%.c + $(DO_CC) + +$(B)/client/%.o: $(SDLDIR)/%.cpp + $(DO_CXX) + +$(B)/client/%.o: $(SYSDIR)/%.c + $(DO_CC) + +$(B)/client/%.o: $(SYSDIR)/%.cpp + $(DO_CXX) + +$(B)/client/%.o: $(SYSDIR)/%.mm + $(DO_CXX) + +#-wtf +$(B)/client/restclient/%.o: $(RESTDIR)/%.cpp + $(DO_CXX) + +$(B)/client/%.o: $(SYSDIR)/%.rc + $(DO_WINDRES) + +### GL1 + +$(B)/renderercommon/%.o: $(SDLDIR)/%.c + $(DO_RENDERER_COMMON_CC) +$(B)/renderercommon/%.o: $(SDLDIR)/%.cpp + $(DO_RENDERER_COMMON_CXX) +$(B)/renderercommon/%.o: $(JPDIR)/%.c + $(DO_RENDERER_COMMON_CC) + +$(B)/renderergl1/%.o: $(RCOMMONDIR)/%.c + $(DO_RENDERER_COMMON_CC) +$(B)/renderergl1/%.o: $(RCOMMONDIR)/%.cpp + $(DO_RENDERER_COMMON_CXX) +$(B)/renderergl1/%.o: $(RGL1DIR)/%.c + $(DO_RENDERERGL1_CC) +$(B)/renderergl1/%.o: $(RGL1DIR)/%.cpp + $(DO_RENDERERGL1_CXX) +$(B)/renderergl1/%.o: $(CMDIR)/%.c + $(DO_RENDERERGL1_CC) +$(B)/renderergl1/%.o: $(CMDIR)/%.cpp + $(DO_RENDERERGL1_CXX) + +### GL2 + +$(B)/renderergl2/glsl/%.c: $(RGL2DIR)/glsl/%.glsl + $(DO_REF_STR) +$(B)/renderergl2/glsl/%.o: $(B)/renderergl2/glsl/%.c + $(DO_RENDERERGL2_CC) +$(B)/renderergl2/%.o: $(RCOMMONDIR)/%.c + $(DO_RENDERER_COMMON_CC) +$(B)/renderergl2/%.o: $(RGL2DIR)/%.c + $(DO_RENDERERGL2_CC) +$(B)/renderergl2/%.o: $(RCOMMONDIR)/%.cpp + $(DO_RENDERER_COMMON_CXX) +$(B)/renderergl2/%.o: $(RGL2DIR)/%.cpp + $(DO_RENDERERGL2_CXX) + +$(B)/ded/%.o: $(ASMDIR)/%.s + $(DO_DED_AS) + +# k8 so inline assembler knows about SSE +$(B)/ded/%.o: $(ASMDIR)/%.c + $(DO_DED_CC) -march=k8 + +$(B)/ded/%.o: $(SDIR)/%.c + $(DO_DED_CC) + +$(B)/ded/%.o: $(SDIR)/%.cpp + $(DO_DED_CXX) + +$(B)/ded/%.o: $(CMDIR)/%.c + $(DO_DED_CC) + +$(B)/ded/%.o: $(CMDIR)/%.cpp + $(DO_DED_CXX) + +$(B)/ded/%.o: $(ZDIR)/%.c + $(DO_DED_CC) + +$(B)/ded/%.o: $(SYSDIR)/%.c + $(DO_DED_CC) + +$(B)/ded/%.o: $(SYSDIR)/%.cpp + $(DO_DED_CXX) + +$(B)/ded/%.o: $(SYSDIR)/%.mm + $(DO_DED_CXX) + +$(B)/ded/%.o: $(SYSDIR)/%.rc + $(DO_WINDRES) + +$(B)/ded/%.o: $(NDIR)/%.c + $(DO_DED_CC) + +$(B)/ded/%.o: $(NDIR)/%.cpp + $(DO_DED_CXX) + +# Extra dependencies to ensure the git version is incorporated +ifeq ($(USE_GIT),1) + $(B)/client/cl_console.o : .git/index + $(B)/client/common.o : .git/index + $(B)/ded/common.o : .git/index +endif + + +############################################################################# +## GAME MODULE RULES +############################################################################# + +# CGAME +$(B)/$(BASEGAME)/cgame/bg_%.o: $(GDIR)/bg_%.c + $(DO_CGAME_CC) + +$(B)/$(BASEGAME)/cgame/ui_%.o: $(UIDIR)/ui_%.c + $(DO_CGAME_CC) + +$(B)/$(BASEGAME)/cgame/%.o: $(CGDIR)/%.c + $(DO_CGAME_CC) + +$(B)/$(BASEGAME)/cgame/bg_%.asm: $(GDIR)/bg_%.c $(Q3LCC) + $(DO_CGAME_Q3LCC) + +$(B)/$(BASEGAME)/cgame/ui_%.asm: $(UIDIR)/ui_%.c $(Q3LCC) + $(DO_CGAME_Q3LCC) + +$(B)/$(BASEGAME)/cgame/%.asm: $(CGDIR)/%.c $(Q3LCC) + $(DO_CGAME_Q3LCC) + +# CGAME (1.1 COMPATIBLE) +#$(B)/$(BASEGAME)_11/cgame/bg_%.o: $(GDIR)/bg_%.c +# $(DO_CGAME_CC_11) +# +#$(B)/$(BASEGAME)_11/cgame/ui_%.o: $(UIDIR)/ui_%.c +# $(DO_CGAME_CC_11) +# +#$(B)/$(BASEGAME)_11/cgame/%.o: $(CGDIR)/%.c +# $(DO_CGAME_CC_11) + +$(B)/$(BASEGAME)/11/cgame/%.asm: $(CGDIR)/%.c $(Q3LCC) + $(DO_CGAME_Q3LCC_11) + +# GAME +$(B)/$(BASEGAME)/game/%.o: $(GDIR)/%.c + $(DO_GAME_CC) + +$(B)/$(BASEGAME)/game/%.asm: $(GDIR)/%.c $(Q3LCC) + $(DO_GAME_Q3LCC) + +# UI +$(B)/$(BASEGAME)/ui/bg_%.o: $(GDIR)/bg_%.c + $(DO_UI_CC) + +$(B)/$(BASEGAME)/ui/%.o: $(UIDIR)/%.c + $(DO_UI_CC) + +$(B)/$(BASEGAME)/ui/bg_%.asm: $(GDIR)/bg_%.c $(Q3LCC) + $(DO_UI_Q3LCC) + +$(B)/$(BASEGAME)/ui/%.asm: $(UIDIR)/%.c $(Q3LCC) + $(DO_UI_Q3LCC) + +# UI (1.1 COMPATIBLE) +$(B)/$(BASEGAME)/11/ui/%.asm: $(UIDIR)/%.c $(Q3LCC) + $(DO_UI_Q3LCC_11) + +$(B)/$(BASEGAME)/qcommon/%.o: $(CMDIR)/%.c + $(DO_SHLIB_CC) + +$(B)/$(BASEGAME)/qcommon/%.asm: $(CMDIR)/%.c $(Q3LCC) + $(DO_Q3LCC) + + +############################################################################# +# MISC +############################################################################# + +OBJ = $(Q3OBJ) $(Q3ROBJ) $(Q3R2OBJ) $(Q3DOBJ) $(JPGOBJ) \ + $(GOBJ) $(CGOBJ) $(UIOBJ) $(LUAOBJ) $(SCRIPTOBJ) $(NETTLEOBJ) \ + $(GVMOBJ) $(CGVMOBJ) $(UIVMOBJ) $(GRANGEROBJ) +TOOLSOBJ = $(LBURGOBJ) $(Q3CPPOBJ) $(Q3RCCOBJ) $(Q3LCCOBJ) $(Q3ASMOBJ) +STRINGOBJ = $(Q3R2STRINGOBJ) + +clean: clean-debug clean-release + @rm -f $(B)/compile_commands.json $(B)/compile_commands.txt $(B)/compile_commands.txt-e + +clean-debug: + @$(MAKE) clean2 B=$(BD) + +clean-release: + @$(MAKE) clean2 B=$(BR) + +clean2: + @echo "CLEAN $(B)" + @rm -rf $(B)/scripts + @rm -f $(OBJ) + @rm -f $(OBJ_D_FILES) + @rm -f $(STRINGOBJ) + @rm -f $(TARGETS) + +toolsclean: toolsclean-debug toolsclean-release + +toolsclean-debug: + @$(MAKE) toolsclean2 B=$(BD) + +toolsclean-release: + @$(MAKE) toolsclean2 B=$(BR) + +toolsclean2: + @echo "TOOLS_CLEAN $(B)" + @rm -f $(TOOLSOBJ) + @rm -f $(TOOLSOBJ_D_FILES) + @rm -f $(LBURG) $(DAGCHECK_C) $(Q3RCC) $(Q3CPP) $(Q3LCC) $(Q3ASM) + +distclean: clean toolsclean + @rm -rf $(BUILD_DIR) + +dist: + git archive --format zip --output $(CLIENTBIN)-$(VERSION).zip HEAD + +############################################################################# +# DEPENDENCIES +############################################################################# + +ifneq ($(B),) + OBJ_D_FILES=$(filter %.d,$(OBJ:%.o=%.d)) + TOOLSOBJ_D_FILES=$(filter %.d,$(TOOLSOBJ:%.o=%.d)) + -include $(OBJ_D_FILES) $(TOOLSOBJ_D_FILES) +endif + +.PHONY: all clean clean2 clean-debug clean-release \ + debug default dist distclean makedirs release targets \ + toolsclean toolsclean2 toolsclean-debug toolsclean-release \ + $(OBJ_D_FILES) $(TOOLSOBJ_D_FILES) $(B)/scripts \ + $(B)/$(BASEGAME)/data-$(VERSION).pk3 \ + $(B)/$(BASEGAME)_11/vms-$(VERSION).pk3 \ + $(B)/$(BASEGAME)/vms-$(VERSION).pk3 \ + $(B).zip + +# If the target name contains "clean", don't do a parallel build +ifneq ($(findstring clean, $(MAKECMDGOALS)),) +.NOTPARALLEL: +endif diff --git a/README.md b/README.md index cc274b0..aff2f03 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,158 @@ -Multiprotocol-AA-QVM -========================== - -This file is packaged with source, binaries, and/or assets for the -multiprotocol AA QVM. - -Please visit the AA website and forum at https://aatremulous.ml \ No newline at end of file +![Wtfbbqhax/Tremulous/tremulous-banner.jpg](misc/tremulous-banner.jpg) + +[![Travis branch](https://travis-ci.org/GrangerHub/tremulous.svg?branch=master)](https://travis-ci.org/GrangerHub/tremulous) +[![Coverity Scan](https://img.shields.io/coverity/scan/9866.svg?maxAge=3600)](https://scan.coverity.com/projects/wtfbbqhax-tremulous) + +# How to Install from GrangerHub's Release Page + +You can install the latest released binaries from GrangerHub's release page, +following these steps: + +* Download the most recent .zip file for your platform from https://github.com/GrangerHub/tremulous/releases + - The 64 bit Windows release would be named release-mingw32-x86_64.zip + - The 64 bit Linux release would be named release-linux-x86_64.zip + - The 64 bit Mac OS X release would be named release-darwin-x86_64.zip +* Unzip the release .zip anywhere +* Run the tremulous.exe from the unzipped release directory. + - When you run the tremulous.exe binary for the first time, it may go through a bootstrap (download needed assets, generate an RSA key) process which may take a few minutes. +* You can simply continue to run the new client from wherever the unzipped release folder is, or you could optionally replace your old Tremulous binaries with the binaries in the unzipped release directory, but make sure that you copy all of the contents of the unzipped release directory to where ever you move the released binaries to. **_Backup your existing Tremulous if you intend on replacing the binaries._** + +# Building from Source + +## Dependencies + +If you want to build against system libraries, the following packages are necessary: + +### Linux: + +* GCC/G++ (version 6+ is recommend) +* CMake (Optional) +* CURL (for downloading assets) +* rsync (for asset management) +* Zip (the tool not the library) +* Libgl1-mesa +* LibSDL2 +* LibCURL4 +* LibOpenAL +* Libfreetype6 +* Lua 5.2 + +On Ubuntu Yakkety (specifically) you can install all the packages necessary with the following: + +``` +apt install -y cmake libgl1-mesa-dev libsdl2-dev libcurl4-openssl-dev libopenal-dev libfreetype6-dev mingw-w64 g++-mingw-w64 g++-multilib git zip vim-nox curl rsync + +``` + +### Mingw32 (win32 cross compile) + +Mingw32 requires `USE_INTERNAL_LIBS=1` + +* Mingw-w64 +* g++-mingw-w64 + +Currently there is no native Windows build setup, all builds are cross compiled on Linux. + +### OSX + +TBD + +## How to Install from the Source Code + +For Linux and Mac OS X builds, follow these steps. + +```bash +git clone https://github.com/GrangerHub/tremulous.git +cd tremulous +make +# cd build/release-darwin-x86_64/ +# cd build/release-linux-x86_64/ +./tremulous +``` + +# How to build for Win64 + +Windows binaries can be built on non-Unix environments using a Docker container. +Click [here](https://www.docker.com/) to learn more about Docker. + +Note that on Windows, you have to clone this Git repository with Unix line endings +because the build system is still in Unix environment: + +```bash +git clone -c core.eol=lf ... +``` +(WARNING: Be careful to not commit back library files from this clone since their line-endings may change) + +To build the Tremulous binaries do: + +```bash +docker run -t -i -e PLATFORM=mingw32 -v $(pwd):/usr/src grangerhub/tremulous13:latest ./misc/docker-build.sh +``` + +On Windows, make sure in the Docker Desktop settings that the drive you have the source +code is selected under "Shared Drives". Then replace `$(pwd)` with the actual folder where the +source resides (e.g. `"C:\Users\...\tremulous"`). + +To run: + +```bash +cd build/release-mingw32-x86_64/ +./tremulous.exe +``` + +(use backslashes `\` if you are using Command Prompt). + +## Troubleshooting issues with running on Windows + +- If you cannot select the high-resolution display modes inside the game, check Windows +Compatibility Settings under the Properties menu when you right-click the +Tremulous executable. Select "Change high DPI settings" and check the +"Override high DPI scaling behavior. Scaling performed by: Application". +- If your FPS is low, make sure you are running the game when plugged into +power (as opposed to laptop battery). + +# Where do I get the assets? + +The Tremulous client binary by default will attempt to retrieve the assets automatically (Known as the Pk3 bootstrap). +However, sometimes this does not work as expected. + +If you need to download the assets yourself; they are available here: + +https://github.com/wtfbbqhax/tremulous-data + +Or you can checkout the entire repository: + +```bash +git clone https://github.com/wtfbbqhax/tremulous-data.git +``` + +Copy the contents of the assets folder as a new `base/` folder in the release location. + +# About Lua + +This branch integrates Lua into the Tremulous runtime. This is a base branch for additional Lua api development to branch from. + +# About Transform + +This code allows customizing human player models with arbitray quake3 thirdparty md3-%.pk3's. + +This adds the admin command `/transform [name|slot#] [modelname] ` which is an admin abusive command to +force player model chanes. + +This also includes voice menus branch + + +# Console Cvars + +* New Cvar `scr_useShader` enable/disable use of the console shader vs color controls below. + - (0, 1) default 1 (enabled) +* New Cvar `scr_height` control console height. + - 100: (e.g., 100%) Default +* New Cvar `scr_colorRed` console background red amount. + - (0.0f - 1.0f) default 0.0f +* New Cvar `scr_colorGreen` console background green amount. + - (0.0f - 1.0f) default 0.0f +* New Cvar `scr_colorBlue` console background blue amount. + - (0.0f - 1.0f) default 0.0f +* New Cvar `scr_colorAlpha` console transparency. + - (0.0f - 1.0f) default 0.8f diff --git a/assets/armour/bsuit.armour b/assets/armour/bsuit.armour new file mode 100644 index 0000000..c05a09d --- /dev/null +++ b/assets/armour/bsuit.armour @@ -0,0 +1,19 @@ + +{ + name "bsuit body" + minHeight 0.0 + maxHeight 0.8 + minAngle 0 + maxAngle 360 + modifier 0.2 +} + +{ + name "bsuit head" + minHeight 0.8 + maxHeight 1.0 + minAngle 0 + maxAngle 360 + modifier 0.27 +} + diff --git a/assets/armour/helmet.armour b/assets/armour/helmet.armour new file mode 100644 index 0000000..f595bf2 --- /dev/null +++ b/assets/armour/helmet.armour @@ -0,0 +1,19 @@ + +{ + name "helmet" + minHeight 0.8 + maxHeight 1.0 + minAngle 0 + maxAngle 360 + modifier 0.4 +} + +{ + name "helmet crouch" + minHeight 0.7 + maxHeight 1.0 + minAngle 0 + maxAngle 360 + modifier 0.4 + crouch +} diff --git a/assets/armour/larmour.armour b/assets/armour/larmour.armour new file mode 100644 index 0000000..5e313fa --- /dev/null +++ b/assets/armour/larmour.armour @@ -0,0 +1,95 @@ + +{ + name "larmour chest" + minHeight 0.5 + maxHeight 0.8 + minAngle 310 + maxAngle 50 + modifier 0.35 +} + +{ + name "larmour left arm" + minHeight 0.5 + maxHeight 0.8 + minAngle 50 + maxAngle 130 + modifier 0.3 +} + +{ + name "larmour back" + minHeight 0.5 + maxHeight 0.8 + minAngle 130 + maxAngle 230 + modifier 0.4 +} + +{ + name "larmour right arm" + minHeight 0.5 + maxHeight 0.8 + minAngle 230 + maxAngle 310 + modifier 0.3 +} + +{ + name "larmour legs" + minHeight 0.0 + maxHeight 0.5 + minAngle 0 + maxAngle 360 + modifier 0.3 +} + +{ + name "larmour chest crouch" + minHeight 0.3 + maxHeight 0.7 + minAngle 310 + maxAngle 50 + modifier 0.35 + crouch +} + +{ + name "larmour left arm crouch" + minHeight 0.3 + maxHeight 0.7 + minAngle 50 + maxAngle 130 + modifier 0.3 + crouch +} + +{ + name "larmour back crouch" + minHeight 0.3 + maxHeight 0.7 + minAngle 130 + maxAngle 230 + modifier 0.4 + crouch +} + +{ + name "larmour right arm crouch" + minHeight 0.3 + maxHeight 0.7 + minAngle 230 + maxAngle 310 + modifier 0.3 + crouch +} + +{ + name "larmour legs crouch" + minHeight 0.0 + maxHeight 0.3 + minAngle 0 + maxAngle 360 + modifier 0.3 + crouch +} diff --git a/assets/configs/buildables/acid_tube.cfg b/assets/configs/buildables/acid_tube.cfg new file mode 100644 index 0000000..e44ed48 --- /dev/null +++ b/assets/configs/buildables/acid_tube.cfg @@ -0,0 +1,5 @@ +model 0 models/buildables/acid_tube/acid_tube.md3 +modelScale 0.6 +mins -15 -15 -15 +maxs 15 15 15 +zOffset -8.5 diff --git a/assets/configs/buildables/arm.cfg b/assets/configs/buildables/arm.cfg new file mode 100644 index 0000000..3e45fc2 --- /dev/null +++ b/assets/configs/buildables/arm.cfg @@ -0,0 +1,5 @@ +model 0 models/buildables/arm/arm.md3 +modelScale 1.0 +mins -40 -40 -13 +maxs 40 40 50 +zOffset -2.0 diff --git a/assets/configs/buildables/barricade.cfg b/assets/configs/buildables/barricade.cfg new file mode 100644 index 0000000..5614647 --- /dev/null +++ b/assets/configs/buildables/barricade.cfg @@ -0,0 +1,5 @@ +model 0 models/buildables/barricade/barricade.md3 +modelScale 1.0 +mins -35 -35 -15 +maxs 35 35 60 +zOffset 0 diff --git a/assets/configs/buildables/booster.cfg b/assets/configs/buildables/booster.cfg new file mode 100644 index 0000000..b0903df --- /dev/null +++ b/assets/configs/buildables/booster.cfg @@ -0,0 +1,5 @@ +model 0 models/buildables/booster/booster.md3 +modelScale 1.0 +mins -26 -26 -9 +maxs 26 26 9 +zOffset 0 diff --git a/assets/configs/buildables/dcc.cfg b/assets/configs/buildables/dcc.cfg new file mode 100644 index 0000000..932e302 --- /dev/null +++ b/assets/configs/buildables/dcc.cfg @@ -0,0 +1,5 @@ +model 0 models/buildables/dcc/dcc.md3 +modelScale 1.0 +mins -35 -35 -13 +maxs 35 35 47 +zOffset 0 diff --git a/assets/configs/buildables/eggpod.cfg b/assets/configs/buildables/eggpod.cfg new file mode 100644 index 0000000..71cb6c7 --- /dev/null +++ b/assets/configs/buildables/eggpod.cfg @@ -0,0 +1,5 @@ +model 0 models/buildables/eggpod/eggpod.md3 +modelScale 1.0 +mins -15 -15 -15 +maxs 15 15 15 +zOffset 0 diff --git a/assets/configs/buildables/hive.cfg b/assets/configs/buildables/hive.cfg new file mode 100644 index 0000000..bd427a2 --- /dev/null +++ b/assets/configs/buildables/hive.cfg @@ -0,0 +1,5 @@ +model 0 models/buildables/hive/hive.md3 +modelScale 1.0 +mins -20 -20 -20 +maxs 20 20 20 +zOffset -10 diff --git a/assets/configs/buildables/hovel.cfg b/assets/configs/buildables/hovel.cfg new file mode 100644 index 0000000..5e2922c --- /dev/null +++ b/assets/configs/buildables/hovel.cfg @@ -0,0 +1,5 @@ +model 0 models/buildables/hovel/hovel.md3 +modelScale 1.0 +mins -50 -50 -20 +maxs 50 50 20 +zOffset 0 diff --git a/assets/configs/buildables/medistat.cfg b/assets/configs/buildables/medistat.cfg new file mode 100644 index 0000000..179a052 --- /dev/null +++ b/assets/configs/buildables/medistat.cfg @@ -0,0 +1,5 @@ +model 0 models/buildables/medistat/medistat.md3 +modelScale 1.0 +mins -35 -35 -7 +maxs 35 35 4 +zOffset 0 diff --git a/assets/configs/buildables/mgturret.cfg b/assets/configs/buildables/mgturret.cfg new file mode 100644 index 0000000..83a2309 --- /dev/null +++ b/assets/configs/buildables/mgturret.cfg @@ -0,0 +1,7 @@ +model 0 models/buildables/mgturret/turret_base.md3 +model 1 models/buildables/mgturret/turret_barrel.md3 +model 2 models/buildables/mgturret/turret_top.md3 +modelScale 1.0 +mins -25 -25 -20 +maxs 25 25 20 +zOffset 0 diff --git a/assets/configs/buildables/overmind.cfg b/assets/configs/buildables/overmind.cfg new file mode 100644 index 0000000..f9baca5 --- /dev/null +++ b/assets/configs/buildables/overmind.cfg @@ -0,0 +1,5 @@ +model 0 models/buildables/overmind/overmind.md3 +modelScale 1.0 +mins -45 -45 -15 +maxs 45 45 95 +zOffset 0 diff --git a/assets/configs/buildables/reactor.cfg b/assets/configs/buildables/reactor.cfg new file mode 100644 index 0000000..d724c44 --- /dev/null +++ b/assets/configs/buildables/reactor.cfg @@ -0,0 +1,5 @@ +model 0 models/buildables/reactor/reactor.md3 +mins -41 -41 -15 +maxs 41 41 95 +zOffset -2.0 +modelScale 0.85 diff --git a/assets/configs/buildables/repeater.cfg b/assets/configs/buildables/repeater.cfg new file mode 100644 index 0000000..eec2824 --- /dev/null +++ b/assets/configs/buildables/repeater.cfg @@ -0,0 +1,5 @@ +model 0 models/buildables/repeater/repeater.md3 +modelScale 1.0 +mins -15 -15 -15 +maxs 15 15 25 +zOffset 0 diff --git a/assets/configs/buildables/telenode.cfg b/assets/configs/buildables/telenode.cfg new file mode 100644 index 0000000..173a92f --- /dev/null +++ b/assets/configs/buildables/telenode.cfg @@ -0,0 +1,5 @@ +model 0 models/buildables/telenode/telenode.md3 +modelScale 1.0 +mins -40 -40 -4 +maxs 40 40 6 +zOffset 0 diff --git a/assets/configs/buildables/tesla.cfg b/assets/configs/buildables/tesla.cfg new file mode 100644 index 0000000..36d1e33 --- /dev/null +++ b/assets/configs/buildables/tesla.cfg @@ -0,0 +1,5 @@ +model 0 models/buildables/tesla/tesla.md3 +modelScale 1.0 +mins -22 -22 -40 +maxs 22 22 40 +zOffset 0 diff --git a/assets/configs/buildables/trapper.cfg b/assets/configs/buildables/trapper.cfg new file mode 100644 index 0000000..0c3f0d0 --- /dev/null +++ b/assets/configs/buildables/trapper.cfg @@ -0,0 +1,5 @@ +model 0 models/buildables/trapper/trapper.md3 +modelScale 1.0 +mins -15 -15 -15 +maxs 15 15 15 +zOffset 0 diff --git a/assets/configs/classes/builder.cfg b/assets/configs/classes/builder.cfg new file mode 100644 index 0000000..dd1d665 --- /dev/null +++ b/assets/configs/classes/builder.cfg @@ -0,0 +1,17 @@ +name "Granger" +model builder +modelScale 1.0 +skin default +shadowScale 1.0 +hud alien_builder_hud + +mins -20 -20 -20 +maxs 20 20 20 +crouchMaxs 20 20 20 +deadMins -20 -20 -4 +deadMaxs 20 20 4 +zOffset 0.0 + +viewheight 0 +crouchViewheight 0 +shoulderOffsets -8 15 13 diff --git a/assets/configs/classes/builderupg.cfg b/assets/configs/classes/builderupg.cfg new file mode 100644 index 0000000..e1b73fc --- /dev/null +++ b/assets/configs/classes/builderupg.cfg @@ -0,0 +1,17 @@ +name "Advanced Granger" +model builder +modelScale 1.0 +skin advanced +shadowScale 1.0 +hud alien_builder_hud + +mins -20 -20 -20 +maxs 20 20 20 +crouchMaxs 20 20 20 +deadMins -20 -20 -4 +deadMaxs 20 20 4 +zOffset 0.0 + +viewheight 0 +crouchViewheight 0 +shoulderOffsets -8 15 13 diff --git a/assets/configs/classes/human_base.cfg b/assets/configs/classes/human_base.cfg new file mode 100644 index 0000000..6749bad --- /dev/null +++ b/assets/configs/classes/human_base.cfg @@ -0,0 +1,17 @@ +name "Human Base" +model human_base +modelScale 1.0 +skin default +shadowScale 1.0 +hud human_hud + +mins -15 -15 -24 +maxs 15 15 32 +crouchMaxs 15 15 16 +deadMins -15 -15 -4 +deadMaxs 15 15 4 +zOffset -2.0 + +viewheight 24 +crouchViewheight 7 +shoulderOffsets -10 15 0 diff --git a/assets/configs/classes/human_bsuit.cfg b/assets/configs/classes/human_bsuit.cfg new file mode 100644 index 0000000..0cdca1e --- /dev/null +++ b/assets/configs/classes/human_bsuit.cfg @@ -0,0 +1,17 @@ +name "Human Battlesuit" +model human_bsuit +modelScale 1.0 +skin default +shadowScale 1.0 +hud human_hud + +mins -15 -15 -38 +maxs 15 15 38 +crouchMaxs 15 15 38 +deadMins -15 -15 -4 +deadMaxs 15 15 4 +zOffset -16.0 + +viewheight 29 +crouchViewheight 29 +shoulderOffsets -30 25 -2 diff --git a/assets/configs/classes/level0.cfg b/assets/configs/classes/level0.cfg new file mode 100644 index 0000000..1497918 --- /dev/null +++ b/assets/configs/classes/level0.cfg @@ -0,0 +1,17 @@ +name "Dretch" +model level0 +modelScale 1.2 +skin default +shadowScale 0.5 +hud alien_general_hud + +mins -15 -15 -15 +maxs 15 15 15 +crouchMaxs 15 15 15 +deadMins -15 -15 -15 +deadMaxs 15 15 15 +zOffset -5.0 + +viewheight 0 +crouchViewheight 0 +shoulderOffsets -5 0 17 diff --git a/assets/configs/classes/level1.cfg b/assets/configs/classes/level1.cfg new file mode 100644 index 0000000..3add57e --- /dev/null +++ b/assets/configs/classes/level1.cfg @@ -0,0 +1,17 @@ +name "Basilisk" +model level1 +modelScale 1.0 +skin default +shadowScale 1.0 +hud alien_general_hud + +mins -18 -18 -18 +maxs 18 18 18 +crouchMaxs 18 18 18 +deadMins -18 -18 -4 +deadMaxs 18 18 4 +zOffset 0.0 + +viewheight 0 +crouchViewheight 0 +shoulderOffsets -10 0 18 diff --git a/assets/configs/classes/level1upg.cfg b/assets/configs/classes/level1upg.cfg new file mode 100644 index 0000000..28a4beb --- /dev/null +++ b/assets/configs/classes/level1upg.cfg @@ -0,0 +1,17 @@ +name "Advanced Basilisk" +model level1 +modelScale 1.1666 +skin upgrade +shadowScale 1.0 +hud alien_general_hud + +mins -21 -21 -21 +maxs 21 21 21 +crouchMaxs 21 21 21 +deadMins -21 -21 -4.666 +deadMaxs 21 21 4.666 +zOffset 0.0 + +viewheight 0 +crouchViewheight 0 +shoulderOffsets -10 0 18 diff --git a/assets/configs/classes/level2.cfg b/assets/configs/classes/level2.cfg new file mode 100644 index 0000000..73fc4ab --- /dev/null +++ b/assets/configs/classes/level2.cfg @@ -0,0 +1,17 @@ +name "Marauder" +model level2 +modelScale 1.0 +skin default +shadowScale 1.0 +hud alien_general_hud + +mins -23 -23 -22 +maxs 23 23 14 +crouchMaxs 23 23 14 +deadMins -23 -23 -4 +deadMaxs 23 23 4 +zOffset 0.0 + +viewheight 8 +crouchViewheight 8 +shoulderOffsets 0 12 5 diff --git a/assets/configs/classes/level2upg.cfg b/assets/configs/classes/level2upg.cfg new file mode 100644 index 0000000..3ef853f --- /dev/null +++ b/assets/configs/classes/level2upg.cfg @@ -0,0 +1,17 @@ +name "Advanced Marauder" +model level2 +modelScale 1.1 +skin adv +shadowScale 1.0 +hud alien_general_hud + +mins -25 -25 -24 +maxs 25 25 16 +crouchMaxs 25 25 16 +deadMins -25 -25 -4 +deadMaxs 25 25 4 +zOffset 0.0 + +viewheight 10 +crouchViewheight 10 +shoulderOffsets 0 12 5 diff --git a/assets/configs/classes/level3.cfg b/assets/configs/classes/level3.cfg new file mode 100644 index 0000000..6073201 --- /dev/null +++ b/assets/configs/classes/level3.cfg @@ -0,0 +1,17 @@ +name "Dragoon" +model level3 +modelScale 1.0 +skin default +shadowScale 1.0 +hud alien_general_hud + +mins -26 -26 -23 +maxs 26 26 32 +crouchMaxs 26 26 32 +deadMins -26 -26 -4 +deadMaxs 26 26 4 +zOffset 0.0 + +viewheight 24 +crouchViewheight 24 +shoulderOffsets -10 15 8 diff --git a/assets/configs/classes/level3upg.cfg b/assets/configs/classes/level3upg.cfg new file mode 100644 index 0000000..e0e7455 --- /dev/null +++ b/assets/configs/classes/level3upg.cfg @@ -0,0 +1,17 @@ +name "Advanced Dragoon" +model level3 +modelScale 1.15 +skin adv +shadowScale 1.0 +hud alien_general_hud + +mins -29 -29 -29 +maxs 29 29 37 +crouchMaxs 29 29 38 +deadMins -29 -29 -4 +deadMaxs 29 29 4 +zOffset 0.0 + +viewheight 27 +crouchViewheight 27 +shoulderOffsets -10 17 12 diff --git a/assets/configs/classes/level4.cfg b/assets/configs/classes/level4.cfg new file mode 100644 index 0000000..ad8482e --- /dev/null +++ b/assets/configs/classes/level4.cfg @@ -0,0 +1,17 @@ +name "Tyrant" +model level4 +modelScale 1.0 +skin default +shadowScale 2.0 +hud alien_general_hud + +mins -32 -32 -22 +maxs 32 32 70 +crouchMaxs 32 32 70 +deadMins -32 -32 -34 +deadMaxs 32 32 34 +zOffset 0.0 + +viewheight 64 +crouchViewheight 64 +shoulderOffsets -20 -25 30 diff --git a/assets/configs/classes/spectator.cfg b/assets/configs/classes/spectator.cfg new file mode 100644 index 0000000..b1fd1e7 --- /dev/null +++ b/assets/configs/classes/spectator.cfg @@ -0,0 +1,17 @@ +name "Spectator" +model "" +modelScale 1.0 +skin "" +shadowScale 1.0 +hud spectator_hud + +mins -15 -15 -15 +maxs 15 15 15 +crouchMaxs 15 15 15 +deadMins -15 -15 -15 +deadMaxs 15 15 15 +zOffset 0.0 + +viewheight 0 +crouchViewheight 0 +shoulderOffsets 0 0 0 diff --git a/assets/models/buildables/acid_tube/animation.cfg b/assets/models/buildables/acid_tube/animation.cfg new file mode 100644 index 0000000..19f616e --- /dev/null +++ b/assets/models/buildables/acid_tube/animation.cfg @@ -0,0 +1,15 @@ +//acid tube +0 12 0 24 // CONSTRUCT1 +0 12 0 24 // CONSTRUCT2 +12 1 0 24 // IDLE1 +0 0 0 0 // IDLE2 +0 0 0 0 // IDLE3 +13 19 0 24 // ATTACK1 +0 0 0 1 // ATTACK2 +0 0 0 1 // SPAWN1 +0 0 0 1 // SPAWN2 +12 8 0 12 // PAIN1 +0 0 0 1 // PAIN2 +0 -12 0 16 // DESTROY +12 0 0 12 // DESTROY2 +0 1 1 1 // DESTROYED diff --git a/assets/models/buildables/barricade/animation.cfg b/assets/models/buildables/barricade/animation.cfg new file mode 100644 index 0000000..b4703ea --- /dev/null +++ b/assets/models/buildables/barricade/animation.cfg @@ -0,0 +1,17 @@ +//barricade +0 12 0 24 // CONSTRUCT1 +0 12 0 24 // CONSTRUCT1 +12 1 1 24 // IDLE1 +0 0 0 24 // IDLE2 +0 0 0 0 // IDLE3 +39 9 0 48 // ATTACK1 (shrink) +39 -9 0 48 // ATTACK2 (unshrink) +0 0 0 0 // SPAWN1 +0 0 0 0 // SPAWN2 +12 12 0 24 // PAIN1 +48 1 0 24 // PAIN2 +36 12 0 24 // DESTROY +0 0 0 0 // DESTROY2 +48 1 1 1 // DEAD + +//12 frames for each pain, 6 going down 6 going up diff --git a/assets/models/buildables/medistat/animation.cfg b/assets/models/buildables/medistat/animation.cfg new file mode 100644 index 0000000..5a5ab0f --- /dev/null +++ b/assets/models/buildables/medistat/animation.cfg @@ -0,0 +1,18 @@ +//medistation +0 8 0 24 // CONSTRUCT +0 8 0 24 // CONSTRUCT +8 19 19 12 // IDLE +32 1 1 1 // IDLE2-HEAL +0 1 1 1 // IDLE3-NOPOWER +27 6 0 24 // ATTACK1-HEAL +0 0 0 0 // ATTACK2 +0 0 0 0 // SPAWN1 +0 0 0 0 // SPAWN2 +0 0 0 0 // PAIN1 +0 0 0 0 // PAIN2 +33 1 0 5 // DESTROY +0 0 0 0 // DESTROY2 +33 1 1 1 // DEAD + +//attack is the heal activate +//idle2 is the heal idle diff --git a/assets/models/buildables/mgturret/animation.cfg b/assets/models/buildables/mgturret/animation.cfg new file mode 100644 index 0000000..7b80fb7 --- /dev/null +++ b/assets/models/buildables/mgturret/animation.cfg @@ -0,0 +1,15 @@ +//mgturret +0 1 0 1 // CONSTRUCT1 +0 1 0 1 // CONSTRUCT1 +0 1 1 1 // IDLE1 +0 1 1 1 // IDLE2 +0 1 1 1 // IDLE3-NOPOWER +1 1 0 10 // ATTACK1 +0 1 0 0 // ATTACK2 +0 1 0 0 // SPAWN1 +0 1 0 0 // SPAWN2 +0 1 0 0 // PAIN1 +0 1 0 0 // PAIN2 +0 1 0 1 // DESTROY1 +0 1 0 0 // DESTROY2 +0 1 1 1 // DEAD diff --git a/assets/models/buildables/repeater/animation.cfg b/assets/models/buildables/repeater/animation.cfg new file mode 100644 index 0000000..fdfdb65 --- /dev/null +++ b/assets/models/buildables/repeater/animation.cfg @@ -0,0 +1,15 @@ +//repeater +0 12 0 24 // CONSTRUCT1 +0 12 0 24 // CONSTRUCT1 +12 24 24 36 // IDLE1 +0 0 0 0 // IDLE2 +12 24 24 6 // IDLE3-NOPOWER +0 0 0 0 // ATTACK1 +0 0 0 0 // ATTACK2 +0 0 0 0 // SPAWN1 +0 0 0 0 // SPAWN2 +0 0 0 0 // PAIN1 +0 0 0 0 // PAIN2 +37 1 0 5 // DESTROY +0 0 0 0 // DESTROY2 +37 1 1 1 // DEAD diff --git a/assets/models/buildables/tesla/animation.cfg b/assets/models/buildables/tesla/animation.cfg new file mode 100644 index 0000000..2c3f1d9 --- /dev/null +++ b/assets/models/buildables/tesla/animation.cfg @@ -0,0 +1,15 @@ +// tesla +0 8 0 12 // CONSTRUCT1 +0 8 0 12 // CONSTRUCT1 +8 24 24 24 // IDLE1 +0 0 0 0 // IDLE2 +32 1 1 1 // IDLE3-NOPOWER +0 0 0 0 // ATTACK1 +0 0 0 0 // ATTACK2 +0 0 0 0 // SPAWN1 +0 0 0 0 // SPAWN2 +0 0 0 0 // PAIN1 +0 0 0 0 // PAIN2 +32 2 0 12 // DESTROY1 +0 0 0 0 // DESTROY2 +34 1 1 1 // DESTROYED diff --git a/assets/models/generic/sphere.md3 b/assets/models/generic/sphere.md3 new file mode 100644 index 0000000..54482d6 Binary files /dev/null and b/assets/models/generic/sphere.md3 differ diff --git a/assets/models/generic/sphericalCone240.md3 b/assets/models/generic/sphericalCone240.md3 new file mode 100644 index 0000000..2b187da Binary files /dev/null and b/assets/models/generic/sphericalCone240.md3 differ diff --git a/assets/models/generic/sphericalCone64.md3 b/assets/models/generic/sphericalCone64.md3 new file mode 100644 index 0000000..f0518fd Binary files /dev/null and b/assets/models/generic/sphericalCone64.md3 differ diff --git a/assets/models/players/human_base/locdamage.cfg b/assets/models/players/human_base/locdamage.cfg new file mode 100644 index 0000000..3beeb16 --- /dev/null +++ b/assets/models/players/human_base/locdamage.cfg @@ -0,0 +1,60 @@ +// These regions must cover the entire body and cannot overlap otherwise +// the non-locational damage calculation will not be correct! + +{ + name "legs" + minHeight 0.0 + maxHeight 0.5 + minAngle 0 + maxAngle 360 + modifier 0.5 +} + +{ + name "torso" + minHeight 0.5 + maxHeight 0.8 + minAngle 0 + maxAngle 360 + modifier 1.0 +} + +{ + name "head" + minHeight 0.8 + maxHeight 1.0 + minAngle 0 + maxAngle 360 + modifier 1.5 +} + +{ + name "legs crouch" + minHeight 0.0 + maxHeight 0.3 + minAngle 0 + maxAngle 360 + modifier 0.5 + crouch +} + +{ + name "torso crouch" + minHeight 0.3 + maxHeight 0.7 + minAngle 0 + maxAngle 360 + modifier 1.0 + crouch +} + +{ + name "head crouch" + minHeight 0.7 + maxHeight 1.0 + minAngle 0 + maxAngle 360 + modifier 1.5 + crouch +} + diff --git a/assets/models/players/human_bsuit/locdamage.cfg b/assets/models/players/human_bsuit/locdamage.cfg new file mode 100644 index 0000000..a2ed6d9 --- /dev/null +++ b/assets/models/players/human_bsuit/locdamage.cfg @@ -0,0 +1,29 @@ +// These regions must cover the entire body and cannot overlap otherwise +// the non-locational damage calculation will not be correct! + +{ + name "legs" + minHeight 0.0 + maxHeight 0.5 + minAngle 0 + maxAngle 360 + modifier 0.5 +} + +{ + name "torso" + minHeight 0.5 + maxHeight 0.8 + minAngle 0 + maxAngle 360 + modifier 1.0 +} + +{ + name "head" + minHeight 0.8 + maxHeight 1.0 + minAngle 0 + maxAngle 360 + modifier 1.5 +} diff --git a/assets/models/players/level1/animation.cfg b/assets/models/players/level1/animation.cfg new file mode 100644 index 0000000..1c474f9 --- /dev/null +++ b/assets/models/players/level1/animation.cfg @@ -0,0 +1,48 @@ +// animation config file +// Tremulous: level1 alien + +sex n + +// first frame, num frames, looping frames, frames per second + +footsteps none + +nonsegmented + +0 40 40 30 //NSPA_STAND + +41 141 0 60 //NSPA_GESTURE + +182 31 31 30 //NSPA_WALK +182 31 31 60 //NSPA_RUN +182 -31 31 60 //NSPA_RUNBACK + +0 0 0 30 //NSPA_CHARGE + +213 31 31 60 //NSPA_RUNLEFT +213 31 31 30 //NSPA_WALKLEFT +244 31 31 60 //NSPA_RUNRIGHT +244 31 31 30 //NSPA_WALKRIGHT + +182 31 31 30 //NSPA_SWIM + +275 41 20 30 //NSPA_JUMP +316 20 0 30 //NSPA_LAND +275 41 20 30 //NSPA_JUMPBACK +316 20 0 30 //NSPA_LANDBACK + +182 31 31 30 //NSPA_TURN + +336 31 0 30 //NSPA_ATTACK1 +336 31 0 30 //NSPA_ATTACK2 +336 31 0 30 //NSPA_ATTACK3 + +367 11 0 30 //NSPA_PAIN1 +367 11 0 30 //NSPA_PAIN2 + +378 41 0 30 //NSPA_DEATH1 +418 1 0 30 //NSPA_DEAD1 +378 41 0 30 //NSPA_DEATH2 +418 1 0 30 //NSPA_DEAD2 +378 41 0 30 //NSPA_DEATH3 +418 1 0 30 //NSPA_DEAD3 diff --git a/assets/models/weapons/abuild/weapon.cfg b/assets/models/weapons/abuild/weapon.cfg new file mode 100644 index 0000000..46cfdaa --- /dev/null +++ b/assets/models/weapons/abuild/weapon.cfg @@ -0,0 +1,11 @@ +disableIn3rdPerson +crosshair 15 gfx/2d/crosshair-alien_s + +icon icons/icona_builder + +secondary +{ + flashSound 0 models/weapons/abuildupg/flash0.wav + impactFleshSound 0 models/weapons/abuildupg/impactflesh0.wav + alwaysImpact +} diff --git a/assets/models/weapons/abuildupg/weapon.cfg b/assets/models/weapons/abuildupg/weapon.cfg new file mode 100644 index 0000000..0646359 --- /dev/null +++ b/assets/models/weapons/abuildupg/weapon.cfg @@ -0,0 +1,19 @@ +disableIn3rdPerson +crosshair 15 gfx/2d/crosshair-alien_s + +icon icons/icona_builder + +secondary +{ + flashSound 0 models/weapons/abuildupg/flash0.wav + impactFleshSound 0 models/weapons/abuildupg/impactflesh0.wav + alwaysImpact +} + +tertiary +{ + missileModel models/weapons/level3upg/missile.md3 + + impactMark 64 creep + impactSound 0 sound/misc/organic_bounce.wav +} diff --git a/assets/models/weapons/grenade/weapon.cfg b/assets/models/weapons/grenade/weapon.cfg new file mode 100644 index 0000000..8ba230e --- /dev/null +++ b/assets/models/weapons/grenade/weapon.cfg @@ -0,0 +1,13 @@ +weaponModel models/weapons/grenade/grenade.md3 +icon icons/iconw_nade + +primary +{ + missileModel models/weapons/grenade/grenade.md3 + missileAnimates 0 20 20 0 + + impactMark 64 gfx/marks/bullet_mrk + impactParticleSystem models/weapons/grenade/impactPS + + impactSound 0 models/weapons/grenade/impact0.wav +} diff --git a/assets/models/weapons/lcannon/weapon.cfg b/assets/models/weapons/lcannon/weapon.cfg new file mode 100644 index 0000000..be3ae30 --- /dev/null +++ b/assets/models/weapons/lcannon/weapon.cfg @@ -0,0 +1,33 @@ +weaponModel models/weapons/lcannon/lcannon.md3 +icon icons/iconw_lucifer +crosshair 48 gfx/2d/crosshair-lcannon_s +idleSound models/weapons/lcannon/idle.wav + +primary +{ + missileSprite 16 gfx/lcannon/primary + missileSpriteCharge 0.25 + missileSound models/weapons/lcannon/missle.wav + missileParticleSystem models/weapons/lcannon/missilePS + + flashDlightColor 1.0 1.0 0.0 + flashSound 0 models/weapons/lcannon/flash0.wav + + impactMark 32 gfx/marks/bullet_mrk + impactSound 0 models/weapons/lcannon/impact0.wav + impactParticleSystem models/weapons/lcannon/impactPS +} + +secondary +{ + missileSprite 16 gfx/lcannon/primary + missileSound models/weapons/lcannon/missle.wav + missileParticleSystem models/weapons/lcannon/secondaryMissilePS + + flashDlightColor 1.0 1.0 0.0 + flashSound 0 models/weapons/lcannon/flash0.wav + + impactMark 8 gfx/marks/bullet_mrk + impactSound 0 models/weapons/lcannon/impact0.wav + impactParticleSystem models/weapons/lcannon/secondaryImpactPS +} diff --git a/assets/models/weapons/level0/weapon.cfg b/assets/models/weapons/level0/weapon.cfg new file mode 100644 index 0000000..2e52551 --- /dev/null +++ b/assets/models/weapons/level0/weapon.cfg @@ -0,0 +1,9 @@ +disableIn3rdPerson +crosshair 15 gfx/2d/crosshair-alien_s + +icon icons/icona_lev0 + +primary +{ + flashSound 0 models/weapons/level0/flash0.wav +} diff --git a/assets/models/weapons/level1/weapon.cfg b/assets/models/weapons/level1/weapon.cfg new file mode 100644 index 0000000..5932283 --- /dev/null +++ b/assets/models/weapons/level1/weapon.cfg @@ -0,0 +1,11 @@ +disableIn3rdPerson +crosshair 15 gfx/2d/crosshair-alien_s + +icon icons/icona_lev1 + +primary +{ + flashSound 0 models/weapons/level1/flash0.wav + impactFleshSound 0 models/weapons/level1/impactflesh0.wav + alwaysImpact +} diff --git a/assets/models/weapons/level1upg/weapon.cfg b/assets/models/weapons/level1upg/weapon.cfg new file mode 100644 index 0000000..5b60e8c --- /dev/null +++ b/assets/models/weapons/level1upg/weapon.cfg @@ -0,0 +1,17 @@ +disableIn3rdPerson +crosshair 15 gfx/2d/crosshair-alien_s + +icon icons/icona_lev1 + +primary +{ + flashSound 0 models/weapons/level1/flash0.wav + impactFleshSound 0 models/weapons/level1/impactflesh0.wav + alwaysImpact +} + +secondary +{ + flashSound 0 models/weapons/level1upg/gas.wav + muzzleParticleSystem models/weapons/level1upg/muzzlePS +} diff --git a/assets/models/weapons/level2/weapon.cfg b/assets/models/weapons/level2/weapon.cfg new file mode 100644 index 0000000..927a731 --- /dev/null +++ b/assets/models/weapons/level2/weapon.cfg @@ -0,0 +1,11 @@ +disableIn3rdPerson +crosshair 15 gfx/2d/crosshair-alien_s + +icon icons/icona_lev2 + +primary +{ + flashSound 0 models/weapons/level2/flash0.wav + impactFleshSound 0 models/weapons/level2/impactflesh0.wav + alwaysImpact +} diff --git a/assets/models/weapons/level2upg/weapon.cfg b/assets/models/weapons/level2upg/weapon.cfg new file mode 100644 index 0000000..7a1f26c --- /dev/null +++ b/assets/models/weapons/level2upg/weapon.cfg @@ -0,0 +1,18 @@ +disableIn3rdPerson + +icon icons/icona_lev2 +crosshair 15 gfx/2d/crosshair-alien_s + +primary +{ + flashSound 0 models/weapons/level2/flash0.wav + impactFleshSound 0 models/weapons/level2/impactflesh0.wav + alwaysImpact +} + +secondary +{ + flashSound 0 models/weapons/level2upg/electric.wav + + impactMark 24 gfx/marks/plasma_mrk +} diff --git a/assets/models/weapons/level3/weapon.cfg b/assets/models/weapons/level3/weapon.cfg new file mode 100644 index 0000000..faa2c18 --- /dev/null +++ b/assets/models/weapons/level3/weapon.cfg @@ -0,0 +1,16 @@ +disableIn3rdPerson +crosshair 15 gfx/2d/crosshair-alien_s + +icon icons/icona_lev3 + +primary +{ + flashSound 0 models/weapons/level3/flash0.wav + impactFleshSound 0 models/weapons/level3/impactflesh0.wav + alwaysImpact +} + +secondary +{ + flashSound 0 models/weapons/level3/pounce.wav +} diff --git a/assets/models/weapons/level3upg/weapon.cfg b/assets/models/weapons/level3upg/weapon.cfg new file mode 100644 index 0000000..51192f7 --- /dev/null +++ b/assets/models/weapons/level3upg/weapon.cfg @@ -0,0 +1,28 @@ +disableIn3rdPerson + +icon icons/icona_lev3 +crosshair 15 gfx/2d/crosshair-alien_s + +primary +{ + flashSound 0 models/weapons/level3/flash0.wav + impactFleshSound 0 models/weapons/level3/impactflesh0.wav + alwaysImpact +} + +secondary +{ + flashSound 0 models/weapons/level3/pounce.wav +} + +tertiary +{ + flashSound 0 models/weapons/level3upg/flash0.wav + + missileModel models/weapons/level3upg/missile.md3 + missileSound models/weapons/level3upg/missile.wav + + impactMark 30 gfx/marks/bullet_mrk + impactSound 0 models/weapons/rifle/ricochet0.wav + impactParticleSystem models/weapons/level3upg/impactPS +} diff --git a/assets/models/weapons/level4/weapon.cfg b/assets/models/weapons/level4/weapon.cfg new file mode 100644 index 0000000..b890af1 --- /dev/null +++ b/assets/models/weapons/level4/weapon.cfg @@ -0,0 +1,11 @@ +disableIn3rdPerson +crosshair 15 gfx/2d/crosshair-alien_s + +icon icons/icona_lev4 + +primary +{ + flashSound 0 models/weapons/level4/flash0.wav + impactFleshSound 0 models/weapons/level4/impactflesh0.wav + alwaysImpact +} diff --git a/assets/models/weapons/mdriver/weapon.cfg b/assets/models/weapons/mdriver/weapon.cfg new file mode 100644 index 0000000..938e7ae --- /dev/null +++ b/assets/models/weapons/mdriver/weapon.cfg @@ -0,0 +1,12 @@ +weaponModel models/weapons/mdriver/mdriver.md3 +icon icons/iconw_driver +crosshair 24 gfx/2d/crosshair-mdriver_s + +primary +{ + flashDlightColor 0.0 1.0 0.0 + flashSound 0 models/weapons/mdriver/flash0.wav + + impactMark 6 gfx/marks/bullet_mrk + impactParticleSystem models/weapons/mdriver/impactPS +} diff --git a/assets/models/weapons/prifle/weapon.cfg b/assets/models/weapons/prifle/weapon.cfg new file mode 100644 index 0000000..ca99f4f --- /dev/null +++ b/assets/models/weapons/prifle/weapon.cfg @@ -0,0 +1,17 @@ +weaponModel models/weapons/prifle/prifle.md3 +icon icons/iconw_pulse +crosshair 24 gfx/2d/crosshair-prifle_s + +primary +{ + missileSprite 3 gfx/prifle/red_blob + missileTrailSystem models/weapons/prifle/missileTS + + flashDlightColor 1.0 0.0 0.0 + flashSound 0 models/weapons/prifle/flash0.wav + + impactMark 16 gfx/marks/bullet_mrk + impactParticleSystem models/weapons/prifle/impactPS + impactSound 0 models/weapons/prifle/impact0.wav + alwaysImpact +} diff --git a/assets/models/weapons/psaw/weapon.cfg b/assets/models/weapons/psaw/weapon.cfg new file mode 100644 index 0000000..7b87940 --- /dev/null +++ b/assets/models/weapons/psaw/weapon.cfg @@ -0,0 +1,13 @@ +weaponModel models/weapons/psaw/psaw.md3 +icon icons/iconw_saw +idleSound models/weapons/psaw/idle.wav +crosshair 24 gfx/2d/crosshair-psaw + +primary +{ + flashDlightColor 1.0 1.0 1.0 + firingSound models/weapons/psaw/firing.wav + + impactParticleSystem models/weapons/psaw/impactPS + alwaysImpact +} \ No newline at end of file diff --git a/assets/music/Tremulous Heartbeat.mid b/assets/music/Tremulous Heartbeat.mid new file mode 100644 index 0000000..ebf78f9 Binary files /dev/null and b/assets/music/Tremulous Heartbeat.mid differ diff --git a/assets/scripts/binary.shader b/assets/scripts/binary.shader new file mode 100644 index 0000000..ee5e625 --- /dev/null +++ b/assets/scripts/binary.shader @@ -0,0 +1,16394 @@ +gfx/binary/alpha1 +{ + sort 15.5 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +// ============== 000 ============== + +gfx/binary/000_F1 +{ + sort 15.5001 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/000_F2 +{ + sort 15.5002 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/000_F3 +{ + sort 15.5003 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/000_B1 +{ + sort 15.5004 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/000_B2 +{ + sort 15.5005 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/000_B3 +{ + sort 15.5006 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 001 ============== + +gfx/binary/001_F1 +{ + sort 15.5007 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/001_F2 +{ + sort 15.5008 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/001_F3 +{ + sort 15.5009 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/001_B1 +{ + sort 15.5010 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/001_B2 +{ + sort 15.5011 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/001_B3 +{ + sort 15.5012 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 002 ============== + +gfx/binary/002_F1 +{ + sort 15.5013 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/002_F2 +{ + sort 15.5014 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/002_F3 +{ + sort 15.5015 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/002_B1 +{ + sort 15.5016 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/002_B2 +{ + sort 15.5017 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/002_B3 +{ + sort 15.5018 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 003 ============== + +gfx/binary/003_F1 +{ + sort 15.5019 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/003_F2 +{ + sort 15.5020 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/003_F3 +{ + sort 15.5021 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/003_B1 +{ + sort 15.5022 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/003_B2 +{ + sort 15.5023 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/003_B3 +{ + sort 15.5024 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 004 ============== + +gfx/binary/004_F1 +{ + sort 15.5025 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/004_F2 +{ + sort 15.5026 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/004_F3 +{ + sort 15.5027 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/004_B1 +{ + sort 15.5028 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/004_B2 +{ + sort 15.5029 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/004_B3 +{ + sort 15.5030 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 005 ============== + +gfx/binary/005_F1 +{ + sort 15.5031 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/005_F2 +{ + sort 15.5032 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/005_F3 +{ + sort 15.5033 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/005_B1 +{ + sort 15.5034 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/005_B2 +{ + sort 15.5035 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/005_B3 +{ + sort 15.5036 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 006 ============== + +gfx/binary/006_F1 +{ + sort 15.5037 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/006_F2 +{ + sort 15.5038 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/006_F3 +{ + sort 15.5039 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/006_B1 +{ + sort 15.5040 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/006_B2 +{ + sort 15.5041 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/006_B3 +{ + sort 15.5042 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 007 ============== + +gfx/binary/007_F1 +{ + sort 15.5043 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/007_F2 +{ + sort 15.5044 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/007_F3 +{ + sort 15.5045 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/007_B1 +{ + sort 15.5046 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/007_B2 +{ + sort 15.5047 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/007_B3 +{ + sort 15.5048 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 008 ============== + +gfx/binary/008_F1 +{ + sort 15.5049 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/008_F2 +{ + sort 15.5050 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/008_F3 +{ + sort 15.5051 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/008_B1 +{ + sort 15.5052 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/008_B2 +{ + sort 15.5053 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/008_B3 +{ + sort 15.5054 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 009 ============== + +gfx/binary/009_F1 +{ + sort 15.5055 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/009_F2 +{ + sort 15.5056 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/009_F3 +{ + sort 15.5057 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/009_B1 +{ + sort 15.5058 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/009_B2 +{ + sort 15.5059 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/009_B3 +{ + sort 15.5060 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 010 ============== + +gfx/binary/010_F1 +{ + sort 15.5061 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/010_F2 +{ + sort 15.5062 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/010_F3 +{ + sort 15.5063 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/010_B1 +{ + sort 15.5064 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/010_B2 +{ + sort 15.5065 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/010_B3 +{ + sort 15.5066 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 011 ============== + +gfx/binary/011_F1 +{ + sort 15.5067 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/011_F2 +{ + sort 15.5068 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/011_F3 +{ + sort 15.5069 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/011_B1 +{ + sort 15.5070 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/011_B2 +{ + sort 15.5071 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/011_B3 +{ + sort 15.5072 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 012 ============== + +gfx/binary/012_F1 +{ + sort 15.5073 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/012_F2 +{ + sort 15.5074 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/012_F3 +{ + sort 15.5075 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/012_B1 +{ + sort 15.5076 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/012_B2 +{ + sort 15.5077 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/012_B3 +{ + sort 15.5078 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 013 ============== + +gfx/binary/013_F1 +{ + sort 15.5079 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/013_F2 +{ + sort 15.5080 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/013_F3 +{ + sort 15.5081 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/013_B1 +{ + sort 15.5082 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/013_B2 +{ + sort 15.5083 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/013_B3 +{ + sort 15.5084 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 014 ============== + +gfx/binary/014_F1 +{ + sort 15.5085 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/014_F2 +{ + sort 15.5086 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/014_F3 +{ + sort 15.5087 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/014_B1 +{ + sort 15.5088 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/014_B2 +{ + sort 15.5089 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/014_B3 +{ + sort 15.5090 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 015 ============== + +gfx/binary/015_F1 +{ + sort 15.5091 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/015_F2 +{ + sort 15.5092 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/015_F3 +{ + sort 15.5093 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/015_B1 +{ + sort 15.5094 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/015_B2 +{ + sort 15.5095 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/015_B3 +{ + sort 15.5096 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 016 ============== + +gfx/binary/016_F1 +{ + sort 15.5097 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/016_F2 +{ + sort 15.5098 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/016_F3 +{ + sort 15.5099 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/016_B1 +{ + sort 15.5100 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/016_B2 +{ + sort 15.5101 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/016_B3 +{ + sort 15.5102 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 017 ============== + +gfx/binary/017_F1 +{ + sort 15.5103 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/017_F2 +{ + sort 15.5104 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/017_F3 +{ + sort 15.5105 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/017_B1 +{ + sort 15.5106 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/017_B2 +{ + sort 15.5107 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/017_B3 +{ + sort 15.5108 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 018 ============== + +gfx/binary/018_F1 +{ + sort 15.5109 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/018_F2 +{ + sort 15.5110 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/018_F3 +{ + sort 15.5111 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/018_B1 +{ + sort 15.5112 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/018_B2 +{ + sort 15.5113 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/018_B3 +{ + sort 15.5114 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 019 ============== + +gfx/binary/019_F1 +{ + sort 15.5115 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/019_F2 +{ + sort 15.5116 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/019_F3 +{ + sort 15.5117 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/019_B1 +{ + sort 15.5118 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/019_B2 +{ + sort 15.5119 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/019_B3 +{ + sort 15.5120 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 020 ============== + +gfx/binary/020_F1 +{ + sort 15.5121 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/020_F2 +{ + sort 15.5122 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/020_F3 +{ + sort 15.5123 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/020_B1 +{ + sort 15.5124 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/020_B2 +{ + sort 15.5125 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/020_B3 +{ + sort 15.5126 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 021 ============== + +gfx/binary/021_F1 +{ + sort 15.5127 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/021_F2 +{ + sort 15.5128 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/021_F3 +{ + sort 15.5129 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/021_B1 +{ + sort 15.5130 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/021_B2 +{ + sort 15.5131 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/021_B3 +{ + sort 15.5132 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 022 ============== + +gfx/binary/022_F1 +{ + sort 15.5133 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/022_F2 +{ + sort 15.5134 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/022_F3 +{ + sort 15.5135 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/022_B1 +{ + sort 15.5136 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/022_B2 +{ + sort 15.5137 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/022_B3 +{ + sort 15.5138 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 023 ============== + +gfx/binary/023_F1 +{ + sort 15.5139 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/023_F2 +{ + sort 15.5140 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/023_F3 +{ + sort 15.5141 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/023_B1 +{ + sort 15.5142 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/023_B2 +{ + sort 15.5143 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/023_B3 +{ + sort 15.5144 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 024 ============== + +gfx/binary/024_F1 +{ + sort 15.5145 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/024_F2 +{ + sort 15.5146 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/024_F3 +{ + sort 15.5147 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/024_B1 +{ + sort 15.5148 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/024_B2 +{ + sort 15.5149 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/024_B3 +{ + sort 15.5150 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 025 ============== + +gfx/binary/025_F1 +{ + sort 15.5151 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/025_F2 +{ + sort 15.5152 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/025_F3 +{ + sort 15.5153 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/025_B1 +{ + sort 15.5154 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/025_B2 +{ + sort 15.5155 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/025_B3 +{ + sort 15.5156 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 026 ============== + +gfx/binary/026_F1 +{ + sort 15.5157 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/026_F2 +{ + sort 15.5158 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/026_F3 +{ + sort 15.5159 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/026_B1 +{ + sort 15.5160 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/026_B2 +{ + sort 15.5161 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/026_B3 +{ + sort 15.5162 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 027 ============== + +gfx/binary/027_F1 +{ + sort 15.5163 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/027_F2 +{ + sort 15.5164 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/027_F3 +{ + sort 15.5165 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/027_B1 +{ + sort 15.5166 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/027_B2 +{ + sort 15.5167 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/027_B3 +{ + sort 15.5168 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 028 ============== + +gfx/binary/028_F1 +{ + sort 15.5169 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/028_F2 +{ + sort 15.5170 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/028_F3 +{ + sort 15.5171 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/028_B1 +{ + sort 15.5172 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/028_B2 +{ + sort 15.5173 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/028_B3 +{ + sort 15.5174 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 029 ============== + +gfx/binary/029_F1 +{ + sort 15.5175 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/029_F2 +{ + sort 15.5176 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/029_F3 +{ + sort 15.5177 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/029_B1 +{ + sort 15.5178 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/029_B2 +{ + sort 15.5179 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/029_B3 +{ + sort 15.5180 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 030 ============== + +gfx/binary/030_F1 +{ + sort 15.5181 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/030_F2 +{ + sort 15.5182 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/030_F3 +{ + sort 15.5183 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/030_B1 +{ + sort 15.5184 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/030_B2 +{ + sort 15.5185 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/030_B3 +{ + sort 15.5186 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 031 ============== + +gfx/binary/031_F1 +{ + sort 15.5187 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/031_F2 +{ + sort 15.5188 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/031_F3 +{ + sort 15.5189 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/031_B1 +{ + sort 15.5190 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/031_B2 +{ + sort 15.5191 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/031_B3 +{ + sort 15.5192 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 032 ============== + +gfx/binary/032_F1 +{ + sort 15.5193 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/032_F2 +{ + sort 15.5194 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/032_F3 +{ + sort 15.5195 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/032_B1 +{ + sort 15.5196 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/032_B2 +{ + sort 15.5197 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/032_B3 +{ + sort 15.5198 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 033 ============== + +gfx/binary/033_F1 +{ + sort 15.5199 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/033_F2 +{ + sort 15.5200 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/033_F3 +{ + sort 15.5201 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/033_B1 +{ + sort 15.5202 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/033_B2 +{ + sort 15.5203 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/033_B3 +{ + sort 15.5204 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 034 ============== + +gfx/binary/034_F1 +{ + sort 15.5205 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/034_F2 +{ + sort 15.5206 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/034_F3 +{ + sort 15.5207 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/034_B1 +{ + sort 15.5208 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/034_B2 +{ + sort 15.5209 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/034_B3 +{ + sort 15.5210 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 035 ============== + +gfx/binary/035_F1 +{ + sort 15.5211 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/035_F2 +{ + sort 15.5212 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/035_F3 +{ + sort 15.5213 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/035_B1 +{ + sort 15.5214 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/035_B2 +{ + sort 15.5215 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/035_B3 +{ + sort 15.5216 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 036 ============== + +gfx/binary/036_F1 +{ + sort 15.5217 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/036_F2 +{ + sort 15.5218 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/036_F3 +{ + sort 15.5219 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/036_B1 +{ + sort 15.5220 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/036_B2 +{ + sort 15.5221 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/036_B3 +{ + sort 15.5222 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 037 ============== + +gfx/binary/037_F1 +{ + sort 15.5223 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/037_F2 +{ + sort 15.5224 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/037_F3 +{ + sort 15.5225 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/037_B1 +{ + sort 15.5226 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/037_B2 +{ + sort 15.5227 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/037_B3 +{ + sort 15.5228 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 038 ============== + +gfx/binary/038_F1 +{ + sort 15.5229 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/038_F2 +{ + sort 15.5230 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/038_F3 +{ + sort 15.5231 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/038_B1 +{ + sort 15.5232 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/038_B2 +{ + sort 15.5233 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/038_B3 +{ + sort 15.5234 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 039 ============== + +gfx/binary/039_F1 +{ + sort 15.5235 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/039_F2 +{ + sort 15.5236 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/039_F3 +{ + sort 15.5237 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/039_B1 +{ + sort 15.5238 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/039_B2 +{ + sort 15.5239 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/039_B3 +{ + sort 15.5240 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 040 ============== + +gfx/binary/040_F1 +{ + sort 15.5241 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/040_F2 +{ + sort 15.5242 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/040_F3 +{ + sort 15.5243 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/040_B1 +{ + sort 15.5244 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/040_B2 +{ + sort 15.5245 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/040_B3 +{ + sort 15.5246 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 041 ============== + +gfx/binary/041_F1 +{ + sort 15.5247 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/041_F2 +{ + sort 15.5248 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/041_F3 +{ + sort 15.5249 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/041_B1 +{ + sort 15.5250 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/041_B2 +{ + sort 15.5251 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/041_B3 +{ + sort 15.5252 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 042 ============== + +gfx/binary/042_F1 +{ + sort 15.5253 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/042_F2 +{ + sort 15.5254 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/042_F3 +{ + sort 15.5255 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/042_B1 +{ + sort 15.5256 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/042_B2 +{ + sort 15.5257 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/042_B3 +{ + sort 15.5258 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 043 ============== + +gfx/binary/043_F1 +{ + sort 15.5259 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/043_F2 +{ + sort 15.5260 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/043_F3 +{ + sort 15.5261 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/043_B1 +{ + sort 15.5262 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/043_B2 +{ + sort 15.5263 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/043_B3 +{ + sort 15.5264 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 044 ============== + +gfx/binary/044_F1 +{ + sort 15.5265 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/044_F2 +{ + sort 15.5266 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/044_F3 +{ + sort 15.5267 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/044_B1 +{ + sort 15.5268 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/044_B2 +{ + sort 15.5269 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/044_B3 +{ + sort 15.5270 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 045 ============== + +gfx/binary/045_F1 +{ + sort 15.5271 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/045_F2 +{ + sort 15.5272 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/045_F3 +{ + sort 15.5273 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/045_B1 +{ + sort 15.5274 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/045_B2 +{ + sort 15.5275 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/045_B3 +{ + sort 15.5276 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 046 ============== + +gfx/binary/046_F1 +{ + sort 15.5277 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/046_F2 +{ + sort 15.5278 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/046_F3 +{ + sort 15.5279 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/046_B1 +{ + sort 15.5280 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/046_B2 +{ + sort 15.5281 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/046_B3 +{ + sort 15.5282 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 047 ============== + +gfx/binary/047_F1 +{ + sort 15.5283 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/047_F2 +{ + sort 15.5284 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/047_F3 +{ + sort 15.5285 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/047_B1 +{ + sort 15.5286 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/047_B2 +{ + sort 15.5287 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/047_B3 +{ + sort 15.5288 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 048 ============== + +gfx/binary/048_F1 +{ + sort 15.5289 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/048_F2 +{ + sort 15.5290 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/048_F3 +{ + sort 15.5291 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/048_B1 +{ + sort 15.5292 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/048_B2 +{ + sort 15.5293 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/048_B3 +{ + sort 15.5294 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 049 ============== + +gfx/binary/049_F1 +{ + sort 15.5295 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/049_F2 +{ + sort 15.5296 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/049_F3 +{ + sort 15.5297 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/049_B1 +{ + sort 15.5298 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/049_B2 +{ + sort 15.5299 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/049_B3 +{ + sort 15.5300 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 050 ============== + +gfx/binary/050_F1 +{ + sort 15.5301 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/050_F2 +{ + sort 15.5302 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/050_F3 +{ + sort 15.5303 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/050_B1 +{ + sort 15.5304 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/050_B2 +{ + sort 15.5305 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/050_B3 +{ + sort 15.5306 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 051 ============== + +gfx/binary/051_F1 +{ + sort 15.5307 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/051_F2 +{ + sort 15.5308 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/051_F3 +{ + sort 15.5309 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/051_B1 +{ + sort 15.5310 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/051_B2 +{ + sort 15.5311 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/051_B3 +{ + sort 15.5312 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 052 ============== + +gfx/binary/052_F1 +{ + sort 15.5313 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/052_F2 +{ + sort 15.5314 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/052_F3 +{ + sort 15.5315 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/052_B1 +{ + sort 15.5316 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/052_B2 +{ + sort 15.5317 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/052_B3 +{ + sort 15.5318 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 053 ============== + +gfx/binary/053_F1 +{ + sort 15.5319 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/053_F2 +{ + sort 15.5320 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/053_F3 +{ + sort 15.5321 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/053_B1 +{ + sort 15.5322 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/053_B2 +{ + sort 15.5323 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/053_B3 +{ + sort 15.5324 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 054 ============== + +gfx/binary/054_F1 +{ + sort 15.5325 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/054_F2 +{ + sort 15.5326 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/054_F3 +{ + sort 15.5327 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/054_B1 +{ + sort 15.5328 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/054_B2 +{ + sort 15.5329 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/054_B3 +{ + sort 15.5330 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 055 ============== + +gfx/binary/055_F1 +{ + sort 15.5331 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/055_F2 +{ + sort 15.5332 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/055_F3 +{ + sort 15.5333 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/055_B1 +{ + sort 15.5334 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/055_B2 +{ + sort 15.5335 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/055_B3 +{ + sort 15.5336 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 056 ============== + +gfx/binary/056_F1 +{ + sort 15.5337 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/056_F2 +{ + sort 15.5338 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/056_F3 +{ + sort 15.5339 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/056_B1 +{ + sort 15.5340 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/056_B2 +{ + sort 15.5341 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/056_B3 +{ + sort 15.5342 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 057 ============== + +gfx/binary/057_F1 +{ + sort 15.5343 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/057_F2 +{ + sort 15.5344 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/057_F3 +{ + sort 15.5345 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/057_B1 +{ + sort 15.5346 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/057_B2 +{ + sort 15.5347 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/057_B3 +{ + sort 15.5348 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 058 ============== + +gfx/binary/058_F1 +{ + sort 15.5349 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/058_F2 +{ + sort 15.5350 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/058_F3 +{ + sort 15.5351 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/058_B1 +{ + sort 15.5352 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/058_B2 +{ + sort 15.5353 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/058_B3 +{ + sort 15.5354 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 059 ============== + +gfx/binary/059_F1 +{ + sort 15.5355 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/059_F2 +{ + sort 15.5356 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/059_F3 +{ + sort 15.5357 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/059_B1 +{ + sort 15.5358 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/059_B2 +{ + sort 15.5359 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/059_B3 +{ + sort 15.5360 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 060 ============== + +gfx/binary/060_F1 +{ + sort 15.5361 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/060_F2 +{ + sort 15.5362 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/060_F3 +{ + sort 15.5363 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/060_B1 +{ + sort 15.5364 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/060_B2 +{ + sort 15.5365 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/060_B3 +{ + sort 15.5366 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 061 ============== + +gfx/binary/061_F1 +{ + sort 15.5367 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/061_F2 +{ + sort 15.5368 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/061_F3 +{ + sort 15.5369 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/061_B1 +{ + sort 15.5370 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/061_B2 +{ + sort 15.5371 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/061_B3 +{ + sort 15.5372 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 062 ============== + +gfx/binary/062_F1 +{ + sort 15.5373 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/062_F2 +{ + sort 15.5374 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/062_F3 +{ + sort 15.5375 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/062_B1 +{ + sort 15.5376 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/062_B2 +{ + sort 15.5377 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/062_B3 +{ + sort 15.5378 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 063 ============== + +gfx/binary/063_F1 +{ + sort 15.5379 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/063_F2 +{ + sort 15.5380 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/063_F3 +{ + sort 15.5381 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/063_B1 +{ + sort 15.5382 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/063_B2 +{ + sort 15.5383 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/063_B3 +{ + sort 15.5384 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 064 ============== + +gfx/binary/064_F1 +{ + sort 15.5385 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/064_F2 +{ + sort 15.5386 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/064_F3 +{ + sort 15.5387 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/064_B1 +{ + sort 15.5388 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/064_B2 +{ + sort 15.5389 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/064_B3 +{ + sort 15.5390 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 065 ============== + +gfx/binary/065_F1 +{ + sort 15.5391 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/065_F2 +{ + sort 15.5392 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/065_F3 +{ + sort 15.5393 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/065_B1 +{ + sort 15.5394 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/065_B2 +{ + sort 15.5395 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/065_B3 +{ + sort 15.5396 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 066 ============== + +gfx/binary/066_F1 +{ + sort 15.5397 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/066_F2 +{ + sort 15.5398 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/066_F3 +{ + sort 15.5399 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/066_B1 +{ + sort 15.5400 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/066_B2 +{ + sort 15.5401 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/066_B3 +{ + sort 15.5402 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 067 ============== + +gfx/binary/067_F1 +{ + sort 15.5403 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/067_F2 +{ + sort 15.5404 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/067_F3 +{ + sort 15.5405 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/067_B1 +{ + sort 15.5406 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/067_B2 +{ + sort 15.5407 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/067_B3 +{ + sort 15.5408 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 068 ============== + +gfx/binary/068_F1 +{ + sort 15.5409 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/068_F2 +{ + sort 15.5410 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/068_F3 +{ + sort 15.5411 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/068_B1 +{ + sort 15.5412 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/068_B2 +{ + sort 15.5413 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/068_B3 +{ + sort 15.5414 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 069 ============== + +gfx/binary/069_F1 +{ + sort 15.5415 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/069_F2 +{ + sort 15.5416 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/069_F3 +{ + sort 15.5417 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/069_B1 +{ + sort 15.5418 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/069_B2 +{ + sort 15.5419 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/069_B3 +{ + sort 15.5420 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 070 ============== + +gfx/binary/070_F1 +{ + sort 15.5421 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/070_F2 +{ + sort 15.5422 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/070_F3 +{ + sort 15.5423 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/070_B1 +{ + sort 15.5424 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/070_B2 +{ + sort 15.5425 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/070_B3 +{ + sort 15.5426 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 071 ============== + +gfx/binary/071_F1 +{ + sort 15.5427 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/071_F2 +{ + sort 15.5428 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/071_F3 +{ + sort 15.5429 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/071_B1 +{ + sort 15.5430 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/071_B2 +{ + sort 15.5431 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/071_B3 +{ + sort 15.5432 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 072 ============== + +gfx/binary/072_F1 +{ + sort 15.5433 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/072_F2 +{ + sort 15.5434 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/072_F3 +{ + sort 15.5435 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/072_B1 +{ + sort 15.5436 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/072_B2 +{ + sort 15.5437 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/072_B3 +{ + sort 15.5438 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 073 ============== + +gfx/binary/073_F1 +{ + sort 15.5439 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/073_F2 +{ + sort 15.5440 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/073_F3 +{ + sort 15.5441 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/073_B1 +{ + sort 15.5442 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/073_B2 +{ + sort 15.5443 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/073_B3 +{ + sort 15.5444 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 074 ============== + +gfx/binary/074_F1 +{ + sort 15.5445 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/074_F2 +{ + sort 15.5446 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/074_F3 +{ + sort 15.5447 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/074_B1 +{ + sort 15.5448 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/074_B2 +{ + sort 15.5449 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/074_B3 +{ + sort 15.5450 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 075 ============== + +gfx/binary/075_F1 +{ + sort 15.5451 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/075_F2 +{ + sort 15.5452 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/075_F3 +{ + sort 15.5453 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/075_B1 +{ + sort 15.5454 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/075_B2 +{ + sort 15.5455 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/075_B3 +{ + sort 15.5456 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 076 ============== + +gfx/binary/076_F1 +{ + sort 15.5457 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/076_F2 +{ + sort 15.5458 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/076_F3 +{ + sort 15.5459 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/076_B1 +{ + sort 15.5460 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/076_B2 +{ + sort 15.5461 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/076_B3 +{ + sort 15.5462 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 077 ============== + +gfx/binary/077_F1 +{ + sort 15.5463 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/077_F2 +{ + sort 15.5464 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/077_F3 +{ + sort 15.5465 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/077_B1 +{ + sort 15.5466 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/077_B2 +{ + sort 15.5467 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/077_B3 +{ + sort 15.5468 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 078 ============== + +gfx/binary/078_F1 +{ + sort 15.5469 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/078_F2 +{ + sort 15.5470 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/078_F3 +{ + sort 15.5471 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/078_B1 +{ + sort 15.5472 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/078_B2 +{ + sort 15.5473 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/078_B3 +{ + sort 15.5474 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 079 ============== + +gfx/binary/079_F1 +{ + sort 15.5475 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/079_F2 +{ + sort 15.5476 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/079_F3 +{ + sort 15.5477 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/079_B1 +{ + sort 15.5478 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/079_B2 +{ + sort 15.5479 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/079_B3 +{ + sort 15.5480 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 080 ============== + +gfx/binary/080_F1 +{ + sort 15.5481 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/080_F2 +{ + sort 15.5482 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/080_F3 +{ + sort 15.5483 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/080_B1 +{ + sort 15.5484 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/080_B2 +{ + sort 15.5485 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/080_B3 +{ + sort 15.5486 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 081 ============== + +gfx/binary/081_F1 +{ + sort 15.5487 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/081_F2 +{ + sort 15.5488 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/081_F3 +{ + sort 15.5489 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/081_B1 +{ + sort 15.5490 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/081_B2 +{ + sort 15.5491 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/081_B3 +{ + sort 15.5492 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 082 ============== + +gfx/binary/082_F1 +{ + sort 15.5493 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/082_F2 +{ + sort 15.5494 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/082_F3 +{ + sort 15.5495 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/082_B1 +{ + sort 15.5496 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/082_B2 +{ + sort 15.5497 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/082_B3 +{ + sort 15.5498 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 083 ============== + +gfx/binary/083_F1 +{ + sort 15.5499 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/083_F2 +{ + sort 15.5500 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/083_F3 +{ + sort 15.5501 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/083_B1 +{ + sort 15.5502 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/083_B2 +{ + sort 15.5503 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/083_B3 +{ + sort 15.5504 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 084 ============== + +gfx/binary/084_F1 +{ + sort 15.5505 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/084_F2 +{ + sort 15.5506 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/084_F3 +{ + sort 15.5507 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/084_B1 +{ + sort 15.5508 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/084_B2 +{ + sort 15.5509 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/084_B3 +{ + sort 15.5510 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 085 ============== + +gfx/binary/085_F1 +{ + sort 15.5511 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/085_F2 +{ + sort 15.5512 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/085_F3 +{ + sort 15.5513 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/085_B1 +{ + sort 15.5514 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/085_B2 +{ + sort 15.5515 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/085_B3 +{ + sort 15.5516 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 086 ============== + +gfx/binary/086_F1 +{ + sort 15.5517 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/086_F2 +{ + sort 15.5518 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/086_F3 +{ + sort 15.5519 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/086_B1 +{ + sort 15.5520 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/086_B2 +{ + sort 15.5521 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/086_B3 +{ + sort 15.5522 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 087 ============== + +gfx/binary/087_F1 +{ + sort 15.5523 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/087_F2 +{ + sort 15.5524 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/087_F3 +{ + sort 15.5525 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/087_B1 +{ + sort 15.5526 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/087_B2 +{ + sort 15.5527 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/087_B3 +{ + sort 15.5528 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 088 ============== + +gfx/binary/088_F1 +{ + sort 15.5529 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/088_F2 +{ + sort 15.5530 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/088_F3 +{ + sort 15.5531 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/088_B1 +{ + sort 15.5532 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/088_B2 +{ + sort 15.5533 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/088_B3 +{ + sort 15.5534 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 089 ============== + +gfx/binary/089_F1 +{ + sort 15.5535 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/089_F2 +{ + sort 15.5536 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/089_F3 +{ + sort 15.5537 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/089_B1 +{ + sort 15.5538 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/089_B2 +{ + sort 15.5539 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/089_B3 +{ + sort 15.5540 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 090 ============== + +gfx/binary/090_F1 +{ + sort 15.5541 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/090_F2 +{ + sort 15.5542 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/090_F3 +{ + sort 15.5543 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/090_B1 +{ + sort 15.5544 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/090_B2 +{ + sort 15.5545 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/090_B3 +{ + sort 15.5546 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 091 ============== + +gfx/binary/091_F1 +{ + sort 15.5547 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/091_F2 +{ + sort 15.5548 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/091_F3 +{ + sort 15.5549 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/091_B1 +{ + sort 15.5550 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/091_B2 +{ + sort 15.5551 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/091_B3 +{ + sort 15.5552 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 092 ============== + +gfx/binary/092_F1 +{ + sort 15.5553 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/092_F2 +{ + sort 15.5554 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/092_F3 +{ + sort 15.5555 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/092_B1 +{ + sort 15.5556 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/092_B2 +{ + sort 15.5557 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/092_B3 +{ + sort 15.5558 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 093 ============== + +gfx/binary/093_F1 +{ + sort 15.5559 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/093_F2 +{ + sort 15.5560 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/093_F3 +{ + sort 15.5561 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/093_B1 +{ + sort 15.5562 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/093_B2 +{ + sort 15.5563 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/093_B3 +{ + sort 15.5564 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 094 ============== + +gfx/binary/094_F1 +{ + sort 15.5565 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/094_F2 +{ + sort 15.5566 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/094_F3 +{ + sort 15.5567 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/094_B1 +{ + sort 15.5568 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/094_B2 +{ + sort 15.5569 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/094_B3 +{ + sort 15.5570 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 095 ============== + +gfx/binary/095_F1 +{ + sort 15.5571 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/095_F2 +{ + sort 15.5572 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/095_F3 +{ + sort 15.5573 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/095_B1 +{ + sort 15.5574 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/095_B2 +{ + sort 15.5575 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/095_B3 +{ + sort 15.5576 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 096 ============== + +gfx/binary/096_F1 +{ + sort 15.5577 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/096_F2 +{ + sort 15.5578 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/096_F3 +{ + sort 15.5579 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/096_B1 +{ + sort 15.5580 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/096_B2 +{ + sort 15.5581 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/096_B3 +{ + sort 15.5582 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 097 ============== + +gfx/binary/097_F1 +{ + sort 15.5583 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/097_F2 +{ + sort 15.5584 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/097_F3 +{ + sort 15.5585 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/097_B1 +{ + sort 15.5586 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/097_B2 +{ + sort 15.5587 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/097_B3 +{ + sort 15.5588 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 098 ============== + +gfx/binary/098_F1 +{ + sort 15.5589 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/098_F2 +{ + sort 15.5590 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/098_F3 +{ + sort 15.5591 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/098_B1 +{ + sort 15.5592 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/098_B2 +{ + sort 15.5593 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/098_B3 +{ + sort 15.5594 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 099 ============== + +gfx/binary/099_F1 +{ + sort 15.5595 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/099_F2 +{ + sort 15.5596 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/099_F3 +{ + sort 15.5597 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/099_B1 +{ + sort 15.5598 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/099_B2 +{ + sort 15.5599 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/099_B3 +{ + sort 15.5600 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 100 ============== + +gfx/binary/100_F1 +{ + sort 15.5601 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/100_F2 +{ + sort 15.5602 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/100_F3 +{ + sort 15.5603 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/100_B1 +{ + sort 15.5604 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/100_B2 +{ + sort 15.5605 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/100_B3 +{ + sort 15.5606 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 101 ============== + +gfx/binary/101_F1 +{ + sort 15.5607 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/101_F2 +{ + sort 15.5608 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/101_F3 +{ + sort 15.5609 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/101_B1 +{ + sort 15.5610 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/101_B2 +{ + sort 15.5611 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/101_B3 +{ + sort 15.5612 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 102 ============== + +gfx/binary/102_F1 +{ + sort 15.5613 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/102_F2 +{ + sort 15.5614 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/102_F3 +{ + sort 15.5615 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/102_B1 +{ + sort 15.5616 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/102_B2 +{ + sort 15.5617 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/102_B3 +{ + sort 15.5618 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 103 ============== + +gfx/binary/103_F1 +{ + sort 15.5619 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/103_F2 +{ + sort 15.5620 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/103_F3 +{ + sort 15.5621 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/103_B1 +{ + sort 15.5622 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/103_B2 +{ + sort 15.5623 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/103_B3 +{ + sort 15.5624 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 104 ============== + +gfx/binary/104_F1 +{ + sort 15.5625 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/104_F2 +{ + sort 15.5626 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/104_F3 +{ + sort 15.5627 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/104_B1 +{ + sort 15.5628 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/104_B2 +{ + sort 15.5629 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/104_B3 +{ + sort 15.5630 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 105 ============== + +gfx/binary/105_F1 +{ + sort 15.5631 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/105_F2 +{ + sort 15.5632 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/105_F3 +{ + sort 15.5633 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/105_B1 +{ + sort 15.5634 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/105_B2 +{ + sort 15.5635 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/105_B3 +{ + sort 15.5636 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 106 ============== + +gfx/binary/106_F1 +{ + sort 15.5637 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/106_F2 +{ + sort 15.5638 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/106_F3 +{ + sort 15.5639 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/106_B1 +{ + sort 15.5640 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/106_B2 +{ + sort 15.5641 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/106_B3 +{ + sort 15.5642 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 107 ============== + +gfx/binary/107_F1 +{ + sort 15.5643 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/107_F2 +{ + sort 15.5644 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/107_F3 +{ + sort 15.5645 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/107_B1 +{ + sort 15.5646 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/107_B2 +{ + sort 15.5647 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/107_B3 +{ + sort 15.5648 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 108 ============== + +gfx/binary/108_F1 +{ + sort 15.5649 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/108_F2 +{ + sort 15.5650 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/108_F3 +{ + sort 15.5651 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/108_B1 +{ + sort 15.5652 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/108_B2 +{ + sort 15.5653 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/108_B3 +{ + sort 15.5654 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 109 ============== + +gfx/binary/109_F1 +{ + sort 15.5655 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/109_F2 +{ + sort 15.5656 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/109_F3 +{ + sort 15.5657 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/109_B1 +{ + sort 15.5658 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/109_B2 +{ + sort 15.5659 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/109_B3 +{ + sort 15.5660 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 110 ============== + +gfx/binary/110_F1 +{ + sort 15.5661 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/110_F2 +{ + sort 15.5662 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/110_F3 +{ + sort 15.5663 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/110_B1 +{ + sort 15.5664 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/110_B2 +{ + sort 15.5665 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/110_B3 +{ + sort 15.5666 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 111 ============== + +gfx/binary/111_F1 +{ + sort 15.5667 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/111_F2 +{ + sort 15.5668 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/111_F3 +{ + sort 15.5669 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/111_B1 +{ + sort 15.5670 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/111_B2 +{ + sort 15.5671 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/111_B3 +{ + sort 15.5672 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 112 ============== + +gfx/binary/112_F1 +{ + sort 15.5673 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/112_F2 +{ + sort 15.5674 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/112_F3 +{ + sort 15.5675 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/112_B1 +{ + sort 15.5676 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/112_B2 +{ + sort 15.5677 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/112_B3 +{ + sort 15.5678 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 113 ============== + +gfx/binary/113_F1 +{ + sort 15.5679 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/113_F2 +{ + sort 15.5680 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/113_F3 +{ + sort 15.5681 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/113_B1 +{ + sort 15.5682 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/113_B2 +{ + sort 15.5683 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/113_B3 +{ + sort 15.5684 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 114 ============== + +gfx/binary/114_F1 +{ + sort 15.5685 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/114_F2 +{ + sort 15.5686 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/114_F3 +{ + sort 15.5687 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/114_B1 +{ + sort 15.5688 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/114_B2 +{ + sort 15.5689 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/114_B3 +{ + sort 15.5690 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 115 ============== + +gfx/binary/115_F1 +{ + sort 15.5691 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/115_F2 +{ + sort 15.5692 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/115_F3 +{ + sort 15.5693 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/115_B1 +{ + sort 15.5694 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/115_B2 +{ + sort 15.5695 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/115_B3 +{ + sort 15.5696 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 116 ============== + +gfx/binary/116_F1 +{ + sort 15.5697 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/116_F2 +{ + sort 15.5698 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/116_F3 +{ + sort 15.5699 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/116_B1 +{ + sort 15.5700 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/116_B2 +{ + sort 15.5701 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/116_B3 +{ + sort 15.5702 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 117 ============== + +gfx/binary/117_F1 +{ + sort 15.5703 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/117_F2 +{ + sort 15.5704 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/117_F3 +{ + sort 15.5705 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/117_B1 +{ + sort 15.5706 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/117_B2 +{ + sort 15.5707 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/117_B3 +{ + sort 15.5708 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 118 ============== + +gfx/binary/118_F1 +{ + sort 15.5709 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/118_F2 +{ + sort 15.5710 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/118_F3 +{ + sort 15.5711 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/118_B1 +{ + sort 15.5712 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/118_B2 +{ + sort 15.5713 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/118_B3 +{ + sort 15.5714 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 119 ============== + +gfx/binary/119_F1 +{ + sort 15.5715 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/119_F2 +{ + sort 15.5716 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/119_F3 +{ + sort 15.5717 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/119_B1 +{ + sort 15.5718 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/119_B2 +{ + sort 15.5719 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/119_B3 +{ + sort 15.5720 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 120 ============== + +gfx/binary/120_F1 +{ + sort 15.5721 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/120_F2 +{ + sort 15.5722 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/120_F3 +{ + sort 15.5723 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/120_B1 +{ + sort 15.5724 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/120_B2 +{ + sort 15.5725 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/120_B3 +{ + sort 15.5726 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 121 ============== + +gfx/binary/121_F1 +{ + sort 15.5727 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/121_F2 +{ + sort 15.5728 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/121_F3 +{ + sort 15.5729 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/121_B1 +{ + sort 15.5730 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/121_B2 +{ + sort 15.5731 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/121_B3 +{ + sort 15.5732 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 122 ============== + +gfx/binary/122_F1 +{ + sort 15.5733 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/122_F2 +{ + sort 15.5734 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/122_F3 +{ + sort 15.5735 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/122_B1 +{ + sort 15.5736 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/122_B2 +{ + sort 15.5737 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/122_B3 +{ + sort 15.5738 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 123 ============== + +gfx/binary/123_F1 +{ + sort 15.5739 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/123_F2 +{ + sort 15.5740 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/123_F3 +{ + sort 15.5741 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/123_B1 +{ + sort 15.5742 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/123_B2 +{ + sort 15.5743 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/123_B3 +{ + sort 15.5744 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 124 ============== + +gfx/binary/124_F1 +{ + sort 15.5745 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/124_F2 +{ + sort 15.5746 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/124_F3 +{ + sort 15.5747 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/124_B1 +{ + sort 15.5748 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/124_B2 +{ + sort 15.5749 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/124_B3 +{ + sort 15.5750 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 125 ============== + +gfx/binary/125_F1 +{ + sort 15.5751 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/125_F2 +{ + sort 15.5752 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/125_F3 +{ + sort 15.5753 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/125_B1 +{ + sort 15.5754 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/125_B2 +{ + sort 15.5755 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/125_B3 +{ + sort 15.5756 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 126 ============== + +gfx/binary/126_F1 +{ + sort 15.5757 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/126_F2 +{ + sort 15.5758 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/126_F3 +{ + sort 15.5759 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/126_B1 +{ + sort 15.5760 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/126_B2 +{ + sort 15.5761 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/126_B3 +{ + sort 15.5762 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 127 ============== + +gfx/binary/127_F1 +{ + sort 15.5763 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/127_F2 +{ + sort 15.5764 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/127_F3 +{ + sort 15.5765 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/127_B1 +{ + sort 15.5766 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/127_B2 +{ + sort 15.5767 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/127_B3 +{ + sort 15.5768 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 128 ============== + +gfx/binary/128_F1 +{ + sort 15.5769 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/128_F2 +{ + sort 15.5770 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/128_F3 +{ + sort 15.5771 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/128_B1 +{ + sort 15.5772 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/128_B2 +{ + sort 15.5773 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/128_B3 +{ + sort 15.5774 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 129 ============== + +gfx/binary/129_F1 +{ + sort 15.5775 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/129_F2 +{ + sort 15.5776 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/129_F3 +{ + sort 15.5777 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/129_B1 +{ + sort 15.5778 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/129_B2 +{ + sort 15.5779 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/129_B3 +{ + sort 15.5780 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 130 ============== + +gfx/binary/130_F1 +{ + sort 15.5781 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/130_F2 +{ + sort 15.5782 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/130_F3 +{ + sort 15.5783 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/130_B1 +{ + sort 15.5784 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/130_B2 +{ + sort 15.5785 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/130_B3 +{ + sort 15.5786 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 131 ============== + +gfx/binary/131_F1 +{ + sort 15.5787 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/131_F2 +{ + sort 15.5788 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/131_F3 +{ + sort 15.5789 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/131_B1 +{ + sort 15.5790 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/131_B2 +{ + sort 15.5791 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/131_B3 +{ + sort 15.5792 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 132 ============== + +gfx/binary/132_F1 +{ + sort 15.5793 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/132_F2 +{ + sort 15.5794 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/132_F3 +{ + sort 15.5795 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/132_B1 +{ + sort 15.5796 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/132_B2 +{ + sort 15.5797 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/132_B3 +{ + sort 15.5798 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 133 ============== + +gfx/binary/133_F1 +{ + sort 15.5799 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/133_F2 +{ + sort 15.5800 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/133_F3 +{ + sort 15.5801 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/133_B1 +{ + sort 15.5802 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/133_B2 +{ + sort 15.5803 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/133_B3 +{ + sort 15.5804 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 134 ============== + +gfx/binary/134_F1 +{ + sort 15.5805 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/134_F2 +{ + sort 15.5806 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/134_F3 +{ + sort 15.5807 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/134_B1 +{ + sort 15.5808 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/134_B2 +{ + sort 15.5809 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/134_B3 +{ + sort 15.5810 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 135 ============== + +gfx/binary/135_F1 +{ + sort 15.5811 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/135_F2 +{ + sort 15.5812 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/135_F3 +{ + sort 15.5813 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/135_B1 +{ + sort 15.5814 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/135_B2 +{ + sort 15.5815 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/135_B3 +{ + sort 15.5816 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 136 ============== + +gfx/binary/136_F1 +{ + sort 15.5817 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/136_F2 +{ + sort 15.5818 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/136_F3 +{ + sort 15.5819 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/136_B1 +{ + sort 15.5820 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/136_B2 +{ + sort 15.5821 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/136_B3 +{ + sort 15.5822 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 137 ============== + +gfx/binary/137_F1 +{ + sort 15.5823 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/137_F2 +{ + sort 15.5824 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/137_F3 +{ + sort 15.5825 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/137_B1 +{ + sort 15.5826 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/137_B2 +{ + sort 15.5827 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/137_B3 +{ + sort 15.5828 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 138 ============== + +gfx/binary/138_F1 +{ + sort 15.5829 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/138_F2 +{ + sort 15.5830 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/138_F3 +{ + sort 15.5831 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/138_B1 +{ + sort 15.5832 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/138_B2 +{ + sort 15.5833 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/138_B3 +{ + sort 15.5834 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 139 ============== + +gfx/binary/139_F1 +{ + sort 15.5835 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/139_F2 +{ + sort 15.5836 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/139_F3 +{ + sort 15.5837 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/139_B1 +{ + sort 15.5838 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/139_B2 +{ + sort 15.5839 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/139_B3 +{ + sort 15.5840 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 140 ============== + +gfx/binary/140_F1 +{ + sort 15.5841 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/140_F2 +{ + sort 15.5842 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/140_F3 +{ + sort 15.5843 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/140_B1 +{ + sort 15.5844 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/140_B2 +{ + sort 15.5845 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/140_B3 +{ + sort 15.5846 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 141 ============== + +gfx/binary/141_F1 +{ + sort 15.5847 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/141_F2 +{ + sort 15.5848 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/141_F3 +{ + sort 15.5849 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/141_B1 +{ + sort 15.5850 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/141_B2 +{ + sort 15.5851 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/141_B3 +{ + sort 15.5852 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 142 ============== + +gfx/binary/142_F1 +{ + sort 15.5853 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/142_F2 +{ + sort 15.5854 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/142_F3 +{ + sort 15.5855 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/142_B1 +{ + sort 15.5856 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/142_B2 +{ + sort 15.5857 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/142_B3 +{ + sort 15.5858 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 143 ============== + +gfx/binary/143_F1 +{ + sort 15.5859 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/143_F2 +{ + sort 15.5860 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/143_F3 +{ + sort 15.5861 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/143_B1 +{ + sort 15.5862 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/143_B2 +{ + sort 15.5863 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/143_B3 +{ + sort 15.5864 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 144 ============== + +gfx/binary/144_F1 +{ + sort 15.5865 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/144_F2 +{ + sort 15.5866 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/144_F3 +{ + sort 15.5867 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/144_B1 +{ + sort 15.5868 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/144_B2 +{ + sort 15.5869 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/144_B3 +{ + sort 15.5870 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 145 ============== + +gfx/binary/145_F1 +{ + sort 15.5871 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/145_F2 +{ + sort 15.5872 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/145_F3 +{ + sort 15.5873 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/145_B1 +{ + sort 15.5874 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/145_B2 +{ + sort 15.5875 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/145_B3 +{ + sort 15.5876 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 146 ============== + +gfx/binary/146_F1 +{ + sort 15.5877 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/146_F2 +{ + sort 15.5878 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/146_F3 +{ + sort 15.5879 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/146_B1 +{ + sort 15.5880 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/146_B2 +{ + sort 15.5881 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/146_B3 +{ + sort 15.5882 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 147 ============== + +gfx/binary/147_F1 +{ + sort 15.5883 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/147_F2 +{ + sort 15.5884 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/147_F3 +{ + sort 15.5885 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/147_B1 +{ + sort 15.5886 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/147_B2 +{ + sort 15.5887 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/147_B3 +{ + sort 15.5888 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 148 ============== + +gfx/binary/148_F1 +{ + sort 15.5889 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/148_F2 +{ + sort 15.5890 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/148_F3 +{ + sort 15.5891 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/148_B1 +{ + sort 15.5892 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/148_B2 +{ + sort 15.5893 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/148_B3 +{ + sort 15.5894 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 149 ============== + +gfx/binary/149_F1 +{ + sort 15.5895 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/149_F2 +{ + sort 15.5896 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/149_F3 +{ + sort 15.5897 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/149_B1 +{ + sort 15.5898 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/149_B2 +{ + sort 15.5899 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/149_B3 +{ + sort 15.5900 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 150 ============== + +gfx/binary/150_F1 +{ + sort 15.5901 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/150_F2 +{ + sort 15.5902 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/150_F3 +{ + sort 15.5903 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/150_B1 +{ + sort 15.5904 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/150_B2 +{ + sort 15.5905 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/150_B3 +{ + sort 15.5906 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 151 ============== + +gfx/binary/151_F1 +{ + sort 15.5907 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/151_F2 +{ + sort 15.5908 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/151_F3 +{ + sort 15.5909 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/151_B1 +{ + sort 15.5910 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/151_B2 +{ + sort 15.5911 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/151_B3 +{ + sort 15.5912 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 152 ============== + +gfx/binary/152_F1 +{ + sort 15.5913 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/152_F2 +{ + sort 15.5914 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/152_F3 +{ + sort 15.5915 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/152_B1 +{ + sort 15.5916 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/152_B2 +{ + sort 15.5917 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/152_B3 +{ + sort 15.5918 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 153 ============== + +gfx/binary/153_F1 +{ + sort 15.5919 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/153_F2 +{ + sort 15.5920 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/153_F3 +{ + sort 15.5921 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/153_B1 +{ + sort 15.5922 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/153_B2 +{ + sort 15.5923 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/153_B3 +{ + sort 15.5924 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 154 ============== + +gfx/binary/154_F1 +{ + sort 15.5925 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/154_F2 +{ + sort 15.5926 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/154_F3 +{ + sort 15.5927 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/154_B1 +{ + sort 15.5928 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/154_B2 +{ + sort 15.5929 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/154_B3 +{ + sort 15.5930 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 155 ============== + +gfx/binary/155_F1 +{ + sort 15.5931 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/155_F2 +{ + sort 15.5932 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/155_F3 +{ + sort 15.5933 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/155_B1 +{ + sort 15.5934 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/155_B2 +{ + sort 15.5935 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/155_B3 +{ + sort 15.5936 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 156 ============== + +gfx/binary/156_F1 +{ + sort 15.5937 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/156_F2 +{ + sort 15.5938 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/156_F3 +{ + sort 15.5939 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/156_B1 +{ + sort 15.5940 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/156_B2 +{ + sort 15.5941 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/156_B3 +{ + sort 15.5942 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 157 ============== + +gfx/binary/157_F1 +{ + sort 15.5943 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/157_F2 +{ + sort 15.5944 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/157_F3 +{ + sort 15.5945 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/157_B1 +{ + sort 15.5946 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/157_B2 +{ + sort 15.5947 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/157_B3 +{ + sort 15.5948 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 158 ============== + +gfx/binary/158_F1 +{ + sort 15.5949 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/158_F2 +{ + sort 15.5950 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/158_F3 +{ + sort 15.5951 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/158_B1 +{ + sort 15.5952 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/158_B2 +{ + sort 15.5953 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/158_B3 +{ + sort 15.5954 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 159 ============== + +gfx/binary/159_F1 +{ + sort 15.5955 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/159_F2 +{ + sort 15.5956 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/159_F3 +{ + sort 15.5957 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/159_B1 +{ + sort 15.5958 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/159_B2 +{ + sort 15.5959 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/159_B3 +{ + sort 15.5960 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 160 ============== + +gfx/binary/160_F1 +{ + sort 15.5961 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/160_F2 +{ + sort 15.5962 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/160_F3 +{ + sort 15.5963 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/160_B1 +{ + sort 15.5964 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/160_B2 +{ + sort 15.5965 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/160_B3 +{ + sort 15.5966 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 161 ============== + +gfx/binary/161_F1 +{ + sort 15.5967 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/161_F2 +{ + sort 15.5968 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/161_F3 +{ + sort 15.5969 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/161_B1 +{ + sort 15.5970 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/161_B2 +{ + sort 15.5971 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/161_B3 +{ + sort 15.5972 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 162 ============== + +gfx/binary/162_F1 +{ + sort 15.5973 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/162_F2 +{ + sort 15.5974 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/162_F3 +{ + sort 15.5975 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/162_B1 +{ + sort 15.5976 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/162_B2 +{ + sort 15.5977 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/162_B3 +{ + sort 15.5978 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 163 ============== + +gfx/binary/163_F1 +{ + sort 15.5979 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/163_F2 +{ + sort 15.5980 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/163_F3 +{ + sort 15.5981 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/163_B1 +{ + sort 15.5982 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/163_B2 +{ + sort 15.5983 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/163_B3 +{ + sort 15.5984 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 164 ============== + +gfx/binary/164_F1 +{ + sort 15.5985 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/164_F2 +{ + sort 15.5986 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/164_F3 +{ + sort 15.5987 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/164_B1 +{ + sort 15.5988 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/164_B2 +{ + sort 15.5989 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/164_B3 +{ + sort 15.5990 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 165 ============== + +gfx/binary/165_F1 +{ + sort 15.5991 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/165_F2 +{ + sort 15.5992 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/165_F3 +{ + sort 15.5993 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/165_B1 +{ + sort 15.5994 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/165_B2 +{ + sort 15.5995 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/165_B3 +{ + sort 15.5996 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 166 ============== + +gfx/binary/166_F1 +{ + sort 15.5997 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/166_F2 +{ + sort 15.5998 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/166_F3 +{ + sort 15.5999 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/166_B1 +{ + sort 15.6000 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/166_B2 +{ + sort 15.6001 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/166_B3 +{ + sort 15.6002 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 167 ============== + +gfx/binary/167_F1 +{ + sort 15.6003 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/167_F2 +{ + sort 15.6004 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/167_F3 +{ + sort 15.6005 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/167_B1 +{ + sort 15.6006 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/167_B2 +{ + sort 15.6007 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/167_B3 +{ + sort 15.6008 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 168 ============== + +gfx/binary/168_F1 +{ + sort 15.6009 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/168_F2 +{ + sort 15.6010 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/168_F3 +{ + sort 15.6011 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/168_B1 +{ + sort 15.6012 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/168_B2 +{ + sort 15.6013 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/168_B3 +{ + sort 15.6014 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 169 ============== + +gfx/binary/169_F1 +{ + sort 15.6015 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/169_F2 +{ + sort 15.6016 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/169_F3 +{ + sort 15.6017 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/169_B1 +{ + sort 15.6018 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/169_B2 +{ + sort 15.6019 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/169_B3 +{ + sort 15.6020 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 170 ============== + +gfx/binary/170_F1 +{ + sort 15.6021 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/170_F2 +{ + sort 15.6022 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/170_F3 +{ + sort 15.6023 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/170_B1 +{ + sort 15.6024 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/170_B2 +{ + sort 15.6025 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/170_B3 +{ + sort 15.6026 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 171 ============== + +gfx/binary/171_F1 +{ + sort 15.6027 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/171_F2 +{ + sort 15.6028 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/171_F3 +{ + sort 15.6029 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/171_B1 +{ + sort 15.6030 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/171_B2 +{ + sort 15.6031 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/171_B3 +{ + sort 15.6032 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 172 ============== + +gfx/binary/172_F1 +{ + sort 15.6033 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/172_F2 +{ + sort 15.6034 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/172_F3 +{ + sort 15.6035 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/172_B1 +{ + sort 15.6036 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/172_B2 +{ + sort 15.6037 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/172_B3 +{ + sort 15.6038 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 173 ============== + +gfx/binary/173_F1 +{ + sort 15.6039 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/173_F2 +{ + sort 15.6040 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/173_F3 +{ + sort 15.6041 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/173_B1 +{ + sort 15.6042 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/173_B2 +{ + sort 15.6043 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/173_B3 +{ + sort 15.6044 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 174 ============== + +gfx/binary/174_F1 +{ + sort 15.6045 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/174_F2 +{ + sort 15.6046 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/174_F3 +{ + sort 15.6047 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/174_B1 +{ + sort 15.6048 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/174_B2 +{ + sort 15.6049 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/174_B3 +{ + sort 15.6050 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 175 ============== + +gfx/binary/175_F1 +{ + sort 15.6051 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/175_F2 +{ + sort 15.6052 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/175_F3 +{ + sort 15.6053 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/175_B1 +{ + sort 15.6054 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/175_B2 +{ + sort 15.6055 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/175_B3 +{ + sort 15.6056 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 176 ============== + +gfx/binary/176_F1 +{ + sort 15.6057 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/176_F2 +{ + sort 15.6058 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/176_F3 +{ + sort 15.6059 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/176_B1 +{ + sort 15.6060 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/176_B2 +{ + sort 15.6061 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/176_B3 +{ + sort 15.6062 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 177 ============== + +gfx/binary/177_F1 +{ + sort 15.6063 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/177_F2 +{ + sort 15.6064 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/177_F3 +{ + sort 15.6065 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/177_B1 +{ + sort 15.6066 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/177_B2 +{ + sort 15.6067 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/177_B3 +{ + sort 15.6068 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 178 ============== + +gfx/binary/178_F1 +{ + sort 15.6069 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/178_F2 +{ + sort 15.6070 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/178_F3 +{ + sort 15.6071 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/178_B1 +{ + sort 15.6072 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/178_B2 +{ + sort 15.6073 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/178_B3 +{ + sort 15.6074 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 179 ============== + +gfx/binary/179_F1 +{ + sort 15.6075 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/179_F2 +{ + sort 15.6076 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/179_F3 +{ + sort 15.6077 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/179_B1 +{ + sort 15.6078 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/179_B2 +{ + sort 15.6079 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/179_B3 +{ + sort 15.6080 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 180 ============== + +gfx/binary/180_F1 +{ + sort 15.6081 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/180_F2 +{ + sort 15.6082 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/180_F3 +{ + sort 15.6083 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/180_B1 +{ + sort 15.6084 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/180_B2 +{ + sort 15.6085 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/180_B3 +{ + sort 15.6086 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 181 ============== + +gfx/binary/181_F1 +{ + sort 15.6087 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/181_F2 +{ + sort 15.6088 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/181_F3 +{ + sort 15.6089 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/181_B1 +{ + sort 15.6090 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/181_B2 +{ + sort 15.6091 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/181_B3 +{ + sort 15.6092 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 182 ============== + +gfx/binary/182_F1 +{ + sort 15.6093 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/182_F2 +{ + sort 15.6094 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/182_F3 +{ + sort 15.6095 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/182_B1 +{ + sort 15.6096 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/182_B2 +{ + sort 15.6097 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/182_B3 +{ + sort 15.6098 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 183 ============== + +gfx/binary/183_F1 +{ + sort 15.6099 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/183_F2 +{ + sort 15.6100 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/183_F3 +{ + sort 15.6101 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/183_B1 +{ + sort 15.6102 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/183_B2 +{ + sort 15.6103 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/183_B3 +{ + sort 15.6104 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 184 ============== + +gfx/binary/184_F1 +{ + sort 15.6105 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/184_F2 +{ + sort 15.6106 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/184_F3 +{ + sort 15.6107 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/184_B1 +{ + sort 15.6108 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/184_B2 +{ + sort 15.6109 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/184_B3 +{ + sort 15.6110 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 185 ============== + +gfx/binary/185_F1 +{ + sort 15.6111 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/185_F2 +{ + sort 15.6112 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/185_F3 +{ + sort 15.6113 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/185_B1 +{ + sort 15.6114 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/185_B2 +{ + sort 15.6115 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/185_B3 +{ + sort 15.6116 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 186 ============== + +gfx/binary/186_F1 +{ + sort 15.6117 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/186_F2 +{ + sort 15.6118 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/186_F3 +{ + sort 15.6119 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/186_B1 +{ + sort 15.6120 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/186_B2 +{ + sort 15.6121 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/186_B3 +{ + sort 15.6122 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 187 ============== + +gfx/binary/187_F1 +{ + sort 15.6123 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/187_F2 +{ + sort 15.6124 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/187_F3 +{ + sort 15.6125 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/187_B1 +{ + sort 15.6126 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/187_B2 +{ + sort 15.6127 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/187_B3 +{ + sort 15.6128 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 188 ============== + +gfx/binary/188_F1 +{ + sort 15.6129 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/188_F2 +{ + sort 15.6130 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/188_F3 +{ + sort 15.6131 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/188_B1 +{ + sort 15.6132 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/188_B2 +{ + sort 15.6133 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/188_B3 +{ + sort 15.6134 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 189 ============== + +gfx/binary/189_F1 +{ + sort 15.6135 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/189_F2 +{ + sort 15.6136 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/189_F3 +{ + sort 15.6137 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/189_B1 +{ + sort 15.6138 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/189_B2 +{ + sort 15.6139 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/189_B3 +{ + sort 15.6140 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 190 ============== + +gfx/binary/190_F1 +{ + sort 15.6141 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/190_F2 +{ + sort 15.6142 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/190_F3 +{ + sort 15.6143 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/190_B1 +{ + sort 15.6144 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/190_B2 +{ + sort 15.6145 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/190_B3 +{ + sort 15.6146 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 191 ============== + +gfx/binary/191_F1 +{ + sort 15.6147 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/191_F2 +{ + sort 15.6148 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/191_F3 +{ + sort 15.6149 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/191_B1 +{ + sort 15.6150 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/191_B2 +{ + sort 15.6151 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/191_B3 +{ + sort 15.6152 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 192 ============== + +gfx/binary/192_F1 +{ + sort 15.6153 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/192_F2 +{ + sort 15.6154 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/192_F3 +{ + sort 15.6155 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/192_B1 +{ + sort 15.6156 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/192_B2 +{ + sort 15.6157 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/192_B3 +{ + sort 15.6158 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 193 ============== + +gfx/binary/193_F1 +{ + sort 15.6159 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/193_F2 +{ + sort 15.6160 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/193_F3 +{ + sort 15.6161 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/193_B1 +{ + sort 15.6162 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/193_B2 +{ + sort 15.6163 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/193_B3 +{ + sort 15.6164 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 194 ============== + +gfx/binary/194_F1 +{ + sort 15.6165 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/194_F2 +{ + sort 15.6166 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/194_F3 +{ + sort 15.6167 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/194_B1 +{ + sort 15.6168 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/194_B2 +{ + sort 15.6169 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/194_B3 +{ + sort 15.6170 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 195 ============== + +gfx/binary/195_F1 +{ + sort 15.6171 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/195_F2 +{ + sort 15.6172 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/195_F3 +{ + sort 15.6173 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/195_B1 +{ + sort 15.6174 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/195_B2 +{ + sort 15.6175 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/195_B3 +{ + sort 15.6176 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 196 ============== + +gfx/binary/196_F1 +{ + sort 15.6177 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/196_F2 +{ + sort 15.6178 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/196_F3 +{ + sort 15.6179 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/196_B1 +{ + sort 15.6180 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/196_B2 +{ + sort 15.6181 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/196_B3 +{ + sort 15.6182 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 197 ============== + +gfx/binary/197_F1 +{ + sort 15.6183 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/197_F2 +{ + sort 15.6184 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/197_F3 +{ + sort 15.6185 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/197_B1 +{ + sort 15.6186 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/197_B2 +{ + sort 15.6187 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/197_B3 +{ + sort 15.6188 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 198 ============== + +gfx/binary/198_F1 +{ + sort 15.6189 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/198_F2 +{ + sort 15.6190 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/198_F3 +{ + sort 15.6191 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/198_B1 +{ + sort 15.6192 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/198_B2 +{ + sort 15.6193 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/198_B3 +{ + sort 15.6194 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 199 ============== + +gfx/binary/199_F1 +{ + sort 15.6195 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/199_F2 +{ + sort 15.6196 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/199_F3 +{ + sort 15.6197 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/199_B1 +{ + sort 15.6198 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/199_B2 +{ + sort 15.6199 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/199_B3 +{ + sort 15.6200 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 200 ============== + +gfx/binary/200_F1 +{ + sort 15.6201 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/200_F2 +{ + sort 15.6202 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/200_F3 +{ + sort 15.6203 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/200_B1 +{ + sort 15.6204 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/200_B2 +{ + sort 15.6205 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/200_B3 +{ + sort 15.6206 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 201 ============== + +gfx/binary/201_F1 +{ + sort 15.6207 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/201_F2 +{ + sort 15.6208 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/201_F3 +{ + sort 15.6209 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/201_B1 +{ + sort 15.6210 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/201_B2 +{ + sort 15.6211 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/201_B3 +{ + sort 15.6212 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 202 ============== + +gfx/binary/202_F1 +{ + sort 15.6213 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/202_F2 +{ + sort 15.6214 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/202_F3 +{ + sort 15.6215 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/202_B1 +{ + sort 15.6216 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/202_B2 +{ + sort 15.6217 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/202_B3 +{ + sort 15.6218 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 203 ============== + +gfx/binary/203_F1 +{ + sort 15.6219 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/203_F2 +{ + sort 15.6220 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/203_F3 +{ + sort 15.6221 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/203_B1 +{ + sort 15.6222 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/203_B2 +{ + sort 15.6223 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/203_B3 +{ + sort 15.6224 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 204 ============== + +gfx/binary/204_F1 +{ + sort 15.6225 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/204_F2 +{ + sort 15.6226 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/204_F3 +{ + sort 15.6227 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/204_B1 +{ + sort 15.6228 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/204_B2 +{ + sort 15.6229 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/204_B3 +{ + sort 15.6230 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 205 ============== + +gfx/binary/205_F1 +{ + sort 15.6231 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/205_F2 +{ + sort 15.6232 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/205_F3 +{ + sort 15.6233 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/205_B1 +{ + sort 15.6234 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/205_B2 +{ + sort 15.6235 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/205_B3 +{ + sort 15.6236 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 206 ============== + +gfx/binary/206_F1 +{ + sort 15.6237 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/206_F2 +{ + sort 15.6238 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/206_F3 +{ + sort 15.6239 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/206_B1 +{ + sort 15.6240 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/206_B2 +{ + sort 15.6241 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/206_B3 +{ + sort 15.6242 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 207 ============== + +gfx/binary/207_F1 +{ + sort 15.6243 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/207_F2 +{ + sort 15.6244 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/207_F3 +{ + sort 15.6245 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/207_B1 +{ + sort 15.6246 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/207_B2 +{ + sort 15.6247 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/207_B3 +{ + sort 15.6248 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 208 ============== + +gfx/binary/208_F1 +{ + sort 15.6249 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/208_F2 +{ + sort 15.6250 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/208_F3 +{ + sort 15.6251 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/208_B1 +{ + sort 15.6252 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/208_B2 +{ + sort 15.6253 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/208_B3 +{ + sort 15.6254 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 209 ============== + +gfx/binary/209_F1 +{ + sort 15.6255 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/209_F2 +{ + sort 15.6256 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/209_F3 +{ + sort 15.6257 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/209_B1 +{ + sort 15.6258 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/209_B2 +{ + sort 15.6259 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/209_B3 +{ + sort 15.6260 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 210 ============== + +gfx/binary/210_F1 +{ + sort 15.6261 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/210_F2 +{ + sort 15.6262 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/210_F3 +{ + sort 15.6263 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/210_B1 +{ + sort 15.6264 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/210_B2 +{ + sort 15.6265 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/210_B3 +{ + sort 15.6266 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 211 ============== + +gfx/binary/211_F1 +{ + sort 15.6267 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/211_F2 +{ + sort 15.6268 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/211_F3 +{ + sort 15.6269 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/211_B1 +{ + sort 15.6270 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/211_B2 +{ + sort 15.6271 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/211_B3 +{ + sort 15.6272 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 212 ============== + +gfx/binary/212_F1 +{ + sort 15.6273 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/212_F2 +{ + sort 15.6274 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/212_F3 +{ + sort 15.6275 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/212_B1 +{ + sort 15.6276 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/212_B2 +{ + sort 15.6277 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/212_B3 +{ + sort 15.6278 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 213 ============== + +gfx/binary/213_F1 +{ + sort 15.6279 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/213_F2 +{ + sort 15.6280 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/213_F3 +{ + sort 15.6281 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/213_B1 +{ + sort 15.6282 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/213_B2 +{ + sort 15.6283 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/213_B3 +{ + sort 15.6284 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 214 ============== + +gfx/binary/214_F1 +{ + sort 15.6285 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/214_F2 +{ + sort 15.6286 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/214_F3 +{ + sort 15.6287 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/214_B1 +{ + sort 15.6288 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/214_B2 +{ + sort 15.6289 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/214_B3 +{ + sort 15.6290 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 215 ============== + +gfx/binary/215_F1 +{ + sort 15.6291 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/215_F2 +{ + sort 15.6292 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/215_F3 +{ + sort 15.6293 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/215_B1 +{ + sort 15.6294 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/215_B2 +{ + sort 15.6295 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/215_B3 +{ + sort 15.6296 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 216 ============== + +gfx/binary/216_F1 +{ + sort 15.6297 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/216_F2 +{ + sort 15.6298 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/216_F3 +{ + sort 15.6299 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/216_B1 +{ + sort 15.6300 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/216_B2 +{ + sort 15.6301 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/216_B3 +{ + sort 15.6302 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 217 ============== + +gfx/binary/217_F1 +{ + sort 15.6303 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/217_F2 +{ + sort 15.6304 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/217_F3 +{ + sort 15.6305 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/217_B1 +{ + sort 15.6306 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/217_B2 +{ + sort 15.6307 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/217_B3 +{ + sort 15.6308 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 218 ============== + +gfx/binary/218_F1 +{ + sort 15.6309 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/218_F2 +{ + sort 15.6310 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/218_F3 +{ + sort 15.6311 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/218_B1 +{ + sort 15.6312 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/218_B2 +{ + sort 15.6313 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/218_B3 +{ + sort 15.6314 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 219 ============== + +gfx/binary/219_F1 +{ + sort 15.6315 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/219_F2 +{ + sort 15.6316 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/219_F3 +{ + sort 15.6317 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/219_B1 +{ + sort 15.6318 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/219_B2 +{ + sort 15.6319 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/219_B3 +{ + sort 15.6320 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 220 ============== + +gfx/binary/220_F1 +{ + sort 15.6321 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/220_F2 +{ + sort 15.6322 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/220_F3 +{ + sort 15.6323 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/220_B1 +{ + sort 15.6324 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/220_B2 +{ + sort 15.6325 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/220_B3 +{ + sort 15.6326 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 221 ============== + +gfx/binary/221_F1 +{ + sort 15.6327 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/221_F2 +{ + sort 15.6328 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/221_F3 +{ + sort 15.6329 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/221_B1 +{ + sort 15.6330 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/221_B2 +{ + sort 15.6331 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/221_B3 +{ + sort 15.6332 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 222 ============== + +gfx/binary/222_F1 +{ + sort 15.6333 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/222_F2 +{ + sort 15.6334 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/222_F3 +{ + sort 15.6335 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/222_B1 +{ + sort 15.6336 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/222_B2 +{ + sort 15.6337 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/222_B3 +{ + sort 15.6338 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 223 ============== + +gfx/binary/223_F1 +{ + sort 15.6339 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/223_F2 +{ + sort 15.6340 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/223_F3 +{ + sort 15.6341 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/223_B1 +{ + sort 15.6342 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/223_B2 +{ + sort 15.6343 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/223_B3 +{ + sort 15.6344 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 224 ============== + +gfx/binary/224_F1 +{ + sort 15.6345 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/224_F2 +{ + sort 15.6346 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/224_F3 +{ + sort 15.6347 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/224_B1 +{ + sort 15.6348 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/224_B2 +{ + sort 15.6349 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/224_B3 +{ + sort 15.6350 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 225 ============== + +gfx/binary/225_F1 +{ + sort 15.6351 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/225_F2 +{ + sort 15.6352 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/225_F3 +{ + sort 15.6353 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/225_B1 +{ + sort 15.6354 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/225_B2 +{ + sort 15.6355 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/225_B3 +{ + sort 15.6356 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 226 ============== + +gfx/binary/226_F1 +{ + sort 15.6357 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/226_F2 +{ + sort 15.6358 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/226_F3 +{ + sort 15.6359 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/226_B1 +{ + sort 15.6360 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/226_B2 +{ + sort 15.6361 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/226_B3 +{ + sort 15.6362 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 227 ============== + +gfx/binary/227_F1 +{ + sort 15.6363 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/227_F2 +{ + sort 15.6364 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/227_F3 +{ + sort 15.6365 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/227_B1 +{ + sort 15.6366 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/227_B2 +{ + sort 15.6367 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/227_B3 +{ + sort 15.6368 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 228 ============== + +gfx/binary/228_F1 +{ + sort 15.6369 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/228_F2 +{ + sort 15.6370 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/228_F3 +{ + sort 15.6371 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/228_B1 +{ + sort 15.6372 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/228_B2 +{ + sort 15.6373 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/228_B3 +{ + sort 15.6374 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 229 ============== + +gfx/binary/229_F1 +{ + sort 15.6375 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/229_F2 +{ + sort 15.6376 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/229_F3 +{ + sort 15.6377 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/229_B1 +{ + sort 15.6378 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/229_B2 +{ + sort 15.6379 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/229_B3 +{ + sort 15.6380 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 230 ============== + +gfx/binary/230_F1 +{ + sort 15.6381 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/230_F2 +{ + sort 15.6382 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/230_F3 +{ + sort 15.6383 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/230_B1 +{ + sort 15.6384 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/230_B2 +{ + sort 15.6385 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/230_B3 +{ + sort 15.6386 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 231 ============== + +gfx/binary/231_F1 +{ + sort 15.6387 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/231_F2 +{ + sort 15.6388 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/231_F3 +{ + sort 15.6389 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/231_B1 +{ + sort 15.6390 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/231_B2 +{ + sort 15.6391 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/231_B3 +{ + sort 15.6392 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 232 ============== + +gfx/binary/232_F1 +{ + sort 15.6393 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/232_F2 +{ + sort 15.6394 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/232_F3 +{ + sort 15.6395 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/232_B1 +{ + sort 15.6396 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/232_B2 +{ + sort 15.6397 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/232_B3 +{ + sort 15.6398 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 233 ============== + +gfx/binary/233_F1 +{ + sort 15.6399 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/233_F2 +{ + sort 15.6400 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/233_F3 +{ + sort 15.6401 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/233_B1 +{ + sort 15.6402 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/233_B2 +{ + sort 15.6403 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/233_B3 +{ + sort 15.6404 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 234 ============== + +gfx/binary/234_F1 +{ + sort 15.6405 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/234_F2 +{ + sort 15.6406 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/234_F3 +{ + sort 15.6407 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/234_B1 +{ + sort 15.6408 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/234_B2 +{ + sort 15.6409 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/234_B3 +{ + sort 15.6410 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 235 ============== + +gfx/binary/235_F1 +{ + sort 15.6411 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/235_F2 +{ + sort 15.6412 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/235_F3 +{ + sort 15.6413 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/235_B1 +{ + sort 15.6414 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/235_B2 +{ + sort 15.6415 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/235_B3 +{ + sort 15.6416 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 236 ============== + +gfx/binary/236_F1 +{ + sort 15.6417 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/236_F2 +{ + sort 15.6418 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/236_F3 +{ + sort 15.6419 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/236_B1 +{ + sort 15.6420 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/236_B2 +{ + sort 15.6421 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/236_B3 +{ + sort 15.6422 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 237 ============== + +gfx/binary/237_F1 +{ + sort 15.6423 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/237_F2 +{ + sort 15.6424 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/237_F3 +{ + sort 15.6425 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/237_B1 +{ + sort 15.6426 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/237_B2 +{ + sort 15.6427 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/237_B3 +{ + sort 15.6428 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 238 ============== + +gfx/binary/238_F1 +{ + sort 15.6429 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/238_F2 +{ + sort 15.6430 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/238_F3 +{ + sort 15.6431 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/238_B1 +{ + sort 15.6432 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/238_B2 +{ + sort 15.6433 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/238_B3 +{ + sort 15.6434 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 239 ============== + +gfx/binary/239_F1 +{ + sort 15.6435 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/239_F2 +{ + sort 15.6436 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/239_F3 +{ + sort 15.6437 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/239_B1 +{ + sort 15.6438 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/239_B2 +{ + sort 15.6439 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/239_B3 +{ + sort 15.6440 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 240 ============== + +gfx/binary/240_F1 +{ + sort 15.6441 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/240_F2 +{ + sort 15.6442 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/240_F3 +{ + sort 15.6443 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/240_B1 +{ + sort 15.6444 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/240_B2 +{ + sort 15.6445 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/240_B3 +{ + sort 15.6446 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 241 ============== + +gfx/binary/241_F1 +{ + sort 15.6447 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/241_F2 +{ + sort 15.6448 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/241_F3 +{ + sort 15.6449 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/241_B1 +{ + sort 15.6450 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/241_B2 +{ + sort 15.6451 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/241_B3 +{ + sort 15.6452 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 242 ============== + +gfx/binary/242_F1 +{ + sort 15.6453 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/242_F2 +{ + sort 15.6454 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/242_F3 +{ + sort 15.6455 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/242_B1 +{ + sort 15.6456 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/242_B2 +{ + sort 15.6457 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/242_B3 +{ + sort 15.6458 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 243 ============== + +gfx/binary/243_F1 +{ + sort 15.6459 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/243_F2 +{ + sort 15.6460 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/243_F3 +{ + sort 15.6461 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/243_B1 +{ + sort 15.6462 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/243_B2 +{ + sort 15.6463 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/243_B3 +{ + sort 15.6464 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 244 ============== + +gfx/binary/244_F1 +{ + sort 15.6465 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/244_F2 +{ + sort 15.6466 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/244_F3 +{ + sort 15.6467 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/244_B1 +{ + sort 15.6468 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/244_B2 +{ + sort 15.6469 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/244_B3 +{ + sort 15.6470 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 245 ============== + +gfx/binary/245_F1 +{ + sort 15.6471 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/245_F2 +{ + sort 15.6472 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/245_F3 +{ + sort 15.6473 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/245_B1 +{ + sort 15.6474 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/245_B2 +{ + sort 15.6475 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/245_B3 +{ + sort 15.6476 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 246 ============== + +gfx/binary/246_F1 +{ + sort 15.6477 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/246_F2 +{ + sort 15.6478 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/246_F3 +{ + sort 15.6479 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/246_B1 +{ + sort 15.6480 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/246_B2 +{ + sort 15.6481 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/246_B3 +{ + sort 15.6482 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 247 ============== + +gfx/binary/247_F1 +{ + sort 15.6483 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/247_F2 +{ + sort 15.6484 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/247_F3 +{ + sort 15.6485 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/247_B1 +{ + sort 15.6486 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/247_B2 +{ + sort 15.6487 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/247_B3 +{ + sort 15.6488 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 248 ============== + +gfx/binary/248_F1 +{ + sort 15.6489 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/248_F2 +{ + sort 15.6490 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/248_F3 +{ + sort 15.6491 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/248_B1 +{ + sort 15.6492 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/248_B2 +{ + sort 15.6493 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/248_B3 +{ + sort 15.6494 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 249 ============== + +gfx/binary/249_F1 +{ + sort 15.6495 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/249_F2 +{ + sort 15.6496 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/249_F3 +{ + sort 15.6497 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/249_B1 +{ + sort 15.6498 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/249_B2 +{ + sort 15.6499 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/249_B3 +{ + sort 15.6500 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 250 ============== + +gfx/binary/250_F1 +{ + sort 15.6501 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/250_F2 +{ + sort 15.6502 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/250_F3 +{ + sort 15.6503 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/250_B1 +{ + sort 15.6504 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/250_B2 +{ + sort 15.6505 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/250_B3 +{ + sort 15.6506 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 251 ============== + +gfx/binary/251_F1 +{ + sort 15.6507 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/251_F2 +{ + sort 15.6508 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/251_F3 +{ + sort 15.6509 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/251_B1 +{ + sort 15.6510 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/251_B2 +{ + sort 15.6511 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/251_B3 +{ + sort 15.6512 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 252 ============== + +gfx/binary/252_F1 +{ + sort 15.6513 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/252_F2 +{ + sort 15.6514 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/252_F3 +{ + sort 15.6515 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/252_B1 +{ + sort 15.6516 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/252_B2 +{ + sort 15.6517 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/252_B3 +{ + sort 15.6518 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 253 ============== + +gfx/binary/253_F1 +{ + sort 15.6519 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/253_F2 +{ + sort 15.6520 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/253_F3 +{ + sort 15.6521 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/253_B1 +{ + sort 15.6522 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/253_B2 +{ + sort 15.6523 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/253_B3 +{ + sort 15.6524 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 254 ============== + +gfx/binary/254_F1 +{ + sort 15.6525 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/254_F2 +{ + sort 15.6526 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/254_F3 +{ + sort 15.6527 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/254_B1 +{ + sort 15.6528 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/254_B2 +{ + sort 15.6529 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/254_B3 +{ + sort 15.6530 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +// ============== 255 ============== + +gfx/binary/255_F1 +{ + sort 15.6531 + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/255_F2 +{ + sort 15.6532 + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/255_F3 +{ + sort 15.6533 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + +gfx/binary/255_B1 +{ + sort 15.6534 + cull back + { + map $whiteimage + alphaGen const 0.0 + blendFunc GL_DST_COLOR GL_ZERO + } +} + +gfx/binary/255_B2 +{ + sort 15.6535 + cull back + { + map $whiteimage + rgbGen const ( 0.0 0.0 0.0 ) + blendFunc GL_ONE GL_ONE + } +} + +gfx/binary/255_B3 +{ + sort 15.6536 + { + map $whiteimage + rgbGen exactVertex + blendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE + } +} + diff --git a/assets/scripts/core.shader b/assets/scripts/core.shader new file mode 100644 index 0000000..a640d9b --- /dev/null +++ b/assets/scripts/core.shader @@ -0,0 +1,209 @@ +// the REGION shader is generated by the map editor on temporary +// brushes around a selected area for testing parts of maps +textures/REGION +{ + surfaceparm nolightmap +} + +white +{ + { + map $whiteimage + blendfunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA + rgbgen vertex + } +} + +outline +{ + cull none + nopicmip + nomipmaps + { + map gfx/2d/outline.tga + blendfunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA + rgbgen vertex + } +} + +console +{ + nopicmip + nomipmaps + { + map ui/assets/console1.tga + blendFunc GL_ONE GL_ZERO + tcMod scroll .02 0 + tcmod scale 4 1 + } + { + map ui/assets/console2.jpg + blendFunc add + tcMod turb 0 .1 0 .1 + tcMod scale 4 1 + tcmod scroll 0.2 .1 + } +} + +gfx/misc/detail +{ + nopicmip + { + map gfx/misc/detail.jpg + blendFunc GL_DST_COLOR GL_SRC_COLOR + rgbgen identity + } +} + +// The console font +gfx/2d/bigchars +{ + nopicmip + nomipmaps + { + map gfx/2d/bigchars.tga + blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA + rgbgen vertex + } +} + +gfx/2d/cursor +{ + nopicmip + nomipmaps + { + map gfx/2d/cursor.tga + } +} + +// projectionShadow is used for cheap squashed model shadows +projectionShadow +{ + polygonOffset + deformVertexes projectionShadow + { + map $whiteimage + blendFunc GL_ONE GL_ZERO + rgbGen wave square 0 0 0 0 + } +} + +// blinked on top of lagometer when connection is interrupted +gfx/2d/net +{ + nopicmip + { + map gfx/2d/net.jpg + } +} + +//=============================================================== + +gfx/2d/numbers/zero_32b +{ + nopicmip + { + map gfx/2d/numbers/zero_32b.tga + blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA + rgbgen vertex + } +} +gfx/2d/numbers/one_32b +{ + nopicmip + { + map gfx/2d/numbers/one_32b.tga + blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA + rgbgen vertex + } +} +gfx/2d/numbers/two_32b +{ + nopicmip + { + map gfx/2d/numbers/two_32b.tga + blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA + rgbgen vertex + } +} +gfx/2d/numbers/three_32b +{ + nopicmip + { + map gfx/2d/numbers/three_32b.tga + blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA + rgbgen vertex + } +} +gfx/2d/numbers/four_32b +{ + nopicmip + { + map gfx/2d/numbers/four_32b.tga + blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA + rgbgen vertex + } +} +gfx/2d/numbers/five_32b +{ + nopicmip + { + map gfx/2d/numbers/five_32b.tga + blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA + rgbgen vertex + } +} +gfx/2d/numbers/six_32b +{ + nopicmip + { + map gfx/2d/numbers/six_32b.tga + blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA + rgbgen vertex + } +} +gfx/2d/numbers/seven_32b +{ + nopicmip + { + map gfx/2d/numbers/seven_32b.tga + blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA + rgbgen vertex + } +} +gfx/2d/numbers/eight_32b +{ + nopicmip + { + map gfx/2d/numbers/eight_32b.tga + blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA + rgbgen vertex + } +} +gfx/2d/numbers/nine_32b +{ + nopicmip + { + map gfx/2d/numbers/nine_32b.tga + blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA + rgbgen vertex + } +} +gfx/2d/numbers/minus_32b +{ + nopicmip + { + map gfx/2d/numbers/minus_32b.tga + blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA + rgbgen vertex + } +} +gfx/2d/numbers/infinity_32b +{ + nopicmip + { + map gfx/2d/numbers/infinity_32b.tga + blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA + rgbgen vertex + } +} diff --git a/assets/scripts/crosshairs.shader b/assets/scripts/crosshairs.shader new file mode 100644 index 0000000..278a296 --- /dev/null +++ b/assets/scripts/crosshairs.shader @@ -0,0 +1,96 @@ +gfx/2d/crosshair-alien_s +{ + nopicmip + { + map gfx/2d/crosshair-alien.tga + blendfunc blend + rgbGen vertex + } +} + +gfx/2d/crosshair-rifle_s +{ + nopicmip + { + map gfx/2d/crosshair-rifle.tga + blendfunc blend + rgbGen vertex + } +} + +gfx/2d/crosshair-prifle_s +{ + nopicmip + { + map gfx/2d/crosshair-prifle.tga + blendfunc blend + rgbGen vertex + } +} + +gfx/2d/crosshair-chaingun_s +{ + nopicmip + { + map gfx/2d/crosshair-chaingun.tga + blendfunc blend + rgbGen vertex + } +} + +gfx/2d/crosshair-mdriver_s +{ + nopicmip + { + map gfx/2d/crosshair-mdriver.tga + blendfunc blend + rgbGen vertex + } +} + +gfx/2d/crosshair-lcannon_s +{ + nopicmip + { + map gfx/2d/crosshair-lcannon.tga + blendfunc blend + rgbGen vertex + } +} + +gfx/2d/crosshair-lgun_s +{ + nopicmip + { + map gfx/2d/crosshair-lgun.tga + blendfunc blend + rgbGen vertex + } +} + +gfx/2d/crosshair-flamer_s +{ + nopicmip + { + clampmap gfx/2d/crosshair-flamer1.tga + blendfunc blend + tcmod rotate 5 + rgbGen vertex + } + { + clampmap gfx/2d/crosshair-flamer1.tga + blendfunc blend + tcmod rotate -5 + rgbGen vertex + } +} + +gfx/2d/crosshair-psaw +{ + nopicmip + { + map gfx/2d/crosshair-psaw.tga + blendfunc blend + rgbGen vertex + } +} \ No newline at end of file diff --git a/assets/scripts/mdriver.trail b/assets/scripts/mdriver.trail new file mode 100644 index 0000000..b1545e6 --- /dev/null +++ b/assets/scripts/mdriver.trail @@ -0,0 +1,10 @@ +models/weapons/mdriver/fireTS +{ + beam + { + shader gfx/mdriver/trail + width 3.0 3.0 + textureType stretch 0.94 0.03 + } + lifeTime 70 +} diff --git a/assets/scripts/misc.particle b/assets/scripts/misc.particle new file mode 100644 index 0000000..40f3cc0 --- /dev/null +++ b/assets/scripts/misc.particle @@ -0,0 +1,378 @@ +firstPersonPoisonCloudPS +{ + ejector + { + particle + { + shader sync gfx/sprites/poisoncloud + + displacement 0 0 0 ~32.0 + + parentVelocityFraction 1.0 + velocityType static + velocityDir linear + velocityMagnitude 16 + velocity 0 0 1 ~0 + + accelerationType static + accelerationDir linear + accelerationMagnitude 300 + acceleration 0 0 1 0 + + radius 0 10.0 40.0 + alpha 0 0.5 0.0 + rotation 0 ~360 - + bounce 0.5 + + lifeTime 1000 + } + + count 400 + delay 0 + period 20 - ~0% + } +} + +poisonCloudedPS +{ + ejector + { + particle + { + shader sync gfx/sprites/poisoncloud + + displacement 0 0 0 ~6.0 + + velocityType static + velocityDir linear + velocityMagnitude 60 + velocity 0 0 0 ~50 + + radius 0 4.0 12.0 + alpha 0 0.25 0.0 + rotation 0 ~360 - + + lifeTime 800 + } + + count 100 + delay 0 + period 50 200 ~0% + } +} + + +alienEvolvePS +{ + ejector + { + particle + { + shader sync gfx/sprites/green_acid + + displacement 0 0 0 ~0 + + velocityType static + velocityDir linear + velocityMagnitude 150~75% + velocity 0 0 1 ~50 + + accelerationType static + accelerationDir linear + accelerationMagnitude 800 + acceleration 0 0 -1 0 + + radius 0 5.0 30.0 + alpha 0 1.0 0.0 + rotation 0 ~360 - + bounce 0.2 + + lifeTime 1000 + } + + count 30 + delay 0 + period 5 - ~0% + } +} + +alienBleedPS +{ + ejector + { + particle + { + shader sync gfx/damage/blood.tga + displacement 0 0 0 0 + + velocityType normal + + velocityDir linear + + velocityMagnitude 15 + velocity 0 0 0 ~35 + + accelerationType static + accelerationDir linear + acceleration 0 0 -1 ~5 + accelerationMagnitude 25 + + radius 0 5 8 + alpha 250 .85 0 + rotation 0 ~-15 ~15 + bounce 0.0 + color 0 { 1.0 1.0 0.6 } - + + lifeTime 400~100 + } + + particle + { + shader sync gfx/damage/blood.tga + displacement 0 0 0 0 + + velocityType normal + + velocityDir linear + + velocityMagnitude 15 + velocity 0 0 0 ~35 + + accelerationType static + accelerationDir linear + acceleration 0 0 -1 ~5 + accelerationMagnitude 25 + + radius 0 5 8 + alpha 250 .85 0 + rotation 0 ~165 ~195 + bounce 0.0 + color 0 { 1.0 1.0 0.6 } - + + lifeTime 400~100 + } + + count 2 + delay 0 + period 0 - 0 + } + + thirdPersonOnly +} + +alienBuildableBleedPS +{ + ejector + { + particle + { + shader sync gfx/damage/blood.tga + displacement 0 0 0 0 + + velocityType normal + + velocityDir linear + + velocityMagnitude 15 + velocity 0 0 0 ~35 + + accelerationType static + accelerationDir linear + acceleration 0 0 -1 ~5 + accelerationMagnitude 25 + + radius 0 5 8 + alpha 250 .85 0 + rotation 0 ~-15 ~15 + bounce 0.0 + color 0 { 1.0 1.0 0.6 } - + + lifeTime 400~100 + } + + particle + { + shader sync gfx/damage/blood.tga + displacement 0 0 0 0 + + velocityType normal + + velocityDir linear + + velocityMagnitude 15 + velocity 0 0 0 ~35 + + accelerationType static + accelerationDir linear + acceleration 0 0 -1 ~5 + accelerationMagnitude 25 + + radius 0 5 8 + alpha 250 .85 0 + rotation 0 ~165 ~195 + bounce 0.0 + color 0 { 1.0 1.0 0.6 } - + + lifeTime 400~100 + } + + count 2 + delay 0 + period 0 - 0 + } +} + + +humanBleedPS +{ + ejector + { + particle + { + shader sync gfx/damage/blood.tga + displacement 0 0 0 0 + + velocityType normal + + velocityDir linear + + velocityMagnitude 15 + velocity 0 0 0 ~35 + + accelerationType static + accelerationDir linear + acceleration 0 0 -1 ~5 + accelerationMagnitude 25 + + radius 0 5 8 + alpha 250 .75 0 + rotation 0 ~-15 ~15 + bounce 0.0 + color 0 { 0.8 0.2 0.2 } - + + lifeTime 400~100 + } + + particle + { + shader sync gfx/damage/blood.tga + displacement 0 0 0 0 + + velocityType normal + + velocityDir linear + + velocityMagnitude 15 + velocity 0 0 0 ~35 + + accelerationType static + accelerationDir linear + acceleration 0 0 -1 ~5 + accelerationMagnitude 25 + + radius 0 5 8 + alpha 250 .75 0 + rotation 0 ~-15 ~15 + bounce 0.0 + color 0 { 0.8 0.2 0.2 } - + + lifeTime 400~100 + } + + count 2 + delay 0 + period 0 - 0 + } + + thirdPersonOnly +} + +humanBuildableBleedPS +{ + ejector + { + particle + { + shader sync flame3 flame4 flame5 flame6 flame7 flame8 flame9 flame10 flame11 flame12 flame13 flame14 flame15 flame16 flame17 flame18 flame19 flame20 flame21 flame22 flame23 flame24 flame25 + displacement 0 0 0 0 + + velocityType normal + + velocityDir linear + + velocityMagnitude 15 + velocity 0 0 0 ~35 + + accelerationType static + accelerationDir linear + acceleration 0 0 -1 ~5 + accelerationMagnitude 25 + + radius 0 5 8 + alpha 250 .75 0 + rotation 0 ~-15 ~15 + bounce 0.0 + color 0 { 0.8 0.2 0.2 } - + + lifeTime 200~50 + } + + particle + { + shader sync flame3 flame4 flame5 flame6 flame7 flame8 flame9 flame10 flame11 flame12 flame13 flame14 flame15 flame16 flame17 flame18 flame19 flame20 flame21 flame22 flame23 flame24 flame25 + displacement 0 0 0 0 + + velocityType normal + + velocityDir linear + + velocityMagnitude 15 + velocity 0 0 0 ~35 + + accelerationType static + accelerationDir linear + acceleration 0 0 -1 ~5 + accelerationMagnitude 25 + + radius 0 5 8 + alpha 250 .75 0 + rotation 0 ~-15 ~15 + bounce 0.0 + color 0 { 0.8 0.2 0.2 } - + + lifeTime 200~50 + } + + count 2 + delay 0 + period 0 - 0 + } + + +} + +disconnectPS +{ + ejector + { + particle + { + shader sync gfx/sprites/bubble + displacement 0 0 0 ~60 + + velocityType static + velocityDir linear + velocityMagnitude 15 + velocity 0 0 1 ~90 + + radius 0 24 32 + alpha 0 1.0 - + + lifeTime 1000~300 + } + + count 3 + delay 0 + period 0 - 0 + } +} diff --git a/assets/scripts/ui.shader b/assets/scripts/ui.shader new file mode 100644 index 0000000..a99d4f7 --- /dev/null +++ b/assets/scripts/ui.shader @@ -0,0 +1,19 @@ +ui/assets/neutral/squad_h +{ + nopicmip + { + map ui/assets/neutral/squad_h.tga + blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA + rgbgen vertex + } +} + +ui/assets/neutral/squad_v +{ + nopicmip + { + map ui/assets/neutral/squad_v.tga + blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA + rgbgen vertex + } +} diff --git a/assets/scripts/weapons.particle b/assets/scripts/weapons.particle new file mode 100644 index 0000000..5851fc6 --- /dev/null +++ b/assets/scripts/weapons.particle @@ -0,0 +1,890 @@ +models/weapons/hive/missilePS +{ + ejector + { + particle + { + shader 20 models/weapons/hive/sprite1.tga models/weapons/hive/sprite2.tga + + displacement 0 0 0 ~4.0 + + parentVelocityFraction 0.5 + velocityType static + velocityDir linear + velocityMagnitude 100 + velocity 0 0 1 ~180 + + accelerationType cent + accelerationDir point + accelerationMagnitude 2000 + + rotation 0 -20.0~40.0 -20.0~40.0 + radius 0 2.0 2.0 + alpha 0 1.0 0.0 + bounce 0.5 + + lifeTime 4000 + } + + count infinite + delay 0 + period 100 - ~0% + } +} + +models/weapons/rifle/impactPS +{ + ejector + { + particle + { + shader sync gfx/rifle/verysmallrock + + displacement 0 0 0 ~4.0 + + velocityType normal + velocityDir linear + velocityMagnitude 100 + velocity 0 0 0 ~20 + + accelerationType static + accelerationDir linear + accelerationMagnitude 600 + acceleration 0 0 -1 0 + + radius 0 1.0 1.0 + alpha 0 1.0 0.0 + rotation 0 ~360 - + bounce 0.0 + + lifeTime 350 + } + + count 0~2 + delay ~100 + period 0 - ~0% + } + + ejector + { + particle + { + shader sync gfx/sprites/smoke + + displacement 0 0 0 ~1.0 + normalDisplacement 3.0 + + velocityType normal + velocityDir linear + velocityMagnitude 20 + velocity 0 0 0 0 + + accelerationType static + accelerationDir linear + accelerationMagnitude 300 + acceleration 0 0 1 0 + + radius 0 4.0 6.0 + alpha 0 0.5 0.0 + rotation 0 ~360 - + bounce 0.0 + + lifeTime 250 + } + + count 1 + delay 0 + period 0 - ~0% + } + + ejector + { + particle + { + shader sync gfx/blaster/orange_particle + + normalDisplacement 3.0 + + velocityType normal + velocityDir linear + velocityMagnitude 200 + velocity 0 0 0 ~160 + + accelerationType static + accelerationDir linear + accelerationMagnitude 600 + acceleration 0 0 -1 0 + + radius 0 3.0 0.0 + alpha 0 1.0 0.0 + rotation 0 ~360 - + bounce 0.0 + + lifeTime 200 + } + + count 0~1 + delay 0 + period 0 - ~0% + } +} + +models/weapons/rifle/muzzlePS +{ + ejector + { + particle + { + shader sync gfx/sprites/smoke + + displacement 0 0 0 ~0.0 + + parentVelocityFraction 0.9 + + velocityType static + velocityDir linear + velocityMagnitude 20 + velocity 0 0 0 0 + + accelerationType static + accelerationDir linear + accelerationMagnitude 300 + acceleration 0 0 1 0 + + radius 0 2.0 4.0 + alpha 0 0.4 0.0 + rotation 0 ~360 - + bounce 0.0 + + lifeTime 200 + } + + count 1 + delay 0 + period 0 - ~0% + } + + ejector + { + particle + { + model models/weapons/shells/rifle-shell.md3 + + displacement -5 -3 0 ~0.0 + + parentVelocityFraction 0.85 + + velocityType static_transform + velocityDir linear + velocityMagnitude 200 + velocity 0 -1 3 ~10 + + accelerationType static + accelerationDir linear + accelerationMagnitude 800 + acceleration 0 0 -1 0 + + radius 0 1.0 - + bounce 0.5 + + lifeTime 5000 + } + + count 1 + delay 0 + period 0 - ~0% + } +} + +models/weapons/shotgun/muzzlePS +{ + ejector + { + particle + { + shader sync gfx/sprites/smoke + + displacement 0 0 0 ~0.0 + + parentVelocityFraction 0.9 + + velocityType static + velocityDir linear + velocityMagnitude 20 + velocity 0 0 0 0 + + accelerationType static + accelerationDir linear + accelerationMagnitude 300 + acceleration 0 0 1 0 + + radius 0 2.0 4.0 + alpha 0 0.4 0.0 + rotation 0 ~360 - + bounce 0.0 + + lifeTime 200 + } + + count 1 + delay 0 + period 0 - ~0% + } + + ejector + { + particle + { + model models/weapons/shells/shotgun-shell.md3 + + displacement -5 -3 0 ~0.0 + + parentVelocityFraction 0.85 + + velocityType static_transform + velocityDir linear + velocityMagnitude 200 + velocity 0 -1 3 ~10 + + accelerationType static + accelerationDir linear + accelerationMagnitude 800 + acceleration 0 0 -1 0 + + radius 0 1.0 - + bounce 0.5 + + lifeTime 5000 + } + + count 1 + delay 0 + period 0 - ~0% + } +} + +models/weapons/chaingun/muzzlePS +{ + ejector + { + particle + { + model models/weapons/shells/rifle-shell.md3 + + displacement -5 -3 0 ~0.0 + + parentVelocityFraction 0.85 + + velocityType static_transform + velocityDir linear + velocityMagnitude 200 + velocity 0 -1 3 ~10 + + accelerationType static + accelerationDir linear + accelerationMagnitude 800 + acceleration 0 0 -1 0 + + radius 0 1.0 - + bounce 0.5 + + lifeTime 5000 + } + + count 1 + delay 0 + period 0 - ~0% + } +} + +models/weapons/flamer/muzzlePS +{ + ejector + { + particle + { + shader sync flame3 flame4 flame5 flame6 flame7 flame8 flame9 flame10 flame11 flame12 flame13 flame14 flame15 flame16 flame17 flame18 flame19 flame20 flame21 flame22 flame23 flame24 flame25 + displacement 0 0 0 ~0.0 + + parentVelocityFraction 0.65 + + velocityType cent + velocityDir linear + velocityMagnitude 500 + velocity 0 0 0 ~0 + + physicsRadius 15 + + radius 0 4.0 40.0 + alpha 0 1.0 1.0 + rotation 0 ~360 - + bounce 0.1 + + lifeTime 800 + } + + count infinite + delay 0 + period 15 - ~0% + } +} + +models/weapons/level1upg/muzzlePS +{ + ejector + { + particle + { + shader sync gfx/sprites/poisoncloud + + displacement 0 0 0 ~0.0 + + parentVelocityFraction 1.0 + + velocityType cent + velocityDir linear + velocityMagnitude 80 + velocity 0 0 0 ~50 + + radius 0 10.0 25.0 + alpha 0 0.5 0.0 + rotation 0 ~360 - + bounce 1.0 + + lifeTime 800 + } + + count 20 + delay 0 + period 40 - ~0% + } +} + +models/weapons/blaster/missilePS +{ + ejector + { + particle + { + shader sync gfx/blaster/orange_particle + + displacement 0 0 0 ~2.0 + + parentVelocityFraction 0.5 + + radius 0 1.5 0.0 + alpha 0 1.0 0.0 + bounce 0.01 + + lifeTime 400 + } + + count infinite + delay 0 + period 10 - ~0% + } +} + +models/weapons/prifle/impactPS +{ + ejector + { + particle + { + shader sync gfx/prifle/red_blob + + radius 0 3.0 6.0 + alpha 70 1.0 0.0 + rotation 0 ~360 - + + lifeTime 140 + } + + count 1 + delay 0 + period 0 - ~0% + } +} + +models/weapons/prifle/missilePS +{ + ejector + { + particle + { + shader sync gfx/prifle/red_blob + + parentVelocityFraction 0.8 + + radius 0 2.0 1.5 + alpha 0 0.8 0.0 + bounce 0.01 + + lifeTime 400 + } + + count infinite + delay 0 + period 10 - ~0% + } +} + +models/weapons/mdriver/impactPS +{ + ejector + { + particle + { + shader sync gfx/mdriver/green_particle + + displacement 0 0 0 ~2.0 + + normalDisplacement 10.0 + + velocityType normal + velocityDir linear + velocityMagnitude 400 + velocity 0 0 0 ~80 + + accelerationType normal + accelerationDir linear + accelerationMagnitude 200 + acceleration 0 0 1 ~360 + + radius 0 6.0 4.0 + alpha 0 1.0 0.0 + rotation 0 ~360 - + bounce 0.5 + + lifeTime 1000 + } + + count 10 + delay 0 + period 0 - ~0% + } +} + +models/weapons/lcannon/missilePS +{ + ejector + { + particle + { + shader sync gfx/blaster/orange_particle + + displacement 0 0 0 ~3.0 + + parentVelocityFraction 1.0 + velocityType static + velocityDir linear + velocityMagnitude 120 + velocity 0 0 1 ~360 + + radius 0 1.0 5.0 + alpha 0 1.0 0.0 + bounce 0.1 + + lifeTime 1000 + } + + count infinite + delay 0 + period 50 - ~0% + } +} + +models/weapons/lcannon/secondaryMissilePS +{ + ejector + { + particle + { + shader sync gfx/blaster/orange_particle + + displacement 0 0 0 ~3.0 + + parentVelocityFraction 0.5 + + radius 0 2.0 0.0 + alpha 0 1.0 0.0 + bounce 0.1 + + lifeTime 400 + } + + count infinite + delay 0 + period 25 - ~0% + } +} + +models/weapons/lcannon/impactPS +{ + ejector + { + particle + { + shader sync gfx/blaster/orange_particle + + radius 0 8.0 16.0 + alpha 0 1.0 0.0 + rotation 0 ~360 - + + scaleWithCharge 0.10 + + lifeTime 250 + } + + count 1 + delay 0 + period 0 - ~0% + } + + ejector + { + particle + { + shader sync gfx/blaster/orange_particle + + displacement 0 0 0 ~2.0 + + normalDisplacement 10.0 + + velocityType normal + velocityDir linear + velocityMagnitude 200 + velocity 0 0 0 ~160 + + accelerationType static + accelerationDir linear + accelerationMagnitude 300 + acceleration 0 0 -1 0 + + radius 0 1.0 5.0 + alpha 0 1.0 0.0 + rotation 0 ~360 - + bounce 0.8 + + lifeTime 2000~1000 + } + + count 30 + delay 0 + period 0 - ~0% + } + + ejector + { + particle + { + shader sync gfx/lcannon/primary + + displacement 0 0 0 ~10.0 + + normalDisplacement 15.0 + + velocityType normal + velocityDir linear + velocityMagnitude 100 + velocity 0 0 0 ~160 + + accelerationType static + accelerationDir linear + accelerationMagnitude 150 + acceleration 0 0 -1 0 + + radius 0 1.0 0.0 + alpha 0 1.0 0.0 + rotation 0 ~360 - + bounce 1.0 + + scaleWithCharge 0.10 + + lifeTime 1000~1000 + } + + count 6 + delay 0 + period 0 - ~0% + } +} + +models/weapons/lcannon/secondaryImpactPS +{ + ejector + { + particle + { + shader sync gfx/blaster/orange_particle + + radius 0 8.0 16.0 + alpha 0 1.0 0.0 + rotation 0 ~360 - + + lifeTime 250 + } + + count 1 + delay 0 + period 0 - ~0% + } + + ejector + { + particle + { + shader sync gfx/blaster/orange_particle + + displacement 0 0 0 ~2.0 + + normalDisplacement 10.0 + + velocityType normal + velocityDir linear + velocityMagnitude 150 + velocity 0 0 0 ~160 + + accelerationType static + accelerationDir linear + accelerationMagnitude 300 + acceleration 0 0 -1 0 + + radius 0 1.0 5.0 + alpha 0 1.0 0.0 + rotation 0 ~360 - + bounce 0.8 + + lifeTime 2000~1000 + } + + count 10 + delay 0 + period 0 - ~0% + } +} + +models/weapons/psaw/impactPS +{ + ejector + { + particle + { + shader sync gfx/psaw/blue_particle + + displacement 0 0 0 ~2.0 + + velocityType static + velocityDir linear + velocityMagnitude 100 + velocity 0 0 -1 ~25 + + accelerationType static + accelerationDir linear + accelerationMagnitude 800 + acceleration 0 0 -1 ~10 + + radius 0 1.0~2.0 3.0~2.0 + alpha 0 1.0 1.0 + rotation 0 ~360 - + bounce 0.5 + + lifeTime 1000 + } + + count 3 + delay 0 + period 0 - ~0% + } +} + +models/weapons/lasgun/impactPS +{ + ejector + { + particle + { + shader sync gfx/lasgun/purple_particle + + displacement 0 0 0 ~2.0 + normalDisplacement 7.0 + + velocityType normal + velocityDir linear + velocityMagnitude 100 + velocity 0 0 0 ~90 + + accelerationType static + accelerationDir linear + accelerationMagnitude 600 + acceleration 0 0 -1 ~10 + + radius 0 3.0~2.0 0.0 + alpha 0 1.0 1.0 + rotation 0 ~360 - + bounce 0.5 + + lifeTime 500 + } + + count 3 + delay 0 + period 0 - ~0% + } +} + +models/weapons/grenade/impactTrailPS +{ + ejector + { + particle + { + shader sync flame3 flame4 flame5 flame6 flame7 flame8 flame9 flame10 flame11 flame12 flame13 flame14 flame15 flame16 flame17 flame18 flame19 flame20 flame21 flame22 flame23 flame24 flame25 + + displacement 0 0 0 ~0 + + velocityType static + velocityDir linear + velocityMagnitude 30 + velocity 0 0 -1 ~0 + + radius 0 30.0 10.0 + alpha 0 1.0 0.0 + rotation 0 ~360 - + bounce 0 + + lifeTime 500 + } + + count 5 + delay 0 + period 40 - 0 + } +} + +models/weapons/grenade/impactPS +{ + ejector + { + particle + { + shader sync flame3 flame4 flame5 flame6 flame7 flame8 flame9 flame10 flame11 flame12 flame13 flame14 flame15 flame16 flame17 flame18 flame19 flame20 flame21 flame22 flame23 flame24 flame25 + + displacement 0 0 11 ~0 + + velocityType static + velocityDir linear + velocityMagnitude 200~75% + velocity 0 0 1 ~10 + + accelerationType static + accelerationDir linear + accelerationMagnitude 300 + acceleration 0 0 -1 0 + + radius 0 10.0 40.0 + alpha 0 1.0 0.0 + rotation 0 ~360 - + bounce 0 + + lifeTime 500 + + childSystem models/weapons/grenade/impactTrailPS + } + + count 5 + delay 0 + period 10 - ~0% + } + + ejector + { + particle + { + shader sync gfx/grenade/flare_01 + + displacement 0 0 8 ~0 + + velocityType static + velocityDir linear + velocityMagnitude 10~50% + velocity 0 0 1 ~60 + + radius 0 100.0 200.0 + alpha 250 1.0 0.0 + rotation 0 ~360 - + bounce 0.0 + + lifeTime 300 + } + + count 1 + delay 0 + period 10 - ~0% + } + + ejector + { + particle + { + shader sync gfx/sprites/spark + + displacement 0 0 8 ~0 + + velocityType static + velocityDir linear + velocityMagnitude 700~3% + velocity 0 0 1 ~180 + + accelerationType static + accelerationDir linear + accelerationMagnitude 800 + acceleration 0 0 1 0 + + radius 0 10.0 2.0 + alpha 0 1.0 0.0 + rotation 0 ~360 - + bounce 0 + + lifeTime 300 + } + + count 150 + delay 0 + period 0 - ~0% + } +} + +models/weapons/level3upg/impactPS +{ + ejector + { + particle + { + shader sync gfx/level3upg/barb_splash + + displacement 0 0 0 ~8 + + velocityType normal + velocityDir linear + velocityMagnitude 800 + velocity 0 0 1 ~80 + + accelerationType static + accelerationDir linear + accelerationMagnitude 800 + acceleration 0 0 -1 0 + + radius 0 3.0~2.0 0.0 + alpha 0 1.0 1.0 + rotation 0 ~360 - + bounce 0.4~100% + + lifeTime 175 + } + + count 12 + delay 0 + period 0 - ~0% + } +} diff --git a/assets/scripts/weapons.shader b/assets/scripts/weapons.shader new file mode 100644 index 0000000..960aecb --- /dev/null +++ b/assets/scripts/weapons.shader @@ -0,0 +1,93 @@ +gfx/blaster/orange_particle +{ + cull disable + { + map gfx/blaster/orange_particle.tga + blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA + alphaGen vertex + rgbGen vertex + } +} + +gfx/mdriver/green_particle +{ + cull disable + { + map gfx/mdriver/green_particle.tga + blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA + rgbGen vertex + alphaGen vertex + } +} + +gfx/mdriver/trail +{ + nomipmaps + cull disable + { + map gfx/mdriver/trail.tga + blendFunc blend + } +} + +gfx/psaw/blue_particle +{ + cull disable + { + map gfx/psaw/blue_particle.jpg + blendFunc GL_ONE GL_ONE + alphaGen vertex + rgbGen vertex + } +} + +gfx/rifle/verysmallrock +{ + cull disable + { + map gfx/rifle/verysmallrock.tga + blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA + alphaGen vertex + rgbGen vertex + } +} + +gfx/prifle/red_blob +{ + cull disable + { + map gfx/prifle/red_blob.tga + blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA + alphaGen vertex + } +} + +gfx/prifle/red_streak +{ + nomipmaps + cull disable + { + map gfx/prifle/red_streak.tga + blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA + alphaGen vertex + } +} + +gfx/lcannon/primary +{ + cull disable + { + animmap 24 gfx/lcannon/primary_1.jpg gfx/lcannon/primary_2.jpg gfx/lcannon/primary_3.jpg gfx/lcannon/primary_4.jpg + blendFunc GL_ONE GL_ONE + } +} + +gfx/lasgun/purple_particle +{ + cull disable + { + map gfx/lasgun/purple_particle.tga + blendFunc GL_ONE GL_ONE + } +} + diff --git a/assets/sound/buildables/barricade/sound.cfg b/assets/sound/buildables/barricade/sound.cfg new file mode 100644 index 0000000..caa49e4 --- /dev/null +++ b/assets/sound/buildables/barricade/sound.cfg @@ -0,0 +1,14 @@ +1 0 //construct1.wav +0 0 //construct2.wav +0 0 //idle1.wav +0 0 //idle2.wav +0 0 //idle3.wav +1 0 //attack1.wav +1 0 //attack2.wav +0 0 //spawn1.wav +0 0 //spawn2.wav +1 0 //pain1.wav +1 0 //pain2.wav +0 0 //destroy1.wav +0 0 //destroy2.wav +0 0 //destroyed.wav diff --git a/assets/ui/assets/alien/buildstat.cfg b/assets/ui/assets/alien/buildstat.cfg new file mode 100644 index 0000000..318d401 --- /dev/null +++ b/assets/ui/assets/alien/buildstat.cfg @@ -0,0 +1,37 @@ +// config for the building status indicators that builders see +// NOTES: +// * all characters (text/icons) are square +// * character size is derived totally from frameHeight and vertialMargin +// * healthPadding is NOT used compensated for in the margins + +frameShader "ui/assets/alien/buildstat/frame" +frameWidth 150 +frameHeight 30 + +healthPadding 2 +healthSevereColor 0.24 0.02 0.02 1 +healthHighColor 0.32 0.04 0.04 1 +healthElevatedColor 0.40 0.06 0.06 1 +healthGuardedColor 0.48 0.08 0.08 1 +healthLowColor 0.56 0.10 0.10 1 + +// this gets drawn over frame and health, but numbers and icons go on top of it +overlayShader "ui/assets/alien/buildstat/overlay" +overlayWidth 156 +overlayHeight 36 + +// PERCENT of frameHeight to use for top/bottom margin of icons/text +// value is for total of top and bottom margins +// valid values between 0.0 and 1.0 +verticalMargin 0.5 + +// number of CHARS worth of space that should be used for left/right margins +// value is for one side only +// char width is determined by frameHeight and verticalMargin +horizontalMargin 1.0 + +markedShader "ui/assets/alien/buildstat/mark" +noPowerShader "ui/assets/alien/buildstat/nopower" + +backColor 1.0 1.0 1.0 1 +foreColor 0.0 0.0 0.0 1 diff --git a/assets/ui/assets/console1.tga b/assets/ui/assets/console1.tga new file mode 100644 index 0000000..2d8d418 Binary files /dev/null and b/assets/ui/assets/console1.tga differ diff --git a/assets/ui/assets/console2.jpg b/assets/ui/assets/console2.jpg new file mode 100644 index 0000000..8c051fd Binary files /dev/null and b/assets/ui/assets/console2.jpg differ diff --git a/assets/ui/assets/human/buildstat.cfg b/assets/ui/assets/human/buildstat.cfg new file mode 100644 index 0000000..c66b618 --- /dev/null +++ b/assets/ui/assets/human/buildstat.cfg @@ -0,0 +1,39 @@ +// config for the building status indicators that builders see +// NOTES: +// * all characters (text/icons) are square +// * character size is derived totally from frameHeight and vertialMargin +// * healthPadding is NOT used compensated for in the margins + +frameShader "ui/assets/human/buildstat/frame" +frameWidth 150 +frameHeight 30 + +healthPadding 2 + +// Homeworld Security Advisory System +healthSevereColor 0.83 0.03 0.02 1 +healthHighColor 0.84 0.48 0.03 1 +healthElevatedColor 0.82 0.82 0.00 1 +healthGuardedColor 0.19 0.65 0.00 1 +healthLowColor 0.27 0.49 0.55 1 + +// this gets drawn over frame and health, but numbers and icons go on top of it +overlayShader "" +overlayWidth 160 +overlayHeight 40 + +// PERCENT of frameHeight to use for top/bottom margin of icons/text +// value is for total of top and bottom margins +// valid values between 0.0 and 1.0 +verticalMargin 0.5 + +// number of CHARS worth of space that should be used for left/right margins +// value is for one side only +// char width is determined by frameHeight and verticalMargin +horizontalMargin 1.0 + +markedShader "ui/assets/human/buildstat/mark" +noPowerShader "ui/assets/human/buildstat/nopower" + +backColor 1.0 1.0 1.0 1 +foreColor 0.0 0.0 0.0 1 diff --git a/assets/ui/connect.menu b/assets/ui/connect.menu new file mode 100644 index 0000000..108e33c --- /dev/null +++ b/assets/ui/connect.menu @@ -0,0 +1,14 @@ +#include "ui/menudef.h" + +{ + menuDef + { + name "Connect" + background "gfx/2d/load_screen" + rect 0 0 640 480 + fullScreen MENU_FALSE + visible MENU_FALSE + style WINDOW_STYLE_SHADER + aspectBias ASPECT_NONE + } +} diff --git a/assets/ui/createfavorite.menu b/assets/ui/createfavorite.menu new file mode 100644 index 0000000..c66ecff --- /dev/null +++ b/assets/ui/createfavorite.menu @@ -0,0 +1,115 @@ +#include "ui/menudef.h" + +{ + \\ CREATE FAVORITE POPUP MENU \\ + +#define BUTT_W 45 +#define BUTT_H 35 +#define BORDER 10 +#define INPUT_H 20 +#define W 250 +#define H ((3*BORDER)+(2*INPUT_H)+BUTT_H) + + menuDef + { + name "createfavorite_popmenu" + visible MENU_FALSE + fullscreen MENU_FALSE + rect (320-(W/2)) (240-(H/2)) W H + focusColor 1 .75 0 1 + style WINDOW_STYLE_FILLED + border WINDOW_BORDER_FULL + popup + onESC + { + close createfavorite_popmenu + } + + itemDef + { + name window + rect 0 0 W H + style WINDOW_STYLE_FILLED + backcolor 0 0 0 1 + visible MENU_TRUE + decoration + + border WINDOW_BORDER_FULL + borderSize 1.0 + borderColor 0.5 0.5 0.5 1 + } + + // ENTER NAME AND ADDRESS // + + itemDef + { + name nameEntry + type ITEM_TYPE_EDITFIELD + style WINDOW_STYLE_EMPTY + maxchars 40 + text "Name:" + textscale .4 + cvar "ui_favoriteName" + rect BORDER BORDER (W-(2*BORDER)) INPUT_H + textalign ALIGN_LEFT + textvalign VALIGN_CENTER + forecolor 1 1 1 1 + visible MENU_TRUE + } + + itemDef + { + name addressEntry + type ITEM_TYPE_EDITFIELD + style WINDOW_STYLE_EMPTY + maxchars 40 + text "Address:" + textscale .4 + cvar "ui_favoriteAddress" + rect BORDER ((2*BORDER)+INPUT_H) (W-(2*BORDER)) INPUT_H + textalign ALIGN_LEFT + textvalign VALIGN_CENTER + forecolor 1 1 1 1 + visible MENU_TRUE + } + + itemDef + { + name yes + text "OK" + type ITEM_TYPE_BUTTON + textscale .25 + style WINDOW_STYLE_EMPTY + rect (W-(2*BUTT_W)) (H-BUTT_H) BUTT_W BUTT_H + textalign ALIGN_CENTER + textvalign VALIGN_CENTER + forecolor 1 1 1 1 + visible MENU_TRUE + action + { + play "sound/misc/menu1.wav"; + uiScript CreateFavorite; + close createfavorite_popmenu + } + } + + itemDef + { + name yes + text "Cancel" + type ITEM_TYPE_BUTTON + textscale .25 + style WINDOW_STYLE_EMPTY + rect (W-BUTT_W) (H-BUTT_H) BUTT_W BUTT_H + textalign ALIGN_CENTER + textvalign VALIGN_CENTER + forecolor 1 1 1 1 + visible MENU_TRUE + action + { + play "sound/misc/menu1.wav"; + close createfavorite_popmenu + } + } + } +} diff --git a/assets/ui/createserver.menu b/assets/ui/createserver.menu new file mode 100644 index 0000000..f64ba1d --- /dev/null +++ b/assets/ui/createserver.menu @@ -0,0 +1,499 @@ +#include "ui/menudef.h" + +{ + \\ Server Creation \\ + +#define W 640 +#define H 480 +#define BORDER 10 + +#define PREVIEW_W 300 +#define PREVIEW_H 225 +#define PREVIEW_X BORDER +#define PREVIEW_Y BORDER + +#define BC_W (W-(2*BORDER)) +#define BC_H 50 +#define BC_X BORDER +#define BC_Y (H-(BC_H+BORDER)) +#define ARROW_W 50 +#define ARROW_H BC_H + +#define MAPS_W PREVIEW_W +#define MAPS_H (H-((4*BORDER)+PREVIEW_H+BC_H)) +#define MAPS_X BORDER +#define MAPS_Y ((2*BORDER)+PREVIEW_H) + +#define OPTIONS_W (W-((3*BORDER)+PREVIEW_W)) +#define OPTIONS_H (H-((3*BORDER)+BC_H)) +#define OPTIONS_X ((2*BORDER)+PREVIEW_W) +#define OPTIONS_Y BORDER +#define ELEM_OFF_Y 20 +#define ELEM_OFF_X -135 +#define ELEM_H 21 + + menuDef + { + name "createserver" + visible MENU_FALSE + fullscreen MENU_TRUE + rect 0 0 W H + focusColor 1 .75 0 1 + outOfBoundsClick + style WINDOW_STYLE_EMPTY + aspectBias ASPECT_NONE + + onOpen + { + uiScript loadArenas; + hide accept_alt; + show accept; + hide back_alt; + show back + } + + onEsc + { + close createserver + } + + itemDef + { + name background + rect 0 0 W H + style WINDOW_STYLE_FILLED + backcolor 0 0 0 1 + visible MENU_TRUE + decoration + } + + // map selection + + itemDef + { + name mappreview + style WINDOW_STYLE_EMPTY + ownerdraw UI_SELECTEDMAPPREVIEW + rect PREVIEW_X PREVIEW_Y PREVIEW_W PREVIEW_H + border WINDOW_BORDER_FULL + bordercolor .5 .5 .5 1 + visible MENU_TRUE + } + + itemDef + { + name maplist + rect MAPS_X MAPS_Y MAPS_W MAPS_H + type ITEM_TYPE_LISTBOX + style WINDOW_STYLE_EMPTY + elementwidth 120 + elementheight 20 + textscale .33 + elementtype LISTBOX_TEXT + feeder FEEDER_MAPS + border WINDOW_BORDER_FULL + bordercolor 0.5 0.5 0.5 1 + forecolor 1 1 1 1 + backcolor 0.2 0.2 0.2 1 + outlinecolor 0.1 0.1 0.1 0.5 + visible MENU_TRUE + columns 1 + 2 190 ALIGN_LEFT + } + + + // SETTINGS // + + itemDef + { + name window + rect OPTIONS_X OPTIONS_Y OPTIONS_W OPTIONS_H + style WINDOW_STYLE_FILLED + backcolor 0 0 0 1 + visible MENU_TRUE + decoration + + border WINDOW_BORDER_FULL + borderSize 1.0 + borderColor 0.5 0.5 0.5 1 + } + + itemDef + { + name expert + type ITEM_TYPE_EDITFIELD + text "Host Name:" + cvar "sv_hostname" + maxChars 40 + rect (OPTIONS_X+BORDER) (OPTIONS_Y+ELEM_OFF_Y+(0*ELEM_H)) (OPTIONS_W-(2*BORDER)) ELEM_H + textalign ALIGN_RIGHT + textvalign VALIGN_CENTER + textalignx ELEM_OFF_X + textscale .36 + forecolor 1 1 1 1 + visible MENU_TRUE + } + + itemDef + { + name normal + type ITEM_TYPE_NUMERICFIELD + text "Time Limit:" + cvar "timelimit" + rect (OPTIONS_X+BORDER) (OPTIONS_Y+ELEM_OFF_Y+(1*ELEM_H)) (OPTIONS_W-(2*BORDER)) ELEM_H + textalign ALIGN_RIGHT + textvalign VALIGN_CENTER + textalignx ELEM_OFF_X + maxchars 4 + textscale .36 + forecolor 1 1 1 1 + visible MENU_TRUE + } + + itemDef + { + name expert + type ITEM_TYPE_NUMERICFIELD + text "Maximum Players:" + cvar "sv_maxclients" + rect (OPTIONS_X+BORDER) (OPTIONS_Y+ELEM_OFF_Y+(2*ELEM_H)) (OPTIONS_W-(2*BORDER)) ELEM_H + textalign ALIGN_RIGHT + textvalign VALIGN_CENTER + textalignx ELEM_OFF_X + maxchars 4 + textscale .36 + forecolor 1 1 1 1 + visible MENU_TRUE + } + + itemDef + { + name expert + type ITEM_TYPE_YESNO + text "Require Password:" + cvar "g_needpassword" + rect (OPTIONS_X+BORDER) (OPTIONS_Y+ELEM_OFF_Y+(3*ELEM_H)) (OPTIONS_W-(2*BORDER)) ELEM_H + textalign ALIGN_RIGHT + textvalign VALIGN_CENTER + textalignx ELEM_OFF_X + textscale .36 + forecolor 1 1 1 1 + visible MENU_TRUE + action + { + play "sound/misc/menu1.wav" + } + } + + itemDef + { + name expert + type ITEM_TYPE_EDITFIELD + text "Password:" + cvar "g_password" + rect (OPTIONS_X+BORDER) (OPTIONS_Y+ELEM_OFF_Y+(4*ELEM_H)) (OPTIONS_W-(2*BORDER)) ELEM_H + maxchars 10 + textalign ALIGN_RIGHT + textvalign VALIGN_CENTER + textalignx ELEM_OFF_X + textscale .36 + forecolor 1 1 1 1 + visible MENU_TRUE + } + + + + itemDef + { + name normal + type ITEM_TYPE_YESNO + text "Pure Server:" + cvar "sv_pure" + rect (OPTIONS_X+BORDER) (OPTIONS_Y+ELEM_OFF_Y+(6*ELEM_H)) (OPTIONS_W-(2*BORDER)) ELEM_H + textalign ALIGN_RIGHT + textvalign VALIGN_CENTER + textalignx ELEM_OFF_X + textscale .36 + forecolor 1 1 1 1 + visible MENU_TRUE + action + { + play "sound/misc/menu1.wav" + } + } + + itemDef + { + name normal + type ITEM_TYPE_MULTI + text "Dedicated:" + // 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 (OPTIONS_X+BORDER) (OPTIONS_Y+ELEM_OFF_Y+(7*ELEM_H)) (OPTIONS_W-(2*BORDER)) ELEM_H + textalign ALIGN_RIGHT + textvalign VALIGN_CENTER + textalignx ELEM_OFF_X + textscale .36 + forecolor 1 1 1 1 + visible MENU_TRUE + action + { + play "sound/misc/menu1.wav" + } + } + + itemDef + { + name expert + type ITEM_TYPE_YESNO + text "Auto Download:" + cvar "sv_allowdownload" + rect (OPTIONS_X+BORDER) (OPTIONS_Y+ELEM_OFF_Y+(8*ELEM_H)) (OPTIONS_W-(2*BORDER)) ELEM_H + textalign ALIGN_RIGHT + textvalign VALIGN_CENTER + textalignx ELEM_OFF_X + textscale .36 + forecolor 1 1 1 1 + visible MENU_TRUE + action + { + play "sound/misc/menu1.wav" + } + } + + itemDef + { + name expert + type ITEM_TYPE_YESNO + text "Enable Voting:" + cvar "g_allowvote" + rect (OPTIONS_X+BORDER) (OPTIONS_Y+ELEM_OFF_Y+(9*ELEM_H)) (OPTIONS_W-(2*BORDER)) ELEM_H + textalign ALIGN_RIGHT + textvalign VALIGN_CENTER + textalignx ELEM_OFF_X + textscale .36 + forecolor 1 1 1 1 + visible MENU_TRUE + action + { + play "sound/misc/menu1.wav" + } + } + + + + itemDef + { + name expert + type ITEM_TYPE_NUMERICFIELD + text "Minimum Ping:" + cvar "sv_minping" + rect (OPTIONS_X+BORDER) (OPTIONS_Y+ELEM_OFF_Y+(11*ELEM_H)) (OPTIONS_W-(2*BORDER)) ELEM_H + textalign ALIGN_RIGHT + textvalign VALIGN_CENTER + textalignx ELEM_OFF_X + maxchars 4 + textscale .36 + forecolor 1 1 1 1 + visible MENU_TRUE + } + + itemDef + { + name expert + type ITEM_TYPE_NUMERICFIELD + text "Maximum Ping:" + cvar "sv_maxping" + rect (OPTIONS_X+BORDER) (OPTIONS_Y+ELEM_OFF_Y+(12*ELEM_H)) (OPTIONS_W-(2*BORDER)) ELEM_H + textalign ALIGN_RIGHT + textvalign VALIGN_CENTER + textalignx ELEM_OFF_X + maxchars 4 + textscale .36 + forecolor 1 1 1 1 + visible MENU_TRUE + } + + itemDef + { + name expert + type ITEM_TYPE_YESNO + text "Synchronous Client:" + cvar "g_synchronousclients" + rect (OPTIONS_X+BORDER) (OPTIONS_Y+ELEM_OFF_Y+(13*ELEM_H)) (OPTIONS_W-(2*BORDER)) ELEM_H + textalign ALIGN_RIGHT + textvalign VALIGN_CENTER + textalignx ELEM_OFF_X + textscale .36 + forecolor 1 1 1 1 + visible MENU_TRUE + action + { + play "sound/misc/menu1.wav" + } + } + + itemDef + { + name expert + type ITEM_TYPE_NUMERICFIELD + text "Max Rate:" + cvar "sv_maxrate" + rect (OPTIONS_X+BORDER) (OPTIONS_Y+ELEM_OFF_Y+(14*ELEM_H)) (OPTIONS_W-(2*BORDER)) ELEM_H + textalign ALIGN_RIGHT + textvalign VALIGN_CENTER + textalignx ELEM_OFF_X + maxchars 4 + textscale .36 + forecolor 1 1 1 1 + visible MENU_TRUE + } + + itemDef + { + name expert + type ITEM_TYPE_NUMERICFIELD + text "Zombie Time:" + cvar "sv_zombietime" + rect (OPTIONS_X+BORDER) (OPTIONS_Y+ELEM_OFF_Y+(15*ELEM_H)) (OPTIONS_W-(2*BORDER)) ELEM_H + maxchars 4 + textalign ALIGN_RIGHT + textvalign VALIGN_CENTER + textalignx ELEM_OFF_X + textscale .36 + forecolor 1 1 1 1 + visible MENU_TRUE + } + + itemDef + { + name expert + type ITEM_TYPE_NUMERICFIELD + text "Reconnect Limit:" + cvar "sv_reconnectlimit" + maxchars 4 + rect (OPTIONS_X+BORDER) (OPTIONS_Y+ELEM_OFF_Y+(16*ELEM_H)) (OPTIONS_W-(2*BORDER)) ELEM_H + textalign ALIGN_RIGHT + textvalign VALIGN_CENTER + textalignx ELEM_OFF_X + textscale .36 + forecolor 1 1 1 1 + visible MENU_TRUE + } + + + + // BACK BAR // + + itemDef + { + name back + style WINDOW_STYLE_SHADER + background "ui/assets/backarrow.tga" + rect BC_X BC_Y ARROW_H ARROW_W + aspectBias ALIGN_LEFT + visible MENU_TRUE + action + { + play "sound/misc/menu4.wav"; + close createserver + } + + mouseEnter + { + hide back; + show back_alt + } + } + + itemDef + { + name back_alt + style WINDOW_STYLE_SHADER + background "ui/assets/backarrow_alt.tga" + rect BC_X BC_Y ARROW_H ARROW_W + aspectBias ALIGN_LEFT + backcolor 0 0 0 0 + forecolor 1 1 1 1 + visible MENU_FALSE + type ITEM_TYPE_BUTTON + + text "Back" + textalign ALIGN_LEFT + textvalign VALIGN_CENTER + textalignx ARROW_W + textscale .6 + + mouseExit + { + hide back_alt; + show back + } + + action + { + play "sound/misc/menu4.wav"; + close createserver + } + } + + + + + itemDef + { + name accept + style WINDOW_STYLE_SHADER + rect ((BC_X+BC_W)-ARROW_W) BC_Y ARROW_H ARROW_W + aspectBias ALIGN_RIGHT + background "ui/assets/forwardarrow.tga" + backcolor 0 0 0 0 + forecolor 1 1 1 1 + visible MENU_TRUE + mouseEnter + { + hide accept; + show accept_alt + } + + action + { + play "sound/misc/menu1.wav"; + uiScript StartServer + } + } + + itemDef + { + name accept_alt + style WINDOW_STYLE_SHADER + rect ((BC_X+BC_W)-ARROW_W) BC_Y ARROW_H ARROW_W + aspectBias ALIGN_RIGHT + background "ui/assets/forwardarrow_alt.tga" + backcolor 0 0 0 0 + type ITEM_TYPE_BUTTON + forecolor 1 1 1 1 + visible MENU_FALSE + + text "Create" + textalign ALIGN_RIGHT + textvalign VALIGN_CENTER + textalignx -ARROW_W + textscale .6 + + mouseExit + { + hide accept_alt; + show accept + } + + action + { + play "sound/misc/menu1.wav"; + uiScript StartServer + } + } + } +} diff --git a/assets/ui/demo.menu b/assets/ui/demo.menu new file mode 100644 index 0000000..bec3a05 --- /dev/null +++ b/assets/ui/demo.menu @@ -0,0 +1,108 @@ +#include "ui/menudef.h" + +{ + \\ DEMO \\ + +#define W 300 +#define H 240 +#define BUTT_W 45 +#define BUTT_H 35 +#define BORDER 10 + + menuDef + { + name "demo" + visible MENU_FALSE + fullscreen MENU_FALSE + rect (320-(W/2)) (240-(H/2)) W H + focusColor 1 .75 0 1 + style WINDOW_STYLE_FILLED + border WINDOW_BORDER_FULL + popup + onEsc + { + close demo + } + onOpen + { + uiScript loadDemos + } + + itemDef + { + name window + rect 0 0 W H + style WINDOW_STYLE_FILLED + backcolor 0 0 0 1 + visible MENU_TRUE + decoration + + border WINDOW_BORDER_FULL + borderSize 1.0 + borderColor 0.5 0.5 0.5 1 + } + + itemDef + { + name demolist + rect BORDER BORDER (W-(2*BORDER)) (H-(BUTT_H+BORDER)) + type ITEM_TYPE_LISTBOX + style WINDOW_STYLE_EMPTY + elementwidth 120 + elementheight 20 + textscale .25 + elementtype LISTBOX_TEXT + feeder FEEDER_DEMOS + textalign 3 + textaligny 14 + border WINDOW_BORDER_FULL + bordercolor 0.5 0.5 0.5 0.5 + forecolor 1 1 1 1 + backcolor 0.2 0.2 0.2 1 + outlinecolor 0.1 0.1 0.1 0.5 + visible MENU_TRUE + doubleClick + { + play "sound/misc/menu1.wav"; + uiScript RunDemo + } + } + + itemDef + { + name play + text "Play" + type ITEM_TYPE_BUTTON + textscale .25 + rect (W-(2*BUTT_W)) (H-BUTT_H) BUTT_W BUTT_H + textalign ALIGN_CENTER + textvalign VALIGN_CENTER + forecolor 1 1 1 1 + visible MENU_TRUE + action + { + play "sound/misc/menu1.wav"; + close demo; + uiScript RunDemo + } + } + + itemDef + { + name cancel + text "Cancel" + type ITEM_TYPE_BUTTON + textscale .25 + rect (W-BUTT_W) (H-BUTT_H) BUTT_W BUTT_H + textalign ALIGN_CENTER + textvalign VALIGN_CENTER + forecolor 1 1 1 1 + visible MENU_TRUE + action + { + play "sound/misc/menu3.wav"; + close demo + } + } + } +} diff --git a/assets/ui/demo_error.menu b/assets/ui/demo_error.menu new file mode 100644 index 0000000..1427a28 --- /dev/null +++ b/assets/ui/demo_error.menu @@ -0,0 +1,101 @@ +#include "ui/menudef.h" + +{ + +#define W 320 +#define H 320 +#define BORDER 10 + +#define BUTT_H 25 +#define BUTT_W 65 + +#define INFO_W (W-(2*BORDER)) +#define INFO_H (H-((4*BORDER)+(2*BUTT_H))) +#define INFO_X BORDER +#define INFO_Y ((2*BORDER)+BUTT_H) + + menuDef + { + name "demo_error_popmenu" + visible MENU_FALSE + fullscreen MENU_FALSE + rect (320-(W/2)) (240-(H/2)) W H + focusColor 1 .75 0 1 + style WINDOW_STYLE_FILLED + border WINDOW_BORDER_FULL + popup + onClose { uiScript clearDemoError } + onESC + { + play "sound/misc/menu1.wav"; + close demo_error_popmenu; + open demo + } + + + itemDef + { + name window + rect 0 0 W H + style WINDOW_STYLE_FILLED + backcolor 0 0 0 1 + visible MENU_TRUE + decoration + + border WINDOW_BORDER_FULL + borderSize 1.0 + borderColor 0.5 0.5 0.5 1 + } + + itemDef + { + name dropinfo + rect BORDER BORDER INFO_W BUTT_H + type ITEM_TYPE_TEXT + text "Error" + textalign ALIGN_CENTER + textvalign VALIGN_CENTER + textscale .4 + forecolor 1 1 1 1 + visible MENU_TRUE + decoration + } + + itemDef + { + name dropinfo + rect INFO_X INFO_Y INFO_W INFO_H + type ITEM_TYPE_TEXT + style WINDOW_STYLE_FILLED + wrapped + cvar "com_demoErrorMessage" + textalign ALIGN_CENTER + textvalign VALIGN_CENTER + textscale .33 + forecolor 1 1 1 1 + visible MENU_TRUE + decoration + } + + itemDef + { + name exit + text "OK" + type ITEM_TYPE_BUTTON + textscale .4 + style WINDOW_STYLE_EMPTY + rect (W-(BORDER+BUTT_W)) (H-(BORDER+BUTT_H)) BUTT_W BUTT_H + textalign ALIGN_CENTER + textvalign VALIGN_CENTER + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + visible MENU_TRUE + action + { + play "sound/misc/menu1.wav"; + close demo_error_popmenu + open demo + } + } + } +} diff --git a/assets/ui/download.menu b/assets/ui/download.menu new file mode 100644 index 0000000..dc8247f --- /dev/null +++ b/assets/ui/download.menu @@ -0,0 +1,167 @@ +#include "ui/menudef.h" + +{ + \\ DOWNLOAD \\ + + menuDef + { + name "download_popmenu" + visible MENU_FALSE + fullscreen MENU_FALSE + rect 158 80 320 320 + focusColor 1 .75 0 1 + style WINDOW_STYLE_FILLED + border WINDOW_BORDER_FULL + popup + onClose { } + onOpen + { + uiScript loadServerInfo; + } + onESC + { + play "sound/misc/menu1.wav"; + close download_popmenu; + uiScript downloadIgnore; + } + + itemDef + { + name window + rect 10 15 300 320 + style WINDOW_STYLE_FILLED + backcolor 0 0 0 1 + visible MENU_TRUE + decoration + + border WINDOW_BORDER_FULL + borderSize 1.0 + borderColor 0.5 0.5 0.5 1 + } + + itemDef + { + name downloadinfo + rect 0 50 320 20 + type ITEM_TYPE_TEXT + text "Download" + textalign ALIGN_CENTER + textstyle ITEM_TEXTSTYLE_SHADOWEDMORE + textscale .333 + forecolor 1 1 1 1 + visible MENU_TRUE + decoration + } + + itemDef + { + name downloadinfo + rect 60 80 200 270 + type ITEM_TYPE_TEXT + style WINDOW_STYLE_FILLED + textstyle ITEM_TEXTSTYLE_SHADOWED + wrapped + cvar "com_downloadPromptText" + textalign ALIGN_CENTER + textvalign VALIGN_TOP + textscale .25 + forecolor 1 1 1 1 + visible MENU_TRUE + decoration + } + + + // BUTTON // + + + itemDef + { + name curl + text "Download from website" + textscale .25 + group grpControlbutton + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_EMPTY + rect 60 250 200 15 + textalign ALIGN_CENTER + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + visible MENU_TRUE + cvarTest "ui_serverinfo_allowdl" + showCvar { 1 5 9 13 } + action + { + play "sound/misc/menu1.wav"; + close download_popmenu; + uiScript downloadCURL; + } + } + + itemDef + { + name udp + text "Download from server" + type ITEM_TYPE_BUTTON + textscale .25 + group grpControlbutton + style WINDOW_STYLE_EMPTY + rect 60 265 200 15 + textalign ALIGN_CENTER + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + visible MENU_TRUE + cvarTest "ui_serverinfo_allowdl" + showCvar { 1 3 9 11 } + action + { + play "sound/misc/menu1.wav"; + close download_popmenu; + uiScript downloadUDP; + } + } + + itemDef + { + name ignore + text "Ignore" + type ITEM_TYPE_BUTTON + textscale .25 + group grpControlbutton + style WINDOW_STYLE_EMPTY + rect 60 280 200 15 + textalign ALIGN_CENTER + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + visible MENU_TRUE + cvarTest "sv_pure" + hideCvar { 1 } + action + { + play "sound/misc/menu1.wav"; + close download_popmenu; + uiScript downloadIgnore; + } + } + + itemDef + { + name disconnect + text "Disconnect" + type ITEM_TYPE_BUTTON + textscale .25 + group grpControlbutton + style WINDOW_STYLE_EMPTY + rect 60 295 200 15 + textalign ALIGN_CENTER + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + visible 1 + action + { + play "sound/misc/menu1.wav"; + close download_popmenu; + exec "disconnect"; + } + } + } +} diff --git a/assets/ui/drop.menu b/assets/ui/drop.menu new file mode 100644 index 0000000..162a019 --- /dev/null +++ b/assets/ui/drop.menu @@ -0,0 +1,122 @@ +#include "ui/menudef.h" + +{ + +#define W 320 +#define H 320 +#define BORDER 10 + +#define BUTT_H 25 +#define BUTT_W 65 + +#define INFO_W (W-(2*BORDER)) +#define INFO_H (H-((4*BORDER)+(2*BUTT_H))) +#define INFO_X BORDER +#define INFO_Y ((2*BORDER)+BUTT_H) + + menuDef + { + name "drop_popmenu" + visible MENU_FALSE + fullscreen MENU_FALSE + rect (320-(W/2)) (240-(H/2)) W H + focusColor 1 .75 0 1 + style WINDOW_STYLE_FILLED + border WINDOW_BORDER_FULL + popup + onClose { uiScript clearError } + onESC + { + play "sound/misc/menu1.wav"; + close drop_popmenu; + open main + } + + + itemDef + { + name window + rect 0 0 W H + style WINDOW_STYLE_FILLED + backcolor 0 0 0 1 + visible MENU_TRUE + decoration + + border WINDOW_BORDER_FULL + borderSize 1.0 + borderColor 0.5 0.5 0.5 1 + } + + itemDef + { + name dropinfo + rect BORDER BORDER INFO_W BUTT_H + type ITEM_TYPE_TEXT + text "Disconnected" + textalign ALIGN_CENTER + textvalign VALIGN_CENTER + textscale .4 + forecolor 1 1 1 1 + visible MENU_TRUE + decoration + } + + itemDef + { + name dropinfo + rect INFO_X INFO_Y INFO_W INFO_H + type ITEM_TYPE_TEXT + style WINDOW_STYLE_FILLED + wrapped + cvar "com_errorMessage" + textalign ALIGN_CENTER + textvalign VALIGN_CENTER + textscale .33 + forecolor 1 1 1 1 + visible MENU_TRUE + decoration + } + + itemDef + { + name exit + text "OK" + type ITEM_TYPE_BUTTON + textscale .4 + style WINDOW_STYLE_EMPTY + rect (W-((2*BORDER)+(2*BUTT_W))) (H-(BORDER+BUTT_H)) BUTT_W BUTT_H + textalign ALIGN_CENTER + textvalign VALIGN_CENTER + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + visible MENU_TRUE + action + { + play "sound/misc/menu1.wav"; + close drop_popmenu + } + } + + itemDef + { + name reconnect + text "Reconnect" + type ITEM_TYPE_BUTTON + textscale .4 + style WINDOW_STYLE_EMPTY + rect (W-(BORDER+BUTT_W)) (H-(BORDER+BUTT_H)) BUTT_W BUTT_H + textalign ALIGN_CENTER + textvalign VALIGN_CENTER + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + visible MENU_TRUE + action + { + close drop_popmenu; + exec "reconnect"; + } + } + } +} + + diff --git a/assets/ui/error.menu b/assets/ui/error.menu new file mode 100644 index 0000000..2c54d2d --- /dev/null +++ b/assets/ui/error.menu @@ -0,0 +1,102 @@ +#include "ui/menudef.h" + +{ + +#define W 320 +#define H 320 +#define BORDER 10 + +#define BUTT_H 25 +#define BUTT_W 65 + +#define INFO_W (W-(2*BORDER)) +#define INFO_H (H-((4*BORDER)+(2*BUTT_H))) +#define INFO_X BORDER +#define INFO_Y ((2*BORDER)+BUTT_H) + + menuDef + { + name "error_popmenu" + visible MENU_FALSE + fullscreen MENU_FALSE + rect (320-(W/2)) (240-(H/2)) W H + focusColor 1 .75 0 1 + style WINDOW_STYLE_FILLED + border WINDOW_BORDER_FULL + popup + onClose { uiScript clearError } + onESC + { + play "sound/misc/menu1.wav"; + close error_popmenu; + open main + } + + + itemDef + { + name window + rect 0 0 W H + style WINDOW_STYLE_FILLED + backcolor 0 0 0 1 + visible MENU_TRUE + decoration + + border WINDOW_BORDER_FULL + borderSize 1.0 + borderColor 0.5 0.5 0.5 1 + } + + itemDef + { + name dropinfo + rect BORDER BORDER INFO_W BUTT_H + type ITEM_TYPE_TEXT + text "Error" + textalign ALIGN_CENTER + textvalign VALIGN_CENTER + textscale .4 + forecolor 1 1 1 1 + visible MENU_TRUE + decoration + } + + itemDef + { + name dropinfo + rect INFO_X INFO_Y INFO_W INFO_H + type ITEM_TYPE_TEXT + style WINDOW_STYLE_FILLED + wrapped + cvar "com_errorMessage" + textalign ALIGN_CENTER + textvalign VALIGN_CENTER + textscale .33 + forecolor 1 1 1 1 + visible MENU_TRUE + decoration + } + + itemDef + { + name exit + text "OK" + type ITEM_TYPE_BUTTON + textscale .4 + style WINDOW_STYLE_EMPTY + rect (W-(BORDER+BUTT_W)) (H-(BORDER+BUTT_H)) BUTT_W BUTT_H + textalign ALIGN_CENTER + textvalign VALIGN_CENTER + forecolor 1 1 1 1 + backcolor .37 .1 .1 1 + visible MENU_TRUE + action + { + play "sound/misc/menu1.wav"; + close error_popmenu + } + } + } +} + + diff --git a/assets/ui/findplayer.menu b/assets/ui/findplayer.menu new file mode 100644 index 0000000..09d715a --- /dev/null +++ b/assets/ui/findplayer.menu @@ -0,0 +1,173 @@ +#include "ui/menudef.h" + +{ + \\ FIND PLAYER POPUP MENU \\ + +#define W 400 +#define H 400 +#define BUTT_W 45 +#define BUTT_H 35 +#define BORDER 10 +#define LIST_W (W-(2*BORDER)) +#define LIST_DW (LIST_W-40) +#define LEFT_C 0.13 +#define RIGHT_C 0.61 +#define SEARCH_H 30 +#define SERVERS_H 105 + + menuDef + { + name "findplayer_popmenu" + visible MENU_FALSE + fullscreen MENU_FALSE + rect (320-(W/2)) (240-(H/2)) W H + focusColor 1 .75 0 1 + style WINDOW_STYLE_FILLED + border WINDOW_BORDER_FULL + popup + onClose { } + onOpen + { + uiScript FindPlayer + } + + onESC + { + close findplayer_popmenu + } + + itemDef + { + name window + rect 0 0 W H + style WINDOW_STYLE_FILLED + backcolor 0 0 0 1 + visible MENU_TRUE + decoration + + border WINDOW_BORDER_FULL + borderSize 1.0 + borderColor 0.5 0.5 0.5 1 + } + + itemDef + { + name namefield + type ITEM_TYPE_EDITFIELD + style WINDOW_STYLE_EMPTY + text "Name:" + cvar "ui_findplayer" + maxChars 20 + rect BORDER BORDER (W-((2*BORDER)+BUTT_W)) SEARCH_H + textalign ALIGN_LEFT + textvalign VALIGN_CENTER + textscale .3 + outlinecolor .2 .2 .2 .5 + backcolor 0 0 0 0 + forecolor 1 1 1 1 + border WINDOW_BORDER_NONE + bordercolor 0 0 0 0 + action { ui_script FindPlayer } + visible MENU_TRUE + } + + itemDef + { + name search + text "Search" + textscale .25 + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_EMPTY + rect (W-(BORDER+BUTT_W)) BORDER BUTT_W SEARCH_H + textalign ALIGN_CENTER + textvalign VALIGN_CENTER + forecolor 1 1 1 1 + visible MENU_TRUE + action + { + play "sound/misc/menu1.wav"; + ui_script FindPlayer + } + } + + + itemDef + { + name serverNameList + rect BORDER ((2*BORDER)+SEARCH_H) LIST_W SERVERS_H + type ITEM_TYPE_LISTBOX + style WINDOW_STYLE_EMPTY + elementwidth 120 + elementheight 16 + textscale .25 + outlinecolor .2 .2 .2 .5 + border WINDOW_BORDER_FULL + bordersize 1 + bordercolor .5 .5 .5 1 + elementtype LISTBOX_TEXT + feeder FEEDER_FINDPLAYER + visible MENU_TRUE + } + + itemDef + { + name serverInfoList + rect BORDER ((3*BORDER)+SEARCH_H+SERVERS_H) LIST_W (H-(SEARCH_H+SERVERS_H+BUTT_H+(3*BORDER))) + type ITEM_TYPE_LISTBOX + style WINDOW_STYLE_EMPTY + elementwidth 120 + elementheight 16 + textscale .25 + border WINDOW_BORDER_FULL + bordersize 1 + bordercolor .5 .5 .5 1 + elementtype LISTBOX_TEXT + feeder FEEDER_SERVERSTATUS + notselectable + visible MENU_TRUE + columns 4 + 0 ((2*LEFT_C)*LIST_DW) ALIGN_LEFT + (LEFT_C*LIST_DW) (LEFT_C*LIST_DW) ALIGN_LEFT + ((2*LEFT_C)*LIST_DW) (LEFT_C*LIST_DW) ALIGN_LEFT + ((1-RIGHT_C)*LIST_DW) (RIGHT_C*LIST_DW) ALIGN_LEFT + } + + // BUTTON // + + itemDef + { + name join + text "Join" + textscale .25 + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_EMPTY + rect (W-(2*BUTT_W)) (H-BUTT_H) BUTT_W BUTT_H + textalign ALIGN_CENTER + textvalign VALIGN_CENTER + forecolor 1 1 1 1 + visible MENU_TRUE + action { ui_script FoundPlayerJoinServer } + } + + itemDef + { + name close + text "Close" + textscale .25 + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_EMPTY + rect (W-BUTT_W) (H-BUTT_H) BUTT_W BUTT_H + textalign ALIGN_CENTER + textvalign VALIGN_CENTER + forecolor 1 1 1 1 + visible MENU_TRUE + action + { + play "sound/misc/menu1.wav"; + close findplayer_popmenu + } + } + } +} + + diff --git a/assets/ui/folders.menu b/assets/ui/folders.menu new file mode 100644 index 0000000..176f3d6 --- /dev/null +++ b/assets/ui/folders.menu @@ -0,0 +1,121 @@ +#include "ui/menudef.h" + +{ + \\ FOR OPENING FOLDERS IN A DEFAULT FILE MANAGER \\ + +#define X 0 +#define Y 20 +#define W 250 +#define H ((10*(ELEM_H+ELEM_GAP))+120) +#define TOFF_X (0-(W/2)) +#define ELEM_H 16 +#define ELEM_GAP 4 +#define BUTT_W 35 +#define BUTT_H 35 +#define BORDER 10 +#define RESCOMBO_OFF 8 + + menuDef + { + name "browse_folders" + visible MENU_FALSE + fullscreen MENU_FALSE + rect (320-(W/2)) (240-(H/2)) W H + focusColor 1 .75 0 1 + style WINDOW_STYLE_FILLED + border WINDOW_BORDER_FULL + popup + onEsc + { + play "sound/misc/menu1.wav"; + close browse_folders + } + + itemDef + { + name window + rect 0 0 W H + style WINDOW_STYLE_FILLED + backcolor 0 0 0 1 + visible MENU_TRUE + decoration + + border WINDOW_BORDER_FULL + borderSize 1.0 + borderColor 0.5 0.5 0.5 1 + } + + + itemDef + { + text "Browse Homepath" + type ITEM_TYPE_BUTTON + textscale .25 + style WINDOW_STYLE_EMPTY + rect X Y W BUTT_H + textalign ALIGN_CENTER + textvalign VALIGN_CENTER + forecolor 1 1 1 1 + visible MENU_TRUE + action + { + play "sound/misc/menu1.wav"; + exec browseHomepath + } + } + + itemDef + { + text "Browse Demos Folder" + type ITEM_TYPE_BUTTON + textscale .25 + style WINDOW_STYLE_EMPTY + rect X (Y+(BUTT_H+ELEM_GAP)) W BUTT_H + textalign ALIGN_CENTER + textvalign VALIGN_CENTER + forecolor 1 1 1 1 + visible MENU_TRUE + action + { + play "sound/misc/menu1.wav"; + exec browseDemos + } + } + + itemDef + { + text "Browse Screen Shots Folder" + type ITEM_TYPE_BUTTON + textscale .25 + style WINDOW_STYLE_EMPTY + rect X (Y+(2*(BUTT_H+ELEM_GAP))) W BUTT_H + textalign ALIGN_CENTER + textvalign VALIGN_CENTER + forecolor 1 1 1 1 + visible MENU_TRUE + action + { + play "sound/misc/menu1.wav"; + exec browseScreenShots + } + } + + itemDef + { + text "OK" + type ITEM_TYPE_BUTTON + textscale .25 + style WINDOW_STYLE_EMPTY + rect (W-BUTT_W) (H-BUTT_H) BUTT_W BUTT_H + textalign ALIGN_CENTER + textvalign VALIGN_CENTER + forecolor 1 1 1 1 + visible MENU_TRUE + action + { + play "sound/misc/menu1.wav"; + close browse_folders + } + } + } +} diff --git a/assets/ui/help.txt b/assets/ui/help.txt new file mode 100644 index 0000000..bd4c6a3 --- /dev/null +++ b/assets/ui/help.txt @@ -0,0 +1,135 @@ +{ + "^3Welcome^7" + { + "In this section you will find a summary of major changes since 1.1. It is " + "not a complete list. In general, all things have been tweaked for balance in " + "some way.\n\n" + "We hope you enjoy playing. Your support gives us valuable data and " + "feedback as we work to bring you Tremulous 1.2. Please report all bugs. Thank " + "you." + } + "Alien Healing" + { + "The most important change for Alien players to know is that their healing " + "rate is slower away from creep. To counter this, healing near Boosters " + "and Basilisks is greatly accelerated.\n\n" + "Watch the health cross icon on your " + "HUD to see what your healing rate is. If the icon glows, you are on " + "creep. If you are near a booster or basilisk, you will see two " + "(2X healing) or four (3X healing) barbs around the health cross." + } + "Build-point Changes" + { + "Structures destroyed by enemy players will not immediately become available " + "for reuse, but instead enter a queue. Build points will gradually leave the " + "queue to become available again, at a rate proportional to the amount of " + "points in the queue.\n\n Repeaters can be built at any stage and come with 20 " + "BP that can only be used nearby to facilitate making small outposts. Aliens " + "do not have a structure that provides additional buildpoints, but they have 150 " + "overall BP to compensate." + } + "Marked Deconstruction" + { + "The deconstruction method has changed. Buildables are no longer instantly " + "deconstructed. Instead, a deconstruct mark appears on the health bar. " + "Go ahead and build a new buildable somewhere else and the old one will " + "be removed automatically. Buildables that are about to be removed by " + "constructing the selected buildable glow red." + } + "Alien Buildables" + { + "Nearly useless in 1.1, Barricades now have more health, are cheaper to " + "build, and will shrink to allow Aliens to pass over them. Acid tubes " + "will fire from behind barricades, providing a formidable defense. " + "Experiment with blocking off hallways and building staged defenses, but " + "keep in mind that low ceilings will prevent Tyrants from returning inside " + "the base. Hives are also much improved to become worth building in stage 3." + } + "Human Buildables" + { + "Turrets now have a small spin up delay before firing, but they have " + "increased range and damage output.\n\n" + "To protect against small Aliens getting inside " + "the base, build Tesla Generators at Stage 3. Tesla Generators no longer " + "require the Defense Computer to function. Instead, the Defense Computer " + "will automatically repair Human buildables. Tesla Generators can fire " + "over turrets. " + } + "Human Weapons" + { + "Most of the human projeciles have a small volume now, making them more " + "effective against smaller targets.\n" + "The Lucifer Cannon projectile can be fired faster but now takes longer " + "to charge. You will be able to hear your teammates overcharge " + "their Lucifer Cannon.\n" + "The Flamer projectile now gains more of the velocity of its wielder, " + "making it easier to chase down aliens without burning yourself to a " + "crisp. Other weapons also have smaller changes." + } + "Lag Correction" + { + "While the Tremulous implementation of Neil Toronto's unlagged is " + "becoming widely accepted, we also implement client-side improvements " + "not possible in 1.1 servers. For those who insist on leading their " + "attacks, setting cg_unlagged to 0 will disable backward reconcilliation " + "on your hitscan weapons." + } + "Sprint" + { + "The sprint bind has changed from \"boost\" to \"+button8\"; you can bind it " + "in the options menu or in the console (\\bind shift +button8). Now, instead " + "of tapping the button while moving to start sprinting, just hold it down " + "and let go to stop. Alternately, you can change this to a toggle behavior " + "with cg_sprintToggle. \n\n" + } + "Dodge" + { + "Humans also have a new movement ability: dodge. You can bind it in the " + "options menu or the console (\\bind shift +button6). When strafing or " + "walking backwards, press the dodge key to make a quick, low jump. You " + "can bind this to the same key as sprint in the console with \\bind shift " + "\"+button8; +button6\"" + } + "Headshots" + { + "Headshots on unarmored humans only cause 150% damage. Battlesuit and " + "helmet protection have been reduced so headshot damage remains the same." + } + "Dretch" + { + "Dretches are slightly faster and can now damage any human structure while it " + "is still building, but can no longer damage turrets and teslas that " + "have been completed." + } + "Basilisk" + { + "Basilisks provide regeneration boosting auras to nearby teammates: 2x " + "from regular and 3x from advanced basilisks. Their footsteps are also " + "silent for greater stealth." + } + "Marauder" + { + "The Adv. Marauder's electric shock damage is no longer split between its " + "targets, making it more effective against large groups of humans and " + "buildables. Targets are now chosen slightly differently: instead of " + "each new chain section originating from the previous target, it will " + "originate from the first target." + } + "Dragoon" + { + "Advanced dragoons are now available at stage 2. Both dragoons have the " + "range of their chomp attacks lowered, but their pounce attacks are much " + "more useful. Try to use pounce to pin a human to the wall before chomping." + } + "Tyrant" + { + "The Tyrant is now a weaker class as its health has been lowered and " + "turret damage is greater. To counter this, Tyrants can charge for longer " + "periods of time, hit targets multiple times in a single charge, " + "and crush any Humans they land on top of. Trample charge does not " + "instantly release when full but can be held for two seconds. Trample " + "attacks on a human pinned against a wall are VERY powerful. Use this to " + "your advantage. The Tyrant's healing aura has been removed; find a " + "booster or a basilisk to heal faster." + } +} diff --git a/assets/ui/hud.txt b/assets/ui/hud.txt new file mode 100644 index 0000000..be9fa8b --- /dev/null +++ b/assets/ui/hud.txt @@ -0,0 +1,12 @@ +// hud menu defs +// +{ + loadMenu { "ui/tremulous_human_hud.menu" } + loadMenu { "ui/tremulous_alien_builder_hud.menu" } + loadMenu { "ui/tremulous_alien_general_hud.menu" } + loadMenu { "ui/tremulous_default_hud.menu" } + loadMenu { "ui/tremulous_spectator_hud.menu" } + + loadMenu { "ui/teamscore.menu" } + loadMenu { "ui/loading.menu" } +} diff --git a/assets/ui/ingame.menu b/assets/ui/ingame.menu new file mode 100644 index 0000000..808287e --- /dev/null +++ b/assets/ui/ingame.menu @@ -0,0 +1,140 @@ +#include "ui/menudef.h" +{ + +#define BUTT_BAR_X 25 +#define BUTT_BAR_Y 0 +#define BUTT_BAR_W 250 +#define BUTT_BAR_H 56 +#define BUTT_W (BUTT_BAR_W/4) +#define BUTT_H BUTT_BAR_H +#define BUTT_TEXT_S 20 + + assetGlobalDef + { + font "fonts/font" 26 // font + smallFont "fonts/smallfont" 20 // font + bigFont "fonts/bigfont" 34 // 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" + style WINDOW_STYLE_FILLED + visible MENU_FALSE + fullScreen 0 + outOfBoundsClick // this closes the window if it gets a click out of the rectangle + rect 0 0 1280 56 + focusColor 1 .75 0 1 + disableColor .5 .5 .5 1 + backColor 0 0 0 1 + aspectBias ALIGN_LEFT + + onEsc + { + close ingame; + } + + itemDef + { + name splashmodel + rect 0 -10 640 66 + type ITEM_TYPE_MODEL + style WINDOW_STYLE_FILLED + asset_model "models/splash/splash_screen.md3" + model_fovx 32.0 + model_fovy 3.8 + model_angle 180 + visible MENU_TRUE + decoration + backcolor 0 0 0 1 + } + + itemdef + { + name game + text "Game" + rect BUTT_BAR_X BUTT_BAR_Y BUTT_W BUTT_H + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_EMPTY + textalign ALIGN_CENTER + textvalign VALIGN_CENTER + textscale .4 + forecolor 1 1 1 1 + visible MENU_TRUE + action + { + play "sound/misc/menu1.wav"; + open ingame_game + } + } + + itemDef + { + name options + text "Options" + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_EMPTY + rect (BUTT_BAR_X+BUTT_W) BUTT_BAR_Y BUTT_W BUTT_H + textalign ALIGN_CENTER + textvalign VALIGN_CENTER + textscale .4 + forecolor 1 1 1 1 + visible MENU_TRUE + action + { + play "sound/misc/menu1.wav"; + open ingame_options + } + } + + itemDef + { + name leave + text "Help" + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_EMPTY + rect (BUTT_BAR_X+(2*BUTT_W)) BUTT_BAR_Y BUTT_W BUTT_H + textalign ALIGN_CENTER + textvalign VALIGN_CENTER + textscale .4 + forecolor 1 1 1 1 + visible MENU_TRUE + action + { + play "sound/misc/menu1.wav"; + open ingame_help + } + } + + itemDef + { + name leave + text "Exit" + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_EMPTY + rect (BUTT_BAR_X+(3*BUTT_W)) BUTT_BAR_Y BUTT_W BUTT_H + textalign ALIGN_CENTER + textvalign VALIGN_CENTER + textscale .4 + forecolor 1 1 1 1 + visible MENU_TRUE + action + { + play "sound/misc/menu1.wav"; + open ingame_leave + } + } + } +} diff --git a/assets/ui/ingame.txt b/assets/ui/ingame.txt new file mode 100644 index 0000000..2caf449 --- /dev/null +++ b/assets/ui/ingame.txt @@ -0,0 +1,9 @@ +// menu defs +// +{ + loadMenu { "ui/ingame.menu" } + loadMenu { "ui/ingame_game.menu" } + loadMenu { "ui/ingame_options.menu" } + loadMenu { "ui/ingame_leave.menu" } + loadMenu { "ui/ingame_help.menu" } +} diff --git a/assets/ui/ingame_game.menu b/assets/ui/ingame_game.menu new file mode 100644 index 0000000..d7d7dd6 --- /dev/null +++ b/assets/ui/ingame_game.menu @@ -0,0 +1,862 @@ +#include "ui/menudef.h" + +{ + \\ INGAME GAME BOX \\ + +#define W 320 +#define H 310 +#define X 10 +#define Y 60 +#define BORDER 10 + +#define TOPBUTT_W 80 +#define TOPBUTT_H 30 + +#define SIDEBUTT_W 50 +#define SIDEBUTT_H 25 + +#define MAP_X (SIDEBUTT_W+BORDER) +#define MAP_Y ((2*BORDER)+TOPBUTT_H) +#define MAP_W 124 +#define MAP_H 93 +#define MAPLIST_X MAP_X +#define MAPLIST_Y ((3*BORDER)+TOPBUTT_H+MAP_H) +#define MAPLIST_W (W-((2*BORDER)+SIDEBUTT_W)) +#define MAPLIST_H (H-((4*BORDER)+MAP_H+TOPBUTT_H)) +#define MAPBUTT_X (MAP_X+MAP_W+BORDER) +#define MAPBUTT_Y MAP_Y +#define MAPBUTT_W (W-(MAPBUTT_X+BORDER)) +#define MAPBUTT_H 20 + +#define PBUTT_X MAP_X +#define PBUTT_Y (H-((2*PBUTT_H)+BORDER)) +#define PBUTT_W (W-((2*BORDER)+SIDEBUTT_W)) +#define PBUTT_H 45 +#define PLIST_X PBUTT_X +#define PLIST_Y ((2*BORDER)+TOPBUTT_H) +#define PLIST_W PBUTT_W +#define PLIST_H ((H-((4*BORDER)+(2*PBUTT_H)+TOPBUTT_H))) + +#define PLAYER_C 0.7 +#define IGN_C 0.15 +#define IGNY_C 0.15 +#define IGNHEAD_H 15 +#define IGNHEAD_Y ((2*BORDER)+TOPBUTT_H) +#define IGNBUTT_W ((W-(2*BORDER))/2) +#define IGNBUTT_H 25 +#define IGNBUTT_X BORDER +#define IGNBUTT_Y (H-(BORDER+IGNBUTT_H)) +#define IGNORE_W (W-(2*BORDER)) +#define IGNORE_W2 ((W-(2*BORDER))-15) +#define IGNORE_H (H-((4*BORDER)+TOPBUTT_H+IGNHEAD_H+IGNBUTT_H)) +#define IGNORE_X BORDER +#define IGNORE_Y ((2*BORDER)+TOPBUTT_H+IGNHEAD_H) +#define IGNORE_TOFF 5 + +#define INFO_Y ((2*BORDER)+TOPBUTT_H+10) +#define INFOELEM_H 15 +#define INFO_OFF (0-(W-90)) + + menuDef + { + name "ingame_game" + visible MENU_FALSE + fullscreen MENU_FALSE + outOfBoundsClick // this closes the window if it gets a click out of the rectangle + rect X Y W H + focusColor 1 .75 0 1 + aspectBias ALIGN_LEFT + onopen + { + uiScript InitIgnoreList; + uiScript loadArenas; + uiScript loadServerInfo; + hide gameGrp; + show vote; + show mapvote; + + setitemcolor voteBtn forecolor 0.2 0.2 0.2 1.0; + setitemcolor ignoreBtn forecolor 1.0 1.0 1.0 1.0; + setitemcolor infoBtn forecolor 1.0 1.0 1.0 1.0 + } + + itemDef + { + name window + rect 0 0 W H + style WINDOW_STYLE_FILLED + backcolor 0 0 0 1 + visible MENU_TRUE + decoration + + border WINDOW_BORDER_FULL + borderSize 1.0 + borderColor 0.5 0.5 0.5 1 + } + + //Section menus + itemDef + { + name voteBtn + text "Vote" + group menuGrp + style WINDOW_STYLE_EMPTY + rect (W-((3*TOPBUTT_W)+BORDER)) BORDER TOPBUTT_W TOPBUTT_H + type ITEM_TYPE_BUTTON + textalign ALIGN_CENTER + textvalign VALIGN_CENTER + textscale .35 + forecolor 1 1 1 1 + visible MENU_TRUE + action + { + play "sound/misc/menu1.wav"; + hide gameGrp; + show vote; + show mapvote; + + setitemcolor infoBtn forecolor 1.0 1.0 1.0 1.0; + setitemcolor voteBtn forecolor 0.2 0.2 0.2 1.0; + setitemcolor ignoreBtn forecolor 1.0 1.0 1.0 1.0 + } + } + + itemDef + { + name ignoreBtn + text "Ignore" + group menuGrp + style WINDOW_STYLE_EMPTY + rect (W-((2*TOPBUTT_W)+BORDER)) BORDER TOPBUTT_W TOPBUTT_H + type ITEM_TYPE_BUTTON + textalign ALIGN_CENTER + textvalign VALIGN_CENTER + textscale .35 + forecolor 1 1 1 1 + visible MENU_TRUE + action + { + play "sound/misc/menu1.wav"; + hide gameGrp; + show ignore; + + setitemcolor infoBtn forecolor 1.0 1.0 1.0 1.0; + setitemcolor voteBtn forecolor 1.0 1.0 1.0 1.0; + setitemcolor ignoreBtn forecolor 0.2 0.2 0.2 1.0 + } + } + + itemDef + { + name infoBtn + text "Info" + group menuGrp + style WINDOW_STYLE_EMPTY + rect (W-((1*TOPBUTT_W)+BORDER)) BORDER TOPBUTT_W TOPBUTT_H + type ITEM_TYPE_BUTTON + textalign ALIGN_CENTER + textvalign VALIGN_CENTER + textscale .35 + forecolor 1 1 1 1 + visible MENU_TRUE + action + { + play "sound/misc/menu1.wav"; + hide gameGrp; + show info; + + setitemcolor infoBtn forecolor 0.2 0.2 0.2 1.0; + setitemcolor voteBtn forecolor 1.0 1.0 1.0 1.0; + setitemcolor ignoreBtn forecolor 1.0 1.0 1.0 1.0 + } + } + + +//////// VOTE + + //Vote menu + itemDef + { + name vote + text "Map" + group gameGrp + style WINDOW_STYLE_EMPTY + rect 0 ((2*BORDER)+TOPBUTT_H) SIDEBUTT_W SIDEBUTT_H + type ITEM_TYPE_BUTTON + textalign ALIGN_RIGHT + textvalign VALIGN_CENTER + textscale .25 + forecolor 1 1 1 1 + visible MENU_FALSE + action + { + play "sound/misc/menu1.wav"; + hide gameGrp; + show mapvote; + show vote; + } + } + + itemDef + { + name vote + text "Players" + group gameGrp + style WINDOW_STYLE_EMPTY + rect 0 ((2*BORDER)+TOPBUTT_H+SIDEBUTT_H) SIDEBUTT_W SIDEBUTT_H + type ITEM_TYPE_BUTTON + textalign ALIGN_RIGHT + textvalign VALIGN_CENTER + textscale .25 + forecolor 1 1 1 1 + visible MENU_FALSE + action + { + play "sound/misc/menu1.wav"; + hide gameGrp; + show playervote; + show reasonfield; + show vote; + } + } + + itemDef + { + name vote + text "Team" + group gameGrp + style WINDOW_STYLE_EMPTY + rect 0 ((2*BORDER)+TOPBUTT_H+(2*SIDEBUTT_H)) SIDEBUTT_W SIDEBUTT_H + type ITEM_TYPE_BUTTON + textalign ALIGN_RIGHT + textvalign VALIGN_CENTER + textscale .25 + forecolor 1 1 1 1 + visible MENU_FALSE + action + { + play "sound/misc/menu1.wav"; + hide gameGrp; + show teamvote; + show reasonfield; + show vote; + } + } + + itemDef + { + name reasonfield + group gameGrp + type ITEM_TYPE_EDITFIELD + style WINDOW_STYLE_EMPTY + text "Reason:" + cvar "ui_reason" + maxChars 50 + rect PBUTT_X (PBUTT_Y+PBUTT_H) PBUTT_W PBUTT_H + textalign ALIGN_LEFT + textvalign VALIGN_CENTER + textscale .25 + outlinecolor .2 .2 .2 .5 + backcolor 0 0 0 0 + forecolor 1 1 1 1 + border WINDOW_BORDER_NONE + bordercolor 0 0 0 0 + visible MENU_FALSE + } + +///// Map Vote + itemDef + { + name mapvote + group gameGrp + style WINDOW_STYLE_EMPTY + ownerdraw UI_SELECTEDMAPPREVIEW + rect MAP_X MAP_Y MAP_W MAP_H + border WINDOW_BORDER_FULL + bordercolor .5 .5 .5 .5 + visible MENU_FALSE + } + + itemDef + { + name mapvote + group gameGrp + rect MAPLIST_X MAPLIST_Y MAPLIST_W MAPLIST_H + type ITEM_TYPE_LISTBOX + style WINDOW_STYLE_EMPTY + elementwidth 120 + elementheight 15 + textscale .225 + elementtype LISTBOX_TEXT + feeder FEEDER_MAPS + border WINDOW_BORDER_FULL + bordercolor 0.5 0.5 0.5 0.5 + forecolor 1 1 1 1 + backcolor 0.2 0.2 0.2 1 + outlinecolor 0.1 0.1 0.1 0.5 + visible MENU_FALSE + doubleclick + { + play "sound/misc/menu1.wav"; + uiScript voteMap; + uiScript closeingame + } + } + + itemDef + { + name mapvote + group gameGrp + text "Load Selected Map" + type ITEM_TYPE_BUTTON + textscale .25 + rect MAPBUTT_X MAPBUTT_Y MAPBUTT_W MAPBUTT_H + textalign ALIGN_LEFT + textvalign VALIGN_CENTER + forecolor 1 1 1 1 + visible MENU_FALSE + action + { + play "sound/misc/menu1.wav"; + uiScript voteMap; + uiScript closeingame + } + } + + itemDef + { + name mapvote + group gameGrp + text "Load Selected Map Next" + type ITEM_TYPE_BUTTON + textscale .25 + rect MAPBUTT_X (MAPBUTT_Y+MAPBUTT_H) MAPBUTT_W MAPBUTT_H + textalign ALIGN_LEFT + textvalign VALIGN_CENTER + forecolor 1 1 1 1 + visible MENU_FALSE + action + { + play "sound/misc/menu1.wav"; + uiScript voteNextMap; + uiScript closeingame + } + } + + itemDef + { + name mapvote + group gameGrp + text "Restart Current Map" + type ITEM_TYPE_BUTTON + textscale .25 + rect MAPBUTT_X (MAPBUTT_Y+(2*MAPBUTT_H)) MAPBUTT_W MAPBUTT_H + textalign ALIGN_LEFT + textvalign VALIGN_CENTER + forecolor 1 1 1 1 + visible MENU_FALSE + action + { + play "sound/misc/menu1.wav"; + exec "cmd callvote map_restart"; + uiScript closeingame + } + } + + itemDef + { + name mapvote + group gameGrp + text "Begin Sudden Death" + type ITEM_TYPE_BUTTON + textscale .25 + rect MAPBUTT_X (MAPBUTT_Y+(3*MAPBUTT_H)) MAPBUTT_W MAPBUTT_H + textalign ALIGN_LEFT + textvalign VALIGN_CENTER + forecolor 1 1 1 1 + visible MENU_FALSE + action + { + play "sound/misc/menu1.wav"; + exec "cmd callvote sudden_death"; + uiScript closeingame + } + } + + itemDef + { + name mapvote + group gameGrp + text "End Match In Draw" + type ITEM_TYPE_BUTTON + textscale .25 + rect MAPBUTT_X (MAPBUTT_Y+(4*MAPBUTT_H)) MAPBUTT_W MAPBUTT_H + textalign ALIGN_LEFT + textvalign VALIGN_CENTER + forecolor 1 1 1 1 + visible MENU_FALSE + action + { + play "sound/misc/menu1.wav"; + exec "cmd callvote draw"; + uiScript closeingame + } + } + +///// Player Vote + itemDef + { + name playervote + group gameGrp + rect PLIST_X PLIST_Y PLIST_W PLIST_H + style WINDOW_STYLE_EMPTY + type ITEM_TYPE_LISTBOX + elementwidth 120 + elementheight 15 + textscale .225 + elementtype LISTBOX_TEXT + feeder FEEDER_PLAYER_LIST + border WINDOW_BORDER_FULL + bordercolor 0.5 0.5 0.5 0.5 + forecolor 1 1 1 1 + backcolor 0.2 0.2 0.2 1 + outlinecolor 0.1 0.1 0.1 0.5 + visible MENU_FALSE + } + + itemDef + { + name playervote + group gameGrp + text "Mute Player" + type ITEM_TYPE_BUTTON + textscale .25 + rect PBUTT_X PBUTT_Y (PBUTT_W/2) PBUTT_H + textalign ALIGN_CENTER + textvalign VALIGN_CENTER + forecolor 1 1 1 1 + visible MENU_FALSE + action + { + play "sound/misc/menu1.wav"; + uiScript voteMute; + uiScript closeingame + } + } + + itemDef + { + name playervote + group gameGrp + text "Un-Mute Player" + type ITEM_TYPE_BUTTON + textscale .25 + rect (PBUTT_X+(PBUTT_W/2)) PBUTT_Y (PBUTT_W/2) PBUTT_H + textalign ALIGN_CENTER + textvalign VALIGN_CENTER + forecolor 1 1 1 1 + visible MENU_FALSE + action + { + play "sound/misc/menu1.wav"; + uiScript voteUnMute; + uiScript closeingame + } + } + + itemDef + { + name playervote + group gameGrp + text "Kick Player" + type ITEM_TYPE_BUTTON + textscale .25 + rect PBUTT_X (PBUTT_Y+(PBUTT_H/2)) PBUTT_W PBUTT_H + textalign ALIGN_CENTER + textvalign VALIGN_CENTER + forecolor 1 1 1 1 + visible MENU_FALSE + action + { + play "sound/misc/menu1.wav"; + uiScript voteKick; + uiScript closeingame + } + } + + +///// Team Vote + itemDef + { + name teamvote + group gameGrp + rect PLIST_X PLIST_Y PLIST_W PLIST_H + style WINDOW_STYLE_EMPTY + type ITEM_TYPE_LISTBOX + elementwidth 120 + elementheight 15 + textscale .225 + elementtype LISTBOX_TEXT + feeder FEEDER_TEAM_LIST + border WINDOW_BORDER_FULL + bordercolor 0.5 0.5 0.5 0.5 + forecolor 1 1 1 1 + backcolor 0.2 0.2 0.2 1 + outlinecolor 0.1 0.1 0.1 0.5 + visible MENU_FALSE + } + + itemDef + { + name teamvote + group gameGrp + text "Kick Teammate" + type ITEM_TYPE_BUTTON + textscale .25 + rect PBUTT_X PBUTT_Y (PBUTT_W/2) PBUTT_H + textalign ALIGN_CENTER + textvalign VALIGN_CENTER + forecolor 1 1 1 1 + visible MENU_FALSE + action + { + play "sound/misc/menu1.wav"; + uiScript voteTeamKick; + uiScript closeingame + } + } + + itemDef + { + name teamvote + group gameGrp + text "Deny Building For Teammate" + type ITEM_TYPE_BUTTON + textscale .25 + rect (PBUTT_X+(PBUTT_W/2)) PBUTT_Y (PBUTT_W/2) PBUTT_H + textalign ALIGN_CENTER + textvalign VALIGN_CENTER + forecolor 1 1 1 1 + visible MENU_FALSE + action + { + play "sound/misc/menu1.wav"; + uiScript voteTeamDenyBuild; + uiScript closeingame + } + } + + itemDef + { + name teamvote + group gameGrp + text "Allow Building For Teammate" + type ITEM_TYPE_BUTTON + textscale .25 + rect 110 215 150 20 + rect PBUTT_X (PBUTT_Y+(PBUTT_H/2)) (PBUTT_W/2) PBUTT_H + textalign ALIGN_CENTER + textvalign VALIGN_CENTER + forecolor 1 1 1 1 + visible MENU_FALSE + action + { + play "sound/misc/menu1.wav"; + uiScript voteTeamAllowBuild; + uiScript closeingame + } + } + + itemDef + { + name teamvote + group gameGrp + text "Admit Defeat" + type ITEM_TYPE_BUTTON + textscale .25 + rect (PBUTT_X+(PBUTT_W/2)) (PBUTT_Y+(PBUTT_H/2)) (PBUTT_W/2) PBUTT_H + textalign ALIGN_CENTER + textvalign VALIGN_CENTER + forecolor 1 1 1 1 + visible MENU_FALSE + action + { + play "sound/misc/menu1.wav"; + exec "cmd callteamvote admitdefeat"; + uiScript closeingame + } + } + +//////// IGNORE + itemDef + { + name ignore + group gameGrp + rect IGNORE_X IGNHEAD_Y (PLAYER_C*IGNORE_W2) IGNHEAD_H + text "Player Name" + textalign ALIGN_LEFT + textvalign VALIGN_CENTER + textalignx IGNORE_TOFF + visible MENU_FALSE + type ITEM_TYPE_TEXT + textscale .225 + } + itemDef + { + name ignore + group gameGrp + rect (IGNORE_X+(PLAYER_C*IGNORE_W2)) IGNHEAD_Y (IGN_C*IGNORE_W2) IGNHEAD_H + text "Ignored" + textalign ALIGN_CENTER + textvalign VALIGN_CENTER + visible MENU_FALSE + type ITEM_TYPE_TEXT + textscale .225 + } + itemDef + { + name ignore + group gameGrp + rect (IGNORE_X+((PLAYER_C+IGN_C)*IGNORE_W2)) IGNHEAD_Y (IGNY_C*IGNORE_W2) IGNHEAD_H + text "Ignoring You" + textalign ALIGN_CENTER + textvalign VALIGN_CENTER + visible MENU_FALSE + type ITEM_TYPE_TEXT + textscale .225 + } + itemDef + { + name ignore + group gameGrp + rect IGNORE_X IGNORE_Y IGNORE_W IGNORE_H + type ITEM_TYPE_LISTBOX + style WINDOW_STYLE_EMPTY + elementwidth 120 + elementheight 16 + textscale .225 + border WINDOW_BORDER_FULL + bordersize 1 + bordercolor .5 .5 .5 1 + forecolor 1 1 1 1 + backcolor 0.2 0.2 0.2 1 + outlinecolor 0.1 0.1 0.1 0.5 + elementtype LISTBOX_TEXT + feeder FEEDER_IGNORE_LIST + visible MENU_FALSE + columns 3 + IGNORE_TOFF ((PLAYER_C*IGNORE_W)-(3*IGNORE_TOFF)) ALIGN_LEFT + (IGNORE_TOFF+((PLAYER_C)*IGNORE_W)) ((IGN_C*IGNORE_W)-(3*IGNORE_TOFF)) ALIGN_CENTER + (IGNORE_TOFF+((PLAYER_C+IGN_C)*IGNORE_W)) ((IGNY_C*IGNORE_W)-(3*IGNORE_TOFF)) ALIGN_CENTER + doubleClick + { + play "sound/misc/menu1.wav"; + uiScript ToggleIgnore + } + } + + itemDef + { + name ignore + text "Ignore Player" + group gameGrp + style WINDOW_STYLE_EMPTY + rect IGNBUTT_X IGNBUTT_Y IGNBUTT_W IGNBUTT_H + type ITEM_TYPE_BUTTON + textalign ALIGN_CENTER + textvalign VALIGN_CENTER + textscale .25 + forecolor 1 1 1 1 + visible MENU_FALSE + action + { + play "sound/misc/menu1.wav"; + uiScript IgnorePlayer + } + } + + itemDef + { + name ignore + text "Stop Ignoring Player" + group gameGrp + style WINDOW_STYLE_EMPTY + rect (IGNBUTT_X+IGNBUTT_W) IGNBUTT_Y IGNBUTT_W IGNBUTT_H + type ITEM_TYPE_BUTTON + textalign ALIGN_CENTER + textvalign VALIGN_CENTER + textscale .25 + forecolor 1 1 1 1 + visible MENU_FALSE + action + { + play "sound/misc/menu1.wav"; + uiScript UnIgnorePlayer + } + } + +//////// INFO + + itemDef + { + name info + group gameGrp + rect 0 (INFO_Y+(0*INFOELEM_H)) W INFOELEM_H + type ITEM_TYPE_EDITFIELD + style WINDOW_STYLE_EMPTY + text "Server Name:" + cvar ui_serverinfo_hostname + textalign ALIGN_RIGHT + textvalign VALIGN_CENTER + textalignx INFO_OFF + textscale .25 + forecolor 1 1 1 1 + visible MENU_FALSE + decoration + } + + itemDef + { + name info + group gameGrp + rect 0 (INFO_Y+(1*INFOELEM_H)) W INFOELEM_H + type ITEM_TYPE_EDITFIELD + style WINDOW_STYLE_EMPTY + text "Time Limit:" + cvar ui_serverinfo_timelimit + textalign ALIGN_RIGHT + textvalign VALIGN_CENTER + textalignx INFO_OFF + textscale .25 + forecolor 1 1 1 1 + visible MENU_FALSE + decoration + } + + itemDef + { + name info + group gameGrp + rect 0 (INFO_Y+(2*INFOELEM_H)) W INFOELEM_H + type ITEM_TYPE_EDITFIELD + style WINDOW_STYLE_EMPTY + text "Sudden Death Time:" + cvar ui_serverinfo_sd + textalign ALIGN_RIGHT + textvalign VALIGN_CENTER + textalignx INFO_OFF + textscale .25 + forecolor 1 1 1 1 + visible MENU_FALSE + decoration + } + + itemDef + { + name info + group gameGrp + rect 0 (INFO_Y+(3*INFOELEM_H)) W INFOELEM_H + type ITEM_TYPE_EDITFIELD + style WINDOW_STYLE_EMPTY + text "Max Clients:" + cvar ui_serverinfo_maxclients + textalign ALIGN_RIGHT + textvalign VALIGN_CENTER + textalignx INFO_OFF + textscale .25 + forecolor 1 1 1 1 + visible MENU_FALSE + decoration + } + + itemDef + { + name info + group gameGrp + rect 0 (INFO_Y+(4*INFOELEM_H)) W INFOELEM_H + type ITEM_TYPE_EDITFIELD + style WINDOW_STYLE_EMPTY + text "Map Name:" + cvar ui_serverinfo_mapname + textalign ALIGN_RIGHT + textvalign VALIGN_CENTER + textalignx INFO_OFF + textscale .25 + forecolor 1 1 1 1 + visible MENU_FALSE + decoration + } + + itemDef + { + name info + group gameGrp + rect 0 (INFO_Y+(5*INFOELEM_H)) W INFOELEM_H + type ITEM_TYPE_YESNO + style WINDOW_STYLE_EMPTY + text "Lag Correction:" + cvar ui_serverinfo_unlagged + textalign ALIGN_RIGHT + textvalign VALIGN_CENTER + textalignx INFO_OFF + textscale .25 + forecolor 1 1 1 1 + visible MENU_FALSE + decoration + } + + itemDef + { + name info + group gameGrp + rect 0 (INFO_Y+(6*INFOELEM_H)) W INFOELEM_H + type ITEM_TYPE_YESNO + style WINDOW_STYLE_EMPTY + text "Friendly Fire:" + textalign ALIGN_RIGHT + cvar ui_serverinfo_friendlyFire + textvalign VALIGN_CENTER + textalignx INFO_OFF + textscale .25 + forecolor 1 1 1 1 + visible MENU_FALSE + decoration + } + + itemDef + { + name info + group gameGrp + rect 0 (INFO_Y+(7*INFOELEM_H)) W INFOELEM_H + type ITEM_TYPE_YESNO + style WINDOW_STYLE_EMPTY + text "Buildable Friendly Fire:" + cvar ui_serverinfo_friendlyBuildableFire + textalign ALIGN_RIGHT + textvalign VALIGN_CENTER + textalignx INFO_OFF + textscale .25 + forecolor 1 1 1 1 + visible MENU_FALSE + decoration + } + + itemDef + { + name info + group gameGrp + rect 0 (INFO_Y+(8*INFOELEM_H)) W INFOELEM_H + type ITEM_TYPE_EDITFIELD + style WINDOW_STYLE_EMPTY + text "Version:" + cvar ui_serverinfo_version + textalign ALIGN_RIGHT + textvalign VALIGN_CENTER + textalignx INFO_OFF + textscale .25 + forecolor 1 1 1 1 + visible MENU_FALSE + decoration + } + } +} diff --git a/assets/ui/ingame_help.menu b/assets/ui/ingame_help.menu new file mode 100644 index 0000000..4c8065b --- /dev/null +++ b/assets/ui/ingame_help.menu @@ -0,0 +1,88 @@ +#include "ui/menudef.h" + +{ + +#define W 420 +#define H 290 +#define X 10 +#define Y 60 +#define BORDER 10 + +#define LIST_W 140 +#define LIST_H (H-(2*BORDER)) +#define LIST_X BORDER +#define LIST_Y BORDER + +#define INFO_W (W-((3*BORDER)+LIST_W)) +#define INFO_H (H-(2*BORDER)) +#define INFO_X ((2*BORDER)+LIST_W) +#define INFO_Y BORDER +#define INFO_TOFF 6 + + menuDef + { + name "ingame_help" + visible MENU_FALSE + fullscreen MENU_FALSE + outOfBoundsClick // this closes the window if it gets a click out of the rectangle + rect X Y W H + focusColor 1 .75 0 1 + aspectBias ALIGN_LEFT + onOpen { + setFocus list; + } + + itemDef + { + name window + rect 0 0 W H + style WINDOW_STYLE_FILLED + backcolor 0 0 0 1 + visible MENU_TRUE + decoration + + border WINDOW_BORDER_FULL + borderSize 1.0 + borderColor 0.5 0.5 0.5 1 + } + + itemDef + { + name "list" + rect LIST_X LIST_Y LIST_W LIST_H + type ITEM_TYPE_LISTBOX + style WINDOW_STYLE_EMPTY + elementwidth 120 + elementheight 20 + textscale .33 + elementtype LISTBOX_TEXT + feeder FEEDER_HELP_LIST + border WINDOW_BORDER_FULL + bordercolor 0.5 0.5 0.5 0.5 + forecolor 1 1 1 1 + backcolor 0.2 0.2 0.2 1 + outlinecolor 0.1 0.1 0.1 0.5 + visible MENU_TRUE + } + + itemDef + { + name infopane + ownerdraw UI_HELPINFOPANE + textstyle ITEM_TEXTSTYLE_NORMAL + style WINDOW_STYLE_EMPTY + rect INFO_X INFO_Y INFO_W INFO_H + textscale .33 + textalign ALIGN_LEFT + textvalign VALIGN_TOP + textalignx INFO_TOFF + textaligny INFO_TOFF + border WINDOW_BORDER_FULL + bordercolor 0.5 0.5 0.5 0.5 + forecolor 1 1 1 1 + backcolor 0.2 0.2 0.2 1 + visible MENU_TRUE + decoration + } + } +} diff --git a/assets/ui/ingame_leave.menu b/assets/ui/ingame_leave.menu new file mode 100644 index 0000000..d07e3ce --- /dev/null +++ b/assets/ui/ingame_leave.menu @@ -0,0 +1,209 @@ +#include "ui/menudef.h" + +{ + \\ INGAME_LEAVE MENU \\ + +#define X 160 +#define Y 60 +#define W 120 +#define H 100 + +#define L1_X 0 +#define L1_Y (H/6) +#define L1_W W +#define L1_H (H/3) +#define L2_X 0 +#define L2_Y (H/2) +#define L2_W W +#define L2_H (H/3) + + menuDef + { + name "ingame_leave" + visible MENU_TRUE + fullScreen 0 + outOfBoundsClick // this closes the window if it gets a click out of the rectangle + rect X Y W H + focusColor 1 .75 0 1 + aspectBias ALIGN_LEFT + onOpen + { + show grpMenu; + hide grpConfirm + } + + itemDef + { + name leave + style WINDOW_STYLE_FILLED + rect 0 0 W H + backcolor 0 0 0 1 + visible MENU_TRUE + decoration + + border WINDOW_BORDER_FULL + borderSize 1.0 + borderColor 0.5 0.5 0.5 1 + } + + itemDef + { + name leave + type ITEM_TYPE_BUTTON + text "Main Menu" + group grpMenu + style WINDOW_STYLE_EMPTY + rect L1_X L1_Y L1_W L1_H + textalign ALIGN_CENTER + textvalign VALIGN_CENTER + textscale .25 + forecolor 1 1 1 1 + visible MENU_TRUE + action + { + play "sound/misc/menu1.wav"; + hide grpMenu; + show leaveConfirm + } + } + + itemDef + { + name leave + group grpMenu + type ITEM_TYPE_BUTTON + text "Quit" + style WINDOW_STYLE_EMPTY + rect L2_X L2_Y L2_W L2_H + textalign ALIGN_CENTER + textvalign VALIGN_CENTER + textscale .25 + forecolor 1 1 1 1 + visible MENU_TRUE + action + { + play "sound/misc/menu1.wav"; + hide grpMenu; + show quitConfirm + } + } + + + // CONFIRMS // + + + itemDef + { + name leaveConfirm + type ITEM_TYPE_TEXT + text "Return To Main Menu?" + group grpConfirm + style WINDOW_STYLE_EMPTY + rect L1_X L1_Y L1_W L1_H + textalign ALIGN_CENTER + textvalign VALIGN_CENTER + textscale .25 + decoration + forecolor 1 1 1 1 + visible MENU_TRUE + } + + itemDef + { + name leaveConfirm + text "Yes" + group grpConfirm + type ITEM_TYPE_BUTTON + textscale .25 + style WINDOW_STYLE_EMPTY + rect L2_X L2_Y (L2_W/2) L2_H + textalign ALIGN_CENTER + textvalign VALIGN_CENTER + forecolor 1 1 1 1 + visible MENU_TRUE + action + { + play "sound/misc/menu1.wav"; + uiScript leave + } + } + + itemDef + { + name leaveConfirm + text "No" + group grpConfirm + type ITEM_TYPE_BUTTON + textscale .25 + style WINDOW_STYLE_EMPTY + rect (L2_X+(L2_W/2)) L2_Y (L2_W/2) L2_H + textalign ALIGN_CENTER + textvalign VALIGN_CENTER + forecolor 1 1 1 1 + visible MENU_TRUE + action + { + play "sound/misc/menu3.wav"; + hide grpConfirm; + show grpMenu + } + } + + itemDef + { + name quitConfirm + type ITEM_TYPE_TEXT + text "Want To Quit Game?" + group grpConfirm + style WINDOW_STYLE_EMPTY + rect L1_X L1_Y L1_W L1_H + textalign ALIGN_CENTER + textvalign VALIGN_CENTER + textscale .25 + forecolor 1 1 1 1 + decoration + visible MENU_TRUE + } + + itemDef + { + name quitConfirm + text "Yes" + group grpConfirm + type ITEM_TYPE_BUTTON + textscale .25 + style WINDOW_STYLE_EMPTY + rect L2_X L2_Y (L2_W/2) L2_H + textalign ALIGN_CENTER + textvalign VALIGN_CENTER + forecolor 1 1 1 1 + visible MENU_TRUE + action + { + play "sound/misc/menu1.wav"; + uiScript quit + } + } + + itemDef + { + name quitConfirm + text "No" + group grpConfirm + type ITEM_TYPE_BUTTON + textscale .25 + style WINDOW_STYLE_EMPTY + rect (L2_X+(L2_W/2)) L2_Y (L2_W/2) L2_H + textalign ALIGN_CENTER + textvalign VALIGN_CENTER + forecolor 1 1 1 1 + visible MENU_TRUE + action + { + play "sound/misc/menu3.wav"; + hide grpConfirm; + show grpMenu + } + } + } +} diff --git a/assets/ui/ingame_options.menu b/assets/ui/ingame_options.menu new file mode 100644 index 0000000..d3e7880 --- /dev/null +++ b/assets/ui/ingame_options.menu @@ -0,0 +1,2577 @@ +#include "ui/menudef.h" + +{ + \\ INGAME OPTIONS BOX \\ + +#define W 320 +#define H 290 +#define X 10 +#define Y 60 +#define BORDER 10 + +#define TOPBUTT_W ((W-(2*BORDER))/4) +#define TOPBUTT_H 30 + +#define CONTENT_X BORDER +#define CONTENT_Y ((1.5*BORDER)+TOPBUTT_H) +#define CONTENT_W (W-(2*BORDER)) +#define CONTENT_OFF (0-(CONTENT_W/2)) + +#define SIDEBUTT_W 65 +#define SIDEBUTT_H 25 +#define SCONTENT_X (SIDEBUTT_W+BORDER) +#define SCONTENT_Y CONTENT_Y +#define SCONTENT_W (W-(SIDEBUTT_W+(2*BORDER))) +#define SCONTENT_OFF (0-(SCONTENT_W/2)) + +#define RESCOMBO_OFF 8 + +#define ELEM_H 16 + + menuDef + { + name "ingame_options" + visible MENU_FALSE + fullscreen MENU_FALSE + outOfBoundsClick // this closes the window if it gets a click out of the rectangle + rect X Y W H + focusColor 1 .75 0 1 + aspectBias ALIGN_LEFT + onopen + { + hide optionsGrp; + show player; + + setitemcolor playerBtn forecolor 0.2 0.2 0.2 1.0; + setitemcolor hudBtn forecolor 1.0 1.0 1.0 1.0; + setitemcolor controlsBtn forecolor 1.0 1.0 1.0 1.0; + setitemcolor systemBtn forecolor 1.0 1.0 1.0 1.0 + } + + itemDef + { + name window + rect 0 0 W H + style WINDOW_STYLE_FILLED + backcolor 0 0 0 1 + visible MENU_TRUE + decoration + + border WINDOW_BORDER_FULL + borderSize 1.0 + borderColor 0.5 0.5 0.5 1 + } + + //Section menus + itemDef + { + name PlayerBtn + text "Player" + group menuGrp + style WINDOW_STYLE_EMPTY + rect (W-((4*TOPBUTT_W)+BORDER)) BORDER TOPBUTT_W TOPBUTT_H + type ITEM_TYPE_BUTTON + textalign ALIGN_CENTER + textvalign VALIGN_CENTER + textscale .35 + forecolor 1 1 1 1 + visible MENU_TRUE + action + { + play "sound/misc/menu1.wav"; + hide optionsGrp; + show player; + + setitemcolor playerBtn forecolor 0.2 0.2 0.2 1.0; + setitemcolor hudBtn forecolor 1.0 1.0 1.0 1.0; + setitemcolor controlsBtn forecolor 1.0 1.0 1.0 1.0; + setitemcolor systemBtn forecolor 1.0 1.0 1.0 1.0 + } + } + itemDef + { + name hudBtn + text "HUD" + group menuGrp + style WINDOW_STYLE_EMPTY + rect (W-((3*TOPBUTT_W)+BORDER)) BORDER TOPBUTT_W TOPBUTT_H + type ITEM_TYPE_BUTTON + textalign ALIGN_CENTER + textvalign VALIGN_CENTER + textscale .35 + forecolor 1 1 1 1 + visible MENU_TRUE + action + { + play "sound/misc/menu1.wav"; + hide optionsGrp; + show hud; + + setitemcolor playerBtn forecolor 1.0 1.0 1.0 1.0; + setitemcolor hudBtn forecolor 0.2 0.2 0.2 1.0; + setitemcolor controlsBtn forecolor 1.0 1.0 1.0 1.0; + setitemcolor systemBtn forecolor 1.0 1.0 1.0 1.0 + } + } + + itemDef + { + name controlsBtn + text "Controls" + group menuGrp + style WINDOW_STYLE_EMPTY + rect (W-((2*TOPBUTT_W)+BORDER)) BORDER TOPBUTT_W TOPBUTT_H + type ITEM_TYPE_BUTTON + textalign ALIGN_CENTER + textvalign VALIGN_CENTER + textscale .35 + forecolor 1 1 1 1 + visible MENU_TRUE + action + { + play "sound/misc/menu1.wav"; + hide optionsGrp; + show controls; + show look; + + setitemcolor playerBtn forecolor 1.0 1.0 1.0 1.0; + setitemcolor hudBtn forecolor 1.0 1.0 1.0 1.0; + setitemcolor controlsBtn forecolor 0.2 0.2 0.2 1.0; + setitemcolor systemBtn forecolor 1.0 1.0 1.0 1.0 + } + } + + itemDef + { + name systemBtn + text "System" + group menuGrp + style WINDOW_STYLE_EMPTY + rect (W-((1*TOPBUTT_W)+BORDER)) BORDER TOPBUTT_W TOPBUTT_H + type ITEM_TYPE_BUTTON + textalign ALIGN_CENTER + textvalign VALIGN_CENTER + textscale .35 + forecolor 1 1 1 1 + visible MENU_TRUE + action + { + play "sound/misc/menu1.wav"; + hide optionsGrp; + show system; + show ghardware; + + setitemcolor playerBtn forecolor 1.0 1.0 1.0 1.0; + setitemcolor hudBtn forecolor 1.0 1.0 1.0 1.0; + setitemcolor controlsBtn forecolor 1.0 1.0 1.0 1.0; + setitemcolor systemBtn forecolor 0.2 0.2 0.2 1.0 + } + } + +//////// PLAYER + + itemDef + { + name player + group optionsGrp + type ITEM_TYPE_EDITFIELD + style WINDOW_STYLE_EMPTY + text "Name:" + cvar "name" + maxchars 40 + rect CONTENT_X (CONTENT_Y+(0*ELEM_H)) CONTENT_W ELEM_H + textalign ALIGN_RIGHT + textvalign VALIGN_CENTER + textalignx CONTENT_OFF + textscale .25 + forecolor 1 1 1 1 + visible MENU_FALSE + } + + itemDef + { + name player + group optionsGrp + type ITEM_TYPE_YESNO + text "Taunts Sounds Off:" + cvar "cg_noTaunt" + rect CONTENT_X (CONTENT_Y+(1*ELEM_H)) CONTENT_W ELEM_H + textalign ALIGN_RIGHT + textvalign VALIGN_CENTER + textalignx CONTENT_OFF + textscale .25 + forecolor 1 1 1 1 + visible MENU_FALSE + action + { + play "sound/misc/menu1.wav"; + } + } + + itemDef + { + name player + group optionsGrp + type ITEM_TYPE_YESNO + text "Team Chats Only:" + cvar "cg_teamChatsOnly" + rect CONTENT_X (CONTENT_Y+(2*ELEM_H)) CONTENT_W ELEM_H + textalign ALIGN_RIGHT + textvalign VALIGN_CENTER + textalignx CONTENT_OFF + textscale .25 + forecolor 1 1 1 1 + visible MENU_FALSE + action + { + play "sound/misc/menu1.wav"; + } + } + + itemDef + { + name player + group optionsGrp + type ITEM_TYPE_YESNO + text "Sticky Spectate:" + cvar "cg_stickySpec" + rect CONTENT_X (CONTENT_Y+(3*ELEM_H)) CONTENT_W ELEM_H + textalign ALIGN_RIGHT + textvalign VALIGN_CENTER + textalignx CONTENT_OFF + textscale .25 + forecolor 1 1 1 1 + visible MENU_FALSE + action + { + play "sound/misc/menu1.wav"; + } + } + + itemDef + { + name player + group optionsGrp + type ITEM_TYPE_YESNO + text "Tutorial Mode:" + cvar "cg_tutorial" + rect CONTENT_X (CONTENT_Y+(4*ELEM_H)) CONTENT_W ELEM_H + textalign ALIGN_RIGHT + textvalign VALIGN_CENTER + textalignx CONTENT_OFF + textscale .25 + forecolor 1 1 1 1 + visible MENU_FALSE + action + { + play "sound/misc/menu1.wav"; + } + } + + itemDef + { + name player + group optionsGrp + type ITEM_TYPE_MULTI + text "Disable Warning Dialogs:" + cvar "cg_disableWarningDialogs" + cvarFloatList { "No" 0 "Print to Console" 1 "Yes" 2 } + rect CONTENT_X (CONTENT_Y+(5*ELEM_H)) CONTENT_W ELEM_H + textalign ALIGN_RIGHT + textvalign VALIGN_CENTER + textalignx CONTENT_OFF + textscale .25 + forecolor 1 1 1 1 + visible MENU_FALSE + action + { + play "sound/misc/menu1.wav"; + } + } + + itemDef + { + name player + group optionsGrp + type ITEM_TYPE_YESNO + text "Static Death Cam:" + cvar "cg_staticDeathCam" + rect CONTENT_X (CONTENT_Y+(6*ELEM_H)) CONTENT_W ELEM_H + textalign ALIGN_RIGHT + textvalign VALIGN_CENTER + textalignx CONTENT_OFF + textscale .25 + forecolor 1 1 1 1 + visible MENU_FALSE + action + { + play "sound/misc/menu1.wav"; + } + } + +//////// HUD + + itemDef + { + name hud + group optionsGrp + type ITEM_TYPE_MULTI + text "Show Clock:" + cvar "cg_drawClock" + cvarFloatList { "No" 0 "12 Hour" 1 "24 Hour" 2 } + rect CONTENT_X (CONTENT_Y+(0*ELEM_H)) CONTENT_W ELEM_H + textalign ALIGN_RIGHT + textvalign VALIGN_CENTER + textalignx CONTENT_OFF + textscale .25 + forecolor 1 1 1 1 + visible MENU_FALSE + action + { + play "sound/misc/menu1.wav"; + } + } + + itemDef + { + name hud + group optionsGrp + type ITEM_TYPE_MULTI + text "Show Crosshair:" + cvar "cg_drawCrosshair" + cvarFloatList { "Never" 0 "Ranged Weapons Only" 1 "Always" 2 } + rect CONTENT_X (CONTENT_Y+(1*ELEM_H)) CONTENT_W ELEM_H + textalign ALIGN_RIGHT + textvalign VALIGN_CENTER + textalignx CONTENT_OFF + textscale .25 + forecolor 1 1 1 1 + visible MENU_FALSE + action + { + play "sound/misc/menu1.wav"; + } + } + + itemDef + { + name hud + group optionsGrp + type ITEM_TYPE_MULTI + text "Crosshair Size:" + cvar "cg_crosshairSize" + cvarFloatList { "Normal" 1 "Small" 0.75 "Tiny" 0.5 "Huge" 1.25 } + rect CONTENT_X (CONTENT_Y+(2*ELEM_H)) CONTENT_W ELEM_H + textalign ALIGN_RIGHT + textvalign VALIGN_CENTER + textalignx CONTENT_OFF + textscale .25 + forecolor 1 1 1 1 + visible MENU_FALSE + action + { + play "sound/misc/menu1.wav"; + } + } + + itemDef + { + name hud + group optionsGrp + type ITEM_TYPE_YESNO + text "Show Charge Bar:" + cvar "cg_drawChargeBar" + rect CONTENT_X (CONTENT_Y+(3*ELEM_H)) CONTENT_W ELEM_H + textalign ALIGN_RIGHT + textvalign VALIGN_CENTER + textalignx CONTENT_OFF + textscale .25 + forecolor 1 1 1 1 + visible MENU_FALSE + action + { + play "sound/misc/menu1.wav"; + } + } + + itemDef + { + name hud + group optionsGrp + type ITEM_TYPE_YESNO + text "Show Lag-o-meter:" + cvar "cg_lagometer" + rect CONTENT_X (CONTENT_Y+(4*ELEM_H)) CONTENT_W ELEM_H + textalign ALIGN_RIGHT + textvalign VALIGN_CENTER + textalignx CONTENT_OFF + textscale .25 + forecolor 1 1 1 1 + visible MENU_FALSE + action + { + play "sound/misc/menu1.wav"; + } + } + + itemDef + { + name hud + group optionsGrp + type ITEM_TYPE_MULTI + text "Show Team Overlay:" + cvar "cg_drawTeamOverlay" + cvarFloatList { "Off" 0 "All Teammates" 1 "Support Teammates" 2 "Nearby Teammates" 3 } + rect CONTENT_X (CONTENT_Y+(5*ELEM_H)) CONTENT_W ELEM_H + textalign ALIGN_RIGHT + textvalign VALIGN_CENTER + textalignx CONTENT_OFF + textscale .25 + forecolor 1 1 1 1 + visible MENU_FALSE + action + { + play "sound/misc/menu1.wav"; + } + } + + itemDef + { + name hud + group optionsGrp + type ITEM_TYPE_MULTI + text "Sort Team Overlay:" + cvar "cg_teamOverlaySortMode" + cvarFloatList { "None" 0 "Score" 1 "Weapon/Class" 2 } + rect CONTENT_X (CONTENT_Y+(6*ELEM_H)) CONTENT_W ELEM_H + textalign ALIGN_RIGHT + textvalign VALIGN_CENTER + textalignx CONTENT_OFF + textscale .25 + forecolor 1 1 1 1 + visible MENU_FALSE + action + { + play "sound/misc/menu1.wav"; + } + } + + itemDef + { + name hud + group optionsGrp + type ITEM_TYPE_YESNO + text "Show Gun:" + cvar "cg_drawGun" + rect CONTENT_X (CONTENT_Y+(7*ELEM_H)) CONTENT_W ELEM_H + textalign ALIGN_RIGHT + textvalign VALIGN_CENTER + textalignx CONTENT_OFF + textscale .25 + forecolor 1 1 1 1 + visible MENU_FALSE + action + { + play "sound/misc/menu1.wav"; + } + } + + itemDef + { + name hud + group optionsGrp + type ITEM_TYPE_MULTI + text "Show Speed:" + cvar "cg_drawspeed" + cvarFloatList { "No" 0 "Text" 1 "Graph" 2 "Text + Graph" 3 "Text No-Z" 5 "Graph No-Z" 6 "Text + Graph No-Z" 7 } + rect CONTENT_X (CONTENT_Y+(8*ELEM_H)) CONTENT_W ELEM_H + textalign ALIGN_RIGHT + textvalign VALIGN_CENTER + textalignx CONTENT_OFF + textscale .25 + forecolor 1 1 1 1 + visible MENU_FALSE + action + { + play "sound/misc/menu1.wav"; + } + } + + itemDef + { + name hud + group optionsGrp + type ITEM_TYPE_YESNO + text "Show FPS:" + cvar "cg_drawFPS" + rect CONTENT_X (CONTENT_Y+(9*ELEM_H)) CONTENT_W ELEM_H + textalign ALIGN_RIGHT + textvalign VALIGN_CENTER + textalignx CONTENT_OFF + textscale .25 + forecolor 1 1 1 1 + visible MENU_FALSE + action + { + play "sound/misc/menu1.wav"; + } + } + + itemDef + { + name hud + group optionsGrp + type ITEM_TYPE_YESNO + text "Show Timer:" + cvar "cg_drawTimer" + rect CONTENT_X (CONTENT_Y+(10*ELEM_H)) CONTENT_W ELEM_H + textalign ALIGN_RIGHT + textvalign VALIGN_CENTER + textalignx CONTENT_OFF + textscale .25 + forecolor 1 1 1 1 + visible MENU_FALSE + action + { + play "sound/misc/menu1.wav"; + } + } + + itemDef + { + name hud + group optionsGrp + type ITEM_TYPE_YESNO + text "Show Demo State:" + cvar "cg_drawDemoState" + rect CONTENT_X (CONTENT_Y+(11*ELEM_H)) CONTENT_W ELEM_H + textalign ALIGN_RIGHT + textvalign VALIGN_CENTER + textalignx CONTENT_OFF + textscale .25 + forecolor 1 1 1 1 + visible MENU_FALSE + action + { + play "sound/misc/menu1.wav"; + } + } + +//////// CONTROLS + + //Controls menu + itemDef + { + name controls + text "Look" + group optionsGrp + style WINDOW_STYLE_EMPTY + rect 0 ((2*BORDER)+TOPBUTT_H+(0*SIDEBUTT_H)) SIDEBUTT_W SIDEBUTT_H + type ITEM_TYPE_BUTTON + textalign ALIGN_RIGHT + textvalign VALIGN_CENTER + textscale .25 + forecolor 1 1 1 1 + visible MENU_FALSE + action + { + play "sound/misc/menu1.wav"; + hide optionsGrp; + show controls; + show look + } + } + +//////// LOOK + + itemDef + { + name look + group optionsGrp + type ITEM_TYPE_BIND + text "Lookup:" + cvar "+lookup" + rect SCONTENT_X (SCONTENT_Y+(0*ELEM_H)) SCONTENT_W ELEM_H + textalign ALIGN_RIGHT + textvalign VALIGN_CENTER + textalignx SCONTENT_OFF + textscale .25 + forecolor 1 1 1 1 + visible MENU_FALSE + action + { + play "sound/misc/menu1.wav"; + } + } + + itemDef + { + name look + group optionsGrp + type ITEM_TYPE_BIND + text "Look Down:" + cvar "+lookdown" + rect SCONTENT_X (SCONTENT_Y+(1*ELEM_H)) SCONTENT_W ELEM_H + textalign ALIGN_RIGHT + textvalign VALIGN_CENTER + textalignx SCONTENT_OFF + textscale .25 + forecolor 1 1 1 1 + visible MENU_FALSE + action + { + play "sound/misc/menu1.wav"; + } + } + + itemDef + { + name look + group optionsGrp + type ITEM_TYPE_BIND + text "Mouse Look:" + cvar "+mlook" + rect SCONTENT_X (SCONTENT_Y+(2*ELEM_H)) SCONTENT_W ELEM_H + textalign ALIGN_RIGHT + textvalign VALIGN_CENTER + textalignx SCONTENT_OFF + textscale .25 + forecolor 1 1 1 1 + visible MENU_FALSE + action + { + play "sound/misc/menu1.wav"; + } + } + + itemDef + { + name look + group optionsGrp + type ITEM_TYPE_BIND + text "Centerview:" + cvar "centerview" + rect SCONTENT_X (SCONTENT_Y+(3*ELEM_H)) SCONTENT_W ELEM_H + textalign ALIGN_RIGHT + textvalign VALIGN_CENTER + textalignx SCONTENT_OFF + textscale .25 + forecolor 1 1 1 1 + visible MENU_FALSE + action + { + play "sound/misc/menu1.wav"; + } + } + + itemDef + { + name look + group optionsGrp + type ITEM_TYPE_YESNO + text "Free Look:" + cvar "cl_freelook" + rect SCONTENT_X (SCONTENT_Y+(4*ELEM_H)) SCONTENT_W ELEM_H + textalign ALIGN_RIGHT + textvalign VALIGN_CENTER + textalignx SCONTENT_OFF + textscale .25 + forecolor 1 1 1 1 + visible MENU_FALSE + action + { + play "sound/misc/menu1.wav"; + } + } + + itemDef + { + name look + group optionsGrp + type ITEM_TYPE_SLIDER + text "Mouse Sensitivity:" + cvarfloat "sensitivity" 5 1 30 + rect SCONTENT_X (SCONTENT_Y+(5*ELEM_H)) SCONTENT_W ELEM_H + textalign ALIGN_RIGHT + textvalign VALIGN_CENTER + textalignx SCONTENT_OFF + textscale .25 + forecolor 1 1 1 1 + visible MENU_FALSE + } + + itemDef + { + name look + group optionsGrp + type ITEM_TYPE_YESNO + text "Invert Mouse:" + cvar "ui_mousePitch" + rect SCONTENT_X (SCONTENT_Y+(6*ELEM_H)) SCONTENT_W ELEM_H + textalign ALIGN_RIGHT + textvalign VALIGN_CENTER + textalignx SCONTENT_OFF + textscale .25 + forecolor 1 1 1 1 + visible MENU_FALSE + action + { + play "sound/misc/menu1.wav"; + uiScript update ui_mousePitch + } + } + + itemDef + { + name look + group optionsGrp + type ITEM_TYPE_YESNO + text "Smooth Mouse:" + cvar "m_filter" + rect SCONTENT_X (SCONTENT_Y+(7*ELEM_H)) SCONTENT_W ELEM_H + textalign ALIGN_RIGHT + textvalign VALIGN_CENTER + textalignx SCONTENT_OFF + textscale .25 + forecolor 1 1 1 1 + visible MENU_FALSE + action + { + play "sound/misc/menu1.wav"; + } + } + + itemDef + { + name look + group optionsGrp + type ITEM_TYPE_YESNO + text "Auto Wallwalk Pitching:" + cvar "cg_wwFollow" + rect SCONTENT_X (SCONTENT_Y+(8*ELEM_H)) SCONTENT_W ELEM_H + textalign ALIGN_RIGHT + textvalign VALIGN_CENTER + textalignx SCONTENT_OFF + textscale .25 + forecolor 1 1 1 1 + visible MENU_FALSE + action + { + play "sound/misc/menu1.wav"; + } + } + +//////// MOVE + + itemDef + { + name controls + text "Move" + group optionsGrp + style WINDOW_STYLE_EMPTY + rect 0 ((2*BORDER)+TOPBUTT_H+(1*SIDEBUTT_H)) SIDEBUTT_W SIDEBUTT_H + type ITEM_TYPE_BUTTON + textalign ALIGN_RIGHT + textvalign VALIGN_CENTER + textscale .25 + forecolor 1 1 1 1 + visible MENU_FALSE + action + { + play "sound/misc/menu1.wav"; + hide optionsGrp; + show controls; + show move + } + } + + itemDef + { + name move + group optionsGrp + type ITEM_TYPE_YESNO + text "Sprint Toggles:" + cvar "cg_sprintToggle" + rect SCONTENT_X (SCONTENT_Y+(0*ELEM_H)) SCONTENT_W ELEM_H + textalign ALIGN_RIGHT + textvalign VALIGN_CENTER + textalignx SCONTENT_OFF + textscale .25 + forecolor 1 1 1 1 + visible MENU_FALSE + action + { + play "sound/misc/menu1.wav"; + } + } + + itemDef + { + name move + group optionsGrp + type ITEM_TYPE_YESNO + text "Wallwalk Control Toggles:" + cvar "cg_wwToggle" + rect SCONTENT_X (SCONTENT_Y+(1*ELEM_H)) SCONTENT_W ELEM_H + textalign ALIGN_RIGHT + textvalign VALIGN_CENTER + textalignx SCONTENT_OFF + textscale .25 + forecolor 1 1 1 1 + visible MENU_FALSE + action + { + play "sound/misc/menu1.wav"; + } + } + + itemDef + { + name move + group optionsGrp + type ITEM_TYPE_MULTI + text "Wallwalking Speed:" + cvar "cg_wwSmoothTime" + cvarFloatList { "Medium" 300 "Fast" 150 "Instant" 0 "Slow" 600 } + rect SCONTENT_X (SCONTENT_Y+(2*ELEM_H)) SCONTENT_W ELEM_H + textalign ALIGN_RIGHT + textvalign VALIGN_CENTER + textalignx SCONTENT_OFF + textscale .25 + forecolor 1 1 1 1 + visible MENU_FALSE + action + { + play "sound/misc/menu1.wav"; + } + } + + itemDef + { + name move + group optionsGrp + type ITEM_TYPE_BIND + text "Run / Walk:" + cvar "+speed" + rect SCONTENT_X (SCONTENT_Y+(3*ELEM_H)) SCONTENT_W ELEM_H + textalign ALIGN_RIGHT + textvalign VALIGN_CENTER + textalignx SCONTENT_OFF + textscale .25 + forecolor 1 1 1 1 + visible MENU_FALSE + action + { + play "sound/misc/menu1.wav"; + } + } + + itemDef + { + name move + group optionsGrp + type ITEM_TYPE_BIND + text "Dodge:" + cvar "+button6" + rect SCONTENT_X (SCONTENT_Y+(4*ELEM_H)) SCONTENT_W ELEM_H + textalign ALIGN_RIGHT + textvalign VALIGN_CENTER + textalignx SCONTENT_OFF + textscale .25 + forecolor 1 1 1 1 + visible MENU_FALSE + action + { + play "sound/misc/menu1.wav"; + } + } + + itemDef + { + name move + group optionsGrp + type ITEM_TYPE_BIND + text "Sprint:" + cvar "+button8" + rect SCONTENT_X (SCONTENT_Y+(5*ELEM_H)) SCONTENT_W ELEM_H + textalign ALIGN_RIGHT + textvalign VALIGN_CENTER + textalignx SCONTENT_OFF + textscale .25 + forecolor 1 1 1 1 + visible MENU_FALSE + action + { + play "sound/misc/menu1.wav"; + } + } + + itemDef + { + name move + group optionsGrp + type ITEM_TYPE_BIND + text "Forward:" + cvar "+forward" + rect SCONTENT_X (SCONTENT_Y+(6*ELEM_H)) SCONTENT_W ELEM_H + textalign ALIGN_RIGHT + textvalign VALIGN_CENTER + textalignx SCONTENT_OFF + textscale .25 + forecolor 1 1 1 1 + visible MENU_FALSE + action + { + play "sound/misc/menu1.wav"; + } + } + + itemDef + { + name move + group optionsGrp + type ITEM_TYPE_BIND + text "Backpedal:" + cvar "+back" + rect SCONTENT_X (SCONTENT_Y+(7*ELEM_H)) SCONTENT_W ELEM_H + textalign ALIGN_RIGHT + textvalign VALIGN_CENTER + textalignx SCONTENT_OFF + textscale .25 + forecolor 1 1 1 1 + visible MENU_FALSE + action + { + play "sound/misc/menu1.wav"; + } + } + + itemDef + { + name move + group optionsGrp + type ITEM_TYPE_BIND + text "Move Left:" + cvar "+moveleft" + rect SCONTENT_X (SCONTENT_Y+(8*ELEM_H)) SCONTENT_W ELEM_H + textalign ALIGN_RIGHT + textvalign VALIGN_CENTER + textalignx SCONTENT_OFF + textscale .25 + forecolor 1 1 1 1 + visible MENU_FALSE + action + { + play "sound/misc/menu1.wav"; + } + } + + itemDef + { + name move + group optionsGrp + type ITEM_TYPE_BIND + text "Move Right:" + cvar "+moveright" + rect SCONTENT_X (SCONTENT_Y+(9*ELEM_H)) SCONTENT_W ELEM_H + textalign ALIGN_RIGHT + textvalign VALIGN_CENTER + textalignx SCONTENT_OFF + textscale .25 + forecolor 1 1 1 1 + visible MENU_FALSE + action + { + play "sound/misc/menu1.wav"; + } + } + + itemDef + { + name move + group optionsGrp + type ITEM_TYPE_BIND + text "Jump:" + cvar "+moveup" + rect SCONTENT_X (SCONTENT_Y+(10*ELEM_H)) SCONTENT_W ELEM_H + textalign ALIGN_RIGHT + textvalign VALIGN_CENTER + textalignx SCONTENT_OFF + textscale .25 + forecolor 1 1 1 1 + visible MENU_FALSE + action + { + play "sound/misc/menu1.wav"; + } + } + + itemDef + { + name move + group optionsGrp + type ITEM_TYPE_BIND + text "Crouch:" + cvar "+movedown" + rect SCONTENT_X (SCONTENT_Y+(11*ELEM_H)) SCONTENT_W ELEM_H + textalign ALIGN_RIGHT + textvalign VALIGN_CENTER + textalignx SCONTENT_OFF + textscale .25 + forecolor 1 1 1 1 + visible MENU_FALSE + action + { + play "sound/misc/menu1.wav"; + } + } + + itemDef + { + name move + group optionsGrp + type ITEM_TYPE_BIND + text "Turn Left:" + cvar "+left" + rect SCONTENT_X (SCONTENT_Y+(12*ELEM_H)) SCONTENT_W ELEM_H + textalign ALIGN_RIGHT + textvalign VALIGN_CENTER + textalignx SCONTENT_OFF + textscale .25 + forecolor 1 1 1 1 + visible MENU_FALSE + action + { + play "sound/misc/menu1.wav"; + } + } + + itemDef + { + name move + group optionsGrp + type ITEM_TYPE_BIND + text "Turn Right:" + cvar "+right" + rect SCONTENT_X (SCONTENT_Y+(13*ELEM_H)) SCONTENT_W ELEM_H + textalign ALIGN_RIGHT + textvalign VALIGN_CENTER + textalignx SCONTENT_OFF + textscale .25 + forecolor 1 1 1 1 + visible MENU_FALSE + action + { + play "sound/misc/menu1.wav"; + } + } + + itemDef + { + name move + group optionsGrp + type ITEM_TYPE_BIND + text "Strafe:" + cvar "+strafe" + rect SCONTENT_X (SCONTENT_Y+(14*ELEM_H)) SCONTENT_W ELEM_H + textalign ALIGN_RIGHT + textvalign VALIGN_CENTER + textalignx SCONTENT_OFF + textscale .25 + forecolor 1 1 1 1 + visible MENU_FALSE + action + { + play "sound/misc/menu1.wav"; + } + } + + + +//////// UPGRADES + + itemDef + { + name controls + text "Upgrades" + group optionsGrp + style WINDOW_STYLE_EMPTY + rect 0 ((2*BORDER)+TOPBUTT_H+(2*SIDEBUTT_H)) SIDEBUTT_W SIDEBUTT_H + type ITEM_TYPE_BUTTON + textalign ALIGN_RIGHT + textvalign VALIGN_CENTER + textscale .25 + forecolor 1 1 1 1 + visible MENU_FALSE + action + { + play "sound/misc/menu1.wav"; + hide optionsGrp; + show controls; + show upgrades + } + } + + itemDef + { + name upgrades + group optionsGrp + type ITEM_TYPE_BIND + text "Primary Attack:" + cvar "+attack" + rect SCONTENT_X (SCONTENT_Y+(0*ELEM_H)) SCONTENT_W ELEM_H + textalign ALIGN_RIGHT + textvalign VALIGN_CENTER + textalignx SCONTENT_OFF + textscale .25 + forecolor 1 1 1 1 + visible MENU_FALSE + action + { + play "sound/misc/menu1.wav"; + } + } + + itemDef + { + name upgrades + group optionsGrp + type ITEM_TYPE_BIND + text "Secondary Attack:" + cvar "+button5" + rect SCONTENT_X (SCONTENT_Y+(1*ELEM_H)) SCONTENT_W ELEM_H + textalign ALIGN_RIGHT + textvalign VALIGN_CENTER + textalignx SCONTENT_OFF + textscale .25 + forecolor 1 1 1 1 + visible MENU_FALSE + action + { + play "sound/misc/menu1.wav"; + } + } + + itemDef + { + name upgrades + group optionsGrp + type ITEM_TYPE_BIND + text "Previous Upgrade:" + cvar "weapprev" + rect SCONTENT_X (SCONTENT_Y+(2*ELEM_H)) SCONTENT_W ELEM_H + textalign ALIGN_RIGHT + textvalign VALIGN_CENTER + textalignx SCONTENT_OFF + textscale .25 + forecolor 1 1 1 1 + visible MENU_FALSE + action + { + play "sound/misc/menu1.wav"; + } + } + + itemDef + { + name upgrades + group optionsGrp + type ITEM_TYPE_BIND + text "Next Upgrade:" + cvar "weapnext" + rect SCONTENT_X (SCONTENT_Y+(3*ELEM_H)) SCONTENT_W ELEM_H + textalign ALIGN_RIGHT + textvalign VALIGN_CENTER + textalignx SCONTENT_OFF + textscale .25 + forecolor 1 1 1 1 + visible MENU_FALSE + action + { + play "sound/misc/menu1.wav"; + } + } + + itemDef + { + name upgrades + group optionsGrp + type ITEM_TYPE_BIND + text "Activate Upgrade:" + cvar "+button2" + rect SCONTENT_X (SCONTENT_Y+(4*ELEM_H)) SCONTENT_W ELEM_H + textalign ALIGN_RIGHT + textvalign VALIGN_CENTER + textalignx SCONTENT_OFF + textscale .25 + forecolor 1 1 1 1 + visible MENU_FALSE + action + { + play "sound/misc/menu1.wav"; + } + } + + itemDef + { + name upgrades + group optionsGrp + type ITEM_TYPE_BIND + text "Reload:" + cvar "reload" + rect SCONTENT_X (SCONTENT_Y+(5*ELEM_H)) SCONTENT_W ELEM_H + textalign ALIGN_RIGHT + textvalign VALIGN_CENTER + textalignx SCONTENT_OFF + textscale .25 + forecolor 1 1 1 1 + visible MENU_FALSE + action + { + play "sound/misc/menu1.wav"; + } + } + + itemDef + { + name upgrades + group optionsGrp + type ITEM_TYPE_BIND + text "Buy Ammo:" + cvar "buy ammo" + rect SCONTENT_X (SCONTENT_Y+(6*ELEM_H)) SCONTENT_W ELEM_H + textalign ALIGN_RIGHT + textvalign VALIGN_CENTER + textalignx SCONTENT_OFF + textscale .25 + forecolor 1 1 1 1 + visible MENU_FALSE + action + { + play "sound/misc/menu1.wav"; + } + } + + itemDef + { + name upgrades + group optionsGrp + type ITEM_TYPE_BIND + text "Use Medkit:" + cvar "itemact medkit" + rect SCONTENT_X (SCONTENT_Y+(7*ELEM_H)) SCONTENT_W ELEM_H + textalign ALIGN_RIGHT + textvalign VALIGN_CENTER + textalignx SCONTENT_OFF + textscale .25 + forecolor 1 1 1 1 + visible MENU_FALSE + action + { + play "sound/misc/menu1.wav"; + } + } + +//////// MISC + + itemDef + { + name controls + text "Misc" + group optionsGrp + style WINDOW_STYLE_EMPTY + rect 0 ((2*BORDER)+TOPBUTT_H+(3*SIDEBUTT_H)) SIDEBUTT_W SIDEBUTT_H + type ITEM_TYPE_BUTTON + textalign ALIGN_RIGHT + textvalign VALIGN_CENTER + textscale .25 + forecolor 1 1 1 1 + visible MENU_FALSE + action + { + play "sound/misc/menu1.wav"; + hide optionsGrp; + show controls; + show misc + } + } + + itemDef + { + name misc + group optionsGrp + type ITEM_TYPE_BIND + text "Show Scores:" + cvar "+scores" + rect SCONTENT_X (SCONTENT_Y+(0*ELEM_H)) SCONTENT_W ELEM_H + textalign ALIGN_RIGHT + textvalign VALIGN_CENTER + textalignx SCONTENT_OFF + textscale .25 + forecolor 1 1 1 1 + visible MENU_FALSE + action + { + play "sound/misc/menu1.wav"; + } + } + + itemDef + { + name misc + group optionsGrp + type ITEM_TYPE_BIND + text "Scroll Scores Up:" + cvar "scoresUp" + rect SCONTENT_X (SCONTENT_Y+(1*ELEM_H)) SCONTENT_W ELEM_H + textalign ALIGN_RIGHT + textvalign VALIGN_CENTER + textalignx SCONTENT_OFF + textscale .25 + forecolor 1 1 1 1 + visible MENU_FALSE + action + { + play "sound/misc/menu1.wav"; + } + } + + itemDef + { + name misc + group optionsGrp + type ITEM_TYPE_BIND + text "Scroll Scores Down:" + cvar "scoresDown" + rect SCONTENT_X (SCONTENT_Y+(2*ELEM_H)) SCONTENT_W ELEM_H + textalign ALIGN_RIGHT + textvalign VALIGN_CENTER + textalignx SCONTENT_OFF + textscale .25 + forecolor 1 1 1 1 + visible MENU_FALSE + action + { + play "sound/misc/menu1.wav"; + } + } + + itemDef + { + name misc + group optionsGrp + type ITEM_TYPE_BIND + text "Use Structure/Evolve:" + cvar "+button7" + rect SCONTENT_X (SCONTENT_Y+(3*ELEM_H)) SCONTENT_W ELEM_H + textalign ALIGN_RIGHT + textvalign VALIGN_CENTER + textalignx SCONTENT_OFF + textscale .25 + forecolor 1 1 1 1 + visible MENU_FALSE + action + { + play "sound/misc/menu1.wav"; + } + } + + itemDef + { + name misc + group optionsGrp + type ITEM_TYPE_BIND + text "Deconstruct Structure:" + cvar "deconstruct" + rect SCONTENT_X (SCONTENT_Y+(4*ELEM_H)) SCONTENT_W ELEM_H + textalign ALIGN_RIGHT + textvalign VALIGN_CENTER + textalignx SCONTENT_OFF + textscale .25 + forecolor 1 1 1 1 + visible MENU_FALSE + action + { + play "sound/misc/menu1.wav"; + } + } + + itemDef + { + name misc + group optionsGrp + type ITEM_TYPE_BIND + text "Gesture:" + cvar "+button3" + rect SCONTENT_X (SCONTENT_Y+(5*ELEM_H)) SCONTENT_W ELEM_H + textalign ALIGN_RIGHT + textvalign VALIGN_CENTER + textalignx SCONTENT_OFF + textscale .25 + forecolor 1 1 1 1 + visible MENU_FALSE + action + { + play "sound/misc/menu1.wav"; + } + } + + itemDef + { + name misc + group optionsGrp + type ITEM_TYPE_BIND + text "Chat:" + cvar "messagemode" + rect SCONTENT_X (SCONTENT_Y+(6*ELEM_H)) SCONTENT_W ELEM_H + textalign ALIGN_RIGHT + textvalign VALIGN_CENTER + textalignx SCONTENT_OFF + textscale .25 + forecolor 1 1 1 1 + visible MENU_FALSE + action + { + play "sound/misc/menu1.wav"; + } + } + + itemDef + { + name misc + group optionsGrp + type ITEM_TYPE_BIND + text "Team Chat:" + cvar "messagemode2" + rect SCONTENT_X (SCONTENT_Y+(7*ELEM_H)) SCONTENT_W ELEM_H + textalign ALIGN_RIGHT + textvalign VALIGN_CENTER + textalignx SCONTENT_OFF + textscale .25 + forecolor 1 1 1 1 + visible MENU_FALSE + action + { + play "sound/misc/menu1.wav"; + } + } + + itemDef + { + name misc + group optionsGrp + type ITEM_TYPE_BIND + text "Vote Yes:" + cvar "vote yes" + rect SCONTENT_X (SCONTENT_Y+(8*ELEM_H)) SCONTENT_W ELEM_H + textalign ALIGN_RIGHT + textvalign VALIGN_CENTER + textalignx SCONTENT_OFF + textscale .25 + forecolor 1 1 1 1 + visible MENU_FALSE + action + { + play "sound/misc/menu1.wav"; + } + } + + itemDef + { + name misc + group optionsGrp + type ITEM_TYPE_BIND + text "Vote No:" + cvar "vote no" + rect SCONTENT_X (SCONTENT_Y+(9*ELEM_H)) SCONTENT_W ELEM_H + textalign ALIGN_RIGHT + textvalign VALIGN_CENTER + textalignx SCONTENT_OFF + textscale .25 + forecolor 1 1 1 1 + visible MENU_FALSE + action + { + play "sound/misc/menu1.wav"; + } + } + + itemDef + { + name misc + group optionsGrp + type ITEM_TYPE_BIND + text "Team Vote Yes:" + cvar "teamvote yes" + rect SCONTENT_X (SCONTENT_Y+(10*ELEM_H)) SCONTENT_W ELEM_H + textalign ALIGN_RIGHT + textvalign VALIGN_CENTER + textalignx SCONTENT_OFF + textscale .25 + forecolor 1 1 1 1 + visible MENU_FALSE + action + { + play "sound/misc/menu1.wav"; + } + } + + itemDef + { + name misc + group optionsGrp + type ITEM_TYPE_BIND + text "Team Vote No:" + cvar "teamvote no" + rect SCONTENT_X (SCONTENT_Y+(11*ELEM_H)) SCONTENT_W ELEM_H + textalign ALIGN_RIGHT + textvalign VALIGN_CENTER + textalignx SCONTENT_OFF + textscale .25 + forecolor 1 1 1 1 + visible MENU_FALSE + action + { + play "sound/misc/menu1.wav"; + } + } + + itemDef + { + name misc + group optionsGrp + type ITEM_TYPE_BIND + text "Screenshot:" + cvar "screenshotJPEG" + rect SCONTENT_X (SCONTENT_Y+(12*ELEM_H)) SCONTENT_W ELEM_H + textalign ALIGN_RIGHT + textvalign VALIGN_CENTER + textalignx SCONTENT_OFF + textscale .25 + forecolor 1 1 1 1 + visible MENU_FALSE + action + { + play "sound/misc/menu1.wav"; + } + } + + itemDef + { + name misc + group optionsGrp + type ITEM_TYPE_BIND + text "Ready To Play:" + cvar "ready" + rect SCONTENT_X (SCONTENT_Y+(13*ELEM_H)) SCONTENT_W ELEM_H + textalign ALIGN_RIGHT + textvalign VALIGN_CENTER + textalignx SCONTENT_OFF + textscale .25 + forecolor 1 1 1 1 + visible MENU_FALSE + action + { + play "sound/misc/menu1.wav"; + } + } +//////// SYSTEM + + //System menu + itemDef + { + name system + text "GFX Hardware" + group optionsGrp + style WINDOW_STYLE_EMPTY + rect 0 ((2*BORDER)+TOPBUTT_H+(0*SIDEBUTT_H)) SIDEBUTT_W SIDEBUTT_H + type ITEM_TYPE_BUTTON + textalign ALIGN_RIGHT + textvalign VALIGN_CENTER + textscale .25 + forecolor 1 1 1 1 + visible MENU_FALSE + action + { + play "sound/misc/menu1.wav"; + hide optionsGrp; + show system; + show ghardware + } + } + +//////// GFX HARDWARE + + itemDef + { + name ghardware + group optionsGrp + type ITEM_TYPE_MULTI + text "Quality:" + cvar "ui_glCustom" + cvarFloatList { "High Quality" 0 "Normal" 1 "Fast" 2 "Fastest" 3 "Custom" 4 } + rect SCONTENT_X (SCONTENT_Y+(0*ELEM_H)) SCONTENT_W ELEM_H + textalign ALIGN_RIGHT + textvalign VALIGN_CENTER + textalignx SCONTENT_OFF + textscale .25 + forecolor 1 1 1 1 + visible MENU_FALSE + action + { + play "sound/misc/menu1.wav"; + uiScript update "ui_glCustom" + } + } + + itemDef + { + name ghardware + group optionsGrp + type ITEM_TYPE_YESNO + text "GL Extensions:" + cvar "r_allowExtensions" + rect SCONTENT_X (SCONTENT_Y+(1*ELEM_H)) SCONTENT_W ELEM_H + textalign ALIGN_RIGHT + textvalign VALIGN_CENTER + textalignx SCONTENT_OFF + textscale .25 + forecolor 1 1 1 1 + visible MENU_FALSE + action + { + play "sound/misc/menu1.wav"; + uiScript glCuston + } + } + + itemDef + { + name ghardware + group optionsGrp + type ITEM_TYPE_TEXT + text "Video Mode:" + rect SCONTENT_X (SCONTENT_Y+(2*ELEM_H)) (SCONTENT_W/2) ELEM_H + textalign ALIGN_RIGHT + textvalign VALIGN_CENTER + textscale .25 + forecolor 1 1 1 1 + visible MENU_TRUE + } + + itemDef + { + name ghardware + group optionsGrp + rect (SCONTENT_X+(SCONTENT_W/2)+RESCOMBO_OFF) (SCONTENT_Y+(2*ELEM_H)) ((SCONTENT_W/2)-(2*RESCOMBO_OFF)) ELEM_H + type ITEM_TYPE_COMBOBOX + style WINDOW_STYLE_FILLED + elementwidth ((SCONTENT_W/2)-(2*BORDER)) + elementheight ELEM_H + dropitems 5 + textscale .25 + elementtype LISTBOX_TEXT + feeder FEEDER_RESOLUTIONS + border WINDOW_BORDER_FULL + borderColor 0.5 0.5 0.5 1 + forecolor 1 1 1 1 + backcolor 0 0 0 1 + outlinecolor 0.1 0.1 0.1 0.5 + visible MENU_TRUE + doubleclick + { + play "sound/misc/menu1.wav"; + } + } + + itemDef + { + name ghardware + group optionsGrp + type ITEM_TYPE_MULTI + text "Color Depth:" + cvar "r_colorbits" + cvarFloatList { "Default" 0 "16 bit" 16 "32 bit" 32 } + rect SCONTENT_X (SCONTENT_Y+(3*ELEM_H)) SCONTENT_W ELEM_H + textalign ALIGN_RIGHT + textvalign VALIGN_CENTER + textalignx SCONTENT_OFF + textscale .25 + forecolor 1 1 1 1 + visible MENU_FALSE + action + { + play "sound/misc/menu1.wav"; + uiScript glCustom; + uiScript update "r_colorbits" + } + } + + itemDef + { + name ghardware + group optionsGrp + type ITEM_TYPE_YESNO + text "Fullscreen:" + cvar "r_fullscreen" + rect SCONTENT_X (SCONTENT_Y+(4*ELEM_H)) SCONTENT_W ELEM_H + textalign ALIGN_RIGHT + textvalign VALIGN_CENTER + textalignx SCONTENT_OFF + textscale .25 + forecolor 1 1 1 1 + visible MENU_FALSE + action + { + play "sound/misc/menu1.wav"; + uiScript glCustom + } + } + + itemDef + { + name ghardware + group optionsGrp + type ITEM_TYPE_MULTI + text "Lighting:" + cvar "r_vertexlight" + cvarFloatList { "Light Map (high)" 0 "Vertex (low)" 1 } + rect SCONTENT_X (SCONTENT_Y+(5*ELEM_H)) SCONTENT_W ELEM_H + textalign ALIGN_RIGHT + textvalign VALIGN_CENTER + textalignx SCONTENT_OFF + textscale .25 + forecolor 1 1 1 1 + visible MENU_FALSE + action + { + play "sound/misc/menu1.wav"; + uiScript glCustom + } + } + + itemDef + { + name ghardware + group optionsGrp + type ITEM_TYPE_MULTI + text "Geometric Detail:" + cvar "r_lodbias" + cvarFloatList { "High" 0 "Medium" 1 "Low" 2 } + rect SCONTENT_X (SCONTENT_Y+(6*ELEM_H)) SCONTENT_W ELEM_H + textalign ALIGN_RIGHT + textvalign VALIGN_CENTER + textalignx SCONTENT_OFF + textscale .25 + forecolor 1 1 1 1 + visible MENU_FALSE + action + { + play "sound/misc/menu1.wav"; + uiScript glCustom; + uiScript update "r_lodbias" + } + } + + itemDef + { + name ghardware + group optionsGrp + type ITEM_TYPE_MULTI + text "Texture Detail:" + cvar "r_picmip" + cvarFloatList { "Low" 2 "Normal" 1 "High" 0 } + rect SCONTENT_X (SCONTENT_Y+(7*ELEM_H)) SCONTENT_W ELEM_H + textalign ALIGN_RIGHT + textvalign VALIGN_CENTER + textalignx SCONTENT_OFF + textscale .25 + forecolor 1 1 1 1 + visible MENU_FALSE + action + { + play "sound/misc/menu1.wav"; + uiScript glCustom + } + } + + itemDef + { + name ghardware + group optionsGrp + type ITEM_TYPE_MULTI + text "Texture Quality:" + cvar "r_texturebits" + cvarFloatList { "Default" 0 "16 bit" 16 "32 bit" 32 } + rect SCONTENT_X (SCONTENT_Y+(8*ELEM_H)) SCONTENT_W ELEM_H + textalign ALIGN_RIGHT + textvalign VALIGN_CENTER + textalignx SCONTENT_OFF + textscale .25 + forecolor 1 1 1 1 + visible MENU_FALSE + action + { + play "sound/misc/menu1.wav"; + } + } + + itemDef + { + name ghardware + group optionsGrp + type ITEM_TYPE_MULTI + text "Texture Filter:" + cvar "r_texturemode" + cvarStrList { "Bilinear", "GL_LINEAR_MIPMAP_NEAREST", "Trilinear", "GL_LINEAR_MIPMAP_LINEAR" } + rect SCONTENT_X (SCONTENT_Y+(9*ELEM_H)) SCONTENT_W ELEM_H + textalign ALIGN_RIGHT + textvalign VALIGN_CENTER + textalignx SCONTENT_OFF + textscale .25 + forecolor 1 1 1 1 + visible MENU_FALSE + action + { + play "sound/misc/menu1.wav"; + uiScript glCustom + } + } + + itemDef + { + name ghardware + group optionsGrp + type ITEM_TYPE_YESNO + text "Anisotropic Filtering:" + cvar "r_ext_texture_filter_anisotropic" + rect SCONTENT_X (SCONTENT_Y+(10*ELEM_H)) SCONTENT_W ELEM_H + textalign ALIGN_RIGHT + textvalign VALIGN_CENTER + textalignx SCONTENT_OFF + textscale .25 + forecolor 1 1 1 1 + visible MENU_FALSE + action + { + play "sound/misc/menu1.wav"; + uiScript glCustom + } + } + + itemDef + { + name ghardware + group optionsGrp + type ITEM_TYPE_YESNO + text "Compress Textures:" + cvar "r_ext_compressed_textures " + rect SCONTENT_X (SCONTENT_Y+(11*ELEM_H)) SCONTENT_W ELEM_H + textalign ALIGN_RIGHT + textvalign VALIGN_CENTER + textalignx SCONTENT_OFF + textscale .25 + forecolor 1 1 1 1 + visible MENU_FALSE + action + { + play "sound/misc/menu1.wav"; + uiScript glCustom + } + } + + itemDef + { + name ghardware + group optionsGrp + type ITEM_TYPE_BUTTON + text "APPLY" + textscale .25 + style WINDOW_STYLE_EMPTY + rect SCONTENT_X (SCONTENT_Y+(13*ELEM_H)) SCONTENT_W ELEM_H + textalign ALIGN_CENTER + textvalign VALIGN_CENTER + forecolor 1 1 1 1 + visible MENU_FALSE + action + { + play "sound/misc/menu1.wav"; + exec "vid_restart" + } + } + +//////// GFX SOFTWARE + + itemDef + { + name system + text "GFX Software" + group optionsGrp + style WINDOW_STYLE_EMPTY + rect 0 ((2*BORDER)+TOPBUTT_H+(1*SIDEBUTT_H)) SIDEBUTT_W SIDEBUTT_H + type ITEM_TYPE_BUTTON + textalign ALIGN_RIGHT + textvalign VALIGN_CENTER + textscale .25 + forecolor 1 1 1 1 + visible MENU_FALSE + action + { + play "sound/misc/menu1.wav"; + hide optionsGrp; + show system; + show gsoftware + } + } + + itemDef + { + name gsoftware + group optionsGrp + type ITEM_TYPE_SLIDER + text "Brightness:" + cvarfloat "r_gamma" 1 .5 2 + rect SCONTENT_X (SCONTENT_Y+(0*ELEM_H)) SCONTENT_W ELEM_H + textalign ALIGN_RIGHT + textvalign VALIGN_CENTER + textalignx SCONTENT_OFF + textscale .25 + forecolor 1 1 1 1 + visible MENU_FALSE + } + + itemDef + { + name gsoftware + group optionsGrp + type ITEM_TYPE_SLIDER + text "Screen Size:" + cvarfloat "cg_viewsize" 100 30 100 + rect SCONTENT_X (SCONTENT_Y+(1*ELEM_H)) SCONTENT_W ELEM_H + textalign ALIGN_RIGHT + textvalign VALIGN_CENTER + textalignx SCONTENT_OFF + textscale .25 + forecolor 1 1 1 1 + visible MENU_FALSE + } + + itemDef + { + name gsoftware + group optionsGrp + type ITEM_TYPE_YESNO + text "Marks On Walls:" + cvar "cg_marks" + rect SCONTENT_X (SCONTENT_Y+(2*ELEM_H)) SCONTENT_W ELEM_H + textalign ALIGN_RIGHT + textvalign VALIGN_CENTER + textalignx SCONTENT_OFF + textscale .25 + forecolor 1 1 1 1 + visible MENU_TRUE + action + { + play "sound/misc/menu1.wav"; + } + } + + itemDef + { + name gsoftware + group optionsGrp + type ITEM_TYPE_YESNO + text "Dynamic Lights:" + cvar "r_dynamiclight" + rect SCONTENT_X (SCONTENT_Y+(3*ELEM_H)) SCONTENT_W ELEM_H + textalign ALIGN_RIGHT + textvalign VALIGN_CENTER + textalignx SCONTENT_OFF + textscale .25 + forecolor 1 1 1 1 + visible MENU_TRUE + action + { + play "sound/misc/menu1.wav"; + } + } + + itemDef + { + name gsoftware + group optionsGrp + type ITEM_TYPE_YESNO + text "Draw Gun:" + cvar "cg_drawGun" + rect SCONTENT_X (SCONTENT_Y+(4*ELEM_H)) SCONTENT_W ELEM_H + textalign ALIGN_RIGHT + textvalign VALIGN_CENTER + textalignx SCONTENT_OFF + textscale .25 + forecolor 1 1 1 1 + visible MENU_TRUE + action + { + play "sound/misc/menu1.wav"; + } + } + + itemDef + { + name gsoftware + group optionsGrp + type ITEM_TYPE_YESNO + text "Low Quality Sky:" + cvar "r_fastsky" + rect SCONTENT_X (SCONTENT_Y+(5*ELEM_H)) SCONTENT_W ELEM_H + textalign ALIGN_RIGHT + textvalign VALIGN_CENTER + textalignx SCONTENT_OFF + textscale .25 + forecolor 1 1 1 1 + visible MENU_TRUE + action + { + play "sound/misc/menu1.wav"; + } + } + + itemDef + { + name gsoftware + group optionsGrp + type ITEM_TYPE_YESNO + text "Sync Every Frame:" + cvar "r_finish" + rect SCONTENT_X (SCONTENT_Y+(6*ELEM_H)) SCONTENT_W ELEM_H + textalign ALIGN_RIGHT + textvalign VALIGN_CENTER + textalignx SCONTENT_OFF + textscale .25 + forecolor 1 1 1 1 + visible MENU_TRUE + action + { + play "sound/misc/menu1.wav"; + } + } + + itemDef + { + name gsoftware + group optionsGrp + type ITEM_TYPE_YESNO + text "In Game Videos:" + cvar "r_inGameVideo" + rect SCONTENT_X (SCONTENT_Y+(7*ELEM_H)) SCONTENT_W ELEM_H + textalign ALIGN_RIGHT + textvalign VALIGN_CENTER + textalignx SCONTENT_OFF + textscale .25 + forecolor 1 1 1 1 + visible MENU_TRUE + action + { + play "sound/misc/menu1.wav"; + } + } + + itemDef + { + name gsoftware + group optionsGrp + type ITEM_TYPE_YESNO + text "Depth Sort Particles:" + cvar "cg_depthSortParticles" + rect SCONTENT_X (SCONTENT_Y+(8*ELEM_H)) SCONTENT_W ELEM_H + textalign ALIGN_RIGHT + textvalign VALIGN_CENTER + textalignx SCONTENT_OFF + textscale .25 + forecolor 1 1 1 1 + visible MENU_TRUE + action + { + play "sound/misc/menu1.wav"; + } + } + + itemDef + { + name gsoftware + group optionsGrp + type ITEM_TYPE_MULTI + text "Particle Physics:" + cvar "cg_bounceParticles" + cvarFloatList { "Low Quality" 0 "High Quality" 1 } + rect SCONTENT_X (SCONTENT_Y+(9*ELEM_H)) SCONTENT_W ELEM_H + textalign ALIGN_RIGHT + textvalign VALIGN_CENTER + textalignx SCONTENT_OFF + textscale .25 + forecolor 1 1 1 1 + visible MENU_TRUE + action + { + play "sound/misc/menu1.wav"; + } + } + + itemDef + { + name gsoftware + group optionsGrp + type ITEM_TYPE_MULTI + text "Light Flares:" + cvar "cg_lightFlare" + cvarFloatList { "Off" 0 "No Fade" 1 "Timed Fade" 2 "Real Fade" 3 } + rect SCONTENT_X (SCONTENT_Y+(10*ELEM_H)) SCONTENT_W ELEM_H + textalign ALIGN_RIGHT + textvalign VALIGN_CENTER + textalignx SCONTENT_OFF + textscale .25 + forecolor 1 1 1 1 + visible MENU_TRUE + action + { + play "sound/misc/menu1.wav"; + } + } + +//////// GL INFO + + itemDef + { + name system + text "OpenGL Info" + group optionsGrp + style WINDOW_STYLE_EMPTY + rect 0 ((2*BORDER)+TOPBUTT_H+(2*SIDEBUTT_H)) SIDEBUTT_W SIDEBUTT_H + type ITEM_TYPE_BUTTON + textalign ALIGN_RIGHT + textvalign VALIGN_CENTER + textscale .25 + forecolor 1 1 1 1 + visible MENU_FALSE + action + { + play "sound/misc/menu1.wav"; + hide optionsGrp; + show system; + show glinfo + } + } + + itemDef + { + name glinfo + group optionsGrp + rect SCONTENT_X SCONTENT_Y SCONTENT_W (H-(SCONTENT_Y+BORDER)) + ownerdraw UI_GLINFO + textscale .25 + textalign ALIGN_LEFT + textvalign VALIGN_TOP + textalignx 4 + textaligny 4 + forecolor 1 1 1 1 + visible MENU_FALSE + decoration + } + +//////// NET & SOUND + + itemDef + { + name system + text "Net & Sound" + group optionsGrp + style WINDOW_STYLE_EMPTY + rect 0 ((2*BORDER)+TOPBUTT_H+(3*SIDEBUTT_H)) SIDEBUTT_W SIDEBUTT_H + type ITEM_TYPE_BUTTON + textalign ALIGN_RIGHT + textvalign VALIGN_CENTER + textscale .25 + forecolor 1 1 1 1 + visible MENU_FALSE + action + { + play "sound/misc/menu1.wav"; + hide optionsGrp; + show system; + show netsound + } + } + + itemDef + { + name netsound + group optionsGrp + style WINDOW_STYLE_FILLED + type ITEM_TYPE_TEXT + text "Sound" + rect SCONTENT_X (SCONTENT_Y+(0*ELEM_H)) SCONTENT_W ELEM_H + textalign ALIGN_CENTER + textvalign VALIGN_CENTER + textscale .25 + forecolor 1 1 1 1 + visible MENU_FALSE + decoration + action + { + play "sound/misc/menu1.wav"; + } + } + + itemDef + { + name netsound + group optionsGrp + type ITEM_TYPE_SLIDER + text "Effects Volume:" + cvarfloat "s_volume" 0.7 0 1 + rect SCONTENT_X (SCONTENT_Y+(1*ELEM_H)) SCONTENT_W ELEM_H + textalign ALIGN_RIGHT + textvalign VALIGN_CENTER + textalignx SCONTENT_OFF + textscale .25 + forecolor 1 1 1 1 + visible MENU_FALSE + } + + itemDef + { + name netsound + group optionsGrp + type ITEM_TYPE_SLIDER + text "Music Volume:" + cvarfloat "s_musicvolume" 0.25 0 1 + rect SCONTENT_X (SCONTENT_Y+(2*ELEM_H)) SCONTENT_W ELEM_H + textalign ALIGN_RIGHT + textvalign VALIGN_CENTER + textalignx SCONTENT_OFF + textscale .25 + forecolor 1 1 1 1 + visible MENU_FALSE + } + + itemDef + { + name netsound + group optionsGrp + type ITEM_TYPE_YESNO + text "OpenAL:" + cvar "s_useOpenAL" + rect SCONTENT_X (SCONTENT_Y+(3*ELEM_H)) SCONTENT_W ELEM_H + textalign ALIGN_RIGHT + textvalign VALIGN_CENTER + textalignx SCONTENT_OFF + textscale .25 + forecolor 1 1 1 1 + visible MENU_FALSE + action + { + play "sound/misc/menu1.wav"; + } + } + + itemDef + { + name netsound + group optionsGrp + type ITEM_TYPE_MULTI + text "Sound Quality:" + cvar "s_khz" + cvarFloatList { "44 khz (very high)" 44 "22 khz (high)" 22 "11 khz (low)" 11 } + rect SCONTENT_X (SCONTENT_Y+(4*ELEM_H)) SCONTENT_W ELEM_H + textalign ALIGN_RIGHT + textvalign VALIGN_CENTER + textalignx SCONTENT_OFF + textscale .25 + forecolor 1 1 1 1 + visible MENU_FALSE + action + { + play "sound/misc/menu1.wav"; + } + } + + itemDef + { + name netsound + group optionsGrp + type ITEM_TYPE_YESNO + text "Doppler Sound:" + cvar "s_doppler" + rect SCONTENT_X (SCONTENT_Y+(5*ELEM_H)) SCONTENT_W ELEM_H + textalign ALIGN_RIGHT + textvalign VALIGN_CENTER + textalignx SCONTENT_OFF + textscale .25 + forecolor 1 1 1 1 + visible MENU_FALSE + action + { + play "sound/misc/menu1.wav"; + } + } + + itemDef + { + name netsound + group optionsGrp + style WINDOW_STYLE_FILLED + type ITEM_TYPE_TEXT + text "Network" + rect SCONTENT_X (SCONTENT_Y+(7*ELEM_H)) SCONTENT_W ELEM_H + textalign ALIGN_CENTER + textvalign VALIGN_CENTER + textscale .25 + forecolor 1 1 1 1 + visible MENU_FALSE + decoration + action + { + play "sound/misc/menu1.wav"; + } + } + + itemDef + { + name netsound + group optionsGrp + 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 SCONTENT_X (SCONTENT_Y+(8*ELEM_H)) SCONTENT_W ELEM_H + textalign ALIGN_RIGHT + textvalign VALIGN_CENTER + textalignx SCONTENT_OFF + textscale .25 + forecolor 1 1 1 1 + visible MENU_FALSE + action + { + play "sound/misc/menu1.wav"; + } + } + + itemDef + { + name netsound + group optionsGrp + type ITEM_TYPE_BUTTON + text "APPLY" + textscale .25 + style WINDOW_STYLE_EMPTY + rect SCONTENT_X (SCONTENT_Y+(10*ELEM_H)) SCONTENT_W ELEM_H + textalign ALIGN_CENTER + textvalign VALIGN_CENTER + forecolor 1 1 1 1 + visible MENU_FALSE + action + { + play "sound/misc/menu1.wav"; + exec "snd_restart" + } + } + +//////// RANGE MARKERS + + itemDef + { + name system + text "Range Markers" + group optionsGrp + style WINDOW_STYLE_EMPTY + rect 0 ((2*BORDER)+TOPBUTT_H+(4*SIDEBUTT_H)) SIDEBUTT_W SIDEBUTT_H + type ITEM_TYPE_BUTTON + textalign ALIGN_RIGHT + textvalign VALIGN_CENTER + textscale .25 + forecolor 1 1 1 1 + visible MENU_FALSE + action + { + play "sound/misc/menu1.wav"; + hide optionsGrp; + show system; + show rangemarkers + } + } + + itemDef + { + name rangemarkers + group optionsGrp + type ITEM_TYPE_YESNO + text "Draw Surface:" + cvar "cg_rangeMarkerDrawSurface" + rect SCONTENT_X (SCONTENT_Y+(0*ELEM_H)) SCONTENT_W ELEM_H + textalign ALIGN_RIGHT + textvalign VALIGN_CENTER + textalignx SCONTENT_OFF + textscale .25 + forecolor 1 1 1 1 + visible MENU_FALSE + action + { + play "sound/misc/menu1.wav"; + } + } + + itemDef + { + name rangemarkers + group optionsGrp + type ITEM_TYPE_YESNO + text "Draw Intersection:" + cvar "cg_rangeMarkerDrawIntersection" + rect SCONTENT_X (SCONTENT_Y+(1*ELEM_H)) SCONTENT_W ELEM_H + textalign ALIGN_RIGHT + textvalign VALIGN_CENTER + textalignx SCONTENT_OFF + textscale .25 + forecolor 1 1 1 1 + visible MENU_FALSE + action + { + play "sound/misc/menu1.wav"; + } + } + + itemDef + { + name rangemarkers + group optionsGrp + type ITEM_TYPE_YESNO + text "Draw Frontline:" + cvar "cg_rangeMarkerDrawFrontline" + rect SCONTENT_X (SCONTENT_Y+(2*ELEM_H)) SCONTENT_W ELEM_H + textalign ALIGN_RIGHT + textvalign VALIGN_CENTER + textalignx SCONTENT_OFF + textscale .25 + forecolor 1 1 1 1 + visible MENU_FALSE + action + { + play "sound/misc/menu1.wav"; + } + } + + itemDef + { + name rangemarkers + group optionsGrp + type ITEM_TYPE_SLIDER + text "Surface Opacity:" + cvarfloat "cg_rangeMarkerSurfaceOpacity" 0.08 0.035 0.3 + rect SCONTENT_X (SCONTENT_Y+(3*ELEM_H)) SCONTENT_W ELEM_H + textalign ALIGN_RIGHT + textvalign VALIGN_CENTER + textalignx SCONTENT_OFF + textscale .25 + forecolor 1 1 1 1 + visible MENU_FALSE + } + + itemDef + { + name rangemarkers + group optionsGrp + type ITEM_TYPE_SLIDER + text "Line Opacity:" + cvarfloat "cg_rangeMarkerLineOpacity" 0.4 0.075 1 + rect SCONTENT_X (SCONTENT_Y+(4*ELEM_H)) SCONTENT_W ELEM_H + textalign ALIGN_RIGHT + textvalign VALIGN_CENTER + textalignx SCONTENT_OFF + textscale .25 + forecolor 1 1 1 1 + visible MENU_FALSE + } + + itemDef + { + name rangemarkers + group optionsGrp + type ITEM_TYPE_SLIDER + text "Line Thickness:" + cvarfloat "cg_rangeMarkerLineThickness" 4.0 1 11 + rect SCONTENT_X (SCONTENT_Y+(5*ELEM_H)) SCONTENT_W ELEM_H + textalign ALIGN_RIGHT + textvalign VALIGN_CENTER + textalignx SCONTENT_OFF + textscale .25 + forecolor 1 1 1 1 + visible MENU_FALSE + } + + itemDef + { + name rangemarkers + group optionsGrp + type ITEM_TYPE_YESNO + text "Range Marker for Blueprint:" + cvar "cg_rangeMarkerForBlueprint" + rect SCONTENT_X (SCONTENT_Y+(6*ELEM_H)) SCONTENT_W ELEM_H + textalign ALIGN_RIGHT + textvalign VALIGN_CENTER + textalignx SCONTENT_OFF + textscale .25 + forecolor 1 1 1 1 + visible MENU_FALSE + action + { + play "sound/misc/menu1.wav"; + } + } + + itemDef + { + name rangemarkers + group optionsGrp + type ITEM_TYPE_MULTI + text "Range Markers for:" + cvar "cg_rangeMarkerBuildableTypes" + cvarStrList { "No Buildables", "", + "All Buildables", "all", + "Support Buildables", "support", + "Offensive Buildables", "offensive", + "Alien Buildables", "alien", + "Human Buildables", "human", + "Alien Support Buildables", "aliensupport", + "Human Support Buildables", "humansupport", + "Offensive Alien Buildables", "alienoffensive", + "Offensive Human Buildables", "humanoffensive" } + rect SCONTENT_X (SCONTENT_Y+(7*ELEM_H)) SCONTENT_W ELEM_H + textalign ALIGN_RIGHT + textvalign VALIGN_CENTER + textalignx SCONTENT_OFF + textscale .25 + forecolor 1 1 1 1 + visible MENU_FALSE + action + { + play "sound/misc/menu1.wav"; + } + } + + itemDef + { + name rangemarkers + group optionsGrp + type ITEM_TYPE_SLIDER + text "Binary Shader Screen Scale:" + cvarfloat "cg_binaryShaderScreenScale" 1.0 0 1 + rect SCONTENT_X (SCONTENT_Y+(8*ELEM_H)) SCONTENT_W ELEM_H + textalign ALIGN_RIGHT + textvalign VALIGN_CENTER + textalignx SCONTENT_OFF + textscale .25 + forecolor 1 1 1 1 + visible MENU_FALSE + } + } +} diff --git a/assets/ui/install_update.menu b/assets/ui/install_update.menu new file mode 100644 index 0000000..8c81133 --- /dev/null +++ b/assets/ui/install_update.menu @@ -0,0 +1,145 @@ +#include "ui/menudef.h" + +{ + +#define W 450 +#define H 300 +#define BORDER 10 + +#define LIST_W 140 +#define LIST_H (H-(2*BORDER)) +#define LIST_X BORDER +#define LIST_Y BORDER + +#define BUTT_H 25 +#define BUTT_W 45 + +#define INFO_W (W-((2*BORDER)+LIST_W)) +#define INFO_H (H-((3*BORDER)+BUTT_H)) +#define INFO_X BORDER +#define INFO_Y BORDER +#define INFO_TOFF 6 + +#define AU_ACT_NIL 0 +#define AU_ACT_GET 1 +#define AU_ACT_RUN 2 + + menuDef + { + name "install_update" + visible MENU_TRUE + fullscreen MENU_FALSE + outOfBoundsClick + rect (320-(W/2)) (240-(H/2)) W H + focusColor 1 .75 0 1 + style WINDOW_STYLE_FILLED + popup + onOpen + { + uiScript checkForUpdate; + } + onESC + { + play "sound/misc/menu1.wav"; + close install_update + } + + itemDef + { + name window + rect 0 0 W H + style WINDOW_STYLE_FILLED + backcolor 0 0 0 .75 + visible MENU_TRUE + decoration + border WINDOW_BORDER_KCGRADIENT + borderSize 1.0 + borderColor 0.5 0.5 0.5 1 + } + + + itemDef + { + name github_release + rect 10 10 (W-10) (INFO_H-10) + type ITEM_TYPE_LISTBOX + style WINDOW_STYLE_EMPTY + elementwidth 120 + elementheight 16 + textscale .33 + border WINDOW_BORDER_NONE + bordersize 1 + bordercolor .5 .5 .5 1 + elementtype LISTBOX_TEXT + feeder FEEDER_GITHUB_RELEASE + notselectable + visible MENU_TRUE + } + +// itemDef +// { +// name OKCancel +// text "Download" +// type ITEM_TYPE_BUTTON +// style WINDOW_STYLE_EMPTY +// rect (W-((2*BORDER)+(2*BUTT_W))) (H-(BORDER+BUTT_H)) BUTT_W BUTT_H +// textalign ALIGN_CENTER +// textvalign VALIGN_CENTER +// textscale .4 +// forecolor 1 1 1 1 +// backcolor .5 0 0 .25 +// visible MENU_TRUE +// cvarTest "ui_autoupdate_action" +// showCvar { AU_ACT_GET } +// action +// { +// play "sound/misc/menu1.wav"; +// uiScript DownloadUpdate; +// close install_update +// } +// } +// +// itemDef +// { +// name OKCancel +// text "Install" +// type ITEM_TYPE_BUTTON +// style WINDOW_STYLE_EMPTY +// rect (W-((2*BORDER)+(2*BUTT_W))) (H-(BORDER+BUTT_H)) BUTT_W BUTT_H +// textalign ALIGN_CENTER +// textvalign VALIGN_CENTER +// textscale .4 +// forecolor 1 1 1 1 +// backcolor .5 0 0 .25 +// visible MENU_TRUE +// cvarTest "ui_autoupdate_action" +// showCvar { AU_ACT_RUN } +// action +// { +// play "sound/misc/menu1.wav"; +// uiScript InstallUpdate; +// close install_update +// } +// } + + itemDef + { + name "OKCancel" + text "Ok" + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_EMPTY + rect (W-(BORDER+BUTT_W)) (H-(BORDER+BUTT_H)) BUTT_W BUTT_H + textalign ALIGN_CENTER + textvalign VALIGN_CENTER + textscale .4 + forecolor 1 1 1 1 + backcolor .5 0 0 .25 + visible MENU_TRUE + action + { + play "sound/misc/menu3.wav"; + close install_update + } + } + } +} diff --git a/assets/ui/joinserver.menu b/assets/ui/joinserver.menu new file mode 100644 index 0000000..ad3e04d --- /dev/null +++ b/assets/ui/joinserver.menu @@ -0,0 +1,769 @@ +#include "ui/menudef.h" + +{ + + \\ Server Join \\ + +#define W 640 +#define H 480 +#define BORDER 10 + +#define PREVIEW_W 112 +#define PREVIEW_H 84 +#define TOP_W (W-((2*BORDER)+PREVIEW_W)) +#define TOP_H PREVIEW_H +#define TOP_X BORDER +#define TOP_Y BORDER +#define TOPBUTT_W (TOP_W/3) +#define TOPBUTT_H (TOP_H/2) +#define TOP_TOFF_X 20 +#define TOP_TOFF_Y 0 + +#define BCJ_W (W-(2*BORDER)) +#define BCJ_H 50 +#define BCJ_X BORDER +#define BCJ_Y (H-(BCJ_H+BORDER)) +#define ARROW_W 50 +#define ARROW_H BCJ_H + +#define BOT_W (W-(2*BORDER)) +#define BOT_H 45 +#define BOT_X BORDER +#define BOT_Y (BCJ_Y-BOT_H) +#define BOTBUTT_W (BOT_W/5) +#define BOTBUTT_H BOT_H + +#define SERVER_C 0.45 +#define GAME_C 0.15 +#define MAP_C 0.2 +#define PLAYERS_C 0.1 +#define PING_C 0.1 +#define LIST_W (W-(2*BORDER)) +#define LIST_H (H-((3*BORDER)+TOP_H+BOT_H+BCJ_H)) +#define LIST_X BORDER +#define LIST_Y ((2*BORDER)+TOP_H) +#define LIST_TOFF 5 +#define HEADFOOT_H 25 + + menuDef + { + name "joinserver" + visible MENU_FALSE + fullscreen MENU_TRUE + rect 0 0 W H + focusColor 1 .75 0 1 + outOfBoundsClick + style WINDOW_STYLE_EMPTY + aspectBias ASPECT_NONE + onOpen + { + uiScript InitServerList 3; + hide accept_alt; + show accept; + hide back_alt; + show back; + uiScript UpdateFilter + } + + onEsc { uiScript closeJoin } + + itemDef + { + name background + rect 0 0 W H + style WINDOW_STYLE_FILLED + backcolor 0 0 0 1 + visible MENU_TRUE + decoration + } + + + // VIEW OPTIONS // + + itemDef + { + name gametypefield + text "Source:" + style WINDOW_STYLE_EMPTY + ownerdraw UI_NETSOURCE + rect TOP_X TOP_Y TOPBUTT_W TOPBUTT_H + textalign ALIGN_LEFT + textvalign VALIGN_CENTER + textalignx TOP_TOFF_X + textaligny TOP_TOFF_Y + textscale .4 + forecolor 1 1 1 1 + backcolor .5 .5 .5 .5 + visible MENU_TRUE + action + { + play "sound/misc/menu1.wav" + } + } + + // BUTTONS // + + itemDef + { + name refreshSource + text "Get New List" + type ITEM_TYPE_BUTTON + textscale .4 + style WINDOW_STYLE_EMPTY + rect (TOP_X+TOPBUTT_W) TOP_Y TOPBUTT_W TOPBUTT_H + textalign ALIGN_LEFT + textvalign VALIGN_CENTER + textalignx TOP_TOFF_X + textaligny TOP_TOFF_Y + backcolor .5 .5 .5 .5 + forecolor 1 1 1 1 + visible MENU_TRUE + action + { + play "sound/misc/menu1.wav"; + uiScript RefreshServers + } + } + + itemDef + { + name refreshFilter + text "Refresh List" + textscale .4 + style WINDOW_STYLE_EMPTY + type ITEM_TYPE_BUTTON + rect (TOP_X+(2*TOPBUTT_W)) TOP_Y TOPBUTT_W TOPBUTT_H + textalign ALIGN_LEFT + textvalign VALIGN_CENTER + textalignx TOP_TOFF_X + textaligny TOP_TOFF_Y + backcolor .5 .5 .5 .5 + forecolor 1 1 1 1 + visible MENU_TRUE + action + { + play "sound/misc/menu1.wav"; + uiScript RefreshFilter + } + } + + itemDef + { + name viewEmpty + style WINDOW_STYLE_EMPTY + type ITEM_TYPE_YESNO + text "View Empty:" + cvar "ui_browserShowEmpty" + textscale .4 + rect TOP_X (TOP_Y+TOPBUTT_H) TOPBUTT_W TOPBUTT_H + textalign ALIGN_LEFT + textvalign VALIGN_CENTER + textalignx TOP_TOFF_X + textaligny TOP_TOFF_Y + forecolor 1 1 1 1 + backcolor .5 .5 .5 .5 + visible MENU_TRUE + action + { + play "sound/misc/menu1.wav"; + uiScript RefreshFilter + } + } + + itemDef + { + name viewFull + style WINDOW_STYLE_EMPTY + type ITEM_TYPE_YESNO + text "View Full:" + cvar "ui_browserShowFull" + textscale .4 + rect (TOP_X+TOPBUTT_W) (TOP_Y+TOPBUTT_H) TOPBUTT_W TOPBUTT_H + textalign ALIGN_LEFT + textvalign VALIGN_CENTER + textalignx TOP_TOFF_X + textaligny TOP_TOFF_Y + forecolor 1 1 1 1 + backcolor .5 .5 .5 .5 + visible MENU_TRUE + action + { + play "sound/misc/menu1.wav"; + uiScript RefreshFilter + } + } + + // LEGEND // + + itemDef + { + name legend + type ITEM_TYPE_TEXT + text "[official] = Official Server\n[featured] = Featured Server" + style WINDOW_STYLE_EMPTY + textstyle ITEM_TEXTSTYLE_NORMAL + textscale .25 + wrapped + rect (TOP_X+(2*TOPBUTT_W)) (TOP_Y+TOPBUTT_H) (TOPBUTT_W) (TOPBUTT_H) + textalign ALIGN_LEFT + textvalign VALIGN_CENTER + textalignx TOP_TOFF_X + forecolor 1 1 1 1 + visible MENU_TRUE + decoration + } + + // MAP PREVIEW // + + itemDef + { + name mappreview + style WINDOW_STYLE_EMPTY + ownerdraw UI_NETMAPPREVIEW + rect (W-(PREVIEW_W+BORDER)) BORDER PREVIEW_W PREVIEW_H + border WINDOW_BORDER_FULL + bordercolor .5 .5 .5 1 + visible MENU_TRUE + } + + + // COLUMNS // + + itemDef + { + name server + group grpTabs + text "Server Name" + type ITEM_TYPE_BUTTON + textscale .33 + style WINDOW_STYLE_FILLED + rect LIST_X LIST_Y (SERVER_C*LIST_W) HEADFOOT_H + textalign ALIGN_LEFT + textvalign VALIGN_CENTER + textalignx LIST_TOFF + border WINDOW_BORDER_FULL + bordercolor 0.5 0.5 0.5 1 + forecolor 1 1 1 1 + backcolor 0 0 0 0 + outlinecolor 0.1 0.1 0.1 0.5 + visible MENU_TRUE + action + { + play "sound/misc/menu1.wav"; + uiScript ServerSort 0; + + setitemcolor grpColumn backcolor 0 0 0 0; + setitemcolor grpTabs backcolor 0 0 0 0; + setitemcolor server backcolor 0.3 1 1 0.3; + setitemcolor serverColumn backcolor 0.2 0.6 0.6 0.1; + } + } + + itemDef + { + name serverColumn + group grpColumn + rect LIST_X (LIST_Y+HEADFOOT_H) (SERVER_C*LIST_W) (LIST_H-(2*HEADFOOT_H)) + style WINDOW_STYLE_FILLED + border WINDOW_BORDER_FULL + backcolor 0 0 0 0 + bordersize 1 + bordercolor .5 .5 .5 1 + visible MENU_TRUE + decoration + } + + itemDef + { + name game + group grpTabs + type ITEM_TYPE_BUTTON + text "Game Type" + textscale .33 + style WINDOW_STYLE_FILLED + rect (LIST_X+(SERVER_C*LIST_W)) LIST_Y (GAME_C*LIST_W) HEADFOOT_H + textalign ALIGN_LEFT + textvalign VALIGN_CENTER + textalignx LIST_TOFF + border WINDOW_BORDER_FULL + bordercolor 0.5 0.5 0.5 1 + forecolor 1 1 1 1 + backcolor 0 0 0 0 + outlinecolor 0.1 0.1 0.1 0.5 + visible MENU_TRUE + action + { + play "sound/misc/menu1.wav"; + uiScript ServerSort 1; + + setitemcolor grpColumn backcolor 0 0 0 0; + setitemcolor grpTabs backcolor 0 0 0 0; + setitemcolor game backcolor 0.3 1 1 0.3; + setitemcolor gameColumn backcolor 0.2 0.6 0.6 0.1; + } + } + + itemDef + { + name gameColumn + group grpColumn + rect (LIST_X+(SERVER_C*LIST_W)) (LIST_Y+HEADFOOT_H) (GAME_C*LIST_W) (LIST_H-(2*HEADFOOT_H)) + style WINDOW_STYLE_FILLED + border WINDOW_BORDER_FULL + backcolor 0 0 0 0 + bordersize 1 + bordercolor .5 .5 .5 1 + visible MENU_TRUE + decoration + } + + itemDef + { + name map + group grpTabs + type ITEM_TYPE_BUTTON + text "Map Name" + textscale .33 + style WINDOW_STYLE_FILLED + rect (LIST_X+((SERVER_C+GAME_C)*LIST_W)) LIST_Y (MAP_C*LIST_W) HEADFOOT_H + textalign ALIGN_LEFT + textvalign VALIGN_CENTER + textalignx LIST_TOFF + border WINDOW_BORDER_FULL + bordercolor 0.5 0.5 0.5 1 + forecolor 1 1 1 1 + backcolor 0 0 0 0 + outlinecolor 0.1 0.1 0.1 0.5 + visible MENU_TRUE + action + { + play "sound/misc/menu1.wav"; + uiScript ServerSort 2; + + setitemcolor grpColumn backcolor 0 0 0 0; + setitemcolor grpTabs backcolor 0 0 0 0; + setitemcolor map backcolor 0.3 1 1 0.3; + setitemcolor mapColumn backcolor 0.2 0.6 0.6 0.1; + } + } + + itemDef + { + name mapColumn + group grpColumn + rect (LIST_X+((SERVER_C+GAME_C)*LIST_W)) (LIST_Y+HEADFOOT_H) (MAP_C*LIST_W) (LIST_H-(2*HEADFOOT_H)) + style WINDOW_STYLE_FILLED + border WINDOW_BORDER_FULL + backcolor 0 0 0 0 + bordersize 1 + bordercolor .5 .5 .5 1 + visible MENU_TRUE + decoration + } + + itemDef + { + name players + group grpTabs + text "Players" + type ITEM_TYPE_BUTTON + textscale .33 + style WINDOW_STYLE_FILLED + rect (LIST_X+((SERVER_C+GAME_C+MAP_C)*LIST_W)) LIST_Y (PLAYERS_C*LIST_W) HEADFOOT_H + textalign ALIGN_LEFT + textvalign VALIGN_CENTER + textalignx LIST_TOFF + border WINDOW_BORDER_FULL + bordercolor 0.5 0.5 0.5 1 + forecolor 1 1 1 1 + backcolor 0 0 0 0 + outlinecolor 0.1 0.1 0.1 0.5 + visible MENU_TRUE + action + { + play "sound/misc/menu1.wav"; + uiScript ServerSort 3; + + setitemcolor grpColumn backcolor 0 0 0 0; + setitemcolor grpTabs backcolor 0 0 0 0; + setitemcolor players backcolor 0.3 1 1 0.3; + setitemcolor playerColumn backcolor 0.2 0.6 0.6 0.1; + } + } + + itemDef + { + name playerColumn + group grpColumn + rect (LIST_X+((SERVER_C+GAME_C+MAP_C)*LIST_W)) (LIST_Y+HEADFOOT_H) (PLAYERS_C*LIST_W) (LIST_H-(2*HEADFOOT_H)) + style WINDOW_STYLE_FILLED + border WINDOW_BORDER_FULL + backcolor 0 0 0 0 + bordersize 1 + bordercolor .5 .5 .5 1 + visible MENU_TRUE + decoration + } + + itemDef + { + name Ping + group grpTabs + text "Ping" + type ITEM_TYPE_BUTTON + textscale .33 + style WINDOW_STYLE_FILLED + rect (LIST_X+((SERVER_C+GAME_C+MAP_C+PLAYERS_C)*LIST_W)) LIST_Y (PING_C*LIST_W) HEADFOOT_H + textalign ALIGN_LEFT + textvalign VALIGN_CENTER + textalignx LIST_TOFF + border WINDOW_BORDER_FULL + bordercolor 0.5 0.5 0.5 1 + forecolor 1 1 1 1 + backcolor 0.3 1 1 0.3 + outlinecolor 0.1 0.1 0.1 0.5 + visible MENU_TRUE + action + { + play "sound/misc/menu1.wav"; + uiScript ServerSort 4; + + setitemcolor grpColumn backcolor 0 0 0 0; + setitemcolor grpTabs backcolor 0 0 0 0; + setitemcolor ping backcolor 0.3 1 1 0.3; + setitemcolor pingColumn backcolor 0.2 0.6 0.6 0.1; + } + } + + itemDef + { + name pingColumn + group grpColumn + rect (LIST_X+((SERVER_C+GAME_C+MAP_C+PLAYERS_C)*LIST_W)) (LIST_Y+HEADFOOT_H) (PING_C*LIST_W) (LIST_H-(2*HEADFOOT_H)) + style WINDOW_STYLE_FILLED + border WINDOW_BORDER_FULL + backcolor 0.2 0.6 0.6 0.1 + bordersize 1 + bordercolor .5 .5 .5 1 + visible MENU_TRUE + decoration + } + + // SERVER LIST // + + itemDef + { + name serverlist + rect LIST_X (LIST_Y+HEADFOOT_H) LIST_W (LIST_H-(2*HEADFOOT_H)) + type ITEM_TYPE_LISTBOX + style WINDOW_STYLE_EMPTY + elementwidth 120 + elementheight 20 + textscale .33 + elementtype LISTBOX_TEXT + feeder FEEDER_SERVERS + border WINDOW_BORDER_FULL + bordercolor 0.5 0.5 0.5 1 + forecolor 1 1 1 1 + backcolor 0.2 0.2 0.2 1 + outlinecolor 0.1 0.3 0.3 0.4 + visible MENU_TRUE + columns 5 + LIST_TOFF ((SERVER_C*LIST_W)-(3*LIST_TOFF)) ALIGN_LEFT + (LIST_TOFF+((SERVER_C)*LIST_W)) ((GAME_C*LIST_W)-(3*LIST_TOFF)) ALIGN_LEFT + (LIST_TOFF+((SERVER_C+GAME_C)*LIST_W)) ((MAP_C*LIST_W)-(3*LIST_TOFF)) ALIGN_LEFT + (LIST_TOFF+((SERVER_C+GAME_C+MAP_C)*LIST_W)) ((PLAYERS_C*LIST_W)-(3*LIST_TOFF)) ALIGN_LEFT + (LIST_TOFF+((SERVER_C+GAME_C+MAP_C+PLAYERS_C)*LIST_W)) ((PING_C*LIST_W)-(3*LIST_TOFF)) ALIGN_LEFT + + doubleClick { uiScript JoinServer } + } + + + // DATE AND MESSAGE OF THE DAY // + + itemDef + { + name refreshdate + ownerdraw UI_SERVERREFRESHDATE + textscale .33 + rect LIST_X (LIST_Y+(LIST_H-HEADFOOT_H)) (LIST_W/2) HEADFOOT_H + textalign ALIGN_LEFT + textvalign VALIGN_CENTER + textalignx LIST_TOFF + forecolor 1 1 1 1 + border WINDOW_BORDER_FULL + bordercolor .5 .5 .5 1 + visible MENU_TRUE + decoration + } + + itemDef + { + name messageoftheday + ownerdraw UI_SERVERMOTD + textscale .33 + rect (LIST_X+(LIST_W/2)) (LIST_Y+(LIST_H-HEADFOOT_H)) (LIST_W/2) HEADFOOT_H + textalign ALIGN_LEFT + textvalign VALIGN_CENTER + textalignx LIST_TOFF + forecolor 1 1 1 1 + border WINDOW_BORDER_FULL + bordercolor .5 .5 .5 1 + visible MENU_TRUE + decoration + } + + + // BOTTOM BUTTONS // + + itemDef + { + name password + text "Set Password" + type ITEM_TYPE_BUTTON + textscale .4 + style WINDOW_STYLE_EMPTY + rect BOT_X BOT_Y BOTBUTT_W BOTBUTT_H + textalign ALIGN_CENTER + textvalign VALIGN_CENTER + forecolor 1 1 1 1 + visible MENU_TRUE + action + { + play "sound/misc/menu1.wav"; + open password_popmenu + } + } + + itemDef + { + name createFavorite + text "Create Favorite" + type ITEM_TYPE_BUTTON + textscale .4 + style WINDOW_STYLE_EMPTY + rect (BOT_X+BOTBUTT_W) BOT_Y BOTBUTT_W BOTBUTT_H + textalign ALIGN_CENTER + textvalign VALIGN_CENTER + forecolor 1 1 1 1 + visible MENU_TRUE + action + { + play "sound/misc/menu1.wav"; + open createfavorite_popmenu + } + } + + itemDef + { + name addFavorite + text "Add Favorite" + type ITEM_TYPE_BUTTON + textscale .4 + style WINDOW_STYLE_EMPTY + ownerdrawFlag UI_SHOW_NOTFAVORITESERVERS + rect (BOT_X+(2*BOTBUTT_W)) BOT_Y BOTBUTT_W BOTBUTT_H + textalign ALIGN_CENTER + textvalign VALIGN_CENTER + forecolor 1 1 1 1 + visible MENU_TRUE + action + { + play "sound/misc/menu1.wav"; + uiScript addFavorite + } + } + + itemDef + { + name delfavorite + text "Delete Favorite" + type ITEM_TYPE_BUTTON + textscale .4 + style WINDOW_STYLE_EMPTY + ownerdrawFlag UI_SHOW_FAVORITESERVERS + rect (BOT_X+(2*BOTBUTT_W)) BOT_Y BOTBUTT_W BOTBUTT_H + textalign ALIGN_CENTER + textvalign VALIGN_CENTER + forecolor 1 1 1 1 + visible MENU_TRUE + action + { + play "sound/misc/menu1.wav"; + uiScript DeleteFavorite; + uiScript UpdateFilter + } + } + + itemDef + { + name serverinfo + text "Server Info" + type ITEM_TYPE_BUTTON + textscale .4 + style WINDOW_STYLE_EMPTY + rect (BOT_X+(3*BOTBUTT_W)) BOT_Y BOTBUTT_W BOTBUTT_H + textalign ALIGN_CENTER + textvalign VALIGN_CENTER + forecolor 1 1 1 1 + visible MENU_TRUE + action + { + play "sound/misc/menu1.wav"; + open serverinfo_popmenu + } + } + + itemDef + { + name findplayer + text "Find a Friend" + type ITEM_TYPE_BUTTON + textscale .4 + style WINDOW_STYLE_EMPTY + rect (BOT_X+(4*BOTBUTT_W)) BOT_Y BOTBUTT_W BOTBUTT_H + textalign ALIGN_CENTER + textvalign VALIGN_CENTER + forecolor 1 1 1 1 + visible MENU_TRUE + action + { + play "sound/misc/menu1.wav"; + open findplayer_popmenu + } + } + + + + // BACK CREATE JOIN // + + itemDef + { + name createServer + text "Create Server" + textscale .5 + style WINDOW_STYLE_EMPTY + type ITEM_TYPE_BUTTON + rect (BCJ_X+ARROW_W) BCJ_Y (BCJ_W-(2*ARROW_W)) BCJ_H + textalign ALIGN_CENTER + textvalign VALIGN_CENTER + forecolor 1 1 1 1 + visible MENU_TRUE + action + { + play "sound/misc/menu1.wav"; + open createserver + } + } + + + itemDef + { + name back + style WINDOW_STYLE_SHADER + background "ui/assets/backarrow.tga" + rect BCJ_X BCJ_Y ARROW_H ARROW_W + aspectBias ALIGN_LEFT + visible MENU_TRUE + action + { + play "sound/misc/menu4.wav"; + close joinserver + } + + mouseEnter + { + hide back; + show back_alt + } + } + + itemDef + { + name back_alt + style WINDOW_STYLE_SHADER + background "ui/assets/backarrow_alt.tga" + rect BCJ_X BCJ_Y ARROW_H ARROW_W + aspectBias ALIGN_LEFT + backcolor 0 0 0 0 + forecolor 1 1 1 1 + visible MENU_FALSE + type ITEM_TYPE_BUTTON + + text "Back" + textalign ALIGN_LEFT + textvalign VALIGN_CENTER + textalignx ARROW_W + textscale .6 + + mouseExit + { + hide back_alt; + show back + } + + action + { + play "sound/misc/menu4.wav"; + close joinserver + } + } + + + + + itemDef + { + name accept + style WINDOW_STYLE_SHADER + rect ((BCJ_X+BCJ_W)-ARROW_W) BCJ_Y ARROW_H ARROW_W + aspectBias ALIGN_RIGHT + background "ui/assets/forwardarrow.tga" + backcolor 0 0 0 0 + forecolor 1 1 1 1 + visible MENU_TRUE + mouseEnter + { + hide accept; + show accept_alt + } + + action + { + play "sound/misc/menu1.wav"; + uiScript JoinServer + } + } + + itemDef + { + name accept_alt + style WINDOW_STYLE_SHADER + rect ((BCJ_X+BCJ_W)-ARROW_W) BCJ_Y ARROW_H ARROW_W + aspectBias ALIGN_RIGHT + background "ui/assets/forwardarrow_alt.tga" + backcolor 0 0 0 0 + type ITEM_TYPE_BUTTON + forecolor 1 1 1 1 + visible MENU_FALSE + + text "Join" + textalign ALIGN_RIGHT + textvalign VALIGN_CENTER + textalignx -ARROW_W + textscale .6 + + mouseExit + { + hide accept_alt; + show accept + } + + action + { + play "sound/misc/menu1.wav"; + uiScript JoinServer + } + } + } +} diff --git a/assets/ui/loading.menu b/assets/ui/loading.menu new file mode 100644 index 0000000..b877ce9 --- /dev/null +++ b/assets/ui/loading.menu @@ -0,0 +1,223 @@ +#include "ui/menudef.h" + +{ + +#define W 640 +#define H 480 +#define BORDER 10 + +#define SHOT_W 320 +#define SHOT_H 240 +#define SHOT_X (W-(BORDER+SHOT_W)) +#define SHOT_Y BORDER + +#define INFO_X BORDER +#define INFO_W (W-((3*BORDER)+SHOT_W)) +#define LEVEL_Y BORDER +#define LEVEL_H 30 +#define HOST_Y (LEVEL_H+(2*BORDER)) +#define HOST_H 30 +#define MOTD_Y (LEVEL_H+HOST_H+(3*BORDER)) +#define MOTD_H ((BORDER+SHOT_H)-MOTD_Y) + +#define MAIN_W (W-(2*BORDER)) +#define LABEL_W 180 +#define LABEL_X (W-(LABEL_W+BORDER)) +#define BAR_H ((H-((6*BORDER)+SHOT_H))/4) +#define BAR_W (MAIN_W-(LABEL_W+BORDER)) +#define BAR_X BORDER +#define MEDIA_Y (H-((4*BORDER)+(4*BAR_H))) +#define BUILD_Y (H-((3*BORDER)+(3*BAR_H))) +#define CHAR_Y (H-((2*BORDER)+(2*BAR_H))) +#define OVER_Y (H-(BORDER+BAR_H)) + + assetGlobalDef + { + cursor "ui/assets/3_cursor3" // 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" 26 // font + smallFont "fonts/smallfont" 20 // font + bigFont "fonts/bigfont" 34 // font + } + + menuDef + { + name "Loading" + rect 0 0 W H + fullScreen MENU_TRUE + aspectBias ASPECT_NONE + + itemDef + { + name background + rect 0 0 W H + style WINDOW_STYLE_FILLED + backcolor 0 0 0 1 + visible MENU_TRUE + decoration + } + + itemDef + { + name "levelname" + rect INFO_X LEVEL_Y INFO_W LEVEL_H + visible MENU_TRUE + decoration + forecolor 1 1 1 1 + textalign ALIGN_LEFT + textvalign VALIGN_CENTER + textstyle ITEM_TEXTSTYLE_NORMAL + textscale 0.4 + ownerdraw CG_LOAD_LEVELNAME + } + + itemDef + { + name "hostname" + rect INFO_X HOST_Y INFO_W HOST_H + visible MENU_TRUE + decoration + forecolor 1 1 1 1 + textalign ALIGN_LEFT + textvalign VALIGN_CENTER + textstyle ITEM_TEXTSTYLE_NORMAL + textscale 0.4 + ownerdraw CG_LOAD_HOSTNAME + } + + itemDef + { + name "motd" + rect INFO_X MOTD_Y INFO_W MOTD_H + visible MENU_TRUE + decoration + forecolor 1 1 1 1 + textalign ALIGN_LEFT + textvalign VALIGN_CENTER + textstyle ITEM_TEXTSTYLE_NORMAL + textscale 0.4 + ownerdraw CG_LOAD_MOTD + } + + itemDef + { + name "levelshot" + rect SHOT_X SHOT_Y SHOT_W SHOT_H + visible MENU_TRUE + decoration + forecolor 1 1 1 1 + ownerdraw CG_LOAD_LEVELSHOT + + border WINDOW_BORDER_FULL + borderSize 1.0 + borderColor 0.5 0.5 0.5 1 + } + + itemDef + { + name "media" + rect BAR_X MEDIA_Y BAR_W BAR_H + visible MENU_TRUE + decoration + forecolor 0.0 0.8 1 1 + ownerdraw CG_LOAD_MEDIA + textalign ALIGN_CENTER + textstyle ITEM_TEXTSTYLE_NEON + textscale 0.5 + borderSize 1.0 + } + + itemDef + { + name "medialabel" + style WINDOW_STYLE_EMPTY + textscale 0.6 + rect LABEL_X MEDIA_Y LABEL_W BAR_H + textalign ALIGN_RIGHT + textvalign VALIGN_CENTER + forecolor 0.0 0.8 1 1 + visible MENU_TRUE + decoration + ownerdraw CG_LOAD_MEDIA_LABEL + } + + itemDef + { + name "buildables" + rect 20 340 380 30 + rect BAR_X BUILD_Y BAR_W BAR_H + visible MENU_TRUE + decoration + forecolor 0.0 0.8 1 1 + ownerdraw CG_LOAD_BUILDABLES + textalign ALIGN_CENTER + textstyle ITEM_TEXTSTYLE_NEON + textscale 0.5 + borderSize 1.0 + } + + itemDef + { + name "buildableslabel" + style WINDOW_STYLE_EMPTY + textscale 0.6 + rect LABEL_X BUILD_Y LABEL_W BAR_H + textalign ALIGN_RIGHT + textvalign VALIGN_CENTER + forecolor 0.0 0.8 1 1 + visible MENU_TRUE + decoration + ownerdraw CG_LOAD_BUILDABLES_LABEL + } + + itemDef + { + name "charmodel" + rect BAR_X CHAR_Y BAR_W BAR_H + visible MENU_TRUE + decoration + forecolor 0.0 0.8 1 1 + ownerdraw CG_LOAD_CHARMODEL + textalign ALIGN_CENTER + textstyle ITEM_TEXTSTYLE_NEON + textscale 0.5 + borderSize 1.0 + } + + itemDef + { + name "charmodellabel" + style WINDOW_STYLE_EMPTY + textscale 0.6 + rect LABEL_X CHAR_Y LABEL_W BAR_H + textalign ALIGN_RIGHT + textvalign VALIGN_CENTER + forecolor 0.0 0.8 1 1 + visible MENU_TRUE + decoration + ownerdraw CG_LOAD_CHARMODEL_LABEL + } + + itemDef + { + name "overall" + rect BAR_X OVER_Y MAIN_W BAR_H + visible MENU_TRUE + decoration + forecolor 0.0 0.8 1 1 + ownerdraw CG_LOAD_OVERALL + textalign ALIGN_CENTER + textstyle ITEM_TEXTSTYLE_NEON + textscale 0.5 + borderSize 1.0 + } + } +} diff --git a/assets/ui/main.menu b/assets/ui/main.menu new file mode 100644 index 0000000..fddc0d9 --- /dev/null +++ b/assets/ui/main.menu @@ -0,0 +1,228 @@ +// vim:ft=menu +#include "ui/menudef.h" +#include "ui/menu_bool.h" + +{ + assetGlobalDef + { + font "fonts/font" 26// font + smallFont "fonts/smallfont" 20// font + bigFont "fonts/bigfont" 34// 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 + shadowColor 0.1 0.1 0.1 0.80 // shadow color + } + + menuDef + { + name main + fullscreen true + rect 0 0 640 480// Size and position of the menu + visible true // Visible on open + focuscolor 1 .75 0 1// Menu focus color for text and items + background "ui/assets/mainmenu.jpg" + aspectbias ASPECT_NONE + + onOpen + { + uiScript stopRefresh + playlooped "sound/ui/heartbeat.wav" + } + + onESC + { + open quit_popmenu + } + + itemDef + { + name splashmodel + rect 0 0 640 480 + type ITEM_TYPE_MODEL + style WINDOW_STYLE_EMPTY + asset_model "models/splash/splash_screen.md3" + model_fovx 32.0 + model_fovy 24.0 + model_angle 180 + visible MENU_TRUE + decoration + } + +#define X (472) +#define Y (20) +#define W (128) +#define ELEM_H (20) + + itemDef + { + name mainmenu + text "Play" + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_EMPTY + textstyle ITEM_TEXTSTYLE_NORMAL + rect X Y W ELEM_H + textalign ALIGN_RIGHT + textscale .416 + forecolor 1 1 1 1 + visible MENU_TRUE + action + { + play "sound/misc/menu1.wav"; + open joinserver + } + } + + itemDef + { + name mainmenu + text "News" + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_EMPTY + textstyle ITEM_TEXTSTYLE_NORMAL + textscale .416 + rect X (Y+(1*ELEM_H)) W ELEM_H + textalign ALIGN_RIGHT + backcolor 0 0 0 0 + forecolor 1 1 1 1 + visible MENU_TRUE + action + { + play "sound/misc/menu1.wav"; + open news_menu + } + } + + itemDef + { + name mainmenu + text "Options" + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_EMPTY + textstyle ITEM_TEXTSTYLE_NORMAL + textscale .416 + rect X (Y+(2*ELEM_H)) W ELEM_H + textalign ALIGN_RIGHT + backcolor 0 0 0 0 + forecolor 1 1 1 1 + visible MENU_TRUE + action + { + play "sound/misc/menu1.wav"; + open simple_options + } + } + + itemDef + { + name mainmenu + text "Demos" + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_EMPTY + textstyle ITEM_TEXTSTYLE_NORMAL + textscale .416 + rect X (Y+(3*ELEM_H)) W ELEM_H + textalign ALIGN_RIGHT + backcolor 0 0 0 0 + forecolor 1 1 1 1 + visible MENU_TRUE + action + { + play "sound/misc/menu1.wav"; + open demo + } + } + + itemDef + { + name browse_for_folders + text "Browse Folders" + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_EMPTY + textstyle ITEM_TEXTSTYLE_NORMAL + rect X (Y+(4*ELEM_H)) W ELEM_H + textscale .416 + textalign ALIGN_RIGHT + forecolor 1 1 1 1 + visible MENU_TRUE + action + { + play "sound/misc/menu1.wav"; + open browse_folders + } + } + + itemDef + { + name check_for_updates + text "Check for Updates" + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_EMPTY + textstyle ITEM_TEXTSTYLE_NORMAL + rect X (Y+(5*ELEM_H)) W ELEM_H + textscale .416 + textalign ALIGN_RIGHT + forecolor 1 1 1 1 + visible MENU_TRUE + action + { + play "sound/misc/menu1.wav"; + open install_update + } + } + + itemDef + { + name mainmenu + text "Quit" + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_EMPTY + textstyle ITEM_TEXTSTYLE_NORMAL + rect X (Y+(6*ELEM_H)) W ELEM_H + textscale .416 + textalign ALIGN_RIGHT + forecolor 1 1 1 1 + visible MENU_TRUE + action + { + play "sound/misc/menu1.wav"; + open quit_popmenu + } + } + + itemDef + { + name copyright + type ITEM_TYPE_TEXT + text "Copyright (C) 2015-2019 GrangerHub" + style WINDOW_STYLE_EMPTY + textstyle ITEM_TEXTSTYLE_NORMAL + textscale .30 + rect 0 405 640 30 + textalign ALIGN_CENTER + forecolor .75 .75 .75 .75 + visible MENU_TRUE + decoration + } + itemDef + { + name copyright + type ITEM_TYPE_TEXT + text "Copyright (C) 2005-2009 darklegion development" + style WINDOW_STYLE_EMPTY + textstyle ITEM_TEXTSTYLE_NORMAL + textscale .30 + rect 0 420 640 30 + textalign ALIGN_CENTER + forecolor .75 .75 .75 .75 + visible MENU_TRUE + decoration + } + } +} diff --git a/assets/ui/menu_bool.h b/assets/ui/menu_bool.h new file mode 100644 index 0000000..38d1562 --- /dev/null +++ b/assets/ui/menu_bool.h @@ -0,0 +1,10 @@ +// Victor Roemer (wtfbbqhax), . +#ifndef MENU_BOOL_H +#define MENU_BOOL_H + +enum { + false, + true +}; + +#endif diff --git a/assets/ui/menudef.h b/assets/ui/menudef.h new file mode 100644 index 0000000..f83ba53 --- /dev/null +++ b/assets/ui/menudef.h @@ -0,0 +1,225 @@ +#ifndef MENUDEF_H +#define MENUDEF_H + +enum +{ + ITEM_TYPE_ANY = -1, // invalid type + ITEM_TYPE_NONE, // no specified type + ITEM_TYPE_TEXT, // simple text + ITEM_TYPE_BUTTON, // button, basically text with a border + ITEM_TYPE_RADIOBUTTON, // toggle button, may be grouped + ITEM_TYPE_CHECKBOX, // check box + ITEM_TYPE_EDITFIELD, // editable text, associated with a cvar + ITEM_TYPE_SAYFIELD, // the chat field + ITEM_TYPE_CYCLE, // cycling list + ITEM_TYPE_LISTBOX, // scrollable list + ITEM_TYPE_COMBOBOX, // drop down scrollable list + ITEM_TYPE_MODEL, // model + ITEM_TYPE_OWNERDRAW, // owner draw, has an associated ownerdraw number + ITEM_TYPE_NUMERICFIELD, // editable text, associated with a cvar + ITEM_TYPE_SLIDER, // mouse speed, volume, etc. + ITEM_TYPE_YESNO, // boolean cvar setting + ITEM_TYPE_MULTI, // multiple list setting, enumerated + ITEM_TYPE_BIND // keyboard control configuration +}; + +#define ALIGN_LEFT 0 // left alignment +#define ALIGN_CENTER 1 // center alignment +#define ALIGN_RIGHT 2 // right alignment +#define ASPECT_NONE 3 // no aspect compensation +#define ALIGN_NONE 4 + +enum +{ + VALIGN_BOTTOM, // bottom alignment + VALIGN_CENTER, // center alignment + VALIGN_TOP, // top alignment + VALIGN_NONE +}; + +enum +{ + ITEM_TEXTSTYLE_NORMAL, // normal text + ITEM_TEXTSTYLE_BLINK, // fast blinking + ITEM_TEXTSTYLE_PULSE, // slow pulsing + ITEM_TEXTSTYLE_SHADOWED, // drop shadow (need a color for this) + ITEM_TEXTSTYLE_OUTLINED, // apparently unimplemented + ITEM_TEXTSTYLE_OUTLINESHADOWED, // apparently unimplemented + ITEM_TEXTSTYLE_SHADOWEDMORE, // drop shadow (need a color for this) + ITEM_TEXTSTYLE_NEON // glow (need a color for this) +}; + +enum +{ + WINDOW_BORDER_NONE, // no border + WINDOW_BORDER_FULL, // full border based on border color (single pixel) + WINDOW_BORDER_HORZ, // horizontal borders only + WINDOW_BORDER_VERT, // vertical borders only + WINDOW_BORDER_KCGRADIENT // horizontal border using the gradient bars +}; + +enum +{ + WINDOW_STYLE_EMPTY, // no background + WINDOW_STYLE_FILLED, // filled with background color + WINDOW_STYLE_GRADIENT, // gradient bar based on background color + WINDOW_STYLE_SHADER, // use background shader + WINDOW_STYLE_TEAMCOLOR, // team color + WINDOW_STYLE_CINEMATIC // cinematic +}; + +#define MENU_TRUE 1 // uh.. true +#define MENU_FALSE 0 // and false + +enum +{ + HUD_VERTICAL, + HUD_HORIZONTAL +}; + +// list box element types +enum +{ + LISTBOX_TEXT, + LISTBOX_IMAGE +}; + +// list feeders +enum +{ + FEEDER_SERVERS, // servers + FEEDER_MAPS, // all maps available, in graphic format + FEEDER_ALIENTEAM_LIST, // alien team members + FEEDER_HUMANTEAM_LIST, // human team members + FEEDER_TEAM_LIST, // team members for team voting + FEEDER_PLAYER_LIST, // players + FEEDER_NEWS, // news + FEEDER_MODS, // list of available mods + FEEDER_DEMOS, // list of available demo files + FEEDER_SERVERSTATUS, // server status + FEEDER_FINDPLAYER, // find player + FEEDER_CINEMATICS, // cinematics + + FEEDER_TREMTEAMS, // teams + FEEDER_TREMALIENCLASSES, // alien classes + FEEDER_TREMHUMANITEMS, // human items + FEEDER_TREMHUMANARMOURYBUY, // human buy + FEEDER_TREMHUMANARMOURYSELL, // human sell + FEEDER_TREMALIENUPGRADE, // alien upgrade + FEEDER_TREMALIENBUILD, // alien buildables + FEEDER_TREMHUMANBUILD, // human buildables + FEEDER_IGNORE_LIST, // ignored players + FEEDER_HELP_LIST, // help topics + FEEDER_RESOLUTIONS, // display resolutions + FEEDER_TREMVOICECMD, // voice commands + FEEDER_GITHUB_RELEASE // latest update info +}; + +// display flags +#define UI_SHOW_FAVORITESERVERS 0x00000001 +#define UI_SHOW_NOTFAVORITESERVERS 0x00000002 + +#define UI_SHOW_VOTEACTIVE 0x00000004 +#define UI_SHOW_CANVOTE 0x00000008 +#define UI_SHOW_TEAMVOTEACTIVE 0x00000010 +#define UI_SHOW_CANTEAMVOTE 0x00000020 + +#define UI_SHOW_NOTSPECTATING 0x00000040 + +// owner draw types +enum +{ + CG_PLAYER_HEALTH, + CG_PLAYER_HEALTH_CROSS, + CG_PLAYER_AMMO_VALUE, + CG_PLAYER_CLIPS_VALUE, + CG_PLAYER_BUILD_TIMER, + CG_PLAYER_CREDITS_VALUE, + CG_PLAYER_CREDITS_VALUE_NOPAD, + CG_PLAYER_STAMINA, + CG_PLAYER_STAMINA_1, + CG_PLAYER_STAMINA_2, + CG_PLAYER_STAMINA_3, + CG_PLAYER_STAMINA_4, + CG_PLAYER_STAMINA_BOLT, + CG_PLAYER_BOOST_BOLT, + CG_PLAYER_CLIPS_RING, + CG_PLAYER_BUILD_TIMER_RING, + CG_PLAYER_SELECT, + CG_PLAYER_SELECTTEXT, + CG_PLAYER_WEAPONICON, + CG_PLAYER_WALLCLIMBING, + CG_PLAYER_BOOSTED, + CG_PLAYER_POISON_BARBS, + CG_PLAYER_ALIEN_SENSE, + CG_PLAYER_HUMAN_SCANNER, + CG_PLAYER_USABLE_BUILDABLE, + CG_PLAYER_CHARGE_BAR_BG, + CG_PLAYER_CHARGE_BAR, + CG_PLAYER_CROSSHAIR, + CG_PLAYER_LOCATION, + CG_TEAMOVERLAY, + CG_PLAYER_CREDITS_FRACTION, + + CG_KILLER, + CG_SPECTATORS, + CG_FOLLOW, + +// loading screen + CG_LOAD_LEVELSHOT, + CG_LOAD_MEDIA, + CG_LOAD_MEDIA_LABEL, + CG_LOAD_BUILDABLES, + CG_LOAD_BUILDABLES_LABEL, + CG_LOAD_CHARMODEL, + CG_LOAD_CHARMODEL_LABEL, + CG_LOAD_OVERALL, + CG_LOAD_LEVELNAME, + CG_LOAD_MOTD, + CG_LOAD_HOSTNAME, + + CG_FPS, + CG_FPS_FIXED, + CG_TIMER, + CG_TIMER_MINS, + CG_TIMER_SECS, + CG_SNAPSHOT, + CG_LAGOMETER, + CG_SPEEDOMETER, + CG_PLAYER_CROSSHAIRNAMES, + CG_STAGE_REPORT_TEXT, + CG_ALIENS_SCORE_LABEL, + CG_HUMANS_SCORE_LABEL, + CG_DEMO_PLAYBACK, + CG_DEMO_RECORDING, + + CG_CONSOLE, + CG_TUTORIAL, + CG_CLOCK, + CG_KILLFEED, + CG_PLAYER_THZ_SCANNER, + + UI_NETSOURCE, + UI_NETMAPPREVIEW, + UI_NETMAPCINEMATIC, + UI_SERVERREFRESHDATE, + UI_SERVERMOTD, + UI_GLINFO, + UI_KEYBINDSTATUS, + UI_SELECTEDMAPPREVIEW, + UI_SELECTEDMAPNAME, + + UI_TEAMINFOPANE, + UI_ACLASSINFOPANE, + UI_AUPGRADEINFOPANE, + UI_HITEMINFOPANE, + UI_HBUYINFOPANE, + UI_HSELLINFOPANE, + UI_ABUILDINFOPANE, + UI_HBUILDINFOPANE, + UI_HELPINFOPANE, + + UI_VOICECMDINFOPANE +}; + +#endif diff --git a/assets/ui/menus.txt b/assets/ui/menus.txt new file mode 100644 index 0000000..067006c --- /dev/null +++ b/assets/ui/menus.txt @@ -0,0 +1,24 @@ +// menu defs +// +{ + loadMenu { "ui/main.menu" } + loadMenu { "ui/news.menu" } + loadMenu { "ui/joinserver.menu" } + loadMenu { "ui/options.menu" } + loadMenu { "ui/createserver.menu" } + loadMenu { "ui/mod.menu" } + loadMenu { "ui/demo_error.menu" } + loadMenu { "ui/demo.menu" } + loadMenu { "ui/connect.menu" } + loadMenu { "ui/password.menu" } + loadMenu { "ui/quit.menu" } + loadMenu { "ui/error.menu" } + loadMenu { "ui/download.menu" } + loadMenu { "ui/drop.menu" } + loadMenu { "ui/serverinfo.menu" } + loadMenu { "ui/findplayer.menu" } + loadMenu { "ui/quitcredit.menu" } + loadMenu { "ui/createfavorite.menu" } + loadMenu { "ui/install_update.menu" } + loadMenu { "ui/folders.menu" } +} diff --git a/assets/ui/mod.menu b/assets/ui/mod.menu new file mode 100644 index 0000000..38bee62 --- /dev/null +++ b/assets/ui/mod.menu @@ -0,0 +1,108 @@ +#include "ui/menudef.h" + +{ + \\ MOD \\ + +#define W 300 +#define H 240 +#define BUTT_W 45 +#define BUTT_H 35 +#define BORDER 10 + + menuDef + { + name "mod" + visible MENU_FALSE + fullscreen MENU_FALSE + rect (320-(W/2)) (240-(H/2)) W H + focusColor 1 .75 0 1 + style WINDOW_STYLE_FILLED + border WINDOW_BORDER_FULL + popup + onEsc + { + close mod + } + onOpen + { + uiScript loadMods + } + + itemDef + { + name window + rect 0 0 W H + style WINDOW_STYLE_FILLED + backcolor 0 0 0 1 + visible MENU_TRUE + decoration + + border WINDOW_BORDER_FULL + borderSize 1.0 + borderColor 0.5 0.5 0.5 1 + } + + itemDef + { + name modlist + rect BORDER BORDER (W-(2*BORDER)) (H-(BUTT_H+BORDER)) + type ITEM_TYPE_LISTBOX + style WINDOW_STYLE_EMPTY + elementwidth 120 + elementheight 20 + textscale .25 + elementtype LISTBOX_TEXT + feeder FEEDER_MODS + textalign 3 + textaligny 14 + border WINDOW_BORDER_FULL + bordercolor 0.5 0.5 0.5 0.5 + forecolor 1 1 1 1 + backcolor 0.2 0.2 0.2 1 + outlinecolor 0.1 0.1 0.1 0.5 + visible MENU_TRUE + doubleClick + { + play "sound/misc/menu1.wav"; + uiScript RunMod + } + } + + itemDef + { + name load + text "Load" + type ITEM_TYPE_BUTTON + textscale .25 + rect (W-(2*BUTT_W)) (H-BUTT_H) BUTT_W BUTT_H + textalign ALIGN_CENTER + textvalign VALIGN_CENTER + forecolor 1 1 1 1 + visible MENU_TRUE + action + { + play "sound/misc/menu1.wav"; + close mod; + uiScript RunMod + } + } + + itemDef + { + name cancel + text "Cancel" + type ITEM_TYPE_BUTTON + textscale .25 + rect (W-BUTT_W) (H-BUTT_H) BUTT_W BUTT_H + textalign ALIGN_CENTER + textvalign VALIGN_CENTER + forecolor 1 1 1 1 + visible MENU_TRUE + action + { + play "sound/misc/menu3.wav"; + close mod + } + } + } +} diff --git a/assets/ui/news.menu b/assets/ui/news.menu new file mode 100644 index 0000000..99d8d68 --- /dev/null +++ b/assets/ui/news.menu @@ -0,0 +1,102 @@ +#include "ui/menudef.h" + +{ + \\ NEWS POPUP MENU \\ + +#define W 400 +#define H 400 +#define BUTT_W 45 +#define BUTT_H 35 +#define TITLE_H 35 +#define BORDER 10 +#define LIST_W (W-(2*BORDER)) + + menuDef + { + name "news_menu" + visible MENU_FALSE + fullscreen MENU_FALSE + rect (320-(W/2)) (240-(H/2)) W H + focusColor 1 .75 0 1 + style WINDOW_STYLE_FILLED + border WINDOW_BORDER_FULL + popup + onClose { } + onOpen { uiScript getNews } + onESC + { + close news_menu + } + + itemDef + { + name window + rect 0 0 W H + style WINDOW_STYLE_FILLED + backcolor 0 0 0 1 + visible MENU_TRUE + decoration + + border WINDOW_BORDER_FULL + borderSize 1.0 + borderColor 0.5 0.5 0.5 1 + } + + itemDef + { + name title + type ITEM_TYPE_TEXT + text "Tremulous News" + style WINDOW_STYLE_EMPTY + textscale .5 + textstyle ITEM_TEXTSTYLE_NORMAL + rect BORDER BORDER LIST_W TITLE_H + textalign ALIGN_CENTER + textvalign VALIGN_CENTER + decoration + forecolor 1 1 1 1 + visible MENU_TRUE + } + + itemDef + { + name newslistbox + rect BORDER ((2*BORDER)+TITLE_H) LIST_W (H-((TITLE_H+BUTT_H)+(2*BORDER))) + type ITEM_TYPE_LISTBOX + style WINDOW_STYLE_EMPTY + elementwidth 120 + elementheight 16 + textscale .25 + border WINDOW_BORDER_FULL + bordersize 1 + bordercolor .5 .5 .5 1 + elementtype LISTBOX_TEXT + feeder FEEDER_NEWS + notselectable + visible MENU_TRUE + } + + // BUTTON // + + itemDef + { + name close + text "Close" + type ITEM_TYPE_BUTTON + textscale .25 + style WINDOW_STYLE_EMPTY + rect (W-BUTT_W) (H-BUTT_H) BUTT_W BUTT_H + textalign ALIGN_CENTER + textvalign VALIGN_CENTER + forecolor 1 1 1 1 + visible MENU_TRUE + action + { + play "sound/misc/menu1.wav"; + close news_menu + } + } + } +} + + diff --git a/assets/ui/options.menu b/assets/ui/options.menu new file mode 100644 index 0000000..6427f6c --- /dev/null +++ b/assets/ui/options.menu @@ -0,0 +1,310 @@ +#include "ui/menudef.h" + +{ + \\ FRONT END OPTIONS BOX \\ + +#define X 0 +#define Y 20 +#define W 250 +#define H ((10*(ELEM_H+ELEM_GAP))+120) +#define TOFF_X (0-(W/2)) +#define ELEM_H 16 +#define ELEM_GAP 4 +#define BUTT_W 35 +#define BUTT_H 35 +#define BORDER 10 +#define RESCOMBO_OFF 8 + + menuDef + { + name "simple_options" + visible MENU_FALSE + fullscreen MENU_FALSE + rect (320-(W/2)) (240-(H/2)) W H + focusColor 1 .75 0 1 + style WINDOW_STYLE_FILLED + border WINDOW_BORDER_FULL + popup + onEsc + { + play "sound/misc/menu1.wav"; + close simple_options + } + + itemDef + { + name window + rect 0 0 W H + style WINDOW_STYLE_FILLED + backcolor 0 0 0 1 + visible MENU_TRUE + decoration + + border WINDOW_BORDER_FULL + borderSize 1.0 + borderColor 0.5 0.5 0.5 1 + } + + + + itemDef + { + type ITEM_TYPE_EDITFIELD + style WINDOW_STYLE_EMPTY + text "Name:" + cvar "name" + maxchars 26 + rect X Y W ELEM_H + textalign ALIGN_RIGHT + textalignx TOFF_X + textvalign VALIGN_CENTER + textscale .25 + forecolor 1 1 1 1 + visible MENU_TRUE + } + + itemDef + { + type ITEM_TYPE_MULTI + text "Renderer:" + cvar "cl_renderer" + cvarStrList { "OpenGL 1", "opengl1", + "OpenGL 2", "opengl2" } + rect X (Y+(ELEM_H+ELEM_GAP)) W ELEM_H + textalign ALIGN_RIGHT + textalignx TOFF_X + textvalign VALIGN_CENTER + textscale .25 + forecolor 1 1 1 1 + visible MENU_TRUE + action + { + play "sound/misc/menu1.wav"; + } + } + + itemDef + { + type ITEM_TYPE_TEXT + text "Video Mode:" + rect X (Y+(2*(ELEM_H+ELEM_GAP))) (W/2) ELEM_H + textalign ALIGN_RIGHT + textvalign VALIGN_CENTER + textscale .25 + forecolor 1 1 1 1 + visible MENU_TRUE + decoration + } + + itemDef + { + rect ((W/2)+RESCOMBO_OFF) (Y+(2*(ELEM_H+ELEM_GAP))) ((W/2)-(2*BORDER)) ELEM_H + type ITEM_TYPE_COMBOBOX + style WINDOW_STYLE_FILLED + elementwidth ((W/2)-(2*BORDER)) + elementheight ELEM_H + dropitems 5 + textscale .25 + elementtype LISTBOX_TEXT + feeder FEEDER_RESOLUTIONS + border WINDOW_BORDER_FULL + borderColor 0.5 0.5 0.5 1 + forecolor 1 1 1 1 + backcolor 0 0 0 1 + outlinecolor 0.1 0.1 0.1 0.5 + visible MENU_TRUE + doubleclick + { + play "sound/misc/menu1.wav"; + } + } + + itemDef + { + type ITEM_TYPE_SLIDER + text "Video Brightness:" + cvarfloat "r_gamma" 1 .5 2 + rect X (Y+(3*(ELEM_H+ELEM_GAP))) W ELEM_H + textalign ALIGN_RIGHT + textalignx TOFF_X + textvalign VALIGN_CENTER + textscale .25 + forecolor 1 1 1 1 + visible MENU_TRUE + } + + + + itemDef + { + type ITEM_TYPE_SLIDER + text "Effects Volume:" + cvarfloat "s_volume" 0.7 0 1 + rect X (Y+(4*(ELEM_H+ELEM_GAP))) W ELEM_H + textalign ALIGN_RIGHT + textalignx TOFF_X + textvalign VALIGN_CENTER + textscale .25 + forecolor 1 1 1 1 + visible MENU_TRUE + } + + itemDef + { + type ITEM_TYPE_SLIDER + text "Music Volume:" + cvarfloat "s_musicvolume" 0.25 0 1 + rect X (Y+(5*(ELEM_H+ELEM_GAP))) W ELEM_H + textalign ALIGN_RIGHT + textalignx TOFF_X + textvalign VALIGN_CENTER + textscale .25 + forecolor 1 1 1 1 + visible MENU_TRUE + } + + itemDef + { + type ITEM_TYPE_YESNO + text "OpenAL Sound:" + cvar "s_useOpenAL" + rect X (Y+(6*(ELEM_H+ELEM_GAP))) W ELEM_H + textalign ALIGN_RIGHT + textalignx TOFF_X + textvalign VALIGN_CENTER + textscale .25 + forecolor 1 1 1 1 + visible MENU_TRUE + action + { + play "sound/misc/menu1.wav"; + } + } + + + + itemDef + { + type ITEM_TYPE_SLIDER + text "Mouse Sensitivity:" + cvarfloat "sensitivity" 5 1 30 + rect X (Y+(7*(ELEM_H+ELEM_GAP))) W ELEM_H + textalign ALIGN_RIGHT + textalignx TOFF_X + textvalign VALIGN_CENTER + textscale .25 + forecolor 1 1 1 1 + visible MENU_TRUE + } + + itemDef + { + type ITEM_TYPE_YESNO + text "Invert Mouse:" + cvar "ui_mousePitch" + rect X (Y+(8*(ELEM_H+ELEM_GAP))) W ELEM_H + textalign ALIGN_RIGHT + textalignx TOFF_X + textvalign VALIGN_CENTER + textscale .25 + forecolor 1 1 1 1 + visible MENU_TRUE + action + { + play "sound/misc/menu1.wav"; + uiScript update ui_mousePitch + } + } + + + + itemDef + { + type ITEM_TYPE_MULTI + text "Network Connection:" + cvar "rate" + cvarFloatList { "<=28.8k" 2500 "33.6k" 3000 "56k" 4000 "ISDN" 5000 "LAN/CABLE/xDSL" 25000 } + rect X (Y+(9*(ELEM_H+ELEM_GAP))) W ELEM_H + textalign ALIGN_RIGHT + textalignx TOFF_X + textvalign VALIGN_CENTER + textscale .25 + forecolor 1 1 1 1 + visible MENU_TRUE + action + { + play "sound/misc/menu1.wav"; + } + } + + itemDef + { + type ITEM_TYPE_YESNO + text "Allow Auto Download:" + cvar "cl_allowDownload" + rect X (Y+(10*(ELEM_H+ELEM_GAP))) W ELEM_H + textalign ALIGN_RIGHT + textalignx TOFF_X + textvalign VALIGN_CENTER + textscale .25 + forecolor 1 1 1 1 + visible MENU_TRUE + action + { + play "sound/misc/menu1.wav"; + } + } + + itemDef + { + text "For further options please use the in-game options menu" + type ITEM_TYPE_TEXT + style WINDOW_STYLE_EMPTY + textstyle ITEM_TEXTSTYLE_NORMAL + textscale .25 + rect 0 (H-60) W 10 + textalign ALIGN_CENTER + textvalign VALIGN_CENTER + forecolor 1 1 1 1 + visible MENU_TRUE + decoration + } + + + itemDef + { + text "APPLY" + type ITEM_TYPE_BUTTON + textscale .25 + style WINDOW_STYLE_EMPTY + rect (W-(2*BUTT_W)) (H-BUTT_H) BUTT_W BUTT_H + textalign ALIGN_CENTER + textvalign VALIGN_CENTER + forecolor 1 1 1 1 + visible MENU_TRUE + action + { + play "sound/misc/menu1.wav"; + exec "snd_restart" // includes vid_restart + } + } + + itemDef + { + text "OK" + type ITEM_TYPE_BUTTON + textscale .25 + style WINDOW_STYLE_EMPTY + rect (W-BUTT_W) (H-BUTT_H) BUTT_W BUTT_H + textalign ALIGN_CENTER + textvalign VALIGN_CENTER + forecolor 1 1 1 1 + visible MENU_TRUE + action + { + play "sound/misc/menu1.wav"; + close simple_options + } + } + } +} diff --git a/assets/ui/password.menu b/assets/ui/password.menu new file mode 100644 index 0000000..d6ac4cd --- /dev/null +++ b/assets/ui/password.menu @@ -0,0 +1,85 @@ +#include "ui/menudef.h" + +{ + \\ PASSWORD POPUP MENU \\ + +#define BUTT_W 45 +#define BUTT_H 35 +#define BORDER 10 +#define INPUT_H 20 +#define W 250 +#define H ((2*BORDER)+INPUT_H+BUTT_H) + + menuDef + { + name "password_popmenu" + visible MENU_FALSE + fullscreen MENU_FALSE + rect (320-(W/2)) (240-(H/2)) W H + focusColor 1 .75 0 1 + style WINDOW_STYLE_FILLED + border WINDOW_BORDER_FULL + popup + + onOpen + { + setfocus passwordEntry + } + + onESC + { + close password_popmenu + } + + itemDef + { + name window + rect 0 0 W H + style WINDOW_STYLE_FILLED + backcolor 0 0 0 1 + visible MENU_TRUE + decoration + + border WINDOW_BORDER_FULL + borderSize 1.0 + borderColor 0.5 0.5 0.5 1 + } + + // PASSWORD // + + itemDef + { + name passwordEntry + type ITEM_TYPE_EDITFIELD + style WINDOW_STYLE_EMPTY + text "Password:" + maxChars 40 + textscale .4 + cvar "password" + rect BORDER BORDER (W-(2*BORDER)) INPUT_H + textalign ALIGN_LEFT + textvalign VALIGN_CENTER + forecolor 1 1 1 1 + visible MENU_TRUE + } + + itemDef + { + name yes + text "OK" + type ITEM_TYPE_BUTTON + textscale .25 + style WINDOW_STYLE_EMPTY + rect (W-BUTT_W) (H-BUTT_H) BUTT_W BUTT_H + textalign ALIGN_CENTER + textvalign VALIGN_CENTER + forecolor 1 1 1 1 + visible MENU_TRUE + action + { + play "sound/misc/menu1.wav"; + close password_popmenu + } + } + } +} diff --git a/assets/ui/quit.menu b/assets/ui/quit.menu new file mode 100644 index 0000000..0bd2e90 --- /dev/null +++ b/assets/ui/quit.menu @@ -0,0 +1,99 @@ +#include "ui/menudef.h" + +{ + \\ QUIT POPUP MENU \\ + +#define W 120 +#define H 120 + + menuDef + { + name "quit_popmenu" + visible MENU_FALSE + fullscreen MENU_FALSE + rect (320-(W/2)) (240-(H/2)) W H + focusColor 1 .75 0 1 + style WINDOW_STYLE_FILLED + border WINDOW_BORDER_FULL + popup + onESC + { + play "sound/misc/menu1.wav"; + close quit_popmenu + } + + + itemDef + { + name window + rect 0 0 W H + style WINDOW_STYLE_FILLED + backcolor 0 0 0 1 + visible MENU_TRUE + decoration + + border WINDOW_BORDER_FULL + borderSize 1.0 + borderColor 0.5 0.5 0.5 1 + } + + + // QUIT // + + itemDef + { + name confirm + type ITEM_TYPE_TEXT + text "Quit Tremulous?" + style WINDOW_STYLE_EMPTY + textscale .3 + textstyle WINDOW_STYLE_SHADER + rect 0 0 W ((2*H)/3) + textalign ALIGN_CENTER + textvalign VALIGN_CENTER + decoration + forecolor 1 1 1 1 + visible MENU_TRUE + } + + + itemDef + { + name yes + text "YES" + type ITEM_TYPE_BUTTON + textscale .25 + rect 0 (H/3) (W/2) ((2*H)/3) + textalign ALIGN_CENTER + textvalign VALIGN_CENTER + forecolor 1 1 1 1 + visible MENU_TRUE + action + { + play "sound/misc/menu4.wav"; + open quitCredit + } + } + + + itemDef + { + name no + text "NO" + type ITEM_TYPE_BUTTON + textscale .25 + rect (W/2) (H/3) (W/2) ((2*H)/3) + textalign ALIGN_CENTER + textvalign VALIGN_CENTER + forecolor 1 1 1 1 + visible MENU_TRUE + action + { + play "sound/misc/menu1.wav"; + close quit_popmenu + } + } + } +} + + diff --git a/assets/ui/quitcredit.menu b/assets/ui/quitcredit.menu new file mode 100644 index 0000000..14a8f4f --- /dev/null +++ b/assets/ui/quitcredit.menu @@ -0,0 +1,410 @@ +#include "ui/menudef.h" + +{ + \\ QUIT CREDIT \\ + + menuDef + { + name "quitCredit" + visible MENU_FALSE + fullscreen MENU_TRUE + rect 0 0 640 480 + focusColor 1 .75 0 1 + style WINDOW_STYLE_FILLED + border WINDOW_BORDER_NONE + aspectBias ASPECT_NONE + onEsc + { + uiScript "quit" + } + + itemDef + { + name exitclickbox + style WINDOW_STYLE_SHADER + rect 0 0 640 480 + type ITEM_TYPE_BUTTON + visible MENU_TRUE + backcolor 0 0 0 1 + background "ui/assets/credits_splash.jpg" + action + { + close quitCredit; + uiScript "quit" + } + } + + itemDef + { + name topstripe + style WINDOW_STYLE_FILLED + rect -5 -5 645 64 + visible MENU_TRUE + backcolor 0 0 0 1 + + border WINDOW_BORDER_FULL + borderSize 1.5 + borderColor 1 0 0 1 + } + + itemDef + { + name bottomstripe + style WINDOW_STYLE_FILLED + rect -5 416 645 485 + visible MENU_TRUE + backcolor 0 0 0 1 + + border WINDOW_BORDER_FULL + borderSize 1.5 + borderColor 1 0 0 1 + } + + itemDef + { + name "creditstitle" + group grpidcredit + style WINDOW_STYLE_EMPTY + rect 320 48 1 1 + type ITEM_TYPE_TEXT + textalign ALIGN_CENTER + textscale 0.75 + textstyle ITEM_TEXTSTYLE_NORMAL + text "CREDITS" + forecolor 1 1 1 1 + backcolor 1 0 0 1 + visible 1 + decoration + } + + itemDef + { + name "credit1left" + group grpidcredit + style WINDOW_STYLE_EMPTY + rect 10 96 1 1 + type ITEM_TYPE_TEXT + textalign ALIGN_LEFT + textscale 0.50 + textstyle ITEM_TEXTSTYLE_NORMAL + text "Tim 'Timbo' Angus" + forecolor 1 1 1 1 + backcolor 1 0 0 1 + visible 1 + decoration + } + itemDef + { + name "credit1right" + group grpidcredit + style WINDOW_STYLE_EMPTY + rect 630 96 1 1 + type ITEM_TYPE_TEXT + textalign ALIGN_RIGHT + textscale 0.50 + textstyle ITEM_TEXTSTYLE_NORMAL + text "Programming and Direction" + forecolor 1 1 1 1 + backcolor 0 1 0 1 + visible 1 + decoration + } + + itemDef + { + name "credit2left" + group grpidcredit + style WINDOW_STYLE_EMPTY + rect 10 128 1 1 + type ITEM_TYPE_TEXT + textalign ALIGN_LEFT + textscale 0.50 + textstyle ITEM_TEXTSTYLE_NORMAL + text "Nick 'jex' Jansens" + forecolor 1 1 1 1 + backcolor 1 0 0 1 + visible 1 + decoration + } + itemDef + { + name "credit2right" + group grpidcredit + style WINDOW_STYLE_EMPTY + rect 630 128 1 1 + type ITEM_TYPE_TEXT + textalign ALIGN_RIGHT + textscale 0.50 + textstyle ITEM_TEXTSTYLE_NORMAL + text "Mapping, texturing and 2D artwork" + forecolor 1 1 1 1 + backcolor 0 1 0 1 + visible 1 + decoration + } + + itemDef + { + name "credit3left" + group grpidcredit + style WINDOW_STYLE_EMPTY + rect 10 160 1 1 + type ITEM_TYPE_TEXT + textalign ALIGN_LEFT + textscale 0.50 + textstyle ITEM_TEXTSTYLE_NORMAL + text "Robin 'OverFlow' Marshall" + forecolor 1 1 1 1 + backcolor 1 0 0 1 + visible 1 + decoration + } + itemDef + { + name "credit3right" + group grpidcredit + style WINDOW_STYLE_EMPTY + rect 630 160 1 1 + type ITEM_TYPE_TEXT + textalign ALIGN_RIGHT + textscale 0.50 + textstyle ITEM_TEXTSTYLE_NORMAL + text "Modelling, animation and mapping" + forecolor 1 1 1 1 + backcolor 0 1 0 1 + visible 1 + decoration + } + + itemDef + { + name "credit4left" + group grpidcredit + style WINDOW_STYLE_EMPTY + rect 10 192 1 1 + type ITEM_TYPE_TEXT + textalign ALIGN_LEFT + textscale 0.50 + textstyle ITEM_TEXTSTYLE_NORMAL + text "Jan 'Stannum' van der Weg" + forecolor 1 1 1 1 + backcolor 1 0 0 1 + visible 1 + decoration + } + itemDef + { + name "credit4right" + group grpidcredit + style WINDOW_STYLE_EMPTY + rect 630 192 1 1 + type ITEM_TYPE_TEXT + textalign ALIGN_RIGHT + textscale 0.50 + textstyle ITEM_TEXTSTYLE_NORMAL + text "Texturing and mapping" + forecolor 1 1 1 1 + backcolor 0 1 0 1 + visible 1 + decoration + } + + itemDef + { + name "credit5left" + group grpidcredit + style WINDOW_STYLE_EMPTY + rect 10 224 1 1 + type ITEM_TYPE_TEXT + textalign ALIGN_LEFT + textscale 0.50 + textstyle ITEM_TEXTSTYLE_NORMAL + text "Mike 'Veda' McInerney" + forecolor 1 1 1 1 + backcolor 1 0 0 1 + visible 1 + decoration + } + itemDef + { + name "credit5right" + group grpidcredit + style WINDOW_STYLE_EMPTY + rect 630 224 1 1 + type ITEM_TYPE_TEXT + textalign ALIGN_RIGHT + textscale 0.50 + textstyle ITEM_TEXTSTYLE_NORMAL + text "Modelling, animation and texturing" + forecolor 1 1 1 1 + backcolor 0 1 0 1 + visible 1 + decoration + } + + itemDef + { + name "credit6left" + group grpidcredit + style WINDOW_STYLE_EMPTY + rect 10 256 1 1 + type ITEM_TYPE_TEXT + textalign ALIGN_LEFT + textscale 0.50 + textstyle ITEM_TEXTSTYLE_NORMAL + text "Gordon 'Godmil' Miller" + forecolor 1 1 1 1 + backcolor 1 0 0 1 + visible 1 + decoration + } + itemDef + { + name "credit6right" + group grpidcredit + style WINDOW_STYLE_EMPTY + rect 630 256 1 1 + type ITEM_TYPE_TEXT + textalign ALIGN_RIGHT + textscale 0.50 + textstyle ITEM_TEXTSTYLE_NORMAL + text "Mapping" + forecolor 1 1 1 1 + backcolor 0 1 0 1 + visible 1 + decoration + } + + itemDef + { + name "credit7left" + group grpidcredit + style WINDOW_STYLE_EMPTY + rect 10 288 1 1 + type ITEM_TYPE_TEXT + textalign ALIGN_LEFT + textscale 0.50 + textstyle ITEM_TEXTSTYLE_NORMAL + text "'Who-[Soup]'" + forecolor 1 1 1 1 + backcolor 1 0 0 1 + visible 1 + decoration + } + itemDef + { + name "credit7right" + group grpidcredit + style WINDOW_STYLE_EMPTY + rect 630 288 1 1 + type ITEM_TYPE_TEXT + textalign ALIGN_RIGHT + textscale 0.50 + textstyle ITEM_TEXTSTYLE_NORMAL + text "Mapping" + forecolor 1 1 1 1 + backcolor 0 1 0 1 + visible 1 + decoration + } + + itemDef + { + name "credit8left" + group grpidcredit + style WINDOW_STYLE_EMPTY + rect 10 320 1 1 + type ITEM_TYPE_TEXT + textalign ALIGN_LEFT + textscale 0.50 + textstyle ITEM_TEXTSTYLE_NORMAL + text "Tristan 'jhrx' Blease" + forecolor 1 1 1 1 + backcolor 1 0 0 1 + visible 1 + decoration + } + itemDef + { + name "credit8right" + group grpidcredit + style WINDOW_STYLE_EMPTY + rect 630 320 1 1 + type ITEM_TYPE_TEXT + textalign ALIGN_RIGHT + textscale 0.50 + textstyle ITEM_TEXTSTYLE_NORMAL + text "Mapping" + forecolor 1 1 1 1 + backcolor 0 1 0 1 + visible 1 + decoration + } + + itemDef + { + name "credit9left" + group grpidcredit + style WINDOW_STYLE_EMPTY + rect 10 352 1 1 + type ITEM_TYPE_TEXT + textalign ALIGN_LEFT + textscale 0.50 + textstyle ITEM_TEXTSTYLE_NORMAL + text "Paul 'MoP' Greveson" + forecolor 1 1 1 1 + backcolor 1 0 0 1 + visible 1 + decoration + } + itemDef + { + name "credit9right" + group grpidcredit + style WINDOW_STYLE_EMPTY + rect 630 352 1 1 + type ITEM_TYPE_TEXT + textalign ALIGN_RIGHT + textscale 0.50 + textstyle ITEM_TEXTSTYLE_NORMAL + text "Modelling and texturing" + forecolor 1 1 1 1 + backcolor 0 1 0 1 + visible 1 + decoration + } + + itemDef + { + name "credit10left" + group grpidcredit + style WINDOW_STYLE_EMPTY + rect 10 384 1 1 + type ITEM_TYPE_TEXT + textalign ALIGN_LEFT + textscale 0.50 + textstyle ITEM_TEXTSTYLE_NORMAL + text "Chris 'Dolby' McCarthy" + forecolor 1 1 1 1 + backcolor 1 0 0 1 + visible 1 + decoration + } + itemDef + { + name "credit10right" + group grpidcredit + style WINDOW_STYLE_EMPTY + rect 630 384 1 1 + type ITEM_TYPE_TEXT + textalign ALIGN_RIGHT + textscale 0.50 + textstyle ITEM_TEXTSTYLE_NORMAL + text "Sound" + forecolor 1 1 1 1 + backcolor 0 1 0 1 + visible 1 + decoration + } + } +} diff --git a/assets/ui/say.menu b/assets/ui/say.menu new file mode 100644 index 0000000..2bd3015 --- /dev/null +++ b/assets/ui/say.menu @@ -0,0 +1,180 @@ +#include "ui/menudef.h" +#include "ui/menu_bool.h" + +{ + +#define BORDER 10 + +#define X BORDER +#define Y BORDER +#define W (600-(2*BORDER)) +#define H (480-(2*BORDER)) + + // Say to All + menuDef + { + name say + fullScreen false + visible false + rect X Y W H + aspectBias ALIGN_LEFT + focusColor 1 1 1 1 + style WINDOW_STYLE_EMPTY + onOpen + { + setfocus say_field; + } + + itemDef + { + name say_field + type ITEM_TYPE_SAYFIELD + style WINDOW_STYLE_EMPTY + text "Say:" + cvar "ui_sayBuffer" + maxchars 128 + rect 0 0 W H + textalign ALIGN_LEFT + textvalign VALIGN_CENTER + textstyle ITEM_TEXTSTYLE_SHADOWED + textscale .4 + forecolor 0.93 0.93 0.92 1 + visible true + onCharEntry + { + uiScript SayKeyDown; + } + onTextEntry + { + uiScript Say; + close say; + } + } + } + + // Say to Team + menuDef + { + name say_team + fullScreen false + visible false + rect X Y W H + aspectBias ALIGN_LEFT + focusColor 1 1 1 1 + style WINDOW_STYLE_EMPTY + onOpen + { + setfocus say_field + } + + itemDef + { + name say_field + type ITEM_TYPE_SAYFIELD + style WINDOW_STYLE_EMPTY + text "Say to team:" + cvar "ui_sayBuffer" + maxchars 128 + rect 0 0 W H + textalign ALIGN_LEFT + textvalign VALIGN_CENTER + textstyle ITEM_TEXTSTYLE_SHADOWED + textscale .4 + forecolor 0.93 0.93 0.92 1 + visible true + onCharEntry + { + uiScript SayKeyDown; + } + onTextEntry + { + uiScript Say; + close say_team; + } + } + } + + // Command + menuDef + { + name say_command + fullScreen false + visible false + rect X Y W H + aspectBias ALIGN_LEFT + focusColor 1 1 1 1 + style WINDOW_STYLE_EMPTY + onOpen + { + setfocus say_field + } + + itemDef + { + name say_field + type ITEM_TYPE_SAYFIELD + style WINDOW_STYLE_EMPTY + text "Command:" + cvar "ui_sayBuffer" + maxchars 128 + rect 0 0 W H + textalign ALIGN_LEFT + textvalign VALIGN_CENTER + textstyle ITEM_TEXTSTYLE_SHADOWED + textscale .4 + forecolor 0.93 0.93 0.92 1 + visible true + onCharEntry + { + uiScript SayKeyDown; + } + onTextEntry + { + uiScript Say; + close say_command; + } + } + } + + // Say to Admins + menuDef + { + name say_admin + fullScreen false + visible false + rect X Y W H + aspectBias ALIGN_LEFT + focusColor 1 1 1 1 + style WINDOW_STYLE_EMPTY + onOpen + { + setfocus say_field + } + + itemDef + { + name say_field + type ITEM_TYPE_SAYFIELD + style WINDOW_STYLE_EMPTY + text "Say to admins:" + cvar "ui_sayBuffer" + maxchars 128 + rect 0 0 W H + textalign ALIGN_LEFT + textvalign VALIGN_CENTER + textstyle ITEM_TEXTSTYLE_SHADOWED + textscale .4 + forecolor 0.93 0.93 0.92 1 + visible true + onCharEntry + { + uiScript SayKeyDown; + } + onTextEntry + { + uiScript Say; + close say_admin; + } + } + } +} diff --git a/assets/ui/serverinfo.menu b/assets/ui/serverinfo.menu new file mode 100644 index 0000000..596712c --- /dev/null +++ b/assets/ui/serverinfo.menu @@ -0,0 +1,112 @@ +#include "ui/menudef.h" + +{ + \\ SERVER INFO POPUP MENU \\ + +#define W 400 +#define H 300 +#define BUTT_W 45 +#define BUTT_H 35 +#define BORDER 10 +#define LIST_W (W-(2*BORDER)) +#define LIST_DW (LIST_W-40) +#define LEFT_C 0.13 +#define RIGHT_C 0.61 + + menuDef + { + name "serverinfo_popmenu" + visible MENU_FALSE + fullscreen MENU_FALSE + rect (320-(W/2)) (240-(H/2)) W H + focusColor 1 .75 0 1 + style WINDOW_STYLE_FILLED + border WINDOW_BORDER_FULL + popup + onClose { } + onOpen { uiScript ServerStatus } + onESC + { + close serverinfo_popmenu + } + + itemDef + { + name window + rect 0 0 W H + style WINDOW_STYLE_FILLED + backcolor 0 0 0 1 + visible MENU_TRUE + decoration + + border WINDOW_BORDER_FULL + borderSize 1.0 + borderColor 0.5 0.5 0.5 1 + } + + itemDef + { + name serverinfo + rect BORDER BORDER LIST_W (H-(BUTT_H+BORDER)) + type ITEM_TYPE_LISTBOX + style WINDOW_STYLE_EMPTY + elementwidth 120 + elementheight 16 + textscale .25 + border WINDOW_BORDER_FULL + bordersize 1 + bordercolor .5 .5 .5 1 + elementtype LISTBOX_TEXT + feeder FEEDER_SERVERSTATUS + notselectable + visible MENU_TRUE + columns 4 + 0 ((2*LEFT_C)*LIST_DW) ALIGN_LEFT + (LEFT_C*LIST_DW) (LEFT_C*LIST_DW) ALIGN_LEFT + ((2*LEFT_C)*LIST_DW) (LEFT_C*LIST_DW) ALIGN_LEFT + ((1-RIGHT_C)*LIST_DW) (RIGHT_C*LIST_DW) ALIGN_LEFT + } + + // BUTTON // + + itemDef + { + name refresh + text "Refresh" + type ITEM_TYPE_BUTTON + textscale .25 + style WINDOW_STYLE_EMPTY + rect (W-(2*BUTT_W)) (H-BUTT_H) BUTT_W BUTT_H + textalign ALIGN_CENTER + textvalign VALIGN_CENTER + forecolor 1 1 1 1 + visible MENU_TRUE + action + { + play "sound/misc/menu1.wav"; + uiScript ServerStatus + } + } + + itemDef + { + name close + text "Close" + type ITEM_TYPE_BUTTON + textscale .25 + style WINDOW_STYLE_EMPTY + rect (W-BUTT_W) (H-BUTT_H) BUTT_W BUTT_H + textalign ALIGN_CENTER + textvalign VALIGN_CENTER + forecolor 1 1 1 1 + visible MENU_TRUE + action + { + play "sound/misc/menu1.wav"; + close serverinfo_popmenu + } + } + } +} + + diff --git a/assets/ui/teamscore.menu b/assets/ui/teamscore.menu new file mode 100644 index 0000000..65893a0 --- /dev/null +++ b/assets/ui/teamscore.menu @@ -0,0 +1,386 @@ +#include "ui/menudef.h" + +{ + \\ score_menu \\ + +#define W 500 +#define H 338 +#define BORDER 10 + +#define TOFF 10 +#define SPEC_W 75 +#define BAR_H 30 + +#define LLIST_L 0 +#define LLIST_R (W/2) +#define RLIST_L (W/2) +#define RLIST_R W + + menuDef + { + name "teamscore_menu" + visible MENU_FALSE + fullscreen MENU_FALSE + rect (320-(W/2)) (240-(H/2)) W H + focusColor 1 .75 0 1 + style WINDOW_STYLE_EMPTY + + // TEAM NAME // + + itemDef + { + name teamNameWindow + rect 0 0 W BAR_H + style WINDOW_STYLE_FILLED + border WINDOW_BORDER_FULL + borderSize 1.0 + bordercolor .5 .5 .5 1 + forecolor 1 1 1 1 + backcolor 0 0 0 .8 + visible MENU_TRUE + decoration + } + + itemDef + { + name alienteamname + textalign ALIGN_LEFT + textvalign VALIGN_CENTER + textalignx TOFF + textscale 0.4 + rect 0 0 (W/3) BAR_H + forecolor 1 1 1 1 + decoration + visible MENU_TRUE + ownerdraw CG_ALIENS_SCORE_LABEL + } + + itemDef + { + name stagereport + textalign ALIGN_CENTER + textvalign VALIGN_CENTER + textscale 0.33 + rect (W/3) 0 (W/3) BAR_H + forecolor 1 1 1 1 + decoration + visible MENU_TRUE + ownerdraw CG_STAGE_REPORT_TEXT + } + + itemDef + { + name humanteamname + textalign ALIGN_RIGHT + textvalign VALIGN_CENTER + textalignx -TOFF + textscale 0.4 + rect ((2*W)/3) 0 (W/3) BAR_H + forecolor 1 1 1 1 + decoration + visible MENU_TRUE + ownerdraw CG_HUMANS_SCORE_LABEL + } + + // TEAM BARS // + + itemDef + { + name leftteambar + rect 0 (BAR_H+BORDER) (W/2) BAR_H + style WINDOW_STYLE_FILLED + border WINDOW_BORDER_FULL + borderSize 1.0 + bordercolor .5 .5 .5 1 + forecolor 1 1 1 1 + backcolor 0 0 0 .8 + visible MENU_TRUE + decoration + } + + itemDef + { + name rightteambar + rect (W/2) (BAR_H+BORDER) (W/2) BAR_H + style WINDOW_STYLE_FILLED + border WINDOW_BORDER_FULL + borderSize 1.0 + bordercolor .5 .5 .5 1 + forecolor 1 1 1 1 + backcolor 0 0 0 .8 + visible MENU_TRUE + decoration + } + + + // TEAM HEADINGS // + + itemDef + { + type ITEM_TYPE_TEXT + text "Status" + textscale .33 + style WINDOW_STYLE_EMPTY + rect (LLIST_L+10) (BAR_H+BORDER) 1 BAR_H + textalign ALIGN_LEFT + textvalign VALIGN_CENTER + backcolor 0 0 0 0 + forecolor 1 .75 0 1 + decoration + visible MENU_TRUE + } + + itemDef + { + type ITEM_TYPE_TEXT + text "Name" + textscale .33 + style WINDOW_STYLE_EMPTY + rect (LLIST_L+50) (BAR_H+BORDER) 1 BAR_H + textalign ALIGN_LEFT + textvalign VALIGN_CENTER + backcolor 0 0 0 0 + forecolor 1 .75 0 1 + decoration + visible MENU_TRUE + } + + itemDef + { + type ITEM_TYPE_TEXT + text "Score" + textscale .33 + style WINDOW_STYLE_EMPTY + rect (LLIST_R-95) (BAR_H+BORDER) 1 BAR_H + textalign ALIGN_RIGHT + textvalign VALIGN_CENTER + backcolor 0 0 0 0 + forecolor 1 .75 0 1 + decoration + visible MENU_TRUE + } + + itemDef + { + type ITEM_TYPE_TEXT + text "Time" + textscale .33 + style WINDOW_STYLE_EMPTY + rect (LLIST_R-55) (BAR_H+BORDER) 1 BAR_H + textalign ALIGN_RIGHT + textvalign VALIGN_CENTER + backcolor 0 0 0 0 + forecolor 1 .75 0 1 + decoration + visible MENU_TRUE + } + + itemDef + { + type ITEM_TYPE_TEXT + text "Ping" + textscale .33 + style WINDOW_STYLE_EMPTY + rect (LLIST_R-15) (BAR_H+BORDER) 1 BAR_H + textalign ALIGN_RIGHT + textvalign VALIGN_CENTER + backcolor 0 0 0 0 + forecolor 1 .75 0 1 + decoration + visible MENU_TRUE + } + + itemDef + { + type ITEM_TYPE_TEXT + text "Status" + textscale .33 + style WINDOW_STYLE_EMPTY + rect (RLIST_L+10) (BAR_H+BORDER) 1 BAR_H + textalign ALIGN_LEFT + textvalign VALIGN_CENTER + backcolor 0 0 0 0 + forecolor 1 .75 0 1 + decoration + visible MENU_TRUE + } + + itemDef + { + type ITEM_TYPE_TEXT + text "Name" + textscale .33 + style WINDOW_STYLE_EMPTY + rect (RLIST_L+50) (BAR_H+BORDER) 1 BAR_H + textalign ALIGN_LEFT + textvalign VALIGN_CENTER + backcolor 0 0 0 0 + forecolor 1 .75 0 1 + decoration + visible MENU_TRUE + } + + itemDef + { + type ITEM_TYPE_TEXT + text "Score" + textscale .33 + style WINDOW_STYLE_EMPTY + rect (RLIST_R-95) (BAR_H+BORDER) 1 BAR_H + textalign ALIGN_RIGHT + textvalign VALIGN_CENTER + backcolor 0 0 0 0 + forecolor 1 .75 0 1 + decoration + visible MENU_TRUE + } + + itemDef + { + type ITEM_TYPE_TEXT + text "Time" + textscale .33 + style WINDOW_STYLE_EMPTY + rect (RLIST_R-55) (BAR_H+BORDER) 1 BAR_H + textalign ALIGN_RIGHT + textvalign VALIGN_CENTER + backcolor 0 0 0 0 + forecolor 1 .75 0 1 + decoration + visible MENU_TRUE + } + + itemDef + { + type ITEM_TYPE_TEXT + text "Ping" + textscale .33 + style WINDOW_STYLE_EMPTY + rect (RLIST_R-15) (BAR_H+BORDER) 1 BAR_H + textalign ALIGN_RIGHT + textvalign VALIGN_CENTER + backcolor 0 0 0 0 + forecolor 1 .75 0 1 + decoration + visible MENU_TRUE + } + + itemDef + { + name leftlist + rect 0 ((2*BAR_H)+BORDER) (W/2) (H-((3*BAR_H)+(2*BORDER))) + style WINDOW_STYLE_FILLED + backcolor 0 0 0 .6 + border WINDOW_BORDER_FULL + borderSize 1.0 + bordercolor .5 .5 .5 1 + forecolor .75 .75 .75 1 + visible MENU_TRUE + type ITEM_TYPE_LISTBOX + elementwidth 135 + elementheight 16 + textscale .25 + elementtype LISTBOX_TEXT + feeder FEEDER_ALIENTEAM_LIST + notselectable + noscrollbar + columns 7 + 5 15 ALIGN_LEFT + 21 15 ALIGN_LEFT + 7 30 ALIGN_LEFT + 45 ((W/2)-170) ALIGN_LEFT + ((W/2)-120) 20 ALIGN_RIGHT + ((W/2)-80) 20 ALIGN_RIGHT + ((W/2)-40) 20 ALIGN_RIGHT + } + + itemDef + { + name rightlist + rect (W/2) ((2*BAR_H)+BORDER) (W/2) (H-((3*BAR_H)+(2*BORDER))) + style WINDOW_STYLE_FILLED + backcolor 0 0 0 .6 + border WINDOW_BORDER_FULL + borderSize 1.0 + bordercolor .5 .5 .5 1 + forecolor .75 .75 .75 1 + visible MENU_TRUE + type ITEM_TYPE_LISTBOX + elementwidth 135 + elementheight 16 + textscale .25 + elementtype LISTBOX_TEXT + feeder FEEDER_HUMANTEAM_LIST + notselectable + noscrollbar + columns 7 + 5 15 ALIGN_LEFT + 21 15 ALIGN_LEFT + 7 30 ALIGN_LEFT + 45 ((W/2)-170) ALIGN_LEFT + ((W/2)-120) 20 ALIGN_RIGHT + ((W/2)-80) 20 ALIGN_RIGHT + ((W/2)-40) 20 ALIGN_RIGHT + } + + // spectators // + + itemDef + { + name window + rect 0 (H-BAR_H) W BAR_H + style WINDOW_STYLE_FILLED + border WINDOW_BORDER_FULL + borderSize 1.0 + bordercolor .5 .5 .5 1 + backcolor 0 0 0 .8 + textscale .33 + visible MENU_TRUE + decoration + } + + itemDef + { + type ITEM_TYPE_TEXT + name window + text "Spectating:" + rect 0 (H-BAR_H) SPEC_W BAR_H + style WINDOW_STYLE_FILLED + forecolor 1 1 1 1 + textscale .33 + textalign ALIGN_LEFT + textvalign VALIGN_CENTER + textalignx TOFF + visible MENU_TRUE + decoration + } + + itemDef + { + name window + rect SPEC_W (H-BAR_H) (W-SPEC_W) BAR_H + style WINDOW_STYLE_FILLED + forecolor 1 1 1 1 + textscale .33 + textvalign VALIGN_CENTER + visible MENU_TRUE + ownerdraw CG_SPECTATORS + decoration + } + + itemDef + { + name winner + type ITEM_TYPE_TEXT + rect (W/2) (H+BAR_H) 0 0 + style WINDOW_STYLE_EMPTY + forecolor 1 1 1 1 + textscale 0.5 + textalign ALIGN_CENTER + textvalign VALIGN_TOP + visible MENU_TRUE + cvar "ui_winner" + decoration + } + } +} diff --git a/assets/ui/tremulous.txt b/assets/ui/tremulous.txt new file mode 100644 index 0000000..fbeb47d --- /dev/null +++ b/assets/ui/tremulous.txt @@ -0,0 +1,20 @@ +// menu defs +// +{ + loadMenu { "ui/tremulous_teamselect.menu" } + loadMenu { "ui/tremulous_alienclass.menu" } + loadMenu { "ui/tremulous_humanitem.menu" } + + loadMenu { "ui/tremulous_alienbuild.menu" } + loadMenu { "ui/tremulous_humanbuild.menu" } + + loadMenu { "ui/tremulous_humanarmoury.menu" } + + loadMenu { "ui/tremulous_dialogs.menu" } + loadMenu { "ui/tremulous_humandialogs.menu" } + loadMenu { "ui/tremulous_aliendialogs.menu" } + + loadMenu { "ui/tremulous_alienupgrade.menu" } + loadMenu { "ui/tremulous_voicecmd.menu" } + loadMenu { "ui/say.menu" } +} diff --git a/assets/ui/tremulous_alien_builder_hud.menu b/assets/ui/tremulous_alien_builder_hud.menu new file mode 100644 index 0000000..b532264 --- /dev/null +++ b/assets/ui/tremulous_alien_builder_hud.menu @@ -0,0 +1,42 @@ +#include "ui/menudef.h" + +{ + +#define W 640 +#define H 480 + + menuDef + { + name "alien_builder_hud" + fullScreen MENU_FALSE + visible MENU_TRUE + rect 0 0 W H + aspectBias ASPECT_NONE + +#include "ui/tremulous_alien_common_hud.h" + + //BUILD TIMER + itemDef + { + name "buildtimer" + rect 567 410 25 25 + aspectBias ALIGN_RIGHT + visible MENU_TRUE + decoration + forecolor 1.0 0.0 0.0 .5 + ownerdraw CG_PLAYER_BUILD_TIMER + } + + //BUILD POINTS + itemDef + { + name "build-points" + rect 493.5 421.5 60 15 + aspectBias ALIGN_RIGHT + visible MENU_TRUE + decoration + forecolor 1.0 0.0 0.0 1.0 + ownerdraw CG_PLAYER_AMMO_VALUE + } + } +} diff --git a/assets/ui/tremulous_alien_common_hud.h b/assets/ui/tremulous_alien_common_hud.h new file mode 100644 index 0000000..c77c9f7 --- /dev/null +++ b/assets/ui/tremulous_alien_common_hud.h @@ -0,0 +1,257 @@ +#define COMMON_HUD_R 1.0 +#define COMMON_HUD_G 0.0 +#define COMMON_HUD_B 0.0 +#include "ui/tremulous_common_hud.h" + +////////////////// +//STATIC OBJECTS// +////////////////// + +//LEFT RING CIRCLE +itemDef +{ + name "left-ring-circle" + rect 47.5 410 25 25 + aspectBias ALIGN_LEFT + visible MENU_TRUE + decoration + forecolor COMMON_HUD_R COMMON_HUD_G COMMON_HUD_B 0.25 + style WINDOW_STYLE_SHADER + background "ui/assets/neutral/circle.tga" +} + +//LEFT ARM +itemDef +{ + name "left-arm" + rect 77 404.75 104 52.5 + aspectBias ALIGN_LEFT + visible MENU_TRUE + decoration + forecolor COMMON_HUD_R COMMON_HUD_G COMMON_HUD_B 0.25 + style WINDOW_STYLE_SHADER + background "ui/assets/alien/left-arm.tga" +} + +//LEFT ARM CIRCLE +itemDef +{ + name "left-arm-circle" + rect 150 417.5 25 25 + aspectBias ALIGN_LEFT + visible MENU_TRUE + decoration + forecolor COMMON_HUD_R COMMON_HUD_G COMMON_HUD_B 0.25 + style WINDOW_STYLE_SHADER + background "ui/assets/neutral/circle.tga" +} + +//RIGHT RING CIRCLE +itemDef +{ + name "right-ring-circle" + rect 567 410 25 25 + aspectBias ALIGN_RIGHT + visible MENU_TRUE + decoration + forecolor COMMON_HUD_R COMMON_HUD_G COMMON_HUD_B 0.25 + style WINDOW_STYLE_SHADER + background "ui/assets/neutral/circle.tga" +} + +//RIGHT ARM +itemDef +{ + name "right-arm" + rect 459 404.75 104 52.5 + aspectBias ALIGN_RIGHT + visible MENU_TRUE + decoration + forecolor COMMON_HUD_R COMMON_HUD_G COMMON_HUD_B 0.25 + style WINDOW_STYLE_SHADER + background "ui/assets/alien/right-arm.tga" +} + +/////////////////// +//DYNAMIC OBJECTS// +/////////////////// + +//BOLT +itemDef +{ + name "bolt" + rect 52.5 412.5 15 20 + aspectBias ALIGN_LEFT + visible MENU_TRUE + decoration + forecolor COMMON_HUD_R COMMON_HUD_G COMMON_HUD_B 0.8 + backcolor COMMON_HUD_R COMMON_HUD_G COMMON_HUD_B 0.2 + background "ui/assets/alien/bolt.tga" + ownerdraw CG_PLAYER_BOOST_BOLT +} + +//CROSS +itemDef +{ + name "cross" + rect 150 417.5 25 25 + aspectBias ALIGN_LEFT + visible MENU_TRUE + decoration + forecolor COMMON_HUD_R COMMON_HUD_G COMMON_HUD_B 0.5 + ownerdraw CG_PLAYER_HEALTH_CROSS +} + +//LEFT RING +itemDef +{ + name "left-ring" + rect 7.25 369.5 90.5 106 + aspectBias ALIGN_LEFT + visible MENU_TRUE + decoration + forecolor COMMON_HUD_R COMMON_HUD_G COMMON_HUD_B 0.8 + backcolor COMMON_HUD_R COMMON_HUD_G COMMON_HUD_B 0.2 + background "ui/assets/alien/left-ring.tga" + ownerdraw CG_PLAYER_BOOSTED +} + +//LEFT SPIKES +itemDef +{ + name "left-spikes" + rect 18.5 381 59 83 + aspectBias ALIGN_LEFT + visible MENU_TRUE + decoration + forecolor COMMON_HUD_R COMMON_HUD_G COMMON_HUD_B 1.0 + backcolor COMMON_HUD_R COMMON_HUD_G COMMON_HUD_B 0.2 + background "ui/assets/alien/left-spikes.tga" + ownerdraw CG_PLAYER_WALLCLIMBING +} + +//RIGHT RING +itemDef +{ + name "right-ring" + rect 542.25 369.5 90.5 106 + aspectBias ALIGN_RIGHT + visible MENU_TRUE + decoration + forecolor COMMON_HUD_R COMMON_HUD_G COMMON_HUD_B 0.8 + backcolor COMMON_HUD_R COMMON_HUD_G COMMON_HUD_B 0.2 + background "ui/assets/alien/right-ring.tga" + ownerdraw CG_PLAYER_BOOSTED +} + +//RIGHT SPIKES +itemDef +{ + name "right-spikes" + rect 562.5 381 59 83 + aspectBias ALIGN_RIGHT + visible MENU_TRUE + decoration + forecolor COMMON_HUD_R COMMON_HUD_G COMMON_HUD_B 1.0 + backcolor COMMON_HUD_R COMMON_HUD_G COMMON_HUD_B 0.2 + background "ui/assets/alien/right-spikes.tga" + ownerdraw CG_PLAYER_WALLCLIMBING +} + +//HEALTH +itemDef +{ + name "health" + rect 78.5 421.5 60 15 + aspectBias ALIGN_LEFT + visible MENU_TRUE + decoration + forecolor COMMON_HUD_R COMMON_HUD_G COMMON_HUD_B .5 + ownerdraw CG_PLAYER_HEALTH +} + +//ALIEN CLASS ICON +itemDef +{ + name "alien-icon" + rect 465 417.5 25 25 + aspectBias ALIGN_RIGHT + visible MENU_TRUE + decoration + forecolor COMMON_HUD_R COMMON_HUD_G COMMON_HUD_B 0.6 + ownerdraw CG_PLAYER_WEAPONICON +} + +//ORGANS +itemDef +{ + name "organs" + rect 570 416 15 15 + aspectBias ALIGN_RIGHT + visible MENU_TRUE + decoration + forecolor COMMON_HUD_R COMMON_HUD_G COMMON_HUD_B 1 + ownerdraw CG_PLAYER_CREDITS_VALUE_NOPAD +} + +//CREDITS FRACTION +itemDef +{ + name "credits-background" + rect 567 410 25 25 + aspectBias ALIGN_RIGHT + visible MENU_TRUE + decoration + forecolor COMMON_HUD_R COMMON_HUD_G COMMON_HUD_B 0.25 + background "ui/assets/neutral/circle.tga" + ownerdraw CG_PLAYER_CREDITS_FRACTION +} + +//ALIENSENSE +itemDef +{ + name "aliensense" + rect 20 20 600 400 + visible MENU_TRUE + decoration + ownerdraw CG_PLAYER_ALIEN_SENSE +} + +//CHARGE BAR +itemDef +{ + name "charge" + rect 292 426 56 8 + aspectBias ALIGN_CENTER + visible MENU_TRUE + decoration + forecolor COMMON_HUD_R COMMON_HUD_G COMMON_HUD_B 0.5 + ownerdraw CG_PLAYER_CHARGE_BAR + background "ui/assets/neutral/charge_cap_h.tga" +} + +//CHARGE BAR BG +itemDef +{ + name "chargebg" + rect 288 422 64 16 + aspectBias ALIGN_CENTER + visible MENU_TRUE + decoration + forecolor COMMON_HUD_R COMMON_HUD_G COMMON_HUD_B 0.25 + ownerdraw CG_PLAYER_CHARGE_BAR_BG + background "ui/assets/neutral/charge_bg_h.tga" +} + +//TEAM OVERLAY +itemDef +{ + name "teamoverlay" + rect BORDER 175 200 128 + style WINDOW_STYLE_EMPTY + visible MENU_TRUE + decoration + forecolor COMMON_HUD_R COMMON_HUD_G COMMON_HUD_B 0.75 + textscale 0.85 + ownerdraw CG_TEAMOVERLAY +} diff --git a/assets/ui/tremulous_alien_general_hud.menu b/assets/ui/tremulous_alien_general_hud.menu new file mode 100644 index 0000000..df1352d --- /dev/null +++ b/assets/ui/tremulous_alien_general_hud.menu @@ -0,0 +1,30 @@ +#include "ui/menudef.h" + +{ + +#define W 640 +#define H 480 + + menuDef + { + name "alien_general_hud" + fullScreen MENU_FALSE + visible MENU_TRUE + rect 0 0 W H + aspectBias ASPECT_NONE + +#include "ui/tremulous_alien_common_hud.h" + + //BLOB + itemDef + { + name "blob" + rect 497 419 52 18 + aspectBias ALIGN_RIGHT + visible MENU_TRUE + forecolor 1.0 0.0 0.0 0.5 + background "ui/assets/alien/tremublob.tga" + ownerdraw CG_PLAYER_POISON_BARBS + } + } +} diff --git a/assets/ui/tremulous_alienbuild.menu b/assets/ui/tremulous_alienbuild.menu new file mode 100644 index 0000000..127b769 --- /dev/null +++ b/assets/ui/tremulous_alienbuild.menu @@ -0,0 +1,136 @@ +#include "ui/menudef.h" + +{ + +#define W 450 +#define H 250 +#define BORDER 10 + +#define LIST_W 140 +#define LIST_H (H-(2*BORDER)) +#define LIST_X BORDER +#define LIST_Y BORDER + +#define BUTT_H 25 +#define BUTT_W 45 + +#define INFO_W (W-((3*BORDER)+LIST_W)) +#define INFO_H (H-((3*BORDER)+BUTT_H)) +#define INFO_X ((2*BORDER)+LIST_W) +#define INFO_Y BORDER +#define INFO_TOFF 6 + + menuDef + { + name "tremulous_alienbuild" + visible MENU_FALSE + fullscreen MENU_FALSE + outOfBoundsClick + rect (320-(W/2)) (240-(H/2)) W H + focusColor 1 .75 0 1 + style WINDOW_STYLE_FILLED + popup + onOpen { uiScript LoadAlienBuilds; setFocus list } + + itemDef + { + name window + rect 0 0 W H + style WINDOW_STYLE_FILLED + backcolor 0 0 0 1 + visible MENU_TRUE + decoration + + border WINDOW_BORDER_FULL + borderSize 1.0 + borderColor 0.5 0.5 0.5 1 + } + + itemDef + { + name "list" + rect LIST_X LIST_Y LIST_W LIST_H + type ITEM_TYPE_LISTBOX + style WINDOW_STYLE_EMPTY + elementwidth 120 + elementheight 20 + textscale .33 + elementtype LISTBOX_TEXT + feeder FEEDER_TREMALIENBUILD + border WINDOW_BORDER_FULL + bordercolor 0.5 0.5 0.5 0.5 + forecolor 1 1 1 1 + backcolor 0.2 0.2 0.2 1 + outlinecolor 0.1 0.1 0.1 0.5 + visible MENU_TRUE + doubleclick + { + play "sound/misc/menu1.wav"; + uiScript BuildAlienBuildable; + close tremulous_alienbuild + } + } + + itemDef + { + name infopane + ownerdraw UI_ABUILDINFOPANE + textstyle ITEM_TEXTSTYLE_NORMAL + style WINDOW_STYLE_EMPTY + rect INFO_X INFO_Y INFO_W INFO_H + textscale .33 + textalign ALIGN_LEFT + textvalign VALIGN_TOP + textalignx INFO_TOFF + textaligny INFO_TOFF + border WINDOW_BORDER_FULL + bordercolor 0.5 0.5 0.5 0.5 + forecolor 1 1 1 1 + backcolor 0.2 0.2 0.2 1 + outlinecolor 0.1 0.1 0.1 0.5 + visible MENU_TRUE + decoration + } + + itemDef + { + name "OKCancel" + text "OK" + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_EMPTY + rect (W-((2*BORDER)+(2*BUTT_W))) (H-(BORDER+BUTT_H)) BUTT_W BUTT_H + textalign ALIGN_CENTER + textvalign VALIGN_CENTER + textscale .4 + forecolor 1 1 1 1 + backcolor 0 0 0 1 + visible MENU_TRUE + action + { + play "sound/misc/menu1.wav"; + uiScript BuildAlienBuildable; + close tremulous_alienbuild + } + } + + itemDef + { + name "OKCancel" + text "Cancel" + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_EMPTY + rect (W-(BORDER+BUTT_W)) (H-(BORDER+BUTT_H)) BUTT_W BUTT_H + textalign ALIGN_CENTER + textvalign VALIGN_CENTER + textscale .4 + forecolor 1 1 1 1 + backcolor 0 0 0 1 + visible MENU_TRUE + action + { + play "sound/misc/menu3.wav"; + close tremulous_alienbuild + } + } + } +} diff --git a/assets/ui/tremulous_alienclass.menu b/assets/ui/tremulous_alienclass.menu new file mode 100644 index 0000000..441e27f --- /dev/null +++ b/assets/ui/tremulous_alienclass.menu @@ -0,0 +1,157 @@ +#include "ui/menudef.h" + +{ + +#define W 450 +#define H 250 +#define BORDER 10 + +#define LIST_W 140 +#define LIST_H (H-(2*BORDER)) +#define LIST_X BORDER +#define LIST_Y BORDER + +#define BUTT_H 25 +#define BUTT_W 45 + +#define INFO_W (W-((3*BORDER)+LIST_W)) +#define INFO_H (H-((3*BORDER)+BUTT_H)) +#define INFO_X ((2*BORDER)+LIST_W) +#define INFO_Y BORDER +#define INFO_TOFF 6 + + menuDef + { + name "tremulous_alienclass" + visible MENU_TRUE + fullscreen MENU_FALSE + outOfBoundsClick + rect (320-(W/2)) (240-(H/2)) W H + focusColor 1 .75 0 1 + style WINDOW_STYLE_FILLED + popup + onOpen { uiScript LoadAlienClasses; setFocus list } + + itemDef + { + name window + rect 0 0 W H + style WINDOW_STYLE_FILLED + backcolor 0 0 0 1 + visible MENU_TRUE + decoration + + border WINDOW_BORDER_FULL + borderSize 1.0 + borderColor 0.5 0.5 0.5 1 + } + + itemDef + { + name "list" + rect LIST_X LIST_Y LIST_W LIST_H + type ITEM_TYPE_LISTBOX + style WINDOW_STYLE_EMPTY + elementwidth 120 + elementheight 20 + textscale .33 + elementtype LISTBOX_TEXT + feeder FEEDER_TREMALIENCLASSES + border WINDOW_BORDER_FULL + bordercolor 0.5 0.5 0.5 0.5 + forecolor 1 1 1 1 + backcolor 0.2 0.2 0.2 1 + outlinecolor 0.1 0.1 0.1 0.5 + visible MENU_TRUE + doubleclick + { + play "sound/misc/menu1.wav"; + uiScript SpawnAsAlienClass; + close tremulous_alienclass + } + } + + itemDef + { + name infopane + ownerdraw UI_ACLASSINFOPANE + textstyle ITEM_TEXTSTYLE_NORMAL + style WINDOW_STYLE_EMPTY + rect INFO_X INFO_Y INFO_W INFO_H + textscale .33 + textalign ALIGN_LEFT + textvalign VALIGN_TOP + textalignx INFO_TOFF + textaligny INFO_TOFF + border WINDOW_BORDER_FULL + bordercolor 0.5 0.5 0.5 0.5 + forecolor 1 1 1 1 + backcolor 0.2 0.2 0.2 1 + outlinecolor 0.1 0.1 0.1 0.5 + visible MENU_TRUE + decoration + } + + itemDef + { + name "Back" + text "< Back" + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_EMPTY + rect ((2*BORDER)+LIST_W) (H-(BORDER+BUTT_H)) BUTT_W BUTT_H + textalign ALIGN_CENTER + textvalign VALIGN_CENTER + textscale .4 + forecolor 1 1 1 1 + backcolor .5 0 0 .25 + visible MENU_TRUE + action + { + play "sound/misc/menu4.wav"; + close tremulous_alienclass; + open tremulous_teamselect + } + } + + itemDef + { + name "OKCancel" + text "OK" + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_EMPTY + rect (W-((2*BORDER)+(2*BUTT_W))) (H-(BORDER+BUTT_H)) BUTT_W BUTT_H + textalign ALIGN_CENTER + textvalign VALIGN_CENTER + textscale .4 + forecolor 1 1 1 1 + backcolor .5 0 0 .25 + visible MENU_TRUE + action + { + play "sound/misc/menu1.wav"; + uiScript SpawnAsAlienClass; + close tremulous_alienclass + } + } + + itemDef + { + name "OKCancel" + text "Cancel" + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_EMPTY + rect (W-(BORDER+BUTT_W)) (H-(BORDER+BUTT_H)) BUTT_W BUTT_H + textalign ALIGN_CENTER + textvalign VALIGN_CENTER + textscale .4 + forecolor 1 1 1 1 + backcolor .5 0 0 .25 + visible MENU_TRUE + action + { + play "sound/misc/menu3.wav"; + close tremulous_alienclass + } + } + } +} diff --git a/assets/ui/tremulous_aliendialogs.menu b/assets/ui/tremulous_aliendialogs.menu new file mode 100644 index 0000000..921d2c8 --- /dev/null +++ b/assets/ui/tremulous_aliendialogs.menu @@ -0,0 +1,97 @@ +#include "ui/menudef.h" + +{ + +#define W 280 +#define H 190 +#define BORDER 10 + +#define BUTT_H 25 +#define BUTT_W 45 + +#define INFO_W (W-(2*BORDER)) +#define INFO_H (H-((4*BORDER)+(2*BUTT_H))) +#define INFO_X BORDER +#define INFO_Y ((2*BORDER)+BUTT_H) + + menuDef + { + name "tremulous_alien_dialog" + visible MENU_FALSE + fullscreen MENU_FALSE + outOfBoundsClick + rect (320-(W/2)) (240-(H/2)) W H + focusColor 1 .75 0 1 + style WINDOW_STYLE_EMPTY + popup + + itemDef + { + name window + rect 0 0 W H + style WINDOW_STYLE_FILLED + backcolor 0 0 0 1 + visible MENU_TRUE + decoration + + border WINDOW_BORDER_FULL + borderSize 1.0 + borderColor 0.5 0.5 0.5 1 + } + + itemDef + { + name alien_dialog + text "Error" + type ITEM_TYPE_TEXT + textstyle ITEM_TEXTSTYLE_NORMAL + style WINDOW_STYLE_EMPTY + rect BORDER BORDER INFO_W BUTT_H + textalign ALIGN_CENTER + textvalign VALIGN_CENTER + textscale .4 + forecolor 1 1 1 1 + backcolor .5 0 0 .25 + visible MENU_TRUE + decoration + } + + itemDef + { + name alien_dialog + type ITEM_TYPE_TEXT + textstyle ITEM_TEXTSTYLE_NORMAL + style WINDOW_STYLE_EMPTY + rect INFO_X INFO_Y INFO_W INFO_H + cvar "ui_dialog" + wrapped + textalign ALIGN_CENTER + textvalign VALIGN_CENTER + textscale .33 + forecolor 1 1 1 1 + backcolor .5 0 0 .25 + visible MENU_TRUE + decoration + } + + itemDef + { + name alien_dialog + text "OK" + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_EMPTY + rect (W-(BORDER+BUTT_W)) (H-(BORDER+BUTT_H)) BUTT_W BUTT_H + textalign ALIGN_CENTER + textvalign VALIGN_CENTER + textscale .4 + forecolor 1 1 1 1 + backcolor .5 0 0 .25 + visible MENU_TRUE + action + { + play "sound/misc/menu1.wav"; + close tremulous_alien_dialog + } + } + } +} diff --git a/assets/ui/tremulous_alienupgrade.menu b/assets/ui/tremulous_alienupgrade.menu new file mode 100644 index 0000000..2ef7bcb --- /dev/null +++ b/assets/ui/tremulous_alienupgrade.menu @@ -0,0 +1,136 @@ +#include "ui/menudef.h" + +{ + +#define W 450 +#define H 250 +#define BORDER 10 + +#define LIST_W 140 +#define LIST_H (H-(2*BORDER)) +#define LIST_X BORDER +#define LIST_Y BORDER + +#define BUTT_H 25 +#define BUTT_W 45 + +#define INFO_W (W-((3*BORDER)+LIST_W)) +#define INFO_H (H-((3*BORDER)+BUTT_H)) +#define INFO_X ((2*BORDER)+LIST_W) +#define INFO_Y BORDER +#define INFO_TOFF 6 + + menuDef + { + name "tremulous_alienupgrade" + visible MENU_TRUE + fullscreen MENU_FALSE + outOfBoundsClick + rect (320-(W/2)) (240-(H/2)) W H + focusColor 1 .75 0 1 + style WINDOW_STYLE_FILLED + popup + onOpen { uiScript LoadAlienUpgrades; setFocus list } + + itemDef + { + name window + rect 0 0 W H + style WINDOW_STYLE_FILLED + backcolor 0 0 0 1 + visible MENU_TRUE + decoration + + border WINDOW_BORDER_FULL + borderSize 1.0 + borderColor 0.5 0.5 0.5 1 + } + + itemDef + { + name "list" + rect LIST_X LIST_Y LIST_W LIST_H + type ITEM_TYPE_LISTBOX + style WINDOW_STYLE_EMPTY + elementwidth 120 + elementheight 20 + textscale .33 + elementtype LISTBOX_TEXT + feeder FEEDER_TREMALIENUPGRADE + border WINDOW_BORDER_FULL + bordercolor 0.5 0.5 0.5 0.5 + forecolor 1 1 1 1 + backcolor 0.2 0.2 0.2 1 + outlinecolor 0.1 0.1 0.1 0.5 + visible MENU_TRUE + doubleclick + { + play "sound/misc/menu1.wav"; + uiScript UpgradeToNewClass; + close tremulous_alienupgrade + } + } + + itemDef + { + name infopane + ownerdraw UI_AUPGRADEINFOPANE + textstyle ITEM_TEXTSTYLE_NORMAL + style WINDOW_STYLE_EMPTY + rect INFO_X INFO_Y INFO_W INFO_H + textscale .33 + textalign ALIGN_LEFT + textvalign VALIGN_TOP + textalignx INFO_TOFF + textaligny INFO_TOFF + border WINDOW_BORDER_FULL + bordercolor 0.5 0.5 0.5 0.5 + forecolor 1 1 1 1 + backcolor 0.2 0.2 0.2 1 + outlinecolor 0.1 0.1 0.1 0.5 + visible MENU_TRUE + decoration + } + + itemDef + { + name "OKCancel" + text "OK" + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_EMPTY + rect (W-((2*BORDER)+(2*BUTT_W))) (H-(BORDER+BUTT_H)) BUTT_W BUTT_H + textalign ALIGN_CENTER + textvalign VALIGN_CENTER + textscale .4 + forecolor 1 1 1 1 + backcolor .5 0 0 .25 + visible MENU_TRUE + action + { + play "sound/misc/menu1.wav"; + uiScript UpgradeToNewClass; + close tremulous_alienupgrade + } + } + + itemDef + { + name "OKCancel" + text "Cancel" + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_EMPTY + rect (W-(BORDER+BUTT_W)) (H-(BORDER+BUTT_H)) BUTT_W BUTT_H + textalign ALIGN_CENTER + textvalign VALIGN_CENTER + textscale .4 + forecolor 1 1 1 1 + backcolor .5 0 0 .25 + visible MENU_TRUE + action + { + play "sound/misc/menu3.wav"; + close tremulous_alienupgrade + } + } + } +} diff --git a/assets/ui/tremulous_common_hud.h b/assets/ui/tremulous_common_hud.h new file mode 100644 index 0000000..4fb857b --- /dev/null +++ b/assets/ui/tremulous_common_hud.h @@ -0,0 +1,247 @@ +#define BORDER 10 + +#define STAT_W 45 +#define STAT_H 22 +#define STAT_X (W-(BORDER+STAT_W)) + +#define CONSOLE_W (W-((3*BORDER)+STAT_W)) +#define CONSOLE_H 180 +#define MAIN_W (W-(2*BORDER)) + +//#define TUTORIAL_X (W-(BORDER*MAIN_W)) +#define TUTORIAL_X 320 + +#define KILLFEED_X (BORDER) +#define KILLFEED_Y (410) + +//CONSOLE +itemDef +{ + name "console" + rect BORDER BORDER CONSOLE_W CONSOLE_H + aspectBias ALIGN_LEFT + style WINDOW_STYLE_EMPTY + visible MENU_TRUE + decoration + forecolor 0.93 0.93 0.92 1 + textalign ALIGN_LEFT + textvalign VALIGN_TOP + textscale 0.35 + textstyle ITEM_TEXTSTYLE_SHADOWED + ownerdraw CG_CONSOLE +} + +//TUTORIAL +itemDef +{ + name "tutorial" + rect TUTORIAL_X 275 MAIN_W 130 + aspectBias ALIGN_LEFT + style WINDOW_STYLE_EMPTY + visible MENU_TRUE + decoration + forecolor 1 1 1 0.35 + textalign ALIGN_LEFT + textvalign VALIGN_CENTER + textscale 0.3 + textstyle ITEM_TEXTSTYLE_NORMAL + ownerdraw CG_TUTORIAL +} + +//FPS +itemDef +{ + name "fps" + rect STAT_X BORDER STAT_W STAT_H + aspectBias ALIGN_RIGHT + style WINDOW_STYLE_EMPTY + visible MENU_TRUE + decoration + forecolor COMMON_HUD_R COMMON_HUD_G COMMON_HUD_B 1 + textalign ALIGN_RIGHT + textvalign VALIGN_CENTER + textscale 0.3 + textstyle ITEM_TEXTSTYLE_NORMAL + ownerdraw CG_FPS +} + +//TIMER +itemDef +{ + name "timer" + rect STAT_X ((2*BORDER)+STAT_H) STAT_W STAT_H + aspectBias ALIGN_RIGHT + style WINDOW_STYLE_EMPTY + visible MENU_TRUE + decoration + forecolor COMMON_HUD_R COMMON_HUD_G COMMON_HUD_B 1 + textalign ALIGN_RIGHT + textvalign VALIGN_CENTER + textscale 0.3 + textstyle ITEM_TEXTSTYLE_NORMAL + ownerdraw CG_TIMER +} + +//LAGOMETER +itemDef +{ + name "lagometer" + rect STAT_X ((3*BORDER)+(2*STAT_H)) STAT_W STAT_H + aspectBias ALIGN_RIGHT + style WINDOW_STYLE_EMPTY + visible MENU_TRUE + decoration + forecolor COMMON_HUD_R COMMON_HUD_G COMMON_HUD_B 1 + textscale 0.3 + ownerdraw CG_LAGOMETER +} + +//SPEEDOMETER +itemDef +{ + name "speedometer" + rect (320-(STAT_W/2)) 350 STAT_W STAT_H + aspectBias ALIGN_CENTER + type ITEM_TYPE_OWNERDRAW + ownerdraw CG_SPEEDOMETER + style WINDOW_STYLE_EMPTY + visible MENU_TRUE + decoration + backColor COMMON_HUD_R COMMON_HUD_G COMMON_HUD_B 0.2 + foreColor COMMON_HUD_R COMMON_HUD_G COMMON_HUD_B 0.8 + textscale 0.3 +} + +//CLOCK +itemDef +{ + name "clock" + rect STAT_X ((4*BORDER)+(3*STAT_H)) STAT_W STAT_H + aspectBias ALIGN_RIGHT + style WINDOW_STYLE_EMPTY + visible MENU_TRUE + decoration + forecolor COMMON_HUD_R COMMON_HUD_G COMMON_HUD_B 1 + textalign ALIGN_RIGHT + textvalign VALIGN_CENTER + textscale 0.3 + textstyle ITEM_TEXTSTYLE_NORMAL + ownerdraw CG_CLOCK +} + +//LOCATION +itemDef +{ + name "location" + rect (STAT_X-75) ((5*BORDER)+(4*STAT_H)) (STAT_W+75) STAT_H + aspectBias ALIGN_RIGHT + visible MENU_TRUE + decoration + forecolor 1 1 1 1 + textalign ALIGN_RIGHT + textscale 0.3 + ownerdraw CG_PLAYER_LOCATION +} + +//DEMO STATE +itemDef +{ + name "demoRecording" + rect (STAT_X+(STAT_W-32)) ((8*BORDER)+(4*STAT_H)) 32 32 + aspectBias ALIGN_RIGHT + style WINDOW_STYLE_EMPTY + visible MENU_TRUE + decoration + forecolor 1 0 0 1 + textscale 0.3 + ownerdraw CG_DEMO_RECORDING + background "ui/assets/neutral/circle.tga" +} +itemDef +{ + name "demoPlayback" + rect (STAT_X+(STAT_W-32)) ((8*BORDER)+(4*STAT_H)) 32 32 + aspectBias ALIGN_RIGHT + style WINDOW_STYLE_EMPTY + visible MENU_TRUE + decoration + forecolor 1 1 1 1 + textscale 0.3 + ownerdraw CG_DEMO_PLAYBACK + background "ui/assets/forwardarrow.tga" +} + +//SNAPSHOT +itemDef +{ + name "snapshot" + rect BORDER (H-(BORDER+STAT_H)) MAIN_W STAT_H + aspectBias ALIGN_LEFT + style WINDOW_STYLE_EMPTY + visible MENU_TRUE + decoration + forecolor COMMON_HUD_R COMMON_HUD_G COMMON_HUD_B 1 + textalign ALIGN_LEFT + textvalign VALIGN_CENTER + textscale 0.4 + textstyle ITEM_TEXTSTYLE_NORMAL + ownerdraw CG_SNAPSHOT +} + +//PLAYER NAME +itemDef +{ + name "playername" + rect 200 275 240 25 + aspectBias ALIGN_CENTER + visible MENU_TRUE + decoration + textScale .5 + ownerdraw CG_PLAYER_CROSSHAIRNAMES + textstyle ITEM_TEXTSTYLE_SHADOWED +} + +//CROSSHAIR +itemDef +{ + name "crosshair" + visible MENU_TRUE + decoration + rect 320 240 0 0 + forecolor COMMON_HUD_R COMMON_HUD_G COMMON_HUD_B .35 + ownerdraw CG_PLAYER_CROSSHAIR +} + +//SPECTATOR TEXT +itemDef +{ + name "followtext" + rect 200 375 240 25 + foreColor 1 1 1 1 + aspectBias ALIGN_CENTER + textalign ALIGN_CENTER + textvalign VALIGN_TOP + visible MENU_TRUE + decoration + textScale .7 + textStyle ITEM_TEXTSTYLE_SHADOWED + ownerdraw CG_FOLLOW +} + +//KILLFEED +itemDef +{ + name "killfeed" + rect KILLFEED_X KILLFEED_Y 0 0 + aspectBias ALIGN_LEFT + style WINDOW_STYLE_EMPTY + visible MENU_TRUE + decoration + forecolor COMMON_HUD_R COMMON_HUD_G COMMON_HUD_B 1 + textalign ALIGN_LEFT + textvalign VALIGN_CENTER + textscale 0.3 + textstyle ITEM_TEXTSTYLE_SHADOWED + ownerdraw CG_KILLFEED +} + diff --git a/assets/ui/tremulous_default_hud.menu b/assets/ui/tremulous_default_hud.menu new file mode 100644 index 0000000..8d1034b --- /dev/null +++ b/assets/ui/tremulous_default_hud.menu @@ -0,0 +1,37 @@ +#include "ui/menudef.h" + +{ + +#define W 640 +#define H 480 + + menuDef + { + name "default_hud" + fullScreen MENU_FALSE + visible MENU_TRUE + rect 0 0 W H + aspectBias ASPECT_NONE + +#define COMMON_HUD_R 1.0 +#define COMMON_HUD_G 1.0 +#define COMMON_HUD_B 1.0 +#include "ui/tremulous_common_hud.h" + + //SPECTATOR TEXT + itemDef + { + name "spectatortext" + text "SPECTATOR" + rect 200 415 240 25 + foreColor 1 1 1 1 + aspectBias ALIGN_CENTER + textalign ALIGN_CENTER + textvalign VALIGN_TOP + visible MENU_TRUE + decoration + textScale .7 + textStyle ITEM_TEXTSTYLE_SHADOWED + } + } +} diff --git a/assets/ui/tremulous_dialogs.menu b/assets/ui/tremulous_dialogs.menu new file mode 100644 index 0000000..63109dc --- /dev/null +++ b/assets/ui/tremulous_dialogs.menu @@ -0,0 +1,98 @@ +#include "ui/menudef.h" + +{ + +#define W 280 +#define H 190 +#define BORDER 10 + +#define BUTT_H 25 +#define BUTT_W 45 + +#define INFO_W (W-(2*BORDER)) +#define INFO_H (H-((4*BORDER)+(2*BUTT_H))) +#define INFO_X BORDER +#define INFO_Y ((2*BORDER)+BUTT_H) +#define INFO_TOFF 6 + + menuDef + { + name "tremulous_default_dialog" + visible MENU_FALSE + fullscreen MENU_FALSE + outOfBoundsClick + rect (320-(W/2)) (240-(H/2)) W H + focusColor 1 .75 0 1 + style WINDOW_STYLE_EMPTY + popup + + itemDef + { + name window + rect 0 0 W H + style WINDOW_STYLE_FILLED + backcolor 0 0 0 1 + visible MENU_TRUE + decoration + + border WINDOW_BORDER_FULL + borderSize 1.0 + borderColor 0.5 0.5 0.5 1 + } + + itemDef + { + name default_dialog + text "Error" + type ITEM_TYPE_TEXT + textstyle ITEM_TEXTSTYLE_NORMAL + style WINDOW_STYLE_EMPTY + rect BORDER BORDER INFO_W BUTT_H + textalign ALIGN_CENTER + textvalign VALIGN_CENTER + textscale .4 + forecolor 1 1 1 1 + backcolor .5 0 0 .25 + visible MENU_TRUE + decoration + } + + itemDef + { + name default_dialog + textstyle ITEM_TEXTSTYLE_NORMAL + type ITEM_TYPE_TEXT + style WINDOW_STYLE_EMPTY + rect INFO_X INFO_Y INFO_W INFO_H + cvar "ui_dialog" + wrapped + textalign ALIGN_CENTER + textvalign VALIGN_CENTER + textscale .33 + forecolor 1 1 1 1 + backcolor .5 0 0 .25 + visible MENU_TRUE + decoration + } + + itemDef + { + name default_dialog + text "OK" + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_EMPTY + rect (W-(BORDER+BUTT_W)) (H-(BORDER+BUTT_H)) BUTT_W BUTT_H + textalign ALIGN_CENTER + textvalign VALIGN_CENTER + textscale .4 + forecolor 1 1 1 1 + backcolor .5 0 0 .25 + visible MENU_TRUE + action + { + play "sound/misc/menu1.wav"; + close tremulous_default_dialog + } + } + } +} diff --git a/assets/ui/tremulous_human_hud.menu b/assets/ui/tremulous_human_hud.menu new file mode 100644 index 0000000..f2b4ca9 --- /dev/null +++ b/assets/ui/tremulous_human_hud.menu @@ -0,0 +1,379 @@ +#include "ui/menudef.h" + +{ + +#define W 640 +#define H 480 + + menuDef + { + name "human_hud" + fullScreen MENU_FALSE + visible MENU_TRUE + rect 0 0 W H + aspectBias ASPECT_NONE + +#define COMMON_HUD_R 0.0 +#define COMMON_HUD_G 0.8 +#define COMMON_HUD_B 1.0 +#include "ui/tremulous_common_hud.h" + + ////////////////// + //STATIC OBJECTS// + ////////////////// + + //LEFT CIRCLE + itemDef + { + name "left-circle" + rect 35 417.5 25 25 + aspectBias ALIGN_LEFT + visible MENU_TRUE + decoration + forecolor COMMON_HUD_R COMMON_HUD_G COMMON_HUD_B 0.25 + style WINDOW_STYLE_SHADER + background "ui/assets/neutral/circle.tga" + } + + //LEFT ARM + itemDef + { + name "left-arm" + rect 68.25 420 94.5 35 + aspectBias ALIGN_LEFT + visible MENU_TRUE + decoration + forecolor COMMON_HUD_R COMMON_HUD_G COMMON_HUD_B 0.25 + style WINDOW_STYLE_SHADER + background "ui/assets/human/left-arm.tga" + } + + //CREDITS LABEL + itemDef + { + name "credits-label" + rect 508 403 7 7.5 + aspectBias ALIGN_RIGHT + visible MENU_TRUE + decoration + forecolor COMMON_HUD_R COMMON_HUD_G COMMON_HUD_B 0.5 + style WINDOW_STYLE_SHADER + background "ui/assets/human/credits.tga" + } + + //RIGHT CIRCLE + itemDef + { + name "right-circle" + rect 580 417.5 25 25 + aspectBias ALIGN_RIGHT + visible MENU_TRUE + decoration + forecolor COMMON_HUD_R COMMON_HUD_G COMMON_HUD_B 0.25 + style WINDOW_STYLE_SHADER + background "ui/assets/neutral/circle.tga" + } + + //RIGHT ARM + itemDef + { + name "right-arm" + rect 477.25 420 94.5 35 + aspectBias ALIGN_RIGHT + visible MENU_TRUE + decoration + forecolor COMMON_HUD_R COMMON_HUD_G COMMON_HUD_B 0.25 + style WINDOW_STYLE_SHADER + background "ui/assets/human/right-arm.tga" + } + + //RIGHT CAP + itemDef + { + name "right-cap" + rect 500 400 80 15 + aspectBias ALIGN_RIGHT + visible MENU_TRUE + decoration + forecolor COMMON_HUD_R COMMON_HUD_G COMMON_HUD_B 0.25 + style WINDOW_STYLE_SHADER + background "ui/assets/human/right-cap.tga" + } + + /////////////////// + //DYNAMIC OBJECTS// + /////////////////// + + //BOLT + itemDef + { + name "bolt" + rect 40 420 15 20 + aspectBias ALIGN_LEFT + visible MENU_TRUE + decoration + forecolor COMMON_HUD_R COMMON_HUD_G COMMON_HUD_B 0.8 + backColor COMMON_HUD_R COMMON_HUD_G COMMON_HUD_B 0.2 + background "ui/assets/human/bolt.tga" + ownerdraw CG_PLAYER_STAMINA_BOLT + } + + //CROSS + itemDef + { + name "cross" + rect 132.5 425 25 25 + aspectBias ALIGN_LEFT + visible MENU_TRUE + decoration + forecolor COMMON_HUD_R COMMON_HUD_G COMMON_HUD_B 0.5 + ownerdraw CG_PLAYER_HEALTH_CROSS + } + + //STAMINA 1 + itemDef + { + name "stamina1" + rect 34.5 403.5 9 11.5 + aspectBias ALIGN_LEFT + visible MENU_TRUE + decoration + forecolor COMMON_HUD_R COMMON_HUD_G COMMON_HUD_B 0.8 + backColor COMMON_HUD_R COMMON_HUD_G COMMON_HUD_B 0.2 + background "ui/assets/human/stamina1.tga" + ownerdraw CG_PLAYER_STAMINA_1 + } + + //STAMINA 2 + itemDef + { + name "stamina2" + rect 24 410.75 11.5 10.5 + aspectBias ALIGN_LEFT + visible MENU_TRUE + decoration + forecolor COMMON_HUD_R COMMON_HUD_G COMMON_HUD_B 0.8 + backColor COMMON_HUD_R COMMON_HUD_G COMMON_HUD_B 0.2 + background "ui/assets/human/stamina2.tga" + ownerdraw CG_PLAYER_STAMINA_2 + } + + //STAMINA 3 + itemDef + { + name "stamina3" + rect 20.75 423.5 10.5 7 + aspectBias ALIGN_LEFT + visible MENU_TRUE + decoration + forecolor COMMON_HUD_R COMMON_HUD_G COMMON_HUD_B 0.8 + backColor COMMON_HUD_R COMMON_HUD_G COMMON_HUD_B 0.2 + background "ui/assets/human/stamina3.tga" + ownerdraw CG_PLAYER_STAMINA_3 + } + + //STAMINA 4 + itemDef + { + name "stamina4" + rect 21 402.5 54 55 + aspectBias ALIGN_LEFT + visible MENU_TRUE + decoration + forecolor COMMON_HUD_R COMMON_HUD_G COMMON_HUD_B 0.8 + backColor COMMON_HUD_R COMMON_HUD_G COMMON_HUD_B 0.2 + background "ui/assets/human/stamina4.tga" + ownerdraw CG_PLAYER_STAMINA_4 + } + + //RING + itemDef + { + name "ring" + //rect 20 402.5 55 55 // Guide for Stamina alignment + rect 565 402.5 55 55 + aspectBias ALIGN_RIGHT + visible MENU_TRUE + decoration + forecolor COMMON_HUD_R COMMON_HUD_G COMMON_HUD_B 0.5 + backColor COMMON_HUD_R COMMON_HUD_G COMMON_HUD_B 0.2 + background "ui/assets/human/ring.tga" + ownerdraw CG_PLAYER_CLIPS_RING + } + + //CREDITS + itemDef + { + name "credits" + rect 515 402 45 11.25 + aspectBias ALIGN_RIGHT + visible MENU_TRUE + decoration + forecolor COMMON_HUD_R COMMON_HUD_G COMMON_HUD_B 0.5 + ownerdraw CG_PLAYER_CREDITS_VALUE + } + + //HEALTH + itemDef + { + name "health" + rect 67 430 60 15 + aspectBias ALIGN_LEFT + visible MENU_TRUE + decoration + forecolor COMMON_HUD_R COMMON_HUD_G COMMON_HUD_B .5 + ownerdraw CG_PLAYER_HEALTH + } + + //WEAPON ICON + itemDef + { + name "weapon" + rect 482.5 425 25 25 + aspectBias ALIGN_RIGHT + visible MENU_TRUE + decoration + forecolor COMMON_HUD_R COMMON_HUD_G COMMON_HUD_B 0.5 + ownerdraw CG_PLAYER_WEAPONICON + } + + //WEAPON SELECT TEXT + itemDef + { + name "selecttext" + rect 200 300 240 25 + aspectBias ALIGN_CENTER + visible MENU_TRUE + decoration + textScale .5 + ownerdraw CG_PLAYER_SELECTTEXT + textstyle ITEM_TEXTSTYLE_SHADOWED + } + + //AMMO + itemDef + { + name "ammo" + rect 507 430 53 15 + aspectBias ALIGN_RIGHT + visible MENU_TRUE + decoration + forecolor COMMON_HUD_R COMMON_HUD_G COMMON_HUD_B .5 + ownerdraw CG_PLAYER_AMMO_VALUE + } + + //CLIPS + itemDef + { + name "clips" + rect 538 423 60 15 + aspectBias ALIGN_RIGHT + visible MENU_TRUE + decoration + forecolor COMMON_HUD_R COMMON_HUD_G COMMON_HUD_B .5 + ownerdraw CG_PLAYER_CLIPS_VALUE + } + + //BUILD TIMER + itemDef + { + name "buildtimer" + rect 580 417.5 25 25 + aspectBias ALIGN_RIGHT + visible MENU_TRUE + decoration + forecolor COMMON_HUD_R COMMON_HUD_G COMMON_HUD_B .5 + ownerdraw CG_PLAYER_BUILD_TIMER + } + + //USABLE + itemDef + { + name "usable" + rect 307.5 380 25 25 + aspectBias ALIGN_CENTER + visible MENU_TRUE + decoration + forecolor COMMON_HUD_R COMMON_HUD_G COMMON_HUD_B .5 + background "ui/assets/neutral/use.tga" + ownerdraw CG_PLAYER_USABLE_BUILDABLE + } + + //SCANNER + itemDef + { + name "scanner" + rect 164 340 312 72 + aspectBias ALIGN_CENTER + visible MENU_TRUE + decoration + forecolor COMMON_HUD_R COMMON_HUD_G COMMON_HUD_B .5 + background "ui/assets/human/scanner.tga" + ownerdraw CG_PLAYER_HUMAN_SCANNER + } + + //INVENTORY + itemDef + { + name "inventory" + rect 182.5 425 275 25 + aspectBias ALIGN_CENTER + visible MENU_TRUE + decoration + forecolor COMMON_HUD_R COMMON_HUD_G COMMON_HUD_B 0.5 + ownerdraw CG_PLAYER_SELECT + } + + //CHARGE BAR + itemDef + { + name "charge" + rect 510 384 56 8 + aspectBias ALIGN_RIGHT + visible MENU_TRUE + decoration + forecolor COMMON_HUD_R COMMON_HUD_G COMMON_HUD_B 0.5 + ownerdraw CG_PLAYER_CHARGE_BAR + background "ui/assets/neutral/charge_cap_h.tga" + } + + //CHARGE BAR BG + itemDef + { + name "chargebg" + rect 506 380 64 16 + aspectBias ALIGN_RIGHT + visible MENU_TRUE + decoration + forecolor COMMON_HUD_R COMMON_HUD_G COMMON_HUD_B 0.25 + ownerdraw CG_PLAYER_CHARGE_BAR_BG + background "ui/assets/neutral/charge_bg_h.tga" + } + + //SELECTED + itemDef + { + name "selected" + rect 306 424 27 27 + aspectBias ALIGN_CENTER + visible MENU_TRUE + decoration + forecolor COMMON_HUD_R COMMON_HUD_G COMMON_HUD_B 0.25 + style WINDOW_STYLE_SHADER + background "ui/assets/neutral/selected.tga" + } + + //TEAM OVERLAY + itemDef + { + name "teamoverlay" + rect BORDER 175 200 128 + style WINDOW_STYLE_EMPTY + visible MENU_TRUE + decoration + forecolor COMMON_HUD_R COMMON_HUD_G COMMON_HUD_B 0.75 + textscale 0.85 + ownerdraw CG_TEAMOVERLAY + } + } +} diff --git a/assets/ui/tremulous_humanarmoury.menu b/assets/ui/tremulous_humanarmoury.menu new file mode 100644 index 0000000..2df829f --- /dev/null +++ b/assets/ui/tremulous_humanarmoury.menu @@ -0,0 +1,189 @@ +#include "ui/menudef.h" + +{ + +#define W 550 +#define H 250 +#define BORDER 10 +#define LIST_W 140 +#define LIST_H (H-(2*BORDER)) +#define LIST_LX BORDER +#define LIST_LY BORDER +#define LIST_RX (W-(BORDER+LIST_W)) +#define LIST_RY BORDER + +#define BUTT_H 25 +#define BUTT_Y (H-(BORDER+BUTT_H)) + +#define INFO_W (W-((4*BORDER)+(2*LIST_W))) +#define INFO_H (H-((3*BORDER)+BUTT_H)) +#define INFO_X ((2*BORDER)+LIST_W) +#define INFO_Y BORDER +#define INFO_TOFF 6 + +#define BUTT_X INFO_X +#define BUTT_W (INFO_W/3) + + menuDef + { + name "tremulous_humanarmoury" + visible MENU_FALSE + fullscreen MENU_FALSE + outOfBoundsClick + rect (320-(W/2)) (240-(H/2)) W H + focusColor 1 .75 0 1 + style WINDOW_STYLE_FILLED + popup + onOpen + { + uiScript LoadHumanArmouryBuys; + uiScript LoadHumanArmourySells; + setFocus list + } + + itemDef + { + name window + rect 0 0 W H + style WINDOW_STYLE_FILLED + backcolor 0 0 0 1 + visible MENU_TRUE + decoration + + border WINDOW_BORDER_FULL + borderSize 1.0 + borderColor 0.5 0.5 0.5 1 + } + + itemDef + { + name "buylist" + rect LIST_LX LIST_LY LIST_W LIST_H + type ITEM_TYPE_LISTBOX + style WINDOW_STYLE_EMPTY + elementwidth 120 + elementheight 20 + textscale .33 + elementtype LISTBOX_TEXT + feeder FEEDER_TREMHUMANARMOURYBUY + border WINDOW_BORDER_FULL + bordercolor 0.5 0.5 0.5 0.5 + forecolor 1 1 1 1 + backcolor 0.2 0.2 0.2 1 + outlinecolor 0.1 0.1 0.1 0.5 + visible MENU_TRUE + resetonfeederchange + doubleclick + { + play "sound/misc/menu1.wav"; + uiScript BuyFromArmoury; + } + } + + itemDef + { + name "selllist" + rect LIST_RX LIST_RY LIST_W LIST_H + type ITEM_TYPE_LISTBOX + style WINDOW_STYLE_EMPTY + elementwidth 120 + elementheight 20 + textscale .33 + elementtype LISTBOX_TEXT + feeder FEEDER_TREMHUMANARMOURYSELL + border WINDOW_BORDER_FULL + bordercolor 0.5 0.5 0.5 0.5 + forecolor 1 1 1 1 + backcolor 0.2 0.2 0.2 1 + outlinecolor 0.1 0.1 0.1 0.5 + visible MENU_TRUE + resetonfeederchange + doubleclick + { + play "sound/misc/menu1.wav"; + uiScript SellToArmoury; + } + } + + itemDef + { + name infopane + ownerdraw UI_HBUYINFOPANE + textstyle ITEM_TEXTSTYLE_NORMAL + style WINDOW_STYLE_EMPTY + rect INFO_X INFO_Y INFO_W INFO_H + textscale .33 + textalign ALIGN_LEFT + textvalign VALIGN_TOP + textalignx INFO_TOFF + textaligny INFO_TOFF + border WINDOW_BORDER_FULL + bordercolor 0.5 0.5 0.5 0.5 + forecolor 1 1 1 1 + backcolor 0.2 0.2 0.2 1 + outlinecolor 0.1 0.1 0.1 0.5 + visible MENU_TRUE + decoration + } + + itemDef + { + name "Buy" + text "Buy >" + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_EMPTY + rect BUTT_X BUTT_Y BUTT_W BUTT_H + textalign ALIGN_LEFT + textvalign VALIGN_CENTER + textscale .4 + forecolor 1 1 1 1 + backcolor .5 0 0 .25 + visible MENU_TRUE + action + { + play "sound/misc/menu1.wav"; + uiScript BuyFromArmoury; + } + } + + itemDef + { + name "Close" + text "Close" + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_EMPTY + rect (BUTT_X+BUTT_W) BUTT_Y BUTT_W BUTT_H + textalign ALIGN_CENTER + textvalign VALIGN_CENTER + textscale .4 + forecolor 1 1 1 1 + backcolor .5 0 0 .25 + visible MENU_TRUE + action + { + play "sound/misc/menu4.wav"; + close tremulous_humanarmoury + } + } + + itemDef + { + name "Sell" + text "< Sell" + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_EMPTY + rect (BUTT_X+(2*BUTT_W)) BUTT_Y BUTT_W BUTT_H + textalign ALIGN_RIGHT + textvalign VALIGN_CENTER + textscale .4 + forecolor 1 1 1 1 + backcolor .5 0 0 .25 + visible MENU_TRUE + action + { + play "sound/misc/menu1.wav"; + uiScript SellToArmoury; + } + } + } +} diff --git a/assets/ui/tremulous_humanbuild.menu b/assets/ui/tremulous_humanbuild.menu new file mode 100644 index 0000000..572957b --- /dev/null +++ b/assets/ui/tremulous_humanbuild.menu @@ -0,0 +1,135 @@ +#include "ui/menudef.h" + +{ + +#define W 450 +#define H 250 +#define BORDER 10 + +#define LIST_W 140 +#define LIST_H (H-(2*BORDER)) +#define LIST_X BORDER +#define LIST_Y BORDER + +#define BUTT_H 25 +#define BUTT_W 45 + +#define INFO_W (W-((3*BORDER)+LIST_W)) +#define INFO_H (H-((3*BORDER)+BUTT_H)) +#define INFO_X ((2*BORDER)+LIST_W) +#define INFO_Y BORDER +#define INFO_TOFF 6 + + menuDef + { + name "tremulous_humanbuild" + visible MENU_FALSE + fullscreen MENU_FALSE + outOfBoundsClick + rect (320-(W/2)) (240-(H/2)) W H + focusColor 1 .75 0 1 + style WINDOW_STYLE_FILLED + popup + onOpen { uiScript LoadHumanBuilds; setFocus list } + + itemDef + { + name window + rect 0 0 W H + style WINDOW_STYLE_FILLED + backcolor 0 0 0 1 + visible MENU_TRUE + decoration + + border WINDOW_BORDER_FULL + borderSize 1.0 + borderColor 0.5 0.5 0.5 1 + } + + itemDef + { + name "list" + rect LIST_X LIST_Y LIST_W LIST_H + type ITEM_TYPE_LISTBOX + style WINDOW_STYLE_EMPTY + elementwidth 120 + elementheight 20 + textscale .33 + elementtype LISTBOX_TEXT + feeder FEEDER_TREMHUMANBUILD + border WINDOW_BORDER_FULL + bordercolor 0.5 0.5 0.5 0.5 + forecolor 1 1 1 1 + backcolor 0.2 0.2 0.2 1 + outlinecolor 0.1 0.1 0.1 0.5 + visible MENU_TRUE + doubleclick + { + play "sound/misc/menu1.wav"; + uiScript BuildHumanBuildable; + close tremulous_humanbuild + } + } + + itemDef + { + name infopane + ownerdraw UI_HBUILDINFOPANE + textstyle ITEM_TEXTSTYLE_NORMAL + style WINDOW_STYLE_EMPTY + rect INFO_X INFO_Y INFO_W INFO_H + textscale .33 + textalign ALIGN_LEFT + textvalign VALIGN_TOP + textalignx INFO_TOFF + textaligny INFO_TOFF + border WINDOW_BORDER_FULL + bordercolor 0.5 0.5 0.5 0.5 + forecolor 1 1 1 1 + backcolor 0.2 0.2 0.2 1 + visible MENU_TRUE + decoration + } + + itemDef + { + name "OKCancel" + text "OK" + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_EMPTY + rect (W-((2*BORDER)+(2*BUTT_W))) (H-(BORDER+BUTT_H)) BUTT_W BUTT_H + textalign ALIGN_CENTER + textvalign VALIGN_CENTER + textscale .4 + forecolor 1 1 1 1 + backcolor .5 0 0 .25 + visible MENU_TRUE + action + { + play "sound/misc/menu1.wav"; + uiScript BuildHumanBuildable; + close tremulous_humanbuild + } + } + + itemDef + { + name "OKCancel" + text "Cancel" + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_EMPTY + rect (W-(BORDER+BUTT_W)) (H-(BORDER+BUTT_H)) BUTT_W BUTT_H + textalign ALIGN_CENTER + textvalign VALIGN_CENTER + textscale .4 + forecolor 1 1 1 1 + backcolor .5 0 0 .25 + visible MENU_TRUE + action + { + play "sound/misc/menu3.wav"; + close tremulous_humanbuild + } + } + } +} diff --git a/assets/ui/tremulous_humandialogs.menu b/assets/ui/tremulous_humandialogs.menu new file mode 100644 index 0000000..96ba08a --- /dev/null +++ b/assets/ui/tremulous_humandialogs.menu @@ -0,0 +1,98 @@ +#include "ui/menudef.h" + +{ + +#define W 280 +#define H 190 +#define BORDER 10 + +#define BUTT_H 25 +#define BUTT_W 45 + +#define INFO_W (W-(2*BORDER)) +#define INFO_H (H-((4*BORDER)+(2*BUTT_H))) +#define INFO_X BORDER +#define INFO_Y ((2*BORDER)+BUTT_H) +#define INFO_TOFF 6 + + menuDef + { + name "tremulous_human_dialog" + visible MENU_FALSE + fullscreen MENU_FALSE + outOfBoundsClick + rect (320-(W/2)) (240-(H/2)) W H + focusColor 1 .75 0 1 + style WINDOW_STYLE_EMPTY + popup + + itemDef + { + name window + rect 0 0 W H + style WINDOW_STYLE_FILLED + backcolor 0 0 0 1 + visible MENU_TRUE + decoration + + border WINDOW_BORDER_FULL + borderSize 1.0 + borderColor 0.5 0.5 0.5 1 + } + + itemDef + { + name human_dialog + text "Error" + type ITEM_TYPE_TEXT + textstyle ITEM_TEXTSTYLE_NORMAL + style WINDOW_STYLE_EMPTY + rect BORDER BORDER INFO_W BUTT_H + textalign ALIGN_CENTER + textvalign VALIGN_CENTER + textscale .4 + forecolor 1 1 1 1 + backcolor .5 0 0 .25 + visible MENU_TRUE + decoration + } + + itemDef + { + name human_dialog + type ITEM_TYPE_TEXT + textstyle ITEM_TEXTSTYLE_NORMAL + style WINDOW_STYLE_EMPTY + rect INFO_X INFO_Y INFO_W INFO_H + cvar "ui_dialog" + wrapped + textalign ALIGN_CENTER + textvalign VALIGN_CENTER + textscale .33 + forecolor 1 1 1 1 + backcolor .5 0 0 .25 + visible MENU_TRUE + decoration + } + + itemDef + { + name human_dialog + text "OK" + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_EMPTY + rect (W-(BORDER+BUTT_W)) (H-(BORDER+BUTT_H)) BUTT_W BUTT_H + textalign ALIGN_CENTER + textvalign VALIGN_CENTER + textscale .4 + forecolor 1 1 1 1 + backcolor .5 0 0 .25 + visible MENU_TRUE + action + { + play "sound/misc/menu1.wav"; + close tremulous_human_dialog + } + } + } +} diff --git a/assets/ui/tremulous_humanitem.menu b/assets/ui/tremulous_humanitem.menu new file mode 100644 index 0000000..551334b --- /dev/null +++ b/assets/ui/tremulous_humanitem.menu @@ -0,0 +1,157 @@ +#include "ui/menudef.h" + +{ + +#define W 450 +#define H 250 +#define BORDER 10 + +#define LIST_W 140 +#define LIST_H (H-(2*BORDER)) +#define LIST_X BORDER +#define LIST_Y BORDER + +#define BUTT_H 25 +#define BUTT_W 45 + +#define INFO_W (W-((3*BORDER)+LIST_W)) +#define INFO_H (H-((3*BORDER)+BUTT_H)) +#define INFO_X ((2*BORDER)+LIST_W) +#define INFO_Y BORDER +#define INFO_TOFF 6 + + menuDef + { + name "tremulous_humanitem" + visible MENU_FALSE + fullscreen MENU_FALSE + outOfBoundsClick + rect (320-(W/2)) (240-(H/2)) W H + focusColor 1 .75 0 1 + style WINDOW_STYLE_FILLED + popup + onOpen { uiScript LoadHumanItems; setFocus list } + + itemDef + { + name window + rect 0 0 W H + style WINDOW_STYLE_FILLED + backcolor 0 0 0 1 + visible MENU_TRUE + decoration + + border WINDOW_BORDER_FULL + borderSize 1.0 + borderColor 0.5 0.5 0.5 1 + } + + itemDef + { + name "list" + rect LIST_X LIST_Y LIST_W LIST_H + type ITEM_TYPE_LISTBOX + style WINDOW_STYLE_EMPTY + elementwidth 120 + elementheight 20 + textscale .33 + elementtype LISTBOX_TEXT + feeder FEEDER_TREMHUMANITEMS + border WINDOW_BORDER_FULL + bordercolor 0.5 0.5 0.5 0.5 + forecolor 1 1 1 1 + backcolor 0.2 0.2 0.2 1 + outlinecolor 0.1 0.1 0.1 0.5 + visible MENU_TRUE + doubleclick + { + play "sound/misc/menu1.wav"; + uiScript SpawnWithHumanItem; + close tremulous_humanitem + } + } + + itemDef + { + name infopane + ownerdraw UI_HITEMINFOPANE + textstyle ITEM_TEXTSTYLE_NORMAL + style WINDOW_STYLE_EMPTY + rect INFO_X INFO_Y INFO_W INFO_H + textscale .33 + textalign ALIGN_LEFT + textvalign VALIGN_TOP + textalignx INFO_TOFF + textaligny INFO_TOFF + border WINDOW_BORDER_FULL + bordercolor 0.5 0.5 0.5 0.5 + forecolor 1 1 1 1 + backcolor 0.2 0.2 0.2 1 + outlinecolor 0.1 0.1 0.1 0.5 + visible MENU_TRUE + decoration + } + + itemDef + { + name "Back" + text "< Back" + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_EMPTY + rect ((2*BORDER)+LIST_W) (H-(BORDER+BUTT_H)) BUTT_W BUTT_H + textalign ALIGN_CENTER + textvalign VALIGN_CENTER + textscale .4 + forecolor 1 1 1 1 + backcolor .5 0 0 .25 + visible MENU_TRUE + action + { + play "sound/misc/menu4.wav"; + close tremulous_humanitem; + open tremulous_teamselect + } + } + + itemDef + { + name "OKCancel" + text "OK" + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_EMPTY + rect (W-((2*BORDER)+(2*BUTT_W))) (H-(BORDER+BUTT_H)) BUTT_W BUTT_H + textalign ALIGN_CENTER + textvalign VALIGN_CENTER + textscale .4 + forecolor 1 1 1 1 + backcolor .5 0 0 .25 + visible MENU_TRUE + action + { + play "sound/misc/menu1.wav"; + uiScript SpawnWithHumanItem; + close tremulous_humanitem + } + } + + itemDef + { + name "OKCancel" + text "Cancel" + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_EMPTY + rect (W-(BORDER+BUTT_W)) (H-(BORDER+BUTT_H)) BUTT_W BUTT_H + textalign ALIGN_CENTER + textvalign VALIGN_CENTER + textscale .4 + forecolor 1 1 1 1 + backcolor .5 0 0 .25 + visible MENU_TRUE + action + { + play "sound/misc/menu3.wav"; + close tremulous_humanitem + } + } + } +} diff --git a/assets/ui/tremulous_spectator_hud.menu b/assets/ui/tremulous_spectator_hud.menu new file mode 100644 index 0000000..b4a5ff1 --- /dev/null +++ b/assets/ui/tremulous_spectator_hud.menu @@ -0,0 +1,52 @@ +#include "ui/menudef.h" + +{ + +#define W 640 +#define H 480 + + menuDef + { + name "spectator_hud" + fullScreen MENU_FALSE + visible MENU_TRUE + rect 0 0 W H + aspectBias ASPECT_NONE + +#define COMMON_HUD_R 1.0 +#define COMMON_HUD_G 1.0 +#define COMMON_HUD_B 1.0 +#include "ui/tremulous_common_hud.h" + + ////////////////// + //STATIC OBJECTS// + ////////////////// + + //LEFT CIRCLE + itemDef + { + name "left-circle" + rect 35 417.5 25 25 + aspectBias ALIGN_LEFT + visible MENU_TRUE + decoration + forecolor COMMON_HUD_R COMMON_HUD_G COMMON_HUD_B 0.25 + style WINDOW_STYLE_SHADER + background "ui/assets/neutral/circle.tga" + } + + //THZ SCANNER + itemDef + { + name "thzscanner" + //rect 10 125 200 200 // Original placement in thz + rect 440 220 200 200 + aspectBias ALIGN_CENTER + visible MENU_TRUE + decoration + //forecolor COMMON_HUD_R COMMON_HUD_G COMMON_HUD_B .5 + background "ui/assets/human/scanner.tga" + ownerdraw CG_PLAYER_THZ_SCANNER + } + } +} diff --git a/assets/ui/tremulous_teamselect.menu b/assets/ui/tremulous_teamselect.menu new file mode 100644 index 0000000..7051274 --- /dev/null +++ b/assets/ui/tremulous_teamselect.menu @@ -0,0 +1,136 @@ +#include "ui/menudef.h" + +{ + +#define W 450 +#define H 250 +#define BORDER 10 + +#define LIST_W 140 +#define LIST_H (H-(2*BORDER)) +#define LIST_X BORDER +#define LIST_Y BORDER + +#define BUTT_H 25 +#define BUTT_W 45 + +#define INFO_W (W-((3*BORDER)+LIST_W)) +#define INFO_H (H-((3*BORDER)+BUTT_H)) +#define INFO_X ((2*BORDER)+LIST_W) +#define INFO_Y BORDER +#define INFO_TOFF 6 + + menuDef + { + name "tremulous_teamselect" + visible MENU_FALSE + fullscreen MENU_FALSE + outOfBoundsClick + rect (320-(W/2)) (240-(H/2)) W H + focusColor 1 .75 0 1 + style WINDOW_STYLE_FILLED + popup + onOpen { uiScript LoadTeams; setFocus list } + + itemDef + { + name window + rect 0 0 W H + style WINDOW_STYLE_FILLED + backcolor 0 0 0 1 + visible MENU_TRUE + decoration + + border WINDOW_BORDER_FULL + borderSize 1.0 + borderColor 0.5 0.5 0.5 1 + } + + itemDef + { + name "list" + rect LIST_X LIST_Y LIST_W LIST_H + type ITEM_TYPE_LISTBOX + style WINDOW_STYLE_EMPTY + elementwidth 120 + elementheight 20 + textscale .33 + elementtype LISTBOX_TEXT + feeder FEEDER_TREMTEAMS + border WINDOW_BORDER_FULL + bordercolor 0.5 0.5 0.5 0.5 + forecolor 1 1 1 1 + backcolor 0.2 0.2 0.2 1 + outlinecolor 0.1 0.1 0.1 0.5 + visible MENU_TRUE + doubleclick + { + play "sound/misc/menu1.wav"; + uiScript JoinTeam; + close tremulous_teamselect + } + } + + itemDef + { + name infopane + ownerdraw UI_TEAMINFOPANE + textstyle ITEM_TEXTSTYLE_NORMAL + style WINDOW_STYLE_EMPTY + rect INFO_X INFO_Y INFO_W INFO_H + textscale .33 + textalign ALIGN_LEFT + textvalign VALIGN_TOP + textalignx INFO_TOFF + textaligny INFO_TOFF + border WINDOW_BORDER_FULL + bordercolor 0.5 0.5 0.5 0.5 + forecolor 1 1 1 1 + backcolor 0.2 0.2 0.2 1 + outlinecolor 0.1 0.1 0.1 0.5 + visible MENU_TRUE + decoration + } + + itemDef + { + name "OKCancel" + text "OK" + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_EMPTY + rect (W-((2*BORDER)+(2*BUTT_W))) (H-(BORDER+BUTT_H)) BUTT_W BUTT_H + textalign ALIGN_CENTER + textvalign VALIGN_CENTER + textscale .4 + forecolor 1 1 1 1 + backcolor .5 0 0 .25 + visible MENU_TRUE + action + { + play "sound/misc/menu1.wav"; + uiScript JoinTeam; + close tremulous_teamselect + } + } + + itemDef + { + name "OKCancel" + text "Cancel" + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_EMPTY + rect (W-(BORDER+BUTT_W)) (H-(BORDER+BUTT_H)) BUTT_W BUTT_H + textalign ALIGN_CENTER + textvalign VALIGN_CENTER + textscale .4 + forecolor 1 1 1 1 + backcolor .5 0 0 .25 + visible MENU_TRUE + action + { + play "sound/misc/menu3.wav"; + close tremulous_teamselect + } + } + } +} diff --git a/assets/ui/tremulous_voicecmd.menu b/assets/ui/tremulous_voicecmd.menu new file mode 100644 index 0000000..1b5ac8b --- /dev/null +++ b/assets/ui/tremulous_voicecmd.menu @@ -0,0 +1,140 @@ +#include "ui/menudef.h" + +{ + +#define W 450 +#define H 300 +#define BORDER 10 + +#define LIST_W 140 +#define LIST_H (H-(2*BORDER)) +#define LIST_X BORDER +#define LIST_Y BORDER + +#define BUTT_H 25 +#define BUTT_W 45 + +#define INFO_W (W-((3*BORDER)+LIST_W)) +#define INFO_H (H-((3*BORDER)+BUTT_H)) +#define INFO_X ((2*BORDER)+LIST_W) +#define INFO_Y BORDER +#define INFO_TOFF 6 + + menuDef + { + name "tremulous_voicecmd" + visible MENU_TRUE + fullscreen MENU_FALSE + outOfBoundsClick + rect (320-(W/2)) (240-(H/2)) W H + focusColor 1 .75 0 1 + style WINDOW_STYLE_FILLED + popup + onOpen + { + uiScript LoadVoiceCmds; + setFocus list + } + + itemDef + { + name window + rect 0 0 W H + style WINDOW_STYLE_FILLED + backcolor 0 0 0 .75 + visible MENU_TRUE + decoration + + border WINDOW_BORDER_FULL + borderSize 1.0 + borderColor 0.5 0.5 0.5 1 + } + + itemDef + { + name "list" + rect LIST_X LIST_Y LIST_W LIST_H + type ITEM_TYPE_LISTBOX + style WINDOW_STYLE_EMPTY + elementwidth 120 + elementheight 20 + textscale .33 + elementtype LISTBOX_TEXT + feeder FEEDER_TREMVOICECMD + border WINDOW_BORDER_FULL + bordercolor 0.5 0.5 0.5 0.5 + forecolor 1 1 1 1 + backcolor 0.2 0.2 0.2 .75 + outlinecolor 0.1 0.1 0.1 0.5 + visible MENU_TRUE + doubleclick + { + play "sound/misc/menu1.wav"; + uiScript ExecuteVoiceCmd; + close tremulous_voicecmd + } + } + + itemDef + { + name infopane + ownerdraw UI_VOICECMDINFOPANE + textstyle ITEM_TEXTSTYLE_NORMAL + style WINDOW_STYLE_EMPTY + rect INFO_X INFO_Y INFO_W INFO_H + textscale .33 + textalign ALIGN_LEFT + textvalign VALIGN_TOP + textalignx INFO_TOFF + textaligny INFO_TOFF + border WINDOW_BORDER_FULL + bordercolor 0.5 0.5 0.5 0.5 + forecolor 1 1 1 1 + backcolor 0.2 0.2 0.2 .75 + outlinecolor 0.1 0.1 0.1 0.5 + visible MENU_TRUE + decoration + } + + itemDef + { + name "OKCancel" + text "OK" + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_EMPTY + rect (W-((2*BORDER)+(2*BUTT_W))) (H-(BORDER+BUTT_H)) BUTT_W BUTT_H + textalign ALIGN_CENTER + textvalign VALIGN_CENTER + textscale .4 + forecolor 1 1 1 1 + backcolor .5 0 0 .25 + visible MENU_TRUE + action + { + play "sound/misc/menu1.wav"; + uiScript ExecuteVoiceCmd; + close tremulous_voicecmd + } + } + + itemDef + { + name "OKCancel" + text "Cancel" + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_EMPTY + rect (W-(BORDER+BUTT_W)) (H-(BORDER+BUTT_H)) BUTT_W BUTT_H + textalign ALIGN_CENTER + textvalign VALIGN_CENTER + textscale .4 + forecolor 1 1 1 1 + backcolor .5 0 0 .25 + visible MENU_TRUE + action + { + play "sound/misc/menu3.wav"; + close tremulous_voicecmd + } + } + } +} diff --git a/cmake/AddQVM.cmake b/cmake/AddQVM.cmake new file mode 100644 index 0000000..84de0c7 --- /dev/null +++ b/cmake/AddQVM.cmake @@ -0,0 +1,73 @@ + +include(CMakeParseArguments) + +set(QVM_TOOLS_DIR ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/qvm_tools) +set(Q3CPP_BINARY ${QVM_TOOLS_DIR}/q3cpp ) +set(Q3RCC_BINARY ${QVM_TOOLS_DIR}/q3rcc ) +set(Q3LCC_BINARY ${QVM_TOOLS_DIR}/q3lcc ) +set(Q3ASM_BINARY ${QVM_TOOLS_DIR}/q3asm ) + +set(QVM_DEPS ${Q3ASM_BINARY} ${Q3CPP_BINARY} ${Q3LCC_BINARY} ${Q3RCC_BINARY}) + +macro(QVM_COMPILE_ASM defs outfile infile) + add_custom_command( + OUTPUT ${outfile} + COMMAND ${Q3LCC_BINARY} + ARGS ${ADD_QVM_D} -o ${outfile} ${infile} + DEPENDS ${QVM_DEPS} + ) + set_source_files_properties(${outfile} PROPERTIES GENERATED TRUE) +endmacro() + +macro(ADD_QVM Name) + cmake_parse_arguments(ADD_QVM "" "" "" ${ARGN}) + + #message( "QVM: ${Name}" ) + + string(TOUPPER ${Name} UPNAME) + set(defs "-DVMS -D${UPNAME}") + + #message( "DEFINITIONS ${defs}" ) + + foreach(srcfile ${ADD_QVM_UNPARSED_ARGUMENTS}) + #message( "> ${srcfile}" ) + + get_filename_component(ext ${srcfile} EXT) + if ("${ext}" STREQUAL ".asm") + set(outfile ${CMAKE_CURRENT_SOURCE_DIR}/${srcfile}) + # Add asm files directly + list(APPEND srcs ${outfile}) + endif() + + if ("${ext}" STREQUAL ".c") + get_filename_component(outfile ${srcfile} NAME_WE) + set(outfile ${outfile}.asm) + # compile C code into asm + qvm_compile_asm(${defs} ${outfile} ${CMAKE_CURRENT_SOURCE_DIR}/${srcfile}) + # add asm to list + list(APPEND srcs ${outfile}) + endif() + + if ("${ext}" STREQUAL ".h") + # XXX: Ignore headers?? + endif() + endforeach() + + #message("SOURCES <${srcs}>") + + add_custom_command( + OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${Name}.qvm + COMMAND ${Q3ASM_BINARY} + ARGS -o ${Name}.qvm ${srcs} + DEPENDS ${Q3ASM_BINARY} ${srcs} + ) + add_custom_target(${Name}.qvm DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/${Name}.qvm) +endmacro() +# +#============================================================ + +include(FindPackageHandleStandardArgs) + +find_package_handle_standard_args(QVM + REQUIRED_VARS Q3LCC_BINARY Q3ASM_BINARY + ) diff --git a/cmake/SDL2.cmake b/cmake/SDL2.cmake new file mode 100644 index 0000000..a18a3a5 --- /dev/null +++ b/cmake/SDL2.cmake @@ -0,0 +1,13 @@ +if(USE_INTERNAL_SDL2) + set(SDL2_DEFINES "-DUSE_LOCAL_HEADERS=1") + set(SDL2_PREFIX "${CMAKE_SOURCE_DIR}/external/SDL2") + set(SDL2_INCLUDE_DIRS "${SDL2_PREFIX}/include") + set(SDL2_LIBRARIES "-L${SDL2_PREFIX}/libs/${CMAKE_SYSTEM_NAME} -lSDL2-2.0.0") +else(USE_INTERNAL_SDL2) + set(SDL2_PREFIX "/usr") + if(APPLE) + set(SDL2_PREFIX "/usr/local") + endif(APPLE) + set(SDL2_INCLUDE_DIRS "${SDL2_PREFIX}/include/SDL2") + set(SDL2_LIBRARIES "-L${SDL2_PREFIX} -lSDL2") +endif(USE_INTERNAL_SDL2) diff --git a/cmake/build_dir b/cmake/build_dir new file mode 100644 index 0000000..b86b288 --- /dev/null +++ b/cmake/build_dir @@ -0,0 +1,17 @@ +# vim:ft=cmake + +if (NOT CMAKE_BUILD_TYPE) + set(CMAKE_BUILD_TYPE Release) +endif() + +set(CMAKE_OSX_ARCHITECTURES ${CMAKE_SYSTEM_PROCESSOR}) + +string( TOLOWER "${CMAKE_BUILD_TYPE}-${CMAKE_SYSTEM_NAME}-${CMAKE_SYSTEM_PROCESSOR}" + BUILD_ASSETS_DIR) + +set(CMAKE_BINARY_DIR ${CMAKE_BINARY_DIR}/${BUILD_ASSETS_DIR}) +set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}) +#set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}) +#set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/${BUILD_ASSETS_DIR}) +#set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/${BUILD_ASSETS_DIR}) + diff --git a/cmake/debug_cflags b/cmake/debug_cflags new file mode 100644 index 0000000..d383256 --- /dev/null +++ b/cmake/debug_cflags @@ -0,0 +1,4 @@ +# vim:ft=cmake +set(DEBUG_FLAGS "-O0 -g3 -fsanitize=address -fsanitize-blacklist=${CMAKE_SOURCE_DIR}/misc/blacklist.txt -fno-omit-frame-pointer") +set(CMAKE_C_FLAGS_DEBUG ${DEBUG_FLAGS}) +set(CMAKE_CXX_FLAGS_DEBUG ${DEBUG_FLAGS}) diff --git a/code_of_conduct.md b/code_of_conduct.md new file mode 100644 index 0000000..93a7a34 --- /dev/null +++ b/code_of_conduct.md @@ -0,0 +1,71 @@ +# Contributor Covenant Code of Conduct + +## Our Pledge + +In the interest of fostering an open and welcoming environment, we as +contributors and maintainers pledge to making participation in our project and +our community a harassment-free experience for everyone, regardless of age, body +size, disability, ethnicity, gender identity and expression, level of experience, +nationality, personal appearance, race, religion, or sexual identity and +orientation. + +## Our Standards + +Examples of behavior that contributes to creating a positive environment +include: + +* Using welcoming and inclusive language +* Being respectful of differing viewpoints and experiences +* Gracefully accepting constructive criticism +* Focusing on what is best for the community +* Showing empathy towards other community members + +Examples of unacceptable behavior by participants include: + +* The use of sexualized language or imagery and unwelcome sexual attention or +advances +* Trolling, insulting/derogatory comments, and personal or political attacks +* Public or private harassment +* Publishing others' private information, such as a physical or electronic + address, without explicit permission +* Other conduct which could reasonably be considered inappropriate in a + professional setting + +## Our Responsibilities + +Project maintainers are responsible for clarifying the standards of acceptable +behavior and are expected to take appropriate and fair corrective action in +response to any instances of unacceptable behavior. + +Project maintainers have the right and responsibility to remove, edit, or +reject comments, commits, code, wiki edits, issues, and other contributions +that are not aligned to this Code of Conduct, or to ban temporarily or +permanently any contributor for other behaviors that they deem inappropriate, +threatening, offensive, or harmful. + +## Scope + +This Code of Conduct applies both within project spaces and in public spaces +when an individual is representing the project or its community. Examples of +representing a project or community include using an official project e-mail +address, posting via an official social media account, or acting as an appointed +representative at an online or offline event. Representation of a project may be +further defined and clarified by project maintainers. + +## Enforcement + +Instances of abusive, harassing, or otherwise unacceptable behavior may be +reported by contacting the project maintainer at victor@badsec.org. All +complaints will be reviewed and investigated and will result in a response that +is deemed necessary and appropriate to the circumstances. The project team is +obligated to maintain confidentiality with regard to the reporter of an incident. +Further details of specific enforcement policies may be posted separately. + +Project maintainers who do not follow or enforce the Code of Conduct in good +faith may face temporary or permanent repercussions as determined by other +members of the project's leadership. + +## Attribution + +This Code of Conduct is adapted from the Contributor Covenant, version 1.4, +available at http://contributor-covenant.org/version/1/4/ diff --git a/docs/Features.md b/docs/Features.md new file mode 100644 index 0000000..1c228da --- /dev/null +++ b/docs/Features.md @@ -0,0 +1,93 @@ +# Windows, Linux and OSX + +The GrangerHub Tremulous engine is supported on Windows, Linux and OSX. Builds +are automaticly produced by our CI/CD system. + +# CI/CD + +The Tremulous engine is supported by a CI/CD (Continuous Integration/Continous +Delivery) using TravisCI and Github. Each time commits are pushed to the github +repository, TravisCI will verify that each of the MacOSX, Linux and Windows builds +are successful. Releases are generated automatically anytime a tag is pushed to +the repository; TravisCI will then package the build with the assets and push +the build artifacts to the Github releases page. Upon completion a notification +is sent to the GrangerHub Slack. + +Hilights: +* TravisCI +* Automated builds +* Automated release generation + +TODO: +* Add Appveyor +* Reenable Coverity scans + +# CMake support + +A CMake system exists to build Tremulous on Linux and OSX. The CMake setup also +supports building QVM's using the in-tree QVM toolchain. + +TODO: +* Windows +* Appveyor Windows builds + + +# C++14 + +The engine has been modernized to compile at the C++14 standard. This was originally +done to simplify supporting Lua using the SOL2 Library, however this conversion has +also resulted in a significantly improved stability due to better memory initialization. +It's worth noting that the renderer's have not been converted to C++14 as we currently +piggyback off ioquake3's renderer's (maintained by SmileTheory). + +# Lua + +The engine has an embedded Lua runtime and several API's are exposed from the engine, +including: + +* Cvars +* Binds +* Passing commands to server +* Nettle (Crypto library) +* HTTP Client/Restful +* JSON (rapidjson) + +# Multi-protocol + +Support for Tremulous 1.1.0, Tremulous 1.2.0 (GPP) and the never released version from +DarkLegion's master branch are supported. A client can connect to any of those protocols. +A server can simultaneously serve to all those protocols. QVM version detection on the client +which magically determines the correct interface required for a QVM. + +This work is thanks to `/dev/humancontroller`. + +# Auto-update + +Autoupdates are not fully functional, problems with the minizip implementation require additional +work to work. + +Users can however check the latests updates from the main menu in the client, which queries the +GrangerHub github for the latest release. + +TODO: + * Lua library for ZIP files that preserves executable permissions + +# Restful HTTP Client + +An HTTP Rest API is provided to both C++ and Lua interfaces. + + +# JSON Support + +JSON support is provided via the lovely RapidJSON project. An interfaces is provided for both +C++ and Lua. + +# Filesystem Stability + +The filesystem has been refactored to be stable from startup. It is not possible for a server to +clobber the default QVM/UI. + +FIXME: + * Currently breaks mod loading support from the client main menu. + + diff --git a/docs/LuaScripting.md b/docs/LuaScripting.md new file mode 100644 index 0000000..4bde0d8 --- /dev/null +++ b/docs/LuaScripting.md @@ -0,0 +1,13 @@ +# Lua Scripting + +Purpose: +Documentation regarding the Lua API's in depth. lua/README.md is for jumpping +in _head first!_. What is possible, and maybe some "Shipping" scripts that might be +released. + +This file should be the reference/bible to the Lua runtime API. More boring, answers +questions, doesn't tell many jokes etc.. + + +TODO: All of it + diff --git a/docs/ParticleSystem.md b/docs/ParticleSystem.md new file mode 100644 index 0000000..e93843f --- /dev/null +++ b/docs/ParticleSystem.md @@ -0,0 +1,160 @@ + +# Tremulous Particle System + +Files matching the pattern `scripts/*.particle` are loaded as particle system description files. +Each `.particle` file can contain an arbitrary number of discrete particle systems, much like a `.shader` file can house many shaders. +A particle system is declared by a name followed by curly braces within which the functionality of the particle system is defined. + +For example: + +``` +aShinyNewParticleSystem { } +``` + +Inside the particle system declaration are placed UP TO *four* particle ejectors. +Ejectors are identified by the keyword ejector and curly braces: + +``` +aShinyNewParticleSystem +{ + ejector { } + + ejector { } + + thirdPersonOnly +} +``` + +The `thirdPersonOnly` keyword may be used to specify that the particle system is not visible from the first person if it relates to that client. + +The role of the particle ejector is to create some number of new particles at a defined rate. + These attributes are controlled by the following parameters: + +- count `|infinite` - the number of particles this ejector will spawn. +- delay `` - the delay in msec before the ejector starts spawning. +- period ` ` - the period between particle ejections. + +It is perfectly acceptable to have an initial period of zero. +In this case the number of particles specified by the count keyword will be ejected at once. +It is not permissible to have count infinite and a period of zero for obvious reasons. + +At ejection time each ejector creates up to four new particles based on templates. +These are specified in the ejector section using the particle keyword: + +``` +aShinyNewParticleSystem +{ + ejector + { + particle { } + + particle { } + + count 50 + delay 0 + period 0 - 0 + } +} +``` + +Each particle template has a number of attributes: + +- `shader |sync ... ` - this specifies the shaders to use for the particle. The frame rate can be set to a static rate or the sync parameter can be used in which case the frame rate will be synchronised to the lifetime of the particle such that the first frame is displayed on birth and the last frame is displayed immediately before death. +- `model ... ` - use one of the specified models as the particle. This cannot be used in conjunction with the shader keyword. +- `modelAnmation |sync` - animation parameters to use when model particles are employed. +- `displacement ` - a static displacement about the attachment point. The variance parameter specifies a random displacement in all axes. +- `normalDisplacement ` - for particle systems that have their normal set (impact particle systems for example) this specifies the magnitude of a displacement along the normal. +- `velocityType static|static_transform|tag|cent|normal` - this specifies how the particle will compute its initial velocity. `static` means it is specified statically in the `.particle` file, `static_transform` means the same, except that it is transformed by the orientation matrix of what it is attached to, `tag` means the velocity is in the direction of the tag it is attached to, `cent` means the velocity is in the direction of the cent it is attached to and `normal` means the velocity is in the direction of the particle system normal. +- `velocityDir linear|point` - this specifies whether the initial velocity is computed as a simple direction or as the direction towards a secondary point (defined by `velocityPoint` or dynamically through `velocityType cent`). +- `velocity ` - for when `velocityType static` is present this specifies the direction. The variance here is specified in degrees e.g. `~5` - up to 5 degrees deviation. +- `velocityMagnitude ` - the magnitude of the velocity. +- `velocityPoint ` - for when `velocityType static` and `velocityDir point` are present this specifies the point to move towards. +- `parentVelocityFraction ` - for when the particle system is attached to a cent this specifies the fraction of the cent’s velocity that is added to the particle’s velocity. +- `accelerationType static|static_transform|tag|cent|normal` - this specifies how the particle will compute its acceleration. `static` means it is specified statically in the `.particle` file, `static_transform` means the same, except that it is transformed by the orientation matrix of what it is attached to, `tag` means the acceleration is in the direction of the tag it is attached to, `cent` means the acceleration is in the direction of the cent it is attached to and `normal` means the acceleration is in the direction of the particle system normal. +- `accelerationDir linear|point` - this specifies whether the acceleration is computed as a simple direction or as the direction towards a secondary point (defined by `accelerationPoint` or dynamically through `accelerationType cent`). +- `acceleration ` - for when accelerationType static is present this specifies the direction. The variance here is specified in degrees e.g. `~5` - up to 5 degrees deviation. +- `accelerationMagnitude ` - the magnitude of the acceleration. +- `accelerationPoint ` - for when accelerationType static and accelerationDir point are present this specifies the point to move towards. +- `bounce |cull` - the fraction of velocity that is refiected when a particle collides. If this is set to `0.0` the particle won't collide. When cull is used particles are culled as soon as they collide with objects. +- `bounceMark ` - make a mark at each bounce point for up to `` bounces. +- `bounceSound ` - make a sound at each bounce point for up to `` bounces. +- `dynamicLight { }` - attach a dynamic light to this particle. +- `color { } { }` - color the particle where `` refers to the initial color component and `` refers to the final color component. +- `overdrawProtection` - cull particles that occupy a large amount of screen space. +- `realLight` - light particles using the lightgrid instead of fullbright. +- `cullOnStartSolid` - cull particles that are spawned inside brushes. +- `radius ` - the radius of the particle throughout its lifetime. The delay parameter specifies the time in msec before radius scaling begins. The initial and final parameters specify the radii of the particle in quake units. +- `alpha ` - the alpha of the particle throughout its lifetime. The delay parameter specifies the time in msec before alpha scaling begins. The initial and final parameters specify the alpha of the particle where `1.0` is totally opaque and `0.0` is totally transparent. +- `rotation ` - the rotation of the particle throughout its lifetime. The delay parameter specifies the time in msec before the rotation begins. The initial and final parameters specify the rotation of the particle in degrees. +- `lifeTime