mirror of
https://github.com/ddnet/ddnet.git
synced 2024-11-10 01:58:19 +00:00
Remove unmaintained Android code (fixes #1575)
This commit is contained in:
parent
11127f9344
commit
94f3d97ddf
|
@ -1,247 +0,0 @@
|
||||||
# The application settings for Android libSDL port
|
|
||||||
|
|
||||||
# Specify application name (e.x. My Application)
|
|
||||||
AppName="DDraceNetwork Client"
|
|
||||||
|
|
||||||
# Specify reversed site name of application (e.x. com.mysite.myapp)
|
|
||||||
AppFullName=tw.ddnet
|
|
||||||
|
|
||||||
# Application version code (integer)
|
|
||||||
AppVersionCode=0730
|
|
||||||
|
|
||||||
# Application user-visible version name (string)
|
|
||||||
AppVersionName="7.3"
|
|
||||||
|
|
||||||
# Specify path to download application data in zip archive in the form 'Description|URL|MirrorURL^Description2|URL2|MirrorURL2^...'
|
|
||||||
# If you'll start Description with '!' symbol it will be enabled by default, other downloads should be selected by user from startup config menu
|
|
||||||
# If the URL in in the form ':dir/file.dat:http://URL/' it will be downloaded as binary BLOB to the application dir and not unzipped
|
|
||||||
# If the URL does not contain 'http://' it is treated as file from 'project/jni/application/src/AndroidData' dir -
|
|
||||||
# these files are put inside .apk package by build system
|
|
||||||
# Also please avoid 'https://' URLs, many Android devices do not have trust certificates and will fail to connect to SF.net over HTTPS
|
|
||||||
AppDataDownloadUrl="Game data|data.zip"
|
|
||||||
|
|
||||||
# Reset SDL config when updating application to the new version (y) / (n)
|
|
||||||
ResetSdlConfigForThisVersion=y
|
|
||||||
|
|
||||||
# Delete application data files when upgrading (specify file/dir paths separated by spaces)
|
|
||||||
DeleteFilesOnUpgrade="%"
|
|
||||||
|
|
||||||
# Here you may type readme text, which will be shown during startup. Format is:
|
|
||||||
# Text in English, use \\\\n to separate lines (that's four backslashes)^de:Text in Deutsch^ru:Text in Russian^button:Button that will open some URL:http://url-to-open/
|
|
||||||
ReadmeText='Tap left joystick to jump'
|
|
||||||
|
|
||||||
# libSDL version to use (1.2/1.3/2.0)
|
|
||||||
LibSdlVersion=1.2
|
|
||||||
|
|
||||||
# Specify screen orientation: (v)ertical/(p)ortrait or (h)orizontal/(l)andscape
|
|
||||||
ScreenOrientation=h
|
|
||||||
|
|
||||||
# Video color depth - 16 BPP is the fastest and supported for all modes, 24 bpp is supported only
|
|
||||||
# with SwVideoMode=y, SDL_OPENGL mode supports everything. (16)/(24)/(32)
|
|
||||||
VideoDepthBpp=24
|
|
||||||
|
|
||||||
# Enable OpenGL depth buffer (needed only for 3-d applications, small speed decrease) (y) or (n)
|
|
||||||
NeedDepthBuffer=n
|
|
||||||
|
|
||||||
# Enable OpenGL stencil buffer (needed only for 3-d applications, small speed decrease) (y) or (n)
|
|
||||||
NeedStencilBuffer=n
|
|
||||||
|
|
||||||
# Try to use GLES 2.x context - will revert to GLES 1.X if unsupported by device
|
|
||||||
# you need this option only if you're developing 3-d app (y) or (n)
|
|
||||||
NeedGles2=n
|
|
||||||
|
|
||||||
# Application uses software video buffer - you're calling SDL_SetVideoMode() without SDL_HWSURFACE and without SDL_OPENGL,
|
|
||||||
# this will allow small speed optimization. Enable this even when you're using SDL_HWSURFACE. (y) or (n)
|
|
||||||
SwVideoMode=n
|
|
||||||
|
|
||||||
# Application video output will be resized to fit into native device screen (y)/(n)
|
|
||||||
SdlVideoResize=n
|
|
||||||
|
|
||||||
# Application resizing will keep 4:3 aspect ratio, with black bars at sides (y)/(n)
|
|
||||||
SdlVideoResizeKeepAspect=n
|
|
||||||
|
|
||||||
# Do not allow device to sleep when the application is in foreground, set this for video players or apps which use accelerometer
|
|
||||||
InhibitSuspend=y
|
|
||||||
|
|
||||||
# Create Android service, so the app is less likely to be killed while in background
|
|
||||||
CreateService=
|
|
||||||
|
|
||||||
# Application does not call SDL_Flip() or SDL_UpdateRects() appropriately, or draws from non-main thread -
|
|
||||||
# enabling the compatibility mode will force screen update every 100 milliseconds, which is laggy and inefficient (y) or (n)
|
|
||||||
CompatibilityHacks=n
|
|
||||||
|
|
||||||
# Application initializes SDL audio/video inside static constructors (which is bad, you won't be able to run ndk-gdb) (y)/(n)
|
|
||||||
CompatibilityHacksStaticInit=n
|
|
||||||
|
|
||||||
# On-screen Android soft text input emulates hardware keyboard, this will only work with Hackers Keyboard app (y)/(n)
|
|
||||||
CompatibilityHacksTextInputEmulatesHwKeyboard=n
|
|
||||||
|
|
||||||
# Hack for broken devices: prevent audio chopping, by sleeping a bit after pushing each audio chunk (y)/(n)
|
|
||||||
CompatibilityHacksPreventAudioChopping=n
|
|
||||||
|
|
||||||
# Hack for broken apps: application ignores audio buffer size returned by SDL (y)/(n)
|
|
||||||
CompatibilityHacksAppIgnoresAudioBufferSize=n
|
|
||||||
|
|
||||||
# Hack for VCMI: preload additional shared libraries before application start
|
|
||||||
CompatibilityHacksAdditionalPreloadedSharedLibraries=""
|
|
||||||
|
|
||||||
# Hack for Free Heroes 2, which redraws the screen inside SDL_PumpEvents(): slow and compatible SDL event queue -
|
|
||||||
# do not use it with accelerometer/gyroscope, or your app may freeze at random (y)/(n)
|
|
||||||
CompatibilityHacksSlowCompatibleEventQueue=n
|
|
||||||
|
|
||||||
# Save and restore OpenGL state when drawing on-screen keyboard for apps that use SDL_OPENGL
|
|
||||||
CompatibilityHacksTouchscreenKeyboardSaveRestoreOpenGLState=n
|
|
||||||
|
|
||||||
# Application uses SDL_UpdateRects() properly, and does not draw in any region outside those rects.
|
|
||||||
# This improves drawing speed, but I know only one application that does that, and it's written by me (y)/(n)
|
|
||||||
CompatibilityHacksProperUsageOfSDL_UpdateRects=
|
|
||||||
|
|
||||||
# Application uses mouse (y) or (n), this will show mouse emulation dialog to the user
|
|
||||||
AppUsesMouse=y
|
|
||||||
|
|
||||||
# Application needs two-button mouse, will also enable advanced point-and-click features (y) or (n)
|
|
||||||
AppNeedsTwoButtonMouse=n
|
|
||||||
|
|
||||||
# Right mouse button can do long-press/drag&drop action, necessary for some games (y) or (n)
|
|
||||||
# If you disable it, swiping with two fingers will send mouse wheel events
|
|
||||||
RightMouseButtonLongPress=
|
|
||||||
|
|
||||||
# Show SDL mouse cursor, for applications that do not draw cursor at all (y) or (n)
|
|
||||||
ShowMouseCursor=n
|
|
||||||
|
|
||||||
# Generate more touch events, by default SDL generates one event per one video frame, this is useful for drawing apps (y) or (n)
|
|
||||||
GenerateSubframeTouchEvents=
|
|
||||||
|
|
||||||
# Force relative (laptop) mouse movement mode, useful when both on-screen keyboard and mouse are needed (y) or (n)
|
|
||||||
ForceRelativeMouseMode=n
|
|
||||||
|
|
||||||
# Application needs arrow keys (y) or (n), will show on-screen dpad/joystick (y) or (n)
|
|
||||||
AppNeedsArrowKeys=n
|
|
||||||
|
|
||||||
# Application needs text input (y) or (n), enables button for text input on screen
|
|
||||||
AppNeedsTextInput=y
|
|
||||||
|
|
||||||
# Application uses joystick (y) or (n), the on-screen DPAD will be used as joystick 0 axes 0-1
|
|
||||||
AppUsesJoystick=y
|
|
||||||
|
|
||||||
# Application uses second on-screen joystick, as SDL joystick 0 axes 2-3 (y)/(n)
|
|
||||||
AppUsesSecondJoystick=y
|
|
||||||
|
|
||||||
# Application uses third on-screen joystick, as SDL joystick 0 axes 20-21 (y)/(n)
|
|
||||||
AppUsesThirdJoystick=n
|
|
||||||
|
|
||||||
# Application uses accelerometer (y) or (n), the accelerometer will be used as joystick 1 axes 0-1 and 5-7
|
|
||||||
AppUsesAccelerometer=n
|
|
||||||
|
|
||||||
# Application uses gyroscope (y) or (n), the gyroscope will be used as joystick 1 axes 2-4
|
|
||||||
AppUsesGyroscope=n
|
|
||||||
|
|
||||||
# Application uses multitouch (y) or (n), multitouch events are passed as SDL_JOYBALLMOTION events for the joystick 0
|
|
||||||
AppUsesMultitouch=n
|
|
||||||
|
|
||||||
# Application records audio (it will use any available source, such a s microphone)
|
|
||||||
# API is defined in file SDL_android.h: int SDL_ANDROID_OpenAudioRecording(SDL_AudioSpec *spec); void SDL_ANDROID_CloseAudioRecording(void);
|
|
||||||
# This option will add additional permission to Android manifest (y)/(n)
|
|
||||||
AppRecordsAudio=n
|
|
||||||
|
|
||||||
# Application needs to access SD card. If your data files are bigger than 5 Mb, enable it. (y) / (n)
|
|
||||||
AccessSdCard=
|
|
||||||
|
|
||||||
# Application needs Internet access. If you disable it, you'll have to bundle all your data files inside .apk (y) / (n)
|
|
||||||
AccessInternet=
|
|
||||||
|
|
||||||
# Immersive mode - Android will hide on-screen Home/Back keys. Looks bad if you invoke Android keyboard. (y) / (n)
|
|
||||||
ImmersiveMode=y
|
|
||||||
|
|
||||||
# Application implements Android-specific routines to put to background, and will not draw anything to screen
|
|
||||||
# between SDL_ACTIVEEVENT lost / gained notifications - you should check for them
|
|
||||||
# right after SDL_Flip(), if (n) then SDL_Flip() will block till app in background (y) or (n)
|
|
||||||
# This option is reported to be buggy, sometimes failing to restore video state
|
|
||||||
NonBlockingSwapBuffers=n
|
|
||||||
|
|
||||||
# Redefine common hardware keys to SDL keysyms
|
|
||||||
# BACK hardware key is available on all devices, MENU is available on pre-ICS devices, other keys may be absent
|
|
||||||
# SEARCH and CALL by default return same keycode as DPAD_CENTER - one of those keys is available on most devices
|
|
||||||
# Use word NO_REMAP if you want to preserve native functionality for certain key (volume keys are 3-rd and 4-th)
|
|
||||||
# Keys: TOUCHSCREEN (works only when AppUsesMouse=n), DPAD_CENTER/SEARCH, VOLUMEUP, VOLUMEDOWN, MENU, BACK, CAMERA
|
|
||||||
RedefinedKeys="SPACE RETURN NO_REMAP NO_REMAP"
|
|
||||||
|
|
||||||
# Number of virtual keyboard keys (currently 6 is maximum)
|
|
||||||
AppTouchscreenKeyboardKeysAmount=6
|
|
||||||
|
|
||||||
# Redefine on-screen keyboard keys to SDL keysyms - 6 keyboard keys + 4 multitouch gestures (zoom in/out and rotate left/right)
|
|
||||||
RedefinedKeysScreenKb="RETURN PAGEDOWN PAGEUP TAB F5 F6"
|
|
||||||
|
|
||||||
# Names for on-screen keyboard keys, such as Fire, Jump, Run etc, separated by spaces, they are used in SDL config menu
|
|
||||||
RedefinedKeysScreenKbNames="Hook Next_weapon Previous_weapon Show_scores Jump Spectate"
|
|
||||||
|
|
||||||
# On-screen keys theme
|
|
||||||
# 0 = Ultimate Droid by Sean Stieber (green, with gamepad joystick)
|
|
||||||
# 1 = Simple Theme by Beholder (white, with gamepad joystick)
|
|
||||||
# 2 = Sun by Sirea (yellow, with round joystick)
|
|
||||||
# 3 = Keen by Gerstrong (multicolor, with round joystick)
|
|
||||||
TouchscreenKeysTheme=2
|
|
||||||
|
|
||||||
# Redefine gamepad keys to SDL keysyms, button order is:
|
|
||||||
# A B X Y L1 R1 L2 R2 LThumb RThumb
|
|
||||||
RedefinedKeysGamepad="RETURN PAGEDOWN TAB T SPACE RCTRL RETURN RCTRL SPACE PAGEDOWN"
|
|
||||||
|
|
||||||
# How long to show startup menu button, in msec, 0 to disable startup menu
|
|
||||||
StartupMenuButtonTimeout=3000
|
|
||||||
|
|
||||||
# Menu items to hide from startup menu, available menu items:
|
|
||||||
# SettingsMenu.OkButton SettingsMenu.DummyMenu SettingsMenu.MainMenu SettingsMenuMisc.DownloadConfig SettingsMenuMisc.OptionalDownloadConfig SettingsMenuMisc.AudioConfig SettingsMenuMisc.VideoSettingsConfig SettingsMenuMisc.ShowReadme SettingsMenuMisc.GyroscopeCalibration SettingsMenuMisc.ResetToDefaultsConfig SettingsMenuMouse.MouseConfigMainMenu SettingsMenuMouse.DisplaySizeConfig SettingsMenuMouse.LeftClickConfig SettingsMenuMouse.RightClickConfig SettingsMenuMouse.AdditionalMouseConfig SettingsMenuMouse.JoystickMouseConfig SettingsMenuMouse.TouchPressureMeasurementTool SettingsMenuMouse.CalibrateTouchscreenMenu SettingsMenuKeyboard.KeyboardConfigMainMenu SettingsMenuKeyboard.ScreenKeyboardSizeConfig SettingsMenuKeyboard.ScreenKeyboardDrawSizeConfig SettingsMenuKeyboard.ScreenKeyboardThemeConfig SettingsMenuKeyboard.ScreenKeyboardTransparencyConfig SettingsMenuKeyboard.RemapHwKeysConfig SettingsMenuKeyboard.RemapScreenKbConfig SettingsMenuKeyboard.ScreenGesturesConfig SettingsMenuKeyboard.CustomizeScreenKbLayout
|
|
||||||
HiddenMenuOptions='SettingsMenuMisc.OptionalDownloadConfig SettingsMenuMouse.DisplaySizeConfig'
|
|
||||||
|
|
||||||
# Menu items to show at startup - this is Java code snippet, leave empty for default
|
|
||||||
# new SettingsMenuMisc.ShowReadme(), (AppUsesMouse \&\& \! ForceRelativeMouseMode \? new SettingsMenuMouse.DisplaySizeConfig(true) : new SettingsMenu.DummyMenu()), new SettingsMenuMisc.OptionalDownloadConfig(true), new SettingsMenuMisc.GyroscopeCalibration()
|
|
||||||
# Available menu items:
|
|
||||||
# SettingsMenu.OkButton SettingsMenu.DummyMenu SettingsMenu.MainMenu SettingsMenuMisc.DownloadConfig SettingsMenuMisc.OptionalDownloadConfig SettingsMenuMisc.AudioConfig SettingsMenuMisc.VideoSettingsConfig SettingsMenuMisc.ShowReadme SettingsMenuMisc.GyroscopeCalibration SettingsMenuMisc.ResetToDefaultsConfig SettingsMenuMouse.MouseConfigMainMenu SettingsMenuMouse.DisplaySizeConfig SettingsMenuMouse.LeftClickConfig SettingsMenuMouse.RightClickConfig SettingsMenuMouse.AdditionalMouseConfig SettingsMenuMouse.JoystickMouseConfig SettingsMenuMouse.TouchPressureMeasurementTool SettingsMenuMouse.CalibrateTouchscreenMenu SettingsMenuKeyboard.KeyboardConfigMainMenu SettingsMenuKeyboard.ScreenKeyboardSizeConfig SettingsMenuKeyboard.ScreenKeyboardDrawSizeConfig SettingsMenuKeyboard.ScreenKeyboardThemeConfig SettingsMenuKeyboard.ScreenKeyboardTransparencyConfig SettingsMenuKeyboard.RemapHwKeysConfig SettingsMenuKeyboard.RemapScreenKbConfig SettingsMenuKeyboard.ScreenGesturesConfig SettingsMenuKeyboard.CustomizeScreenKbLayout
|
|
||||||
FirstStartMenuOptions=''
|
|
||||||
|
|
||||||
# Enable multi-ABI binary, with hardware FPU support - it will also work on old devices,
|
|
||||||
# but .apk size is 2x bigger (y) / (n) / (x86) / (all)
|
|
||||||
MultiABI='all'
|
|
||||||
|
|
||||||
# Minimum amount of RAM application requires, in Mb, SDL will print warning to user if it's lower
|
|
||||||
AppMinimumRAM=0
|
|
||||||
|
|
||||||
# Optional shared libraries to compile - removing some of them will save space
|
|
||||||
# MP3 support by libMAD is encumbered by patents and libMAD is GPL-ed
|
|
||||||
# Available libraries: mad (GPL-ed!) sdl_mixer sdl_image sdl_ttf sdl_net sdl_blitpool sdl_gfx sdl_sound intl xml2 lua jpeg png ogg flac tremor vorbis freetype xerces curl theora fluidsynth lzma lzo2 mikmod openal timidity zzip bzip2 yaml-cpp python boost_date_time boost_filesystem boost_iostreams boost_program_options boost_regex boost_signals boost_system boost_thread glu avcodec avdevice avfilter avformat avresample avutil swscale swresample bzip2
|
|
||||||
CompiledLibraries="sdl_image freetype glu ogg opus opusfile curl"
|
|
||||||
|
|
||||||
# Application uses custom build script AndroidBuild.sh instead of Android.mk (y) or (n)
|
|
||||||
CustomBuildScript=n
|
|
||||||
|
|
||||||
# Additional CFLAGS for application
|
|
||||||
AppCflags='-O3'
|
|
||||||
|
|
||||||
# Additional LDFLAGS for application
|
|
||||||
AppLdflags='-lEGL'
|
|
||||||
|
|
||||||
# If application has headers with the same name as system headers, this option tries to fix compiler flags to make it compilable
|
|
||||||
AppOverlapsSystemHeaders=n
|
|
||||||
|
|
||||||
# Build only following subdirs (empty will build all dirs, ignored with custom script)
|
|
||||||
AppSubdirsBuild='src/src src/src/base/confusables.c src/src/base/system.c src/src/engine src/src/engine/client src/src/engine/shared src/src/engine/external/pnglite src/src/engine/external/wavpack src/src/engine/external/md5 src/src/engine/external/json-parser/json.cpp src/src/game src/src/game/client/* src/src/game/editor src/src/game/generated/protocol.cpp src/src/game/generated/client_data.cpp'
|
|
||||||
|
|
||||||
# Exclude these files from build
|
|
||||||
AppBuildExclude=''
|
|
||||||
|
|
||||||
# Application command line parameters, including app name as 0-th param
|
|
||||||
AppCmdline=''
|
|
||||||
|
|
||||||
# Screen size is used by Google Play to prevent an app to be installed on devices with smaller screens
|
|
||||||
# Minimum screen size that application supports: (s)mall / (m)edium / (l)arge
|
|
||||||
MinimumScreenSize=n
|
|
||||||
|
|
||||||
# Your AdMob Publisher ID, (n) if you don't want advertisements
|
|
||||||
AdmobPublisherId=n
|
|
||||||
|
|
||||||
# Your AdMob test device ID, to receive a test ad
|
|
||||||
AdmobTestDeviceId=
|
|
||||||
|
|
||||||
# Your AdMob banner size (BANNER/IAB_BANNER/IAB_LEADERBOARD/IAB_MRECT/IAB_WIDE_SKYSCRAPER/SMART_BANNER)
|
|
||||||
AdmobBannerSize=
|
|
||||||
|
|
|
@ -1,27 +0,0 @@
|
||||||
# This is how I build DDNet for Android:
|
|
||||||
|
|
||||||
# Cloning the building repo with the SDL port for Android by Pelya
|
|
||||||
cd /media
|
|
||||||
git clone https://github.com/pelya/commandergenius.git
|
|
||||||
|
|
||||||
# Get the most recent DDNet source
|
|
||||||
cd /media/commandergenius/project/jni/application/teeworlds
|
|
||||||
rm -rf src master.zip*
|
|
||||||
wget "https://github.com/ddnet/ddnet/archive/master.zip"
|
|
||||||
unzip ddnet-master.zip
|
|
||||||
mv ddnet-master src
|
|
||||||
mkdir src/src/game/generated
|
|
||||||
# Also the generated files don't get generated, copy them by hand
|
|
||||||
cp /media/ddrace/src/game/generated/* src/src/game/generated
|
|
||||||
rm -rf AndroidData
|
|
||||||
./AndroidPreBuild.sh
|
|
||||||
|
|
||||||
# Actual compilation, needs a key to sign
|
|
||||||
cd /media/commandergenius
|
|
||||||
ln -s teeworlds project/jni/application/src
|
|
||||||
./changeAppSettings.sh -a
|
|
||||||
android update project -p project
|
|
||||||
./build.sh
|
|
||||||
jarsigner -verbose -keystore ~/.android/release.keystore -storepass MYSECRETPASS -sigalg MD5withRSA -digestalg SHA1 project/bin/MainActivity-release-unsigned.apk androidreleasekey
|
|
||||||
zipalign 4 project/bin/MainActivity-release-unsigned.apk project/bin/MainActivity-release.apk
|
|
||||||
scp project/bin/MainActivity-release.apk ddnet:/var/www/downloads/DDNet-$VERSION.apk
|
|
|
@ -50,11 +50,7 @@
|
||||||
#define CONF_FAMILY_UNIX 1
|
#define CONF_FAMILY_UNIX 1
|
||||||
#define CONF_FAMILY_STRING "unix"
|
#define CONF_FAMILY_STRING "unix"
|
||||||
#define CONF_PLATFORM_LINUX 1
|
#define CONF_PLATFORM_LINUX 1
|
||||||
#if defined(__ANDROID__)
|
#define CONF_PLATFORM_STRING "linux"
|
||||||
#define CONF_PLATFORM_STRING "android"
|
|
||||||
#else
|
|
||||||
#define CONF_PLATFORM_STRING "linux"
|
|
||||||
#endif
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(__GNU__) || defined(__gnu__)
|
#if defined(__GNU__) || defined(__gnu__)
|
||||||
|
|
|
@ -43,10 +43,6 @@
|
||||||
#include <mach/mach_time.h>
|
#include <mach/mach_time.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(__ANDROID__)
|
|
||||||
#include <android/log.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#elif defined(CONF_FAMILY_WINDOWS)
|
#elif defined(CONF_FAMILY_WINDOWS)
|
||||||
#define WIN32_LEAN_AND_MEAN
|
#define WIN32_LEAN_AND_MEAN
|
||||||
#undef _WIN32_WINNT
|
#undef _WIN32_WINNT
|
||||||
|
@ -145,16 +141,12 @@ void dbg_msg(const char *sys, const char *fmt, ...)
|
||||||
loggers[i].logger(str, loggers[i].user);
|
loggers[i].logger(str, loggers[i].user);
|
||||||
}
|
}
|
||||||
|
|
||||||
#if defined(CONF_FAMILY_WINDOWS) || defined(__ANDROID__)
|
#if defined(CONF_FAMILY_WINDOWS)
|
||||||
static void logger_debugger(const char *line, void *user)
|
static void logger_debugger(const char *line, void *user)
|
||||||
{
|
{
|
||||||
(void)user;
|
(void)user;
|
||||||
#if defined(CONF_FAMILY_WINDOWS)
|
|
||||||
OutputDebugString(line);
|
OutputDebugString(line);
|
||||||
OutputDebugString("\n");
|
OutputDebugString("\n");
|
||||||
#elif defined(__ANDROID__)
|
|
||||||
__android_log_print(ANDROID_LOG_INFO, "DDNet", "%s", line);
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -250,7 +242,7 @@ void dbg_logger_stdout()
|
||||||
|
|
||||||
void dbg_logger_debugger()
|
void dbg_logger_debugger()
|
||||||
{
|
{
|
||||||
#if defined(CONF_FAMILY_WINDOWS) || defined(__ANDROID__)
|
#if defined(CONF_FAMILY_WINDOWS)
|
||||||
dbg_logger(logger_debugger, 0, 0);
|
dbg_logger(logger_debugger, 0, 0);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
|
@ -15,20 +15,11 @@
|
||||||
#include <cmath>
|
#include <cmath>
|
||||||
#include "SDL.h"
|
#include "SDL.h"
|
||||||
#include "SDL_syswm.h"
|
#include "SDL_syswm.h"
|
||||||
#if defined(__ANDROID__)
|
#if defined(CONF_PLATFORM_MACOSX)
|
||||||
#define GL_GLEXT_PROTOTYPES
|
#include "OpenGL/glu.h"
|
||||||
#include <GLES/gl.h>
|
|
||||||
#include <GLES/glext.h>
|
|
||||||
#include <GL/glu.h>
|
|
||||||
#define glOrtho glOrthof
|
|
||||||
#else
|
#else
|
||||||
|
#include "SDL_opengl.h"
|
||||||
#if defined(CONF_PLATFORM_MACOSX)
|
#include "GL/glu.h"
|
||||||
#include "OpenGL/glu.h"
|
|
||||||
#else
|
|
||||||
#include "SDL_opengl.h"
|
|
||||||
#include "GL/glu.h"
|
|
||||||
#endif
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(SDL_VIDEO_DRIVER_X11)
|
#if defined(SDL_VIDEO_DRIVER_X11)
|
||||||
|
@ -329,9 +320,6 @@ void CCommandProcessorFragment_OpenGL::Cmd_Texture_Create(const CCommandBuffer::
|
||||||
int Oglformat = TexFormatToOpenGLFormat(pCommand->m_Format);
|
int Oglformat = TexFormatToOpenGLFormat(pCommand->m_Format);
|
||||||
int StoreOglformat = TexFormatToOpenGLFormat(pCommand->m_StoreFormat);
|
int StoreOglformat = TexFormatToOpenGLFormat(pCommand->m_StoreFormat);
|
||||||
|
|
||||||
#if defined(__ANDROID__)
|
|
||||||
StoreOglformat = Oglformat;
|
|
||||||
#else
|
|
||||||
if(pCommand->m_Flags&CCommandBuffer::TEXFLAG_COMPRESSED)
|
if(pCommand->m_Flags&CCommandBuffer::TEXFLAG_COMPRESSED)
|
||||||
{
|
{
|
||||||
switch(StoreOglformat)
|
switch(StoreOglformat)
|
||||||
|
@ -342,7 +330,6 @@ void CCommandProcessorFragment_OpenGL::Cmd_Texture_Create(const CCommandBuffer::
|
||||||
default: StoreOglformat = GL_COMPRESSED_RGBA_ARB;
|
default: StoreOglformat = GL_COMPRESSED_RGBA_ARB;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
glGenTextures(1, &m_aTextures[pCommand->m_Slot].m_Tex);
|
glGenTextures(1, &m_aTextures[pCommand->m_Slot].m_Tex);
|
||||||
glBindTexture(GL_TEXTURE_2D, m_aTextures[pCommand->m_Slot].m_Tex);
|
glBindTexture(GL_TEXTURE_2D, m_aTextures[pCommand->m_Slot].m_Tex);
|
||||||
|
|
||||||
|
@ -392,12 +379,7 @@ void CCommandProcessorFragment_OpenGL::Cmd_Render(const CCommandBuffer::SCommand
|
||||||
switch(pCommand->m_PrimType)
|
switch(pCommand->m_PrimType)
|
||||||
{
|
{
|
||||||
case CCommandBuffer::PRIMTYPE_QUADS:
|
case CCommandBuffer::PRIMTYPE_QUADS:
|
||||||
#if defined(__ANDROID__)
|
|
||||||
for( unsigned i = 0, j = pCommand->m_PrimCount; i < j; i++ )
|
|
||||||
glDrawArrays(GL_TRIANGLE_FAN, i*4, 4);
|
|
||||||
#else
|
|
||||||
glDrawArrays(GL_QUADS, 0, pCommand->m_PrimCount*4);
|
glDrawArrays(GL_QUADS, 0, pCommand->m_PrimCount*4);
|
||||||
#endif
|
|
||||||
break;
|
break;
|
||||||
case CCommandBuffer::PRIMTYPE_LINES:
|
case CCommandBuffer::PRIMTYPE_LINES:
|
||||||
glDrawArrays(GL_LINES, 0, pCommand->m_PrimCount*2);
|
glDrawArrays(GL_LINES, 0, pCommand->m_PrimCount*2);
|
||||||
|
@ -1123,9 +1105,6 @@ void CCommandProcessorFragment_OpenGL3_3::Cmd_Texture_Create(const CCommandBuffe
|
||||||
int Oglformat = TexFormatToOpenGLFormat(pCommand->m_Format);
|
int Oglformat = TexFormatToOpenGLFormat(pCommand->m_Format);
|
||||||
int StoreOglformat = TexFormatToOpenGLFormat(pCommand->m_StoreFormat);
|
int StoreOglformat = TexFormatToOpenGLFormat(pCommand->m_StoreFormat);
|
||||||
|
|
||||||
#if defined(__ANDROID__)
|
|
||||||
StoreOglformat = Oglformat;
|
|
||||||
#else
|
|
||||||
if(pCommand->m_Flags&CCommandBuffer::TEXFLAG_COMPRESSED)
|
if(pCommand->m_Flags&CCommandBuffer::TEXFLAG_COMPRESSED)
|
||||||
{
|
{
|
||||||
switch(StoreOglformat)
|
switch(StoreOglformat)
|
||||||
|
@ -1137,7 +1116,6 @@ void CCommandProcessorFragment_OpenGL3_3::Cmd_Texture_Create(const CCommandBuffe
|
||||||
default: StoreOglformat = GL_COMPRESSED_RGBA;
|
default: StoreOglformat = GL_COMPRESSED_RGBA;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
int Slot = 0;
|
int Slot = 0;
|
||||||
if(m_UseMultipleTextureUnits)
|
if(m_UseMultipleTextureUnits)
|
||||||
{
|
{
|
||||||
|
@ -2315,16 +2293,11 @@ int CGraphicsBackend_SDL_OpenGL::Init(const char *pName, int *Screen, int *pWidt
|
||||||
*pDesktopHeight = DisplayMode.h;
|
*pDesktopHeight = DisplayMode.h;
|
||||||
|
|
||||||
// use desktop resolution as default resolution
|
// use desktop resolution as default resolution
|
||||||
#ifdef __ANDROID__
|
|
||||||
*pWidth = *pDesktopWidth;
|
|
||||||
*pHeight = *pDesktopHeight;
|
|
||||||
#else
|
|
||||||
if(*pWidth == 0 || *pHeight == 0)
|
if(*pWidth == 0 || *pHeight == 0)
|
||||||
{
|
{
|
||||||
*pWidth = *pDesktopWidth;
|
*pWidth = *pDesktopWidth;
|
||||||
*pHeight = *pDesktopHeight;
|
*pHeight = *pDesktopHeight;
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
// set flags
|
// set flags
|
||||||
int SdlFlags = SDL_WINDOW_OPENGL | SDL_WINDOW_HIDDEN | SDL_WINDOW_ALLOW_HIGHDPI;
|
int SdlFlags = SDL_WINDOW_OPENGL | SDL_WINDOW_HIDDEN | SDL_WINDOW_ALLOW_HIGHDPI;
|
||||||
|
|
|
@ -3653,7 +3653,7 @@ void CClient::HandleDemoPath(const char *pPath)
|
||||||
Upstream latency
|
Upstream latency
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#if defined(CONF_PLATFORM_MACOSX) || defined(__ANDROID__)
|
#if defined(CONF_PLATFORM_MACOSX)
|
||||||
extern "C" int SDL_main(int argc, char **argv_) // ignore_convention
|
extern "C" int SDL_main(int argc, char **argv_) // ignore_convention
|
||||||
{
|
{
|
||||||
const char **argv = const_cast<const char **>(argv_);
|
const char **argv = const_cast<const char **>(argv_);
|
||||||
|
|
|
@ -64,12 +64,6 @@ void CInput::MouseRelative(float *x, float *y)
|
||||||
if(!m_MouseFocus || !m_InputGrabbed)
|
if(!m_MouseFocus || !m_InputGrabbed)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
#if defined(__ANDROID__) // No relative mouse on Android
|
|
||||||
int nx = 0, ny = 0;
|
|
||||||
SDL_GetMouseState(&nx, &ny);
|
|
||||||
*x = nx;
|
|
||||||
*y = ny;
|
|
||||||
#else
|
|
||||||
int nx = 0, ny = 0;
|
int nx = 0, ny = 0;
|
||||||
float Sens = g_Config.m_InpMousesens / 100.0f;
|
float Sens = g_Config.m_InpMousesens / 100.0f;
|
||||||
|
|
||||||
|
@ -77,7 +71,6 @@ void CInput::MouseRelative(float *x, float *y)
|
||||||
|
|
||||||
*x = nx*Sens;
|
*x = nx*Sens;
|
||||||
*y = ny*Sens;
|
*y = ny*Sens;
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void CInput::MouseModeAbsolute()
|
void CInput::MouseModeAbsolute()
|
||||||
|
@ -290,8 +283,6 @@ int CInput::Update()
|
||||||
case SDL_WINDOWEVENT_RESIZED:
|
case SDL_WINDOWEVENT_RESIZED:
|
||||||
#if defined(SDL_VIDEO_DRIVER_X11)
|
#if defined(SDL_VIDEO_DRIVER_X11)
|
||||||
Graphics()->Resize(Event.window.data1, Event.window.data2);
|
Graphics()->Resize(Event.window.data1, Event.window.data2);
|
||||||
#elif defined(__ANDROID__)
|
|
||||||
m_VideoRestartNeeded = 1;
|
|
||||||
#endif
|
#endif
|
||||||
break;
|
break;
|
||||||
case SDL_WINDOWEVENT_FOCUS_GAINED:
|
case SDL_WINDOWEVENT_FOCUS_GAINED:
|
||||||
|
|
|
@ -69,11 +69,7 @@ MACRO_CONFIG_INT(BrDemoSortOrder, br_demo_sort_order, 0, 0, 1, CFGFLAG_SAVE|CFGF
|
||||||
MACRO_CONFIG_INT(BrDemoFetchInfo, br_demo_fetch_info, 0, 0, 1, CFGFLAG_SAVE|CFGFLAG_CLIENT, "Whether to auto fetch demo infos on refresh")
|
MACRO_CONFIG_INT(BrDemoFetchInfo, br_demo_fetch_info, 0, 0, 1, CFGFLAG_SAVE|CFGFLAG_CLIENT, "Whether to auto fetch demo infos on refresh")
|
||||||
|
|
||||||
MACRO_CONFIG_INT(SndBufferSize, snd_buffer_size, 512, 128, 32768, CFGFLAG_SAVE|CFGFLAG_CLIENT, "Sound buffer size")
|
MACRO_CONFIG_INT(SndBufferSize, snd_buffer_size, 512, 128, 32768, CFGFLAG_SAVE|CFGFLAG_CLIENT, "Sound buffer size")
|
||||||
#if defined(__ANDROID__)
|
|
||||||
MACRO_CONFIG_INT(SndRate, snd_rate, 44100, 0, 0, CFGFLAG_SAVE|CFGFLAG_CLIENT, "Sound mixing rate")
|
|
||||||
#else
|
|
||||||
MACRO_CONFIG_INT(SndRate, snd_rate, 48000, 0, 0, CFGFLAG_SAVE|CFGFLAG_CLIENT, "Sound mixing rate")
|
MACRO_CONFIG_INT(SndRate, snd_rate, 48000, 0, 0, CFGFLAG_SAVE|CFGFLAG_CLIENT, "Sound mixing rate")
|
||||||
#endif
|
|
||||||
MACRO_CONFIG_INT(SndEnable, snd_enable, 1, 0, 1, CFGFLAG_SAVE|CFGFLAG_CLIENT, "Sound enable")
|
MACRO_CONFIG_INT(SndEnable, snd_enable, 1, 0, 1, CFGFLAG_SAVE|CFGFLAG_CLIENT, "Sound enable")
|
||||||
MACRO_CONFIG_INT(SndMusic, snd_enable_music, 0, 0, 1, CFGFLAG_SAVE|CFGFLAG_CLIENT, "Play background music")
|
MACRO_CONFIG_INT(SndMusic, snd_enable_music, 0, 0, 1, CFGFLAG_SAVE|CFGFLAG_CLIENT, "Play background music")
|
||||||
MACRO_CONFIG_INT(SndVolume, snd_volume, 100, 0, 100, CFGFLAG_SAVE|CFGFLAG_CLIENT, "Sound volume")
|
MACRO_CONFIG_INT(SndVolume, snd_volume, 100, 0, 100, CFGFLAG_SAVE|CFGFLAG_CLIENT, "Sound volume")
|
||||||
|
@ -92,44 +88,25 @@ MACRO_CONFIG_INT(SndHighlight, snd_highlight, 1, 0, 1, CFGFLAG_SAVE|CFGFLAG_CLIE
|
||||||
MACRO_CONFIG_INT(GfxScreen, gfx_screen, 0, 0, 15, CFGFLAG_SAVE|CFGFLAG_CLIENT, "Screen index")
|
MACRO_CONFIG_INT(GfxScreen, gfx_screen, 0, 0, 15, CFGFLAG_SAVE|CFGFLAG_CLIENT, "Screen index")
|
||||||
MACRO_CONFIG_INT(GfxScreenWidth, gfx_screen_width, 0, 0, 0, CFGFLAG_SAVE|CFGFLAG_CLIENT, "Screen resolution width")
|
MACRO_CONFIG_INT(GfxScreenWidth, gfx_screen_width, 0, 0, 0, CFGFLAG_SAVE|CFGFLAG_CLIENT, "Screen resolution width")
|
||||||
MACRO_CONFIG_INT(GfxScreenHeight, gfx_screen_height, 0, 0, 0, CFGFLAG_SAVE|CFGFLAG_CLIENT, "Screen resolution height")
|
MACRO_CONFIG_INT(GfxScreenHeight, gfx_screen_height, 0, 0, 0, CFGFLAG_SAVE|CFGFLAG_CLIENT, "Screen resolution height")
|
||||||
#if defined(__ANDROID__)
|
|
||||||
MACRO_CONFIG_INT(GfxBorderless, gfx_borderless, 0, 0, 1, CFGFLAG_SAVE|CFGFLAG_CLIENT, "Borderless window (not to be used with fullscreen)")
|
|
||||||
MACRO_CONFIG_INT(GfxFullscreen, gfx_fullscreen, 1, 0, 1, CFGFLAG_SAVE|CFGFLAG_CLIENT, "Fullscreen")
|
|
||||||
MACRO_CONFIG_INT(GfxAlphabits, gfx_alphabits, 1, 0, 0, CFGFLAG_SAVE|CFGFLAG_CLIENT, "Alpha bits for framebuffer (fullscreen only)")
|
|
||||||
#else
|
|
||||||
MACRO_CONFIG_INT(GfxBorderless, gfx_borderless, 1, 0, 1, CFGFLAG_SAVE|CFGFLAG_CLIENT, "Borderless window (not to be used with fullscreen)")
|
MACRO_CONFIG_INT(GfxBorderless, gfx_borderless, 1, 0, 1, CFGFLAG_SAVE|CFGFLAG_CLIENT, "Borderless window (not to be used with fullscreen)")
|
||||||
MACRO_CONFIG_INT(GfxFullscreen, gfx_fullscreen, 0, 0, 1, CFGFLAG_SAVE|CFGFLAG_CLIENT, "Fullscreen")
|
MACRO_CONFIG_INT(GfxFullscreen, gfx_fullscreen, 0, 0, 1, CFGFLAG_SAVE|CFGFLAG_CLIENT, "Fullscreen")
|
||||||
MACRO_CONFIG_INT(GfxAlphabits, gfx_alphabits, 0, 0, 0, CFGFLAG_SAVE|CFGFLAG_CLIENT, "Alpha bits for framebuffer (fullscreen only)")
|
MACRO_CONFIG_INT(GfxAlphabits, gfx_alphabits, 0, 0, 0, CFGFLAG_SAVE|CFGFLAG_CLIENT, "Alpha bits for framebuffer (fullscreen only)")
|
||||||
#endif
|
|
||||||
MACRO_CONFIG_INT(GfxColorDepth, gfx_color_depth, 24, 16, 24, CFGFLAG_SAVE|CFGFLAG_CLIENT, "Colors bits for framebuffer (fullscreen only)")
|
MACRO_CONFIG_INT(GfxColorDepth, gfx_color_depth, 24, 16, 24, CFGFLAG_SAVE|CFGFLAG_CLIENT, "Colors bits for framebuffer (fullscreen only)")
|
||||||
//MACRO_CONFIG_INT(GfxClear, gfx_clear, 1, 0, 1, CFGFLAG_SAVE|CFGFLAG_CLIENT, "Clear screen before rendering")
|
//MACRO_CONFIG_INT(GfxClear, gfx_clear, 1, 0, 1, CFGFLAG_SAVE|CFGFLAG_CLIENT, "Clear screen before rendering")
|
||||||
MACRO_CONFIG_INT(GfxVsync, gfx_vsync, 0, 0, 1, CFGFLAG_SAVE|CFGFLAG_CLIENT, "Vertical sync (may cause delay)")
|
MACRO_CONFIG_INT(GfxVsync, gfx_vsync, 0, 0, 1, CFGFLAG_SAVE|CFGFLAG_CLIENT, "Vertical sync (may cause delay)")
|
||||||
MACRO_CONFIG_INT(GfxResizable, gfx_resizable, 1, 0, 1, CFGFLAG_SAVE|CFGFLAG_CLIENT, "Enables window resizing")
|
MACRO_CONFIG_INT(GfxResizable, gfx_resizable, 1, 0, 1, CFGFLAG_SAVE|CFGFLAG_CLIENT, "Enables window resizing")
|
||||||
MACRO_CONFIG_INT(GfxDisplayAllModes, gfx_display_all_modes, 0, 0, 1, CFGFLAG_SAVE|CFGFLAG_CLIENT, "")
|
MACRO_CONFIG_INT(GfxDisplayAllModes, gfx_display_all_modes, 0, 0, 1, CFGFLAG_SAVE|CFGFLAG_CLIENT, "")
|
||||||
MACRO_CONFIG_INT(GfxTextureCompression, gfx_texture_compression, 0, 0, 1, CFGFLAG_SAVE|CFGFLAG_CLIENT, "Use texture compression")
|
MACRO_CONFIG_INT(GfxTextureCompression, gfx_texture_compression, 0, 0, 1, CFGFLAG_SAVE|CFGFLAG_CLIENT, "Use texture compression")
|
||||||
#if defined(__ANDROID__)
|
|
||||||
MACRO_CONFIG_INT(GfxHighDetail, gfx_high_detail, 0, 0, 1, CFGFLAG_SAVE|CFGFLAG_CLIENT, "High detail")
|
|
||||||
MACRO_CONFIG_INT(GfxTextureQuality, gfx_texture_quality, 0, 0, 1, CFGFLAG_SAVE|CFGFLAG_CLIENT, "")
|
|
||||||
#else
|
|
||||||
MACRO_CONFIG_INT(GfxHighDetail, gfx_high_detail, 1, 0, 1, CFGFLAG_SAVE|CFGFLAG_CLIENT, "High detail")
|
MACRO_CONFIG_INT(GfxHighDetail, gfx_high_detail, 1, 0, 1, CFGFLAG_SAVE|CFGFLAG_CLIENT, "High detail")
|
||||||
MACRO_CONFIG_INT(GfxTextureQuality, gfx_texture_quality, 1, 0, 1, CFGFLAG_SAVE|CFGFLAG_CLIENT, "")
|
MACRO_CONFIG_INT(GfxTextureQuality, gfx_texture_quality, 1, 0, 1, CFGFLAG_SAVE|CFGFLAG_CLIENT, "")
|
||||||
#endif
|
|
||||||
MACRO_CONFIG_INT(GfxFsaaSamples, gfx_fsaa_samples, 0, 0, 16, CFGFLAG_SAVE|CFGFLAG_CLIENT, "FSAA Samples")
|
MACRO_CONFIG_INT(GfxFsaaSamples, gfx_fsaa_samples, 0, 0, 16, CFGFLAG_SAVE|CFGFLAG_CLIENT, "FSAA Samples")
|
||||||
MACRO_CONFIG_INT(GfxRefreshRate, gfx_refresh_rate, 0, 0, 10000, CFGFLAG_SAVE|CFGFLAG_CLIENT, "Screen refresh rate")
|
MACRO_CONFIG_INT(GfxRefreshRate, gfx_refresh_rate, 0, 0, 10000, CFGFLAG_SAVE|CFGFLAG_CLIENT, "Screen refresh rate")
|
||||||
MACRO_CONFIG_INT(GfxFinish, gfx_finish, 0, 0, 1, CFGFLAG_SAVE|CFGFLAG_CLIENT, "")
|
MACRO_CONFIG_INT(GfxFinish, gfx_finish, 0, 0, 1, CFGFLAG_SAVE|CFGFLAG_CLIENT, "")
|
||||||
MACRO_CONFIG_INT(GfxBackgroundRender, gfx_backgroundrender, 1, 0, 1, CFGFLAG_SAVE|CFGFLAG_CLIENT, "Render graphics when window is in background")
|
MACRO_CONFIG_INT(GfxBackgroundRender, gfx_backgroundrender, 1, 0, 1, CFGFLAG_SAVE|CFGFLAG_CLIENT, "Render graphics when window is in background")
|
||||||
MACRO_CONFIG_INT(GfxTextOverlay, gfx_text_overlay, 10, 1, 100, CFGFLAG_SAVE|CFGFLAG_CLIENT, "Stop rendering textoverlay in editor or with entities: high value = less details = more speed")
|
MACRO_CONFIG_INT(GfxTextOverlay, gfx_text_overlay, 10, 1, 100, CFGFLAG_SAVE|CFGFLAG_CLIENT, "Stop rendering textoverlay in editor or with entities: high value = less details = more speed")
|
||||||
#if defined(__ANDROID__)
|
|
||||||
MACRO_CONFIG_INT(GfxAsyncRenderOld, gfx_asyncrender_old, 0, 0, 1, CFGFLAG_SAVE|CFGFLAG_CLIENT, "Do rendering async from the the update")
|
|
||||||
#else
|
|
||||||
MACRO_CONFIG_INT(GfxAsyncRenderOld, gfx_asyncrender_old, 1, 0, 1, CFGFLAG_SAVE|CFGFLAG_CLIENT, "Do rendering async from the the update")
|
MACRO_CONFIG_INT(GfxAsyncRenderOld, gfx_asyncrender_old, 1, 0, 1, CFGFLAG_SAVE|CFGFLAG_CLIENT, "Do rendering async from the the update")
|
||||||
#endif
|
|
||||||
MACRO_CONFIG_INT(GfxTuneOverlay, gfx_tune_overlay, 20, 1, 100, CFGFLAG_SAVE|CFGFLAG_CLIENT, "Stop rendering text overlay in tuning zone in editor: high value = less details = more speed")
|
MACRO_CONFIG_INT(GfxTuneOverlay, gfx_tune_overlay, 20, 1, 100, CFGFLAG_SAVE|CFGFLAG_CLIENT, "Stop rendering text overlay in tuning zone in editor: high value = less details = more speed")
|
||||||
#if defined(__ANDROID__)
|
|
||||||
MACRO_CONFIG_INT(GfxQuadAsTriangle, gfx_quad_as_triangle, 0, 0, 0, CFGFLAG_SAVE|CFGFLAG_CLIENT, "Render quads as triangles (fixes quad coloring on some GPUs)")
|
|
||||||
#else
|
|
||||||
MACRO_CONFIG_INT(GfxQuadAsTriangle, gfx_quad_as_triangle, 1, 0, 1, CFGFLAG_SAVE|CFGFLAG_CLIENT, "Render quads as triangles (fixes quad coloring on some GPUs)")
|
MACRO_CONFIG_INT(GfxQuadAsTriangle, gfx_quad_as_triangle, 1, 0, 1, CFGFLAG_SAVE|CFGFLAG_CLIENT, "Render quads as triangles (fixes quad coloring on some GPUs)")
|
||||||
#endif
|
|
||||||
|
|
||||||
MACRO_CONFIG_INT(InpMousesens, inp_mousesens, 200, 1, 100000, CFGFLAG_SAVE|CFGFLAG_CLIENT, "Mouse sensitivity")
|
MACRO_CONFIG_INT(InpMousesens, inp_mousesens, 200, 1, 100000, CFGFLAG_SAVE|CFGFLAG_CLIENT, "Mouse sensitivity")
|
||||||
MACRO_CONFIG_INT(InpMouseOld, inp_mouseold, 0, 0, 1, CFGFLAG_SAVE|CFGFLAG_CLIENT, "Use old mouse mode (warp mouse instead of raw input)")
|
MACRO_CONFIG_INT(InpMouseOld, inp_mouseold, 0, 0, 1, CFGFLAG_SAVE|CFGFLAG_CLIENT, "Use old mouse mode (warp mouse instead of raw input)")
|
||||||
|
@ -394,11 +371,7 @@ MACRO_CONFIG_STR(ClDummyTimeoutCode, cl_dummy_timeout_code, 64, "", CFGFLAG_SAVE
|
||||||
MACRO_CONFIG_STR(ClTimeoutSeed, cl_timeout_seed, 64, "", CFGFLAG_SAVE|CFGFLAG_CLIENT, "Timeout seed")
|
MACRO_CONFIG_STR(ClTimeoutSeed, cl_timeout_seed, 64, "", CFGFLAG_SAVE|CFGFLAG_CLIENT, "Timeout seed")
|
||||||
MACRO_CONFIG_STR(ClInputFifo, cl_input_fifo, 128, "", CFGFLAG_SAVE|CFGFLAG_CLIENT, "Fifo file to use as input for client console")
|
MACRO_CONFIG_STR(ClInputFifo, cl_input_fifo, 128, "", CFGFLAG_SAVE|CFGFLAG_CLIENT, "Fifo file to use as input for client console")
|
||||||
MACRO_CONFIG_INT(ClShowConsole, cl_show_console, 0, 0, 1, CFGFLAG_SAVE|CFGFLAG_CLIENT, "Show console window (Windows only)")
|
MACRO_CONFIG_INT(ClShowConsole, cl_show_console, 0, 0, 1, CFGFLAG_SAVE|CFGFLAG_CLIENT, "Show console window (Windows only)")
|
||||||
#if defined(__ANDROID__)
|
|
||||||
MACRO_CONFIG_INT(InpJoystick, inp_joystick, 1, 0, 1, CFGFLAG_SAVE|CFGFLAG_CLIENT, "Try to use a joystick as input")
|
|
||||||
#else
|
|
||||||
MACRO_CONFIG_INT(InpJoystick, inp_joystick, 0, 0, 1, CFGFLAG_SAVE|CFGFLAG_CLIENT, "Try to use a joystick as input")
|
MACRO_CONFIG_INT(InpJoystick, inp_joystick, 0, 0, 1, CFGFLAG_SAVE|CFGFLAG_CLIENT, "Try to use a joystick as input")
|
||||||
#endif
|
|
||||||
MACRO_CONFIG_INT(ClConfigVersion, cl_config_version, 0, 0, 0, CFGFLAG_CLIENT|CFGFLAG_SAVE, "The config version. Helps newer clients fix bugs with older configs.")
|
MACRO_CONFIG_INT(ClConfigVersion, cl_config_version, 0, 0, 0, CFGFLAG_CLIENT|CFGFLAG_SAVE, "The config version. Helps newer clients fix bugs with older configs.")
|
||||||
|
|
||||||
// demo editor
|
// demo editor
|
||||||
|
|
|
@ -124,24 +124,10 @@ void CBinds::SetDefaults()
|
||||||
Bind(KEY_MOUSE_1, "+fire");
|
Bind(KEY_MOUSE_1, "+fire");
|
||||||
Bind(KEY_MOUSE_2, "+hook");
|
Bind(KEY_MOUSE_2, "+hook");
|
||||||
Bind(KEY_LSHIFT, "+emote");
|
Bind(KEY_LSHIFT, "+emote");
|
||||||
#if defined(__ANDROID__)
|
|
||||||
Bind(KEY_RCTRL, "+fire");
|
|
||||||
Bind(KEY_RETURN, "+hook");
|
|
||||||
Bind(KEY_RIGHT, "+right");
|
|
||||||
Bind(KEY_LEFT, "+left");
|
|
||||||
Bind(KEY_UP, "+jump");
|
|
||||||
Bind(KEY_DOWN, "+hook");
|
|
||||||
Bind(KEY_PAGEUP, "+prevweapon");
|
|
||||||
Bind(KEY_PAGEDOWN, "+nextweapon");
|
|
||||||
Bind(KEY_F5, "spectate_previous");
|
|
||||||
Bind(KEY_F6, "spectate_next");
|
|
||||||
#else
|
|
||||||
Bind(KEY_RETURN, "+show_chat; chat all");
|
Bind(KEY_RETURN, "+show_chat; chat all");
|
||||||
Bind(KEY_RIGHT, "spectate_next");
|
Bind(KEY_RIGHT, "spectate_next");
|
||||||
Bind(KEY_LEFT, "spectate_previous");
|
Bind(KEY_LEFT, "spectate_previous");
|
||||||
Bind(KEY_RSHIFT, "+spectate");
|
Bind(KEY_RSHIFT, "+spectate");
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
Bind(KEY_1, "+weapon1");
|
Bind(KEY_1, "+weapon1");
|
||||||
Bind(KEY_2, "+weapon2");
|
Bind(KEY_2, "+weapon2");
|
||||||
|
@ -326,10 +312,8 @@ void CBinds::SetDDRaceBinds(bool FreeOnly)
|
||||||
Bind(KEY_M, "emote 5", FreeOnly);
|
Bind(KEY_M, "emote 5", FreeOnly);
|
||||||
Bind(KEY_S, "+showhookcoll", FreeOnly);
|
Bind(KEY_S, "+showhookcoll", FreeOnly);
|
||||||
Bind(KEY_X, "toggle cl_dummy 0 1", FreeOnly);
|
Bind(KEY_X, "toggle cl_dummy 0 1", FreeOnly);
|
||||||
#if !defined(__ANDROID__)
|
|
||||||
Bind(KEY_PAGEDOWN, "toggle cl_show_quads 0 1", FreeOnly);
|
Bind(KEY_PAGEDOWN, "toggle cl_show_quads 0 1", FreeOnly);
|
||||||
Bind(KEY_PAGEUP, "toggle cl_overlay_entities 0 100", FreeOnly);
|
Bind(KEY_PAGEUP, "toggle cl_overlay_entities 0 100", FreeOnly);
|
||||||
#endif
|
|
||||||
Bind(KEY_KP_0, "say /emote normal 999999", FreeOnly);
|
Bind(KEY_KP_0, "say /emote normal 999999", FreeOnly);
|
||||||
Bind(KEY_KP_1, "say /emote happy 999999", FreeOnly);
|
Bind(KEY_KP_1, "say /emote happy 999999", FreeOnly);
|
||||||
Bind(KEY_KP_2, "say /emote angry 999999", FreeOnly);
|
Bind(KEY_KP_2, "say /emote angry 999999", FreeOnly);
|
||||||
|
|
|
@ -514,7 +514,6 @@ void CChat::EnableMode(int Team)
|
||||||
Input()->SetIMEState(true);
|
Input()->SetIMEState(true);
|
||||||
Input()->Clear();
|
Input()->Clear();
|
||||||
m_CompletionChosen = -1;
|
m_CompletionChosen = -1;
|
||||||
UI()->AndroidShowTextInput("", Team ? Localize("Team chat") : Localize("Chat"));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -737,15 +736,7 @@ void CChat::OnPrepareLines()
|
||||||
{
|
{
|
||||||
float x = 5.0f;
|
float x = 5.0f;
|
||||||
float y = 300.0f - 28.0f;
|
float y = 300.0f - 28.0f;
|
||||||
#if defined(__ANDROID__)
|
|
||||||
x += 120.0f;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(__ANDROID__)
|
|
||||||
float FontSize = 10.0f;
|
|
||||||
#else
|
|
||||||
float FontSize = 6.0f;
|
float FontSize = 6.0f;
|
||||||
#endif
|
|
||||||
|
|
||||||
bool ForceRecreate = m_pClient->m_pScoreboard->Active() != m_PrevScoreBoardShowed;
|
bool ForceRecreate = m_pClient->m_pScoreboard->Active() != m_PrevScoreBoardShowed;
|
||||||
ForceRecreate |= m_Show != m_PrevShowChat;
|
ForceRecreate |= m_Show != m_PrevShowChat;
|
||||||
|
@ -977,9 +968,6 @@ void CChat::OnRender()
|
||||||
return;
|
return;
|
||||||
|
|
||||||
y -= 8.0f;
|
y -= 8.0f;
|
||||||
#if defined(__ANDROID__)
|
|
||||||
x += 120.0f;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
OnPrepareLines();
|
OnPrepareLines();
|
||||||
|
|
||||||
|
@ -1007,37 +995,6 @@ void CChat::OnRender()
|
||||||
TextRender()->RenderTextContainer(m_aLines[r].m_TextContainerIndex, &Text, &TextOutline, 0, y - m_aLines[r].m_TextYOffset);
|
TextRender()->RenderTextContainer(m_aLines[r].m_TextContainerIndex, &Text, &TextOutline, 0, y - m_aLines[r].m_TextYOffset);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#if defined(__ANDROID__)
|
|
||||||
static int deferEvent = 0;
|
|
||||||
if( UI()->AndroidTextInputShown() )
|
|
||||||
{
|
|
||||||
if(m_Mode == MODE_NONE)
|
|
||||||
{
|
|
||||||
deferEvent++;
|
|
||||||
if( deferEvent > 2 )
|
|
||||||
EnableMode(0);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
deferEvent = 0;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if(m_Mode != MODE_NONE)
|
|
||||||
{
|
|
||||||
deferEvent++;
|
|
||||||
if( deferEvent > 2 )
|
|
||||||
{
|
|
||||||
IInput::CEvent Event;
|
|
||||||
Event.m_Flags = IInput::FLAG_PRESS;
|
|
||||||
Event.m_Key = KEY_RETURN;
|
|
||||||
OnInput(Event);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
deferEvent = 0;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void CChat::Say(int Team, const char *pLine)
|
void CChat::Say(int Team, const char *pLine)
|
||||||
|
|
|
@ -29,9 +29,7 @@ CControls::CControls()
|
||||||
m_LastDummy = 0;
|
m_LastDummy = 0;
|
||||||
m_OtherFire = 0;
|
m_OtherFire = 0;
|
||||||
|
|
||||||
#if !defined(__ANDROID__)
|
|
||||||
if (g_Config.m_InpJoystick)
|
if (g_Config.m_InpJoystick)
|
||||||
#endif
|
|
||||||
{
|
{
|
||||||
SDL_Init(SDL_INIT_JOYSTICK);
|
SDL_Init(SDL_INIT_JOYSTICK);
|
||||||
m_Joystick = SDL_JoystickOpen(0);
|
m_Joystick = SDL_JoystickOpen(0);
|
||||||
|
@ -51,14 +49,12 @@ CControls::CControls()
|
||||||
m_UsingGamepad = true;
|
m_UsingGamepad = true;
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
#if !defined(__ANDROID__)
|
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
m_Joystick = NULL;
|
m_Joystick = NULL;
|
||||||
m_Gamepad = NULL;
|
m_Gamepad = NULL;
|
||||||
m_UsingGamepad = false;
|
m_UsingGamepad = false;
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void CControls::OnReset()
|
void CControls::OnReset()
|
||||||
|
@ -456,7 +452,6 @@ void CControls::OnRender()
|
||||||
|
|
||||||
if( !m_UsingGamepad && (abs(AimX) > GAMEPAD_DEAD_ZONE || abs(AimY) > GAMEPAD_DEAD_ZONE || abs(RunX) > GAMEPAD_DEAD_ZONE || abs(RunY) > GAMEPAD_DEAD_ZONE) )
|
if( !m_UsingGamepad && (abs(AimX) > GAMEPAD_DEAD_ZONE || abs(AimY) > GAMEPAD_DEAD_ZONE || abs(RunX) > GAMEPAD_DEAD_ZONE || abs(RunY) > GAMEPAD_DEAD_ZONE) )
|
||||||
{
|
{
|
||||||
UI()->AndroidShowScreenKeys(false);
|
|
||||||
m_UsingGamepad = true;
|
m_UsingGamepad = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -501,16 +496,6 @@ bool CControls::OnMouseMove(float x, float y)
|
||||||
if((m_pClient->m_Snap.m_pGameInfoObj && m_pClient->m_Snap.m_pGameInfoObj->m_GameStateFlags&GAMESTATEFLAG_PAUSED))
|
if((m_pClient->m_Snap.m_pGameInfoObj && m_pClient->m_Snap.m_pGameInfoObj->m_GameStateFlags&GAMESTATEFLAG_PAUSED))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
#if defined(__ANDROID__) // No relative mouse on Android
|
|
||||||
// We're using joystick on Android, mouse is disabled
|
|
||||||
if( m_OldMouseX != x || m_OldMouseY != y )
|
|
||||||
{
|
|
||||||
m_OldMouseX = x;
|
|
||||||
m_OldMouseY = y;
|
|
||||||
m_MousePos[g_Config.m_ClDummy] = vec2((x - Graphics()->Width()/2), (y - Graphics()->Height()/2));
|
|
||||||
ClampMousePos();
|
|
||||||
}
|
|
||||||
#else
|
|
||||||
if(g_Config.m_ClDyncam && g_Config.m_ClDyncamMousesens)
|
if(g_Config.m_ClDyncam && g_Config.m_ClDyncamMousesens)
|
||||||
{
|
{
|
||||||
x = x * g_Config.m_ClDyncamMousesens / g_Config.m_InpMousesens;
|
x = x * g_Config.m_ClDyncamMousesens / g_Config.m_InpMousesens;
|
||||||
|
@ -518,7 +503,6 @@ bool CControls::OnMouseMove(float x, float y)
|
||||||
}
|
}
|
||||||
m_MousePos[g_Config.m_ClDummy] += vec2(x, y); // TODO: ugly
|
m_MousePos[g_Config.m_ClDummy] += vec2(x, y); // TODO: ugly
|
||||||
ClampMousePos();
|
ClampMousePos();
|
||||||
#endif
|
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
|
@ -54,12 +54,8 @@ bool CEmoticon::OnMouseMove(float x, float y)
|
||||||
if(!m_Active)
|
if(!m_Active)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
#if defined(__ANDROID__) // No relative mouse on Android
|
|
||||||
m_SelectorMouse = vec2(x,y);
|
|
||||||
#else
|
|
||||||
UI()->ConvertMouseMove(&x, &y);
|
UI()->ConvertMouseMove(&x, &y);
|
||||||
m_SelectorMouse += vec2(x,y);
|
m_SelectorMouse += vec2(x,y);
|
||||||
#endif
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -614,17 +614,7 @@ void CHud::RenderVoting()
|
||||||
Graphics()->QuadsBegin();
|
Graphics()->QuadsBegin();
|
||||||
Graphics()->SetColor(0,0,0,0.40f);
|
Graphics()->SetColor(0,0,0,0.40f);
|
||||||
|
|
||||||
#if defined(__ANDROID__)
|
|
||||||
static const float TextX = 265;
|
|
||||||
static const float TextY = 1;
|
|
||||||
static const float TextW = 200;
|
|
||||||
static const float TextH = 42;
|
|
||||||
RenderTools()->DrawRoundRect(TextX-5, TextY, TextW+15, TextH, 5.0f);
|
|
||||||
RenderTools()->DrawRoundRect(TextX-5, TextY+TextH+2, TextW/2-10, 20, 5.0f);
|
|
||||||
RenderTools()->DrawRoundRect(TextX+TextW/2+20, TextY+TextH+2, TextW/2-10, 20, 5.0f);
|
|
||||||
#else
|
|
||||||
RenderTools()->DrawRoundRect(-10, 60-2, 100+10+4+5, 46, 5.0f);
|
RenderTools()->DrawRoundRect(-10, 60-2, 100+10+4+5, 46, 5.0f);
|
||||||
#endif
|
|
||||||
Graphics()->QuadsEnd();
|
Graphics()->QuadsEnd();
|
||||||
|
|
||||||
TextRender()->TextColor(1,1,1,1);
|
TextRender()->TextColor(1,1,1,1);
|
||||||
|
@ -632,60 +622,24 @@ void CHud::RenderVoting()
|
||||||
CTextCursor Cursor;
|
CTextCursor Cursor;
|
||||||
char aBuf[512];
|
char aBuf[512];
|
||||||
str_format(aBuf, sizeof(aBuf), Localize("%ds left"), m_pClient->m_pVoting->SecondsLeft());
|
str_format(aBuf, sizeof(aBuf), Localize("%ds left"), m_pClient->m_pVoting->SecondsLeft());
|
||||||
#if defined(__ANDROID__)
|
|
||||||
float tw = TextRender()->TextWidth(0x0, 10, aBuf, -1);
|
|
||||||
TextRender()->SetCursor(&Cursor, TextX+TextW-tw, 0.0f, 10.0f, TEXTFLAG_RENDER);
|
|
||||||
#else
|
|
||||||
float tw = TextRender()->TextWidth(0x0, 6, aBuf, -1);
|
float tw = TextRender()->TextWidth(0x0, 6, aBuf, -1);
|
||||||
TextRender()->SetCursor(&Cursor, 5.0f+100.0f-tw, 60.0f, 6.0f, TEXTFLAG_RENDER);
|
TextRender()->SetCursor(&Cursor, 5.0f+100.0f-tw, 60.0f, 6.0f, TEXTFLAG_RENDER);
|
||||||
#endif
|
|
||||||
TextRender()->TextEx(&Cursor, aBuf, -1);
|
TextRender()->TextEx(&Cursor, aBuf, -1);
|
||||||
|
|
||||||
#if defined(__ANDROID__)
|
|
||||||
TextRender()->SetCursor(&Cursor, TextX, 0.0f, 10.0f, TEXTFLAG_RENDER);
|
|
||||||
Cursor.m_LineWidth = TextW-tw;
|
|
||||||
#else
|
|
||||||
TextRender()->SetCursor(&Cursor, 5.0f, 60.0f, 6.0f, TEXTFLAG_RENDER);
|
TextRender()->SetCursor(&Cursor, 5.0f, 60.0f, 6.0f, TEXTFLAG_RENDER);
|
||||||
Cursor.m_LineWidth = 100.0f-tw;
|
Cursor.m_LineWidth = 100.0f-tw;
|
||||||
#endif
|
|
||||||
Cursor.m_MaxLines = 3;
|
Cursor.m_MaxLines = 3;
|
||||||
TextRender()->TextEx(&Cursor, m_pClient->m_pVoting->VoteDescription(), -1);
|
TextRender()->TextEx(&Cursor, m_pClient->m_pVoting->VoteDescription(), -1);
|
||||||
|
|
||||||
// reason
|
// reason
|
||||||
str_format(aBuf, sizeof(aBuf), "%s %s", Localize("Reason:"), m_pClient->m_pVoting->VoteReason());
|
str_format(aBuf, sizeof(aBuf), "%s %s", Localize("Reason:"), m_pClient->m_pVoting->VoteReason());
|
||||||
#if defined(__ANDROID__)
|
|
||||||
TextRender()->SetCursor(&Cursor, TextX, 23.0f, 10.0f, TEXTFLAG_RENDER|TEXTFLAG_STOP_AT_END);
|
|
||||||
#else
|
|
||||||
TextRender()->SetCursor(&Cursor, 5.0f, 79.0f, 6.0f, TEXTFLAG_RENDER|TEXTFLAG_STOP_AT_END);
|
TextRender()->SetCursor(&Cursor, 5.0f, 79.0f, 6.0f, TEXTFLAG_RENDER|TEXTFLAG_STOP_AT_END);
|
||||||
#endif
|
|
||||||
Cursor.m_LineWidth = 100.0f;
|
Cursor.m_LineWidth = 100.0f;
|
||||||
TextRender()->TextEx(&Cursor, aBuf, -1);
|
TextRender()->TextEx(&Cursor, aBuf, -1);
|
||||||
|
|
||||||
#if defined(__ANDROID__)
|
|
||||||
CUIRect Base = {TextX, TextH - 8, TextW, 4};
|
|
||||||
#else
|
|
||||||
CUIRect Base = {5, 88, 100, 4};
|
CUIRect Base = {5, 88, 100, 4};
|
||||||
#endif
|
|
||||||
m_pClient->m_pVoting->RenderBars(Base, false);
|
m_pClient->m_pVoting->RenderBars(Base, false);
|
||||||
|
|
||||||
#if defined(__ANDROID__)
|
|
||||||
Base.y += Base.h+6;
|
|
||||||
UI()->DoLabel(&Base, Localize("Vote yes"), 16.0f, -1);
|
|
||||||
UI()->DoLabel(&Base, Localize("Vote no"), 16.0f, 1);
|
|
||||||
if( Input()->KeyPress(KEY_MOUSE_1) )
|
|
||||||
{
|
|
||||||
float mx, my;
|
|
||||||
Input()->MouseRelative(&mx, &my);
|
|
||||||
mx *= m_Width / Graphics()->ScreenWidth();
|
|
||||||
my *= m_Height / Graphics()->ScreenHeight();
|
|
||||||
if( my > TextY+TextH-40 && my < TextY+TextH+20 ) {
|
|
||||||
if( mx > TextX-5 && mx < TextX-5+TextW/2-10 )
|
|
||||||
m_pClient->m_pVoting->Vote(1);
|
|
||||||
if( mx > TextX+TextW/2+20 && mx < TextX+TextW/2+20+TextW/2-10 )
|
|
||||||
m_pClient->m_pVoting->Vote(-1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#else
|
|
||||||
const char *pYesKey = m_pClient->m_pBinds->GetKey("vote yes");
|
const char *pYesKey = m_pClient->m_pBinds->GetKey("vote yes");
|
||||||
const char *pNoKey = m_pClient->m_pBinds->GetKey("vote no");
|
const char *pNoKey = m_pClient->m_pBinds->GetKey("vote no");
|
||||||
str_format(aBuf, sizeof(aBuf), "%s - %s", pYesKey, Localize("Vote yes"));
|
str_format(aBuf, sizeof(aBuf), "%s - %s", pYesKey, Localize("Vote yes"));
|
||||||
|
@ -695,7 +649,6 @@ void CHud::RenderVoting()
|
||||||
|
|
||||||
str_format(aBuf, sizeof(aBuf), "%s - %s", Localize("Vote no"), pNoKey);
|
str_format(aBuf, sizeof(aBuf), "%s - %s", Localize("Vote no"), pNoKey);
|
||||||
UI()->DoLabel(&Base, aBuf, 6.0f, 1);
|
UI()->DoLabel(&Base, aBuf, 6.0f, 1);
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void CHud::RenderCursor()
|
void CHud::RenderCursor()
|
||||||
|
|
|
@ -45,14 +45,8 @@ vec4 CMenus::ms_ColorTabbarActive = vec4(0,0,0,0.5f);
|
||||||
vec4 CMenus::ms_ColorTabbarInactiveIngame;
|
vec4 CMenus::ms_ColorTabbarInactiveIngame;
|
||||||
vec4 CMenus::ms_ColorTabbarActiveIngame;
|
vec4 CMenus::ms_ColorTabbarActiveIngame;
|
||||||
|
|
||||||
#if defined(__ANDROID__)
|
|
||||||
float CMenus::ms_ButtonHeight = 50.0f;
|
|
||||||
float CMenus::ms_ListheaderHeight = 17.0f;
|
|
||||||
float CMenus::ms_ListitemAdditionalHeight = 33.0f;
|
|
||||||
#else
|
|
||||||
float CMenus::ms_ButtonHeight = 25.0f;
|
float CMenus::ms_ButtonHeight = 25.0f;
|
||||||
float CMenus::ms_ListheaderHeight = 17.0f;
|
float CMenus::ms_ListheaderHeight = 17.0f;
|
||||||
#endif
|
|
||||||
float CMenus::ms_FontmodHeight = 0.8f;
|
float CMenus::ms_FontmodHeight = 0.8f;
|
||||||
|
|
||||||
IInput::CEvent CMenus::m_aInputEvents[MAX_INPUTEVENTS];
|
IInput::CEvent CMenus::m_aInputEvents[MAX_INPUTEVENTS];
|
||||||
|
@ -154,13 +148,7 @@ int CMenus::DoButton_Menu(const void *pID, const char *pText, int Checked, const
|
||||||
RenderTools()->DrawUIRect(pRect, vec4(1,1,1,0.5f)*ButtonColorMul(pID), CUI::CORNER_ALL, 5.0f);
|
RenderTools()->DrawUIRect(pRect, vec4(1,1,1,0.5f)*ButtonColorMul(pID), CUI::CORNER_ALL, 5.0f);
|
||||||
CUIRect Temp;
|
CUIRect Temp;
|
||||||
pRect->HMargin(pRect->h>=20.0f?2.0f:1.0f, &Temp);
|
pRect->HMargin(pRect->h>=20.0f?2.0f:1.0f, &Temp);
|
||||||
#if defined(__ANDROID__)
|
|
||||||
float TextH = min(22.0f, Temp.h);
|
|
||||||
Temp.y += (Temp.h - TextH) / 2;
|
|
||||||
UI()->DoLabel(&Temp, pText, TextH*ms_FontmodHeight, 0);
|
|
||||||
#else
|
|
||||||
UI()->DoLabel(&Temp, pText, Temp.h*ms_FontmodHeight, 0);
|
UI()->DoLabel(&Temp, pText, Temp.h*ms_FontmodHeight, 0);
|
||||||
#endif
|
|
||||||
return UI()->DoButtonLogic(pID, pText, Checked, pRect);
|
return UI()->DoButtonLogic(pID, pText, Checked, pRect);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -180,13 +168,7 @@ int CMenus::DoButton_MenuTab(const void *pID, const char *pText, int Checked, co
|
||||||
RenderTools()->DrawUIRect(pRect, ms_ColorTabbarInactive, Corners, 10.0f);
|
RenderTools()->DrawUIRect(pRect, ms_ColorTabbarInactive, Corners, 10.0f);
|
||||||
CUIRect Temp;
|
CUIRect Temp;
|
||||||
pRect->HMargin(2.0f, &Temp);
|
pRect->HMargin(2.0f, &Temp);
|
||||||
#if defined(__ANDROID__)
|
|
||||||
float TextH = min(22.0f, Temp.h);
|
|
||||||
Temp.y += (Temp.h - TextH) / 2;
|
|
||||||
UI()->DoLabel(&Temp, pText, TextH*ms_FontmodHeight, 0);
|
|
||||||
#else
|
|
||||||
UI()->DoLabel(&Temp, pText, Temp.h*ms_FontmodHeight, 0);
|
UI()->DoLabel(&Temp, pText, Temp.h*ms_FontmodHeight, 0);
|
||||||
#endif
|
|
||||||
|
|
||||||
return UI()->DoButtonLogic(pID, pText, Checked, pRect);
|
return UI()->DoButtonLogic(pID, pText, Checked, pRect);
|
||||||
}
|
}
|
||||||
|
@ -197,12 +179,7 @@ int CMenus::DoButton_GridHeader(const void *pID, const char *pText, int Checked,
|
||||||
RenderTools()->DrawUIRect(pRect, vec4(1,1,1,0.5f), CUI::CORNER_T, 5.0f);
|
RenderTools()->DrawUIRect(pRect, vec4(1,1,1,0.5f), CUI::CORNER_T, 5.0f);
|
||||||
CUIRect t;
|
CUIRect t;
|
||||||
pRect->VSplitLeft(5.0f, 0, &t);
|
pRect->VSplitLeft(5.0f, 0, &t);
|
||||||
#if defined(__ANDROID__)
|
|
||||||
float TextH = min(20.0f, pRect->h);
|
|
||||||
UI()->DoLabel(&t, pText, TextH*ms_FontmodHeight, -1);
|
|
||||||
#else
|
|
||||||
UI()->DoLabel(&t, pText, pRect->h*ms_FontmodHeight, -1);
|
UI()->DoLabel(&t, pText, pRect->h*ms_FontmodHeight, -1);
|
||||||
#endif
|
|
||||||
return UI()->DoButtonLogic(pID, pText, Checked, pRect);
|
return UI()->DoButtonLogic(pID, pText, Checked, pRect);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -356,13 +333,6 @@ int CMenus::DoEditBox(void *pID, const CUIRect *pRect, char *pStr, unsigned StrS
|
||||||
if(Inside)
|
if(Inside)
|
||||||
{
|
{
|
||||||
UI()->SetHotItem(pID);
|
UI()->SetHotItem(pID);
|
||||||
#if defined(__ANDROID__)
|
|
||||||
if(UI()->ActiveItem() == pID && UI()->MouseButtonClicked(0))
|
|
||||||
{
|
|
||||||
s_AtIndex = 0;
|
|
||||||
UI()->AndroidBlockAndGetTextInput(pStr, StrSize, "");
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
CUIRect Textbox = *pRect;
|
CUIRect Textbox = *pRect;
|
||||||
|
@ -497,11 +467,7 @@ float CMenus::DoScrollbarV(const void *pID, const CUIRect *pRect, float Current)
|
||||||
{
|
{
|
||||||
CUIRect Handle;
|
CUIRect Handle;
|
||||||
static float OffsetY;
|
static float OffsetY;
|
||||||
#if defined(__ANDROID__)
|
|
||||||
pRect->HSplitTop(50, &Handle, 0);
|
|
||||||
#else
|
|
||||||
pRect->HSplitTop(33, &Handle, 0);
|
pRect->HSplitTop(33, &Handle, 0);
|
||||||
#endif
|
|
||||||
|
|
||||||
Handle.y += (pRect->h-Handle.h)*Current;
|
Handle.y += (pRect->h-Handle.h)*Current;
|
||||||
|
|
||||||
|
@ -1027,11 +993,7 @@ int CMenus::Render()
|
||||||
|
|
||||||
if(m_Popup == POPUP_NONE)
|
if(m_Popup == POPUP_NONE)
|
||||||
{
|
{
|
||||||
#if defined(__ANDROID__)
|
|
||||||
Screen.HSplitTop(100.0f, &TabBar, &MainView);
|
|
||||||
#else
|
|
||||||
Screen.HSplitTop(24.0f, &TabBar, &MainView);
|
Screen.HSplitTop(24.0f, &TabBar, &MainView);
|
||||||
#endif
|
|
||||||
|
|
||||||
// render news
|
// render news
|
||||||
if(g_Config.m_UiPage < PAGE_NEWS || g_Config.m_UiPage > PAGE_SETTINGS || (Client()->State() == IClient::STATE_OFFLINE && g_Config.m_UiPage >= PAGE_GAME && g_Config.m_UiPage <= PAGE_CALLVOTE))
|
if(g_Config.m_UiPage < PAGE_NEWS || g_Config.m_UiPage > PAGE_SETTINGS || (Client()->State() == IClient::STATE_OFFLINE && g_Config.m_UiPage >= PAGE_GAME && g_Config.m_UiPage <= PAGE_CALLVOTE))
|
||||||
|
@ -1189,11 +1151,7 @@ int CMenus::Render()
|
||||||
CUIRect Box, Part;
|
CUIRect Box, Part;
|
||||||
Box = Screen;
|
Box = Screen;
|
||||||
Box.VMargin(150.0f/UI()->Scale(), &Box);
|
Box.VMargin(150.0f/UI()->Scale(), &Box);
|
||||||
#if defined(__ANDROID__)
|
|
||||||
Box.HMargin(100.0f/UI()->Scale(), &Box);
|
|
||||||
#else
|
|
||||||
Box.HMargin(150.0f/UI()->Scale(), &Box);
|
Box.HMargin(150.0f/UI()->Scale(), &Box);
|
||||||
#endif
|
|
||||||
|
|
||||||
// render the box
|
// render the box
|
||||||
RenderTools()->DrawUIRect(&Box, vec4(0,0,0,0.5f), CUI::CORNER_ALL, 15.0f);
|
RenderTools()->DrawUIRect(&Box, vec4(0,0,0,0.5f), CUI::CORNER_ALL, 15.0f);
|
||||||
|
@ -1223,11 +1181,7 @@ int CMenus::Render()
|
||||||
{
|
{
|
||||||
CUIRect Yes, No;
|
CUIRect Yes, No;
|
||||||
Box.HSplitBottom(20.f, &Box, &Part);
|
Box.HSplitBottom(20.f, &Box, &Part);
|
||||||
#if defined(__ANDROID__)
|
|
||||||
Box.HSplitBottom(60.f, &Box, &Part);
|
|
||||||
#else
|
|
||||||
Box.HSplitBottom(24.f, &Box, &Part);
|
Box.HSplitBottom(24.f, &Box, &Part);
|
||||||
#endif
|
|
||||||
|
|
||||||
// additional info
|
// additional info
|
||||||
Box.VMargin(20.f/UI()->Scale(), &Box);
|
Box.VMargin(20.f/UI()->Scale(), &Box);
|
||||||
|
@ -1256,11 +1210,7 @@ int CMenus::Render()
|
||||||
{
|
{
|
||||||
CUIRect Yes, No;
|
CUIRect Yes, No;
|
||||||
Box.HSplitBottom(20.f, &Box, &Part);
|
Box.HSplitBottom(20.f, &Box, &Part);
|
||||||
#if defined(__ANDROID__)
|
|
||||||
Box.HSplitBottom(60.f, &Box, &Part);
|
|
||||||
#else
|
|
||||||
Box.HSplitBottom(24.f, &Box, &Part);
|
Box.HSplitBottom(24.f, &Box, &Part);
|
||||||
#endif
|
|
||||||
|
|
||||||
// buttons
|
// buttons
|
||||||
Part.VMargin(80.0f, &Part);
|
Part.VMargin(80.0f, &Part);
|
||||||
|
@ -1280,11 +1230,7 @@ int CMenus::Render()
|
||||||
{
|
{
|
||||||
CUIRect Yes, No;
|
CUIRect Yes, No;
|
||||||
Box.HSplitBottom(20.f, &Box, &Part);
|
Box.HSplitBottom(20.f, &Box, &Part);
|
||||||
#if defined(__ANDROID__)
|
|
||||||
Box.HSplitBottom(60.f, &Box, &Part);
|
|
||||||
#else
|
|
||||||
Box.HSplitBottom(24.f, &Box, &Part);
|
Box.HSplitBottom(24.f, &Box, &Part);
|
||||||
#endif
|
|
||||||
|
|
||||||
// buttons
|
// buttons
|
||||||
Part.VMargin(80.0f, &Part);
|
Part.VMargin(80.0f, &Part);
|
||||||
|
@ -1308,11 +1254,7 @@ int CMenus::Render()
|
||||||
CUIRect Label, TextBox, TryAgain, Abort;
|
CUIRect Label, TextBox, TryAgain, Abort;
|
||||||
|
|
||||||
Box.HSplitBottom(20.f, &Box, &Part);
|
Box.HSplitBottom(20.f, &Box, &Part);
|
||||||
#if defined(__ANDROID__)
|
|
||||||
Box.HSplitBottom(60.f, &Box, &Part);
|
|
||||||
#else
|
|
||||||
Box.HSplitBottom(24.f, &Box, &Part);
|
Box.HSplitBottom(24.f, &Box, &Part);
|
||||||
#endif
|
|
||||||
Part.VMargin(80.0f, &Part);
|
Part.VMargin(80.0f, &Part);
|
||||||
|
|
||||||
Part.VSplitMid(&Abort, &TryAgain);
|
Part.VSplitMid(&Abort, &TryAgain);
|
||||||
|
@ -1331,11 +1273,7 @@ int CMenus::Render()
|
||||||
}
|
}
|
||||||
|
|
||||||
Box.HSplitBottom(60.f, &Box, &Part);
|
Box.HSplitBottom(60.f, &Box, &Part);
|
||||||
#if defined(__ANDROID__)
|
|
||||||
Box.HSplitBottom(60.f, &Box, &Part);
|
|
||||||
#else
|
|
||||||
Box.HSplitBottom(24.f, &Box, &Part);
|
Box.HSplitBottom(24.f, &Box, &Part);
|
||||||
#endif
|
|
||||||
|
|
||||||
Part.VSplitLeft(60.0f, 0, &Label);
|
Part.VSplitLeft(60.0f, 0, &Label);
|
||||||
Label.VSplitLeft(100.0f, 0, &TextBox);
|
Label.VSplitLeft(100.0f, 0, &TextBox);
|
||||||
|
@ -1351,11 +1289,7 @@ int CMenus::Render()
|
||||||
Box.VMargin(150.0f, &Box);
|
Box.VMargin(150.0f, &Box);
|
||||||
Box.HMargin(150.0f, &Box);
|
Box.HMargin(150.0f, &Box);
|
||||||
Box.HSplitBottom(20.f, &Box, &Part);
|
Box.HSplitBottom(20.f, &Box, &Part);
|
||||||
#if defined(__ANDROID__)
|
|
||||||
Box.HSplitBottom(60.f, &Box, &Part);
|
|
||||||
#else
|
|
||||||
Box.HSplitBottom(24.f, &Box, &Part);
|
Box.HSplitBottom(24.f, &Box, &Part);
|
||||||
#endif
|
|
||||||
Part.VMargin(120.0f, &Part);
|
Part.VMargin(120.0f, &Part);
|
||||||
|
|
||||||
static int s_Button = 0;
|
static int s_Button = 0;
|
||||||
|
@ -1420,18 +1354,10 @@ int CMenus::Render()
|
||||||
{
|
{
|
||||||
Box = Screen;
|
Box = Screen;
|
||||||
Box.VMargin(150.0f, &Box);
|
Box.VMargin(150.0f, &Box);
|
||||||
#if defined(__ANDROID__)
|
|
||||||
Box.HMargin(20.0f, &Box);
|
|
||||||
#else
|
|
||||||
Box.HMargin(150.0f, &Box);
|
Box.HMargin(150.0f, &Box);
|
||||||
#endif
|
|
||||||
Box.HSplitTop(20.f, &Part, &Box);
|
Box.HSplitTop(20.f, &Part, &Box);
|
||||||
Box.HSplitBottom(20.f, &Box, &Part);
|
Box.HSplitBottom(20.f, &Box, &Part);
|
||||||
#if defined(__ANDROID__)
|
|
||||||
Box.HSplitBottom(60.f, &Box, &Part);
|
|
||||||
#else
|
|
||||||
Box.HSplitBottom(24.f, &Box, &Part);
|
Box.HSplitBottom(24.f, &Box, &Part);
|
||||||
#endif
|
|
||||||
Box.HSplitBottom(20.f, &Box, 0);
|
Box.HSplitBottom(20.f, &Box, 0);
|
||||||
Box.VMargin(20.0f, &Box);
|
Box.VMargin(20.0f, &Box);
|
||||||
RenderLanguageSelection(Box);
|
RenderLanguageSelection(Box);
|
||||||
|
@ -1445,18 +1371,10 @@ int CMenus::Render()
|
||||||
{
|
{
|
||||||
Box = Screen;
|
Box = Screen;
|
||||||
Box.VMargin(150.0f, &Box);
|
Box.VMargin(150.0f, &Box);
|
||||||
#if defined(__ANDROID__)
|
|
||||||
Box.HMargin(20.0f, &Box);
|
|
||||||
#else
|
|
||||||
Box.HMargin(150.0f, &Box);
|
Box.HMargin(150.0f, &Box);
|
||||||
#endif
|
|
||||||
Box.HSplitTop(20.f, &Part, &Box);
|
Box.HSplitTop(20.f, &Part, &Box);
|
||||||
Box.HSplitBottom(20.f, &Box, &Part);
|
Box.HSplitBottom(20.f, &Box, &Part);
|
||||||
#if defined(__ANDROID__)
|
|
||||||
Box.HSplitBottom(60.f, &Box, &Part);
|
|
||||||
#else
|
|
||||||
Box.HSplitBottom(24.f, &Box, &Part);
|
Box.HSplitBottom(24.f, &Box, &Part);
|
||||||
#endif
|
|
||||||
Box.HSplitBottom(20.f, &Box, 0);
|
Box.HSplitBottom(20.f, &Box, 0);
|
||||||
Box.VMargin(20.0f, &Box);
|
Box.VMargin(20.0f, &Box);
|
||||||
|
|
||||||
|
@ -1512,11 +1430,7 @@ int CMenus::Render()
|
||||||
{
|
{
|
||||||
CUIRect Yes, No;
|
CUIRect Yes, No;
|
||||||
Box.HSplitBottom(20.f, &Box, &Part);
|
Box.HSplitBottom(20.f, &Box, &Part);
|
||||||
#if defined(__ANDROID__)
|
|
||||||
Box.HSplitBottom(60.f, &Box, &Part);
|
|
||||||
#else
|
|
||||||
Box.HSplitBottom(24.f, &Box, &Part);
|
Box.HSplitBottom(24.f, &Box, &Part);
|
||||||
#endif
|
|
||||||
Part.VMargin(80.0f, &Part);
|
Part.VMargin(80.0f, &Part);
|
||||||
|
|
||||||
Part.VSplitMid(&No, &Yes);
|
Part.VSplitMid(&No, &Yes);
|
||||||
|
@ -1552,11 +1466,7 @@ int CMenus::Render()
|
||||||
CUIRect Label, TextBox, Ok, Abort;
|
CUIRect Label, TextBox, Ok, Abort;
|
||||||
|
|
||||||
Box.HSplitBottom(20.f, &Box, &Part);
|
Box.HSplitBottom(20.f, &Box, &Part);
|
||||||
#if defined(__ANDROID__)
|
|
||||||
Box.HSplitBottom(60.f, &Box, &Part);
|
|
||||||
#else
|
|
||||||
Box.HSplitBottom(24.f, &Box, &Part);
|
Box.HSplitBottom(24.f, &Box, &Part);
|
||||||
#endif
|
|
||||||
Part.VMargin(80.0f, &Part);
|
Part.VMargin(80.0f, &Part);
|
||||||
|
|
||||||
Part.VSplitMid(&Abort, &Ok);
|
Part.VSplitMid(&Abort, &Ok);
|
||||||
|
@ -1594,11 +1504,7 @@ int CMenus::Render()
|
||||||
}
|
}
|
||||||
|
|
||||||
Box.HSplitBottom(60.f, &Box, &Part);
|
Box.HSplitBottom(60.f, &Box, &Part);
|
||||||
#if defined(__ANDROID__)
|
|
||||||
Box.HSplitBottom(60.f, &Box, &Part);
|
|
||||||
#else
|
|
||||||
Box.HSplitBottom(24.f, &Box, &Part);
|
Box.HSplitBottom(24.f, &Box, &Part);
|
||||||
#endif
|
|
||||||
|
|
||||||
Part.VSplitLeft(60.0f, 0, &Label);
|
Part.VSplitLeft(60.0f, 0, &Label);
|
||||||
Label.VSplitLeft(120.0f, 0, &TextBox);
|
Label.VSplitLeft(120.0f, 0, &TextBox);
|
||||||
|
@ -1612,11 +1518,7 @@ int CMenus::Render()
|
||||||
{
|
{
|
||||||
CUIRect Yes, No;
|
CUIRect Yes, No;
|
||||||
Box.HSplitBottom(20.f, &Box, &Part);
|
Box.HSplitBottom(20.f, &Box, &Part);
|
||||||
#if defined(__ANDROID__)
|
|
||||||
Box.HSplitBottom(60.f, &Box, &Part);
|
|
||||||
#else
|
|
||||||
Box.HSplitBottom(24.f, &Box, &Part);
|
Box.HSplitBottom(24.f, &Box, &Part);
|
||||||
#endif
|
|
||||||
Part.VMargin(80.0f, &Part);
|
Part.VMargin(80.0f, &Part);
|
||||||
|
|
||||||
Part.VSplitMid(&No, &Yes);
|
Part.VSplitMid(&No, &Yes);
|
||||||
|
@ -1647,11 +1549,7 @@ int CMenus::Render()
|
||||||
CUIRect Label, TextBox;
|
CUIRect Label, TextBox;
|
||||||
|
|
||||||
Box.HSplitBottom(20.f, &Box, &Part);
|
Box.HSplitBottom(20.f, &Box, &Part);
|
||||||
#if defined(__ANDROID__)
|
|
||||||
Box.HSplitBottom(60.f, &Box, &Part);
|
|
||||||
#else
|
|
||||||
Box.HSplitBottom(24.f, &Box, &Part);
|
Box.HSplitBottom(24.f, &Box, &Part);
|
||||||
#endif
|
|
||||||
Part.VMargin(80.0f, &Part);
|
Part.VMargin(80.0f, &Part);
|
||||||
|
|
||||||
static int s_EnterButton = 0;
|
static int s_EnterButton = 0;
|
||||||
|
@ -1662,21 +1560,13 @@ int CMenus::Render()
|
||||||
}
|
}
|
||||||
|
|
||||||
Box.HSplitBottom(20.f, &Box, &Part);
|
Box.HSplitBottom(20.f, &Box, &Part);
|
||||||
#if defined(__ANDROID__)
|
|
||||||
Box.HSplitBottom(60.f, &Box, &Part);
|
|
||||||
#else
|
|
||||||
Box.HSplitBottom(24.f, &Box, &Part);
|
Box.HSplitBottom(24.f, &Box, &Part);
|
||||||
#endif
|
|
||||||
|
|
||||||
Part.VSplitLeft(60.0f, 0, &Part);
|
Part.VSplitLeft(60.0f, 0, &Part);
|
||||||
if(DoButton_CheckBox(&g_Config.m_BrIndicateFinished, Localize("Show DDNet map finishes in server browser\n(transmits your player name to info.ddnet.tw)"), g_Config.m_BrIndicateFinished, &Part))
|
if(DoButton_CheckBox(&g_Config.m_BrIndicateFinished, Localize("Show DDNet map finishes in server browser\n(transmits your player name to info.ddnet.tw)"), g_Config.m_BrIndicateFinished, &Part))
|
||||||
g_Config.m_BrIndicateFinished ^= 1;
|
g_Config.m_BrIndicateFinished ^= 1;
|
||||||
|
|
||||||
#if defined(__ANDROID__)
|
|
||||||
Box.HSplitBottom(60.f, &Box, &Part);
|
|
||||||
#else
|
|
||||||
Box.HSplitBottom(24.f, &Box, &Part);
|
Box.HSplitBottom(24.f, &Box, &Part);
|
||||||
#endif
|
|
||||||
|
|
||||||
Part.VSplitLeft(60.0f, 0, &Label);
|
Part.VSplitLeft(60.0f, 0, &Label);
|
||||||
Label.VSplitLeft(100.0f, 0, &TextBox);
|
Label.VSplitLeft(100.0f, 0, &TextBox);
|
||||||
|
@ -1689,11 +1579,7 @@ int CMenus::Render()
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Box.HSplitBottom(20.f, &Box, &Part);
|
Box.HSplitBottom(20.f, &Box, &Part);
|
||||||
#if defined(__ANDROID__)
|
|
||||||
Box.HSplitBottom(60.f, &Box, &Part);
|
|
||||||
#else
|
|
||||||
Box.HSplitBottom(24.f, &Box, &Part);
|
Box.HSplitBottom(24.f, &Box, &Part);
|
||||||
#endif
|
|
||||||
Part.VMargin(120.0f, &Part);
|
Part.VMargin(120.0f, &Part);
|
||||||
|
|
||||||
static int s_Button = 0;
|
static int s_Button = 0;
|
||||||
|
@ -1717,9 +1603,6 @@ void CMenus::SetActive(bool Active)
|
||||||
if(Active != m_MenuActive)
|
if(Active != m_MenuActive)
|
||||||
Input()->SetIMEState(Active);
|
Input()->SetIMEState(Active);
|
||||||
m_MenuActive = Active;
|
m_MenuActive = Active;
|
||||||
#if defined(__ANDROID__)
|
|
||||||
UI()->AndroidShowScreenKeys(!m_MenuActive && !m_pClient->m_pControls->m_UsingGamepad);
|
|
||||||
#endif
|
|
||||||
if(!m_MenuActive)
|
if(!m_MenuActive)
|
||||||
{
|
{
|
||||||
if(m_NeedSendinfo)
|
if(m_NeedSendinfo)
|
||||||
|
@ -1756,10 +1639,6 @@ bool CMenus::OnMouseMove(float x, float y)
|
||||||
if(!m_MenuActive)
|
if(!m_MenuActive)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
#if defined(__ANDROID__) // No relative mouse on Android
|
|
||||||
m_MousePos.x = x;
|
|
||||||
m_MousePos.y = y;
|
|
||||||
#else
|
|
||||||
UI()->ConvertMouseMove(&x, &y);
|
UI()->ConvertMouseMove(&x, &y);
|
||||||
if(m_MouseSlow)
|
if(m_MouseSlow)
|
||||||
{
|
{
|
||||||
|
@ -1771,7 +1650,6 @@ bool CMenus::OnMouseMove(float x, float y)
|
||||||
m_MousePos.x += x;
|
m_MousePos.x += x;
|
||||||
m_MousePos.y += y;
|
m_MousePos.y += y;
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
m_MousePos.x = clamp(m_MousePos.x, 0.f, (float)Graphics()->ScreenWidth());
|
m_MousePos.x = clamp(m_MousePos.x, 0.f, (float)Graphics()->ScreenWidth());
|
||||||
m_MousePos.y = clamp(m_MousePos.y, 0.f, (float)Graphics()->ScreenHeight());
|
m_MousePos.y = clamp(m_MousePos.y, 0.f, (float)Graphics()->ScreenHeight());
|
||||||
|
|
||||||
|
@ -1914,14 +1792,7 @@ void CMenus::OnRender()
|
||||||
if(Input()->KeyIsPressed(KEY_MOUSE_3)) Buttons |= 4;
|
if(Input()->KeyIsPressed(KEY_MOUSE_3)) Buttons |= 4;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if defined(__ANDROID__)
|
|
||||||
static int ButtonsOneFrameDelay = 0; // For Android touch input
|
|
||||||
|
|
||||||
UI()->Update(mx,my,mx*3.0f,my*3.0f,ButtonsOneFrameDelay);
|
|
||||||
ButtonsOneFrameDelay = Buttons;
|
|
||||||
#else
|
|
||||||
UI()->Update(mx,my,mx*3.0f,my*3.0f,Buttons);
|
UI()->Update(mx,my,mx*3.0f,my*3.0f,Buttons);
|
||||||
#endif
|
|
||||||
|
|
||||||
// render
|
// render
|
||||||
if(Client()->State() != IClient::STATE_DEMOPLAYBACK)
|
if(Client()->State() != IClient::STATE_DEMOPLAYBACK)
|
||||||
|
|
|
@ -73,9 +73,6 @@ void CMenus::RenderServerbrowserServerList(CUIRect View)
|
||||||
{COL_PLAYERS, IServerBrowser::SORT_NUMPLAYERS, "Players", 1, 60.0f, 0, {0}, {0}},
|
{COL_PLAYERS, IServerBrowser::SORT_NUMPLAYERS, "Players", 1, 60.0f, 0, {0}, {0}},
|
||||||
{-1, -1, " ", 1, 10.0f, 0, {0}, {0}},
|
{-1, -1, " ", 1, 10.0f, 0, {0}, {0}},
|
||||||
{COL_PING, IServerBrowser::SORT_PING, "Ping", 1, 40.0f, FIXED, {0}, {0}},
|
{COL_PING, IServerBrowser::SORT_PING, "Ping", 1, 40.0f, FIXED, {0}, {0}},
|
||||||
#if defined(__ANDROID__)
|
|
||||||
{-1, -1, " ", 1, 50.0f, 0, {0}, {0}}, // Scrollbar
|
|
||||||
#endif
|
|
||||||
};
|
};
|
||||||
// This is just for scripts/update_localization.py to work correctly (all other strings are already Localize()'d somewhere else). Don't remove!
|
// This is just for scripts/update_localization.py to work correctly (all other strings are already Localize()'d somewhere else). Don't remove!
|
||||||
// Localize("Type");
|
// Localize("Type");
|
||||||
|
@ -131,11 +128,7 @@ void CMenus::RenderServerbrowserServerList(CUIRect View)
|
||||||
RenderTools()->DrawUIRect(&View, vec4(0,0,0,0.15f), 0, 0);
|
RenderTools()->DrawUIRect(&View, vec4(0,0,0,0.15f), 0, 0);
|
||||||
|
|
||||||
CUIRect Scroll;
|
CUIRect Scroll;
|
||||||
#if defined(__ANDROID__)
|
|
||||||
View.VSplitRight(50, &View, &Scroll);
|
|
||||||
#else
|
|
||||||
View.VSplitRight(15, &View, &Scroll);
|
View.VSplitRight(15, &View, &Scroll);
|
||||||
#endif
|
|
||||||
|
|
||||||
int NumServers = ServerBrowser()->NumSortedServers();
|
int NumServers = ServerBrowser()->NumSortedServers();
|
||||||
|
|
||||||
|
@ -481,11 +474,7 @@ void CMenus::RenderServerbrowserServerList(CUIRect View)
|
||||||
// select the new server
|
// select the new server
|
||||||
const CServerInfo *pItem = ServerBrowser()->SortedGet(NewSelected);
|
const CServerInfo *pItem = ServerBrowser()->SortedGet(NewSelected);
|
||||||
str_copy(g_Config.m_UiServerAddress, pItem->m_aAddress, sizeof(g_Config.m_UiServerAddress));
|
str_copy(g_Config.m_UiServerAddress, pItem->m_aAddress, sizeof(g_Config.m_UiServerAddress));
|
||||||
#if defined(__ANDROID__)
|
|
||||||
if(DoubleClicked)
|
|
||||||
#else
|
|
||||||
if(Input()->MouseDoubleClick() && DoubleClicked)
|
if(Input()->MouseDoubleClick() && DoubleClicked)
|
||||||
#endif
|
|
||||||
Client()->Connect(g_Config.m_UiServerAddress);
|
Client()->Connect(g_Config.m_UiServerAddress);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1124,11 +1113,7 @@ void CMenus::RenderServerbrowserFriends(CUIRect View)
|
||||||
static float s_ScrollValue = 0;
|
static float s_ScrollValue = 0;
|
||||||
if(m_FriendlistSelectedIndex >= m_lFriends.size())
|
if(m_FriendlistSelectedIndex >= m_lFriends.size())
|
||||||
m_FriendlistSelectedIndex = m_lFriends.size()-1;
|
m_FriendlistSelectedIndex = m_lFriends.size()-1;
|
||||||
#if defined(__ANDROID__)
|
|
||||||
UiDoListboxStart(&m_lFriends, &List, 50.0f, "", "", m_lFriends.size(), 1, m_FriendlistSelectedIndex, s_ScrollValue);
|
|
||||||
#else
|
|
||||||
UiDoListboxStart(&m_lFriends, &List, 30.0f, "", "", m_lFriends.size(), 1, m_FriendlistSelectedIndex, s_ScrollValue);
|
UiDoListboxStart(&m_lFriends, &List, 30.0f, "", "", m_lFriends.size(), 1, m_FriendlistSelectedIndex, s_ScrollValue);
|
||||||
#endif
|
|
||||||
|
|
||||||
m_lFriends.sort_range();
|
m_lFriends.sort_range();
|
||||||
for(int i = 0; i < m_lFriends.size(); ++i)
|
for(int i = 0; i < m_lFriends.size(); ++i)
|
||||||
|
|
|
@ -80,11 +80,7 @@ void CMenus::RenderDemoPlayer(CUIRect MainView)
|
||||||
CUIRect Box, Part, Part2;
|
CUIRect Box, Part, Part2;
|
||||||
Box = Screen;
|
Box = Screen;
|
||||||
Box.VMargin(150.0f/UI()->Scale(), &Box);
|
Box.VMargin(150.0f/UI()->Scale(), &Box);
|
||||||
#if defined(__ANDROID__)
|
|
||||||
Box.HMargin(100.0f/UI()->Scale(), &Box);
|
|
||||||
#else
|
|
||||||
Box.HMargin(150.0f/UI()->Scale(), &Box);
|
Box.HMargin(150.0f/UI()->Scale(), &Box);
|
||||||
#endif
|
|
||||||
|
|
||||||
// render the box
|
// render the box
|
||||||
RenderTools()->DrawUIRect(&Box, vec4(0,0,0,0.5f), CUI::CORNER_ALL, 15.0f);
|
RenderTools()->DrawUIRect(&Box, vec4(0,0,0,0.5f), CUI::CORNER_ALL, 15.0f);
|
||||||
|
@ -101,11 +97,7 @@ void CMenus::RenderDemoPlayer(CUIRect MainView)
|
||||||
CUIRect Label, TextBox, Ok, Abort;
|
CUIRect Label, TextBox, Ok, Abort;
|
||||||
|
|
||||||
Box.HSplitBottom(20.f, &Box, &Part);
|
Box.HSplitBottom(20.f, &Box, &Part);
|
||||||
#if defined(__ANDROID__)
|
|
||||||
Box.HSplitBottom(60.f, &Box, &Part);
|
|
||||||
#else
|
|
||||||
Box.HSplitBottom(24.f, &Box, &Part);
|
Box.HSplitBottom(24.f, &Box, &Part);
|
||||||
#endif
|
|
||||||
Part.VMargin(80.0f, &Part);
|
Part.VMargin(80.0f, &Part);
|
||||||
|
|
||||||
Part.VSplitMid(&Abort, &Ok);
|
Part.VSplitMid(&Abort, &Ok);
|
||||||
|
@ -149,13 +141,8 @@ void CMenus::RenderDemoPlayer(CUIRect MainView)
|
||||||
|
|
||||||
Box.HSplitBottom(60.f, &Box, &Part);
|
Box.HSplitBottom(60.f, &Box, &Part);
|
||||||
Box.HSplitBottom(60.f, &Box, &Part2);
|
Box.HSplitBottom(60.f, &Box, &Part2);
|
||||||
#if defined(__ANDROID__)
|
|
||||||
Box.HSplitBottom(60.f, &Box, &Part2);
|
|
||||||
Box.HSplitBottom(60.f, &Box, &Part);
|
|
||||||
#else
|
|
||||||
Box.HSplitBottom(24.f, &Box, &Part2);
|
Box.HSplitBottom(24.f, &Box, &Part2);
|
||||||
Box.HSplitBottom(24.f, &Box, &Part);
|
Box.HSplitBottom(24.f, &Box, &Part);
|
||||||
#endif
|
|
||||||
|
|
||||||
Part2.VSplitLeft(60.0f, 0, &Label);
|
Part2.VSplitLeft(60.0f, 0, &Label);
|
||||||
if(DoButton_CheckBox(&s_RemoveChat, Localize("Remove chat"), s_RemoveChat, &Label))
|
if(DoButton_CheckBox(&s_RemoveChat, Localize("Remove chat"), s_RemoveChat, &Label))
|
||||||
|
@ -479,11 +466,7 @@ void CMenus::UiDoListboxStart(const void *pID, const CUIRect *pRect, float RowHe
|
||||||
RenderTools()->DrawUIRect(&View, vec4(0,0,0,0.15f), 0, 0);
|
RenderTools()->DrawUIRect(&View, vec4(0,0,0,0.15f), 0, 0);
|
||||||
|
|
||||||
// prepare the scroll
|
// prepare the scroll
|
||||||
#if defined(__ANDROID__)
|
|
||||||
View.VSplitRight(50, &View, &Scroll);
|
|
||||||
#else
|
|
||||||
View.VSplitRight(15, &View, &Scroll);
|
View.VSplitRight(15, &View, &Scroll);
|
||||||
#endif
|
|
||||||
|
|
||||||
// setup the variables
|
// setup the variables
|
||||||
gs_ListBoxOriginalView = View;
|
gs_ListBoxOriginalView = View;
|
||||||
|
@ -982,11 +965,7 @@ void CMenus::RenderDemoList(CUIRect MainView)
|
||||||
|
|
||||||
// scrollbar
|
// scrollbar
|
||||||
CUIRect Scroll;
|
CUIRect Scroll;
|
||||||
#if defined(__ANDROID__)
|
|
||||||
ListBox.VSplitRight(50, &ListBox, &Scroll);
|
|
||||||
#else
|
|
||||||
ListBox.VSplitRight(15, &ListBox, &Scroll);
|
ListBox.VSplitRight(15, &ListBox, &Scroll);
|
||||||
#endif
|
|
||||||
|
|
||||||
int Num = (int)(ListBox.h/s_aCols[0].m_Rect.h) + 1;
|
int Num = (int)(ListBox.h/s_aCols[0].m_Rect.h) + 1;
|
||||||
static int s_ScrollBar = 0;
|
static int s_ScrollBar = 0;
|
||||||
|
@ -1062,9 +1041,6 @@ void CMenus::RenderDemoList(CUIRect MainView)
|
||||||
ListBox.y -= s_ScrollValue*ScrollNum*s_aCols[0].m_Rect.h;
|
ListBox.y -= s_ScrollValue*ScrollNum*s_aCols[0].m_Rect.h;
|
||||||
|
|
||||||
int NewSelected = -1;
|
int NewSelected = -1;
|
||||||
#if defined(__ANDROID__)
|
|
||||||
int DoubleClicked = 0;
|
|
||||||
#endif
|
|
||||||
int ItemIndex = -1;
|
int ItemIndex = -1;
|
||||||
|
|
||||||
for(sorted_array<CDemoItem>::range r = m_lDemos.all(); !r.empty(); r.pop_front())
|
for(sorted_array<CDemoItem>::range r = m_lDemos.all(); !r.empty(); r.pop_front())
|
||||||
|
@ -1103,11 +1079,6 @@ void CMenus::RenderDemoList(CUIRect MainView)
|
||||||
NewSelected = ItemIndex;
|
NewSelected = ItemIndex;
|
||||||
str_copy(g_Config.m_UiDemoSelected, r.front().m_aName, sizeof(g_Config.m_UiDemoSelected));
|
str_copy(g_Config.m_UiDemoSelected, r.front().m_aName, sizeof(g_Config.m_UiDemoSelected));
|
||||||
DemolistOnUpdate(false);
|
DemolistOnUpdate(false);
|
||||||
#if defined(__ANDROID__)
|
|
||||||
if(NewSelected == m_DoubleClickIndex)
|
|
||||||
DoubleClicked = 1;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
m_DoubleClickIndex = NewSelected;
|
m_DoubleClickIndex = NewSelected;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1170,11 +1141,7 @@ void CMenus::RenderDemoList(CUIRect MainView)
|
||||||
|
|
||||||
bool Activated = false;
|
bool Activated = false;
|
||||||
|
|
||||||
#if defined(__ANDROID__)
|
|
||||||
if(m_EnterPressed || (DoubleClicked && UI()->HotItem() == m_lDemos[m_DemolistSelectedIndex].m_aName))
|
|
||||||
#else
|
|
||||||
if(m_EnterPressed || (Input()->MouseDoubleClick() && UI()->HotItem() == m_lDemos[m_DemolistSelectedIndex].m_aName))
|
if(m_EnterPressed || (Input()->MouseDoubleClick() && UI()->HotItem() == m_lDemos[m_DemolistSelectedIndex].m_aName))
|
||||||
#endif
|
|
||||||
{
|
{
|
||||||
UI()->SetActiveItem(0);
|
UI()->SetActiveItem(0);
|
||||||
Activated = true;
|
Activated = true;
|
||||||
|
|
|
@ -33,20 +33,12 @@
|
||||||
void CMenus::RenderGame(CUIRect MainView)
|
void CMenus::RenderGame(CUIRect MainView)
|
||||||
{
|
{
|
||||||
CUIRect Button, ButtonBar;
|
CUIRect Button, ButtonBar;
|
||||||
#if defined(__ANDROID__)
|
|
||||||
MainView.HSplitTop(100.0f, &ButtonBar, &MainView);
|
|
||||||
#else
|
|
||||||
MainView.HSplitTop(45.0f, &ButtonBar, &MainView);
|
MainView.HSplitTop(45.0f, &ButtonBar, &MainView);
|
||||||
#endif
|
|
||||||
RenderTools()->DrawUIRect(&ButtonBar, ms_ColorTabbarActive, CUI::CORNER_B, 10.0f);
|
RenderTools()->DrawUIRect(&ButtonBar, ms_ColorTabbarActive, CUI::CORNER_B, 10.0f);
|
||||||
|
|
||||||
// button bar
|
// button bar
|
||||||
ButtonBar.HSplitTop(10.0f, 0, &ButtonBar);
|
ButtonBar.HSplitTop(10.0f, 0, &ButtonBar);
|
||||||
#if defined(__ANDROID__)
|
|
||||||
ButtonBar.HSplitTop(80.0f, &ButtonBar, 0);
|
|
||||||
#else
|
|
||||||
ButtonBar.HSplitTop(25.0f, &ButtonBar, 0);
|
ButtonBar.HSplitTop(25.0f, &ButtonBar, 0);
|
||||||
#endif
|
|
||||||
ButtonBar.VMargin(10.0f, &ButtonBar);
|
ButtonBar.VMargin(10.0f, &ButtonBar);
|
||||||
|
|
||||||
ButtonBar.VSplitRight(120.0f, &ButtonBar, &Button);
|
ButtonBar.VSplitRight(120.0f, &ButtonBar, &Button);
|
||||||
|
@ -219,11 +211,7 @@ void CMenus::RenderPlayers(CUIRect MainView)
|
||||||
static float s_ScrollValue = 0;
|
static float s_ScrollValue = 0;
|
||||||
CUIRect List = Options;
|
CUIRect List = Options;
|
||||||
//List.HSplitTop(28.0f, 0, &List);
|
//List.HSplitTop(28.0f, 0, &List);
|
||||||
#if defined(__ANDROID__)
|
|
||||||
UiDoListboxStart(&s_VoteList, &List, 50.0f, "", "", TotalPlayers, 1, -1, s_ScrollValue);
|
|
||||||
#else
|
|
||||||
UiDoListboxStart(&s_VoteList, &List, 24.0f, "", "", TotalPlayers, 1, -1, s_ScrollValue);
|
UiDoListboxStart(&s_VoteList, &List, 24.0f, "", "", TotalPlayers, 1, -1, s_ScrollValue);
|
||||||
#endif
|
|
||||||
|
|
||||||
// options
|
// options
|
||||||
static int s_aPlayerIDs[MAX_CLIENTS][2] = {{0}};
|
static int s_aPlayerIDs[MAX_CLIENTS][2] = {{0}};
|
||||||
|
@ -481,11 +469,7 @@ bool CMenus::RenderServerControlServer(CUIRect MainView)
|
||||||
TotalShown++;
|
TotalShown++;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if defined(__ANDROID__)
|
|
||||||
UiDoListboxStart(&s_VoteList, &List, 50.0f, "", "", TotalShown, 1, s_CurVoteOption, s_ScrollValue);
|
|
||||||
#else
|
|
||||||
UiDoListboxStart(&s_VoteList, &List, 24.0f, "", "", TotalShown, 1, s_CurVoteOption, s_ScrollValue);
|
UiDoListboxStart(&s_VoteList, &List, 24.0f, "", "", TotalShown, 1, s_CurVoteOption, s_ScrollValue);
|
||||||
#endif
|
|
||||||
|
|
||||||
int i = -1;
|
int i = -1;
|
||||||
for(CVoteOptionClient *pOption = m_pClient->m_pVoting->m_pFirst; pOption; pOption = pOption->m_pNext)
|
for(CVoteOptionClient *pOption = m_pClient->m_pVoting->m_pFirst; pOption; pOption = pOption->m_pNext)
|
||||||
|
@ -536,11 +520,7 @@ bool CMenus::RenderServerControlKick(CUIRect MainView, bool FilterSpectators)
|
||||||
static int s_VoteList = 0;
|
static int s_VoteList = 0;
|
||||||
static float s_ScrollValue = 0;
|
static float s_ScrollValue = 0;
|
||||||
CUIRect List = MainView;
|
CUIRect List = MainView;
|
||||||
#if defined(__ANDROID__)
|
|
||||||
UiDoListboxStart(&s_VoteList, &List, 50.0f, "", "", NumOptions, 1, Selected, s_ScrollValue);
|
|
||||||
#else
|
|
||||||
UiDoListboxStart(&s_VoteList, &List, 24.0f, "", "", NumOptions, 1, Selected, s_ScrollValue);
|
UiDoListboxStart(&s_VoteList, &List, 24.0f, "", "", NumOptions, 1, Selected, s_ScrollValue);
|
||||||
#endif
|
|
||||||
|
|
||||||
for(int i = 0; i < NumOptions; i++)
|
for(int i = 0; i < NumOptions; i++)
|
||||||
{
|
{
|
||||||
|
@ -569,24 +549,12 @@ void CMenus::RenderServerControl(CUIRect MainView)
|
||||||
|
|
||||||
// render background
|
// render background
|
||||||
CUIRect Bottom, Extended, TabBar, Button;
|
CUIRect Bottom, Extended, TabBar, Button;
|
||||||
#if defined(__ANDROID__)
|
|
||||||
MainView.HSplitTop(50.0f, &Bottom, &MainView);
|
|
||||||
#else
|
|
||||||
MainView.HSplitTop(20.0f, &Bottom, &MainView);
|
MainView.HSplitTop(20.0f, &Bottom, &MainView);
|
||||||
#endif
|
|
||||||
RenderTools()->DrawUIRect(&Bottom, ms_ColorTabbarActive, 0, 10.0f);
|
RenderTools()->DrawUIRect(&Bottom, ms_ColorTabbarActive, 0, 10.0f);
|
||||||
#if defined(__ANDROID__)
|
|
||||||
MainView.HSplitTop(50.0f, &TabBar, &MainView);
|
|
||||||
#else
|
|
||||||
MainView.HSplitTop(20.0f, &TabBar, &MainView);
|
MainView.HSplitTop(20.0f, &TabBar, &MainView);
|
||||||
#endif
|
|
||||||
RenderTools()->DrawUIRect(&MainView, ms_ColorTabbarActive, CUI::CORNER_B, 10.0f);
|
RenderTools()->DrawUIRect(&MainView, ms_ColorTabbarActive, CUI::CORNER_B, 10.0f);
|
||||||
MainView.Margin(10.0f, &MainView);
|
MainView.Margin(10.0f, &MainView);
|
||||||
#if defined(__ANDROID__)
|
|
||||||
MainView.HSplitBottom(10.0f, &MainView, &Extended);
|
|
||||||
#else
|
|
||||||
MainView.HSplitBottom(90.0f, &MainView, &Extended);
|
MainView.HSplitBottom(90.0f, &MainView, &Extended);
|
||||||
#endif
|
|
||||||
|
|
||||||
// tab bar
|
// tab bar
|
||||||
{
|
{
|
||||||
|
|
|
@ -1317,11 +1317,7 @@ void CMenus::RenderLanguageSelection(CUIRect MainView)
|
||||||
|
|
||||||
int OldSelected = s_SelectedLanguage;
|
int OldSelected = s_SelectedLanguage;
|
||||||
|
|
||||||
#if defined(__ANDROID__)
|
|
||||||
UiDoListboxStart(&s_LanguageList , &MainView, 50.0f, Localize("Language"), "", s_Languages.size(), 1, s_SelectedLanguage, s_ScrollValue);
|
|
||||||
#else
|
|
||||||
UiDoListboxStart(&s_LanguageList , &MainView, 24.0f, Localize("Language"), "", s_Languages.size(), 1, s_SelectedLanguage, s_ScrollValue);
|
UiDoListboxStart(&s_LanguageList , &MainView, 24.0f, Localize("Language"), "", s_Languages.size(), 1, s_SelectedLanguage, s_ScrollValue);
|
||||||
#endif
|
|
||||||
|
|
||||||
for(sorted_array<CLanguage>::range r = s_Languages.all(); !r.empty(); r.pop_front())
|
for(sorted_array<CLanguage>::range r = s_Languages.all(); !r.empty(); r.pop_front())
|
||||||
{
|
{
|
||||||
|
|
|
@ -152,18 +152,8 @@ bool CSpectator::OnMouseMove(float x, float y)
|
||||||
if(!m_Active)
|
if(!m_Active)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
#if defined(__ANDROID__) // No relative mouse on Android
|
|
||||||
m_SelectorMouse = vec2(x,y);
|
|
||||||
if( m_OldMouseX != x || m_OldMouseY != y )
|
|
||||||
{
|
|
||||||
m_OldMouseX = x;
|
|
||||||
m_OldMouseY = y;
|
|
||||||
m_SelectorMouse = vec2((x - Graphics()->ScreenWidth()/2), (y - Graphics()->ScreenHeight()/2));
|
|
||||||
}
|
|
||||||
#else
|
|
||||||
UI()->ConvertMouseMove(&x, &y);
|
UI()->ConvertMouseMove(&x, &y);
|
||||||
m_SelectorMouse += vec2(x,y);
|
m_SelectorMouse += vec2(x,y);
|
||||||
#endif
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -128,7 +128,7 @@ void CGameClient::OnConsoleInit()
|
||||||
m_pEditor = Kernel()->RequestInterface<IEditor>();
|
m_pEditor = Kernel()->RequestInterface<IEditor>();
|
||||||
m_pFriends = Kernel()->RequestInterface<IFriends>();
|
m_pFriends = Kernel()->RequestInterface<IFriends>();
|
||||||
m_pFoes = Client()->Foes();
|
m_pFoes = Client()->Foes();
|
||||||
#if defined(CONF_FAMILY_WINDOWS) || (defined(CONF_PLATFORM_LINUX) && !defined(__ANDROID__))
|
#if defined(CONF_FAMILY_WINDOWS) || defined(CONF_PLATFORM_LINUX)
|
||||||
m_pUpdater = Kernel()->RequestInterface<IUpdater>();
|
m_pUpdater = Kernel()->RequestInterface<IUpdater>();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -306,10 +306,6 @@ void CGameClient::OnInit()
|
||||||
g_GameClient.m_pMenus->RenderLoading();
|
g_GameClient.m_pMenus->RenderLoading();
|
||||||
}
|
}
|
||||||
|
|
||||||
#if defined(__ANDROID__)
|
|
||||||
m_pMapimages->OnMapLoad(); // Reload map textures on Android
|
|
||||||
#endif
|
|
||||||
|
|
||||||
for(int i = 0; i < m_All.m_Num; i++)
|
for(int i = 0; i < m_All.m_Num; i++)
|
||||||
m_All.m_paComponents[i]->OnReset();
|
m_All.m_paComponents[i]->OnReset();
|
||||||
|
|
||||||
|
@ -356,9 +352,7 @@ void CGameClient::OnUpdate()
|
||||||
// handle mouse movement
|
// handle mouse movement
|
||||||
float x = 0.0f, y = 0.0f;
|
float x = 0.0f, y = 0.0f;
|
||||||
Input()->MouseRelative(&x, &y);
|
Input()->MouseRelative(&x, &y);
|
||||||
#if !defined(__ANDROID__) // No relative mouse on Android
|
|
||||||
if(x != 0.0f || y != 0.0f)
|
if(x != 0.0f || y != 0.0f)
|
||||||
#endif
|
|
||||||
{
|
{
|
||||||
for(int h = 0; h < m_Input.m_Num; h++)
|
for(int h = 0; h < m_Input.m_Num; h++)
|
||||||
{
|
{
|
||||||
|
|
|
@ -8,10 +8,6 @@
|
||||||
#include <engine/textrender.h>
|
#include <engine/textrender.h>
|
||||||
#include "ui.h"
|
#include "ui.h"
|
||||||
|
|
||||||
#if defined(__ANDROID__)
|
|
||||||
#include <SDL_screenkeyboard.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/********************************************************
|
/********************************************************
|
||||||
UI
|
UI
|
||||||
*********************************************************/
|
*********************************************************/
|
||||||
|
@ -60,131 +56,9 @@ int CUI::MouseInside(const CUIRect *r)
|
||||||
|
|
||||||
void CUI::ConvertMouseMove(float *x, float *y)
|
void CUI::ConvertMouseMove(float *x, float *y)
|
||||||
{
|
{
|
||||||
#if defined(__ANDROID__)
|
|
||||||
//*x = *x * 500 / g_Config.m_GfxScreenWidth;
|
|
||||||
//*y = *y * 500 / g_Config.m_GfxScreenHeight;
|
|
||||||
#else
|
|
||||||
float Fac = (float)(g_Config.m_UiMousesens)/g_Config.m_InpMousesens;
|
float Fac = (float)(g_Config.m_UiMousesens)/g_Config.m_InpMousesens;
|
||||||
*x = *x*Fac;
|
*x = *x*Fac;
|
||||||
*y = *y*Fac;
|
*y = *y*Fac;
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
void CUI::AndroidShowScreenKeys(bool shown)
|
|
||||||
{
|
|
||||||
#if defined(__ANDROID__)
|
|
||||||
static bool ScreenKeyboardInitialized = false;
|
|
||||||
static bool ScreenKeyboardShown = true;
|
|
||||||
static SDL_Rect Buttons[SDL_ANDROID_SCREENKEYBOARD_BUTTON_NUM];
|
|
||||||
static SDL_Rect ButtonHidden = { 0, 0, 0, 0 };
|
|
||||||
if( !ScreenKeyboardInitialized )
|
|
||||||
{
|
|
||||||
ScreenKeyboardInitialized = true;
|
|
||||||
|
|
||||||
for( int i = 0; i < SDL_ANDROID_SCREENKEYBOARD_BUTTON_NUM; i++ )
|
|
||||||
SDL_ANDROID_GetScreenKeyboardButtonPos( i, &Buttons[i] );
|
|
||||||
|
|
||||||
if( !SDL_ANDROID_GetScreenKeyboardRedefinedByUser() )
|
|
||||||
{
|
|
||||||
int ScreenW = Buttons[SDL_ANDROID_SCREENKEYBOARD_BUTTON_DPAD2].x +
|
|
||||||
Buttons[SDL_ANDROID_SCREENKEYBOARD_BUTTON_DPAD2].w;
|
|
||||||
int ScreenH = Buttons[SDL_ANDROID_SCREENKEYBOARD_BUTTON_DPAD2].y +
|
|
||||||
Buttons[SDL_ANDROID_SCREENKEYBOARD_BUTTON_DPAD2].h;
|
|
||||||
// Hide Hook button(it was above Weapnext)
|
|
||||||
Buttons[SDL_ANDROID_SCREENKEYBOARD_BUTTON_0].x =
|
|
||||||
Buttons[SDL_ANDROID_SCREENKEYBOARD_BUTTON_1].x;
|
|
||||||
Buttons[SDL_ANDROID_SCREENKEYBOARD_BUTTON_0].y =
|
|
||||||
Buttons[SDL_ANDROID_SCREENKEYBOARD_BUTTON_1].y -
|
|
||||||
Buttons[SDL_ANDROID_SCREENKEYBOARD_BUTTON_0].h;
|
|
||||||
Buttons[SDL_ANDROID_SCREENKEYBOARD_BUTTON_0].w = 0;
|
|
||||||
Buttons[SDL_ANDROID_SCREENKEYBOARD_BUTTON_0].h = 0;
|
|
||||||
// Hide Weapprev button
|
|
||||||
Buttons[SDL_ANDROID_SCREENKEYBOARD_BUTTON_2].x =
|
|
||||||
Buttons[SDL_ANDROID_SCREENKEYBOARD_BUTTON_0].x;
|
|
||||||
Buttons[SDL_ANDROID_SCREENKEYBOARD_BUTTON_2].y =
|
|
||||||
Buttons[SDL_ANDROID_SCREENKEYBOARD_BUTTON_1].y -
|
|
||||||
Buttons[SDL_ANDROID_SCREENKEYBOARD_BUTTON_2].h;
|
|
||||||
Buttons[SDL_ANDROID_SCREENKEYBOARD_BUTTON_2].w = 0;
|
|
||||||
Buttons[SDL_ANDROID_SCREENKEYBOARD_BUTTON_2].h = 0;
|
|
||||||
// Scores button above left joystick
|
|
||||||
Buttons[SDL_ANDROID_SCREENKEYBOARD_BUTTON_3].x = 0;
|
|
||||||
Buttons[SDL_ANDROID_SCREENKEYBOARD_BUTTON_3].y =
|
|
||||||
Buttons[SDL_ANDROID_SCREENKEYBOARD_BUTTON_DPAD].y -
|
|
||||||
Buttons[SDL_ANDROID_SCREENKEYBOARD_BUTTON_3].h * 2.0f;
|
|
||||||
// Text input button above scores
|
|
||||||
//Buttons[SDL_ANDROID_SCREENKEYBOARD_BUTTON_TEXT].w =
|
|
||||||
// Buttons[SDL_ANDROID_SCREENKEYBOARD_BUTTON_3].w;
|
|
||||||
//Buttons[SDL_ANDROID_SCREENKEYBOARD_BUTTON_TEXT].h =
|
|
||||||
// Buttons[SDL_ANDROID_SCREENKEYBOARD_BUTTON_3].h;
|
|
||||||
Buttons[SDL_ANDROID_SCREENKEYBOARD_BUTTON_TEXT].x = 0;
|
|
||||||
Buttons[SDL_ANDROID_SCREENKEYBOARD_BUTTON_TEXT].y =
|
|
||||||
Buttons[SDL_ANDROID_SCREENKEYBOARD_BUTTON_3].y -
|
|
||||||
Buttons[SDL_ANDROID_SCREENKEYBOARD_BUTTON_TEXT].h;
|
|
||||||
// Spec next button
|
|
||||||
Buttons[SDL_ANDROID_SCREENKEYBOARD_BUTTON_5].x =
|
|
||||||
ScreenW - Buttons[SDL_ANDROID_SCREENKEYBOARD_BUTTON_4].w;
|
|
||||||
Buttons[SDL_ANDROID_SCREENKEYBOARD_BUTTON_5].y =
|
|
||||||
Buttons[SDL_ANDROID_SCREENKEYBOARD_BUTTON_DPAD2].y -
|
|
||||||
Buttons[SDL_ANDROID_SCREENKEYBOARD_BUTTON_5].h;
|
|
||||||
// Spec prev button
|
|
||||||
Buttons[SDL_ANDROID_SCREENKEYBOARD_BUTTON_4].x =
|
|
||||||
Buttons[SDL_ANDROID_SCREENKEYBOARD_BUTTON_5].x -
|
|
||||||
Buttons[SDL_ANDROID_SCREENKEYBOARD_BUTTON_4].w;
|
|
||||||
Buttons[SDL_ANDROID_SCREENKEYBOARD_BUTTON_4].y =
|
|
||||||
Buttons[SDL_ANDROID_SCREENKEYBOARD_BUTTON_5].y;
|
|
||||||
// Weap next button
|
|
||||||
Buttons[SDL_ANDROID_SCREENKEYBOARD_BUTTON_1].x =
|
|
||||||
ScreenW - Buttons[SDL_ANDROID_SCREENKEYBOARD_BUTTON_1].w;
|
|
||||||
Buttons[SDL_ANDROID_SCREENKEYBOARD_BUTTON_1].y =
|
|
||||||
Buttons[SDL_ANDROID_SCREENKEYBOARD_BUTTON_5].y -
|
|
||||||
Buttons[SDL_ANDROID_SCREENKEYBOARD_BUTTON_1].h;
|
|
||||||
// Bigger joysticks
|
|
||||||
/*
|
|
||||||
Buttons[SDL_ANDROID_SCREENKEYBOARD_BUTTON_DPAD].w *= 1.25;
|
|
||||||
Buttons[SDL_ANDROID_SCREENKEYBOARD_BUTTON_DPAD].h *= 1.25;
|
|
||||||
Buttons[SDL_ANDROID_SCREENKEYBOARD_BUTTON_DPAD].y =
|
|
||||||
ScreenH - Buttons[SDL_ANDROID_SCREENKEYBOARD_BUTTON_DPAD].h;
|
|
||||||
Buttons[SDL_ANDROID_SCREENKEYBOARD_BUTTON_DPAD2].w *= 1.25;
|
|
||||||
Buttons[SDL_ANDROID_SCREENKEYBOARD_BUTTON_DPAD2].h *= 1.25;
|
|
||||||
Buttons[SDL_ANDROID_SCREENKEYBOARD_BUTTON_DPAD2].x =
|
|
||||||
ScreenW - Buttons[SDL_ANDROID_SCREENKEYBOARD_BUTTON_DPAD2].w;
|
|
||||||
Buttons[SDL_ANDROID_SCREENKEYBOARD_BUTTON_DPAD2].y =
|
|
||||||
ScreenH - Buttons[SDL_ANDROID_SCREENKEYBOARD_BUTTON_DPAD2].h;
|
|
||||||
*/
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if( ScreenKeyboardShown == shown )
|
|
||||||
return;
|
|
||||||
ScreenKeyboardShown = shown;
|
|
||||||
for( int i = 0; i < SDL_ANDROID_SCREENKEYBOARD_BUTTON_NUM; i++ )
|
|
||||||
SDL_ANDROID_SetScreenKeyboardButtonPos( i, shown ? &Buttons[i] : &ButtonHidden );
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
void CUI::AndroidShowTextInput(const char *text, const char *hintText)
|
|
||||||
{
|
|
||||||
#if defined(__ANDROID__)
|
|
||||||
SDL_ANDROID_SetScreenKeyboardHintMesage(hintText);
|
|
||||||
SDL_ANDROID_ToggleScreenKeyboardTextInput(text);
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
void CUI::AndroidBlockAndGetTextInput(char *text, int textLength, const char *hintText)
|
|
||||||
{
|
|
||||||
#if defined(__ANDROID__)
|
|
||||||
SDL_ANDROID_SetScreenKeyboardHintMesage(hintText);
|
|
||||||
SDL_ANDROID_GetScreenKeyboardTextInput(text, textLength);
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
bool CUI::AndroidTextInputShown()
|
|
||||||
{
|
|
||||||
#if defined(__ANDROID__)
|
|
||||||
return SDL_IsScreenKeyboardShown(NULL);
|
|
||||||
#else
|
|
||||||
return false;
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
CUIRect *CUI::Screen()
|
CUIRect *CUI::Screen()
|
||||||
|
|
|
@ -96,11 +96,6 @@ public:
|
||||||
// TODO: Refactor: Remove this?
|
// TODO: Refactor: Remove this?
|
||||||
void DoLabel(const CUIRect *pRect, const char *pText, float Size, int Align, int MaxWidth = -1);
|
void DoLabel(const CUIRect *pRect, const char *pText, float Size, int Align, int MaxWidth = -1);
|
||||||
void DoLabelScaled(const CUIRect *pRect, const char *pText, float Size, int Align, int MaxWidth = -1);
|
void DoLabelScaled(const CUIRect *pRect, const char *pText, float Size, int Align, int MaxWidth = -1);
|
||||||
|
|
||||||
void AndroidShowScreenKeys(bool shown);
|
|
||||||
void AndroidShowTextInput(const char *text, const char *hintText);
|
|
||||||
void AndroidBlockAndGetTextInput(char *text, int textLength, const char *hintText);
|
|
||||||
bool AndroidTextInputShown();
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -6141,22 +6141,6 @@ void CEditor::UpdateAndRender()
|
||||||
float rx, ry;
|
float rx, ry;
|
||||||
{
|
{
|
||||||
Input()->MouseRelative(&rx, &ry);
|
Input()->MouseRelative(&rx, &ry);
|
||||||
#if defined(__ANDROID__)
|
|
||||||
float tx, ty;
|
|
||||||
tx = s_MouseX;
|
|
||||||
ty = s_MouseY;
|
|
||||||
|
|
||||||
s_MouseX = (rx / (float)Graphics()->ScreenWidth()) * UI()->Screen()->w;
|
|
||||||
s_MouseY = (ry / (float)Graphics()->ScreenHeight()) * UI()->Screen()->h;
|
|
||||||
|
|
||||||
s_MouseX = clamp(s_MouseX, 0.0f, UI()->Screen()->w);
|
|
||||||
s_MouseY = clamp(s_MouseY, 0.0f, UI()->Screen()->h);
|
|
||||||
|
|
||||||
m_MouseDeltaX = s_MouseX - m_OldMouseX;
|
|
||||||
m_MouseDeltaY = s_MouseY - m_OldMouseY;
|
|
||||||
m_OldMouseX = tx;
|
|
||||||
m_OldMouseY = ty;
|
|
||||||
#else
|
|
||||||
UI()->ConvertMouseMove(&rx, &ry);
|
UI()->ConvertMouseMove(&rx, &ry);
|
||||||
|
|
||||||
// TODO: Why do we have to halve this?
|
// TODO: Why do we have to halve this?
|
||||||
|
@ -6171,7 +6155,6 @@ void CEditor::UpdateAndRender()
|
||||||
s_MouseX = clamp(s_MouseX + rx, 0.0f, UI()->Screen()->w);
|
s_MouseX = clamp(s_MouseX + rx, 0.0f, UI()->Screen()->w);
|
||||||
s_MouseY = clamp(s_MouseY + ry, 0.0f, UI()->Screen()->h);
|
s_MouseY = clamp(s_MouseY + ry, 0.0f, UI()->Screen()->h);
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
// update the ui
|
// update the ui
|
||||||
mx = s_MouseX;
|
mx = s_MouseX;
|
||||||
|
@ -6200,14 +6183,7 @@ void CEditor::UpdateAndRender()
|
||||||
if(Input()->KeyIsPressed(KEY_MOUSE_2)) Buttons |= 2;
|
if(Input()->KeyIsPressed(KEY_MOUSE_2)) Buttons |= 2;
|
||||||
if(Input()->KeyIsPressed(KEY_MOUSE_3)) Buttons |= 4;
|
if(Input()->KeyIsPressed(KEY_MOUSE_3)) Buttons |= 4;
|
||||||
|
|
||||||
#if defined(__ANDROID__)
|
|
||||||
static int ButtonsOneFrameDelay = 0; // For Android touch input
|
|
||||||
|
|
||||||
UI()->Update(mx,my,Mwx,Mwy,ButtonsOneFrameDelay);
|
|
||||||
ButtonsOneFrameDelay = Buttons;
|
|
||||||
#else
|
|
||||||
UI()->Update(mx,my,Mwx,Mwy,Buttons);
|
UI()->Update(mx,my,Mwx,Mwy,Buttons);
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// toggle gui
|
// toggle gui
|
||||||
|
|
|
@ -693,10 +693,6 @@ public:
|
||||||
m_MouseDeltaY = 0;
|
m_MouseDeltaY = 0;
|
||||||
m_MouseDeltaWx = 0;
|
m_MouseDeltaWx = 0;
|
||||||
m_MouseDeltaWy = 0;
|
m_MouseDeltaWy = 0;
|
||||||
#if defined(__ANDROID__)
|
|
||||||
m_OldMouseX = 0;
|
|
||||||
m_OldMouseY = 0;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
m_GuiActive = true;
|
m_GuiActive = true;
|
||||||
m_ProofBorders = false;
|
m_ProofBorders = false;
|
||||||
|
@ -898,10 +894,6 @@ public:
|
||||||
float m_MouseDeltaY;
|
float m_MouseDeltaY;
|
||||||
float m_MouseDeltaWx;
|
float m_MouseDeltaWx;
|
||||||
float m_MouseDeltaWy;
|
float m_MouseDeltaWy;
|
||||||
#if defined(__ANDROID__)
|
|
||||||
float m_OldMouseX;
|
|
||||||
float m_OldMouseY;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
bool m_ShowTileInfo;
|
bool m_ShowTileInfo;
|
||||||
bool m_ShowDetail;
|
bool m_ShowDetail;
|
||||||
|
|
|
@ -22,13 +22,8 @@ MACRO_CONFIG_INT(ClTextEntities, cl_text_entities, 1, 0, 1, CFGFLAG_CLIENT|CFGFL
|
||||||
MACRO_CONFIG_INT(ClAuthedPlayerColor, cl_authed_player_color, 5898183, 0, 0xFFFFFF, CFGFLAG_CLIENT|CFGFLAG_SAVE, "Color of name of authenticated player in scoreboard")
|
MACRO_CONFIG_INT(ClAuthedPlayerColor, cl_authed_player_color, 5898183, 0, 0xFFFFFF, CFGFLAG_CLIENT|CFGFLAG_SAVE, "Color of name of authenticated player in scoreboard")
|
||||||
MACRO_CONFIG_INT(ClSameClanColor, cl_same_clan_color, 5898183, 0, 0xFFFFFF, CFGFLAG_CLIENT|CFGFLAG_SAVE, "Clan color of players with the same clan as you in scoreboard.")
|
MACRO_CONFIG_INT(ClSameClanColor, cl_same_clan_color, 5898183, 0, 0xFFFFFF, CFGFLAG_CLIENT|CFGFLAG_SAVE, "Clan color of players with the same clan as you in scoreboard.")
|
||||||
MACRO_CONFIG_INT(ClEnablePingColor, cl_enable_ping_color, 1, 0, 1, CFGFLAG_CLIENT|CFGFLAG_SAVE, "Whether ping is colored in scoreboard.")
|
MACRO_CONFIG_INT(ClEnablePingColor, cl_enable_ping_color, 1, 0, 1, CFGFLAG_CLIENT|CFGFLAG_SAVE, "Whether ping is colored in scoreboard.")
|
||||||
#if defined(__ANDROID__)
|
|
||||||
MACRO_CONFIG_INT(ClAutoswitchWeapons, cl_autoswitch_weapons, 1, 0, 1, CFGFLAG_CLIENT|CFGFLAG_SAVE, "Auto switch weapon on pickup")
|
|
||||||
MACRO_CONFIG_INT(ClAutoswitchWeaponsOutOfAmmo, cl_autoswitch_weapons_out_of_ammo, 1, 0, 1, CFGFLAG_CLIENT|CFGFLAG_SAVE, "Auto switch weapon when out of ammo")
|
|
||||||
#else
|
|
||||||
MACRO_CONFIG_INT(ClAutoswitchWeapons, cl_autoswitch_weapons, 0, 0, 1, CFGFLAG_CLIENT|CFGFLAG_SAVE, "Auto switch weapon on pickup")
|
MACRO_CONFIG_INT(ClAutoswitchWeapons, cl_autoswitch_weapons, 0, 0, 1, CFGFLAG_CLIENT|CFGFLAG_SAVE, "Auto switch weapon on pickup")
|
||||||
MACRO_CONFIG_INT(ClAutoswitchWeaponsOutOfAmmo, cl_autoswitch_weapons_out_of_ammo, 0, 0, 1, CFGFLAG_CLIENT|CFGFLAG_SAVE, "Auto switch weapon when out of ammo")
|
MACRO_CONFIG_INT(ClAutoswitchWeaponsOutOfAmmo, cl_autoswitch_weapons_out_of_ammo, 0, 0, 1, CFGFLAG_CLIENT|CFGFLAG_SAVE, "Auto switch weapon when out of ammo")
|
||||||
#endif
|
|
||||||
|
|
||||||
MACRO_CONFIG_INT(ClShowhud, cl_showhud, 1, 0, 1, CFGFLAG_CLIENT|CFGFLAG_SAVE, "Show ingame HUD")
|
MACRO_CONFIG_INT(ClShowhud, cl_showhud, 1, 0, 1, CFGFLAG_CLIENT|CFGFLAG_SAVE, "Show ingame HUD")
|
||||||
MACRO_CONFIG_INT(ClShowhudHealthAmmo, cl_showhud_healthammo, 1, 0, 1, CFGFLAG_CLIENT|CFGFLAG_SAVE, "Show ingame HUD (Health + Ammo)")
|
MACRO_CONFIG_INT(ClShowhudHealthAmmo, cl_showhud_healthammo, 1, 0, 1, CFGFLAG_CLIENT|CFGFLAG_SAVE, "Show ingame HUD (Health + Ammo)")
|
||||||
|
|
Loading…
Reference in a new issue