Several changes

- Additional credits screen for Quake3Quest
- Fix for world moving when weapon is moved on a multiplayer server
- Make player setup model move within a 90 degree arc so it always visible
This commit is contained in:
Simon 2022-03-17 21:41:42 +00:00
parent 5fb823ad95
commit 63c284f1b9
7 changed files with 100 additions and 20 deletions

View file

@ -2,8 +2,8 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android" <manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.drbeef.ioq3quest" package="com.drbeef.ioq3quest"
android:installLocation="preferExternal" android:installLocation="preferExternal"
android:versionCode="35" android:versionCode="36"
android:versionName="0.24.0"> android:versionName="0.25.0">
<uses-feature android:name="android.hardware.vr.headtracking" android:version="1" android:required="true" /> <uses-feature android:name="android.hardware.vr.headtracking" android:version="1" android:required="true" />
<uses-feature android:glEsVersion="0x00030001" /> <uses-feature android:glEsVersion="0x00030001" />
<!-- <uses-feature android:name="oculus.software.overlay_keyboard" android:required="false"/>--> <!-- <uses-feature android:name="oculus.software.overlay_keyboard" android:required="false"/>-->

View file

@ -2823,8 +2823,9 @@ void CG_DrawActive( void ) {
vec3_t pos, hmdposition, vieworg; vec3_t pos, hmdposition, vieworg;
VectorClear(pos); VectorClear(pos);
VectorSubtract(vr->hmdposition, vr->hmdorigin, hmdposition); VectorSubtract(vr->hmdposition, vr->hmdorigin, hmdposition);
rotateAboutOrigin(hmdposition[2], hmdposition[0],
cg.refdefViewAngles[YAW] - vr->calculated_weaponangles[YAW], pos); float angleYaw = SHORT2ANGLE(cg.predictedPlayerState.delta_angles[YAW]) + (vr->clientviewangles[YAW] - vr->hmdorientation[YAW]);
rotateAboutOrigin(hmdposition[2], hmdposition[0], angleYaw, pos);
VectorScale(pos, worldscale, pos); VectorScale(pos, worldscale, pos);
VectorSubtract(cg.refdef.vieworg, pos, vieworg); VectorSubtract(cg.refdef.vieworg, pos, vieworg);

View file

@ -31,6 +31,7 @@ CREDITS
#include "ui_local.h" #include "ui_local.h"
#include "../qcommon/qcommon.h"
typedef struct { typedef struct {
menuframework_s menu; menuframework_s menu;
@ -84,6 +85,88 @@ static void UI_CreditMenu_Draw_ioq3( void ) {
} }
/*
===============
UI_CreditMenu_Draw_ioq3
===============
*/
static void UI_CreditMenu_Draw_q3q( void ) {
int y;
int i;
/*
Quake3Quest by Team Beef & Friends
-------------------------------------
Lead programmer
Dr Beef
Additional coding
Baggyg, MuaDiB, Lubos, Sparkie
Additional Contributions
Bummser, Skillfur, Ceno, Cukier, Eispfogel, Pizzaluigi
Dedicated Beta Testers
XQuader, Ceno, Cukier, Bummser, Retro1N, Benny91, April, Ikarus,
Bim, Lubos, MasakaPete, Config2, Maniac, Ghostdog72, Slydog43,
Cornelius, Ferret, RealityForge, PvtGenO, SatanSlayer
Special Thanks to the whole discord!
*/
y = 12;
UI_DrawProportionalString( 320, y, "Quake3Quest by Team Beef & Friends", UI_CENTER|UI_SMALLFONT, color_red );
y += PROP_HEIGHT * PROP_SMALL_SIZE_SCALE;
UI_DrawProportionalString( 320, y, "----------------------------------", UI_CENTER|UI_SMALLFONT, color_white );
y += 1.42 * PROP_HEIGHT * PROP_SMALL_SIZE_SCALE;
UI_DrawProportionalString( 320, y, "Team Beef are DrBeef, Baggyg, Bummser", UI_CENTER|UI_SMALLFONT, color_blue );
y += 1.42 * PROP_HEIGHT * PROP_SMALL_SIZE_SCALE;
UI_DrawProportionalString( 320, y, "Lead programmer", UI_CENTER|UI_SMALLFONT, color_red );
y += PROP_HEIGHT * PROP_SMALL_SIZE_SCALE;
UI_DrawString( 320, y, "DrBeef", UI_CENTER|UI_SMALLFONT, color_white );
y += 1.42 * PROP_HEIGHT * PROP_SMALL_SIZE_SCALE;
UI_DrawProportionalString( 320, y, "Companion App", UI_CENTER|UI_SMALLFONT, color_red );
y += PROP_HEIGHT * PROP_SMALL_SIZE_SCALE;
UI_DrawString( 320, y, "Baggyg", UI_CENTER|UI_SMALLFONT, color_white );
y += 1.42 * PROP_HEIGHT * PROP_SMALL_SIZE_SCALE;
UI_DrawProportionalString( 320, y, "Additional Quake3Quest coding", UI_CENTER|UI_SMALLFONT, color_red );
y += PROP_HEIGHT * PROP_SMALL_SIZE_SCALE;
UI_DrawString( 320, y, "Baggyg, MuadDiB, Lubos, Sparkie", UI_CENTER|UI_SMALLFONT, color_white );
y += 1.42 * PROP_HEIGHT * PROP_SMALL_SIZE_SCALE;
UI_DrawProportionalString( 320, y, "Additional Contributions", UI_CENTER|UI_SMALLFONT, color_red );
y += PROP_HEIGHT * PROP_SMALL_SIZE_SCALE;
UI_DrawString( 320, y, "Bummser, Skillfur, Ceno, Cukier, Eispfogel, Pizzaluigi", UI_CENTER|UI_SMALLFONT, color_white );
y += 1.42 * PROP_HEIGHT * PROP_SMALL_SIZE_SCALE;
UI_DrawProportionalString( 320, y, "Dedicated Beta Testers", UI_CENTER|UI_SMALLFONT, color_red );
y += PROP_HEIGHT * PROP_SMALL_SIZE_SCALE;
UI_DrawString( 320, y, "XQuader, Ceno, Cukier, Bummser, Retro1N, Benny91, April, Ikarus,", UI_CENTER|UI_SMALLFONT, color_white );
y += PROP_HEIGHT * PROP_SMALL_SIZE_SCALE;
UI_DrawString( 320, y, "Bim, Lubos, MasakaPete, Config2, Maniac, Ghostdog72, Slydog43,", UI_CENTER|UI_SMALLFONT, color_white );
y += PROP_HEIGHT * PROP_SMALL_SIZE_SCALE;
UI_DrawString( 320, y, "Cornelius, Ferret, RealityForge, PvtGenO, SatanSlayer", UI_CENTER|UI_SMALLFONT, color_white );
y += 1.42 * PROP_HEIGHT * PROP_SMALL_SIZE_SCALE;
UI_DrawProportionalString( 320, y, "Special Thanks to the whole Team Beef discord!", UI_CENTER|UI_SMALLFONT, color_red );
qboolean skipIOQ3Credits = trap_Cvar_VariableValue("skip_ioq3_credits") == 1.0f;
if (skipIOQ3Credits)
{
y += 1.42 * PROP_HEIGHT * PROP_SMALL_SIZE_SCALE;
UI_DrawProportionalString(320, y, "..and additional thanks to all the", UI_CENTER | UI_SMALLFONT, color_orange);
y += PROP_HEIGHT * PROP_SMALL_SIZE_SCALE;
UI_DrawProportionalString(320, y, "original ioquake3 contributors!", UI_CENTER | UI_SMALLFONT, color_orange);
}
UI_DrawString( 320, 459, "Quake3Quest: https://www.quake3.quakevr.com/", UI_CENTER|UI_SMALLFONT, color_red );
}
/* /*
================= =================
UI_CreditMenu_Key UI_CreditMenu_Key
@ -94,8 +177,15 @@ static sfxHandle_t UI_CreditMenu_Key( int key ) {
return 0; return 0;
} }
qboolean skipIOQ3Credits = trap_Cvar_VariableValue("skip_ioq3_credits") == 1.0f;
s_credits.frame++; s_credits.frame++;
if (s_credits.frame == 1) { if (s_credits.frame == 1) {
s_credits.menu.draw = UI_CreditMenu_Draw_q3q;
} else if (s_credits.frame == 2 && !skipIOQ3Credits) {
//Only show these once the first time someone plays
trap_Cvar_SetValue("skip_ioq3_credits", 1.0f);
trap_Cmd_ExecuteText( EXEC_APPEND, "writeconfig " Q3CONFIG_CFG "/n");
s_credits.menu.draw = UI_CreditMenu_Draw_ioq3; s_credits.menu.draw = UI_CreditMenu_Draw_ioq3;
} else { } else {
trap_Cmd_ExecuteText( EXEC_APPEND, "quit\n" ); trap_Cmd_ExecuteText( EXEC_APPEND, "quit\n" );
@ -158,7 +248,7 @@ static void UI_CreditMenu_Draw( void ) {
UI_DrawProportionalString( 320, y, "Eric Webb", UI_CENTER|UI_SMALLFONT, color_white ); UI_DrawProportionalString( 320, y, "Eric Webb", UI_CENTER|UI_SMALLFONT, color_white );
y += 1.35 * PROP_HEIGHT * PROP_SMALL_SIZE_SCALE; y += 1.35 * PROP_HEIGHT * PROP_SMALL_SIZE_SCALE;
UI_DrawString( 320, y, "To order: 1-800-idgames www.quake3arena.com www.idsoftware.com", UI_CENTER|UI_SMALLFONT, color_red ); UI_DrawString( 320, y, "Buy the full game on Steam: https://store.steampowered.com/app/2200/Quake_III_Arena", UI_CENTER|UI_SMALLFONT, color_red );
y += SMALLCHAR_HEIGHT; y += SMALLCHAR_HEIGHT;
UI_DrawString( 320, y, "Quake III Arena(c) 1999-2000, Id Software, Inc. All Rights Reserved", UI_CENTER|UI_SMALLFONT, color_red ); UI_DrawString( 320, y, "Quake III Arena(c) 1999-2000, Id Software, Inc. All Rights Reserved", UI_CENTER|UI_SMALLFONT, color_red );
} }

View file

@ -591,7 +591,7 @@ static void UI_PlayerAngles( playerInfo_t *pi, vec3_t legs[3], vec3_t torso[3],
float dest; float dest;
float adjust; float adjust;
pi->viewAngles[YAW] = AngleNormalize360(uis.realtime / 50.0f); pi->viewAngles[YAW] = 180 + (45.0f * sinf(DEG2RAD(AngleNormalize360(uis.realtime / 40.0f))));
VectorCopy( pi->viewAngles, headAngles ); VectorCopy( pi->viewAngles, headAngles );
headAngles[YAW] = AngleMod( headAngles[YAW] ); headAngles[YAW] = AngleMod( headAngles[YAW] );
@ -805,8 +805,6 @@ void UI_DrawPlayer( float x, float y, float w, float h, playerInfo_t *pi, int ti
VectorCopy (legs.origin, legs.oldorigin); VectorCopy (legs.origin, legs.oldorigin);
UI_ScaleModel(&legs); UI_ScaleModel(&legs);
//UI_ScaleModel(&torso);
//UI_ScaleModel(&head);
trap_R_AddRefEntityToScene( &legs ); trap_R_AddRefEntityToScene( &legs );

View file

@ -2947,7 +2947,7 @@ void Com_WriteConfiguration( void ) {
Com_WriteConfigToFile( Q3CONFIG_CFG ); Com_WriteConfigToFile( Q3CONFIG_CFG );
// not needed for dedicated or standalone // not needed for dedicated or standalone
#if !defined(DEDICATED) && !defined(STANDALONE) #if 0 //!defined(DEDICATED) && !defined(STANDALONE)
if(!com_standalone->integer) if(!com_standalone->integer)
{ {
const char *gamedir; const char *gamedir;

View file

@ -57,6 +57,7 @@ engine_t* VR_Init( ovrJava java )
void VR_InitCvars( void ) void VR_InitCvars( void )
{ {
Cvar_Get ("skip_ioq3_credits", "0.0", CVAR_ARCHIVE);
vr_worldscale = Cvar_Get ("vr_worldscale", "32.0", CVAR_ARCHIVE); vr_worldscale = Cvar_Get ("vr_worldscale", "32.0", CVAR_ARCHIVE);
vr_hudDepth = Cvar_Get ("vr_hudDepth", "3", CVAR_ARCHIVE); vr_hudDepth = Cvar_Get ("vr_hudDepth", "3", CVAR_ARCHIVE);
vr_righthanded = Cvar_Get ("vr_righthanded", "1", CVAR_ARCHIVE); vr_righthanded = Cvar_Get ("vr_righthanded", "1", CVAR_ARCHIVE);

View file

@ -51,16 +51,6 @@ typedef struct {
vec3_t offhandposition; vec3_t offhandposition;
vec2_t thumbstick_location[2]; //left / right thumbstick locations - used in cgame vec2_t thumbstick_location[2]; //left / right thumbstick locations - used in cgame
//////////////////////////////////////
// Test stuff for weapon alignment
//////////////////////////////////////
char test_name[256];
float test_scale;
vec3_t test_angles;
vec3_t test_offset;
} vr_clientinfo_t; } vr_clientinfo_t;
#endif //vr_clientinfo_h #endif //vr_clientinfo_h