Compare commits

...
24 Commits
Author SHA1 Message Date
OM 312332ac5e Fixed weapon commands not working as intended 2023-05-23 01:57:18 +02:00
OM 27dcbdb49a Removed **HOLSTERWEAPON** state condition (useless) 2023-05-23 01:56:19 +02:00
OM 96ecb4535a **CG_WeaponCommandButtonBits** get iWeaponCommand before setting it to 0 2023-05-23 01:55:54 +02:00
OM f1f1f6e073 Fixed stackoverflow issues 2023-05-23 00:17:03 +02:00
OM 55dc84d932 Fixed CGM values for AA and SH/BT 2023-05-23 00:08:12 +02:00
OM 6c874641d7 Increased **MAX_RELIABLE_COMMANDS** to 512 2023-05-22 23:28:30 +02:00
OM fe01523cb1 Using viewmodel constants from bg_public.h 2023-05-22 23:28:18 +02:00
OM 827bd38603 Fixed bits value on spearhead/breakthrough 2023-05-22 23:28:01 +02:00
OM 862142b6c4 Added farplane stuff from spearhead/breakthrough (this fixes client version >=2.0 rendering maps incorrectly) 2023-05-22 23:27:40 +02:00
OM 014e86747f Added a new screenshot 2023-05-22 18:01:11 +02:00
OM 08057f52bc Fixed bad morph/weight index on ARM 2023-05-22 18:00:58 +02:00
OM d3870ccf45 Compilation fixes for ARM 2023-05-22 17:33:26 +02:00
OM e54f4a65f9 altname fix 2023-05-22 13:44:37 +02:00
OM a69aa0830a Removed **Com_Error** assertion on debug builds 2023-05-22 13:37:07 +02:00
OM fe8170e102 Added MESSAGE_CHAT_GREEN (Spearhead and Breakthrough) 2023-05-22 13:07:37 +02:00
OM c660e0162f Added compressed textures support 2023-05-22 13:02:14 +02:00
OM 55ad4dacdd Added DDS support 2023-05-22 13:01:52 +02:00
OM dd0799b52f Implemented printdeathmsg 2023-05-22 13:01:38 +02:00
OM d546dd9895 Incremented patch number 2023-05-22 12:31:50 +02:00
OM 389da58ec5 Fixed the scoreboard still showing after the intermission 2023-05-22 12:31:38 +02:00
OM 4e3eb02915 Call **ForceHide** instead of **ShowMenu** in **UI_RemoveHud_f** (this fixes hud elements like stopwatch not hidding) 2023-05-22 12:31:21 +02:00
OM 756198a02c **CG_Stopwatch_f** behavior is different on Spearhead and Breakthrough servers 2023-05-22 12:30:42 +02:00
OM 9a6e7f23f9 **CG_DrawStopwatch** Refactor 2023-05-22 12:30:20 +02:00
OM c4aca55b1a Minor fixes 2023-05-22 02:38:43 +02:00
47 changed files with 1077 additions and 497 deletions

No files matched your search

