droid: new icon from eukara that doesn't have the resized uglyness.
droid: support qw:// scheme droid: finally added touch.cfg with some crappy programmer art to go with it. mvd: new name cleanup logic when recording, to avoid some more chars. git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@5077 fc73d0e0-1445-4013-8a0c-d673dee63da5
|
@ -140,8 +140,8 @@ endif
|
||||||
USER_TARGET:=$(FTE_TARGET)
|
USER_TARGET:=$(FTE_TARGET)
|
||||||
|
|
||||||
#make droid-rel doesn't get the right stuff
|
#make droid-rel doesn't get the right stuff
|
||||||
#add a small default config file. its only small.
|
#add a small default config file. its only small. and some other stuff, because we can. This makes it much easier to get it up and running.
|
||||||
DROID_PACKSU?= $(BASE_DIR)/droid/fte.cfg
|
DROID_PACKSU?= $(BASE_DIR)/droid/fte.cfg $(BASE_DIR)/droid/default.fmf $(BASE_DIR)/droid/configs/touch.cfg
|
||||||
ANDROID_NDK_ROOT?=~/android-ndk-r8e
|
ANDROID_NDK_ROOT?=~/android-ndk-r8e
|
||||||
ANDROID_HOME?=~/android-sdk-linux
|
ANDROID_HOME?=~/android-sdk-linux
|
||||||
ANT?=ant
|
ANT?=ant
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
//copyright 'Spike', license gplv2+
|
//copyright 'Spike', license gplv2+
|
||||||
//provides both a package manager and downloads menu.
|
//provides both a package manager and downloads menu.
|
||||||
|
//FIXME: block downloads of exe/dll/so/etc if not an https url (even if inside zips). also block such files from package lists over http.
|
||||||
#include "quakedef.h"
|
#include "quakedef.h"
|
||||||
|
|
||||||
#ifdef WEBCLIENT
|
#ifdef WEBCLIENT
|
||||||
|
@ -1437,9 +1438,6 @@ static void PM_ListDownloaded(struct dl_download *dl)
|
||||||
f = dl->file;
|
f = dl->file;
|
||||||
dl->file = NULL;
|
dl->file = NULL;
|
||||||
|
|
||||||
if (!availablepackages)
|
|
||||||
Con_Printf("ZOMG NO PACKAGES\n");
|
|
||||||
|
|
||||||
i = dl->user_num;
|
i = dl->user_num;
|
||||||
|
|
||||||
if (dl != downloadablelist[i].curdl)
|
if (dl != downloadablelist[i].curdl)
|
||||||
|
|
|
@ -2300,7 +2300,7 @@ void CheckCustomMode(struct menu_s *menu)
|
||||||
info->hzfixed->common.ishidden = true;
|
info->hzfixed->common.ishidden = true;
|
||||||
for (i = 0; i < ASPECT_RATIOS; i++)
|
for (i = 0; i < ASPECT_RATIOS; i++)
|
||||||
info->ressize[i]->common.ishidden = true;
|
info->ressize[i]->common.ishidden = true;
|
||||||
if (info->dispmode->selectedoption != 2)
|
if (!info->dispmode || info->dispmode->selectedoption != 2)
|
||||||
{
|
{
|
||||||
info->resmode->common.ishidden = false;
|
info->resmode->common.ishidden = false;
|
||||||
sel = info->resmode->selectedoption;
|
sel = info->resmode->selectedoption;
|
||||||
|
@ -2481,9 +2481,39 @@ void M_Menu_Video_f (void)
|
||||||
{
|
{
|
||||||
extern cvar_t v_contrast, vid_conwidth, vid_conheight;
|
extern cvar_t v_contrast, vid_conwidth, vid_conheight;
|
||||||
// extern cvar_t vid_width, vid_height, vid_preservegamma, vid_hardwaregamma, vid_desktopgamma;
|
// extern cvar_t vid_width, vid_height, vid_preservegamma, vid_hardwaregamma, vid_desktopgamma;
|
||||||
extern cvar_t vid_fullscreen, vid_desktopsettings, vid_conautoscale;
|
extern cvar_t vid_desktopsettings, vid_conautoscale;
|
||||||
extern cvar_t vid_bpp, vid_refreshrate, vid_multisample;
|
extern cvar_t vid_bpp, vid_refreshrate, vid_multisample;
|
||||||
|
|
||||||
|
#ifdef ANDROID
|
||||||
|
extern cvar_t sys_orientation;
|
||||||
|
static const char *orientationopts[] = {
|
||||||
|
"Auto",
|
||||||
|
"Landscape",
|
||||||
|
"Portrait",
|
||||||
|
"Reverse Landscape",
|
||||||
|
"Reverse Portrait",
|
||||||
|
NULL
|
||||||
|
};
|
||||||
|
static const char *orientationvalues[] = {
|
||||||
|
"",
|
||||||
|
"landscape",
|
||||||
|
"portrait",
|
||||||
|
"reverselandscape",
|
||||||
|
"reverseportrait",
|
||||||
|
NULL
|
||||||
|
};
|
||||||
|
extern cvar_t sys_glesversion_cvar;
|
||||||
|
static const char *glesopts[] = {
|
||||||
|
"GLES 1",
|
||||||
|
"GLES 2",
|
||||||
|
NULL
|
||||||
|
};
|
||||||
|
static const char *glesvalues[] = {
|
||||||
|
"1",
|
||||||
|
"2",
|
||||||
|
NULL
|
||||||
|
};
|
||||||
|
#else
|
||||||
extern cvar_t vid_renderer;
|
extern cvar_t vid_renderer;
|
||||||
static const char *rendererops[] =
|
static const char *rendererops[] =
|
||||||
{
|
{
|
||||||
|
@ -2544,6 +2574,7 @@ void M_Menu_Video_f (void)
|
||||||
NULL
|
NULL
|
||||||
};
|
};
|
||||||
|
|
||||||
|
extern cvar_t vid_fullscreen;
|
||||||
static const char *fullscreenopts[] = {
|
static const char *fullscreenopts[] = {
|
||||||
"Windowed",
|
"Windowed",
|
||||||
"Fullscreen",
|
"Fullscreen",
|
||||||
|
@ -2551,6 +2582,7 @@ void M_Menu_Video_f (void)
|
||||||
NULL
|
NULL
|
||||||
};
|
};
|
||||||
static const char *fullscreenvalues[] = {"0", "1", "2", NULL};
|
static const char *fullscreenvalues[] = {"0", "1", "2", NULL};
|
||||||
|
#endif
|
||||||
|
|
||||||
static const char *aaopts[] = {
|
static const char *aaopts[] = {
|
||||||
"1x",
|
"1x",
|
||||||
|
@ -2612,6 +2644,8 @@ void M_Menu_Video_f (void)
|
||||||
NULL
|
NULL
|
||||||
};
|
};
|
||||||
static const char *scalevalues[] = { "1", "1.5", "2", "2.5", "3", "4", "5", "6", NULL};
|
static const char *scalevalues[] = { "1", "1.5", "2", "2.5", "3", "4", "5", "6", NULL};
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
static const char *vsyncoptions[] =
|
static const char *vsyncoptions[] =
|
||||||
{
|
{
|
||||||
|
@ -2651,8 +2685,13 @@ void M_Menu_Video_f (void)
|
||||||
{
|
{
|
||||||
MB_REDTEXT("Video Options", true),
|
MB_REDTEXT("Video Options", true),
|
||||||
MB_TEXT("^Ue080^Ue081^Ue081^Ue081^Ue081^Ue081^Ue081^Ue081^Ue081^Ue081^Ue081^Ue081^Ue082", true),
|
MB_TEXT("^Ue080^Ue081^Ue081^Ue081^Ue081^Ue081^Ue081^Ue081^Ue081^Ue081^Ue081^Ue081^Ue082", true),
|
||||||
|
#ifdef ANDROID
|
||||||
|
MB_COMBOCVAR("Orientation", sys_orientation, orientationopts, orientationvalues, NULL),
|
||||||
|
MB_COMBOCVAR("GLES Version", sys_glesversion_cvar, glesopts, glesvalues, NULL),
|
||||||
|
#else
|
||||||
MB_COMBOCVAR("Renderer", vid_renderer, rendererops, renderervalues, NULL),
|
MB_COMBOCVAR("Renderer", vid_renderer, rendererops, renderervalues, NULL),
|
||||||
MB_COMBOCVARRETURN("Display Mode", vid_fullscreen, fullscreenopts, fullscreenvalues, info->dispmode, vid_fullscreen.description),
|
MB_COMBOCVARRETURN("Display Mode", vid_fullscreen, fullscreenopts, fullscreenvalues, info->dispmode, vid_fullscreen.description),
|
||||||
|
#endif
|
||||||
MB_COMBOCVAR("Anti-aliasing", vid_multisample, aaopts, aavalues, NULL),
|
MB_COMBOCVAR("Anti-aliasing", vid_multisample, aaopts, aavalues, NULL),
|
||||||
MB_REDTEXT(current3dres, true),
|
MB_REDTEXT(current3dres, true),
|
||||||
MB_COMBORETURN("Aspect", resmodeopts, resmodechoice, info->resmode, "Select method for determining or configuring display options. The desktop option will attempt to use the width, height, color depth, and refresh from your operating system's desktop environment."),
|
MB_COMBORETURN("Aspect", resmodeopts, resmodechoice, info->resmode, "Select method for determining or configuring display options. The desktop option will attempt to use the width, height, color depth, and refresh from your operating system's desktop environment."),
|
||||||
|
|
|
@ -449,7 +449,7 @@ void M_UnbindCommand (const char *command);
|
||||||
#else
|
#else
|
||||||
//no builtin menu code.
|
//no builtin menu code.
|
||||||
//stubs
|
//stubs
|
||||||
#define M_Menu_Prompt(cb,ctx,m1,m2,m3,optionyes,optionno,optioncancel) (cb)(ctx,-1)
|
#define M_Menu_Prompt(cb,ctx,messages,optionyes,optionno,optioncancel) (cb)(ctx,-1)
|
||||||
#define M_ToggleMenu_f() Cbuf_AddText("togglemenu\n",RESTRICT_LOCAL)
|
#define M_ToggleMenu_f() Cbuf_AddText("togglemenu\n",RESTRICT_LOCAL)
|
||||||
//#define M_Shutdown(t) MP_Shutdown()
|
//#define M_Shutdown(t) MP_Shutdown()
|
||||||
|
|
||||||
|
|
|
@ -35,11 +35,11 @@ static char sys_basedir[MAX_OSPATH];
|
||||||
static char sys_basepak[MAX_OSPATH];
|
static char sys_basepak[MAX_OSPATH];
|
||||||
extern jmp_buf host_abort;
|
extern jmp_buf host_abort;
|
||||||
|
|
||||||
cvar_t sys_vibrate = CVARD("sys_vibrate", "1", "Enables the system vibrator for damage events and such things. The value provided is a duration scaler.");
|
cvar_t sys_vibrate = CVARFD("sys_vibrate", "1", CVAR_ARCHIVE, "Enables the system vibrator for damage events and such things. The value provided is a duration scaler.");
|
||||||
cvar_t sys_osk = CVAR("sys_osk", "0"); //to be toggled
|
cvar_t sys_osk = CVAR("sys_osk", "0"); //to be toggled
|
||||||
cvar_t sys_keepscreenon = CVARD("sys_keepscreenon", "1", "If set, the screen will never darken. This might cost some extra battery power, but then so will running a 3d engine."); //to be toggled
|
cvar_t sys_keepscreenon = CVARFD("sys_keepscreenon", "1", CVAR_ARCHIVE, "If set, the screen will never darken. This might cost some extra battery power, but then so will running a 3d engine."); //to be toggled
|
||||||
cvar_t sys_orientation = CVARD("sys_orientation", "landscape", "Specifies what angle to render quake at.\nValid values are: sensor (autodetect), landscape, portrait, reverselandscape, reverseportrait");
|
cvar_t sys_orientation = CVARFD("sys_orientation", "landscape", CVAR_ARCHIVE, "Specifies what angle to render quake at.\nValid values are: sensor (autodetect), landscape, portrait, reverselandscape, reverseportrait");
|
||||||
cvar_t sys_glesversion_cvar = CVARD("sys_glesversion", "1", "Specifies which version of gles to use. 1 or 2 are valid values.");
|
cvar_t sys_glesversion_cvar = CVARFD("sys_glesversion", "1", CVAR_ARCHIVE, "Specifies which version of gles to use. 1 or 2 are valid values.");
|
||||||
extern cvar_t vid_conautoscale;
|
extern cvar_t vid_conautoscale;
|
||||||
|
|
||||||
|
|
||||||
|
@ -264,7 +264,7 @@ JNIEXPORT void JNICALL Java_com_fteqw_FTEDroidEngine_init(JNIEnv *env, jobject o
|
||||||
parms.argv = args;
|
parms.argv = args;
|
||||||
|
|
||||||
tmp = (*env)->GetStringUTFChars(env, japkpath, NULL);
|
tmp = (*env)->GetStringUTFChars(env, japkpath, NULL);
|
||||||
Q_strncpyz(sys_basepak, tmp, sizeof(sys_basedir));
|
Q_strncpyz(sys_basepak, tmp, sizeof(sys_basepak));
|
||||||
(*env)->ReleaseStringUTFChars(env, japkpath, tmp);
|
(*env)->ReleaseStringUTFChars(env, japkpath, tmp);
|
||||||
|
|
||||||
tmp = (*env)->GetStringUTFChars(env, jusrpath, NULL);
|
tmp = (*env)->GetStringUTFChars(env, jusrpath, NULL);
|
||||||
|
|
|
@ -3420,8 +3420,8 @@ void FS_ReloadPackFilesFlags(unsigned int reloadflags)
|
||||||
searchpathfuncs_t *pak;
|
searchpathfuncs_t *pak;
|
||||||
vfsfile_t *vfs = VFSOS_Open(pakname, "rb");
|
vfsfile_t *vfs = VFSOS_Open(pakname, "rb");
|
||||||
pak = FS_OpenPackByExtension(vfs, pakname);
|
pak = FS_OpenPackByExtension(vfs, pakname);
|
||||||
if (pak)
|
if (pak) //logically should have SPF_EXPLICIT set, but that would give it a worse gamedir depth
|
||||||
FS_AddPathHandle(&oldpaths, "", pakname, pak, "", SPF_COPYPROTECTED|SPF_EXPLICIT, reloadflags);
|
FS_AddPathHandle(&oldpaths, "", pakname, pak, "", SPF_COPYPROTECTED, reloadflags);
|
||||||
i = COM_CheckNextParm ("-basepack", i);
|
i = COM_CheckNextParm ("-basepack", i);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -4884,11 +4884,27 @@ qboolean FS_FoundManifest(void *usr, ftemanifest_t *man)
|
||||||
//if fixedbasedir is true, stuff like -quake won't override/change the active basedir (ie: -basedir or gamedir switching without breaking gamedir)
|
//if fixedbasedir is true, stuff like -quake won't override/change the active basedir (ie: -basedir or gamedir switching without breaking gamedir)
|
||||||
ftemanifest_t *FS_ReadDefaultManifest(char *newbasedir, size_t newbasedirsize, qboolean fixedbasedir)
|
ftemanifest_t *FS_ReadDefaultManifest(char *newbasedir, size_t newbasedirsize, qboolean fixedbasedir)
|
||||||
{
|
{
|
||||||
|
int i;
|
||||||
int game = -1;
|
int game = -1;
|
||||||
ftemanifest_t *man = NULL;
|
ftemanifest_t *man = NULL;
|
||||||
|
|
||||||
vfsfile_t *f;
|
vfsfile_t *f;
|
||||||
|
|
||||||
|
//commandline generally takes precedence
|
||||||
|
if (!man && game == -1)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
for (i = 0; gamemode_info[i].argname; i++)
|
||||||
|
{
|
||||||
|
if (COM_CheckParm(gamemode_info[i].argname))
|
||||||
|
{
|
||||||
|
game = i;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//hopefully this will be used for TCs.
|
||||||
if (!man && game == -1)
|
if (!man && game == -1)
|
||||||
{
|
{
|
||||||
#ifdef BRANDING_NAME
|
#ifdef BRANDING_NAME
|
||||||
|
@ -4912,19 +4928,41 @@ ftemanifest_t *FS_ReadDefaultManifest(char *newbasedir, size_t newbasedirsize, q
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!man && game == -1)
|
//-basepack is primarily an android feature
|
||||||
|
i = COM_CheckParm ("-basepack");
|
||||||
|
while (!man && game == -1 && i && i < com_argc-1)
|
||||||
{
|
{
|
||||||
int i;
|
const char *pakname = com_argv[i+1];
|
||||||
for (i = 0; gamemode_info[i].argname; i++)
|
searchpathfuncs_t *pak;
|
||||||
|
vfsfile_t *vfs = VFSOS_Open(pakname, "rb");
|
||||||
|
pak = FS_OpenPackByExtension(vfs, pakname);
|
||||||
|
if (pak)
|
||||||
{
|
{
|
||||||
if (COM_CheckParm(gamemode_info[i].argname))
|
flocation_t loc;
|
||||||
|
if (pak->FindFile(pak, &loc, "default.fmf", NULL))
|
||||||
{
|
{
|
||||||
game = i;
|
f = pak->OpenVFS(pak, &loc, "rb");
|
||||||
break;
|
if (f)
|
||||||
|
{
|
||||||
|
size_t len = VFS_GETLEN(f);
|
||||||
|
char *fdata = BZ_Malloc(len+1);
|
||||||
|
if (fdata)
|
||||||
|
{
|
||||||
|
VFS_READ(f, fdata, len);
|
||||||
|
fdata[len] = 0;
|
||||||
|
man = FS_Manifest_Parse(NULL, fdata);
|
||||||
|
man->security = MANIFEST_SECURITY_DEFAULT;
|
||||||
|
BZ_Free(fdata);
|
||||||
|
}
|
||||||
|
VFS_CLOSE(f);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
pak->ClosePath(pak);
|
||||||
}
|
}
|
||||||
|
i = COM_CheckNextParm ("-basepack", i);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if (!man && game == -1 && host_parms.manifest)
|
if (!man && game == -1 && host_parms.manifest)
|
||||||
{
|
{
|
||||||
man = FS_Manifest_Parse(va("%sdefault.fmf", newbasedir), host_parms.manifest);
|
man = FS_Manifest_Parse(va("%sdefault.fmf", newbasedir), host_parms.manifest);
|
||||||
|
|
|
@ -1491,7 +1491,7 @@
|
||||||
Name="VCCLCompilerTool"
|
Name="VCCLCompilerTool"
|
||||||
Optimization="0"
|
Optimization="0"
|
||||||
AdditionalIncludeDirectories="../libs/speex;..\client;../libs/freetype2/include;../common;../server;../gl;../sw;../qclib;../libs;../libs/dxsdk9/include;../libs/dxsdk7/include"
|
AdditionalIncludeDirectories="../libs/speex;..\client;../libs/freetype2/include;../common;../server;../gl;../sw;../qclib;../libs;../libs/dxsdk9/include;../libs/dxsdk7/include"
|
||||||
PreprocessorDefinitions="_DEBUG;WIN32;_WINDOWS;GLQUAKE;D3D9QUAKE;D3D11QUAKE;SWQUAKE;VKQUAKE;MULTITHREAD;USE_MSVCRT_DEBUG"
|
PreprocessorDefinitions="_DEBUG;WIN32;_WINDOWS;GLQUAKE;D3D8QUAKE;D3D9QUAKE;D3D11QUAKE;SWQUAKE;VKQUAKE;MULTITHREAD;USE_MSVCRT_DEBUG"
|
||||||
BasicRuntimeChecks="3"
|
BasicRuntimeChecks="3"
|
||||||
RuntimeLibrary="1"
|
RuntimeLibrary="1"
|
||||||
FloatingPointModel="2"
|
FloatingPointModel="2"
|
||||||
|
@ -29907,6 +29907,14 @@
|
||||||
RelativePath="..\d3d\d3d11_shader.c"
|
RelativePath="..\d3d\d3d11_shader.c"
|
||||||
>
|
>
|
||||||
</File>
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath="..\d3d\d3d8_backend.c"
|
||||||
|
>
|
||||||
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath="..\d3d\d3d8_image.c"
|
||||||
|
>
|
||||||
|
</File>
|
||||||
<File
|
<File
|
||||||
RelativePath="..\d3d\d3d_backend.c"
|
RelativePath="..\d3d\d3d_backend.c"
|
||||||
>
|
>
|
||||||
|
@ -29927,6 +29935,10 @@
|
||||||
RelativePath="..\d3d\vid_d3d11.c"
|
RelativePath="..\d3d\vid_d3d11.c"
|
||||||
>
|
>
|
||||||
</File>
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath="..\d3d\vid_d3d8.c"
|
||||||
|
>
|
||||||
|
</File>
|
||||||
</Filter>
|
</Filter>
|
||||||
<Filter
|
<Filter
|
||||||
Name="sw"
|
Name="sw"
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
package="com.fteqw"
|
package="com.fteqw"
|
||||||
android:versionCode="1"
|
android:versionCode="1"
|
||||||
android:versionName="1.0"
|
android:versionName="1.05"
|
||||||
android:installLocation="auto">
|
android:installLocation="auto">
|
||||||
<uses-sdk android:minSdkVersion="4" android:targetSdkVersion="8"/>
|
<uses-sdk android:minSdkVersion="4" android:targetSdkVersion="8"/>
|
||||||
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
|
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
|
||||||
|
@ -11,7 +11,7 @@
|
||||||
|
|
||||||
<application android:icon="@drawable/icon" android:label="@string/app_name">
|
<application android:icon="@drawable/icon" android:label="@string/app_name">
|
||||||
<activity android:name=".FTEDroidActivity"
|
<activity android:name=".FTEDroidActivity"
|
||||||
android:label="@string/app_name"
|
android:label="@string/app_name"
|
||||||
android:configChanges="keyboardHidden|orientation">
|
android:configChanges="keyboardHidden|orientation">
|
||||||
|
|
||||||
<!-- launcher icon -->
|
<!-- launcher icon -->
|
||||||
|
@ -20,6 +20,14 @@
|
||||||
<category android:name="android.intent.category.LAUNCHER" />
|
<category android:name="android.intent.category.LAUNCHER" />
|
||||||
</intent-filter>
|
</intent-filter>
|
||||||
|
|
||||||
|
<!-- custom url scheme, because someone didn't like using mime types properly -->
|
||||||
|
<intent-filter>
|
||||||
|
<action android:name="android.intent.action.VIEW" />
|
||||||
|
<category android:name="android.intent.category.DEFAULT" />
|
||||||
|
<category android:name="android.intent.category.BROWSABLE" />
|
||||||
|
<data android:scheme="qw" />
|
||||||
|
</intent-filter>
|
||||||
|
|
||||||
<!-- mime types with unspecified schemes (please don't explode). one for each mime type. because I'm paranoid. -->
|
<!-- mime types with unspecified schemes (please don't explode). one for each mime type. because I'm paranoid. -->
|
||||||
<intent-filter>
|
<intent-filter>
|
||||||
<action android:name="android.intent.action.VIEW" />
|
<action android:name="android.intent.action.VIEW" />
|
||||||
|
|
|
@ -1,13 +1,13 @@
|
||||||
showpic_removeall
|
showpic_removeall
|
||||||
|
|
||||||
sv_aim 0.90 //quake style, avoid needing to pitch too much
|
sv_aim 0.90 //quake style, avoid needing to pitch too much
|
||||||
showpic gfx/touch_forward.png forward 96 -88 bm 32 32 +forward
|
showpic res/drawable/touch_moveforward.tga forward -16 -88 bm 32 32 +forward
|
||||||
showpic gfx/touch_back.png moveback 96 -56 bm 32 32 +back
|
showpic res/drawable/touch_moveback.tga moveback -16 -56 bm 32 32 +back
|
||||||
showpic gfx/touch_moveleft.png moveleft 64 -56 bm 32 32 +moveleft
|
showpic res/drawable/touch_moveleft.tga moveleft -48 -56 bm 32 32 +moveleft
|
||||||
showpic gfx/touch_moveright.png moveright 128 -56 bm 32 32 +moveright
|
showpic res/drawable/touch_moveright.tga moveright 16 -56 bm 32 32 +moveright
|
||||||
|
|
||||||
showpic gfx/touch_attack.png attack 32 -56 bm 32 32 +attack
|
showpic res/drawable/touch_attack.tga attack -80 -56 bm 32 32 +attack
|
||||||
showpic gfx/touch_jump.png jump 160 -56 bm 32 32 +jump
|
showpic res/drawable/touch_jump.tga jump 48 -56 bm 32 32 +jump
|
||||||
|
|
||||||
showpic gfx/touch_turnleft.png turnleft 0 -56 bm 32 32 +left
|
showpic res/drawable/touch_turnleft.tga turnleft -112 -56 bm 32 32 +left
|
||||||
showpic gfx/touch_turnright.png turnright 192 -56 bm 32 32 +right
|
showpic res/drawable/touch_turnright.tga turnright 80 -56 bm 32 32 +right
|
||||||
|
|
23
engine/droid/default.fmf
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
//documentation on this file can be found at https://sourceforge.net/p/fteqw/code/HEAD/tree/trunk/specs/fte_manifests.txt
|
||||||
|
|
||||||
|
FTEManifestVer 1
|
||||||
|
game afterquake
|
||||||
|
name "AfterQuake"
|
||||||
|
//listing dp here allows listing public dp servers, but still won't be listed inside dp
|
||||||
|
protocolname "FTE-Quake DarkPlaces-Quake"
|
||||||
|
basegame id1
|
||||||
|
basegame qw
|
||||||
|
basegame *fte
|
||||||
|
disablehomedir 1
|
||||||
|
|
||||||
|
//first, so we don't favour it over pak1.pak
|
||||||
|
//avoids distributing the demo as anything other than the demo.
|
||||||
|
package id1/gpl_maps.pk3
|
||||||
|
archivedpackage id1/pak0.pak - id1/pak0.pak http://triptohell.info/moodles/live/QUAKE_SW.zip
|
||||||
|
package id1/pak1.pak
|
||||||
|
package id1/new_playermodel_only.pak
|
||||||
|
|
||||||
|
//autoupdate stuff
|
||||||
|
//FIME FIXME FIXME - on android we have no https support
|
||||||
|
downloadsurl "http://fte.triptohell.info/downloadables.php"
|
||||||
|
install "AfterQuake - Minimum"
|
|
@ -15,4 +15,4 @@ vid_conwidth "0" //make something up based upon aspect ratio
|
||||||
vid_conheight "300" //not using autoscale as it can make the menu unusable.
|
vid_conheight "300" //not using autoscale as it can make the menu unusable.
|
||||||
vid_conautoscale "0" // Text/Menu size. 2 is the default. 4 is bigger
|
vid_conautoscale "0" // Text/Menu size. 2 is the default. 4 is bigger
|
||||||
|
|
||||||
exec configs/touch.cfg
|
exec touch.cfg
|
||||||
|
|
Before Width: | Height: | Size: 8.9 KiB After Width: | Height: | Size: 7.2 KiB |
Before Width: | Height: | Size: 3.4 KiB After Width: | Height: | Size: 2.8 KiB |
Before Width: | Height: | Size: 5.4 KiB After Width: | Height: | Size: 4.3 KiB |
BIN
engine/droid/res/drawable-xhdpi/icon.png
Normal file
After Width: | Height: | Size: 11 KiB |
BIN
engine/droid/res/drawable-xxhdpi/icon.png
Normal file
After Width: | Height: | Size: 20 KiB |
BIN
engine/droid/res/drawable/icon.png
Normal file
After Width: | Height: | Size: 137 KiB |
BIN
engine/droid/res/drawable/touch_attack.tga
Normal file
BIN
engine/droid/res/drawable/touch_jump.tga
Normal file
BIN
engine/droid/res/drawable/touch_moveback.tga
Normal file
BIN
engine/droid/res/drawable/touch_moveforward.tga
Normal file
BIN
engine/droid/res/drawable/touch_moveleft.tga
Normal file
BIN
engine/droid/res/drawable/touch_moveright.tga
Normal file
BIN
engine/droid/res/drawable/touch_turnleft.tga
Normal file
BIN
engine/droid/res/drawable/touch_turnright.tga
Normal file
|
@ -495,6 +495,9 @@ public class FTEDroidActivity extends Activity
|
||||||
ori = 9;//android.content.pm.ActivityInfo.SCREEN_ORIENTATION_REVERSE_PORTRAIT;
|
ori = 9;//android.content.pm.ActivityInfo.SCREEN_ORIENTATION_REVERSE_PORTRAIT;
|
||||||
else if (ors.equalsIgnoreCase("fullsensor"))
|
else if (ors.equalsIgnoreCase("fullsensor"))
|
||||||
ori = 10;//android.content.pm.ActivityInfo.SCREEN_ORIENTATION_FULL_SENSOR;
|
ori = 10;//android.content.pm.ActivityInfo.SCREEN_ORIENTATION_FULL_SENSOR;
|
||||||
|
//and the default, because specifying it again is always useless.
|
||||||
|
else
|
||||||
|
ori = android.content.pm.ActivityInfo.SCREEN_ORIENTATION_SENSOR;
|
||||||
android.util.Log.i("FTEDroid", "Orientation changed to " + ori + " (" + ors + ").");
|
android.util.Log.i("FTEDroid", "Orientation changed to " + ori + " (" + ors + ").");
|
||||||
act.setRequestedOrientation(ori);
|
act.setRequestedOrientation(ori);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1889,7 +1889,11 @@ void Mod_LoadLighting (model_t *loadmodel, qbyte *mod_base, lump_t *l, qboolean
|
||||||
lightmodel = loadmodel;
|
lightmodel = loadmodel;
|
||||||
relitsurface = 0;
|
relitsurface = 0;
|
||||||
}
|
}
|
||||||
else if (!lightmodel && r_deluxmapping_cvar.value>1 && r_deluxmapping && !luxdata && !(r_shadow_realtime_world.ival && r_shadow_realtime_world_lightmaps.value<=0))
|
else if (!lightmodel && r_deluxmapping_cvar.value>1 && r_deluxmapping && !luxdata
|
||||||
|
#ifdef RTLIGHTS
|
||||||
|
&& !(r_shadow_realtime_world.ival && r_shadow_realtime_world_lightmaps.value<=0)
|
||||||
|
#endif
|
||||||
|
)
|
||||||
{ //if deluxemapping is on, generate missing lux files a little more often, but don't bother if we have rtlights on anyway.
|
{ //if deluxemapping is on, generate missing lux files a little more often, but don't bother if we have rtlights on anyway.
|
||||||
writelitfile = false;
|
writelitfile = false;
|
||||||
numlightdata = l->filelen;
|
numlightdata = l->filelen;
|
||||||
|
|
|
@ -7050,12 +7050,10 @@ const char *SV_CheckRejectConnection(netadr_t *adr, const char *uinfo, unsigned
|
||||||
}
|
}
|
||||||
Info_SetValueForKey(clfeatures, "basicprotocol", bp, sizeof(clfeatures));
|
Info_SetValueForKey(clfeatures, "basicprotocol", bp, sizeof(clfeatures));
|
||||||
Info_SetValueForKey(clfeatures, "guid", guid, sizeof(clfeatures));
|
Info_SetValueForKey(clfeatures, "guid", guid, sizeof(clfeatures));
|
||||||
Info_SetValueForKey(clfeatures, "maxsounds", "256", sizeof(clfeatures));
|
|
||||||
Info_SetValueForKey(clfeatures, "maxmodels", "256", sizeof(clfeatures));
|
|
||||||
|
|
||||||
//this is not the limits of the client itself, but the limits that the server is able and willing to send to them.
|
//this is not the limits of the client itself, but the limits that the server is able and willing to send to them.
|
||||||
|
|
||||||
if ((pext1 & PEXT_SOUNDDBL) || (protocol == SCP_BJP3 || protocol == SCP_FITZ666 || protocol == SCP_DARKPLACES6) || (protocol == SCP_DARKPLACES7))
|
if ((pext1 & PEXT_SOUNDDBL) || (pext2 & PEXT2_REPLACEMENTDELTAS) || (protocol == SCP_BJP3 || protocol == SCP_FITZ666 || protocol == SCP_DARKPLACES6) || (protocol == SCP_DARKPLACES7))
|
||||||
Info_SetValueForKey(clfeatures, "maxsounds", va("%i", MAX_PRECACHE_SOUNDS), sizeof(clfeatures));
|
Info_SetValueForKey(clfeatures, "maxsounds", va("%i", MAX_PRECACHE_SOUNDS), sizeof(clfeatures));
|
||||||
else
|
else
|
||||||
Info_SetValueForKey(clfeatures, "maxsounds", "256", sizeof(clfeatures));
|
Info_SetValueForKey(clfeatures, "maxsounds", "256", sizeof(clfeatures));
|
||||||
|
|
|
@ -798,7 +798,7 @@ void SVQW_WriteDelta (entity_state_t *from, entity_state_t *to, sizebuf_t *msg,
|
||||||
if (to->dpflags != from->dpflags && (protext & PEXT_DPFLAGS))
|
if (to->dpflags != from->dpflags && (protext & PEXT_DPFLAGS))
|
||||||
evenmorebits |= U_DPFLAGS;
|
evenmorebits |= U_DPFLAGS;
|
||||||
|
|
||||||
if ((to->tagentity != from->tagentity || to->tagindex != from->tagindex) && (protext & PEXT_DPFLAGS))
|
if ((to->tagentity != from->tagentity || to->tagindex != from->tagindex) && (protext & PEXT_SETATTACHMENT))
|
||||||
evenmorebits |= U_TAGINFO;
|
evenmorebits |= U_TAGINFO;
|
||||||
|
|
||||||
if ((to->light[0] != from->light[0] || to->light[1] != from->light[1] || to->light[2] != from->light[2] || to->light[3] != from->light[3] || to->lightstyle != from->lightstyle || to->lightpflags != from->lightstyle) && (protext & PEXT_DPFLAGS))
|
if ((to->light[0] != from->light[0] || to->light[1] != from->light[1] || to->light[2] != from->light[2] || to->light[3] != from->light[3] || to->lightstyle != from->lightstyle || to->lightpflags != from->lightstyle) && (protext & PEXT_DPFLAGS))
|
||||||
|
|
|
@ -1792,7 +1792,7 @@ void SV_ClientProtocolExtensionsChanged(client_t *client)
|
||||||
|
|
||||||
//you need to reconnect for this to update, of course. so make sure its not *too* low...
|
//you need to reconnect for this to update, of course. so make sure its not *too* low...
|
||||||
client->max_net_ents = bound(512, pr_maxedicts.ival, MAX_EDICTS);
|
client->max_net_ents = bound(512, pr_maxedicts.ival, MAX_EDICTS);
|
||||||
client->maxmodels = MAX_PRECACHE_MODELS; //protocol limited to 14 bits.
|
client->maxmodels = min(1u<<14, MAX_PRECACHE_MODELS); //protocol limited to 14 bits.
|
||||||
}
|
}
|
||||||
else if (ISQWCLIENT(client)) //readd?
|
else if (ISQWCLIENT(client)) //readd?
|
||||||
{
|
{
|
||||||
|
@ -1804,7 +1804,7 @@ void SV_ClientProtocolExtensionsChanged(client_t *client)
|
||||||
client->max_net_ents += 1024;
|
client->max_net_ents += 1024;
|
||||||
|
|
||||||
if (client->fteprotocolextensions & PEXT_MODELDBL)
|
if (client->fteprotocolextensions & PEXT_MODELDBL)
|
||||||
client->maxmodels = MAX_PRECACHE_MODELS;
|
client->maxmodels = 512;
|
||||||
}
|
}
|
||||||
else if (ISDPCLIENT(client))
|
else if (ISDPCLIENT(client))
|
||||||
{
|
{
|
||||||
|
|
|
@ -1240,44 +1240,6 @@ qboolean SV_MVDWritePackets (int num)
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
// table of readable characters, same as ezquake
|
|
||||||
char readable[256] =
|
|
||||||
{
|
|
||||||
'.', '_', '_', '_', '_', '.', '_', '_',
|
|
||||||
'_', '_', '\n', '_', '\n', '>', '.', '.',
|
|
||||||
'[', ']', '0', '1', '2', '3', '4', '5',
|
|
||||||
'6', '7', '8', '9', '.', '_', '_', '_',
|
|
||||||
' ', '!', '\"', '#', '$', '%', '&', '\'',
|
|
||||||
'(', ')', '*', '+', ',', '-', '.', '/',
|
|
||||||
'0', '1', '2', '3', '4', '5', '6', '7',
|
|
||||||
'8', '9', ':', ';', '<', '=', '>', '?',
|
|
||||||
'@', 'A', 'B', 'C', 'D', 'E', 'F', 'G',
|
|
||||||
'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O',
|
|
||||||
'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W',
|
|
||||||
'X', 'Y', 'Z', '[', '\\', ']', '^', '_',
|
|
||||||
'`', 'a', 'b', 'c', 'd', 'e', 'f', 'g',
|
|
||||||
'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o',
|
|
||||||
'p', 'q', 'r', 's', 't', 'u', 'v', 'w',
|
|
||||||
'x', 'y', 'z', '{', '|', '}', '~', '_',
|
|
||||||
'_', '_', '_', '_', '_', '.', '_', '_',
|
|
||||||
'_', '_', '_', '_', '_', '>', '.', '.',
|
|
||||||
'[', ']', '0', '1', '2', '3', '4', '5',
|
|
||||||
'6', '7', '8', '9', '.', '_', '_', '_',
|
|
||||||
' ', '!', '\"', '#', '$', '%', '&', '\'',
|
|
||||||
'(', ')', '*', '+', ',', '-', '.', '/',
|
|
||||||
'0', '1', '2', '3', '4', '5', '6', '7',
|
|
||||||
'8', '9', ':', ';', '<', '=', '>', '?',
|
|
||||||
'@', 'A', 'B', 'C', 'D', 'E', 'F', 'G',
|
|
||||||
'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O',
|
|
||||||
'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W',
|
|
||||||
'X', 'Y', 'Z', '[', '\\', ']', '^', '_',
|
|
||||||
'`', 'a', 'b', 'c', 'd', 'e', 'f', 'g',
|
|
||||||
'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o',
|
|
||||||
'p', 'q', 'r', 's', 't', 'u', 'v', 'w',
|
|
||||||
'x', 'y', 'z', '{', '|', '}', '~', '_'
|
|
||||||
};
|
|
||||||
#define chartbl readable
|
|
||||||
|
|
||||||
void MVD_Init (void)
|
void MVD_Init (void)
|
||||||
{
|
{
|
||||||
#define MVDVARGROUP "Server MVD cvars"
|
#define MVDVARGROUP "Server MVD cvars"
|
||||||
|
@ -1707,9 +1669,12 @@ qboolean SV_MVD_Record (mvddest_t *dest)
|
||||||
#ifdef PEXT_VIEW2
|
#ifdef PEXT_VIEW2
|
||||||
demo.recorder.fteprotocolextensions |= PEXT_VIEW2;
|
demo.recorder.fteprotocolextensions |= PEXT_VIEW2;
|
||||||
#endif
|
#endif
|
||||||
demo.recorder.fteprotocolextensions2 = PEXT2_VOICECHAT | PEXT2_SETANGLEDELTA | PEXT2_PRYDONCURSOR | (pext_replacementdeltas.ival?PEXT2_REPLACEMENTDELTAS:0);
|
demo.recorder.fteprotocolextensions2 = PEXT2_VOICECHAT | PEXT2_SETANGLEDELTA | /*PEXT2_PRYDONCURSOR |*/ (pext_replacementdeltas.ival?PEXT2_REPLACEMENTDELTAS:0);
|
||||||
/*enable these, because we might as well (stat ones are always useful)*/
|
/*enable these, because we might as well (stat ones are always useful)*/
|
||||||
demo.recorder.zquake_extensions = Z_EXT_PM_TYPE | Z_EXT_PM_TYPE_NEW | Z_EXT_VIEWHEIGHT | Z_EXT_SERVERTIME | Z_EXT_PITCHLIMITS | Z_EXT_JOIN_OBSERVE | Z_EXT_VWEP;
|
demo.recorder.zquake_extensions = Z_EXT_PM_TYPE | Z_EXT_PM_TYPE_NEW | Z_EXT_VIEWHEIGHT | Z_EXT_SERVERTIME | Z_EXT_PITCHLIMITS | Z_EXT_JOIN_OBSERVE | Z_EXT_VWEP;
|
||||||
|
|
||||||
|
// if (demo.recorder.fteprotocolextensions2 & PEXT2_REPLACEMENTDELTAS) //replacementdeltas makes a number of earlier extensions obsolete...
|
||||||
|
// demo.recorder.fteprotocolextensions &= ~(PEXT_COLOURMOD|PEXT_DPFLAGS|PEXT_ENTITYDBL|PEXT_ENTITYDBL2|PEXT_FATNESS|PEXT_HEXEN2|PEXT_HULLSIZE|PEXT_MODELDBL|PEXT_SCALE|PEXT_SETATTACHMENT|PEXT_SOUNDDBL|PEXT_SPAWNSTATIC2|PEXT_TRANS);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -1912,6 +1877,80 @@ void SV_MVD_SendInitialGamestate(mvddest_t *dest)
|
||||||
singledest = NULL;
|
singledest = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//double-underscores will get merged together.
|
||||||
|
const char *SV_GenCleanTable(void)
|
||||||
|
{
|
||||||
|
static char tab[256];
|
||||||
|
static int tabbuilt = -1;
|
||||||
|
int mode = com_parseutf8.ival>0;
|
||||||
|
int i;
|
||||||
|
|
||||||
|
if (tabbuilt == mode)
|
||||||
|
return tab;
|
||||||
|
|
||||||
|
//identity
|
||||||
|
for(i = 0; i < 32; i++)
|
||||||
|
tab[i] = '_'; //unprintables.
|
||||||
|
for( ; i < 128; i++)
|
||||||
|
tab[i] = i;
|
||||||
|
|
||||||
|
//cheesy way around NUL.mvd etc filenames.
|
||||||
|
for(i = 'A'; i <= 'Z'; i++)
|
||||||
|
tab[i] = i + ('a'-'A');
|
||||||
|
|
||||||
|
//these chars are reserved by windows, so its generally best to not use them, even on loonix
|
||||||
|
tab['<'] = '[';
|
||||||
|
tab['>'] = ']';
|
||||||
|
tab['|'] = '_';
|
||||||
|
tab[':'] = '_';
|
||||||
|
tab['*'] = '_';
|
||||||
|
tab['?'] = '_';
|
||||||
|
tab['\\']= '_';
|
||||||
|
tab['/'] = '_';
|
||||||
|
tab['\"']= '_';
|
||||||
|
//some extra ones to make unix scripts nicer.
|
||||||
|
tab['&'] = '_';
|
||||||
|
tab['~'] = '_';
|
||||||
|
tab['`'] = '_';
|
||||||
|
tab[','] = '_';
|
||||||
|
tab[' '] = '_'; //don't use spaces, it means files need quotes, and then stuff bugs out.
|
||||||
|
tab['.'] = '_'; //many windows programs can't properly deal with multiple dots
|
||||||
|
|
||||||
|
if (mode)
|
||||||
|
{
|
||||||
|
//high chars are regular utf-8. yay
|
||||||
|
for(i = 128; i < 256; i++)
|
||||||
|
tab[i] = i;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
//second row contains coloured numbers for the hud
|
||||||
|
tab[16] = '[';
|
||||||
|
tab[17] = ']';
|
||||||
|
for(i = 0; i < 10; i++)
|
||||||
|
tab[18+i] = '0'+i;
|
||||||
|
tab[28] = '_'; //'.'
|
||||||
|
tab[29] = //line breaks
|
||||||
|
tab[30] =
|
||||||
|
tab[31] = '_';
|
||||||
|
|
||||||
|
//high chars
|
||||||
|
|
||||||
|
//the first 16 chars of the high range are actually different.
|
||||||
|
tab[128] = '_'; //scrollbars
|
||||||
|
tab[129] = '_';
|
||||||
|
tab[130] = '_';
|
||||||
|
tab[130] = '_';
|
||||||
|
for(i = 132; i < 128+16; i++)
|
||||||
|
tab[18+i] = '_'; //LEDs mostly
|
||||||
|
|
||||||
|
//but the rest of the table is just recoloured.
|
||||||
|
for(i = 128+16; i < 256; i++)
|
||||||
|
tab[i] = tab[i&127];
|
||||||
|
}
|
||||||
|
return tab;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
====================
|
====================
|
||||||
SV_CleanName
|
SV_CleanName
|
||||||
|
@ -1924,6 +1963,7 @@ char *SV_CleanName (unsigned char *name)
|
||||||
{
|
{
|
||||||
static char text[1024];
|
static char text[1024];
|
||||||
char *out = text;
|
char *out = text;
|
||||||
|
const char *chartbl = SV_GenCleanTable();
|
||||||
|
|
||||||
*out = chartbl[*name++];
|
*out = chartbl[*name++];
|
||||||
|
|
||||||
|
@ -1933,7 +1973,12 @@ char *SV_CleanName (unsigned char *name)
|
||||||
else *++out = chartbl[*name++];
|
else *++out = chartbl[*name++];
|
||||||
|
|
||||||
*++out = 0;
|
*++out = 0;
|
||||||
return text;
|
|
||||||
|
|
||||||
|
out = text;
|
||||||
|
while (*out == '.')
|
||||||
|
out++; //leading dots (which could be caused by all sorts of things) are bad. boo hidden files.
|
||||||
|
return out;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -1359,9 +1359,9 @@ static void SV_SoundMulticast(client_t *client, sizebuf_t *msg, void *vctx)
|
||||||
MSG_WriteShort (msg, bound(-32768, ctx->timeofs*1000, 32767));
|
MSG_WriteShort (msg, bound(-32768, ctx->timeofs*1000, 32767));
|
||||||
if (field_mask & FTESND_VELOCITY)
|
if (field_mask & FTESND_VELOCITY)
|
||||||
{
|
{
|
||||||
MSG_WriteShort (msg, ctx->vel[0]*8);
|
MSG_WriteShort (msg, bound(-32767, ctx->vel[0]*8, 32767));
|
||||||
MSG_WriteShort (msg, ctx->vel[1]*8);
|
MSG_WriteShort (msg, bound(-32767, ctx->vel[1]*8, 32767));
|
||||||
MSG_WriteShort (msg, ctx->vel[2]*8);
|
MSG_WriteShort (msg, bound(-32767, ctx->vel[2]*8, 32767));
|
||||||
}
|
}
|
||||||
if (field_mask & DPSND_SPEEDUSHORT4000)
|
if (field_mask & DPSND_SPEEDUSHORT4000)
|
||||||
MSG_WriteShort (msg, bound(1, ctx->ratemul*4000, 65535));
|
MSG_WriteShort (msg, bound(1, ctx->ratemul*4000, 65535));
|
||||||
|
|
|
@ -1043,10 +1043,14 @@ void SV_SendClientPrespawnInfo(client_t *client)
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
int maxclientsupportedsounds = 256;
|
int maxclientsupportedsounds = 256;
|
||||||
#ifdef PEXT_SOUNDDBL
|
#ifdef PEXT_SOUNDDBL
|
||||||
if (client->fteprotocolextensions & PEXT_SOUNDDBL)
|
if (client->fteprotocolextensions & PEXT_SOUNDDBL)
|
||||||
maxclientsupportedsounds = MAX_PRECACHE_SOUNDS;
|
maxclientsupportedsounds = MAX_PRECACHE_SOUNDS;
|
||||||
#endif
|
#endif
|
||||||
|
#ifdef PEXT_SOUNDDBL
|
||||||
|
if (client->fteprotocolextensions2 & PEXT2_REPLACEMENTDELTAS)
|
||||||
|
maxclientsupportedsounds = MAX_PRECACHE_SOUNDS;
|
||||||
|
#endif
|
||||||
started = false;
|
started = false;
|
||||||
|
|
||||||
//allows stalling for the soundlist command, for compat.
|
//allows stalling for the soundlist command, for compat.
|
||||||
|
@ -1060,7 +1064,7 @@ void SV_SendClientPrespawnInfo(client_t *client)
|
||||||
{
|
{
|
||||||
started = true;
|
started = true;
|
||||||
client->prespawn_allow_soundlist = false;
|
client->prespawn_allow_soundlist = false;
|
||||||
#ifdef PEXT_SOUNDDBL
|
#if defined(PEXT_SOUNDDBL) || defined(PEXT2_REPLACEMENTDELTAS)
|
||||||
if (client->prespawn_idx > 255)
|
if (client->prespawn_idx > 255)
|
||||||
{
|
{
|
||||||
MSG_WriteByte (&client->netchan.message, svcfte_soundlistshort);
|
MSG_WriteByte (&client->netchan.message, svcfte_soundlistshort);
|
||||||
|
@ -1164,7 +1168,7 @@ void SV_SendClientPrespawnInfo(client_t *client)
|
||||||
{
|
{
|
||||||
started = true;
|
started = true;
|
||||||
client->prespawn_allow_modellist = false;
|
client->prespawn_allow_modellist = false;
|
||||||
#ifdef PEXT_SOUNDDBL
|
#if defined(PEXT_SOUNDDBL) || defined(PEXT2_REPLACEMENTDELTAS)
|
||||||
if (client->prespawn_idx > 255)
|
if (client->prespawn_idx > 255)
|
||||||
{
|
{
|
||||||
MSG_WriteByte (&client->netchan.message, svcfte_modellistshort);
|
MSG_WriteByte (&client->netchan.message, svcfte_modellistshort);
|
||||||
|
|