+2
View File
@@ -1,4 +1,6 @@
build
mohaa-re
out
Makefile.local
*.swp
*tags
+5 -3
View File
@@ -91,9 +91,11 @@ Visual Studio (2019 or 2022) is generally preferred.
## Screenshots
![](docs/images/opm_53_tt_1.png)
![](docs/images/opm_50b_1.png)
![](docs/images/opm_50b_2.png)
| | |
|---------------------------------------------------------------------|---------------------------------------------------------------------------|
| ![](docs/images/opm_53_tt_1.png "Playing on a Breakthrough server") | ![](docs/images/opm_50b_1.png) |
| ![](docs/images/opm_50b_2.png) | ![](docs/images/opm-arm_53_tt_1.png "OpenMoHAA on Raspberry") |
## Third party
+3 -2
View File
@@ -123,7 +123,7 @@ void CG_ScoresUp_f( void )
}
cg.showScores = qfalse;
cgi.UI_HideScoreBoard(cg.scoresMenuName);
cgi.UI_HideScoreBoard();
}
baseshader_t* CG_GetShaderUnderCrosshair(qboolean bVerbose, trace_t* pRetTrace)
@@ -562,11 +562,12 @@ int CG_WeaponCommandButtonBits(void)
return 0;
}
iShiftedWeaponCommand = cg.iWeaponCommand << 7;
cg.iWeaponCommandSend++;
if (cg.iWeaponCommandSend > 2) {
cg.iWeaponCommand = 0;
}
iShiftedWeaponCommand = cg.iWeaponCommand << 7;
return iShiftedWeaponCommand & WEAPON_COMMAND_MASK;
}
+28 -10
View File
@@ -816,7 +816,7 @@ void CG_DrawPlayerTeam()
return;
}
handle = NULL;
handle = 0;
if (cg.snap->ps.stats[STAT_TEAM] == 3)
{
handle = cgi.R_RegisterShader("textures/hud/allies");
@@ -851,7 +851,7 @@ void CG_DrawPlayerEntInfo()
}
iClientNum = cg.snap->ps.stats[STAT_INFOCLIENT];
handle = NULL;
handle = 0;
pszClientInfo = CG_ConfigString(iClientNum + CS_PLAYERS);
pszName = Info_ValueForKey(pszClientInfo, "name");
@@ -982,14 +982,32 @@ void CG_DrawStopwatch()
{
int iFraction;
if (!cg_hud->integer || !cgi.stopWatch->iStartTime
|| cgi.stopWatch->iStartTime >= cgi.stopWatch->iEndTime
|| cgi.stopWatch->iEndTime <= cg.time
// don't draw the stopwatch with the objective menu
|| cg.ObjectivesCurrentAlpha >= 0.02
// the player isn't alive
|| cg.snap && cg.snap->ps.stats[STAT_HEALTH] <= 0)
{
if (!cg_hud->integer) {
cgi.Cmd_Execute(EXEC_NOW, "ui_removehud hud_stopwatch\n");
return;
}
if (!cgi.stopWatch->iStartTime) {
cgi.Cmd_Execute(EXEC_NOW, "ui_removehud hud_stopwatch\n");
return;
}
if (cgi.stopWatch->iStartTime >= cgi.stopWatch->iEndTime) {
cgi.Cmd_Execute(EXEC_NOW, "ui_removehud hud_stopwatch\n");
return;
}
if (cgi.stopWatch->iEndTime <= cg.time) {
cgi.Cmd_Execute(EXEC_NOW, "ui_removehud hud_stopwatch\n");
return;
}
if (cg.ObjectivesCurrentAlpha >= 0.02) {
cgi.Cmd_Execute(EXEC_NOW, "ui_removehud hud_stopwatch\n");
return;
}
if (cg.snap && cg.snap->ps.stats[STAT_HEALTH] <= 0) {
cgi.Cmd_Execute(EXEC_NOW, "ui_removehud hud_stopwatch\n");
return;
}
+1 -1
View File
@@ -51,7 +51,7 @@ clightstyle_t cg_lightstyle[ MAX_LIGHTSTYLES * 2 ];
CG_LightStyleColor
================
*/
qboolean CG_LightStyleColor( int style, int realtime, float color[4], qboolean clamp )
qboolean CG_LightStyleColor( int style, int realtime, vec4_t color, qboolean clamp )
{
clightstyle_t *ls;
int i, time;
+4 -4
View File
@@ -302,7 +302,7 @@ typedef struct {
float farplane_bias;
vec3_t farplane_color;
qboolean farplane_cull;
int skyboxFarplane;
float skyboxFarplane;
qboolean renderTerrain;
float farclipOverride;
vec3_t farplaneColorOverride;
@@ -312,7 +312,7 @@ typedef struct {
float sky_alpha;
vec3_t sky_origin;
vec3_t sky_axis[3]; // rotation vectors
int skyboxSpeed;
float skyboxSpeed;
// weapon viewkick recoil
float viewkick[2];
@@ -810,9 +810,9 @@ void CG_MultiBeam( centity_t *cent );
// cg_lightstyles.cpp
void CG_SetLightStyle( int num, const char *s );
#ifdef __cplusplus
qboolean CG_LightStyleColor( int style, int realtime, float color[4], qboolean clamp = qfalse );
qboolean CG_LightStyleColor( int style, int realtime, vec4_t color, qboolean clamp = qfalse );
#else
qboolean CG_LightStyleColor( int style, int realtime, float color[4], qboolean clamp );
qboolean CG_LightStyleColor( int style, int realtime, vec4_t color, qboolean clamp );
#endif
void CG_ClearLightStyles( void );
int CG_RegisterLightStyle( const char * name );
+1 -1
View File
@@ -541,7 +541,7 @@ void CG_ParseCGMessage()
// get the integer as string
snprintf(cTmp, sizeof(cTmp), "%d", iLarge);
if (iType == 23) {
if (iType == 26) {
sEffect = "models/fx/crates/debris_";
}
else {
+12 -12
View File
@@ -229,22 +229,22 @@ void CG_ParseScores()
if (cgs.gametype == GT_TOW)
{
cgi.Cvar_Set("tow_allied_obj1", va("%i", cgi.Argv(iCurrentEntry++)));
cgi.Cvar_Set("tow_allied_obj2", va("%i", cgi.Argv(iCurrentEntry++)));
cgi.Cvar_Set("tow_allied_obj3", va("%i", cgi.Argv(iCurrentEntry++)));
cgi.Cvar_Set("tow_allied_obj4", va("%i", cgi.Argv(iCurrentEntry++)));
cgi.Cvar_Set("tow_allied_obj5", va("%i", cgi.Argv(iCurrentEntry++)));
cgi.Cvar_Set("tow_axis_obj1", va("%i", cgi.Argv(iCurrentEntry++)));
cgi.Cvar_Set("tow_axis_obj2", va("%i", cgi.Argv(iCurrentEntry++)));
cgi.Cvar_Set("tow_axis_obj3", va("%i", cgi.Argv(iCurrentEntry++)));
cgi.Cvar_Set("tow_axis_obj4", va("%i", cgi.Argv(iCurrentEntry++)));
cgi.Cvar_Set("tow_axis_obj5", va("%i", cgi.Argv(iCurrentEntry++)));
cgi.Cvar_Set("tow_allied_obj1", va("%i", (int)atof(cgi.Argv(iCurrentEntry++))));
cgi.Cvar_Set("tow_allied_obj2", va("%i", (int)atof(cgi.Argv(iCurrentEntry++))));
cgi.Cvar_Set("tow_allied_obj3", va("%i", (int)atof(cgi.Argv(iCurrentEntry++))));
cgi.Cvar_Set("tow_allied_obj4", va("%i", (int)atof(cgi.Argv(iCurrentEntry++))));
cgi.Cvar_Set("tow_allied_obj5", va("%i", (int)atof(cgi.Argv(iCurrentEntry++))));
cgi.Cvar_Set("tow_axis_obj1", va("%i", (int)atof(cgi.Argv(iCurrentEntry++))));
cgi.Cvar_Set("tow_axis_obj2", va("%i", (int)atof(cgi.Argv(iCurrentEntry++))));
cgi.Cvar_Set("tow_axis_obj3", va("%i", (int)atof(cgi.Argv(iCurrentEntry++))));
cgi.Cvar_Set("tow_axis_obj4", va("%i", (int)atof(cgi.Argv(iCurrentEntry++))));
cgi.Cvar_Set("tow_axis_obj5", va("%i", (int)atof(cgi.Argv(iCurrentEntry++))));
}
if (cgs.gametype == GT_LIBERATION)
{
cgi.Cvar_Set("scoreboard_toggle1", va("%i", cgi.Argv(iCurrentEntry++)));
cgi.Cvar_Set("scoreboard_toggle2", va("%i", cgi.Argv(iCurrentEntry++)));
cgi.Cvar_Set("scoreboard_toggle1", va("%i", (int)atof(cgi.Argv(iCurrentEntry++))));
cgi.Cvar_Set("scoreboard_toggle2", va("%i", (int)atof(cgi.Argv(iCurrentEntry++))));
}
for (i = 0; i < iEntryCount; ++i)
+65 -5
View File
@@ -219,16 +219,32 @@ CG_Stopwatch_f
================
*/
#if TARGET_GAME_PROTOCOL >= 15
static void CG_Stopwatch_f()
{
if (cgi.Argc() < 3) {
Com_Error(1, "stopwatch didn't have 2 parameters");
}
if (cgi.Argc() < 3) {
Com_Error(ERR_DROP, "stopwatch didn't have 2 parameters");
}
cgi.stopWatch->iStartTime = 1000 * atoi(cgi.Argv(1));
cgi.stopWatch->iEndTime = cgi.stopWatch->iStartTime + 1000 * atoi(cgi.Argv(2));
cgi.stopWatch->iStartTime = atoi(cgi.Argv(1));
cgi.stopWatch->iEndTime = cgi.stopWatch->iStartTime + 1000 * atoi(cgi.Argv(2));
}
#else
static void CG_Stopwatch_f()
{
if (cgi.Argc() < 3) {
Com_Error(ERR_DROP, "stopwatch didn't have 2 parameters");
}
cgi.stopWatch->iStartTime = 1000 * atoi(cgi.Argv(1));
cgi.stopWatch->iEndTime = cgi.stopWatch->iStartTime + 1000 * atoi(cgi.Argv(2));
}
#endif
/*
================
CG_ServerLag_f
@@ -271,6 +287,50 @@ static void CG_ServerCommand(void)
}
return;
}
else if (!strcmp(cmd, "printdeathmsg")) {
const char* s1, * s2, * s3, * s4, * s5;
const char* result1, * result2;
int hudColor;
result1 = NULL;
result2 = NULL;
s1 = cgi.Argv(1);
s2 = cgi.Argv(2);
s3 = cgi.Argv(3);
s4 = cgi.Argv(4);
s5 = cgi.Argv(5);
if (*s5 == tolower(*s5)) {
hudColor = 4;
} else {
hudColor = 5;
}
if (*s1 != 'x')
result1 = cgi.LV_ConvertString(s1);
if (*s2 != 'x')
result2 = cgi.LV_ConvertString(s2);
if (tolower(*s5) == 's')
{
cgi.Printf("%c%s %s\n", hudColor, s4, result1);
}
else if (tolower(*s5) == 'p')
{
if (*s2 == 'x')
cgi.Printf("%c%s %s %s\n", hudColor, s4, result1, s3);
else
cgi.Printf("%c%s %s %s%s\n", hudColor, s4, result1, s3, result2);
}
else if (tolower(*s5) == 'w')
{
cgi.Printf("%c%s %s\n", hudColor, s4, result1);
}
else
{
cgi.Printf("%s", cgi.Argv(1));
}
return;
}
if (!strcmp(cmd, "stufftext")) {
cgi.Cmd_Stuff(cgi.Argv(1));
+1 -1
View File
@@ -799,7 +799,7 @@ void CG_DrawActiveFrame( int serverTime, int frameTime, stereoFrame_t stereoView
cgi.SendClientCommand("stats");
}
cg.bIntermissionDisplay = qfalse;
cg.bIntermissionDisplay = qtrue;
}
else if (cg.bIntermissionDisplay)
{
+81 -79
View File
@@ -242,6 +242,16 @@ void IN_MoveleftDown(void) {IN_KeyDown(&in_moveleft);}
void IN_MoveleftUp(void) {IN_KeyUp(&in_moveleft);}
void IN_MoverightDown(void) {IN_KeyDown(&in_moveright);}
void IN_MoverightUp(void) {IN_KeyUp(&in_moveright);}
void IN_AttackPrimaryDown(void) { IN_KeyDown(&in_buttons[0]);}
void IN_AttackPrimaryUp(void) { IN_KeyUp(&in_buttons[0]); }
void IN_AttackSecondaryDown(void) { IN_KeyDown(&in_buttons[1]); }
void IN_AttackSecondaryUp(void) { IN_KeyUp(&in_buttons[1]); }
void IN_UseDown(void) { IN_KeyDown(&in_buttons[3]); }
void IN_UseUp(void) { IN_KeyUp(&in_buttons[3]); }
void IN_LeanLeftDown(void) { IN_KeyDown(&in_buttons[4]); }
void IN_LeanLeftUp(void) { IN_KeyUp(&in_buttons[4]); }
void IN_LeanRightDown(void) { IN_KeyDown(&in_buttons[5]); }
void IN_LeanRightUp(void) { IN_KeyUp(&in_buttons[5]); }
void IN_SpeedDown(void) {IN_KeyDown(&in_speed);}
void IN_SpeedUp(void) {IN_KeyUp(&in_speed);}
@@ -341,22 +351,10 @@ void CL_KeyMove( usercmd_t *cmd ) {
int movespeed;
int forward, side, up;
//
// adjust for speed key / running
// the walking flag is to keep animations consistant
// even during acceleration and develeration
//
if ( in_speed.active ^ cl_run->integer ) {
movespeed = 127;
cmd->buttons |= BUTTON_RUN;
} else {
cmd->buttons &= ~BUTTON_RUN;
movespeed = 64;
}
forward = 0;
side = 0;
up = 0;
movespeed = 127;
if ( in_strafe.active ) {
side += movespeed * CL_KeyState (&in_right);
side -= movespeed * CL_KeyState (&in_left);
@@ -461,16 +459,8 @@ CL_JoystickMove
=================
*/
void CL_JoystickMove( usercmd_t *cmd ) {
int movespeed;
float anglespeed;
if ( in_speed.active ^ cl_run->integer ) {
movespeed = 2;
} else {
movespeed = 1;
cmd->buttons |= BUTTON_RUN;
}
if ( in_speed.active ) {
anglespeed = 0.001 * cls.frametime * cl_anglespeedkey->value;
} else {
@@ -595,7 +585,7 @@ void CL_CmdButtons( usercmd_t *cmd ) {
// allow the game to know if any key at all is
// currently pressed, even if it isn't bound to anything
if ( anykeydown && Key_GetCatcher() == 0) {
cmd->buttons |= BUTTON_ANY2;
cmd->buttons |= BUTTON_MOUSE;
}
if (anykeydown) {
@@ -988,64 +978,76 @@ CL_InitInput
============
*/
void CL_InitInput( void ) {
Cmd_AddCommand ("centerview",IN_CenterView);
Cmd_AddCommand("centerview", IN_CenterView);
Cmd_AddCommand ("+moveup",IN_UpDown);
Cmd_AddCommand ("-moveup",IN_UpUp);
Cmd_AddCommand ("+movedown",IN_DownDown);
Cmd_AddCommand ("-movedown",IN_DownUp);
Cmd_AddCommand ("+left",IN_LeftDown);
Cmd_AddCommand ("-left",IN_LeftUp);
Cmd_AddCommand ("+right",IN_RightDown);
Cmd_AddCommand ("-right",IN_RightUp);
Cmd_AddCommand ("+forward",IN_ForwardDown);
Cmd_AddCommand ("-forward",IN_ForwardUp);
Cmd_AddCommand ("+back",IN_BackDown);
Cmd_AddCommand ("-back",IN_BackUp);
Cmd_AddCommand ("+lookup", IN_LookupDown);
Cmd_AddCommand ("-lookup", IN_LookupUp);
Cmd_AddCommand ("+lookdown", IN_LookdownDown);
Cmd_AddCommand ("-lookdown", IN_LookdownUp);
Cmd_AddCommand ("+strafe", IN_StrafeDown);
Cmd_AddCommand ("-strafe", IN_StrafeUp);
Cmd_AddCommand ("+moveleft", IN_MoveleftDown);
Cmd_AddCommand ("-moveleft", IN_MoveleftUp);
Cmd_AddCommand ("+moveright", IN_MoverightDown);
Cmd_AddCommand ("-moveright", IN_MoverightUp);
Cmd_AddCommand ("+speed", IN_SpeedDown);
Cmd_AddCommand ("-speed", IN_SpeedUp);
Cmd_AddCommand ("+attackprimary", IN_Button0Down);
Cmd_AddCommand ("-attackprimary", IN_Button0Up);
Cmd_AddCommand ("+attacksecondary", IN_Button1Down);
Cmd_AddCommand ("-attacksecondary", IN_Button1Up);
// Cmd_AddCommand ("+speed", IN_Button2Down);
// Cmd_AddCommand ("-speed", IN_Button2Up);
Cmd_AddCommand ("+use", IN_Button3Down);
Cmd_AddCommand ("-use", IN_Button3Up);
Cmd_AddCommand ("+leanleft", IN_Button4Down);
Cmd_AddCommand ("-leanleft", IN_Button4Up);
Cmd_AddCommand ("+leanright", IN_Button5Down);
Cmd_AddCommand ("-leanright", IN_Button5Up);
Cmd_AddCommand ("+button6", IN_Button6Down);
Cmd_AddCommand ("-button6", IN_Button6Up);
Cmd_AddCommand ("+button7", IN_Button7Down);
Cmd_AddCommand ("-button7", IN_Button7Up);
Cmd_AddCommand ("+button8", IN_Button8Down);
Cmd_AddCommand ("-button8", IN_Button8Up);
Cmd_AddCommand ("+button9", IN_Button9Down);
Cmd_AddCommand ("-button9", IN_Button9Up);
Cmd_AddCommand ("+button10", IN_Button10Down);
Cmd_AddCommand ("-button10", IN_Button10Up);
Cmd_AddCommand ("+button11", IN_Button11Down);
Cmd_AddCommand ("-button11", IN_Button11Up);
Cmd_AddCommand ("+button12", IN_Button12Down);
Cmd_AddCommand ("-button12", IN_Button12Up);
Cmd_AddCommand ("+button13", IN_Button13Down);
Cmd_AddCommand ("-button13", IN_Button13Up);
Cmd_AddCommand ("+button14", IN_Button14Down);
Cmd_AddCommand ("-button14", IN_Button14Up);
Cmd_AddCommand ("+mlook", IN_MLookDown);
Cmd_AddCommand ("-mlook", IN_MLookUp);
Cmd_AddCommand("+moveup", IN_UpDown);
Cmd_AddCommand("-moveup", IN_UpUp);
Cmd_AddCommand("+movedown", IN_DownDown);
Cmd_AddCommand("-movedown", IN_DownUp);
Cmd_AddCommand("+left", IN_LeftDown);
Cmd_AddCommand("-left", IN_LeftUp);
Cmd_AddCommand("+right", IN_RightDown);
Cmd_AddCommand("-right", IN_RightUp);
Cmd_AddCommand("+forward", IN_ForwardDown);
Cmd_AddCommand("-forward", IN_ForwardUp);
Cmd_AddCommand("+back", IN_BackDown);
Cmd_AddCommand("-back", IN_BackUp);
Cmd_AddCommand("+lookup", IN_LookupDown);
Cmd_AddCommand("-lookup", IN_LookupUp);
Cmd_AddCommand("+lookdown", IN_LookdownDown);
Cmd_AddCommand("-lookdown", IN_LookdownUp);
Cmd_AddCommand("+strafe", IN_StrafeDown);
Cmd_AddCommand("-strafe", IN_StrafeUp);
Cmd_AddCommand("+moveleft", IN_MoveleftDown);
Cmd_AddCommand("-moveleft", IN_MoveleftUp);
Cmd_AddCommand("+moveright", IN_MoverightDown);
Cmd_AddCommand("-moveright", IN_MoverightUp);
Cmd_AddCommand("+attack", IN_AttackPrimaryDown);
Cmd_AddCommand("-attack", IN_AttackPrimaryUp);
Cmd_AddCommand("+attackprimary", IN_AttackPrimaryDown);
Cmd_AddCommand("-attackprimary", IN_AttackPrimaryUp);
Cmd_AddCommand("+attacksecondary", IN_AttackSecondaryDown);
Cmd_AddCommand("-attacksecondary", IN_AttackSecondaryUp);
Cmd_AddCommand("+use", IN_Button3Down);
Cmd_AddCommand("-use", IN_Button3Up);
Cmd_AddCommand("+leanleft", IN_LeanLeftDown);
Cmd_AddCommand("-leanleft", IN_LeanLeftUp);
Cmd_AddCommand("+leanright", IN_LeanRightDown);
Cmd_AddCommand("-leanright", IN_LeanRightUp);
Cmd_AddCommand("+speed", IN_SpeedUp);
Cmd_AddCommand("-speed", IN_SpeedDown);
Cmd_AddCommand("+button0", IN_Button0Down);
Cmd_AddCommand("-button0", IN_Button0Up);
Cmd_AddCommand("+button1", IN_Button1Down);
Cmd_AddCommand("-button1", IN_Button1Up);
Cmd_AddCommand("+button2", IN_Button2Down);
Cmd_AddCommand("-button2", IN_Button2Up);
Cmd_AddCommand("+button3", IN_Button3Down);
Cmd_AddCommand("-button3", IN_Button3Up);
Cmd_AddCommand("+button4", IN_Button4Down);
Cmd_AddCommand("-button4", IN_Button4Up);
Cmd_AddCommand("+button5", IN_Button5Down);
Cmd_AddCommand("-button5", IN_Button5Up);
Cmd_AddCommand("+button6", IN_Button6Down);
Cmd_AddCommand("-button6", IN_Button6Up);
Cmd_AddCommand("+button7", IN_Button7Down);
Cmd_AddCommand("-button7", IN_Button7Up);
Cmd_AddCommand("+button8", IN_Button8Down);
Cmd_AddCommand("-button8", IN_Button8Up);
Cmd_AddCommand("+button9", IN_Button9Down);
Cmd_AddCommand("-button9", IN_Button9Up);
Cmd_AddCommand("+button10", IN_Button10Down);
Cmd_AddCommand("-button10", IN_Button10Up);
Cmd_AddCommand("+button11", IN_Button11Down);
Cmd_AddCommand("-button11", IN_Button11Up);
Cmd_AddCommand("+button12", IN_Button12Down);
Cmd_AddCommand("-button12", IN_Button12Up);
Cmd_AddCommand("+button13", IN_Button13Down);
Cmd_AddCommand("-button13", IN_Button13Up);
Cmd_AddCommand("+button14", IN_Button14Down);
Cmd_AddCommand("-button14", IN_Button14Up);
Cmd_AddCommand("+mlook", IN_MLookDown);
Cmd_AddCommand("-mlook", IN_MLookUp);
cl_nodelta = Cvar_Get ("cl_nodelta", "0", 0);
cl_debugMove = Cvar_Get ("cl_debugMove", "0", 0);
+7 -5
View File
@@ -29,9 +29,7 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
#include "cl_ui.h"
#if _MSC_VER
#include <intrin.h>
#endif
#include <ctime>
typedef struct {
float fadetime;
@@ -1256,6 +1254,10 @@ void UI_PrintConsole( const char *msg )
bDeathMessage = qtrue;
pColor = &ULightRed;
break;
case MESSAGE_CHAT_GREEN:
bDeathMessage = qtrue;
pColor = &UGreen;
break;
}
msg++;
@@ -4948,7 +4950,7 @@ void UI_RemoveHud_f( void ) {
if( hud && hudList.ObjectInList( hud ) )
{
hud->ShowMenu( NULL );
hud->ForceHide();
hudList.RemoveObject( hud );
}
}
@@ -5439,7 +5441,7 @@ UI_BeginLoadResource
====================
*/
void UI_BeginLoadResource( void ) {
uint64_t time = __rdtsc();
clock_t time = clock();
startCountHigh = time >> 32;
startCountLow = time;
+12 -4
View File
@@ -293,19 +293,27 @@ void UIDMBox::Print( const char *text )
m_items[m_numitems].flags = 0;
if (*text == 2)
if (*text == MESSAGE_CHAT_WHITE)
{
m_items[m_numitems].color = UGrey;
m_items[m_numitems].font = m_fontbold;
m_items[m_numitems].flags |= GMBOX_ITEM_FLAG_BOLD;
m_items[m_numitems].flags |= DMBOX_ITEM_FLAG_BOLD;
text1 = text + 1;
}
else if (*text == 4)
else if (*text == MESSAGE_CHAT_RED)
{
m_items[m_numitems].color = ULightRed;
m_items[m_numitems].font = m_fontbold;
m_items[m_numitems].flags |= GMBOX_ITEM_FLAG_BOLD;
m_items[m_numitems].flags |= DMBOX_ITEM_FLAG_BOLD;
text1 = text + 1;
}
else if (*text == MESSAGE_CHAT_GREEN)
{
m_items[m_numitems].color = UGreen;
m_items[m_numitems].font = m_fontbold;
m_items[m_numitems].flags |= DMBOX_ITEM_FLAG_BOLD;
text1 = text + 1;
}
+12 -12
View File
@@ -238,11 +238,11 @@ void BarrelObject::BarrelThink
if( m_iBarrelType == BARREL_OIL )
{
gi.MSG_StartCGM( 15 );
gi.MSG_StartCGM(CGM_MAKE_EFFECT_1);
}
else
{
gi.MSG_StartCGM( 19 );
gi.MSG_StartCGM(CGM_MAKE_EFFECT_5);
}
m_fFluidAmount -= 1.0f;
@@ -254,11 +254,11 @@ void BarrelObject::BarrelThink
if( m_iBarrelType == BARREL_OIL )
{
gi.MSG_StartCGM( 16 );
gi.MSG_StartCGM(CGM_MAKE_EFFECT_2);
}
else
{
gi.MSG_StartCGM( 20 );
gi.MSG_StartCGM(CGM_MAKE_EFFECT_6);
}
m_fFluidAmount -= 0.75f;
@@ -271,11 +271,11 @@ void BarrelObject::BarrelThink
if( m_iBarrelType == BARREL_OIL )
{
gi.MSG_StartCGM( 17 );
gi.MSG_StartCGM(CGM_MAKE_EFFECT_3);
}
else
{
gi.MSG_StartCGM( 21 );
gi.MSG_StartCGM(CGM_MAKE_EFFECT_7);
}
m_fFluidAmount -= 0.5f;
@@ -294,11 +294,11 @@ void BarrelObject::BarrelThink
if( m_iBarrelType == BARREL_OIL )
{
gi.MSG_StartCGM( 17 );
gi.MSG_StartCGM(CGM_MAKE_EFFECT_3);
}
else
{
gi.MSG_StartCGM( 21 );
gi.MSG_StartCGM(CGM_MAKE_EFFECT_7);
}
gi.MSG_WriteCoord( m_vLeaks[ i ][ 0 ] );
@@ -506,18 +506,18 @@ void BarrelObject::BarrelDamaged
gi.SetBroadcastVisible( vHitPos, vHitPos );
if( m_iBarrelType == BARREL_OIL )
gi.MSG_StartCGM( 18 );
gi.MSG_StartCGM(CGM_MAKE_EFFECT_4);
else
gi.MSG_StartCGM( 22 );
gi.MSG_StartCGM(CGM_MAKE_EFFECT_8);
}
else
{
gi.SetBroadcastVisible( vHitPos, vHitPos );
if( m_iBarrelType == BARREL_OIL )
gi.MSG_StartCGM( 17 );
gi.MSG_StartCGM(CGM_MAKE_EFFECT_3);
else
gi.MSG_StartCGM( 21 );
gi.MSG_StartCGM(CGM_MAKE_EFFECT_7);
}
gi.MSG_WriteCoord( vHitPos[ 0 ] );
+116
View File
@@ -707,6 +707,51 @@ enum vmAnim_e {
VM_ANIM_IDLE_2,
};
enum cg_message_e {
CGM_NONE,
CGM_BULLET_1,
CGM_BULLET_2,
CGM_BULLET_3,
CGM_BULLET_4,
CGM_BULLET_5,
CGM_BULLET_6,
CGM_BULLET_7,
CGM_BULLET_8,
CGM_BULLET_9,
CGM_BULLET_10,
CGM_BULLET_11,
CGM_MELEE_IMPACT,
CGM_EXPLOSION_EFFECT_1,
CGM_EXPLOSION_EFFECT_2,
CGM_EXPLOSION_EFFECT_3,
CGM_EXPLOSION_EFFECT_4,
CGM_PADDING_1,
CGM_MAKE_EFFECT_1,
CGM_MAKE_EFFECT_2,
CGM_MAKE_EFFECT_3,
CGM_MAKE_EFFECT_4,
CGM_MAKE_EFFECT_5,
CGM_MAKE_EFFECT_6,
CGM_MAKE_EFFECT_7,
CGM_MAKE_EFFECT_8,
CGM_MAKE_CRATE_DEBRIS,
CGM_MAKE_WINDOW_DEBRIS,
CGM_BULLET_NO_BARREL_1,
CGM_BULLET_NO_BARREL_2,
CGM_HUDDRAW_SHADER,
CGM_HUDDRAW_ALIGN,
CGM_HUDDRAW_RECT,
CGM_HUDDRAW_VIRTUALSIZE,
CGM_HUDDRAW_COLOR,
CGM_HUDDRAW_ALPHA,
CGM_HUDDRAW_STRING,
CGM_HUDDRAW_FONT,
CGM_NOTIFY_KILL,
CGM_NOTIFY_HIT,
CGM_VOICE_CHAT,
CGM_UNKNOWN_1,
};
#else
enum vmAnim_e {
@@ -727,8 +772,79 @@ enum vmAnim_e {
VM_ANIM_DISABLED,
};
enum cg_message_e {
CGM_NONE,
CGM_BULLET_1,
CGM_BULLET_2,
CGM_BULLET_3,
CGM_BULLET_4,
CGM_BULLET_5,
CGM_BULLET_6,
CGM_BULLET_7,
CGM_BULLET_8,
CGM_BULLET_9,
CGM_BULLET_10,
CGM_MELEE_IMPACT,
CGM_EXPLOSION_EFFECT_1,
CGM_EXPLOSION_EFFECT_2,
CGM_PADDING_1,
CGM_MAKE_EFFECT_1,
CGM_MAKE_EFFECT_2,
CGM_MAKE_EFFECT_3,
CGM_MAKE_EFFECT_4,
CGM_MAKE_EFFECT_5,
CGM_MAKE_EFFECT_6,
CGM_MAKE_EFFECT_7,
CGM_MAKE_EFFECT_8,
CGM_MAKE_CRATE_DEBRIS,
CGM_MAKE_WINDOW_DEBRIS,
CGM_BULLET_NO_BARREL_1,
CGM_BULLET_NO_BARREL_2,
CGM_HUDDRAW_SHADER,
CGM_HUDDRAW_ALIGN,
CGM_HUDDRAW_RECT,
CGM_HUDDRAW_VIRTUALSIZE,
CGM_HUDDRAW_COLOR,
CGM_HUDDRAW_ALPHA,
CGM_HUDDRAW_STRING,
CGM_HUDDRAW_FONT,
CGM_NOTIFY_KILL,
CGM_NOTIFY_HIT,
CGM_VOICE_CHAT,
};
#endif
/*
#define CGM_HUDDRAW_SHADER 27
#define CGM_HUDDRAW_ALIGN 28
#define CGM_HUDDRAW_RECT 29
#define CGM_HUDDRAW_VIRTUALSIZE 30
#define CGM_HUDDRAW_COLOR 31
#define CGM_HUDDRAW_ALPHA 32
#define CGM_HUDDRAW_STRING 33
#define CGM_HUDDRAW_FONT 34
#define CGM_HUDDRAW_TIMER 38
#define CGM_HUDDRAW_3D 39
#define CGM_HUDDRAW_BREAK3D 40
#define CGM_HUDDRAW_FADE 41
#define CGM_HUDDRAW_MOVE 42
#define CGM_HUDDRAW_SCALE 43
#define CGM_VIEWMODELANIM 44
#define CGM_VIEWMODELPREFIX 45
#define CGM_MODHEIGHTFLOAT 46
#define CGM_SETVMASPEED 47
#define CGM_HINTSTRING 48
#define CGM_PLAYLOCALSOUND 49
#define CGM_SETLOCALSOUNDRATE 50
#define CGM_STOPLOCALSOUND 51
#define CGM_HUDDRAW_RECTX 52
#define CGM_HUDDRAW_RECTY 53
#define CGM_HUDDRAW_RECTWH 54
#define CGM_REPLICATION 55
#define CGM_HUDDRAW_DELETE 56
*/
#ifdef __cplusplus
}
#endif
+1 -1
View File
@@ -465,7 +465,7 @@ void CrateObject::CrateKilled
// Tell clients around that a crate is destroyed
gi.SetBroadcastVisible( origin, origin );
gi.MSG_StartCGM( 23 );
gi.MSG_StartCGM(CGM_MAKE_CRATE_DEBRIS);
gi.MSG_WriteCoord( vCenter[ 0 ] );
gi.MSG_WriteCoord( vCenter[ 1 ] );
gi.MSG_WriteCoord( vCenter[ 2 ] );
+3
View File
@@ -6912,12 +6912,15 @@ void Entity::ProcessHint(gentity_t* client, bool bShow)
{
if (sv_reborn->integer)
{
// FIXME: delete
/*
gi.MSG_SetClient(client - g_entities);
// Send the hint string once
gi.MSG_StartCGM(CGM_HINTSTRING);
gi.MSG_WriteString(m_HintString);
gi.MSG_EndCGM();
*/
}
}
else
+50 -64
View File
@@ -503,6 +503,7 @@ Hud::~Hud()
SetNon3D();
}
/*
#ifdef GAME_DLL
SetBroadcast();
@@ -510,6 +511,7 @@ Hud::~Hud()
WriteNumber();
gi.MSG_EndCGM();
#endif
*/
hudElements.RemoveObject( this );
}
@@ -952,7 +954,9 @@ void Hud::FadeOverTime( float time )
fade_alpha_start = alpha;
fade_alpha_target = alpha;
// FIXME: delete
/*
#ifdef GAME_DLL
SetBroadcast();
@@ -961,6 +965,7 @@ void Hud::FadeOverTime( float time )
gi.MSG_WriteFloat( time );
gi.MSG_EndCGM();
#endif
*/
}
void Hud::MoveOverTime( float time )
@@ -982,6 +987,7 @@ void Hud::MoveOverTime( float time )
fade_move_x_target = x;
fade_move_y_target = y;
/*
#ifdef GAME_DLL
SetBroadcast();
@@ -990,6 +996,7 @@ void Hud::MoveOverTime( float time )
gi.MSG_WriteFloat( time );
gi.MSG_EndCGM();
#endif
*/
}
void Hud::Refresh( int clientNumber )
@@ -1092,6 +1099,7 @@ void Hud::Refresh( int clientNumber )
{
SetBroadcast();
/*
gi.MSG_StartCGM( CGM_HUDDRAW_3D );
WriteNumber();
gi.MSG_WriteCoord( org[ 0 ] );
@@ -1103,16 +1111,19 @@ void Hud::Refresh( int clientNumber )
gi.MSG_WriteBits( !!always_show, 1 );
gi.MSG_WriteBits( !!depth, 1 );
gi.MSG_EndCGM();
*/
}
if( fade_alpha )
{
SetBroadcast();
/*
gi.MSG_StartCGM( CGM_HUDDRAW_FADE );
WriteNumber();
gi.MSG_WriteFloat( fade_alpha_current );
gi.MSG_EndCGM();
*/
SetBroadcast();
@@ -1126,6 +1137,7 @@ void Hud::Refresh( int clientNumber )
{
SetBroadcast();
/*
gi.MSG_StartCGM( CGM_HUDDRAW_MOVE );
WriteNumber();
gi.MSG_WriteFloat( fade_move_current );
@@ -1138,10 +1150,12 @@ void Hud::Refresh( int clientNumber )
gi.MSG_WriteShort( ( short )fade_move_x_target );
gi.MSG_WriteShort( ( short )fade_move_y_target );
gi.MSG_EndCGM();
*/
}
if( fade_timer_flags & TIMER_ACTIVE )
{
/*
SetBroadcast();
gi.MSG_StartCGM( CGM_HUDDRAW_TIMER );
@@ -1156,6 +1170,7 @@ void Hud::Refresh( int clientNumber )
}
gi.MSG_EndCGM();
*/
}
}
#endif
@@ -1182,7 +1197,8 @@ void Hud::ScaleOverTime( float time, short w, short h )
fade_scale_w_target = w;
fade_scale_h_target = h;
#ifdef GAME_DLL
// FIXME: delete
/*
width = w;
height = h;
@@ -1194,7 +1210,7 @@ void Hud::ScaleOverTime( float time, short w, short h )
gi.MSG_WriteShort( w );
gi.MSG_WriteShort( h );
gi.MSG_EndCGM();
#endif
*/
}
#ifdef GAME_DLL
@@ -1235,6 +1251,7 @@ void Hud::Set3D( Vector vector_or_offset, qboolean alwaysOnScreen, qboolean hasD
isDimensional = true;
/*
#ifdef GAME_DLL
SetBroadcast();
@@ -1250,19 +1267,20 @@ void Hud::Set3D( Vector vector_or_offset, qboolean alwaysOnScreen, qboolean hasD
gi.MSG_WriteBits( !!hasDepth, 1 );
gi.MSG_EndCGM();
#endif
*/
}
void Hud::SetNon3D()
{
isDimensional = false;
#ifdef GAME_DLL
// FIXME?
/*
SetBroadcast();
gi.MSG_StartCGM( CGM_HUDDRAW_BREAK3D );
WriteNumber();
gi.MSG_EndCGM();
#endif
*/
}
void Hud::SetAlignX( hudAlign_t align )
@@ -1418,29 +1436,18 @@ void Hud::SetRectX( short value )
#ifdef GAME_DLL
SetBroadcast();
if( sv_reborn->integer )
{
gi.MSG_StartCGM( CGM_HUDDRAW_RECTX );
WriteNumber();
gi.MSG_WriteShort( ( short )value );
gi.MSG_EndCGM();
}
else
{
gi.MSG_StartCGM( CGM_HUDDRAW_RECT );
WriteNumber();
gi.MSG_WriteShort( ( short )fade_move_x_target );
gi.MSG_WriteShort( ( short )fade_move_y_target );
gi.MSG_WriteShort( ( short )width );
gi.MSG_WriteShort( ( short )height );
gi.MSG_EndCGM();
}
gi.MSG_StartCGM(CGM_HUDDRAW_RECT);
WriteNumber();
gi.MSG_WriteShort((short)fade_move_x_target);
gi.MSG_WriteShort((short)fade_move_y_target);
gi.MSG_WriteShort((short)width);
gi.MSG_WriteShort((short)height);
gi.MSG_EndCGM();
#endif
}
void Hud::SetRectY( short value )
{
//#ifdef CGAME_DLL
if( fade_move_y_first )
{
fade_move_y_target = value;
@@ -1451,30 +1458,17 @@ void Hud::SetRectY( short value )
y = value;
fade_move = false;
}
//#else
// y = value;
//#endif
#ifdef GAME_DLL
SetBroadcast();
if( sv_reborn->integer )
{
gi.MSG_StartCGM( CGM_HUDDRAW_RECTY );
WriteNumber();
gi.MSG_WriteShort( ( short )value );
gi.MSG_EndCGM();
}
else
{
gi.MSG_StartCGM( CGM_HUDDRAW_RECT );
WriteNumber();
gi.MSG_WriteShort( ( short )fade_move_x_target );
gi.MSG_WriteShort( ( short )fade_move_y_target );
gi.MSG_WriteShort( ( short )width );
gi.MSG_WriteShort( ( short )height );
gi.MSG_EndCGM();
}
gi.MSG_StartCGM(CGM_HUDDRAW_RECT);
WriteNumber();
gi.MSG_WriteShort((short)fade_move_x_target);
gi.MSG_WriteShort((short)fade_move_y_target);
gi.MSG_WriteShort((short)width);
gi.MSG_WriteShort((short)height);
gi.MSG_EndCGM();
#endif
}
@@ -1519,24 +1513,13 @@ void Hud::SetShader( const char * s, float w, float h )
#ifdef GAME_DLL
SetBroadcast();
if( sv_reborn->integer )
{
gi.MSG_StartCGM( CGM_HUDDRAW_RECTWH );
WriteNumber();
gi.MSG_WriteShort( ( short )width );
gi.MSG_WriteShort( ( short )height );
gi.MSG_EndCGM();
}
else
{
gi.MSG_StartCGM( CGM_HUDDRAW_RECT );
WriteNumber();
gi.MSG_WriteShort( ( short )x );
gi.MSG_WriteShort( ( short )y );
gi.MSG_WriteShort( ( short )width );
gi.MSG_WriteShort( ( short )height );
gi.MSG_EndCGM();
}
gi.MSG_StartCGM(CGM_HUDDRAW_RECT);
WriteNumber();
gi.MSG_WriteShort((short)x);
gi.MSG_WriteShort((short)y);
gi.MSG_WriteShort((short)width);
gi.MSG_WriteShort((short)height);
gi.MSG_EndCGM();
SetBroadcast();
@@ -1586,7 +1569,8 @@ void Hud::SetTimer( float time, float fade_at_time )
fade_timer_flags = TIMER_ACTIVE;
#ifdef GAME_DLL
// FIXME...
/*
SetBroadcast();
gi.MSG_StartCGM( CGM_HUDDRAW_TIMER );
@@ -1595,7 +1579,7 @@ void Hud::SetTimer( float time, float fade_at_time )
gi.MSG_WriteFloat( fade_at_time );
gi.MSG_WriteBits( 0, 1 );
gi.MSG_EndCGM();
#endif
*/
}
void Hud::SetTimerUp( float time, float fade_at_time )
@@ -1612,6 +1596,7 @@ void Hud::SetTimerUp( float time, float fade_at_time )
fade_timer_flags = TIMER_ACTIVE | TIMER_UP;
/*
#ifdef GAME_DLL
SetBroadcast();
@@ -1622,6 +1607,7 @@ void Hud::SetTimerUp( float time, float fade_at_time )
gi.MSG_WriteBits( 1, 1 );
gi.MSG_EndCGM();
#endif
*/
}
void Hud::SetVirtualSize( qboolean v )
+25 -16
View File
@@ -38,7 +38,7 @@ void HudWriteNumber( int num )
void HudDrawShader( int info, const char *name )
{
gi.SetBroadcastAll();
gi.MSG_StartCGM(0x1B);
gi.MSG_StartCGM(CGM_HUDDRAW_SHADER);
HudWriteNumber( info ); // c = info
gi.MSG_WriteString(name); // s = name (shader_name)
gi.MSG_EndCGM();
@@ -47,7 +47,7 @@ void HudDrawShader( int info, const char *name )
void HudDrawAlign( int info, int horizontalAlign, int verticalAlign )
{
gi.SetBroadcastAll();
gi.MSG_StartCGM(0x1C);
gi.MSG_StartCGM(CGM_HUDDRAW_ALIGN);
HudWriteNumber( info ); // c = probably "info"
gi.MSG_WriteBits(horizontalAlign, 2); // value = 0,1,2 bits = 2
// 0 - left \
@@ -66,7 +66,7 @@ void HudDrawAlign( int info, int horizontalAlign, int verticalAlign )
void HudDrawRect(int info, int x, int y, int width, int height)
{
gi.SetBroadcastAll();
gi.MSG_StartCGM(0x1D);
gi.MSG_StartCGM(CGM_HUDDRAW_RECT);
HudWriteNumber( info ); // c = probably "info"
gi.MSG_WriteShort(x); // c = probably "x"
gi.MSG_WriteShort(y); // c = probably "y"
@@ -79,7 +79,7 @@ void HudDrawRect(int info, int x, int y, int width, int height)
void HudDrawVirtualSize(int info, int virtualScreen)
{
gi.SetBroadcastAll();
gi.MSG_StartCGM(0x1E);
gi.MSG_StartCGM(CGM_HUDDRAW_VIRTUALSIZE);
HudWriteNumber( info ); // c = info
/*__asm
@@ -116,7 +116,7 @@ void HudDrawColor(int info, float *color)
gi.SetBroadcastAll();
gi.MSG_StartCGM(0x1F);
gi.MSG_StartCGM(CGM_HUDDRAW_COLOR);
HudWriteNumber( info ); // c = info
gi.MSG_WriteByte(temp[0]); // c = color[2]
gi.MSG_WriteByte(temp[1]); // c = color[1] - Values can be messed up. To be tested.
@@ -132,7 +132,7 @@ void HudDrawAlpha(int info, float alpha)
temp = (long int)(alpha*255.0f);
gi.SetBroadcastAll();
gi.MSG_StartCGM(0x20);
gi.MSG_StartCGM(CGM_HUDDRAW_ALPHA);
HudWriteNumber( info ); // c = info
gi.MSG_WriteByte(temp); // c = alpha
gi.MSG_EndCGM();
@@ -144,7 +144,7 @@ void HudDrawAlpha(int info, float alpha)
void HudDrawString(int info, const char *string)
{
gi.SetBroadcastAll();
gi.MSG_StartCGM(0x21);
gi.MSG_StartCGM(CGM_HUDDRAW_STRING);
HudWriteNumber( info ); // c = info
gi.MSG_WriteString(string); // s = string (to show)
gi.MSG_EndCGM();
@@ -154,7 +154,7 @@ void HudDrawString(int info, const char *string)
void HudDrawFont(int info, const char *fontName)
{
gi.SetBroadcastAll();
gi.MSG_StartCGM(0x22);
gi.MSG_StartCGM(CGM_HUDDRAW_FONT);
HudWriteNumber( info ); // c = info
gi.MSG_WriteString(fontName); // s = fontName (to use)
gi.MSG_EndCGM();
@@ -163,6 +163,8 @@ void HudDrawFont(int info, const char *fontName)
void HudDraw3d( int index, vec3_t vector, int ent_num, qboolean bAlwaysShow, qboolean depth )
{
// FIXME...
/*
gi.SetBroadcastAll();
gi.MSG_StartCGM( CGM_HUDDRAW_3D );
@@ -176,10 +178,12 @@ void HudDraw3d( int index, vec3_t vector, int ent_num, qboolean bAlwaysShow, qbo
gi.MSG_WriteByte( bAlwaysShow );
gi.MSG_WriteByte( depth );
gi.MSG_EndCGM();
*/
}
void HudDrawTimer( int index, float duration, float fade_out_time )
{
/*
gi.SetBroadcastAll();
gi.MSG_StartCGM( CGM_HUDDRAW_TIMER );
@@ -187,12 +191,13 @@ void HudDrawTimer( int index, float duration, float fade_out_time )
gi.MSG_WriteFloat( duration );
gi.MSG_WriteFloat( fade_out_time );
gi.MSG_EndCGM();
*/
}
void iHudDrawShader( int cl_num, int info, const char *name )
{
gi.MSG_SetClient(cl_num);
gi.MSG_StartCGM(0x1B);
gi.MSG_StartCGM(CGM_HUDDRAW_SHADER);
HudWriteNumber( info ); // c = info
gi.MSG_WriteString(name); // s = name (shader_name)
gi.MSG_EndCGM();
@@ -202,7 +207,7 @@ void iHudDrawShader( int cl_num, int info, const char *name )
void iHudDrawAlign(int cl_num, int info, int horizontalAlign, int verticalAlign )
{
gi.MSG_SetClient(cl_num);
gi.MSG_StartCGM(0x1C);
gi.MSG_StartCGM(CGM_HUDDRAW_ALIGN);
HudWriteNumber( info ); // c = probably "info"
gi.MSG_WriteBits(horizontalAlign, 2); // value = 0,1,2 bits = 2
// 0 - left \
@@ -221,7 +226,7 @@ void iHudDrawAlign(int cl_num, int info, int horizontalAlign, int verticalAlign
void iHudDrawRect(int cl_num, int info, int x, int y, int width, int height)
{
gi.MSG_SetClient(cl_num);
gi.MSG_StartCGM(0x1D);
gi.MSG_StartCGM(CGM_HUDDRAW_RECT);
HudWriteNumber( info ); // c = probably "info"
gi.MSG_WriteShort(x); // c = probably "x"
gi.MSG_WriteShort(y); // c = probably "y"
@@ -232,6 +237,7 @@ void iHudDrawRect(int cl_num, int info, int x, int y, int width, int height)
void iHudDraw3d( int cl_num, int index, vec3_t vector, int ent_num, qboolean bAlwaysShow, qboolean depth )
{
/*
gi.MSG_SetClient( cl_num );
gi.MSG_StartCGM( CGM_HUDDRAW_3D );
@@ -245,10 +251,12 @@ void iHudDraw3d( int cl_num, int index, vec3_t vector, int ent_num, qboolean bAl
gi.MSG_WriteByte( bAlwaysShow );
gi.MSG_WriteByte( depth );
gi.MSG_EndCGM();
*/
}
void iHudDrawTimer( int cl_num, int index, float duration, float fade_out_time )
{
/*
gi.MSG_SetClient( cl_num );
gi.MSG_StartCGM( CGM_HUDDRAW_TIMER );
@@ -256,12 +264,13 @@ void iHudDrawTimer( int cl_num, int index, float duration, float fade_out_time )
gi.MSG_WriteFloat( duration );
gi.MSG_WriteFloat( fade_out_time );
gi.MSG_EndCGM();
*/
}
void iHudDrawVirtualSize(int cl_num, int info, int virtualScreen)
{
gi.MSG_SetClient(cl_num);
gi.MSG_StartCGM(0x1E);
gi.MSG_StartCGM(CGM_HUDDRAW_VIRTUALSIZE);
HudWriteNumber( info ); // c = info
gi.MSG_WriteBits(!!virtualScreen, 1); // value = ? bits = 1
@@ -285,7 +294,7 @@ void iHudDrawColor(int cl_num, int info, float *color)
temp[2] = (long int)(color[2]*255.0f);
gi.MSG_SetClient(cl_num);
gi.MSG_StartCGM(0x1F);
gi.MSG_StartCGM(CGM_HUDDRAW_COLOR);
HudWriteNumber( info ); // c = info
gi.MSG_WriteByte(temp[0]); // c = color[2]
gi.MSG_WriteByte(temp[1]); // c = color[1] - Values can be messed up. To be tested.
@@ -301,7 +310,7 @@ void iHudDrawAlpha(int cl_num, int info, float alpha)
temp = (long int)(alpha*255.0f);
gi.MSG_SetClient(cl_num);
gi.MSG_StartCGM(0x20);
gi.MSG_StartCGM(CGM_HUDDRAW_ALPHA);
HudWriteNumber( info ); // c = info
gi.MSG_WriteByte(temp); // c = alpha
gi.MSG_EndCGM();
@@ -313,7 +322,7 @@ void iHudDrawAlpha(int cl_num, int info, float alpha)
void iHudDrawString( int cl_num, int info, const char *string )
{
gi.MSG_SetClient(cl_num);
gi.MSG_StartCGM(0x21);
gi.MSG_StartCGM(CGM_HUDDRAW_STRING);
HudWriteNumber( info ); // c = info
gi.MSG_WriteString(string); // s = string (to show)
gi.MSG_EndCGM();
@@ -323,7 +332,7 @@ void iHudDrawString( int cl_num, int info, const char *string )
void iHudDrawFont( int cl_num, int info, const char *fontName )
{
gi.MSG_SetClient(cl_num);
gi.MSG_StartCGM(0x22);
gi.MSG_StartCGM(CGM_HUDDRAW_FONT);
HudWriteNumber( info ); // c = info
gi.MSG_WriteString(fontName); // s = fontName (to use)
gi.MSG_EndCGM();
+3
View File
@@ -1149,6 +1149,8 @@ void Item::updatePrefix
return;
}
// FIXME: delete
/*
Entity *ent = ev->GetEntity( 1 );
gi.MSG_SetClient( ent->edict - g_entities );
@@ -1157,6 +1159,7 @@ void Item::updatePrefix
gi.MSG_WriteString( item_name.c_str() );
gi.MSG_WriteString( m_sVMprefix.c_str() );
gi.MSG_EndCGM();
*/
}
qboolean Item::IsItemCool
+36 -67
View File
@@ -2007,15 +2007,6 @@ qboolean Player::checkrun
return ( last_ucmd.buttons & BUTTON_RUN ) != 0;
}
qboolean Player::checkholsterweapon
(
Conditional &condition
)
{
return ( last_ucmd.buttons & BUTTON_HOLSTER ) != 0;
}
qboolean Player::checkuse
(
Conditional &condition
@@ -3964,7 +3955,6 @@ Condition<Player> Player::Conditions[] =
{ "default", &Player::returntrue },
{ "SNEAK", &Player::checksneak },
{ "RUN", &Player::checkrun },
{ "HOLSTERWEAPON", &Player::checkholsterweapon },
{ "USE", &Player::checkuse },
{ "LEFT", &Player::checkturnleft },
{ "RIGHT", &Player::checkturnright },
@@ -5790,9 +5780,9 @@ void Player::Pain
{
gi.MSG_SetClient( attacker->edict - g_entities );
if( IsDead() )
gi.MSG_StartCGM( 36 );
gi.MSG_StartCGM(CGM_NOTIFY_KILL);
else
gi.MSG_StartCGM( 35 );
gi.MSG_StartCGM(CGM_NOTIFY_HIT);
gi.MSG_EndCGM();
}
@@ -6528,6 +6518,8 @@ void Player::ClientMove
{
m_bShowingHint = false;
// FIXME: delete
/*
if (sv_reborn->integer)
{
gi.MSG_SetClient(edict - g_entities);
@@ -6537,6 +6529,7 @@ void Player::ClientMove
gi.MSG_WriteString("");
gi.MSG_EndCGM();
}
*/
}
oldorigin = origin;
@@ -13221,7 +13214,7 @@ void Player::EventDMMessage
if( bInstaMessage )
{
gi.MSG_SetClient( i );
gi.MSG_StartCGM( 37 );
gi.MSG_StartCGM(CGM_VOICE_CHAT);
gi.MSG_WriteCoord( m_vViewPos[ 0 ] );
gi.MSG_WriteCoord( m_vViewPos[ 1 ] );
gi.MSG_WriteCoord( m_vViewPos[ 2 ] );
@@ -13313,35 +13306,27 @@ qboolean Player::ViewModelAnim( str anim, qboolean force_restart, qboolean bFull
}
if ( Q_stricmp( anim, "charge" ) == 0 ) {
viewModelAnim = VMA_CHARGE;
viewModelAnim = VM_ANIM_CHARGE;
} else if ( Q_stricmp( anim, "fire" ) == 0 ) {
viewModelAnim = VMA_FIRE;
viewModelAnim = VM_ANIM_FIRE;
} else if ( Q_stricmp( anim, "fire_secondary" ) == 0 ) {
viewModelAnim = VMA_FIRE_SECONDARY;
viewModelAnim = VM_ANIM_FIRE_SECONDARY;
} else if ( Q_stricmp( anim, "rechamber" ) == 0 ) {
viewModelAnim = VMA_RECHAMBER;
viewModelAnim = VM_ANIM_RECHAMBER;
} else if ( Q_stricmp( anim, "reload" ) == 0 ) {
viewModelAnim = VMA_RELOAD;
viewModelAnim = VM_ANIM_RELOAD;
} else if ( Q_stricmp( anim, "reload_single" ) == 0 ) {
viewModelAnim = VMA_RELOAD_SINGLE;
viewModelAnim = VM_ANIM_RELOAD_SINGLE;
} else if ( Q_stricmp( anim, "reload_end" ) == 0 ) {
viewModelAnim = VMA_RELOAD_END;
viewModelAnim = VM_ANIM_RELOAD_END;
} else if ( Q_stricmp( anim, "pullout" ) == 0 ) {
viewModelAnim = VMA_PULLOUT;
viewModelAnim = VM_ANIM_PULLOUT;
} else if ( Q_stricmp( anim, "putaway" ) == 0 ) {
viewModelAnim = VMA_PUTAWAY;
viewModelAnim = VM_ANIM_PUTAWAY;
} else if ( Q_stricmp( anim, "ladderstep" ) == 0 ) {
viewModelAnim = VMA_LADDERSTEP;
viewModelAnim = VM_ANIM_LADDERSTEP;
} else if ( Q_stricmp( anim, "idle" ) == 0 ) {
viewModelAnim = VMA_IDLE;
}
else if ( level.reborn )
{
if ( !anim.icmp( "enable" ) ) {
viewModelAnim = VMA_ENABLE;
} else {
viewModelAnim = VMA_CUSTOMANIMATION;
}
viewModelAnim = VM_ANIM_IDLE;
}
else
{
@@ -13369,16 +13354,6 @@ qboolean Player::ViewModelAnim( str anim, qboolean force_restart, qboolean bFull
m_sVMcurrent = anim;
if ( level.reborn && viewModelAnim == VMA_CUSTOMANIMATION )
{
gi.MSG_SetClient( edict - g_entities );
gi.MSG_StartCGM( CGM_VIEWMODELANIM );
gi.MSG_WriteString( anim.c_str() );
gi.MSG_WriteByte( bFullAnim );
gi.MSG_EndCGM();
}
if ( viewModelAnim != playerState->iViewModelAnim || force_restart ) {
playerState->iViewModelAnimChanged = ( playerState->iViewModelAnimChanged + 1 ) & 3;
}
@@ -14306,15 +14281,15 @@ void Player::ModifyHeightFloat
client->ps.pm_flags &= ~( PMF_DUCKED | PMF_VIEW_PRONE | PMF_VIEW_DUCK_RUN | PMF_VIEW_JUMP_START );
if( sv_reborn->integer )
{
gi.MSG_SetClient( edict - g_entities);
// FIXME...
/*
gi.MSG_SetClient(edict - g_entities);
gi.MSG_StartCGM( CGM_MODHEIGHTFLOAT );
gi.MSG_WriteLong( height );
gi.MSG_WriteFloat( max_z );
gi.MSG_EndCGM();
}
gi.MSG_StartCGM(CGM_MODHEIGHTFLOAT);
gi.MSG_WriteLong(height);
gi.MSG_WriteFloat(max_z);
gi.MSG_EndCGM();
*/
}
void Player::PlayLocalSound
@@ -14348,8 +14323,8 @@ void Player::PlayLocalSound
return;
}
if( sv_reborn->integer )
{
// FIXME...
/*
gi.MSG_SetClient( client->ps.clientNum );
gi.MSG_StartCGM( CGM_PLAYLOCALSOUND );
@@ -14360,7 +14335,7 @@ void Player::PlayLocalSound
gi.MSG_EndCGM();
return;
}
*/
if( loop )
{
@@ -14517,11 +14492,14 @@ void Player::SetLocalSoundRate
gi.MSG_SetClient( client->ps.clientNum );
// FIXME...
/*
gi.MSG_StartCGM( CGM_SETLOCALSOUNDRATE );
gi.MSG_WriteString( found );
gi.MSG_WriteFloat( rate );
gi.MSG_WriteFloat( time );
gi.MSG_EndCGM();
*/
}
void Player::SetSpeed
@@ -14606,12 +14584,15 @@ void Player::SetVMASpeed
vma->name = name;
vma->speed = speed;
// FIXME...
/*
gi.MSG_SetClient( edict - g_entities );
gi.MSG_StartCGM( CGM_SETVMASPEED );
gi.MSG_WriteString( name );
gi.MSG_WriteFloat( speed );
gi.MSG_EndCGM();
*/
}
void Player::StopLocalSound
@@ -14639,20 +14620,8 @@ void Player::StopLocalSound
return;
}
if( level.reborn )
{
gi.MSG_SetClient( client->ps.clientNum );
gi.MSG_StartCGM( CGM_STOPLOCALSOUND );
gi.MSG_WriteString( found );
gi.MSG_WriteFloat( time );
gi.MSG_EndCGM();
}
else
{
edict->s.loopSound = 0;
gi.StopSound( entnum, CHAN_LOCAL );
}
edict->s.loopSound = 0;
gi.StopSound(entnum, CHAN_LOCAL);
}
void Player::UseHeld
-1
View File
@@ -354,7 +354,6 @@ public:
qboolean checkattackbuttonright( Conditional &condition );
qboolean checksneak( Conditional &condition );
qboolean checkrun( Conditional &condition );
qboolean checkholsterweapon( Conditional &condition );
qboolean checkuse( Conditional &condition );
qboolean checkcanturn( Conditional &condition );
qboolean checkcanmoveright( Conditional &condition );
+12 -12
View File
@@ -1785,11 +1785,11 @@ void Explosion::MakeExplosionEffect
if( !sEffect.icmp( "grenade" ) )
{
gi.MSG_StartCGM( 12 );
gi.MSG_StartCGM(CGM_EXPLOSION_EFFECT_1);
}
else
{
gi.MSG_StartCGM( 13 );
gi.MSG_StartCGM(CGM_EXPLOSION_EFFECT_2);
}
gi.MSG_WriteCoord( origin[ 0 ] );
@@ -2034,7 +2034,7 @@ float BulletAttack
if( ent->edict->solid == 3 && trace.shaderNum >= 0 )
{
gi.SetBroadcastVisible( trace.endpos, 0 );
gi.MSG_StartCGM( 6 );
gi.MSG_StartCGM(CGM_BULLET_6);
gi.MSG_WriteCoord( trace.endpos[ 0 ] );
gi.MSG_WriteCoord( trace.endpos[ 1 ] );
gi.MSG_WriteCoord( trace.endpos[ 2 ] );
@@ -2192,7 +2192,7 @@ float BulletAttack
if( trace.contents > 0 && trace.surfaceFlags & 0xFFFE000 )
{
gi.SetBroadcastVisible( trace.endpos, NULL );
gi.MSG_StartCGM( 6 );
gi.MSG_StartCGM(CGM_BULLET_6);
gi.MSG_WriteCoord( trace.endpos[ 0 ] );
gi.MSG_WriteCoord( trace.endpos[ 1 ] );
gi.MSG_WriteCoord( trace.endpos[ 2 ] );
@@ -2203,7 +2203,7 @@ float BulletAttack
else if( trace.location >= 0 && ent->IsSubclassOfPlayer() )
{
gi.SetBroadcastVisible( trace.endpos, NULL );
gi.MSG_StartCGM( 7 );
gi.MSG_StartCGM(CGM_BULLET_7);
gi.MSG_WriteCoord( trace.endpos[ 0 ] );
gi.MSG_WriteCoord( trace.endpos[ 1 ] );
gi.MSG_WriteCoord( trace.endpos[ 2 ] );
@@ -2250,7 +2250,7 @@ float BulletAttack
{
if( iTracerCount )
{
gi.MSG_StartCGM( 1 );
gi.MSG_StartCGM(CGM_BULLET_1);
gi.MSG_WriteCoord( vBarrel[ 0 ] );
gi.MSG_WriteCoord( vBarrel[ 1 ] );
@@ -2258,7 +2258,7 @@ float BulletAttack
}
else
{
gi.MSG_StartCGM( 2 );
gi.MSG_StartCGM(CGM_BULLET_2);
}
gi.MSG_WriteCoord( start[ 0 ] );
@@ -2273,7 +2273,7 @@ float BulletAttack
{
if( iTracerCount )
{
gi.MSG_StartCGM( 3 );
gi.MSG_StartCGM(CGM_BULLET_3);
gi.MSG_WriteCoord( vBarrel[ 0 ] );
gi.MSG_WriteCoord( vBarrel[ 1 ] );
@@ -2286,7 +2286,7 @@ float BulletAttack
}
else
{
gi.MSG_StartCGM( 4 );
gi.MSG_StartCGM(CGM_BULLET_4);
}
gi.MSG_WriteCoord( start[ 0 ] );
@@ -2349,7 +2349,7 @@ void FakeBulletAttack
( *piTracerCount )++;
if( *piTracerCount == iTracerFrequency )
{
gi.MSG_StartCGM( 25 );
gi.MSG_StartCGM(CGM_BULLET_NO_BARREL_1);
gi.MSG_WriteCoord( vBarrel[ 0 ] );
gi.MSG_WriteCoord( vBarrel[ 1 ] );
gi.MSG_WriteCoord( vBarrel[ 2 ] );
@@ -2357,12 +2357,12 @@ void FakeBulletAttack
}
else
{
gi.MSG_StartCGM( 26 );
gi.MSG_StartCGM(CGM_BULLET_NO_BARREL_2);
}
}
else
{
gi.MSG_StartCGM( 26 );
gi.MSG_StartCGM(CGM_BULLET_NO_BARREL_2);
}
gi.MSG_WriteCoord( start[ 0 ] );
+1 -1
View File
@@ -151,7 +151,7 @@ void WindowObject::WindowKilled( Event *ev )
vCenter = origin + mins + maxs;
gi.SetBroadcastVisible( vCenter, vCenter );
gi.MSG_StartCGM( 24 );
gi.MSG_StartCGM(CGM_MAKE_WINDOW_DEBRIS);
gi.MSG_WriteCoord( vCenter[ 0 ] );
gi.MSG_WriteCoord( vCenter[ 1 ] );
gi.MSG_WriteCoord( vCenter[ 2 ] );
+55 -26
View File
@@ -391,9 +391,6 @@ ConSimple *World::GetTargetList( const_str targetname )
return &m_targetList.addKeyValue( targetname );
}
#ifdef GAME_DLL
World::World()
{
world = this;
@@ -424,11 +421,30 @@ World::World()
// set the default farplane parameters
farplane_distance = 0;
farplane_color = "0 0 0";
farplane_bias = 0.0;
farplane_color = vec_zero;
farplane_cull = qtrue;
skybox_farplane = 0.0;
render_terrain = qtrue;
skybox_speed = 0.0;
farclip_override = 0.f;
farplane_color_override = Vector(-1, -1, -1);
animated_farplane_start = 0.0;
animated_farplane_end = 0.0;
animated_farplane_start_z = 8192.0;
animated_farplane_end_z = 0.0;
animated_farplane_bias_start = 0.0;
animated_farplane_bias_end = 0.0;
animated_farplane_bias_start_z = 8192.0;
animated_farplane_bias_end_z = 0.0;
animated_farplane_color_start = vec_zero;
animated_farplane_color_end = vec_zero;
animated_farplane_color_start_z = 8192.0;
animated_farplane_color_end_z = 0.0;
UpdateFog();
sky_alpha = 1.0f;
sky_portal = qtrue;
UpdateSky();
@@ -472,19 +488,12 @@ void World::UpdateConfigStrings( void )
gi.SetConfigstring( CS_MESSAGE, level.level_name.c_str() );
};
void World::UpdateFog( void )
{
gi.SetFarPlane( farplane_distance );
gi.SetConfigstring( CS_FOGINFO, va( "%d %.0f %.4f %.4f %.4f", farplane_cull, farplane_distance, farplane_color.x, farplane_color.y, farplane_color.z ) );
}
void World::UpdateSky( void )
{
gi.SetSkyPortal( sky_portal );
gi.SetConfigstring( CS_SKYINFO, va( "%.4f %d", sky_alpha, sky_portal ) );
}
void World::SetSoundtrack( Event *ev )
{
const char *text;
@@ -566,6 +575,41 @@ void World::SetNorthYaw( Event *ev )
m_fNorth = anglemod( ev->GetFloat( 1 ) );
}
#if TARGET_GAME_PROTOCOL >= 15
void World::UpdateFog(void)
{
gi.SetFarPlane(farplane_distance);
gi.SetConfigstring(CS_FOGINFO, va(
"%d %.0f %.0f %.0f %.6f %.4f %.4f %.4f %d %.0f %.2f %.2f %.2f",
farplane_cull,
farplane_distance,
farplane_bias,
skybox_farplane,
skybox_speed,
farplane_color.x,
farplane_color.y,
farplane_color.z,
render_terrain,
farclip_override,
farplane_color_override.x,
farplane_color_override.y,
farplane_color_override.z
)
);
}
#else
void World::UpdateFog(void)
{
gi.SetFarPlane(farplane_distance);
gi.SetConfigstring(CS_FOGINFO, va("%d %.0f %.4f %.4f %.4f", farplane_cull, farplane_distance, farplane_color.x, farplane_color.y, farplane_color.z));
}
#endif
CLASS_DECLARATION( Entity, World, "worldspawn" )
{
{ &EV_World_SetSoundtrack, &World::SetSoundtrack },
@@ -594,18 +638,3 @@ CLASS_DECLARATION( Entity, World, "worldspawn" )
{ &EV_World_SetSunDiffuseColor, NULL },
{ NULL, NULL }
};
#else
World::World()
{
world = this;
world_dying = qfalse;
}
CLASS_DECLARATION( SimpleEntity, World, "worldspawn" )
{
{ NULL, NULL }
};
#endif
+18
View File
@@ -51,8 +51,26 @@ class World : public SimpleEntity {
public:
// farplane variables
float farplane_distance;
float farplane_bias;
Vector farplane_color;
qboolean farplane_cull;
float skybox_farplane;
qboolean render_terrain;
float skybox_speed;
float farclip_override;
Vector farplane_color_override;
float animated_farplane_start;
float animated_farplane_end;
float animated_farplane_start_z;
float animated_farplane_end_z;
float animated_farplane_bias_start;
float animated_farplane_bias_end;
float animated_farplane_bias_start_z;
float animated_farplane_bias_end_z;
Vector animated_farplane_color_start;
Vector animated_farplane_color_end;
float animated_farplane_color_start_z;
float animated_farplane_color_end_z;
// sky variables
float sky_alpha;
+1 -1
View File
@@ -284,7 +284,7 @@ void QDECL Com_Error( int code, const char *fmt, ... ) {
static int errorCount;
int currentTime;
#ifdef _DEBUG
#ifdef COM_ERROR_ASSERT
*( int * )0 = 0;
assert( 0 );
#endif
+2 -2
View File
@@ -114,7 +114,7 @@ void Z_Free( void *ptr )
block->prev = block;
block->next = block;
#if !defined(_DEBUG) && !defined(WIN32)
#if !defined(_DEBUG) || !defined(WIN32)
// free the block
free( block );
#else
@@ -172,7 +172,7 @@ void *Z_TagMalloc( size_t size, int tag )
#endif
size = PAD( size, sizeof( intptr_t ) ); // align to 32/64 bit boundary
#if !defined(_DEBUG) && !defined(WIN32)
#if !defined(_DEBUG) || !defined(WIN32)
block = ( memblock_t * )malloc( size );
#else
block = HeapAlloc(GetProcessHeap(), 0, size);
+28 -17
View File
@@ -161,7 +161,7 @@ int overflows;
#if TARGET_GAME_PROTOCOL >= 15
int MSG_NegateValue(int value)
int MSG_WriteNegateValue(int value, int bits)
{
if (value >= 0) {
value <<= 1;
@@ -173,13 +173,34 @@ int MSG_NegateValue(int value)
return value;
}
int MSG_ReadNegateValue(int value, int bits)
{
if (value & 1) {
value = ~(value >> 1);
}
else {
value >>= 1;
}
return value;
}
#else
int MSG_NegateValue(int value)
int MSG_WriteNegateValue(int value, int bits)
{
return value;
}
int MSG_ReadNegateValue(int value, int bits)
{
if (value & (1 << (bits - 1))) {
value |= -1 ^ ((1 << bits) - 1);
}
return value;
}
#endif
// negative bit values include signs
@@ -216,8 +237,9 @@ void MSG_WriteBits( msg_t *msg, int value, int bits ) {
}
if ( bits < 0 ) {
bits = -bits;
value = MSG_NegateValue(value);
value = MSG_WriteNegateValue(value, bits);
}
if (msg->oob) {
if (msg->cursize + (bits >> 3) > msg->maxsize) {
msg->overflowed = qtrue;
@@ -326,21 +348,10 @@ int MSG_ReadBits( msg_t *msg, int bits ) {
}
msg->readcount = (msg->bit>>3)+1;
}
#if TARGET_GAME_PROTOCOL >= 15
if (sgn) {
if (value & 1) {
value = ~(value >> 1);
} else {
value >>= 1;
}
value = MSG_ReadNegateValue(value, bits);
}
#else
if (sgn) {
if (value & (1 << (bits - 1))) {
value |= -1 ^ ((1 << bits) - 1);
}
}
#endif
return value;
}
@@ -2126,7 +2137,7 @@ float MSG_ReadPackedCoordExtra(msg_t* msg, float fromValue, int bits)
void MSG_WritePackedAngle(msg_t* msg, float value, int bits)
{
int packed = MSG_PackAngle(value, bits);
MSG_WriteBits(msg, packed, bits);
MSG_WriteBits(msg, packed, abs(bits));
}
void MSG_WritePackedAnimTime(msg_t* msg, float fromValue, float toValue, float frameTime, int bits)
+8
View File
@@ -346,6 +346,8 @@ short ShortSwapPtr(const void* l);
int LongSwapPtr(const void* l);
short ShortNoSwapPtr(const void* l);
int LongNoSwapPtr(const void* l);
float FloatSwapPtr(const void* l);
float FloatNoSwapPtr(const void* l);
#if defined( Q3_BIG_ENDIAN ) && defined( Q3_LITTLE_ENDIAN )
#error "Endianness defined as both big and little"
@@ -354,11 +356,16 @@ int LongNoSwapPtr(const void* l);
#define CopyLittleShort(dest, src) CopyShortSwap(dest, src)
#define CopyLittleLong(dest, src) CopyLongSwap(dest, src)
//
// Those Little*Ptr are used to avoid alignment problems
//
#define LittleShort(x) ShortSwap(x)
#define LittleLong(x) LongSwap(x)
#define LittleFloat(x) FloatSwap(&x)
#define LittleShortPtr(x) ShortSwapPtr(&x)
#define LittleLongPtr(x) LongSwapPtr(&x)
#define LittleFloatPtr(x) FloatSwapPtr(&x)
#define BigShort
#define BigLong
@@ -376,6 +383,7 @@ int LongNoSwapPtr(const void* l);
#define LittleFloat
#define LittleShortPtr(x) ShortNoSwapPtr(&x)
#define LittleLongPtr(x) LongNoSwapPtr(&x)
#define LittleFloatPtr(x) FloatNoSwapPtr(&x)
#define BigShort(x) ShortSwap(x)
#define BigLong(x) LongSwap(x)
+14
View File
@@ -1552,6 +1552,20 @@ int LongNoSwapPtr(const void* l)
return out;
}
float FloatSwapPtr(const void* l)
{
float out;
CopyLittleLong((int*)&out, l);
return out;
}
float FloatNoSwapPtr(const void* l)
{
float out;
Com_Memcpy(&out, l, sizeof(float));
return out;
}
void Swap_Init(void)
{
// Endianness is now computed at compile time
+10 -35
View File
@@ -37,7 +37,7 @@ extern "C" {
// These values are the only one that must be set for the version
#define PRODUCT_VERSION_MAJOR 0
#define PRODUCT_VERSION_MINOR 53
#define PRODUCT_VERSION_PATCH 1
#define PRODUCT_VERSION_PATCH 2
#define PRODUCT_VERSION_STAGE "alpha"
//
@@ -454,6 +454,7 @@ enum {
MESSAGE_CHAT_WHITE,
MESSAGE_WHITE,
MESSAGE_CHAT_RED,
MESSAGE_CHAT_GREEN,
MESSAGE_MAX
};
@@ -484,34 +485,6 @@ enum {
#define HUD_MESSAGE_CHAT_WHITE "\x02"
#define HUD_MESSAGE_CHAT_RED "\x04"
#define CGM_HUDDRAW_SHADER 27
#define CGM_HUDDRAW_ALIGN 28
#define CGM_HUDDRAW_RECT 29
#define CGM_HUDDRAW_VIRTUALSIZE 30
#define CGM_HUDDRAW_COLOR 31
#define CGM_HUDDRAW_ALPHA 32
#define CGM_HUDDRAW_STRING 33
#define CGM_HUDDRAW_FONT 34
#define CGM_HUDDRAW_TIMER 38
#define CGM_HUDDRAW_3D 39
#define CGM_HUDDRAW_BREAK3D 40
#define CGM_HUDDRAW_FADE 41
#define CGM_HUDDRAW_MOVE 42
#define CGM_HUDDRAW_SCALE 43
#define CGM_VIEWMODELANIM 44
#define CGM_VIEWMODELPREFIX 45
#define CGM_MODHEIGHTFLOAT 46
#define CGM_SETVMASPEED 47
#define CGM_HINTSTRING 48
#define CGM_PLAYLOCALSOUND 49
#define CGM_SETLOCALSOUNDRATE 50
#define CGM_STOPLOCALSOUND 51
#define CGM_HUDDRAW_RECTX 52
#define CGM_HUDDRAW_RECTY 53
#define CGM_HUDDRAW_RECTWH 54
#define CGM_REPLICATION 55
#define CGM_HUDDRAW_DELETE 56
extern vec4_t g_color_table[8];
#define MAKERGB( v, r, g, b ) v[0]=r;v[1]=g;v[2]=b
@@ -1756,10 +1729,8 @@ typedef struct playerState_s {
#define BUTTON_LEAN_LEFT_BITINDEX 4
#define BUTTON_LEAN_RIGHT_BITINDEX 5
#define BUTTON_TALK_BITINDEX 6 // displays talk balloon and disables actions
#define BUTTON_ANY_BITINDEX 10 // any key whatsoever
#define BUTTON_ANY2_BITINDEX 11 // any key whatsoever (regardless of keycatcher)
#define BUTTON_MOUSE_BITINDEX 14 // mouse move
#define BUTTON_HOLSTER_BITINDEX 15
#define BUTTON_ANY_BITINDEX 14 // any key whatsoever
#define BUTTON_MOUSE_BITINDEX 15 // mouse move
#define BUTTON_ATTACKLEFT (1 << BUTTON_ATTACKLEFT_BITINDEX)
#define BUTTON_ATTACKRIGHT (1 << BUTTON_ATTACKRIGHT_BITINDEX)
@@ -1769,9 +1740,7 @@ typedef struct playerState_s {
#define BUTTON_LEAN_RIGHT (1 << BUTTON_LEAN_RIGHT_BITINDEX)
#define BUTTON_TALK (1 << BUTTON_TALK_BITINDEX) // displays talk balloon and disables actions
#define BUTTON_ANY (1 << BUTTON_ANY_BITINDEX) // any key whatsoever
#define BUTTON_ANY2 (1 << BUTTON_ANY_BITINDEX) // any key whatsoever (regardless of keycatcher)
#define BUTTON_MOUSE (1 << BUTTON_MOUSE_BITINDEX)
#define BUTTON_HOLSTER (1 << BUTTON_HOLSTER_BITINDEX)
#define WEAPON_COMMAND_USE_PISTOL 1
#define WEAPON_COMMAND_USE_RIFLE 2
@@ -1788,7 +1757,13 @@ typedef struct playerState_s {
#define WEAPON_COMMAND_USE_LAST_WEAPON 13
#define WEAPON_COMMAND_HOLSTER 14
#define WEAPON_COMMAND_DROP 15
#if TARGET_GAME_PROTOCOL >= 15
#define WEAPON_COMMAND_MAX 31
#else
#define WEAPON_COMMAND_MAX 15
#endif
#define WEAPON_COMMAND_MASK (WEAPON_COMMAND_MAX << 7)
+1 -1
View File
@@ -188,7 +188,7 @@ NET
#define PORT_ANY -1
#define MAX_RELIABLE_COMMANDS 64 // max string commands buffered for restransmit
#define MAX_RELIABLE_COMMANDS 512 // max string commands buffered for restransmit
typedef enum {
NA_BOT,
+394 -44
View File
@@ -950,24 +950,24 @@ image_t* R_CreateImage(
&image->uploadHeight,
&image->bytesUsed
);
} else {
Upload32(
(unsigned*)pic,
image->width,
image->height,
image->numMipmaps,
allowPicmip,
image->dynamicallyUpdated,
force32bit,
hasAlpha,
&image->internalFormat,
&image->uploadWidth,
&image->uploadHeight,
&image->bytesUsed,
isLightmap
);
}
Upload32(
(unsigned*)pic,
image->width,
image->height,
image->numMipmaps,
allowPicmip,
image->dynamicallyUpdated,
force32bit,
hasAlpha,
&image->internalFormat,
&image->uploadWidth,
&image->uploadHeight,
&image->bytesUsed,
isLightmap
);
qglTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, glWrapClampModeX );
qglTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, glWrapClampModeY );
@@ -1300,6 +1300,342 @@ static void LoadPCX32 ( const char *filename, byte **pic, int *width, int *heigh
ri.Free (palette);
}
//==========================
//
// DDS Loading
//
//==========================
typedef unsigned int ui32_t;
typedef struct ddsHeader_s
{
ui32_t headerSize;
ui32_t flags;
ui32_t height;
ui32_t width;
ui32_t pitchOrFirstMipSize;
ui32_t volumeDepth;
ui32_t numMips;
ui32_t reserved1[11];
ui32_t always_0x00000020;
ui32_t pixelFormatFlags;
ui32_t fourCC;
ui32_t rgbBitCount;
ui32_t rBitMask;
ui32_t gBitMask;
ui32_t bBitMask;
ui32_t aBitMask;
ui32_t caps;
ui32_t caps2;
ui32_t caps3;
ui32_t caps4;
ui32_t reserved2;
}
ddsHeader_t;
// flags:
#define _DDSFLAGS_REQUIRED 0x001007
#define _DDSFLAGS_PITCH 0x8
#define _DDSFLAGS_MIPMAPCOUNT 0x20000
#define _DDSFLAGS_FIRSTMIPSIZE 0x80000
#define _DDSFLAGS_VOLUMEDEPTH 0x800000
// pixelFormatFlags:
#define DDSPF_ALPHAPIXELS 0x1
#define DDSPF_ALPHA 0x2
#define DDSPF_FOURCC 0x4
#define DDSPF_RGB 0x40
#define DDSPF_YUV 0x200
#define DDSPF_LUMINANCE 0x20000
// caps:
#define DDSCAPS_COMPLEX 0x8
#define DDSCAPS_MIPMAP 0x400000
#define DDSCAPS_REQUIRED 0x1000
// caps2:
#define DDSCAPS2_CUBEMAP 0xFE00
#define DDSCAPS2_VOLUME 0x200000
typedef struct ddsHeaderDxt10_s
{
ui32_t dxgiFormat;
ui32_t dimensions;
ui32_t miscFlags;
ui32_t arraySize;
ui32_t miscFlags2;
}
ddsHeaderDxt10_t;
// dxgiFormat
// from http://msdn.microsoft.com/en-us/library/windows/desktop/bb173059%28v=vs.85%29.aspx
typedef enum DXGI_FORMAT {
DXGI_FORMAT_UNKNOWN = 0,
DXGI_FORMAT_R32G32B32A32_TYPELESS = 1,
DXGI_FORMAT_R32G32B32A32_FLOAT = 2,
DXGI_FORMAT_R32G32B32A32_UINT = 3,
DXGI_FORMAT_R32G32B32A32_SINT = 4,
DXGI_FORMAT_R32G32B32_TYPELESS = 5,
DXGI_FORMAT_R32G32B32_FLOAT = 6,
DXGI_FORMAT_R32G32B32_UINT = 7,
DXGI_FORMAT_R32G32B32_SINT = 8,
DXGI_FORMAT_R16G16B16A16_TYPELESS = 9,
DXGI_FORMAT_R16G16B16A16_FLOAT = 10,
DXGI_FORMAT_R16G16B16A16_UNORM = 11,
DXGI_FORMAT_R16G16B16A16_UINT = 12,
DXGI_FORMAT_R16G16B16A16_SNORM = 13,
DXGI_FORMAT_R16G16B16A16_SINT = 14,
DXGI_FORMAT_R32G32_TYPELESS = 15,
DXGI_FORMAT_R32G32_FLOAT = 16,
DXGI_FORMAT_R32G32_UINT = 17,
DXGI_FORMAT_R32G32_SINT = 18,
DXGI_FORMAT_R32G8X24_TYPELESS = 19,
DXGI_FORMAT_D32_FLOAT_S8X24_UINT = 20,
DXGI_FORMAT_R32_FLOAT_X8X24_TYPELESS = 21,
DXGI_FORMAT_X32_TYPELESS_G8X24_UINT = 22,
DXGI_FORMAT_R10G10B10A2_TYPELESS = 23,
DXGI_FORMAT_R10G10B10A2_UNORM = 24,
DXGI_FORMAT_R10G10B10A2_UINT = 25,
DXGI_FORMAT_R11G11B10_FLOAT = 26,
DXGI_FORMAT_R8G8B8A8_TYPELESS = 27,
DXGI_FORMAT_R8G8B8A8_UNORM = 28,
DXGI_FORMAT_R8G8B8A8_UNORM_SRGB = 29,
DXGI_FORMAT_R8G8B8A8_UINT = 30,
DXGI_FORMAT_R8G8B8A8_SNORM = 31,
DXGI_FORMAT_R8G8B8A8_SINT = 32,
DXGI_FORMAT_R16G16_TYPELESS = 33,
DXGI_FORMAT_R16G16_FLOAT = 34,
DXGI_FORMAT_R16G16_UNORM = 35,
DXGI_FORMAT_R16G16_UINT = 36,
DXGI_FORMAT_R16G16_SNORM = 37,
DXGI_FORMAT_R16G16_SINT = 38,
DXGI_FORMAT_R32_TYPELESS = 39,
DXGI_FORMAT_D32_FLOAT = 40,
DXGI_FORMAT_R32_FLOAT = 41,
DXGI_FORMAT_R32_UINT = 42,
DXGI_FORMAT_R32_SINT = 43,
DXGI_FORMAT_R24G8_TYPELESS = 44,
DXGI_FORMAT_D24_UNORM_S8_UINT = 45,
DXGI_FORMAT_R24_UNORM_X8_TYPELESS = 46,
DXGI_FORMAT_X24_TYPELESS_G8_UINT = 47,
DXGI_FORMAT_R8G8_TYPELESS = 48,
DXGI_FORMAT_R8G8_UNORM = 49,
DXGI_FORMAT_R8G8_UINT = 50,
DXGI_FORMAT_R8G8_SNORM = 51,
DXGI_FORMAT_R8G8_SINT = 52,
DXGI_FORMAT_R16_TYPELESS = 53,
DXGI_FORMAT_R16_FLOAT = 54,
DXGI_FORMAT_D16_UNORM = 55,
DXGI_FORMAT_R16_UNORM = 56,
DXGI_FORMAT_R16_UINT = 57,
DXGI_FORMAT_R16_SNORM = 58,
DXGI_FORMAT_R16_SINT = 59,
DXGI_FORMAT_R8_TYPELESS = 60,
DXGI_FORMAT_R8_UNORM = 61,
DXGI_FORMAT_R8_UINT = 62,
DXGI_FORMAT_R8_SNORM = 63,
DXGI_FORMAT_R8_SINT = 64,
DXGI_FORMAT_A8_UNORM = 65,
DXGI_FORMAT_R1_UNORM = 66,
DXGI_FORMAT_R9G9B9E5_SHAREDEXP = 67,
DXGI_FORMAT_R8G8_B8G8_UNORM = 68,
DXGI_FORMAT_G8R8_G8B8_UNORM = 69,
DXGI_FORMAT_BC1_TYPELESS = 70,
DXGI_FORMAT_BC1_UNORM = 71,
DXGI_FORMAT_BC1_UNORM_SRGB = 72,
DXGI_FORMAT_BC2_TYPELESS = 73,
DXGI_FORMAT_BC2_UNORM = 74,
DXGI_FORMAT_BC2_UNORM_SRGB = 75,
DXGI_FORMAT_BC3_TYPELESS = 76,
DXGI_FORMAT_BC3_UNORM = 77,
DXGI_FORMAT_BC3_UNORM_SRGB = 78,
DXGI_FORMAT_BC4_TYPELESS = 79,
DXGI_FORMAT_BC4_UNORM = 80,
DXGI_FORMAT_BC4_SNORM = 81,
DXGI_FORMAT_BC5_TYPELESS = 82,
DXGI_FORMAT_BC5_UNORM = 83,
DXGI_FORMAT_BC5_SNORM = 84,
DXGI_FORMAT_B5G6R5_UNORM = 85,
DXGI_FORMAT_B5G5R5A1_UNORM = 86,
DXGI_FORMAT_B8G8R8A8_UNORM = 87,
DXGI_FORMAT_B8G8R8X8_UNORM = 88,
DXGI_FORMAT_R10G10B10_XR_BIAS_A2_UNORM = 89,
DXGI_FORMAT_B8G8R8A8_TYPELESS = 90,
DXGI_FORMAT_B8G8R8A8_UNORM_SRGB = 91,
DXGI_FORMAT_B8G8R8X8_TYPELESS = 92,
DXGI_FORMAT_B8G8R8X8_UNORM_SRGB = 93,
DXGI_FORMAT_BC6H_TYPELESS = 94,
DXGI_FORMAT_BC6H_UF16 = 95,
DXGI_FORMAT_BC6H_SF16 = 96,
DXGI_FORMAT_BC7_TYPELESS = 97,
DXGI_FORMAT_BC7_UNORM = 98,
DXGI_FORMAT_BC7_UNORM_SRGB = 99,
DXGI_FORMAT_AYUV = 100,
DXGI_FORMAT_Y410 = 101,
DXGI_FORMAT_Y416 = 102,
DXGI_FORMAT_NV12 = 103,
DXGI_FORMAT_P010 = 104,
DXGI_FORMAT_P016 = 105,
DXGI_FORMAT_420_OPAQUE = 106,
DXGI_FORMAT_YUY2 = 107,
DXGI_FORMAT_Y210 = 108,
DXGI_FORMAT_Y216 = 109,
DXGI_FORMAT_NV11 = 110,
DXGI_FORMAT_AI44 = 111,
DXGI_FORMAT_IA44 = 112,
DXGI_FORMAT_P8 = 113,
DXGI_FORMAT_A8P8 = 114,
DXGI_FORMAT_B4G4R4A4_UNORM = 115,
DXGI_FORMAT_FORCE_UINT = 0xffffffffUL
} DXGI_FORMAT;
#define EncodeFourCC(x) ((((ui32_t)((x)[0])) ) | \
(((ui32_t)((x)[1])) << 8 ) | \
(((ui32_t)((x)[2])) << 16) | \
(((ui32_t)((x)[3])) << 24) )
static void LoadDDS(const char* name, byte** pic, int* width, int* height, qboolean* hasAlpha, int* glCompressMode, int* numMipmaps, int* piMipmapsAvailable) {
union {
byte* b;
void* v;
} buffer;
int len;
ddsHeader_t* ddsHeader = NULL;
ddsHeaderDxt10_t* ddsHeaderDxt10 = NULL;
byte* data;
*pic = 0;
*piMipmapsAvailable = 0;
if (width)
*width = 0;
if (height)
*height = 0;
*pic = NULL;
//
// load the file
//
len = ri.FS_ReadFile((char*)name, &buffer.v);
if (!buffer.b || len < 0) {
return;
}
//
// reject files that are too small to hold even a header
//
if (len < 4 + sizeof(*ddsHeader))
{
ri.Printf(PRINT_ALL, "File %s is too small to be a DDS file.\n", name);
ri.FS_FreeFile(buffer.v);
return;
}
//
// reject files that don't start with "DDS "
//
if (*((ui32_t*)(buffer.b)) != EncodeFourCC("DDS "))
{
ri.Printf(PRINT_ALL, "File %s is not a DDS file.\n", name);
ri.FS_FreeFile(buffer.v);
return;
}
//
// parse header and dx10 header if available
//
ddsHeader = (ddsHeader_t*)(buffer.b + 4);
if ((ddsHeader->pixelFormatFlags & DDSPF_FOURCC) && ddsHeader->fourCC == EncodeFourCC("DX10"))
{
if (len < 4 + sizeof(*ddsHeader) + sizeof(*ddsHeaderDxt10))
{
ri.Printf(PRINT_ALL, "File %s indicates a DX10 header it is too small to contain.\n", name);
ri.FS_FreeFile(buffer.v);
return;
}
ddsHeaderDxt10 = (ddsHeaderDxt10_t*)(buffer.b + 4 + sizeof(ddsHeader_t));
data = buffer.b + 4 + sizeof(*ddsHeader) + sizeof(*ddsHeaderDxt10);
len -= 4 + sizeof(*ddsHeader) + sizeof(*ddsHeaderDxt10);
}
else
{
data = buffer.b + 4 + sizeof(*ddsHeader);
len -= 4 + sizeof(*ddsHeader);
}
if (width)
*width = ddsHeader->width;
if (height)
*height = ddsHeader->height;
if (piMipmapsAvailable)
{
if (ddsHeader->flags & _DDSFLAGS_MIPMAPCOUNT)
*piMipmapsAvailable = ddsHeader->numMips;
else
*piMipmapsAvailable = 1;
}
// FIXME: handle cube map
//if ((ddsHeader->caps2 & DDSCAPS2_CUBEMAP) == DDSCAPS2_CUBEMAP)
//
// Convert DXGI format/FourCC into OpenGL format
//
if (ddsHeaderDxt10)
{
ri.Printf(PRINT_ALL, "DDS File %s has unsupported DXGI format %d.", name, ddsHeaderDxt10->dxgiFormat);
ri.FS_FreeFile(buffer.v);
return;
}
else
{
if (ddsHeader->pixelFormatFlags & DDSPF_FOURCC)
{
if (ddsHeader->fourCC == EncodeFourCC("DXT1"))
*glCompressMode = GL_COMPRESSED_RGB_S3TC_DXT1_EXT;
else if (ddsHeader->fourCC == EncodeFourCC("DXT2"))
*glCompressMode = GL_COMPRESSED_RGBA_S3TC_DXT3_EXT;
else if (ddsHeader->fourCC == EncodeFourCC("DXT3"))
*glCompressMode = GL_COMPRESSED_RGBA_S3TC_DXT3_EXT;
else if (ddsHeader->fourCC == EncodeFourCC("DXT4"))
*glCompressMode = GL_COMPRESSED_RGBA_S3TC_DXT5_EXT;
else if (ddsHeader->fourCC == EncodeFourCC("DXT5"))
*glCompressMode = GL_COMPRESSED_RGBA_S3TC_DXT5_EXT;
else
{
ri.Printf(PRINT_ALL, "DDS File %s has unsupported FourCC.", name);
ri.FS_FreeFile(buffer.v);
return;
}
}
else if (ddsHeader->pixelFormatFlags == (DDSPF_RGB | DDSPF_ALPHAPIXELS)
&& ddsHeader->rgbBitCount == 32
&& ddsHeader->rBitMask == 0x000000ff
&& ddsHeader->gBitMask == 0x0000ff00
&& ddsHeader->bBitMask == 0x00ff0000
&& ddsHeader->aBitMask == 0xff000000)
{
*glCompressMode = GL_RGBA8;
}
else
{
ri.Printf(PRINT_ALL, "DDS File %s has unsupported RGBA format.", name);
ri.FS_FreeFile(buffer.v);
return;
}
}
*pic = ri.Malloc(len);
Com_Memcpy(*pic, data, len);
ri.FS_FreeFile(buffer.v);
}
/*
=========================================================
@@ -2087,6 +2423,8 @@ Loads any of the supported image types into a cannonical
static void R_LoadImage(const char* name, byte** pic, int* width, int* height, qboolean* hasAlpha, int* glCompressMode, int* numMipmaps, int* piMipmapsAvailable) {
size_t len;
char tempName[MAX_STRING_TOKENS + 1];
char altname[MAX_QPATH];
*hasAlpha = qfalse;
*glCompressMode = 0;
@@ -2099,36 +2437,48 @@ static void R_LoadImage(const char* name, byte** pic, int* width, int* height, q
return;
}
if (!Q_stricmp(name + len - 4, ".tga") || !Q_stricmp(name + len - 4, ".jpg")) {
char altname[MAX_QPATH];
strcpy(altname, name);
if (r_loadjpg->integer) {
len = strlen(altname);
altname[len - 3] = 'j';
altname[len - 2] = 'p';
altname[len - 1] = 'g';
// try jpg first
LoadJPG(altname, pic, width, height);
strcpy(altname, name);
len = strlen(altname);
if (glConfig.textureCompression == 1)
{
len = strlen(altname);
altname[len - 3] = 'd';
altname[len - 2] = 'd';
altname[len - 1] = 's';
LoadDDS(altname, pic, width, height, hasAlpha, glCompressMode, numMipmaps, piMipmapsAvailable);
}
if (!*pic)
{
if (!Q_stricmp(name + len - 4, ".tga") || !Q_stricmp(name + len - 4, ".jpg")) {
if (r_loadjpg->integer) {
len = strlen(altname);
altname[len - 3] = 'j';
altname[len - 2] = 'p';
altname[len - 1] = 'g';
// try jpg first
LoadJPG(altname, pic, width, height);
}
if (!*pic) {
altname[len - 3] = 't';
altname[len - 2] = 'g';
altname[len - 1] = 'a';
LoadTGA(altname, pic, width, height);
}
*piMipmapsAvailable = 1;
}
if (!*pic) {
altname[len - 3] = 't';
altname[len - 2] = 'g';
altname[len - 1] = 'a';
LoadTGA(name, pic, width, height);
else if (!Q_stricmp(name + len - 4, ".pcx")) {
LoadPCX32(name, pic, width, height);
*piMipmapsAvailable = 1;
}
else if (!Q_stricmp(name + len - 4, ".bmp")) {
LoadBMP(name, pic, width, height);
*piMipmapsAvailable = 1;
}
else if (!Q_stricmp(name + len - 4, ".jpg")) {
LoadJPG(name, pic, width, height);
*piMipmapsAvailable = 1;
}
*piMipmapsAvailable = 1;
}
else if (!Q_stricmp(name + len - 4, ".pcx")) {
LoadPCX32(name, pic, width, height);
*piMipmapsAvailable = 1;
}
else if (!Q_stricmp(name + len - 4, ".bmp")) {
LoadBMP(name, pic, width, height);
*piMipmapsAvailable = 1;
}
else if (!Q_stricmp(name + len - 4, ".jpg")) {
LoadJPG(name, pic, width, height);
*piMipmapsAvailable = 1;
}
if (scr_initialized)
+1 -1
View File
@@ -1966,7 +1966,7 @@ void RE_AddRefEntityToScene( const refEntity_t *ent, int parentEntityNumber);
void RE_AddRefSpriteToScene(const refEntity_t* ent);
void RE_AddTerrainMarkToScene(int iTerrainIndex, qhandle_t hShader, int numVerts, const polyVert_t* verts, int renderfx);
refEntity_t* RE_GetRenderEntity(int entityNumber);
qboolean RE_AddPolyToScene(qhandle_t hShader, int numVerts, polyVert_t* verts, int renderfx);
qboolean RE_AddPolyToScene(qhandle_t hShader, int numVerts, const polyVert_t* verts, int renderfx);
void RE_AddLightToScene( const vec3_t org, float intensity, float r, float g, float b, int type );
void RE_AddAdditiveLightToScene( const vec3_t org, float intensity, float r, float g, float b );
void RE_RenderScene( const refdef_t *fd );
+1 -1
View File
@@ -126,7 +126,7 @@ typedef struct {
dtiki_t* (*R_Model_GetHandle)(qhandle_t handle);
void (*DrawString)(fontheader_t* font, const char* text, float x, float y, int maxLen, qboolean virtualScreen);
float (*GetFontHeight)(const fontheader_t* font);
float (*GetFontStringWidth)(const fontheader_t* font, char* string);
float (*GetFontStringWidth)(const fontheader_t* font, const char* string);
fontheader_t* (*LoadFont)(const char* name);
void (*SwipeBegin)(float thisTime, float life, qhandle_t hShader);
void (*SwipePoint)(vec3_t point1, vec3_t point2, float time);
+1 -1
View File
@@ -131,7 +131,7 @@ RE_AddPolyToScene
=====================
*/
qboolean RE_AddPolyToScene(qhandle_t hShader, int numVerts, polyVert_t* verts, int renderfx) {
qboolean RE_AddPolyToScene(qhandle_t hShader, int numVerts, const polyVert_t* verts, int renderfx) {
srfPoly_t *poly;
if ( !tr.registered ) {
+1 -1
View File
@@ -619,7 +619,7 @@ void RB_CalcColorFromOneMinusEntity( unsigned char *dstColors )
{
int i;
int *pColors = ( int * ) dstColors;
unsigned char invModulate[3];
unsigned char invModulate[4];
int c;
if ( !backEnd.currentEntity )
+2 -2
View File
@@ -1317,8 +1317,8 @@ void R_AddTerrainSurfaces()
{
Com_DPrintf(
"%5d tris / %5d verts / %4d splits / %4d merges\n",
g_nTris + ~g_tri.nFree,
g_nVerts + ~g_vert.nFree,
g_nTris - g_tri.nFree,
g_nVerts - g_vert.nFree,
g_nSplit,
g_nMerge);
}
+2 -1
View File
@@ -225,7 +225,8 @@ void SV_DirectConnect( netadr_t from ) {
char userinfo[MAX_INFO_STRING];
int i;
client_t *cl, *newcl;
client_t temp;
// Make this a temp variable to avoid stack overflow issues
static client_t temp;
gentity_t *ent;
int clientNum;
int version;
+14 -14
View File
@@ -371,11 +371,11 @@ void TIKI_CacheFileSkel( skelHeader_t *pHeader, skelcache_t *cache, int length )
iOffset += sizeof(skelWeight_t) * numWeights;
iOffset += sizeof(skeletorVertex_t);
skelVert->normal[0] = LittleFloat(pVert->normal[0]);
skelVert->normal[1] = LittleFloat(pVert->normal[1]);
skelVert->normal[2] = LittleFloat(pVert->normal[2]);
skelVert->texCoords[0] = LittleFloat(pVert->texCoords[0]);
skelVert->texCoords[1] = LittleFloat(pVert->texCoords[1]);
skelVert->normal[0] = LittleFloatPtr(pVert->normal[0]);
skelVert->normal[1] = LittleFloatPtr(pVert->normal[1]);
skelVert->normal[2] = LittleFloatPtr(pVert->normal[2]);
skelVert->texCoords[0] = LittleFloatPtr(pVert->texCoords[0]);
skelVert->texCoords[1] = LittleFloatPtr(pVert->texCoords[1]);
skelVert->numWeights = numWeights;
skelVert->numMorphs = numMorphs;
@@ -384,21 +384,21 @@ void TIKI_CacheFileSkel( skelHeader_t *pHeader, skelcache_t *cache, int length )
skeletorMorph_t* skelMorph = (skeletorMorph_t*)((byte*)skelVert + sizeof(skeletorVertex_t));
for (k = 0; k < pVert->numMorphs; k++, pMorph++, skelMorph++)
{
skelMorph->morphIndex = pMorph->morphIndex;
skelMorph->offset[0] = LittleFloat(pMorph->offset[0]);
skelMorph->offset[1] = LittleFloat(pMorph->offset[1]);
skelMorph->offset[2] = LittleFloat(pMorph->offset[2]);
skelMorph->morphIndex = LittleLongPtr(pMorph->morphIndex);
skelMorph->offset[0] = LittleFloatPtr(pMorph->offset[0]);
skelMorph->offset[1] = LittleFloatPtr(pMorph->offset[1]);
skelMorph->offset[2] = LittleFloatPtr(pMorph->offset[2]);
}
skelWeight_t* pWeight = (skelWeight_t * )((byte*)pMorph);
skelWeight_t* skelWeight = (skelWeight_t*)((byte*)skelMorph);
for (k = 0; k < pVert->numWeights; k++, skelWeight++, pWeight++)
{
skelWeight->boneIndex = LittleLong(pWeight->boneIndex);
skelWeight->boneWeight = LittleLong(pWeight->boneWeight);
skelWeight->offset[0] = LittleFloat(pWeight->offset[0]);
skelWeight->offset[1] = LittleFloat(pWeight->offset[1]);
skelWeight->offset[2] = LittleFloat(pWeight->offset[2]);
skelWeight->boneIndex = LittleLongPtr(pWeight->boneIndex);
skelWeight->boneWeight = LittleFloatPtr(pWeight->boneWeight);
skelWeight->offset[0] = LittleFloatPtr(pWeight->offset[0]);
skelWeight->offset[1] = LittleFloatPtr(pWeight->offset[1]);
skelWeight->offset[2] = LittleFloatPtr(pWeight->offset[2]);
}
pVert = (skeletorVertex_t*)((byte*)pVert + iOffset);
+25 -15
View File
@@ -69,7 +69,7 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
#include <X11/extensions/xf86dgaconst.h>
#include <X11/extensions/xf86vmode.h>
#define WINDOW_CLASS_NAME "Quake III: Arena"
#define WINDOW_CLASS_NAME PRODUCT_NAME_FULL
typedef enum
{
@@ -1160,23 +1160,33 @@ static void GLW_InitExtensions( void )
ri.Printf( PRINT_ALL, "Initializing OpenGL extensions\n" );
// GL_S3_s3tc
if ( Q_stristr( glConfig.extensions_string, "GL_S3_s3tc" ) )
if (strstr(glConfig.extensions_string, "GL_EXT_texture_compression_s3tc") && strstr(glConfig.extensions_string, "GL_ARB_texture_compression"))
{
if ( r_ext_compressed_textures->value )
{
glConfig.textureCompression = TC_S3TC;
ri.Printf( PRINT_ALL, "...using GL_S3_s3tc\n" );
} else
{
glConfig.textureCompression = TC_NONE;
ri.Printf( PRINT_ALL, "...ignoring GL_S3_s3tc\n" );
}
} else
if (r_ext_compressed_textures->integer)
{
qglCompressedTexImage2DARB = dlsym(glw_state.OpenGLLib, "glCompressedTexImage2DARB");
glConfig.textureCompression = TC_S3TC;
ri.Printf(PRINT_ALL, "...using GL_S3_s3tc\n");
}
else
{
glConfig.textureCompression = TC_NONE;
ri.Printf(PRINT_ALL, "...ignoring GL_S3_s3tc\n");
}
}
else if (!strstr(glConfig.extensions_string, "GL_EXT_texture_compression_s3tc"))
{
glConfig.textureCompression = TC_NONE;
ri.Printf( PRINT_ALL, "...GL_S3_s3tc not found\n" );
ri.Printf(PRINT_ALL, "...GL_ARB_texture_compression not found\n");
}
else if (strstr(glConfig.extensions_string, "GL_ARB_texture_compression"))
{
ri.Printf(PRINT_ALL, "...GL_EXT_texture_compression_s3tc not found\n");
}
else
{
ri.Printf(PRINT_ALL, "...GL_EXT_texture_compression_s3tc not found\n");
ri.Printf(PRINT_ALL, "...GL_ARB_texture_compression not found\n");
}
// GL_EXT_texture_env_add
glConfig.textureEnvAddAvailable = qfalse;
if ( Q_stristr( glConfig.extensions_string, "EXT_texture_env_add" ) )
-18
View File
@@ -3006,12 +3006,6 @@ void QGL_Shutdown( void )
qglVertexPointer = NULL;
qglViewport = NULL;
qglCompressedTexImage3DARB = NULL;
qglCompressedTexImage2DARB = NULL;
qglCompressedTexSubImage3DARB = NULL;
qglCompressedTexSubImage2DARB = NULL;
qglGetCompressedTexImageARB = NULL;
// bk001129 - from cvs1.17 (mkv)
#if defined(__FX__)
qfxMesaCreateContext = NULL;
@@ -3409,12 +3403,6 @@ qboolean QGL_Init( const char *dllname )
qglVertexPointer = dllVertexPointer = GPA( "glVertexPointer" );
qglViewport = dllViewport = GPA( "glViewport" );
qglCompressedTexImage3DARB = dllCompressedTexImage3DARB = GPA("glCompressedTexImage3DARB");
qglCompressedTexImage2DARB = dllCompressedTexImage2DARB = GPA("qglCompressedTexImage2DARB");
qglCompressedTexSubImage3DARB = dllCompressedTexSubImage3DARB = GPA("qglCompressedTexSubImage3DARB");
qglCompressedTexSubImage2DARB = dllCompressedTexSubImage2DARB = GPA("qglCompressedTexSubImage2DARB");
qglGetCompressedTexImageARB = dllGetCompressedTexImageARB = GPA("qglGetCompressedTexImageARB");
// bk001129 - from cvs1.17 (mkv)
#if defined(__FX__)
qfxMesaCreateContext = GPA("fxMesaCreateContext");
@@ -4165,12 +4153,6 @@ void QGL_EnableLogging( qboolean enable ) {
qglVertex4sv = dllVertex4sv ;
qglVertexPointer = dllVertexPointer ;
qglViewport = dllViewport ;
qglCompressedTexImage3DARB = dllCompressedTexImage3DARB;
qglCompressedTexImage2DARB = dllCompressedTexImage2DARB;
qglCompressedTexSubImage3DARB = dllCompressedTexSubImage3DARB;
qglCompressedTexSubImage2DARB = dllCompressedTexSubImage2DARB;
qglGetCompressedTexImageARB = dllGetCompressedTexImageARB;
}
}
+5 -2
View File
@@ -981,7 +981,7 @@ void* Sys_GetCGameAPI(void* parms)
const char* gamedir;
const char* homepath;
const char* fn;
const char* gamename = "cgame" ARCH_STRING DLL_EXT;
const char* gamename = "cgame" ARCH_STRING DLL_SUFFIX DLL_EXT;
if (cgame_library)
Com_Error(ERR_FATAL, "Sys_GetCGameAPI without calling Sys_UnloadCGame");
@@ -1098,7 +1098,10 @@ void *Sys_LoadDll( const char *name, char *fqpath ,
snprintf (fname, sizeof(fname), "%smips.so", name);
#elif defined __x86_64__
snprintf(fname, sizeof(fname), "%sx86_64.so", name);
#else
#elif defined __arm__
snprintf(fname, sizeof(fname), "%sarm.so", name);
#elif defined __aarch64__
snprintf(fname, sizeof(fname), "%saarch64.so", name);
#error Unknown arch
#endif
+13 -2
View File
@@ -970,11 +970,13 @@ static void GLW_InitExtensions( void )
ri.Printf( PRINT_ALL, "Initializing OpenGL extensions\n" );
// GL_S3_s3tc
qglCompressedTexImage2DARB = NULL;
glConfig.textureCompression = TC_NONE;
if ( strstr( glConfig.extensions_string, "GL_S3_s3tc" ) )
if ( strstr( glConfig.extensions_string, "GL_EXT_texture_compression_s3tc" ) && strstr(glConfig.extensions_string, "GL_ARB_texture_compression"))
{
if ( r_ext_compressed_textures->integer )
{
qglCompressedTexImage2DARB = wglGetProcAddress("glCompressedTexImage2DARB");
glConfig.textureCompression = TC_S3TC;
ri.Printf( PRINT_ALL, "...using GL_S3_s3tc\n" );
}
@@ -984,9 +986,18 @@ static void GLW_InitExtensions( void )
ri.Printf( PRINT_ALL, "...ignoring GL_S3_s3tc\n" );
}
}
else if (!strstr(glConfig.extensions_string, "GL_EXT_texture_compression_s3tc"))
{
ri.Printf(PRINT_ALL, "...GL_ARB_texture_compression not found\n");
}
else if (strstr(glConfig.extensions_string, "GL_ARB_texture_compression"))
{
ri.Printf(PRINT_ALL, "...GL_EXT_texture_compression_s3tc not found\n");
}
else
{
ri.Printf( PRINT_ALL, "...GL_S3_s3tc not found\n" );
ri.Printf(PRINT_ALL, "...GL_EXT_texture_compression_s3tc not found\n");
ri.Printf(PRINT_ALL, "...GL_ARB_texture_compression not found\n");
}
// GL_EXT_texture_env_add
-12
View File
@@ -3628,12 +3628,6 @@ qboolean QGL_Init( const char *dllname )
qglVertexPointer = dllVertexPointer = GPA( "glVertexPointer" );
qglViewport = dllViewport = GPA( "glViewport" );
qglCompressedTexImage3DARB = dllCompressedTexImage3DARB = GPA("glCompressedTexImage3D");
qglCompressedTexImage2DARB = dllCompressedTexImage2DARB = GPA("glCompressedTexImage2D");
qglCompressedTexSubImage3DARB = dllCompressedTexSubImage3DARB = GPA("glCompressedTexSubImage3D");
qglCompressedTexSubImage2DARB = dllCompressedTexSubImage2DARB = GPA("glCompressedTexSubImage2D");
qglGetCompressedTexImageARB = dllGetCompressedTexImageARB = GPA("glGetCompressedTexImage");
qwglCopyContext = GPA( "wglCopyContext" );
qwglCreateContext = GPA( "wglCreateContext" );
qwglCreateLayerContext = GPA( "wglCreateLayerContext" );
@@ -4393,12 +4387,6 @@ void QGL_EnableLogging( qboolean enable )
qglVertex4sv = dllVertex4sv ;
qglVertexPointer = dllVertexPointer ;
qglViewport = dllViewport ;
qglCompressedTexImage3DARB = dllCompressedTexImage3DARB;
qglCompressedTexImage2DARB = dllCompressedTexImage2DARB;
qglCompressedTexSubImage3DARB = dllCompressedTexSubImage3DARB;
qglCompressedTexSubImage2DARB = dllCompressedTexSubImage2DARB;
qglGetCompressedTexImageARB = dllGetCompressedTexImageARB;
}
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 399 KiB